@lowcodeunit/applications-flow-common 1.34.63-lets-get-social-ish → 1.34.68-lets-get-social-ish
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/esm2020/lcu.api.mjs +3 -1
- package/esm2020/lib/applications-flow.module.mjs +14 -4
- package/esm2020/lib/controls/dfs-modifiers-form/dfs-modifiers-form.component.mjs +2 -4
- package/esm2020/lib/controls/processor-details-form/processor-details-form.component.mjs +3 -3
- package/esm2020/lib/controls/state-config-form/state-config-form.component.mjs +43 -0
- package/esm2020/lib/dialogs/build-pipeline-dialog/build-pipeline-dialog.component.mjs +9 -9
- package/esm2020/lib/dialogs/dfs-modifiers-dialog/dfs-modifiers-dialog.component.mjs +21 -12
- package/esm2020/lib/dialogs/feed-header-dialog/feed-header-dialog.component.mjs +29 -17
- package/esm2020/lib/dialogs/source-control-dialog/source-control-dialog.component.mjs +12 -12
- package/esm2020/lib/dialogs/state-config-dialog/state-config-dialog.component.mjs +47 -0
- package/esm2020/lib/elements/main-feed-card/main-feed-card.component.mjs +4 -3
- package/esm2020/lib/elements/projects/controls/project-items/project-items.component.mjs +2 -4
- package/esm2020/lib/elements/projects/controls/tabs/devops/devops.component.mjs +6 -4
- package/esm2020/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.mjs +2 -4
- package/esm2020/lib/services/applications-flow.service.mjs +2 -22
- package/esm2020/lib/services/eac.service.mjs +59 -18
- package/esm2020/lib/services/project.service.mjs +1 -81
- package/fesm2015/lowcodeunit-applications-flow-common.mjs +216 -178
- package/fesm2015/lowcodeunit-applications-flow-common.mjs.map +1 -1
- package/fesm2020/lowcodeunit-applications-flow-common.mjs +212 -176
- package/fesm2020/lowcodeunit-applications-flow-common.mjs.map +1 -1
- package/lcu.api.d.ts +2 -0
- package/lib/applications-flow.module.d.ts +12 -10
- package/lib/controls/state-config-form/state-config-form.component.d.ts +18 -0
- package/lib/dialogs/dfs-modifiers-dialog/dfs-modifiers-dialog.component.d.ts +2 -0
- package/lib/dialogs/feed-header-dialog/feed-header-dialog.component.d.ts +4 -1
- package/lib/dialogs/source-control-dialog/source-control-dialog.component.d.ts +2 -1
- package/lib/dialogs/state-config-dialog/state-config-dialog.component.d.ts +29 -0
- package/lib/elements/main-feed-card/main-feed-card.component.d.ts +1 -1
- package/lib/services/applications-flow.service.d.ts +0 -4
- package/lib/services/eac.service.d.ts +7 -4
- package/lib/services/project.service.d.ts +0 -4
- package/package.json +1 -1
|
@@ -13,6 +13,7 @@ import * as i8 from "@angular/material/checkbox";
|
|
|
13
13
|
import * as i9 from "@angular/flex-layout/flex";
|
|
14
14
|
import * as i10 from "@angular/common";
|
|
15
15
|
import * as i11 from "@angular/material/form-field";
|
|
16
|
+
import * as i12 from "@angular/material/tooltip";
|
|
16
17
|
export class DFSModifiersDialogComponent {
|
|
17
18
|
constructor(eacSvc, formbldr, dialogRef, data, snackBar) {
|
|
18
19
|
this.eacSvc = eacSvc;
|
|
@@ -40,11 +41,14 @@ export class DFSModifiersDialogComponent {
|
|
|
40
41
|
CloseDialog() {
|
|
41
42
|
this.dialogRef.close();
|
|
42
43
|
}
|
|
44
|
+
DeleteModifier() {
|
|
45
|
+
this.eacSvc.DeleteModifier(this.data.modifierLookup, this.data.modifierName);
|
|
46
|
+
}
|
|
43
47
|
HandleSaveFormEvent(event) {
|
|
44
|
-
console.log(
|
|
48
|
+
console.log('event: ', event);
|
|
45
49
|
if (event.Code === 0) {
|
|
46
|
-
this.snackBar.open(
|
|
47
|
-
duration: 5000
|
|
50
|
+
this.snackBar.open('DFS Modifier Saved Successfully', 'Dismiss', {
|
|
51
|
+
duration: 5000,
|
|
48
52
|
});
|
|
49
53
|
this.CloseDialog();
|
|
50
54
|
}
|
|
@@ -55,16 +59,20 @@ export class DFSModifiersDialogComponent {
|
|
|
55
59
|
IsDisabled() {
|
|
56
60
|
this.SaveDisabled = true;
|
|
57
61
|
if (this.DFSModifersFormGroup) {
|
|
58
|
-
this.SaveDisabled =
|
|
62
|
+
this.SaveDisabled =
|
|
63
|
+
!this.DFSModifersFormGroup?.valid || !this.ModifierDialogForm?.valid;
|
|
59
64
|
}
|
|
60
65
|
else if (this.SelectedModifiersFormGroup) {
|
|
61
|
-
this.SaveDisabled =
|
|
66
|
+
this.SaveDisabled =
|
|
67
|
+
!this.SelectedModifiersFormGroup?.valid ||
|
|
68
|
+
!this.SelectedModifiersFormGroup?.dirty;
|
|
62
69
|
}
|
|
63
70
|
return this.SaveDisabled;
|
|
64
71
|
}
|
|
65
72
|
SaveDFSModifier() {
|
|
73
|
+
// console.log("level at save: ", this.data.level)
|
|
66
74
|
switch (this.data.level) {
|
|
67
|
-
case
|
|
75
|
+
case 'enterprise': {
|
|
68
76
|
if (this.ModifierDialogForm.controls.applyToAllProjects.value) {
|
|
69
77
|
//save modifier add it to the ModifierLookups of all projects
|
|
70
78
|
this.DFSModifersFormControls.SaveModifierForAllProjects(this.ProjectLookups);
|
|
@@ -74,18 +82,19 @@ export class DFSModifiersDialogComponent {
|
|
|
74
82
|
this.DFSModifersFormControls.SaveModifier();
|
|
75
83
|
}
|
|
76
84
|
}
|
|
77
|
-
case
|
|
85
|
+
case 'project': {
|
|
78
86
|
this.DFSModifersFormControls.SaveModifier(this.data.projectLookup);
|
|
79
87
|
}
|
|
80
|
-
case
|
|
88
|
+
case 'application': {
|
|
81
89
|
this.DFSModifersFormControls.SaveModifierForApplication(this.data.applicationLookup);
|
|
82
90
|
}
|
|
83
91
|
}
|
|
84
92
|
// this.DFSModifersFormControls.SaveModifier();
|
|
85
93
|
}
|
|
86
94
|
determineLevel() {
|
|
95
|
+
// console.log("LEVEL: ", this.data.level)
|
|
87
96
|
switch (this.data.level) {
|
|
88
|
-
case
|
|
97
|
+
case 'enterprise': {
|
|
89
98
|
this.setupEntForm();
|
|
90
99
|
}
|
|
91
100
|
}
|
|
@@ -95,10 +104,10 @@ export class DFSModifiersDialogComponent {
|
|
|
95
104
|
}
|
|
96
105
|
}
|
|
97
106
|
DFSModifiersDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: DFSModifiersDialogComponent, deps: [{ token: i1.EaCService }, { token: i2.FormBuilder }, { token: i3.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i4.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component });
|
|
98
|
-
DFSModifiersDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: DFSModifiersDialogComponent, selector: "lcu-dfs-modifiers-dialog", viewQueries: [{ propertyName: "DFSModifersFormControls", first: true, predicate: DFSModifiersFormComponent, descendants: true }], ngImport: i0, template: "<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n
|
|
107
|
+
DFSModifiersDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: DFSModifiersDialogComponent, selector: "lcu-dfs-modifiers-dialog", viewQueries: [{ propertyName: "DFSModifersFormControls", first: true, predicate: DFSModifiersFormComponent, descendants: true }], ngImport: i0, template: "<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>DFS Modifiers</h2>\n\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n <div *ngIf=\"!data.modifierLookup\">\n Select the modifiers you would like to apply from the list below, or create\n a new modifier.\n </div>\n\n <lcu-dfs-modifier-form\n [application-lookup]=\"data.applicationLookup\"\n [project-lookup]=\"data.projectLookup\"\n [editing-modifier-lookup]=\"data.modifierLookup\"\n [level]=\"data.level\"\n >\n </lcu-dfs-modifier-form>\n\n <form [formGroup]=\"ModifierDialogForm\">\n <mat-checkbox\n *ngIf=\"data.level === 'enterprise' && data.modifierLookup\"\n formControlName=\"applyToAllProjects\"\n >Apply to all Projects</mat-checkbox\n >\n </form>\n\n <mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\">\n {{ ErrorMessage }}\n </mat-error>\n</mat-dialog-content>\n\n<mat-dialog-actions\n class=\"actions-container\"\n div\n fxLayout=\"row\"\n fxLayoutAlign=\"space-between center\"\n>\n <div fxLayoutAlign=\"start center\">\n <button\n *ngIf=\"data.modifierLookup\"\n mat-raised-button\n color=\"warn\"\n (click)=\"DeleteModifier()\"\n matTooltip=\"Delete {{ data.modifierLookup }}\"\n >\n Delete\n </button>\n </div>\n\n <div fxLayoutAlign=\"end center\">\n <button\n class=\"action-button\"\n mat-raised-button\n fxFlex=\"52%\"\n (click)=\"CloseDialog()\"\n >\n Cancel\n </button>\n\n <button\n class=\"action-button\"\n mat-raised-button\n *ngIf=\"!State?.Loading\"\n fxFlex=\"30%\"\n color=\"primary\"\n (click)=\"SaveDFSModifier()\"\n [disabled]=\"IsDisabled()\"\n >\n Save\n </button>\n </div>\n</mat-dialog-actions>\n", styles: [""], components: [{ type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i7.DFSModifiersFormComponent, selector: "lcu-dfs-modifier-form", inputs: ["editing-modifier-lookup", "application-lookup", "project", "project-lookup", "level"] }, { type: i8.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i9.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i11.MatError, selector: "mat-error", inputs: ["id"] }, { type: i3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i9.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i12.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i9.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] });
|
|
99
108
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: DFSModifiersDialogComponent, decorators: [{
|
|
100
109
|
type: Component,
|
|
101
|
-
args: [{ selector: 'lcu-dfs-modifiers-dialog', template: "<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n
|
|
110
|
+
args: [{ selector: 'lcu-dfs-modifiers-dialog', template: "<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>DFS Modifiers</h2>\n\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n <div *ngIf=\"!data.modifierLookup\">\n Select the modifiers you would like to apply from the list below, or create\n a new modifier.\n </div>\n\n <lcu-dfs-modifier-form\n [application-lookup]=\"data.applicationLookup\"\n [project-lookup]=\"data.projectLookup\"\n [editing-modifier-lookup]=\"data.modifierLookup\"\n [level]=\"data.level\"\n >\n </lcu-dfs-modifier-form>\n\n <form [formGroup]=\"ModifierDialogForm\">\n <mat-checkbox\n *ngIf=\"data.level === 'enterprise' && data.modifierLookup\"\n formControlName=\"applyToAllProjects\"\n >Apply to all Projects</mat-checkbox\n >\n </form>\n\n <mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\">\n {{ ErrorMessage }}\n </mat-error>\n</mat-dialog-content>\n\n<mat-dialog-actions\n class=\"actions-container\"\n div\n fxLayout=\"row\"\n fxLayoutAlign=\"space-between center\"\n>\n <div fxLayoutAlign=\"start center\">\n <button\n *ngIf=\"data.modifierLookup\"\n mat-raised-button\n color=\"warn\"\n (click)=\"DeleteModifier()\"\n matTooltip=\"Delete {{ data.modifierLookup }}\"\n >\n Delete\n </button>\n </div>\n\n <div fxLayoutAlign=\"end center\">\n <button\n class=\"action-button\"\n mat-raised-button\n fxFlex=\"52%\"\n (click)=\"CloseDialog()\"\n >\n Cancel\n </button>\n\n <button\n class=\"action-button\"\n mat-raised-button\n *ngIf=\"!State?.Loading\"\n fxFlex=\"30%\"\n color=\"primary\"\n (click)=\"SaveDFSModifier()\"\n [disabled]=\"IsDisabled()\"\n >\n Save\n </button>\n </div>\n</mat-dialog-actions>\n", styles: [""] }]
|
|
102
111
|
}], ctorParameters: function () { return [{ type: i1.EaCService }, { type: i2.FormBuilder }, { type: i3.MatDialogRef }, { type: undefined, decorators: [{
|
|
103
112
|
type: Inject,
|
|
104
113
|
args: [MAT_DIALOG_DATA]
|
|
@@ -106,4 +115,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
106
115
|
type: ViewChild,
|
|
107
116
|
args: [DFSModifiersFormComponent]
|
|
108
117
|
}] } });
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGZzLW1vZGlmaWVycy1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uL3NyYy9saWIvZGlhbG9ncy9kZnMtbW9kaWZpZXJzLWRpYWxvZy9kZnMtbW9kaWZpZXJzLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24vc3JjL2xpYi9kaWFsb2dzL2Rmcy1tb2RpZmllcnMtZGlhbG9nL2Rmcy1tb2RpZmllcnMtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdyRSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSXpFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDOzs7Ozs7Ozs7Ozs7O0FBbUIzRyxNQUFNLE9BQU8sMkJBQTJCO0lBNEJ0QyxZQUFzQixNQUFrQixFQUMvQixRQUFxQixFQUNyQixTQUFvRCxFQUMzQixJQUE0QixFQUNsRCxRQUFxQjtRQUpYLFdBQU0sR0FBTixNQUFNLENBQVk7UUFDL0IsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUEyQztRQUMzQixTQUFJLEdBQUosSUFBSSxDQUF3QjtRQUNsRCxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQzdCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUVuRCxDQUFDO0lBN0JKLElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENB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QzdCLENBQUM7SUFDSixDQUFDOzt3SEFqSFUsMkJBQTJCLG1HQStCNUIsZUFBZTs0R0EvQmQsMkJBQTJCLHlIQUUzQix5QkFBeUIsZ0RDNUJ0QyxpcERBaUVBOzJGRHZDYSwyQkFBMkI7a0JBTnZDLFNBQVM7K0JBQ0UsMEJBQTBCOzswQkFvQ2pDLE1BQU07MkJBQUMsZUFBZTtzRUE1QmxCLHVCQUF1QjtzQkFEN0IsU0FBUzt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgU3RhdHVzIH0gZnJvbSAnQGxjdS9jb21tb24nO1xuaW1wb3J0IHsgRWFDREZTTW9kaWZpZXIgfSBmcm9tICdAc2VtYW50aWNqcy9jb21tb24nO1xuaW1wb3J0IHsgREZTTW9kaWZpZXJzRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL2Rmcy1tb2RpZmllcnMtZm9ybS9kZnMtbW9kaWZpZXJzLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IEVhQ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lYWMuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbnNGbG93U3RhdGUgfSBmcm9tICcuLi8uLi9zdGF0ZS9hcHBsaWNhdGlvbnMtZmxvdy5zdGF0ZSc7XG5cblxuZXhwb3J0IGludGVyZmFjZSBERlNNb2RpZmllcnNEaWFsb2dEYXRhIHtcbiAgYXBwbGljYXRpb25Mb29rdXA/OiBzdHJpbmcsXG4gIG1vZGlmaWVyTG9va3VwPzogc3RyaW5nO1xuICAvLyBtb2RpZmllcnM6ICB7IFtsb29rdXA6IHN0cmluZ106IEVhQ0RGU01vZGlmaWVyIH07XG4gIGxldmVsOiBzdHJpbmc7XG4gIHByb2plY3RMb29rdXA/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xjdS1kZnMtbW9kaWZpZXJzLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kZnMtbW9kaWZpZXJzLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rmcy1tb2RpZmllcnMtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5cbmV4cG9ydCBjbGFzcyBERlNNb2RpZmllcnNEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBWaWV3Q2hpbGQoREZTTW9kaWZpZXJzRm9ybUNvbXBvbmVudClcbiAgcHVibGljIERGU01vZGlmZXJzRm9ybUNvbnRyb2xzOiBERlNNb2RpZmllcnNGb3JtQ29tcG9uZW50O1xuXG5cbiAgcHVibGljIGdldCBTdGF0ZSgpOiBBcHBsaWNhdGlvbnNGbG93U3RhdGUge1xuICAgIHJldHVybiB0aGlzLmVhY1N2Yy5TdGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgUHJvamVjdExvb2t1cHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLlN0YXRlPy5FYUM/LlByb2plY3RzIHx8IHt9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgREZTTW9kaWZlcnNGb3JtR3JvdXAoKTogRm9ybUdyb3Vwe1xuICAgIHJldHVybiB0aGlzLkRGU01vZGlmZXJzRm9ybUNvbnRyb2xzPy5Nb2RpZmllckZvcm1Hcm91cDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgU2VsZWN0ZWRNb2RpZmllcnNGb3JtR3JvdXAoKTogRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gdGhpcy5ERlNNb2RpZmVyc0Zvcm1Db250cm9scz8uTW9kaWZpZXJTZWxlY3RGb3JtR3JvdXA7XG4gIH1cblxuICBwdWJsaWMgRXJyb3JNZXNzYWdlOiBzdHJpbmc7XG5cbiAgcHVibGljIE1vZGlmaWVyRGlhbG9nRm9ybTogRm9ybUdyb3VwO1xuXG4gIHB1YmxpYyBTYXZlRGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGVhY1N2YzogRWFDU2VydmljZSwgXG4gICAgcHVibGljIGZvcm1ibGRyOiBGb3JtQnVpbGRlcixcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8REZTTW9kaWZpZXJzRGlhbG9nQ29tcG9uZW50PixcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IERGU01vZGlmaWVyc0RpYWxvZ0RhdGEsXG4gICAgcHJvdGVjdGVkIHNuYWNrQmFyOiBNYXRTbmFja0Jhcikge1xuICAgICAgdGhpcy5Nb2RpZmllckRpYWxvZ0Zvcm0gPSB0aGlzLmZvcm1ibGRyLmdyb3VwKHt9KTtcbiAgICAgXG4gICAgIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kZXRlcm1pbmVMZXZlbCgpO1xuICB9XG5cbiAgcHVibGljIENsb3NlRGlhbG9nKCl7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBIYW5kbGVTYXZlRm9ybUV2ZW50KGV2ZW50OiBTdGF0dXMpe1xuICAgIGNvbnNvbGUubG9nKFwiZXZlbnQ6IFwiLCBldmVudCk7XG4gICAgaWYgKGV2ZW50LkNvZGUgPT09IDApe1xuICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKFwiREZTIE1vZGlmaWVyIFNhdmVkIFN1Y2Nlc3NmdWxseVwiLCBcIkRpc21pc3NcIix7XG4gICAgICAgIGR1cmF0aW9uOiA1MDAwXG4gICAgICB9KTtcbiAgICAgIHRoaXMuQ2xvc2VEaWFsb2coKTtcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgIHRoaXMuRXJyb3JNZXNzYWdlID0gZXZlbnQuTWVzc2FnZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgSXNEaXNhYmxlZCgpe1xuICAgIHRoaXMuU2F2ZURpc2FibGVkPXRydWU7XG4gICAgaWYodGhpcy5ERlNNb2RpZmVyc0Zvcm1Hcm91cCl7XG5cbiAgICAgIHRoaXMuU2F2ZURpc2FibGVkID0gKCF0aGlzLkRGU01vZGlmZXJzRm9ybUdyb3VwPy52YWxpZCB8fCAhdGhpcy5Nb2RpZmllckRpYWxvZ0Zvcm0/LnZhbGlkKVxuICAgIH1cbiAgICBcbiAgICBlbHNlIGlmKHRoaXMuU2VsZWN0ZWRNb2RpZmllcnNGb3JtR3JvdXApe1xuICAgICAgdGhpcy5TYXZlRGlzYWJsZWQgPSAgKCF0aGlzLlNlbGVjdGVkTW9kaWZpZXJzRm9ybUdyb3VwPy52YWxpZCB8fCAhdGhpcy5TZWxlY3RlZE1vZGlmaWVyc0Zvcm1Hcm91cD8uZGlydHkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5TYXZlRGlzYWJsZWQ7XG4gIH1cblxuICBcblxuICBwdWJsaWMgU2F2ZURGU01vZGlmaWVyKCl7XG5cbiAgICBzd2l0Y2godGhpcy5kYXRhLmxldmVsKXtcbiAgICAgIGNhc2UgXCJlbnRlcnByaXNlXCI6e1xuICAgICAgICBpZih0aGlzLk1vZGlmaWVyRGlhbG9nRm9ybS5jb250cm9scy5hcHBseVRvQWxsUHJvamVjdHMudmFsdWUpe1xuICAgICAgICAgIC8vc2F2ZSBtb2RpZmllciBhZGQgaXQgdG8gdGhlIE1vZGlmaWVyTG9va3VwcyBvZiBhbGwgcHJvamVjdHNcbiAgICAgICAgICB0aGlzLkRGU01vZGlmZXJzRm9ybUNvbnRyb2xzLlNhdmVNb2RpZmllckZvckFsbFByb2plY3RzKHRoaXMuUHJvamVjdExvb2t1cHMpXG4gICAgICAgIH1cbiAgICAgICAgZWxzZXtcbiAgICAgICAgICAvL3NhdmUgbW9kaWZpZXJcbiAgICAgICAgICB0aGlzLkRGU01vZGlmZXJzRm9ybUNvbnRyb2xzLlNhdmVNb2RpZmllcigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjYXNlIFwicHJvamVjdFwiOiB7XG4gICAgICAgICAgdGhpcy5ERlNNb2RpZmVyc0Zvcm1Db250cm9scy5TYXZlTW9kaWZpZXIodGhpcy5kYXRhLnByb2plY3RMb29rdXApO1xuXG4gICAgICB9XG5cbiAgICAgIGNhc2UgXCJhcHBsaWNhdGlvblwiOiB7XG4gICAgICAgICAgdGhpcy5ERlNNb2RpZmVyc0Zvcm1Db250cm9scy5TYXZlTW9kaWZpZXJGb3JBcHBsaWNhdGlvbih0aGlzLmRhdGEuYXBwbGljYXRpb25Mb29rdXApO1xuXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHRoaXMuREZTTW9kaWZlcnNGb3JtQ29udHJvbHMuU2F2ZU1vZGlmaWVyKCk7XG5cbiAgfVxuXG4gIHByb3RlY3RlZCBkZXRlcm1pbmVMZXZlbCgpe1xuICAgIHN3aXRjaCh0aGlzLmRhdGEubGV2ZWwpe1xuICAgICAgY2FzZSBcImVudGVycHJpc2VcIjp7XG4gICAgICAgIHRoaXMuc2V0dXBFbnRGb3JtKClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0dXBFbnRGb3JtKCl7XG4gICAgdGhpcy5Nb2RpZmllckRpYWxvZ0Zvcm0uYWRkQ29udHJvbChcbiAgICAgICdhcHBseVRvQWxsUHJvamVjdHMnLFxuICAgICAgdGhpcy5mb3JtYmxkci5jb250cm9sKGZhbHNlKVxuICAgICk7XG4gIH0gXG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJkaWFsb2ctaGVhZGVyXCIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW4gY2VudGVyXCI+XG4gICAgPGgyIG1hdC1kaWFsb2ctdGl0bGU+REZTIE1vZGlmaWVyczwvaDI+XG5cbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiQ2xvc2VEaWFsb2coKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmNhbmNlbDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG48L2Rpdj5cblxuPG1hdC1kaWFsb2ctY29udGVudD5cblxuXG4gICAgICAgIDxsY3UtZGZzLW1vZGlmaWVyLWZvcm1cbiAgICAgICAgW2FwcGxpY2F0aW9uLWxvb2t1cF09XCJkYXRhLmFwcGxpY2F0aW9uTG9va3VwXCJcbiAgICAgICAgW3Byb2plY3QtbG9va3VwXT1cImRhdGEucHJvamVjdExvb2t1cFwiXG4gICAgICAgIFtlZGl0aW5nLW1vZGlmaWVyLWxvb2t1cF09XCJkYXRhLm1vZGlmaWVyTG9va3VwXCJcbiAgICAgICAgW2xldmVsXT1cImRhdGEubGV2ZWxcIlxuICAgICAgICA+XG5cbiAgICAgICAgPC9sY3UtZGZzLW1vZGlmaWVyLWZvcm0+XG5cbiAgICAgICAgPGZvcm1cbiAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cIk1vZGlmaWVyRGlhbG9nRm9ybVwiXG4gICAgICAgID5cblxuICAgICAgICA8bWF0LWNoZWNrYm94ICpuZ0lmPVwiZGF0YS5sZXZlbCA9PT0gJ2VudGVycHJpc2UnICYmIGRhdGEubW9kaWZpZXJMb29rdXBcIiBmb3JtQ29udHJvbE5hbWU9XCJhcHBseVRvQWxsUHJvamVjdHNcIj5BcHBseSB0byBhbGwgUHJvamVjdHM8L21hdC1jaGVja2JveD5cbiAgICAgICAgPC9mb3JtPlxuXG48bWF0LWVycm9yICpuZ0lmPVwiRXJyb3JNZXNzYWdlXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiA+XG4gICAge3sgRXJyb3JNZXNzYWdlIH19XG48L21hdC1lcnJvcj5cblxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG5cbjxtYXQtZGlhbG9nLWFjdGlvbnMgXG4gICAgICAgIGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIiBcbiAgICAgICAgZGl2IGZ4TGF5b3V0PVwicm93XCIgXG4gICAgICAgIGZ4TGF5b3V0QWxpZ249XCJlbmQgY2VudGVyXCJcbj5cbiAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbi1idXR0b25cIlxuICAgICAgICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgICAgICAgICAgZnhGbGV4PVwiMjUlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiQ2xvc2VEaWFsb2coKVwiPlxuICAgICAgICAgICAgICAgIENhbmNlbFxuXG4gICAgICAgIDwvYnV0dG9uPlxuXG5cbiAgICAgICAgPCEtLSAgLS0+XG4gICAgICAgIDxidXR0b24gXG4gICAgICAgICAgKm5nSWY9XCIhU3RhdGU/LkxvYWRpbmdcIlxuICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uIFxuICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIiBcbiAgICAgICAgICBmeEZsZXg9XCIyNSVcIiBcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIiBcbiAgICAgICAgICAoY2xpY2spPVwiU2F2ZURGU01vZGlmaWVyKClcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJJc0Rpc2FibGVkKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8IS0tIDxtYXQtaWNvbj5zYXZlPC9tYXQtaWNvbj4gLS0+XG4gICAgICAgICAgU2F2ZVxuICAgICAgICA8L2J1dHRvbj5cblxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG5cblxuIl19
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGZzLW1vZGlmaWVycy1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uL3NyYy9saWIvZGlhbG9ncy9kZnMtbW9kaWZpZXJzLWRpYWxvZy9kZnMtbW9kaWZpZXJzLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24vc3JjL2xpYi9kaWFsb2dzL2Rmcy1tb2RpZmllcnMtZGlhbG9nL2Rmcy1tb2RpZmllcnMtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdyRSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3pFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQWtCM0csTUFBTSxPQUFPLDJCQUEyQjtJQTBCdEMsWUFDWSxNQUFrQixFQUNyQixRQUFxQixFQUNyQixTQUFvRCxFQUMzQixJQUE0QixFQUNsRCxRQUFxQjtRQUpyQixXQUFNLEdBQU4sTUFBTSxDQUFZO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsY0FBUyxHQUFULFNBQVMsQ0FBMkM7UUFDM0IsU0FBSSxHQUFKLElBQUksQ0FBd0I7UUFDbEQsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUUvQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQTlCRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxNQUFNLENBQUMsSUFBSSxD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RUFBRSxDQUFDO2FBQ3JCO1NBQ0Y7SUFDSCxDQUFDO0lBRVMsWUFBWTtRQUNwQixJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUNoQyxvQkFBb0IsRUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQzdCLENBQUM7SUFDSixDQUFDOzt3SEFuSFUsMkJBQTJCLG1HQThCNUIsZUFBZTs0R0E5QmQsMkJBQTJCLHlIQUMzQix5QkFBeUIsZ0RDekJ0QyxzM0RBNEVBOzJGRHBEYSwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UsMEJBQTBCOzswQkFrQ2pDLE1BQU07MkJBQUMsZUFBZTtzRUE1QmxCLHVCQUF1QjtzQkFEN0IsU0FBUzt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgU3RhdHVzIH0gZnJvbSAnQGxjdS9jb21tb24nO1xuaW1wb3J0IHsgREZTTW9kaWZpZXJzRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL2Rmcy1tb2RpZmllcnMtZm9ybS9kZnMtbW9kaWZpZXJzLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IEVhQ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lYWMuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbnNGbG93U3RhdGUgfSBmcm9tICcuLi8uLi9zdGF0ZS9hcHBsaWNhdGlvbnMtZmxvdy5zdGF0ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgREZTTW9kaWZpZXJzRGlhbG9nRGF0YSB7XG4gIGFwcGxpY2F0aW9uTG9va3VwPzogc3RyaW5nO1xuICBtb2RpZmllckxvb2t1cD86IHN0cmluZztcbiAgbW9kaWZpZXJOYW1lPzogc3RyaW5nO1xuICAvLyBtb2RpZmllcnM6ICB7IFtsb29rdXA6IHN0cmluZ106IEVhQ0RGU01vZGlmaWVyIH07XG4gIGxldmVsOiBzdHJpbmc7XG4gIHByb2plY3RMb29rdXA/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xjdS1kZnMtbW9kaWZpZXJzLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kZnMtbW9kaWZpZXJzLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rmcy1tb2RpZmllcnMtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIERGU01vZGlmaWVyc0RpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoREZTTW9kaWZpZXJzRm9ybUNvbXBvbmVudClcbiAgcHVibGljIERGU01vZGlmZXJzRm9ybUNvbnRyb2xzOiBERlNNb2RpZmllcnNGb3JtQ29tcG9uZW50O1xuXG4gIHB1YmxpYyBnZXQgU3RhdGUoKTogQXBwbGljYXRpb25zRmxvd1N0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5lYWNTdmMuU3RhdGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IFByb2plY3RMb29rdXBzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5TdGF0ZT8uRWFDPy5Qcm9qZWN0cyB8fCB7fSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IERGU01vZGlmZXJzRm9ybUdyb3VwKCk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuREZTTW9kaWZlcnNGb3JtQ29udHJvbHM/Lk1vZGlmaWVyRm9ybUdyb3VwO1xuICB9XG5cbiAgcHVibGljIGdldCBTZWxlY3RlZE1vZGlmaWVyc0Zvcm1Hcm91cCgpOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLkRGU01vZGlmZXJzRm9ybUNvbnRyb2xzPy5Nb2RpZmllclNlbGVjdEZvcm1Hcm91cDtcbiAgfVxuXG4gIHB1YmxpYyBFcnJvck1lc3NhZ2U6IHN0cmluZztcblxuICBwdWJsaWMgTW9kaWZpZXJEaWFsb2dGb3JtOiBGb3JtR3JvdXA7XG5cbiAgcHVibGljIFNhdmVEaXNhYmxlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZWFjU3ZjOiBFYUNTZXJ2aWNlLFxuICAgIHB1YmxpYyBmb3JtYmxkcjogRm9ybUJ1aWxkZXIsXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPERGU01vZGlmaWVyc0RpYWxvZ0NvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBERlNNb2RpZmllcnNEaWFsb2dEYXRhLFxuICAgIHByb3RlY3RlZCBzbmFja0JhcjogTWF0U25hY2tCYXJcbiAgKSB7XG4gICAgdGhpcy5Nb2RpZmllckRpYWxvZ0Zvcm0gPSB0aGlzLmZvcm1ibGRyLmdyb3VwKHt9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRldGVybWluZUxldmVsKCk7XG4gIH1cblxuICBwdWJsaWMgQ2xvc2VEaWFsb2coKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBEZWxldGVNb2RpZmllcigpOiB2b2lkIHtcbiAgICB0aGlzLmVhY1N2Yy5EZWxldGVNb2RpZmllcih0aGlzLmRhdGEubW9kaWZpZXJMb29rdXAsIHRoaXMuZGF0YS5tb2RpZmllck5hbWUpO1xuICB9XG5cbiAgcHVibGljIEhhbmRsZVNhdmVGb3JtRXZlbnQoZXZlbnQ6IFN0YXR1cykge1xuICAgIGNvbnNvbGUubG9nKCdldmVudDogJywgZXZlbnQpO1xuICAgIGlmIChldmVudC5Db2RlID09PSAwKSB7XG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ0RGUyBNb2RpZmllciBTYXZlZCBTdWNjZXNzZnVsbHknLCAnRGlzbWlzcycsIHtcbiAgICAgICAgZHVyYXRpb246IDUwMDAsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuQ2xvc2VEaWFsb2coKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5FcnJvck1lc3NhZ2UgPSBldmVudC5NZXNzYWdlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBJc0Rpc2FibGVkKCkge1xuICAgIHRoaXMuU2F2ZURpc2FibGVkID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5ERlNNb2RpZmVyc0Zvcm1Hcm91cCkge1xuICAgICAgdGhpcy5TYXZlRGlzYWJsZWQgPVxuICAgICAgICAhdGhpcy5ERlNNb2RpZmVyc0Zvcm1Hcm91cD8udmFsaWQgfHwgIXRoaXMuTW9kaWZpZXJEaWFsb2dGb3JtPy52YWxpZDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuU2VsZWN0ZWRNb2RpZmllcnNGb3JtR3JvdXApIHtcbiAgICAgIHRoaXMuU2F2ZURpc2FibGVkID1cbiAgICAgICAgIXRoaXMuU2VsZWN0ZWRNb2RpZmllcnNGb3JtR3JvdXA/LnZhbGlkIHx8XG4gICAgICAgICF0aGlzLlNlbGVjdGVkTW9kaWZpZXJzRm9ybUdyb3VwPy5kaXJ0eTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuU2F2ZURpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIFNhdmVERlNNb2RpZmllcigpIHtcbiAgICAvLyBjb25zb2xlLmxvZyhcImxldmVsIGF0IHNhdmU6IFwiLCB0aGlzLmRhdGEubGV2ZWwpXG5cbiAgICBzd2l0Y2ggKHRoaXMuZGF0YS5sZXZlbCkge1xuICAgICAgY2FzZSAnZW50ZXJwcmlzZSc6IHtcbiAgICAgICAgaWYgKHRoaXMuTW9kaWZpZXJEaWFsb2dGb3JtLmNvbnRyb2xzLmFwcGx5VG9BbGxQcm9qZWN0cy52YWx1ZSkge1xuICAgICAgICAgIC8vc2F2ZSBtb2RpZmllciBhZGQgaXQgdG8gdGhlIE1vZGlmaWVyTG9va3VwcyBvZiBhbGwgcHJvamVjdHNcbiAgICAgICAgICB0aGlzLkRGU01vZGlmZXJzRm9ybUNvbnRyb2xzLlNhdmVNb2RpZmllckZvckFsbFByb2plY3RzKFxuICAgICAgICAgICAgdGhpcy5Qcm9qZWN0TG9va3Vwc1xuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy9zYXZlIG1vZGlmaWVyXG4gICAgICAgICAgdGhpcy5ERlNNb2RpZmVyc0Zvcm1Db250cm9scy5TYXZlTW9kaWZpZXIoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2FzZSAncHJvamVjdCc6IHtcbiAgICAgICAgdGhpcy5ERlNNb2RpZmVyc0Zvcm1Db250cm9scy5TYXZlTW9kaWZpZXIodGhpcy5kYXRhLnByb2plY3RMb29rdXApO1xuICAgICAgfVxuXG4gICAgICBjYXNlICdhcHBsaWNhdGlvbic6IHtcbiAgICAgICAgdGhpcy5ERlNNb2RpZmVyc0Zvcm1Db250cm9scy5TYXZlTW9kaWZpZXJGb3JBcHBsaWNhdGlvbihcbiAgICAgICAgICB0aGlzLmRhdGEuYXBwbGljYXRpb25Mb29rdXBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdGhpcy5ERlNNb2RpZmVyc0Zvcm1Db250cm9scy5TYXZlTW9kaWZpZXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkZXRlcm1pbmVMZXZlbCgpIHtcbiAgICAvLyBjb25zb2xlLmxvZyhcIkxFVkVMOiBcIiwgdGhpcy5kYXRhLmxldmVsKVxuICAgIHN3aXRjaCAodGhpcy5kYXRhLmxldmVsKSB7XG4gICAgICBjYXNlICdlbnRlcnByaXNlJzoge1xuICAgICAgICB0aGlzLnNldHVwRW50Rm9ybSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cEVudEZvcm0oKSB7XG4gICAgdGhpcy5Nb2RpZmllckRpYWxvZ0Zvcm0uYWRkQ29udHJvbChcbiAgICAgICdhcHBseVRvQWxsUHJvamVjdHMnLFxuICAgICAgdGhpcy5mb3JtYmxkci5jb250cm9sKGZhbHNlKVxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkaWFsb2ctaGVhZGVyXCIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW4gY2VudGVyXCI+XG4gIDxoMiBtYXQtZGlhbG9nLXRpdGxlPkRGUyBNb2RpZmllcnM8L2gyPlxuXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJDbG9zZURpYWxvZygpXCI+XG4gICAgPG1hdC1pY29uPmNhbmNlbDwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gIDxkaXYgKm5nSWY9XCIhZGF0YS5tb2RpZmllckxvb2t1cFwiPlxuICAgIFNlbGVjdCB0aGUgbW9kaWZpZXJzIHlvdSB3b3VsZCBsaWtlIHRvIGFwcGx5IGZyb20gdGhlIGxpc3QgYmVsb3csIG9yIGNyZWF0ZVxuICAgIGEgbmV3IG1vZGlmaWVyLlxuICA8L2Rpdj5cblxuICA8bGN1LWRmcy1tb2RpZmllci1mb3JtXG4gICAgW2FwcGxpY2F0aW9uLWxvb2t1cF09XCJkYXRhLmFwcGxpY2F0aW9uTG9va3VwXCJcbiAgICBbcHJvamVjdC1sb29rdXBdPVwiZGF0YS5wcm9qZWN0TG9va3VwXCJcbiAgICBbZWRpdGluZy1tb2RpZmllci1sb29rdXBdPVwiZGF0YS5tb2RpZmllckxvb2t1cFwiXG4gICAgW2xldmVsXT1cImRhdGEubGV2ZWxcIlxuICA+XG4gIDwvbGN1LWRmcy1tb2RpZmllci1mb3JtPlxuXG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiTW9kaWZpZXJEaWFsb2dGb3JtXCI+XG4gICAgPG1hdC1jaGVja2JveFxuICAgICAgKm5nSWY9XCJkYXRhLmxldmVsID09PSAnZW50ZXJwcmlzZScgJiYgZGF0YS5tb2RpZmllckxvb2t1cFwiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJhcHBseVRvQWxsUHJvamVjdHNcIlxuICAgICAgPkFwcGx5IHRvIGFsbCBQcm9qZWN0czwvbWF0LWNoZWNrYm94XG4gICAgPlxuICA8L2Zvcm0+XG5cbiAgPG1hdC1lcnJvciAqbmdJZj1cIkVycm9yTWVzc2FnZVwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCI+XG4gICAge3sgRXJyb3JNZXNzYWdlIH19XG4gIDwvbWF0LWVycm9yPlxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG5cbjxtYXQtZGlhbG9nLWFjdGlvbnNcbiAgY2xhc3M9XCJhY3Rpb25zLWNvbnRhaW5lclwiXG4gIGRpdlxuICBmeExheW91dD1cInJvd1wiXG4gIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIGNlbnRlclwiXG4+XG4gIDxkaXYgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiZGF0YS5tb2RpZmllckxvb2t1cFwiXG4gICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgY29sb3I9XCJ3YXJuXCJcbiAgICAgIChjbGljayk9XCJEZWxldGVNb2RpZmllcigpXCJcbiAgICAgIG1hdFRvb2x0aXA9XCJEZWxldGUge3sgZGF0YS5tb2RpZmllckxvb2t1cCB9fVwiXG4gICAgPlxuICAgICAgRGVsZXRlXG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgZnhMYXlvdXRBbGlnbj1cImVuZCBjZW50ZXJcIj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImFjdGlvbi1idXR0b25cIlxuICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgIGZ4RmxleD1cIjUyJVwiXG4gICAgICAoY2xpY2spPVwiQ2xvc2VEaWFsb2coKVwiXG4gICAgPlxuICAgICAgQ2FuY2VsXG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImFjdGlvbi1idXR0b25cIlxuICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICpuZ0lmPVwiIVN0YXRlPy5Mb2FkaW5nXCJcbiAgICAgIGZ4RmxleD1cIjMwJVwiXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgKGNsaWNrKT1cIlNhdmVERlNNb2RpZmllcigpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJJc0Rpc2FibGVkKClcIlxuICAgID5cbiAgICAgIFNhdmVcbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L21hdC1kaWFsb2ctYWN0aW9ucz5cbiJdfQ==
|