@seniorsistemas/angular-components 19.8.0 → 19.9.0
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/bignumber-input/lib/bignumber-input/bignumber-input.directive.d.ts +2 -1
- package/code-editor/lib/code-editor/core/facades/core-facade.d.ts +3 -1
- package/code-editor/lib/code-editor/infra/cores/codemirror-6/codemirror-6-core.d.ts +12 -2
- package/drawer/README.md +119 -0
- package/drawer/index.d.ts +5 -0
- package/{sidebar/lib/sidebar/sidebar.component.d.ts → drawer/lib/drawer/drawer.component.d.ts} +18 -15
- package/drawer/lib/drawer/drawer.module.d.ts +8 -0
- package/drawer/public-api.d.ts +2 -0
- package/esm2022/bignumber-input/lib/bignumber-input/bignumber-input.directive.mjs +6 -3
- package/esm2022/code-editor/lib/code-editor/core/facades/core-facade.mjs +7 -1
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/codemirror-6-core.mjs +47 -22
- package/esm2022/drawer/lib/drawer/drawer.component.mjs +192 -0
- package/esm2022/drawer/lib/drawer/drawer.module.mjs +17 -0
- package/esm2022/drawer/public-api.mjs +3 -0
- package/esm2022/drawer/seniorsistemas-angular-components-drawer.mjs +5 -0
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +4 -5
- package/esm2022/lib/locale/fallback.mjs +3 -2
- package/esm2022/select/lib/select/select.component.mjs +11 -14
- package/esm2022/side-sheet/lib/side-sheet/models/side-sheet-config.mjs +2 -0
- package/esm2022/side-sheet/lib/side-sheet/models/side-sheet-size.mjs +2 -0
- package/esm2022/side-sheet/lib/side-sheet/services/side-sheet.service.mjs +82 -0
- package/esm2022/side-sheet/lib/side-sheet/side-sheet.component.mjs +171 -0
- package/esm2022/side-sheet/public-api.mjs +3 -0
- package/esm2022/side-sheet/seniorsistemas-angular-components-side-sheet.mjs +5 -0
- package/esm2022/sidebar/public-api.mjs +12 -3
- package/esm2022/switch/lib/switch/switch.component.mjs +5 -3
- package/esm2022/switch/lib/switch/switch.module.mjs +2 -2
- package/esm2022/tabs/lib/tab-item/tab-item.component.mjs +4 -3
- package/esm2022/tabs/lib/tabs/tabs.component.mjs +14 -10
- package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +82 -75
- package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +3 -3
- package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.mjs +35 -18
- package/esm2022/tiered-menu/lib/tiered-menu/services/tiered-menu.event.service.mjs +2 -1
- package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.directive.mjs +89 -77
- package/esm2022/toast/lib/toast/toast.service.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs +5 -2
- package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-code-editor.mjs +52 -21
- package/fesm2022/seniorsistemas-angular-components-code-editor.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-drawer.mjs +211 -0
- package/fesm2022/seniorsistemas-angular-components-drawer.mjs.map +1 -0
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +3 -4
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-select.mjs +10 -13
- package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-side-sheet.mjs +257 -0
- package/fesm2022/seniorsistemas-angular-components-side-sheet.mjs.map +1 -0
- package/fesm2022/seniorsistemas-angular-components-sidebar.mjs +10 -180
- package/fesm2022/seniorsistemas-angular-components-sidebar.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-switch.mjs +5 -3
- package/fesm2022/seniorsistemas-angular-components-switch.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tabs.mjs +16 -11
- package/fesm2022/seniorsistemas-angular-components-tabs.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +201 -164
- package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-toast.mjs +1 -1
- package/fesm2022/seniorsistemas-angular-components-toast.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components.mjs +2 -1
- package/fesm2022/seniorsistemas-angular-components.mjs.map +1 -1
- package/package.json +19 -7
- package/select/lib/select/select.component.d.ts +2 -1
- package/side-sheet/README.md +184 -0
- package/side-sheet/index.d.ts +5 -0
- package/side-sheet/lib/side-sheet/models/side-sheet-config.d.ts +20 -0
- package/side-sheet/lib/side-sheet/models/side-sheet-size.d.ts +1 -0
- package/side-sheet/lib/side-sheet/services/side-sheet.service.d.ts +49 -0
- package/side-sheet/lib/side-sheet/side-sheet.component.d.ts +61 -0
- package/side-sheet/public-api.d.ts +4 -0
- package/sidebar/README.md +20 -93
- package/sidebar/public-api.d.ts +11 -2
- package/tabs/lib/tab-item/tab-item.component.d.ts +1 -0
- package/tabs/lib/tabs/tabs.component.d.ts +2 -1
- package/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.d.ts +19 -7
- package/tiered-menu/lib/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.d.ts +4 -3
- package/tiered-menu/lib/tiered-menu/services/tiered-menu.event.service.d.ts +1 -0
- package/tiered-menu/lib/tiered-menu/tiered-menu.directive.d.ts +6 -5
- package/esm2022/sidebar/lib/sidebar/sidebar.component.mjs +0 -169
- package/esm2022/sidebar/lib/sidebar/sidebar.module.mjs +0 -17
- package/sidebar/lib/sidebar/sidebar.module.d.ts +0 -8
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { OnChanges, OnInit, SimpleChanges } from '@angular/core';
|
|
2
2
|
import { AbstractControl, ValidationErrors } from '@angular/forms';
|
|
3
3
|
import { NumericMaskDirective } from '@seniorsistemas/angular-components/numeric-mask';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
@@ -92,6 +92,7 @@ export declare class BignumberInputDirective extends NumericMaskDirective implem
|
|
|
92
92
|
pasteRejected: import("@angular/core").OutputEmitterRef<string>;
|
|
93
93
|
private _decimalSeparatorExplicit;
|
|
94
94
|
private _thousandSeparatorExplicit;
|
|
95
|
+
private _lastAutoPlaceholder;
|
|
95
96
|
constructor();
|
|
96
97
|
ngOnInit(): void;
|
|
97
98
|
ngOnChanges(changes: SimpleChanges): void;
|
|
@@ -2,7 +2,7 @@ import { Observable } from 'rxjs';
|
|
|
2
2
|
import { EditorOptions } from '../../models';
|
|
3
3
|
import { Marker } from '../models';
|
|
4
4
|
export declare abstract class CoreFacade {
|
|
5
|
-
private
|
|
5
|
+
private $onCoreFinishLoad;
|
|
6
6
|
private readonly $onCodeChange;
|
|
7
7
|
private readonly $onCodeValidityChange;
|
|
8
8
|
private _completionItems;
|
|
@@ -23,6 +23,8 @@ export declare abstract class CoreFacade {
|
|
|
23
23
|
protected abstract setCoreEditorOptions(options: EditorOptions): void;
|
|
24
24
|
protected abstract highlightCode(markers: Marker[]): void;
|
|
25
25
|
protected notifyCoreFinishLoad(): void;
|
|
26
|
+
protected resetCoreFinishLoad(): void;
|
|
27
|
+
protected resetLastCodeEmitted(): void;
|
|
26
28
|
protected notifyCodeChange(code: string): void;
|
|
27
29
|
protected updateCompletionItems(items: string[]): void;
|
|
28
30
|
private setLinter;
|
|
@@ -6,12 +6,22 @@ import { Marker } from '../../../core/models';
|
|
|
6
6
|
import { EditorOptions } from '../../../models';
|
|
7
7
|
export declare class CodeMirror6Core extends CoreFacade {
|
|
8
8
|
static readonly $onCompletionItemsUpdate: Subject<string[]>;
|
|
9
|
-
|
|
10
|
-
private static
|
|
9
|
+
/** Referência à instância ativa — usada pelos métodos estáticos de compatibilidade */
|
|
10
|
+
private static _activeInstance;
|
|
11
|
+
private _ngUnsubscribe;
|
|
12
|
+
private _editorView;
|
|
11
13
|
private _codeReceivedBeforeViewCreation;
|
|
12
14
|
private _editorOptionsReceivedBeforeViewCreation;
|
|
13
15
|
constructor();
|
|
16
|
+
/**
|
|
17
|
+
* Acesso estático à EditorView da instância ativa.
|
|
18
|
+
* Mantido para compatibilidade com extensões (autocomplete TaxCalculation).
|
|
19
|
+
*/
|
|
14
20
|
static getEditorView(): EditorView;
|
|
21
|
+
/**
|
|
22
|
+
* Dispatch estático na EditorView da instância ativa.
|
|
23
|
+
* Mantido para compatibilidade com extensões (autocomplete TaxCalculation).
|
|
24
|
+
*/
|
|
15
25
|
static updateEditorView(...transactionSpecs: TransactionSpec[]): void;
|
|
16
26
|
setCoreWrapperElement(element: HTMLDivElement): void;
|
|
17
27
|
setCode(code: string): void;
|
package/drawer/README.md
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Drawer
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
Componente de painel lateral deslizante que aparece sobre o conteúdo vindo do lado direito da tela. Suporta templates customizados para cabeçalho, corpo e rodapé via `sTemplate`, bloqueio automático de scroll e confirmação de fechamento.
|
|
6
|
+
|
|
7
|
+
Também responde ao seletor legado `s-sidebar` (deprecado, será removido na versão 20.0.0 — ver [`Sidebar`](../sidebar/README.md)).
|
|
8
|
+
|
|
9
|
+
## Quando usar
|
|
10
|
+
|
|
11
|
+
- Exibir detalhes de um item selecionado sem sair da página atual
|
|
12
|
+
- Formulários simples de edição rápida sem necessidade de uma nova rota
|
|
13
|
+
- Painéis de filtros avançados em listas e tabelas
|
|
14
|
+
- Configurações ou propriedades de um elemento da interface
|
|
15
|
+
- Fluxos complementares que não devem interromper o contexto principal
|
|
16
|
+
|
|
17
|
+
## Quando não usar
|
|
18
|
+
|
|
19
|
+
- Confirmações de ações destrutivas — prefira `ConfirmDialog`
|
|
20
|
+
- Conteúdo crítico que exige atenção exclusiva do usuário — prefira `Dialog` modal
|
|
21
|
+
- Navegação principal da aplicação — prefira um menu lateral (`nav`) fixo
|
|
22
|
+
|
|
23
|
+
## Instalação
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
import { DrawerModule } from '@seniorsistemas/angular-components/drawer';
|
|
27
|
+
|
|
28
|
+
@NgModule({ imports: [DrawerModule] })
|
|
29
|
+
export class MeuModule {}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Uso básico
|
|
33
|
+
|
|
34
|
+
```html
|
|
35
|
+
<s-drawer [(visible)]="drawerAberto" header="Detalhes">
|
|
36
|
+
<p>Conteúdo do painel lateral.</p>
|
|
37
|
+
</s-drawer>
|
|
38
|
+
|
|
39
|
+
<button (click)="drawerAberto = true">Abrir Drawer</button>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## API
|
|
43
|
+
|
|
44
|
+
### Inputs
|
|
45
|
+
|
|
46
|
+
| Propriedade | Tipo | Padrão | Obrigatório | Descrição |
|
|
47
|
+
|-------------|------|--------|:-----------:|-----------|
|
|
48
|
+
| `visible` | `ModelSignal<boolean>` | `false` | Não | Controla a visibilidade do drawer. Suporta `[(visible)]` |
|
|
49
|
+
| `closable` | `boolean` | `true` | Não | Exibe o botão de fechar (X) no cabeçalho |
|
|
50
|
+
| `dismissible` | `boolean` | `true` | Não | Fechar ao clicar no backdrop (área escurecida fora do painel) |
|
|
51
|
+
| `closeOnEscape` | `boolean` | `true` | Não | Fechar ao pressionar a tecla Escape |
|
|
52
|
+
| `header` | `string` | `undefined` | Não | Texto exibido no cabeçalho padrão. Substituível via `sTemplate="header"` |
|
|
53
|
+
| `largeSized` | `boolean` | `false` | Não | Aumenta a largura do drawer para acomodar mais conteúdo |
|
|
54
|
+
| `cache` | `boolean` | `false` | Não | Mantém o conteúdo no DOM quando fechado, preservando estado interno |
|
|
55
|
+
| `registerConfirmClose` | `() => boolean` | `() => true` | Não | Função chamada antes de fechar; retornar `false` bloqueia o fechamento |
|
|
56
|
+
|
|
57
|
+
## Exemplos
|
|
58
|
+
|
|
59
|
+
### Drawer básico
|
|
60
|
+
|
|
61
|
+
```html
|
|
62
|
+
<s-drawer [(visible)]="visible" header="Filtros Avançados" [closable]="true">
|
|
63
|
+
<p>Conteúdo do painel.</p>
|
|
64
|
+
</s-drawer>
|
|
65
|
+
<s-button label="Abrir" (clicked)="visible = true"></s-button>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Drawer grande
|
|
69
|
+
|
|
70
|
+
```html
|
|
71
|
+
<s-drawer [(visible)]="visible" header="Edição de Registro" [largeSized]="true">
|
|
72
|
+
<!-- formulário complexo -->
|
|
73
|
+
</s-drawer>
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Com templates customizados
|
|
77
|
+
|
|
78
|
+
```html
|
|
79
|
+
<s-drawer [(visible)]="visible">
|
|
80
|
+
<ng-template sTemplate="header">
|
|
81
|
+
<div style="display: flex; align-items: center; gap: 8px;">
|
|
82
|
+
<i class="fa fa-filter"></i>
|
|
83
|
+
<span>Filtros Avançados</span>
|
|
84
|
+
</div>
|
|
85
|
+
</ng-template>
|
|
86
|
+
<ng-template sTemplate="body">
|
|
87
|
+
<!-- conteúdo do painel -->
|
|
88
|
+
</ng-template>
|
|
89
|
+
<ng-template sTemplate="footer">
|
|
90
|
+
<s-button label="Aplicar" priority="primary" (clicked)="visible = false"></s-button>
|
|
91
|
+
</ng-template>
|
|
92
|
+
</s-drawer>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Com confirmação de fechamento
|
|
96
|
+
|
|
97
|
+
```typescript
|
|
98
|
+
confirmClose = (): boolean => {
|
|
99
|
+
return window.confirm('Deseja realmente fechar? As alterações serão perdidas.');
|
|
100
|
+
};
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
```html
|
|
104
|
+
<s-drawer [(visible)]="visible" [registerConfirmClose]="confirmClose">
|
|
105
|
+
<!-- formulário com alterações não salvas -->
|
|
106
|
+
</s-drawer>
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## Acessibilidade
|
|
110
|
+
|
|
111
|
+
- O drawer utiliza `cdkTrapFocus` para aprisionar o foco dentro do painel enquanto aberto
|
|
112
|
+
- Pressionar `Escape` fecha o drawer quando `closeOnEscape = true`
|
|
113
|
+
- O painel entra e sai com animação de deslizamento (300ms) vindo da direita
|
|
114
|
+
- Ao abrir, o scroll da página é bloqueado automaticamente e restaurado ao fechar
|
|
115
|
+
|
|
116
|
+
## Componentes relacionados
|
|
117
|
+
|
|
118
|
+
- [`Dialog`](../dialog/README.md) — modal centralizado para confirmações e conteúdo crítico
|
|
119
|
+
- [`SlideInBar`](../slide-in-bar/README.md) — painel que expande/colapsa embutido no layout
|
package/{sidebar/lib/sidebar/sidebar.component.d.ts → drawer/lib/drawer/drawer.component.d.ts}
RENAMED
|
@@ -2,66 +2,69 @@ import { AfterContentInit, OnDestroy, QueryList, TemplateRef } from '@angular/co
|
|
|
2
2
|
import { FooterComponent } from '@seniorsistemas/angular-components/structure';
|
|
3
3
|
import { TemplateDirective } from '@seniorsistemas/angular-components/template';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@seniorsistemas/angular-components/common/deprecated-selector";
|
|
5
6
|
/**
|
|
6
|
-
* @description Componente de painel lateral deslizante (
|
|
7
|
+
* @description Componente de painel lateral deslizante (drawer) que aparece sobre o conteúdo
|
|
7
8
|
* vindo do lado direito da tela. Suporta templates customizados para cabeçalho, corpo e rodapé
|
|
8
9
|
* via `sTemplate`, bloqueio de scroll automático e confirmação de fechamento.
|
|
9
10
|
*
|
|
11
|
+
* Também responde ao seletor legado `s-sidebar`.
|
|
12
|
+
*
|
|
10
13
|
* @example
|
|
11
14
|
* ```html
|
|
12
|
-
* <s-
|
|
15
|
+
* <s-drawer [(visible)]="drawerOpen" header="Filtros" [closable]="true">
|
|
13
16
|
* <ng-template sTemplate="body">Conteúdo</ng-template>
|
|
14
|
-
* </s-
|
|
17
|
+
* </s-drawer>
|
|
15
18
|
* ```
|
|
16
19
|
*
|
|
17
20
|
* @category Overlay
|
|
18
21
|
*/
|
|
19
|
-
export declare class
|
|
22
|
+
export declare class DrawerComponent implements AfterContentInit, OnDestroy {
|
|
20
23
|
templates: QueryList<TemplateDirective> | null;
|
|
21
24
|
/**
|
|
22
|
-
* @description Controla a visibilidade
|
|
25
|
+
* @description Controla a visibilidade do drawer. Suporta two-way binding via `[(visible)]`.
|
|
23
26
|
*
|
|
24
27
|
* @default false
|
|
25
28
|
*/
|
|
26
29
|
visible: import("@angular/core").ModelSignal<boolean>;
|
|
27
30
|
/**
|
|
28
|
-
* @description Quando `true`, exibe o botão de fechar (X) no cabeçalho
|
|
31
|
+
* @description Quando `true`, exibe o botão de fechar (X) no cabeçalho do drawer.
|
|
29
32
|
*
|
|
30
33
|
* @default true
|
|
31
34
|
*/
|
|
32
35
|
closable: boolean;
|
|
33
36
|
/**
|
|
34
|
-
* @description Quando `true`, clicar no backdrop (área escurecida fora
|
|
37
|
+
* @description Quando `true`, clicar no backdrop (área escurecida fora do drawer) fecha o painel.
|
|
35
38
|
*
|
|
36
39
|
* @default true
|
|
37
40
|
*/
|
|
38
41
|
dismissible: boolean;
|
|
39
42
|
/**
|
|
40
|
-
* @description Quando `true`, pressionar a tecla Escape fecha
|
|
43
|
+
* @description Quando `true`, pressionar a tecla Escape fecha o drawer.
|
|
41
44
|
*
|
|
42
45
|
* @default true
|
|
43
46
|
*/
|
|
44
47
|
closeOnEscape: boolean;
|
|
45
48
|
/**
|
|
46
|
-
* @description Texto exibido no cabeçalho padrão
|
|
49
|
+
* @description Texto exibido no cabeçalho padrão do drawer.
|
|
47
50
|
* Pode ser substituído por um template customizado via `sTemplate="header"`.
|
|
48
51
|
*/
|
|
49
52
|
header?: string;
|
|
50
53
|
/**
|
|
51
|
-
* @description Quando `true`, aumenta a largura
|
|
54
|
+
* @description Quando `true`, aumenta a largura do drawer para acomodar mais conteúdo.
|
|
52
55
|
*
|
|
53
56
|
* @default false
|
|
54
57
|
*/
|
|
55
58
|
largeSized: boolean;
|
|
56
59
|
/**
|
|
57
|
-
* @description Quando `true`, mantém o conteúdo
|
|
60
|
+
* @description Quando `true`, mantém o conteúdo do drawer no DOM mesmo quando oculto,
|
|
58
61
|
* preservando o estado interno dos componentes filhos.
|
|
59
62
|
*
|
|
60
63
|
* @default false
|
|
61
64
|
*/
|
|
62
65
|
cache: boolean;
|
|
63
66
|
/**
|
|
64
|
-
* @description Função de confirmação chamada antes de fechar
|
|
67
|
+
* @description Função de confirmação chamada antes de fechar o drawer.
|
|
65
68
|
* Quando retornar `false`, o fechamento é bloqueado. Útil para validar formulários não salvos.
|
|
66
69
|
*/
|
|
67
70
|
set registerConfirmClose(fn: () => boolean);
|
|
@@ -73,13 +76,13 @@ export declare class SidebarComponent implements AfterContentInit, OnDestroy {
|
|
|
73
76
|
private readonly visibleEffect;
|
|
74
77
|
ngAfterContentInit(): void;
|
|
75
78
|
ngOnDestroy(): void;
|
|
76
|
-
|
|
79
|
+
closeDrawer(): void;
|
|
77
80
|
handleEscape(): void;
|
|
78
81
|
private _getCustomTemplate;
|
|
79
82
|
private getHeaderTemplate;
|
|
80
83
|
private getBodyTemplate;
|
|
81
84
|
private getFooterTemplate;
|
|
82
85
|
private _getTemplates;
|
|
83
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<
|
|
84
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<
|
|
86
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DrawerComponent, never>;
|
|
87
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DrawerComponent, "s-drawer, s-sidebar", never, { "visible": { "alias": "visible"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; }; "dismissible": { "alias": "dismissible"; "required": false; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; }; "header": { "alias": "header"; "required": false; }; "largeSized": { "alias": "largeSized"; "required": false; }; "cache": { "alias": "cache"; "required": false; }; "registerConfirmClose": { "alias": "registerConfirmClose"; "required": false; }; }, { "visible": "visibleChange"; }, ["footerComponent", "templates"], [":not(s-footer)", "s-footer"], true, [{ directive: typeof i1.DeprecatedSelectorDirective; inputs: {}; outputs: {}; }]>;
|
|
85
88
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./drawer.component";
|
|
3
|
+
import * as i2 from "@seniorsistemas/angular-components/template";
|
|
4
|
+
export declare class DrawerModule {
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DrawerModule, never>;
|
|
6
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<DrawerModule, never, [typeof i1.DrawerComponent], [typeof i1.DrawerComponent, typeof i2.TemplateModule]>;
|
|
7
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<DrawerModule>;
|
|
8
|
+
}
|
|
@@ -93,6 +93,7 @@ export class BignumberInputDirective extends NumericMaskDirective {
|
|
|
93
93
|
pasteRejected = output();
|
|
94
94
|
_decimalSeparatorExplicit = false;
|
|
95
95
|
_thousandSeparatorExplicit = false;
|
|
96
|
+
_lastAutoPlaceholder;
|
|
96
97
|
constructor() {
|
|
97
98
|
super();
|
|
98
99
|
}
|
|
@@ -209,9 +210,11 @@ export class BignumberInputDirective extends NumericMaskDirective {
|
|
|
209
210
|
}
|
|
210
211
|
updatePlaceholder() {
|
|
211
212
|
const scale = this.scale();
|
|
212
|
-
|
|
213
|
-
|
|
213
|
+
const autoPlaceholder = scale ? `0${this.decimalSeparator()}${''.padEnd(scale, '0')}` : '0';
|
|
214
|
+
if (this.placeholder() === undefined || this.placeholder() === this._lastAutoPlaceholder) {
|
|
215
|
+
this.placeholder.set(autoPlaceholder);
|
|
214
216
|
}
|
|
217
|
+
this._lastAutoPlaceholder = autoPlaceholder;
|
|
215
218
|
}
|
|
216
219
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BignumberInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
217
220
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.14", type: BignumberInputDirective, isStandalone: true, selector: "input[sBignumberInput]", inputs: { precision: { classPropertyName: "precision", publicName: "precision", isSignal: true, isRequired: false, transformFunction: null }, scale: { classPropertyName: "scale", publicName: "scale", isSignal: true, isRequired: false, transformFunction: null }, minDecimalPlaces: { classPropertyName: "minDecimalPlaces", publicName: "minDecimalPlaces", isSignal: true, isRequired: false, transformFunction: null }, maxDecimalPlaces: { classPropertyName: "maxDecimalPlaces", publicName: "maxDecimalPlaces", isSignal: true, isRequired: false, transformFunction: null }, decimalSeparator: { classPropertyName: "decimalSeparator", publicName: "decimalSeparator", isSignal: true, isRequired: false, transformFunction: null }, thousandsSeparator: { classPropertyName: "thousandsSeparator", publicName: "thousandsSeparator", isSignal: true, isRequired: false, transformFunction: null }, thousandSeparator: { classPropertyName: "thousandSeparator", publicName: "thousandSeparator", isSignal: true, isRequired: false, transformFunction: null }, alignTo: { classPropertyName: "alignTo", publicName: "alignTo", isSignal: true, isRequired: false, transformFunction: null }, allowNegative: { classPropertyName: "allowNegative", publicName: "allowNegative", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { minDecimalPlaces: "minDecimalPlacesChange", maxDecimalPlaces: "maxDecimalPlacesChange", decimalSeparator: "decimalSeparatorChange", thousandSeparator: "thousandSeparatorChange", placeholder: "placeholderChange", pasteRejected: "pasteRejected" }, host: { properties: { "attr.placeholder": "placeholder()", "attr.maxLength": "maxLength" } }, providers: [
|
|
@@ -242,4 +245,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
242
245
|
standalone: true,
|
|
243
246
|
}]
|
|
244
247
|
}], ctorParameters: () => [] });
|
|
245
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlnbnVtYmVyLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9iaWdudW1iZXItaW5wdXQvc3JjL2xpYi9iaWdudW1iZXItaW5wdXQvYmlnbnVtYmVyLWlucHV0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxpQkFBaUIsRUFBcUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7QUFFdkY7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSx3QkFHWDtBQUhELFdBQVksd0JBQXdCO0lBQ2hDLDJDQUFlLENBQUE7SUFDZix5Q0FBYSxDQUFBO0FBQ2pCLENBQUMsRUFIVyx3QkFBd0IsS0FBeEIsd0JBQXdCLFFBR25DO0FBRUQ7Ozs7Ozs7Ozs7OztHQVlHO0FBaUJILE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxvQkFBb0I7SUFDN0Q7Ozs7Ozs7OztPQVNHO0lBQ0ksU0FBUyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUU3Qjs7Ozs7O09BTUc7SUFDSSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXhCOzs7O09BSUc7SUFDYSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFNUM7Ozs7T0FJRztJQUNhLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU1Qzs7O09BR0c7SUFDYSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFOUM7OztPQUdHO0lBQ0ksa0JBQWtCLEdBQUcsS0FBSyxDQUFxQixT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QUNyRCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDO2dCQUN0RCxLQUFLLEVBQUUsSUFBSTthQUNkO1NBQ0o7OzRGQUdRLHVCQUF1QjtrQkFoQm5DLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsSUFBSSxFQUFFO3dCQUNGLG9CQUFvQixFQUFFLGVBQWU7d0JBQ3JDLGtCQUFrQixFQUFFLFdBQVc7cUJBQ2xDO29CQUNELFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixxREFBcUQ7NEJBQ3JELFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHdCQUF3QixDQUFDOzRCQUN0RCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjtvQkFDRCxVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGZvcndhcmRSZWYsIGlucHV0LCBtb2RlbCwgT25Jbml0LCBPbkNoYW5nZXMsIG91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgTnVtZXJpY01hc2tEaXJlY3RpdmUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL251bWVyaWMtbWFzayc7XHJcblxyXG4vKipcclxuICogQGRlcHJlY2F0ZWQgRXN0ZSBlbnVtIG7Do28gdGVtIG1haXMgZWZlaXRvLiBPIGFsaW5oYW1lbnRvIGRvIGNhbXBvIMOpIHNlbXByZSBgJ3JpZ2h0J2AuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBCaWdudW1iZXJBbGlnbm1lbnRPcHRpb24ge1xyXG4gICAgUklHSFQgPSAncmlnaHQnLFxyXG4gICAgTEVGVCA9ICdsZWZ0JyxcclxufVxyXG5cclxuLyoqXHJcbiAqIEBkZXByZWNhdGVkIFV0aWxpemUgYSBkaXJldGl2YSBgQmlnTnVtYmVySW5wdXRgIGFvIGludsOpcyBkZXN0YS5cclxuICogQGRlc2NyaXB0aW9uIERpcmV0aXZhIGRlIG3DoXNjYXJhIHBhcmEgY2FtcG9zIGRlIGVudHJhZGEgZGUgbsO6bWVyb3MgZGUgZ3JhbmRlIHByZWNpc8OjbyxcclxuICogYWRhcHRhZGEgZG8gYEN1cnJlbmN5TWFza0RpcmVjdGl2ZWAuIFBlcm1pdGUgY29uZmlndXJhciBwcmVjaXPDo28sIGVzY2FsYSxcclxuICogc2VwYXJhZG9yZXMgZGVjaW1haXMgZSBkZSBtaWxoYXIgZGUgYWNvcmRvIGNvbSBvIGxvY2FsZSBkYSBhcGxpY2HDp8Ojby5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgaHRtbFxyXG4gKiA8aW5wdXQgc0JpZ251bWJlcklucHV0IFtwcmVjaXNpb25dPVwiMTVcIiBbc2NhbGVdPVwiMlwiIFthbGxvd05lZ2F0aXZlXT1cImZhbHNlXCIgLz5cclxuICogYGBgXHJcbiAqXHJcbiAqIEBjYXRlZ29yeSBJbnB1dHNcclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdpbnB1dFtzQmlnbnVtYmVySW5wdXRdJyxcclxuICAgIGhvc3Q6IHtcclxuICAgICAgICAnW2F0dHIucGxhY2Vob2xkZXJdJzogJ3BsYWNlaG9sZGVyKCknLFxyXG4gICAgICAgICdbYXR0ci5tYXhMZW5ndGhdJzogJ21heExlbmd0aCcsXHJcbiAgICB9LFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgICAgICAgLy8gTk9TT05BUiAtICdCaWdudW1iZXJJbnB1dERpcmVjdGl2ZScgaXMgZGVwcmVjYXRlZC5cclxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQmlnbnVtYmVySW5wdXREaXJlY3RpdmUpLFxyXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCaWdudW1iZXJJbnB1dERpcmVjdGl2ZSBleHRlbmRzIE51bWVyaWNNYXNrRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gTsO6bWVybyB0b3RhbCBkZSBkw61naXRvcyBzaWduaWZpY2F0aXZvcyBhY2VpdG9zIHBlbG8gY2FtcG8gKHBhcnRlIGludGVpcmEgKyBwYXJ0ZSBkZWNpbWFsKS5cclxuICAgICAqXHJcbiAgICAgKiBEdXJhbnRlIGEgZGlnaXRhw6fDo28sIG8gY2FtcG8gbGltaXRhIGZpc2ljYW1lbnRlIG8gbsO6bWVybyBkZSBjYXJhY3RlcmVzIHZpYSBgbWF4TGVuZ3RoYC5cclxuICAgICAqIEFvIGNvbGFyIHVtIHZhbG9yIHF1ZSB1bHRyYXBhc3NlIG8gbGltaXRlLCBvIGV2ZW50byBgcGFzdGVSZWplY3RlZGAgw6kgZW1pdGlkbyBlIGEgY29sYWdlbSDDqSBjYW5jZWxhZGEuXHJcbiAgICAgKiBBcMOzcyBzYWlyIGRvIGNhbXBvIChibHVyKSBvdSBhbyBzdWJtZXRlciBvIGZvcm11bMOhcmlvLCBzZSBvIHZhbG9yIHVsdHJhcGFzc2FyIGBwcmVjaXNpb25gLFxyXG4gICAgICogbyBjYW1wbyBmaWNhcsOhIGludsOhbGlkbyBjb20gbyBlcnJvIGBleGNlZWRzUHJlY2lzaW9uOiB7IHByZWNpc2lvbiwgYWN0dWFsIH1gLlxyXG4gICAgICpcclxuICAgICAqIEBkZWZhdWx0IDE1XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBwcmVjaXNpb24gPSBpbnB1dCgxNSk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgYG1pbkRlY2ltYWxQbGFjZXNgIGUgYG1heERlY2ltYWxQbGFjZXNgIGFvIGludsOpcyBkZXN0ZS5cclxuICAgICAqIEBkZXNjcmlwdGlvbiBOw7ptZXJvIGRlIGNhc2FzIGRlY2ltYWlzIGV4aWJpZGFzIGUgYWNlaXRhcyBwZWxvIGNhbXBvLlxyXG4gICAgICogUXVhbmRvIGluZm9ybWFkbywgcmVwYXNzYSBvIHZhbG9yIHBhcmEgYG1pbkRlY2ltYWxQbGFjZXNgIGUgYG1heERlY2ltYWxQbGFjZXNgLlxyXG4gICAgICpcclxuICAgICAqIEBkZWZhdWx0IDBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNjYWxlID0gaW5wdXQoMCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gTsO6bWVybyBtw61uaW1vIGRlIGNhc2FzIGRlY2ltYWlzIGV4aWJpZGFzLlxyXG4gICAgICpcclxuICAgICAqIEBkZWZhdWx0IDBcclxuICAgICAqL1xyXG4gICAgcHVibGljIG92ZXJyaWRlIG1pbkRlY2ltYWxQbGFjZXMgPSBtb2RlbCgwKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBOw7ptZXJvIG3DoXhpbW8gZGUgY2FzYXMgZGVjaW1haXMgYWNlaXRhcy5cclxuICAgICAqXHJcbiAgICAgKiBAZGVmYXVsdCAwXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvdmVycmlkZSBtYXhEZWNpbWFsUGxhY2VzID0gbW9kZWwoMCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gU2VwYXJhZG9yIGRlY2ltYWwgcGVyc29uYWxpemFkby4gUXVhbmRvIG7Do28gaW5mb3JtYWRvLFxyXG4gICAgICogdXRpbGl6YSBvIHNlcGFyYWRvciBkZWZpbmlkbyBwZWxvIGxvY2FsZSBhdGl2byBkYSBhcGxpY2HDp8Ojby5cclxuICAgICAqL1xyXG4gICAgcHVibGljIG92ZXJyaWRlIGRlY2ltYWxTZXBhcmF0b3IgPSBtb2RlbCgnLCcpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlIGB0aG91c2FuZFNlcGFyYXRvcmAgYW8gaW52w6lzIGRlc3RlLlxyXG4gICAgICogQGRlc2NyaXB0aW9uIFNlcGFyYWRvciBkZSBtaWxoYXIgcGVyc29uYWxpemFkby4gUmVjb21lbmRhLXNlIG1pZ3JhciBwYXJhIGB0aG91c2FuZFNlcGFyYXRvcmAuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB0aG91c2FuZHNTZXBhcmF0b3IgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gU2VwYXJhZG9yIGRlIG1pbGhhciBwZXJzb25hbGl6YWRvLiBRdWFuZG8gbsOjbyBpbmZvcm1hZG8sXHJcbiAgICAgKiB1dGlsaXphIG8gc2VwYXJhZG9yIGRlZmluaWRvIHBlbG8gbG9jYWxlIGF0aXZvIGRhIGFwbGljYcOnw6NvLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgdGhvdXNhbmRTZXBhcmF0b3IgPSBtb2RlbCgnLicpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlcHJlY2F0ZWQgRXN0ZSBpbnB1dCBuw6NvIHRlbSBtYWlzIGVmZWl0byBlIHBvZGUgc2VyIHJlbW92aWRvLlxyXG4gICAgICogTyBhbGluaGFtZW50byBkbyBjYW1wbyDDqSBzZW1wcmUgYCdyaWdodCdgLCBjb25mb3JtZSBvIGNvbXBvcnRhbWVudG8gcGFkcsOjbyBkYSBtw6FzY2FyYSBudW3DqXJpY2EuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhbGlnblRvID0gaW5wdXQ8J2xlZnQnIHwgJ3JpZ2h0Jz4oJ3JpZ2h0Jyk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gUGVybWl0ZSBhIGVudHJhZGEgZGUgdmFsb3JlcyBuZWdhdGl2b3MuXHJcbiAgICAgKlxyXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgYWxsb3dOZWdhdGl2ZSA9IGlucHV0KHRydWUpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIFRleHRvIGRlIHBsYWNlaG9sZGVyIGV4aWJpZG8gcXVhbmRvIG8gY2FtcG8gZXN0w6EgdmF6aW8uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBwbGFjZWhvbGRlciA9IG1vZGVsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuXHJcbiAgICBwdWJsaWMgbWF4TGVuZ3RoPzogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIHVtYSBjb2xhZ2VtIChwYXN0ZSkgw6kgcmVqZWl0YWRhIHBlbGEgdmFsaWRhw6fDo28gZG8gY2FtcG8uXHJcbiAgICAgKiBFbWl0ZSBhIHN0cmluZyBjb2xhZGEgcXVlIGZvaSByZWN1c2FkYS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHBhc3RlUmVqZWN0ZWQgPSBvdXRwdXQ8c3RyaW5nPigpO1xyXG5cclxuICAgIHByaXZhdGUgX2RlY2ltYWxTZXBhcmF0b3JFeHBsaWNpdCA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBfdGhvdXNhbmRTZXBhcmF0b3JFeHBsaWNpdCA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVQbGFjZWhvbGRlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIG5nT25DaGFuZ2VzIGhhbmRsZXMgYWxsIHNpZ25hbCB3cml0ZXMgcmVhY3RpdmVseSwgYXZvaWRpbmcgdGhlIG5lZWQgZm9yXHJcbiAgICAvLyBlZmZlY3QoKSB3aXRoIGFsbG93U2lnbmFsV3JpdGVzLiBUaGUgZGVjaW1hbFNlcGFyYXRvci90aG91c2FuZFNlcGFyYXRvciBpbnB1dHNcclxuICAgIC8vIGhhdmUgdHJ1dGh5IGRlZmF1bHRzLCBzbyBuZ09uQ2hhbmdlcyBpcyBuZWNlc3NhcnkgdG8gZGlzdGluZ3Vpc2ggXCJwYXJlbnQgYm91bmQgdGhpc1wiXHJcbiAgICAvLyBmcm9tIFwiaXQncyBqdXN0IHRoZSBkZWZhdWx0IHZhbHVlXCIuXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzWydkZWNpbWFsU2VwYXJhdG9yJ10gJiYgdGhpcy5kZWNpbWFsU2VwYXJhdG9yKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5fZGVjaW1hbFNlcGFyYXRvckV4cGxpY2l0ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3Rob3VzYW5kU2VwYXJhdG9yJ10gJiYgdGhpcy50aG91c2FuZFNlcGFyYXRvcigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Rob3VzYW5kU2VwYXJhdG9yRXhwbGljaXQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY2hhbmdlc1sndGhvdXNhbmRzU2VwYXJhdG9yJ10pIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsID0gdGhpcy50aG91c2FuZHNTZXBhcmF0b3IoKTtcclxuICAgICAgICAgICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl90aG91c2FuZFNlcGFyYXRvckV4cGxpY2l0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMudGhvdXNhbmRTZXBhcmF0b3Iuc2V0KHZhbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3NjYWxlJ10pIHtcclxuICAgICAgICAgICAgdGhpcy5taW5EZWNpbWFsUGxhY2VzLnNldCh0aGlzLnNjYWxlKCkpO1xyXG4gICAgICAgICAgICB0aGlzLm1heERlY2ltYWxQbGFjZXMuc2V0KHRoaXMuc2NhbGUoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgY2hhbmdlc1snc2NhbGUnXSB8fFxyXG4gICAgICAgICAgICBjaGFuZ2VzWydkZWNpbWFsU2VwYXJhdG9yJ10gfHxcclxuICAgICAgICAgICAgY2hhbmdlc1sndGhvdXNhbmRTZXBhcmF0b3InXSB8fFxyXG4gICAgICAgICAgICBjaGFuZ2VzWyd0aG91c2FuZHNTZXBhcmF0b3InXSB8fFxyXG4gICAgICAgICAgICBjaGFuZ2VzWydwcmVjaXNpb24nXVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZU1heExlbmd0aCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY2hhbmdlc1snc2NhbGUnXSB8fCBjaGFuZ2VzWydkZWNpbWFsU2VwYXJhdG9yJ10pIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVQbGFjZWhvbGRlcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE92ZXJyaWRlcyBiYXNlIHBhc3RlIGhhbmRsZXIgdG8gYWRkIHByZWNpc2lvbiB2YWxpZGF0aW9uLlxyXG4gICAgICogSWYgdGhlIHBhc3RlZCB2YWx1ZSBleGNlZWRzIGBwcmVjaXNpb25gIGRpZ2l0cywgdGhlIHBhc3RlIGlzIHJlamVjdGVkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBwYXN0ZWRUZXh0ID0gZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dCcpID8/ICcnO1xyXG4gICAgICAgIGNvbnN0IGVmZmVjdGl2ZVRob3VzYW5kU2VwID0gdGhpcy50aG91c2FuZHNTZXBhcmF0b3IoKSA/PyB0aGlzLnRob3VzYW5kU2VwYXJhdG9yKCk7XHJcbiAgICAgICAgY29uc3QgbnVtZXJpY1RleHQgPSBwYXN0ZWRUZXh0XHJcbiAgICAgICAgICAgIC5yZXBsYWNlKG5ldyBSZWdFeHAoYFxcXFwke2VmZmVjdGl2ZVRob3VzYW5kU2VwfWAsICdnJyksICcnKVxyXG4gICAgICAgICAgICAucmVwbGFjZSh0aGlzLmRlY2ltYWxTZXBhcmF0b3IoKSwgJy4nKTtcclxuICAgICAgICBjb25zdCBbaW50UGFydCwgZGVjaW1hbFBhcnQgPSAnJ10gPSBudW1lcmljVGV4dC5zcGxpdCgnLicpO1xyXG4gICAgICAgIGNvbnN0IHRvdGFsRGlnaXRzID0gaW50UGFydC5yZXBsYWNlKC9cXEQvZywgJycpLmxlbmd0aCArIGRlY2ltYWxQYXJ0LnNsaWNlKDAsIHRoaXMuc2NhbGUoKSkubGVuZ3RoO1xyXG5cclxuICAgICAgICBpZiAodG90YWxEaWdpdHMgPiB0aGlzLnByZWNpc2lvbigpKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIHRoaXMucGFzdGVSZWplY3RlZC5lbWl0KHBhc3RlZFRleHQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzdXBlci5vblBhc3RlKGV2ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE92ZXJyaWRlcyBsb2NhbGUtZGVyaXZlZCBzZXBhcmF0b3JzIHdpdGggZXhwbGljaXRseSBzZXQgaW5wdXRzLCBpZiBwcm92aWRlZC5cclxuICAgICAqIElmIG5vIGV4cGxpY2l0IHNlcGFyYXRvciBpcyBzZXQsIHRoZSBsb2NhbGUtZGVyaXZlZCB2YWx1ZSBpcyB1c2VkLlxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdXBkYXRlU2VwYXJhdG9ycygpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBleHBsaWNpdERlY2ltYWwgPSB0aGlzLl9kZWNpbWFsU2VwYXJhdG9yRXhwbGljaXQgPyB0aGlzLmRlY2ltYWxTZXBhcmF0b3IoKSA6IHVuZGVmaW5lZDtcclxuICAgICAgICBjb25zdCBleHBsaWNpdFRob3VzYW5kID0gdGhpcy5fdGhvdXNhbmRTZXBhcmF0b3JFeHBsaWNpdFxyXG4gICAgICAgICAgICA/ICh0aGlzLnRob3VzYW5kc1NlcGFyYXRvcigpID8/IHRoaXMudGhvdXNhbmRTZXBhcmF0b3IoKSlcclxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XHJcblxyXG4gICAgICAgIHN1cGVyLnVwZGF0ZVNlcGFyYXRvcnMoKTtcclxuXHJcbiAgICAgICAgaWYgKGV4cGxpY2l0RGVjaW1hbCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVjaW1hbFNlcGFyYXRvci5zZXQoZXhwbGljaXREZWNpbWFsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV4cGxpY2l0VGhvdXNhbmQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLnRob3VzYW5kU2VwYXJhdG9yLnNldChleHBsaWNpdFRob3VzYW5kKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlTWF4TGVuZ3RoKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVQbGFjZWhvbGRlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT3ZlcnJpZGVzIGJhc2UgdmFsaWRhdG9yIHRvIGFkZCBwcmVjaXNpb24gdmFsaWRhdGlvbi5cclxuICAgICAqIElmIHRoZSB0b3RhbCBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzIGV4Y2VlZHMgYHByZWNpc2lvbmAsIHJldHVybnMgYW4gYGV4Y2VlZHNQcmVjaXNpb25gIGVycm9yLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgICAgIGNvbnN0IGJhc2VFcnJvcnMgPSBzdXBlci52YWxpZGF0ZShjb250cm9sKTtcclxuXHJcbiAgICAgICAgaWYgKCFjb250cm9sLnZhbHVlIHx8ICF0aGlzLnByZWNpc2lvbigpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBiYXNlRXJyb3JzID8/IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBudW1lcmljU3RyID0gU3RyaW5nKGNvbnRyb2wudmFsdWUpLnJlcGxhY2UoJy0nLCAnJyk7XHJcbiAgICAgICAgY29uc3QgW2ludFBhcnQsIGRlY2ltYWxQYXJ0ID0gJyddID0gbnVtZXJpY1N0ci5zcGxpdCgnLicpO1xyXG4gICAgICAgIGNvbnN0IHRvdGFsRGlnaXRzID0gaW50UGFydC5sZW5ndGggKyBkZWNpbWFsUGFydC5sZW5ndGg7XHJcblxyXG4gICAgICAgIGlmICh0b3RhbERpZ2l0cyA+IHRoaXMucHJlY2lzaW9uKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLmJhc2VFcnJvcnMsXHJcbiAgICAgICAgICAgICAgICBleGNlZWRzUHJlY2lzaW9uOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiB0aGlzLnByZWNpc2lvbigpLFxyXG4gICAgICAgICAgICAgICAgICAgIGFjdHVhbDogdG90YWxEaWdpdHMsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGJhc2VFcnJvcnMgPz8gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc3BvbnNpYmxlIHRvIGNhbGN1bGF0ZSB0aGUgZmllbGQgbWF4aW11bSBsZW5ndGggY29uc2lkZXJpbmcgdGhlIHNlcGFyYXRvcnMuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgY2FsY3VsYXRlTWF4TGVuZ3RoKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGRlY1NlcExlbmd0aCA9IHRoaXMuZGVjaW1hbFNlcGFyYXRvcigpPy5sZW5ndGggPz8gMDtcclxuICAgICAgICBjb25zdCBlZmZlY3RpdmVUaG91c2FuZFNlcCA9IHRoaXMudGhvdXNhbmRzU2VwYXJhdG9yKCkgPz8gdGhpcy50aG91c2FuZFNlcGFyYXRvcigpO1xyXG4gICAgICAgIGNvbnN0IHRob1NlcExlbmd0aCA9IGVmZmVjdGl2ZVRob3VzYW5kU2VwPy5sZW5ndGggPz8gMDtcclxuXHJcbiAgICAgICAgY29uc3QgRElHSVRTX0dST1VQX1NJWkUgPSAzO1xyXG5cclxuICAgICAgICBsZXQgbWF4TGVuZ3RoID0gdGhpcy5wcmVjaXNpb24oKSArICh0aGlzLnNjYWxlKCkgPyBkZWNTZXBMZW5ndGggOiAwKTtcclxuICAgICAgICBtYXhMZW5ndGggKz1cclxuICAgICAgICAgICAgTWF0aC5jZWlsKCh0aGlzLnByZWNpc2lvbigpIC0gKHRoaXMuc2NhbGUoKSA/IHRoaXMuc2NhbGUoKSA6IDApKSAvIERJR0lUU19HUk9VUF9TSVpFIC0gMSkgKiB0aG9TZXBMZW5ndGg7XHJcblxyXG4gICAgICAgIHRoaXMubWF4TGVuZ3RoID0gbWF4TGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlUGxhY2Vob2xkZXIoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgc2NhbGUgPSB0aGlzLnNjYWxlKCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnBsYWNlaG9sZGVyKCkgJiYgc2NhbGUpIHtcclxuICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlci5zZXQoYDAke3RoaXMuZGVjaW1hbFNlcGFyYXRvcigpfSR7JycucGFkRW5kKHNjYWxlLCAnMCcpfWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|
|
248
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlnbnVtYmVyLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9iaWdudW1iZXItaW5wdXQvc3JjL2xpYi9iaWdudW1iZXItaW5wdXQvYmlnbnVtYmVyLWlucHV0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBbUIsaUJBQWlCLEVBQW9CLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saURBQWlELENBQUM7O0FBRXZGOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksd0JBR1g7QUFIRCxXQUFZLHdCQUF3QjtJQUNoQywyQ0FBZSxDQUFBO0lBQ2YseUNBQWEsQ0FBQTtBQUNqQixDQUFDLEVBSFcsd0JBQXdCLEtBQXhCLHdCQUF3QixRQUduQztBQUVEOzs7Ozs7Ozs7Ozs7R0FZRztBQWlCSCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsb0JBQW9CO0lBQzdEOzs7Ozs7Ozs7T0FTRztJQUNJLFNBQVMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFN0I7Ozs7OztPQU1HO0lBQ0ksS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV4Qjs7OztPQUlHO0lBQ2EsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTVDOzs7O09BSUc7SUFDYSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFNUM7OztPQUdHO0lBQ2EsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRTlDOzs7T0FHRztJQUNJLGtCQUFrQixHQUFHLEtBQUssQ0FBcUIs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VyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBRUQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGVBQWUsQ0FBQztJQUNoRCxDQUFDO3dHQXBPUSx1QkFBdUI7NEZBQXZCLHVCQUF1QiwwMERBVnJCO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIscURBQXFEO2dCQUNyRCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDO2dCQUN0RCxLQUFLLEVBQUUsSUFBSTthQUNkO1NBQ0o7OzRGQUdRLHVCQUF1QjtrQkFoQm5DLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsSUFBSSxFQUFFO3dCQUNGLG9CQUFvQixFQUFFLGVBQWU7d0JBQ3JDLGtCQUFrQixFQUFFLFdBQVc7cUJBQ2xDO29CQUNELFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixxREFBcUQ7NEJBQ3JELFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHdCQUF3QixDQUFDOzRCQUN0RCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjtvQkFDRCxVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGZvcndhcmRSZWYsIGlucHV0LCBtb2RlbCwgT25DaGFuZ2VzLCBPbkluaXQsIG91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgTnVtZXJpY01hc2tEaXJlY3RpdmUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL251bWVyaWMtbWFzayc7XHJcblxyXG4vKipcclxuICogQGRlcHJlY2F0ZWQgRXN0ZSBlbnVtIG7Do28gdGVtIG1haXMgZWZlaXRvLiBPIGFsaW5oYW1lbnRvIGRvIGNhbXBvIMOpIHNlbXByZSBgJ3JpZ2h0J2AuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBCaWdudW1iZXJBbGlnbm1lbnRPcHRpb24ge1xyXG4gICAgUklHSFQgPSAncmlnaHQnLFxyXG4gICAgTEVGVCA9ICdsZWZ0JyxcclxufVxyXG5cclxuLyoqXHJcbiAqIEBkZXByZWNhdGVkIFV0aWxpemUgYSBkaXJldGl2YSBgQmlnTnVtYmVySW5wdXRgIGFvIGludsOpcyBkZXN0YS5cclxuICogQGRlc2NyaXB0aW9uIERpcmV0aXZhIGRlIG3DoXNjYXJhIHBhcmEgY2FtcG9zIGRlIGVudHJhZGEgZGUgbsO6bWVyb3MgZGUgZ3JhbmRlIHByZWNpc8OjbyxcclxuICogYWRhcHRhZGEgZG8gYEN1cnJlbmN5TWFza0RpcmVjdGl2ZWAuIFBlcm1pdGUgY29uZmlndXJhciBwcmVjaXPDo28sIGVzY2FsYSxcclxuICogc2VwYXJhZG9yZXMgZGVjaW1haXMgZSBkZSBtaWxoYXIgZGUgYWNvcmRvIGNvbSBvIGxvY2FsZSBkYSBhcGxpY2HDp8Ojby5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgaHRtbFxyXG4gKiA8aW5wdXQgc0JpZ251bWJlcklucHV0IFtwcmVjaXNpb25dPVwiMTVcIiBbc2NhbGVdPVwiMlwiIFthbGxvd05lZ2F0aXZlXT1cImZhbHNlXCIgLz5cclxuICogYGBgXHJcbiAqXHJcbiAqIEBjYXRlZ29yeSBJbnB1dHNcclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdpbnB1dFtzQmlnbnVtYmVySW5wdXRdJyxcclxuICAgIGhvc3Q6IHtcclxuICAgICAgICAnW2F0dHIucGxhY2Vob2xkZXJdJzogJ3BsYWNlaG9sZGVyKCknLFxyXG4gICAgICAgICdbYXR0ci5tYXhMZW5ndGhdJzogJ21heExlbmd0aCcsXHJcbiAgICB9LFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgICAgICAgLy8gTk9TT05BUiAtICdCaWdudW1iZXJJbnB1dERpcmVjdGl2ZScgaXMgZGVwcmVjYXRlZC5cclxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQmlnbnVtYmVySW5wdXREaXJlY3RpdmUpLFxyXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCaWdudW1iZXJJbnB1dERpcmVjdGl2ZSBleHRlbmRzIE51bWVyaWNNYXNrRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gTsO6bWVybyB0b3RhbCBkZSBkw61naXRvcyBzaWduaWZpY2F0aXZvcyBhY2VpdG9zIHBlbG8gY2FtcG8gKHBhcnRlIGludGVpcmEgKyBwYXJ0ZSBkZWNpbWFsKS5cclxuICAgICAqXHJcbiAgICAgKiBEdXJhbnRlIGEgZGlnaXRhw6fDo28sIG8gY2FtcG8gbGltaXRhIGZpc2ljYW1lbnRlIG8gbsO6bWVybyBkZSBjYXJhY3RlcmVzIHZpYSBgbWF4TGVuZ3RoYC5cclxuICAgICAqIEFvIGNvbGFyIHVtIHZhbG9yIHF1ZSB1bHRyYXBhc3NlIG8gbGltaXRlLCBvIGV2ZW50byBgcGFzdGVSZWplY3RlZGAgw6kgZW1pdGlkbyBlIGEgY29sYWdlbSDDqSBjYW5jZWxhZGEuXHJcbiAgICAgKiBBcMOzcyBzYWlyIGRvIGNhbXBvIChibHVyKSBvdSBhbyBzdWJtZXRlciBvIGZvcm11bMOhcmlvLCBzZSBvIHZhbG9yIHVsdHJhcGFzc2FyIGBwcmVjaXNpb25gLFxyXG4gICAgICogbyBjYW1wbyBmaWNhcsOhIGludsOhbGlkbyBjb20gbyBlcnJvIGBleGNlZWRzUHJlY2lzaW9uOiB7IHByZWNpc2lvbiwgYWN0dWFsIH1gLlxyXG4gICAgICpcclxuICAgICAqIEBkZWZhdWx0IDE1XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBwcmVjaXNpb24gPSBpbnB1dCgxNSk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgYG1pbkRlY2ltYWxQbGFjZXNgIGUgYG1heERlY2ltYWxQbGFjZXNgIGFvIGludsOpcyBkZXN0ZS5cclxuICAgICAqIEBkZXNjcmlwdGlvbiBOw7ptZXJvIGRlIGNhc2FzIGRlY2ltYWlzIGV4aWJpZGFzIGUgYWNlaXRhcyBwZWxvIGNhbXBvLlxyXG4gICAgICogUXVhbmRvIGluZm9ybWFkbywgcmVwYXNzYSBvIHZhbG9yIHBhcmEgYG1pbkRlY2ltYWxQbGFjZXNgIGUgYG1heERlY2ltYWxQbGFjZXNgLlxyXG4gICAgICpcclxuICAgICAqIEBkZWZhdWx0IDBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNjYWxlID0gaW5wdXQoMCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gTsO6bWVybyBtw61uaW1vIGRlIGNhc2FzIGRlY2ltYWlzIGV4aWJpZGFzLlxyXG4gICAgICpcclxuICAgICAqIEBkZWZhdWx0IDBcclxuICAgICAqL1xyXG4gICAgcHVibGljIG92ZXJyaWRlIG1pbkRlY2ltYWxQbGFjZXMgPSBtb2RlbCgwKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBOw7ptZXJvIG3DoXhpbW8gZGUgY2FzYXMgZGVjaW1haXMgYWNlaXRhcy5cclxuICAgICAqXHJcbiAgICAgKiBAZGVmYXVsdCAwXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvdmVycmlkZSBtYXhEZWNpbWFsUGxhY2VzID0gbW9kZWwoMCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gU2VwYXJhZG9yIGRlY2ltYWwgcGVyc29uYWxpemFkby4gUXVhbmRvIG7Do28gaW5mb3JtYWRvLFxyXG4gICAgICogdXRpbGl6YSBvIHNlcGFyYWRvciBkZWZpbmlkbyBwZWxvIGxvY2FsZSBhdGl2byBkYSBhcGxpY2HDp8Ojby5cclxuICAgICAqL1xyXG4gICAgcHVibGljIG92ZXJyaWRlIGRlY2ltYWxTZXBhcmF0b3IgPSBtb2RlbCgnLCcpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlIGB0aG91c2FuZFNlcGFyYXRvcmAgYW8gaW52w6lzIGRlc3RlLlxyXG4gICAgICogQGRlc2NyaXB0aW9uIFNlcGFyYWRvciBkZSBtaWxoYXIgcGVyc29uYWxpemFkby4gUmVjb21lbmRhLXNlIG1pZ3JhciBwYXJhIGB0aG91c2FuZFNlcGFyYXRvcmAuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB0aG91c2FuZHNTZXBhcmF0b3IgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gU2VwYXJhZG9yIGRlIG1pbGhhciBwZXJzb25hbGl6YWRvLiBRdWFuZG8gbsOjbyBpbmZvcm1hZG8sXHJcbiAgICAgKiB1dGlsaXphIG8gc2VwYXJhZG9yIGRlZmluaWRvIHBlbG8gbG9jYWxlIGF0aXZvIGRhIGFwbGljYcOnw6NvLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgdGhvdXNhbmRTZXBhcmF0b3IgPSBtb2RlbCgnLicpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlcHJlY2F0ZWQgRXN0ZSBpbnB1dCBuw6NvIHRlbSBtYWlzIGVmZWl0byBlIHBvZGUgc2VyIHJlbW92aWRvLlxyXG4gICAgICogTyBhbGluaGFtZW50byBkbyBjYW1wbyDDqSBzZW1wcmUgYCdyaWdodCdgLCBjb25mb3JtZSBvIGNvbXBvcnRhbWVudG8gcGFkcsOjbyBkYSBtw6FzY2FyYSBudW3DqXJpY2EuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhbGlnblRvID0gaW5wdXQ8J2xlZnQnIHwgJ3JpZ2h0Jz4oJ3JpZ2h0Jyk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gUGVybWl0ZSBhIGVudHJhZGEgZGUgdmFsb3JlcyBuZWdhdGl2b3MuXHJcbiAgICAgKlxyXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgYWxsb3dOZWdhdGl2ZSA9IGlucHV0KHRydWUpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIFRleHRvIGRlIHBsYWNlaG9sZGVyIGV4aWJpZG8gcXVhbmRvIG8gY2FtcG8gZXN0w6EgdmF6aW8uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBwbGFjZWhvbGRlciA9IG1vZGVsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuXHJcbiAgICBwdWJsaWMgbWF4TGVuZ3RoPzogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIHVtYSBjb2xhZ2VtIChwYXN0ZSkgw6kgcmVqZWl0YWRhIHBlbGEgdmFsaWRhw6fDo28gZG8gY2FtcG8uXHJcbiAgICAgKiBFbWl0ZSBhIHN0cmluZyBjb2xhZGEgcXVlIGZvaSByZWN1c2FkYS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHBhc3RlUmVqZWN0ZWQgPSBvdXRwdXQ8c3RyaW5nPigpO1xyXG5cclxuICAgIHByaXZhdGUgX2RlY2ltYWxTZXBhcmF0b3JFeHBsaWNpdCA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBfdGhvdXNhbmRTZXBhcmF0b3JFeHBsaWNpdCA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBfbGFzdEF1dG9QbGFjZWhvbGRlcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVQbGFjZWhvbGRlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIG5nT25DaGFuZ2VzIGhhbmRsZXMgYWxsIHNpZ25hbCB3cml0ZXMgcmVhY3RpdmVseSwgYXZvaWRpbmcgdGhlIG5lZWQgZm9yXHJcbiAgICAvLyBlZmZlY3QoKSB3aXRoIGFsbG93U2lnbmFsV3JpdGVzLiBUaGUgZGVjaW1hbFNlcGFyYXRvci90aG91c2FuZFNlcGFyYXRvciBpbnB1dHNcclxuICAgIC8vIGhhdmUgdHJ1dGh5IGRlZmF1bHRzLCBzbyBuZ09uQ2hhbmdlcyBpcyBuZWNlc3NhcnkgdG8gZGlzdGluZ3Vpc2ggXCJwYXJlbnQgYm91bmQgdGhpc1wiXHJcbiAgICAvLyBmcm9tIFwiaXQncyBqdXN0IHRoZSBkZWZhdWx0IHZhbHVlXCIuXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzWydkZWNpbWFsU2VwYXJhdG9yJ10gJiYgdGhpcy5kZWNpbWFsU2VwYXJhdG9yKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5fZGVjaW1hbFNlcGFyYXRvckV4cGxpY2l0ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3Rob3VzYW5kU2VwYXJhdG9yJ10gJiYgdGhpcy50aG91c2FuZFNlcGFyYXRvcigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Rob3VzYW5kU2VwYXJhdG9yRXhwbGljaXQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY2hhbmdlc1sndGhvdXNhbmRzU2VwYXJhdG9yJ10pIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsID0gdGhpcy50aG91c2FuZHNTZXBhcmF0b3IoKTtcclxuICAgICAgICAgICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl90aG91c2FuZFNlcGFyYXRvckV4cGxpY2l0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMudGhvdXNhbmRTZXBhcmF0b3Iuc2V0KHZhbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3NjYWxlJ10pIHtcclxuICAgICAgICAgICAgdGhpcy5taW5EZWNpbWFsUGxhY2VzLnNldCh0aGlzLnNjYWxlKCkpO1xyXG4gICAgICAgICAgICB0aGlzLm1heERlY2ltYWxQbGFjZXMuc2V0KHRoaXMuc2NhbGUoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgY2hhbmdlc1snc2NhbGUnXSB8fFxyXG4gICAgICAgICAgICBjaGFuZ2VzWydkZWNpbWFsU2VwYXJhdG9yJ10gfHxcclxuICAgICAgICAgICAgY2hhbmdlc1sndGhvdXNhbmRTZXBhcmF0b3InXSB8fFxyXG4gICAgICAgICAgICBjaGFuZ2VzWyd0aG91c2FuZHNTZXBhcmF0b3InXSB8fFxyXG4gICAgICAgICAgICBjaGFuZ2VzWydwcmVjaXNpb24nXVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZU1heExlbmd0aCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY2hhbmdlc1snc2NhbGUnXSB8fCBjaGFuZ2VzWydkZWNpbWFsU2VwYXJhdG9yJ10pIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVQbGFjZWhvbGRlcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE92ZXJyaWRlcyBiYXNlIHBhc3RlIGhhbmRsZXIgdG8gYWRkIHByZWNpc2lvbiB2YWxpZGF0aW9uLlxyXG4gICAgICogSWYgdGhlIHBhc3RlZCB2YWx1ZSBleGNlZWRzIGBwcmVjaXNpb25gIGRpZ2l0cywgdGhlIHBhc3RlIGlzIHJlamVjdGVkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBwYXN0ZWRUZXh0ID0gZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dCcpID8/ICcnO1xyXG4gICAgICAgIGNvbnN0IGVmZmVjdGl2ZVRob3VzYW5kU2VwID0gdGhpcy50aG91c2FuZHNTZXBhcmF0b3IoKSA/PyB0aGlzLnRob3VzYW5kU2VwYXJhdG9yKCk7XHJcbiAgICAgICAgY29uc3QgbnVtZXJpY1RleHQgPSBwYXN0ZWRUZXh0XHJcbiAgICAgICAgICAgIC5yZXBsYWNlKG5ldyBSZWdFeHAoYFxcXFwke2VmZmVjdGl2ZVRob3VzYW5kU2VwfWAsICdnJyksICcnKVxyXG4gICAgICAgICAgICAucmVwbGFjZSh0aGlzLmRlY2ltYWxTZXBhcmF0b3IoKSwgJy4nKTtcclxuICAgICAgICBjb25zdCBbaW50UGFydCwgZGVjaW1hbFBhcnQgPSAnJ10gPSBudW1lcmljVGV4dC5zcGxpdCgnLicpO1xyXG4gICAgICAgIGNvbnN0IHRvdGFsRGlnaXRzID0gaW50UGFydC5yZXBsYWNlKC9cXEQvZywgJycpLmxlbmd0aCArIGRlY2ltYWxQYXJ0LnNsaWNlKDAsIHRoaXMuc2NhbGUoKSkubGVuZ3RoO1xyXG5cclxuICAgICAgICBpZiAodG90YWxEaWdpdHMgPiB0aGlzLnByZWNpc2lvbigpKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIHRoaXMucGFzdGVSZWplY3RlZC5lbWl0KHBhc3RlZFRleHQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzdXBlci5vblBhc3RlKGV2ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE92ZXJyaWRlcyBsb2NhbGUtZGVyaXZlZCBzZXBhcmF0b3JzIHdpdGggZXhwbGljaXRseSBzZXQgaW5wdXRzLCBpZiBwcm92aWRlZC5cclxuICAgICAqIElmIG5vIGV4cGxpY2l0IHNlcGFyYXRvciBpcyBzZXQsIHRoZSBsb2NhbGUtZGVyaXZlZCB2YWx1ZSBpcyB1c2VkLlxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdXBkYXRlU2VwYXJhdG9ycygpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBleHBsaWNpdERlY2ltYWwgPSB0aGlzLl9kZWNpbWFsU2VwYXJhdG9yRXhwbGljaXQgPyB0aGlzLmRlY2ltYWxTZXBhcmF0b3IoKSA6IHVuZGVmaW5lZDtcclxuICAgICAgICBjb25zdCBleHBsaWNpdFRob3VzYW5kID0gdGhpcy5fdGhvdXNhbmRTZXBhcmF0b3JFeHBsaWNpdFxyXG4gICAgICAgICAgICA/ICh0aGlzLnRob3VzYW5kc1NlcGFyYXRvcigpID8/IHRoaXMudGhvdXNhbmRTZXBhcmF0b3IoKSlcclxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XHJcblxyXG4gICAgICAgIHN1cGVyLnVwZGF0ZVNlcGFyYXRvcnMoKTtcclxuXHJcbiAgICAgICAgaWYgKGV4cGxpY2l0RGVjaW1hbCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVjaW1hbFNlcGFyYXRvci5zZXQoZXhwbGljaXREZWNpbWFsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV4cGxpY2l0VGhvdXNhbmQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLnRob3VzYW5kU2VwYXJhdG9yLnNldChleHBsaWNpdFRob3VzYW5kKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlTWF4TGVuZ3RoKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVQbGFjZWhvbGRlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT3ZlcnJpZGVzIGJhc2UgdmFsaWRhdG9yIHRvIGFkZCBwcmVjaXNpb24gdmFsaWRhdGlvbi5cclxuICAgICAqIElmIHRoZSB0b3RhbCBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzIGV4Y2VlZHMgYHByZWNpc2lvbmAsIHJldHVybnMgYW4gYGV4Y2VlZHNQcmVjaXNpb25gIGVycm9yLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgICAgIGNvbnN0IGJhc2VFcnJvcnMgPSBzdXBlci52YWxpZGF0ZShjb250cm9sKTtcclxuXHJcbiAgICAgICAgaWYgKCFjb250cm9sLnZhbHVlIHx8ICF0aGlzLnByZWNpc2lvbigpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBiYXNlRXJyb3JzID8/IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBudW1lcmljU3RyID0gU3RyaW5nKGNvbnRyb2wudmFsdWUpLnJlcGxhY2UoJy0nLCAnJyk7XHJcbiAgICAgICAgY29uc3QgW2ludFBhcnQsIGRlY2ltYWxQYXJ0ID0gJyddID0gbnVtZXJpY1N0ci5zcGxpdCgnLicpO1xyXG4gICAgICAgIGNvbnN0IHRvdGFsRGlnaXRzID0gaW50UGFydC5sZW5ndGggKyBkZWNpbWFsUGFydC5sZW5ndGg7XHJcblxyXG4gICAgICAgIGlmICh0b3RhbERpZ2l0cyA+IHRoaXMucHJlY2lzaW9uKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLmJhc2VFcnJvcnMsXHJcbiAgICAgICAgICAgICAgICBleGNlZWRzUHJlY2lzaW9uOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiB0aGlzLnByZWNpc2lvbigpLFxyXG4gICAgICAgICAgICAgICAgICAgIGFjdHVhbDogdG90YWxEaWdpdHMsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGJhc2VFcnJvcnMgPz8gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc3BvbnNpYmxlIHRvIGNhbGN1bGF0ZSB0aGUgZmllbGQgbWF4aW11bSBsZW5ndGggY29uc2lkZXJpbmcgdGhlIHNlcGFyYXRvcnMuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgY2FsY3VsYXRlTWF4TGVuZ3RoKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGRlY1NlcExlbmd0aCA9IHRoaXMuZGVjaW1hbFNlcGFyYXRvcigpPy5sZW5ndGggPz8gMDtcclxuICAgICAgICBjb25zdCBlZmZlY3RpdmVUaG91c2FuZFNlcCA9IHRoaXMudGhvdXNhbmRzU2VwYXJhdG9yKCkgPz8gdGhpcy50aG91c2FuZFNlcGFyYXRvcigpO1xyXG4gICAgICAgIGNvbnN0IHRob1NlcExlbmd0aCA9IGVmZmVjdGl2ZVRob3VzYW5kU2VwPy5sZW5ndGggPz8gMDtcclxuXHJcbiAgICAgICAgY29uc3QgRElHSVRTX0dST1VQX1NJWkUgPSAzO1xyXG5cclxuICAgICAgICBsZXQgbWF4TGVuZ3RoID0gdGhpcy5wcmVjaXNpb24oKSArICh0aGlzLnNjYWxlKCkgPyBkZWNTZXBMZW5ndGggOiAwKTtcclxuICAgICAgICBtYXhMZW5ndGggKz1cclxuICAgICAgICAgICAgTWF0aC5jZWlsKCh0aGlzLnByZWNpc2lvbigpIC0gKHRoaXMuc2NhbGUoKSA/IHRoaXMuc2NhbGUoKSA6IDApKSAvIERJR0lUU19HUk9VUF9TSVpFIC0gMSkgKiB0aG9TZXBMZW5ndGg7XHJcblxyXG4gICAgICAgIHRoaXMubWF4TGVuZ3RoID0gbWF4TGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlUGxhY2Vob2xkZXIoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgc2NhbGUgPSB0aGlzLnNjYWxlKCk7XHJcbiAgICAgICAgY29uc3QgYXV0b1BsYWNlaG9sZGVyID0gc2NhbGUgPyBgMCR7dGhpcy5kZWNpbWFsU2VwYXJhdG9yKCl9JHsnJy5wYWRFbmQoc2NhbGUsICcwJyl9YCA6ICcwJztcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucGxhY2Vob2xkZXIoKSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMucGxhY2Vob2xkZXIoKSA9PT0gdGhpcy5fbGFzdEF1dG9QbGFjZWhvbGRlcikge1xyXG4gICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyLnNldChhdXRvUGxhY2Vob2xkZXIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fbGFzdEF1dG9QbGFjZWhvbGRlciA9IGF1dG9QbGFjZWhvbGRlcjtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -44,6 +44,12 @@ export class CoreFacade {
|
|
|
44
44
|
notifyCoreFinishLoad() {
|
|
45
45
|
this.$onCoreFinishLoad.next();
|
|
46
46
|
}
|
|
47
|
+
resetCoreFinishLoad() {
|
|
48
|
+
this.$onCoreFinishLoad = new ReplaySubject(1);
|
|
49
|
+
}
|
|
50
|
+
resetLastCodeEmitted() {
|
|
51
|
+
this._lastCodeEmitted = '';
|
|
52
|
+
}
|
|
47
53
|
notifyCodeChange(code) {
|
|
48
54
|
const safeCode = this.getSafeCode(code);
|
|
49
55
|
if (safeCode !== this._lastCodeEmitted) {
|
|
@@ -88,4 +94,4 @@ export class CoreFacade {
|
|
|
88
94
|
return typeof code === 'string' ? code : '';
|
|
89
95
|
}
|
|
90
96
|
}
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1mYWNhZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvY29kZS1lZGl0b3Ivc3JjL2xpYi9jb2RlLWVkaXRvci9jb3JlL2ZhY2FkZXMvY29yZS1mYWNhZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUQsT0FBTyxFQUFpQixTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWhFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd4RCxNQUFNLE9BQWdCLFVBQVU7SUFDWCxpQkFBaUIsR0FBd0IsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUQsYUFBYSxHQUFvQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQy9DLHFCQUFxQixHQUFxQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ2pFLGdCQUFnQixHQUFhLEVBQUUsQ0FBQztJQUNoQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUFDdEIsd0JBQXdCLENBQVc7SUFDbkMsT0FBTyxDQUFnQjtJQUV4QixtQkFBbUIsQ0FBQyxPQUFzQjtRQUM3QyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1YsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1lBQ3hFLENBQUM7WUFFRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFFBQXFCLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFlLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFxQixDQUFDLENBQUM7WUFFOUMsSUFBSSxDQUFDLG9C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QywwQkFBMEIsUUFBUSxvQkFBb0IsQ0FBQyxDQUFDO1FBQzVFLENBQUM7SUFDTCxDQUFDO0lBRU8sYUFBYSxDQUFDLEtBQWE7UUFDL0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxJQUFJLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixLQUFLLG9CQUFvQixDQUFDLENBQUM7UUFDdEUsQ0FBQztJQUNMLENBQUM7SUFFTyxXQUFXLENBQUMsSUFBWTtRQUM1QixPQUFPLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDaEQsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBFZGl0b3JPcHRpb25zLCBMYW5ndWFnZXMsIFRoZW1lcyB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBNYXJrZXIgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgQ29yZUxpbnRlcnMgfSBmcm9tICcuLi91c2UtY2FzZXMvY29yZS1saW50ZXJzJztcbmltcG9ydCB7IExpbnRlckZhY2FkZSB9IGZyb20gJy4vbGludGVyLWZhY2FkZSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb3JlRmFjYWRlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5ICRvbkNvcmVGaW5pc2hMb2FkOiBSZXBsYXlTdWJqZWN0PHZvaWQ+ID0gbmV3IFJlcGxheVN1YmplY3QoMSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSAkb25Db2RlQ2hhbmdlOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdCgpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgJG9uQ29kZVZhbGlkaXR5Q2hhbmdlOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcml2YXRlIF9jb21wbGV0aW9uSXRlbXM6IHN0cmluZ1tdID0gW107XG4gICAgcHJpdmF0ZSBfbGFzdENvZGVFbWl0dGVkID0gJyc7XG4gICAgcHJpdmF0ZSBfbGFzdENvZGVWYWxpZGl0eUVtaXR0ZWQhOiBib29sZWFuO1xuICAgIHByaXZhdGUgX2xpbnRlciE6IExpbnRlckZhY2FkZTtcblxuICAgIHB1YmxpYyBjaGFuZ2VFZGl0b3JPcHRpb25zKG9wdGlvbnM6IEVkaXRvck9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFZGl0b3IncyBvcHRpb25zIG11c3QgYmUgYW4gRWRpdG9yT3B0aW9ucyBvYmplY3RcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVMYW5ndWFnZShvcHRpb25zLmxhbmd1YWdlIGFzIExhbmd1YWdlcyk7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlVGhlbWUob3B0aW9ucy50aGVtZSBhcyBUaGVtZXMpO1xuICAgICAgICAgICAgdGhpcy5zZXRMaW50ZXIob3B0aW9ucy5sYW5ndWFnZSBhcyBMYW5ndWFnZXMpO1xuXG4gICAgICAgICAgICB0aGlzLnNldENvcmVFZGl0b3JPcHRpb25zKG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNoYW5nZUNvZGUoY29kZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNhZmVDb2RlID0gdGhpcy5nZXRTYWZlQ29kZShjb2RlKTtcbiAgICAgICAgaWYgKHNhZmVDb2RlICE9PSB0aGlzLl9sYXN0Q29kZUVtaXR0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Q29kZShzYWZlQ29kZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0UGF5bG9hZChwYXlsb2FkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2FmZUNvZGUgPSB0aGlzLmdldFNhZmVDb2RlKHBheWxvYWQpO1xuICAgICAgICAvLyBGb3LDp2EgYSBhdHVhbGl6YcOnw6NvIHNlbSB2ZXJpZmljYXIgX2xhc3RDb2RlRW1pdHRlZCxcbiAgICAgICAgLy8gbWFzIHByZXNlcnZhIG8gY3Vyc29yIHZlcmlmaWNhbmRvIG5vIG7DrXZlbCBkbyBlZGl0b3JcbiAgICAgICAgdGhpcy5zZXRDb2RlV2l0aEN1cnNvclByZXNlcnZhdGlvbihzYWZlQ29kZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHNldENvZGVXaXRoQ3Vyc29yUHJlc2VydmF0aW9uKGNvZGU6IHN0cmluZyk6IHZvaWQ7XG5cbiAgICBwdWJsaWMgYWJzdHJhY3QgaW5pdENvcmUoKTogdm9pZDtcbiAgICBwdWJsaWMgYWJzdHJhY3QgZGVzdHJveUNvcmUoKTogdm9pZDtcblxuICAgIHB1YmxpYyBhYnN0cmFjdCBzZXRDb3JlV3JhcHBlckVsZW1lbnQoZWxlbWVudDogSFRNTERpdkVsZW1lbnQpOiB2b2lkO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBzZXRDb2RlKGNvZGU6IHN0cmluZyk6IHZvaWQ7XG5cbiAgICBwdWJsaWMgZ2V0T25Db3JlRmluaXNoTG9hZE9ic2VydmFibGUoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLiRvbkNvcmVGaW5pc2hMb2FkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRPbkNvZGVDaGFuZ2VPYnNlcnZhYmxlKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLiRvbkNvZGVDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE9uQ29kZVZhbGlkaXR5Q2hhbmdlT2JzZXJ2YWJsZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJG9uQ29kZVZhbGlkaXR5Q2hhbmdlLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBzZXRDb3JlRWRpdG9yT3B0aW9ucyhvcHRpb25zOiBFZGl0b3JPcHRpb25zKTogdm9pZDtcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgaGlnaGxpZ2h0Q29kZShtYXJrZXJzOiBNYXJrZXJbXSk6IHZvaWQ7XG5cbiAgICBwcm90ZWN0ZWQgbm90aWZ5Q29yZUZpbmlzaExvYWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuJG9uQ29yZUZpbmlzaExvYWQubmV4dCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBub3RpZnlDb2RlQ2hhbmdlKGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBzYWZlQ29kZSA9IHRoaXMuZ2V0U2FmZUNvZGUoY29kZSk7XG4gICAgICAgIGlmIChzYWZlQ29kZSAhPT0gdGhpcy5fbGFzdENvZGVFbWl0dGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9sYXN0Q29kZUVtaXR0ZWQgPSBzYWZlQ29kZTtcbiAgICAgICAgICAgIHRoaXMuJG9uQ29kZUNoYW5nZS5uZXh0KHNhZmVDb2RlKTtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVDb2RlKHNhZmVDb2RlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCB1cGRhdGVDb21wbGV0aW9uSXRlbXMoaXRlbXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbXBsZXRpb25JdGVtcyA9IGl0ZW1zIHx8IFtdO1xuICAgICAgICB0aGlzLnZhbGlkYXRlQ29kZSh0aGlzLl9sYXN0Q29kZUVtaXR0ZWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TGludGVyKGxhbmd1YWdlOiBMYW5ndWFnZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGludGVyID0gQ29yZUxpbnRlcnMuZ2V0TGludGVyKGxhbmd1YWdlKSBhcyBMaW50ZXJGYWNhZGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyB2YWxpZGF0ZUNvZGUoY29kZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLl9saW50ZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hcmtlcnM6IE1hcmtlcltdID0gYXdhaXQgdGhpcy5fbGludGVyLmxpbnQoY29kZSwgdGhpcy5fY29tcGxldGlvbkl0ZW1zKTtcbiAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0Q29kZShtYXJrZXJzKTtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5Q29kZVZhbGlkaXR5Q2hhbmdlKCFtYXJrZXJzLmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG5vdGlmeUNvZGVWYWxpZGl0eUNoYW5nZSh2YWxpZGl0eTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodmFsaWRpdHkgIT09IHRoaXMuX2xhc3RDb2RlVmFsaWRpdHlFbWl0dGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9sYXN0Q29kZVZhbGlkaXR5RW1pdHRlZCA9IHZhbGlkaXR5O1xuICAgICAgICAgICAgdGhpcy4kb25Db2RlVmFsaWRpdHlDaGFuZ2UubmV4dCh2YWxpZGl0eSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlTGFuZ3VhZ2UobGFuZ3VhZ2U6IExhbmd1YWdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCBsYW5ndWFnZXMgPSBPYmplY3QudmFsdWVzKExhbmd1YWdlcyk7XG4gICAgICAgIGlmIChsYW5ndWFnZSAmJiAhbGFuZ3VhZ2VzLmluY2x1ZGVzKGxhbmd1YWdlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgaW5mb3JtZWQgbGFuZ3VhZ2UgXCIke2xhbmd1YWdlfVwiIGlzIG5vdCBzdXBwb3J0ZWRgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVUaGVtZSh0aGVtZTogVGhlbWVzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRoZW1lcyA9IE9iamVjdC52YWx1ZXMoVGhlbWVzKTtcbiAgICAgICAgaWYgKHRoZW1lICYmICF0aGVtZXMuaW5jbHVkZXModGhlbWUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBpbmZvcm1lZCB0aGVtZSBcIiR7dGhlbWV9XCIgaXMgbm90IHN1cHBvcnRlZGApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTYWZlQ29kZShjb2RlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdHlwZW9mIGNvZGUgPT09ICdzdHJpbmcnID8gY29kZSA6ICcnO1xuICAgIH1cbn1cbiJdfQ==
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1mYWNhZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvY29kZS1lZGl0b3Ivc3JjL2xpYi9jb2RlLWVkaXRvci9jb3JlL2ZhY2FkZXMvY29yZS1mYWNhZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUQsT0FBTyxFQUFpQixTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWhFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd4RCxNQUFNLE9BQWdCLFVBQVU7SUFDcEIsaUJBQWlCLEdBQXdCLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELGFBQWEsR0FBb0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUMvQyxxQkFBcUIsR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNqRSxnQkFBZ0IsR0FBYSxFQUFFLENBQUM7SUFDaEMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLHdCQUF3QixDQUFXO0lBQ25DLE9BQU8sQ0FBZ0I7SUFFeEIsbUJBQW1CLENBQUMsT0FBc0I7UUFDN0MsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNWLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztZQUN4RSxDQUFDO1lBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxRQUFxQixDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBZSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBcUIsQ0FBQyxDQUFDO1lBRTlDLElBQUksQ0FBQyxv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eEMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzQyxJQUFJLFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM1QyxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixRQUFRLG9CQUFvQixDQUFDLENBQUM7UUFDNUUsQ0FBQztJQUNMLENBQUM7SUFFTyxhQUFhLENBQUMsS0FBYTtRQUMvQixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLElBQUksS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLEtBQUssb0JBQW9CLENBQUMsQ0FBQztRQUN0RSxDQUFDO0lBQ0wsQ0FBQztJQUVPLFdBQVcsQ0FBQyxJQUFZO1FBQzVCLE9BQU8sT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEVkaXRvck9wdGlvbnMsIExhbmd1YWdlcywgVGhlbWVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IE1hcmtlciB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBDb3JlTGludGVycyB9IGZyb20gJy4uL3VzZS1jYXNlcy9jb3JlLWxpbnRlcnMnO1xuaW1wb3J0IHsgTGludGVyRmFjYWRlIH0gZnJvbSAnLi9saW50ZXItZmFjYWRlJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvcmVGYWNhZGUge1xuICAgIHByaXZhdGUgJG9uQ29yZUZpbmlzaExvYWQ6IFJlcGxheVN1YmplY3Q8dm9pZD4gPSBuZXcgUmVwbGF5U3ViamVjdCgxKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5ICRvbkNvZGVDaGFuZ2U6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSAkb25Db2RlVmFsaWRpdHlDaGFuZ2U6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xuICAgIHByaXZhdGUgX2NvbXBsZXRpb25JdGVtczogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIF9sYXN0Q29kZUVtaXR0ZWQgPSAnJztcbiAgICBwcml2YXRlIF9sYXN0Q29kZVZhbGlkaXR5RW1pdHRlZCE6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfbGludGVyITogTGludGVyRmFjYWRlO1xuXG4gICAgcHVibGljIGNoYW5nZUVkaXRvck9wdGlvbnMob3B0aW9uczogRWRpdG9yT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVkaXRvcidzIG9wdGlvbnMgbXVzdCBiZSBhbiBFZGl0b3JPcHRpb25zIG9iamVjdFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUxhbmd1YWdlKG9wdGlvbnMubGFuZ3VhZ2UgYXMgTGFuZ3VhZ2VzKTtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVUaGVtZShvcHRpb25zLnRoZW1lIGFzIFRoZW1lcyk7XG4gICAgICAgICAgICB0aGlzLnNldExpbnRlcihvcHRpb25zLmxhbmd1YWdlIGFzIExhbmd1YWdlcyk7XG5cbiAgICAgICAgICAgIHRoaXMuc2V0Q29yZUVkaXRvck9wdGlvbnMob3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2hhbmdlQ29kZShjb2RlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2FmZUNvZGUgPSB0aGlzLmdldFNhZmVDb2RlKGNvZGUpO1xuICAgICAgICBpZiAoc2FmZUNvZGUgIT09IHRoaXMuX2xhc3RDb2RlRW1pdHRlZCkge1xuICAgICAgICAgICAgdGhpcy5zZXRDb2RlKHNhZmVDb2RlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRQYXlsb2FkKHBheWxvYWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBzYWZlQ29kZSA9IHRoaXMuZ2V0U2FmZUNvZGUocGF5bG9hZCk7XG4gICAgICAgIC8vIEZvcsOnYSBhIGF0dWFsaXphw6fDo28gc2VtIHZlcmlmaWNhciBfbGFzdENvZGVFbWl0dGVkLFxuICAgICAgICAvLyBtYXMgcHJlc2VydmEgbyBjdXJzb3IgdmVyaWZpY2FuZG8gbm8gbsOtdmVsIGRvIGVkaXRvclxuICAgICAgICB0aGlzLnNldENvZGVXaXRoQ3Vyc29yUHJlc2VydmF0aW9uKHNhZmVDb2RlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0Q29kZVdpdGhDdXJzb3JQcmVzZXJ2YXRpb24oY29kZTogc3RyaW5nKTogdm9pZDtcblxuICAgIHB1YmxpYyBhYnN0cmFjdCBpbml0Q29yZSgpOiB2b2lkO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBkZXN0cm95Q29yZSgpOiB2b2lkO1xuXG4gICAgcHVibGljIGFic3RyYWN0IHNldENvcmVXcmFwcGVyRWxlbWVudChlbGVtZW50OiBIVE1MRGl2RWxlbWVudCk6IHZvaWQ7XG4gICAgcHVibGljIGFic3RyYWN0IHNldENvZGUoY29kZTogc3RyaW5nKTogdm9pZDtcblxuICAgIHB1YmxpYyBnZXRPbkNvcmVGaW5pc2hMb2FkT2JzZXJ2YWJsZSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJG9uQ29yZUZpbmlzaExvYWQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE9uQ29kZUNoYW5nZU9ic2VydmFibGUoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJG9uQ29kZUNoYW5nZS5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0T25Db2RlVmFsaWRpdHlDaGFuZ2VPYnNlcnZhYmxlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy4kb25Db2RlVmFsaWRpdHlDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHNldENvcmVFZGl0b3JPcHRpb25zKG9wdGlvbnM6IEVkaXRvck9wdGlvbnMpOiB2b2lkO1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBoaWdobGlnaHRDb2RlKG1hcmtlcnM6IE1hcmtlcltdKTogdm9pZDtcblxuICAgIHByb3RlY3RlZCBub3RpZnlDb3JlRmluaXNoTG9hZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy4kb25Db3JlRmluaXNoTG9hZC5uZXh0KCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc2V0Q29yZUZpbmlzaExvYWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuJG9uQ29yZUZpbmlzaExvYWQgPSBuZXcgUmVwbGF5U3ViamVjdCgxKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzZXRMYXN0Q29kZUVtaXR0ZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xhc3RDb2RlRW1pdHRlZCA9ICcnO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBub3RpZnlDb2RlQ2hhbmdlKGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBzYWZlQ29kZSA9IHRoaXMuZ2V0U2FmZUNvZGUoY29kZSk7XG4gICAgICAgIGlmIChzYWZlQ29kZSAhPT0gdGhpcy5fbGFzdENvZGVFbWl0dGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9sYXN0Q29kZUVtaXR0ZWQgPSBzYWZlQ29kZTtcbiAgICAgICAgICAgIHRoaXMuJG9uQ29kZUNoYW5nZS5uZXh0KHNhZmVDb2RlKTtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVDb2RlKHNhZmVDb2RlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCB1cGRhdGVDb21wbGV0aW9uSXRlbXMoaXRlbXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbXBsZXRpb25JdGVtcyA9IGl0ZW1zIHx8IFtdO1xuICAgICAgICB0aGlzLnZhbGlkYXRlQ29kZSh0aGlzLl9sYXN0Q29kZUVtaXR0ZWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TGludGVyKGxhbmd1YWdlOiBMYW5ndWFnZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGludGVyID0gQ29yZUxpbnRlcnMuZ2V0TGludGVyKGxhbmd1YWdlKSBhcyBMaW50ZXJGYWNhZGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyB2YWxpZGF0ZUNvZGUoY29kZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLl9saW50ZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hcmtlcnM6IE1hcmtlcltdID0gYXdhaXQgdGhpcy5fbGludGVyLmxpbnQoY29kZSwgdGhpcy5fY29tcGxldGlvbkl0ZW1zKTtcbiAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0Q29kZShtYXJrZXJzKTtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5Q29kZVZhbGlkaXR5Q2hhbmdlKCFtYXJrZXJzLmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG5vdGlmeUNvZGVWYWxpZGl0eUNoYW5nZSh2YWxpZGl0eTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodmFsaWRpdHkgIT09IHRoaXMuX2xhc3RDb2RlVmFsaWRpdHlFbWl0dGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9sYXN0Q29kZVZhbGlkaXR5RW1pdHRlZCA9IHZhbGlkaXR5O1xuICAgICAgICAgICAgdGhpcy4kb25Db2RlVmFsaWRpdHlDaGFuZ2UubmV4dCh2YWxpZGl0eSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlTGFuZ3VhZ2UobGFuZ3VhZ2U6IExhbmd1YWdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCBsYW5ndWFnZXMgPSBPYmplY3QudmFsdWVzKExhbmd1YWdlcyk7XG4gICAgICAgIGlmIChsYW5ndWFnZSAmJiAhbGFuZ3VhZ2VzLmluY2x1ZGVzKGxhbmd1YWdlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgaW5mb3JtZWQgbGFuZ3VhZ2UgXCIke2xhbmd1YWdlfVwiIGlzIG5vdCBzdXBwb3J0ZWRgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVUaGVtZSh0aGVtZTogVGhlbWVzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRoZW1lcyA9IE9iamVjdC52YWx1ZXMoVGhlbWVzKTtcbiAgICAgICAgaWYgKHRoZW1lICYmICF0aGVtZXMuaW5jbHVkZXModGhlbWUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBpbmZvcm1lZCB0aGVtZSBcIiR7dGhlbWV9XCIgaXMgbm90IHN1cHBvcnRlZGApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTYWZlQ29kZShjb2RlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdHlwZW9mIGNvZGUgPT09ICdzdHJpbmcnID8gY29kZSA6ICcnO1xuICAgIH1cbn1cbiJdfQ==
|