@stiunb/unb-lib-components 18.0.22 → 18.0.23
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/esm2022/lib/unb-pessoa/unb-pessoa-email-form/unb-pessoa-email-form.mjs +34 -11
- package/esm2022/lib/unb-pessoa/unb-pessoa-email-form/unb-pessoa-email-list.mjs +65 -47
- package/esm2022/lib/unb-pessoa/unb-pessoa-endereco-form/unb-pessoa-endereco-form.mjs +102 -14
- package/esm2022/lib/unb-pessoa/unb-pessoa-endereco-form/unb-pessoa-endereco-list.mjs +71 -55
- package/esm2022/lib/unb-pessoa/unb-pessoa-form/unb-pessoa-form.component.mjs +227 -42
- package/esm2022/lib/unb-pessoa/unb-pessoa-models/unb-pessoa-email.model.mjs +1 -1
- package/esm2022/lib/unb-pessoa/unb-pessoa-models/unb-pessoa-endereco.model.mjs +1 -1
- package/esm2022/lib/unb-pessoa/unb-pessoa-models/unb-pessoa.model.mjs +2 -1
- package/esm2022/lib/unb-pessoa/unb-pessoa-pesquisar/unb-pessoa-pesquisar.component.mjs +141 -8
- package/esm2022/lib/unb-pessoa/unb-pessoa-telefone-form/unb-pessoa-telefone-form.mjs +62 -8
- package/esm2022/lib/unb-pessoa/unb-pessoa-telefone-form/unb-pessoa-telefone-list.mjs +62 -32
- package/esm2022/lib/unb-pessoa/unb-pessoa.module.mjs +9 -1
- package/esm2022/lib/unb-pessoa/unb-pessoa.service.mjs +9 -9
- package/esm2022/lib/unb-pessoa/unb-tipo-pessoa.enum.mjs +1 -1
- package/esm2022/lib/unb-usuario/oidc-decoded-token.mjs +1 -1
- package/esm2022/lib/unb-usuario/oidc-user-data.mjs +1 -1
- package/esm2022/public-api.mjs +14 -13
- package/esm2022/stiunb-unb-lib-components.mjs +5 -0
- package/fesm2022/stiunb-unb-lib-components.mjs +2469 -0
- package/fesm2022/stiunb-unb-lib-components.mjs.map +1 -0
- package/index.d.ts +1 -1
- package/lib/unb-pessoa/unb-pessoa-email-form/unb-pessoa-email-form.d.ts +3 -3
- package/lib/unb-pessoa/unb-pessoa-email-form/unb-pessoa-email-list.d.ts +6 -5
- package/lib/unb-pessoa/unb-pessoa-endereco-form/unb-pessoa-endereco-form.d.ts +6 -3
- package/lib/unb-pessoa/unb-pessoa-endereco-form/unb-pessoa-endereco-list.d.ts +6 -5
- package/lib/unb-pessoa/unb-pessoa-form/unb-pessoa-form.component.d.ts +17 -5
- package/lib/unb-pessoa/unb-pessoa-models/unb-pessoa-email.model.d.ts +1 -0
- package/lib/unb-pessoa/unb-pessoa-models/unb-pessoa-endereco.model.d.ts +3 -2
- package/lib/unb-pessoa/unb-pessoa-models/unb-pessoa.model.d.ts +5 -4
- package/lib/unb-pessoa/unb-pessoa-pesquisar/unb-pessoa-pesquisar.component.d.ts +14 -1
- package/lib/unb-pessoa/unb-pessoa-telefone-form/unb-pessoa-telefone-form.d.ts +2 -2
- package/lib/unb-pessoa/unb-pessoa-telefone-form/unb-pessoa-telefone-list.d.ts +6 -5
- package/lib/unb-pessoa/unb-pessoa.module.d.ts +20 -18
- package/lib/unb-pessoa/unb-pessoa.service.d.ts +2 -1
- package/package.json +5 -5
- package/public-api.d.ts +10 -10
- package/esm2022/unb-lib-components.mjs +0 -5
- package/fesm2022/unb-lib-components.mjs +0 -1923
- package/fesm2022/unb-lib-components.mjs.map +0 -1
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
2
|
import { UnbPessoaEnderecoFormComponent } from './unb-pessoa-endereco-form';
|
|
3
|
+
import { moveItemInArray } from '@angular/cdk/drag-drop';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
import * as i1 from "@angular/material/snack-bar";
|
|
5
6
|
import * as i2 from "../unb-pessoa.service";
|
|
6
7
|
import * as i3 from "@angular/material/dialog";
|
|
7
8
|
import * as i4 from "@angular/common";
|
|
8
9
|
import * as i5 from "@angular/material/icon";
|
|
9
|
-
import * as i6 from "@angular/
|
|
10
|
+
import * as i6 from "@angular/cdk/drag-drop";
|
|
11
|
+
import * as i7 from "@angular/material/button";
|
|
10
12
|
export class UnbPessoaenderecoListComponent {
|
|
11
13
|
constructor(snackBar, service, dialog) {
|
|
12
14
|
this.snackBar = snackBar;
|
|
@@ -20,26 +22,32 @@ export class UnbPessoaenderecoListComponent {
|
|
|
20
22
|
ngOnInit() {
|
|
21
23
|
this.sortAndAssignOrder(); // organiza a lista de enderecos. As vezes tem ordem duplicada ou faltando.
|
|
22
24
|
}
|
|
23
|
-
|
|
25
|
+
// tem que fazer isso pq no on init eu ainda nao tenho a lista
|
|
26
|
+
ngOnChanges(changes) {
|
|
27
|
+
// Verifica se a propriedade 'enderecos' mudou
|
|
28
|
+
if (changes['enderecos'] && this.enderecos) {
|
|
29
|
+
// chamada quando os dados realmente chegarem
|
|
30
|
+
this.sortAndAssignOrder();
|
|
31
|
+
}
|
|
24
32
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
33
|
+
excluir(enderecoParaExcluir) {
|
|
34
|
+
if (enderecoParaExcluir.codigo) {
|
|
35
|
+
// Se tem código, remove por ele (mais seguro)
|
|
36
|
+
this.enderecos = this.enderecos.filter(t => t.codigo !== enderecoParaExcluir.codigo);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
// Se não tem código (novo item), remove pela ordem
|
|
40
|
+
this.enderecos = this.enderecos.filter(t => t.ordemEndereco !== enderecoParaExcluir.ordemEndereco);
|
|
41
|
+
}
|
|
42
|
+
// Chama função existente que re-calcula as ordens e emite a lista atualizada
|
|
32
43
|
this.atualizarOrdem();
|
|
33
44
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
return;
|
|
37
|
-
[this.enderecos[index], this.enderecos[index + 1]] = [this.enderecos[index + 1], this.enderecos[index]];
|
|
38
|
-
this.atualizarOrdem();
|
|
45
|
+
editar(endereco) {
|
|
46
|
+
this.openFormDialog(endereco);
|
|
39
47
|
}
|
|
40
48
|
atualizarOrdem() {
|
|
41
49
|
this.enderecos.forEach((endereco, idx) => {
|
|
42
|
-
endereco.
|
|
50
|
+
endereco.ordemEndereco = idx + 1;
|
|
43
51
|
});
|
|
44
52
|
this.enderecosEmitted.emit(this.enderecos);
|
|
45
53
|
}
|
|
@@ -52,44 +60,55 @@ export class UnbPessoaenderecoListComponent {
|
|
|
52
60
|
},
|
|
53
61
|
});
|
|
54
62
|
dialogRef.afterClosed().subscribe(result => {
|
|
55
|
-
if (result) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
63
|
+
if (!result) {
|
|
64
|
+
return; // Usuário clicou em 'Fechar' ou 'Cancelar'
|
|
65
|
+
}
|
|
66
|
+
let index = -1;
|
|
67
|
+
// 1. Tenta encontrar pelo 'codigo' (para itens que já vieram do banco)
|
|
68
|
+
if (result.codigo) {
|
|
69
|
+
index = this.enderecos.findIndex(t => t.codigo === result.codigo);
|
|
70
|
+
}
|
|
71
|
+
// 2. Se não achou pelo 'codigo', tenta pela 'ordem'.
|
|
72
|
+
if (index === -1 && result.ordemEndereco) {
|
|
73
|
+
index = this.enderecos.findIndex(t => t.ordemEndereco === result.ordemEndereco);
|
|
74
|
+
}
|
|
75
|
+
if (index > -1) {
|
|
76
|
+
// ENCONTROU (pelo 'codigo' ou pela 'ordem'): Atualiza o item existente
|
|
77
|
+
this.enderecos[index] = result;
|
|
68
78
|
}
|
|
79
|
+
else {
|
|
80
|
+
// NÃO ENCONTROU: É um item 100% novo (não uma edição) adiciona no fim
|
|
81
|
+
this.enderecos.push(result);
|
|
82
|
+
}
|
|
83
|
+
this.enderecos.sort((a, b) => (a.ordemEndereco ?? 0) - (b.ordemEndereco ?? 0)); //
|
|
84
|
+
this.enderecosEmitted.emit([...this.enderecos]);
|
|
69
85
|
});
|
|
70
86
|
}
|
|
87
|
+
moverLinha(event) {
|
|
88
|
+
moveItemInArray(this.enderecos, event.previousIndex, event.currentIndex);
|
|
89
|
+
this.atualizarOrdem();
|
|
90
|
+
}
|
|
71
91
|
sortAndAssignOrder() {
|
|
72
|
-
// 1. Crie uma cópia da lista
|
|
92
|
+
// 1. Crie uma cópia da lista
|
|
73
93
|
const tempenderecos = [...this.enderecos];
|
|
74
|
-
// 2. Mapeie as ordens existentes
|
|
94
|
+
// 2. Mapeie as ordens existentes
|
|
75
95
|
const orderMap = new Map();
|
|
76
96
|
const enderecosWithoutOrder = [];
|
|
77
97
|
tempenderecos.forEach(endereco => {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
98
|
+
// CORREÇÃO AQUI:
|
|
99
|
+
if (endereco.ordemEndereco !== undefined && endereco.ordemEndereco !== null) {
|
|
100
|
+
if (!orderMap.has(endereco.ordemEndereco)) {
|
|
101
|
+
orderMap.set(endereco.ordemEndereco, []);
|
|
81
102
|
}
|
|
82
|
-
orderMap.get(endereco.
|
|
103
|
+
orderMap.get(endereco.ordemEndereco)?.push(endereco);
|
|
83
104
|
}
|
|
84
105
|
else {
|
|
85
106
|
enderecosWithoutOrder.push(endereco);
|
|
86
107
|
}
|
|
87
108
|
});
|
|
88
|
-
// 3.
|
|
109
|
+
// 3. ... (Funções 'finalUsedOrders', 'nextAvailableOrder' continuam iguais) ...
|
|
89
110
|
const finalUsedOrders = new Set();
|
|
90
|
-
// Inicialize o próximo valor de ordem disponível
|
|
91
111
|
let nextAvailableOrder = 0;
|
|
92
|
-
// Função auxiliar para encontrar a próxima ordem disponível
|
|
93
112
|
const getNextAvailableOrder = () => {
|
|
94
113
|
while (finalUsedOrders.has(nextAvailableOrder)) {
|
|
95
114
|
nextAvailableOrder++;
|
|
@@ -97,36 +116,33 @@ export class UnbPessoaenderecoListComponent {
|
|
|
97
116
|
return nextAvailableOrder++;
|
|
98
117
|
};
|
|
99
118
|
// 4. Processe enderecos com ordem definida:
|
|
100
|
-
// - A primeira ocorrência de uma ordem a mantém.
|
|
101
|
-
// - Duplicatas recebem uma nova ordem.
|
|
102
|
-
// - Adicione as ordens válidas ao finalUsedOrders.
|
|
103
119
|
this.enderecos.forEach(endereco => {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
finalUsedOrders.add(endereco.
|
|
120
|
+
// CORREÇÃO AQUI:
|
|
121
|
+
if (endereco.ordemEndereco !== undefined && endereco.ordemEndereco !== null) {
|
|
122
|
+
if (!finalUsedOrders.has(endereco.ordemEndereco)) {
|
|
123
|
+
finalUsedOrders.add(endereco.ordemEndereco);
|
|
108
124
|
}
|
|
109
125
|
else {
|
|
110
|
-
//
|
|
111
|
-
endereco.
|
|
112
|
-
finalUsedOrders.add(endereco.
|
|
126
|
+
// Duplicata, atribua uma nova
|
|
127
|
+
endereco.ordemEndereco = getNextAvailableOrder();
|
|
128
|
+
finalUsedOrders.add(endereco.ordemEndereco);
|
|
113
129
|
}
|
|
114
130
|
}
|
|
115
131
|
});
|
|
116
|
-
// 5. Atribua ordens para enderecos que não tinham ordem
|
|
132
|
+
// 5. Atribua ordens para enderecos que não tinham ordem
|
|
117
133
|
enderecosWithoutOrder.forEach(endereco => {
|
|
118
|
-
endereco.ordemEndereco = getNextAvailableOrder();
|
|
119
|
-
finalUsedOrders.add(endereco.ordemEndereco); //
|
|
134
|
+
endereco.ordemEndereco = getNextAvailableOrder(); //
|
|
135
|
+
finalUsedOrders.add(endereco.ordemEndereco); //
|
|
120
136
|
});
|
|
121
|
-
// 6. Finalmente, ordene a lista
|
|
122
|
-
this.enderecos.sort((a, b) => (a.ordemEndereco ?? 0) - (b.ordemEndereco ?? 0));
|
|
137
|
+
// 6. Finalmente, ordene a lista
|
|
138
|
+
this.enderecos.sort((a, b) => (a.ordemEndereco ?? 0) - (b.ordemEndereco ?? 0)); //
|
|
123
139
|
}
|
|
124
140
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: UnbPessoaenderecoListComponent, deps: [{ token: i1.MatSnackBar }, { token: i2.UnBPessoaService }, { token: i3.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
125
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: UnbPessoaenderecoListComponent, selector: "lib-unb-pessoa-endereco-list", inputs: { podeEditar: "podeEditar", enderecos: "enderecos", apiPessoaConfig: "apiPessoaConfig" }, outputs: { enderecosEmitted: "enderecosEmitted" }, ngImport: i0, template: "<div class=\"mes-container\">\r\n <div class=\"header-container\">\r\n <div class=\"mes-header\">\r\n <span class=\"titulo\">\r\n {{ enderecos?.length === 1 ? 'Endere\u00E7o Cadastrado' : 'Endere\u00E7os Cadastrados' }}\r\n </span>\r\n <span class=\"titulo\">({{ enderecos?.length || 0 }})</span>\r\n </div>\r\n\r\n <button matTooltip=\"Novo Endere\u00E7o\" mat-flat-button color=\"primary\" (click)=\"openFormDialog(null)\">\r\n Cadastrar Novo Endere\u00E7o\r\n </button>\r\n </div>\r\n\r\n <!-- Exibe a tabela de despesas somente se houver despesas -->\r\n <table class=\"my-table\" *ngIf=\"enderecos && enderecos.length > 0\">\r\n <tr style=\"background-color: #e4e3e3cc;\">\r\n <th style=\"text-align: center;\"
|
|
141
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: UnbPessoaenderecoListComponent, selector: "lib-unb-pessoa-endereco-list", inputs: { podeEditar: "podeEditar", enderecos: "enderecos", apiPessoaConfig: "apiPessoaConfig" }, outputs: { enderecosEmitted: "enderecosEmitted" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"mes-container\">\r\n <div class=\"header-container\">\r\n <div class=\"mes-header\">\r\n <span class=\"titulo\">\r\n {{ enderecos?.length === 1 ? 'Endere\u00E7o Cadastrado' : 'Endere\u00E7os Cadastrados' }}\r\n </span>\r\n <span class=\"titulo\">({{ enderecos?.length || 0 }})</span>\r\n </div>\r\n\r\n <button type=\"button\" matTooltip=\"Novo Endere\u00E7o\" mat-flat-button color=\"primary\" (click)=\"openFormDialog(null)\">\r\n Cadastrar Novo Endere\u00E7o\r\n </button>\r\n </div>\r\n\r\n <!-- Exibe a tabela de despesas somente se houver despesas -->\r\n <table class=\"my-table\" *ngIf=\"enderecos && enderecos.length > 0\" cdkDropList\r\n (cdkDropListDropped)=\"moverLinha($event)\">\r\n <tr style=\"background-color: #e4e3e3cc;\">\r\n <th style=\"width: 5%; text-align: center;\">Ordem</th>\r\n <th>Logradouro</th>\r\n <th>Bairro</th>\r\n <th>CEP</th>\r\n <th>Tipo</th>\r\n <th style=\"width: 1%; text-align: center;\">A\u00E7\u00F5es</th>\r\n </tr>\r\n\r\n <tr *ngFor=\"let valor of enderecos; let i = index\" class=\"my-tr\" cdkDrag>\r\n <td style=\"width: 5%; text-align: center;\">\r\n <div class=\"drag-cell\" cdkDragHandle>\r\n <mat-icon>drag_indicator</mat-icon>\r\n <span>{{ i + 1 }}</span>\r\n </div>\r\n </td>\r\n <td>{{ valor.logradouro }}</td>\r\n <td>{{ valor.bairro }}</td>\r\n <td>{{ valor.cep }}</td>\r\n <td>{{ valor.tipo?.toUpperCase() }}</td>\r\n <td>\r\n <div class=\"actions-container\">\r\n <button type=\"button\" mat-icon-button aria-label=\"Salvar\" color=\"primary\" (click)=\"editar(valor)\">\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button type=\"button\" mat-icon-button aria-label=\"Deletar\" color=\"warn\" (click)=\"excluir(valor)\">\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n </div>\r\n </td>\r\n </tr>\r\n </table>\r\n</div>", styles: [".mes-container{padding:12px;margin-bottom:2px;border-radius:8px;box-shadow:0 2px 6px #0000001a;transition:background-color .3s ease,box-shadow .3s ease}.mes-container:nth-child(2n){background-color:#f9f9fc}.mes-container:nth-child(odd){background-color:#fff}.mes-container:hover{background-color:#f0f0f5;box-shadow:0 4px 8px #00000026}.header-container{display:flex;align-items:center;margin-bottom:2px}.header-container button{margin-left:auto}.mes-header{display:flex;align-items:center;gap:6px;font-size:1.2rem;font-weight:700;color:#333}.actions-container{display:flex;justify-content:flex-end;gap:4px}.my-table{width:100%;border-collapse:collapse;border-radius:8px;overflow:hidden;box-shadow:0 4px 8px #0000001a;font-family:Arial,sans-serif}.my-table th,.my-table td{padding:5px;text-align:left;border-bottom:1px solid #ddd}.my-table th{background-color:#005dbb7b;color:#fff;font-weight:700}.my-table tr{transition:background-color .3s ease}.my-table tr:hover{background-color:#f1f1f1}.my-table td{background-color:#fff}.my-table td button{transition:transform .2s ease}.my-table td button:hover{transform:scale(1.1)}.my-table td:last-child{text-align:center}.order-input{width:40px;text-align:center;border:1px solid #ccc;border-radius:4px;padding:2px}.order-input:focus{border-color:#1976d2;outline:none}.drag-cell{display:inline-flex;align-items:center;justify-content:center;gap:4px;cursor:grab;-webkit-user-select:none;user-select:none}.drag-cell mat-icon{font-size:18px;line-height:1;vertical-align:middle}.cdk-drag-preview{background:#fff;border-radius:6px;box-shadow:0 4px 12px #0003;display:table;border-collapse:collapse}.cdk-drag-placeholder{opacity:0;display:table-row}.cdk-drag-animating{transition:transform .2s cubic-bezier(0,0,.2,1)}table[cdkDropList] tr{border-bottom:1px solid #e0e0e0}table[cdkDropList] td{padding:8px}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i6.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }] }); }
|
|
126
142
|
}
|
|
127
143
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: UnbPessoaenderecoListComponent, decorators: [{
|
|
128
144
|
type: Component,
|
|
129
|
-
args: [{ standalone: false, selector: 'lib-unb-pessoa-endereco-list', template: "<div class=\"mes-container\">\r\n <div class=\"header-container\">\r\n <div class=\"mes-header\">\r\n <span class=\"titulo\">\r\n {{ enderecos?.length === 1 ? 'Endere\u00E7o Cadastrado' : 'Endere\u00E7os Cadastrados' }}\r\n </span>\r\n <span class=\"titulo\">({{ enderecos?.length || 0 }})</span>\r\n </div>\r\n\r\n <button matTooltip=\"Novo Endere\u00E7o\" mat-flat-button color=\"primary\" (click)=\"openFormDialog(null)\">\r\n Cadastrar Novo Endere\u00E7o\r\n </button>\r\n </div>\r\n\r\n <!-- Exibe a tabela de despesas somente se houver despesas -->\r\n <table class=\"my-table\" *ngIf=\"enderecos && enderecos.length > 0\">\r\n <tr style=\"background-color: #e4e3e3cc;\">\r\n <th style=\"text-align: center;\"
|
|
145
|
+
args: [{ standalone: false, selector: 'lib-unb-pessoa-endereco-list', template: "<div class=\"mes-container\">\r\n <div class=\"header-container\">\r\n <div class=\"mes-header\">\r\n <span class=\"titulo\">\r\n {{ enderecos?.length === 1 ? 'Endere\u00E7o Cadastrado' : 'Endere\u00E7os Cadastrados' }}\r\n </span>\r\n <span class=\"titulo\">({{ enderecos?.length || 0 }})</span>\r\n </div>\r\n\r\n <button type=\"button\" matTooltip=\"Novo Endere\u00E7o\" mat-flat-button color=\"primary\" (click)=\"openFormDialog(null)\">\r\n Cadastrar Novo Endere\u00E7o\r\n </button>\r\n </div>\r\n\r\n <!-- Exibe a tabela de despesas somente se houver despesas -->\r\n <table class=\"my-table\" *ngIf=\"enderecos && enderecos.length > 0\" cdkDropList\r\n (cdkDropListDropped)=\"moverLinha($event)\">\r\n <tr style=\"background-color: #e4e3e3cc;\">\r\n <th style=\"width: 5%; text-align: center;\">Ordem</th>\r\n <th>Logradouro</th>\r\n <th>Bairro</th>\r\n <th>CEP</th>\r\n <th>Tipo</th>\r\n <th style=\"width: 1%; text-align: center;\">A\u00E7\u00F5es</th>\r\n </tr>\r\n\r\n <tr *ngFor=\"let valor of enderecos; let i = index\" class=\"my-tr\" cdkDrag>\r\n <td style=\"width: 5%; text-align: center;\">\r\n <div class=\"drag-cell\" cdkDragHandle>\r\n <mat-icon>drag_indicator</mat-icon>\r\n <span>{{ i + 1 }}</span>\r\n </div>\r\n </td>\r\n <td>{{ valor.logradouro }}</td>\r\n <td>{{ valor.bairro }}</td>\r\n <td>{{ valor.cep }}</td>\r\n <td>{{ valor.tipo?.toUpperCase() }}</td>\r\n <td>\r\n <div class=\"actions-container\">\r\n <button type=\"button\" mat-icon-button aria-label=\"Salvar\" color=\"primary\" (click)=\"editar(valor)\">\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button type=\"button\" mat-icon-button aria-label=\"Deletar\" color=\"warn\" (click)=\"excluir(valor)\">\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n </div>\r\n </td>\r\n </tr>\r\n </table>\r\n</div>", styles: [".mes-container{padding:12px;margin-bottom:2px;border-radius:8px;box-shadow:0 2px 6px #0000001a;transition:background-color .3s ease,box-shadow .3s ease}.mes-container:nth-child(2n){background-color:#f9f9fc}.mes-container:nth-child(odd){background-color:#fff}.mes-container:hover{background-color:#f0f0f5;box-shadow:0 4px 8px #00000026}.header-container{display:flex;align-items:center;margin-bottom:2px}.header-container button{margin-left:auto}.mes-header{display:flex;align-items:center;gap:6px;font-size:1.2rem;font-weight:700;color:#333}.actions-container{display:flex;justify-content:flex-end;gap:4px}.my-table{width:100%;border-collapse:collapse;border-radius:8px;overflow:hidden;box-shadow:0 4px 8px #0000001a;font-family:Arial,sans-serif}.my-table th,.my-table td{padding:5px;text-align:left;border-bottom:1px solid #ddd}.my-table th{background-color:#005dbb7b;color:#fff;font-weight:700}.my-table tr{transition:background-color .3s ease}.my-table tr:hover{background-color:#f1f1f1}.my-table td{background-color:#fff}.my-table td button{transition:transform .2s ease}.my-table td button:hover{transform:scale(1.1)}.my-table td:last-child{text-align:center}.order-input{width:40px;text-align:center;border:1px solid #ccc;border-radius:4px;padding:2px}.order-input:focus{border-color:#1976d2;outline:none}.drag-cell{display:inline-flex;align-items:center;justify-content:center;gap:4px;cursor:grab;-webkit-user-select:none;user-select:none}.drag-cell mat-icon{font-size:18px;line-height:1;vertical-align:middle}.cdk-drag-preview{background:#fff;border-radius:6px;box-shadow:0 4px 12px #0003;display:table;border-collapse:collapse}.cdk-drag-placeholder{opacity:0;display:table-row}.cdk-drag-animating{transition:transform .2s cubic-bezier(0,0,.2,1)}table[cdkDropList] tr{border-bottom:1px solid #e0e0e0}table[cdkDropList] td{padding:8px}\n"] }]
|
|
130
146
|
}], ctorParameters: () => [{ type: i1.MatSnackBar }, { type: i2.UnBPessoaService }, { type: i3.MatDialog }], propDecorators: { podeEditar: [{
|
|
131
147
|
type: Input
|
|
132
148
|
}], enderecos: [{
|
|
@@ -136,4 +152,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
136
152
|
}], enderecosEmitted: [{
|
|
137
153
|
type: Output
|
|
138
154
|
}] } });
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iLXBlc3NvYS1lbmRlcmVjby1saXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5iLWxpYi1jb21wb25lbnRzL3NyYy9saWIvdW5iLXBlc3NvYS91bmItcGVzc29hLWVuZGVyZWNvLWZvcm0vdW5iLXBlc3NvYS1lbmRlcmVjby1saXN0LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5iLWxpYi1jb21wb25lbnRzL3NyYy9saWIvdW5iLXBlc3NvYS91bmItcGVzc29hLWVuZGVyZWNvLWZvcm0vdW5iLXBlc3NvYS1lbmRlcmVjby1saXN0Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVEvRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7QUFRNUUsTUFBTSxPQUFPLDhCQUE4QjtJQUt6QyxZQUFvQixRQUFxQixFQUFVLE9BQXlCLEVBQVMsTUFBaUI7UUFBbEYsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUo3RixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFDcEIsb0JBQWUsR0FBbUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUN4RSxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztJQUdyRSxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsMkVBQTJFO0lBQ3hHLENBQUM7SUFFRCxPQUFPLENBQUMsUUFBMkI7SUFFbkMsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUEyQjtRQUNoQyxJ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QXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBVbkJQZXNzb2FTZXJ2aWNlIH0gZnJvbSAnLi4vdW5iLXBlc3NvYS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGlwb1Blc3NvYUVudW0gfSBmcm9tICcuLi91bmItdGlwby1wZXNzb2EuZW51bSc7XHJcbmltcG9ydCB7IFVuYlBlc3NvYUVuZGVyZWNvIH0gZnJvbSAnLi4vdW5iLXBlc3NvYS1tb2RlbHMvdW5iLXBlc3NvYS1lbmRlcmVjby5tb2RlbCc7XHJcbmltcG9ydCB7IFVuYlBlc3NvYVRlbGVmb25lVGlwbyB9IGZyb20gJy4uL3VuYi1wZXNzb2EtbW9kZWxzL3VuYi1wZXNzb2EtdGVsZWZvbmUubW9kZWwnO1xyXG5pbXBvcnQgeyBVbmJQZXNzb2FFbmRlcmVjb0Zvcm1Db21wb25lbnQgfSBmcm9tICcuL3VuYi1wZXNzb2EtZW5kZXJlY28tZm9ybSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzdGFuZGFsb25lOiBmYWxzZSxcclxuICBzZWxlY3RvcjogJ2xpYi11bmItcGVzc29hLWVuZGVyZWNvLWxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91bmItcGVzc29hLWVuZGVyZWNvLWxpc3QuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3VuYi1wZXNzb2EtZW5kZXJlY28tbGlzdC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVbmJQZXNzb2FlbmRlcmVjb0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHBvZGVFZGl0YXIgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGVuZGVyZWNvczogYW55ID0gW107XHJcbiAgQElucHV0KCkgYXBpUGVzc29hQ29uZmlnOiB7IHVybDogc3RyaW5nOyB0b2tlbjogc3RyaW5nIH0gPSB7IHVybDogJycsIHRva2VuOiAnJyB9O1xyXG4gIEBPdXRwdXQoKSBlbmRlcmVjb3NFbWl0dGVkID0gbmV3IEV2ZW50RW1pdHRlcjxVbmJQZXNzb2FFbmRlcmVjb1tdPigpO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLCBwcml2YXRlIHNlcnZpY2U6IFVuQlBlc3NvYVNlcnZpY2UsIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZykge1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zb3J0QW5kQXNzaWduT3JkZXIoKTsgLy8gb3JnYW5pemEgYSBsaXN0YSBkZSBlbmRlcmVjb3MuIEFzIHZlemVzIHRlbSBvcmRlbSBkdXBsaWNhZGEgb3UgZmFsdGFuZG8uXHJcbiAgfVxyXG5cclxuICBleGNsdWlyKGVuZGVyZWNvOiBVbmJQZXNzb2FFbmRlcmVjbykge1xyXG5cclxuICB9XHJcblxyXG4gIGVkaXRhcihlbmRlcmVjbzogVW5iUGVzc29hRW5kZXJlY28pIHtcclxuICAgIHRoaXMub3BlbkZvcm1EaWFsb2coZW5kZXJlY28pO1xyXG4gIH1cclxuXHJcbiAgbW92ZXJQYXJhQ2ltYShpbmRleDogbnVtYmVyKSB7XHJcbiAgICBpZiAoaW5kZXggPD0gMCkgcmV0dXJuO1xyXG5cclxuICAgIFt0aGlzLmVuZGVyZWNvc1tpbmRleCAtIDFdLCB0aGlzLmVuZGVyZWNvc1tpbmRleF1dID0gW3RoaXMuZW5kZXJlY29zW2luZGV4XSwgdGhpcy5lbmRlcmVjb3NbaW5kZXggLSAxXV07XHJcbiAgICB0aGlzLmF0dWFsaXphck9yZGVtKCk7XHJcbiAgfVxyXG5cclxuICBtb3ZlclBhcmFCYWl4byhpbmRleDogbnVtYmVyKSB7XHJcbiAgICBpZiAoaW5kZXggPj0gdGhpcy5lbmRlcmVjb3MubGVuZ3RoIC0gMSkgcmV0dXJuO1xyXG5cclxuICAgIFt0aGlzLmVuZGVyZWNvc1tpbmRleF0sIHRoaXMuZW5kZXJlY29zW2luZGV4ICsgMV1dID0gW3RoaXMuZW5kZXJlY29zW2luZGV4ICsgMV0sIHRoaXMuZW5kZXJlY29zW2luZGV4XV07XHJcbiAgICB0aGlzLmF0dWFsaXphck9yZGVtKCk7XHJcbiAgfVxyXG5cclxuICBhdHVhbGl6YXJPcmRlbSgpIHtcclxuICAgIHRoaXMuZW5kZXJlY29zLmZvckVhY2goKGVuZGVyZWNvLCBpZHgpID0+IHtcclxuICAgICAgZW5kZXJlY28ub3JkZW0gPSBpZHggKyAxO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5lbmRlcmVjb3NFbWl0dGVkLmVtaXQodGhpcy5lbmRlcmVjb3MpO1xyXG4gIH1cclxuXHJcbiAgb3BlbkZvcm1EaWFsb2coZW5kZXJlY29Ub0VkaXQ6IGFueSkge1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihVbmJQZXNzb2FFbmRlcmVjb0Zvcm1Db21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc5MDBweCcsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBlbmRlcmVjbzogZW5kZXJlY29Ub0VkaXQsIC8vIEUtbWFpbCBhIHNlciBlZGl0YWRvIG91IHZhemlvIHBhcmEgbm92b1xyXG4gICAgICAgIGVuZGVyZWNvc0xpc3Q6IHRoaXMuZW5kZXJlY29zIC8vIEEgc3VhIGxpc3RhIENPTVBMRVRBIGRlIGUtbWFpbHNcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG5cclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmVuZGVyZWNvcy5maW5kSW5kZXgoZSA9PiBlLmNvZGlnbyA9PT0gcmVzdWx0LmNvZGlnbyk7XHJcblxyXG4gICAgICAgIGlmIChyZXN1bHQuY29kaWdvICYmIGluZGV4ID4gLTEpIHtcclxuICAgICAgICAgIC8vIEF0dWFsaXphIGUtbWFpbCBleGlzdGVudGVcclxuICAgICAgICAgIHRoaXMuZW5kZXJlY29zW2luZGV4XSA9IHJlc3VsdDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gQWRpY2lvbmEgbm92byBlLW1haWwgKGdlcmEgb3JkZW0gYXV0b21hdGljYW1lbnRlIHNlIHF1aXNlcilcclxuICAgICAgICAgIHJlc3VsdC5vcmRlbSA9IHRoaXMuZW5kZXJlY29zLmxlbmd0aCArIDE7XHJcbiAgICAgICAgICB0aGlzLmVuZGVyZWNvcy5wdXNoKHJlc3VsdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEVtaXRlIGxpc3RhIGF0dWFsaXphZGFcclxuICAgICAgICB0aGlzLmVuZGVyZWNvc0VtaXR0ZWQuZW1pdCh0aGlzLmVuZGVyZWNvcyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzb3J0QW5kQXNzaWduT3JkZXIoKTogdm9pZCB7XHJcbiAgICAvLyAxLiBDcmllIHVtYSBjw7NwaWEgZGEgbGlzdGEgcGFyYSBuw6NvIG1vZGlmaWNhciBhIG9yaWdpbmFsIGR1cmFudGUgYSBpdGVyYcOnw6NvIGluaWNpYWxcclxuICAgIGNvbnN0IHRlbXBlbmRlcmVjb3MgPSBbLi4udGhpcy5lbmRlcmVjb3NdO1xyXG5cclxuICAgIC8vIDIuIE1hcGVpZSBhcyBvcmRlbnMgZXhpc3RlbnRlcyBwYXJhIGlkZW50aWZpY2FyIGR1cGxpY2F0YXMgZSBhdXNlbnRlc1xyXG4gICAgY29uc3Qgb3JkZXJNYXAgPSBuZXcgTWFwPG51bWJlciwgVW5iUGVzc29hRW5kZXJlY29bXT4oKTtcclxuICAgIGNvbnN0IGVuZGVyZWNvc1dpdGhvdXRPcmRlcjogVW5iUGVzc29hRW5kZXJlY29bXSA9IFtdO1xyXG5cclxuICAgIHRlbXBlbmRlcmVjb3MuZm9yRWFjaChlbmRlcmVjbyA9PiB7XHJcbiAgICAgIGlmIChlbmRlcmVjby5vcmRlbSAhPT0gdW5kZWZpbmVkICYmIGVuZGVyZWNvLm9yZGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgaWYgKCFvcmRlck1hcC5oYXMoZW5kZXJlY28ub3JkZW0pKSB7XHJcbiAgICAgICAgICBvcmRlck1hcC5zZXQoZW5kZXJlY28ub3JkZW0sIFtdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3JkZXJNYXAuZ2V0KGVuZGVyZWNvLm9yZGVtKT8ucHVzaChlbmRlcmVjbyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZW5kZXJlY29zV2l0aG91dE9yZGVyLnB1c2goZW5kZXJlY28pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyAzLiBJbmljaWFsaXplIHVtIFNldCBwYXJhIHJhc3RyZWFyIHRvZGFzIGFzIG9yZGVucyBxdWUgc2Vyw6NvIHVzYWRhcyBubyBmaW5hbFxyXG4gICAgY29uc3QgZmluYWxVc2VkT3JkZXJzID0gbmV3IFNldDxudW1iZXI+KCk7XHJcbiAgICAvLyBJbmljaWFsaXplIG8gcHLDs3hpbW8gdmFsb3IgZGUgb3JkZW0gZGlzcG9uw612ZWxcclxuICAgIGxldCBuZXh0QXZhaWxhYmxlT3JkZXIgPSAwO1xyXG5cclxuICAgIC8vIEZ1bsOnw6NvIGF1eGlsaWFyIHBhcmEgZW5jb250cmFyIGEgcHLDs3hpbWEgb3JkZW0gZGlzcG9uw612ZWxcclxuICAgIGNvbnN0IGdldE5leHRBdmFpbGFibGVPcmRlciA9ICgpID0+IHtcclxuICAgICAgd2hpbGUgKGZpbmFsVXNlZE9yZGVycy5oYXMobmV4dEF2YWlsYWJsZU9yZGVyKSkge1xyXG4gICAgICAgIG5leHRBdmFpbGFibGVPcmRlcisrO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBuZXh0QXZhaWxhYmxlT3JkZXIrKztcclxuICAgIH07XHJcblxyXG4gICAgLy8gNC4gUHJvY2Vzc2UgZW5kZXJlY29zIGNvbSBvcmRlbSBkZWZpbmlkYTpcclxuICAgIC8vICAgIC0gQSBwcmltZWlyYSBvY29ycsOqbmNpYSBkZSB1bWEgb3JkZW0gYSBtYW50w6ltLlxyXG4gICAgLy8gICAgLSBEdXBsaWNhdGFzIHJlY2ViZW0gdW1hIG5vdmEgb3JkZW0uXHJcbiAgICAvLyAgICAtIEFkaWNpb25lIGFzIG9yZGVucyB2w6FsaWRhcyBhbyBmaW5hbFVzZWRPcmRlcnMuXHJcbiAgICB0aGlzLmVuZGVyZWNvcy5mb3JFYWNoKGVuZGVyZWNvID0+IHsgLy8gSXRlcmFyIHNvYnJlIGEgbGlzdGEgb3JpZ2luYWwgcGFyYSBtb2RpZmljYXIgaW4tcGxhY2VcclxuICAgICAgaWYgKGVuZGVyZWNvLm9yZGVtICE9PSB1bmRlZmluZWQgJiYgZW5kZXJlY28ub3JkZW0gIT09IG51bGwpIHtcclxuICAgICAgICBpZiAoIWZpbmFsVXNlZE9yZGVycy5oYXMoZW5kZXJlY28ub3JkZW0pKSB7XHJcbiAgICAgICAgICAvLyBTZSBhIG9yZGVtIGFpbmRhIG7Do28gZm9pIHVzYWRhLCB1c2UtYSBlIGFkaWNpb25lIGFvIHNldFxyXG4gICAgICAgICAgZmluYWxVc2VkT3JkZXJzLmFkZChlbmRlcmVjby5vcmRlbSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIFNlIGEgb3JkZW0gasOhIGZvaSB1c2FkYSAow6kgdW1hIGR1cGxpY2F0YSksIGF0cmlidWEgdW1hIG5vdmFcclxuICAgICAgICAgIGVuZGVyZWNvLm9yZGVtID0gZ2V0TmV4dEF2YWlsYWJsZU9yZGVyKCk7XHJcbiAgICAgICAgICBmaW5hbFVzZWRPcmRlcnMuYWRkKGVuZGVyZWNvLm9yZGVtKTsgLy8gQWRpY2lvbmEgYSBub3ZhIG9yZGVtIGFvIHNldFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gNS4gQXRyaWJ1YSBvcmRlbnMgcGFyYSBlbmRlcmVjb3MgcXVlIG7Do28gdGluaGFtIG9yZGVtIGRlZmluaWRhXHJcbiAgICBlbmRlcmVjb3NXaXRob3V0T3JkZXIuZm9yRWFjaChlbmRlcmVjbyA9PiB7XHJcbiAgICAgIGVuZGVyZWNvLm9yZGVtRW5kZXJlY28gPSBnZXROZXh0QXZhaWxhYmxlT3JkZXIoKTtcclxuICAgICAgZmluYWxVc2VkT3JkZXJzLmFkZChlbmRlcmVjby5vcmRlbUVuZGVyZWNvKTsgLy8gQWRpY2lvbmEgYSBub3ZhIG9yZGVtIGFvIHNldFxyXG4gICAgfSk7XHJcbiAgICBcclxuICAgIC8vIDYuIEZpbmFsbWVudGUsIG9yZGVuZSBhIGxpc3RhIGNvbXBsZXRhIGNvbSBhcyBvcmRlbnMgYWdvcmEgw7puaWNhc1xyXG4gICAgdGhpcy5lbmRlcmVjb3Muc29ydCgoYSwgYikgPT4gKGEub3JkZW1FbmRlcmVjbyA/PyAwKSAtIChiLm9yZGVtRW5kZXJlY28gPz8gMCkpO1xyXG4gIH1cclxuXHJcblxyXG59IiwiPGRpdiBjbGFzcz1cIm1lcy1jb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lcy1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXR1bG9cIj5cclxuICAgICAgICAgICAgICAgIHt7IGVuZGVyZWNvcz8ubGVuZ3RoID09PSAxID8gJ0VuZGVyZcOnbyBDYWRhc3RyYWRvJyA6ICdFbmRlcmXDp29zIENhZGFzdHJhZG9zJyB9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0dWxvXCI+KHt7IGVuZGVyZWNvcz8ubGVuZ3RoIHx8IDAgfX0pPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8YnV0dG9uIG1hdFRvb2x0aXA9XCJOb3ZvIEVuZGVyZcOnb1wiIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib3BlbkZvcm1EaWFsb2cobnVsbClcIj5cclxuICAgICAgICAgICAgQ2FkYXN0cmFyIE5vdm8gRW5kZXJlw6dvXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEV4aWJlIGEgdGFiZWxhIGRlIGRlc3Blc2FzIHNvbWVudGUgc2UgaG91dmVyIGRlc3Blc2FzIC0tPlxyXG4gICAgPHRhYmxlIGNsYXNzPVwibXktdGFibGVcIiAqbmdJZj1cImVuZGVyZWNvcyAmJiBlbmRlcmVjb3MubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgIDx0ciBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNlNGUzZTNjYztcIj5cclxuICAgICAgICAgICAgPHRoIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiID5PcmRlbTwvdGg+XHJcbiAgICAgICAgICAgIDx0aD5Mb2dyYWRvdXJvPC90aD5cclxuICAgICAgICAgICAgPHRoPkJhaXJybzwvdGg+XHJcbiAgICAgICAgICAgIDx0aD5DRVA8L3RoPlxyXG4gICAgICAgICAgICA8dGg+VGlwbzwvdGg+XHJcbiAgICAgICAgICAgIDx0aCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtcIj5Bw6fDtWVzPC90aD5cclxuICAgICAgICA8L3RyPlxyXG5cclxuICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHZhbG9yIG9mIGVuZGVyZWNvczsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwibXktdHJcIj5cclxuICAgICAgICAgICAgPHRkIHN0eWxlPVwid2lkdGg6IDUlOyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+ICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImVuZGVyZWNvcy5sZW5ndGggPiAxICYmIGkgPiAwXCIgbWF0LWljb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJNb3ZlciBwYXJhIGNpbWFcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlclBhcmFDaW1hKGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmFycm93X3Vwd2FyZDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJlbmRlcmVjb3MubGVuZ3RoID4gMSAmJiBpIDwgZW5kZXJlY29zLmxlbmd0aCAtIDFcIiBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIk1vdmVyIHBhcmEgYmFpeG9cIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlclBhcmFCYWl4byhpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hcnJvd19kb3dud2FyZDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkIHN0eWxlPVwid2lkdGg6IDIwJTtcIj57eyB2YWxvci5sb2dyYWRvdXJvIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkIHN0eWxlPVwid2lkdGg6IDIwJTtcIj57eyB2YWxvci5iYWlycm8gfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgc3R5bGU9XCJ3aWR0aDogMTAlO1wiPnt7IHZhbG9yLmNlcCB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBzdHlsZT1cIndpZHRoOiAxMCU7XCI+e3sgdmFsb3IudGlwbz8udG9VcHBlckNhc2UoKSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBzdHlsZT1cIndpZHRoOiAyMCU7IHRleHQtYWxpZ246IGNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJTYWx2YXJcIiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiZWRpdGFyKHZhbG9yKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5lZGl0PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIkRlbGV0YXJcIiBjb2xvcj1cIndhcm5cIiAoY2xpY2spPVwiZXhjbHVpcih2YWxvcilcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICA8L3RhYmxlPlxyXG48L2Rpdj4iXX0=
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iLXBlc3NvYS1lbmRlcmVjby1saXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5iLWxpYi1jb21wb25lbnRzL3NyYy9saWIvdW5iLXBlc3NvYS91bmItcGVzc29hLWVuZGVyZWNvLWZvcm0vdW5iLXBlc3NvYS1lbmRlcmVjby1saXN0LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5iLWxpYi1jb21wb25lbnRzL3NyYy9saWIvdW5iLXBlc3NvYS91bmItcGVzc29hLWVuZGVyZWNvLWZvcm0vdW5iLXBlc3NvYS1lbmRlcmVjby1saXN0Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFLekcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUUsT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7QUFRdEUsTUFBTSxPQUFPLDhCQUE4QjtJQU16QyxZQUFvQixRQUFxQixFQUFVLE9BQXlCLEVBQVMsTUFBaUI7UUFBbEYsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUo3RixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFDcEIsb0JBQWUsR0FBbUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUN4RSxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztJQUdyRSxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsMkVBQTJFO0lBQ3hHLENBQUM7SUFFRCw4REFBOEQ7SUFD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Q0FBQyxhQUFhLEdBQUcscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDcEQsZUFBZSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ2pELENBQUMsQ0FBQyxDQUFDO1FBRUgsZ0NBQWdDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNwRixDQUFDOzhHQWhKVSw4QkFBOEI7a0dBQTlCLDhCQUE4Qiw4T0NkM0MscXdFQWlETTs7MkZEbkNPLDhCQUE4QjtrQkFOMUMsU0FBUztpQ0FDSSxLQUFLLFlBQ1AsOEJBQThCO3VJQU0vQixVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBVbkJQZXNzb2FTZXJ2aWNlIH0gZnJvbSAnLi4vdW5iLXBlc3NvYS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVW5iUGVzc29hRW5kZXJlY28gfSBmcm9tICcuLi91bmItcGVzc29hLW1vZGVscy91bmItcGVzc29hLWVuZGVyZWNvLm1vZGVsJztcclxuaW1wb3J0IHsgVW5iUGVzc29hRW5kZXJlY29Gb3JtQ29tcG9uZW50IH0gZnJvbSAnLi91bmItcGVzc29hLWVuZGVyZWNvLWZvcm0nO1xyXG5pbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzdGFuZGFsb25lOiBmYWxzZSxcclxuICBzZWxlY3RvcjogJ2xpYi11bmItcGVzc29hLWVuZGVyZWNvLWxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91bmItcGVzc29hLWVuZGVyZWNvLWxpc3QuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3VuYi1wZXNzb2EtZW5kZXJlY28tbGlzdC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVbmJQZXNzb2FlbmRlcmVjb0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIEBJbnB1dCgpIHBvZGVFZGl0YXIgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGVuZGVyZWNvczogYW55ID0gW107XHJcbiAgQElucHV0KCkgYXBpUGVzc29hQ29uZmlnOiB7IHVybDogc3RyaW5nOyB0b2tlbjogc3RyaW5nIH0gPSB7IHVybDogJycsIHRva2VuOiAnJyB9O1xyXG4gIEBPdXRwdXQoKSBlbmRlcmVjb3NFbWl0dGVkID0gbmV3IEV2ZW50RW1pdHRlcjxVbmJQZXNzb2FFbmRlcmVjb1tdPigpO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLCBwcml2YXRlIHNlcnZpY2U6IFVuQlBlc3NvYVNlcnZpY2UsIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZykge1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zb3J0QW5kQXNzaWduT3JkZXIoKTsgLy8gb3JnYW5pemEgYSBsaXN0YSBkZSBlbmRlcmVjb3MuIEFzIHZlemVzIHRlbSBvcmRlbSBkdXBsaWNhZGEgb3UgZmFsdGFuZG8uXHJcbiAgfVxyXG5cclxuICAvLyB0ZW0gcXVlIGZhemVyIGlzc28gcHEgbm8gb24gaW5pdCBldSBhaW5kYSBuYW8gdGVuaG8gYSBsaXN0YVxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIC8vIFZlcmlmaWNhIHNlIGEgcHJvcHJpZWRhZGUgJ2VuZGVyZWNvcycgbXVkb3VcclxuICAgIGlmIChjaGFuZ2VzWydlbmRlcmVjb3MnXSAmJiB0aGlzLmVuZGVyZWNvcykge1xyXG4gICAgICAvLyBjaGFtYWRhIHF1YW5kbyBvcyBkYWRvcyByZWFsbWVudGUgY2hlZ2FyZW1cclxuICAgICAgdGhpcy5zb3J0QW5kQXNzaWduT3JkZXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4Y2x1aXIoZW5kZXJlY29QYXJhRXhjbHVpcjogVW5iUGVzc29hRW5kZXJlY28pIHtcclxuICAgIGlmIChlbmRlcmVjb1BhcmFFeGNsdWlyLmNvZGlnbykge1xyXG4gICAgICAvLyBTZSB0ZW0gY8OzZGlnbywgcmVtb3ZlIHBvciBlbGUgKG1haXMgc2VndXJvKVxyXG4gICAgICB0aGlzLmVuZGVyZWNvcyA9IHRoaXMuZW5kZXJlY29zLmZpbHRlcih0ID0+IHQuY29kaWdvICE9PSBlbmRlcmVjb1BhcmFFeGNsdWlyLmNvZGlnbyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBTZSBuw6NvIHRlbSBjw7NkaWdvIChub3ZvIGl0ZW0pLCByZW1vdmUgcGVsYSBvcmRlbVxyXG4gICAgICB0aGlzLmVuZGVyZWNvcyA9IHRoaXMuZW5kZXJlY29zLmZpbHRlcih0ID0+IHQub3JkZW1FbmRlcmVjbyAhPT0gZW5kZXJlY29QYXJhRXhjbHVpci5vcmRlbUVuZGVyZWNvKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDaGFtYSBmdW7Dp8OjbyBleGlzdGVudGUgcXVlIHJlLWNhbGN1bGEgYXMgb3JkZW5zIGUgZW1pdGUgYSBsaXN0YSBhdHVhbGl6YWRhXHJcbiAgICB0aGlzLmF0dWFsaXphck9yZGVtKCk7XHJcbiAgfVxyXG5cclxuICBlZGl0YXIoZW5kZXJlY286IFVuYlBlc3NvYUVuZGVyZWNvKSB7XHJcbiAgICB0aGlzLm9wZW5Gb3JtRGlhbG9nKGVuZGVyZWNvKTtcclxuICB9XHJcblxyXG4gIGF0dWFsaXphck9yZGVtKCkge1xyXG4gICAgdGhpcy5lbmRlcmVjb3MuZm9yRWFjaCgoZW5kZXJlY28sIGlkeCkgPT4ge1xyXG4gICAgICBlbmRlcmVjby5vcmRlbUVuZGVyZWNvID0gaWR4ICsgMTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZW5kZXJlY29zRW1pdHRlZC5lbWl0KHRoaXMuZW5kZXJlY29zKTtcclxuICB9XHJcblxyXG4gIG9wZW5Gb3JtRGlhbG9nKGVuZGVyZWNvVG9FZGl0OiBhbnkpIHtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oVW5iUGVzc29hRW5kZXJlY29Gb3JtQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnOTAwcHgnLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgZW5kZXJlY286IGVuZGVyZWNvVG9FZGl0LCAvLyBFLW1haWwgYSBzZXIgZWRpdGFkbyBvdSB2YXppbyBwYXJhIG5vdm9cclxuICAgICAgICBlbmRlcmVjb3NMaXN0OiB0aGlzLmVuZGVyZWNvcyAvLyBBIHN1YSBsaXN0YSBDT01QTEVUQSBkZSBlLW1haWxzXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgaWYgKCFyZXN1bHQpIHtcclxuICAgICAgICByZXR1cm47IC8vIFVzdcOhcmlvIGNsaWNvdSBlbSAnRmVjaGFyJyBvdSAnQ2FuY2VsYXInXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGluZGV4ID0gLTE7XHJcblxyXG4gICAgICAvLyAxLiBUZW50YSBlbmNvbnRyYXIgcGVsbyAnY29kaWdvJyAocGFyYSBpdGVucyBxdWUgasOhIHZpZXJhbSBkbyBiYW5jbylcclxuICAgICAgaWYgKHJlc3VsdC5jb2RpZ28pIHtcclxuICAgICAgICBpbmRleCA9IHRoaXMuZW5kZXJlY29zLmZpbmRJbmRleCh0ID0+IHQuY29kaWdvID09PSByZXN1bHQuY29kaWdvKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gMi4gU2UgbsOjbyBhY2hvdSBwZWxvICdjb2RpZ28nLCB0ZW50YSBwZWxhICdvcmRlbScuXHJcbiAgICAgIGlmIChpbmRleCA9PT0gLTEgJiYgcmVzdWx0Lm9yZGVtRW5kZXJlY28pIHtcclxuICAgICAgICBpbmRleCA9IHRoaXMuZW5kZXJlY29zLmZpbmRJbmRleCh0ID0+IHQub3JkZW1FbmRlcmVjbyA9PT0gcmVzdWx0Lm9yZGVtRW5kZXJlY28pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgIC8vIEVOQ09OVFJPVSAocGVsbyAnY29kaWdvJyBvdSBwZWxhICdvcmRlbScpOiBBdHVhbGl6YSBvIGl0ZW0gZXhpc3RlbnRlXHJcbiAgICAgICAgdGhpcy5lbmRlcmVjb3NbaW5kZXhdID0gcmVzdWx0O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIE7Dg08gRU5DT05UUk9VOiDDiSB1bSBpdGVtIDEwMCUgbm92byAobsOjbyB1bWEgZWRpw6fDo28pIGFkaWNpb25hIG5vIGZpbVxyXG4gICAgICAgIHRoaXMuZW5kZXJlY29zLnB1c2gocmVzdWx0KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5lbmRlcmVjb3Muc29ydCgoYSwgYikgPT4gKGEub3JkZW1FbmRlcmVjbyA/PyAwKSAtIChiLm9yZGVtRW5kZXJlY28gPz8gMCkpOyAvL1xyXG4gICAgICB0aGlzLmVuZGVyZWNvc0VtaXR0ZWQuZW1pdChbLi4udGhpcy5lbmRlcmVjb3NdKTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG1vdmVyTGluaGEoZXZlbnQ6IENka0RyYWdEcm9wPGFueVtdPikge1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuZW5kZXJlY29zLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gICAgdGhpcy5hdHVhbGl6YXJPcmRlbSgpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNvcnRBbmRBc3NpZ25PcmRlcigpOiB2b2lkIHtcclxuICAgIC8vIDEuIENyaWUgdW1hIGPDs3BpYSBkYSBsaXN0YVxyXG4gICAgY29uc3QgdGVtcGVuZGVyZWNvcyA9IFsuLi50aGlzLmVuZGVyZWNvc107XHJcblxyXG4gICAgLy8gMi4gTWFwZWllIGFzIG9yZGVucyBleGlzdGVudGVzXHJcbiAgICBjb25zdCBvcmRlck1hcCA9IG5ldyBNYXA8bnVtYmVyLCBVbmJQZXNzb2FFbmRlcmVjb1tdPigpO1xyXG4gICAgY29uc3QgZW5kZXJlY29zV2l0aG91dE9yZGVyOiBVbmJQZXNzb2FFbmRlcmVjb1tdID0gW107XHJcblxyXG4gICAgdGVtcGVuZGVyZWNvcy5mb3JFYWNoKGVuZGVyZWNvID0+IHtcclxuICAgICAgLy8gQ09SUkXDh8ODTyBBUVVJOlxyXG4gICAgICBpZiAoZW5kZXJlY28ub3JkZW1FbmRlcmVjbyAhPT0gdW5kZWZpbmVkICYmIGVuZGVyZWNvLm9yZGVtRW5kZXJlY28gIT09IG51bGwpIHtcclxuICAgICAgICBpZiAoIW9yZGVyTWFwLmhhcyhlbmRlcmVjby5vcmRlbUVuZGVyZWNvKSkge1xyXG4gICAgICAgICAgb3JkZXJNYXAuc2V0KGVuZGVyZWNvLm9yZGVtRW5kZXJlY28sIFtdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3JkZXJNYXAuZ2V0KGVuZGVyZWNvLm9yZGVtRW5kZXJlY28pPy5wdXNoKGVuZGVyZWNvKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBlbmRlcmVjb3NXaXRob3V0T3JkZXIucHVzaChlbmRlcmVjbyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIDMuIC4uLiAoRnVuw6fDtWVzICdmaW5hbFVzZWRPcmRlcnMnLCAnbmV4dEF2YWlsYWJsZU9yZGVyJyBjb250aW51YW0gaWd1YWlzKSAuLi5cclxuICAgIGNvbnN0IGZpbmFsVXNlZE9yZGVycyA9IG5ldyBTZXQ8bnVtYmVyPigpO1xyXG4gICAgbGV0IG5leHRBdmFpbGFibGVPcmRlciA9IDA7XHJcbiAgICBjb25zdCBnZXROZXh0QXZhaWxhYmxlT3JkZXIgPSAoKSA9PiB7XHJcbiAgICAgIHdoaWxlIChmaW5hbFVzZWRPcmRlcnMuaGFzKG5leHRBdmFpbGFibGVPcmRlcikpIHtcclxuICAgICAgICBuZXh0QXZhaWxhYmxlT3JkZXIrKztcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbmV4dEF2YWlsYWJsZU9yZGVyKys7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIDQuIFByb2Nlc3NlIGVuZGVyZWNvcyBjb20gb3JkZW0gZGVmaW5pZGE6XHJcbiAgICB0aGlzLmVuZGVyZWNvcy5mb3JFYWNoKGVuZGVyZWNvID0+IHtcclxuICAgICAgLy8gQ09SUkXDh8ODTyBBUVVJOlxyXG4gICAgICBpZiAoZW5kZXJlY28ub3JkZW1FbmRlcmVjbyAhPT0gdW5kZWZpbmVkICYmIGVuZGVyZWNvLm9yZGVtRW5kZXJlY28gIT09IG51bGwpIHtcclxuICAgICAgICBpZiAoIWZpbmFsVXNlZE9yZGVycy5oYXMoZW5kZXJlY28ub3JkZW1FbmRlcmVjbykpIHtcclxuICAgICAgICAgIGZpbmFsVXNlZE9yZGVycy5hZGQoZW5kZXJlY28ub3JkZW1FbmRlcmVjbyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIER1cGxpY2F0YSwgYXRyaWJ1YSB1bWEgbm92YVxyXG4gICAgICAgICAgZW5kZXJlY28ub3JkZW1FbmRlcmVjbyA9IGdldE5leHRBdmFpbGFibGVPcmRlcigpO1xyXG4gICAgICAgICAgZmluYWxVc2VkT3JkZXJzLmFkZChlbmRlcmVjby5vcmRlbUVuZGVyZWNvKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIDUuIEF0cmlidWEgb3JkZW5zIHBhcmEgZW5kZXJlY29zIHF1ZSBuw6NvIHRpbmhhbSBvcmRlbVxyXG4gICAgZW5kZXJlY29zV2l0aG91dE9yZGVyLmZvckVhY2goZW5kZXJlY28gPT4ge1xyXG4gICAgICBlbmRlcmVjby5vcmRlbUVuZGVyZWNvID0gZ2V0TmV4dEF2YWlsYWJsZU9yZGVyKCk7IC8vXHJcbiAgICAgIGZpbmFsVXNlZE9yZGVycy5hZGQoZW5kZXJlY28ub3JkZW1FbmRlcmVjbyk7IC8vXHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyA2LiBGaW5hbG1lbnRlLCBvcmRlbmUgYSBsaXN0YVxyXG4gICAgdGhpcy5lbmRlcmVjb3Muc29ydCgoYSwgYikgPT4gKGEub3JkZW1FbmRlcmVjbyA/PyAwKSAtIChiLm9yZGVtRW5kZXJlY28gPz8gMCkpOyAvL1xyXG4gIH1cclxuXHJcblxyXG59IiwiPGRpdiBjbGFzcz1cIm1lcy1jb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lcy1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXR1bG9cIj5cclxuICAgICAgICAgICAgICAgIHt7IGVuZGVyZWNvcz8ubGVuZ3RoID09PSAxID8gJ0VuZGVyZcOnbyBDYWRhc3RyYWRvJyA6ICdFbmRlcmXDp29zIENhZGFzdHJhZG9zJyB9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0dWxvXCI+KHt7IGVuZGVyZWNvcz8ubGVuZ3RoIHx8IDAgfX0pPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXRUb29sdGlwPVwiTm92byBFbmRlcmXDp29cIiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm9wZW5Gb3JtRGlhbG9nKG51bGwpXCI+XHJcbiAgICAgICAgICAgIENhZGFzdHJhciBOb3ZvIEVuZGVyZcOnb1xyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBFeGliZSBhIHRhYmVsYSBkZSBkZXNwZXNhcyBzb21lbnRlIHNlIGhvdXZlciBkZXNwZXNhcyAtLT5cclxuICAgIDx0YWJsZSBjbGFzcz1cIm15LXRhYmxlXCIgKm5nSWY9XCJlbmRlcmVjb3MgJiYgZW5kZXJlY29zLmxlbmd0aCA+IDBcIiBjZGtEcm9wTGlzdFxyXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwibW92ZXJMaW5oYSgkZXZlbnQpXCI+XHJcbiAgICAgICAgPHRyIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogI2U0ZTNlM2NjO1wiPlxyXG4gICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDogNSU7IHRleHQtYWxpZ246IGNlbnRlcjtcIj5PcmRlbTwvdGg+XHJcbiAgICAgICAgICAgIDx0aD5Mb2dyYWRvdXJvPC90aD5cclxuICAgICAgICAgICAgPHRoPkJhaXJybzwvdGg+XHJcbiAgICAgICAgICAgIDx0aD5DRVA8L3RoPlxyXG4gICAgICAgICAgICA8dGg+VGlwbzwvdGg+XHJcbiAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiAxJTsgdGV4dC1hbGlnbjogY2VudGVyO1wiPkHDp8O1ZXM8L3RoPlxyXG4gICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgdmFsb3Igb2YgZW5kZXJlY29zOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJteS10clwiIGNka0RyYWc+XHJcbiAgICAgICAgICAgIDx0ZCBzdHlsZT1cIndpZHRoOiA1JTsgdGV4dC1hbGlnbjogY2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyYWctY2VsbFwiIGNka0RyYWdIYW5kbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmRyYWdfaW5kaWNhdG9yPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBpICsgMSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3sgdmFsb3IubG9ncmFkb3VybyB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD57eyB2YWxvci5iYWlycm8gfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3sgdmFsb3IuY2VwIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkPnt7IHZhbG9yLnRpcG8/LnRvVXBwZXJDYXNlKCkgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIlNhbHZhclwiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJlZGl0YXIodmFsb3IpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5lZGl0PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIkRlbGV0YXJcIiBjb2xvcj1cIndhcm5cIiAoY2xpY2spPVwiZXhjbHVpcih2YWxvcilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC90YWJsZT5cclxuPC9kaXY+Il19
|