@magic-xpa/angular 4.800.0-dev480.2 → 4.800.0-dev480.202
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/bundles/magic-xpa-angular.umd.js +1384 -2639
- package/bundles/magic-xpa-angular.umd.js.map +1 -1
- package/bundles/magic-xpa-angular.umd.min.js +2 -2
- package/bundles/magic-xpa-angular.umd.min.js.map +1 -1
- package/esm2015/index.js +1 -1
- package/esm2015/magic-xpa-angular.js +1 -4
- package/esm2015/src/controls.metadata.model.js +3 -36
- package/esm2015/src/interfaces/sub-form-definition.iterface.js +1 -1
- package/esm2015/src/magic.core.module.js +4 -14
- package/esm2015/src/services/ISubformMagicService.js +1 -1
- package/esm2015/src/services/OverlayWindowService.js +4 -29
- package/esm2015/src/services/StylesMapManager.js +1 -4
- package/esm2015/src/services/accessor.magic.service.js +44 -242
- package/esm2015/src/services/commands-collector.magic.service.js +4 -7
- package/esm2015/src/services/component-list.magic.service.js +1 -25
- package/esm2015/src/services/confirmation.components.magic.provider.js +4 -24
- package/esm2015/src/services/engine.magic.service.js +7 -10
- package/esm2015/src/services/exit.magic.service.js +4 -10
- package/esm2015/src/services/magic.providers.js +1 -4
- package/esm2015/src/services/magic.services.js +4 -10
- package/esm2015/src/services/mg-date-adapter.js +5 -5
- package/esm2015/src/services/overlay.conainer.magic.provider.js +4 -8
- package/esm2015/src/services/router-commands.magic.service.js +4 -10
- package/esm2015/src/services/subform.magic.service.js +37 -56
- package/esm2015/src/services/table.magic.service.js +5 -61
- package/esm2015/src/services/task.magics.service.js +14 -282
- package/esm2015/src/services/title.magic.service.js +4 -15
- package/esm2015/src/ui/GuiInteractiveExecutor.js +8 -6
- package/esm2015/src/ui/components/base-magic-alert.component.js +4 -14
- package/esm2015/src/ui/components/base-magic-confirm.component.js +4 -16
- package/esm2015/src/ui/components/magic-alert.component.js +5 -8
- package/esm2015/src/ui/components/magic-confirmation-box.component.js +5 -8
- package/esm2015/src/ui/directives/NonMagicControlDirective.js +4 -31
- package/esm2015/src/ui/directives/magic/checkbox-noformcontrol.magic.directive.js +4 -10
- package/esm2015/src/ui/directives/magic/checkbox.magic.directive.js +4 -13
- package/esm2015/src/ui/directives/magic/combobox.magic.directive.js +4 -10
- package/esm2015/src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive.js +5 -11
- package/esm2015/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.js +4 -16
- package/esm2015/src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive.js +5 -11
- package/esm2015/src/ui/directives/magic/input.noformcontrol.magic.directive.js +4 -10
- package/esm2015/src/ui/directives/magic/nocontrol.magic.directive.js +6 -16
- package/esm2015/src/ui/directives/magic/row.magic.directive.js +4 -22
- package/esm2015/src/ui/directives/magic-focus.directive.js +4 -7
- package/esm2015/src/ui/directives/magic.directive.js +14 -81
- package/esm2015/src/ui/directives/magicViewContainerRef.directive.js +4 -8
- package/esm2015/src/ui/directives/mgformat.magic.directive.js +4 -57
- package/esm2015/src/ui/directives/range-validator.magic.directive.js +4 -20
- package/esm2015/src/ui/magic-confirmationBox.js +1 -25
- package/esm2015/src/ui/magic-modal/base-magic-overlay-container.js +1 -1
- package/esm2015/src/ui/magic-modal/magic-modal-form.js +1 -4
- package/esm2015/src/ui/magic-modal/magic-modal-interface.js +1 -1
- package/esm2015/src/ui/magic-modal/magic-overlay-container-wrapper.js +4 -21
- package/esm2015/src/ui/magic-modal/magic-overlay-container.js +4 -46
- package/esm2015/src/ui/magic-root.component.js +10 -53
- package/esm2015/src/ui/mgerror.magic.component.js +4 -21
- package/esm2015/src/ui/pipes/date.magic.pipe.js +5 -12
- package/esm2015/src/ui/pipes/time.magic.pipe.js +4 -7
- package/esm2015/src/ui/router-container.magic.component.js +14 -35
- package/esm2015/src/ui/subform.magic.component.js +4 -23
- package/esm2015/src/ui/task-base.magic.component.js +4 -74
- package/esm2015/src/ui/utils.js +1 -20
- package/fesm2015/magic-xpa-angular.js +610 -1873
- package/fesm2015/magic-xpa-angular.js.map +1 -1
- package/magic-xpa-angular.d.ts +0 -3
- package/package.json +3 -3
- package/src/controls.metadata.model.d.ts +0 -16
- package/src/interfaces/sub-form-definition.iterface.d.ts +0 -6
- package/src/magic.core.module.d.ts +0 -3
- package/src/services/OverlayWindowService.d.ts +0 -19
- package/src/services/StylesMapManager.d.ts +0 -3
- package/src/services/accessor.magic.service.d.ts +16 -202
- package/src/services/commands-collector.magic.service.d.ts +0 -3
- package/src/services/component-list.magic.service.d.ts +0 -27
- package/src/services/confirmation.components.magic.provider.d.ts +0 -16
- package/src/services/engine.magic.service.d.ts +1 -3
- package/src/services/exit.magic.service.d.ts +0 -6
- package/src/services/magic.providers.d.ts +0 -3
- package/src/services/magic.services.d.ts +0 -6
- package/src/services/router-commands.magic.service.d.ts +0 -6
- package/src/services/subform.magic.service.d.ts +5 -30
- package/src/services/table.magic.service.d.ts +0 -55
- package/src/services/task.magics.service.d.ts +1 -294
- package/src/services/title.magic.service.d.ts +0 -11
- package/src/ui/GuiInteractiveExecutor.d.ts +1 -3
- package/src/ui/components/base-magic-alert.component.d.ts +0 -16
- package/src/ui/components/base-magic-confirm.component.d.ts +0 -18
- package/src/ui/components/magic-alert.component.d.ts +0 -3
- package/src/ui/components/magic-confirmation-box.component.d.ts +0 -3
- package/src/ui/directives/NonMagicControlDirective.d.ts +0 -41
- package/src/ui/directives/magic/checkbox-noformcontrol.magic.directive.d.ts +0 -6
- package/src/ui/directives/magic/checkbox.magic.directive.d.ts +0 -9
- package/src/ui/directives/magic/combobox.magic.directive.d.ts +0 -6
- package/src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive.d.ts +0 -6
- package/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.d.ts +0 -12
- package/src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive.d.ts +0 -6
- package/src/ui/directives/magic/input.noformcontrol.magic.directive.d.ts +0 -6
- package/src/ui/directives/magic/nocontrol.magic.directive.d.ts +0 -3
- package/src/ui/directives/magic/row.magic.directive.d.ts +0 -15
- package/src/ui/directives/magic-focus.directive.d.ts +0 -3
- package/src/ui/directives/magic.directive.d.ts +0 -78
- package/src/ui/directives/magicViewContainerRef.directive.d.ts +0 -3
- package/src/ui/directives/mgformat.magic.directive.d.ts +0 -40
- package/src/ui/directives/range-validator.magic.directive.d.ts +0 -16
- package/src/ui/magic-confirmationBox.d.ts +0 -19
- package/src/ui/magic-modal/base-magic-overlay-container.d.ts +0 -9
- package/src/ui/magic-modal/magic-modal-form.d.ts +0 -3
- package/src/ui/magic-modal/magic-modal-interface.d.ts +0 -27
- package/src/ui/magic-modal/magic-overlay-container-wrapper.d.ts +0 -20
- package/src/ui/magic-modal/magic-overlay-container.d.ts +0 -51
- package/src/ui/magic-root.component.d.ts +0 -42
- package/src/ui/mgerror.magic.component.d.ts +0 -19
- package/src/ui/pipes/date.magic.pipe.d.ts +0 -6
- package/src/ui/pipes/time.magic.pipe.d.ts +0 -3
- package/src/ui/router-container.magic.component.d.ts +5 -21
- package/src/ui/subform.magic.component.d.ts +0 -21
- package/src/ui/task-base.magic.component.d.ts +0 -72
- package/src/ui/utils.d.ts +0 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
1
|
+
import { Injectable, Injector, NgModuleFactoryLoader } from '@angular/core';
|
|
2
2
|
import { TaskMagicService } from './task.magics.service';
|
|
3
3
|
import { List } from '@magic-xpa/mscorelib';
|
|
4
4
|
import { isNullOrUndefined } from 'util';
|
|
@@ -12,26 +12,21 @@ import * as i2 from "@angular/router";
|
|
|
12
12
|
import * as i3 from "./component-list.magic.service";
|
|
13
13
|
import * as i4 from "./commands-collector.magic.service";
|
|
14
14
|
import * as i5 from "../services/router-commands.magic.service";
|
|
15
|
-
/**
|
|
16
|
-
* Service for managing subforms and routing
|
|
17
|
-
*/
|
|
18
15
|
export class SubformMagicService {
|
|
19
|
-
constructor(task, activatedRoute, componentList, pendingCommandsCollector, router, routerCommandsMagicService) {
|
|
16
|
+
constructor(task, activatedRoute, componentList, pendingCommandsCollector, router, routerCommandsMagicService, componentListMagicService, loader, injector) {
|
|
20
17
|
this.task = task;
|
|
21
18
|
this.activatedRoute = activatedRoute;
|
|
22
19
|
this.componentList = componentList;
|
|
23
20
|
this.pendingCommandsCollector = pendingCommandsCollector;
|
|
24
21
|
this.router = router;
|
|
25
22
|
this.routerCommandsMagicService = routerCommandsMagicService;
|
|
26
|
-
this.
|
|
27
|
-
this.
|
|
23
|
+
this.componentListMagicService = componentListMagicService;
|
|
24
|
+
this.loader = loader;
|
|
25
|
+
this.injector = injector;
|
|
26
|
+
this.subformsDict = {};
|
|
27
|
+
this.routesDict = {};
|
|
28
28
|
this.currentRouteDefinition = null;
|
|
29
29
|
}
|
|
30
|
-
/**
|
|
31
|
-
* Finds and returns the component according to the subform name
|
|
32
|
-
* @param subformName
|
|
33
|
-
* @returns
|
|
34
|
-
*/
|
|
35
30
|
mgGetComp(subformName) {
|
|
36
31
|
if (subformName in this.subformsDict) {
|
|
37
32
|
let formName = this.subformsDict[subformName].formName;
|
|
@@ -40,11 +35,6 @@ export class SubformMagicService {
|
|
|
40
35
|
}
|
|
41
36
|
return null;
|
|
42
37
|
}
|
|
43
|
-
/**
|
|
44
|
-
* Returns the parameters of the subform
|
|
45
|
-
* @param subformName
|
|
46
|
-
* @returns
|
|
47
|
-
*/
|
|
48
38
|
mgGetParameters(subformName) {
|
|
49
39
|
if (subformName in this.subformsDict) {
|
|
50
40
|
return this.subformsDict[subformName].parameters;
|
|
@@ -52,9 +42,6 @@ export class SubformMagicService {
|
|
|
52
42
|
else
|
|
53
43
|
return "";
|
|
54
44
|
}
|
|
55
|
-
/**
|
|
56
|
-
* @ignore
|
|
57
|
-
*/
|
|
58
45
|
deleteSubformComp(subformControlName, formName) {
|
|
59
46
|
if (Object.keys(this.subformsDict).indexOf(subformControlName) >= 0) {
|
|
60
47
|
if (this.subformsDict[subformControlName].formName === formName) {
|
|
@@ -63,27 +50,41 @@ export class SubformMagicService {
|
|
|
63
50
|
}
|
|
64
51
|
}
|
|
65
52
|
}
|
|
66
|
-
/**
|
|
67
|
-
* @ignore
|
|
68
|
-
*/
|
|
69
53
|
addSubformComp(subformControlName, formName, taskId, taskDescription, routerPath, params, inDefaultOutlet) {
|
|
70
54
|
this.pendingCommandsCollector.startCollecting();
|
|
71
55
|
let refreshNeeded = false;
|
|
72
|
-
if (isNullOrUndefined(routerPath)) {
|
|
56
|
+
if (isNullOrUndefined(routerPath)) {
|
|
73
57
|
if (Object.keys(this.subformsDict).indexOf(subformControlName) >= 0) {
|
|
74
58
|
if (this.subformsDict[subformControlName].formName === formName) {
|
|
75
59
|
this.subformsDict[subformControlName] = {};
|
|
76
60
|
this.task.refreshView();
|
|
77
61
|
}
|
|
78
62
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
63
|
+
let moduleRef = this.componentListMagicService.getModuleRef(formName);
|
|
64
|
+
if (moduleRef == null) {
|
|
65
|
+
let lazyLoadModule = this.componentListMagicService.getLazyLoadModuleData(formName);
|
|
66
|
+
if (lazyLoadModule != null) {
|
|
67
|
+
this.loader
|
|
68
|
+
.load(lazyLoadModule.modulePath + "#" + lazyLoadModule.moduleName)
|
|
69
|
+
.then((moduleFactory) => {
|
|
70
|
+
moduleRef = moduleFactory.create(this.injector);
|
|
71
|
+
this.subformsDict[subformControlName] = {
|
|
72
|
+
formName,
|
|
73
|
+
parameters: { taskIdParam: taskId, taskDescription: taskDescription }
|
|
74
|
+
};
|
|
75
|
+
this.task.refreshView();
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
this.subformsDict[subformControlName] = {
|
|
81
|
+
formName,
|
|
82
|
+
parameters: { taskIdParam: taskId, taskDescription: taskDescription }
|
|
83
|
+
};
|
|
84
|
+
refreshNeeded = true;
|
|
85
|
+
}
|
|
85
86
|
}
|
|
86
|
-
else {
|
|
87
|
+
else {
|
|
87
88
|
if (inDefaultOutlet)
|
|
88
89
|
subformControlName = "primary";
|
|
89
90
|
let routeParams = new List();
|
|
@@ -98,10 +99,6 @@ export class SubformMagicService {
|
|
|
98
99
|
parameters: { taskIdParam: taskId, taskDescription: taskDescription },
|
|
99
100
|
routeParams: routeParams
|
|
100
101
|
};
|
|
101
|
-
// If SubformMagicService.currentCallerMgSubformServiceRef !== null means that router.navigate() is already
|
|
102
|
-
// called once, but angular has not yet executed it (ngOnInit of the new component is not called).
|
|
103
|
-
// In such a case, do not executed router.navigate() again. Because, angular ignores the previous one.
|
|
104
|
-
// So, put a command in the queue which will be executed after the first one is executed.
|
|
105
102
|
if (SubformMagicService.currentCallerMgSubformServiceRef === null)
|
|
106
103
|
this.ExecuteRouteCommand(routeCommand);
|
|
107
104
|
else
|
|
@@ -110,16 +107,11 @@ export class SubformMagicService {
|
|
|
110
107
|
if (refreshNeeded)
|
|
111
108
|
this.task.refreshView();
|
|
112
109
|
}
|
|
113
|
-
/**
|
|
114
|
-
* Open the subform using a route command
|
|
115
|
-
*/
|
|
116
110
|
ExecuteRouteCommand(routeCommand) {
|
|
117
111
|
let reusingComponent = false;
|
|
118
112
|
let currentSubformMagicService = routeCommand.callerMgSubformServiceRef;
|
|
119
113
|
let relativeRoute = SubformMagicService.getRelativeRoute(currentSubformMagicService.activatedRoute);
|
|
120
114
|
if (currentSubformMagicService.routesDict[routeCommand.routerOutletName] === routeCommand.routeParams[0]) {
|
|
121
|
-
// If the specified router outlet already hosts the same router path, router.navigate() doesn't actually navigate.
|
|
122
|
-
// So, first clear the outlet (passing null route params, clears the outlet) and then navigate again.
|
|
123
115
|
currentSubformMagicService.router.navigate([{ outlets: { [routeCommand.routerOutletName]: null } }], { relativeTo: relativeRoute })
|
|
124
116
|
.then((result) => {
|
|
125
117
|
SubformMagicService.currentCallerMgSubformServiceRef = currentSubformMagicService;
|
|
@@ -159,12 +151,7 @@ export class SubformMagicService {
|
|
|
159
151
|
}
|
|
160
152
|
});
|
|
161
153
|
}
|
|
162
|
-
/**
|
|
163
|
-
* @ignore
|
|
164
|
-
*/
|
|
165
154
|
init() {
|
|
166
|
-
// If commands were issued for this task before ngOnInit(), they were not executed because task had not registered for them.
|
|
167
|
-
// So, execute them now.
|
|
168
155
|
const pendingCommands = this.pendingCommandsCollector.GetCommands(this.task.taskId);
|
|
169
156
|
if (pendingCommands.length > 0) {
|
|
170
157
|
pendingCommands.forEach(command => { this.task.executeCommand(command); });
|
|
@@ -172,15 +159,9 @@ export class SubformMagicService {
|
|
|
172
159
|
}
|
|
173
160
|
this.pendingCommandsCollector.stopCollecting();
|
|
174
161
|
}
|
|
175
|
-
/**
|
|
176
|
-
* @ignore
|
|
177
|
-
*/
|
|
178
162
|
refreshView() {
|
|
179
163
|
this.task.refreshView();
|
|
180
164
|
}
|
|
181
|
-
///
|
|
182
|
-
// return the relative route
|
|
183
|
-
//
|
|
184
165
|
static getRelativeRoute(sendActivatedRoute) {
|
|
185
166
|
let currentActiveRoute = sendActivatedRoute;
|
|
186
167
|
if (currentActiveRoute.snapshot.routeConfig !== null && currentActiveRoute.snapshot.routeConfig.path === '') {
|
|
@@ -193,9 +174,9 @@ export class SubformMagicService {
|
|
|
193
174
|
}
|
|
194
175
|
SubformMagicService.currentCallerMgSubformServiceRef = null;
|
|
195
176
|
SubformMagicService.routerContainers = new Array();
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
177
|
+
SubformMagicService.ɵfac = function SubformMagicService_Factory(t) { return new (t || SubformMagicService)(i0.ɵɵinject(i1.TaskMagicService), i0.ɵɵinject(i2.ActivatedRoute), i0.ɵɵinject(i3.ComponentListMagicService), i0.ɵɵinject(i4.CommandsCollectorMagicService), i0.ɵɵinject(i2.Router), i0.ɵɵinject(i5.RouterCommandsMagicService), i0.ɵɵinject(i3.ComponentListMagicService), i0.ɵɵinject(i0.NgModuleFactoryLoader), i0.ɵɵinject(i0.Injector)); };
|
|
178
|
+
SubformMagicService.ɵprov = i0.ɵɵdefineInjectable({ token: SubformMagicService, factory: SubformMagicService.ɵfac });
|
|
179
|
+
(function () { i0.ɵsetClassMetadata(SubformMagicService, [{
|
|
199
180
|
type: Injectable
|
|
200
|
-
}], function () { return [{ type: i1.TaskMagicService }, { type: i2.ActivatedRoute }, { type: i3.ComponentListMagicService }, { type: i4.CommandsCollectorMagicService }, { type: i2.Router }, { type: i5.RouterCommandsMagicService }]; }, null); })();
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViZm9ybS5tYWdpYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvc2VydmljZXMvc3ViZm9ybS5tYWdpYy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV6QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRW5GLE9BQU8sRUFBZ0IsMEJBQTBCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7OztBQUtyRzs7R0FFRztBQUVILE1BQU0sT0FBTyxtQkFBbUI7SUFVOUIsWUFBb0IsSUFBc0IsRUFDcEIsY0FBOEIsRUFDOUIsYUFBd0MsRUFDeEMsd0JBQXVELEVBQ3ZELE1BQWMsRUFDZCwwQkFBc0Q7UUFMeEQsU0FBSSxHQUFKLElBQUksQ0FBa0I7UUFDcEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGtCQUFhLEdBQWIsYUFBYSxDQUEyQjtRQUN4Qyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQStCO1FBQ3ZELFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCwrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO1FBYjVFLGlCQUFZLENBQUMsdUNBQXVDLEdBQUcsRUFBRSxDQUFDO1FBQzFELGVBQVUsR0FBNEIsRUFBRSxDQUFDLENBQUMsNkNBQTZDO1FB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Q0FBQyxXQUFXLEtBQUssSUFBSSxJQUFJLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLEVBQUUsRUFBRTtZQUMzRyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7WUFDL0MsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsWUFBWTtnQkFDdkQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtR0FBbUcsQ0FBQyxDQUFDO1NBQ3BIO1FBQ0QsT0FBTyxrQkFBa0IsQ0FBQztJQUM1QixDQUFDOztBQTNNTSxvREFBZ0MsR0FBUSxJQUFJLENBQUM7QUFFN0Msb0NBQWdCLEdBQXlDLElBQUksS0FBSyxFQUFFLENBQUM7eUdBUmpFLG1CQUFtQjs4RUFBbkIsbUJBQW1CLFdBQW5CLG1CQUFtQjtrREFBbkIsbUJBQW1CO2NBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRhc2tNYWdpY1NlcnZpY2UgfSBmcm9tICcuL3Rhc2subWFnaWNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTGlzdCB9IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcbmltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAndXRpbCc7XG5pbXBvcnQgeyBHdWlDb21tYW5kIH0gZnJvbSAnQG1hZ2ljLXhwYS9ndWknO1xuaW1wb3J0IHsgQ29tcG9uZW50TGlzdE1hZ2ljU2VydmljZSB9IGZyb20gJy4vY29tcG9uZW50LWxpc3QubWFnaWMuc2VydmljZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENvbW1hbmRzQ29sbGVjdG9yTWFnaWNTZXJ2aWNlIH0gZnJvbSAnLi9jb21tYW5kcy1jb2xsZWN0b3IubWFnaWMuc2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZURlZmluaXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3N1Yi1mb3JtLWRlZmluaXRpb24uaXRlcmZhY2UnO1xuaW1wb3J0IHsgUm91dGVDb21tYW5kLCBSb3V0ZXJDb21tYW5kc01hZ2ljU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JvdXRlci1jb21tYW5kcy5tYWdpYy5zZXJ2aWNlJztcbmltcG9ydCB7IElTdWJmb3JtTWFnaWNTZXJ2aWNlIH0gZnJvbSAnLi9JU3ViZm9ybU1hZ2ljU2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZXJDb250YWluZXJNYWdpY0NvbXBvbmVudCB9IGZyb20gJy4uL3VpL3JvdXRlci1jb250YWluZXIubWFnaWMuY29tcG9uZW50JztcblxuXG4vKipcbiAqIFNlcnZpY2UgZm9yIG1hbmFnaW5nIHN1YmZvcm1zIGFuZCByb3V0aW5nXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTdWJmb3JtTWFnaWNTZXJ2aWNlIGltcGxlbWVudHMgSVN1YmZvcm1NYWdpY1NlcnZpY2V7XG5cbiAgc3ViZm9ybXNEaWN0IC8qOnsgW3g6IHN0cmluZ106IFN1YmZvcm1EZWZpbml0aW9uIH0qLyA9IHt9O1xuICByb3V0ZXNEaWN0OiB7IFt4OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9OyAvLyBkaWN0aW9uYXJ5IG9mIHJvdXRlciBvdXRsZXQgdG8gcm91dGVyIHBhdGhcbiAgY3VycmVudFJvdXRlRGVmaW5pdGlvbjogUm91dGVEZWZpbml0aW9uID0gbnVsbDtcblxuICBzdGF0aWMgY3VycmVudENhbGxlck1nU3ViZm9ybVNlcnZpY2VSZWY6IGFueSA9IG51bGw7XG5cbiAgc3RhdGljIHJvdXRlckNvbnRhaW5lcnM6IEFycmF5PFJvdXRlckNvbnRhaW5lck1hZ2ljQ29tcG9uZW50PiA9IG5ldyBBcnJheSgpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGFzazogVGFza01hZ2ljU2VydmljZSxcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIGNvbXBvbmVudExpc3Q6IENvbXBvbmVudExpc3RNYWdpY1NlcnZpY2UsXG4gICAgICAgICAgICAgIHByb3RlY3RlZCBwZW5kaW5nQ29tbWFuZHNDb2xsZWN0b3I6IENvbW1hbmRzQ29sbGVjdG9yTWFnaWNTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgICAgICAgIHByb3RlY3RlZCByb3V0ZXJDb21tYW5kc01hZ2ljU2VydmljZTogUm91dGVyQ29tbWFuZHNNYWdpY1NlcnZpY2UpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyBhbmQgcmV0dXJucyB0aGUgY29tcG9uZW50IGFjY29yZGluZyB0byB0aGUgc3ViZm9ybSBuYW1lXG4gICAqIEBwYXJhbSBzdWJmb3JtTmFtZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgbWdHZXRDb21wKHN1YmZvcm1OYW1lOiBzdHJpbmcpOiBDb21wb25lbnQge1xuICAgIGlmIChzdWJmb3JtTmFtZSBpbiB0aGlzLnN1YmZvcm1zRGljdCkge1xuICAgICAgbGV0IGZvcm1OYW1lOiBzdHJpbmcgPSB0aGlzLnN1YmZvcm1zRGljdFtzdWJmb3JtTmFtZV0uZm9ybU5hbWU7XG4gICAgICBpZiAoZm9ybU5hbWUpXG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudExpc3QuZ2V0Q29tcG9uZW50KGZvcm1OYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcGFyYW1ldGVycyBvZiB0aGUgc3ViZm9ybVxuICAgKiBAcGFyYW0gc3ViZm9ybU5hbWVcbiAgICogQHJldHVybnNcbiAgICovXG4gIG1nR2V0UGFyYW1ldGVycyhzdWJmb3JtTmFtZTogc3RyaW5nKTogYW55IHtcbiAgICBpZiAoc3ViZm9ybU5hbWUgaW4gdGhpcy5zdWJmb3Jtc0RpY3QpIHtcbiAgICAgIHJldHVybiB0aGlzLnN1YmZvcm1zRGljdFtzdWJmb3JtTmFtZV0ucGFyYW1ldGVycztcbiAgICB9XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgZGVsZXRlU3ViZm9ybUNvbXAgKHN1YmZvcm1Db250cm9sTmFtZTogc3RyaW5nLCBmb3JtTmFtZTogc3RyaW5nKSAge1xuXG4gICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5zdWJmb3Jtc0RpY3QpLmluZGV4T2Yoc3ViZm9ybUNvbnRyb2xOYW1lKSA+PSAwKVxuICAgICAge1xuICAgICAgICBpZiAodGhpcy5zdWJmb3Jtc0RpY3Rbc3ViZm9ybUNvbnRyb2xOYW1lXS5mb3JtTmFtZSA9PT0gZm9ybU5hbWUpIHtcblxuICAgICAgICB0aGlzLnN1YmZvcm1zRGljdFtzdWJmb3JtQ29udHJvbE5hbWVdID0ge307XG4gICAgICAgIHRoaXMudGFzay5yZWZyZXNoVmlldygpO1xuICAgICAgICB9XG4gICAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgYWRkU3ViZm9ybUNvbXAgKHN1YmZvcm1Db250cm9sTmFtZTogc3RyaW5nLCBmb3JtTmFtZTogc3RyaW5nLCB0YXNrSWQ6IHN0cmluZywgdGFza0Rlc2NyaXB0aW9uOiBhbnksIHJvdXRlclBhdGg6IHN0cmluZywgcGFyYW1zOiBMaXN0PGFueT4sIGluRGVmYXVsdE91dGxldDogYm9vbGVhbikgIHtcbiAgICB0aGlzLnBlbmRpbmdDb21tYW5kc0NvbGxlY3Rvci5zdGFydENvbGxlY3RpbmcoKTtcblxuICAgIGxldCByZWZyZXNoTmVlZGVkID0gZmFsc2U7XG4gICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHJvdXRlclBhdGgpKSB7IC8vIGNhbGwgaW4gZGVzdGluYXRpb24gc3ViZm9ybVxuICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuc3ViZm9ybXNEaWN0KS5pbmRleE9mKHN1YmZvcm1Db250cm9sTmFtZSkgPj0gMClcbiAgICAgIHtcbiAgICAgICAgaWYgKHRoaXMuc3ViZm9ybXNEaWN0W3N1YmZvcm1Db250cm9sTmFtZV0uZm9ybU5hbWUgPT09IGZvcm1OYW1lKSB7XG5cbiAgICAgICAgICB0aGlzLnN1YmZvcm1zRGljdFtzdWJmb3JtQ29udHJvbE5hbWVdID0ge307XG4gICAgICAgICAgdGhpcy50YXNrLnJlZnJlc2hWaWV3KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICAgdGhpcy5zdWJmb3Jtc0RpY3Rbc3ViZm9ybUNvbnRyb2xOYW1lXSA9IHtcbiAgICAgICAgICBmb3JtTmFtZSxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7dGFza0lkUGFyYW06IHRhc2tJZCwgdGFza0Rlc2NyaXB0aW9uOiB0YXNrRGVzY3JpcHRpb259XG4gICAgICAgIH07XG4gICAgICAvL3RoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHJlZnJlc2hOZWVkZWQgPSB0cnVlO1xuICAgIH1cbiAgICBlbHNlIHsgLy8gY2FsbCByb3V0ZVxuICAgICAgaWYgKGluRGVmYXVsdE91dGxldClcbiAgICAgICAgc3ViZm9ybUNvbnRyb2xOYW1lID0gXCJwcmltYXJ5XCI7XG5cbiAgICAgIGxldCByb3V0ZVBhcmFtczogTGlzdDxhbnk+ID0gbmV3IExpc3QoKTtcbiAgICAgIHJvdXRlUGFyYW1zLnB1c2gocm91dGVyUGF0aCk7XG4gICAgICBpZiAocGFyYW1zICE9PSBudWxsKSB7XG4gICAgICAgIHJvdXRlUGFyYW1zID0gPExpc3Q8YW55Pj5yb3V0ZVBhcmFtcy5jb25jYXQocGFyYW1zKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHJvdXRlQ29tbWFuZDogUm91dGVDb21tYW5kID0ge1xuICAgICAgICBjYWxsZXJNZ1N1YmZvcm1TZXJ2aWNlUmVmOiB0aGlzLFxuICAgICAgICByb3V0ZXJPdXRsZXROYW1lOiBzdWJmb3JtQ29udHJvbE5hbWUsXG4gICAgICAgIGZvcm1OYW1lOiBmb3JtTmFtZSxcbiAgICAgICAgcGFyYW1ldGVyczoge3Rhc2tJZFBhcmFtOiB0YXNrSWQsIHRhc2tEZXNjcmlwdGlvbjogdGFza0Rlc2NyaXB0aW9ufSxcbiAgICAgICAgcm91dGVQYXJhbXM6IHJvdXRlUGFyYW1zXG4gICAgICB9O1xuXG4gICAgICAvLyBJZiBTdWJmb3JtTWFnaWNTZXJ2aWNlLmN1cnJlbnRDYWxsZXJNZ1N1YmZvcm1TZXJ2aWNlUmVmICE9PSBudWxsIG1lYW5zIHRoYXQgcm91dGVyLm5hdmlnYXRlKCkgaXMgYWxyZWFkeVxuICAgICAgLy8gY2FsbGVkIG9uY2UsIGJ1dCBhbmd1bGFyIGhhcyBub3QgeWV0IGV4ZWN1dGVkIGl0IChuZ09uSW5pdCBvZiB0aGUgbmV3IGNvbXBvbmVudCBpcyBub3QgY2FsbGVkKS5cbiAgICAgIC8vIEluIHN1Y2ggYSBjYXNlLCBkbyBub3QgZXhlY3V0ZWQgcm91dGVyLm5hdmlnYXRlKCkgYWdhaW4uIEJlY2F1c2UsIGFuZ3VsYXIgaWdub3JlcyB0aGUgcHJldmlvdXMgb25lLlxuICAgICAgLy8gU28sIHB1dCBhIGNvbW1hbmQgaW4gdGhlIHF1ZXVlIHdoaWNoIHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgdGhlIGZpcnN0IG9uZSBpcyBleGVjdXRlZC5cbiAgICBpZiAoU3ViZm9ybU1hZ2ljU2VydmljZS5jdXJyZW50Q2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZiA9PT0gbnVsbClcbiAgICAgICAgdGhpcy5FeGVjdXRlUm91dGVDb21tYW5kKHJvdXRlQ29tbWFuZCk7XG4gICAgICBlbHNlXG4gICAgICAgIHRoaXMucm91dGVyQ29tbWFuZHNNYWdpY1NlcnZpY2UuQWRkUm91dGVDb21tYW5kKHJvdXRlQ29tbWFuZCk7XG4gICAgfVxuICAgIGlmICggcmVmcmVzaE5lZWRlZClcbiAgICAgIHRoaXMudGFzay5yZWZyZXNoVmlldygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW4gdGhlIHN1YmZvcm0gdXNpbmcgYSByb3V0ZSBjb21tYW5kXG4gICAqL1xuICBFeGVjdXRlUm91dGVDb21tYW5kKHJvdXRlQ29tbWFuZDogUm91dGVDb21tYW5kKVxuICB7XG4gICAgbGV0IHJldXNpbmdDb21wb25lbnQgPSBmYWxzZTtcblxuICAgIGxldCBjdXJyZW50U3ViZm9ybU1hZ2ljU2VydmljZTogU3ViZm9ybU1hZ2ljU2VydmljZSA9IDxTdWJmb3JtTWFnaWNTZXJ2aWNlPnJvdXRlQ29tbWFuZC5jYWxsZXJNZ1N1YmZvcm1TZXJ2aWNlUmVmO1xuICAgIGxldCByZWxhdGl2ZVJvdXRlID0gIFN1YmZvcm1NYWdpY1NlcnZpY2UuZ2V0UmVsYXRpdmVSb3V0ZShjdXJyZW50U3ViZm9ybU1hZ2ljU2VydmljZS5hY3RpdmF0ZWRSb3V0ZSk7XG5cbiAgICBpZiAoY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2Uucm91dGVzRGljdFtyb3V0ZUNvbW1hbmQucm91dGVyT3V0bGV0TmFtZV0gPT09IHJvdXRlQ29tbWFuZC5yb3V0ZVBhcmFtc1swXSlcbiAgICB7XG4gICAgICAvLyBJZiB0aGUgc3BlY2lmaWVkIHJvdXRlciBvdXRsZXQgYWxyZWFkeSBob3N0cyB0aGUgc2FtZSByb3V0ZXIgcGF0aCwgcm91dGVyLm5hdmlnYXRlKCkgZG9lc24ndCBhY3R1YWxseSBuYXZpZ2F0ZS5cbiAgICAgIC8vIFNvLCBmaXJzdCBjbGVhciB0aGUgb3V0bGV0IChwYXNzaW5nIG51bGwgcm91dGUgcGFyYW1zLCBjbGVhcnMgdGhlIG91dGxldCkgYW5kIHRoZW4gbmF2aWdhdGUgYWdhaW4uXG4gICAgICBjdXJyZW50U3ViZm9ybU1hZ2ljU2VydmljZS5yb3V0ZXIubmF2aWdhdGUoW3tvdXRsZXRzOiB7W3JvdXRlQ29tbWFuZC5yb3V0ZXJPdXRsZXROYW1lXTogbnVsbH19XSwge3JlbGF0aXZlVG86IHJlbGF0aXZlUm91dGV9KVxuICAgICAgICAudGhlbigocmVzdWx0OmJvb2xlYW4pID0+IHtcbiAgICAgICAgICBTdWJmb3JtTWFnaWNTZXJ2aWNlLmN1cnJlbnRDYWxsZXJNZ1N1YmZvcm1TZXJ2aWNlUmVmID0gY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2U7XG4gICAgICAgICAgY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2UuY3VycmVudFJvdXRlRGVmaW5pdGlvbiA9IHtcbiAgICAgICAgICAgIGZvcm1OYW1lOiByb3V0ZUNvbW1hbmQuZm9ybU5hbWUsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiByb3V0ZUNvbW1hbmQucGFyYW1ldGVyc1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjdXJyZW50U3ViZm9ybU1hZ2ljU2VydmljZS5QZXJmb3JtUm91dGVyTmF2aWdhdGUocm91dGVDb21tYW5kLnJvdXRlck91dGxldE5hbWUsIHJvdXRlQ29tbWFuZC5yb3V0ZVBhcmFtcyk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBTdWJmb3JtTWFnaWNTZXJ2aWNlLmN1cnJlbnRDYWxsZXJNZ1N1YmZvcm1TZXJ2aWNlUmVmID0gY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2U7XG4gICAgICBjdXJyZW50U3ViZm9ybU1hZ2ljU2VydmljZS5jdXJyZW50Um91dGVEZWZpbml0aW9uID0ge1xuICAgICAgICBmb3JtTmFtZTogcm91dGVDb21tYW5kLmZvcm1OYW1lLFxuICAgICAgICBwYXJhbWV0ZXJzOiByb3V0ZUNvbW1hbmQucGFyYW1ldGVyc1xuICAgICAgfTtcblxuICAgICAgaWYgKFN1YmZvcm1NYWdpY1NlcnZpY2Uucm91dGVyQ29udGFpbmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxldCByb3V0ZUNvbnRhaW5lciA9IFN1YmZvcm1NYWdpY1NlcnZpY2Uucm91dGVyQ29udGFpbmVyc1swXTtcbiAgICAgICAgU3ViZm9ybU1hZ2ljU2VydmljZS5yb3V0ZXJDb250YWluZXJzLnNoaWZ0KCk7XG4gICAgICAgIHJvdXRlQ29udGFpbmVyLmluaXRpYWxpemVDb21wb25lbnQoKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjdXJyZW50U3ViZm9ybU1hZ2ljU2VydmljZS5QZXJmb3JtUm91dGVyTmF2aWdhdGUocm91dGVDb21tYW5kLnJvdXRlck91dGxldE5hbWUsIHJvdXRlQ29tbWFuZC5yb3V0ZVBhcmFtcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBQZXJmb3JtUm91dGVyTmF2aWdhdGUocm91dGVyT3V0bGV0TmFtZTogc3RyaW5nLCByb3V0ZVBhcmFtczogTGlzdDxhbnk+KVxuICB7XG4gICAgbGV0IHJlbGF0aXZlUm91dGUgPSAgU3ViZm9ybU1hZ2ljU2VydmljZS5nZXRSZWxhdGl2ZVJvdXRlKHRoaXMuYWN0aXZhdGVkUm91dGUpO1xuXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3sgb3V0bGV0czogeyBbcm91dGVyT3V0bGV0TmFtZV06IHJvdXRlUGFyYW1zIH0gfV0sIHsgcmVsYXRpdmVUbzogcmVsYXRpdmVSb3V0ZSB9KVxuICAgICAgLnRoZW4oKHJlc3VsdDpib29sZWFuKT0+IHtcbiAgICAgICAgICBpZiAocmVzdWx0ICE9PSBudWxsICYmICFyZXN1bHQpIHtcbiAgICAgICAgICAgIGxldCBzdWJmb3JtTWFnaWNTZXJ2aWNlOiBTdWJmb3JtTWFnaWNTZXJ2aWNlID0gU3ViZm9ybU1hZ2ljU2VydmljZS5jdXJyZW50Q2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZjtcbiAgICAgICAgICAgIHN1YmZvcm1NYWdpY1NlcnZpY2UuY3VycmVudFJvdXRlRGVmaW5pdGlvbiA9IG51bGw7XG5cbiAgICAgICAgICAgIFN1YmZvcm1NYWdpY1NlcnZpY2UuY3VycmVudENhbGxlck1nU3ViZm9ybVNlcnZpY2VSZWYgPSBudWxsO1xuICAgICAgICAgICAgc3ViZm9ybU1hZ2ljU2VydmljZS5wZW5kaW5nQ29tbWFuZHNDb2xsZWN0b3Iuc3RvcENvbGxlY3RpbmcoKTtcbiAgICAgICAgICAgIHN1YmZvcm1NYWdpY1NlcnZpY2Uucm91dGVyQ29tbWFuZHNNYWdpY1NlcnZpY2UuRXhlY3V0ZU5leHRDb21tYW5kKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGluaXQoKVxuICB7XG4gICAgLy8gSWYgY29tbWFuZHMgd2VyZSBpc3N1ZWQgZm9yIHRoaXMgdGFzayBiZWZvcmUgbmdPbkluaXQoKSwgdGhleSB3ZXJlIG5vdCBleGVjdXRlZCBiZWNhdXNlIHRhc2sgaGFkIG5vdCByZWdpc3RlcmVkIGZvciB0aGVtLlxuICAgIC8vIFNvLCBleGVjdXRlIHRoZW0gbm93LlxuICAgIGNvbnN0IHBlbmRpbmdDb21tYW5kczogR3VpQ29tbWFuZFtdID0gdGhpcy5wZW5kaW5nQ29tbWFuZHNDb2xsZWN0b3IuR2V0Q29tbWFuZHModGhpcy50YXNrLnRhc2tJZCk7XG4gICAgaWYgKHBlbmRpbmdDb21tYW5kcy5sZW5ndGggPiAwKSB7XG4gICAgICBwZW5kaW5nQ29tbWFuZHMuZm9yRWFjaChjb21tYW5kID0+IHt0aGlzLnRhc2suZXhlY3V0ZUNvbW1hbmQoY29tbWFuZCk7fSk7XG4gICAgICB0aGlzLnRhc2sucmVmcmVzaFZpZXcoKTtcbiAgICB9XG5cbiAgICB0aGlzLnBlbmRpbmdDb21tYW5kc0NvbGxlY3Rvci5zdG9wQ29sbGVjdGluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHJlZnJlc2hWaWV3KCkge1xuICAgIHRoaXMudGFzay5yZWZyZXNoVmlldygpO1xuICB9XG5cbiAgLy8vXG4gIC8vIHJldHVybiB0aGUgcmVsYXRpdmUgcm91dGVcbiAgLy9cbiAgc3RhdGljIGdldFJlbGF0aXZlUm91dGUoc2VuZEFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSl7XG4gICAgbGV0IGN1cnJlbnRBY3RpdmVSb3V0ZSA9IHNlbmRBY3RpdmF0ZWRSb3V0ZTtcbiAgICBpZiAoY3VycmVudEFjdGl2ZVJvdXRlLnNuYXBzaG90LnJvdXRlQ29uZmlnICE9PSBudWxsICYmIGN1cnJlbnRBY3RpdmVSb3V0ZS5zbmFwc2hvdC5yb3V0ZUNvbmZpZy5wYXRoID09PSAnJykge1xuICAgICAgY3VycmVudEFjdGl2ZVJvdXRlID0gY3VycmVudEFjdGl2ZVJvdXRlLnBhcmVudDtcbiAgICAgIGlmICghY3VycmVudEFjdGl2ZVJvdXRlLnNuYXBzaG90LnJvdXRlQ29uZmlnLmxvYWRDaGlsZHJlbilcbiAgICAgICAgY29uc29sZS5sb2coXCJnZXRSZWxhdGl2ZVJvdXRlKCk6IGJvdGggcGF0aCBhbmQgY3VycmVudEFjdGl2ZVJvdXRlLnNuYXBzaG90LnJvdXRlQ29uZmlnLmxvYWRDaGlsZHJlbiBhcmUgZW1wdHkuXCIpO1xuICAgIH1cbiAgICByZXR1cm4gY3VycmVudEFjdGl2ZVJvdXRlO1xuICB9XG59XG4iXX0=
|
|
181
|
+
}], function () { return [{ type: i1.TaskMagicService }, { type: i2.ActivatedRoute }, { type: i3.ComponentListMagicService }, { type: i4.CommandsCollectorMagicService }, { type: i2.Router }, { type: i5.RouterCommandsMagicService }, { type: i3.ComponentListMagicService }, { type: i0.NgModuleFactoryLoader }, { type: i0.Injector }]; }, null); })();
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViZm9ybS5tYWdpYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvc2VydmljZXMvc3ViZm9ybS5tYWdpYy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBWSxVQUFVLEVBQUUsUUFBUSxFQUFtQixxQkFBcUIsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXpDLE9BQU8sRUFBQyx5QkFBeUIsRUFBYSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbkYsT0FBTyxFQUFnQiwwQkFBMEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7O0FBU3JHLE1BQU0sT0FBTyxtQkFBbUI7SUFVOUIsWUFBb0IsSUFBc0IsRUFDcEIsY0FBOEIsRUFDOUIsYUFBd0MsRUFDeEMsd0JBQXVELEVBQ3ZELE1BQWMsRUFDZCwwQkFBc0QsRUFDeEQseUJBQW9ELEVBQ3BELE1BQTZCLEVBQzdCLFFBQWtCO1FBUmxCLFNBQUksR0FBSixJQUFJLENBQWtCO1FBQ3BCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBMkI7UUFDeEMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUErQjtRQUN2RCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUE0QjtRQUN4RCw4QkFBeUIsR0FBekIseUJBQXlCLENB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YWJsZSwgSW5qZWN0b3IsIE5nTW9kdWxlRmFjdG9yeSwgTmdNb2R1bGVGYWN0b3J5TG9hZGVyLCBOZ01vZHVsZVJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYXNrTWFnaWNTZXJ2aWNlIH0gZnJvbSAnLi90YXNrLm1hZ2ljcy5zZXJ2aWNlJztcbmltcG9ydCB7IExpc3QgfSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0IHsgR3VpQ29tbWFuZCB9IGZyb20gJ0BtYWdpYy14cGEvZ3VpJztcbmltcG9ydCB7Q29tcG9uZW50TGlzdE1hZ2ljU2VydmljZSwgTW9kdWxlRGF0YX0gZnJvbSAnLi9jb21wb25lbnQtbGlzdC5tYWdpYy5zZXJ2aWNlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29tbWFuZHNDb2xsZWN0b3JNYWdpY1NlcnZpY2UgfSBmcm9tICcuL2NvbW1hbmRzLWNvbGxlY3Rvci5tYWdpYy5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlRGVmaW5pdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvc3ViLWZvcm0tZGVmaW5pdGlvbi5pdGVyZmFjZSc7XG5pbXBvcnQgeyBSb3V0ZUNvbW1hbmQsIFJvdXRlckNvbW1hbmRzTWFnaWNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcm91dGVyLWNvbW1hbmRzLm1hZ2ljLnNlcnZpY2UnO1xuaW1wb3J0IHsgSVN1YmZvcm1NYWdpY1NlcnZpY2UgfSBmcm9tICcuL0lTdWJmb3JtTWFnaWNTZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlckNvbnRhaW5lck1hZ2ljQ29tcG9uZW50IH0gZnJvbSAnLi4vdWkvcm91dGVyLWNvbnRhaW5lci5tYWdpYy5jb21wb25lbnQnO1xuXG5cbi8qKlxuICogU2VydmljZSBmb3IgbWFuYWdpbmcgc3ViZm9ybXMgYW5kIHJvdXRpbmdcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFN1YmZvcm1NYWdpY1NlcnZpY2UgaW1wbGVtZW50cyBJU3ViZm9ybU1hZ2ljU2VydmljZXtcblxuICBzdWJmb3Jtc0RpY3QgLyo6eyBbeDogc3RyaW5nXTogU3ViZm9ybURlZmluaXRpb24gfSovID0ge307XG4gIHJvdXRlc0RpY3Q6IHsgW3g6IHN0cmluZ106IHN0cmluZyB9ID0ge307IC8vIGRpY3Rpb25hcnkgb2Ygcm91dGVyIG91dGxldCB0byByb3V0ZXIgcGF0aFxuICBjdXJyZW50Um91dGVEZWZpbml0aW9uOiBSb3V0ZURlZmluaXRpb24gPSBudWxsO1xuXG4gIHN0YXRpYyBjdXJyZW50Q2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZjogYW55ID0gbnVsbDtcblxuICBzdGF0aWMgcm91dGVyQ29udGFpbmVyczogQXJyYXk8Um91dGVyQ29udGFpbmVyTWFnaWNDb21wb25lbnQ+ID0gbmV3IEFycmF5KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0YXNrOiBUYXNrTWFnaWNTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgY29tcG9uZW50TGlzdDogQ29tcG9uZW50TGlzdE1hZ2ljU2VydmljZSxcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIHBlbmRpbmdDb21tYW5kc0NvbGxlY3RvcjogQ29tbWFuZHNDb2xsZWN0b3JNYWdpY1NlcnZpY2UsXG4gICAgICAgICAgICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIHJvdXRlckNvbW1hbmRzTWFnaWNTZXJ2aWNlOiBSb3V0ZXJDb21tYW5kc01hZ2ljU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjb21wb25lbnRMaXN0TWFnaWNTZXJ2aWNlOiBDb21wb25lbnRMaXN0TWFnaWNTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGxvYWRlcjogTmdNb2R1bGVGYWN0b3J5TG9hZGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIGFuZCByZXR1cm5zIHRoZSBjb21wb25lbnQgYWNjb3JkaW5nIHRvIHRoZSBzdWJmb3JtIG5hbWVcbiAgICogQHBhcmFtIHN1YmZvcm1OYW1lXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBtZ0dldENvbXAoc3ViZm9ybU5hbWU6IHN0cmluZyk6IENvbXBvbmVudCB7XG4gICAgaWYgKHN1YmZvcm1OYW1lIGluIHRoaXMuc3ViZm9ybXNEaWN0KSB7XG4gICAgICBsZXQgZm9ybU5hbWU6IHN0cmluZyA9IHRoaXMuc3ViZm9ybXNEaWN0W3N1YmZvcm1OYW1lXS5mb3JtTmFtZTtcbiAgICAgIGlmIChmb3JtTmFtZSlcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50TGlzdC5nZXRDb21wb25lbnQoZm9ybU5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBzdWJmb3JtXG4gICAqIEBwYXJhbSBzdWJmb3JtTmFtZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgbWdHZXRQYXJhbWV0ZXJzKHN1YmZvcm1OYW1lOiBzdHJpbmcpOiBhbnkge1xuICAgIGlmIChzdWJmb3JtTmFtZSBpbiB0aGlzLnN1YmZvcm1zRGljdCkge1xuICAgICAgcmV0dXJuIHRoaXMuc3ViZm9ybXNEaWN0W3N1YmZvcm1OYW1lXS5wYXJhbWV0ZXJzO1xuICAgIH1cbiAgICBlbHNlXG4gICAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBkZWxldGVTdWJmb3JtQ29tcCAoc3ViZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmcsIGZvcm1OYW1lOiBzdHJpbmcpICB7XG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLnN1YmZvcm1zRGljdCkuaW5kZXhPZihzdWJmb3JtQ29udHJvbE5hbWUpID49IDApXG4gICAgICB7XG4gICAgICAgIGlmICh0aGlzLnN1YmZvcm1zRGljdFtzdWJmb3JtQ29udHJvbE5hbWVdLmZvcm1OYW1lID09PSBmb3JtTmFtZSkge1xuXG4gICAgICAgIHRoaXMuc3ViZm9ybXNEaWN0W3N1YmZvcm1Db250cm9sTmFtZV0gPSB7fTtcbiAgICAgICAgdGhpcy50YXNrLnJlZnJlc2hWaWV3KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBhZGRTdWJmb3JtQ29tcCAoc3ViZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmcsIGZvcm1OYW1lOiBzdHJpbmcsIHRhc2tJZDogc3RyaW5nLCB0YXNrRGVzY3JpcHRpb246IGFueSwgcm91dGVyUGF0aDogc3RyaW5nLCBwYXJhbXM6IExpc3Q8YW55PiwgaW5EZWZhdWx0T3V0bGV0OiBib29sZWFuKSAge1xuICAgIHRoaXMucGVuZGluZ0NvbW1hbmRzQ29sbGVjdG9yLnN0YXJ0Q29sbGVjdGluZygpO1xuXG4gICAgbGV0IHJlZnJlc2hOZWVkZWQgPSBmYWxzZTtcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQocm91dGVyUGF0aCkpIHsgLy8gY2FsbCBpbiBkZXN0aW5hdGlvbiBzdWJmb3JtXG4gICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5zdWJmb3Jtc0RpY3QpLmluZGV4T2Yoc3ViZm9ybUNvbnRyb2xOYW1lKSA+PSAwKVxuICAgICAge1xuICAgICAgICBpZiAodGhpcy5zdWJmb3Jtc0RpY3Rbc3ViZm9ybUNvbnRyb2xOYW1lXS5mb3JtTmFtZSA9PT0gZm9ybU5hbWUpIHtcblxuICAgICAgICAgIHRoaXMuc3ViZm9ybXNEaWN0W3N1YmZvcm1Db250cm9sTmFtZV0gPSB7fTtcbiAgICAgICAgICB0aGlzLnRhc2sucmVmcmVzaFZpZXcoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBMb2FkIHRoZSBsYXp5IGxvYWQgbW9kdWxlLCBpZiBuZWVkZWRcbiAgICAgIGxldCBtb2R1bGVSZWY6IE5nTW9kdWxlUmVmPGFueT4gPSB0aGlzLmNvbXBvbmVudExpc3RNYWdpY1NlcnZpY2UuZ2V0TW9kdWxlUmVmKGZvcm1OYW1lKTtcblxuICAgICAgaWYgKG1vZHVsZVJlZiA9PSBudWxsKSB7XG4gICAgICAgIGxldCBsYXp5TG9hZE1vZHVsZTogTW9kdWxlRGF0YSA9IHRoaXMuY29tcG9uZW50TGlzdE1hZ2ljU2VydmljZS5nZXRMYXp5TG9hZE1vZHVsZURhdGEoZm9ybU5hbWUpO1xuXG4gICAgICAgIGlmIChsYXp5TG9hZE1vZHVsZSAhPSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5sb2FkZXJcbiAgICAgICAgICAgIC5sb2FkKGxhenlMb2FkTW9kdWxlLm1vZHVsZVBhdGggKyBcIiNcIiArIGxhenlMb2FkTW9kdWxlLm1vZHVsZU5hbWUpXG4gICAgICAgICAgICAudGhlbigobW9kdWxlRmFjdG9yeTogTmdNb2R1bGVGYWN0b3J5PGFueT4pID0+IHtcbiAgICAgICAgICAgICAgbW9kdWxlUmVmID0gbW9kdWxlRmFjdG9yeS5jcmVhdGUodGhpcy5pbmplY3Rvcik7XG4gICAgICAgICAgICAgIHRoaXMuc3ViZm9ybXNEaWN0W3N1YmZvcm1Db250cm9sTmFtZV0gPSB7XG4gICAgICAgICAgICAgICAgZm9ybU5hbWUsXG4gICAgICAgICAgICAgICAgcGFyYW1ldGVyczoge3Rhc2tJZFBhcmFtOiB0YXNrSWQsIHRhc2tEZXNjcmlwdGlvbjogdGFza0Rlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB0aGlzLnRhc2sucmVmcmVzaFZpZXcoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5zdWJmb3Jtc0RpY3Rbc3ViZm9ybUNvbnRyb2xOYW1lXSA9IHtcbiAgICAgICAgICBmb3JtTmFtZSxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7dGFza0lkUGFyYW06IHRhc2tJZCwgdGFza0Rlc2NyaXB0aW9uOiB0YXNrRGVzY3JpcHRpb259XG4gICAgICAgIH07XG4gICAgICAgIC8vdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICByZWZyZXNoTmVlZGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7IC8vIGNhbGwgcm91dGVcbiAgICAgIGlmIChpbkRlZmF1bHRPdXRsZXQpXG4gICAgICAgIHN1YmZvcm1Db250cm9sTmFtZSA9IFwicHJpbWFyeVwiO1xuXG4gICAgICBsZXQgcm91dGVQYXJhbXM6IExpc3Q8YW55PiA9IG5ldyBMaXN0KCk7XG4gICAgICByb3V0ZVBhcmFtcy5wdXNoKHJvdXRlclBhdGgpO1xuICAgICAgaWYgKHBhcmFtcyAhPT0gbnVsbCkge1xuICAgICAgICByb3V0ZVBhcmFtcyA9IDxMaXN0PGFueT4+cm91dGVQYXJhbXMuY29uY2F0KHBhcmFtcyk7XG4gICAgICB9XG5cbiAgICAgIGxldCByb3V0ZUNvbW1hbmQ6IFJvdXRlQ29tbWFuZCA9IHtcbiAgICAgICAgY2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZjogdGhpcyxcbiAgICAgICAgcm91dGVyT3V0bGV0TmFtZTogc3ViZm9ybUNvbnRyb2xOYW1lLFxuICAgICAgICBmb3JtTmFtZTogZm9ybU5hbWUsXG4gICAgICAgIHBhcmFtZXRlcnM6IHt0YXNrSWRQYXJhbTogdGFza0lkLCB0YXNrRGVzY3JpcHRpb246IHRhc2tEZXNjcmlwdGlvbn0sXG4gICAgICAgIHJvdXRlUGFyYW1zOiByb3V0ZVBhcmFtc1xuICAgICAgfTtcblxuICAgICAgLy8gSWYgU3ViZm9ybU1hZ2ljU2VydmljZS5jdXJyZW50Q2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZiAhPT0gbnVsbCBtZWFucyB0aGF0IHJvdXRlci5uYXZpZ2F0ZSgpIGlzIGFscmVhZHlcbiAgICAgIC8vIGNhbGxlZCBvbmNlLCBidXQgYW5ndWxhciBoYXMgbm90IHlldCBleGVjdXRlZCBpdCAobmdPbkluaXQgb2YgdGhlIG5ldyBjb21wb25lbnQgaXMgbm90IGNhbGxlZCkuXG4gICAgICAvLyBJbiBzdWNoIGEgY2FzZSwgZG8gbm90IGV4ZWN1dGVkIHJvdXRlci5uYXZpZ2F0ZSgpIGFnYWluLiBCZWNhdXNlLCBhbmd1bGFyIGlnbm9yZXMgdGhlIHByZXZpb3VzIG9uZS5cbiAgICAgIC8vIFNvLCBwdXQgYSBjb21tYW5kIGluIHRoZSBxdWV1ZSB3aGljaCB3aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIHRoZSBmaXJzdCBvbmUgaXMgZXhlY3V0ZWQuXG4gICAgaWYgKFN1YmZvcm1NYWdpY1NlcnZpY2UuY3VycmVudENhbGxlck1nU3ViZm9ybVNlcnZpY2VSZWYgPT09IG51bGwpXG4gICAgICAgIHRoaXMuRXhlY3V0ZVJvdXRlQ29tbWFuZChyb3V0ZUNvbW1hbmQpO1xuICAgICAgZWxzZVxuICAgICAgICB0aGlzLnJvdXRlckNvbW1hbmRzTWFnaWNTZXJ2aWNlLkFkZFJvdXRlQ29tbWFuZChyb3V0ZUNvbW1hbmQpO1xuICAgIH1cbiAgICBpZiAoIHJlZnJlc2hOZWVkZWQpXG4gICAgICB0aGlzLnRhc2sucmVmcmVzaFZpZXcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVuIHRoZSBzdWJmb3JtIHVzaW5nIGEgcm91dGUgY29tbWFuZFxuICAgKi9cbiAgRXhlY3V0ZVJvdXRlQ29tbWFuZChyb3V0ZUNvbW1hbmQ6IFJvdXRlQ29tbWFuZClcbiAge1xuICAgIGxldCByZXVzaW5nQ29tcG9uZW50ID0gZmFsc2U7XG5cbiAgICBsZXQgY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2U6IFN1YmZvcm1NYWdpY1NlcnZpY2UgPSA8U3ViZm9ybU1hZ2ljU2VydmljZT5yb3V0ZUNvbW1hbmQuY2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZjtcbiAgICBsZXQgcmVsYXRpdmVSb3V0ZSA9ICBTdWJmb3JtTWFnaWNTZXJ2aWNlLmdldFJlbGF0aXZlUm91dGUoY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2UuYWN0aXZhdGVkUm91dGUpO1xuXG4gICAgaWYgKGN1cnJlbnRTdWJmb3JtTWFnaWNTZXJ2aWNlLnJvdXRlc0RpY3Rbcm91dGVDb21tYW5kLnJvdXRlck91dGxldE5hbWVdID09PSByb3V0ZUNvbW1hbmQucm91dGVQYXJhbXNbMF0pXG4gICAge1xuICAgICAgLy8gSWYgdGhlIHNwZWNpZmllZCByb3V0ZXIgb3V0bGV0IGFscmVhZHkgaG9zdHMgdGhlIHNhbWUgcm91dGVyIHBhdGgsIHJvdXRlci5uYXZpZ2F0ZSgpIGRvZXNuJ3QgYWN0dWFsbHkgbmF2aWdhdGUuXG4gICAgICAvLyBTbywgZmlyc3QgY2xlYXIgdGhlIG91dGxldCAocGFzc2luZyBudWxsIHJvdXRlIHBhcmFtcywgY2xlYXJzIHRoZSBvdXRsZXQpIGFuZCB0aGVuIG5hdmlnYXRlIGFnYWluLlxuICAgICAgY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2Uucm91dGVyLm5hdmlnYXRlKFt7b3V0bGV0czoge1tyb3V0ZUNvbW1hbmQucm91dGVyT3V0bGV0TmFtZV06IG51bGx9fV0sIHtyZWxhdGl2ZVRvOiByZWxhdGl2ZVJvdXRlfSlcbiAgICAgICAgLnRoZW4oKHJlc3VsdDpib29sZWFuKSA9PiB7XG4gICAgICAgICAgU3ViZm9ybU1hZ2ljU2VydmljZS5jdXJyZW50Q2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZiA9IGN1cnJlbnRTdWJmb3JtTWFnaWNTZXJ2aWNlO1xuICAgICAgICAgIGN1cnJlbnRTdWJmb3JtTWFnaWNTZXJ2aWNlLmN1cnJlbnRSb3V0ZURlZmluaXRpb24gPSB7XG4gICAgICAgICAgICBmb3JtTmFtZTogcm91dGVDb21tYW5kLmZvcm1OYW1lLFxuICAgICAgICAgICAgcGFyYW1ldGVyczogcm91dGVDb21tYW5kLnBhcmFtZXRlcnNcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2UuUGVyZm9ybVJvdXRlck5hdmlnYXRlKHJvdXRlQ29tbWFuZC5yb3V0ZXJPdXRsZXROYW1lLCByb3V0ZUNvbW1hbmQucm91dGVQYXJhbXMpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgU3ViZm9ybU1hZ2ljU2VydmljZS5jdXJyZW50Q2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZiA9IGN1cnJlbnRTdWJmb3JtTWFnaWNTZXJ2aWNlO1xuICAgICAgY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2UuY3VycmVudFJvdXRlRGVmaW5pdGlvbiA9IHtcbiAgICAgICAgZm9ybU5hbWU6IHJvdXRlQ29tbWFuZC5mb3JtTmFtZSxcbiAgICAgICAgcGFyYW1ldGVyczogcm91dGVDb21tYW5kLnBhcmFtZXRlcnNcbiAgICAgIH07XG5cbiAgICAgIGlmIChTdWJmb3JtTWFnaWNTZXJ2aWNlLnJvdXRlckNvbnRhaW5lcnMubGVuZ3RoID4gMCkge1xuICAgICAgICBsZXQgcm91dGVDb250YWluZXIgPSBTdWJmb3JtTWFnaWNTZXJ2aWNlLnJvdXRlckNvbnRhaW5lcnNbMF07XG4gICAgICAgIFN1YmZvcm1NYWdpY1NlcnZpY2Uucm91dGVyQ29udGFpbmVycy5zaGlmdCgpO1xuICAgICAgICByb3V0ZUNvbnRhaW5lci5pbml0aWFsaXplQ29tcG9uZW50KCk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2UuUGVyZm9ybVJvdXRlck5hdmlnYXRlKHJvdXRlQ29tbWFuZC5yb3V0ZXJPdXRsZXROYW1lLCByb3V0ZUNvbW1hbmQucm91dGVQYXJhbXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgUGVyZm9ybVJvdXRlck5hdmlnYXRlKHJvdXRlck91dGxldE5hbWU6IHN0cmluZywgcm91dGVQYXJhbXM6IExpc3Q8YW55PilcbiAge1xuICAgIGxldCByZWxhdGl2ZVJvdXRlID0gIFN1YmZvcm1NYWdpY1NlcnZpY2UuZ2V0UmVsYXRpdmVSb3V0ZSh0aGlzLmFjdGl2YXRlZFJvdXRlKTtcblxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt7IG91dGxldHM6IHsgW3JvdXRlck91dGxldE5hbWVdOiByb3V0ZVBhcmFtcyB9IH1dLCB7IHJlbGF0aXZlVG86IHJlbGF0aXZlUm91dGUgfSlcbiAgICAgIC50aGVuKChyZXN1bHQ6Ym9vbGVhbik9PiB7XG4gICAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCAmJiAhcmVzdWx0KSB7XG4gICAgICAgICAgICBsZXQgc3ViZm9ybU1hZ2ljU2VydmljZTogU3ViZm9ybU1hZ2ljU2VydmljZSA9IFN1YmZvcm1NYWdpY1NlcnZpY2UuY3VycmVudENhbGxlck1nU3ViZm9ybVNlcnZpY2VSZWY7XG4gICAgICAgICAgICBzdWJmb3JtTWFnaWNTZXJ2aWNlLmN1cnJlbnRSb3V0ZURlZmluaXRpb24gPSBudWxsO1xuXG4gICAgICAgICAgICBTdWJmb3JtTWFnaWNTZXJ2aWNlLmN1cnJlbnRDYWxsZXJNZ1N1YmZvcm1TZXJ2aWNlUmVmID0gbnVsbDtcbiAgICAgICAgICAgIHN1YmZvcm1NYWdpY1NlcnZpY2UucGVuZGluZ0NvbW1hbmRzQ29sbGVjdG9yLnN0b3BDb2xsZWN0aW5nKCk7XG4gICAgICAgICAgICBzdWJmb3JtTWFnaWNTZXJ2aWNlLnJvdXRlckNvbW1hbmRzTWFnaWNTZXJ2aWNlLkV4ZWN1dGVOZXh0Q29tbWFuZCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBpbml0KClcbiAge1xuICAgIC8vIElmIGNvbW1hbmRzIHdlcmUgaXNzdWVkIGZvciB0aGlzIHRhc2sgYmVmb3JlIG5nT25Jbml0KCksIHRoZXkgd2VyZSBub3QgZXhlY3V0ZWQgYmVjYXVzZSB0YXNrIGhhZCBub3QgcmVnaXN0ZXJlZCBmb3IgdGhlbS5cbiAgICAvLyBTbywgZXhlY3V0ZSB0aGVtIG5vdy5cbiAgICBjb25zdCBwZW5kaW5nQ29tbWFuZHM6IEd1aUNvbW1hbmRbXSA9IHRoaXMucGVuZGluZ0NvbW1hbmRzQ29sbGVjdG9yLkdldENvbW1hbmRzKHRoaXMudGFzay50YXNrSWQpO1xuICAgIGlmIChwZW5kaW5nQ29tbWFuZHMubGVuZ3RoID4gMCkge1xuICAgICAgcGVuZGluZ0NvbW1hbmRzLmZvckVhY2goY29tbWFuZCA9PiB7dGhpcy50YXNrLmV4ZWN1dGVDb21tYW5kKGNvbW1hbmQpO30pO1xuICAgICAgdGhpcy50YXNrLnJlZnJlc2hWaWV3KCk7XG4gICAgfVxuXG4gICAgdGhpcy5wZW5kaW5nQ29tbWFuZHNDb2xsZWN0b3Iuc3RvcENvbGxlY3RpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICByZWZyZXNoVmlldygpIHtcbiAgICB0aGlzLnRhc2sucmVmcmVzaFZpZXcoKTtcbiAgfVxuXG4gIC8vL1xuICAvLyByZXR1cm4gdGhlIHJlbGF0aXZlIHJvdXRlXG4gIC8vXG4gIHN0YXRpYyBnZXRSZWxhdGl2ZVJvdXRlKHNlbmRBY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUpe1xuICAgIGxldCBjdXJyZW50QWN0aXZlUm91dGUgPSBzZW5kQWN0aXZhdGVkUm91dGU7XG4gICAgaWYgKGN1cnJlbnRBY3RpdmVSb3V0ZS5zbmFwc2hvdC5yb3V0ZUNvbmZpZyAhPT0gbnVsbCAmJiBjdXJyZW50QWN0aXZlUm91dGUuc25hcHNob3Qucm91dGVDb25maWcucGF0aCA9PT0gJycpIHtcbiAgICAgIGN1cnJlbnRBY3RpdmVSb3V0ZSA9IGN1cnJlbnRBY3RpdmVSb3V0ZS5wYXJlbnQ7XG4gICAgICBpZiAoIWN1cnJlbnRBY3RpdmVSb3V0ZS5zbmFwc2hvdC5yb3V0ZUNvbmZpZy5sb2FkQ2hpbGRyZW4pXG4gICAgICAgIGNvbnNvbGUubG9nKFwiZ2V0UmVsYXRpdmVSb3V0ZSgpOiBib3RoIHBhdGggYW5kIGN1cnJlbnRBY3RpdmVSb3V0ZS5zbmFwc2hvdC5yb3V0ZUNvbmZpZy5sb2FkQ2hpbGRyZW4gYXJlIGVtcHR5LlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRBY3RpdmVSb3V0ZTtcbiAgfVxufVxuIl19
|
|
@@ -4,64 +4,31 @@ import { ComponentListMagicService } from "./component-list.magic.service";
|
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "./component-list.magic.service";
|
|
6
6
|
import * as i2 from "./task.magics.service";
|
|
7
|
-
/**
|
|
8
|
-
* Implements various table-related functionalities
|
|
9
|
-
*/
|
|
10
7
|
export class TableMagicService {
|
|
11
|
-
/**
|
|
12
|
-
*
|
|
13
|
-
* @param componentList Component-mapping service
|
|
14
|
-
* @param task Magic task service
|
|
15
|
-
*/
|
|
16
8
|
constructor(componentList, task) {
|
|
17
9
|
this.componentList = componentList;
|
|
18
10
|
this.task = task;
|
|
19
11
|
this.shouldOpenFieldTextEditor = true;
|
|
20
12
|
}
|
|
21
|
-
/**
|
|
22
|
-
* Refreshes the DataSource
|
|
23
|
-
*/
|
|
24
13
|
refreshDataSource() {
|
|
25
14
|
}
|
|
26
|
-
/**
|
|
27
|
-
* Returns the table page size
|
|
28
|
-
*/
|
|
29
15
|
getPageSize() {
|
|
30
16
|
return 10;
|
|
31
17
|
}
|
|
32
|
-
/**
|
|
33
|
-
* Returns max no of rows in the table.
|
|
34
|
-
*/
|
|
35
18
|
getMaxRowsInTable() {
|
|
36
19
|
return this.task.Records.list.length;
|
|
37
20
|
}
|
|
38
|
-
/**
|
|
39
|
-
* Selects the specified row
|
|
40
|
-
* @param rowId The row to select
|
|
41
|
-
*/
|
|
42
21
|
selectRow(rowId) {
|
|
43
22
|
this.selectedItem = rowId;
|
|
44
23
|
}
|
|
45
24
|
getSelectedRow() {
|
|
46
25
|
return this.selectedItem;
|
|
47
26
|
}
|
|
48
|
-
/**
|
|
49
|
-
* Returns the selected row
|
|
50
|
-
*/
|
|
51
27
|
selectedRow() {
|
|
52
28
|
return null;
|
|
53
29
|
}
|
|
54
|
-
/**
|
|
55
|
-
* Selects the specified page
|
|
56
|
-
* @param pageId The page to select
|
|
57
|
-
*/
|
|
58
30
|
selectPage(pageId) {
|
|
59
31
|
}
|
|
60
|
-
/**
|
|
61
|
-
* Returns whether a dialog should be opened for the HTML element
|
|
62
|
-
* @param element The HTML element for which a dialog may be needed
|
|
63
|
-
* @returns
|
|
64
|
-
*/
|
|
65
32
|
OpenDialogForControl(element) {
|
|
66
33
|
if (element.tagName === "MAT-SELECT" || element.tagName === "MAT-CHECKBOX" ||
|
|
67
34
|
element.tagName === "INPUT" ||
|
|
@@ -69,34 +36,17 @@ export class TableMagicService {
|
|
|
69
36
|
return false;
|
|
70
37
|
return true;
|
|
71
38
|
}
|
|
72
|
-
/**
|
|
73
|
-
* Returns the dialog used to edit values
|
|
74
|
-
*/
|
|
75
39
|
getDialog() {
|
|
76
40
|
return null;
|
|
77
41
|
}
|
|
78
|
-
/**
|
|
79
|
-
* Handles the table "scrolled" event
|
|
80
|
-
*/
|
|
81
42
|
onScrollDown() {
|
|
82
43
|
this.task.onScrollDown();
|
|
83
44
|
}
|
|
84
|
-
/**
|
|
85
|
-
* To be overwitten in specific implelemtations
|
|
86
|
-
*/
|
|
87
45
|
sortData(e) { }
|
|
88
|
-
/**
|
|
89
|
-
* To be overwitten in specific implelemtations
|
|
90
|
-
*/
|
|
91
46
|
mgOnPaginateChange(e) { }
|
|
92
47
|
mgOptionChanged(e) { }
|
|
93
|
-
/**
|
|
94
|
-
* Change the number of lines in a table
|
|
95
|
-
* @param size New number of lines in table
|
|
96
|
-
*/
|
|
97
48
|
updateTableSize(size) {
|
|
98
|
-
if (size === 0)
|
|
99
|
-
{
|
|
49
|
+
if (size === 0) {
|
|
100
50
|
size = 1;
|
|
101
51
|
this.task.Records.clearFirstTableRecord(this.task.template);
|
|
102
52
|
}
|
|
@@ -104,17 +54,11 @@ export class TableMagicService {
|
|
|
104
54
|
this.task.Records.updateSize(size);
|
|
105
55
|
this.task.setIncludesFirst(false);
|
|
106
56
|
}
|
|
107
|
-
/**
|
|
108
|
-
* @ignore
|
|
109
|
-
*/
|
|
110
57
|
setTableTopIndex(value) {
|
|
111
58
|
if (!this.task.Records.includesFirst)
|
|
112
59
|
value++;
|
|
113
60
|
this.task.Records.setGuiTopIndex(value);
|
|
114
61
|
}
|
|
115
|
-
/**
|
|
116
|
-
* @ignore
|
|
117
|
-
*/
|
|
118
62
|
getTableTopIndex() {
|
|
119
63
|
let topIndex = this.task.Records.getGuiTopIndex();
|
|
120
64
|
if (!this.task.Records.includesFirst)
|
|
@@ -122,9 +66,9 @@ export class TableMagicService {
|
|
|
122
66
|
return topIndex;
|
|
123
67
|
}
|
|
124
68
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
69
|
+
TableMagicService.ɵfac = function TableMagicService_Factory(t) { return new (t || TableMagicService)(i0.ɵɵinject(i1.ComponentListMagicService), i0.ɵɵinject(i2.TaskMagicService)); };
|
|
70
|
+
TableMagicService.ɵprov = i0.ɵɵdefineInjectable({ token: TableMagicService, factory: TableMagicService.ɵfac });
|
|
71
|
+
(function () { i0.ɵsetClassMetadata(TableMagicService, [{
|
|
128
72
|
type: Injectable
|
|
129
73
|
}], function () { return [{ type: i1.ComponentListMagicService }, { type: i2.TaskMagicService }]; }, null); })();
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubWFnaWMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL3NlcnZpY2VzL3RhYmxlLm1hZ2ljLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7OztBQU0zRSxNQUFNLE9BQU8saUJBQWlCO0lBUzVCLFlBQXdCLGFBQXdDLEVBQVksSUFBc0I7UUFBMUUsa0JBQWEsR0FBYixhQUFhLENBQTJCO1FBQVksU0FBSSxHQUFKLElBQUksQ0FBa0I7UUFHMUYsOEJBQXlCLEdBQVksSUFBSSxDQUFDO0lBRmpELENBQUM7SUFPRixpQkFBaUI7SUFDakIsQ0FBQztJQUtELFdBQVc7UUFDVCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFLRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkMsQ0FBQztJQU1ELFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFLRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBTUQsVUFBVSxDQUFDLE1BQWM7SUFDekIsQ0FBQztJQU9ELG9CQUFvQixDQUFDLE9BQW9CO1FBRXZDLElBQUksT0FBTyxDQUFDLE9BQU8sS0FBSyxZQUFZLElBQUksT0FBTyxDQUFDLE9BQU8sS0FBSyxjQUFjO1lBQ3RFLE9BQU8sQ0FBQyxPQUFPLEtBQUssT0FBTztZQUMzQixPQUFPLENBQUMsT0FBTyxLQUFLLFFBQVE7WUFDOUIsT0FBTyxLQUFLLENBQUM7UUFDZixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFLRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBS0QsWUFBWTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUtELFFBQVEsQ0FBQyxDQUFDLElBQUUsQ0FBQztJQUtiLGtCQUFrQixDQUFDLENBQUMsSUFBRSxDQUFDO0lBRXZCLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQztJQU10QixlQUFlLENBQUMsSUFBWTtRQUMxQixJQUFJLElBQUksS0FBSyxDQUFDLEVBQ2Q7WUFDRSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUM3RDtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUtELGdCQUFnQixDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWE7WUFDbEMsS0FBSyxFQUFFLENBQUM7UUFFVixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUtELGdCQUFnQjtRQUVkLElBQUksUUFBUSxHQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRTFELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhO1lBQ2xDLFFBQVEsRUFBRSxDQUFDO1FBRWIsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzs7a0ZBeklVLGlCQUFpQjt5REFBakIsaUJBQWlCLFdBQWpCLGlCQUFpQjtvQ0FBakIsaUJBQWlCO2NBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYXNrTWFnaWNTZXJ2aWNlIH0gZnJvbSBcIi4vdGFzay5tYWdpY3Muc2VydmljZVwiO1xuaW1wb3J0IHsgQ29tcG9uZW50TGlzdE1hZ2ljU2VydmljZSB9IGZyb20gXCIuL2NvbXBvbmVudC1saXN0Lm1hZ2ljLnNlcnZpY2VcIjtcblxuLyoqXG4gKiBJbXBsZW1lbnRzIHZhcmlvdXMgdGFibGUtcmVsYXRlZCBmdW5jdGlvbmFsaXRpZXNcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRhYmxlTWFnaWNTZXJ2aWNlIHtcblxuICBzZWxlY3RlZEl0ZW0gOiBhbnk7XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBjb21wb25lbnRMaXN0IENvbXBvbmVudC1tYXBwaW5nIHNlcnZpY2VcbiAgICogQHBhcmFtIHRhc2sgTWFnaWMgdGFzayBzZXJ2aWNlXG4gICAqL1xuICBjb25zdHJ1Y3RvciggIHByb3RlY3RlZCBjb21wb25lbnRMaXN0OiBDb21wb25lbnRMaXN0TWFnaWNTZXJ2aWNlLCBwcm90ZWN0ZWQgdGFzazogVGFza01hZ2ljU2VydmljZSkge1xuICAgfVxuXG4gICBwdWJsaWMgc2hvdWxkT3BlbkZpZWxkVGV4dEVkaXRvcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFJlZnJlc2hlcyB0aGUgRGF0YVNvdXJjZVxuICAgKi9cbiAgcmVmcmVzaERhdGFTb3VyY2UoKTogdm9pZCB7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGFibGUgcGFnZSBzaXplXG4gICAqL1xuICBnZXRQYWdlU2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiAxMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIG1heCBubyBvZiByb3dzIGluIHRoZSB0YWJsZS5cbiAgICovXG4gIGdldE1heFJvd3NJblRhYmxlKCk6IG51bWJlcntcbiAgICByZXR1cm4gdGhpcy50YXNrLlJlY29yZHMubGlzdC5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0cyB0aGUgc3BlY2lmaWVkIHJvd1xuICAgKiBAcGFyYW0gcm93SWQgVGhlIHJvdyB0byBzZWxlY3RcbiAgICovXG4gIHNlbGVjdFJvdyhyb3dJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSByb3dJZDtcbiAgfVxuXG4gIGdldFNlbGVjdGVkUm93KCkgOiBhbnl7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNlbGVjdGVkIHJvd1xuICAgKi9cbiAgc2VsZWN0ZWRSb3coKTogYW55IHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3RzIHRoZSBzcGVjaWZpZWQgcGFnZVxuICAgKiBAcGFyYW0gIHBhZ2VJZCBUaGUgcGFnZSB0byBzZWxlY3RcbiAgICovXG4gIHNlbGVjdFBhZ2UocGFnZUlkOiBudW1iZXIpOiB2b2lkIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgYSBkaWFsb2cgc2hvdWxkIGJlIG9wZW5lZCBmb3IgdGhlIEhUTUwgZWxlbWVudFxuICAgKiBAcGFyYW0gIGVsZW1lbnQgVGhlIEhUTUwgZWxlbWVudCBmb3Igd2hpY2ggYSBkaWFsb2cgbWF5IGJlIG5lZWRlZFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgT3BlbkRpYWxvZ0ZvckNvbnRyb2woZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuXG4gIHtcbiAgICBpZiAoZWxlbWVudC50YWdOYW1lID09PSBcIk1BVC1TRUxFQ1RcIiB8fCBlbGVtZW50LnRhZ05hbWUgPT09IFwiTUFULUNIRUNLQk9YXCIgfHxcbiAgICAgICAgZWxlbWVudC50YWdOYW1lID09PSBcIklOUFVUXCIgfHxcbiAgICAgICAgZWxlbWVudC50YWdOYW1lID09PSBcIlNFTEVDVFwiKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGRpYWxvZyB1c2VkIHRvIGVkaXQgdmFsdWVzXG4gICAqL1xuICBnZXREaWFsb2coKTogYW55ICB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgdGFibGUgXCJzY3JvbGxlZFwiIGV2ZW50XG4gICAqL1xuICBvblNjcm9sbERvd24oKSB7XG4gICAgdGhpcy50YXNrLm9uU2Nyb2xsRG93bigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvIGJlIG92ZXJ3aXR0ZW4gaW4gc3BlY2lmaWMgaW1wbGVsZW10YXRpb25zXG4gICAqL1xuICBzb3J0RGF0YShlKXt9XG5cbiAgLyoqXG4gICAqIFRvIGJlIG92ZXJ3aXR0ZW4gaW4gc3BlY2lmaWMgaW1wbGVsZW10YXRpb25zXG4gICAqL1xuICBtZ09uUGFnaW5hdGVDaGFuZ2UoZSl7fVxuXG4gIG1nT3B0aW9uQ2hhbmdlZChlKSB7IH1cblxuICAvKipcbiAgICogQ2hhbmdlIHRoZSBudW1iZXIgb2YgbGluZXMgaW4gYSB0YWJsZVxuICAgKiBAcGFyYW0gIHNpemUgTmV3IG51bWJlciBvZiBsaW5lcyBpbiB0YWJsZVxuICAgKi9cbiAgdXBkYXRlVGFibGVTaXplKHNpemU6IG51bWJlcikge1xuICAgIGlmIChzaXplID09PSAwKSAvLyBuZXZlciByZW1vdmUgcm93IDAgZm9yIG5vd1xuICAgIHtcbiAgICAgIHNpemUgPSAxO1xuICAgICAgdGhpcy50YXNrLlJlY29yZHMuY2xlYXJGaXJzdFRhYmxlUmVjb3JkKHRoaXMudGFzay50ZW1wbGF0ZSk7XG4gICAgfVxuXG4gICAgdGhpcy50YXNrLmZvcm1Hcm91cHMubGVuZ3RoID0gc2l6ZTtcbiAgICB0aGlzLnRhc2suUmVjb3Jkcy51cGRhdGVTaXplKHNpemUpO1xuICAgIHRoaXMudGFzay5zZXRJbmNsdWRlc0ZpcnN0KGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBzZXRUYWJsZVRvcEluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAoIXRoaXMudGFzay5SZWNvcmRzLmluY2x1ZGVzRmlyc3QpXG4gICAgICB2YWx1ZSsrO1xuXG4gICAgdGhpcy50YXNrLlJlY29yZHMuc2V0R3VpVG9wSW5kZXgodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGdldFRhYmxlVG9wSW5kZXgoKTpudW1iZXJcbiAge1xuICAgIGxldCB0b3BJbmRleDogbnVtYmVyID0gdGhpcy50YXNrLlJlY29yZHMuZ2V0R3VpVG9wSW5kZXgoKTtcblxuICAgIGlmICghdGhpcy50YXNrLlJlY29yZHMuaW5jbHVkZXNGaXJzdClcbiAgICAgIHRvcEluZGV4LS07XG5cbiAgICByZXR1cm4gdG9wSW5kZXg7XG4gIH1cbn1cblxuIl19
|