valtech-components 4.0.27 → 4.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/organisms/account-view/account-view.component.mjs +34 -30
- package/esm2022/lib/components/organisms/change-password-modal/change-password-modal.component.mjs +3 -3
- package/esm2022/lib/components/organisms/create-org-modal/create-org-modal.component.mjs +91 -65
- package/esm2022/lib/components/organisms/delete-account-modal/delete-account-modal.component.mjs +106 -84
- package/esm2022/lib/components/organisms/login/login.component.mjs +11 -4
- package/esm2022/lib/components/organisms/login/types.mjs +23 -1
- package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +16 -3
- package/esm2022/lib/components/organisms/permissions-view/permissions-modal.component.mjs +70 -0
- package/esm2022/lib/components/organisms/permissions-view/permissions-view.component.mjs +16 -5
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/valtech-components.mjs +1125 -956
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/account-view/account-view.component.d.ts +3 -0
- package/lib/components/organisms/create-org-modal/create-org-modal.component.d.ts +8 -8
- package/lib/components/organisms/delete-account-modal/delete-account-modal.component.d.ts +7 -8
- package/lib/components/organisms/login/login.component.d.ts +6 -0
- package/lib/components/organisms/login/types.d.ts +12 -0
- package/lib/components/organisms/organization-view/organization-view.component.d.ts +1 -0
- package/lib/components/organisms/permissions-view/permissions-modal.component.d.ts +13 -0
- package/lib/components/organisms/permissions-view/permissions-view.component.d.ts +9 -2
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/src/lib/services/firebase/firebase-messaging-sw.js +145 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Component, effect, inject, Input, signal } from '@angular/core';
|
|
1
|
+
import { Component, effect, EventEmitter, inject, Input, Output, signal } from '@angular/core';
|
|
2
2
|
import { Validators } from '@angular/forms';
|
|
3
3
|
import { firstValueFrom } from 'rxjs';
|
|
4
|
-
import { IonButton, IonButtons, IonContent, IonHeader, IonToolbar } from '@ionic/angular/standalone';
|
|
4
|
+
import { IonButton, IonButtons, IonContent, IonHeader, IonModal, IonToolbar } from '@ionic/angular/standalone';
|
|
5
5
|
import { FormComponent } from '../form/form.component';
|
|
6
6
|
import { DisplayComponent } from '../../atoms/display/display.component';
|
|
7
7
|
import { TitleComponent } from '../../atoms/title/title.component';
|
|
@@ -32,6 +32,16 @@ const DEFAULT_NAMESPACE = 'CreateOrgModal';
|
|
|
32
32
|
* `CreateOrgModal`.
|
|
33
33
|
*/
|
|
34
34
|
export class CreateOrgModalComponent {
|
|
35
|
+
set isOpen(value) {
|
|
36
|
+
const opening = value && !this._isOpen;
|
|
37
|
+
this._isOpen = value;
|
|
38
|
+
if (opening) {
|
|
39
|
+
this._busy.set(false);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
get isOpen() {
|
|
43
|
+
return this._isOpen;
|
|
44
|
+
}
|
|
35
45
|
constructor() {
|
|
36
46
|
this.i18n = inject(I18nService);
|
|
37
47
|
this.orgService = inject(OrgService);
|
|
@@ -40,6 +50,9 @@ export class CreateOrgModalComponent {
|
|
|
40
50
|
this.errors = inject(ValtechErrorService);
|
|
41
51
|
/** Namespace i18n con que la vista resuelve sus textos. */
|
|
42
52
|
this.i18nNamespace = DEFAULT_NAMESPACE;
|
|
53
|
+
this._isOpen = false;
|
|
54
|
+
this.dismissed = new EventEmitter();
|
|
55
|
+
this.created = new EventEmitter();
|
|
43
56
|
this._busy = signal(false);
|
|
44
57
|
if (!this.i18n.hasNamespace(DEFAULT_NAMESPACE)) {
|
|
45
58
|
this.i18n.registerContent(DEFAULT_NAMESPACE, CREATE_ORG_MODAL_I18N);
|
|
@@ -85,8 +98,8 @@ export class CreateOrgModalComponent {
|
|
|
85
98
|
duration: 3500,
|
|
86
99
|
});
|
|
87
100
|
await this.orgSwitch.switchTo(newOrg.id);
|
|
88
|
-
this.
|
|
89
|
-
this.
|
|
101
|
+
this.created.emit(newOrg);
|
|
102
|
+
this.dismissed.emit();
|
|
90
103
|
}
|
|
91
104
|
catch (err) {
|
|
92
105
|
this.errors.handle(err, { i18nNamespace: this.i18nNamespace });
|
|
@@ -96,7 +109,10 @@ export class CreateOrgModalComponent {
|
|
|
96
109
|
}
|
|
97
110
|
}
|
|
98
111
|
dismiss() {
|
|
99
|
-
this.
|
|
112
|
+
this.dismissed.emit();
|
|
113
|
+
}
|
|
114
|
+
close() {
|
|
115
|
+
this.dismissed.emit();
|
|
100
116
|
}
|
|
101
117
|
buildFormMeta() {
|
|
102
118
|
const nameField = {
|
|
@@ -176,70 +192,80 @@ export class CreateOrgModalComponent {
|
|
|
176
192
|
return this.i18n.t(key, this.i18nNamespace);
|
|
177
193
|
}
|
|
178
194
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CreateOrgModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
179
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CreateOrgModalComponent, isStandalone: true, selector: "val-create-org-modal", inputs: {
|
|
180
|
-
<ion-
|
|
181
|
-
<
|
|
182
|
-
<ion-
|
|
183
|
-
<ion-
|
|
184
|
-
<
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
195
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CreateOrgModalComponent, isStandalone: true, selector: "val-create-org-modal", inputs: { i18nNamespace: "i18nNamespace", isOpen: "isOpen" }, outputs: { dismissed: "dismissed", created: "created" }, ngImport: i0, template: `
|
|
196
|
+
<ion-modal [isOpen]="isOpen" (didDismiss)="close()" cssClass="val-modal-adaptive">
|
|
197
|
+
<ng-template>
|
|
198
|
+
<ion-header>
|
|
199
|
+
<ion-toolbar>
|
|
200
|
+
<ion-buttons slot="end">
|
|
201
|
+
<ion-button fill="clear" color="dark" shape="round" (click)="dismiss()">
|
|
202
|
+
<strong>{{ t('close') }}</strong>
|
|
203
|
+
</ion-button>
|
|
204
|
+
</ion-buttons>
|
|
205
|
+
</ion-toolbar>
|
|
206
|
+
</ion-header>
|
|
207
|
+
<ion-content class="ion-padding">
|
|
208
|
+
<val-display [props]="{ content: t('pageTitle'), size: 'small', color: 'dark' }" />
|
|
209
|
+
<val-title
|
|
210
|
+
[props]="{
|
|
211
|
+
content: t('pageDescription'),
|
|
212
|
+
size: 'large',
|
|
213
|
+
color: '',
|
|
214
|
+
bold: false,
|
|
215
|
+
}"
|
|
216
|
+
/>
|
|
217
|
+
<val-form [props]="formMeta()" (onSubmit)="onSubmit($event)" />
|
|
218
|
+
<div class="modal-close-bottom">
|
|
219
|
+
<ion-button expand="block" fill="outline" color="dark" shape="round" (click)="dismiss()">
|
|
220
|
+
{{ t('close') }}
|
|
221
|
+
</ion-button>
|
|
222
|
+
</div>
|
|
223
|
+
</ion-content>
|
|
224
|
+
</ng-template>
|
|
225
|
+
</ion-modal>
|
|
226
|
+
`, isInline: true, styles: [".modal-close-bottom{margin-top:16px}\n"], dependencies: [{ kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }] }); }
|
|
207
227
|
}
|
|
208
228
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CreateOrgModalComponent, decorators: [{
|
|
209
229
|
type: Component,
|
|
210
|
-
args: [{ selector: 'val-create-org-modal', standalone: true, imports: [IonHeader, IonToolbar, IonButtons, IonButton, IonContent, FormComponent, DisplayComponent, TitleComponent], template: `
|
|
211
|
-
<ion-
|
|
212
|
-
<
|
|
213
|
-
<ion-
|
|
214
|
-
<ion-
|
|
215
|
-
<
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
230
|
+
args: [{ selector: 'val-create-org-modal', standalone: true, imports: [IonModal, IonHeader, IonToolbar, IonButtons, IonButton, IonContent, FormComponent, DisplayComponent, TitleComponent], template: `
|
|
231
|
+
<ion-modal [isOpen]="isOpen" (didDismiss)="close()" cssClass="val-modal-adaptive">
|
|
232
|
+
<ng-template>
|
|
233
|
+
<ion-header>
|
|
234
|
+
<ion-toolbar>
|
|
235
|
+
<ion-buttons slot="end">
|
|
236
|
+
<ion-button fill="clear" color="dark" shape="round" (click)="dismiss()">
|
|
237
|
+
<strong>{{ t('close') }}</strong>
|
|
238
|
+
</ion-button>
|
|
239
|
+
</ion-buttons>
|
|
240
|
+
</ion-toolbar>
|
|
241
|
+
</ion-header>
|
|
242
|
+
<ion-content class="ion-padding">
|
|
243
|
+
<val-display [props]="{ content: t('pageTitle'), size: 'small', color: 'dark' }" />
|
|
244
|
+
<val-title
|
|
245
|
+
[props]="{
|
|
246
|
+
content: t('pageDescription'),
|
|
247
|
+
size: 'large',
|
|
248
|
+
color: '',
|
|
249
|
+
bold: false,
|
|
250
|
+
}"
|
|
251
|
+
/>
|
|
252
|
+
<val-form [props]="formMeta()" (onSubmit)="onSubmit($event)" />
|
|
253
|
+
<div class="modal-close-bottom">
|
|
254
|
+
<ion-button expand="block" fill="outline" color="dark" shape="round" (click)="dismiss()">
|
|
255
|
+
{{ t('close') }}
|
|
256
|
+
</ion-button>
|
|
257
|
+
</div>
|
|
258
|
+
</ion-content>
|
|
259
|
+
</ng-template>
|
|
260
|
+
</ion-modal>
|
|
237
261
|
`, styles: [".modal-close-bottom{margin-top:16px}\n"] }]
|
|
238
|
-
}], ctorParameters: () => [], propDecorators: {
|
|
239
|
-
type: Input
|
|
240
|
-
}], onSuccess: [{
|
|
262
|
+
}], ctorParameters: () => [], propDecorators: { i18nNamespace: [{
|
|
241
263
|
type: Input
|
|
242
|
-
}],
|
|
264
|
+
}], isOpen: [{
|
|
243
265
|
type: Input
|
|
266
|
+
}], dismissed: [{
|
|
267
|
+
type: Output
|
|
268
|
+
}], created: [{
|
|
269
|
+
type: Output
|
|
244
270
|
}] } });
|
|
245
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW9yZy1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2NyZWF0ZS1vcmctbW9kYWwvY3JlYXRlLW9yZy1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFckcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUEyQyxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUUvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFckYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FB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Q1IsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQztpQkFDakQ7YUFDRjtZQUNELE9BQU8sRUFBRSxZQUFZO1NBQ3RCLENBQUM7SUFDSixDQUFDO0lBRUQsQ0FBQyxDQUFDLEdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDOUMsQ0FBQzsrR0F0S1UsdUJBQXVCO21HQUF2Qix1QkFBdUIsNEtBcEN4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJULGdIQTVCUyxTQUFTLG9HQUFFLFVBQVUsbUZBQUUsVUFBVSw4RUFBRSxTQUFTLG9QQUFFLFVBQVUsd0tBQUUsYUFBYSw4SEFBRSxnQkFBZ0IsMkVBQUUsY0FBYzs7NEZBcUN4Ryx1QkFBdUI7a0JBeENuQyxTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsWUFDMUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCVDt3REFpQlEsU0FBUztzQkFBakIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGVmZmVjdCwgaW5qZWN0LCBJbnB1dCwgc2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkJ1dHRvbnMsIElvbkNvbnRlbnQsIElvbkhlYWRlciwgSW9uVG9vbGJhciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuXG5pbXBvcnQgeyBGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS9mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZXMsIEZvcm1NZXRhZGF0YSwgRm9ybVN1Ym1pdCwgSW5wdXRNZXRhZGF0YSwgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgT3JnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy9vcmcuc2VydmljZSc7XG5pbXBvcnQgeyBPcmdhbml6YXRpb24sIE9yZ1R5cGUgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmcvdHlwZXMnO1xuaW1wb3J0IHsgT3JnU3dpdGNoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgvb3JnLXN3aXRjaC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsdGVjaEVycm9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Vycm9ycy92YWx0ZWNoLWVycm9yLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBDUkVBVEVfT1JHX01PREFMX0kxOE4gfSBmcm9tICcuL2NyZWF0ZS1vcmctbW9kYWwuaTE4bic7XG5cbmNvbnN0IERFRkFVTFRfTkFNRVNQQUNFID0gJ0NyZWF0ZU9yZ01vZGFsJztcblxuLyoqXG4gKiBgdmFsLWNyZWF0ZS1vcmctbW9kYWxgIOKAlCBtb2RhbCBkZSBjcmVhY2nDs24gZGUgb3JnYW5pemFjacOzbiAob3JnYW5pc21cbiAqIGNvbXBhcnRpZG8pLiBQcm9tb3ZpZG8gZGVzZGUgYHNob3djYXNlYCBiYWpvIGVsIHByb2Nlc28gZGUgQURSLTAyMS4gUmV1c2FkbyBwb3JcbiAqIGxhIHZpc3RhIEN1ZW50YSAoeSBmdXR1cmFzIHZpc3RhcyBvcmctYXdhcmUpLlxuICpcbiAqIENyZWEgbGEgb3JnIHbDrWEgYE9yZ1NlcnZpY2UuY3JlYXRlT3JnYCB5LCBlbiDDqXhpdG8sIGNhbWJpYSBhIGVsbGEgY29uXG4gKiBgT3JnU3dpdGNoU2VydmljZS5zd2l0Y2hUb2AuIEVsIGZvcm11bGFyaW8gKG5vbWJyZSArIHRpcG8gKyBkZXNjcmlwY2nDs24pIHNlXG4gKiBjb25zdHJ1eWUgdW5hIHZleiB5IHNlIG1hbnRpZW5lIHJlYWN0aXZvIGEgaWRpb21hICsgZXN0YWRvIGRlIHRyYWJham8gdsOtYVxuICogZWZmZWN0cyBgYWxsb3dTaWduYWxXcml0ZXNgLlxuICpcbiAqIEFiaWVydG8gdsOtYSBgTW9kYWxTZXJ2aWNlYCDigJQgcmVjaWJlIGBfbW9kYWxSZWZgIHBvciBgY29tcG9uZW50UHJvcHNgICsgY2FsbGJhY2tcbiAqIGBvblN1Y2Nlc3MobmV3T3JnKWAuIEhlYWRlciBjYW7Ds25pY28gKFJlZ2xhICM1KTogc2luIGBpb24tdGl0bGVgLCBib3TDs24gQ2VycmFyXG4gKiB0ZXh0byBlbiBgc2xvdD1lbmRgLCB0w610dWxvL3N1YnTDrXR1bG8gZW4gZWwgYm9keSBjb24gYHZhbC1kaXNwbGF5YC9gdmFsLXRpdGxlYC5cbiAqXG4gKiBBdXRvLXJlZ2lzdHJhIHN1cyBkZWZhdWx0cyBpMThuIChlcy9lbikgc2kgZWwgY29uc3VtZXIgbm8gcHJvdmV5w7MgZWwgbmFtZXNwYWNlXG4gKiBgQ3JlYXRlT3JnTW9kYWxgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY3JlYXRlLW9yZy1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtJb25IZWFkZXIsIElvblRvb2xiYXIsIElvbkJ1dHRvbnMsIElvbkJ1dHRvbiwgSW9uQ29udGVudCwgRm9ybUNvbXBvbmVudCwgRGlzcGxheUNvbXBvbmVudCwgVGl0bGVDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24taGVhZGVyPlxuICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIHNoYXBlPVwicm91bmRcIiAoY2xpY2spPVwiZGlzbWlzcygpXCI+XG4gICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2Nsb3NlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICA8L2lvbi10b29sYmFyPlxuICAgIDwvaW9uLWhlYWRlcj5cbiAgICA8aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IGNvbnRlbnQ6IHQoJ3BhZ2VUaXRsZScpLCBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnIH1cIiAvPlxuICAgICAgPHZhbC10aXRsZVxuICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgIGNvbnRlbnQ6IHQoJ3BhZ2VEZXNjcmlwdGlvbicpLFxuICAgICAgICAgIHNpemU6ICdsYXJnZScsXG4gICAgICAgICAgY29sb3I6ICcnLFxuICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICB9XCJcbiAgICAgIC8+XG4gICAgICA8dmFsLWZvcm0gW3Byb3BzXT1cImZvcm1NZXRhKClcIiAob25TdWJtaXQpPVwib25TdWJtaXQoJGV2ZW50KVwiIC8+XG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY2xvc2UtYm90dG9tXCI+XG4gICAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgZmlsbD1cIm91dGxpbmVcIiBjb2xvcj1cImRhcmtcIiBzaGFwZT1cInJvdW5kXCIgKGNsaWNrKT1cImRpc21pc3MoKVwiPlxuICAgICAgICAgIHt7IHQoJ2Nsb3NlJykgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9pb24tY29udGVudD5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLm1vZGFsLWNsb3NlLWJvdHRvbSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ3JlYXRlT3JnTW9kYWxDb21wb25lbnQge1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIG9yZ1NlcnZpY2UgPSBpbmplY3QoT3JnU2VydmljZSk7XG4gIHByaXZhdGUgb3JnU3dpdGNoID0gaW5qZWN0KE9yZ1N3aXRjaFNlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgZXJyb3JzID0gaW5qZWN0KFZhbHRlY2hFcnJvclNlcnZpY2UpO1xuXG4gIC8qKiBJbnllY3RhZG8gcG9yIGBNb2RhbFNlcnZpY2Uub3BlbmAg4oCUIHJlZmVyZW5jaWEgcGFyYSBjZXJyYXIgZGVzZGUgZGVudHJvLiAqL1xuICBASW5wdXQoKSBfbW9kYWxSZWY/OiB7IGRpc21pc3M6IChkYXRhPzogdW5rbm93biwgcm9sZT86IHN0cmluZykgPT4gdm9pZCB9O1xuXG4gIC8qKiBDYWxsYmFjayB0cmFzIGNyZWFyIGxhIG9yZyAocGFzYWRvIHBvciBgY29tcG9uZW50UHJvcHNgKS4gKi9cbiAgQElucHV0KCkgb25TdWNjZXNzPzogKG5ld09yZzogT3JnYW5pemF0aW9uKSA9PiB2b2lkO1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4biBjb24gcXVlIGxhIHZpc3RhIHJlc3VlbHZlIHN1cyB0ZXh0b3MuICovXG4gIEBJbnB1dCgpIGkxOG5OYW1lc3BhY2UgPSBERUZBVUxUX05BTUVTUEFDRTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9idXN5ID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgZm9ybU1ldGE6IFdyaXRhYmxlU2lnbmFsPEZvcm1NZXRhZGF0YT47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmkxOG4uaGFzTmFtZXNwYWNlKERFRkFVTFRfTkFNRVNQQUNFKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyQ29udGVudChERUZBVUxUX05BTUVTUEFDRSwgQ1JFQVRFX09SR19NT0RBTF9JMThOKTtcbiAgICB9XG4gICAgdGhpcy5mb3JtTWV0YSA9IHNpZ25hbCh0aGlzLmJ1aWxkRm9ybU1ldGEoKSk7XG5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgICAgIHRoaXMuZm9ybU1ldGEuc2V0KHRoaXMuYnVpbGRGb3JtTWV0YSgpKTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCB3b3JraW5nID0gdGhpcy5fYnVzeSgpO1xuICAgICAgICB0aGlzLmZvcm1NZXRhLnVwZGF0ZShtZXRhID0+ICh7XG4gICAgICAgICAgLi4ubWV0YSxcbiAgICAgICAgICBzdGF0ZTogd29ya2luZyA/IENvbXBvbmVudFN0YXRlcy5XT1JLSU5HIDogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICAgICAgYWN0aW9uczoge1xuICAgICAgICAgICAgLi4ubWV0YS5hY3Rpb25zLFxuICAgICAgICAgICAgc3RhdGU6IHdvcmtpbmcgPyBDb21wb25lbnRTdGF0ZXMuV09SS0lORyA6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pKTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG5cbiAgYXN5bmMgb25TdWJtaXQoZXZlbnQ6IEZvcm1TdWJtaXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fYnVzeSgpKSByZXR1cm47XG4gICAgY29uc3QgbmFtZSA9IGV2ZW50LmZpZWxkc1snbmFtZSddIGFzIHN0cmluZztcbiAgICBjb25zdCB0eXBlID0gZXZlbnQuZmllbGRzWyd0eXBlJ10gYXMgT3JnVHlwZTtcbiAgICBpZiAoIW5hbWU/LnRyaW0oKSB8fCAhdHlwZSkge1xuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50KCdmaWxsUmVxdWlyZWQnKSxcbiAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9idXN5LnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBldmVudC5maWVsZHNbJ2Rlc2NyaXB0aW9uJ10gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgY29uc3QgbmV3T3JnID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5vcmdTZXJ2aWNlLmNyZWF0ZU9yZyh7IG5hbWUsIHR5cGUsIGRlc2NyaXB0aW9uIH0pKTtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudCgnc3VjY2Vzc01zZycpLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBkdXJhdGlvbjogMzUwMCxcbiAgICAgIH0pO1xuICAgICAgYXdhaXQgdGhpcy5vcmdTd2l0Y2guc3dpdGNoVG8obmV3T3JnLmlkKTtcbiAgICAgIHRoaXMub25TdWNjZXNzPy4obmV3T3JnKTtcbiAgICAgIHRoaXMuX21vZGFsUmVmPy5kaXNtaXNzKG5ld09yZywgJ2NvbmZpcm0nKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHsgaTE4bk5hbWVzcGFjZTogdGhpcy5pMThuTmFtZXNwYWNlIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9idXN5LnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgZGlzbWlzcygpOiB2b2lkIHtcbiAgICB0aGlzLl9tb2RhbFJlZj8uZGlzbWlzcyhudWxsLCAnY2FuY2VsJyk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRm9ybU1ldGEoKTogRm9ybU1ldGFkYXRhIHtcbiAgICBjb25zdCBuYW1lRmllbGQ6IElucHV0TWV0YWRhdGEgPSB7XG4gICAgICB0b2tlbjogJ25ldy1vcmctbmFtZScsXG4gICAgICBuYW1lOiAnbmFtZScsXG4gICAgICBsYWJlbDogdGhpcy50KCduYW1lTGFiZWwnKSxcbiAgICAgIGhpbnQ6ICcnLFxuICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudCgnbmFtZVBsYWNlaG9sZGVyJyksXG4gICAgICB0eXBlOiBJbnB1dFR5cGUuVEVYVCxcbiAgICAgIG9yZGVyOiAxLFxuICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDIpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxMDApXSxcbiAgICAgIGVycm9yczoge1xuICAgICAgICByZXF1aXJlZDogdGhpcy50KCduYW1lUmVxdWlyZWQnKSxcbiAgICAgICAgbWlubGVuZ3RoOiB0aGlzLnQoJ25hbWVNaW4nKSxcbiAgICAgIH0sXG4gICAgICB2YWx1ZTogJycsXG4gICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgfSBhcyBJbnB1dE1ldGFkYXRhO1xuXG4gICAgY29uc3QgdHlwZUZpZWxkOiBJbnB1dE1ldGFkYXRhID0ge1xuICAgICAgdG9rZW46ICduZXctb3JnLXR5cGUnLFxuICAgICAgbmFtZTogJ3R5cGUnLFxuICAgICAgbGFiZWw6IHRoaXMudCgndHlwZUxhYmVsJyksXG4gICAgICBoaW50OiAnJyxcbiAgICAgIHBsYWNlaG9sZGVyOiAnJyxcbiAgICAgIHR5cGU6IElucHV0VHlwZS5TRUxFQ1QsXG4gICAgICBvcmRlcjogMixcbiAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIGVycm9yczoge30sXG4gICAgICB2YWx1ZTogJ1BFUlNPTkFMJyxcbiAgICAgIHdpdGhEZWZhdWx0OiAnUEVSU09OQUwnLFxuICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgICAgb3B0aW9uczogW1xuICAgICAgICB7IGlkOiAnUEVSU09OQUwnLCBuYW1lOiB0aGlzLnQoJ3R5cGVQZXJzb25hbCcpLCBvcmRlcjogMSB9LFxuICAgICAgICB7IGlkOiAnUFJJVkFURScsIG5hbWU6IHRoaXMudCgndHlwZVByaXZhdGUnKSwgb3JkZXI6IDIgfSxcbiAgICAgICAgeyBpZDogJ1BVQkxJQycsIG5hbWU6IHRoaXMudCgndHlwZVB1YmxpYycpLCBvcmRlcjogMyB9LFxuICAgICAgICB7IGlkOiAnQlVTSU5FU1MnLCBuYW1lOiB0aGlzLnQoJ3R5cGVCdXNpbmVzcycpLCBvcmRlcjogNCB9LFxuICAgICAgXSxcbiAgICB9IGFzIElucHV0TWV0YWRhdGE7XG5cbiAgICBjb25zdCBkZXNjcmlwdGlvbkZpZWxkOiBJbnB1dE1ldGFkYXRhID0ge1xuICAgICAgdG9rZW46ICduZXctb3JnLWRlc2NyaXB0aW9uJyxcbiAgICAgIG5hbWU6ICdkZXNjcmlwdGlvbicsXG4gICAgICBsYWJlbDogdGhpcy50KCdkZXNjcmlwdGlvbkxhYmVsJyksXG4gICAgICBoaW50OiAnJyxcbiAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnQoJ2Rlc2NyaXB0aW9uUGxhY2Vob2xkZXInKSxcbiAgICAgIHR5cGU6IElucHV0VHlwZS5URVhUQVJFQSxcbiAgICAgIG9yZGVyOiAzLFxuICAgICAgdmFsaWRhdG9yczogW10sXG4gICAgICBlcnJvcnM6IHt9LFxuICAgICAgdmFsdWU6ICcnLFxuICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgIH0gYXMgSW5wdXRNZXRhZGF0YTtcblxuICAgIGNvbnN0IHN1Ym1pdEJ1dHRvbiA9IHtcbiAgICAgIHRleHQ6IHRoaXMudCgnY3JlYXRlQ3RhJyksXG4gICAgICBjb2xvcjogJ2RhcmsnIGFzIGNvbnN0LFxuICAgICAgdHlwZTogJ3N1Ym1pdCcgYXMgY29uc3QsXG4gICAgICBmaWxsOiAnc29saWQnIGFzIGNvbnN0LFxuICAgICAgc2l6ZTogJ2RlZmF1bHQnIGFzIGNvbnN0LFxuICAgICAgc2hhcGU6ICdyb3VuZCcgYXMgY29uc3QsXG4gICAgICBleHBhbmQ6ICdibG9jaycgYXMgY29uc3QsXG4gICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICB0b2tlbjogJ25ldy1vcmctc3VibWl0JyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgICAgc2VjdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICcnLFxuICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgIGZpZWxkczogW25hbWVGaWVsZCwgdHlwZUZpZWxkLCBkZXNjcmlwdGlvbkZpZWxkXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBhY3Rpb25zOiBzdWJtaXRCdXR0b24sXG4gICAgfTtcbiAgfVxuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksIHRoaXMuaTE4bk5hbWVzcGFjZSk7XG4gIH1cbn1cbiJdfQ==
|
|
271
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW9yZy1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2NyZWF0ZS1vcmctbW9kYWwvY3JlYXRlLW9yZy1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDL0csT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFL0csT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUEyQyxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUUvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFckYsT0FBTyxFQUFFLHFC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QUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLFlBQ3BIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JUO3dEQWlCUSxhQUFhO3NCQUFyQixLQUFLO2dCQUtGLE1BQU07c0JBRFQsS0FBSztnQkFZSSxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGVmZmVjdCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPdXRwdXQsIHNpZ25hbCwgV3JpdGFibGVTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW9uQnV0dG9uLCBJb25CdXR0b25zLCBJb25Db250ZW50LCBJb25IZWFkZXIsIElvbk1vZGFsLCBJb25Ub29sYmFyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5cbmltcG9ydCB7IEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9mb3JtL2Zvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IERpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9kaXNwbGF5L2Rpc3BsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGl0bGUvdGl0bGUuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBvbmVudFN0YXRlcywgRm9ybU1ldGFkYXRhLCBGb3JtU3VibWl0LCBJbnB1dE1ldGFkYXRhLCBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBPcmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvb3JnL29yZy5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZ2FuaXphdGlvbiwgT3JnVHlwZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy90eXBlcyc7XG5pbXBvcnQgeyBPcmdTd2l0Y2hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9vcmctc3dpdGNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBWYWx0ZWNoRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXJyb3JzL3ZhbHRlY2gtZXJyb3Iuc2VydmljZSc7XG5cbmltcG9ydCB7IENSRUFURV9PUkdfTU9EQUxfSTE4TiB9IGZyb20gJy4vY3JlYXRlLW9yZy1tb2RhbC5pMThuJztcblxuY29uc3QgREVGQVVMVF9OQU1FU1BBQ0UgPSAnQ3JlYXRlT3JnTW9kYWwnO1xuXG4vKipcbiAqIGB2YWwtY3JlYXRlLW9yZy1tb2RhbGAg4oCUIG1vZGFsIGRlIGNyZWFjacOzbiBkZSBvcmdhbml6YWNpw7NuIChvcmdhbmlzbVxuICogY29tcGFydGlkbykuIFByb21vdmlkbyBkZXNkZSBgc2hvd2Nhc2VgIGJham8gZWwgcHJvY2VzbyBkZSBBRFItMDIxLiBSZXVzYWRvIHBvclxuICogbGEgdmlzdGEgQ3VlbnRhICh5IGZ1dHVyYXMgdmlzdGFzIG9yZy1hd2FyZSkuXG4gKlxuICogQ3JlYSBsYSBvcmcgdsOtYSBgT3JnU2VydmljZS5jcmVhdGVPcmdgIHksIGVuIMOpeGl0bywgY2FtYmlhIGEgZWxsYSBjb25cbiAqIGBPcmdTd2l0Y2hTZXJ2aWNlLnN3aXRjaFRvYC4gRWwgZm9ybXVsYXJpbyAobm9tYnJlICsgdGlwbyArIGRlc2NyaXBjacOzbikgc2VcbiAqIGNvbnN0cnV5ZSB1bmEgdmV6IHkgc2UgbWFudGllbmUgcmVhY3Rpdm8gYSBpZGlvbWEgKyBlc3RhZG8gZGUgdHJhYmFqbyB2w61hXG4gKiBlZmZlY3RzIGBhbGxvd1NpZ25hbFdyaXRlc2AuXG4gKlxuICogQWJpZXJ0byB2w61hIGBNb2RhbFNlcnZpY2VgIOKAlCByZWNpYmUgYF9tb2RhbFJlZmAgcG9yIGBjb21wb25lbnRQcm9wc2AgKyBjYWxsYmFja1xuICogYG9uU3VjY2VzcyhuZXdPcmcpYC4gSGVhZGVyIGNhbsOzbmljbyAoUmVnbGEgIzUpOiBzaW4gYGlvbi10aXRsZWAsIGJvdMOzbiBDZXJyYXJcbiAqIHRleHRvIGVuIGBzbG90PWVuZGAsIHTDrXR1bG8vc3VidMOtdHVsbyBlbiBlbCBib2R5IGNvbiBgdmFsLWRpc3BsYXlgL2B2YWwtdGl0bGVgLlxuICpcbiAqIEF1dG8tcmVnaXN0cmEgc3VzIGRlZmF1bHRzIGkxOG4gKGVzL2VuKSBzaSBlbCBjb25zdW1lciBubyBwcm92ZXnDsyBlbCBuYW1lc3BhY2VcbiAqIGBDcmVhdGVPcmdNb2RhbGAuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1jcmVhdGUtb3JnLW1vZGFsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvbk1vZGFsLCBJb25IZWFkZXIsIElvblRvb2xiYXIsIElvbkJ1dHRvbnMsIElvbkJ1dHRvbiwgSW9uQ29udGVudCwgRm9ybUNvbXBvbmVudCwgRGlzcGxheUNvbXBvbmVudCwgVGl0bGVDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24tbW9kYWwgW2lzT3Blbl09XCJpc09wZW5cIiAoZGlkRGlzbWlzcyk9XCJjbG9zZSgpXCIgY3NzQ2xhc3M9XCJ2YWwtbW9kYWwtYWRhcHRpdmVcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgPGlvbi1oZWFkZXI+XG4gICAgICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICAgICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICAgICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgc2hhcGU9XCJyb3VuZFwiIChjbGljayk9XCJkaXNtaXNzKClcIj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2Nsb3NlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgICAgICA8L2lvbi10b29sYmFyPlxuICAgICAgICA8L2lvbi1oZWFkZXI+XG4gICAgICAgIDxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IGNvbnRlbnQ6IHQoJ3BhZ2VUaXRsZScpLCBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnIH1cIiAvPlxuICAgICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHQoJ3BhZ2VEZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgICAgICBjb2xvcjogJycsXG4gICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8dmFsLWZvcm0gW3Byb3BzXT1cImZvcm1NZXRhKClcIiAob25TdWJtaXQpPVwib25TdWJtaXQoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNsb3NlLWJvdHRvbVwiPlxuICAgICAgICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBmaWxsPVwib3V0bGluZVwiIGNvbG9yPVwiZGFya1wiIHNoYXBlPVwicm91bmRcIiAoY2xpY2spPVwiZGlzbWlzcygpXCI+XG4gICAgICAgICAgICAgIHt7IHQoJ2Nsb3NlJykgfX1cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9pb24tY29udGVudD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pb24tbW9kYWw+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5tb2RhbC1jbG9zZS1ib3R0b20ge1xuICAgICAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENyZWF0ZU9yZ01vZGFsQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBvcmdTZXJ2aWNlID0gaW5qZWN0KE9yZ1NlcnZpY2UpO1xuICBwcml2YXRlIG9yZ1N3aXRjaCA9IGluamVjdChPcmdTd2l0Y2hTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIGVycm9ycyA9IGluamVjdChWYWx0ZWNoRXJyb3JTZXJ2aWNlKTtcblxuICAvKiogTmFtZXNwYWNlIGkxOG4gY29uIHF1ZSBsYSB2aXN0YSByZXN1ZWx2ZSBzdXMgdGV4dG9zLiAqL1xuICBASW5wdXQoKSBpMThuTmFtZXNwYWNlID0gREVGQVVMVF9OQU1FU1BBQ0U7XG5cbiAgcHJpdmF0ZSBfaXNPcGVuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgc2V0IGlzT3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgIGNvbnN0IG9wZW5pbmcgPSB2YWx1ZSAmJiAhdGhpcy5faXNPcGVuO1xuICAgIHRoaXMuX2lzT3BlbiA9IHZhbHVlO1xuICAgIGlmIChvcGVuaW5nKSB7XG4gICAgICB0aGlzLl9idXN5LnNldChmYWxzZSk7XG4gICAgfVxuICB9XG4gIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzT3BlbjtcbiAgfVxuXG4gIEBPdXRwdXQoKSBkaXNtaXNzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBjcmVhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxPcmdhbml6YXRpb24+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYnVzeSA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGZvcm1NZXRhOiBXcml0YWJsZVNpZ25hbDxGb3JtTWV0YWRhdGE+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghdGhpcy5pMThuLmhhc05hbWVzcGFjZShERUZBVUxUX05BTUVTUEFDRSkpIHtcbiAgICAgIHRoaXMuaTE4bi5yZWdpc3RlckNvbnRlbnQoREVGQVVMVF9OQU1FU1BBQ0UsIENSRUFURV9PUkdfTU9EQUxfSTE4Tik7XG4gICAgfVxuICAgIHRoaXMuZm9ybU1ldGEgPSBzaWduYWwodGhpcy5idWlsZEZvcm1NZXRhKCkpO1xuXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgICAgICB0aGlzLmZvcm1NZXRhLnNldCh0aGlzLmJ1aWxkRm9ybU1ldGEoKSk7XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcblxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3Qgd29ya2luZyA9IHRoaXMuX2J1c3koKTtcbiAgICAgICAgdGhpcy5mb3JtTWV0YS51cGRhdGUobWV0YSA9PiAoe1xuICAgICAgICAgIC4uLm1ldGEsXG4gICAgICAgICAgc3RhdGU6IHdvcmtpbmcgPyBDb21wb25lbnRTdGF0ZXMuV09SS0lORyA6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgICAgICAgIGFjdGlvbnM6IHtcbiAgICAgICAgICAgIC4uLm1ldGEuYWN0aW9ucyxcbiAgICAgICAgICAgIHN0YXRlOiB3b3JraW5nID8gQ29tcG9uZW50U3RhdGVzLldPUktJTkcgOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSk7XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIG9uU3VibWl0KGV2ZW50OiBGb3JtU3VibWl0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX2J1c3koKSkgcmV0dXJuO1xuICAgIGNvbnN0IG5hbWUgPSBldmVudC5maWVsZHNbJ25hbWUnXSBhcyBzdHJpbmc7XG4gICAgY29uc3QgdHlwZSA9IGV2ZW50LmZpZWxkc1sndHlwZSddIGFzIE9yZ1R5cGU7XG4gICAgaWYgKCFuYW1lPy50cmltKCkgfHwgIXR5cGUpIHtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudCgnZmlsbFJlcXVpcmVkJyksXG4gICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fYnVzeS5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gZXZlbnQuZmllbGRzWydkZXNjcmlwdGlvbiddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IG5ld09yZyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMub3JnU2VydmljZS5jcmVhdGVPcmcoeyBuYW1lLCB0eXBlLCBkZXNjcmlwdGlvbiB9KSk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ3N1Y2Nlc3NNc2cnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgZHVyYXRpb246IDM1MDAsXG4gICAgICB9KTtcbiAgICAgIGF3YWl0IHRoaXMub3JnU3dpdGNoLnN3aXRjaFRvKG5ld09yZy5pZCk7XG4gICAgICB0aGlzLmNyZWF0ZWQuZW1pdChuZXdPcmcpO1xuICAgICAgdGhpcy5kaXNtaXNzZWQuZW1pdCgpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwgeyBpMThuTmFtZXNwYWNlOiB0aGlzLmkxOG5OYW1lc3BhY2UgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX2J1c3kuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBkaXNtaXNzKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzbWlzc2VkLmVtaXQoKTtcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzbWlzc2VkLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGb3JtTWV0YSgpOiBGb3JtTWV0YWRhdGEge1xuICAgIGNvbnN0IG5hbWVGaWVsZDogSW5wdXRNZXRhZGF0YSA9IHtcbiAgICAgIHRva2VuOiAnbmV3LW9yZy1uYW1lJyxcbiAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgIGxhYmVsOiB0aGlzLnQoJ25hbWVMYWJlbCcpLFxuICAgICAgaGludDogJycsXG4gICAgICBwbGFjZWhvbGRlcjogdGhpcy50KCduYW1lUGxhY2Vob2xkZXInKSxcbiAgICAgIHR5cGU6IElucHV0VHlwZS5URVhULFxuICAgICAgb3JkZXI6IDEsXG4gICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMiksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMCldLFxuICAgICAgZXJyb3JzOiB7XG4gICAgICAgIHJlcXVpcmVkOiB0aGlzLnQoJ25hbWVSZXF1aXJlZCcpLFxuICAgICAgICBtaW5sZW5ndGg6IHRoaXMudCgnbmFtZU1pbicpLFxuICAgICAgfSxcbiAgICAgIHZhbHVlOiAnJyxcbiAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICB9IGFzIElucHV0TWV0YWRhdGE7XG5cbiAgICBjb25zdCB0eXBlRmllbGQ6IElucHV0TWV0YWRhdGEgPSB7XG4gICAgICB0b2tlbjogJ25ldy1vcmctdHlwZScsXG4gICAgICBuYW1lOiAndHlwZScsXG4gICAgICBsYWJlbDogdGhpcy50KCd0eXBlTGFiZWwnKSxcbiAgICAgIGhpbnQ6ICcnLFxuICAgICAgcGxhY2Vob2xkZXI6ICcnLFxuICAgICAgdHlwZTogSW5wdXRUeXBlLlNFTEVDVCxcbiAgICAgIG9yZGVyOiAyLFxuICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgZXJyb3JzOiB7fSxcbiAgICAgIHZhbHVlOiAnUEVSU09OQUwnLFxuICAgICAgd2l0aERlZmF1bHQ6ICdQRVJTT05BTCcsXG4gICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICBvcHRpb25zOiBbXG4gICAgICAgIHsgaWQ6ICdQRVJTT05BTCcsIG5hbWU6IHRoaXMudCgndHlwZVBlcnNvbmFsJyksIG9yZGVyOiAxIH0sXG4gICAgICAgIHsgaWQ6ICdQUklWQVRFJywgbmFtZTogdGhpcy50KCd0eXBlUHJpdmF0ZScpLCBvcmRlcjogMiB9LFxuICAgICAgICB7IGlkOiAnUFVCTElDJywgbmFtZTogdGhpcy50KCd0eXBlUHVibGljJyksIG9yZGVyOiAzIH0sXG4gICAgICAgIHsgaWQ6ICdCVVNJTkVTUycsIG5hbWU6IHRoaXMudCgndHlwZUJ1c2luZXNzJyksIG9yZGVyOiA0IH0sXG4gICAgICBdLFxuICAgIH0gYXMgSW5wdXRNZXRhZGF0YTtcblxuICAgIGNvbnN0IGRlc2NyaXB0aW9uRmllbGQ6IElucHV0TWV0YWRhdGEgPSB7XG4gICAgICB0b2tlbjogJ25ldy1vcmctZGVzY3JpcHRpb24nLFxuICAgICAgbmFtZTogJ2Rlc2NyaXB0aW9uJyxcbiAgICAgIGxhYmVsOiB0aGlzLnQoJ2Rlc2NyaXB0aW9uTGFiZWwnKSxcbiAgICAgIGhpbnQ6ICcnLFxuICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudCgnZGVzY3JpcHRpb25QbGFjZWhvbGRlcicpLFxuICAgICAgdHlwZTogSW5wdXRUeXBlLlRFWFRBUkVBLFxuICAgICAgb3JkZXI6IDMsXG4gICAgICB2YWxpZGF0b3JzOiBbXSxcbiAgICAgIGVycm9yczoge30sXG4gICAgICB2YWx1ZTogJycsXG4gICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgfSBhcyBJbnB1dE1ldGFkYXRhO1xuXG4gICAgY29uc3Qgc3VibWl0QnV0dG9uID0ge1xuICAgICAgdGV4dDogdGhpcy50KCdjcmVhdGVDdGEnKSxcbiAgICAgIGNvbG9yOiAnZGFyaycgYXMgY29uc3QsXG4gICAgICB0eXBlOiAnc3VibWl0JyBhcyBjb25zdCxcbiAgICAgIGZpbGw6ICdzb2xpZCcgYXMgY29uc3QsXG4gICAgICBzaXplOiAnZGVmYXVsdCcgYXMgY29uc3QsXG4gICAgICBzaGFwZTogJ3JvdW5kJyBhcyBjb25zdCxcbiAgICAgIGV4cGFuZDogJ2Jsb2NrJyBhcyBjb25zdCxcbiAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICAgIHRva2VuOiAnbmV3LW9yZy1zdWJtaXQnLFxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogJycsXG4gICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICBzZWN0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJycsXG4gICAgICAgICAgb3JkZXI6IDEsXG4gICAgICAgICAgZmllbGRzOiBbbmFtZUZpZWxkLCB0eXBlRmllbGQsIGRlc2NyaXB0aW9uRmllbGRdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGFjdGlvbnM6IHN1Ym1pdEJ1dHRvbixcbiAgICB9O1xuICB9XG5cbiAgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgdGhpcy5pMThuTmFtZXNwYWNlKTtcbiAgfVxufVxuIl19
|