@idea-ionic/uncommon 8.2.7 → 8.2.8
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/public-api.mjs +3 -12
- package/esm2022/src/AWSAPI.service.mjs +4 -3
- package/esm2022/src/AWSAPISocket.service.mjs +4 -3
- package/esm2022/src/address/address.component.mjs +320 -5
- package/esm2022/src/announcement/announcement.component.mjs +37 -6
- package/esm2022/src/colors/colorPicker.component.mjs +64 -8
- package/esm2022/src/contacts/contacts.component.mjs +131 -7
- package/esm2022/src/dateTime/calendarPicker.component.mjs +25 -8
- package/esm2022/src/dateTime/dateTime.component.mjs +90 -6
- package/esm2022/src/duration/duration.component.mjs +123 -5
- package/esm2022/src/echo/echo.page.mjs +74 -6
- package/esm2022/src/echo/echo.routes.mjs +6 -0
- package/esm2022/src/errorReporting.service.mjs +4 -3
- package/esm2022/src/mde/mde.component.mjs +106 -7
- package/esm2022/src/mde/mdeToolbar.component.mjs +17 -4
- package/esm2022/src/offline/cacheableResource.component.mjs +42 -4
- package/esm2022/src/offline/offline.service.mjs +4 -3
- package/esm2022/src/offline/offlineData.service.mjs +4 -3
- package/esm2022/src/offline/offlineIndicator.component.mjs +52 -5
- package/esm2022/src/offline/offlineManager.component.mjs +25 -8
- package/esm2022/src/pushNotifications.service.mjs +4 -3
- package/esm2022/src/sentiment/sentiment.component.mjs +47 -6
- package/esm2022/src/timeInterval/fromTimeToTime.component.mjs +23 -7
- package/esm2022/src/timeInterval/timeInterval.component.mjs +89 -5
- package/fesm2022/idea-ionic-uncommon.mjs +1225 -212
- package/fesm2022/idea-ionic-uncommon.mjs.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +2 -11
- package/src/address/address.component.d.ts +1 -1
- package/src/announcement/announcement.component.d.ts +1 -1
- package/src/colors/colorPicker.component.d.ts +2 -2
- package/src/contacts/contacts.component.d.ts +1 -1
- package/src/dateTime/calendarPicker.component.d.ts +1 -1
- package/src/dateTime/dateTime.component.d.ts +1 -1
- package/src/duration/duration.component.d.ts +1 -1
- package/src/echo/echo.page.d.ts +1 -1
- package/src/echo/echo.routes.d.ts +2 -0
- package/src/mde/mde.component.d.ts +1 -1
- package/src/mde/mdeToolbar.component.d.ts +1 -1
- package/src/offline/cacheableResource.component.d.ts +1 -1
- package/src/offline/offlineIndicator.component.d.ts +1 -1
- package/src/offline/offlineManager.component.d.ts +1 -1
- package/src/sentiment/sentiment.component.d.ts +1 -1
- package/src/timeInterval/fromTimeToTime.component.d.ts +1 -1
- package/src/timeInterval/timeInterval.component.d.ts +1 -1
- package/esm2022/src/address/address.module.mjs +0 -21
- package/esm2022/src/announcement/announcement.module.mjs +0 -21
- package/esm2022/src/colors/colorPicker.module.mjs +0 -20
- package/esm2022/src/contacts/contacts.module.mjs +0 -21
- package/esm2022/src/dateTime/dateTime.module.mjs +0 -22
- package/esm2022/src/duration/duration.module.mjs +0 -21
- package/esm2022/src/echo/echo.module.mjs +0 -26
- package/esm2022/src/mde/mde.module.mjs +0 -22
- package/esm2022/src/offline/offline.module.mjs +0 -22
- package/esm2022/src/sentiment/sentiment.module.mjs +0 -21
- package/esm2022/src/timeInterval/timeInterval.module.mjs +0 -22
- package/src/address/address.module.d.ts +0 -11
- package/src/announcement/announcement.module.d.ts +0 -11
- package/src/colors/colorPicker.module.d.ts +0 -10
- package/src/contacts/contacts.module.d.ts +0 -11
- package/src/dateTime/dateTime.module.d.ts +0 -12
- package/src/duration/duration.module.d.ts +0 -11
- package/src/echo/echo.module.d.ts +0 -12
- package/src/mde/mde.module.d.ts +0 -12
- package/src/offline/offline.module.d.ts +0 -12
- package/src/sentiment/sentiment.module.d.ts +0 -11
- package/src/timeInterval/timeInterval.module.d.ts +0 -12
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
1
2
|
import { Component, Input, inject } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import { ModalController, IonHeader, IonToolbar, IonButtons, IonButton, IonIcon, IonTitle, IonContent, IonText, IonTextarea } from '@ionic/angular/standalone';
|
|
5
|
+
import { IDEATranslatePipe } from '@idea-ionic/common';
|
|
6
|
+
import { IDEAMDEToolbarComponent } from './mdeToolbar.component';
|
|
3
7
|
import * as i0 from "@angular/core";
|
|
4
8
|
import * as i1 from "@angular/forms";
|
|
5
|
-
import * as i2 from "@ionic/angular";
|
|
6
|
-
import * as i3 from "./mdeToolbar.component";
|
|
7
|
-
import * as i4 from "@idea-ionic/common";
|
|
8
9
|
export class IDEAMDEComponent {
|
|
9
10
|
constructor() {
|
|
10
11
|
this._modal = inject(ModalController);
|
|
@@ -21,11 +22,109 @@ export class IDEAMDEComponent {
|
|
|
21
22
|
this._modal.dismiss(this.value);
|
|
22
23
|
}
|
|
23
24
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAMDEComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEAMDEComponent, selector: "idea-mde", inputs: { id: "id", title: "title", header: "header", description: "description", variables: "variables", initialValue: "initialValue", placeholder: "placeholder" }, ngImport: i0, template:
|
|
25
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEAMDEComponent, isStandalone: true, selector: "idea-mde", inputs: { id: "id", title: "title", header: "header", description: "description", variables: "variables", initialValue: "initialValue", placeholder: "placeholder" }, ngImport: i0, template: `
|
|
26
|
+
<ion-header>
|
|
27
|
+
<ion-toolbar color="ideaToolbar">
|
|
28
|
+
<ion-buttons slot="start">
|
|
29
|
+
<ion-button [title]="'IDEA_UNCOMMON.MDE.CLOSE_WITHOUT_SAVING' | translate" (click)="close()">
|
|
30
|
+
<ion-icon name="close" slot="icon-only" />
|
|
31
|
+
</ion-button>
|
|
32
|
+
</ion-buttons>
|
|
33
|
+
<ion-title>
|
|
34
|
+
{{ title || ('IDEA_UNCOMMON.MDE.TITLE' | translate) }}
|
|
35
|
+
</ion-title>
|
|
36
|
+
<ion-buttons slot="end">
|
|
37
|
+
<ion-button [title]="'IDEA_UNCOMMON.MDE.SAVE_AND_CLOSE' | translate" (click)="confirm()">
|
|
38
|
+
<ion-icon name="checkmark" slot="icon-only" />
|
|
39
|
+
</ion-button>
|
|
40
|
+
</ion-buttons>
|
|
41
|
+
</ion-toolbar>
|
|
42
|
+
</ion-header>
|
|
43
|
+
<ion-content class="ion-padding">
|
|
44
|
+
@if (header) {
|
|
45
|
+
<h2 class="header">
|
|
46
|
+
{{ header }}
|
|
47
|
+
</h2>
|
|
48
|
+
}
|
|
49
|
+
@if (description) {
|
|
50
|
+
<p class="description">
|
|
51
|
+
{{ description }}
|
|
52
|
+
</p>
|
|
53
|
+
}
|
|
54
|
+
@if (variables?.length) {
|
|
55
|
+
<p class="variables">
|
|
56
|
+
<b> {{ 'IDEA_UNCOMMON.MDE.VARIABLES' | translate }}: </b>
|
|
57
|
+
@for (v of variables; track v) {
|
|
58
|
+
<ion-text>
|
|
59
|
+
{{ v.concat(' ') }}
|
|
60
|
+
</ion-text>
|
|
61
|
+
}
|
|
62
|
+
</p>
|
|
63
|
+
}
|
|
64
|
+
<ion-textarea rows="12" [id]="id" [placeholder]="placeholder" [(ngModel)]="value" />
|
|
65
|
+
<idea-mde-toolbar />
|
|
66
|
+
</ion-content>
|
|
67
|
+
`, isInline: true, styles: ["ion-content{--ion-background-color: #f4f4f4}h2.header{margin:0;font-size:.7em;font-weight:700;text-transform:uppercase}.description{margin-top:5px;margin-bottom:20px;font-size:.9em}.variables{margin:10px 5px;font-size:.8em}ion-textarea{--background: var(--ion-color-white);padding:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }, { kind: "component", type: IDEAMDEToolbarComponent, selector: "idea-mde-toolbar" }, { kind: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { 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: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }] }); }
|
|
25
68
|
}
|
|
26
69
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAMDEComponent, decorators: [{
|
|
27
70
|
type: Component,
|
|
28
|
-
args: [{ selector: 'idea-mde',
|
|
71
|
+
args: [{ selector: 'idea-mde', standalone: true, imports: [
|
|
72
|
+
CommonModule,
|
|
73
|
+
FormsModule,
|
|
74
|
+
IDEATranslatePipe,
|
|
75
|
+
IDEAMDEToolbarComponent,
|
|
76
|
+
IonTextarea,
|
|
77
|
+
IonText,
|
|
78
|
+
IonContent,
|
|
79
|
+
IonTitle,
|
|
80
|
+
IonIcon,
|
|
81
|
+
IonButton,
|
|
82
|
+
IonButtons,
|
|
83
|
+
IonToolbar,
|
|
84
|
+
IonHeader
|
|
85
|
+
], template: `
|
|
86
|
+
<ion-header>
|
|
87
|
+
<ion-toolbar color="ideaToolbar">
|
|
88
|
+
<ion-buttons slot="start">
|
|
89
|
+
<ion-button [title]="'IDEA_UNCOMMON.MDE.CLOSE_WITHOUT_SAVING' | translate" (click)="close()">
|
|
90
|
+
<ion-icon name="close" slot="icon-only" />
|
|
91
|
+
</ion-button>
|
|
92
|
+
</ion-buttons>
|
|
93
|
+
<ion-title>
|
|
94
|
+
{{ title || ('IDEA_UNCOMMON.MDE.TITLE' | translate) }}
|
|
95
|
+
</ion-title>
|
|
96
|
+
<ion-buttons slot="end">
|
|
97
|
+
<ion-button [title]="'IDEA_UNCOMMON.MDE.SAVE_AND_CLOSE' | translate" (click)="confirm()">
|
|
98
|
+
<ion-icon name="checkmark" slot="icon-only" />
|
|
99
|
+
</ion-button>
|
|
100
|
+
</ion-buttons>
|
|
101
|
+
</ion-toolbar>
|
|
102
|
+
</ion-header>
|
|
103
|
+
<ion-content class="ion-padding">
|
|
104
|
+
@if (header) {
|
|
105
|
+
<h2 class="header">
|
|
106
|
+
{{ header }}
|
|
107
|
+
</h2>
|
|
108
|
+
}
|
|
109
|
+
@if (description) {
|
|
110
|
+
<p class="description">
|
|
111
|
+
{{ description }}
|
|
112
|
+
</p>
|
|
113
|
+
}
|
|
114
|
+
@if (variables?.length) {
|
|
115
|
+
<p class="variables">
|
|
116
|
+
<b> {{ 'IDEA_UNCOMMON.MDE.VARIABLES' | translate }}: </b>
|
|
117
|
+
@for (v of variables; track v) {
|
|
118
|
+
<ion-text>
|
|
119
|
+
{{ v.concat(' ') }}
|
|
120
|
+
</ion-text>
|
|
121
|
+
}
|
|
122
|
+
</p>
|
|
123
|
+
}
|
|
124
|
+
<ion-textarea rows="12" [id]="id" [placeholder]="placeholder" [(ngModel)]="value" />
|
|
125
|
+
<idea-mde-toolbar />
|
|
126
|
+
</ion-content>
|
|
127
|
+
`, styles: ["ion-content{--ion-background-color: #f4f4f4}h2.header{margin:0;font-size:.7em;font-weight:700;text-transform:uppercase}.description{margin-top:5px;margin-bottom:20px;font-size:.9em}.variables{margin:10px 5px;font-size:.8em}ion-textarea{--background: var(--ion-color-white);padding:10px}\n"] }]
|
|
29
128
|
}], propDecorators: { id: [{
|
|
30
129
|
type: Input
|
|
31
130
|
}], title: [{
|
|
@@ -41,4 +140,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
41
140
|
}], placeholder: [{
|
|
42
141
|
type: Input
|
|
43
142
|
}] } });
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvdW5jb21tb24vc3JjL21kZS9tZGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsU0FBUyxFQUNULE9BQU8sRUFDUCxRQUFRLEVBQ1IsVUFBVSxFQUNWLE9BQU8sRUFDUCxXQUFXLEVBQ1osTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBMEZqRSxNQUFNLE9BQU8sZ0JBQWdCO0lBeEY3QjtRQXlGVSxXQUFNLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBNkMxQztJQVpDLFFBQVE7UUFDTixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLEtBQUssRUFBVSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUNqQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUNELE9BQU87UUFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQzs4R0E3Q1UsZ0JBQWdCO2tHQUFoQixnQkFBZ0IsME9BdEVqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMENULHlXQXhEQyxZQUFZLDhCQUNaLFdBQVcsMFZBQ1gsaUJBQWlCLGtEQUNqQix1QkFBdUIsNkRBQ3ZCLFdBQVcsaWFBQ1gsT0FBTyxnRkFDUCxVQUFVLHdLQUNWLFFBQVEsaUZBQ1IsT0FBTywySkFDUCxTQUFTLG9QQUNULFVBQVUsOEVBQ1YsVUFBVSxtRkFDVixTQUFTOzsyRkF3RUEsZ0JBQWdCO2tCQXhGNUIsU0FBUzsrQkFDRSxVQUFVLGNBQ1IsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxpQkFBaUI7d0JBQ2pCLHVCQUF1Qjt3QkFDdkIsV0FBVzt3QkFDWCxPQUFPO3dCQUNQLFVBQVU7d0JBQ1YsUUFBUTt3QkFDUixPQUFPO3dCQUNQLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixVQUFVO3dCQUNWLFNBQVM7cUJBQ1YsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMENUOzhCQWtDUSxFQUFFO3NCQUFWLEtBQUs7Z0JBSUcsS0FBSztzQkFBYixLQUFLO2dCQUlHLE1BQU07c0JBQWQsS0FBSztnQkFJRyxXQUFXO3NCQUFuQixLQUFLO2dCQUlHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBSUcsWUFBWTtzQkFBcEIsS0FBSztnQkFJRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIE1vZGFsQ29udHJvbGxlcixcbiAgSW9uSGVhZGVyLFxuICBJb25Ub29sYmFyLFxuICBJb25CdXR0b25zLFxuICBJb25CdXR0b24sXG4gIElvbkljb24sXG4gIElvblRpdGxlLFxuICBJb25Db250ZW50LFxuICBJb25UZXh0LFxuICBJb25UZXh0YXJlYVxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IElERUFUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuaW1wb3J0IHsgSURFQU1ERVRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL21kZVRvb2xiYXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWRlYS1tZGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIElERUFUcmFuc2xhdGVQaXBlLFxuICAgIElERUFNREVUb29sYmFyQ29tcG9uZW50LFxuICAgIElvblRleHRhcmVhLFxuICAgIElvblRleHQsXG4gICAgSW9uQ29udGVudCxcbiAgICBJb25UaXRsZSxcbiAgICBJb25JY29uLFxuICAgIElvbkJ1dHRvbixcbiAgICBJb25CdXR0b25zLFxuICAgIElvblRvb2xiYXIsXG4gICAgSW9uSGVhZGVyXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1oZWFkZXI+XG4gICAgICA8aW9uLXRvb2xiYXIgY29sb3I9XCJpZGVhVG9vbGJhclwiPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICAgICAgPGlvbi1idXR0b24gW3RpdGxlXT1cIidJREVBX1VOQ09NTU9OLk1ERS5DTE9TRV9XSVRIT1VUX1NBVklORycgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZVwiIHNsb3Q9XCJpY29uLW9ubHlcIiAvPlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgICAgPGlvbi10aXRsZT5cbiAgICAgICAgICB7eyB0aXRsZSB8fCAoJ0lERUFfVU5DT01NT04uTURFLlRJVExFJyB8IHRyYW5zbGF0ZSkgfX1cbiAgICAgICAgPC9pb24tdGl0bGU+XG4gICAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICAgICAgPGlvbi1idXR0b24gW3RpdGxlXT1cIidJREVBX1VOQ09NTU9OLk1ERS5TQVZFX0FORF9DTE9TRScgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwiY29uZmlybSgpXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZWNrbWFya1wiIHNsb3Q9XCJpY29uLW9ubHlcIiAvPlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgPC9pb24taGVhZGVyPlxuICAgIDxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICBAaWYgKGhlYWRlcikge1xuICAgICAgICA8aDIgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgICAgICB7eyBoZWFkZXIgfX1cbiAgICAgICAgPC9oMj5cbiAgICAgIH1cbiAgICAgIEBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICAgICAgPHAgY2xhc3M9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgIHt7IGRlc2NyaXB0aW9uIH19XG4gICAgICAgIDwvcD5cbiAgICAgIH1cbiAgICAgIEBpZiAodmFyaWFibGVzPy5sZW5ndGgpIHtcbiAgICAgICAgPHAgY2xhc3M9XCJ2YXJpYWJsZXNcIj5cbiAgICAgICAgICA8Yj4ge3sgJ0lERUFfVU5DT01NT04uTURFLlZBUklBQkxFUycgfCB0cmFuc2xhdGUgfX06IDwvYj5cbiAgICAgICAgICBAZm9yICh2IG9mIHZhcmlhYmxlczsgdHJhY2sgdikge1xuICAgICAgICAgICAgPGlvbi10ZXh0PlxuICAgICAgICAgICAgICB7eyB2LmNvbmNhdCgnICcpIH19XG4gICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9wPlxuICAgICAgfVxuICAgICAgPGlvbi10ZXh0YXJlYSByb3dzPVwiMTJcIiBbaWRdPVwiaWRcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgLz5cbiAgICAgIDxpZGVhLW1kZS10b29sYmFyIC8+XG4gICAgPC9pb24tY29udGVudD5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgaW9uLWNvbnRlbnQge1xuICAgICAgICAtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yOiAjZjRmNGY0O1xuICAgICAgfVxuICAgICAgaDIuaGVhZGVyIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LXNpemU6IDAuN2VtO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cbiAgICAgIC5kZXNjcmlwdGlvbiB7XG4gICAgICAgIG1hcmdpbi10b3A6IDVweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgZm9udC1zaXplOiAwLjllbTtcbiAgICAgIH1cbiAgICAgIC52YXJpYWJsZXMge1xuICAgICAgICBtYXJnaW46IDEwcHggNXB4O1xuICAgICAgICBmb250LXNpemU6IDAuOGVtO1xuICAgICAgfVxuICAgICAgaW9uLXRleHRhcmVhIHtcbiAgICAgICAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itd2hpdGUpO1xuICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgfVxuICAgIGBcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBJREVBTURFQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBfbW9kYWwgPSBpbmplY3QoTW9kYWxDb250cm9sbGVyKTtcblxuICAvKipcbiAgICogSWQgdG8gaWRlbnRpZnkgdGhpcyBzcGVjaWZpYyBNYXJrZG93biBFZGl0b3IgKGRlZmF1bHQ6ICdtZGUnKS5cbiAgICovXG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdGl0bGUgb2YgdGhlIG1vZGFsLlxuICAgKi9cbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBoZWFkZXIgdGV4dCBjb250ZW50LlxuICAgKi9cbiAgQElucHV0KCkgaGVhZGVyOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc3ViLWhlYWRlciBkZXNjcmlwdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIHNlcmllcyBvZiB0ZXh0IHZhcmlhYmxlcyB0byBzdWJzdGl0dXRlIHdpdGggdmFsdWVzLlxuICAgKi9cbiAgQElucHV0KCkgdmFyaWFibGVzOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIElmIHNldCwgd2lsbCBjdXN0b21pemUgdGhlIGluaXRpYWwgdmFsdWUgb2YgdGhlIGVkaXRvci5cbiAgICovXG4gIEBJbnB1dCgpIGluaXRpYWxWYWx1ZTogc3RyaW5nO1xuICAvKipcbiAgICogQ3VzdG9tIHBsYWNlaG9sZGVyIHRoYXQgc2hvdWxkIGJlIGRpc3BsYXllZC5cbiAgICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgdmFsdWU6IHN0cmluZztcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlkID0gdGhpcy5pZCB8fCAnbWRlJztcbiAgICB0aGlzLnZhcmlhYmxlcyA9IHRoaXMudmFyaWFibGVzIHx8IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuaW5pdGlhbFZhbHVlO1xuICB9XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fbW9kYWwuZGlzbWlzcygpO1xuICB9XG4gIGNvbmZpcm0oKTogdm9pZCB7XG4gICAgdGhpcy5fbW9kYWwuZGlzbWlzcyh0aGlzLnZhbHVlKTtcbiAgfVxufVxuIl19
|
|
@@ -1,12 +1,25 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
1
2
|
import { Component } from '@angular/core';
|
|
3
|
+
import { IDEATranslatePipe } from '@idea-ionic/common';
|
|
2
4
|
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@idea-ionic/common";
|
|
4
5
|
export class IDEAMDEToolbarComponent {
|
|
5
6
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAMDEToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: IDEAMDEToolbarComponent, selector: "idea-mde-toolbar", ngImport: i0, template:
|
|
7
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: IDEAMDEToolbarComponent, isStandalone: true, selector: "idea-mde-toolbar", ngImport: i0, template: `
|
|
8
|
+
<div class="mdeToolbar">
|
|
9
|
+
<b>**{{ 'IDEA_UNCOMMON.MDE.TOOLBAR.BOLD' | translate }}**</b>
|
|
10
|
+
<i>*{{ 'IDEA_UNCOMMON.MDE.TOOLBAR.ITALIC' | translate }}*</i>
|
|
11
|
+
~{{ 'IDEA_UNCOMMON.MDE.TOOLBAR.STRIKE' | translate }}~
|
|
12
|
+
</div>
|
|
13
|
+
`, isInline: true, styles: [".mdeToolbar{text-align:right;color:#aaa;padding:5px 0;font-size:.9em}.mdeToolbar :is(b,i){padding-right:5px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }] }); }
|
|
7
14
|
}
|
|
8
15
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAMDEToolbarComponent, decorators: [{
|
|
9
16
|
type: Component,
|
|
10
|
-
args: [{ selector: 'idea-mde-toolbar',
|
|
17
|
+
args: [{ selector: 'idea-mde-toolbar', standalone: true, imports: [CommonModule, IDEATranslatePipe], template: `
|
|
18
|
+
<div class="mdeToolbar">
|
|
19
|
+
<b>**{{ 'IDEA_UNCOMMON.MDE.TOOLBAR.BOLD' | translate }}**</b>
|
|
20
|
+
<i>*{{ 'IDEA_UNCOMMON.MDE.TOOLBAR.ITALIC' | translate }}*</i>
|
|
21
|
+
~{{ 'IDEA_UNCOMMON.MDE.TOOLBAR.STRIKE' | translate }}~
|
|
22
|
+
</div>
|
|
23
|
+
`, styles: [".mdeToolbar{text-align:right;color:#aaa;padding:5px 0;font-size:.9em}.mdeToolbar :is(b,i){padding-right:5px}\n"] }]
|
|
11
24
|
}] });
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWRlVG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3VuY29tbW9uL3NyYy9tZGUvbWRlVG9vbGJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBNEJ2RCxNQUFNLE9BQU8sdUJBQXVCOzhHQUF2Qix1QkFBdUI7a0dBQXZCLHVCQUF1Qiw0RUF0QnhCOzs7Ozs7R0FNVCx1TEFQUyxZQUFZLDBCQUFFLGlCQUFpQjs7MkZBdUI5Qix1QkFBdUI7a0JBMUJuQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFDaEM7Ozs7OztHQU1UIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSURFQVRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAaWRlYS1pb25pYy9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZGVhLW1kZS10b29sYmFyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSURFQVRyYW5zbGF0ZVBpcGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJtZGVUb29sYmFyXCI+XG4gICAgICA8Yj4qKnt7ICdJREVBX1VOQ09NTU9OLk1ERS5UT09MQkFSLkJPTEQnIHwgdHJhbnNsYXRlIH19Kio8L2I+XG4gICAgICA8aT4qe3sgJ0lERUFfVU5DT01NT04uTURFLlRPT0xCQVIuSVRBTElDJyB8IHRyYW5zbGF0ZSB9fSo8L2k+XG4gICAgICB+e3sgJ0lERUFfVU5DT01NT04uTURFLlRPT0xCQVIuU1RSSUtFJyB8IHRyYW5zbGF0ZSB9fX5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLm1kZVRvb2xiYXIge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgY29sb3I6ICNhYWE7XG4gICAgICAgIHBhZGRpbmc6IDVweCAwO1xuICAgICAgICBmb250LXNpemU6IDAuOWVtO1xuICAgICAgICBiLFxuICAgICAgICBpIHtcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSURFQU1ERVRvb2xiYXJDb21wb25lbnQge31cbiJdfQ==
|
|
@@ -1,18 +1,56 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
1
2
|
import { Component, Input, inject } from '@angular/core';
|
|
3
|
+
import { IonItem, IonLabel, IonIcon, IonSpinner } from '@ionic/angular/standalone';
|
|
2
4
|
import { IDEAOfflineDataService } from './offlineData.service';
|
|
3
5
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@ionic/angular";
|
|
5
6
|
export class IDEACacheableResourceComponent {
|
|
6
7
|
constructor() {
|
|
7
8
|
this._offline = inject(IDEAOfflineDataService);
|
|
8
9
|
}
|
|
9
10
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEACacheableResourceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEACacheableResourceComponent, selector: "idea-cacheable-resource", inputs: { resource: "resource" }, ngImport: i0, template:
|
|
11
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEACacheableResourceComponent, isStandalone: true, selector: "idea-cacheable-resource", inputs: { resource: "resource" }, ngImport: i0, template: `
|
|
12
|
+
<ion-item class="cacheableResourceItem">
|
|
13
|
+
<ion-label>{{ resource.description }}</ion-label>
|
|
14
|
+
@if (resource.error) {
|
|
15
|
+
<ion-icon slot="end" name="alert-circle" color="danger" />
|
|
16
|
+
}
|
|
17
|
+
@if (!resource.error && _offline.synchronizing && resource.synchronizing) {
|
|
18
|
+
<ion-spinner slot="end" name="dots" />
|
|
19
|
+
}
|
|
20
|
+
@if (!resource.error && !resource.synchronizing && !_offline.requiresManualConfirmation) {
|
|
21
|
+
<ion-icon slot="end" name="checkmark" color="success" />
|
|
22
|
+
}
|
|
23
|
+
@if (!resource.error && !resource.synchronizing && _offline.requiresManualConfirmation) {
|
|
24
|
+
<ion-icon slot="end" name="pause" color="dark" />
|
|
25
|
+
}
|
|
26
|
+
</ion-item>
|
|
27
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }] }); }
|
|
11
28
|
}
|
|
12
29
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEACacheableResourceComponent, decorators: [{
|
|
13
30
|
type: Component,
|
|
14
|
-
args: [{
|
|
31
|
+
args: [{
|
|
32
|
+
selector: 'idea-cacheable-resource',
|
|
33
|
+
standalone: true,
|
|
34
|
+
imports: [CommonModule, IonSpinner, IonIcon, IonLabel, IonItem],
|
|
35
|
+
template: `
|
|
36
|
+
<ion-item class="cacheableResourceItem">
|
|
37
|
+
<ion-label>{{ resource.description }}</ion-label>
|
|
38
|
+
@if (resource.error) {
|
|
39
|
+
<ion-icon slot="end" name="alert-circle" color="danger" />
|
|
40
|
+
}
|
|
41
|
+
@if (!resource.error && _offline.synchronizing && resource.synchronizing) {
|
|
42
|
+
<ion-spinner slot="end" name="dots" />
|
|
43
|
+
}
|
|
44
|
+
@if (!resource.error && !resource.synchronizing && !_offline.requiresManualConfirmation) {
|
|
45
|
+
<ion-icon slot="end" name="checkmark" color="success" />
|
|
46
|
+
}
|
|
47
|
+
@if (!resource.error && !resource.synchronizing && _offline.requiresManualConfirmation) {
|
|
48
|
+
<ion-icon slot="end" name="pause" color="dark" />
|
|
49
|
+
}
|
|
50
|
+
</ion-item>
|
|
51
|
+
`
|
|
52
|
+
}]
|
|
15
53
|
}], propDecorators: { resource: [{
|
|
16
54
|
type: Input
|
|
17
55
|
}] } });
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVhYmxlUmVzb3VyY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy91bmNvbW1vbi9zcmMvb2ZmbGluZS9jYWNoZWFibGVSZXNvdXJjZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFbkYsT0FBTyxFQUFFLHNCQUFzQixFQUFxQixNQUFNLHVCQUF1QixDQUFDOztBQXdCbEYsTUFBTSxPQUFPLDhCQUE4QjtJQXRCM0M7UUF1QkUsYUFBUSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0tBTTNDOzhHQVBZLDhCQUE4QjtrR0FBOUIsOEJBQThCLHFIQWxCL0I7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQlQsMkRBakJTLFlBQVksK0JBQUUsVUFBVSx5R0FBRSxPQUFPLDJKQUFFLFFBQVEsNkZBQUUsT0FBTzs7MkZBbUJuRCw4QkFBOEI7a0JBdEIxQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDO29CQUMvRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQlQ7aUJBQ0Y7OEJBT1UsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkl0ZW0sIElvbkxhYmVsLCBJb25JY29uLCBJb25TcGlubmVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5cbmltcG9ydCB7IElERUFPZmZsaW5lRGF0YVNlcnZpY2UsIENhY2hlYWJsZVJlc291cmNlIH0gZnJvbSAnLi9vZmZsaW5lRGF0YS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWRlYS1jYWNoZWFibGUtcmVzb3VyY2UnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25TcGlubmVyLCBJb25JY29uLCBJb25MYWJlbCwgSW9uSXRlbV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1pdGVtIGNsYXNzPVwiY2FjaGVhYmxlUmVzb3VyY2VJdGVtXCI+XG4gICAgICA8aW9uLWxhYmVsPnt7IHJlc291cmNlLmRlc2NyaXB0aW9uIH19PC9pb24tbGFiZWw+XG4gICAgICBAaWYgKHJlc291cmNlLmVycm9yKSB7XG4gICAgICAgIDxpb24taWNvbiBzbG90PVwiZW5kXCIgbmFtZT1cImFsZXJ0LWNpcmNsZVwiIGNvbG9yPVwiZGFuZ2VyXCIgLz5cbiAgICAgIH1cbiAgICAgIEBpZiAoIXJlc291cmNlLmVycm9yICYmIF9vZmZsaW5lLnN5bmNocm9uaXppbmcgJiYgcmVzb3VyY2Uuc3luY2hyb25pemluZykge1xuICAgICAgICA8aW9uLXNwaW5uZXIgc2xvdD1cImVuZFwiIG5hbWU9XCJkb3RzXCIgLz5cbiAgICAgIH1cbiAgICAgIEBpZiAoIXJlc291cmNlLmVycm9yICYmICFyZXNvdXJjZS5zeW5jaHJvbml6aW5nICYmICFfb2ZmbGluZS5yZXF1aXJlc01hbnVhbENvbmZpcm1hdGlvbikge1xuICAgICAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIG5hbWU9XCJjaGVja21hcmtcIiBjb2xvcj1cInN1Y2Nlc3NcIiAvPlxuICAgICAgfVxuICAgICAgQGlmICghcmVzb3VyY2UuZXJyb3IgJiYgIXJlc291cmNlLnN5bmNocm9uaXppbmcgJiYgX29mZmxpbmUucmVxdWlyZXNNYW51YWxDb25maXJtYXRpb24pIHtcbiAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJlbmRcIiBuYW1lPVwicGF1c2VcIiBjb2xvcj1cImRhcmtcIiAvPlxuICAgICAgfVxuICAgIDwvaW9uLWl0ZW0+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgSURFQUNhY2hlYWJsZVJlc291cmNlQ29tcG9uZW50IHtcbiAgX29mZmxpbmUgPSBpbmplY3QoSURFQU9mZmxpbmVEYXRhU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdWVjZSB0byBtYW5hZ2UuXG4gICAqL1xuICBASW5wdXQoKSByZXNvdXJjZTogQ2FjaGVhYmxlUmVzb3VyY2U7XG59XG4iXX0=
|
|
@@ -54,9 +54,10 @@ export class IDEAOfflineService {
|
|
|
54
54
|
return status.connected;
|
|
55
55
|
}
|
|
56
56
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAOfflineService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
57
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAOfflineService }); }
|
|
57
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAOfflineService, providedIn: 'root' }); }
|
|
58
58
|
}
|
|
59
59
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAOfflineService, decorators: [{
|
|
60
|
-
type: Injectable
|
|
60
|
+
type: Injectable,
|
|
61
|
+
args: [{ providedIn: 'root' }]
|
|
61
62
|
}], ctorParameters: () => [] });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZmbGluZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy91bmNvbW1vbi9zcmMvb2ZmbGluZS9vZmZsaW5lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRTdDOzs7R0FHRztBQUVILE1BQU0sT0FBTyxrQkFBa0I7SUFjN0I7UUFDRSx3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDcEMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLHFDQUFxQztZQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQ3hDLHFCQUFxQixFQUNyQixNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FDaEQsQ0FBQztZQUNGLGlHQUFpRztZQUNqRyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUMxQyxxRUFBcUU7Z0JBQ3JFLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLEVBQUU7b0JBQ3pFLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO29CQUNwQyxJQUFJLFFBQVE7d0JBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2hELENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUNEOztPQUVHO0lBQ0gsU0FBUyxDQUFDLFFBQXFDO1FBQzdDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzFCLENBQUM7SUFDRDs7T0FFRztJQUNILFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLEtBQUs7UUFDVCxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRTNCLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ3BDLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDOzhHQS9EVSxrQkFBa0I7a0hBQWxCLGtCQUFrQixjQURMLE1BQU07OzJGQUNuQixrQkFBa0I7a0JBRDlCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOZXR3b3JrIH0gZnJvbSAnQGNhcGFjaXRvci9uZXR3b3JrJztcblxuLyoqXG4gKiBVdGlsaXR5IHRvIG1vbml0b3IgdGhlIG5ldHdvcmsgY29ubmVjdGlvbi5cbiAqIE5vdGU6IGRvbid0IHVzZSBpdCBkaXJlY3RseSwgaWYgeW91J3JlIGFsc28gdXNpbmcgSURFQU9mZmxpbmVEYXRhU2VydmljZS5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBJREVBT2ZmbGluZVNlcnZpY2Uge1xuICAvKipcbiAgICogVHJ1ZS9mYWxzZSBpZiB0aGUgcGxhdGZvcm0gaXMgb2ZmbGluZS9vbmxpbmUuXG4gICAqL1xuICBwcm90ZWN0ZWQgX2lzT2ZmbGluZTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBvYnNlcnZhYmxlIGZvciBzdWJzY3JpYmluZyB0byBvbmxpbmUvb2ZmbGluZSBzdGF0dXMgY2hhbmdlcy5cbiAgICovXG4gIHByb3RlY3RlZCBvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAvKipcbiAgICogVGhlIGhhbmRsZXIgZm9yIGxpc3RlbmlnIHRvIG5ldHdvcmsgY2hhbmdlcy5cbiAgICovXG4gIHByb3RlY3RlZCBsaXN0ZW5lckhhbmRsZXI6IGFueTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBnZXQgYW4gaW5zdGFudCBzdGF0dXNcbiAgICB0aGlzLl9pc09mZmxpbmUgPSAhbmF2aWdhdG9yLm9uTGluZTtcbiAgICBpZiAoTmV0d29yaykge1xuICAgICAgLy8gc2V0IHRoZSBiYXNpYyBsaXN0ZW5lciBmb3IgY2hhbmdlc1xuICAgICAgdGhpcy5saXN0ZW5lckhhbmRsZXIgPSBOZXR3b3JrLmFkZExpc3RlbmVyKFxuICAgICAgICAnbmV0d29ya1N0YXR1c0NoYW5nZScsXG4gICAgICAgIHN0YXR1cyA9PiAodGhpcy5faXNPZmZsaW5lID0gIXN0YXR1cy5jb25uZWN0ZWQpXG4gICAgICApO1xuICAgICAgLy8gY3JlYXRlIHRoZSBvYnNlcnZhYmxlIHRvIHN1YnNjcmliZSB0byB0aGUgbmV0d29yayBjaGFuZ2VzOyBub3RlOiBpdCB3b24ndCBydW4gdW50aWwgc3Vic2NyaWJlZFxuICAgICAgdGhpcy5vYnNlcnZhYmxlID0gbmV3IE9ic2VydmFibGUob2JzZXJ2ZXIgPT4ge1xuICAgICAgICAvLyByZW1vdmUgdGhlIGJhc2ljIGxpc3RlbmVyIGFkZCBhZGQgb25lIHRoYXQgc3VwcG9ydHMgYSBzdWJzY3JpcHRpb25cbiAgICAgICAgTmV0d29yay5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgICAgdGhpcy5saXN0ZW5lckhhbmRsZXIgPSBOZXR3b3JrLmFkZExpc3RlbmVyKCduZXR3b3JrU3RhdHVzQ2hhbmdlJywgc3RhdHVzID0+IHtcbiAgICAgICAgICB0aGlzLl9pc09mZmxpbmUgPSAhc3RhdHVzLmNvbm5lY3RlZDtcbiAgICAgICAgICBpZiAob2JzZXJ2ZXIpIG9ic2VydmVyLm5leHQoc3RhdHVzLmNvbm5lY3RlZCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gYmUgbm90aWZpZWQgd2hlbiB0aGUgY29ubmVjdGlvbiBzdGF0dXMgY2hhbmdlcy5cbiAgICovXG4gIHN1YnNjcmliZShjYWxsYmFjazogKGlzT25saW5lOiBib29sZWFuKSA9PiB2b2lkKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5vYnNlcnZhYmxlLnN1YnNjcmliZShjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogUXVpY2tseSBjaGVjayB0aGUgY29ubmVjdGlvbiBzdGF0dXMuXG4gICAqL1xuICBpc09ubGluZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuX2lzT2ZmbGluZTtcbiAgfVxuICAvKipcbiAgICogUXVpY2tseSBjaGVjayB0aGUgY29ubmVjdGlvbiBzdGF0dXMuXG4gICAqL1xuICBpc09mZmxpbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzT2ZmbGluZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBRdWlja2x5IGNoZWNrIGZvciBvbmxpbmUgY29ubmVjdGlvbi5cbiAgICovXG4gIGFzeW5jIGNoZWNrKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICghTmV0d29yaykgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgTmV0d29yay5nZXRTdGF0dXMoKTtcbiAgICB0aGlzLl9pc09mZmxpbmUgPSAhc3RhdHVzLmNvbm5lY3RlZDtcbiAgICByZXR1cm4gc3RhdHVzLmNvbm5lY3RlZDtcbiAgfVxufVxuIl19
|
|
@@ -458,10 +458,11 @@ export class IDEAOfflineDataService {
|
|
|
458
458
|
this._storage.clear().then(() => this.synchronize(true));
|
|
459
459
|
}
|
|
460
460
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAOfflineDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
461
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAOfflineDataService }); }
|
|
461
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAOfflineDataService, providedIn: 'root' }); }
|
|
462
462
|
}
|
|
463
463
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAOfflineDataService, decorators: [{
|
|
464
|
-
type: Injectable
|
|
464
|
+
type: Injectable,
|
|
465
|
+
args: [{ providedIn: 'root' }]
|
|
465
466
|
}], ctorParameters: () => [] });
|
|
466
467
|
/**
|
|
467
468
|
* The abstract class to implement for each resource to cache offline from the back-end (DOWNLOAD).
|
|
@@ -476,4 +477,4 @@ export class CacheableResource {
|
|
|
476
477
|
this.teamId = null;
|
|
477
478
|
}
|
|
478
479
|
}
|
|
479
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZmbGluZURhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvdW5jb21tb24vc3JjL29mZmxpbmUvb2ZmbGluZURhdGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRixPQUFPLEVBQUUsaUJBQWlCLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBRXZEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsUUFBUTtBQUNyRTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLHFDQUFxQyxDQUFDO0FBQzVFOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLCtCQUErQixDQUFDO0FBQzdEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLEdBQUcsQ0FBQztBQUNwRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLEdBQUcsQ0FBQztBQUVqRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQ0c7QUFFSCxNQUFNLE9BQU8sc0JBQXNCO0lBcURqQztRQXBEVSxhQUFRLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdEMsZUFBVSxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzdDLGFBQVEsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN0QyxTQUFJLEdBQUcsTUFB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MkZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVTs7QUFxZFg7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGlCQUFpQjtJQXVCckMsWUFBWSxRQUFnQixFQUFFLFdBQW1CO1FBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0NBc0JGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERlbHRhLCBEZWx0YVJlY29yZCwgRGVsdGFSZXNvdXJjZXMsIGVwb2NoRGF0ZVRpbWUgfSBmcm9tICdpZGVhLXRvb2xib3gnO1xuaW1wb3J0IHsgSURFQVN0b3JhZ2VTZXJ2aWNlLCBJREVBVHJhbnNsYXRpb25zU2VydmljZSB9IGZyb20gJ0BpZGVhLWlvbmljL2NvbW1vbic7XG5cbmltcG9ydCB7IElERUFBV1NBUElTZXJ2aWNlLCBBUElSZXF1ZXN0T3B0aW9uIH0gZnJvbSAnLi4vQVdTQVBJLnNlcnZpY2UnO1xuaW1wb3J0IHsgSURFQU9mZmxpbmVTZXJ2aWNlIH0gZnJvbSAnLi9vZmZsaW5lLnNlcnZpY2UnO1xuXG4vKipcbiAqIEFmdGVyIGhvdyBtdWNoIHRpbWUgd2UgbmVlZCB0byByZXF1ZXN0IGEgc3luY2hyb25pc2F0aW9uIHRvIGtlZXAgdGhlIGNvbnRlbnRzIHVwLXRvLWRhdGUuXG4gKi9cbmV4cG9ydCBjb25zdCBTWU5DX0VYUElSQVRJT05fSU5URVJWQUwgPSAxMDAwICogNjAgKiA2MCAqIDI0OyAvLyBhIGRheVxuLyoqXG4gKiBQcmVmaXggZm9yIHRoZSBrZXkgb2YgdGhlIEFQSSByZXF1ZXN0cyBxdWV1ZSBpbmZvIGluIHRoZSBsb2NhbCBzdG9yYWdlLlxuICovXG5leHBvcnQgY29uc3QgUVVFVUVfQVBJX1JFUVVFU1RTX0tFWSA9ICdJREVBT2ZmbGluZVNlcnZpY2UucXVldWVBUElyZXF1ZXN0cyc7XG4vKipcbiAqIFByZWZpeCBmb3IgdGhlIGtleSBvZiB0aGUgbGFzdCBzeW5jIHRpbWUgaW5mbyBpbiB0aGUgbG9jYWwgc3RvcmFnZS5cbiAqL1xuZXhwb3J0IGNvbnN0IExBU1RfU1lOQ19LRVkgPSAnSURFQU9mZmxpbmVTZXJ2aWNlLmxhc3RTeW5jQXQnO1xuLyoqXG4gKiBUaGUgbWF4IG51bWJlciBvZiBlbGVtZW50cyBwZXIgcmVzb3VyY2UgdG8gc3luY2hyb25pemUgZHVyaW5nIHRoZSBmaXJzdCBhbmFseXNpcyBvZiBhIHN5bmNocm9uaXNhdGlvbi5cbiAqIElmIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZXhjZWVkcyAodGhlcmUgaXMgbW9yZSBkYXRhIGFmdGVyIHRoZSAxc3QgcGFnZSksIHRoZSBvcGVyYXRpb24gcmVxdWlyZSBtYW51YWwgY29uZmlybWF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgTlVNX0VMRU1FTlRTX1dJVEhPVVRfTUFOVUFMX1NZTkMgPSAxMDA7XG4vKipcbiAqIFRoZSBtYXggbnVtYmVyIG9mIGVsZW1lbnRzIHBlciByZXNvdXJjZSB0byByZXF1ZXN0IGF0IHRoZSBzYW1lIHRpbWUgZHVyaW5nIGEgbm9ybWFsIHN5bmNocm9uaXNhdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IE5VTV9FTEVNRU5UU19XSVRIX01BTlVBTF9TWU5DID0gMzAwO1xuXG4vKipcbiAqIE1hbmFnZSB0aGUgb2ZmbGluZSBmdW5jdGlvbmluZyBvZiB0aGUgYXBwJ3MgZGF0YSAodXBsb2FkL2Rvd25sb2FkL3N5bmNocm9uaXphdGlvbikuXG4gKiBOb3RlOiBpdCBpbmNsdWRlcyBhbGwgdGhlIG1ldGhvZHMgb2YgSURFQU9mZmxpbmVTZXJ2aWNlLlxuICpcbiAqIERvd25sb2FkOiBpdCB3b3JrcyB0aHJvdWdoIHRoZSAqKkRlbHRhKiogbWVjaGFuaXNtIG9uIGJhY2stZW5kIHJlc291cmNlcy5cbiAqIFByYWN0aWNhbGx5LCB0aGUgc2VydmljZSBwcmVwYXJlcyBlYWNoIHBvc3NpYmxlIEFQSSBHRVQgcmVxdWVzdHMgZm9yIGVhY2ggb2YgdGhlIGludm9sdmVkIHJlc291cmNlcy5cbiAqIEluIHRoaXMgd2F5LCBpZiBvZmZsaW5lLCB0aGUgQVBJIHNlcnZpY2UgY2FuIGhpdCBhbiBlbGVtZW50IGJ5IFVSTCBpbiB0aGUgY2FjaGUgKHN0b3JhZ2Ugb2ZmbGluZSkuXG4gKlxuICogKipIb3cgdG8gdXNlIGl0KiouIENvbmZpZ3VyZSB0aGUgc3luYyBtZWNoYW5pc20gaW4gdGhlIG1haW4gYXBwLmNvbXBvbmVudCBhcyBpdCBmb2xsb3dzOlxuICpcbiAqICAgIDEuIEltcGxlbWVudCBhIENhY2hlYWJsZVJlc291cmNlIGNsYXNzIGZvciBlYWNoIERlbHRhUmVzb3VyY2UgeW91IHdhbnQgdG8gY2FjaGUgb2ZmbGluZS5cbiAqICAgIDIuIFNldCB1cCB0aGUgc2VydmljZSAoYHNldFVwT2ZmbGluZURhdGFgKS5cbiAqICAgIDMuIFJ1biBhIHN5bmNocm9uaXphdGlvbi5cbiAqICAgIDQuIEFkZCB0aGUgbmF2aWdhdGlvbiB0byB0aGUgT2ZmbGluZSBNYW5hZ2VyIChVSSkuXG4gKiAgICA1LiBPcHRpb25hbGx5LCBwdXNoIG9mZmxpbmUgQVBJIHJlcXVlc3RzIHRvIHRoZSBxdWV1ZSB3aGVuIG9mZmxpbmUuXG4gKlxuICogZS5nLiBvZiBDYWNoZWFibGVSZXNvdXJjZSBjbGFzc2VzOlxuICogYGBgXG4gKiBjbGFzcyBDdXN0b21lckNSIGV4dGVuZHMgQ2FjaGVhYmxlUmVzb3VyY2Uge1xuICogICBjb25zdHJ1Y3RvcihkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gKiAgICAgc3VwZXIoRGVsdGFSZXNvdXJjZXMuQ1VTVE9NRVJTLCBkZXNjcmlwdGlvbik7XG4gKiAgIH1cbiAqICAgcHVibGljIGxpc3RVUkwoZWxlbWVudDogYW55KTogc3RyaW5nIHtcbiAqICAgICByZXR1cm4gYHRlYW1zLyR7ZWxlbWVudC50ZWFtSWR9L2N1c3RvbWVyc2A7XG4gKiAgIH1cbiAqICAgcHVibGljIGVsZW1lbnRVUkwoZWxlbWVudDogYW55KTogc3RyaW5nIHtcbiAqICAgICByZXR1cm4gYHRlYW1zLyR7ZWxlbWVudC50ZWFtSWR9L2N1c3RvbWVycy8ke2VsZW1lbnQuY3VzdG9tZXJJZH1gO1xuICogICB9XG4gKiAgIHB1YmxpYyBmaW5kSW5kZXhJbkxpc3QobGlzdDogQXJyYXk8YW55PiwgZWxlbWVudDogYW55KTogbnVtYmVyIHtcbiAqICAgICByZXR1cm4gbGlzdC5maW5kSW5kZXgoeCA9PiB4LmN1c3RvbWVySWQgPT09IGVsZW1lbnQuY3VzdG9tZXJJZCk7XG4gKiAgIH1cbiAqICAgcHVibGljIHNvcnQoYTogYW55LCBiOiBhbnkpOiBudW1iZXIge1xuICogICAgIHJldHVybiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpO1xuICogICB9XG4gKiB9XG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJREVBT2ZmbGluZURhdGFTZXJ2aWNlIHtcbiAgcHJvdGVjdGVkIF9zdG9yYWdlID0gaW5qZWN0KElERUFTdG9yYWdlU2VydmljZSk7XG4gIHByb3RlY3RlZCBfdHJhbnNsYXRlID0gaW5qZWN0KElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIF9vZmZsaW5lID0gaW5qZWN0KElERUFPZmZsaW5lU2VydmljZSk7XG4gIHByb3RlY3RlZCBfQVBJID0gaW5qZWN0KElERUFBV1NBUElTZXJ2aWNlKTtcblxuICAvKipcbiAgICogVHJ1ZSB3aGVuIHJ1bm5pbmcgYSBzeW5jaHJvbml6YXRpb24uXG4gICAqL1xuICBzeW5jaHJvbml6aW5nOiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIHRpbWVzdGFtcCBvZiB0aGUgbGFzdCBzeW5jaHJvbml6YXRpb24uXG4gICAqL1xuICBsYXN0U3luY0F0OiBlcG9jaERhdGVUaW1lO1xuICAvKipcbiAgICogVHJ1ZSBpZiBhbiBlcnJvciBoYXBwZW5lZCBpbiB0aGUgbGFzdCBzeW5jaHJvbml6YXRpb24uXG4gICAqL1xuICBlcnJvckluTGFzdFN5bmM6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUcnVlIGlmIHRoZSBzeW5jaHJvbmlzYXRpb24gaXMgdG9vIHZhc3QgYW5kIHNvIHJlcXVpcmUgYSBtYW51YWwgYWN0aW9uIG9mIHRoZSB1c2VyLlxuICAgKi9cbiAgcmVxdWlyZXNNYW51YWxDb25maXJtYXRpb246IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJZiBmYWxzZSwgaWdub3JlIHRoZSBlbnRpcmUgdXBsb2FkIHNjZW5hcmlvLlxuICAgKi9cbiAgdXNlUXVldWVBUElSZXF1ZXN0czogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBhcnJheSBvZiB0aGUgcmVxdWVzdHMgbm90IGV4ZWN1dGVkIGJlY2F1c2Ugd2UgYXJlL3dlcmUgb2ZmbGluZTsgdGhleSBuZWVkIHRvIHJ1biBvbmNlIG9ubGluZS5cbiAgICovXG4gIHF1ZXVlQVBJUmVxdWVzdHM6IEFQSVJlcXVlc3RbXTtcblxuICAvKipcbiAgICogVGhlIGlkIG9mIHRoZSB0ZWFtIG9mIHdoaWNoIHRvIG1hbmFnZSBkYXRhIG9mZmxpbmUuXG4gICAqIElmIG51bGwsIHRoZSBwcm9qZWN0IGlzbid0IHRlYW1zLWJhc2VkLlxuICAgKi9cbiAgcHJvdGVjdGVkIHRlYW1JZDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGFycmF5IG9mIERlbHRhUmVzb3VyY2VzIHRvIGNhY2hlIG9mZmxpbmUuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVzb3VyY2VzOiAoRGVsdGFSZXNvdXJjZXMgfCBzdHJpbmcpW107XG4gIC8qKlxuICAgKiBIZWxwZXIgc3RydWN0dXJlIHRvIG1hbmFnZSB0aGUgQ2FjaGVhYmxlUmVzb3VyY2UgZm9yIGVhY2ggRGVsdGFSZXNvdXJjZS5cbiAgICovXG4gIHByb3RlY3RlZCBjYWNoZWFibGVSZXNvdXJjZXM6IHsgW3Jlc291cmNlOiBzdHJpbmddOiBDYWNoZWFibGVSZXNvdXJjZSB9O1xuICAvKipcbiAgICogS2V5IHRvIGFjcXVpcmUgZnJvbSB0aGUgc3RvcmFnZSB0aGUgbGFzdFN5bmNBdCBpbmZvcm1hdGlvbiBvZiB0aGUgdGVhbS5cbiAgICovXG4gIHByb3RlY3RlZCBsYXN0U3luY0tleTogc3RyaW5nO1xuICAvKipcbiAgICogS2V5IHRvIGFjcXVpcmUgZnJvbSB0aGUgc3RvcmFnZSB0aGUgbGFzdFN5bmNBdCBpbmZvcm1hdGlvbiBvZiB0aGUgdGVhbS5cbiAgICovXG4gIHByb3RlY3RlZCBxdWV1ZUFQSVJlcXVlc3RLZXk6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnF1ZXVlQVBJUmVxdWVzdHMgPSBuZXcgQXJyYXk8QVBJUmVxdWVzdD4oKTtcbiAgICB0aGlzLnJlc291cmNlcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgdGhpcy5jYWNoZWFibGVSZXNvdXJjZXMgPSB7fTtcbiAgICAvLyBzdWJzY3JpYmUgdG8gbmV0d29yayBjaGFuZ2VzXG4gICAgdGhpcy5fb2ZmbGluZS5zdWJzY3JpYmUoaXNPbmxpbmUgPT4ge1xuICAgICAgaWYgKGlzT25saW5lKSB7XG4gICAgICAgIC8vIHRyeSBhIHN5bmNocm9uaXphdGlvbiBpZiBuZWVkZWQgb3IgaWYgdGhlIGxhc3Qgb25lIGZhaWxlZFxuICAgICAgICBpZiAodGhpcy5lcnJvckluTGFzdFN5bmMpIHRoaXMuc3luY2hyb25pemUoKTtcbiAgICAgICAgZWxzZSB0aGlzLnN5bmNocm9uaXplSWZOZWVkZWQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vXG4gIC8vIE5FVFdPUksgU1RBVFVTIGZyb20gSURFQU9mZmxpbmVTZXJ2aWNlXG4gIC8vXG5cbiAgLyoqXG4gICAqIFF1aWNrbHkgY2hlY2sgdGhlIGNvbm5lY3Rpb24gc3RhdHVzLlxuICAgKi9cbiAgaXNPbmxpbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX29mZmxpbmUuaXNPbmxpbmUoKTtcbiAgfVxuICAvKipcbiAgICogUXVpY2tseSBjaGVjayB0aGUgY29ubmVjdGlvbiBzdGF0dXMuXG4gICAqL1xuICBpc09mZmxpbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX29mZmxpbmUuaXNPZmZsaW5lKCk7XG4gIH1cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byB0aGUgc2VydmljZSB0byBiZSBub3RpZmllZCB3aGVuIHRoZSBjb25uZWN0aW9uIHN0YXR1cyBjaGFuZ2VzLlxuICAgKi9cbiAgc3Vic2NyaWJlKGNhbGxiYWNrOiAoaXNPbmxpbmU6IGJvb2xlYW4pID0+IHZvaWQpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLl9vZmZsaW5lLnN1YnNjcmliZShjYWxsYmFjayk7XG4gIH1cbiAgLyoqXG4gICAqIFF1aWNrbHkgY2hlY2sgZm9yIG9ubGluZSBjb25uZWN0aW9uLlxuICAgKi9cbiAgcHVibGljIGNoZWNrKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9vZmZsaW5lLmNoZWNrKCk7XG4gIH1cblxuICAvL1xuICAvLyBDT05GSUdVUkFUSU9OXG4gIC8vXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIG9mZmxpbmUgbW9kZSBpcyBhbGxvd2VkLiBZb3UgY2FuIGN1c3RvbWl6ZSB0aGlzIGZ1bmN0aW9uLCBpZiBuZWVkZWQuXG4gICAqL1xuICBpc0FsbG93ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yZXNvdXJjZXMubGVuZ3RoO1xuICB9XG4gIC8qKlxuICAgKiBTZXQgdXAgdGhlIHNlcnZpY2UgdG8gdXNlIGFuZCBzeW5jIG9mZmxpbmUgZGF0YS5cbiAgICovXG4gIHNldFVwT2ZmbGluZURhdGEodGVhbUlkOiBzdHJpbmcsIHVzZVF1ZXVlQVBJUmVxdWVzdHM6IGJvb2xlYW4sIGNhY2hlYWJsZVJlc291cmNlczogQ2FjaGVhYmxlUmVzb3VyY2VbXSk6IHZvaWQge1xuICAgIC8vIHNldCB0aGUgdGVhbVxuICAgIHRoaXMudGVhbUlkID0gdGVhbUlkO1xuICAgIC8vIGRlY2lkZSBpZiB0byBhbGxvdyBjZXJ0YWluIEFQSSByZXF1ZXN0IHdoaWxlIG9mZmxpbmVcbiAgICB0aGlzLnVzZVF1ZXVlQVBJUmVxdWVzdHMgPSB1c2VRdWV1ZUFQSVJlcXVlc3RzO1xuICAgIC8vIGxvYWQgdGhlIEFQSSByZXF1ZXN0IHBlbmRpbmcgcXVldWUsIGlmIGFueVxuICAgIHRoaXMucXVldWVBUElSZXF1ZXN0S2V5ID0gdGhpcy50ZWFtSWQgPyBgJHtRVUVVRV9BUElfUkVRVUVTVFNfS0VZfV8ke3RoaXMudGVhbUlkfWAgOiBRVUVVRV9BUElfUkVRVUVTVFNfS0VZO1xuICAgIHRoaXMubG9hZFF1ZXVlQVBJUmVxdWVzdCgpO1xuICAgIC8vIGxvYWQgdGhlIGxhc3RTeW5jQXQgaW5mb3JtYXRpb24gZm9yIHRoZSB0ZWFtXG4gICAgdGhpcy5sYXN0U3luY0tleSA9IHRoaXMudGVhbUlkID8gYCR7TEFTVF9TWU5DX0tFWX1fJHt0aGlzLnRlYW1JZH1gIDogTEFTVF9TWU5DX0tFWTtcbiAgICB0aGlzLmxvYWRMYXN0U3luY0F0KCk7XG4gICAgLy8gbG9hZCB0aGUgY2FjaGVhYmxlIHJlc291cmNlc1xuICAgIHRoaXMucmVzb3VyY2VzID0gbmV3IEFycmF5PERlbHRhUmVzb3VyY2VzIHwgc3RyaW5nPigpO1xuICAgIHRoaXMuY2FjaGVhYmxlUmVzb3VyY2VzID0ge307XG4gICAgY2FjaGVhYmxlUmVzb3VyY2VzLmZvckVhY2gociA9PiB0aGlzLmFkZENhY2hlYWJsZVJlc291cmNlKHIpKTtcbiAgfVxuICAvKipcbiAgICogTG9hZCBmcm9tIHRoZSBsb2NhbCBzdG9yYWdlIHRoZSBsYXN0IHN5bmMgYXQgaW5mb3JtYXRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgbG9hZExhc3RTeW5jQXQoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICB0aGlzLl9zdG9yYWdlLmdldCh0aGlzLmxhc3RTeW5jS2V5KS50aGVuKChsYXN0U3luY0F0OiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5sYXN0U3luY0F0ID0gbGFzdFN5bmNBdCA/IE51bWJlcihsYXN0U3luY0F0KSA6IG51bGw7XG4gICAgICAgIHJlc29sdmUodGhpcy5sYXN0U3luY0F0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBVcGRhdGUgbGFzdCBzeW5jIGF0IGluZm8gaW4gdGhlIGxvY2FsIHN0b3JhZ2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2F2ZUxhc3RTeW5jQXQobGFzdFN5bmNBdDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5sYXN0U3luY0F0ID0gbGFzdFN5bmNBdDtcbiAgICByZXR1cm4gdGhpcy5fc3RvcmFnZS5zZXQodGhpcy5sYXN0U3luY0tleSwgbGFzdFN5bmNBdCk7XG4gIH1cbiAgLyoqXG4gICAqIEFkZCBhIENhY2hlYWJsZVJlc291cmNlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFkZENhY2hlYWJsZVJlc291cmNlKGNhY2hlYWJsZVJlc291cmNlOiBDYWNoZWFibGVSZXNvdXJjZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRlYW1JZCkgY2FjaGVhYmxlUmVzb3VyY2UudGVhbUlkID0gdGhpcy50ZWFtSWQ7XG4gICAgdGhpcy5jYWNoZWFibGVSZXNvdXJjZXNbY2FjaGVhYmxlUmVzb3VyY2UucmVzb3VyY2VdID0gY2FjaGVhYmxlUmVzb3VyY2U7XG4gICAgdGhpcy5yZXNvdXJjZXMucHVzaChjYWNoZWFibGVSZXNvdXJjZS5yZXNvdXJjZSk7XG4gIH1cbiAgLyoqXG4gICAqIFJlbW92ZSBhIENhY2hlYWJsZVJlc291cmNlIGJ5IGl0cyBEZWx0YVJlc291cmNlLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlbW92ZUNhY2hlYWJsZVJlc291cmNlKHJlc291cmNlOiBEZWx0YVJlc291cmNlcyB8IHN0cmluZyk6IHZvaWQge1xuICAgIGRlbGV0ZSB0aGlzLmNhY2hlYWJsZVJlc291cmNlc1tyZXNvdXJjZV07XG4gICAgdGhpcy5yZXNvdXJjZXMuc3BsaWNlKHRoaXMucmVzb3VyY2VzLmluZGV4T2YocmVzb3VyY2UpLCAxKTtcbiAgfVxuICAvKipcbiAgICogR2V0IHRoZSB0aGUgRGVsdGFSZXNvdXJjZWQgY29uZmlndXJlZC5cbiAgICovXG4gIGdldFJlc291cmNlcygpOiAoRGVsdGFSZXNvdXJjZXMgfCBzdHJpbmcpW10ge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlcztcbiAgfVxuICAvKipcbiAgICogR2V0IGEgQ2FjaGVhYmxlUmVzb3VyY2UgYnkgaXRzIERlbHRhUmVzb3VyY2UuXG4gICAqL1xuICBnZXRDYWNoZWFibGVSZXNvdXJjZShyZXNvdXJjZTogRGVsdGFSZXNvdXJjZXMgfCBzdHJpbmcpOiBDYWNoZWFibGVSZXNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVhYmxlUmVzb3VyY2VzW3Jlc291cmNlXTtcbiAgfVxuXG4gIC8vXG4gIC8vIFVQTE9BRFxuICAvL1xuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGFsbCB0aGUgQVBJIHJlcXVlc3RzIGluIHRoZSBxdWV1ZTsgdGhlIHJlcXVlc3RzIHRlcm1pbmF0ZWQgd2l0aCBhbiBlcnJvciB3aWxsIHJlbWFpbiBpbiB0aGUgcXVldWUuXG4gICAqL1xuICBwcm90ZWN0ZWQgcnVuUXVldWVBUElSZXF1ZXN0cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKCF0aGlzLnVzZVF1ZXVlQVBJUmVxdWVzdHMgfHwgdGhpcy5pc09mZmxpbmUoKSB8fCAhdGhpcy5xdWV1ZUFQSVJlcXVlc3RzLmxlbmd0aCkgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgIHRoaXMucXVldWVBUElSZXF1ZXN0cy5mb3JFYWNoKGFzeW5jIHJlcXVlc3QgPT4ge1xuICAgICAgICBjb25zdCBvcHRpb25zOiBBUElSZXF1ZXN0T3B0aW9uID0ge307XG4gICAgICAgIGlmIChyZXF1ZXN0LnJlc291cmNlSWQpIG9wdGlvbnMucmVzb3VyY2VJZCA9IHJlcXVlc3QucmVzb3VyY2VJZDtcbiAgICAgICAgaWYgKHJlcXVlc3QuYm9keSkgb3B0aW9ucy5ib2R5ID0gcmVxdWVzdC5ib2R5O1xuICAgICAgICBsZXQgcHJvbWlzZTogUHJvbWlzZTxhbnk+O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHN3aXRjaCAocmVxdWVzdC5tZXRob2QudG9VcHBlckNhc2UoKSkge1xuICAgICAgICAgICAgY2FzZSAnUE9TVCc6XG4gICAgICAgICAgICAgIHByb21pc2UgPSBhd2FpdCB0aGlzLl9BUEkucG9zdFJlc291cmNlKHJlcXVlc3QucmVzb3VyY2UsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1BVVCc6XG4gICAgICAgICAgICAgIHByb21pc2UgPSBhd2FpdCB0aGlzLl9BUEkucHV0UmVzb3VyY2UocmVxdWVzdC5yZXNvdXJjZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUEFUQ0gnOlxuICAgICAgICAgICAgICBwcm9taXNlID0gYXdhaXQgdGhpcy5fQVBJLnBhdGNoUmVzb3VyY2UocmVxdWVzdC5yZXNvdXJjZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIXByb21pc2UpIHJlcXVlc3QuZXJyb3IgPSAnSU5WQUxJRF9NRVRIT0QnO1xuICAgICAgICAgIGVsc2UgcmVxdWVzdC5lcnJvciA9IG51bGw7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIHJlcXVlc3QuZXJyb3IgPSAoZXJyIGFzIEVycm9yKS5tZXNzYWdlIHx8ICdVTktOT1dOX0VSUk9SJztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvLyBrZWVwIHRoZSByZXF1ZXN0cyBOT1Qgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkXG4gICAgICB0aGlzLnNhdmVRdWV1ZUFQSVJlcXVlc3QodGhpcy5xdWV1ZUFQSVJlcXVlc3RzLmZpbHRlcih4ID0+IHguZXJyb3IpKS50aGVuKCgpOiB2b2lkID0+IHtcbiAgICAgICAgLy8gaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LCB0aGUgZW50aXJlIG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bFxuICAgICAgICBpZiAodGhpcy5xdWV1ZUFQSVJlcXVlc3RzLmxlbmd0aCkgcmVqZWN0KCk7XG4gICAgICAgIGVsc2UgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIExvYWQgZnJvbSB0aGUgbG9jYWwgc3RvcmFnZSB0aGUgQVBJIHJlcXVlc3RzIHF1ZXVlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGxvYWRRdWV1ZUFQSVJlcXVlc3QoKTogUHJvbWlzZTxBUElSZXF1ZXN0W10+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBpZiAoIXRoaXMudXNlUXVldWVBUElSZXF1ZXN0cykgcmV0dXJuIHJlc29sdmUoW10pO1xuICAgICAgdGhpcy5fc3RvcmFnZS5nZXQodGhpcy5xdWV1ZUFQSVJlcXVlc3RLZXkpLnRoZW4oKHF1ZXVlOiBBUElSZXF1ZXN0W10pOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5xdWV1ZUFQSVJlcXVlc3RzID0gcXVldWUgfHwgW107XG4gICAgICAgIHJlc29sdmUodGhpcy5xdWV1ZUFQSVJlcXVlc3RzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHF1ZXVlIGluIG1lbW9yeSBhbmQgYWxzbyBzYXZlIHRoZSBjb3B5IGluIHRoZSBsb2NhbCBzdG9yYWdlLlxuICAgKi9cbiAgc2F2ZVF1ZXVlQVBJUmVxdWVzdChxdWV1ZT86IEFQSVJlcXVlc3RbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5pc0FsbG93ZWQoKSkgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgdGhpcy5xdWV1ZUFQSVJlcXVlc3RzID0gcXVldWUgfHwgdGhpcy5xdWV1ZUFQSVJlcXVlc3RzO1xuICAgIHJldHVybiB0aGlzLl9zdG9yYWdlLnNldCh0aGlzLnF1ZXVlQVBJUmVxdWVzdEtleSwgdGhpcy5xdWV1ZUFQSVJlcXVlc3RzKTtcbiAgfVxuICAvKipcbiAgICogRGVsZXRlIGEgcmVxdWVzdCBzdHVjayBpbiBhbiBlcnJvci5cbiAgICovXG4gIGRlbGV0ZVJlcXVlc3QocmVxdWVzdDogQVBJUmVxdWVzdCkge1xuICAgIGlmICghdGhpcy5pc0FsbG93ZWQoKSkgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgaWYgKHJlcXVlc3QpIHtcbiAgICAgIHRoaXMucXVldWVBUElSZXF1ZXN0cy5zcGxpY2UodGhpcy5xdWV1ZUFQSVJlcXVlc3RzLmluZGV4T2YocmVxdWVzdCksIDEpO1xuICAgICAgdGhpcy5zYXZlUXVldWVBUElSZXF1ZXN0KCk7XG4gICAgfVxuICB9XG5cbiAgLy9cbiAgLy8gRE9XTkxPQURcbiAgLy9cblxuICAvKipcbiAgICogU2F2ZSB0aGUgcmVjb3JkcyBvZiBhIGRlbHRhIGFuZCwgaWYgdGhlIGxhdHRlciBoYXMgbW9yZSBwYWdlcywgZ28gcmVjdXJzaXZlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIHN5bmNEZWx0YVJlY29yZHMoZGVsdGE6IERlbHRhLCBkb25lPzogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICAvLyBmb3IgZWFjaCByZXNvdXJjZSwgd2UgcmVzZXQgdGhlIHN0YXR1czsgaWYgYSByZXNvdXJjZSBzdGlsbCBuZWVkIHRvIGJlIHN5bmNocm9uaXplZCwgaXQgd2lsbCBiZSBmbGFnZ2VkIGJlbG93XG4gICAgdGhpcy5yZXNvdXJjZXMuZm9yRWFjaChyZXNvdXJjZSA9PiB7XG4gICAgICB0aGlzLmNhY2hlYWJsZVJlc291cmNlc1tyZXNvdXJjZV0uZXJyb3IgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2FjaGVhYmxlUmVzb3VyY2VzW3Jlc291cmNlXS5zeW5jaHJvbml6aW5nID0gZmFsc2U7XG4gICAgfSk7XG4gICAgdHJ5IHtcbiAgICAgIC8vIHN5bmNocm9uemUgZWFjaCBvZiB0aGUgcmVzb3VyY2VzIGluY2x1ZGVkIGluIHRoZSBkZWx0YTsgdGhpcyBleGVjdXRpb24gY2FuIGdvIGluIHBhcmFsbGVsXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgZGVsdGEucmVzb3VyY2VzLm1hcChhc3luYyByZXNvdXJjZSA9PiB7XG4gICAgICAgICAgY29uc3QgY3IgPSB0aGlzLmNhY2hlYWJsZVJlc291cmNlc1tyZXNvdXJjZV07XG4gICAgICAgICAgaWYgKGNyKSB7XG4gICAgICAgICAgICAvLyBzeW5jaHJvbml6ZSB0aGUgZGVsdGEgcmVjb3Jkczsgbm90ZTogdGhlIGV4ZWN1dHVpb24gaW5zaWRlIGEgcmVzb3VyY2UgbXVzdCBnbyBpbiBzZXJpZXNcbiAgICAgICAgICAgIGNyLnN5bmNocm9uaXppbmcgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IHRoaXMuc3luY1Jlc291cmNlRGVsdGFSZWNvcmRzKHJlc291cmNlLCBkZWx0YS5yZWNvcmRzW3Jlc291cmNlXSk7XG4gICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHRoaXMuZXJyb3JJbkxhc3RTeW5jID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgLy8gaWYgdGhlcmUgd2VyZSBlcnJvciBvZiBpZiB0aGVyZSBpcyBub3RoaW5nIGxlZnQgdG8gc3luYywgd2UgYXJlIGRvbmVcbiAgICAgIGlmICh0aGlzLmVycm9ySW5MYXN0U3luYyB8fCAhZGVsdGEubmV4dCkgcmV0dXJuIGRvbmUoKTtcbiAgICAgIC8vIG90aGVyd2lzZSwgZ2V0IHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIGRlbHRhIGFuZCBnbyByZWN1cnNpdmUgdW50aWwgd2UgYXJlIGRvbmVcbiAgICAgIGNvbnN0IHBhcmFtczogYW55ID0geyBuZXh0OiBkZWx0YS5uZXh0LCBsaW1pdDogTlVNX0VMRU1FTlRTX1dJVEhfTUFOVUFMX1NZTkMgfTtcbiAgICAgIGlmICh0aGlzLmxhc3RTeW5jQXQpIHBhcmFtcy5zaW5jZSA9IHRoaXMubGFzdFN5bmNBdDtcbiAgICAgIGNvbnN0IG5ld0RlbHRhID0gYXdhaXQgdGhpcy5fQVBJLmdldFJlc291cmNlKHRoaXMudGVhbUlkID8gYHRlYW1zLyR7dGhpcy50ZWFtSWR9L2RlbHRhYCA6ICdkZWx0YScsIHsgcGFyYW1zIH0pO1xuICAgICAgdGhpcy5zeW5jRGVsdGFSZWNvcmRzKG5ld0RlbHRhLCBkb25lKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIGlmIHNvbWV0aGluZyB3ZW50IHdyb25nLCBzdG9wcyB0aGUgb3BlcmF0aW9uLCBzaW5jZSB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZW50aXJlIGZsb3cgaXMgY29uc2lzdGVudFxuICAgICAgdGhpcy5lcnJvckluTGFzdFN5bmMgPSB0cnVlO1xuICAgICAgcmV0dXJuIGRvbmUoKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFNhdmUgb2ZmbGluZSBhIGxpc3Qgb2YgRGVsdGFSZWNvcmRzIGZvciB0aGlzIHJlc291cmNlLCBjcmVhdGluZyBhIG1hcCBvZiBhbGwgdGhlIGNvcnJlc3BvbmRpbmcgQVBJIEdFVCByZXF1ZXN0cy5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBzeW5jUmVzb3VyY2VEZWx0YVJlY29yZHMocmVzb3VyY2U6IHN0cmluZywgcmVjb3JkczogRGVsdGFSZWNvcmRbXSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIC8vIGFjcXVpcmUgdGhlIGluZm8gYW4gYSBjYWNoZWFibGUgcmVzb3VyY2VcbiAgICBjb25zdCBjciA9IHRoaXMuY2FjaGVhYmxlUmVzb3VyY2VzW3Jlc291cmNlXTtcbiAgICBpZiAoIWNyKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xuICAgIHRyeSB7XG4gICAgICAvLyBwcmVwYXJlIGhlbHBlcnMgdG8gZ3JvdXAgZXhlY3V0aW9ucyBvZiBlbGVtZW50cyBvZiB0aGUgc2FtZSBsaXN0XG4gICAgICBsZXQgbGlzdDogYW55W10gPSBudWxsLFxuICAgICAgICBvbGRMaXN0VVJMOiBzdHJpbmcgPSBudWxsO1xuICAgICAgZm9yIChjb25zdCByIG9mIHJlY29yZHMpIHtcbiAgICAgICAgLy8gY2FsY3VsYXRlIHRoZSBVUkwgdG8gYWNjZXNzIHRoZSBBUEkgcmVxdWVzdCBrZXkgZm9yIHRoaXMgZWxlbWVudFxuICAgICAgICBjb25zdCBlbGVtZW50VVJMID0gY3IuZWxlbWVudFVSTChyLmVsZW1lbnQpO1xuICAgICAgICAvLyBpZiB0aGUgZWxlbWVudCB3YXMgZGVsZXRlZCAoYmFzZWQgb24gZGVsdGEpLCBkZWxldGUgaXRzIGNvcnJlc3BvbmRpbmcgQVBJIEdFVCByZXF1ZXN0XG4gICAgICAgIGlmIChyLmRlbGV0ZWQpIGF3YWl0IHRoaXMuX0FQSS5kZWxldGVGcm9tQ2FjaGUoZWxlbWVudFVSTCk7XG4gICAgICAgIC8vIG90aGVyd2lzZSwgdXBkYXRlIGl0XG4gICAgICAgIGVsc2UgYXdhaXQgdGhpcy5fQVBJLnB1dEluQ2FjaGUoZWxlbWVudFVSTCwgci5lbGVtZW50KTtcbiAgICAgICAgLy8gY2FsY3VsYXRlIHRoZSBVUkxzIHRvIGFjY2VzcyB0aGUgQVBJIHJlcXVlc3Qga2V5IGZvciB0aGlzIGVsZW1lbnQncyBsaXN0XG4gICAgICAgIGNvbnN0IGxpc3RVUkwgPSBjci5saXN0VVJMKHIuZWxlbWVudCk7XG4gICAgICAgIC8vIHRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlLCBnZXQvc29ydC9zYXZlIHRoZSBsaXN0IG9ubHkgd2hlbiBpdCBjaGFuZ2VzIGZyb20gdGhlIHByZXZpb3VzIGVsZW1lbnQncyBvbmUuXG4gICAgICAgIGlmIChsaXN0VVJMICE9PSBvbGRMaXN0VVJMKSB7XG4gICAgICAgICAgLy8gc2tpcCBmaXJzdCBjeWNsZSAob2xkTGlzdFVSTCA9PT0gbnVsbClcbiAgICAgICAgICBpZiAob2xkTGlzdFVSTCkge1xuICAgICAgICAgICAgLy8gcmUtc29ydCB0aGUgbGlzdDsgbm90ZTogaXQgc2hvdWxkIGJlIHNvcnRlZCBmcm9tIHRoZSBsYXN0IHRpbWUsIHNvIHdlIG9ubHkgbWFuYWdlIHRoZSBuZXcgZWxlbWVudFxuICAgICAgICAgICAgbGlzdCA9IGxpc3Quc29ydChjci5zb3J0KTtcbiAgICAgICAgICAgIC8vIHNhdmUgdGhlIHVwZGF0ZWQgbGlzdFxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fQVBJLnB1dEluQ2FjaGUob2xkTGlzdFVSTCwgbGlzdCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGdldCB0aGUgbGlzdCBvZiBlbGVtZW50cyBmcm9tIHRoZSBsb2NhbCBzdG9yYWdlIGJ5IHRoZSBjYWxjdWxhdGVkIFVSTFxuICAgICAgICAgIGxpc3QgPSBhd2FpdCB0aGlzLl9BUEkuZ2V0RnJvbUNhY2hlKGxpc3RVUkwpO1xuICAgICAgICAgIC8vIHNhdmUgdGhlIHJlZmVyZW5jZSB0byB0aGUgbGlzdCBmb3IgdGhlIG5leHQgY3ljbGVcbiAgICAgICAgICBvbGRMaXN0VVJMID0gbGlzdFVSTDtcbiAgICAgICAgfVxuICAgICAgICAvLyBmaW5kIGluIHRoZSBsaXN0IHRoZSBlbGVtZW50IHdlIHdhbnQgdG8gbWFuYWdlXG4gICAgICAgIGNvbnN0IGluZGV4ID0gY3IuZmluZEluZGV4SW5MaXN0KGxpc3QsIHIuZWxlbWVudCk7XG4gICAgICAgIC8vIGRlbGV0ZSB0aGUgZWxlbWVudCBmcm9tIHRoZSBsaXN0XG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIGxpc3Quc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgLy8gaWYgdGhlIGVsZW1lbnQgd2Fzbid0IGRlbGV0ZWQgKGZvbGxvd2luZyB0aGUgZGVsdGEgcmVjb3JkIGluZm9ybWF0aW9uKSwgaW5zZXJ0IHRoZSBuZXcgdmVyc2lvblxuICAgICAgICBpZiAoIXIuZGVsZXRlZCkgbGlzdC5wdXNoKHIuZWxlbWVudCk7XG4gICAgICB9XG4gICAgICAvLyBpbiBjYXNlIHRoZXJlIHdlcmUgZWxlbWVudHMsIHNhdmUgdGhlIGxhc3QgZWxlbWVudCdzIGxpc3RcbiAgICAgIGlmIChvbGRMaXN0VVJMKSB7XG4gICAgICAgIC8vIHJlLXNvcnQgdGhlIGxpc3Q7IG5vdGU6IGl0IHNob3VsZCBiZSBzb3J0ZWQgZnJvbSB0aGUgbGFzdCB0aW1lLCBzbyB3ZSBvbmx5IG1hbmFnZSB0aGUgbmV3IGVsZW1lbnRcbiAgICAgICAgbGlzdCA9IGxpc3Quc29ydChjci5zb3J0KTtcbiAgICAgICAgLy8gc2F2ZSB0aGUgdXBkYXRlZCBsaXN0XG4gICAgICAgIGF3YWl0IHRoaXMuX0FQSS5wdXRJbkNhY2hlKG9sZExpc3RVUkwsIGxpc3QpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIGlmIHNvbWV0aGluZyB3ZW50IHdyb25nLCBzdG9wcyB0aGUgb3BlcmF0aW9uLCBzaW5jZSB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZW50aXJlIGZsb3cgaXMgY29uc2lzdGVudFxuICAgICAgY3IuZXJyb3IgPSB0cnVlO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLy9cbiAgLy8gU1lOQ0hST05JU0FUSU9OIChVUExPQUQrRE9XTkxPQUQpXG4gIC8vXG5cbiAgLyoqXG4gICAqIFJ1biBhIHN5bmMsIGJ1dCBvbmx5IGlmIG5lZWRlZCwgaS5lLiB0aGUgY2FjaGVkIGNvbnRlbnQgZXhwaXJlZCBvciB3ZSBoYXZlIHBlbmRpbmcgQVBJIHJlcXVlc3RzIGluIHRoZSBxdWV1ZS5cbiAgICovXG4gIHN5bmNocm9uaXplSWZOZWVkZWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpOiB2b2lkID0+IHtcbiAgICAgIGlmICghdGhpcy5pc0FsbG93ZWQoKSkgcmV0dXJuO1xuICAgICAgdGhpcy5sb2FkTGFzdFN5bmNBdCgpLnRoZW4oXG4gICAgICAgICgpOiBQcm9taXNlPHZvaWQ+ID0+XG4gICAgICAgICAgdGhpcy5sb2FkUXVldWVBUElSZXF1ZXN0KClcbiAgICAgICAgICAgIC50aGVuKCgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMucXVldWVBUElSZXF1ZXN0cy5sZW5ndGggfHwgRGF0ZS5ub3coKSA+IHRoaXMubGFzdFN5bmNBdCArIFNZTkNfRVhQSVJBVElPTl9JTlRFUlZBTClcbiAgICAgICAgICAgICAgICB0aGlzLnN5bmNocm9uaXplKCk7XG4gICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHJlamVjdChlcnIpKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogU3luY2hyb25pemF0aW9uIG9mIHRoZSB3aG9sZSBzZXQgb2YgcmVzb3VyY2VzICh1cGxvYWQrZG93bmxvYWQpLlxuICAgKiBAcGFyYW0gbWFudWFsQ29uZmlybWF0aW9uIGlmIHRydWUsIHRoZSByZXF1ZXN0IGNvbWVzIGRpcmVjdGx5IGZyb20gYSB1c2VyIGFjdGlvbiAobm90IGF1dG9tYXRpYyBwcm9jZWR1cmVzKS5cbiAgICovXG4gIHN5bmNocm9uaXplKG1hbnVhbENvbmZpcm1hdGlvbj86IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKCF0aGlzLmlzQWxsb3dlZCgpIHx8IHRoaXMuc3luY2hyb25pemluZykgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgIHRoaXMuc3luY2hyb25pemluZyA9IHRydWU7XG4gICAgICB0aGlzLmVycm9ySW5MYXN0U3luYyA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXF1aXJlc01hbnVhbENvbmZpcm1hdGlvbiA9IGZhbHNlO1xuICAgICAgLy8gbG9hZCB0aGUgbGFzdFN5bmNBdCBpbmZvcm1hdGlvblxuICAgICAgdGhpcy5sb2FkTGFzdFN5bmNBdCgpLnRoZW4oXG4gICAgICAgICgpOiBQcm9taXNlPHZvaWQ+ID0+XG4gICAgICAgICAgLy8gdHJ5IHRvIHJ1biBhbGwgdGhlIHBlbmRpbmcgQVBJIHJlcXVlc3RzIGluIHRoZSBxdWV1ZSwgaS5lLiB1cGxvYWRpbmcgdGhlIG9mZmxpbmUgcmVzb3VyY2VzIGNoYW5nZWRcbiAgICAgICAgICB0aGlzLnJ1blF1ZXVlQVBJUmVxdWVzdHMoKVxuICAgICAgICAgICAgLnRoZW4oKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAvLyBzZXQgdGhpcyBtb21lbnQgaW4gdGltZTogaWYgYW55dGhpbmcgaGFwcGVuZWQgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIHN5bmMsIHdlIGRvbid0IGxvc2UgZnJlc2ggZGF0YVxuICAgICAgICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAvLyBwcmVwYXJlIGEgZmlyc3QgXCJzaG9ydFwiIERlbHRhIHJlcXVlc3QsIHRvIHNlZSBpZiB0aGVyZSBpcyBhIGxvdCBvZiBkYXRhIHRvIHByb2Nlc3NcbiAgICAgICAgICAgICAgY29uc3QgcGFyYW1zOiBhbnkgPSB7IGxpbWl0OiBOVU1fRUxFTUVOVFNfV0lUSE9VVF9NQU5VQUxfU1lOQyB9O1xuICAgICAgICAgICAgICBpZiAodGhpcy5sYXN0U3luY0F0KSBwYXJhbXMuc2luY2UgPSB0aGlzLmxhc3RTeW5jQXQ7XG4gICAgICAgICAgICAgIHRoaXMuX0FQSVxuICAgICAgICAgICAgICAgIC5nZXRSZXNvdXJjZSh0aGlzLnRlYW1JZCA/IGB0ZWFtcy8ke3RoaXMudGVhbUlkfS9kZWx0YWAgOiAnZGVsdGEnLCB7IHBhcmFtcyB9KVxuICAgICAgICAgICAgICAgIC50aGVuKChkZWx0YTogRGVsdGEpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgIC8vIGRlY2lkZSBpZiB0byBwcm9jZWVkIHdpdGggdGhlIHN5bmM6IGluIGNhc2UgdGhlcmUgaXMgYW5vdGhlciBwYWdlLCBpdCByZXF1aXJlcyBhIG1hbnVhbCBjb25maXJtYXRpb25cbiAgICAgICAgICAgICAgICAgIGlmIChkZWx0YS5uZXh0ICYmICFtYW51YWxDb25maXJtYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlc01hbnVhbENvbmZpcm1hdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3luY2hyb25pemluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLy8gc2F2ZSB0aGUgcmVjb3JkcyBpbiB0aGUgZGVsdGEgYW5kIHJlcXVlc3QgcG9zc2libGUgbmV3IHBhZ2VzXG4gICAgICAgICAgICAgICAgICB0aGlzLnN5bmNEZWx0YVJlY29yZHMoZGVsdGEsICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZXJyb3JJbkxhc3RTeW5jKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbCB0aGUgcmVzb3VyY2VzIGFyZSBzdWNjZXNmdWxseSBpbiBzeW5jXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNvdXJjZXMuZm9yRWFjaChyZXNvdXJjZSA9PiAodGhpcy5jYWNoZWFibGVSZXNvdXJjZXNbcmVzb3VyY2VdLnN5bmNocm9uaXppbmcgPSBmYWxzZSkpO1xuICAgICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgdGltZXN0YW1wIG9mIGxhc3Qgc3luY1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2F2ZUxhc3RTeW5jQXQobm93KVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN5bmNocm9uaXppbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGNvdWxkbid0IHNhdmUgdGhlIGxhc3Qgc3luYyBpbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JJbkxhc3RTeW5jID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKCgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgIC8vIHdlIGNvdWxkbid0IGFjcXVpcmUgbmV3IGluZm9ybWF0aW9uIChEZWx0YSlcbiAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JJbkxhc3RTeW5jID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc3luY2hyb25pemluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKCgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgLy8gd2Ugc3RvcCwgc2luY2Ugd2UgZG9uJ3Qgd2FudCBiYWNrZW5kIGRhdGEgdG8gb3ZlcnJpZGUgbG9jYWwgaW5mbyBub3QgeWV0IHVwbG9hZGVkXG4gICAgICAgICAgICAgIHRoaXMuZXJyb3JJbkxhc3RTeW5jID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIEZvcmNlIGEgZnVsbCBzeW5jaHJvbmlzYXRpb24uXG4gICAqL1xuICBmb3JjZUZ1bGxTeW5jKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0b3JhZ2UuY2xlYXIoKS50aGVuKCgpOiBQcm9taXNlPHZvaWQ+ID0+IHRoaXMuc3luY2hyb25pemUodHJ1ZSkpO1xuICB9XG59XG5cbi8qKlxuICogVGhlIGRlc2NyaXB0aW9uIG9mIGFuIEFQSSByZXF1ZXN0IHRvIGEgcmVzb3VyY2UsIHRvIHVzZSB3aXRoIGBJREVBQVdTQVBJYC5cbiAqIFVzZWQgZm9yIHF1ZXVlcyBvZiByZXF1ZXN0cyAoVVBMT0FEKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBUElSZXF1ZXN0IHtcbiAgLyoqXG4gICAqIFJlc291cmNlIHBhdGggKGUuZy4gYHVzZXJzYCBvciBgdGVhbXMvJHt0ZWFtSWR9L3VzZXJzYCkuXG4gICAqL1xuICByZXNvdXJjZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGlkIHRvIGlkZW50aWZ5IGEgc3BlY2lmaWMgZWxlbWVudCBvZiB0aGUgcmVzb3VyY2UuXG4gICAqL1xuICByZXNvdXJjZUlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgQVBJIHJlcXVlc3QgbWV0aG9kIChlLmcuIFBPU1QsIFBVVCwgUEFUQ0gpLlxuICAgKi9cbiAgbWV0aG9kOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgYm9keSBvZiB0aGUgcmVxdWVzdC5cbiAgICovXG4gIGJvZHk6IGFueTtcbiAgLyoqXG4gICAqIEEgZGVzY3JpcHRpb24gdG8gc2hvdyBmb3IgdGhlIHJlcXVlc3QuXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIElmIG5vdCBudWxsLCB0aGUgcmVxdWVzdCB0cmllZCB0byBydW4gYnV0IGl0IGVuY291bnRlcmVkIHRoZSBlcnJvci5cbiAgICovXG4gIGVycm9yPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBhYnN0cmFjdCBjbGFzcyB0byBpbXBsZW1lbnQgZm9yIGVhY2ggcmVzb3VyY2UgdG8gY2FjaGUgb2ZmbGluZSBmcm9tIHRoZSBiYWNrLWVuZCAoRE9XTkxPQUQpLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ2FjaGVhYmxlUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIHRlYW0gb3duaW5nIHRoZSByZXNvdXJjZS5cbiAgICogSWYgbnVsbCwgdGhlIHByb2plY3QgaXNuJ3QgdGVhbXMtYmFzZWQuXG4gICAqL1xuICB0ZWFtSWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBpZGVudGlmaWVyIG9mIHRoZSByZXNvdXJjZS5cbiAgICovXG4gIHJlc291cmNlOiBEZWx0YVJlc291cmNlcyB8IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBkZXNjcmlwdGlvbiAodHJhbnNsYXRlZCkgZm9yIHRoZSBVSS5cbiAgICovXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBSdW50aW1lIGF0dHJpYnV0ZSB0byBrbm93IGlmIHRoZSByZXNvdXJjZSBpcyBzeW5jaHJvbml6aW5nLlxuICAgKi9cbiAgc3luY2hyb25pemluZzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRydWUgaWYgb25lIG9mIHRoZSBlbGVtZW50cyBmYWlsZWQgdGhlIGV4ZWN1dGlvbi5cbiAgICovXG4gIGVycm9yOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHJlc291cmNlOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlc291cmNlID0gcmVzb3VyY2U7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgIHRoaXMuc3luY2hyb25pemluZyA9IGZhbHNlO1xuICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcbiAgICAvLyBsb2FkZWQgYXQgcnVudGltZVxuICAgIHRoaXMudGVhbUlkID0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBIb3cgdG8gYnVpbGQgdGhlIHJlbGF0aXZlIFVSTCB0byB0aGUgcmVzb3VyY2UgKGxpc3QpLlxuICAgKiBFLmcuIGB0ZWFtcy8ke2VsZW1lbnQudGVhbUlkfS9jdXN0b21lcnNgIG9yIGBjdXN0b21lcnNgLlxuICAgKi9cbiAgYWJzdHJhY3QgbGlzdFVSTChlbGVtZW50OiBhbnkpOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBIb3cgdG8gYnVpbGQgdGhlIHJlbGF0aXZlIFVSTCB0byB0aGUgcmVzb3VyY2UgZWxlbWVudCAoZGV0YWlsKS5cbiAgICogRS5nLiBgdGVhbXMvJHtlbGVtZW50LnRlYW1JZH0vY3VzdG9tZXJzLyR7ZWxlbWVudC5jdXN0b21lcklkfWAgb3IgYGN1c3RvbWVycy8ke2VsZW1lbnQuY3VzdG9tZXJJZH1gLlxuICAgKi9cbiAgYWJzdHJhY3QgZWxlbWVudFVSTChlbGVtZW50OiBhbnkpOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBIb3cgdG8gdW5pcXVlbHkgaWRlbnRpZnkgYW4gZWxlbWVudCBpbiB0aGUgbGlzdCAoYnkgaXRzIGlkcykuXG4gICAqIEUuZy4gYHJldHVybiBsaXN0LmZpbmRJbmRleCh4ID0+IHguY3VzdG9tZXJJZCA9PT0gZWxlbWVudC5jdXN0b21lcklkKTtgXG4gICAqL1xuICBhYnN0cmFjdCBmaW5kSW5kZXhJbkxpc3QobGlzdDogYW55W10sIGVsZW1lbnQ6IGFueSk6IG51bWJlcjtcbiAgLyoqXG4gICAqIEhvdyB0byBrZWVwIHRoZSBsaXN0IHNvcnRlZC5cbiAgICogRS5nLiBgcmV0dXJuIGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSk7YFxuICAgKi9cbiAgYWJzdHJhY3Qgc29ydChhOiBhbnksIGI6IGFueSk6IG51bWJlcjtcbn1cbiJdfQ==
|
|
480
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZmbGluZURhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvdW5jb21tb24vc3JjL29mZmxpbmUvb2ZmbGluZURhdGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRixPQUFPLEVBQUUsaUJBQWlCLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBRXZEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsUUFBUTtBQUNyRTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLHFDQUFxQyxDQUFDO0FBQzVFOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLCtCQUErQixDQUFDO0FBQzdEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLEdBQUcsQ0FBQztBQUNwRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLEdBQUcsQ0FBQztBQUVqRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQ0c7QUFFSCxNQUFNLE9BQU8sc0JBQXNCO0lBcURqQztRQXBEVSxhQUFRLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdEMsZUFBVSxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzdDLGFBQVEsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN0QyxTQUFJLEdBQUcsTUFB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QURULE1BQU07OzJGQUNuQixzQkFBc0I7a0JBRGxDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQXFkbEM7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGlCQUFpQjtJQXVCckMsWUFBWSxRQUFnQixFQUFFLFdBQW1CO1FBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0NBc0JGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERlbHRhLCBEZWx0YVJlY29yZCwgRGVsdGFSZXNvdXJjZXMsIGVwb2NoRGF0ZVRpbWUgfSBmcm9tICdpZGVhLXRvb2xib3gnO1xuaW1wb3J0IHsgSURFQVN0b3JhZ2VTZXJ2aWNlLCBJREVBVHJhbnNsYXRpb25zU2VydmljZSB9IGZyb20gJ0BpZGVhLWlvbmljL2NvbW1vbic7XG5cbmltcG9ydCB7IElERUFBV1NBUElTZXJ2aWNlLCBBUElSZXF1ZXN0T3B0aW9uIH0gZnJvbSAnLi4vQVdTQVBJLnNlcnZpY2UnO1xuaW1wb3J0IHsgSURFQU9mZmxpbmVTZXJ2aWNlIH0gZnJvbSAnLi9vZmZsaW5lLnNlcnZpY2UnO1xuXG4vKipcbiAqIEFmdGVyIGhvdyBtdWNoIHRpbWUgd2UgbmVlZCB0byByZXF1ZXN0IGEgc3luY2hyb25pc2F0aW9uIHRvIGtlZXAgdGhlIGNvbnRlbnRzIHVwLXRvLWRhdGUuXG4gKi9cbmV4cG9ydCBjb25zdCBTWU5DX0VYUElSQVRJT05fSU5URVJWQUwgPSAxMDAwICogNjAgKiA2MCAqIDI0OyAvLyBhIGRheVxuLyoqXG4gKiBQcmVmaXggZm9yIHRoZSBrZXkgb2YgdGhlIEFQSSByZXF1ZXN0cyBxdWV1ZSBpbmZvIGluIHRoZSBsb2NhbCBzdG9yYWdlLlxuICovXG5leHBvcnQgY29uc3QgUVVFVUVfQVBJX1JFUVVFU1RTX0tFWSA9ICdJREVBT2ZmbGluZVNlcnZpY2UucXVldWVBUElyZXF1ZXN0cyc7XG4vKipcbiAqIFByZWZpeCBmb3IgdGhlIGtleSBvZiB0aGUgbGFzdCBzeW5jIHRpbWUgaW5mbyBpbiB0aGUgbG9jYWwgc3RvcmFnZS5cbiAqL1xuZXhwb3J0IGNvbnN0IExBU1RfU1lOQ19LRVkgPSAnSURFQU9mZmxpbmVTZXJ2aWNlLmxhc3RTeW5jQXQnO1xuLyoqXG4gKiBUaGUgbWF4IG51bWJlciBvZiBlbGVtZW50cyBwZXIgcmVzb3VyY2UgdG8gc3luY2hyb25pemUgZHVyaW5nIHRoZSBmaXJzdCBhbmFseXNpcyBvZiBhIHN5bmNocm9uaXNhdGlvbi5cbiAqIElmIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZXhjZWVkcyAodGhlcmUgaXMgbW9yZSBkYXRhIGFmdGVyIHRoZSAxc3QgcGFnZSksIHRoZSBvcGVyYXRpb24gcmVxdWlyZSBtYW51YWwgY29uZmlybWF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgTlVNX0VMRU1FTlRTX1dJVEhPVVRfTUFOVUFMX1NZTkMgPSAxMDA7XG4vKipcbiAqIFRoZSBtYXggbnVtYmVyIG9mIGVsZW1lbnRzIHBlciByZXNvdXJjZSB0byByZXF1ZXN0IGF0IHRoZSBzYW1lIHRpbWUgZHVyaW5nIGEgbm9ybWFsIHN5bmNocm9uaXNhdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IE5VTV9FTEVNRU5UU19XSVRIX01BTlVBTF9TWU5DID0gMzAwO1xuXG4vKipcbiAqIE1hbmFnZSB0aGUgb2ZmbGluZSBmdW5jdGlvbmluZyBvZiB0aGUgYXBwJ3MgZGF0YSAodXBsb2FkL2Rvd25sb2FkL3N5bmNocm9uaXphdGlvbikuXG4gKiBOb3RlOiBpdCBpbmNsdWRlcyBhbGwgdGhlIG1ldGhvZHMgb2YgSURFQU9mZmxpbmVTZXJ2aWNlLlxuICpcbiAqIERvd25sb2FkOiBpdCB3b3JrcyB0aHJvdWdoIHRoZSAqKkRlbHRhKiogbWVjaGFuaXNtIG9uIGJhY2stZW5kIHJlc291cmNlcy5cbiAqIFByYWN0aWNhbGx5LCB0aGUgc2VydmljZSBwcmVwYXJlcyBlYWNoIHBvc3NpYmxlIEFQSSBHRVQgcmVxdWVzdHMgZm9yIGVhY2ggb2YgdGhlIGludm9sdmVkIHJlc291cmNlcy5cbiAqIEluIHRoaXMgd2F5LCBpZiBvZmZsaW5lLCB0aGUgQVBJIHNlcnZpY2UgY2FuIGhpdCBhbiBlbGVtZW50IGJ5IFVSTCBpbiB0aGUgY2FjaGUgKHN0b3JhZ2Ugb2ZmbGluZSkuXG4gKlxuICogKipIb3cgdG8gdXNlIGl0KiouIENvbmZpZ3VyZSB0aGUgc3luYyBtZWNoYW5pc20gaW4gdGhlIG1haW4gYXBwLmNvbXBvbmVudCBhcyBpdCBmb2xsb3dzOlxuICpcbiAqICAgIDEuIEltcGxlbWVudCBhIENhY2hlYWJsZVJlc291cmNlIGNsYXNzIGZvciBlYWNoIERlbHRhUmVzb3VyY2UgeW91IHdhbnQgdG8gY2FjaGUgb2ZmbGluZS5cbiAqICAgIDIuIFNldCB1cCB0aGUgc2VydmljZSAoYHNldFVwT2ZmbGluZURhdGFgKS5cbiAqICAgIDMuIFJ1biBhIHN5bmNocm9uaXphdGlvbi5cbiAqICAgIDQuIEFkZCB0aGUgbmF2aWdhdGlvbiB0byB0aGUgT2ZmbGluZSBNYW5hZ2VyIChVSSkuXG4gKiAgICA1LiBPcHRpb25hbGx5LCBwdXNoIG9mZmxpbmUgQVBJIHJlcXVlc3RzIHRvIHRoZSBxdWV1ZSB3aGVuIG9mZmxpbmUuXG4gKlxuICogZS5nLiBvZiBDYWNoZWFibGVSZXNvdXJjZSBjbGFzc2VzOlxuICogYGBgXG4gKiBjbGFzcyBDdXN0b21lckNSIGV4dGVuZHMgQ2FjaGVhYmxlUmVzb3VyY2Uge1xuICogICBjb25zdHJ1Y3RvcihkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gKiAgICAgc3VwZXIoRGVsdGFSZXNvdXJjZXMuQ1VTVE9NRVJTLCBkZXNjcmlwdGlvbik7XG4gKiAgIH1cbiAqICAgcHVibGljIGxpc3RVUkwoZWxlbWVudDogYW55KTogc3RyaW5nIHtcbiAqICAgICByZXR1cm4gYHRlYW1zLyR7ZWxlbWVudC50ZWFtSWR9L2N1c3RvbWVyc2A7XG4gKiAgIH1cbiAqICAgcHVibGljIGVsZW1lbnRVUkwoZWxlbWVudDogYW55KTogc3RyaW5nIHtcbiAqICAgICByZXR1cm4gYHRlYW1zLyR7ZWxlbWVudC50ZWFtSWR9L2N1c3RvbWVycy8ke2VsZW1lbnQuY3VzdG9tZXJJZH1gO1xuICogICB9XG4gKiAgIHB1YmxpYyBmaW5kSW5kZXhJbkxpc3QobGlzdDogQXJyYXk8YW55PiwgZWxlbWVudDogYW55KTogbnVtYmVyIHtcbiAqICAgICByZXR1cm4gbGlzdC5maW5kSW5kZXgoeCA9PiB4LmN1c3RvbWVySWQgPT09IGVsZW1lbnQuY3VzdG9tZXJJZCk7XG4gKiAgIH1cbiAqICAgcHVibGljIHNvcnQoYTogYW55LCBiOiBhbnkpOiBudW1iZXIge1xuICogICAgIHJldHVybiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpO1xuICogICB9XG4gKiB9XG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgSURFQU9mZmxpbmVEYXRhU2VydmljZSB7XG4gIHByb3RlY3RlZCBfc3RvcmFnZSA9IGluamVjdChJREVBU3RvcmFnZVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgX3RyYW5zbGF0ZSA9IGluamVjdChJREVBVHJhbnNsYXRpb25zU2VydmljZSk7XG4gIHByb3RlY3RlZCBfb2ZmbGluZSA9IGluamVjdChJREVBT2ZmbGluZVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgX0FQSSA9IGluamVjdChJREVBQVdTQVBJU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIFRydWUgd2hlbiBydW5uaW5nIGEgc3luY2hyb25pemF0aW9uLlxuICAgKi9cbiAgc3luY2hyb25pemluZzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSB0aW1lc3RhbXAgb2YgdGhlIGxhc3Qgc3luY2hyb25pemF0aW9uLlxuICAgKi9cbiAgbGFzdFN5bmNBdDogZXBvY2hEYXRlVGltZTtcbiAgLyoqXG4gICAqIFRydWUgaWYgYW4gZXJyb3IgaGFwcGVuZWQgaW4gdGhlIGxhc3Qgc3luY2hyb25pemF0aW9uLlxuICAgKi9cbiAgZXJyb3JJbkxhc3RTeW5jOiBib29sZWFuO1xuICAvKipcbiAgICogVHJ1ZSBpZiB0aGUgc3luY2hyb25pc2F0aW9uIGlzIHRvbyB2YXN0IGFuZCBzbyByZXF1aXJlIGEgbWFudWFsIGFjdGlvbiBvZiB0aGUgdXNlci5cbiAgICovXG4gIHJlcXVpcmVzTWFudWFsQ29uZmlybWF0aW9uOiBib29sZWFuO1xuICAvKipcbiAgICogSWYgZmFsc2UsIGlnbm9yZSB0aGUgZW50aXJlIHVwbG9hZCBzY2VuYXJpby5cbiAgICovXG4gIHVzZVF1ZXVlQVBJUmVxdWVzdHM6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgYXJyYXkgb2YgdGhlIHJlcXVlc3RzIG5vdCBleGVjdXRlZCBiZWNhdXNlIHdlIGFyZS93ZXJlIG9mZmxpbmU7IHRoZXkgbmVlZCB0byBydW4gb25jZSBvbmxpbmUuXG4gICAqL1xuICBxdWV1ZUFQSVJlcXVlc3RzOiBBUElSZXF1ZXN0W107XG5cbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgdGVhbSBvZiB3aGljaCB0byBtYW5hZ2UgZGF0YSBvZmZsaW5lLlxuICAgKiBJZiBudWxsLCB0aGUgcHJvamVjdCBpc24ndCB0ZWFtcy1iYXNlZC5cbiAgICovXG4gIHByb3RlY3RlZCB0ZWFtSWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBhcnJheSBvZiBEZWx0YVJlc291cmNlcyB0byBjYWNoZSBvZmZsaW5lLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlc291cmNlczogKERlbHRhUmVzb3VyY2VzIHwgc3RyaW5nKVtdO1xuICAvKipcbiAgICogSGVscGVyIHN0cnVjdHVyZSB0byBtYW5hZ2UgdGhlIENhY2hlYWJsZVJlc291cmNlIGZvciBlYWNoIERlbHRhUmVzb3VyY2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgY2FjaGVhYmxlUmVzb3VyY2VzOiB7IFtyZXNvdXJjZTogc3RyaW5nXTogQ2FjaGVhYmxlUmVzb3VyY2UgfTtcbiAgLyoqXG4gICAqIEtleSB0byBhY3F1aXJlIGZyb20gdGhlIHN0b3JhZ2UgdGhlIGxhc3RTeW5jQXQgaW5mb3JtYXRpb24gb2YgdGhlIHRlYW0uXG4gICAqL1xuICBwcm90ZWN0ZWQgbGFzdFN5bmNLZXk6IHN0cmluZztcbiAgLyoqXG4gICAqIEtleSB0byBhY3F1aXJlIGZyb20gdGhlIHN0b3JhZ2UgdGhlIGxhc3RTeW5jQXQgaW5mb3JtYXRpb24gb2YgdGhlIHRlYW0uXG4gICAqL1xuICBwcm90ZWN0ZWQgcXVldWVBUElSZXF1ZXN0S2V5OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5xdWV1ZUFQSVJlcXVlc3RzID0gbmV3IEFycmF5PEFQSVJlcXVlc3Q+KCk7XG4gICAgdGhpcy5yZXNvdXJjZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIHRoaXMuY2FjaGVhYmxlUmVzb3VyY2VzID0ge307XG4gICAgLy8gc3Vic2NyaWJlIHRvIG5ldHdvcmsgY2hhbmdlc1xuICAgIHRoaXMuX29mZmxpbmUuc3Vic2NyaWJlKGlzT25saW5lID0+IHtcbiAgICAgIGlmIChpc09ubGluZSkge1xuICAgICAgICAvLyB0cnkgYSBzeW5jaHJvbml6YXRpb24gaWYgbmVlZGVkIG9yIGlmIHRoZSBsYXN0IG9uZSBmYWlsZWRcbiAgICAgICAgaWYgKHRoaXMuZXJyb3JJbkxhc3RTeW5jKSB0aGlzLnN5bmNocm9uaXplKCk7XG4gICAgICAgIGVsc2UgdGhpcy5zeW5jaHJvbml6ZUlmTmVlZGVkKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvL1xuICAvLyBORVRXT1JLIFNUQVRVUyBmcm9tIElERUFPZmZsaW5lU2VydmljZVxuICAvL1xuXG4gIC8qKlxuICAgKiBRdWlja2x5IGNoZWNrIHRoZSBjb25uZWN0aW9uIHN0YXR1cy5cbiAgICovXG4gIGlzT25saW5lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9vZmZsaW5lLmlzT25saW5lKCk7XG4gIH1cbiAgLyoqXG4gICAqIFF1aWNrbHkgY2hlY2sgdGhlIGNvbm5lY3Rpb24gc3RhdHVzLlxuICAgKi9cbiAgaXNPZmZsaW5lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9vZmZsaW5lLmlzT2ZmbGluZSgpO1xuICB9XG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gdGhlIHNlcnZpY2UgdG8gYmUgbm90aWZpZWQgd2hlbiB0aGUgY29ubmVjdGlvbiBzdGF0dXMgY2hhbmdlcy5cbiAgICovXG4gIHN1YnNjcmliZShjYWxsYmFjazogKGlzT25saW5lOiBib29sZWFuKSA9PiB2b2lkKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fb2ZmbGluZS5zdWJzY3JpYmUoY2FsbGJhY2spO1xuICB9XG4gIC8qKlxuICAgKiBRdWlja2x5IGNoZWNrIGZvciBvbmxpbmUgY29ubmVjdGlvbi5cbiAgICovXG4gIHB1YmxpYyBjaGVjaygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fb2ZmbGluZS5jaGVjaygpO1xuICB9XG5cbiAgLy9cbiAgLy8gQ09ORklHVVJBVElPTlxuICAvL1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBvZmZsaW5lIG1vZGUgaXMgYWxsb3dlZC4gWW91IGNhbiBjdXN0b21pemUgdGhpcyBmdW5jdGlvbiwgaWYgbmVlZGVkLlxuICAgKi9cbiAgaXNBbGxvd2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucmVzb3VyY2VzLmxlbmd0aDtcbiAgfVxuICAvKipcbiAgICogU2V0IHVwIHRoZSBzZXJ2aWNlIHRvIHVzZSBhbmQgc3luYyBvZmZsaW5lIGRhdGEuXG4gICAqL1xuICBzZXRVcE9mZmxpbmVEYXRhKHRlYW1JZDogc3RyaW5nLCB1c2VRdWV1ZUFQSVJlcXVlc3RzOiBib29sZWFuLCBjYWNoZWFibGVSZXNvdXJjZXM6IENhY2hlYWJsZVJlc291cmNlW10pOiB2b2lkIHtcbiAgICAvLyBzZXQgdGhlIHRlYW1cbiAgICB0aGlzLnRlYW1JZCA9IHRlYW1JZDtcbiAgICAvLyBkZWNpZGUgaWYgdG8gYWxsb3cgY2VydGFpbiBBUEkgcmVxdWVzdCB3aGlsZSBvZmZsaW5lXG4gICAgdGhpcy51c2VRdWV1ZUFQSVJlcXVlc3RzID0gdXNlUXVldWVBUElSZXF1ZXN0cztcbiAgICAvLyBsb2FkIHRoZSBBUEkgcmVxdWVzdCBwZW5kaW5nIHF1ZXVlLCBpZiBhbnlcbiAgICB0aGlzLnF1ZXVlQVBJUmVxdWVzdEtleSA9IHRoaXMudGVhbUlkID8gYCR7UVVFVUVfQVBJX1JFUVVFU1RTX0tFWX1fJHt0aGlzLnRlYW1JZH1gIDogUVVFVUVfQVBJX1JFUVVFU1RTX0tFWTtcbiAgICB0aGlzLmxvYWRRdWV1ZUFQSVJlcXVlc3QoKTtcbiAgICAvLyBsb2FkIHRoZSBsYXN0U3luY0F0IGluZm9ybWF0aW9uIGZvciB0aGUgdGVhbVxuICAgIHRoaXMubGFzdFN5bmNLZXkgPSB0aGlzLnRlYW1JZCA/IGAke0xBU1RfU1lOQ19LRVl9XyR7dGhpcy50ZWFtSWR9YCA6IExBU1RfU1lOQ19LRVk7XG4gICAgdGhpcy5sb2FkTGFzdFN5bmNBdCgpO1xuICAgIC8vIGxvYWQgdGhlIGNhY2hlYWJsZSByZXNvdXJjZXNcbiAgICB0aGlzLnJlc291cmNlcyA9IG5ldyBBcnJheTxEZWx0YVJlc291cmNlcyB8IHN0cmluZz4oKTtcbiAgICB0aGlzLmNhY2hlYWJsZVJlc291cmNlcyA9IHt9O1xuICAgIGNhY2hlYWJsZVJlc291cmNlcy5mb3JFYWNoKHIgPT4gdGhpcy5hZGRDYWNoZWFibGVSZXNvdXJjZShyKSk7XG4gIH1cbiAgLyoqXG4gICAqIExvYWQgZnJvbSB0aGUgbG9jYWwgc3RvcmFnZSB0aGUgbGFzdCBzeW5jIGF0IGluZm9ybWF0aW9uLlxuICAgKi9cbiAgcHJvdGVjdGVkIGxvYWRMYXN0U3luY0F0KCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgdGhpcy5fc3RvcmFnZS5nZXQodGhpcy5sYXN0U3luY0tleSkudGhlbigobGFzdFN5bmNBdDogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMubGFzdFN5bmNBdCA9IGxhc3RTeW5jQXQgPyBOdW1iZXIobGFzdFN5bmNBdCkgOiBudWxsO1xuICAgICAgICByZXNvbHZlKHRoaXMubGFzdFN5bmNBdCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogVXBkYXRlIGxhc3Qgc3luYyBhdCBpbmZvIGluIHRoZSBsb2NhbCBzdG9yYWdlLlxuICAgKi9cbiAgcHJvdGVjdGVkIHNhdmVMYXN0U3luY0F0KGxhc3RTeW5jQXQ6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMubGFzdFN5bmNBdCA9IGxhc3RTeW5jQXQ7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3JhZ2Uuc2V0KHRoaXMubGFzdFN5bmNLZXksIGxhc3RTeW5jQXQpO1xuICB9XG4gIC8qKlxuICAgKiBBZGQgYSBDYWNoZWFibGVSZXNvdXJjZS5cbiAgICovXG4gIHByb3RlY3RlZCBhZGRDYWNoZWFibGVSZXNvdXJjZShjYWNoZWFibGVSZXNvdXJjZTogQ2FjaGVhYmxlUmVzb3VyY2UpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50ZWFtSWQpIGNhY2hlYWJsZVJlc291cmNlLnRlYW1JZCA9IHRoaXMudGVhbUlkO1xuICAgIHRoaXMuY2FjaGVhYmxlUmVzb3VyY2VzW2NhY2hlYWJsZVJlc291cmNlLnJlc291cmNlXSA9IGNhY2hlYWJsZVJlc291cmNlO1xuICAgIHRoaXMucmVzb3VyY2VzLnB1c2goY2FjaGVhYmxlUmVzb3VyY2UucmVzb3VyY2UpO1xuICB9XG4gIC8qKlxuICAgKiBSZW1vdmUgYSBDYWNoZWFibGVSZXNvdXJjZSBieSBpdHMgRGVsdGFSZXNvdXJjZS5cbiAgICovXG4gIHByb3RlY3RlZCByZW1vdmVDYWNoZWFibGVSZXNvdXJjZShyZXNvdXJjZTogRGVsdGFSZXNvdXJjZXMgfCBzdHJpbmcpOiB2b2lkIHtcbiAgICBkZWxldGUgdGhpcy5jYWNoZWFibGVSZXNvdXJjZXNbcmVzb3VyY2VdO1xuICAgIHRoaXMucmVzb3VyY2VzLnNwbGljZSh0aGlzLnJlc291cmNlcy5pbmRleE9mKHJlc291cmNlKSwgMSk7XG4gIH1cbiAgLyoqXG4gICAqIEdldCB0aGUgdGhlIERlbHRhUmVzb3VyY2VkIGNvbmZpZ3VyZWQuXG4gICAqL1xuICBnZXRSZXNvdXJjZXMoKTogKERlbHRhUmVzb3VyY2VzIHwgc3RyaW5nKVtdIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZXM7XG4gIH1cbiAgLyoqXG4gICAqIEdldCBhIENhY2hlYWJsZVJlc291cmNlIGJ5IGl0cyBEZWx0YVJlc291cmNlLlxuICAgKi9cbiAgZ2V0Q2FjaGVhYmxlUmVzb3VyY2UocmVzb3VyY2U6IERlbHRhUmVzb3VyY2VzIHwgc3RyaW5nKTogQ2FjaGVhYmxlUmVzb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLmNhY2hlYWJsZVJlc291cmNlc1tyZXNvdXJjZV07XG4gIH1cblxuICAvL1xuICAvLyBVUExPQURcbiAgLy9cblxuICAvKipcbiAgICogRXhlY3V0ZSBhbGwgdGhlIEFQSSByZXF1ZXN0cyBpbiB0aGUgcXVldWU7IHRoZSByZXF1ZXN0cyB0ZXJtaW5hdGVkIHdpdGggYW4gZXJyb3Igd2lsbCByZW1haW4gaW4gdGhlIHF1ZXVlLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJ1blF1ZXVlQVBJUmVxdWVzdHMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpOiB2b2lkID0+IHtcbiAgICAgIGlmICghdGhpcy51c2VRdWV1ZUFQSVJlcXVlc3RzIHx8IHRoaXMuaXNPZmZsaW5lKCkgfHwgIXRoaXMucXVldWVBUElSZXF1ZXN0cy5sZW5ndGgpIHJldHVybiByZXNvbHZlKCk7XG4gICAgICB0aGlzLnF1ZXVlQVBJUmVxdWVzdHMuZm9yRWFjaChhc3luYyByZXF1ZXN0ID0+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9uczogQVBJUmVxdWVzdE9wdGlvbiA9IHt9O1xuICAgICAgICBpZiAocmVxdWVzdC5yZXNvdXJjZUlkKSBvcHRpb25zLnJlc291cmNlSWQgPSByZXF1ZXN0LnJlc291cmNlSWQ7XG4gICAgICAgIGlmIChyZXF1ZXN0LmJvZHkpIG9wdGlvbnMuYm9keSA9IHJlcXVlc3QuYm9keTtcbiAgICAgICAgbGV0IHByb21pc2U6IFByb21pc2U8YW55PjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBzd2l0Y2ggKHJlcXVlc3QubWV0aG9kLnRvVXBwZXJDYXNlKCkpIHtcbiAgICAgICAgICAgIGNhc2UgJ1BPU1QnOlxuICAgICAgICAgICAgICBwcm9taXNlID0gYXdhaXQgdGhpcy5fQVBJLnBvc3RSZXNvdXJjZShyZXF1ZXN0LnJlc291cmNlLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdQVVQnOlxuICAgICAgICAgICAgICBwcm9taXNlID0gYXdhaXQgdGhpcy5fQVBJLnB1dFJlc291cmNlKHJlcXVlc3QucmVzb3VyY2UsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1BBVENIJzpcbiAgICAgICAgICAgICAgcHJvbWlzZSA9IGF3YWl0IHRoaXMuX0FQSS5wYXRjaFJlc291cmNlKHJlcXVlc3QucmVzb3VyY2UsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFwcm9taXNlKSByZXF1ZXN0LmVycm9yID0gJ0lOVkFMSURfTUVUSE9EJztcbiAgICAgICAgICBlbHNlIHJlcXVlc3QuZXJyb3IgPSBudWxsO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICByZXF1ZXN0LmVycm9yID0gKGVyciBhcyBFcnJvcikubWVzc2FnZSB8fCAnVU5LTk9XTl9FUlJPUic7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgLy8ga2VlcCB0aGUgcmVxdWVzdHMgTk9UIHN1Y2Nlc3NmdWxseSBleGVjdXRlZFxuICAgICAgdGhpcy5zYXZlUXVldWVBUElSZXF1ZXN0KHRoaXMucXVldWVBUElSZXF1ZXN0cy5maWx0ZXIoeCA9PiB4LmVycm9yKSkudGhlbigoKTogdm9pZCA9PiB7XG4gICAgICAgIC8vIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eSwgdGhlIGVudGlyZSBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWxcbiAgICAgICAgaWYgKHRoaXMucXVldWVBUElSZXF1ZXN0cy5sZW5ndGgpIHJlamVjdCgpO1xuICAgICAgICBlbHNlIHJlc29sdmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBMb2FkIGZyb20gdGhlIGxvY2FsIHN0b3JhZ2UgdGhlIEFQSSByZXF1ZXN0cyBxdWV1ZS5cbiAgICovXG4gIHByb3RlY3RlZCBsb2FkUXVldWVBUElSZXF1ZXN0KCk6IFByb21pc2U8QVBJUmVxdWVzdFtdPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgaWYgKCF0aGlzLnVzZVF1ZXVlQVBJUmVxdWVzdHMpIHJldHVybiByZXNvbHZlKFtdKTtcbiAgICAgIHRoaXMuX3N0b3JhZ2UuZ2V0KHRoaXMucXVldWVBUElSZXF1ZXN0S2V5KS50aGVuKChxdWV1ZTogQVBJUmVxdWVzdFtdKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMucXVldWVBUElSZXF1ZXN0cyA9IHF1ZXVlIHx8IFtdO1xuICAgICAgICByZXNvbHZlKHRoaXMucXVldWVBUElSZXF1ZXN0cyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogVXBkYXRlIHRoZSBxdWV1ZSBpbiBtZW1vcnkgYW5kIGFsc28gc2F2ZSB0aGUgY29weSBpbiB0aGUgbG9jYWwgc3RvcmFnZS5cbiAgICovXG4gIHNhdmVRdWV1ZUFQSVJlcXVlc3QocXVldWU/OiBBUElSZXF1ZXN0W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuaXNBbGxvd2VkKCkpIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIHRoaXMucXVldWVBUElSZXF1ZXN0cyA9IHF1ZXVlIHx8IHRoaXMucXVldWVBUElSZXF1ZXN0cztcbiAgICByZXR1cm4gdGhpcy5fc3RvcmFnZS5zZXQodGhpcy5xdWV1ZUFQSVJlcXVlc3RLZXksIHRoaXMucXVldWVBUElSZXF1ZXN0cyk7XG4gIH1cbiAgLyoqXG4gICAqIERlbGV0ZSBhIHJlcXVlc3Qgc3R1Y2sgaW4gYW4gZXJyb3IuXG4gICAqL1xuICBkZWxldGVSZXF1ZXN0KHJlcXVlc3Q6IEFQSVJlcXVlc3QpIHtcbiAgICBpZiAoIXRoaXMuaXNBbGxvd2VkKCkpIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIGlmIChyZXF1ZXN0KSB7XG4gICAgICB0aGlzLnF1ZXVlQVBJUmVxdWVzdHMuc3BsaWNlKHRoaXMucXVldWVBUElSZXF1ZXN0cy5pbmRleE9mKHJlcXVlc3QpLCAxKTtcbiAgICAgIHRoaXMuc2F2ZVF1ZXVlQVBJUmVxdWVzdCgpO1xuICAgIH1cbiAgfVxuXG4gIC8vXG4gIC8vIERPV05MT0FEXG4gIC8vXG5cbiAgLyoqXG4gICAqIFNhdmUgdGhlIHJlY29yZHMgb2YgYSBkZWx0YSBhbmQsIGlmIHRoZSBsYXR0ZXIgaGFzIG1vcmUgcGFnZXMsIGdvIHJlY3Vyc2l2ZS5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBzeW5jRGVsdGFSZWNvcmRzKGRlbHRhOiBEZWx0YSwgZG9uZT86IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgLy8gZm9yIGVhY2ggcmVzb3VyY2UsIHdlIHJlc2V0IHRoZSBzdGF0dXM7IGlmIGEgcmVzb3VyY2Ugc3RpbGwgbmVlZCB0byBiZSBzeW5jaHJvbml6ZWQsIGl0IHdpbGwgYmUgZmxhZ2dlZCBiZWxvd1xuICAgIHRoaXMucmVzb3VyY2VzLmZvckVhY2gocmVzb3VyY2UgPT4ge1xuICAgICAgdGhpcy5jYWNoZWFibGVSZXNvdXJjZXNbcmVzb3VyY2VdLmVycm9yID0gZmFsc2U7XG4gICAgICB0aGlzLmNhY2hlYWJsZVJlc291cmNlc1tyZXNvdXJjZV0uc3luY2hyb25pemluZyA9IGZhbHNlO1xuICAgIH0pO1xuICAgIHRyeSB7XG4gICAgICAvLyBzeW5jaHJvbnplIGVhY2ggb2YgdGhlIHJlc291cmNlcyBpbmNsdWRlZCBpbiB0aGUgZGVsdGE7IHRoaXMgZXhlY3V0aW9uIGNhbiBnbyBpbiBwYXJhbGxlbFxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIGRlbHRhLnJlc291cmNlcy5tYXAoYXN5bmMgcmVzb3VyY2UgPT4ge1xuICAgICAgICAgIGNvbnN0IGNyID0gdGhpcy5jYWNoZWFibGVSZXNvdXJjZXNbcmVzb3VyY2VdO1xuICAgICAgICAgIGlmIChjcikge1xuICAgICAgICAgICAgLy8gc3luY2hyb25pemUgdGhlIGRlbHRhIHJlY29yZHM7IG5vdGU6IHRoZSBleGVjdXR1aW9uIGluc2lkZSBhIHJlc291cmNlIG11c3QgZ28gaW4gc2VyaWVzXG4gICAgICAgICAgICBjci5zeW5jaHJvbml6aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCB0aGlzLnN5bmNSZXNvdXJjZURlbHRhUmVjb3JkcyhyZXNvdXJjZSwgZGVsdGEucmVjb3Jkc1tyZXNvdXJjZV0pO1xuICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB0aGlzLmVycm9ySW5MYXN0U3luYyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIC8vIGlmIHRoZXJlIHdlcmUgZXJyb3Igb2YgaWYgdGhlcmUgaXMgbm90aGluZyBsZWZ0IHRvIHN5bmMsIHdlIGFyZSBkb25lXG4gICAgICBpZiAodGhpcy5lcnJvckluTGFzdFN5bmMgfHwgIWRlbHRhLm5leHQpIHJldHVybiBkb25lKCk7XG4gICAgICAvLyBvdGhlcndpc2UsIGdldCB0aGUgbmV4dCBwYWdlIG9mIHRoZSBkZWx0YSBhbmQgZ28gcmVjdXJzaXZlIHVudGlsIHdlIGFyZSBkb25lXG4gICAgICBjb25zdCBwYXJhbXM6IGFueSA9IHsgbmV4dDogZGVsdGEubmV4dCwgbGltaXQ6IE5VTV9FTEVNRU5UU19XSVRIX01BTlVBTF9TWU5DIH07XG4gICAgICBpZiAodGhpcy5sYXN0U3luY0F0KSBwYXJhbXMuc2luY2UgPSB0aGlzLmxhc3RTeW5jQXQ7XG4gICAgICBjb25zdCBuZXdEZWx0YSA9IGF3YWl0IHRoaXMuX0FQSS5nZXRSZXNvdXJjZSh0aGlzLnRlYW1JZCA/IGB0ZWFtcy8ke3RoaXMudGVhbUlkfS9kZWx0YWAgOiAnZGVsdGEnLCB7IHBhcmFtcyB9KTtcbiAgICAgIHRoaXMuc3luY0RlbHRhUmVjb3JkcyhuZXdEZWx0YSwgZG9uZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBpZiBzb21ldGhpbmcgd2VudCB3cm9uZywgc3RvcHMgdGhlIG9wZXJhdGlvbiwgc2luY2Ugd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGVudGlyZSBmbG93IGlzIGNvbnNpc3RlbnRcbiAgICAgIHRoaXMuZXJyb3JJbkxhc3RTeW5jID0gdHJ1ZTtcbiAgICAgIHJldHVybiBkb25lKCk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBTYXZlIG9mZmxpbmUgYSBsaXN0IG9mIERlbHRhUmVjb3JkcyBmb3IgdGhpcyByZXNvdXJjZSwgY3JlYXRpbmcgYSBtYXAgb2YgYWxsIHRoZSBjb3JyZXNwb25kaW5nIEFQSSBHRVQgcmVxdWVzdHMuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgc3luY1Jlc291cmNlRGVsdGFSZWNvcmRzKHJlc291cmNlOiBzdHJpbmcsIHJlY29yZHM6IERlbHRhUmVjb3JkW10pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAvLyBhY3F1aXJlIHRoZSBpbmZvIGFuIGEgY2FjaGVhYmxlIHJlc291cmNlXG4gICAgY29uc3QgY3IgPSB0aGlzLmNhY2hlYWJsZVJlc291cmNlc1tyZXNvdXJjZV07XG4gICAgaWYgKCFjcikgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgLy8gcHJlcGFyZSBoZWxwZXJzIHRvIGdyb3VwIGV4ZWN1dGlvbnMgb2YgZWxlbWVudHMgb2YgdGhlIHNhbWUgbGlzdFxuICAgICAgbGV0IGxpc3Q6IGFueVtdID0gbnVsbCxcbiAgICAgICAgb2xkTGlzdFVSTDogc3RyaW5nID0gbnVsbDtcbiAgICAgIGZvciAoY29uc3QgciBvZiByZWNvcmRzKSB7XG4gICAgICAgIC8vIGNhbGN1bGF0ZSB0aGUgVVJMIHRvIGFjY2VzcyB0aGUgQVBJIHJlcXVlc3Qga2V5IGZvciB0aGlzIGVsZW1lbnRcbiAgICAgICAgY29uc3QgZWxlbWVudFVSTCA9IGNyLmVsZW1lbnRVUkwoci5lbGVtZW50KTtcbiAgICAgICAgLy8gaWYgdGhlIGVsZW1lbnQgd2FzIGRlbGV0ZWQgKGJhc2VkIG9uIGRlbHRhKSwgZGVsZXRlIGl0cyBjb3JyZXNwb25kaW5nIEFQSSBHRVQgcmVxdWVzdFxuICAgICAgICBpZiAoci5kZWxldGVkKSBhd2FpdCB0aGlzLl9BUEkuZGVsZXRlRnJvbUNhY2hlKGVsZW1lbnRVUkwpO1xuICAgICAgICAvLyBvdGhlcndpc2UsIHVwZGF0ZSBpdFxuICAgICAgICBlbHNlIGF3YWl0IHRoaXMuX0FQSS5wdXRJbkNhY2hlKGVsZW1lbnRVUkwsIHIuZWxlbWVudCk7XG4gICAgICAgIC8vIGNhbGN1bGF0ZSB0aGUgVVJMcyB0byBhY2Nlc3MgdGhlIEFQSSByZXF1ZXN0IGtleSBmb3IgdGhpcyBlbGVtZW50J3MgbGlzdFxuICAgICAgICBjb25zdCBsaXN0VVJMID0gY3IubGlzdFVSTChyLmVsZW1lbnQpO1xuICAgICAgICAvLyB0byBpbXByb3ZlIHRoZSBwZXJmb3JtYW5jZSwgZ2V0L3NvcnQvc2F2ZSB0aGUgbGlzdCBvbmx5IHdoZW4gaXQgY2hhbmdlcyBmcm9tIHRoZSBwcmV2aW91cyBlbGVtZW50J3Mgb25lLlxuICAgICAgICBpZiAobGlzdFVSTCAhPT0gb2xkTGlzdFVSTCkge1xuICAgICAgICAgIC8vIHNraXAgZmlyc3QgY3ljbGUgKG9sZExpc3RVUkwgPT09IG51bGwpXG4gICAgICAgICAgaWYgKG9sZExpc3RVUkwpIHtcbiAgICAgICAgICAgIC8vIHJlLXNvcnQgdGhlIGxpc3Q7IG5vdGU6IGl0IHNob3VsZCBiZSBzb3J0ZWQgZnJvbSB0aGUgbGFzdCB0aW1lLCBzbyB3ZSBvbmx5IG1hbmFnZSB0aGUgbmV3IGVsZW1lbnRcbiAgICAgICAgICAgIGxpc3QgPSBsaXN0LnNvcnQoY3Iuc29ydCk7XG4gICAgICAgICAgICAvLyBzYXZlIHRoZSB1cGRhdGVkIGxpc3RcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX0FQSS5wdXRJbkNhY2hlKG9sZExpc3RVUkwsIGxpc3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBnZXQgdGhlIGxpc3Qgb2YgZWxlbWVudHMgZnJvbSB0aGUgbG9jYWwgc3RvcmFnZSBieSB0aGUgY2FsY3VsYXRlZCBVUkxcbiAgICAgICAgICBsaXN0ID0gYXdhaXQgdGhpcy5fQVBJLmdldEZyb21DYWNoZShsaXN0VVJMKTtcbiAgICAgICAgICAvLyBzYXZlIHRoZSByZWZlcmVuY2UgdG8gdGhlIGxpc3QgZm9yIHRoZSBuZXh0IGN5Y2xlXG4gICAgICAgICAgb2xkTGlzdFVSTCA9IGxpc3RVUkw7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZmluZCBpbiB0aGUgbGlzdCB0aGUgZWxlbWVudCB3ZSB3YW50IHRvIG1hbmFnZVxuICAgICAgICBjb25zdCBpbmRleCA9IGNyLmZpbmRJbmRleEluTGlzdChsaXN0LCByLmVsZW1lbnQpO1xuICAgICAgICAvLyBkZWxldGUgdGhlIGVsZW1lbnQgZnJvbSB0aGUgbGlzdFxuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSBsaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIC8vIGlmIHRoZSBlbGVtZW50IHdhc24ndCBkZWxldGVkIChmb2xsb3dpbmcgdGhlIGRlbHRhIHJlY29yZCBpbmZvcm1hdGlvbiksIGluc2VydCB0aGUgbmV3IHZlcnNpb25cbiAgICAgICAgaWYgKCFyLmRlbGV0ZWQpIGxpc3QucHVzaChyLmVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgLy8gaW4gY2FzZSB0aGVyZSB3ZXJlIGVsZW1lbnRzLCBzYXZlIHRoZSBsYXN0IGVsZW1lbnQncyBsaXN0XG4gICAgICBpZiAob2xkTGlzdFVSTCkge1xuICAgICAgICAvLyByZS1zb3J0IHRoZSBsaXN0OyBub3RlOiBpdCBzaG91bGQgYmUgc29ydGVkIGZyb20gdGhlIGxhc3QgdGltZSwgc28gd2Ugb25seSBtYW5hZ2UgdGhlIG5ldyBlbGVtZW50XG4gICAgICAgIGxpc3QgPSBsaXN0LnNvcnQoY3Iuc29ydCk7XG4gICAgICAgIC8vIHNhdmUgdGhlIHVwZGF0ZWQgbGlzdFxuICAgICAgICBhd2FpdCB0aGlzLl9BUEkucHV0SW5DYWNoZShvbGRMaXN0VVJMLCBsaXN0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBpZiBzb21ldGhpbmcgd2VudCB3cm9uZywgc3RvcHMgdGhlIG9wZXJhdGlvbiwgc2luY2Ugd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGVudGlyZSBmbG93IGlzIGNvbnNpc3RlbnRcbiAgICAgIGNyLmVycm9yID0gdHJ1ZTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8vXG4gIC8vIFNZTkNIUk9OSVNBVElPTiAoVVBMT0FEK0RPV05MT0FEKVxuICAvL1xuXG4gIC8qKlxuICAgKiBSdW4gYSBzeW5jLCBidXQgb25seSBpZiBuZWVkZWQsIGkuZS4gdGhlIGNhY2hlZCBjb250ZW50IGV4cGlyZWQgb3Igd2UgaGF2ZSBwZW5kaW5nIEFQSSByZXF1ZXN0cyBpbiB0aGUgcXVldWUuXG4gICAqL1xuICBzeW5jaHJvbml6ZUlmTmVlZGVkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KTogdm9pZCA9PiB7XG4gICAgICBpZiAoIXRoaXMuaXNBbGxvd2VkKCkpIHJldHVybjtcbiAgICAgIHRoaXMubG9hZExhc3RTeW5jQXQoKS50aGVuKFxuICAgICAgICAoKTogUHJvbWlzZTx2b2lkPiA9PlxuICAgICAgICAgIHRoaXMubG9hZFF1ZXVlQVBJUmVxdWVzdCgpXG4gICAgICAgICAgICAudGhlbigoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnF1ZXVlQVBJUmVxdWVzdHMubGVuZ3RoIHx8IERhdGUubm93KCkgPiB0aGlzLmxhc3RTeW5jQXQgKyBTWU5DX0VYUElSQVRJT05fSU5URVJWQUwpXG4gICAgICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6ZSgpO1xuICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiByZWplY3QoZXJyKSlcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIFN5bmNocm9uaXphdGlvbiBvZiB0aGUgd2hvbGUgc2V0IG9mIHJlc291cmNlcyAodXBsb2FkK2Rvd25sb2FkKS5cbiAgICogQHBhcmFtIG1hbnVhbENvbmZpcm1hdGlvbiBpZiB0cnVlLCB0aGUgcmVxdWVzdCBjb21lcyBkaXJlY3RseSBmcm9tIGEgdXNlciBhY3Rpb24gKG5vdCBhdXRvbWF0aWMgcHJvY2VkdXJlcykuXG4gICAqL1xuICBzeW5jaHJvbml6ZShtYW51YWxDb25maXJtYXRpb24/OiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpOiB2b2lkID0+IHtcbiAgICAgIGlmICghdGhpcy5pc0FsbG93ZWQoKSB8fCB0aGlzLnN5bmNocm9uaXppbmcpIHJldHVybiByZXNvbHZlKCk7XG4gICAgICB0aGlzLnN5bmNocm9uaXppbmcgPSB0cnVlO1xuICAgICAgdGhpcy5lcnJvckluTGFzdFN5bmMgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVxdWlyZXNNYW51YWxDb25maXJtYXRpb24gPSBmYWxzZTtcbiAgICAgIC8vIGxvYWQgdGhlIGxhc3RTeW5jQXQgaW5mb3JtYXRpb25cbiAgICAgIHRoaXMubG9hZExhc3RTeW5jQXQoKS50aGVuKFxuICAgICAgICAoKTogUHJvbWlzZTx2b2lkPiA9PlxuICAgICAgICAgIC8vIHRyeSB0byBydW4gYWxsIHRoZSBwZW5kaW5nIEFQSSByZXF1ZXN0cyBpbiB0aGUgcXVldWUsIGkuZS4gdXBsb2FkaW5nIHRoZSBvZmZsaW5lIHJlc291cmNlcyBjaGFuZ2VkXG4gICAgICAgICAgdGhpcy5ydW5RdWV1ZUFQSVJlcXVlc3RzKClcbiAgICAgICAgICAgIC50aGVuKCgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgLy8gc2V0IHRoaXMgbW9tZW50IGluIHRpbWU6IGlmIGFueXRoaW5nIGhhcHBlbmVkIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBzeW5jLCB3ZSBkb24ndCBsb3NlIGZyZXNoIGRhdGFcbiAgICAgICAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgLy8gcHJlcGFyZSBhIGZpcnN0IFwic2hvcnRcIiBEZWx0YSByZXF1ZXN0LCB0byBzZWUgaWYgdGhlcmUgaXMgYSBsb3Qgb2YgZGF0YSB0byBwcm9jZXNzXG4gICAgICAgICAgICAgIGNvbnN0IHBhcmFtczogYW55ID0geyBsaW1pdDogTlVNX0VMRU1FTlRTX1dJVEhPVVRfTUFOVUFMX1NZTkMgfTtcbiAgICAgICAgICAgICAgaWYgKHRoaXMubGFzdFN5bmNBdCkgcGFyYW1zLnNpbmNlID0gdGhpcy5sYXN0U3luY0F0O1xuICAgICAgICAgICAgICB0aGlzLl9BUElcbiAgICAgICAgICAgICAgICAuZ2V0UmVzb3VyY2UodGhpcy50ZWFtSWQgPyBgdGVhbXMvJHt0aGlzLnRlYW1JZH0vZGVsdGFgIDogJ2RlbHRhJywgeyBwYXJhbXMgfSlcbiAgICAgICAgICAgICAgICAudGhlbigoZGVsdGE6IERlbHRhKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAvLyBkZWNpZGUgaWYgdG8gcHJvY2VlZCB3aXRoIHRoZSBzeW5jOiBpbiBjYXNlIHRoZXJlIGlzIGFub3RoZXIgcGFnZSwgaXQgcmVxdWlyZXMgYSBtYW51YWwgY29uZmlybWF0aW9uXG4gICAgICAgICAgICAgICAgICBpZiAoZGVsdGEubmV4dCAmJiAhbWFudWFsQ29uZmlybWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZXNNYW51YWxDb25maXJtYXRpb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN5bmNocm9uaXppbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8vIHNhdmUgdGhlIHJlY29yZHMgaW4gdGhlIGRlbHRhIGFuZCByZXF1ZXN0IHBvc3NpYmxlIG5ldyBwYWdlc1xuICAgICAgICAgICAgICAgICAgdGhpcy5zeW5jRGVsdGFSZWNvcmRzKGRlbHRhLCAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmVycm9ySW5MYXN0U3luYykge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3luY2hyb25pemluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAvLyBhbGwgdGhlIHJlc291cmNlcyBhcmUgc3VjY2VzZnVsbHkgaW4gc3luY1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzb3VyY2VzLmZvckVhY2gocmVzb3VyY2UgPT4gKHRoaXMuY2FjaGVhYmxlUmVzb3VyY2VzW3Jlc291cmNlXS5zeW5jaHJvbml6aW5nID0gZmFsc2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGUgdGhlIHRpbWVzdGFtcCBvZiBsYXN0IHN5bmNcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNhdmVMYXN0U3luY0F0KG5vdylcbiAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKCgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBjb3VsZG4ndCBzYXZlIHRoZSBsYXN0IHN5bmMgaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9ySW5MYXN0U3luYyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3luY2hyb25pemluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaCgoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAvLyB3ZSBjb3VsZG4ndCBhY3F1aXJlIG5ldyBpbmZvcm1hdGlvbiAoRGVsdGEpXG4gICAgICAgICAgICAgICAgICB0aGlzLmVycm9ySW5MYXN0U3luYyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICB0aGlzLnN5bmNocm9uaXppbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgIC8vIHdlIHN0b3AsIHNpbmNlIHdlIGRvbid0IHdhbnQgYmFja2VuZCBkYXRhIHRvIG92ZXJyaWRlIGxvY2FsIGluZm8gbm90IHlldCB1cGxvYWRlZFxuICAgICAgICAgICAgICB0aGlzLmVycm9ySW5MYXN0U3luYyA9IHRydWU7XG4gICAgICAgICAgICAgIHRoaXMuc3luY2hyb25pemluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICApO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBGb3JjZSBhIGZ1bGwgc3luY2hyb25pc2F0aW9uLlxuICAgKi9cbiAgZm9yY2VGdWxsU3luYygpOiB2b2lkIHtcbiAgICB0aGlzLl9zdG9yYWdlLmNsZWFyKCkudGhlbigoKTogUHJvbWlzZTx2b2lkPiA9PiB0aGlzLnN5bmNocm9uaXplKHRydWUpKTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBkZXNjcmlwdGlvbiBvZiBhbiBBUEkgcmVxdWVzdCB0byBhIHJlc291cmNlLCB0byB1c2Ugd2l0aCBgSURFQUFXU0FQSWAuXG4gKiBVc2VkIGZvciBxdWV1ZXMgb2YgcmVxdWVzdHMgKFVQTE9BRCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVBJUmVxdWVzdCB7XG4gIC8qKlxuICAgKiBSZXNvdXJjZSBwYXRoIChlLmcuIGB1c2Vyc2Agb3IgYHRlYW1zLyR7dGVhbUlkfS91c2Vyc2ApLlxuICAgKi9cbiAgcmVzb3VyY2U6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBpZCB0byBpZGVudGlmeSBhIHNwZWNpZmljIGVsZW1lbnQgb2YgdGhlIHJlc291cmNlLlxuICAgKi9cbiAgcmVzb3VyY2VJZDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIEFQSSByZXF1ZXN0IG1ldGhvZCAoZS5nLiBQT1NULCBQVVQsIFBBVENIKS5cbiAgICovXG4gIG1ldGhvZDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGJvZHkgb2YgdGhlIHJlcXVlc3QuXG4gICAqL1xuICBib2R5OiBhbnk7XG4gIC8qKlxuICAgKiBBIGRlc2NyaXB0aW9uIHRvIHNob3cgZm9yIHRoZSByZXF1ZXN0LlxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJZiBub3QgbnVsbCwgdGhlIHJlcXVlc3QgdHJpZWQgdG8gcnVuIGJ1dCBpdCBlbmNvdW50ZXJlZCB0aGUgZXJyb3IuXG4gICAqL1xuICBlcnJvcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgYWJzdHJhY3QgY2xhc3MgdG8gaW1wbGVtZW50IGZvciBlYWNoIHJlc291cmNlIHRvIGNhY2hlIG9mZmxpbmUgZnJvbSB0aGUgYmFjay1lbmQgKERPV05MT0FEKS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENhY2hlYWJsZVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSB0ZWFtIG93bmluZyB0aGUgcmVzb3VyY2UuXG4gICAqIElmIG51bGwsIHRoZSBwcm9qZWN0IGlzbid0IHRlYW1zLWJhc2VkLlxuICAgKi9cbiAgdGVhbUlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgaWRlbnRpZmllciBvZiB0aGUgcmVzb3VyY2UuXG4gICAqL1xuICByZXNvdXJjZTogRGVsdGFSZXNvdXJjZXMgfCBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgZGVzY3JpcHRpb24gKHRyYW5zbGF0ZWQpIGZvciB0aGUgVUkuXG4gICAqL1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKipcbiAgICogUnVudGltZSBhdHRyaWJ1dGUgdG8ga25vdyBpZiB0aGUgcmVzb3VyY2UgaXMgc3luY2hyb25pemluZy5cbiAgICovXG4gIHN5bmNocm9uaXppbmc6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUcnVlIGlmIG9uZSBvZiB0aGUgZWxlbWVudHMgZmFpbGVkIHRoZSBleGVjdXRpb24uXG4gICAqL1xuICBlcnJvcjogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihyZXNvdXJjZTogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXNvdXJjZSA9IHJlc291cmNlO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjtcbiAgICB0aGlzLnN5bmNocm9uaXppbmcgPSBmYWxzZTtcbiAgICB0aGlzLmVycm9yID0gZmFsc2U7XG4gICAgLy8gbG9hZGVkIGF0IHJ1bnRpbWVcbiAgICB0aGlzLnRlYW1JZCA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogSG93IHRvIGJ1aWxkIHRoZSByZWxhdGl2ZSBVUkwgdG8gdGhlIHJlc291cmNlIChsaXN0KS5cbiAgICogRS5nLiBgdGVhbXMvJHtlbGVtZW50LnRlYW1JZH0vY3VzdG9tZXJzYCBvciBgY3VzdG9tZXJzYC5cbiAgICovXG4gIGFic3RyYWN0IGxpc3RVUkwoZWxlbWVudDogYW55KTogc3RyaW5nO1xuICAvKipcbiAgICogSG93IHRvIGJ1aWxkIHRoZSByZWxhdGl2ZSBVUkwgdG8gdGhlIHJlc291cmNlIGVsZW1lbnQgKGRldGFpbCkuXG4gICAqIEUuZy4gYHRlYW1zLyR7ZWxlbWVudC50ZWFtSWR9L2N1c3RvbWVycy8ke2VsZW1lbnQuY3VzdG9tZXJJZH1gIG9yIGBjdXN0b21lcnMvJHtlbGVtZW50LmN1c3RvbWVySWR9YC5cbiAgICovXG4gIGFic3RyYWN0IGVsZW1lbnRVUkwoZWxlbWVudDogYW55KTogc3RyaW5nO1xuICAvKipcbiAgICogSG93IHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGFuIGVsZW1lbnQgaW4gdGhlIGxpc3QgKGJ5IGl0cyBpZHMpLlxuICAgKiBFLmcuIGByZXR1cm4gbGlzdC5maW5kSW5kZXgoeCA9PiB4LmN1c3RvbWVySWQgPT09IGVsZW1lbnQuY3VzdG9tZXJJZCk7YFxuICAgKi9cbiAgYWJzdHJhY3QgZmluZEluZGV4SW5MaXN0KGxpc3Q6IGFueVtdLCBlbGVtZW50OiBhbnkpOiBudW1iZXI7XG4gIC8qKlxuICAgKiBIb3cgdG8ga2VlcCB0aGUgbGlzdCBzb3J0ZWQuXG4gICAqIEUuZy4gYHJldHVybiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpO2BcbiAgICovXG4gIGFic3RyYWN0IHNvcnQoYTogYW55LCBiOiBhbnkpOiBudW1iZXI7XG59XG4iXX0=
|