keevo-components 1.8.85 → 1.8.87

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.
@@ -5,84 +5,50 @@ import * as i1 from "@angular/common";
5
5
  import * as i2 from "../kv-table/kv-table.component";
6
6
  export class WorkspaceComponent {
7
7
  constructor() {
8
- this.nomeSistema = 'Nome do Sistema';
8
+ /**
9
+ * Nome do usuário logado
10
+ */
9
11
  this.nomeUsuario = 'Nome do Usuário Logado';
10
- this.somenteMaster = false; // Se for apenas seleção de contabilidade
12
+ /**
13
+ * Selecionar apenas master
14
+ */
15
+ this.somenteMaster = false;
16
+ /**
17
+ * Evento de master selecionada
18
+ */
11
19
  this.onGetMasterSelecionada = new EventEmitter();
20
+ /**
21
+ * Evento de empresa selecionada
22
+ */
12
23
  this.onGetEmpresaSelecionada = new EventEmitter();
24
+ this.totalRecordsEmpresa = 0;
25
+ this.showPaginatorEmpresa = false;
13
26
  this.visivel = true;
14
27
  this.txtPesquisa = '';
15
28
  this.imgPersonagens = '';
16
29
  this.imgLogoKeevo = '';
17
30
  this.styleBackground = '';
18
31
  this.imgLogoKeevoCenter = '';
19
- this.tableSizeMaster = 5;
32
+ //Tabela Master
20
33
  this.dataSourceMaster = [];
21
- this.tableSizeEmpresa = 5;
34
+ this.tableSizeMaster = 5;
35
+ //Tabela Empresa
22
36
  this.dataSourceEmpresa = [];
37
+ this.tableSizeEmpresa = 5;
23
38
  }
24
- ngOnInit() {
25
- this.imgPersonagens = ImagensService.getPersonagensWorkSpace();
26
- this.imgLogoKeevo = ImagensService.getLogoKeevo();
27
- this.imgLogoKeevoCenter = ImagensService.getLogoKeevoCenter();
28
- this.styleBackground =
29
- 'background-image: url(' + ImagensService.getBackgroundWorkSpace() + ');';
30
- this.columnConfigTableMaster();
31
- this.verificaMasterUnica();
32
- }
33
- verificaMasterUnica() {
34
- if (this.masters.length == 1)
35
- this.selecionarMaster(this.masters[0]);
36
- }
37
- selecionarMaster(master) {
38
- this.onGetMasterSelecionada.emit(master);
39
- this.masterSelecionada = master;
40
- if (this.somenteMaster)
41
- this.visivel = false;
42
- else {
43
- this.empresas = master.empresas;
44
- this.columnConfigTableEmpresa();
45
- this.verificaEmpresaUnica();
46
- }
47
- }
48
- verificaEmpresaUnica() {
49
- if (this.empresas && this.empresas.length == 1)
50
- this.selecionarEmpresa(this.empresas[0]);
51
- }
52
- selecionarEmpresa(empresa) {
53
- this.onGetEmpresaSelecionada.emit(empresa);
54
- this.empresaSelecionada = empresa;
55
- this.visivel = false;
56
- }
57
- voltar() {
58
- this.empresaSelecionada = undefined;
59
- this.masterSelecionada = undefined;
39
+ activeItemEmpresa(e) {
40
+ this.selectedItemEmpresa = e;
60
41
  }
61
- filtrarEmpresa(event) {
62
- this.empresas = this.masterSelecionada.empresas.filter((e) => e.nomeempresa.toLowerCase().includes(event.toLowerCase()));
42
+ activeItemMaster(e) {
43
+ this.selectedItemMaster = e;
63
44
  }
64
- //------------------MASTER------------------------
65
45
  columnConfigTableMaster() {
66
46
  this.dataSourceMaster = this.masters;
67
47
  this.tableConfigMaster = {
68
48
  lazy: false,
69
49
  columns: [
70
- {
71
- position: 0,
72
- field: 'idmaster',
73
- header: 'Licença',
74
- width: '',
75
- centralize: false,
76
- sortable: false,
77
- },
78
- {
79
- position: 1,
80
- field: 'razaosocial',
81
- header: '',
82
- width: '80%',
83
- centralize: false,
84
- sortable: false,
85
- },
50
+ { position: 0, field: 'idmaster', header: 'Licença', width: '', centralize: false, sortable: false },
51
+ { position: 1, field: 'nome', header: '', width: '80%', centralize: false, sortable: false, },
86
52
  ],
87
53
  actions: [
88
54
  {
@@ -103,35 +69,14 @@ export class WorkspaceComponent {
103
69
  enableSelect: false,
104
70
  };
105
71
  }
106
- activeItemMaster(e) {
107
- this.selectedItemMaster = e;
108
- }
109
- doubleClickMaster(e) {
110
- this.selectedItemMaster = e.rowData;
111
- this.selecionarMaster(e.rowData);
112
- }
113
- //------------------Empresa------------------------
114
72
  columnConfigTableEmpresa() {
115
73
  this.dataSourceEmpresa = this.empresas;
116
74
  this.tableConfigEmpresa = {
117
75
  lazy: false,
118
76
  columns: [
119
- {
120
- position: 0,
121
- field: 'cnpjempresa',
122
- header: 'Empresa',
123
- width: '',
124
- centralize: false,
125
- sortable: false,
126
- },
127
- {
128
- position: 1,
129
- field: 'nomeempresa',
130
- header: '',
131
- width: '80%',
132
- centralize: false,
133
- sortable: false,
134
- },
77
+ { position: 0, field: 'codigopessoa', header: 'Código', width: '', centralize: false, sortable: false },
78
+ { position: 1, field: 'cpfcnpj', header: 'CPF/CNPJ', width: '', centralize: false, sortable: false, pipe: 'cpfcnpj' },
79
+ { position: 2, field: 'razaosocial', header: 'Razão social', width: '50%', centralize: false, sortable: false },
135
80
  ],
136
81
  actions: [
137
82
  {
@@ -141,6 +86,9 @@ export class WorkspaceComponent {
141
86
  command: () => {
142
87
  this.selecionarEmpresa(this.selectedItemEmpresa);
143
88
  },
89
+ disabled: () => {
90
+ return false;
91
+ },
144
92
  },
145
93
  ],
146
94
  actionsLote: [],
@@ -149,25 +97,66 @@ export class WorkspaceComponent {
149
97
  enableSelect: false,
150
98
  };
151
99
  }
152
- activeItemEmpresa(e) {
153
- this.selectedItemEmpresa = e;
154
- }
155
100
  doubleClickEmpresa(e) {
156
101
  this.selectedItemEmpresa = e.rowData;
157
102
  this.selecionarEmpresa(e.rowData);
158
103
  }
104
+ doubleClickMaster(e) {
105
+ this.selectedItemMaster = e.rowData;
106
+ this.selecionarMaster(e.rowData);
107
+ }
108
+ filtrarEmpresa(event) {
109
+ this.empresas = this.masterSelecionada.empresas.filter((e) => e.nomeempresa.toLowerCase().includes(event.toLowerCase()));
110
+ }
111
+ ngOnInit() {
112
+ this.imgPersonagens = ImagensService.getPersonagensWorkSpace();
113
+ this.imgLogoKeevo = ImagensService.getLogoKeevo();
114
+ this.imgLogoKeevoCenter = ImagensService.getLogoKeevoCenter();
115
+ this.styleBackground = 'background-image: url(' + ImagensService.getBackgroundWorkSpace() + ');';
116
+ this.columnConfigTableMaster();
117
+ this.verificaMasterUnica();
118
+ }
119
+ selecionarEmpresa(empresa) {
120
+ this.onGetEmpresaSelecionada.emit(empresa);
121
+ this.empresaSelecionada = empresa;
122
+ this.visivel = false;
123
+ }
124
+ selecionarMaster(master) {
125
+ this.onGetMasterSelecionada.emit(master);
126
+ this.masterSelecionada = master;
127
+ if (this.somenteMaster)
128
+ this.visivel = false;
129
+ else {
130
+ this.empresas = master.empresas;
131
+ this.showPaginatorEmpresa = (this.empresas.length > 5);
132
+ this.columnConfigTableEmpresa();
133
+ this.verificaEmpresaUnica();
134
+ }
135
+ }
136
+ verificaEmpresaUnica() {
137
+ if (this.empresas && this.empresas.length == 1)
138
+ this.selecionarEmpresa(this.empresas[0]);
139
+ }
140
+ verificaMasterUnica() {
141
+ if (this.masters.length == 1)
142
+ this.selecionarMaster(this.masters[0]);
143
+ }
144
+ voltar() {
145
+ this.empresaSelecionada = undefined;
146
+ this.masterSelecionada = undefined;
147
+ }
159
148
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: WorkspaceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
160
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: WorkspaceComponent, selector: "kv-workspace", inputs: { nomeSistema: "nomeSistema", nomeUsuario: "nomeUsuario", masters: "masters", somenteMaster: "somenteMaster" }, outputs: { onGetMasterSelecionada: "onGetMasterSelecionada", onGetEmpresaSelecionada: "onGetEmpresaSelecionada" }, ngImport: i0, template: "<div *ngIf=\"visivel\" [style]=\"styleBackground\"\r\n class=\"h-screen flex justify-content-center align-items-center login-container flex-column bg-cover\">\r\n <div id=\"card-container\"\r\n class=\"flex flex-column justify-content-around card-login formgrid p-fluid bg-white border-round p-2\">\r\n <div class=\"field col-12 flex justify-content-center mb-1\">\r\n <img [src]=\"imgLogoKeevoCenter\" style=\"width: 200px\" />\r\n </div>\r\n\r\n <div class=\"col-12 align-items-center z-5\">\r\n <div class=\"col-9\">\r\n Ol\u00E1, <b>{{ nomeUsuario }}.</b> Bem vindo(a)!\r\n </div>\r\n <b class=\"field col-9 flex\">\r\n Escolha qual Workspace voc\u00EA deseja acessar:</b>\r\n </div>\r\n\r\n <!-- IN\u00CDCIO DO WORKSPACE DE CONTABILIDADE (MASTERS) -->\r\n <div *ngIf=\"!masterSelecionada\" class=\"col-12 z-5\">\r\n \r\n <kv-table\r\n [tableSize]=\"tableSizeMaster\"\r\n [rows]=\"5\"\r\n [config]=\"tableConfigMaster\"\r\n [paginator]=\"false\"\r\n [dataSource]=\"dataSourceMaster\"\r\n [rowsPerPageOptions]=\"[5, 10, 25, 50, 100, 200]\"\r\n [acoesLinhaTabela]=\"true\"\r\n (doubleClickEvent)=\"doubleClickMaster($event)\"\r\n (onActiveItem)=\"activeItemMaster($event)\"\r\n [isTableScrollable]=\"true\"\r\n [scrollHeight]=\"'300px'\"\r\n >\r\n </kv-table>\r\n \r\n </div>\r\n <!-- FIM DO WORKSPACE DE CONTABILIDADE (MASTERS) -->\r\n\r\n <!-- IN\u00CDCIO DO WORKSPACE EMPRESA -->\r\n <div *ngIf=\"masterSelecionada && !empresaSelecionada\" class=\"col-12 z-5\">\r\n <kv-table\r\n [tableSize]=\"tableSizeEmpresa\"\r\n [rows]=\"5\"\r\n [config]=\"tableConfigEmpresa\"\r\n [paginator]=\"false\"\r\n [dataSource]=\"dataSourceEmpresa\"\r\n [rowsPerPageOptions]=\"[5, 10, 25, 50, 100, 200]\"\r\n [acoesLinhaTabela]=\"true\"\r\n (doubleClickEvent)=\"doubleClickEmpresa($event)\"\r\n (onActiveItem)=\"activeItemEmpresa($event)\"\r\n [isTableScrollable]=\"true\"\r\n [scrollHeight]=\"'300px'\"\r\n >\r\n </kv-table>\r\n </div>\r\n <!-- FIM DO WORKSPACE EMPRESA -->\r\n </div>\r\n</div>\r\n", styles: [".card-login{width:70%;max-width:700px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.KvTableComponent, selector: "kv-table", inputs: ["templates", "config", "defaultSortField", "dataSource", "selectedItems", "totalRecords", "paginator", "rowsPerPageOptions", "rows", "pageLinksOptions", "showFirstLastIcon", "tableSize", "applyStyle", "acoesLinhaTabela", "filterColumnsBtn", "filtrosAvancados", "scrollHeight", "isTableScrollable", "tableCaptalized", "rowTrackBy", "responsiveLayout"], outputs: ["onActiveItem", "onActiveItemLote", "onPaginate", "onSelectionChange", "doubleClickEvent", "filterField", "filtrosAvancadosEmit", "onSwitchTableChange"] }] }); }
149
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: WorkspaceComponent, selector: "kv-workspace", inputs: { nomeUsuario: "nomeUsuario", masters: "masters", masterSelecionada: "masterSelecionada", somenteMaster: "somenteMaster" }, outputs: { onGetMasterSelecionada: "onGetMasterSelecionada", onGetEmpresaSelecionada: "onGetEmpresaSelecionada" }, ngImport: i0, template: "<div *ngIf=\"visivel\" [style]=\"styleBackground\"\r\n class=\"h-screen flex justify-content-center align-items-center login-container flex-column bg-cover\">\r\n <div id=\"card-container\"\r\n class=\"flex flex-column justify-content-around card-login formgrid p-fluid bg-white border-round p-2\">\r\n <div class=\"field col-12 flex justify-content-center mb-1\">\r\n <img [src]=\"imgLogoKeevoCenter\" style=\"width: 200px\" />\r\n </div>\r\n\r\n <div class=\"col-12 align-items-center z-5\">\r\n <div class=\"col-9\">\r\n Ol\u00E1, <b>{{ nomeUsuario }}.</b> Bem vindo(a)!\r\n </div>\r\n <b class=\"field col-9 flex\">\r\n Escolha qual Workspace voc\u00EA deseja acessar:</b>\r\n </div>\r\n\r\n <!-- IN\u00CDCIO DO WORKSPACE DE CONTABILIDADE (MASTERS) -->\r\n <div *ngIf=\"!masterSelecionada\" class=\"col-12 z-5\">\r\n\r\n <kv-table\r\n [tableSize]=\"tableSizeMaster\"\r\n [rows]=\"5\"\r\n [config]=\"tableConfigMaster\"\r\n [paginator]=\"false\"\r\n [dataSource]=\"dataSourceMaster\"\r\n [rowsPerPageOptions]=\"[5, 10, 25, 50, 100, 200]\"\r\n [acoesLinhaTabela]=\"true\"\r\n (doubleClickEvent)=\"doubleClickMaster($event)\"\r\n (onActiveItem)=\"activeItemMaster($event)\"\r\n [isTableScrollable]=\"true\"\r\n [scrollHeight]=\"'300px'\">\r\n </kv-table>\r\n\r\n </div>\r\n <!-- FIM DO WORKSPACE DE CONTABILIDADE (MASTERS) -->\r\n\r\n <!-- IN\u00CDCIO DO WORKSPACE EMPRESA -->\r\n <div *ngIf=\"masterSelecionada && !empresaSelecionada\" class=\"col-12 z-5\">\r\n <kv-table\r\n [tableSize]=\"tableSizeEmpresa\"\r\n [rows]=\"5\"\r\n [config]=\"tableConfigEmpresa\"\r\n [paginator]=\"showPaginatorEmpresa\"\r\n [dataSource]=\"dataSourceEmpresa\"\r\n [rowsPerPageOptions]=\"[5]\"\r\n [acoesLinhaTabela]=\"true\"\r\n (doubleClickEvent)=\"doubleClickEmpresa($event)\"\r\n (onActiveItem)=\"activeItemEmpresa($event)\"\r\n [isTableScrollable]=\"true\"\r\n [scrollHeight]=\"'300px'\">\r\n </kv-table>\r\n </div>\r\n <!-- FIM DO WORKSPACE EMPRESA -->\r\n </div>\r\n</div>\r\n", styles: [".card-login{width:80%;max-width:800px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.KvTableComponent, selector: "kv-table", inputs: ["templates", "config", "defaultSortField", "dataSource", "selectedItems", "totalRecords", "paginator", "rowsPerPageOptions", "rows", "pageLinksOptions", "showFirstLastIcon", "tableSize", "applyStyle", "acoesLinhaTabela", "filterColumnsBtn", "filtrosAvancados", "scrollHeight", "isTableScrollable", "tableCaptalized", "rowTrackBy", "responsiveLayout"], outputs: ["onActiveItem", "onActiveItemLote", "onPaginate", "onSelectionChange", "doubleClickEvent", "filterField", "filtrosAvancadosEmit", "onSwitchTableChange"] }] }); }
161
150
  }
162
151
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: WorkspaceComponent, decorators: [{
163
152
  type: Component,
164
- args: [{ selector: 'kv-workspace', template: "<div *ngIf=\"visivel\" [style]=\"styleBackground\"\r\n class=\"h-screen flex justify-content-center align-items-center login-container flex-column bg-cover\">\r\n <div id=\"card-container\"\r\n class=\"flex flex-column justify-content-around card-login formgrid p-fluid bg-white border-round p-2\">\r\n <div class=\"field col-12 flex justify-content-center mb-1\">\r\n <img [src]=\"imgLogoKeevoCenter\" style=\"width: 200px\" />\r\n </div>\r\n\r\n <div class=\"col-12 align-items-center z-5\">\r\n <div class=\"col-9\">\r\n Ol\u00E1, <b>{{ nomeUsuario }}.</b> Bem vindo(a)!\r\n </div>\r\n <b class=\"field col-9 flex\">\r\n Escolha qual Workspace voc\u00EA deseja acessar:</b>\r\n </div>\r\n\r\n <!-- IN\u00CDCIO DO WORKSPACE DE CONTABILIDADE (MASTERS) -->\r\n <div *ngIf=\"!masterSelecionada\" class=\"col-12 z-5\">\r\n \r\n <kv-table\r\n [tableSize]=\"tableSizeMaster\"\r\n [rows]=\"5\"\r\n [config]=\"tableConfigMaster\"\r\n [paginator]=\"false\"\r\n [dataSource]=\"dataSourceMaster\"\r\n [rowsPerPageOptions]=\"[5, 10, 25, 50, 100, 200]\"\r\n [acoesLinhaTabela]=\"true\"\r\n (doubleClickEvent)=\"doubleClickMaster($event)\"\r\n (onActiveItem)=\"activeItemMaster($event)\"\r\n [isTableScrollable]=\"true\"\r\n [scrollHeight]=\"'300px'\"\r\n >\r\n </kv-table>\r\n \r\n </div>\r\n <!-- FIM DO WORKSPACE DE CONTABILIDADE (MASTERS) -->\r\n\r\n <!-- IN\u00CDCIO DO WORKSPACE EMPRESA -->\r\n <div *ngIf=\"masterSelecionada && !empresaSelecionada\" class=\"col-12 z-5\">\r\n <kv-table\r\n [tableSize]=\"tableSizeEmpresa\"\r\n [rows]=\"5\"\r\n [config]=\"tableConfigEmpresa\"\r\n [paginator]=\"false\"\r\n [dataSource]=\"dataSourceEmpresa\"\r\n [rowsPerPageOptions]=\"[5, 10, 25, 50, 100, 200]\"\r\n [acoesLinhaTabela]=\"true\"\r\n (doubleClickEvent)=\"doubleClickEmpresa($event)\"\r\n (onActiveItem)=\"activeItemEmpresa($event)\"\r\n [isTableScrollable]=\"true\"\r\n [scrollHeight]=\"'300px'\"\r\n >\r\n </kv-table>\r\n </div>\r\n <!-- FIM DO WORKSPACE EMPRESA -->\r\n </div>\r\n</div>\r\n", styles: [".card-login{width:70%;max-width:700px}\n"] }]
165
- }], ctorParameters: () => [], propDecorators: { nomeSistema: [{
166
- type: Input
167
- }], nomeUsuario: [{
153
+ args: [{ selector: 'kv-workspace', template: "<div *ngIf=\"visivel\" [style]=\"styleBackground\"\r\n class=\"h-screen flex justify-content-center align-items-center login-container flex-column bg-cover\">\r\n <div id=\"card-container\"\r\n class=\"flex flex-column justify-content-around card-login formgrid p-fluid bg-white border-round p-2\">\r\n <div class=\"field col-12 flex justify-content-center mb-1\">\r\n <img [src]=\"imgLogoKeevoCenter\" style=\"width: 200px\" />\r\n </div>\r\n\r\n <div class=\"col-12 align-items-center z-5\">\r\n <div class=\"col-9\">\r\n Ol\u00E1, <b>{{ nomeUsuario }}.</b> Bem vindo(a)!\r\n </div>\r\n <b class=\"field col-9 flex\">\r\n Escolha qual Workspace voc\u00EA deseja acessar:</b>\r\n </div>\r\n\r\n <!-- IN\u00CDCIO DO WORKSPACE DE CONTABILIDADE (MASTERS) -->\r\n <div *ngIf=\"!masterSelecionada\" class=\"col-12 z-5\">\r\n\r\n <kv-table\r\n [tableSize]=\"tableSizeMaster\"\r\n [rows]=\"5\"\r\n [config]=\"tableConfigMaster\"\r\n [paginator]=\"false\"\r\n [dataSource]=\"dataSourceMaster\"\r\n [rowsPerPageOptions]=\"[5, 10, 25, 50, 100, 200]\"\r\n [acoesLinhaTabela]=\"true\"\r\n (doubleClickEvent)=\"doubleClickMaster($event)\"\r\n (onActiveItem)=\"activeItemMaster($event)\"\r\n [isTableScrollable]=\"true\"\r\n [scrollHeight]=\"'300px'\">\r\n </kv-table>\r\n\r\n </div>\r\n <!-- FIM DO WORKSPACE DE CONTABILIDADE (MASTERS) -->\r\n\r\n <!-- IN\u00CDCIO DO WORKSPACE EMPRESA -->\r\n <div *ngIf=\"masterSelecionada && !empresaSelecionada\" class=\"col-12 z-5\">\r\n <kv-table\r\n [tableSize]=\"tableSizeEmpresa\"\r\n [rows]=\"5\"\r\n [config]=\"tableConfigEmpresa\"\r\n [paginator]=\"showPaginatorEmpresa\"\r\n [dataSource]=\"dataSourceEmpresa\"\r\n [rowsPerPageOptions]=\"[5]\"\r\n [acoesLinhaTabela]=\"true\"\r\n (doubleClickEvent)=\"doubleClickEmpresa($event)\"\r\n (onActiveItem)=\"activeItemEmpresa($event)\"\r\n [isTableScrollable]=\"true\"\r\n [scrollHeight]=\"'300px'\">\r\n </kv-table>\r\n </div>\r\n <!-- FIM DO WORKSPACE EMPRESA -->\r\n </div>\r\n</div>\r\n", styles: [".card-login{width:80%;max-width:800px}\n"] }]
154
+ }], ctorParameters: () => [], propDecorators: { nomeUsuario: [{
168
155
  type: Input
169
156
  }], masters: [{
170
157
  type: Input
158
+ }], masterSelecionada: [{
159
+ type: Input
171
160
  }], somenteMaster: [{
172
161
  type: Input
173
162
  }], onGetMasterSelecionada: [{
@@ -175,4 +164,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
175
164
  }], onGetEmpresaSelecionada: [{
176
165
  type: Output
177
166
  }] } });
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3Ytd29ya3NwYWNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LXdvcmtzcGFjZS9rdi13b3Jrc3BhY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3Ytd29ya3NwYWNlL2t2LXdvcmtzcGFjZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7OztBQVNwRSxNQUFNLE9BQU8sa0JBQWtCO0lBaUM3QjtRQWhDUyxnQkFBVyxHQUFXLGlCQUFpQixDQUFDO1FBQ3hDLGdCQUFXLEdBQVcsd0JBQXdCLENBQUM7UUFFL0Msa0JBQWEsR0FBWSxLQUFLLENBQUMsQ0FBQyx5Q0FBeUM7UUFFeEUsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNqRCw0QkFBdUIsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBTTVELFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDZixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQix1QkFBa0IsR0FBRyxFQUFFLENBQUM7UUFLeEIsb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFFNUIscUJBQWdCLEdBQVEsRUFBRSxDQUFDO1FBSTNCLHFCQUFnQixHQUFXLENBQUMsQ0FBQztRQUU3QixzQkFBaUIsR0FBUSxFQUFFLENBQUM7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LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSW1hZ2Vuc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9hcGkvc2VydmljZXMvaW1hZ2Vucy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGFibGVDb25maWdDb2x1bW4gfSBmcm9tICcuLi8uLi9hcGkvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb25maWcuY29sdW1uJztcclxuaW1wb3J0IHsgVGFibGVDb25maWcgfSBmcm9tICcuLi8uLi9hcGkvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb25maWcnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdrdi13b3Jrc3BhY2UnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9rdi13b3Jrc3BhY2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2t2LXdvcmtzcGFjZS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya3NwYWNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBub21lU2lzdGVtYTogc3RyaW5nID0gJ05vbWUgZG8gU2lzdGVtYSc7XHJcbiAgQElucHV0KCkgbm9tZVVzdWFyaW86IHN0cmluZyA9ICdOb21lIGRvIFVzdcOhcmlvIExvZ2Fkbyc7XHJcbiAgQElucHV0KCkgbWFzdGVycyE6IGFueVtdOyAvLyBMaXN0YSBkYXMgY29udGFiaWxpZGFkZXMgZSBzdWFzIHJlc3BlY3RpdmFzIGVtcHJlc2FzXHJcbiAgQElucHV0KCkgc29tZW50ZU1hc3RlcjogYm9vbGVhbiA9IGZhbHNlOyAvLyBTZSBmb3IgYXBlbmFzIHNlbGXDp8OjbyBkZSBjb250YWJpbGlkYWRlXHJcblxyXG4gIEBPdXRwdXQoKSBvbkdldE1hc3RlclNlbGVjaW9uYWRhID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9uR2V0RW1wcmVzYVNlbGVjaW9uYWRhID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGVtcHJlc2FzITogYW55W107XHJcbiAgbWFzdGVyU2VsZWNpb25hZGEhOiBhbnk7XHJcbiAgZW1wcmVzYVNlbGVjaW9uYWRhITogYW55O1xyXG5cclxuICB2aXNpdmVsID0gdHJ1ZTtcclxuICB0eHRQZXNxdWlzYSA9ICcnO1xyXG4gIGltZ1BlcnNvbmFnZW5zID0gJyc7XHJcbiAgaW1nTG9nb0tlZXZvID0gJyc7XHJcbiAgc3R5bGVCYWNrZ3JvdW5kID0gJyc7XHJcbiAgaW1nTG9nb0tlZXZvQ2VudGVyID0gJyc7XHJcblxyXG4gIC8vVGFiZWxhIE1hc3RlclxyXG4gIHNlbGVjdGVkSXRlbU1hc3RlcjogYW55O1xyXG4gIHNlbGVjdGVkSXRlbXNMb3RlTWFzdGVyOiBhbnk7XHJcbiAgdGFibGVTaXplTWFzdGVyOiBudW1iZXIgPSA1O1xyXG4gIHRhYmxlQ29uZmlnTWFzdGVyITogVGFibGVDb25maWc7XHJcbiAgZGF0YVNvdXJjZU1hc3RlcjogYW55ID0gW107XHJcbiAgLy9UYWJlbGEgIEVtcHJlc2FcclxuICBzZWxlY3RlZEl0ZW1FbXByZXNhOiBhbnk7XHJcbiAgc2VsZWN0ZWRJdGVtc0xvdGVFbXByZXNhOiBhbnk7XHJcbiAgdGFibGVTaXplRW1wcmVzYTogbnVtYmVyID0gNTtcclxuICB0YWJsZUNvbmZpZ0VtcHJlc2EhOiBUYWJsZUNvbmZpZztcclxuICBkYXRhU291cmNlRW1wcmVzYTogYW55ID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmltZ1BlcnNvbmFnZW5zID0gSW1hZ2Vuc1NlcnZpY2UuZ2V0UGVyc29uYWdlbnNXb3JrU3BhY2UoKTtcclxuICAgIHRoaXMuaW1nTG9nb0tlZXZvID0gSW1hZ2Vuc1NlcnZpY2UuZ2V0TG9nb0tlZXZvKCk7XHJcbiAgICB0aGlzLmltZ0xvZ29LZWV2b0NlbnRlciA9IEltYWdlbnNTZXJ2aWNlLmdldExvZ29LZWV2b0NlbnRlcigpO1xyXG4gICAgdGhpcy5zdHlsZUJhY2tncm91bmQgPVxyXG4gICAgICAnYmFja2dyb3VuZC1pbWFnZTogdXJsKCcgKyBJbWFnZW5zU2VydmljZS5nZXRCYWNrZ3JvdW5kV29ya1NwYWNlKCkgKyAnKTsnO1xyXG4gICAgdGhpcy5jb2x1bW5Db25maWdUYWJsZU1hc3RlcigpO1xyXG4gICAgdGhpcy52ZXJpZmljYU1hc3RlclVuaWNhKCk7XHJcbiAgfVxyXG5cclxuICB2ZXJpZmljYU1hc3RlclVuaWNhKCkge1xyXG4gICAgaWYgKHRoaXMubWFzdGVycy5sZW5ndGggPT0gMSkgdGhpcy5zZWxlY2lvbmFyTWFzdGVyKHRoaXMubWFzdGVyc1swXSk7XHJcbiAgfVxyXG5cclxuICBzZWxlY2lvbmFyTWFzdGVyKG1hc3RlcjogYW55KSB7XHJcbiAgICB0aGlzLm9uR2V0TWFzdGVyU2VsZWNpb25hZGEuZW1pdChtYXN0ZXIpO1xyXG4gICAgdGhpcy5tYXN0ZXJTZWxlY2lvbmFkYSA9IG1hc3RlcjtcclxuXHJcbiAgICBpZiAodGhpcy5zb21lbnRlTWFzdGVyKSB0aGlzLnZpc2l2ZWwgPSBmYWxzZTtcclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmVtcHJlc2FzID0gbWFzdGVyLmVtcHJlc2FzO1xyXG4gICAgICB0aGlzLmNvbHVtbkNvbmZpZ1RhYmxlRW1wcmVzYSgpO1xyXG4gICAgICB0aGlzLnZlcmlmaWNhRW1wcmVzYVVuaWNhKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2ZXJpZmljYUVtcHJlc2FVbmljYSgpIHtcclxuICAgIGlmICh0aGlzLmVtcHJlc2FzICYmIHRoaXMuZW1wcmVzYXMubGVuZ3RoID09IDEpXHJcbiAgICAgIHRoaXMuc2VsZWNpb25hckVtcHJlc2EodGhpcy5lbXByZXNhc1swXSk7XHJcbiAgfVxyXG5cclxuICBzZWxlY2lvbmFyRW1wcmVzYShlbXByZXNhOiBhbnkpIHtcclxuICAgIHRoaXMub25HZXRFbXByZXNhU2VsZWNpb25hZGEuZW1pdChlbXByZXNhKTtcclxuICAgIHRoaXMuZW1wcmVzYVNlbGVjaW9uYWRhID0gZW1wcmVzYTtcclxuICAgIHRoaXMudmlzaXZlbCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgdm9sdGFyKCkge1xyXG4gICAgdGhpcy5lbXByZXNhU2VsZWNpb25hZGEgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLm1hc3RlclNlbGVjaW9uYWRhID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgZmlsdHJhckVtcHJlc2EoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5lbXByZXNhcyA9IHRoaXMubWFzdGVyU2VsZWNpb25hZGEuZW1wcmVzYXMuZmlsdGVyKChlOiBhbnkpID0+XHJcbiAgICAgIGUubm9tZWVtcHJlc2EudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhldmVudC50b0xvd2VyQ2FzZSgpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vLS0tLS0tLS0tLS0tLS0tLS0tTUFTVEVSLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4gIGNvbHVtbkNvbmZpZ1RhYmxlTWFzdGVyKCkge1xyXG4gICAgdGhpcy5kYXRhU291cmNlTWFzdGVyID0gdGhpcy5tYXN0ZXJzO1xyXG4gICAgdGhpcy50YWJsZUNvbmZpZ01hc3RlciA9IHtcclxuICAgICAgbGF6eTogZmFsc2UsXHJcbiAgICAgIGNvbHVtbnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwb3NpdGlvbjogMCxcclxuICAgICAgICAgIGZpZWxkOiAnaWRtYXN0ZXInLFxyXG4gICAgICAgICAgaGVhZGVyOiAnTGljZW7Dp2EnLFxyXG4gICAgICAgICAgd2lkdGg6ICcnLFxyXG4gICAgICAgICAgY2VudHJhbGl6ZTogZmFsc2UsXHJcbiAgICAgICAgICBzb3J0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwb3NpdGlvbjogMSxcclxuICAgICAgICAgIGZpZWxkOiAncmF6YW9zb2NpYWwnLFxyXG4gICAgICAgICAgaGVhZGVyOiAnJyxcclxuICAgICAgICAgIHdpZHRoOiAnODAlJyxcclxuICAgICAgICAgIGNlbnRyYWxpemU6IGZhbHNlLFxyXG4gICAgICAgICAgc29ydGFibGU6IGZhbHNlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICAgIGFjdGlvbnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsYWJlbDogJ0FjZXNzYXInLFxyXG4gICAgICAgICAgaWNvbjogJ2xvZ2luJyxcclxuICAgICAgICAgIHRvb2x0aXA6ICdBY2Vzc2FyIFdvcmtzcGFjZScsXHJcbiAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWNpb25hck1hc3Rlcih0aGlzLnNlbGVjdGVkSXRlbU1hc3Rlcik7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZGlzYWJsZWQ6ICgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgICBhY3Rpb25zTG90ZTogW10sXHJcbiAgICAgIGVuYWJsZUNhdGlvbjogZmFsc2UsXHJcbiAgICAgIGVuYWJsZUZpbHRlcjogZmFsc2UsXHJcbiAgICAgIGVuYWJsZVNlbGVjdDogZmFsc2UsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgYWN0aXZlSXRlbU1hc3RlcihlOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtTWFzdGVyID0gZTtcclxuICB9XHJcblxyXG4gIGRvdWJsZUNsaWNrTWFzdGVyKGU6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1NYXN0ZXIgPSBlLnJvd0RhdGE7XHJcbiAgICB0aGlzLnNlbGVjaW9uYXJNYXN0ZXIoZS5yb3dEYXRhKTtcclxuICB9XHJcblxyXG4gIC8vLS0tLS0tLS0tLS0tLS0tLS0tRW1wcmVzYS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuICBjb2x1bW5Db25maWdUYWJsZUVtcHJlc2EoKSB7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2VFbXByZXNhID0gdGhpcy5lbXByZXNhcztcclxuICAgIHRoaXMudGFibGVDb25maWdFbXByZXNhID0ge1xyXG4gICAgICBsYXp5OiBmYWxzZSxcclxuICAgICAgY29sdW1uczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHBvc2l0aW9uOiAwLFxyXG4gICAgICAgICAgZmllbGQ6ICdjbnBqZW1wcmVzYScsXHJcbiAgICAgICAgICBoZWFkZXI6ICdFbXByZXNhJyxcclxuICAgICAgICAgIHdpZHRoOiAnJyxcclxuICAgICAgICAgIGNlbnRyYWxpemU6IGZhbHNlLFxyXG4gICAgICAgICAgc29ydGFibGU6IGZhbHNlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcG9zaXRpb246IDEsXHJcbiAgICAgICAgICBmaWVsZDogJ25vbWVlbXByZXNhJyxcclxuICAgICAgICAgIGhlYWRlcjogJycsXHJcbiAgICAgICAgICB3aWR0aDogJzgwJScsXHJcbiAgICAgICAgICBjZW50cmFsaXplOiBmYWxzZSxcclxuICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgICBhY3Rpb25zOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6ICdBY2Vzc2FyJyxcclxuICAgICAgICAgIGljb246ICdsb2dpbicsXHJcbiAgICAgICAgICB0b29sdGlwOiAnQWNlc3NhciBFbXByZXNhJyxcclxuICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY2lvbmFyRW1wcmVzYSh0aGlzLnNlbGVjdGVkSXRlbUVtcHJlc2EpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgICBhY3Rpb25zTG90ZTogW10sXHJcbiAgICAgIGVuYWJsZUNhdGlvbjogdHJ1ZSxcclxuICAgICAgZW5hYmxlRmlsdGVyOiB0cnVlLFxyXG4gICAgICBlbmFibGVTZWxlY3Q6IGZhbHNlLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGFjdGl2ZUl0ZW1FbXByZXNhKGU6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1FbXByZXNhID0gZTtcclxuICB9XHJcblxyXG4gIGRvdWJsZUNsaWNrRW1wcmVzYShlOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtRW1wcmVzYSA9IGUucm93RGF0YTtcclxuICAgIHRoaXMuc2VsZWNpb25hckVtcHJlc2EoZS5yb3dEYXRhKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAqbmdJZj1cInZpc2l2ZWxcIiBbc3R5bGVdPVwic3R5bGVCYWNrZ3JvdW5kXCJcclxuICBjbGFzcz1cImgtc2NyZWVuIGZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbG9naW4tY29udGFpbmVyIGZsZXgtY29sdW1uIGJnLWNvdmVyXCI+XHJcbiAgPGRpdiBpZD1cImNhcmQtY29udGFpbmVyXCJcclxuICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtYXJvdW5kIGNhcmQtbG9naW4gZm9ybWdyaWQgcC1mbHVpZCAgYmctd2hpdGUgYm9yZGVyLXJvdW5kIHAtMlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgbWItMVwiPlxyXG4gICAgICA8aW1nIFtzcmNdPVwiaW1nTG9nb0tlZXZvQ2VudGVyXCIgc3R5bGU9XCJ3aWR0aDogMjAwcHhcIiAvPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBhbGlnbi1pdGVtcy1jZW50ZXIgei01XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxyXG4gICAgICAgIE9sw6EsIDxiPnt7IG5vbWVVc3VhcmlvIH19LjwvYj4gQmVtIHZpbmRvKGEpIVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGIgY2xhc3M9XCJmaWVsZCBjb2wtOSBmbGV4XCI+XHJcbiAgICAgICAgRXNjb2xoYSBxdWFsIFdvcmtzcGFjZSB2b2PDqiBkZXNlamEgYWNlc3Nhcjo8L2I+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIElOw41DSU8gRE8gV09SS1NQQUNFIERFIENPTlRBQklMSURBREUgKE1BU1RFUlMpIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIiFtYXN0ZXJTZWxlY2lvbmFkYVwiIGNsYXNzPVwiY29sLTEyIHotNVwiPlxyXG4gICAgICBcclxuICAgICAgICA8a3YtdGFibGVcclxuICAgICAgICAgIFt0YWJsZVNpemVdPVwidGFibGVTaXplTWFzdGVyXCJcclxuICAgICAgICAgIFtyb3dzXT1cIjVcIlxyXG4gICAgICAgICAgW2NvbmZpZ109XCJ0YWJsZUNvbmZpZ01hc3RlclwiXHJcbiAgICAgICAgICBbcGFnaW5hdG9yXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VNYXN0ZXJcIlxyXG4gICAgICAgICAgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJbNSwgMTAsIDI1LCA1MCwgMTAwLCAyMDBdXCJcclxuICAgICAgICAgIFthY29lc0xpbmhhVGFiZWxhXT1cInRydWVcIlxyXG4gICAgICAgICAgKGRvdWJsZUNsaWNrRXZlbnQpPVwiZG91YmxlQ2xpY2tNYXN0ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAob25BY3RpdmVJdGVtKT1cImFjdGl2ZUl0ZW1NYXN0ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICBbaXNUYWJsZVNjcm9sbGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbc2Nyb2xsSGVpZ2h0XT1cIiczMDBweCdcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L2t2LXRhYmxlPlxyXG4gICAgIFxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIEZJTSBETyBXT1JLU1BBQ0UgREUgQ09OVEFCSUxJREFERSAoTUFTVEVSUykgLS0+XHJcblxyXG4gICAgPCEtLSBJTsONQ0lPIERPIFdPUktTUEFDRSBFTVBSRVNBIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIm1hc3RlclNlbGVjaW9uYWRhICYmICFlbXByZXNhU2VsZWNpb25hZGFcIiBjbGFzcz1cImNvbC0xMiB6LTVcIj5cclxuICAgICAgPGt2LXRhYmxlXHJcbiAgICAgICAgW3RhYmxlU2l6ZV09XCJ0YWJsZVNpemVFbXByZXNhXCJcclxuICAgICAgICBbcm93c109XCI1XCJcclxuICAgICAgICBbY29uZmlnXT1cInRhYmxlQ29uZmlnRW1wcmVzYVwiXHJcbiAgICAgICAgW3BhZ2luYXRvcl09XCJmYWxzZVwiXHJcbiAgICAgICAgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZUVtcHJlc2FcIlxyXG4gICAgICAgIFtyb3dzUGVyUGFnZU9wdGlvbnNdPVwiWzUsIDEwLCAyNSwgNTAsIDEwMCwgMjAwXVwiXHJcbiAgICAgICAgW2Fjb2VzTGluaGFUYWJlbGFdPVwidHJ1ZVwiXHJcbiAgICAgICAgKGRvdWJsZUNsaWNrRXZlbnQpPVwiZG91YmxlQ2xpY2tFbXByZXNhKCRldmVudClcIlxyXG4gICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwiYWN0aXZlSXRlbUVtcHJlc2EoJGV2ZW50KVwiXHJcbiAgICAgICAgW2lzVGFibGVTY3JvbGxhYmxlXT1cInRydWVcIlxyXG4gICAgICAgIFtzY3JvbGxIZWlnaHRdPVwiJzMwMHB4J1wiXHJcbiAgICAgID5cclxuICAgICAgPC9rdi10YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBGSU0gRE8gV09SS1NQQUNFIEVNUFJFU0EgLS0+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3Ytd29ya3NwYWNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LXdvcmtzcGFjZS9rdi13b3Jrc3BhY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3Ytd29ya3NwYWNlL2t2LXdvcmtzcGFjZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7OztBQVFwRSxNQUFNLE9BQU8sa0JBQWtCO0lBMEQ3QjtRQXhEQTs7V0FFRztRQUNNLGdCQUFXLEdBQVcsd0JBQXdCLENBQUM7UUFZeEQ7O1dBRUc7UUFDTSxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUV4Qzs7V0FFRztRQUNPLDJCQUFzQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFM0Q7O1dBRUc7UUFDTyw0QkFBdUIsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBSTVELHdCQUFtQixHQUFXLENBQUMsQ0FBQztRQUNoQyx5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFFdEMsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLHVCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUV4QixlQUFlO1FBQ2YscUJBQWdCLEdBQVEsRUFBRSxDQUFDO1FBSTNCLG9CQUFlLEdB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UyxDQUFDO0lBQ3JDLENBQUM7OEdBdkxVLGtCQUFrQjtrR0FBbEIsa0JBQWtCLDJTQ2hCL0IsMnFFQXVEQTs7MkZEdkNhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxjQUFjO3dEQVNmLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS0csT0FBTztzQkFBZixLQUFLO2dCQUtHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFLRyxhQUFhO3NCQUFyQixLQUFLO2dCQUtJLHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFLRyx1QkFBdUI7c0JBQWhDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgSW1hZ2Vuc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9hcGkvc2VydmljZXMvaW1hZ2Vucy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGFibGVDb25maWcgfSBmcm9tICcuLi8uLi9hcGkvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb25maWcnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdrdi13b3Jrc3BhY2UnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9rdi13b3Jrc3BhY2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2t2LXdvcmtzcGFjZS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya3NwYWNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgLyoqXHJcbiAgICogTm9tZSBkbyB1c3XDoXJpbyBsb2dhZG9cclxuICAgKi9cclxuICBASW5wdXQoKSBub21lVXN1YXJpbzogc3RyaW5nID0gJ05vbWUgZG8gVXN1w6FyaW8gTG9nYWRvJztcclxuXHJcbiAgLyoqXHJcbiAgICogTGlzdGEgZGUgbWFzdGVycyBxdWUgbyB1c3XDoXJpbyB0ZW0gYWNlc3NvXHJcbiAgICovXHJcbiAgQElucHV0KCkgbWFzdGVycyE6IGFueVtdO1xyXG5cclxuICAvKipcclxuICAgKiBNYXN0ZXIgc2VsZWNpb25hZGEgcGVsbyB1c3XDoXJpb1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG1hc3RlclNlbGVjaW9uYWRhITogYW55O1xyXG5cclxuICAvKipcclxuICAgKiBTZWxlY2lvbmFyIGFwZW5hcyBtYXN0ZXJcclxuICAgKi9cclxuICBASW5wdXQoKSBzb21lbnRlTWFzdGVyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50byBkZSBtYXN0ZXIgc2VsZWNpb25hZGFcclxuICAgKi9cclxuICBAT3V0cHV0KCkgb25HZXRNYXN0ZXJTZWxlY2lvbmFkYSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAvKipcclxuICAgKiBFdmVudG8gZGUgZW1wcmVzYSBzZWxlY2lvbmFkYVxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBvbkdldEVtcHJlc2FTZWxlY2lvbmFkYSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBlbXByZXNhcyE6IGFueVtdO1xyXG4gIGVtcHJlc2FTZWxlY2lvbmFkYSE6IGFueTtcclxuICB0b3RhbFJlY29yZHNFbXByZXNhOiBudW1iZXIgPSAwO1xyXG4gIHNob3dQYWdpbmF0b3JFbXByZXNhOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHZpc2l2ZWwgPSB0cnVlO1xyXG4gIHR4dFBlc3F1aXNhID0gJyc7XHJcbiAgaW1nUGVyc29uYWdlbnMgPSAnJztcclxuICBpbWdMb2dvS2Vldm8gPSAnJztcclxuICBzdHlsZUJhY2tncm91bmQgPSAnJztcclxuICBpbWdMb2dvS2Vldm9DZW50ZXIgPSAnJztcclxuXHJcbiAgLy9UYWJlbGEgTWFzdGVyXHJcbiAgZGF0YVNvdXJjZU1hc3RlcjogYW55ID0gW107XHJcbiAgc2VsZWN0ZWRJdGVtTWFzdGVyOiBhbnk7XHJcbiAgc2VsZWN0ZWRJdGVtc0xvdGVNYXN0ZXI6IGFueTtcclxuICB0YWJsZUNvbmZpZ01hc3RlciE6IFRhYmxlQ29uZmlnO1xyXG4gIHRhYmxlU2l6ZU1hc3RlcjogbnVtYmVyID0gNTtcclxuXHJcbiAgLy9UYWJlbGEgIEVtcHJlc2FcclxuICBkYXRhU291cmNlRW1wcmVzYTogYW55ID0gW107XHJcbiAgc2VsZWN0ZWRJdGVtRW1wcmVzYTogYW55O1xyXG4gIHNlbGVjdGVkSXRlbXNMb3RlRW1wcmVzYTogYW55O1xyXG4gIHRhYmxlQ29uZmlnRW1wcmVzYSE6IFRhYmxlQ29uZmlnO1xyXG4gIHRhYmxlU2l6ZUVtcHJlc2E6IG51bWJlciA9IDU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIGFjdGl2ZUl0ZW1FbXByZXNhKGU6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1FbXByZXNhID0gZTtcclxuICB9XHJcblxyXG4gIGFjdGl2ZUl0ZW1NYXN0ZXIoZTogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbU1hc3RlciA9IGU7XHJcbiAgfVxyXG5cclxuICBjb2x1bW5Db25maWdUYWJsZU1hc3RlcigpIHtcclxuICAgIHRoaXMuZGF0YVNvdXJjZU1hc3RlciA9IHRoaXMubWFzdGVycztcclxuICAgIHRoaXMudGFibGVDb25maWdNYXN0ZXIgPSB7XHJcbiAgICAgIGxhenk6IGZhbHNlLFxyXG4gICAgICBjb2x1bW5zOiBbXHJcbiAgICAgICAgeyBwb3NpdGlvbjogMCwgZmllbGQ6ICdpZG1hc3RlcicsIGhlYWRlcjogJ0xpY2Vuw6dhJywgd2lkdGg6ICcnLCBjZW50cmFsaXplOiBmYWxzZSwgc29ydGFibGU6IGZhbHNlIH0sXHJcbiAgICAgICAgeyBwb3NpdGlvbjogMSwgZmllbGQ6ICdub21lJywgaGVhZGVyOiAnJywgd2lkdGg6ICc4MCUnLCBjZW50cmFsaXplOiBmYWxzZSwgc29ydGFibGU6IGZhbHNlLCB9LFxyXG4gICAgICBdLFxyXG4gICAgICBhY3Rpb25zOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6ICdBY2Vzc2FyJyxcclxuICAgICAgICAgIGljb246ICdsb2dpbicsXHJcbiAgICAgICAgICB0b29sdGlwOiAnQWNlc3NhciBXb3Jrc3BhY2UnLFxyXG4gICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjaW9uYXJNYXN0ZXIodGhpcy5zZWxlY3RlZEl0ZW1NYXN0ZXIpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGRpc2FibGVkOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgXSxcclxuICAgICAgYWN0aW9uc0xvdGU6IFtdLFxyXG4gICAgICBlbmFibGVDYXRpb246IGZhbHNlLFxyXG4gICAgICBlbmFibGVGaWx0ZXI6IGZhbHNlLFxyXG4gICAgICBlbmFibGVTZWxlY3Q6IGZhbHNlLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGNvbHVtbkNvbmZpZ1RhYmxlRW1wcmVzYSgpIHtcclxuICAgIHRoaXMuZGF0YVNvdXJjZUVtcHJlc2EgPSB0aGlzLmVtcHJlc2FzO1xyXG4gICAgdGhpcy50YWJsZUNvbmZpZ0VtcHJlc2EgPSB7XHJcbiAgICAgIGxhenk6IGZhbHNlLFxyXG4gICAgICBjb2x1bW5zOiBbXHJcbiAgICAgICAgeyBwb3NpdGlvbjogMCwgZmllbGQ6ICdjb2RpZ29wZXNzb2EnLCBoZWFkZXI6ICdDw7NkaWdvJywgd2lkdGg6ICcnLCBjZW50cmFsaXplOiBmYWxzZSwgc29ydGFibGU6IGZhbHNlIH0sXHJcbiAgICAgICAgeyBwb3NpdGlvbjogMSwgZmllbGQ6ICdjcGZjbnBqJywgaGVhZGVyOiAnQ1BGL0NOUEonLCB3aWR0aDogJycsIGNlbnRyYWxpemU6IGZhbHNlLCBzb3J0YWJsZTogZmFsc2UsIHBpcGU6ICdjcGZjbnBqJyB9LFxyXG4gICAgICAgIHsgcG9zaXRpb246IDIsIGZpZWxkOiAncmF6YW9zb2NpYWwnLCBoZWFkZXI6ICdSYXrDo28gc29jaWFsJywgd2lkdGg6ICc1MCUnLCBjZW50cmFsaXplOiBmYWxzZSwgc29ydGFibGU6IGZhbHNlIH0sXHJcbiAgICAgIF0sXHJcbiAgICAgIGFjdGlvbnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsYWJlbDogJ0FjZXNzYXInLFxyXG4gICAgICAgICAgaWNvbjogJ2xvZ2luJyxcclxuICAgICAgICAgIHRvb2x0aXA6ICdBY2Vzc2FyIEVtcHJlc2EnLFxyXG4gICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjaW9uYXJFbXByZXNhKHRoaXMuc2VsZWN0ZWRJdGVtRW1wcmVzYSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZGlzYWJsZWQ6ICgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgICBhY3Rpb25zTG90ZTogW10sXHJcbiAgICAgIGVuYWJsZUNhdGlvbjogdHJ1ZSxcclxuICAgICAgZW5hYmxlRmlsdGVyOiB0cnVlLFxyXG4gICAgICBlbmFibGVTZWxlY3Q6IGZhbHNlLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGRvdWJsZUNsaWNrRW1wcmVzYShlOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtRW1wcmVzYSA9IGUucm93RGF0YTtcclxuICAgIHRoaXMuc2VsZWNpb25hckVtcHJlc2EoZS5yb3dEYXRhKTtcclxuICB9XHJcblxyXG4gIGRvdWJsZUNsaWNrTWFzdGVyKGU6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1NYXN0ZXIgPSBlLnJvd0RhdGE7XHJcbiAgICB0aGlzLnNlbGVjaW9uYXJNYXN0ZXIoZS5yb3dEYXRhKTtcclxuICB9XHJcblxyXG4gIGZpbHRyYXJFbXByZXNhKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuZW1wcmVzYXMgPSB0aGlzLm1hc3RlclNlbGVjaW9uYWRhLmVtcHJlc2FzLmZpbHRlcigoZTogYW55KSA9PlxyXG4gICAgICBlLm5vbWVlbXByZXNhLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZXZlbnQudG9Mb3dlckNhc2UoKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW1nUGVyc29uYWdlbnMgPSBJbWFnZW5zU2VydmljZS5nZXRQZXJzb25hZ2Vuc1dvcmtTcGFjZSgpO1xyXG4gICAgdGhpcy5pbWdMb2dvS2Vldm8gPSBJbWFnZW5zU2VydmljZS5nZXRMb2dvS2Vldm8oKTtcclxuICAgIHRoaXMuaW1nTG9nb0tlZXZvQ2VudGVyID0gSW1hZ2Vuc1NlcnZpY2UuZ2V0TG9nb0tlZXZvQ2VudGVyKCk7XHJcbiAgICB0aGlzLnN0eWxlQmFja2dyb3VuZCA9ICdiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyArIEltYWdlbnNTZXJ2aWNlLmdldEJhY2tncm91bmRXb3JrU3BhY2UoKSArICcpOyc7XHJcbiAgICB0aGlzLmNvbHVtbkNvbmZpZ1RhYmxlTWFzdGVyKCk7XHJcbiAgICB0aGlzLnZlcmlmaWNhTWFzdGVyVW5pY2EoKTtcclxuICB9XHJcblxyXG4gIHNlbGVjaW9uYXJFbXByZXNhKGVtcHJlc2E6IGFueSkge1xyXG4gICAgdGhpcy5vbkdldEVtcHJlc2FTZWxlY2lvbmFkYS5lbWl0KGVtcHJlc2EpO1xyXG4gICAgdGhpcy5lbXByZXNhU2VsZWNpb25hZGEgPSBlbXByZXNhO1xyXG4gICAgdGhpcy52aXNpdmVsID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzZWxlY2lvbmFyTWFzdGVyKG1hc3RlcjogYW55KSB7XHJcbiAgICB0aGlzLm9uR2V0TWFzdGVyU2VsZWNpb25hZGEuZW1pdChtYXN0ZXIpO1xyXG4gICAgdGhpcy5tYXN0ZXJTZWxlY2lvbmFkYSA9IG1hc3RlcjtcclxuXHJcbiAgICBpZiAodGhpcy5zb21lbnRlTWFzdGVyKVxyXG4gICAgICB0aGlzLnZpc2l2ZWwgPSBmYWxzZTtcclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmVtcHJlc2FzID0gbWFzdGVyLmVtcHJlc2FzO1xyXG4gICAgICB0aGlzLnNob3dQYWdpbmF0b3JFbXByZXNhID0gKHRoaXMuZW1wcmVzYXMubGVuZ3RoID4gNSk7XHJcbiAgICAgIHRoaXMuY29sdW1uQ29uZmlnVGFibGVFbXByZXNhKCk7XHJcbiAgICAgIHRoaXMudmVyaWZpY2FFbXByZXNhVW5pY2EoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZlcmlmaWNhRW1wcmVzYVVuaWNhKCkge1xyXG4gICAgaWYgKHRoaXMuZW1wcmVzYXMgJiYgdGhpcy5lbXByZXNhcy5sZW5ndGggPT0gMSlcclxuICAgICAgdGhpcy5zZWxlY2lvbmFyRW1wcmVzYSh0aGlzLmVtcHJlc2FzWzBdKTtcclxuICB9XHJcblxyXG4gIHZlcmlmaWNhTWFzdGVyVW5pY2EoKSB7XHJcbiAgICBpZiAodGhpcy5tYXN0ZXJzLmxlbmd0aCA9PSAxKVxyXG4gICAgICB0aGlzLnNlbGVjaW9uYXJNYXN0ZXIodGhpcy5tYXN0ZXJzWzBdKTtcclxuICB9XHJcblxyXG4gIHZvbHRhcigpIHtcclxuICAgIHRoaXMuZW1wcmVzYVNlbGVjaW9uYWRhID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5tYXN0ZXJTZWxlY2lvbmFkYSA9IHVuZGVmaW5lZDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAqbmdJZj1cInZpc2l2ZWxcIiBbc3R5bGVdPVwic3R5bGVCYWNrZ3JvdW5kXCJcclxuICBjbGFzcz1cImgtc2NyZWVuIGZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbG9naW4tY29udGFpbmVyIGZsZXgtY29sdW1uIGJnLWNvdmVyXCI+XHJcbiAgPGRpdiBpZD1cImNhcmQtY29udGFpbmVyXCJcclxuICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtYXJvdW5kIGNhcmQtbG9naW4gZm9ybWdyaWQgcC1mbHVpZCAgYmctd2hpdGUgYm9yZGVyLXJvdW5kIHAtMlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgbWItMVwiPlxyXG4gICAgICA8aW1nIFtzcmNdPVwiaW1nTG9nb0tlZXZvQ2VudGVyXCIgc3R5bGU9XCJ3aWR0aDogMjAwcHhcIiAvPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBhbGlnbi1pdGVtcy1jZW50ZXIgei01XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxyXG4gICAgICAgIE9sw6EsIDxiPnt7IG5vbWVVc3VhcmlvIH19LjwvYj4gQmVtIHZpbmRvKGEpIVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGIgY2xhc3M9XCJmaWVsZCBjb2wtOSBmbGV4XCI+XHJcbiAgICAgICAgRXNjb2xoYSBxdWFsIFdvcmtzcGFjZSB2b2PDqiBkZXNlamEgYWNlc3Nhcjo8L2I+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIElOw41DSU8gRE8gV09SS1NQQUNFIERFIENPTlRBQklMSURBREUgKE1BU1RFUlMpIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIiFtYXN0ZXJTZWxlY2lvbmFkYVwiIGNsYXNzPVwiY29sLTEyIHotNVwiPlxyXG5cclxuICAgICAgPGt2LXRhYmxlXHJcbiAgICAgICAgW3RhYmxlU2l6ZV09XCJ0YWJsZVNpemVNYXN0ZXJcIlxyXG4gICAgICAgIFtyb3dzXT1cIjVcIlxyXG4gICAgICAgIFtjb25maWddPVwidGFibGVDb25maWdNYXN0ZXJcIlxyXG4gICAgICAgIFtwYWdpbmF0b3JdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VNYXN0ZXJcIlxyXG4gICAgICAgIFtyb3dzUGVyUGFnZU9wdGlvbnNdPVwiWzUsIDEwLCAyNSwgNTAsIDEwMCwgMjAwXVwiXHJcbiAgICAgICAgW2Fjb2VzTGluaGFUYWJlbGFdPVwidHJ1ZVwiXHJcbiAgICAgICAgKGRvdWJsZUNsaWNrRXZlbnQpPVwiZG91YmxlQ2xpY2tNYXN0ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJhY3RpdmVJdGVtTWFzdGVyKCRldmVudClcIlxyXG4gICAgICAgIFtpc1RhYmxlU2Nyb2xsYWJsZV09XCJ0cnVlXCJcclxuICAgICAgICBbc2Nyb2xsSGVpZ2h0XT1cIiczMDBweCdcIj5cclxuICAgICAgPC9rdi10YWJsZT5cclxuXHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gRklNIERPIFdPUktTUEFDRSBERSBDT05UQUJJTElEQURFIChNQVNURVJTKSAtLT5cclxuXHJcbiAgICA8IS0tIElOw41DSU8gRE8gV09SS1NQQUNFIEVNUFJFU0EgLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwibWFzdGVyU2VsZWNpb25hZGEgJiYgIWVtcHJlc2FTZWxlY2lvbmFkYVwiIGNsYXNzPVwiY29sLTEyIHotNVwiPlxyXG4gICAgICA8a3YtdGFibGVcclxuICAgICAgICBbdGFibGVTaXplXT1cInRhYmxlU2l6ZUVtcHJlc2FcIlxyXG4gICAgICAgIFtyb3dzXT1cIjVcIlxyXG4gICAgICAgIFtjb25maWddPVwidGFibGVDb25maWdFbXByZXNhXCJcclxuICAgICAgICBbcGFnaW5hdG9yXT1cInNob3dQYWdpbmF0b3JFbXByZXNhXCJcclxuICAgICAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlRW1wcmVzYVwiXHJcbiAgICAgICAgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJbNV1cIlxyXG4gICAgICAgIFthY29lc0xpbmhhVGFiZWxhXT1cInRydWVcIlxyXG4gICAgICAgIChkb3VibGVDbGlja0V2ZW50KT1cImRvdWJsZUNsaWNrRW1wcmVzYSgkZXZlbnQpXCJcclxuICAgICAgICAob25BY3RpdmVJdGVtKT1cImFjdGl2ZUl0ZW1FbXByZXNhKCRldmVudClcIlxyXG4gICAgICAgIFtpc1RhYmxlU2Nyb2xsYWJsZV09XCJ0cnVlXCJcclxuICAgICAgICBbc2Nyb2xsSGVpZ2h0XT1cIiczMDBweCdcIj5cclxuICAgICAgPC9rdi10YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBGSU0gRE8gV09SS1NQQUNFIEVNUFJFU0EgLS0+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=