@lowcodeunit/applications-flow-common 1.33.78-merge-with-social-ish-02 → 1.33.82-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/bundles/lowcodeunit-applications-flow-common.umd.js +5238 -0
- package/bundles/lowcodeunit-applications-flow-common.umd.js.map +1 -0
- package/bundles/lowcodeunit-applications-flow-common.umd.min.js +16 -0
- package/bundles/lowcodeunit-applications-flow-common.umd.min.js.map +1 -0
- package/esm2015/lcu.api.js +26 -0
- package/esm2015/lib/applications-flow.module.js +171 -0
- package/esm2015/lib/elements/analytics-card/analytics-card.component.js +21 -0
- package/esm2015/lib/elements/base-form/base-form.component.js +61 -0
- package/esm2015/lib/elements/card-carousel/card-carousel.component.js +67 -0
- package/esm2015/lib/elements/column-info-card/column-info-card.component.js +31 -0
- package/esm2015/lib/elements/dynamic-tabs/dynamic-tabs.component.js +69 -0
- package/esm2015/lib/elements/feed-card-sm/feed-card-sm.component.js +31 -0
- package/esm2015/lib/elements/form-card/form-card.component.js +22 -0
- package/esm2015/lib/elements/gh-control/gh-control.component.js +72 -0
- package/esm2015/lib/elements/main-feed-card/main-feed-card.component.js +24 -0
- package/esm2015/lib/elements/project-info-card/project-info-card.component.js +32 -0
- package/esm2015/lib/elements/projects/controls/builds/builds.component.js +31 -0
- package/esm2015/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.js +145 -0
- package/esm2015/lib/elements/projects/controls/forms/source-control/source-control.component.js +265 -0
- package/esm2015/lib/elements/projects/controls/git-auth/git-auth.component.js +25 -0
- package/esm2015/lib/elements/projects/controls/header/header.component.js +75 -0
- package/esm2015/lib/elements/projects/controls/hosting-details-form-group/hosting-details-form-group.component.js +102 -0
- package/esm2015/lib/elements/projects/controls/project-items/project-items.component.js +49 -0
- package/esm2015/lib/elements/projects/controls/project-tabs/project-tabs.component.js +91 -0
- package/esm2015/lib/elements/projects/controls/recent-activities/recent-activities.component.js +15 -0
- package/esm2015/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.js +592 -0
- package/esm2015/lib/elements/projects/controls/tabs/apps-flow/npm-package-select/npm-package-select.component.js +62 -0
- package/esm2015/lib/elements/projects/controls/tabs/devops/devops.component.js +202 -0
- package/esm2015/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.js +178 -0
- package/esm2015/lib/elements/projects/controls/tabs/domains/domains.component.js +133 -0
- package/esm2015/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.js +86 -0
- package/esm2015/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.js +129 -0
- package/esm2015/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.js +113 -0
- package/esm2015/lib/elements/projects/controls/tabs/general/general.component.js +46 -0
- package/esm2015/lib/elements/projects/projects.component.js +226 -0
- package/esm2015/lib/elements/slotted-card/slotted-card.component.js +26 -0
- package/esm2015/lib/elements/three-column/three-column.component.js +32 -0
- package/esm2015/lib/elements/two-column-header/two-column-header.component.js +15 -0
- package/esm2015/lib/models/actions.model.js +3 -0
- package/esm2015/lib/models/base-form-config.model.js +6 -0
- package/esm2015/lib/models/card-form-config.model.js +6 -0
- package/esm2015/lib/models/card-slot.model.js +3 -0
- package/esm2015/lib/models/dev-settings-preset.model.js +3 -0
- package/esm2015/lib/models/domain.model.js +3 -0
- package/esm2015/lib/models/dynamic-tabs.model.js +6 -0
- package/esm2015/lib/models/form-actions.model.js +3 -0
- package/esm2015/lib/models/form.model.js +6 -0
- package/esm2015/lib/models/form.values.model.js +11 -0
- package/esm2015/lib/models/project-actions.model.js +6 -0
- package/esm2015/lib/models/slot-action.model.js +3 -0
- package/esm2015/lib/services/applications-flow-events.service.js +83 -0
- package/esm2015/lib/services/applications-flow.service.js +136 -0
- package/esm2015/lib/services/forms.service.js +131 -0
- package/esm2015/lib/services/npm.service.js +79 -0
- package/esm2015/lib/services/project.service.js +318 -0
- package/esm2015/lib/state/applications-flow-state.context.js +37 -0
- package/esm2015/lib/state/applications-flow.state.js +72 -0
- package/esm2015/lowcodeunit-applications-flow-common.js +30 -0
- package/fesm2015/lowcodeunit-applications-flow-common.js +3993 -0
- package/fesm2015/lowcodeunit-applications-flow-common.js.map +1 -0
- package/lcu.api.d.ts +3 -19
- package/lcu.api.d.ts.map +1 -0
- package/lib/applications-flow.module.d.ts +1 -30
- package/lib/applications-flow.module.d.ts.map +1 -0
- package/lib/elements/analytics-card/analytics-card.component.d.ts +9 -0
- package/lib/elements/analytics-card/analytics-card.component.d.ts.map +1 -0
- package/lib/elements/base-form/base-form.component.d.ts +1 -3
- package/lib/elements/base-form/base-form.component.d.ts.map +1 -0
- package/lib/elements/card-carousel/card-carousel.component.d.ts +14 -0
- package/lib/elements/card-carousel/card-carousel.component.d.ts.map +1 -0
- package/lib/elements/column-info-card/column-info-card.component.d.ts +18 -0
- package/lib/elements/column-info-card/column-info-card.component.d.ts.map +1 -0
- package/lib/elements/dynamic-tabs/dynamic-tabs.component.d.ts +1 -3
- package/lib/elements/dynamic-tabs/dynamic-tabs.component.d.ts.map +1 -0
- package/lib/elements/feed-card-sm/feed-card-sm.component.d.ts +12 -0
- package/lib/elements/feed-card-sm/feed-card-sm.component.d.ts.map +1 -0
- package/lib/elements/form-card/form-card.component.d.ts +1 -3
- package/lib/elements/form-card/form-card.component.d.ts.map +1 -0
- package/lib/elements/gh-control/gh-control.component.d.ts +17 -0
- package/lib/elements/gh-control/gh-control.component.d.ts.map +1 -0
- package/lib/elements/main-feed-card/main-feed-card.component.d.ts +11 -0
- package/lib/elements/main-feed-card/main-feed-card.component.d.ts.map +1 -0
- package/lib/elements/project-info-card/project-info-card.component.d.ts +14 -0
- package/lib/elements/project-info-card/project-info-card.component.d.ts.map +1 -0
- package/lib/elements/projects/controls/builds/builds.component.d.ts +1 -3
- package/lib/elements/projects/controls/builds/builds.component.d.ts.map +1 -0
- package/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.d.ts +1 -3
- package/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.d.ts.map +1 -0
- package/lib/elements/projects/controls/forms/source-control/source-control.component.d.ts +1 -3
- package/lib/elements/projects/controls/forms/source-control/source-control.component.d.ts.map +1 -0
- package/lib/elements/projects/controls/git-auth/git-auth.component.d.ts +1 -3
- package/lib/elements/projects/controls/git-auth/git-auth.component.d.ts.map +1 -0
- package/lib/elements/projects/controls/header/header.component.d.ts +1 -3
- package/lib/elements/projects/controls/header/header.component.d.ts.map +1 -0
- package/lib/elements/projects/controls/hosting-details-form-group/hosting-details-form-group.component.d.ts +1 -3
- package/lib/elements/projects/controls/hosting-details-form-group/hosting-details-form-group.component.d.ts.map +1 -0
- package/lib/elements/projects/controls/project-items/project-items.component.d.ts +1 -3
- package/lib/elements/projects/controls/project-items/project-items.component.d.ts.map +1 -0
- package/lib/elements/projects/controls/project-tabs/project-tabs.component.d.ts +1 -3
- package/lib/elements/projects/controls/project-tabs/project-tabs.component.d.ts.map +1 -0
- package/lib/elements/projects/controls/recent-activities/recent-activities.component.d.ts +1 -3
- package/lib/elements/projects/controls/recent-activities/recent-activities.component.d.ts.map +1 -0
- package/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.d.ts +1 -3
- package/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.d.ts.map +1 -0
- package/lib/elements/projects/controls/tabs/apps-flow/npm-package-select/npm-package-select.component.d.ts +1 -3
- package/lib/elements/projects/controls/tabs/apps-flow/npm-package-select/npm-package-select.component.d.ts.map +1 -0
- package/lib/elements/projects/controls/tabs/devops/devops.component.d.ts +1 -3
- package/lib/elements/projects/controls/tabs/devops/devops.component.d.ts.map +1 -0
- package/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.d.ts +1 -3
- package/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.d.ts.map +1 -0
- package/lib/elements/projects/controls/tabs/domains/domains.component.d.ts +1 -3
- package/lib/elements/projects/controls/tabs/domains/domains.component.d.ts.map +1 -0
- package/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.d.ts +1 -3
- package/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.d.ts.map +1 -0
- package/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.d.ts +1 -3
- package/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.d.ts.map +1 -0
- package/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.d.ts +1 -3
- package/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.d.ts.map +1 -0
- package/lib/elements/projects/controls/tabs/general/general.component.d.ts +1 -3
- package/lib/elements/projects/controls/tabs/general/general.component.d.ts.map +1 -0
- package/lib/elements/projects/projects.component.d.ts +1 -3
- package/lib/elements/projects/projects.component.d.ts.map +1 -0
- package/lib/elements/slotted-card/slotted-card.component.d.ts +13 -0
- package/lib/elements/slotted-card/slotted-card.component.d.ts.map +1 -0
- package/lib/elements/three-column/three-column.component.d.ts +9 -0
- package/lib/elements/three-column/three-column.component.d.ts.map +1 -0
- package/lib/elements/two-column-header/two-column-header.component.d.ts +6 -0
- package/lib/elements/two-column-header/two-column-header.component.d.ts.map +1 -0
- package/lib/models/actions.model.d.ts +1 -0
- package/lib/models/actions.model.d.ts.map +1 -0
- package/lib/models/base-form-config.model.d.ts +1 -0
- package/lib/models/base-form-config.model.d.ts.map +1 -0
- package/lib/models/card-form-config.model.d.ts +1 -0
- package/lib/models/card-form-config.model.d.ts.map +1 -0
- package/lib/models/card-slot.model.d.ts +8 -0
- package/lib/models/card-slot.model.d.ts.map +1 -0
- package/lib/models/dev-settings-preset.model.d.ts +1 -0
- package/lib/models/dev-settings-preset.model.d.ts.map +1 -0
- package/lib/models/domain.model.d.ts +1 -0
- package/lib/models/domain.model.d.ts.map +1 -0
- package/lib/models/dynamic-tabs.model.d.ts +1 -0
- package/lib/models/dynamic-tabs.model.d.ts.map +1 -0
- package/lib/models/form-actions.model.d.ts +1 -0
- package/lib/models/form-actions.model.d.ts.map +1 -0
- package/lib/models/form.model.d.ts +1 -0
- package/lib/models/form.model.d.ts.map +1 -0
- package/lib/models/form.values.model.d.ts +1 -0
- package/lib/models/form.values.model.d.ts.map +1 -0
- package/lib/models/project-actions.model.d.ts +1 -0
- package/lib/models/project-actions.model.d.ts.map +1 -0
- package/lib/models/slot-action.model.d.ts +9 -0
- package/lib/models/slot-action.model.d.ts.map +1 -0
- package/lib/services/applications-flow-events.service.d.ts +1 -3
- package/lib/services/applications-flow-events.service.d.ts.map +1 -0
- package/lib/services/applications-flow.service.d.ts +1 -3
- package/lib/services/applications-flow.service.d.ts.map +1 -0
- package/lib/services/forms.service.d.ts +1 -3
- package/lib/services/forms.service.d.ts.map +1 -0
- package/lib/services/npm.service.d.ts +1 -3
- package/lib/services/npm.service.d.ts.map +1 -0
- package/lib/services/project.service.d.ts +2 -4
- package/lib/services/project.service.d.ts.map +1 -0
- package/lib/state/applications-flow-state.context.d.ts +1 -3
- package/lib/state/applications-flow-state.context.d.ts.map +1 -0
- package/lib/state/applications-flow.state.d.ts +1 -0
- package/lib/state/applications-flow.state.d.ts.map +1 -0
- package/lowcodeunit-applications-flow-common.d.ts +26 -1
- package/lowcodeunit-applications-flow-common.d.ts.map +1 -0
- package/lowcodeunit-applications-flow-common.metadata.json +1 -0
- package/package.json +12 -20
- package/esm2020/lcu.api.mjs +0 -43
- package/esm2020/lib/applications-flow.module.mjs +0 -194
- package/esm2020/lib/elements/base-form/base-form.component.mjs +0 -57
- package/esm2020/lib/elements/dynamic-tabs/dynamic-tabs.component.mjs +0 -74
- package/esm2020/lib/elements/flow-tool/flow-tool.component.mjs +0 -30
- package/esm2020/lib/elements/form-card/form-card.component.mjs +0 -33
- package/esm2020/lib/elements/projects/controls/builds/builds.component.mjs +0 -35
- package/esm2020/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.mjs +0 -145
- package/esm2020/lib/elements/projects/controls/forms/source-control/source-control.component.mjs +0 -287
- package/esm2020/lib/elements/projects/controls/git-auth/git-auth.component.mjs +0 -26
- package/esm2020/lib/elements/projects/controls/header/header.component.mjs +0 -83
- package/esm2020/lib/elements/projects/controls/hosting-details-form-group/hosting-details-form-group.component.mjs +0 -118
- package/esm2020/lib/elements/projects/controls/project-items/project-items.component.mjs +0 -54
- package/esm2020/lib/elements/projects/controls/project-tabs/project-tabs.component.mjs +0 -103
- package/esm2020/lib/elements/projects/controls/recent-activities/recent-activities.component.mjs +0 -14
- package/esm2020/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.mjs +0 -563
- package/esm2020/lib/elements/projects/controls/tabs/apps-flow/npm-package-select/npm-package-select.component.mjs +0 -72
- package/esm2020/lib/elements/projects/controls/tabs/devops/devops.component.mjs +0 -242
- package/esm2020/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.mjs +0 -179
- package/esm2020/lib/elements/projects/controls/tabs/domains/domains.component.mjs +0 -137
- package/esm2020/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.mjs +0 -90
- package/esm2020/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.mjs +0 -142
- package/esm2020/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.mjs +0 -124
- package/esm2020/lib/elements/projects/controls/tabs/general/general.component.mjs +0 -40
- package/esm2020/lib/elements/projects/projects.component.mjs +0 -219
- package/esm2020/lib/models/actions.model.mjs +0 -3
- package/esm2020/lib/models/base-form-config.model.mjs +0 -6
- package/esm2020/lib/models/card-form-config.model.mjs +0 -6
- package/esm2020/lib/models/dev-settings-preset.model.mjs +0 -3
- package/esm2020/lib/models/domain.model.mjs +0 -3
- package/esm2020/lib/models/dynamic-tabs.model.mjs +0 -6
- package/esm2020/lib/models/form-actions.model.mjs +0 -3
- package/esm2020/lib/models/form.model.mjs +0 -6
- package/esm2020/lib/models/form.values.model.mjs +0 -11
- package/esm2020/lib/models/project-actions.model.mjs +0 -6
- package/esm2020/lib/services/applications-flow-events.service.mjs +0 -84
- package/esm2020/lib/services/applications-flow.service.mjs +0 -132
- package/esm2020/lib/services/forms.service.mjs +0 -132
- package/esm2020/lib/services/npm.service.mjs +0 -77
- package/esm2020/lib/services/project.service.mjs +0 -303
- package/esm2020/lib/state/applications-flow-state.context.mjs +0 -36
- package/esm2020/lib/state/applications-flow.state.mjs +0 -72
- package/esm2020/lowcodeunit-applications-flow-common.mjs +0 -5
- package/fesm2015/lowcodeunit-applications-flow-common.mjs +0 -3712
- package/fesm2015/lowcodeunit-applications-flow-common.mjs.map +0 -1
- package/fesm2020/lowcodeunit-applications-flow-common.mjs +0 -3659
- package/fesm2020/lowcodeunit-applications-flow-common.mjs.map +0 -1
- package/lib/elements/flow-tool/flow-tool.component.d.ts +0 -17
|
@@ -0,0 +1,592 @@
|
|
|
1
|
+
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { FormBuilder, Validators, } from '@angular/forms';
|
|
3
|
+
import { ApplicationsFlowEventsService, } from '../../../../../services/applications-flow-events.service';
|
|
4
|
+
import { Guid } from '@lcu/common';
|
|
5
|
+
import { SourceControlFormControlsComponent } from '../../forms/source-control/source-control.component';
|
|
6
|
+
import { ApplicationsFlowService } from '../../../../../services/applications-flow.service';
|
|
7
|
+
export class AppsFlowComponent {
|
|
8
|
+
// Constructors
|
|
9
|
+
constructor(formBldr, appsFlowSvc, appsFlowEventsSvc) {
|
|
10
|
+
this.formBldr = formBldr;
|
|
11
|
+
this.appsFlowSvc = appsFlowSvc;
|
|
12
|
+
this.appsFlowEventsSvc = appsFlowEventsSvc;
|
|
13
|
+
this.EditingApplicationLookup = null;
|
|
14
|
+
this.redirectTooltip = '';
|
|
15
|
+
// this.IsPermanent = false;
|
|
16
|
+
// this.IsPreserve = false;
|
|
17
|
+
}
|
|
18
|
+
// Fields
|
|
19
|
+
// Properties
|
|
20
|
+
get APIRootFormControl() {
|
|
21
|
+
var _a;
|
|
22
|
+
return (_a = this.ApplicationFormGroup) === null || _a === void 0 ? void 0 : _a.controls.apiRoot;
|
|
23
|
+
}
|
|
24
|
+
get ApplicationIDFormControl() {
|
|
25
|
+
var _a;
|
|
26
|
+
return (_a = this.ApplicationFormGroup) === null || _a === void 0 ? void 0 : _a.controls.applicationId;
|
|
27
|
+
}
|
|
28
|
+
get ApplicationLookups() {
|
|
29
|
+
return Object.keys(this.Applications || {});
|
|
30
|
+
}
|
|
31
|
+
get ApplicationRoutes() {
|
|
32
|
+
return Object.keys(this.RoutedApplications || {});
|
|
33
|
+
}
|
|
34
|
+
get ApplicationsBank() {
|
|
35
|
+
var _a;
|
|
36
|
+
return ((_a = this.Data) === null || _a === void 0 ? void 0 : _a.Applications) || {};
|
|
37
|
+
}
|
|
38
|
+
get Applications() {
|
|
39
|
+
const apps = {};
|
|
40
|
+
this.Project.ApplicationLookups.forEach((appLookup) => {
|
|
41
|
+
apps[appLookup] = this.ApplicationsBank[appLookup];
|
|
42
|
+
});
|
|
43
|
+
return apps;
|
|
44
|
+
}
|
|
45
|
+
get BuildFormControl() {
|
|
46
|
+
var _a;
|
|
47
|
+
return (_a = this.ApplicationFormGroup) === null || _a === void 0 ? void 0 : _a.controls.build;
|
|
48
|
+
}
|
|
49
|
+
get ClientIDFormControl() {
|
|
50
|
+
var _a;
|
|
51
|
+
return (_a = this.ApplicationFormGroup) === null || _a === void 0 ? void 0 : _a.controls.clientId;
|
|
52
|
+
}
|
|
53
|
+
get ClientSecretFormControl() {
|
|
54
|
+
var _a;
|
|
55
|
+
return (_a = this.ApplicationFormGroup) === null || _a === void 0 ? void 0 : _a.controls.clientSecret;
|
|
56
|
+
}
|
|
57
|
+
get CurrentRouteApplicationLookups() {
|
|
58
|
+
return Object.keys(this.RoutedApplications[this.CurrentApplicationRoute] || {});
|
|
59
|
+
}
|
|
60
|
+
get DefaultFileFormControl() {
|
|
61
|
+
var _a;
|
|
62
|
+
return (_a = this.ApplicationFormGroup) === null || _a === void 0 ? void 0 : _a.controls.defaultFile;
|
|
63
|
+
}
|
|
64
|
+
get DefaultSourceControl() {
|
|
65
|
+
var _a, _b, _c, _d;
|
|
66
|
+
return {
|
|
67
|
+
Organization: (_b = (_a = this.EditingApplication) === null || _a === void 0 ? void 0 : _a.LowCodeUnit) === null || _b === void 0 ? void 0 : _b.Organization,
|
|
68
|
+
Repository: (_d = (_c = this.EditingApplication) === null || _c === void 0 ? void 0 : _c.LowCodeUnit) === null || _d === void 0 ? void 0 : _d.Repository,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
get DescriptionFormControl() {
|
|
72
|
+
var _a;
|
|
73
|
+
return (_a = this.ApplicationFormGroup) === null || _a === void 0 ? void 0 : _a.controls.description;
|
|
74
|
+
}
|
|
75
|
+
get EditingApplication() {
|
|
76
|
+
let app = this.Applications
|
|
77
|
+
? this.Applications[this.EditingApplicationLookup]
|
|
78
|
+
: null;
|
|
79
|
+
if (app == null && this.EditingApplicationLookup) {
|
|
80
|
+
app = {};
|
|
81
|
+
}
|
|
82
|
+
return app;
|
|
83
|
+
}
|
|
84
|
+
get HasBuildFormControl() {
|
|
85
|
+
var _a;
|
|
86
|
+
return (_a = this.ApplicationFormGroup) === null || _a === void 0 ? void 0 : _a.controls.hasBuild;
|
|
87
|
+
}
|
|
88
|
+
get InboundPathFormControl() {
|
|
89
|
+
var _a;
|
|
90
|
+
return (_a = this.ApplicationFormGroup) === null || _a === void 0 ? void 0 : _a.controls.inboundPath;
|
|
91
|
+
}
|
|
92
|
+
get IsPrivateFormControl() {
|
|
93
|
+
var _a;
|
|
94
|
+
return (_a = this.ApplicationFormGroup) === null || _a === void 0 ? void 0 : _a.controls.isPrivate;
|
|
95
|
+
}
|
|
96
|
+
get IsTriggerSignInFormControl() {
|
|
97
|
+
var _a;
|
|
98
|
+
return (_a = this.ApplicationFormGroup) === null || _a === void 0 ? void 0 : _a.controls.isTriggerSignIn;
|
|
99
|
+
}
|
|
100
|
+
get MethodsFormControl() {
|
|
101
|
+
var _a;
|
|
102
|
+
return (_a = this.ApplicationFormGroup) === null || _a === void 0 ? void 0 : _a.controls.methods;
|
|
103
|
+
}
|
|
104
|
+
get NameFormControl() {
|
|
105
|
+
var _a;
|
|
106
|
+
return (_a = this.ApplicationFormGroup) === null || _a === void 0 ? void 0 : _a.controls.name;
|
|
107
|
+
}
|
|
108
|
+
get PackageFormControl() {
|
|
109
|
+
var _a;
|
|
110
|
+
return (_a = this.ApplicationFormGroup) === null || _a === void 0 ? void 0 : _a.controls.package;
|
|
111
|
+
}
|
|
112
|
+
get PermanentFormControl() {
|
|
113
|
+
var _a;
|
|
114
|
+
return (_a = this.ApplicationFormGroup) === null || _a === void 0 ? void 0 : _a.controls.permanent;
|
|
115
|
+
}
|
|
116
|
+
get PreserveMethodFormControl() {
|
|
117
|
+
var _a;
|
|
118
|
+
return (_a = this.ApplicationFormGroup) === null || _a === void 0 ? void 0 : _a.controls.preserveMethod;
|
|
119
|
+
}
|
|
120
|
+
get PrimaryHost() {
|
|
121
|
+
return this.Data.PrimaryHost;
|
|
122
|
+
}
|
|
123
|
+
get Project() {
|
|
124
|
+
return this.Data.Project;
|
|
125
|
+
}
|
|
126
|
+
get ProjectLookup() {
|
|
127
|
+
return this.Data.ProjectLookup;
|
|
128
|
+
}
|
|
129
|
+
get RedirectFormControl() {
|
|
130
|
+
var _a;
|
|
131
|
+
return (_a = this.ApplicationFormGroup) === null || _a === void 0 ? void 0 : _a.controls.redirect;
|
|
132
|
+
}
|
|
133
|
+
get RoutedApplications() {
|
|
134
|
+
const appLookups = Object.keys(this.Applications);
|
|
135
|
+
const apps = appLookups.map((appLookup) => this.Applications[appLookup]);
|
|
136
|
+
let appRoutes = apps.map((app) => {
|
|
137
|
+
var _a;
|
|
138
|
+
return (_a = app.LookupConfig) === null || _a === void 0 ? void 0 : _a.PathRegex.replace('.*', '');
|
|
139
|
+
}) || [];
|
|
140
|
+
appRoutes = appRoutes.filter((ar) => ar != null);
|
|
141
|
+
let routeBases = [];
|
|
142
|
+
appRoutes.forEach((appRoute) => {
|
|
143
|
+
const appRouteParts = appRoute.split('/');
|
|
144
|
+
const appRouteBase = `/${appRouteParts[1]}`;
|
|
145
|
+
if (routeBases.indexOf(appRouteBase) < 0) {
|
|
146
|
+
routeBases.push(appRouteBase);
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
let workingAppLookups = [...(appLookups || [])];
|
|
150
|
+
routeBases = routeBases.sort((a, b) => b.localeCompare(a));
|
|
151
|
+
const routeSet = routeBases.reduce((prevRouteMap, currentRouteBase) => {
|
|
152
|
+
const routeMap = Object.assign({}, prevRouteMap);
|
|
153
|
+
const filteredAppLookups = workingAppLookups.filter((wal) => {
|
|
154
|
+
var _a;
|
|
155
|
+
const wa = this.Applications[wal];
|
|
156
|
+
return (_a = wa.LookupConfig) === null || _a === void 0 ? void 0 : _a.PathRegex.startsWith(currentRouteBase);
|
|
157
|
+
});
|
|
158
|
+
routeMap[currentRouteBase] =
|
|
159
|
+
filteredAppLookups.reduce((prevAppMap, appLookup) => {
|
|
160
|
+
const appMap = Object.assign({}, prevAppMap);
|
|
161
|
+
appMap[appLookup] = this.Applications[appLookup];
|
|
162
|
+
return appMap;
|
|
163
|
+
}, {}) || {};
|
|
164
|
+
workingAppLookups = workingAppLookups.filter((wa) => {
|
|
165
|
+
return filteredAppLookups.indexOf(wa) < 0;
|
|
166
|
+
});
|
|
167
|
+
return routeMap;
|
|
168
|
+
}, {}) || {};
|
|
169
|
+
let routeSetKeys = Object.keys(routeSet);
|
|
170
|
+
routeSetKeys = routeSetKeys.sort((a, b) => a.localeCompare(b));
|
|
171
|
+
const routeSetResult = {};
|
|
172
|
+
routeSetKeys.forEach((rsk) => (routeSetResult[rsk] = routeSet[rsk]));
|
|
173
|
+
return routeSetResult;
|
|
174
|
+
}
|
|
175
|
+
get RouteFormControl() {
|
|
176
|
+
var _a;
|
|
177
|
+
return (_a = this.ApplicationFormGroup) === null || _a === void 0 ? void 0 : _a.controls.route;
|
|
178
|
+
}
|
|
179
|
+
get ScopesFormControl() {
|
|
180
|
+
var _a;
|
|
181
|
+
return (_a = this.ApplicationFormGroup) === null || _a === void 0 ? void 0 : _a.controls.scopes;
|
|
182
|
+
}
|
|
183
|
+
get SecurityFormControl() {
|
|
184
|
+
var _a;
|
|
185
|
+
return (_a = this.ApplicationFormGroup) === null || _a === void 0 ? void 0 : _a.controls.security;
|
|
186
|
+
}
|
|
187
|
+
get SourceControlLookupFormControl() {
|
|
188
|
+
var _a;
|
|
189
|
+
return (_a = this.ApplicationFormGroup) === null || _a === void 0 ? void 0 : _a.controls.sourceControlLookup;
|
|
190
|
+
}
|
|
191
|
+
get SourceControlLookups() {
|
|
192
|
+
return Object.keys(this.SourceControls || {});
|
|
193
|
+
}
|
|
194
|
+
get SourceControls() {
|
|
195
|
+
return this.Data.Environment.Sources || {};
|
|
196
|
+
}
|
|
197
|
+
get SPARootFormControl() {
|
|
198
|
+
var _a;
|
|
199
|
+
return (_a = this.ApplicationFormGroup) === null || _a === void 0 ? void 0 : _a.controls.spaRoot;
|
|
200
|
+
}
|
|
201
|
+
get TokenLookupFormControl() {
|
|
202
|
+
var _a;
|
|
203
|
+
return (_a = this.ApplicationFormGroup) === null || _a === void 0 ? void 0 : _a.controls.tokenLookup;
|
|
204
|
+
}
|
|
205
|
+
get VersionFormControl() {
|
|
206
|
+
var _a;
|
|
207
|
+
return (_a = this.ApplicationFormGroup) === null || _a === void 0 ? void 0 : _a.controls.version;
|
|
208
|
+
}
|
|
209
|
+
get ZipFileFormControl() {
|
|
210
|
+
var _a;
|
|
211
|
+
return (_a = this.ApplicationFormGroup) === null || _a === void 0 ? void 0 : _a.controls.zipFile;
|
|
212
|
+
}
|
|
213
|
+
// Life Cycle
|
|
214
|
+
ngOnInit() {
|
|
215
|
+
var _a;
|
|
216
|
+
if (((_a = this.ApplicationLookups) === null || _a === void 0 ? void 0 : _a.length) <= 0) {
|
|
217
|
+
this.CreateNewApplication();
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
// API Methods
|
|
221
|
+
CreateNewApplication() {
|
|
222
|
+
this.SetEditingApplication(Guid.CreateRaw());
|
|
223
|
+
}
|
|
224
|
+
DeleteApplication(appLookup, appName) {
|
|
225
|
+
if (confirm(`Are you sure you want to delete application '${appName}'?`)) {
|
|
226
|
+
this.appsFlowEventsSvc.DeleteApplication(appLookup);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
LCUTypeChanged(event) {
|
|
230
|
+
this.LCUType = event.value;
|
|
231
|
+
this.setupLcuTypeSubForm();
|
|
232
|
+
}
|
|
233
|
+
ProcessorTypeChanged(event) {
|
|
234
|
+
this.ProcessorType = event.value;
|
|
235
|
+
this.setupProcessorTypeSubForm();
|
|
236
|
+
}
|
|
237
|
+
DetermineTooltipText() {
|
|
238
|
+
let permanentValue = this.PermanentFormControl.value;
|
|
239
|
+
let preserveValue = this.PreserveMethodFormControl.value;
|
|
240
|
+
if (permanentValue === true && preserveValue === false) {
|
|
241
|
+
this.redirectTooltip = '301 – Permanent and Not Preserve';
|
|
242
|
+
}
|
|
243
|
+
else if (permanentValue === false && preserveValue === false) {
|
|
244
|
+
this.redirectTooltip = '302 – Not Permanent and Not Preserve';
|
|
245
|
+
}
|
|
246
|
+
else if (permanentValue === false && preserveValue === true) {
|
|
247
|
+
this.redirectTooltip = '307 – Not Permanent and Preserve';
|
|
248
|
+
}
|
|
249
|
+
else if (permanentValue === true && preserveValue === true) {
|
|
250
|
+
this.redirectTooltip = '308 – Permanent and Preserve';
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
GetProcessorType(appLookup) {
|
|
254
|
+
let processorType = '';
|
|
255
|
+
processorType = this.Applications[appLookup].Processor.Type
|
|
256
|
+
? this.Applications[appLookup].Processor.Type
|
|
257
|
+
: '';
|
|
258
|
+
// console.log("Ptype = ", processorType);
|
|
259
|
+
return processorType;
|
|
260
|
+
}
|
|
261
|
+
EditApplicationRouteClicked(appRoute) {
|
|
262
|
+
this.CurrentApplicationRoute = appRoute;
|
|
263
|
+
}
|
|
264
|
+
SaveApplication() {
|
|
265
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
266
|
+
const app = {
|
|
267
|
+
Application: {
|
|
268
|
+
Name: this.NameFormControl.value,
|
|
269
|
+
Description: this.DescriptionFormControl.value,
|
|
270
|
+
PriorityShift: ((_b = (_a = this.EditingApplication) === null || _a === void 0 ? void 0 : _a.Application) === null || _b === void 0 ? void 0 : _b.PriorityShift) || 0,
|
|
271
|
+
},
|
|
272
|
+
AccessRightLookups: [],
|
|
273
|
+
DataTokens: {},
|
|
274
|
+
LicenseConfigurationLookups: [],
|
|
275
|
+
LookupConfig: {
|
|
276
|
+
IsPrivate: this.IsPrivateFormControl.value,
|
|
277
|
+
IsTriggerSignIn: this.IsPrivateFormControl.value
|
|
278
|
+
? this.IsTriggerSignInFormControl.value
|
|
279
|
+
: false,
|
|
280
|
+
PathRegex: `${this.RouteFormControl.value}.*`,
|
|
281
|
+
QueryRegex: ((_d = (_c = this.EditingApplication) === null || _c === void 0 ? void 0 : _c.LookupConfig) === null || _d === void 0 ? void 0 : _d.QueryRegex) || '',
|
|
282
|
+
HeaderRegex: ((_f = (_e = this.EditingApplication) === null || _e === void 0 ? void 0 : _e.LookupConfig) === null || _f === void 0 ? void 0 : _f.HeaderRegex) || '',
|
|
283
|
+
AllowedMethods: (_h = (_g = this.MethodsFormControl) === null || _g === void 0 ? void 0 : _g.value) === null || _h === void 0 ? void 0 : _h.split(' ').filter((v) => !!v),
|
|
284
|
+
},
|
|
285
|
+
Processor: {
|
|
286
|
+
Type: this.ProcessorType,
|
|
287
|
+
},
|
|
288
|
+
};
|
|
289
|
+
switch (app.Processor.Type) {
|
|
290
|
+
case 'DFS':
|
|
291
|
+
app.Processor.BaseHref = `${this.RouteFormControl.value}/`.replace('//', '/');
|
|
292
|
+
app.Processor.DefaultFile =
|
|
293
|
+
this.DefaultFileFormControl.value || 'index.html';
|
|
294
|
+
app.LowCodeUnit = {
|
|
295
|
+
Type: this.LCUType,
|
|
296
|
+
};
|
|
297
|
+
switch (app.LowCodeUnit.Type) {
|
|
298
|
+
case 'GitHub':
|
|
299
|
+
app.LowCodeUnit.Organization =
|
|
300
|
+
this.SourceControlFormControls.OrganizationFormControl.value;
|
|
301
|
+
app.LowCodeUnit.Repository =
|
|
302
|
+
this.SourceControlFormControls.RepositoryFormControl.value;
|
|
303
|
+
app.LowCodeUnit.Build = this.BuildFormControl.value;
|
|
304
|
+
app.LowCodeUnit.Path =
|
|
305
|
+
this.SourceControlFormControls.BuildPathFormControl.value;
|
|
306
|
+
break;
|
|
307
|
+
case 'NPM':
|
|
308
|
+
app.LowCodeUnit.Package = this.PackageFormControl.value;
|
|
309
|
+
app.LowCodeUnit.Version = this.VersionFormControl.value;
|
|
310
|
+
break;
|
|
311
|
+
case 'Zip':
|
|
312
|
+
app.LowCodeUnit.ZipFile = this.ZipFileFormControl.value;
|
|
313
|
+
break;
|
|
314
|
+
}
|
|
315
|
+
break;
|
|
316
|
+
case 'OAuth':
|
|
317
|
+
app.Processor.Scopes = this.ScopesFormControl.value.split(' ');
|
|
318
|
+
app.Processor.TokenLookup = this.TokenLookupFormControl.value;
|
|
319
|
+
app.LowCodeUnit = {
|
|
320
|
+
Type: this.LCUType,
|
|
321
|
+
};
|
|
322
|
+
switch (app.LowCodeUnit.Type) {
|
|
323
|
+
case 'GitHubOAuth':
|
|
324
|
+
app.LowCodeUnit.ClientID = this.ClientIDFormControl.value;
|
|
325
|
+
app.LowCodeUnit.ClientSecret = this.ClientSecretFormControl.value;
|
|
326
|
+
break;
|
|
327
|
+
}
|
|
328
|
+
break;
|
|
329
|
+
case 'Proxy':
|
|
330
|
+
app.Processor.InboundPath = this.InboundPathFormControl.value;
|
|
331
|
+
app.LowCodeUnit = {
|
|
332
|
+
Type: this.LCUType,
|
|
333
|
+
};
|
|
334
|
+
switch (app.LowCodeUnit.Type) {
|
|
335
|
+
case 'API':
|
|
336
|
+
app.LowCodeUnit.APIRoot = this.APIRootFormControl.value;
|
|
337
|
+
app.LowCodeUnit.Security = this.SecurityFormControl.value;
|
|
338
|
+
break;
|
|
339
|
+
case 'SPA':
|
|
340
|
+
app.LowCodeUnit.SPARoot = this.SPARootFormControl.value;
|
|
341
|
+
break;
|
|
342
|
+
}
|
|
343
|
+
break;
|
|
344
|
+
case 'Redirect':
|
|
345
|
+
app.Processor.Permanent = !!this.PermanentFormControl.value;
|
|
346
|
+
app.Processor.PreserveMethod = !!this.PreserveMethodFormControl.value;
|
|
347
|
+
app.Processor.Redirect = this.RedirectFormControl.value;
|
|
348
|
+
break;
|
|
349
|
+
}
|
|
350
|
+
if (!app.LookupConfig.PathRegex.startsWith('/')) {
|
|
351
|
+
app.LookupConfig.PathRegex = `/${app.LookupConfig.PathRegex}`;
|
|
352
|
+
}
|
|
353
|
+
const saveAppReq = {
|
|
354
|
+
ProjectLookup: this.ProjectLookup,
|
|
355
|
+
Application: app,
|
|
356
|
+
ApplicationLookup: this.EditingApplicationLookup || Guid.CreateRaw(),
|
|
357
|
+
};
|
|
358
|
+
if (this.HasBuildFormControl.value && this.ProcessorType !== 'redirect') {
|
|
359
|
+
if (app) {
|
|
360
|
+
app.SourceControlLookup = this.SourceControlLookupFormControl.value;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
else if (app) {
|
|
364
|
+
app.SourceControlLookup = null;
|
|
365
|
+
}
|
|
366
|
+
this.appsFlowEventsSvc.SaveApplicationAsCode(saveAppReq);
|
|
367
|
+
}
|
|
368
|
+
SetEditingApplication(appLookup) {
|
|
369
|
+
this.EditingApplicationLookup = appLookup;
|
|
370
|
+
this.setupApplicationForm();
|
|
371
|
+
}
|
|
372
|
+
SourceControlLookupChanged(event) {
|
|
373
|
+
// TODO: Anything to do here on change?
|
|
374
|
+
}
|
|
375
|
+
StartsWith(app, appRouteBase) {
|
|
376
|
+
var _a, _b;
|
|
377
|
+
if (appRouteBase === '/') {
|
|
378
|
+
return ((_a = app === null || app === void 0 ? void 0 : app.LookupConfig) === null || _a === void 0 ? void 0 : _a.PathRegex) === '/.*';
|
|
379
|
+
}
|
|
380
|
+
else {
|
|
381
|
+
return (_b = app === null || app === void 0 ? void 0 : app.LookupConfig) === null || _b === void 0 ? void 0 : _b.PathRegex.startsWith(appRouteBase);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
Unpack(appLookup, app) {
|
|
385
|
+
var _a, _b, _c;
|
|
386
|
+
this.appsFlowEventsSvc.UnpackLowCodeUnit({
|
|
387
|
+
ApplicationLookup: appLookup,
|
|
388
|
+
ApplicationName: (_a = app.Application) === null || _a === void 0 ? void 0 : _a.Name,
|
|
389
|
+
Version: ((_b = app.LowCodeUnit) === null || _b === void 0 ? void 0 : _b.Version) || ((_c = app.LowCodeUnit) === null || _c === void 0 ? void 0 : _c.Build),
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
// Helpers
|
|
393
|
+
cleanupLcuTypeSubForm() {
|
|
394
|
+
this.ApplicationFormGroup.removeControl('methods');
|
|
395
|
+
this.ApplicationFormGroup.removeControl('apiRoot');
|
|
396
|
+
this.ApplicationFormGroup.removeControl('security');
|
|
397
|
+
this.ApplicationFormGroup.removeControl('spaRoot');
|
|
398
|
+
this.ApplicationFormGroup.removeControl('applicationId');
|
|
399
|
+
this.ApplicationFormGroup.removeControl('build');
|
|
400
|
+
this.ApplicationFormGroup.removeControl('clientId');
|
|
401
|
+
this.ApplicationFormGroup.removeControl('clientSecret');
|
|
402
|
+
this.ApplicationFormGroup.removeControl('zipFile');
|
|
403
|
+
}
|
|
404
|
+
cleanupProcessorTypeSubForm() {
|
|
405
|
+
this.ApplicationFormGroup.removeControl('defaultFile');
|
|
406
|
+
this.ApplicationFormGroup.removeControl('dfsLcuType');
|
|
407
|
+
this.ApplicationFormGroup.removeControl('oauthLcuType');
|
|
408
|
+
this.ApplicationFormGroup.removeControl('scopes');
|
|
409
|
+
this.ApplicationFormGroup.removeControl('tokenLookup');
|
|
410
|
+
this.ApplicationFormGroup.removeControl('inboundPath');
|
|
411
|
+
this.ApplicationFormGroup.removeControl('proxyLcuType');
|
|
412
|
+
this.ApplicationFormGroup.removeControl('redirect');
|
|
413
|
+
this.ApplicationFormGroup.removeControl('permanent');
|
|
414
|
+
this.ApplicationFormGroup.removeControl('preserveMethod');
|
|
415
|
+
this.cleanupLcuTypeSubForm();
|
|
416
|
+
}
|
|
417
|
+
setupApplicationForm() {
|
|
418
|
+
var _a, _b, _c, _d, _e;
|
|
419
|
+
this.ProcessorType = ((_b = (_a = this.EditingApplication) === null || _a === void 0 ? void 0 : _a.Processor) === null || _b === void 0 ? void 0 : _b.Type) || '';
|
|
420
|
+
console.log('ProcessorType = ', this.ProcessorType);
|
|
421
|
+
if (this.EditingApplication != null) {
|
|
422
|
+
this.ApplicationFormGroup = this.formBldr.group({
|
|
423
|
+
name: [(_c = this.EditingApplication.Application) === null || _c === void 0 ? void 0 : _c.Name, Validators.required],
|
|
424
|
+
description: [
|
|
425
|
+
(_d = this.EditingApplication.Application) === null || _d === void 0 ? void 0 : _d.Description,
|
|
426
|
+
Validators.required,
|
|
427
|
+
],
|
|
428
|
+
route: [
|
|
429
|
+
((_e = this.EditingApplication.LookupConfig) === null || _e === void 0 ? void 0 : _e.PathRegex.replace('.*', '')) ||
|
|
430
|
+
'/',
|
|
431
|
+
Validators.required,
|
|
432
|
+
],
|
|
433
|
+
// priority: [
|
|
434
|
+
// this.EditingApplication.Application?.Priority || 10000,
|
|
435
|
+
// Validators.required,
|
|
436
|
+
// ],
|
|
437
|
+
procType: [this.ProcessorType, [Validators.required]],
|
|
438
|
+
});
|
|
439
|
+
this.setupBuildForm();
|
|
440
|
+
this.setupSecurityForm();
|
|
441
|
+
this.setupProcessorTypeSubForm();
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
setupBuildForm() {
|
|
445
|
+
var _a, _b;
|
|
446
|
+
this.ApplicationFormGroup.addControl('hasBuild', this.formBldr.control(!!((_a = this.EditingApplication.LowCodeUnit) === null || _a === void 0 ? void 0 : _a.SourceControlLookup) || false, [Validators.required]));
|
|
447
|
+
this.ApplicationFormGroup.addControl('sourceControlLookup', this.formBldr.control(((_b = this.EditingApplication.LowCodeUnit) === null || _b === void 0 ? void 0 : _b.SourceControlLookup) || '', []));
|
|
448
|
+
}
|
|
449
|
+
setupDfsForm() {
|
|
450
|
+
var _a, _b;
|
|
451
|
+
this.LCUType = ((_a = this.EditingApplication.LowCodeUnit) === null || _a === void 0 ? void 0 : _a.Type) || '';
|
|
452
|
+
this.ApplicationFormGroup.addControl('defaultFile', this.formBldr.control(((_b = this.EditingApplication.Processor) === null || _b === void 0 ? void 0 : _b.DefaultFile) || 'index.html', [Validators.required]));
|
|
453
|
+
this.ApplicationFormGroup.addControl('lcuType', this.formBldr.control(this.LCUType, [Validators.required]));
|
|
454
|
+
}
|
|
455
|
+
setupLCUAPIForm() {
|
|
456
|
+
var _a, _b, _c, _d;
|
|
457
|
+
this.ApplicationFormGroup.addControl('methods', this.formBldr.control(((_b = (_a = this.EditingApplication.LookupConfig) === null || _a === void 0 ? void 0 : _a.AllowedMethods) === null || _b === void 0 ? void 0 : _b.join(' ')) || '', []));
|
|
458
|
+
this.ApplicationFormGroup.addControl('apiRoot', this.formBldr.control(((_c = this.EditingApplication.LowCodeUnit) === null || _c === void 0 ? void 0 : _c.APIRoot) || '', [Validators.required]));
|
|
459
|
+
this.ApplicationFormGroup.addControl('security', this.formBldr.control(((_d = this.EditingApplication.LowCodeUnit) === null || _d === void 0 ? void 0 : _d.Security) || '', [Validators.required]));
|
|
460
|
+
}
|
|
461
|
+
setupLCUApplicationPointerForm() {
|
|
462
|
+
var _a;
|
|
463
|
+
this.ApplicationFormGroup.addControl('applicationId', this.formBldr.control(((_a = this.EditingApplication.LowCodeUnit) === null || _a === void 0 ? void 0 : _a.ApplicationID) || '', [Validators.required]));
|
|
464
|
+
}
|
|
465
|
+
setupLCUGitHubForm() {
|
|
466
|
+
var _a;
|
|
467
|
+
this.ApplicationFormGroup.addControl('build', this.formBldr.control(((_a = this.EditingApplication.LowCodeUnit) === null || _a === void 0 ? void 0 : _a.Build) || 'latest', [Validators.required]));
|
|
468
|
+
}
|
|
469
|
+
setupLCUGitHubOAuthForm() {
|
|
470
|
+
var _a, _b;
|
|
471
|
+
this.ApplicationFormGroup.addControl('clientId', this.formBldr.control(((_a = this.EditingApplication.LowCodeUnit) === null || _a === void 0 ? void 0 : _a.ClientID) || '', [Validators.required]));
|
|
472
|
+
this.ApplicationFormGroup.addControl('clientSecret', this.formBldr.control(((_b = this.EditingApplication.LowCodeUnit) === null || _b === void 0 ? void 0 : _b.ClientSecret) || '', [Validators.required]));
|
|
473
|
+
}
|
|
474
|
+
setupLCUNPMForm() {
|
|
475
|
+
// this.ApplicationFormGroup.addControl(
|
|
476
|
+
// 'package',
|
|
477
|
+
// this.formBldr.control(
|
|
478
|
+
// this.EditingApplication.LowCodeUnit?.Package || '',
|
|
479
|
+
// [Validators.required]
|
|
480
|
+
// )
|
|
481
|
+
// );
|
|
482
|
+
// this.ApplicationFormGroup.addControl(
|
|
483
|
+
// 'version',
|
|
484
|
+
// this.formBldr.control(
|
|
485
|
+
// this.EditingApplication.LowCodeUnit?.Version || '',
|
|
486
|
+
// [Validators.required]
|
|
487
|
+
// )
|
|
488
|
+
// );
|
|
489
|
+
}
|
|
490
|
+
setupLCUSPAForm() {
|
|
491
|
+
var _a;
|
|
492
|
+
this.ApplicationFormGroup.addControl('spaRoot', this.formBldr.control(((_a = this.EditingApplication.LowCodeUnit) === null || _a === void 0 ? void 0 : _a.SPARoot) || '', [Validators.required]));
|
|
493
|
+
}
|
|
494
|
+
setupLCUZipForm() {
|
|
495
|
+
var _a;
|
|
496
|
+
this.ApplicationFormGroup.addControl('zipFile', this.formBldr.control(((_a = this.EditingApplication.LowCodeUnit) === null || _a === void 0 ? void 0 : _a.ZipFile) || '', [Validators.required]));
|
|
497
|
+
}
|
|
498
|
+
setupLcuTypeSubForm() {
|
|
499
|
+
this.cleanupLcuTypeSubForm();
|
|
500
|
+
// this.ApplicationFormGroup.removeControl('package');
|
|
501
|
+
// this.ApplicationFormGroup.removeControl('version');
|
|
502
|
+
if (this.LCUType) {
|
|
503
|
+
switch (this.LCUType) {
|
|
504
|
+
case 'API':
|
|
505
|
+
this.setupLCUAPIForm();
|
|
506
|
+
break;
|
|
507
|
+
case 'ApplicationPointer':
|
|
508
|
+
this.setupLCUApplicationPointerForm();
|
|
509
|
+
break;
|
|
510
|
+
case 'GitHub':
|
|
511
|
+
this.setupLCUGitHubForm();
|
|
512
|
+
break;
|
|
513
|
+
case 'GitHubOAuth':
|
|
514
|
+
this.setupLCUGitHubOAuthForm();
|
|
515
|
+
break;
|
|
516
|
+
case 'NPM':
|
|
517
|
+
this.setupLCUNPMForm();
|
|
518
|
+
break;
|
|
519
|
+
case 'SPA':
|
|
520
|
+
this.setupLCUSPAForm();
|
|
521
|
+
break;
|
|
522
|
+
case 'Zip':
|
|
523
|
+
this.setupLCUZipForm();
|
|
524
|
+
break;
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
setupOAuthForm() {
|
|
529
|
+
var _a, _b, _c, _d;
|
|
530
|
+
this.LCUType = ((_a = this.EditingApplication.LowCodeUnit) === null || _a === void 0 ? void 0 : _a.Type) || '';
|
|
531
|
+
this.ApplicationFormGroup.addControl('scopes', this.formBldr.control(((_c = (_b = this.EditingApplication.Processor) === null || _b === void 0 ? void 0 : _b.Scopes) === null || _c === void 0 ? void 0 : _c.Join(' ')) || '', [Validators.required]));
|
|
532
|
+
this.ApplicationFormGroup.addControl('tokenLookup', this.formBldr.control(((_d = this.EditingApplication.Processor) === null || _d === void 0 ? void 0 : _d.TokenLookup) || '', [Validators.required]));
|
|
533
|
+
this.ApplicationFormGroup.addControl('lcuType', this.formBldr.control(this.LCUType, [Validators.required]));
|
|
534
|
+
}
|
|
535
|
+
setupProxyForm() {
|
|
536
|
+
var _a, _b;
|
|
537
|
+
this.LCUType = ((_a = this.EditingApplication.LowCodeUnit) === null || _a === void 0 ? void 0 : _a.Type) || '';
|
|
538
|
+
this.ApplicationFormGroup.addControl('inboundPath', this.formBldr.control(((_b = this.EditingApplication.Processor) === null || _b === void 0 ? void 0 : _b.InboundPath) || '', [Validators.required]));
|
|
539
|
+
this.ApplicationFormGroup.addControl('lcuType', this.formBldr.control(this.LCUType, [Validators.required]));
|
|
540
|
+
}
|
|
541
|
+
setupProcessorTypeSubForm() {
|
|
542
|
+
this.cleanupProcessorTypeSubForm();
|
|
543
|
+
if (this.ProcessorType) {
|
|
544
|
+
switch (this.ProcessorType) {
|
|
545
|
+
case 'DFS':
|
|
546
|
+
this.setupDfsForm();
|
|
547
|
+
break;
|
|
548
|
+
case 'OAuth':
|
|
549
|
+
this.setupOAuthForm();
|
|
550
|
+
break;
|
|
551
|
+
case 'Proxy':
|
|
552
|
+
this.setupProxyForm();
|
|
553
|
+
break;
|
|
554
|
+
case 'Redirect':
|
|
555
|
+
this.setupRedirectForm();
|
|
556
|
+
break;
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
this.setupLcuTypeSubForm();
|
|
560
|
+
}
|
|
561
|
+
setupRedirectForm() {
|
|
562
|
+
var _a, _b, _c;
|
|
563
|
+
this.ApplicationFormGroup.addControl('redirect', this.formBldr.control(((_a = this.EditingApplication.Processor) === null || _a === void 0 ? void 0 : _a.Redirect) || '', [
|
|
564
|
+
Validators.required,
|
|
565
|
+
]));
|
|
566
|
+
this.ApplicationFormGroup.addControl('permanent', this.formBldr.control(((_b = this.EditingApplication.Processor) === null || _b === void 0 ? void 0 : _b.Permanent) || false, []));
|
|
567
|
+
this.ApplicationFormGroup.addControl('preserveMethod', this.formBldr.control(((_c = this.EditingApplication.Processor) === null || _c === void 0 ? void 0 : _c.PreserveMethod) || false, []));
|
|
568
|
+
this.DetermineTooltipText();
|
|
569
|
+
}
|
|
570
|
+
setupSecurityForm() {
|
|
571
|
+
var _a, _b;
|
|
572
|
+
this.ApplicationFormGroup.addControl('isPrivate', this.formBldr.control(((_a = this.EditingApplication.LookupConfig) === null || _a === void 0 ? void 0 : _a.IsPrivate) || false, [Validators.required]));
|
|
573
|
+
this.ApplicationFormGroup.addControl('isTriggerSignIn', this.formBldr.control(((_b = this.EditingApplication.LookupConfig) === null || _b === void 0 ? void 0 : _b.IsTriggerSignIn) || false, [Validators.required]));
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
AppsFlowComponent.decorators = [
|
|
577
|
+
{ type: Component, args: [{
|
|
578
|
+
selector: 'lcu-apps-flow',
|
|
579
|
+
template: "<div>\n <div *ngIf=\"EditingApplication?.Application\">\n <h2>\n <button\n mat-icon-button\n matTooltip=\"Back to Routes\"\n (click)=\"SetEditingApplication(null)\"\n >\n <mat-icon>arrow_back</mat-icon>\n </button>\n\n {{ CurrentApplicationRoute }} / {{ EditingApplication.Application?.Name }}\n </h2>\n </div>\n <form\n [formGroup]=\"ApplicationFormGroup\"\n (ngSubmit)=\"SaveApplication()\"\n *ngIf=\"EditingApplication\"\n >\n\n <div\n fxLayout=\"row wrap\"\n fxLayoutAlign=\"center start\"\n fxLayout.lt-md=\"column\"\n >\n <div class=\"form-card\" fxFlex=\"70%\" fxFlex.lt-md=\"100%\">\n <mat-card class=\"spread flow-card\">\n <mat-card-header>\n <mat-card-title>\n <ng-container *ngIf=\"EditingApplication?.Application\">\n Edit Application:\n {{ EditingApplication.Application?.Name }}\n </ng-container>\n\n <ng-container *ngIf=\"!EditingApplication?.Application\">\n Create an Application\n </ng-container>\n </mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Name\"\n formControlName=\"name\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <textarea\n matInput\n placeholder=\"Description\"\n formControlName=\"description\"\n rows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Route\"\n formControlName=\"route\"\n required\n />\n </mat-form-field>\n </mat-card-content>\n </mat-card>\n </div>\n\n <div class=\"form-card\" fxFlex=\"35%\">\n <mat-card class=\"spread flow-card\">\n <mat-card-header>\n <mat-card-title> Processor Details </mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"procType\"\n (selectionChange)=\"ProcessorTypeChanged($event)\"\n required\n >\n <mat-option value=\"DFS\">View Package</mat-option>\n\n <mat-option value=\"Redirect\">Redirect</mat-option>\n\n <mat-option value=\"Proxy\">Proxy</mat-option>\n\n <mat-option value=\"OAuth\">OAuth</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"ProcessorType\">\n <div *ngSwitchCase=\"'DFS'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Default File\"\n formControlName=\"defaultFile\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"NPM\">NPM</mat-option>\n\n <mat-option value=\"GitHub\">GitHub</mat-option>\n\n <!-- <mat-option value=\"Zip\">Zip</mat-option> -->\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHub'\">\n <lcu-source-control-form-controls\n [build-path]=\"EditingApplication?.LowCodeUnit?.Path\"\n [form-group]=\"ApplicationFormGroup\"\n [source-control]=\"DefaultSourceControl\"\n [use-branches]=\"false\"\n [use-build-path]=\"true\"\n ></lcu-source-control-form-controls>\n\n <mat-form-field\n class=\"mat-full-width\"\n *ngIf=\"\n SourceControlFormControls?.RepositoryFormControl?.valid\n \"\n >\n <input\n matInput\n placeholder=\"Build\"\n formControlName=\"build\"\n required\n />\n\n <mat-hint>\n Current Build:\n {{ EditingApplication?.LowCodeUnit?.CurrentBuild }}\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'NPM'\">\n <lcu-npm-package-select\n [npm-package]=\"EditingApplication?.LowCodeUnit?.Package\"\n [npm-package-version]=\"\n EditingApplication?.LowCodeUnit?.Version\n \"\n [form-group]=\"ApplicationFormGroup\"\n ></lcu-npm-package-select>\n\n <mat-hint>\n Current Version:\n {{ EditingApplication?.LowCodeUnit?.CurrentVersion }}\n </mat-hint>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'OAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Scopes (space separated)\"\n formControlName=\"scopes\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Token Lookup\"\n formControlName=\"tokenLookup\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"GitHubOAuth\">GitHub</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHubOAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client ID\"\n formControlName=\"clientId\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client Secret\"\n formControlName=\"clientSecret\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Proxy'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Inbound Path\"\n formControlName=\"inboundPath\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"API\">API</mat-option>\n\n <mat-option value=\"SPA\">Single Page Application</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'API'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"API Root\"\n formControlName=\"apiRoot\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Allowed Methods (separate with spaces)\"\n formControlName=\"methods\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Security ({header}~{value})\"\n formControlName=\"security\"\n required\n />\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'SPA'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"SPA Root\"\n formControlName=\"spaRoot\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Redirect'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Redirect URL\"\n formControlName=\"redirect\"\n required\n />\n </mat-form-field>\n\n <div>\n <mat-slide-toggle \n class=\"spread\" \n formControlName=\"permanent\">\n Is Permanent?\n </mat-slide-toggle>\n\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"preserveMethod\"\n >\n Preserve Method?\n </mat-slide-toggle>\n\n <mat-icon\n class=\"spread\"\n matSuffix\n (mouseenter)=\"DetermineTooltipText()\"\n matTooltip={{redirectTooltip}}\n >\n info_outline\n </mat-icon>\n\n <!-- <mat-icon\n *ngIf=\"!IsPermanent && !IsPreserve\"\n\n class=\"spread\"\n matSuffix\n matTooltip=\"302 \u2013 Not Permanent and Not Preserve\"\n >\n info_outline\n </mat-icon> -->\n\n <!-- <mat-icon\n *ngIf=\"!IsPermanent && IsPreserve\"\n class=\"spread\"\n matSuffix\n matTooltip=\"307 \u2013 Not Permanent and Preserve\"\n >\n info_outline\n </mat-icon> -->\n\n <!-- <mat-icon\n *ngIf=\"IsPermanent && IsPreserve\"\n class=\"spread\"\n matSuffix\n matTooltip=\"308 \u2013 Permanent and Preserve\"\n >\n info_outline\n </mat-icon> -->\n\n \n\n <!-- <mat-icon\n class=\"spread\"\n matSuffix\n matTooltip=\"Values used to control the redirect type. Permanent and Not Preserve = 301; Not Permanent and Not Preserve = 302; Permanent and Preserve = 308; Not Permanent and Not Preserve = 307;\"\n >\n info_outline\n </mat-icon> -->\n </div>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n\n <div class=\"form-card\" fxFlex=\"35%\">\n <mat-card class=\"spread flow-card\">\n <mat-card-header>\n <mat-card-title> Security Settings </mat-card-title>\n\n <div fxFlex></div>\n\n <mat-slide-toggle\n formControlName=\"isPrivate\"\n matTooltip=\"Is Secure Application?\"\n >\n </mat-slide-toggle>\n\n <mat-icon\n matSuffix\n matTooltip=\"A Secured Application is one that requires the user to be authenticated to use the application. The application is hosted behind an identity wall.\"\n >\n info_outline\n </mat-icon>\n </mat-card-header>\n\n <mat-card-content>\n <div>\n <div *ngIf=\"IsPrivateFormControl.value\">\n <div>\n <mat-slide-toggle formControlName=\"isTriggerSignIn\">\n Is Trigger Sign In Application?\n </mat-slide-toggle>\n\n <mat-icon\n matSuffix\n matTooltip=\"A Trigger Sign In Application will direct the user to sign in if they are not already.\"\n >\n info_outline\n </mat-icon>\n </div>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <mat-card class=\"spread flow-card\" *ngIf=\"ProcessorType != 'Redirect'\">\n <mat-card-header>\n <mat-card-title *ngIf=\"!HasBuildFormControl.value\">\n Build & Source\n </mat-card-title>\n\n <mat-card-title *ngIf=\"HasBuildFormControl.value\">\n Source Control\n </mat-card-title>\n\n <div fxFlex></div>\n\n <mat-slide-toggle\n formControlName=\"hasBuild\"\n matTooltip=\"Has Build?\"\n >\n </mat-slide-toggle>\n\n <mat-icon\n matSuffix\n matTooltip=\"Configure source control, DevOps CI/CD, and artifacts.\"\n >\n info_outline\n </mat-icon>\n </mat-card-header>\n\n <mat-card-content>\n <mat-form-field\n class=\"mat-full-width\"\n *ngIf=\"\n HasBuildFormControl.value && SourceControlLookups?.length > 0\n \"\n >\n <mat-select\n formControlName=\"sourceControlLookup\"\n placeholder=\"Source Control\"\n (selectionChange)=\"SourceControlLookupChanged($event)\"\n [disabled]=\"\n SourceControlFormControls?.Loading || HostingDetails?.Loading\n \"\n >\n <ng-container\n *ngFor=\"let srcCtrlLookup of SourceControlLookups\"\n >\n <mat-option\n [value]=\"srcCtrlLookup\"\n *ngIf=\"SourceControls[srcCtrlLookup]; let srcCtrl\"\n >\n {{ srcCtrl.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <div *ngIf=\"HasBuildFormControl?.value\">\n <h3>\n @{{\n SourceControlFormControls?.OrganizationFormControl?.value ||\n SourceControl?.Organization\n }}/{{\n SourceControlFormControls?.RepositoryFormControl?.value ||\n SourceControl?.Repository\n }}\n </h3>\n\n <p>Organization and Repository pulled from build settings</p>\n\n <mat-hint>\n CurrentBuild:\n {{ EditingApplication?.LowCodeUnit?.CurrentBuild }}\n </mat-hint>\n </div>\n </mat-form-field>\n\n <div *ngIf=\"SourceControlLookups?.length < 0\">\n <h3>\n Create source control locations under the DevOps tab above.\n </h3>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n </div>\n\n <div class=\"spread\">\n <div fxFlex></div>\n\n <button mat-button type=\"button\" (click)=\"SetEditingApplication(null)\">\n <mat-icon>cancel</mat-icon> Cancel\n </button>\n\n <div fxFlex></div>\n\n <button\n mat-raised-button\n type=\"submit\"\n color=\"primary\"\n [disabled]=\"!ApplicationFormGroup.valid || !ApplicationFormGroup.dirty\"\n >\n <mat-icon>save</mat-icon> Save Application\n </button>\n\n <div fxFlex></div>\n </div>\n </form>\n\n <div class=\"spread\" *ngIf=\"!EditingApplication\">\n <span class=\"apps-actions\">\n <button mat-raised-button color=\"accent\" (click)=\"CreateNewApplication()\">\n <mat-icon color=\"primary\">add</mat-icon> Create New\n </button>\n </span>\n\n <div class=\"spread\" *ngIf=\"!CurrentApplicationRoute\">\n <div *ngIf=\"ApplicationRoutes?.length <= 0\">\n <h2>No applications created, create your first application.</h2>\n </div>\n\n <div *ngIf=\"ApplicationRoutes?.length > 0\">\n <h2>Project Routes</h2>\n\n <div\n fxLayout=\"row wrap\"\n fxLayout.lt-md=\"column\"\n *ngIf=\"ApplicationRoutes\"\n >\n <div\n fxFlex=\"20%\"\n fxFlex.lt-md=\"100%\"\n *ngFor=\"let appRoute of ApplicationRoutes\"\n >\n <mat-card class=\"spread flow-card\">\n <mat-card-header>\n <!-- <img mat-card-avatar=\"/assets/images/project-icon.png\" /> -->\n\n <mat-card-title\n class=\"mat-subheading-2\"\n [matTooltip]=\"appRoute\"\n >\n {{ appRoute }}\n </mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <div class=\"spread\"></div>\n </mat-card-content>\n\n <mat-card-actions>\n <div class=\"data-app-actions\">\n <div fxFlex></div>\n\n <a\n mat-icon-button\n href=\"https://{{ PrimaryHost }}{{ appRoute }}\"\n target=\"_blank\"\n >\n <mat-icon matTooltip=\"Launch\">launch</mat-icon>\n </a>\n\n <button\n mat-icon-button\n color=\"accent\"\n (click)=\"EditApplicationRouteClicked(appRoute)\"\n >\n <mat-icon matTooltip=\"Edit Application Route\">\n settings\n </mat-icon>\n </button>\n </div>\n\n <div class=\"data-app-fakes\">\n <div fxFlex></div>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n </div>\n </mat-card-actions>\n </mat-card>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"CurrentApplicationRoute\">\n <h2>\n <button\n mat-icon-button\n matTooltip=\"Back to Routes\"\n (click)=\"CurrentApplicationRoute = null\"\n >\n <mat-icon>arrow_back</mat-icon>\n </button>\n\n {{ CurrentApplicationRoute }} Routes\n </h2>\n\n <div fxLayout=\"row wrap\" fxLayout.lt-md=\"column\">\n <ng-container *ngFor=\"let appLookup of CurrentRouteApplicationLookups\">\n <div\n fxFlex=\"30%\"\n fxFlex.lt-md=\"100%\"\n *ngIf=\"\n RoutedApplications[CurrentApplicationRoute][appLookup];\n let app\n \"\n >\n <mat-card class=\"spread flow-card\">\n <mat-card-header>\n <!-- <img mat-card-avatar=\"/assets/images/project-icon.png\" /> -->\n\n <mat-card-title\n class=\"mat-subheading-2\"\n [matTooltip]=\"app.Application.Description\"\n >\n {{ app.Application.Name }}\n </mat-card-title>\n\n <mat-card-subtitle\n class=\"mat-subheading-1\"\n [matTooltip]=\"\n app.LowCodeUnit?.CurrentVersion ||\n app.LowCodeUnit?.CurrentBuild\n \"\n >\n @{{\n app.LowCodeUnit?.CurrentVersion ||\n app.LowCodeUnit?.CurrentBuild ||\n app.Processor?.Redirect ||\n \"No version deployed\"\n }}\n </mat-card-subtitle>\n </mat-card-header>\n\n <mat-card-content>\n <div class=\"spread\"></div>\n </mat-card-content>\n\n <mat-card-actions>\n <div class=\"data-app-actions\">\n <div fxFlex></div>\n\n <a\n mat-icon-button\n href=\"https://{{ PrimaryHost }}{{\n app.LookupConfig.PathRegex.replace('.*', '')\n }}\"\n target=\"_blank\"\n >\n <mat-icon matTooltip=\"Launch\">launch</mat-icon>\n </a>\n\n <a\n *ngIf=\"GetProcessorType(appLookup) === 'DFS'\"\n mat-icon-button\n (click)=\"Unpack(appLookup, app)\"\n target=\"_blank\"\n matTooltip=\"Unpack {{\n app.LowCodeUnit?.Version || app.LowCodeUnit?.Build\n }}\"\n >\n <mat-icon>cloud_upload</mat-icon>\n </a>\n\n <button\n mat-icon-button\n (click)=\"SetEditingApplication(appLookup)\"\n >\n <mat-icon matTooltip=\"Edit Application\"> edit </mat-icon>\n </button>\n\n <button\n mat-icon-button\n color=\"warn\"\n (click)=\"DeleteApplication(appLookup, app.Application.Name)\"\n >\n <mat-icon matTooltip=\"Delete {{ app.Application.Name }}\">\n delete_forever\n </mat-icon>\n </button>\n </div>\n\n <div class=\"data-app-fakes\">\n <div fxFlex></div>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n\n <button mat-icon-button disabled \n *ngIf=\"GetProcessorType(appLookup) === 'DFS'\">\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n </div>\n </mat-card-actions>\n </mat-card>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n",
|
|
580
|
+
styles: ["@import url(\"https://fonts.googleapis.com/icon?family=Material+Icons\");@import url(\"https://fonts.googleapis.com/css?family=Encode+Sans+Condensed:400,900&display=swap\");@import url(\"https://fonts.googleapis.com/css?family=Open+Sans:300,400,700&display=swap\");.disable-autofill-background-default input:-webkit-autofill,.disable-autofill-background-default input:-webkit-autofill:focus,.disable-autofill-background-default input:-webkit-autofill:hover,.disable-autofill-background-default select:-webkit-autofill,.disable-autofill-background-default select:-webkit-autofill:focus,.disable-autofill-background-default select:-webkit-autofill:hover,.disable-autofill-background-default textarea:-webkit-autofill,.disable-autofill-background-default textarea:-webkit-autofill:focus,.disable-autofill-background-default textarea:-webkit-autofill:hover{-webkit-transition:background-color 5000s!important;transition:background-color 5000s!important}.list-item-disabled{cursor:not-allowed!important;filter:alpha(opacity=50);opacity:.5}.filler{display:inline-block!important;flex:1 1 auto}.sticky{position:-webkit-sticky;position:sticky;top:0;z-index:750}.inline{display:inline-block}.contents,.page-element{display:contents}.mat-spinner{margin:auto}.mat-full-width{width:100%}.spread{margin:2rem}.spread-thin{margin:1rem}.overlay{position:-webkit-sticky!important;position:sticky!important}.overlay.top{top:0}.overlay.bottom{bottom:0}.margin-0{margin:0!important}.margin-top-0,.margin-y-0{margin-top:0!important}.margin-right-0,.margin-x-0{margin-right:0!important}.margin-bottom-0,.margin-y-0{margin-bottom:0!important}.margin-left-0,.margin-x-0{margin-left:0!important}.margin-1{margin:.25rem!important}.margin-top-1,.margin-y-1{margin-top:.25rem!important}.margin-right-1,.margin-x-1{margin-right:.25rem!important}.margin-bottom-1,.margin-y-1{margin-bottom:.25rem!important}.margin-left-1,.margin-x-1{margin-left:.25rem!important}.margin-2{margin:.5rem!important}.margin-top-2,.margin-y-2{margin-top:.5rem!important}.margin-right-2,.margin-x-2{margin-right:.5rem!important}.margin-bottom-2,.margin-y-2{margin-bottom:.5rem!important}.margin-left-2,.margin-x-2{margin-left:.5rem!important}.margin-3{margin:1rem!important}.margin-top-3,.margin-y-3{margin-top:1rem!important}.margin-top-bottom-3{margin:1rem 0!important}.margin-right-3,.margin-x-3{margin-right:1rem!important}.margin-bottom-3,.margin-y-3{margin-bottom:1rem!important}.margin-left-3,.margin-x-3{margin-left:1rem!important}.margin-4{margin:2rem!important}.margin-top-4,.margin-y-4{margin-top:2rem!important}.margin-right-4,.margin-x-4{margin-right:2rem!important}.margin-bottom-4,.margin-y-4{margin-bottom:2rem!important}.margin-left-4,.margin-x-4{margin-left:2rem!important}.margin-right-5,.margin-x-5{margin-right:4rem!important}.margin-bottom-5,.margin-y-5{margin-bottom:4rem!important}.margin-left-5,.margin-x-5{margin-left:4rem!important}.margin-5{margin:4rem!important}.margin-top-5,.margin-y-5{margin-top:4rem!important}.margin-right-6,.margin-x-6{margin-right:4.5rem!important}.margin-bottom-6,.margin-y-6{margin-bottom:4.5rem!important}.margin-left-6,.margin-x-6{margin-left:4.5rem!important}.margin-7{margin:6rem!important}.margin-top-7,.margin-y-7{margin-top:6rem!important}.margin-right-7,.margin-x-7{margin-right:6rem!important}.margin-bottom-7,.margin-y-7{margin-bottom:6rem!important}.margin-left-7,.margin-x-7{margin-left:6rem!important}.margin-8{margin:7.5rem!important}.margin-top-8,.margin-y-8{margin-top:7.5rem!important}.margin-right-8,.margin-x-8{margin-right:7.5rem!important}.margin-bottom-8,.margin-y-8{margin-bottom:7.5rem!important}.margin-left-8,.margin-x-8{margin-left:7.5rem!important}.margin-9{margin:9rem!important}.margin-top-9,.margin-y-9{margin-top:9rem!important}.margin-right-9,.margin-x-9{margin-right:9rem!important}.margin-bottom-9,.margin-y-9{margin-bottom:9rem!important}.margin-left-9,.margin-x-9{margin-left:9rem!important}.padding-0{padding:0!important}.padding-top-0,.padding-y-0{padding-top:0!important}.padding-right-0,.padding-x-0{padding-right:0!important}.padding-bottom-0,.padding-y-0{padding-bottom:0!important}.padding-left-0,.padding-x-0{padding-left:0!important}.padding-1{padding:.25rem!important}.padding-top-1,.padding-y-1{padding-top:.25rem!important}.padding-right-1,.padding-x-1{padding-right:.25rem!important}.padding-bottom-1,.padding-y-1{padding-bottom:.25rem!important}.padding-left-1,.padding-x-1{padding-left:.25rem!important}.padding-2{padding:.5rem!important}.padding-top-2,.padding-y-2{padding-top:.5rem!important}.padding-right-2,.padding-x-2{padding-right:.5rem!important}.padding-bottom-2,.padding-y-2{padding-bottom:.5rem!important}.padding-left-2,.padding-x-2{padding-left:.5rem!important}.padding-3{padding:1rem!important}.padding-top-3,.padding-y-3{padding-top:1rem!important}.padding-right-3,.padding-x-3{padding-right:1rem!important}.padding-bottom-3,.padding-y-3{padding-bottom:1rem!important}.padding-left-3,.padding-x-3{padding-left:1rem!important}.padding-4{padding:2rem!important}.padding-top-4,.padding-y-4{padding-top:2rem!important}.padding-right-4,.padding-x-4{padding-right:2rem!important}.padding-bottom-4,.padding-y-4{padding-bottom:2rem!important}.padding-left-4,.padding-x-4{padding-left:2rem!important}.padding-5{padding:4rem!important}.padding-top-5,.padding-y-5{padding-top:4rem!important}.padding-right-5,.padding-x-5{padding-right:4rem!important}.padding-bottom-5,.padding-y-5{padding-bottom:4rem!important}.padding-left-5,.padding-x-5{padding-left:4rem!important}.margin-n1{margin:-.25rem!important}.margin-top-n1,.margin-y-n1{margin-top:-.25rem!important}.margin-right-n1,.margin-x-n1{margin-right:-.25rem!important}.margin-bottom-n1,.margin-y-n1{margin-bottom:-.25rem!important}.margin-left-n1,.margin-x-n1{margin-left:-.25rem!important}.margin-n2{margin:-.5rem!important}.margin-top-n2,.margin-y-n2{margin-top:-.5rem!important}.margin-right-n2,.margin-x-n2{margin-right:-.5rem!important}.margin-bottom-n2,.margin-y-n2{margin-bottom:-.5rem!important}.margin-left-n2,.margin-x-n2{margin-left:-.5rem!important}.margin-n3{margin:-1rem!important}.margin-top-n3,.margin-y-n3{margin-top:-1rem!important}.margin-right-n3,.margin-x-n3{margin-right:-1rem!important}.margin-bottom-n3,.margin-y-n3{margin-bottom:-1rem!important}.margin-left-n3,.margin-x-n3{margin-left:-1rem!important}.margin-n4{margin:-2rem!important}.margin-top-n4,.margin-y-n4{margin-top:-2rem!important}.margin-right-n4,.margin-x-n4{margin-right:-2rem!important}.margin-bottom-n4,.margin-y-n4{margin-bottom:-2rem!important}.margin-left-n4,.margin-x-n4{margin-left:-2rem!important}.margin-n5{margin:-4rem!important}.margin-top-n5,.margin-y-n5{margin-top:-4rem!important}.margin-right-n5,.margin-x-n5{margin-right:-4rem!important}.margin-bottom-n5,.margin-y-n5{margin-bottom:-4rem!important}.margin-left-n5,.margin-x-n5{margin-left:-4rem!important}.margin-auto{margin:auto!important}.margin-top-auto,.margin-y-auto{margin-top:auto!important}.margin-right-auto,.margin-x-auto{margin-right:auto!important}.margin-bottom-auto,.margin-y-auto{margin-bottom:auto!important}.margin-left-auto,.margin-x-auto{margin-left:auto!important}@media (min-width:576px){.margin-sm-0{margin:0!important}.margin-top-sm-0,.margin-y-sm-0{margin-top:0!important}.margin-right-sm-0,.margin-x-sm-0{margin-right:0!important}.margin-bottom-sm-0,.margin-y-sm-0{margin-bottom:0!important}.margin-left-sm-0,.margin-x-sm-0{margin-left:0!important}.margin-sm-1{margin:.25rem!important}.margin-top-sm-1,.margin-y-sm-1{margin-top:.25rem!important}.margin-right-sm-1,.margin-x-sm-1{margin-right:.25rem!important}.margin-bottom-sm-1,.margin-y-sm-1{margin-bottom:.25rem!important}.margin-left-sm-1,.margin-x-sm-1{margin-left:.25rem!important}.margin-sm-2{margin:.5rem!important}.margin-top-sm-2,.margin-y-sm-2{margin-top:.5rem!important}.margin-right-sm-2,.margin-x-sm-2{margin-right:.5rem!important}.margin-bottom-sm-2,.margin-y-sm-2{margin-bottom:.5rem!important}.margin-left-sm-2,.margin-x-sm-2{margin-left:.5rem!important}.margin-sm-3{margin:1rem!important}.margin-top-sm-3,.margin-y-sm-3{margin-top:1rem!important}.margin-right-sm-3,.margin-x-sm-3{margin-right:1rem!important}.margin-bottom-sm-3,.margin-y-sm-3{margin-bottom:1rem!important}.margin-left-sm-3,.margin-x-sm-3{margin-left:1rem!important}.margin-sm-4{margin:2rem!important}.margin-top-sm-4,.margin-y-sm-4{margin-top:2rem!important}.margin-right-sm-4,.margin-x-sm-4{margin-right:2rem!important}.margin-bottom-sm-4,.margin-y-sm-4{margin-bottom:2rem!important}.margin-left-sm-4,.margin-x-sm-4{margin-left:2rem!important}.margin-sm-5{margin:4rem!important}.margin-top-sm-5,.margin-y-sm-5{margin-top:4rem!important}.margin-right-sm-5,.margin-x-sm-5{margin-right:4rem!important}.margin-bottom-sm-5,.margin-y-sm-5{margin-bottom:4rem!important}.margin-left-sm-5,.margin-x-sm-5{margin-left:4rem!important}.padding-sm-0{padding:0!important}.padding-top-sm-0,.padding-y-sm-0{padding-top:0!important}.padding-right-sm-0,.padding-x-sm-0{padding-right:0!important}.padding-bottom-sm-0,.padding-y-sm-0{padding-bottom:0!important}.padding-left-sm-0,.padding-x-sm-0{padding-left:0!important}.padding-sm-1{padding:.25rem!important}.padding-top-sm-1,.padding-y-sm-1{padding-top:.25rem!important}.padding-right-sm-1,.padding-x-sm-1{padding-right:.25rem!important}.padding-bottom-sm-1,.padding-y-sm-1{padding-bottom:.25rem!important}.padding-left-sm-1,.padding-x-sm-1{padding-left:.25rem!important}.padding-sm-2{padding:.5rem!important}.padding-top-sm-2,.padding-y-sm-2{padding-top:.5rem!important}.padding-right-sm-2,.padding-x-sm-2{padding-right:.5rem!important}.padding-bottom-sm-2,.padding-y-sm-2{padding-bottom:.5rem!important}.padding-left-sm-2,.padding-x-sm-2{padding-left:.5rem!important}.padding-sm-3{padding:1rem!important}.padding-top-sm-3,.padding-y-sm-3{padding-top:1rem!important}.padding-right-sm-3,.padding-x-sm-3{padding-right:1rem!important}.padding-bottom-sm-3,.padding-y-sm-3{padding-bottom:1rem!important}.padding-left-sm-3,.padding-x-sm-3{padding-left:1rem!important}.padding-sm-4{padding:2rem!important}.padding-top-sm-4,.padding-y-sm-4{padding-top:2rem!important}.padding-right-sm-4,.padding-x-sm-4{padding-right:2rem!important}.padding-bottom-sm-4,.padding-y-sm-4{padding-bottom:2rem!important}.padding-left-sm-4,.padding-x-sm-4{padding-left:2rem!important}.padding-sm-5{padding:4rem!important}.padding-top-sm-5,.padding-y-sm-5{padding-top:4rem!important}.padding-right-sm-5,.padding-x-sm-5{padding-right:4rem!important}.padding-bottom-sm-5,.padding-y-sm-5{padding-bottom:4rem!important}.padding-left-sm-5,.padding-x-sm-5{padding-left:4rem!important}.margin-sm-n1{margin:-.25rem!important}.margin-top-sm-n1,.margin-y-sm-n1{margin-top:-.25rem!important}.margin-right-sm-n1,.margin-x-sm-n1{margin-right:-.25rem!important}.margin-bottom-sm-n1,.margin-y-sm-n1{margin-bottom:-.25rem!important}.margin-left-sm-n1,.margin-x-sm-n1{margin-left:-.25rem!important}.margin-sm-n2{margin:-.5rem!important}.margin-top-sm-n2,.margin-y-sm-n2{margin-top:-.5rem!important}.margin-right-sm-n2,.margin-x-sm-n2{margin-right:-.5rem!important}.margin-bottom-sm-n2,.margin-y-sm-n2{margin-bottom:-.5rem!important}.margin-left-sm-n2,.margin-x-sm-n2{margin-left:-.5rem!important}.margin-sm-n3{margin:-1rem!important}.margin-top-sm-n3,.margin-y-sm-n3{margin-top:-1rem!important}.margin-right-sm-n3,.margin-x-sm-n3{margin-right:-1rem!important}.margin-bottom-sm-n3,.margin-y-sm-n3{margin-bottom:-1rem!important}.margin-left-sm-n3,.margin-x-sm-n3{margin-left:-1rem!important}.margin-sm-n4{margin:-2rem!important}.margin-top-sm-n4,.margin-y-sm-n4{margin-top:-2rem!important}.margin-right-sm-n4,.margin-x-sm-n4{margin-right:-2rem!important}.margin-bottom-sm-n4,.margin-y-sm-n4{margin-bottom:-2rem!important}.margin-left-sm-n4,.margin-x-sm-n4{margin-left:-2rem!important}.margin-sm-n5{margin:-4rem!important}.margin-top-sm-n5,.margin-y-sm-n5{margin-top:-4rem!important}.margin-right-sm-n5,.margin-x-sm-n5{margin-right:-4rem!important}.margin-bottom-sm-n5,.margin-y-sm-n5{margin-bottom:-4rem!important}.margin-left-sm-n5,.margin-x-sm-n5{margin-left:-4rem!important}.margin-sm-auto{margin:auto!important}.margin-top-sm-auto,.margin-y-sm-auto{margin-top:auto!important}.margin-right-sm-auto,.margin-x-sm-auto{margin-right:auto!important}.margin-bottom-sm-auto,.margin-y-sm-auto{margin-bottom:auto!important}.margin-left-sm-auto,.margin-x-sm-auto{margin-left:auto!important}}@media (min-width:768px){.margin-md-0{margin:0!important}.margin-top-md-0,.margin-y-md-0{margin-top:0!important}.margin-right-md-0,.margin-x-md-0{margin-right:0!important}.margin-bottom-md-0,.margin-y-md-0{margin-bottom:0!important}.margin-left-md-0,.margin-x-md-0{margin-left:0!important}.margin-md-1{margin:.25rem!important}.margin-top-md-1,.margin-y-md-1{margin-top:.25rem!important}.margin-right-md-1,.margin-x-md-1{margin-right:.25rem!important}.margin-bottom-md-1,.margin-y-md-1{margin-bottom:.25rem!important}.margin-left-md-1,.margin-x-md-1{margin-left:.25rem!important}.margin-md-2{margin:.5rem!important}.margin-top-md-2,.margin-y-md-2{margin-top:.5rem!important}.margin-right-md-2,.margin-x-md-2{margin-right:.5rem!important}.margin-bottom-md-2,.margin-y-md-2{margin-bottom:.5rem!important}.margin-left-md-2,.margin-x-md-2{margin-left:.5rem!important}.margin-md-3{margin:1rem!important}.margin-top-md-3,.margin-y-md-3{margin-top:1rem!important}.margin-right-md-3,.margin-x-md-3{margin-right:1rem!important}.margin-bottom-md-3,.margin-y-md-3{margin-bottom:1rem!important}.margin-left-md-3,.margin-x-md-3{margin-left:1rem!important}.margin-md-4{margin:2rem!important}.margin-top-md-4,.margin-y-md-4{margin-top:2rem!important}.margin-right-md-4,.margin-x-md-4{margin-right:2rem!important}.margin-bottom-md-4,.margin-y-md-4{margin-bottom:2rem!important}.margin-left-md-4,.margin-x-md-4{margin-left:2rem!important}.margin-md-5{margin:4rem!important}.margin-top-md-5,.margin-y-md-5{margin-top:4rem!important}.margin-right-md-5,.margin-x-md-5{margin-right:4rem!important}.margin-bottom-md-5,.margin-y-md-5{margin-bottom:4rem!important}.margin-left-md-5,.margin-x-md-5{margin-left:4rem!important}.padding-md-0{padding:0!important}.padding-top-md-0,.padding-y-md-0{padding-top:0!important}.padding-right-md-0,.padding-x-md-0{padding-right:0!important}.padding-bottom-md-0,.padding-y-md-0{padding-bottom:0!important}.padding-left-md-0,.padding-x-md-0{padding-left:0!important}.padding-md-1{padding:.25rem!important}.padding-top-md-1,.padding-y-md-1{padding-top:.25rem!important}.padding-right-md-1,.padding-x-md-1{padding-right:.25rem!important}.padding-bottom-md-1,.padding-y-md-1{padding-bottom:.25rem!important}.padding-left-md-1,.padding-x-md-1{padding-left:.25rem!important}.padding-md-2{padding:.5rem!important}.padding-top-md-2,.padding-y-md-2{padding-top:.5rem!important}.padding-right-md-2,.padding-x-md-2{padding-right:.5rem!important}.padding-bottom-md-2,.padding-y-md-2{padding-bottom:.5rem!important}.padding-left-md-2,.padding-x-md-2{padding-left:.5rem!important}.padding-md-3{padding:1rem!important}.padding-top-md-3,.padding-y-md-3{padding-top:1rem!important}.padding-right-md-3,.padding-x-md-3{padding-right:1rem!important}.padding-bottom-md-3,.padding-y-md-3{padding-bottom:1rem!important}.padding-left-md-3,.padding-x-md-3{padding-left:1rem!important}.padding-md-4{padding:2rem!important}.padding-top-md-4,.padding-y-md-4{padding-top:2rem!important}.padding-right-md-4,.padding-x-md-4{padding-right:2rem!important}.padding-bottom-md-4,.padding-y-md-4{padding-bottom:2rem!important}.padding-left-md-4,.padding-x-md-4{padding-left:2rem!important}.padding-md-5{padding:4rem!important}.padding-top-md-5,.padding-y-md-5{padding-top:4rem!important}.padding-right-md-5,.padding-x-md-5{padding-right:4rem!important}.padding-bottom-md-5,.padding-y-md-5{padding-bottom:4rem!important}.padding-left-md-5,.padding-x-md-5{padding-left:4rem!important}.margin-md-n1{margin:-.25rem!important}.margin-top-md-n1,.margin-y-md-n1{margin-top:-.25rem!important}.margin-right-md-n1,.margin-x-md-n1{margin-right:-.25rem!important}.margin-bottom-md-n1,.margin-y-md-n1{margin-bottom:-.25rem!important}.margin-left-md-n1,.margin-x-md-n1{margin-left:-.25rem!important}.margin-md-n2{margin:-.5rem!important}.margin-top-md-n2,.margin-y-md-n2{margin-top:-.5rem!important}.margin-right-md-n2,.margin-x-md-n2{margin-right:-.5rem!important}.margin-bottom-md-n2,.margin-y-md-n2{margin-bottom:-.5rem!important}.margin-left-md-n2,.margin-x-md-n2{margin-left:-.5rem!important}.margin-md-n3{margin:-1rem!important}.margin-top-md-n3,.margin-y-md-n3{margin-top:-1rem!important}.margin-right-md-n3,.margin-x-md-n3{margin-right:-1rem!important}.margin-bottom-md-n3,.margin-y-md-n3{margin-bottom:-1rem!important}.margin-left-md-n3,.margin-x-md-n3{margin-left:-1rem!important}.margin-md-n4{margin:-2rem!important}.margin-top-md-n4,.margin-y-md-n4{margin-top:-2rem!important}.margin-right-md-n4,.margin-x-md-n4{margin-right:-2rem!important}.margin-bottom-md-n4,.margin-y-md-n4{margin-bottom:-2rem!important}.margin-left-md-n4,.margin-x-md-n4{margin-left:-2rem!important}.margin-md-n5{margin:-4rem!important}.margin-top-md-n5,.margin-y-md-n5{margin-top:-4rem!important}.margin-right-md-n5,.margin-x-md-n5{margin-right:-4rem!important}.margin-bottom-md-n5,.margin-y-md-n5{margin-bottom:-4rem!important}.margin-left-md-n5,.margin-x-md-n5{margin-left:-4rem!important}.margin-md-auto{margin:auto!important}.margin-top-md-auto,.margin-y-md-auto{margin-top:auto!important}.margin-right-md-auto,.margin-x-md-auto{margin-right:auto!important}.margin-bottom-md-auto,.margin-y-md-auto{margin-bottom:auto!important}.margin-left-md-auto,.margin-x-md-auto{margin-left:auto!important}}@media (min-width:992px){.margin-lg-0{margin:0!important}.margin-top-lg-0,.margin-y-lg-0{margin-top:0!important}.margin-right-lg-0,.margin-x-lg-0{margin-right:0!important}.margin-bottom-lg-0,.margin-y-lg-0{margin-bottom:0!important}.margin-left-lg-0,.margin-x-lg-0{margin-left:0!important}.margin-lg-1{margin:.25rem!important}.margin-top-lg-1,.margin-y-lg-1{margin-top:.25rem!important}.margin-right-lg-1,.margin-x-lg-1{margin-right:.25rem!important}.margin-bottom-lg-1,.margin-y-lg-1{margin-bottom:.25rem!important}.margin-left-lg-1,.margin-x-lg-1{margin-left:.25rem!important}.margin-lg-2{margin:.5rem!important}.margin-top-lg-2,.margin-y-lg-2{margin-top:.5rem!important}.margin-right-lg-2,.margin-x-lg-2{margin-right:.5rem!important}.margin-bottom-lg-2,.margin-y-lg-2{margin-bottom:.5rem!important}.margin-left-lg-2,.margin-x-lg-2{margin-left:.5rem!important}.margin-lg-3{margin:1rem!important}.margin-top-lg-3,.margin-y-lg-3{margin-top:1rem!important}.margin-right-lg-3,.margin-x-lg-3{margin-right:1rem!important}.margin-bottom-lg-3,.margin-y-lg-3{margin-bottom:1rem!important}.margin-left-lg-3,.margin-x-lg-3{margin-left:1rem!important}.margin-lg-4{margin:2rem!important}.margin-top-lg-4,.margin-y-lg-4{margin-top:2rem!important}.margin-right-lg-4,.margin-x-lg-4{margin-right:2rem!important}.margin-bottom-lg-4,.margin-y-lg-4{margin-bottom:2rem!important}.margin-left-lg-4,.margin-x-lg-4{margin-left:2rem!important}.margin-lg-5{margin:4rem!important}.margin-top-lg-5,.margin-y-lg-5{margin-top:4rem!important}.margin-right-lg-5,.margin-x-lg-5{margin-right:4rem!important}.margin-bottom-lg-5,.margin-y-lg-5{margin-bottom:4rem!important}.margin-left-lg-5,.margin-x-lg-5{margin-left:4rem!important}.padding-lg-0{padding:0!important}.padding-top-lg-0,.padding-y-lg-0{padding-top:0!important}.padding-right-lg-0,.padding-x-lg-0{padding-right:0!important}.padding-bottom-lg-0,.padding-y-lg-0{padding-bottom:0!important}.padding-left-lg-0,.padding-x-lg-0{padding-left:0!important}.padding-lg-1{padding:.25rem!important}.padding-top-lg-1,.padding-y-lg-1{padding-top:.25rem!important}.padding-right-lg-1,.padding-x-lg-1{padding-right:.25rem!important}.padding-bottom-lg-1,.padding-y-lg-1{padding-bottom:.25rem!important}.padding-left-lg-1,.padding-x-lg-1{padding-left:.25rem!important}.padding-lg-2{padding:.5rem!important}.padding-top-lg-2,.padding-y-lg-2{padding-top:.5rem!important}.padding-right-lg-2,.padding-x-lg-2{padding-right:.5rem!important}.padding-bottom-lg-2,.padding-y-lg-2{padding-bottom:.5rem!important}.padding-left-lg-2,.padding-x-lg-2{padding-left:.5rem!important}.padding-lg-3{padding:1rem!important}.padding-top-lg-3,.padding-y-lg-3{padding-top:1rem!important}.padding-right-lg-3,.padding-x-lg-3{padding-right:1rem!important}.padding-bottom-lg-3,.padding-y-lg-3{padding-bottom:1rem!important}.padding-left-lg-3,.padding-x-lg-3{padding-left:1rem!important}.padding-lg-4{padding:2rem!important}.padding-top-lg-4,.padding-y-lg-4{padding-top:2rem!important}.padding-right-lg-4,.padding-x-lg-4{padding-right:2rem!important}.padding-bottom-lg-4,.padding-y-lg-4{padding-bottom:2rem!important}.padding-left-lg-4,.padding-x-lg-4{padding-left:2rem!important}.padding-lg-5{padding:4rem!important}.padding-top-lg-5,.padding-y-lg-5{padding-top:4rem!important}.padding-right-lg-5,.padding-x-lg-5{padding-right:4rem!important}.padding-bottom-lg-5,.padding-y-lg-5{padding-bottom:4rem!important}.padding-left-lg-5,.padding-x-lg-5{padding-left:4rem!important}.margin-lg-n1{margin:-.25rem!important}.margin-top-lg-n1,.margin-y-lg-n1{margin-top:-.25rem!important}.margin-right-lg-n1,.margin-x-lg-n1{margin-right:-.25rem!important}.margin-bottom-lg-n1,.margin-y-lg-n1{margin-bottom:-.25rem!important}.margin-left-lg-n1,.margin-x-lg-n1{margin-left:-.25rem!important}.margin-lg-n2{margin:-.5rem!important}.margin-top-lg-n2,.margin-y-lg-n2{margin-top:-.5rem!important}.margin-right-lg-n2,.margin-x-lg-n2{margin-right:-.5rem!important}.margin-bottom-lg-n2,.margin-y-lg-n2{margin-bottom:-.5rem!important}.margin-left-lg-n2,.margin-x-lg-n2{margin-left:-.5rem!important}.margin-lg-n3{margin:-1rem!important}.margin-top-lg-n3,.margin-y-lg-n3{margin-top:-1rem!important}.margin-right-lg-n3,.margin-x-lg-n3{margin-right:-1rem!important}.margin-bottom-lg-n3,.margin-y-lg-n3{margin-bottom:-1rem!important}.margin-left-lg-n3,.margin-x-lg-n3{margin-left:-1rem!important}.margin-lg-n4{margin:-2rem!important}.margin-top-lg-n4,.margin-y-lg-n4{margin-top:-2rem!important}.margin-right-lg-n4,.margin-x-lg-n4{margin-right:-2rem!important}.margin-bottom-lg-n4,.margin-y-lg-n4{margin-bottom:-2rem!important}.margin-left-lg-n4,.margin-x-lg-n4{margin-left:-2rem!important}.margin-lg-n5{margin:-4rem!important}.margin-top-lg-n5,.margin-y-lg-n5{margin-top:-4rem!important}.margin-right-lg-n5,.margin-x-lg-n5{margin-right:-4rem!important}.margin-bottom-lg-n5,.margin-y-lg-n5{margin-bottom:-4rem!important}.margin-left-lg-n5,.margin-x-lg-n5{margin-left:-4rem!important}.margin-lg-auto{margin:auto!important}.margin-top-lg-auto,.margin-y-lg-auto{margin-top:auto!important}.margin-right-lg-auto,.margin-x-lg-auto{margin-right:auto!important}.margin-bottom-lg-auto,.margin-y-lg-auto{margin-bottom:auto!important}.margin-left-lg-auto,.margin-x-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.margin-xl-0{margin:0!important}.margin-top-xl-0,.margin-y-xl-0{margin-top:0!important}.margin-right-xl-0,.margin-x-xl-0{margin-right:0!important}.margin-bottom-xl-0,.margin-y-xl-0{margin-bottom:0!important}.margin-left-xl-0,.margin-x-xl-0{margin-left:0!important}.margin-xl-1{margin:.25rem!important}.margin-top-xl-1,.margin-y-xl-1{margin-top:.25rem!important}.margin-right-xl-1,.margin-x-xl-1{margin-right:.25rem!important}.margin-bottom-xl-1,.margin-y-xl-1{margin-bottom:.25rem!important}.margin-left-xl-1,.margin-x-xl-1{margin-left:.25rem!important}.margin-xl-2{margin:.5rem!important}.margin-top-xl-2,.margin-y-xl-2{margin-top:.5rem!important}.margin-right-xl-2,.margin-x-xl-2{margin-right:.5rem!important}.margin-bottom-xl-2,.margin-y-xl-2{margin-bottom:.5rem!important}.margin-left-xl-2,.margin-x-xl-2{margin-left:.5rem!important}.margin-xl-3{margin:1rem!important}.margin-top-xl-3,.margin-y-xl-3{margin-top:1rem!important}.margin-right-xl-3,.margin-x-xl-3{margin-right:1rem!important}.margin-bottom-xl-3,.margin-y-xl-3{margin-bottom:1rem!important}.margin-left-xl-3,.margin-x-xl-3{margin-left:1rem!important}.margin-xl-4{margin:2rem!important}.margin-top-xl-4,.margin-y-xl-4{margin-top:2rem!important}.margin-right-xl-4,.margin-x-xl-4{margin-right:2rem!important}.margin-bottom-xl-4,.margin-y-xl-4{margin-bottom:2rem!important}.margin-left-xl-4,.margin-x-xl-4{margin-left:2rem!important}.margin-xl-5{margin:4rem!important}.margin-top-xl-5,.margin-y-xl-5{margin-top:4rem!important}.margin-right-xl-5,.margin-x-xl-5{margin-right:4rem!important}.margin-bottom-xl-5,.margin-y-xl-5{margin-bottom:4rem!important}.margin-left-xl-5,.margin-x-xl-5{margin-left:4rem!important}.padding-xl-0{padding:0!important}.padding-top-xl-0,.padding-y-xl-0{padding-top:0!important}.padding-right-xl-0,.padding-x-xl-0{padding-right:0!important}.padding-bottom-xl-0,.padding-y-xl-0{padding-bottom:0!important}.padding-left-xl-0,.padding-x-xl-0{padding-left:0!important}.padding-xl-1{padding:.25rem!important}.padding-top-xl-1,.padding-y-xl-1{padding-top:.25rem!important}.padding-right-xl-1,.padding-x-xl-1{padding-right:.25rem!important}.padding-bottom-xl-1,.padding-y-xl-1{padding-bottom:.25rem!important}.padding-left-xl-1,.padding-x-xl-1{padding-left:.25rem!important}.padding-xl-2{padding:.5rem!important}.padding-top-xl-2,.padding-y-xl-2{padding-top:.5rem!important}.padding-right-xl-2,.padding-x-xl-2{padding-right:.5rem!important}.padding-bottom-xl-2,.padding-y-xl-2{padding-bottom:.5rem!important}.padding-left-xl-2,.padding-x-xl-2{padding-left:.5rem!important}.padding-xl-3{padding:1rem!important}.padding-top-xl-3,.padding-y-xl-3{padding-top:1rem!important}.padding-right-xl-3,.padding-x-xl-3{padding-right:1rem!important}.padding-bottom-xl-3,.padding-y-xl-3{padding-bottom:1rem!important}.padding-left-xl-3,.padding-x-xl-3{padding-left:1rem!important}.padding-xl-4{padding:2rem!important}.padding-top-xl-4,.padding-y-xl-4{padding-top:2rem!important}.padding-right-xl-4,.padding-x-xl-4{padding-right:2rem!important}.padding-bottom-xl-4,.padding-y-xl-4{padding-bottom:2rem!important}.padding-left-xl-4,.padding-x-xl-4{padding-left:2rem!important}.padding-xl-5{padding:4rem!important}.padding-top-xl-5,.padding-y-xl-5{padding-top:4rem!important}.padding-right-xl-5,.padding-x-xl-5{padding-right:4rem!important}.padding-bottom-xl-5,.padding-y-xl-5{padding-bottom:4rem!important}.padding-left-xl-5,.padding-x-xl-5{padding-left:4rem!important}.margin-xl-n1{margin:-.25rem!important}.margin-top-xl-n1,.margin-y-xl-n1{margin-top:-.25rem!important}.margin-right-xl-n1,.margin-x-xl-n1{margin-right:-.25rem!important}.margin-bottom-xl-n1,.margin-y-xl-n1{margin-bottom:-.25rem!important}.margin-left-xl-n1,.margin-x-xl-n1{margin-left:-.25rem!important}.margin-xl-n2{margin:-.5rem!important}.margin-top-xl-n2,.margin-y-xl-n2{margin-top:-.5rem!important}.margin-right-xl-n2,.margin-x-xl-n2{margin-right:-.5rem!important}.margin-bottom-xl-n2,.margin-y-xl-n2{margin-bottom:-.5rem!important}.margin-left-xl-n2,.margin-x-xl-n2{margin-left:-.5rem!important}.margin-xl-n3{margin:-1rem!important}.margin-top-xl-n3,.margin-y-xl-n3{margin-top:-1rem!important}.margin-right-xl-n3,.margin-x-xl-n3{margin-right:-1rem!important}.margin-bottom-xl-n3,.margin-y-xl-n3{margin-bottom:-1rem!important}.margin-left-xl-n3,.margin-x-xl-n3{margin-left:-1rem!important}.margin-xl-n4{margin:-2rem!important}.margin-top-xl-n4,.margin-y-xl-n4{margin-top:-2rem!important}.margin-right-xl-n4,.margin-x-xl-n4{margin-right:-2rem!important}.margin-bottom-xl-n4,.margin-y-xl-n4{margin-bottom:-2rem!important}.margin-left-xl-n4,.margin-x-xl-n4{margin-left:-2rem!important}.margin-xl-n5{margin:-4rem!important}.margin-top-xl-n5,.margin-y-xl-n5{margin-top:-4rem!important}.margin-right-xl-n5,.margin-x-xl-n5{margin-right:-4rem!important}.margin-bottom-xl-n5,.margin-y-xl-n5{margin-bottom:-4rem!important}.margin-left-xl-n5,.margin-x-xl-n5{margin-left:-4rem!important}.margin-xl-auto{margin:auto!important}.margin-top-xl-auto,.margin-y-xl-auto{margin-top:auto!important}.margin-right-xl-auto,.margin-x-xl-auto{margin-right:auto!important}.margin-bottom-xl-auto,.margin-y-xl-auto{margin-bottom:auto!important}.margin-left-xl-auto,.margin-x-xl-auto{margin-left:auto!important}}.h1{font-size:2em}.h2{font-size:1.5em}.h3{font-size:1.17em}.h4{font-size:1em}.h5{font-size:.83em}.h6{font-size:.67em}.cursor-alias{cursor:alias}.cursor-all-scroll{cursor:all-scroll}.cursor-auto{cursor:auto}.cursor-cell{cursor:cell}.cursor-context-menu{cursor:context-menu}.cursor-col-resize{cursor:col-resize}.cursor-copy{cursor:copy}.cursor-crosshair{cursor:crosshair}.cursor-default{cursor:default}.cursor-e-resize{cursor:e-resize}.cursor-ew-resize{cursor:ew-resize}.cursor-grab{cursor:-webkit-grab;cursor:grab}.cursor-grabbing{cursor:-webkit-grabbing;cursor:grabbing}.cursor-help{cursor:help}.cursor-move{cursor:move}.cursor-n-resize{cursor:n-resize}.cursor-ne-resize{cursor:ne-resize}.cursor-nesw-resize{cursor:nesw-resize}.cursor-ns-resize{cursor:ns-resize}.cursor-nw-resize{cursor:nw-resize}.cursor-nwse-resize{cursor:nwse-resize}.cursor-no-drop{cursor:no-drop}.cursor-none{cursor:none}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-progress{cursor:progress}.cursor-row-resize{cursor:row-resize}.cursor-s-resize{cursor:s-resize}.cursor-se-resize{cursor:se-resize}.cursor-sw-resize{cursor:sw-resize}.cursor-text{cursor:text}.cursor-w-resize{cursor:w-resize}.cursor-wait{cursor:wait}.cursor-zoom-in{cursor:zoom-in}.cursor-zoom-out{cursor:zoom-out}.mat-tooltip{font-size:15px!important}body,html{height:100%}body{font-family:opens sans regular,sans-serif;margin:0;padding:0}iframe{border:none}.mat-badge-content{font-family:Roboto,Helvetica Neue,sans-serif;font-size:12px;font-weight:600}.mat-badge-small .mat-badge-content{font-size:9px}.mat-badge-large .mat-badge-content{font-size:24px}.mat-h1,.mat-headline,.mat-typography h1{font:400 24px/32px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;margin:0 0 16px}.mat-h2,.mat-title,.mat-typography h2{font:500 20px/32px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;margin:0 0 16px}.mat-h3,.mat-subheading-2,.mat-typography h3{font:400 16px/28px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;margin:0 0 16px}.mat-h4,.mat-subheading-1,.mat-typography h4{font:400 15px/24px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;margin:0 0 16px}.mat-h5,.mat-typography h5{font:400 11.62px/20px Roboto,Helvetica Neue,sans-serif;margin:0 0 12px}.mat-h6,.mat-typography h6{font:400 9.38px/20px Roboto,Helvetica Neue,sans-serif;margin:0 0 12px}.mat-body-2,.mat-body-strong{font:500 14px/24px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.mat-body,.mat-body-1,.mat-typography{font:400 14px/20px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.mat-body-1 p,.mat-body p,.mat-typography p{margin:0 0 12px}.mat-caption,.mat-small{font:400 12px/20px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.mat-display-4,.mat-typography .mat-display-4{font:300 112px/112px Roboto,Helvetica Neue,sans-serif;letter-spacing:-.05em;margin:0 0 56px}.mat-display-3,.mat-typography .mat-display-3{font:400 56px/56px Roboto,Helvetica Neue,sans-serif;letter-spacing:-.02em;margin:0 0 64px}.mat-display-2,.mat-typography .mat-display-2{font:400 45px/48px Roboto,Helvetica Neue,sans-serif;letter-spacing:-.005em;margin:0 0 64px}.mat-display-1,.mat-typography .mat-display-1{font:400 34px/40px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;margin:0 0 64px}.mat-bottom-sheet-container{font:400 14px/20px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.mat-button,.mat-fab,.mat-flat-button,.mat-icon-button,.mat-mini-fab,.mat-raised-button,.mat-stroked-button{font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px;font-weight:500}.mat-button-toggle,.mat-card{font-family:Roboto,Helvetica Neue,sans-serif}.mat-card-title{font-size:24px;font-weight:500}.mat-card-header .mat-card-title{font-size:20px}.mat-card-content,.mat-card-subtitle{font-size:14px}.mat-checkbox{font-family:Roboto,Helvetica Neue,sans-serif}.mat-checkbox-layout .mat-checkbox-label{line-height:24px}.mat-chip{font-size:14px;font-weight:500}.mat-chip .mat-chip-remove.mat-icon,.mat-chip .mat-chip-trailing-icon.mat-icon{font-size:18px}.mat-table{font-family:Roboto,Helvetica Neue,sans-serif}.mat-header-cell{font-size:12px;font-weight:500}.mat-cell,.mat-footer-cell{font-size:14px}.mat-calendar{font-family:Roboto,Helvetica Neue,sans-serif}.mat-calendar-body{font-size:13px}.mat-calendar-body-label,.mat-calendar-period-button{font-size:14px;font-weight:500}.mat-calendar-table-header th{font-size:11px;font-weight:400}.mat-dialog-title{font:500 20px/32px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.mat-expansion-panel-header{font-family:Roboto,Helvetica Neue,sans-serif;font-size:15px;font-weight:400}.mat-expansion-panel-content{font:400 14px/20px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.mat-form-field{font-family:Roboto,Helvetica Neue,sans-serif;font-size:inherit;font-weight:400;letter-spacing:normal;line-height:1.125}.mat-form-field-wrapper{padding-bottom:1.34375em}.mat-form-field-prefix .mat-icon,.mat-form-field-suffix .mat-icon{font-size:150%;line-height:1.125}.mat-form-field-prefix .mat-icon-button,.mat-form-field-suffix .mat-icon-button{height:1.5em;width:1.5em}.mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field-suffix .mat-icon-button .mat-icon{height:1.125em;line-height:1.125}.mat-form-field-infix{border-top:.84375em solid transparent;padding:.5em 0}.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.34375em) scale(.75);width:133.3333333333%}.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.34374em) scale(.75);width:133.3333433333%}.mat-form-field-label-wrapper{padding-top:.84375em;top:-.84375em}.mat-form-field-label{top:1.34375em}.mat-form-field-underline{bottom:1.34375em}.mat-form-field-subscript-wrapper{font-size:75%;margin-top:.6666666667em;top:calc(100% - 1.79167em)}.mat-form-field-appearance-legacy .mat-form-field-wrapper{padding-bottom:1.25em}.mat-form-field-appearance-legacy .mat-form-field-infix{padding:.4375em 0}.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{-ms-transform:translateY(-1.28125em) scale(.75);transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.001px);width:133.3333333333%}.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-label-wrapper .mat-form-field-label{-ms-transform:translateY(-1.28124em) scale(.75);transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.00101px);width:133.3333433333%}.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{-ms-transform:translateY(-1.28123em) scale(.75);transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.00102px);width:133.3333533333%}.mat-form-field-appearance-legacy .mat-form-field-label{top:1.28125em}.mat-form-field-appearance-legacy .mat-form-field-underline{bottom:1.25em}.mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper{margin-top:.5416666667em;top:calc(100% - 1.66667em)}@media print{.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.28122em) scale(.75)}.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.28121em) scale(.75)}.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.2812em) scale(.75)}}.mat-form-field-appearance-fill .mat-form-field-infix{padding:.25em 0 .75em}.mat-form-field-appearance-fill .mat-form-field-label{margin-top:-.5em;top:1.09375em}.mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-.59375em) scale(.75);width:133.3333333333%}.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-.59374em) scale(.75);width:133.3333433333%}.mat-form-field-appearance-outline .mat-form-field-infix{padding:1em 0}.mat-form-field-appearance-outline .mat-form-field-label{margin-top:-.25em;top:1.84375em}.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.59375em) scale(.75);width:133.3333333333%}.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.59374em) scale(.75);width:133.3333433333%}.mat-grid-tile-footer,.mat-grid-tile-header{font-size:14px}.mat-grid-tile-footer .mat-line,.mat-grid-tile-header .mat-line{box-sizing:border-box;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-grid-tile-footer .mat-line:nth-child(n+2),.mat-grid-tile-header .mat-line:nth-child(n+2){font-size:12px}input.mat-input-element{margin-top:-.0625em}.mat-menu-item{font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px;font-weight:400}.mat-paginator,.mat-paginator-page-size .mat-select-trigger{font-family:Roboto,Helvetica Neue,sans-serif;font-size:12px}.mat-radio-button,.mat-select{font-family:Roboto,Helvetica Neue,sans-serif}.mat-select-trigger{height:1.125em}.mat-slide-toggle-content,.mat-slider-thumb-label-text{font-family:Roboto,Helvetica Neue,sans-serif}.mat-slider-thumb-label-text{font-size:12px;font-weight:500}.mat-stepper-horizontal,.mat-stepper-vertical{font-family:Roboto,Helvetica Neue,sans-serif}.mat-step-label{font-size:14px;font-weight:400}.mat-step-sub-label-error{font-weight:400}.mat-step-label-error{font-size:14px}.mat-step-label-selected{font-size:14px;font-weight:500}.mat-tab-group,.mat-tab-label,.mat-tab-link{font-family:Roboto,Helvetica Neue,sans-serif}.mat-tab-label,.mat-tab-link{font-size:14px;font-weight:500}.mat-toolbar,.mat-toolbar h1,.mat-toolbar h2,.mat-toolbar h3,.mat-toolbar h4,.mat-toolbar h5,.mat-toolbar h6{font:500 20px/32px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;margin:0}.mat-tooltip{font-family:Roboto,Helvetica Neue,sans-serif;font-size:10px;padding-bottom:6px;padding-top:6px}.mat-tooltip-handset{font-size:14px;padding-bottom:8px;padding-top:8px}.mat-list-item,.mat-list-option{font-family:Roboto,Helvetica Neue,sans-serif}.mat-list-base .mat-list-item{font-size:16px}.mat-list-base .mat-list-item .mat-line{box-sizing:border-box;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-list-base .mat-list-item .mat-line:nth-child(n+2){font-size:14px}.mat-list-base .mat-list-option{font-size:16px}.mat-list-base .mat-list-option .mat-line{box-sizing:border-box;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-list-base .mat-list-option .mat-line:nth-child(n+2){font-size:14px}.mat-list-base .mat-subheader{font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px;font-weight:500}.mat-list-base[dense] .mat-list-item{font-size:12px}.mat-list-base[dense] .mat-list-item .mat-line{box-sizing:border-box;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-list-base[dense] .mat-list-item .mat-line:nth-child(n+2),.mat-list-base[dense] .mat-list-option{font-size:12px}.mat-list-base[dense] .mat-list-option .mat-line{box-sizing:border-box;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-list-base[dense] .mat-list-option .mat-line:nth-child(n+2){font-size:12px}.mat-list-base[dense] .mat-subheader{font-family:Roboto,Helvetica Neue,sans-serif;font-size:12px;font-weight:500}.mat-option{font-family:Roboto,Helvetica Neue,sans-serif;font-size:16px}.mat-optgroup-label{font:500 14px/24px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.mat-simple-snackbar{font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px}.mat-simple-snackbar-action{font-family:inherit;font-size:inherit;font-weight:500;line-height:1}.mat-tree{font-family:Roboto,Helvetica Neue,sans-serif}.mat-nested-tree-node,.mat-tree-node{font-size:14px;font-weight:400}.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{border-radius:50%;pointer-events:none;position:absolute;transform:scale(0);transition:opacity,transform 0ms cubic-bezier(0,0,.2,1)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{-moz-appearance:none;-webkit-appearance:none;border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;outline:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.cdk-global-overlay-wrapper,.cdk-overlay-container{height:100%;left:0;pointer-events:none;top:0;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper,.cdk-overlay-pane{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{box-sizing:border-box;max-height:100%;max-width:100%;pointer-events:auto}.cdk-overlay-backdrop{-webkit-tap-highlight-color:transparent;bottom:0;left:0;opacity:0;pointer-events:auto;position:absolute;right:0;top:0;transition:opacity .4s cubic-bezier(.25,.8,.25,1);z-index:1000}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop,.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0}.cdk-overlay-connected-position-bounding-box{display:flex;flex-direction:column;min-height:1px;min-width:1px;position:absolute;z-index:1000}.cdk-global-scrollblock{overflow-y:scroll;position:fixed;width:100%}@-webkit-keyframes cdk-text-field-autofill-start{\n /*!*/}@keyframes cdk-text-field-autofill-start{\n /*!*/}@-webkit-keyframes cdk-text-field-autofill-end{\n /*!*/}@keyframes cdk-text-field-autofill-end{\n /*!*/}.cdk-text-field-autofill-monitored:-webkit-autofill{-webkit-animation:cdk-text-field-autofill-start 0s 1ms;animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){-webkit-animation:cdk-text-field-autofill-end 0s 1ms;animation:cdk-text-field-autofill-end 0s 1ms}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{box-sizing:content-box!important;height:auto!important;overflow:hidden!important;padding:2px 0!important}textarea.cdk-textarea-autosize-measuring-firefox{box-sizing:content-box!important;height:0!important;padding:2px 0!important}.mat-focus-indicator,.mat-mdc-focus-indicator{position:relative}.header,.title{font-family:Encode Sans Condensed,sans-serif;font-weight:900}.paragraph-title,.tagline{font-family:Open Sans,sans-serif;font-weight:400}.paragraph-title-bold .tagLine-bold{font-family:Open Sans,sans-serif;font-weight:700}.plain-text,.remarks{font-family:Open Sans,sans-serif;font-weight:300}.plain-text-bold{font-family:Open Sans,sans-serif;font-weight:700}.flex-column{flex-direction:column}.flex-column,.flex-row{box-sizing:border-box;display:flex}.flex-row{flex-direction:row}.flex-row-center{align-items:center;justify-content:center}.mat-button-large{font-size:18px;font-weight:700;line-height:48px;padding:0 24px!important}.mat-round{border-radius:.5em}:root{--background:#050505;--cyan-accent:rgba(132,255,255,0.75);--green-accent:#00e676;--initial-accent:#9cd8d7;--initial-dark-background:#222;--initial-dark-text:hsla(0,0%,100%,0.87);--initial-light-background:#f2f2f2;--initial-light-background:#fff;--initial-light-text:rgba(0,0,0,0.87);--initial-primary:#4a918e;--initial-warn:#ef4351;--orange-accent:#ff9800;--pink-accent:#e91e63;--purple-accent:#9c27b0;--success:#00e676;--yellow-accent:#fdd835}body{background-color:var(--initial-dark-background)}::ng-deep .mat-tooltip{font-size:16px!important}:host .valid-control{color:var(--green-accent)}:host .invalid-control{color:var(--theme-warn-500)}:host .actions .item:not(:last-child){margin-right:0}:host .project-thumbnail img{height:50px;width:auto}:host .active{background-color:var(--theme-accent-400)}:host .active,:host .inactive{transition:background-color 1s linear}:host .inactive{background-color:rgba(242,245,169,0)}:host .expansion-panel{margin-bottom:10px;width:100%}:host .expansion-container{max-height:300px;overflow-y:auto}:host .divider-fill-vert{background-color:var(--theme-accent-500);bottom:10%;min-height:100%;min-width:5px;top:10%}:host .divider-fill-hor{background-color:var(--theme-accent-500);height:5px;width:100%}:host .form-disabled{background-color:#797979;border-radius:4px;opacity:.5}::ng-deep input:-webkit-autofill,input:-webkit-autofill:active,input:-webkit-autofill:focus,input:-webkit-autofill:hover{-webkit-text-fill-color:hsla(0,0%,100%,.8705882352941177);-webkit-transition:background-color 5000s ease-in-out 0s;transition:background-color 5000s ease-in-out 0s}@media (max-width:768px){.spread{margin:1em!important}}@media (max-width:480px){.spread{margin:.5em!important}}.spinner-logo{display:none!important}.flow-card{background-color:#2f2f2f!important}:host ::ng-deep #app-back-button{margin-left:-37px;margin-top:15px}:host ::ng-deep .apps-actions{float:right}:host ::ng-deep .mat-card .mat-card-content{overflow:hidden;text-align:center}:host ::ng-deep .mat-card .mat-card-actions .data-app-actions{display:none!important}:host ::ng-deep .mat-card .mat-card-actions .data-app-fakes{display:flex!important}:host ::ng-deep .mat-card .mat-card-actions .data-app-fakes .mat-icon{font-size:8px}:host ::ng-deep .mat-card:hover .mat-card-actions .data-app-actions{display:flex!important}:host ::ng-deep .mat-card:hover .mat-card-actions .data-app-fakes{display:none!important}:host ::ng-deep .mat-subtitle .mat-chip-list{display:inline-block}:host ::ng-deep .mat-form-field{margin-bottom:.5em;margin-top:.5em}:host ::ng-deep .mat-form-field.with-hint{margin-bottom:1em}@media (max-width:768px){:host ::ng-deep .form-card{width:100%}:host ::ng-deep .mat-card .mat-card-actions .data-app-actions{display:flex!important}:host ::ng-deep .mat-card .mat-card-actions .data-app-fakes{display:none!important}}:host ::ng-deep .domain-item{border:1px solid var(--theme-accent-500);border-radius:5}"]
|
|
581
|
+
},] }
|
|
582
|
+
];
|
|
583
|
+
AppsFlowComponent.ctorParameters = () => [
|
|
584
|
+
{ type: FormBuilder },
|
|
585
|
+
{ type: ApplicationsFlowService },
|
|
586
|
+
{ type: ApplicationsFlowEventsService }
|
|
587
|
+
];
|
|
588
|
+
AppsFlowComponent.propDecorators = {
|
|
589
|
+
Data: [{ type: Input, args: ['data',] }],
|
|
590
|
+
SourceControlFormControls: [{ type: ViewChild, args: [SourceControlFormControlsComponent,] }]
|
|
591
|
+
};
|
|
592
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcy1mbG93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9hcHBsaWNhdGlvbnMtZmxvdy9hcHBsaWNhdGlvbnMtZmxvdy9wcm9qZWN0cy9jb21tb24vc3JjLyIsInNvdXJjZXMiOlsibGliL2VsZW1lbnRzL3Byb2plY3RzL2NvbnRyb2xzL3RhYnMvYXBwcy1mbG93L2FwcHMtZmxvdy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFFTCxXQUFXLEVBRVgsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLDZCQUE2QixHQUU5QixNQUFNLDBEQUEwRCxDQUFDO0FBUWxFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbkMsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0scURBQXFELENBQUM7QUFDekcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFPNUYsTUFBTSxPQUFPLGlCQUFpQjtJQTZRNUIsZ0JBQWdCO0lBQ2hCLFlBQ1ksUUFBcUIsRUFDckIsV0FBb0MsRUFDcEMsaUJBQWdEO1FBRmhELGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBQ3BDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBK0I7UUFFMUQsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztRQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUUxQiw0QkFBNEI7UUFFNUIsMkJBQTJCO0lBQzdCLENBQUM7SUF4UkQsVUFBVTtJQUVWLGNBQWM7SUFDZCxJQUFXLGtCQUFrQjs7UUFDM0IsYUFBTyxJQUFJLENBQUMsb0JBQW9CLDBDQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUM7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QUFDLE1BQU07d0NBdUxaLFNBQVMsU0FBQyxrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQnVpbGRlcixcbiAgRm9ybUdyb3VwLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvbnNGbG93RXZlbnRzU2VydmljZSxcbiAgU2F2ZUFwcGxpY2F0aW9uQXNDb2RlRXZlbnRSZXF1ZXN0LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy9hcHBsaWNhdGlvbnMtZmxvdy1ldmVudHMuc2VydmljZSc7XG5pbXBvcnQge1xuICBFYUNBcHBsaWNhdGlvbkFzQ29kZSxcbiAgRWFDRW52aXJvbm1lbnRBc0NvZGUsXG4gIEVhQ1Byb2Nlc3NvcixcbiAgRWFDUHJvamVjdEFzQ29kZSxcbiAgRWFDU291cmNlQ29udHJvbCxcbn0gZnJvbSAnQHNlbWFudGljanMvY29tbW9uJztcbmltcG9ydCB7IEd1aWQgfSBmcm9tICdAbGN1L2NvbW1vbic7XG5pbXBvcnQgeyBNYXRTZWxlY3RDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgU291cmNlQ29udHJvbEZvcm1Db250cm9sc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Zvcm1zL3NvdXJjZS1jb250cm9sL3NvdXJjZS1jb250cm9sLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbnNGbG93U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL2FwcGxpY2F0aW9ucy1mbG93LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsY3UtYXBwcy1mbG93JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FwcHMtZmxvdy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FwcHMtZmxvdy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBBcHBzRmxvd0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vICBGaWVsZHNcblxuICAvLyAgUHJvcGVydGllc1xuICBwdWJsaWMgZ2V0IEFQSVJvb3RGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy5hcGlSb290O1xuICB9XG5cbiAgcHVibGljIEFwcGxpY2F0aW9uRm9ybUdyb3VwOiBGb3JtR3JvdXA7XG5cbiAgcHVibGljIGdldCBBcHBsaWNhdGlvbklERm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cD8uY29udHJvbHMuYXBwbGljYXRpb25JZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgQXBwbGljYXRpb25Mb29rdXBzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLkFwcGxpY2F0aW9ucyB8fCB7fSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IEFwcGxpY2F0aW9uUm91dGVzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLlJvdXRlZEFwcGxpY2F0aW9ucyB8fCB7fSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IEFwcGxpY2F0aW9uc0JhbmsoKTogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSB9IHtcbiAgICByZXR1cm4gdGhpcy5EYXRhPy5BcHBsaWNhdGlvbnMgfHwge307XG4gIH1cblxuICBwdWJsaWMgZ2V0IEFwcGxpY2F0aW9ucygpOiB7IFtsb29rdXA6IHN0cmluZ106IEVhQ0FwcGxpY2F0aW9uQXNDb2RlIH0ge1xuICAgIGNvbnN0IGFwcHM6IHsgW2xvb2t1cDogc3RyaW5nXTogRWFDQXBwbGljYXRpb25Bc0NvZGUgfSA9IHt9O1xuXG4gICAgdGhpcy5Qcm9qZWN0LkFwcGxpY2F0aW9uTG9va3Vwcy5mb3JFYWNoKChhcHBMb29rdXApID0+IHtcbiAgICAgIGFwcHNbYXBwTG9va3VwXSA9IHRoaXMuQXBwbGljYXRpb25zQmFua1thcHBMb29rdXBdO1xuICAgIH0pO1xuICAgIHJldHVybiBhcHBzO1xuICB9XG5cbiAgcHVibGljIGdldCBCdWlsZEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLmJ1aWxkO1xuICB9XG5cbiAgcHVibGljIGdldCBDbGllbnRJREZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLmNsaWVudElkO1xuICB9XG5cbiAgcHVibGljIGdldCBDbGllbnRTZWNyZXRGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy5jbGllbnRTZWNyZXQ7XG4gIH1cblxuICBwdWJsaWMgQ3VycmVudEFwcGxpY2F0aW9uUm91dGU6IHN0cmluZztcblxuICBwdWJsaWMgZ2V0IEN1cnJlbnRSb3V0ZUFwcGxpY2F0aW9uTG9va3VwcygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoXG4gICAgICB0aGlzLlJvdXRlZEFwcGxpY2F0aW9uc1t0aGlzLkN1cnJlbnRBcHBsaWNhdGlvblJvdXRlXSB8fCB7fVxuICAgICk7XG4gIH1cblxuICBASW5wdXQoJ2RhdGEnKVxuICBwdWJsaWMgRGF0YToge1xuICAgIEFwcGxpY2F0aW9uczogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSB9O1xuICAgIEVudmlyb25tZW50OiBFYUNFbnZpcm9ubWVudEFzQ29kZTtcbiAgICBQcmltYXJ5SG9zdDogc3RyaW5nO1xuICAgIFByb2plY3Q6IEVhQ1Byb2plY3RBc0NvZGU7XG4gICAgUHJvamVjdExvb2t1cDogc3RyaW5nO1xuICB9O1xuXG4gIHB1YmxpYyBnZXQgRGVmYXVsdEZpbGVGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy5kZWZhdWx0RmlsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgRGVmYXVsdFNvdXJjZUNvbnRyb2woKTogRWFDU291cmNlQ29udHJvbCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIE9yZ2FuaXphdGlvbjogdGhpcy5FZGl0aW5nQXBwbGljYXRpb24/Lkxvd0NvZGVVbml0Py5Pcmdhbml6YXRpb24sXG4gICAgICBSZXBvc2l0b3J5OiB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbj8uTG93Q29kZVVuaXQ/LlJlcG9zaXRvcnksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgRGVzY3JpcHRpb25Gb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy5kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgRWRpdGluZ0FwcGxpY2F0aW9uKCk6IEVhQ0FwcGxpY2F0aW9uQXNDb2RlIHtcbiAgICBsZXQgYXBwID0gdGhpcy5BcHBsaWNhdGlvbnNcbiAgICAgID8gdGhpcy5BcHBsaWNhdGlvbnNbdGhpcy5FZGl0aW5nQXBwbGljYXRpb25Mb29rdXBdXG4gICAgICA6IG51bGw7XG5cbiAgICBpZiAoYXBwID09IG51bGwgJiYgdGhpcy5FZGl0aW5nQXBwbGljYXRpb25Mb29rdXApIHtcbiAgICAgIGFwcCA9IHt9O1xuICAgIH1cblxuICAgIHJldHVybiBhcHA7XG4gIH1cblxuICBwdWJsaWMgRWRpdGluZ0FwcGxpY2F0aW9uTG9va3VwOiBzdHJpbmc7XG5cbiAgcHVibGljIGdldCBIYXNCdWlsZEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLmhhc0J1aWxkO1xuICB9XG5cbiAgcHVibGljIGdldCBJbmJvdW5kUGF0aEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLmluYm91bmRQYXRoO1xuICB9XG5cbiAgcHVibGljIGdldCBJc1ByaXZhdGVGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy5pc1ByaXZhdGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IElzVHJpZ2dlclNpZ25JbkZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLmlzVHJpZ2dlclNpZ25JbjtcbiAgfVxuXG4gIHB1YmxpYyBMQ1VUeXBlOiBzdHJpbmc7XG5cbiAgcHVibGljIGdldCBNZXRob2RzRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cD8uY29udHJvbHMubWV0aG9kcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgTmFtZUZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLm5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IFBhY2thZ2VGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy5wYWNrYWdlO1xuICB9XG5cbiAgcHVibGljIElzUGVybWFuZW50OiBib29sZWFuO1xuXG4gIHB1YmxpYyBJc1ByZXNlcnZlOiBib29sZWFuO1xuXG4gIHB1YmxpYyByZWRpcmVjdFRvb2x0aXA6IHN0cmluZztcblxuICBwdWJsaWMgZ2V0IFBlcm1hbmVudEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLnBlcm1hbmVudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgUHJlc2VydmVNZXRob2RGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy5wcmVzZXJ2ZU1ldGhvZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgUHJpbWFyeUhvc3QoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5EYXRhLlByaW1hcnlIb3N0O1xuICB9XG5cbiAgcHVibGljIFByb2Nlc3NvclR5cGU6IHN0cmluZztcblxuICBwdWJsaWMgZ2V0IFByb2plY3QoKTogRWFDUHJvamVjdEFzQ29kZSB7XG4gICAgcmV0dXJuIHRoaXMuRGF0YS5Qcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIGdldCBQcm9qZWN0TG9va3VwKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuRGF0YS5Qcm9qZWN0TG9va3VwO1xuICB9XG5cbiAgcHVibGljIGdldCBSZWRpcmVjdEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLnJlZGlyZWN0O1xuICB9XG5cbiAgcHVibGljIGdldCBSb3V0ZWRBcHBsaWNhdGlvbnMoKToge1xuICAgIFtyb3V0ZTogc3RyaW5nXTogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSB9O1xuICB9IHtcbiAgICBjb25zdCBhcHBMb29rdXBzID0gT2JqZWN0LmtleXModGhpcy5BcHBsaWNhdGlvbnMpO1xuXG4gICAgY29uc3QgYXBwcyA9IGFwcExvb2t1cHMubWFwKChhcHBMb29rdXApID0+IHRoaXMuQXBwbGljYXRpb25zW2FwcExvb2t1cF0pO1xuXG4gICAgbGV0IGFwcFJvdXRlcyA9XG4gICAgICBhcHBzLm1hcCgoYXBwKSA9PiB7XG4gICAgICAgIHJldHVybiBhcHAuTG9va3VwQ29uZmlnPy5QYXRoUmVnZXgucmVwbGFjZSgnLionLCAnJyk7XG4gICAgICB9KSB8fCBbXTtcblxuICAgIGFwcFJvdXRlcyA9IGFwcFJvdXRlcy5maWx0ZXIoKGFyKSA9PiBhciAhPSBudWxsKTtcblxuICAgIGxldCByb3V0ZUJhc2VzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgYXBwUm91dGVzLmZvckVhY2goKGFwcFJvdXRlKSA9PiB7XG4gICAgICBjb25zdCBhcHBSb3V0ZVBhcnRzID0gYXBwUm91dGUuc3BsaXQoJy8nKTtcblxuICAgICAgY29uc3QgYXBwUm91dGVCYXNlID0gYC8ke2FwcFJvdXRlUGFydHNbMV19YDtcblxuICAgICAgaWYgKHJvdXRlQmFzZXMuaW5kZXhPZihhcHBSb3V0ZUJhc2UpIDwgMCkge1xuICAgICAgICByb3V0ZUJhc2VzLnB1c2goYXBwUm91dGVCYXNlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGxldCB3b3JraW5nQXBwTG9va3VwcyA9IFsuLi4oYXBwTG9va3VwcyB8fCBbXSldO1xuXG4gICAgcm91dGVCYXNlcyA9IHJvdXRlQmFzZXMuc29ydCgoYSwgYikgPT4gYi5sb2NhbGVDb21wYXJlKGEpKTtcblxuICAgIGNvbnN0IHJvdXRlU2V0ID1cbiAgICAgIHJvdXRlQmFzZXMucmVkdWNlKChwcmV2Um91dGVNYXAsIGN1cnJlbnRSb3V0ZUJhc2UpID0+IHtcbiAgICAgICAgY29uc3Qgcm91dGVNYXAgPSB7XG4gICAgICAgICAgLi4ucHJldlJvdXRlTWFwLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkQXBwTG9va3VwcyA9IHdvcmtpbmdBcHBMb29rdXBzLmZpbHRlcigod2FsKSA9PiB7XG4gICAgICAgICAgY29uc3Qgd2EgPSB0aGlzLkFwcGxpY2F0aW9uc1t3YWxdO1xuXG4gICAgICAgICAgcmV0dXJuIHdhLkxvb2t1cENvbmZpZz8uUGF0aFJlZ2V4LnN0YXJ0c1dpdGgoY3VycmVudFJvdXRlQmFzZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJvdXRlTWFwW2N1cnJlbnRSb3V0ZUJhc2VdID1cbiAgICAgICAgICBmaWx0ZXJlZEFwcExvb2t1cHMucmVkdWNlKChwcmV2QXBwTWFwLCBhcHBMb29rdXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFwcE1hcCA9IHtcbiAgICAgICAgICAgICAgLi4ucHJldkFwcE1hcCxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGFwcE1hcFthcHBMb29rdXBdID0gdGhpcy5BcHBsaWNhdGlvbnNbYXBwTG9va3VwXTtcblxuICAgICAgICAgICAgcmV0dXJuIGFwcE1hcDtcbiAgICAgICAgICB9LCB7fSkgfHwge307XG5cbiAgICAgICAgd29ya2luZ0FwcExvb2t1cHMgPSB3b3JraW5nQXBwTG9va3Vwcy5maWx0ZXIoKHdhKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZpbHRlcmVkQXBwTG9va3Vwcy5pbmRleE9mKHdhKSA8IDA7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByb3V0ZU1hcDtcbiAgICAgIH0sIHt9KSB8fCB7fTtcblxuICAgIGxldCByb3V0ZVNldEtleXMgPSBPYmplY3Qua2V5cyhyb3V0ZVNldCk7XG5cbiAgICByb3V0ZVNldEtleXMgPSByb3V0ZVNldEtleXMuc29ydCgoYSwgYikgPT4gYS5sb2NhbGVDb21wYXJlKGIpKTtcblxuICAgIGNvbnN0IHJvdXRlU2V0UmVzdWx0ID0ge307XG5cbiAgICByb3V0ZVNldEtleXMuZm9yRWFjaCgocnNrKSA9PiAocm91dGVTZXRSZXN1bHRbcnNrXSA9IHJvdXRlU2V0W3Jza10pKTtcblxuICAgIHJldHVybiByb3V0ZVNldFJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgUm91dGVGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy5yb3V0ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgU2NvcGVzRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cD8uY29udHJvbHMuc2NvcGVzO1xuICB9XG5cbiAgcHVibGljIGdldCBTZWN1cml0eUZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLnNlY3VyaXR5O1xuICB9XG5cbiAgQFZpZXdDaGlsZChTb3VyY2VDb250cm9sRm9ybUNvbnRyb2xzQ29tcG9uZW50KVxuICBwdWJsaWMgU291cmNlQ29udHJvbEZvcm1Db250cm9sczogU291cmNlQ29udHJvbEZvcm1Db250cm9sc0NvbXBvbmVudDtcblxuICBwdWJsaWMgZ2V0IFNvdXJjZUNvbnRyb2xMb29rdXBGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy5zb3VyY2VDb250cm9sTG9va3VwO1xuICB9XG5cbiAgcHVibGljIGdldCBTb3VyY2VDb250cm9sTG9va3VwcygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5Tb3VyY2VDb250cm9scyB8fCB7fSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IFNvdXJjZUNvbnRyb2xzKCk6IHsgW2xvb2t1cDogc3RyaW5nXTogRWFDU291cmNlQ29udHJvbCB9IHtcbiAgICByZXR1cm4gdGhpcy5EYXRhLkVudmlyb25tZW50LlNvdXJjZXMgfHwge307XG4gIH1cblxuICBwdWJsaWMgZ2V0IFNQQVJvb3RGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy5zcGFSb290O1xuICB9XG5cbiAgcHVibGljIGdldCBUb2tlbkxvb2t1cEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLnRva2VuTG9va3VwO1xuICB9XG5cbiAgcHVibGljIGdldCBWZXJzaW9uRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cD8uY29udHJvbHMudmVyc2lvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgWmlwRmlsZUZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLnppcEZpbGU7XG4gIH1cblxuICAvLyAgQ29uc3RydWN0b3JzXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBmb3JtQmxkcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJvdGVjdGVkIGFwcHNGbG93U3ZjOiBBcHBsaWNhdGlvbnNGbG93U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYXBwc0Zsb3dFdmVudHNTdmM6IEFwcGxpY2F0aW9uc0Zsb3dFdmVudHNTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uTG9va3VwID0gbnVsbDtcbiAgICB0aGlzLnJlZGlyZWN0VG9vbHRpcCA9ICcnO1xuXG4gICAgLy8gdGhpcy5Jc1Blcm1hbmVudCA9IGZhbHNlO1xuXG4gICAgLy8gdGhpcy5Jc1ByZXNlcnZlID0gZmFsc2U7XG4gIH1cblxuICAvLyAgTGlmZSBDeWNsZVxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuQXBwbGljYXRpb25Mb29rdXBzPy5sZW5ndGggPD0gMCkge1xuICAgICAgdGhpcy5DcmVhdGVOZXdBcHBsaWNhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8vICBBUEkgTWV0aG9kc1xuICBwdWJsaWMgQ3JlYXRlTmV3QXBwbGljYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5TZXRFZGl0aW5nQXBwbGljYXRpb24oR3VpZC5DcmVhdGVSYXcoKSk7XG4gIH1cblxuICBwdWJsaWMgRGVsZXRlQXBwbGljYXRpb24oYXBwTG9va3VwOiBzdHJpbmcsIGFwcE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChjb25maXJtKGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIGFwcGxpY2F0aW9uICcke2FwcE5hbWV9Jz9gKSkge1xuICAgICAgdGhpcy5hcHBzRmxvd0V2ZW50c1N2Yy5EZWxldGVBcHBsaWNhdGlvbihhcHBMb29rdXApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBMQ1VUeXBlQ2hhbmdlZChldmVudDogTWF0U2VsZWN0Q2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5MQ1VUeXBlID0gZXZlbnQudmFsdWU7XG5cbiAgICB0aGlzLnNldHVwTGN1VHlwZVN1YkZvcm0oKTtcbiAgfVxuXG4gIHB1YmxpYyBQcm9jZXNzb3JUeXBlQ2hhbmdlZChldmVudDogTWF0U2VsZWN0Q2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5Qcm9jZXNzb3JUeXBlID0gZXZlbnQudmFsdWU7XG5cbiAgICB0aGlzLnNldHVwUHJvY2Vzc29yVHlwZVN1YkZvcm0oKTtcbiAgfVxuXG4gIHB1YmxpYyBEZXRlcm1pbmVUb29sdGlwVGV4dCgpIHtcbiAgICBsZXQgcGVybWFuZW50VmFsdWUgPSB0aGlzLlBlcm1hbmVudEZvcm1Db250cm9sLnZhbHVlO1xuICAgIGxldCBwcmVzZXJ2ZVZhbHVlID0gdGhpcy5QcmVzZXJ2ZU1ldGhvZEZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgaWYgKHBlcm1hbmVudFZhbHVlID09PSB0cnVlICYmIHByZXNlcnZlVmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnJlZGlyZWN0VG9vbHRpcCA9ICczMDEg4oCTIFBlcm1hbmVudCBhbmQgTm90IFByZXNlcnZlJztcbiAgICB9IGVsc2UgaWYgKHBlcm1hbmVudFZhbHVlID09PSBmYWxzZSAmJiBwcmVzZXJ2ZVZhbHVlID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5yZWRpcmVjdFRvb2x0aXAgPSAnMzAyIOKAkyBOb3QgUGVybWFuZW50IGFuZCBOb3QgUHJlc2VydmUnO1xuICAgIH0gZWxzZSBpZiAocGVybWFuZW50VmFsdWUgPT09IGZhbHNlICYmIHByZXNlcnZlVmFsdWUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMucmVkaXJlY3RUb29sdGlwID0gJzMwNyDigJMgTm90IFBlcm1hbmVudCBhbmQgUHJlc2VydmUnO1xuICAgIH0gZWxzZSBpZiAocGVybWFuZW50VmFsdWUgPT09IHRydWUgJiYgcHJlc2VydmVWYWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5yZWRpcmVjdFRvb2x0aXAgPSAnMzA4IOKAkyBQZXJtYW5lbnQgYW5kIFByZXNlcnZlJztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgR2V0UHJvY2Vzc29yVHlwZShhcHBMb29rdXA6IGFueSk6IHN0cmluZyB7XG4gICAgbGV0IHByb2Nlc3NvclR5cGUgPSAnJztcbiAgICBwcm9jZXNzb3JUeXBlID0gdGhpcy5BcHBsaWNhdGlvbnNbYXBwTG9va3VwXS5Qcm9jZXNzb3IuVHlwZVxuICAgICAgPyB0aGlzLkFwcGxpY2F0aW9uc1thcHBMb29rdXBdLlByb2Nlc3Nvci5UeXBlXG4gICAgICA6ICcnO1xuICAgIC8vIGNvbnNvbGUubG9nKFwiUHR5cGUgPSBcIiwgcHJvY2Vzc29yVHlwZSk7XG5cbiAgICByZXR1cm4gcHJvY2Vzc29yVHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBFZGl0QXBwbGljYXRpb25Sb3V0ZUNsaWNrZWQoYXBwUm91dGU6IGFueSkge1xuICAgIHRoaXMuQ3VycmVudEFwcGxpY2F0aW9uUm91dGUgPSBhcHBSb3V0ZTtcbiAgfVxuXG4gIHB1YmxpYyBTYXZlQXBwbGljYXRpb24oKTogdm9pZCB7XG4gICAgY29uc3QgYXBwOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSA9IHtcbiAgICAgIEFwcGxpY2F0aW9uOiB7XG4gICAgICAgIE5hbWU6IHRoaXMuTmFtZUZvcm1Db250cm9sLnZhbHVlLFxuICAgICAgICBEZXNjcmlwdGlvbjogdGhpcy5EZXNjcmlwdGlvbkZvcm1Db250cm9sLnZhbHVlLFxuICAgICAgICBQcmlvcml0eVNoaWZ0OiB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbj8uQXBwbGljYXRpb24/LlByaW9yaXR5U2hpZnQgfHwgMCxcbiAgICAgIH0sXG4gICAgICBBY2Nlc3NSaWdodExvb2t1cHM6IFtdLFxuICAgICAgRGF0YVRva2Vuczoge30sXG4gICAgICBMaWNlbnNlQ29uZmlndXJhdGlvbkxvb2t1cHM6IFtdLFxuICAgICAgTG9va3VwQ29uZmlnOiB7XG4gICAgICAgIElzUHJpdmF0ZTogdGhpcy5Jc1ByaXZhdGVGb3JtQ29udHJvbC52YWx1ZSxcbiAgICAgICAgSXNUcmlnZ2VyU2lnbkluOiB0aGlzLklzUHJpdmF0ZUZvcm1Db250cm9sLnZhbHVlXG4gICAgICAgICAgPyB0aGlzLklzVHJpZ2dlclNpZ25JbkZvcm1Db250cm9sLnZhbHVlXG4gICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgUGF0aFJlZ2V4OiBgJHt0aGlzLlJvdXRlRm9ybUNvbnRyb2wudmFsdWV9LipgLFxuICAgICAgICBRdWVyeVJlZ2V4OiB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbj8uTG9va3VwQ29uZmlnPy5RdWVyeVJlZ2V4IHx8ICcnLFxuICAgICAgICBIZWFkZXJSZWdleDogdGhpcy5FZGl0aW5nQXBwbGljYXRpb24/Lkxvb2t1cENvbmZpZz8uSGVhZGVyUmVnZXggfHwgJycsXG4gICAgICAgIEFsbG93ZWRNZXRob2RzOiB0aGlzLk1ldGhvZHNGb3JtQ29udHJvbD8udmFsdWVcbiAgICAgICAgICA/LnNwbGl0KCcgJylcbiAgICAgICAgICAuZmlsdGVyKCh2OiBzdHJpbmcpID0+ICEhdiksXG4gICAgICB9LFxuICAgICAgUHJvY2Vzc29yOiB7XG4gICAgICAgIFR5cGU6IHRoaXMuUHJvY2Vzc29yVHlwZSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHN3aXRjaCAoYXBwLlByb2Nlc3Nvci5UeXBlKSB7XG4gICAgICBjYXNlICdERlMnOlxuICAgICAgICBhcHAuUHJvY2Vzc29yLkJhc2VIcmVmID0gYCR7dGhpcy5Sb3V0ZUZvcm1Db250cm9sLnZhbHVlfS9gLnJlcGxhY2UoXG4gICAgICAgICAgJy8vJyxcbiAgICAgICAgICAnLydcbiAgICAgICAgKTtcblxuICAgICAgICBhcHAuUHJvY2Vzc29yLkRlZmF1bHRGaWxlID1cbiAgICAgICAgICB0aGlzLkRlZmF1bHRGaWxlRm9ybUNvbnRyb2wudmFsdWUgfHwgJ2luZGV4Lmh0bWwnO1xuXG4gICAgICAgIGFwcC5Mb3dDb2RlVW5pdCA9IHtcbiAgICAgICAgICBUeXBlOiB0aGlzLkxDVVR5cGUsXG4gICAgICAgIH07XG5cbiAgICAgICAgc3dpdGNoIChhcHAuTG93Q29kZVVuaXQuVHlwZSkge1xuICAgICAgICAgIGNhc2UgJ0dpdEh1Yic6XG4gICAgICAgICAgICBhcHAuTG93Q29kZVVuaXQuT3JnYW5pemF0aW9uID1cbiAgICAgICAgICAgICAgdGhpcy5Tb3VyY2VDb250cm9sRm9ybUNvbnRyb2xzLk9yZ2FuaXphdGlvbkZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgICAgICAgICBhcHAuTG93Q29kZVVuaXQuUmVwb3NpdG9yeSA9XG4gICAgICAgICAgICAgIHRoaXMuU291cmNlQ29udHJvbEZvcm1Db250cm9scy5SZXBvc2l0b3J5Rm9ybUNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgICAgIGFwcC5Mb3dDb2RlVW5pdC5CdWlsZCA9IHRoaXMuQnVpbGRGb3JtQ29udHJvbC52YWx1ZTtcblxuICAgICAgICAgICAgYXBwLkxvd0NvZGVVbml0LlBhdGggPVxuICAgICAgICAgICAgICB0aGlzLlNvdXJjZUNvbnRyb2xGb3JtQ29udHJvbHMuQnVpbGRQYXRoRm9ybUNvbnRyb2wudmFsdWU7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ05QTSc6XG4gICAgICAgICAgICBhcHAuTG93Q29kZVVuaXQuUGFja2FnZSA9IHRoaXMuUGFja2FnZUZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgICAgICAgICBhcHAuTG93Q29kZVVuaXQuVmVyc2lvbiA9IHRoaXMuVmVyc2lvbkZvcm1Db250cm9sLnZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdaaXAnOlxuICAgICAgICAgICAgYXBwLkxvd0NvZGVVbml0LlppcEZpbGUgPSB0aGlzLlppcEZpbGVGb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdPQXV0aCc6XG4gICAgICAgIGFwcC5Qcm9jZXNzb3IuU2NvcGVzID0gdGhpcy5TY29wZXNGb3JtQ29udHJvbC52YWx1ZS5zcGxpdCgnICcpO1xuXG4gICAgICAgIGFwcC5Qcm9jZXNzb3IuVG9rZW5Mb29rdXAgPSB0aGlzLlRva2VuTG9va3VwRm9ybUNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgYXBwLkxvd0NvZGVVbml0ID0ge1xuICAgICAgICAgIFR5cGU6IHRoaXMuTENVVHlwZSxcbiAgICAgICAgfTtcblxuICAgICAgICBzd2l0Y2ggKGFwcC5Mb3dDb2RlVW5pdC5UeXBlKSB7XG4gICAgICAgICAgY2FzZSAnR2l0SHViT0F1dGgnOlxuICAgICAgICAgICAgYXBwLkxvd0NvZGVVbml0LkNsaWVudElEID0gdGhpcy5DbGllbnRJREZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgICAgICAgICBhcHAuTG93Q29kZVVuaXQuQ2xpZW50U2VjcmV0ID0gdGhpcy5DbGllbnRTZWNyZXRGb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdQcm94eSc6XG4gICAgICAgIGFwcC5Qcm9jZXNzb3IuSW5ib3VuZFBhdGggPSB0aGlzLkluYm91bmRQYXRoRm9ybUNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgYXBwLkxvd0NvZGVVbml0ID0ge1xuICAgICAgICAgIFR5cGU6IHRoaXMuTENVVHlwZSxcbiAgICAgICAgfTtcblxuICAgICAgICBzd2l0Y2ggKGFwcC5Mb3dDb2RlVW5pdC5UeXBlKSB7XG4gICAgICAgICAgY2FzZSAnQVBJJzpcbiAgICAgICAgICAgIGFwcC5Mb3dDb2RlVW5pdC5BUElSb290ID0gdGhpcy5BUElSb290Rm9ybUNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgICAgIGFwcC5Mb3dDb2RlVW5pdC5TZWN1cml0eSA9IHRoaXMuU2VjdXJpdHlGb3JtQ29udHJvbC52YWx1ZTtcblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdTUEEnOlxuICAgICAgICAgICAgYXBwLkxvd0NvZGVVbml0LlNQQVJvb3QgPSB0aGlzLlNQQVJvb3RGb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdSZWRpcmVjdCc6XG4gICAgICAgIGFwcC5Qcm9jZXNzb3IuUGVybWFuZW50ID0gISF0aGlzLlBlcm1hbmVudEZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgICAgIGFwcC5Qcm9jZXNzb3IuUHJlc2VydmVNZXRob2QgPSAhIXRoaXMuUHJlc2VydmVNZXRob2RGb3JtQ29udHJvbC52YWx1ZTtcblxuICAgICAgICBhcHAuUHJvY2Vzc29yLlJlZGlyZWN0ID0gdGhpcy5SZWRpcmVjdEZvcm1Db250cm9sLnZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoIWFwcC5Mb29rdXBDb25maWcuUGF0aFJlZ2V4LnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgYXBwLkxvb2t1cENvbmZpZy5QYXRoUmVnZXggPSBgLyR7YXBwLkxvb2t1cENvbmZpZy5QYXRoUmVnZXh9YDtcbiAgICB9XG5cbiAgICBjb25zdCBzYXZlQXBwUmVxOiBTYXZlQXBwbGljYXRpb25Bc0NvZGVFdmVudFJlcXVlc3QgPSB7XG4gICAgICBQcm9qZWN0TG9va3VwOiB0aGlzLlByb2plY3RMb29rdXAsXG4gICAgICBBcHBsaWNhdGlvbjogYXBwLFxuICAgICAgQXBwbGljYXRpb25Mb29rdXA6IHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uTG9va3VwIHx8IEd1aWQuQ3JlYXRlUmF3KCksXG4gICAgfTtcblxuICAgIGlmICh0aGlzLkhhc0J1aWxkRm9ybUNvbnRyb2wudmFsdWUgJiYgdGhpcy5Qcm9jZXNzb3JUeXBlICE9PSAncmVkaXJlY3QnKSB7XG4gICAgICBpZiAoYXBwKSB7XG4gICAgICAgIGFwcC5Tb3VyY2VDb250cm9sTG9va3VwID0gdGhpcy5Tb3VyY2VDb250cm9sTG9va3VwRm9ybUNvbnRyb2wudmFsdWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChhcHApIHtcbiAgICAgIGFwcC5Tb3VyY2VDb250cm9sTG9va3VwID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLmFwcHNGbG93RXZlbnRzU3ZjLlNhdmVBcHBsaWNhdGlvbkFzQ29kZShzYXZlQXBwUmVxKTtcbiAgfVxuXG4gIHB1YmxpYyBTZXRFZGl0aW5nQXBwbGljYXRpb24oYXBwTG9va3VwOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbkxvb2t1cCA9IGFwcExvb2t1cDtcblxuICAgIHRoaXMuc2V0dXBBcHBsaWNhdGlvbkZvcm0oKTtcbiAgfVxuXG4gIHB1YmxpYyBTb3VyY2VDb250cm9sTG9va3VwQ2hhbmdlZChldmVudDogTWF0U2VsZWN0Q2hhbmdlKTogdm9pZCB7XG4gICAgLy8gIFRPRE86ICBBbnl0aGluZyB0byBkbyBoZXJlIG9uIGNoYW5nZT9cbiAgfVxuXG4gIHB1YmxpYyBTdGFydHNXaXRoKGFwcDogRWFDQXBwbGljYXRpb25Bc0NvZGUsIGFwcFJvdXRlQmFzZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKGFwcFJvdXRlQmFzZSA9PT0gJy8nKSB7XG4gICAgICByZXR1cm4gYXBwPy5Mb29rdXBDb25maWc/LlBhdGhSZWdleCA9PT0gJy8uKic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBhcHA/Lkxvb2t1cENvbmZpZz8uUGF0aFJlZ2V4LnN0YXJ0c1dpdGgoYXBwUm91dGVCYXNlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgVW5wYWNrKGFwcExvb2t1cDogc3RyaW5nLCBhcHA6IEVhQ0FwcGxpY2F0aW9uQXNDb2RlKTogdm9pZCB7XG4gICAgdGhpcy5hcHBzRmxvd0V2ZW50c1N2Yy5VbnBhY2tMb3dDb2RlVW5pdCh7XG4gICAgICBBcHBsaWNhdGlvbkxvb2t1cDogYXBwTG9va3VwLFxuICAgICAgQXBwbGljYXRpb25OYW1lOiBhcHAuQXBwbGljYXRpb24/Lk5hbWUsXG4gICAgICBWZXJzaW9uOiBhcHAuTG93Q29kZVVuaXQ/LlZlcnNpb24gfHwgYXBwLkxvd0NvZGVVbml0Py5CdWlsZCxcbiAgICB9KTtcbiAgfVxuXG4gIC8vICBIZWxwZXJzXG4gIHByb3RlY3RlZCBjbGVhbnVwTGN1VHlwZVN1YkZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdtZXRob2RzJyk7XG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdhcGlSb290Jyk7XG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdzZWN1cml0eScpO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdzcGFSb290Jyk7XG5cbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ2FwcGxpY2F0aW9uSWQnKTtcblxuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnYnVpbGQnKTtcblxuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnY2xpZW50SWQnKTtcbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ2NsaWVudFNlY3JldCcpO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCd6aXBGaWxlJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2xlYW51cFByb2Nlc3NvclR5cGVTdWJGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnZGVmYXVsdEZpbGUnKTtcbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ2Rmc0xjdVR5cGUnKTtcblxuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnb2F1dGhMY3VUeXBlJyk7XG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdzY29wZXMnKTtcbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3Rva2VuTG9va3VwJyk7XG5cbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ2luYm91bmRQYXRoJyk7XG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdwcm94eUxjdVR5cGUnKTtcblxuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgncmVkaXJlY3QnKTtcbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3Blcm1hbmVudCcpO1xuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgncHJlc2VydmVNZXRob2QnKTtcblxuICAgIHRoaXMuY2xlYW51cExjdVR5cGVTdWJGb3JtKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0dXBBcHBsaWNhdGlvbkZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5Qcm9jZXNzb3JUeXBlID0gdGhpcy5FZGl0aW5nQXBwbGljYXRpb24/LlByb2Nlc3Nvcj8uVHlwZSB8fCAnJztcbiAgICBjb25zb2xlLmxvZygnUHJvY2Vzc29yVHlwZSA9ICcsIHRoaXMuUHJvY2Vzc29yVHlwZSk7XG5cbiAgICBpZiAodGhpcy5FZGl0aW5nQXBwbGljYXRpb24gIT0gbnVsbCkge1xuICAgICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cCA9IHRoaXMuZm9ybUJsZHIuZ3JvdXAoe1xuICAgICAgICBuYW1lOiBbdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uQXBwbGljYXRpb24/Lk5hbWUsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICBkZXNjcmlwdGlvbjogW1xuICAgICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkFwcGxpY2F0aW9uPy5EZXNjcmlwdGlvbixcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBdLFxuICAgICAgICByb3V0ZTogW1xuICAgICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvb2t1cENvbmZpZz8uUGF0aFJlZ2V4LnJlcGxhY2UoJy4qJywgJycpIHx8XG4gICAgICAgICAgICAnLycsXG4gICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgXSxcbiAgICAgICAgLy8gcHJpb3JpdHk6IFtcbiAgICAgICAgLy8gICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5BcHBsaWNhdGlvbj8uUHJpb3JpdHkgfHwgMTAwMDAsXG4gICAgICAgIC8vICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgLy8gXSxcbiAgICAgICAgcHJvY1R5cGU6IFt0aGlzLlByb2Nlc3NvclR5cGUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zZXR1cEJ1aWxkRm9ybSgpO1xuXG4gICAgICB0aGlzLnNldHVwU2VjdXJpdHlGb3JtKCk7XG5cbiAgICAgIHRoaXMuc2V0dXBQcm9jZXNzb3JUeXBlU3ViRm9ybSgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cEJ1aWxkRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAnaGFzQnVpbGQnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICAhIXRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvd0NvZGVVbml0Py5Tb3VyY2VDb250cm9sTG9va3VwIHx8IGZhbHNlLFxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ3NvdXJjZUNvbnRyb2xMb29rdXAnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uU291cmNlQ29udHJvbExvb2t1cCB8fCAnJyxcbiAgICAgICAgW11cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwRGZzRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLkxDVVR5cGUgPSB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uVHlwZSB8fCAnJztcblxuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICdkZWZhdWx0RmlsZScsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLlByb2Nlc3Nvcj8uRGVmYXVsdEZpbGUgfHwgJ2luZGV4Lmh0bWwnLFxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ2xjdVR5cGUnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKHRoaXMuTENVVHlwZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0dXBMQ1VBUElGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICdtZXRob2RzJyxcbiAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG9va3VwQ29uZmlnPy5BbGxvd2VkTWV0aG9kcz8uam9pbignICcpIHx8ICcnLFxuICAgICAgICBbXVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAnYXBpUm9vdCcsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvd0NvZGVVbml0Py5BUElSb290IHx8ICcnLFxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ3NlY3VyaXR5JyxcbiAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG93Q29kZVVuaXQ/LlNlY3VyaXR5IHx8ICcnLFxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwTENVQXBwbGljYXRpb25Qb2ludGVyRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAnYXBwbGljYXRpb25JZCcsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvd0NvZGVVbml0Py5BcHBsaWNhdGlvbklEIHx8ICcnLFxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwTENVR2l0SHViRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAnYnVpbGQnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uQnVpbGQgfHwgJ2xhdGVzdCcsXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0dXBMQ1VHaXRIdWJPQXV0aEZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ2NsaWVudElkJyxcbiAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG93Q29kZVVuaXQ/LkNsaWVudElEIHx8ICcnLFxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ2NsaWVudFNlY3JldCcsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvd0NvZGVVbml0Py5DbGllbnRTZWNyZXQgfHwgJycsXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0dXBMQ1VOUE1Gb3JtKCk6IHZvaWQge1xuICAgIC8vIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAvLyAgICdwYWNrYWdlJyxcbiAgICAvLyAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAvLyAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG93Q29kZVVuaXQ/LlBhY2thZ2UgfHwgJycsXG4gICAgLy8gICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgIC8vICAgKVxuICAgIC8vICk7XG4gICAgLy8gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgIC8vICAgJ3ZlcnNpb24nLFxuICAgIC8vICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgIC8vICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uVmVyc2lvbiB8fCAnJyxcbiAgICAvLyAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgLy8gICApXG4gICAgLy8gKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cExDVVNQQUZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ3NwYVJvb3QnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uU1BBUm9vdCB8fCAnJyxcbiAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cExDVVppcEZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ3ppcEZpbGUnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uWmlwRmlsZSB8fCAnJyxcbiAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cExjdVR5cGVTdWJGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYW51cExjdVR5cGVTdWJGb3JtKCk7XG5cbiAgICAvLyB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3BhY2thZ2UnKTtcbiAgICAvLyB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3ZlcnNpb24nKTtcblxuICAgIGlmICh0aGlzLkxDVVR5cGUpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5MQ1VUeXBlKSB7XG4gICAgICAgIGNhc2UgJ0FQSSc6XG4gICAgICAgICAgdGhpcy5zZXR1cExDVUFQSUZvcm0oKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdBcHBsaWNhdGlvblBvaW50ZXInOlxuICAgICAgICAgIHRoaXMuc2V0dXBMQ1VBcHBsaWNhdGlvblBvaW50ZXJGb3JtKCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnR2l0SHViJzpcbiAgICAgICAgICB0aGlzLnNldHVwTENVR2l0SHViRm9ybSgpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ0dpdEh1Yk9BdXRoJzpcbiAgICAgICAgICB0aGlzLnNldHVwTENVR2l0SHViT0F1dGhGb3JtKCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnTlBNJzpcbiAgICAgICAgICB0aGlzLnNldHVwTENVTlBNRm9ybSgpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ1NQQSc6XG4gICAgICAgICAgdGhpcy5zZXR1cExDVVNQQUZvcm0oKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdaaXAnOlxuICAgICAgICAgIHRoaXMuc2V0dXBMQ1VaaXBGb3JtKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwT0F1dGhGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuTENVVHlwZSA9IHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvd0NvZGVVbml0Py5UeXBlIHx8ICcnO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ3Njb3BlcycsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLlByb2Nlc3Nvcj8uU2NvcGVzPy5Kb2luKCcgJykgfHwgJycsXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAndG9rZW5Mb29rdXAnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Qcm9jZXNzb3I/LlRva2VuTG9va3VwIHx8ICcnLFxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ2xjdVR5cGUnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKHRoaXMuTENVVHlwZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0dXBQcm94eUZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5MQ1VUeXBlID0gdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG93Q29kZVVuaXQ/LlR5cGUgfHwgJyc7XG5cbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAnaW5ib3VuZFBhdGgnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Qcm9jZXNzb3I/LkluYm91bmRQYXRoIHx8ICcnLFxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ2xjdVR5cGUnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKHRoaXMuTENVVHlwZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0dXBQcm9jZXNzb3JUeXBlU3ViRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFudXBQcm9jZXNzb3JUeXBlU3ViRm9ybSgpO1xuXG4gICAgaWYgKHRoaXMuUHJvY2Vzc29yVHlwZSkge1xuICAgICAgc3dpdGNoICh0aGlzLlByb2Nlc3NvclR5cGUpIHtcbiAgICAgICAgY2FzZSAnREZTJzpcbiAgICAgICAgICB0aGlzLnNldHVwRGZzRm9ybSgpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ09BdXRoJzpcbiAgICAgICAgICB0aGlzLnNldHVwT0F1dGhGb3JtKCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnUHJveHknOlxuICAgICAgICAgIHRoaXMuc2V0dXBQcm94eUZvcm0oKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdSZWRpcmVjdCc6XG4gICAgICAgICAgdGhpcy5zZXR1cFJlZGlyZWN0Rm9ybSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2V0dXBMY3VUeXBlU3ViRm9ybSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwUmVkaXJlY3RGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICdyZWRpcmVjdCcsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2wodGhpcy5FZGl0aW5nQXBwbGljYXRpb24uUHJvY2Vzc29yPy5SZWRpcmVjdCB8fCAnJywgW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgXSlcbiAgICApO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ3Blcm1hbmVudCcsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLlByb2Nlc3Nvcj8uUGVybWFuZW50IHx8IGZhbHNlLFxuICAgICAgICBbXVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAncHJlc2VydmVNZXRob2QnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Qcm9jZXNzb3I/LlByZXNlcnZlTWV0aG9kIHx8IGZhbHNlLFxuICAgICAgICBbXVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5EZXRlcm1pbmVUb29sdGlwVGV4dCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwU2VjdXJpdHlGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICdpc1ByaXZhdGUnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb29rdXBDb25maWc/LklzUHJpdmF0ZSB8fCBmYWxzZSxcbiAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICdpc1RyaWdnZXJTaWduSW4nLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb29rdXBDb25maWc/LklzVHJpZ2dlclNpZ25JbiB8fCBmYWxzZSxcbiAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICApXG4gICAgKTtcbiAgfVxufVxuIl19
|