@wavemaker/app-ng-runtime 11.11.4-rc.6172 → 11.11.5-rc.214
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/components/base/bundles/index.umd.js +1 -1
- package/components/base/esm2022/widgets/common/base/base-field-validations.mjs +2 -2
- package/components/base/fesm2022/index.mjs +1 -1
- package/components/base/fesm2022/index.mjs.map +1 -1
- package/components/data/form/bundles/index.umd.js +20 -1
- package/components/data/form/esm2022/form-action/form-action.directive.mjs +5 -2
- package/components/data/form/esm2022/form-field/form-field.directive.mjs +2 -1
- package/components/data/form/esm2022/form.component.mjs +15 -1
- package/components/data/form/esm2022/form.props.mjs +2 -1
- package/components/data/form/fesm2022/index.mjs +20 -1
- package/components/data/form/fesm2022/index.mjs.map +1 -1
- package/components/data/form/form.component.d.ts +1 -0
- package/components/data/list/bundles/index.umd.js +53 -10
- package/components/data/list/esm2022/list.component.mjs +51 -10
- package/components/data/list/esm2022/list.props.mjs +4 -2
- package/components/data/list/fesm2022/index.mjs +53 -10
- package/components/data/list/fesm2022/index.mjs.map +1 -1
- package/components/data/list/list.component.d.ts +7 -0
- package/components/data/pagination/bundles/index.umd.js +502 -106
- package/components/data/pagination/esm2022/pagination.component.mjs +500 -105
- package/components/data/pagination/esm2022/pagination.props.mjs +4 -1
- package/components/data/pagination/fesm2022/index.mjs +502 -104
- package/components/data/pagination/fesm2022/index.mjs.map +1 -1
- package/components/data/pagination/pagination.component.d.ts +21 -1
- package/components/data/table/bundles/index.umd.js +89 -11
- package/components/data/table/esm2022/table-column/table-column.directive.mjs +3 -2
- package/components/data/table/esm2022/table-column/table-column.props.mjs +2 -1
- package/components/data/table/esm2022/table.component.mjs +82 -12
- package/components/data/table/esm2022/table.props.mjs +7 -1
- package/components/data/table/fesm2022/index.mjs +90 -12
- package/components/data/table/fesm2022/index.mjs.map +1 -1
- package/components/data/table/table-column/table-column.directive.d.ts +1 -0
- package/components/data/table/table.component.d.ts +17 -0
- package/components/input/epoch/base-date-time.component.d.ts +3 -1
- package/components/input/epoch/bundles/index.umd.js +123 -65
- package/components/input/epoch/esm2022/base-date-time.component.mjs +31 -20
- package/components/input/epoch/esm2022/date/date.component.mjs +5 -6
- package/components/input/epoch/esm2022/date-time/date-time.component.mjs +45 -22
- package/components/input/epoch/esm2022/date-time/date-time.props.mjs +3 -2
- package/components/input/epoch/esm2022/time/time.component.mjs +40 -14
- package/components/input/epoch/esm2022/time/time.props.mjs +3 -2
- package/components/input/epoch/fesm2022/index.mjs +118 -60
- package/components/input/epoch/fesm2022/index.mjs.map +1 -1
- package/components/input/slider/bundles/index.umd.js +107 -38
- package/components/input/slider/esm2022/slider.component.mjs +86 -18
- package/components/input/slider/esm2022/slider.props.mjs +5 -3
- package/components/input/slider/fesm2022/index.mjs +88 -19
- package/components/input/slider/fesm2022/index.mjs.map +1 -1
- package/components/input/slider/slider.component.d.ts +5 -0
- package/npm-shrinkwrap.json +2 -2
- package/oAuth/esm2022/oAuth.service.mjs +1 -1
- package/oAuth/fesm2022/index.mjs.map +1 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/base/bundles/index.umd.js +84 -34
- package/runtime/base/components/app-component/app.component.d.ts +10 -3
- package/runtime/base/esm2022/components/app-component/app.component.mjs +85 -34
- package/runtime/base/esm2022/util/wm-route-reuse-strategy.mjs +2 -2
- package/runtime/base/fesm2022/index.mjs +85 -35
- package/runtime/base/fesm2022/index.mjs.map +1 -1
- package/scripts/datatable/datatable.js +56 -10
|
@@ -868,7 +868,7 @@
|
|
|
868
868
|
.map(k => k + '=' + route.queryParams[k])
|
|
869
869
|
.sort().join('&');
|
|
870
870
|
let pageName = route.params.pageName;
|
|
871
|
-
if (route.data.pageName && route.routeConfig.path ===
|
|
871
|
+
if (route.data.pageName && route.routeConfig.path === route.data.pageName) {
|
|
872
872
|
pageName = route.data.pageName;
|
|
873
873
|
}
|
|
874
874
|
return pageName && (pageName + (queryParams ? `?${queryParams}` : ''));
|
|
@@ -3878,56 +3878,70 @@
|
|
|
3878
3878
|
}], () => [{ type: i1__namespace.AbstractI18nService }], null); })();
|
|
3879
3879
|
|
|
3880
3880
|
const _c0 = ["dynamicComponent"];
|
|
3881
|
-
function
|
|
3881
|
+
function AppComponent_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
3882
|
+
const _r1 = i0__namespace.ɵɵgetCurrentView();
|
|
3883
|
+
i0__namespace.ɵɵelement(0, "div", 10);
|
|
3884
|
+
i0__namespace.ɵɵelementStart(1, "a", 11);
|
|
3885
|
+
i0__namespace.ɵɵlistener("click", function AppComponent_Conditional_0_Conditional_0_Template_a_click_1_listener($event) { i0__namespace.ɵɵrestoreView(_r1); const ctx_r1 = i0__namespace.ɵɵnextContext(2); return i0__namespace.ɵɵresetView(ctx_r1.skipToAppContent($event)); });
|
|
3886
|
+
i0__namespace.ɵɵtext(2);
|
|
3887
|
+
i0__namespace.ɵɵelementEnd();
|
|
3888
|
+
} if (rf & 2) {
|
|
3889
|
+
const ctx_r1 = i0__namespace.ɵɵnextContext(2);
|
|
3890
|
+
i0__namespace.ɵɵadvance(2);
|
|
3891
|
+
i0__namespace.ɵɵtextInterpolate(ctx_r1.appLocale.LABEL_SKIP_TO_MAIN_CONTENT || "Skip to main content");
|
|
3892
|
+
} }
|
|
3893
|
+
function AppComponent_Conditional_0_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
3882
3894
|
i0__namespace.ɵɵelement(0, "div", 2);
|
|
3883
3895
|
} }
|
|
3884
|
-
function
|
|
3885
|
-
const
|
|
3886
|
-
i0__namespace.ɵɵelementStart(0, "li",
|
|
3887
|
-
i0__namespace.ɵɵlistener("click", function
|
|
3896
|
+
function AppComponent_Conditional_0_ng_template_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
3897
|
+
const _r3 = i0__namespace.ɵɵgetCurrentView();
|
|
3898
|
+
i0__namespace.ɵɵelementStart(0, "li", 13)(1, "button", 14);
|
|
3899
|
+
i0__namespace.ɵɵlistener("click", function AppComponent_Conditional_0_ng_template_5_For_2_Template_button_click_1_listener() { const provider_r4 = i0__namespace.ɵɵrestoreView(_r3).$implicit; return i0__namespace.ɵɵresetView(provider_r4.invoke()); });
|
|
3888
3900
|
i0__namespace.ɵɵtext(2);
|
|
3889
3901
|
i0__namespace.ɵɵelementEnd()();
|
|
3890
3902
|
} if (rf & 2) {
|
|
3891
|
-
const
|
|
3903
|
+
const provider_r4 = ctx.$implicit;
|
|
3892
3904
|
i0__namespace.ɵɵadvance(2);
|
|
3893
|
-
i0__namespace.ɵɵtextInterpolate(
|
|
3905
|
+
i0__namespace.ɵɵtextInterpolate(provider_r4.name);
|
|
3894
3906
|
} }
|
|
3895
|
-
function
|
|
3896
|
-
i0__namespace.ɵɵelementStart(0, "ul",
|
|
3897
|
-
i0__namespace.ɵɵrepeaterCreate(1,
|
|
3907
|
+
function AppComponent_Conditional_0_ng_template_5_Template(rf, ctx) { if (rf & 1) {
|
|
3908
|
+
i0__namespace.ɵɵelementStart(0, "ul", 12);
|
|
3909
|
+
i0__namespace.ɵɵrepeaterCreate(1, AppComponent_Conditional_0_ng_template_5_For_2_Template, 3, 1, "li", 13, i0__namespace.ɵɵrepeaterTrackByIdentity);
|
|
3898
3910
|
i0__namespace.ɵɵelementEnd();
|
|
3899
3911
|
} if (rf & 2) {
|
|
3900
|
-
const
|
|
3912
|
+
const ctx_r1 = i0__namespace.ɵɵnextContext(2);
|
|
3901
3913
|
i0__namespace.ɵɵadvance();
|
|
3902
|
-
i0__namespace.ɵɵrepeater(
|
|
3914
|
+
i0__namespace.ɵɵrepeater(ctx_r1.providersConfig);
|
|
3903
3915
|
} }
|
|
3904
|
-
function
|
|
3916
|
+
function AppComponent_Conditional_0_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
3905
3917
|
i0__namespace.ɵɵelement(0, "div", 6);
|
|
3906
3918
|
} }
|
|
3907
|
-
function
|
|
3919
|
+
function AppComponent_Conditional_0_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
3908
3920
|
i0__namespace.ɵɵelement(0, "div", 7);
|
|
3909
3921
|
} }
|
|
3910
3922
|
function AppComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
3911
|
-
i0__namespace.ɵɵ
|
|
3912
|
-
i0__namespace.ɵɵ
|
|
3913
|
-
i0__namespace.ɵɵ
|
|
3914
|
-
i0__namespace.ɵɵ
|
|
3915
|
-
i0__namespace.ɵɵ
|
|
3923
|
+
i0__namespace.ɵɵtemplate(0, AppComponent_Conditional_0_Conditional_0_Template, 3, 1);
|
|
3924
|
+
i0__namespace.ɵɵelement(1, "router-outlet");
|
|
3925
|
+
i0__namespace.ɵɵtemplate(2, AppComponent_Conditional_0_Conditional_2_Template, 1, 0, "div", 2);
|
|
3926
|
+
i0__namespace.ɵɵelement(3, "app-spinner", 3);
|
|
3927
|
+
i0__namespace.ɵɵelementStart(4, "div", 4);
|
|
3928
|
+
i0__namespace.ɵɵtemplate(5, AppComponent_Conditional_0_ng_template_5_Template, 3, 0, "ng-template", null, 1, i0__namespace.ɵɵtemplateRefExtractor);
|
|
3916
3929
|
i0__namespace.ɵɵelementEnd();
|
|
3917
|
-
i0__namespace.ɵɵelement(
|
|
3918
|
-
i0__namespace.ɵɵtemplate(
|
|
3919
|
-
i0__namespace.ɵɵelement(
|
|
3930
|
+
i0__namespace.ɵɵelement(7, "div", 5);
|
|
3931
|
+
i0__namespace.ɵɵtemplate(8, AppComponent_Conditional_0_Conditional_8_Template, 1, 0, "div", 6)(9, AppComponent_Conditional_0_Conditional_9_Template, 1, 0, "div", 7);
|
|
3932
|
+
i0__namespace.ɵɵelement(10, "div", 8)(11, "i", 9);
|
|
3920
3933
|
} if (rf & 2) {
|
|
3921
|
-
const
|
|
3922
|
-
i0__namespace.ɵɵ
|
|
3923
|
-
i0__namespace.ɵɵ
|
|
3934
|
+
const ctx_r1 = i0__namespace.ɵɵnextContext();
|
|
3935
|
+
i0__namespace.ɵɵconditional(ctx_r1.enableSkipToMainContent ? 0 : -1);
|
|
3936
|
+
i0__namespace.ɵɵadvance(2);
|
|
3937
|
+
i0__namespace.ɵɵconditional(ctx_r1.isApplicationType ? 2 : -1);
|
|
3924
3938
|
i0__namespace.ɵɵadvance();
|
|
3925
|
-
i0__namespace.ɵɵproperty("show",
|
|
3926
|
-
i0__namespace.ɵɵattribute("aria-label",
|
|
3939
|
+
i0__namespace.ɵɵproperty("show", ctx_r1.spinner.show)("spinnermessages", ctx_r1.spinner.messages);
|
|
3940
|
+
i0__namespace.ɵɵattribute("aria-label", ctx_r1.spinner.arialabel || "Loading");
|
|
3927
3941
|
i0__namespace.ɵɵadvance(5);
|
|
3928
|
-
i0__namespace.ɵɵconditional(!
|
|
3942
|
+
i0__namespace.ɵɵconditional(!ctx_r1.isApplicationType ? 8 : -1);
|
|
3929
3943
|
i0__namespace.ɵɵadvance();
|
|
3930
|
-
i0__namespace.ɵɵconditional(!
|
|
3944
|
+
i0__namespace.ɵɵconditional(!ctx_r1.isApplicationType ? 9 : -1);
|
|
3931
3945
|
} }
|
|
3932
3946
|
class AppComponent {
|
|
3933
3947
|
constructor(_pipeProvider, _appRef, elRef, oAuthService, dialogService, spinnerService, ngZone, router, app, appManager, customIconsLoaderService) {
|
|
@@ -3941,11 +3955,15 @@
|
|
|
3941
3955
|
this.customIconsLoaderService = customIconsLoaderService;
|
|
3942
3956
|
this.startApp = false;
|
|
3943
3957
|
this.isApplicationType = false;
|
|
3958
|
+
this.enableSkipToMainContent = i1.getWmProjectProperties().enableSkipToMainContent === 'true' || i1.getWmProjectProperties().enableSkipToMainContent === true;
|
|
3959
|
+
this.retryCount = 0;
|
|
3960
|
+
this.appLocale = {};
|
|
3944
3961
|
this.spinner = { show: false, messages: [], arialabel: '' };
|
|
3945
3962
|
this.isOAuthDialogOpen = false;
|
|
3946
3963
|
i1.setPipeProvider(_pipeProvider);
|
|
3947
3964
|
i1.setNgZone(ngZone);
|
|
3948
3965
|
i1.setAppRef(_appRef);
|
|
3966
|
+
this.appLocale = app.appLocale;
|
|
3949
3967
|
this.isApplicationType = i1.getWmProjectProperties().type === 'APPLICATION';
|
|
3950
3968
|
if (this.isApplicationType) {
|
|
3951
3969
|
this.customIconsLoaderService.load();
|
|
@@ -4054,13 +4072,45 @@
|
|
|
4054
4072
|
return componentRef;
|
|
4055
4073
|
};
|
|
4056
4074
|
}
|
|
4075
|
+
skipToAppContent(event) {
|
|
4076
|
+
event.preventDefault();
|
|
4077
|
+
this.retryCount = 0;
|
|
4078
|
+
this.tryFocusContent();
|
|
4079
|
+
}
|
|
4080
|
+
tryFocusContent() {
|
|
4081
|
+
const contentEl = document.querySelector('.app-page-content');
|
|
4082
|
+
if (contentEl) {
|
|
4083
|
+
contentEl.setAttribute('tabindex', '-1'); // Ensure it's focusable
|
|
4084
|
+
contentEl.focus({ preventScroll: false });
|
|
4085
|
+
contentEl.scrollIntoView({ behavior: 'smooth' });
|
|
4086
|
+
}
|
|
4087
|
+
else if (this.retryCount < 10) {
|
|
4088
|
+
this.retryCount++;
|
|
4089
|
+
setTimeout(() => this.tryFocusContent(), 100); // Retry every 100ms
|
|
4090
|
+
}
|
|
4091
|
+
}
|
|
4057
4092
|
ngAfterViewInit() {
|
|
4058
4093
|
document.documentElement.setAttribute('lang', i1.getWmProjectProperties().defaultLanguage);
|
|
4059
4094
|
this.start();
|
|
4095
|
+
if (this.enableSkipToMainContent) {
|
|
4096
|
+
this.navigationEndSubscription = this.router.events
|
|
4097
|
+
.pipe(operators.filter((e) => e instanceof i1$1.NavigationEnd))
|
|
4098
|
+
.subscribe(() => {
|
|
4099
|
+
const el = document.getElementById('app-focus-start');
|
|
4100
|
+
if (el) {
|
|
4101
|
+
el.focus();
|
|
4102
|
+
}
|
|
4103
|
+
});
|
|
4104
|
+
}
|
|
4060
4105
|
}
|
|
4061
4106
|
ngDoCheck() {
|
|
4062
4107
|
i1.$invokeWatchers();
|
|
4063
4108
|
}
|
|
4109
|
+
ngOnDestroy() {
|
|
4110
|
+
if (this.navigationEndSubscription) {
|
|
4111
|
+
this.navigationEndSubscription.unsubscribe();
|
|
4112
|
+
}
|
|
4113
|
+
}
|
|
4064
4114
|
static { this.ɵfac = function AppComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AppComponent)(i0__namespace.ɵɵdirectiveInject(PipeProvider), i0__namespace.ɵɵdirectiveInject(i0__namespace.ApplicationRef), i0__namespace.ɵɵdirectiveInject(i0__namespace.ElementRef), i0__namespace.ɵɵdirectiveInject(i2$2__namespace.OAuthService), i0__namespace.ɵɵdirectiveInject(i1__namespace.AbstractDialogService), i0__namespace.ɵɵdirectiveInject(i1__namespace.AbstractSpinnerService), i0__namespace.ɵɵdirectiveInject(i0__namespace.NgZone), i0__namespace.ɵɵdirectiveInject(i1$1__namespace.Router), i0__namespace.ɵɵdirectiveInject(i1__namespace.App), i0__namespace.ɵɵdirectiveInject(AppManagerService), i0__namespace.ɵɵdirectiveInject(i1__namespace.CustomIconsLoaderService)); }; }
|
|
4065
4115
|
static { this.ɵcmp = /*@__PURE__*/ i0__namespace.ɵɵdefineComponent({ type: AppComponent, selectors: [["app-root"]], viewQuery: function AppComponent_Query(rf, ctx) { if (rf & 1) {
|
|
4066
4116
|
i0__namespace.ɵɵviewQuery(i1$1.RouterOutlet, 5);
|
|
@@ -4069,8 +4119,8 @@
|
|
|
4069
4119
|
let _t;
|
|
4070
4120
|
i0__namespace.ɵɵqueryRefresh(_t = i0__namespace.ɵɵloadQuery()) && (ctx.routerOutlet = _t.first);
|
|
4071
4121
|
i0__namespace.ɵɵqueryRefresh(_t = i0__namespace.ɵɵloadQuery()) && (ctx.dynamicComponentContainerRef = _t.first);
|
|
4072
|
-
} }, standalone: true, features: [i0__namespace.ɵɵStandaloneFeature], decls: 3, vars: 1, consts: [["dynamicComponent", ""], ["dialogBody", ""], ["wmContainer", "", "partialContainer", "", "content", "Common", "hidden", "", 1, "ng-hide"], ["name", "globalspinner", "classname", "global-spinner", "role", "alert", "aria-live", "assertive", 3, "show", "spinnermessages"], ["wmDialog", "", "name", "oAuthLoginDialog", "title", "Application is requesting you to sign in with", "close.event", "closeOAuthDialog()"], ["wmConfirmDialog", "", "name", "_app-confirm-dialog", "title.bind", "title", "message.bind", "message", "oktext.bind", "oktext", "canceltext.bind", "canceltext", "closable", "false", "iconclass.bind", "iconclass", "escape.event", "onEscape()", "ok.event", "onOk()", "cancel.event", "onCancel()", "close.event", "onClose()", "opened.event", "onOpen()"], ["wmConfirmDialog", "", "name", "PrefabConfirmDialog", "title.bind", "title", "message.bind", "text", "oktext.bind", "okButtonText", "canceltext.bind", "cancelButtonText", "closable", "false", "iconclass.bind", "iconclass", "escape.event", "onEscape()", "ok.event", "onOk()", "cancel.event", "onCancel()", "close.event", "onClose()", "opened.event", "onOpen()"], ["wmAlertDialog", "", "name", "PrefabAlertDialog", "title.bind", "title", "message.bind", "text", "oktext.bind", "okButtonText", "canceltext.bind", "cancelButtonText", "closable", "false", "iconclass.bind", "iconclass", "escape.event", "onEscape()", "ok.event", "onOk()", "cancel.event", "onCancel()", "close.event", "onClose()", "opened.event", "onOpen()"], ["wmAppExt", ""], ["id", "wm-mobile-display"], [1, "list-items"], [1, "list-item"], [1, "btn", 3, "click"]], template: function AppComponent_Template(rf, ctx) { if (rf & 1) {
|
|
4073
|
-
i0__namespace.ɵɵtemplate(0, AppComponent_Conditional_0_Template,
|
|
4122
|
+
} }, standalone: true, features: [i0__namespace.ɵɵStandaloneFeature], decls: 3, vars: 1, consts: [["dynamicComponent", ""], ["dialogBody", ""], ["wmContainer", "", "partialContainer", "", "content", "Common", "hidden", "", 1, "ng-hide"], ["name", "globalspinner", "classname", "global-spinner", "role", "alert", "aria-live", "assertive", 3, "show", "spinnermessages"], ["wmDialog", "", "name", "oAuthLoginDialog", "title", "Application is requesting you to sign in with", "close.event", "closeOAuthDialog()"], ["wmConfirmDialog", "", "name", "_app-confirm-dialog", "title.bind", "title", "message.bind", "message", "oktext.bind", "oktext", "canceltext.bind", "canceltext", "closable", "false", "iconclass.bind", "iconclass", "escape.event", "onEscape()", "ok.event", "onOk()", "cancel.event", "onCancel()", "close.event", "onClose()", "opened.event", "onOpen()"], ["wmConfirmDialog", "", "name", "PrefabConfirmDialog", "title.bind", "title", "message.bind", "text", "oktext.bind", "okButtonText", "canceltext.bind", "cancelButtonText", "closable", "false", "iconclass.bind", "iconclass", "escape.event", "onEscape()", "ok.event", "onOk()", "cancel.event", "onCancel()", "close.event", "onClose()", "opened.event", "onOpen()"], ["wmAlertDialog", "", "name", "PrefabAlertDialog", "title.bind", "title", "message.bind", "text", "oktext.bind", "okButtonText", "canceltext.bind", "cancelButtonText", "closable", "false", "iconclass.bind", "iconclass", "escape.event", "onEscape()", "ok.event", "onOk()", "cancel.event", "onCancel()", "close.event", "onClose()", "opened.event", "onOpen()"], ["wmAppExt", ""], ["id", "wm-mobile-display"], ["id", "app-focus-start", "tabindex", "-1"], ["href", "javascript:void(0);", 1, "skip", 3, "click"], [1, "list-items"], [1, "list-item"], [1, "btn", 3, "click"]], template: function AppComponent_Template(rf, ctx) { if (rf & 1) {
|
|
4123
|
+
i0__namespace.ɵɵtemplate(0, AppComponent_Conditional_0_Template, 12, 7);
|
|
4074
4124
|
i0__namespace.ɵɵelementContainer(1, null, 0);
|
|
4075
4125
|
} if (rf & 2) {
|
|
4076
4126
|
i0__namespace.ɵɵconditional(ctx.startApp ? 0 : -1);
|
|
@@ -4078,7 +4128,7 @@
|
|
|
4078
4128
|
}
|
|
4079
4129
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(AppComponent, [{
|
|
4080
4130
|
type: i0.Component,
|
|
4081
|
-
args: [{ standalone: true, imports: [i5.CommonModule, i3.WmComponentsModule, i1$1.RouterOutlet, alertDialog.AlertDialogComponent, confirmDialog.ConfirmDialogComponent, designDialog.DialogComponent, AppSpinnerComponent], selector: 'app-root', encapsulation: i0.ViewEncapsulation.None, template: "@if (startApp) {\n
|
|
4131
|
+
args: [{ standalone: true, imports: [i5.CommonModule, i3.WmComponentsModule, i1$1.RouterOutlet, alertDialog.AlertDialogComponent, confirmDialog.ConfirmDialogComponent, designDialog.DialogComponent, AppSpinnerComponent], selector: 'app-root', encapsulation: i0.ViewEncapsulation.None, template: "@if (startApp) {\n @if(enableSkipToMainContent) {\n <div id=\"app-focus-start\" tabindex=\"-1\"></div>\n <a href=\"javascript:void(0);\" class=\"skip\" (click)=\"skipToAppContent($event)\">{{appLocale.LABEL_SKIP_TO_MAIN_CONTENT || 'Skip to main content'}}</a>\n }\n <router-outlet></router-outlet>\n @if (isApplicationType) {\n <div wmContainer partialContainer content=\"Common\" hidden class=\"ng-hide\"></div>\n }\n <app-spinner name=\"globalspinner\" classname=\"global-spinner\" role=\"alert\" aria-live=\"assertive\" [attr.aria-label]=\"spinner.arialabel || 'Loading'\" [show]=\"spinner.show\" [spinnermessages]=\"spinner.messages\"></app-spinner>\n <div wmDialog name=\"oAuthLoginDialog\" title=\"Application is requesting you to sign in with\"\n close.event=\"closeOAuthDialog()\">\n <ng-template #dialogBody>\n <ul class=\"list-items\">\n @for (provider of providersConfig; track provider) {\n <li class=\"list-item\">\n <button class=\"btn\" (click)=\"provider.invoke()\">{{provider.name}}</button>\n </li>\n }\n </ul>\n </ng-template>\n </div>\n <div wmConfirmDialog name=\"_app-confirm-dialog\" title.bind=\"title\" message.bind=\"message\" oktext.bind=\"oktext\"\n canceltext.bind=\"canceltext\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n @if (!isApplicationType) {\n <div wmConfirmDialog name=\"PrefabConfirmDialog\" title.bind=\"title\" message.bind=\"text\" oktext.bind=\"okButtonText\"\n canceltext.bind=\"cancelButtonText\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n }\n @if (!isApplicationType) {\n <div wmAlertDialog name=\"PrefabAlertDialog\" title.bind=\"title\" message.bind=\"text\" oktext.bind=\"okButtonText\"\n canceltext.bind=\"cancelButtonText\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n }\n <div wmAppExt></div>\n <i id=\"wm-mobile-display\"></i>\n}\n<!--Dummy container to create the component dynamically-->\n<ng-container #dynamicComponent></ng-container>\n" }]
|
|
4082
4132
|
}], () => [{ type: PipeProvider }, { type: i0__namespace.ApplicationRef }, { type: i0__namespace.ElementRef }, { type: i2$2__namespace.OAuthService }, { type: i1__namespace.AbstractDialogService }, { type: i1__namespace.AbstractSpinnerService }, { type: i0__namespace.NgZone }, { type: i1$1__namespace.Router }, { type: i1__namespace.App }, { type: AppManagerService }, { type: i1__namespace.CustomIconsLoaderService }], { routerOutlet: [{
|
|
4083
4133
|
type: i0.ViewChild,
|
|
4084
4134
|
args: [i1$1.RouterOutlet]
|
|
@@ -4086,7 +4136,7 @@
|
|
|
4086
4136
|
type: i0.ViewChild,
|
|
4087
4137
|
args: ['dynamicComponent', { read: i0.ViewContainerRef }]
|
|
4088
4138
|
}] }); })();
|
|
4089
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassDebugInfo(AppComponent, { className: "AppComponent", filePath: "components/app-component/app.component.ts", lineNumber:
|
|
4139
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassDebugInfo(AppComponent, { className: "AppComponent", filePath: "components/app-component/app.component.ts", lineNumber: 64 }); })();
|
|
4090
4140
|
|
|
4091
4141
|
/**
|
|
4092
4142
|
* This Interceptor intercepts all network calls and if a network call fails
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AfterViewInit, ApplicationRef, DoCheck, ElementRef, NgZone, ViewContainerRef } from '@angular/core';
|
|
1
|
+
import { AfterViewInit, ApplicationRef, DoCheck, ElementRef, NgZone, OnDestroy, ViewContainerRef } from '@angular/core';
|
|
2
2
|
import { Router, RouterOutlet } from '@angular/router';
|
|
3
3
|
import { AbstractDialogService, AbstractSpinnerService, App, CustomIconsLoaderService } from '@wm/core';
|
|
4
4
|
import { OAuthService } from '@wm/oAuth';
|
|
@@ -10,17 +10,21 @@ interface SPINNER {
|
|
|
10
10
|
messages: Array<string>;
|
|
11
11
|
arialabel: string;
|
|
12
12
|
}
|
|
13
|
-
export declare class AppComponent implements DoCheck, AfterViewInit {
|
|
13
|
+
export declare class AppComponent implements DoCheck, AfterViewInit, OnDestroy {
|
|
14
14
|
private elRef;
|
|
15
15
|
private oAuthService;
|
|
16
16
|
private dialogService;
|
|
17
17
|
private spinnerService;
|
|
18
18
|
private router;
|
|
19
|
-
|
|
19
|
+
app: App;
|
|
20
20
|
private appManager;
|
|
21
21
|
private customIconsLoaderService;
|
|
22
22
|
startApp: boolean;
|
|
23
23
|
isApplicationType: boolean;
|
|
24
|
+
enableSkipToMainContent: boolean;
|
|
25
|
+
private retryCount;
|
|
26
|
+
private navigationEndSubscription;
|
|
27
|
+
appLocale: any;
|
|
24
28
|
routerOutlet: RouterOutlet;
|
|
25
29
|
dynamicComponentContainerRef: ViewContainerRef;
|
|
26
30
|
spinner: SPINNER;
|
|
@@ -31,8 +35,11 @@ export declare class AppComponent implements DoCheck, AfterViewInit {
|
|
|
31
35
|
closeOAuthDialog(): void;
|
|
32
36
|
private start;
|
|
33
37
|
private overrideRouterOutlet;
|
|
38
|
+
skipToAppContent(event: Event): void;
|
|
39
|
+
private tryFocusContent;
|
|
34
40
|
ngAfterViewInit(): void;
|
|
35
41
|
ngDoCheck(): void;
|
|
42
|
+
ngOnDestroy(): void;
|
|
36
43
|
static ɵfac: i0.ɵɵFactoryDeclaration<AppComponent, never>;
|
|
37
44
|
static ɵcmp: i0.ɵɵComponentDeclaration<AppComponent, "app-root", never, {}, {}, never, never, true, never>;
|
|
38
45
|
}
|
|
@@ -11,6 +11,7 @@ import { AppManagerService } from '../../services/app.manager.service';
|
|
|
11
11
|
import { PipeProvider } from '../../services/pipe-provider.service';
|
|
12
12
|
import { AppSpinnerComponent } from '../app-spinner.component';
|
|
13
13
|
import { DialogComponent } from '@wm/components/dialogs/design-dialog';
|
|
14
|
+
import { filter } from "rxjs/operators";
|
|
14
15
|
import * as i0 from "@angular/core";
|
|
15
16
|
import * as i1 from "../../services/pipe-provider.service";
|
|
16
17
|
import * as i2 from "@wm/oAuth";
|
|
@@ -19,56 +20,70 @@ import * as i4 from "@angular/router";
|
|
|
19
20
|
import * as i5 from "../../services/app.manager.service";
|
|
20
21
|
import * as i6 from "@wm/components/base";
|
|
21
22
|
const _c0 = ["dynamicComponent"];
|
|
22
|
-
function
|
|
23
|
+
function AppComponent_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
24
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
25
|
+
i0.ɵɵelement(0, "div", 10);
|
|
26
|
+
i0.ɵɵelementStart(1, "a", 11);
|
|
27
|
+
i0.ɵɵlistener("click", function AppComponent_Conditional_0_Conditional_0_Template_a_click_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.skipToAppContent($event)); });
|
|
28
|
+
i0.ɵɵtext(2);
|
|
29
|
+
i0.ɵɵelementEnd();
|
|
30
|
+
} if (rf & 2) {
|
|
31
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
32
|
+
i0.ɵɵadvance(2);
|
|
33
|
+
i0.ɵɵtextInterpolate(ctx_r1.appLocale.LABEL_SKIP_TO_MAIN_CONTENT || "Skip to main content");
|
|
34
|
+
} }
|
|
35
|
+
function AppComponent_Conditional_0_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
23
36
|
i0.ɵɵelement(0, "div", 2);
|
|
24
37
|
} }
|
|
25
|
-
function
|
|
26
|
-
const
|
|
27
|
-
i0.ɵɵelementStart(0, "li",
|
|
28
|
-
i0.ɵɵlistener("click", function
|
|
38
|
+
function AppComponent_Conditional_0_ng_template_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
39
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
40
|
+
i0.ɵɵelementStart(0, "li", 13)(1, "button", 14);
|
|
41
|
+
i0.ɵɵlistener("click", function AppComponent_Conditional_0_ng_template_5_For_2_Template_button_click_1_listener() { const provider_r4 = i0.ɵɵrestoreView(_r3).$implicit; return i0.ɵɵresetView(provider_r4.invoke()); });
|
|
29
42
|
i0.ɵɵtext(2);
|
|
30
43
|
i0.ɵɵelementEnd()();
|
|
31
44
|
} if (rf & 2) {
|
|
32
|
-
const
|
|
45
|
+
const provider_r4 = ctx.$implicit;
|
|
33
46
|
i0.ɵɵadvance(2);
|
|
34
|
-
i0.ɵɵtextInterpolate(
|
|
47
|
+
i0.ɵɵtextInterpolate(provider_r4.name);
|
|
35
48
|
} }
|
|
36
|
-
function
|
|
37
|
-
i0.ɵɵelementStart(0, "ul",
|
|
38
|
-
i0.ɵɵrepeaterCreate(1,
|
|
49
|
+
function AppComponent_Conditional_0_ng_template_5_Template(rf, ctx) { if (rf & 1) {
|
|
50
|
+
i0.ɵɵelementStart(0, "ul", 12);
|
|
51
|
+
i0.ɵɵrepeaterCreate(1, AppComponent_Conditional_0_ng_template_5_For_2_Template, 3, 1, "li", 13, i0.ɵɵrepeaterTrackByIdentity);
|
|
39
52
|
i0.ɵɵelementEnd();
|
|
40
53
|
} if (rf & 2) {
|
|
41
|
-
const
|
|
54
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
42
55
|
i0.ɵɵadvance();
|
|
43
|
-
i0.ɵɵrepeater(
|
|
56
|
+
i0.ɵɵrepeater(ctx_r1.providersConfig);
|
|
44
57
|
} }
|
|
45
|
-
function
|
|
58
|
+
function AppComponent_Conditional_0_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
46
59
|
i0.ɵɵelement(0, "div", 6);
|
|
47
60
|
} }
|
|
48
|
-
function
|
|
61
|
+
function AppComponent_Conditional_0_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
49
62
|
i0.ɵɵelement(0, "div", 7);
|
|
50
63
|
} }
|
|
51
64
|
function AppComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
52
|
-
i0.ɵɵ
|
|
53
|
-
i0.ɵɵ
|
|
54
|
-
i0.ɵɵ
|
|
55
|
-
i0.ɵɵ
|
|
56
|
-
i0.ɵɵ
|
|
65
|
+
i0.ɵɵtemplate(0, AppComponent_Conditional_0_Conditional_0_Template, 3, 1);
|
|
66
|
+
i0.ɵɵelement(1, "router-outlet");
|
|
67
|
+
i0.ɵɵtemplate(2, AppComponent_Conditional_0_Conditional_2_Template, 1, 0, "div", 2);
|
|
68
|
+
i0.ɵɵelement(3, "app-spinner", 3);
|
|
69
|
+
i0.ɵɵelementStart(4, "div", 4);
|
|
70
|
+
i0.ɵɵtemplate(5, AppComponent_Conditional_0_ng_template_5_Template, 3, 0, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
|
|
57
71
|
i0.ɵɵelementEnd();
|
|
58
|
-
i0.ɵɵelement(
|
|
59
|
-
i0.ɵɵtemplate(
|
|
60
|
-
i0.ɵɵelement(
|
|
72
|
+
i0.ɵɵelement(7, "div", 5);
|
|
73
|
+
i0.ɵɵtemplate(8, AppComponent_Conditional_0_Conditional_8_Template, 1, 0, "div", 6)(9, AppComponent_Conditional_0_Conditional_9_Template, 1, 0, "div", 7);
|
|
74
|
+
i0.ɵɵelement(10, "div", 8)(11, "i", 9);
|
|
61
75
|
} if (rf & 2) {
|
|
62
|
-
const
|
|
63
|
-
i0.ɵɵ
|
|
64
|
-
i0.ɵɵ
|
|
76
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
77
|
+
i0.ɵɵconditional(ctx_r1.enableSkipToMainContent ? 0 : -1);
|
|
78
|
+
i0.ɵɵadvance(2);
|
|
79
|
+
i0.ɵɵconditional(ctx_r1.isApplicationType ? 2 : -1);
|
|
65
80
|
i0.ɵɵadvance();
|
|
66
|
-
i0.ɵɵproperty("show",
|
|
67
|
-
i0.ɵɵattribute("aria-label",
|
|
81
|
+
i0.ɵɵproperty("show", ctx_r1.spinner.show)("spinnermessages", ctx_r1.spinner.messages);
|
|
82
|
+
i0.ɵɵattribute("aria-label", ctx_r1.spinner.arialabel || "Loading");
|
|
68
83
|
i0.ɵɵadvance(5);
|
|
69
|
-
i0.ɵɵconditional(!
|
|
84
|
+
i0.ɵɵconditional(!ctx_r1.isApplicationType ? 8 : -1);
|
|
70
85
|
i0.ɵɵadvance();
|
|
71
|
-
i0.ɵɵconditional(!
|
|
86
|
+
i0.ɵɵconditional(!ctx_r1.isApplicationType ? 9 : -1);
|
|
72
87
|
} }
|
|
73
88
|
export class AppComponent {
|
|
74
89
|
constructor(_pipeProvider, _appRef, elRef, oAuthService, dialogService, spinnerService, ngZone, router, app, appManager, customIconsLoaderService) {
|
|
@@ -82,11 +97,15 @@ export class AppComponent {
|
|
|
82
97
|
this.customIconsLoaderService = customIconsLoaderService;
|
|
83
98
|
this.startApp = false;
|
|
84
99
|
this.isApplicationType = false;
|
|
100
|
+
this.enableSkipToMainContent = getWmProjectProperties().enableSkipToMainContent === 'true' || getWmProjectProperties().enableSkipToMainContent === true;
|
|
101
|
+
this.retryCount = 0;
|
|
102
|
+
this.appLocale = {};
|
|
85
103
|
this.spinner = { show: false, messages: [], arialabel: '' };
|
|
86
104
|
this.isOAuthDialogOpen = false;
|
|
87
105
|
setPipeProvider(_pipeProvider);
|
|
88
106
|
setNgZone(ngZone);
|
|
89
107
|
setAppRef(_appRef);
|
|
108
|
+
this.appLocale = app.appLocale;
|
|
90
109
|
this.isApplicationType = getWmProjectProperties().type === 'APPLICATION';
|
|
91
110
|
if (this.isApplicationType) {
|
|
92
111
|
this.customIconsLoaderService.load();
|
|
@@ -195,13 +214,45 @@ export class AppComponent {
|
|
|
195
214
|
return componentRef;
|
|
196
215
|
};
|
|
197
216
|
}
|
|
217
|
+
skipToAppContent(event) {
|
|
218
|
+
event.preventDefault();
|
|
219
|
+
this.retryCount = 0;
|
|
220
|
+
this.tryFocusContent();
|
|
221
|
+
}
|
|
222
|
+
tryFocusContent() {
|
|
223
|
+
const contentEl = document.querySelector('.app-page-content');
|
|
224
|
+
if (contentEl) {
|
|
225
|
+
contentEl.setAttribute('tabindex', '-1'); // Ensure it's focusable
|
|
226
|
+
contentEl.focus({ preventScroll: false });
|
|
227
|
+
contentEl.scrollIntoView({ behavior: 'smooth' });
|
|
228
|
+
}
|
|
229
|
+
else if (this.retryCount < 10) {
|
|
230
|
+
this.retryCount++;
|
|
231
|
+
setTimeout(() => this.tryFocusContent(), 100); // Retry every 100ms
|
|
232
|
+
}
|
|
233
|
+
}
|
|
198
234
|
ngAfterViewInit() {
|
|
199
235
|
document.documentElement.setAttribute('lang', getWmProjectProperties().defaultLanguage);
|
|
200
236
|
this.start();
|
|
237
|
+
if (this.enableSkipToMainContent) {
|
|
238
|
+
this.navigationEndSubscription = this.router.events
|
|
239
|
+
.pipe(filter((e) => e instanceof NavigationEnd))
|
|
240
|
+
.subscribe(() => {
|
|
241
|
+
const el = document.getElementById('app-focus-start');
|
|
242
|
+
if (el) {
|
|
243
|
+
el.focus();
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
}
|
|
201
247
|
}
|
|
202
248
|
ngDoCheck() {
|
|
203
249
|
$invokeWatchers();
|
|
204
250
|
}
|
|
251
|
+
ngOnDestroy() {
|
|
252
|
+
if (this.navigationEndSubscription) {
|
|
253
|
+
this.navigationEndSubscription.unsubscribe();
|
|
254
|
+
}
|
|
255
|
+
}
|
|
205
256
|
static { this.ɵfac = function AppComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AppComponent)(i0.ɵɵdirectiveInject(i1.PipeProvider), i0.ɵɵdirectiveInject(i0.ApplicationRef), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i2.OAuthService), i0.ɵɵdirectiveInject(i3.AbstractDialogService), i0.ɵɵdirectiveInject(i3.AbstractSpinnerService), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i4.Router), i0.ɵɵdirectiveInject(i3.App), i0.ɵɵdirectiveInject(i5.AppManagerService), i0.ɵɵdirectiveInject(i3.CustomIconsLoaderService)); }; }
|
|
206
257
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AppComponent, selectors: [["app-root"]], viewQuery: function AppComponent_Query(rf, ctx) { if (rf & 1) {
|
|
207
258
|
i0.ɵɵviewQuery(RouterOutlet, 5);
|
|
@@ -210,8 +261,8 @@ export class AppComponent {
|
|
|
210
261
|
let _t;
|
|
211
262
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.routerOutlet = _t.first);
|
|
212
263
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dynamicComponentContainerRef = _t.first);
|
|
213
|
-
} }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 3, vars: 1, consts: [["dynamicComponent", ""], ["dialogBody", ""], ["wmContainer", "", "partialContainer", "", "content", "Common", "hidden", "", 1, "ng-hide"], ["name", "globalspinner", "classname", "global-spinner", "role", "alert", "aria-live", "assertive", 3, "show", "spinnermessages"], ["wmDialog", "", "name", "oAuthLoginDialog", "title", "Application is requesting you to sign in with", "close.event", "closeOAuthDialog()"], ["wmConfirmDialog", "", "name", "_app-confirm-dialog", "title.bind", "title", "message.bind", "message", "oktext.bind", "oktext", "canceltext.bind", "canceltext", "closable", "false", "iconclass.bind", "iconclass", "escape.event", "onEscape()", "ok.event", "onOk()", "cancel.event", "onCancel()", "close.event", "onClose()", "opened.event", "onOpen()"], ["wmConfirmDialog", "", "name", "PrefabConfirmDialog", "title.bind", "title", "message.bind", "text", "oktext.bind", "okButtonText", "canceltext.bind", "cancelButtonText", "closable", "false", "iconclass.bind", "iconclass", "escape.event", "onEscape()", "ok.event", "onOk()", "cancel.event", "onCancel()", "close.event", "onClose()", "opened.event", "onOpen()"], ["wmAlertDialog", "", "name", "PrefabAlertDialog", "title.bind", "title", "message.bind", "text", "oktext.bind", "okButtonText", "canceltext.bind", "cancelButtonText", "closable", "false", "iconclass.bind", "iconclass", "escape.event", "onEscape()", "ok.event", "onOk()", "cancel.event", "onCancel()", "close.event", "onClose()", "opened.event", "onOpen()"], ["wmAppExt", ""], ["id", "wm-mobile-display"], [1, "list-items"], [1, "list-item"], [1, "btn", 3, "click"]], template: function AppComponent_Template(rf, ctx) { if (rf & 1) {
|
|
214
|
-
i0.ɵɵtemplate(0, AppComponent_Conditional_0_Template,
|
|
264
|
+
} }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 3, vars: 1, consts: [["dynamicComponent", ""], ["dialogBody", ""], ["wmContainer", "", "partialContainer", "", "content", "Common", "hidden", "", 1, "ng-hide"], ["name", "globalspinner", "classname", "global-spinner", "role", "alert", "aria-live", "assertive", 3, "show", "spinnermessages"], ["wmDialog", "", "name", "oAuthLoginDialog", "title", "Application is requesting you to sign in with", "close.event", "closeOAuthDialog()"], ["wmConfirmDialog", "", "name", "_app-confirm-dialog", "title.bind", "title", "message.bind", "message", "oktext.bind", "oktext", "canceltext.bind", "canceltext", "closable", "false", "iconclass.bind", "iconclass", "escape.event", "onEscape()", "ok.event", "onOk()", "cancel.event", "onCancel()", "close.event", "onClose()", "opened.event", "onOpen()"], ["wmConfirmDialog", "", "name", "PrefabConfirmDialog", "title.bind", "title", "message.bind", "text", "oktext.bind", "okButtonText", "canceltext.bind", "cancelButtonText", "closable", "false", "iconclass.bind", "iconclass", "escape.event", "onEscape()", "ok.event", "onOk()", "cancel.event", "onCancel()", "close.event", "onClose()", "opened.event", "onOpen()"], ["wmAlertDialog", "", "name", "PrefabAlertDialog", "title.bind", "title", "message.bind", "text", "oktext.bind", "okButtonText", "canceltext.bind", "cancelButtonText", "closable", "false", "iconclass.bind", "iconclass", "escape.event", "onEscape()", "ok.event", "onOk()", "cancel.event", "onCancel()", "close.event", "onClose()", "opened.event", "onOpen()"], ["wmAppExt", ""], ["id", "wm-mobile-display"], ["id", "app-focus-start", "tabindex", "-1"], ["href", "javascript:void(0);", 1, "skip", 3, "click"], [1, "list-items"], [1, "list-item"], [1, "btn", 3, "click"]], template: function AppComponent_Template(rf, ctx) { if (rf & 1) {
|
|
265
|
+
i0.ɵɵtemplate(0, AppComponent_Conditional_0_Template, 12, 7);
|
|
215
266
|
i0.ɵɵelementContainer(1, null, 0);
|
|
216
267
|
} if (rf & 2) {
|
|
217
268
|
i0.ɵɵconditional(ctx.startApp ? 0 : -1);
|
|
@@ -219,7 +270,7 @@ export class AppComponent {
|
|
|
219
270
|
}
|
|
220
271
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AppComponent, [{
|
|
221
272
|
type: Component,
|
|
222
|
-
args: [{ standalone: true, imports: [CommonModule, WmComponentsModule, RouterOutlet, AlertDialogComponent, ConfirmDialogComponent, DialogComponent, AppSpinnerComponent], selector: 'app-root', encapsulation: ViewEncapsulation.None, template: "@if (startApp) {\n
|
|
273
|
+
args: [{ standalone: true, imports: [CommonModule, WmComponentsModule, RouterOutlet, AlertDialogComponent, ConfirmDialogComponent, DialogComponent, AppSpinnerComponent], selector: 'app-root', encapsulation: ViewEncapsulation.None, template: "@if (startApp) {\n @if(enableSkipToMainContent) {\n <div id=\"app-focus-start\" tabindex=\"-1\"></div>\n <a href=\"javascript:void(0);\" class=\"skip\" (click)=\"skipToAppContent($event)\">{{appLocale.LABEL_SKIP_TO_MAIN_CONTENT || 'Skip to main content'}}</a>\n }\n <router-outlet></router-outlet>\n @if (isApplicationType) {\n <div wmContainer partialContainer content=\"Common\" hidden class=\"ng-hide\"></div>\n }\n <app-spinner name=\"globalspinner\" classname=\"global-spinner\" role=\"alert\" aria-live=\"assertive\" [attr.aria-label]=\"spinner.arialabel || 'Loading'\" [show]=\"spinner.show\" [spinnermessages]=\"spinner.messages\"></app-spinner>\n <div wmDialog name=\"oAuthLoginDialog\" title=\"Application is requesting you to sign in with\"\n close.event=\"closeOAuthDialog()\">\n <ng-template #dialogBody>\n <ul class=\"list-items\">\n @for (provider of providersConfig; track provider) {\n <li class=\"list-item\">\n <button class=\"btn\" (click)=\"provider.invoke()\">{{provider.name}}</button>\n </li>\n }\n </ul>\n </ng-template>\n </div>\n <div wmConfirmDialog name=\"_app-confirm-dialog\" title.bind=\"title\" message.bind=\"message\" oktext.bind=\"oktext\"\n canceltext.bind=\"canceltext\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n @if (!isApplicationType) {\n <div wmConfirmDialog name=\"PrefabConfirmDialog\" title.bind=\"title\" message.bind=\"text\" oktext.bind=\"okButtonText\"\n canceltext.bind=\"cancelButtonText\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n }\n @if (!isApplicationType) {\n <div wmAlertDialog name=\"PrefabAlertDialog\" title.bind=\"title\" message.bind=\"text\" oktext.bind=\"okButtonText\"\n canceltext.bind=\"cancelButtonText\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n }\n <div wmAppExt></div>\n <i id=\"wm-mobile-display\"></i>\n}\n<!--Dummy container to create the component dynamically-->\n<ng-container #dynamicComponent></ng-container>\n" }]
|
|
223
274
|
}], () => [{ type: i1.PipeProvider }, { type: i0.ApplicationRef }, { type: i0.ElementRef }, { type: i2.OAuthService }, { type: i3.AbstractDialogService }, { type: i3.AbstractSpinnerService }, { type: i0.NgZone }, { type: i4.Router }, { type: i3.App }, { type: i5.AppManagerService }, { type: i3.CustomIconsLoaderService }], { routerOutlet: [{
|
|
224
275
|
type: ViewChild,
|
|
225
276
|
args: [RouterOutlet]
|
|
@@ -227,5 +278,5 @@ export class AppComponent {
|
|
|
227
278
|
type: ViewChild,
|
|
228
279
|
args: ['dynamicComponent', { read: ViewContainerRef }]
|
|
229
280
|
}] }); })();
|
|
230
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AppComponent, { className: "AppComponent", filePath: "components/app-component/app.component.ts", lineNumber:
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvY29tcG9uZW50cy9hcHAtY29tcG9uZW50L2FwcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ydW50aW1lLWJhc2Uvc3JjL2NvbXBvbmVudHMvYXBwLWNvbXBvbmVudC9hcHAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQy9FLE9BQU8sRUFFSCxjQUFjLEVBQ2QsU0FBUyxFQUVULFVBQVUsRUFDVixNQUFNLEVBQ04sU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVILGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsZUFBZSxFQUNmLGVBQWUsRUFDZixNQUFNLEVBQ04sWUFBWSxFQUNmLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRS9DLE9BQU8sRUFDSCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixRQUFRLEVBQ1IsR0FBRyxFQUNILHdCQUF3QixFQUN4QixzQkFBc0IsRUFDdEIsSUFBSSxFQUNKLFdBQVcsRUFDWCxTQUFTLEVBQ1QsU0FBUyxFQUNULGVBQWUsRUFDbEIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6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QVk7Y0FQeEIsU0FBUzs2QkFDTSxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLHNCQUFzQixFQUFFLGVBQWUsRUFBRSxtQkFBbUIsQ0FBQyxZQUNuSSxVQUFVLGlCQUVMLGlCQUFpQixDQUFDLElBQUk7MFVBTVosWUFBWTtrQkFBcEMsU0FBUzttQkFBQyxZQUFZO1lBRW9DLDRCQUE0QjtrQkFBdEYsU0FBUzttQkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTs7a0ZBTmhELFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgV21Db21wb25lbnRzTW9kdWxlIH0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2Jhc2VcIjtcbmltcG9ydCB7IEFsZXJ0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGlhbG9ncy9hbGVydC1kaWFsb2cnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MvY29uZmlybS1kaWFsb2cnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEFwcGxpY2F0aW9uUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBEb0NoZWNrLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgTmdab25lLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBOYXZpZ2F0aW9uQ2FuY2VsLFxuICAgIE5hdmlnYXRpb25FbmQsXG4gICAgTmF2aWdhdGlvbkVycm9yLFxuICAgIE5hdmlnYXRpb25TdGFydCxcbiAgICBSb3V0ZXIsXG4gICAgUm91dGVyT3V0bGV0XG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IHNldFRoZW1lIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC91dGlscyc7XG5cbmltcG9ydCB7XG4gICAgJGludm9rZVdhdGNoZXJzLFxuICAgIEFic3RyYWN0RGlhbG9nU2VydmljZSxcbiAgICBBYnN0cmFjdFNwaW5uZXJTZXJ2aWNlLFxuICAgIGFkZENsYXNzLFxuICAgIEFwcCxcbiAgICBDdXN0b21JY29uc0xvYWRlclNlcnZpY2UsXG4gICAgZ2V0V21Qcm9qZWN0UHJvcGVydGllcyxcbiAgICBub29wLFxuICAgIHJlbW92ZUNsYXNzLFxuICAgIHNldEFwcFJlZixcbiAgICBzZXROZ1pvbmUsXG4gICAgc2V0UGlwZVByb3ZpZGVyXG59IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IE9BdXRoU2VydmljZSB9IGZyb20gJ0B3bS9vQXV0aCc7XG5pbXBvcnQgeyBBcHBNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwcC5tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGlwZVByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGlwZS1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcFNwaW5uZXJDb21wb25lbnQgfSBmcm9tICcuLi9hcHAtc3Bpbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGlhbG9ncy9kZXNpZ24tZGlhbG9nJztcblxuaW50ZXJmYWNlIFNQSU5ORVIge1xuICAgIHNob3c6IGJvb2xlYW47XG4gICAgbWVzc2FnZXM6IEFycmF5PHN0cmluZz47XG4gICAgYXJpYWxhYmVsOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgV21Db21wb25lbnRzTW9kdWxlLCBSb3V0ZXJPdXRsZXQsIEFsZXJ0RGlhbG9nQ29tcG9uZW50LCBDb25maXJtRGlhbG9nQ29tcG9uZW50LCBEaWFsb2dDb21wb25lbnQsIEFwcFNwaW5uZXJDb21wb25lbnRdLFxuICAgIHNlbGVjdG9yOiAnYXBwLXJvb3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hcHAuY29tcG9uZW50Lmh0bWwnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgQXBwQ29tcG9uZW50IGltcGxlbWVudHMgRG9DaGVjaywgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgcHVibGljIHN0YXJ0QXBwID0gZmFsc2U7XG4gICAgcHVibGljIGlzQXBwbGljYXRpb25UeXBlID0gZmFsc2U7XG5cbiAgICBAVmlld0NoaWxkKFJvdXRlck91dGxldCkgcm91dGVyT3V0bGV0OiBSb3V0ZXJPdXRsZXQ7XG5cbiAgICBAVmlld0NoaWxkKCdkeW5hbWljQ29tcG9uZW50JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIGR5bmFtaWNDb21wb25lbnRDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgICBzcGlubmVyOiBTUElOTkVSID0geyBzaG93OiBmYWxzZSwgbWVzc2FnZXM6IFtdLCBhcmlhbGFiZWw6ICcnIH07XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIF9waXBlUHJvdmlkZXI6IFBpcGVQcm92aWRlcixcbiAgICAgICAgX2FwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgb0F1dGhTZXJ2aWNlOiBPQXV0aFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogQWJzdHJhY3REaWFsb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHNwaW5uZXJTZXJ2aWNlOiBBYnN0cmFjdFNwaW5uZXJTZXJ2aWNlLFxuICAgICAgICBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSBhcHA6IEFwcCxcbiAgICAgICAgcHJpdmF0ZSBhcHBNYW5hZ2VyOiBBcHBNYW5hZ2VyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjdXN0b21JY29uc0xvYWRlclNlcnZpY2U6IEN1c3RvbUljb25zTG9hZGVyU2VydmljZVxuICAgICkge1xuICAgICAgICBzZXRQaXBlUHJvdmlkZXIoX3BpcGVQcm92aWRlcik7XG4gICAgICAgIHNldE5nWm9uZShuZ1pvbmUpO1xuICAgICAgICBzZXRBcHBSZWYoX2FwcFJlZik7XG5cbiAgICAgICAgdGhpcy5pc0FwcGxpY2F0aW9uVHlwZSA9IGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS50eXBlID09PSAnQVBQTElDQVRJT04nO1xuICAgICAgICBpZiAodGhpcy5pc0FwcGxpY2F0aW9uVHlwZSkge1xuICAgICAgICAgICAgdGhpcy5jdXN0b21JY29uc0xvYWRlclNlcnZpY2UubG9hZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLmJlZm9yZUFwcFJlYWR5KCk7XG5cbiAgICAgICAgLy8gc3Vic2NyaWJlIHRvIE9BdXRoIGNoYW5nZXNcbiAgICAgICAgb0F1dGhTZXJ2aWNlLmdldE9BdXRoUHJvdmlkZXJzQXNPYnNlcnZhYmxlKCkuc3Vic2NyaWJlKChwcm92aWRlcnM6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wcm92aWRlcnNDb25maWcgPSBwcm92aWRlcnM7XG4gICAgICAgICAgICBpZiAocHJvdmlkZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd09BdXRoRGlhbG9nKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VPQXV0aERpYWxvZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTdWJzY3JpYmUgdG8gdGhlIG1lc3NhZ2Ugc291cmNlIHRvIHNob3cvaGlkZSBhcHAgc3Bpbm5lclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmdldE1lc3NhZ2VTb3VyY2UoKS5hc09ic2VydmFibGUoKS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgLy8gc2V0VGltZW91dCBpcyB0byBhdm9pZCAnRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvcidcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3Bpbm5lci5zaG93ID0gZGF0YS5zaG93O1xuICAgICAgICAgICAgICAgIHRoaXMuc3Bpbm5lci5tZXNzYWdlcyA9IGRhdGEubWVzc2FnZXM7XG4gICAgICAgICAgICAgICAgdGhpcy5zcGlubmVyLmFyaWFsYWJlbCA9IGRhdGEubWVzc2FnZXMudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBzZXQgdGhlbWUgdG8gYnMzIG9uIG5neC1ib290c3RyYXAuIFRoaXMgYXZvaWRzIHJ1bnRpbWUgY2FsY3VsYXRpb24gdG8gZGV0ZXJtaW5lIGJzIHRoZW1lLiBUaHVzIHJlc29sdmVzIHBlcmZvcm1hbmNlLlxuICAgICAgICBzZXRUaGVtZSgnYnMzJyk7XG5cbiAgICAgICAgbGV0IHNwaW5uZXJJZDtcblxuICAgICAgICBsZXQgb25QYWdlUmVuZGVyZWQgPSBub29wO1xuXG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZSA9PiB7XG4gICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICAgICAgICAgIGxldCBwYWdlID0gZS51cmwuc3BsaXQoJz8nKVswXTtcbiAgICAgICAgICAgICAgICBwYWdlID0gcGFnZS5zdWJzdHJpbmcoMSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXBhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHAuYWN0aXZlTGF5b3V0TmFtZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcC5sYXlvdXRQYWdlcyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hcHAuYWN0aXZlTGF5b3V0TmFtZSAmJiB0aGlzLmFwcC5sYXlvdXRQYWdlcyAmJiB0aGlzLmFwcC5sYXlvdXRQYWdlcy5sZW5ndGggJiYgdGhpcy5hcHAubGF5b3V0UGFnZXMuaW5jbHVkZXMocGFnZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3Bpbm5lcklkID0gdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCcnLCAnd21Sb3V0ZXJPdXRsZXQnLCAnJywgJ3dtUm91dGVyT3V0bGV0Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3Bpbm5lcklkID0gdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCcnLCAnZ2xvYmFsU3Bpbm5lcicpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhcHAtcGFnZS1vdXRsZXQnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyhub2RlLCAncGFnZS1sb2FkLWluLXByb2dyZXNzJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgcGFnZUxvYWRTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgIG9uUGFnZVJlbmRlcmVkID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoc3Bpbm5lcklkKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2FwcC1wYWdlLW91dGxldCcpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3Mobm9kZSwgJ3BhZ2UtbG9hZC1pbi1wcm9ncmVzcycpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG9uUGFnZVJlbmRlcmVkID0gbm9vcDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHAuYWN0aXZlUGFnZUxvYWRUaW1lID0gRGF0ZS5ub3coKSAtIHBhZ2VMb2FkU3RhcnRUaW1lO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kIHx8IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uQ2FuY2VsIHx8IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb25QYWdlUmVuZGVyZWQoKTtcbiAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYXBwTWFuYWdlci5zdWJzY3JpYmUoJ3BhZ2VSZWFkeScsICgpID0+IHtcbiAgICAgICAgICAgIG9uUGFnZVJlbmRlcmVkKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFwcE1hbmFnZXIuc3Vic2NyaWJlKCdwYWdlQXR0YWNoJywgKCkgPT4ge1xuICAgICAgICAgICAgb25QYWdlUmVuZGVyZWQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdmlkZXJzQ29uZmlnO1xuICAgIGlzT0F1dGhEaWFsb2dPcGVuID0gZmFsc2U7XG5cbiAgICBzaG93T0F1dGhEaWFsb2coKSB7XG4gICAgICAgIGlmICghdGhpcy5pc09BdXRoRGlhbG9nT3Blbikge1xuICAgICAgICAgICAgdGhpcy5pc09BdXRoRGlhbG9nT3BlbiA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uub3Blbignb0F1dGhMb2dpbkRpYWxvZycsIHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xvc2VPQXV0aERpYWxvZygpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPQXV0aERpYWxvZ09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuaXNPQXV0aERpYWxvZ09wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5jbG9zZSgnb0F1dGhMb2dpbkRpYWxvZycsIHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGFydCgpIHtcbiAgICAgICAgLy90byBmaXggdGhlIGlzc3VlIHRoYXQgaGFwcGVucyBvbmx5IGluIHRoZSBkZXZlbG9wbWVudCBtb2RlXG4gICAgICAgIC8vRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvclxuICAgICAgICAvL2ZpeDogaHR0cHM6Ly9ibG9nLmFuZ3VsYXItdW5pdmVyc2l0eS5pby9hbmd1bGFyLWRlYnVnZ2luZy9cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0QXBwID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hcHAuZHluYW1pY0NvbXBvbmVudENvbnRhaW5lclJlZiA9IHRoaXMuZHluYW1pY0NvbXBvbmVudENvbnRhaW5lclJlZjtcbiAgICAgICAgICAgIHRoaXMub3ZlcnJpZGVSb3V0ZXJPdXRsZXQoKTtcbiAgICAgICAgfSwgMTApO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3ZlcnJpZGVSb3V0ZXJPdXRsZXQoKSB7XG4gICAgICAgIC8vb3ZlcnJpZGUgdGhlIGF0dGFjaC9kZXRhY2ggbWV0aG9kc1xuICAgICAgICBjb25zdCBvQXR0YWNoID0gdGhpcy5yb3V0ZXJPdXRsZXQuYXR0YWNoO1xuICAgICAgICBjb25zdCBvRGV0YWNoID0gdGhpcy5yb3V0ZXJPdXRsZXQuZGV0YWNoO1xuICAgICAgICB0aGlzLnJvdXRlck91dGxldC5hdHRhY2ggPSAoY29tcG9uZW50UmVmOiBhbnksIGFjdGl2YXRlZFJvdXRlOiAgQWN0aXZhdGVkUm91dGUpID0+IHtcbiAgICAgICAgICAgIG9BdHRhY2guY2FsbCh0aGlzLnJvdXRlck91dGxldCwgY29tcG9uZW50UmVmLCBhY3RpdmF0ZWRSb3V0ZSk7XG4gICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubmdPbkF0dGFjaCgpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJvdXRlck91dGxldC5kZXRhY2ggPSAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFwcC5hY3RpdmVQYWdlLm5nT25EZXRhY2goKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IG9EZXRhY2guY2FsbCh0aGlzLnJvdXRlck91dGxldCk7XG4gICAgICAgICAgICByZXR1cm4gY29tcG9uZW50UmVmO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgnbGFuZycsIGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS5kZWZhdWx0TGFuZ3VhZ2UpO1xuICAgICAgICAgICAgdGhpcy5zdGFydCgpO1xuICAgIH1cblxuICAgIG5nRG9DaGVjaygpIHtcbiAgICAgICAgJGludm9rZVdhdGNoZXJzKCk7XG4gICAgfVxufVxuIiwiQGlmIChzdGFydEFwcCkge1xuICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XG4gIEBpZiAoaXNBcHBsaWNhdGlvblR5cGUpIHtcbiAgICA8ZGl2IHdtQ29udGFpbmVyIHBhcnRpYWxDb250YWluZXIgY29udGVudD1cIkNvbW1vblwiIGhpZGRlbiBjbGFzcz1cIm5nLWhpZGVcIj48L2Rpdj5cbiAgfVxuICA8YXBwLXNwaW5uZXIgbmFtZT1cImdsb2JhbHNwaW5uZXJcIiBjbGFzc25hbWU9XCJnbG9iYWwtc3Bpbm5lclwiIHJvbGU9XCJhbGVydFwiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwic3Bpbm5lci5hcmlhbGFiZWwgfHwgJ0xvYWRpbmcnXCIgW3Nob3ddPVwic3Bpbm5lci5zaG93XCIgW3NwaW5uZXJtZXNzYWdlc109XCJzcGlubmVyLm1lc3NhZ2VzXCI+PC9hcHAtc3Bpbm5lcj5cbiAgPGRpdiB3bURpYWxvZyBuYW1lPVwib0F1dGhMb2dpbkRpYWxvZ1wiIHRpdGxlPVwiQXBwbGljYXRpb24gaXMgcmVxdWVzdGluZyB5b3UgdG8gc2lnbiBpbiB3aXRoXCJcbiAgICBjbG9zZS5ldmVudD1cImNsb3NlT0F1dGhEaWFsb2coKVwiPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGlhbG9nQm9keT5cbiAgICAgIDx1bCBjbGFzcz1cImxpc3QtaXRlbXNcIj5cbiAgICAgICAgQGZvciAocHJvdmlkZXIgb2YgcHJvdmlkZXJzQ29uZmlnOyB0cmFjayBwcm92aWRlcikge1xuICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtaXRlbVwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0blwiIChjbGljayk9XCJwcm92aWRlci5pbnZva2UoKVwiPnt7cHJvdmlkZXIubmFtZX19PC9idXR0b24+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgfVxuICAgICAgPC91bD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbiAgPGRpdiB3bUNvbmZpcm1EaWFsb2cgbmFtZT1cIl9hcHAtY29uZmlybS1kaWFsb2dcIiB0aXRsZS5iaW5kPVwidGl0bGVcIiBtZXNzYWdlLmJpbmQ9XCJtZXNzYWdlXCIgb2t0ZXh0LmJpbmQ9XCJva3RleHRcIlxuICAgIGNhbmNlbHRleHQuYmluZD1cImNhbmNlbHRleHRcIiBjbG9zYWJsZT1cImZhbHNlXCIgaWNvbmNsYXNzLmJpbmQ9XCJpY29uY2xhc3NcIlxuICBlc2NhcGUuZXZlbnQ9XCJvbkVzY2FwZSgpXCIgb2suZXZlbnQ9XCJvbk9rKClcIiBjYW5jZWwuZXZlbnQ9XCJvbkNhbmNlbCgpXCIgY2xvc2UuZXZlbnQ9XCJvbkNsb3NlKClcIiBvcGVuZWQuZXZlbnQ9XCJvbk9wZW4oKVwiPjwvZGl2PlxuICBAaWYgKCFpc0FwcGxpY2F0aW9uVHlwZSkge1xuICAgIDxkaXYgIHdtQ29uZmlybURpYWxvZyBuYW1lPVwiUHJlZmFiQ29uZmlybURpYWxvZ1wiIHRpdGxlLmJpbmQ9XCJ0aXRsZVwiIG1lc3NhZ2UuYmluZD1cInRleHRcIiBva3RleHQuYmluZD1cIm9rQnV0dG9uVGV4dFwiXG4gICAgICBjYW5jZWx0ZXh0LmJpbmQ9XCJjYW5jZWxCdXR0b25UZXh0XCIgY2xvc2FibGU9XCJmYWxzZVwiIGljb25jbGFzcy5iaW5kPVwiaWNvbmNsYXNzXCJcbiAgICBlc2NhcGUuZXZlbnQ9XCJvbkVzY2FwZSgpXCIgb2suZXZlbnQ9XCJvbk9rKClcIiBjYW5jZWwuZXZlbnQ9XCJvbkNhbmNlbCgpXCIgY2xvc2UuZXZlbnQ9XCJvbkNsb3NlKClcIiBvcGVuZWQuZXZlbnQ9XCJvbk9wZW4oKVwiPjwvZGl2PlxuICB9XG4gIEBpZiAoIWlzQXBwbGljYXRpb25UeXBlKSB7XG4gICAgPGRpdiAgd21BbGVydERpYWxvZyBuYW1lPVwiUHJlZmFiQWxlcnREaWFsb2dcIiB0aXRsZS5iaW5kPVwidGl0bGVcIiBtZXNzYWdlLmJpbmQ9XCJ0ZXh0XCIgb2t0ZXh0LmJpbmQ9XCJva0J1dHRvblRleHRcIlxuICAgICAgY2FuY2VsdGV4dC5iaW5kPVwiY2FuY2VsQnV0dG9uVGV4dFwiIGNsb3NhYmxlPVwiZmFsc2VcIiBpY29uY2xhc3MuYmluZD1cImljb25jbGFzc1wiXG4gICAgZXNjYXBlLmV2ZW50PVwib25Fc2NhcGUoKVwiIG9rLmV2ZW50PVwib25PaygpXCIgY2FuY2VsLmV2ZW50PVwib25DYW5jZWwoKVwiIGNsb3NlLmV2ZW50PVwib25DbG9zZSgpXCIgb3BlbmVkLmV2ZW50PVwib25PcGVuKClcIj48L2Rpdj5cbiAgfVxuICA8ZGl2IHdtQXBwRXh0PjwvZGl2PlxuICA8aSBpZD1cIndtLW1vYmlsZS1kaXNwbGF5XCI+PC9pPlxufVxuPCEtLUR1bW15IGNvbnRhaW5lciB0byBjcmVhdGUgdGhlIGNvbXBvbmVudCBkeW5hbWljYWxseS0tPlxuPG5nLWNvbnRhaW5lciAjZHluYW1pY0NvbXBvbmVudD48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
281
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AppComponent, { className: "AppComponent", filePath: "components/app-component/app.component.ts", lineNumber: 64 }); })();
|
|
282
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvY29tcG9uZW50cy9hcHAtY29tcG9uZW50L2FwcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ydW50aW1lLWJhc2Uvc3JjL2NvbXBvbmVudHMvYXBwLWNvbXBvbmVudC9hcHAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQy9FLE9BQU8sRUFFSCxjQUFjLEVBQ2QsU0FBUyxFQUVULFVBQVUsRUFDVixNQUFNLEVBRU4sU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVILGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsZUFBZSxFQUNmLGVBQWUsRUFDZixNQUFNLEVBQ04sWUFBWSxFQUNmLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRS9DLE9BQU8sRUFDSCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixRQUFRLEVBQ1IsR0FBRyxFQUNILHdCQUF3QixFQUN4QixzQkFBc0IsRUFDdEIsSUFBSSxFQUNKLFdBQVcsRUFDWCxTQUFTLEVBQ1QsU0FBUyxFQUNULGVBQWUsRUFDbEIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6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QUFTLENBQUMsR0FBRyxFQUFFO2dCQUNaLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDTCxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2YsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTO1FBQ0wsZUFBZSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyx5QkFBeUIsRUFBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqRCxDQUFDO0lBQ0wsQ0FBQzs2R0FyTVEsWUFBWTtvRUFBWixZQUFZOzJCQVFWLFlBQVk7bUNBRWdCLGdCQUFnQjs7Ozs7O1lDekUzRCw0REFBZ0I7WUF1Q2hCLGlDQUErQzs7WUF2Qy9DLHVDQXFDQzs0QkRxQmEsWUFBWSxFQUFFLGtCQUFrQix3RkFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUUsZUFBZSxFQUFFLG1CQUFtQjs7aUZBS25JLFlBQVk7Y0FQeEIsU0FBUzs2QkFDTSxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLHNCQUFzQixFQUFFLGVBQWUsRUFBRSxtQkFBbUIsQ0FBQyxZQUNuSSxVQUFVLGlCQUVMLGlCQUFpQixDQUFDLElBQUk7MFVBVVosWUFBWTtrQkFBcEMsU0FBUzttQkFBQyxZQUFZO1lBRW9DLDRCQUE0QjtrQkFBdEYsU0FBUzttQkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTs7a0ZBVmhELFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgV21Db21wb25lbnRzTW9kdWxlIH0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2Jhc2VcIjtcbmltcG9ydCB7IEFsZXJ0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGlhbG9ncy9hbGVydC1kaWFsb2cnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MvY29uZmlybS1kaWFsb2cnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEFwcGxpY2F0aW9uUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBEb0NoZWNrLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQWN0aXZhdGVkUm91dGUsXG4gICAgTmF2aWdhdGlvbkNhbmNlbCxcbiAgICBOYXZpZ2F0aW9uRW5kLFxuICAgIE5hdmlnYXRpb25FcnJvcixcbiAgICBOYXZpZ2F0aW9uU3RhcnQsXG4gICAgUm91dGVyLFxuICAgIFJvdXRlck91dGxldFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBzZXRUaGVtZSB9IGZyb20gJ25neC1ib290c3RyYXAvdXRpbHMnO1xuXG5pbXBvcnQge1xuICAgICRpbnZva2VXYXRjaGVycyxcbiAgICBBYnN0cmFjdERpYWxvZ1NlcnZpY2UsXG4gICAgQWJzdHJhY3RTcGlubmVyU2VydmljZSxcbiAgICBhZGRDbGFzcyxcbiAgICBBcHAsXG4gICAgQ3VzdG9tSWNvbnNMb2FkZXJTZXJ2aWNlLFxuICAgIGdldFdtUHJvamVjdFByb3BlcnRpZXMsXG4gICAgbm9vcCxcbiAgICByZW1vdmVDbGFzcyxcbiAgICBzZXRBcHBSZWYsXG4gICAgc2V0Tmdab25lLFxuICAgIHNldFBpcGVQcm92aWRlclxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBPQXV0aFNlcnZpY2UgfSBmcm9tICdAd20vb0F1dGgnO1xuaW1wb3J0IHsgQXBwTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hcHAubWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBpcGVQcm92aWRlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BpcGUtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vYXBwLXNwaW5uZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MvZGVzaWduLWRpYWxvZyc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvbn0gIGZyb20gXCJyeGpzXCI7XG5cbmludGVyZmFjZSBTUElOTkVSIHtcbiAgICBzaG93OiBib29sZWFuO1xuICAgIG1lc3NhZ2VzOiBBcnJheTxzdHJpbmc+O1xuICAgIGFyaWFsYWJlbDogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFdtQ29tcG9uZW50c01vZHVsZSwgUm91dGVyT3V0bGV0LCBBbGVydERpYWxvZ0NvbXBvbmVudCwgQ29uZmlybURpYWxvZ0NvbXBvbmVudCwgRGlhbG9nQ29tcG9uZW50LCBBcHBTcGlubmVyQ29tcG9uZW50XSxcbiAgICBzZWxlY3RvcjogJ2FwcC1yb290JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXBwLmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEFwcENvbXBvbmVudCBpbXBsZW1lbnRzIERvQ2hlY2ssIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgcHVibGljIHN0YXJ0QXBwID0gZmFsc2U7XG4gICAgcHVibGljIGlzQXBwbGljYXRpb25UeXBlID0gZmFsc2U7XG4gICAgcHVibGljIGVuYWJsZVNraXBUb01haW5Db250ZW50ID0gZ2V0V21Qcm9qZWN0UHJvcGVydGllcygpLmVuYWJsZVNraXBUb01haW5Db250ZW50ID09PSAndHJ1ZScgfHwgZ2V0V21Qcm9qZWN0UHJvcGVydGllcygpLmVuYWJsZVNraXBUb01haW5Db250ZW50ID09PSB0cnVlO1xuICAgIHByaXZhdGUgcmV0cnlDb3VudCA9IDA7XG4gICAgcHJpdmF0ZSBuYXZpZ2F0aW9uRW5kU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuICAgIGFwcExvY2FsZTogYW55ID0ge307XG5cbiAgICBAVmlld0NoaWxkKFJvdXRlck91dGxldCkgcm91dGVyT3V0bGV0OiBSb3V0ZXJPdXRsZXQ7XG5cbiAgICBAVmlld0NoaWxkKCdkeW5hbWljQ29tcG9uZW50JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIGR5bmFtaWNDb21wb25lbnRDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgICBzcGlubmVyOiBTUElOTkVSID0geyBzaG93OiBmYWxzZSwgbWVzc2FnZXM6IFtdLCBhcmlhbGFiZWw6ICcnIH07XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIF9waXBlUHJvdmlkZXI6IFBpcGVQcm92aWRlcixcbiAgICAgICAgX2FwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgb0F1dGhTZXJ2aWNlOiBPQXV0aFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogQWJzdHJhY3REaWFsb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHNwaW5uZXJTZXJ2aWNlOiBBYnN0cmFjdFNwaW5uZXJTZXJ2aWNlLFxuICAgICAgICBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHVibGljIGFwcDogQXBwLFxuICAgICAgICBwcml2YXRlIGFwcE1hbmFnZXI6IEFwcE1hbmFnZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGN1c3RvbUljb25zTG9hZGVyU2VydmljZTogQ3VzdG9tSWNvbnNMb2FkZXJTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHNldFBpcGVQcm92aWRlcihfcGlwZVByb3ZpZGVyKTtcbiAgICAgICAgc2V0Tmdab25lKG5nWm9uZSk7XG4gICAgICAgIHNldEFwcFJlZihfYXBwUmVmKTtcblxuICAgICAgICB0aGlzLmFwcExvY2FsZSA9IGFwcC5hcHBMb2NhbGU7XG4gICAgICAgIHRoaXMuaXNBcHBsaWNhdGlvblR5cGUgPSBnZXRXbVByb2plY3RQcm9wZXJ0aWVzKCkudHlwZSA9PT0gJ0FQUExJQ0FUSU9OJztcbiAgICAgICAgaWYgKHRoaXMuaXNBcHBsaWNhdGlvblR5cGUpIHtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tSWNvbnNMb2FkZXJTZXJ2aWNlLmxvYWQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYXBwTWFuYWdlci5iZWZvcmVBcHBSZWFkeSgpO1xuXG4gICAgICAgIC8vIHN1YnNjcmliZSB0byBPQXV0aCBjaGFuZ2VzXG4gICAgICAgIG9BdXRoU2VydmljZS5nZXRPQXV0aFByb3ZpZGVyc0FzT2JzZXJ2YWJsZSgpLnN1YnNjcmliZSgocHJvdmlkZXJzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJvdmlkZXJzQ29uZmlnID0gcHJvdmlkZXJzO1xuICAgICAgICAgICAgaWYgKHByb3ZpZGVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dPQXV0aERpYWxvZygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlT0F1dGhEaWFsb2coKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU3Vic2NyaWJlIHRvIHRoZSBtZXNzYWdlIHNvdXJjZSB0byBzaG93L2hpZGUgYXBwIHNwaW5uZXJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5nZXRNZXNzYWdlU291cmNlKCkuYXNPYnNlcnZhYmxlKCkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICAgIC8vIHNldFRpbWVvdXQgaXMgdG8gYXZvaWQgJ0V4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3InXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNwaW5uZXIuc2hvdyA9IGRhdGEuc2hvdztcbiAgICAgICAgICAgICAgICB0aGlzLnNwaW5uZXIubWVzc2FnZXMgPSBkYXRhLm1lc3NhZ2VzO1xuICAgICAgICAgICAgICAgIHRoaXMuc3Bpbm5lci5hcmlhbGFiZWwgPSBkYXRhLm1lc3NhZ2VzLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gc2V0IHRoZW1lIHRvIGJzMyBvbiBuZ3gtYm9vdHN0cmFwLiBUaGlzIGF2b2lkcyBydW50aW1lIGNhbGN1bGF0aW9uIHRvIGRldGVybWluZSBicyB0aGVtZS4gVGh1cyByZXNvbHZlcyBwZXJmb3JtYW5jZS5cbiAgICAgICAgc2V0VGhlbWUoJ2JzMycpO1xuXG4gICAgICAgIGxldCBzcGlubmVySWQ7XG5cbiAgICAgICAgbGV0IG9uUGFnZVJlbmRlcmVkID0gbm9vcDtcblxuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGUgPT4ge1xuICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgICAgICAgICBsZXQgcGFnZSA9IGUudXJsLnNwbGl0KCc/JylbMF07XG4gICAgICAgICAgICAgICAgcGFnZSA9IHBhZ2Uuc3Vic3RyaW5nKDEpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFwYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwLmFjdGl2ZUxheW91dE5hbWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHAubGF5b3V0UGFnZXMgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXBwLmFjdGl2ZUxheW91dE5hbWUgJiYgdGhpcy5hcHAubGF5b3V0UGFnZXMgJiYgdGhpcy5hcHAubGF5b3V0UGFnZXMubGVuZ3RoICYmIHRoaXMuYXBwLmxheW91dFBhZ2VzLmluY2x1ZGVzKHBhZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNwaW5uZXJJZCA9IHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygnJywgJ3dtUm91dGVyT3V0bGV0JywgJycsICd3bVJvdXRlck91dGxldCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNwaW5uZXJJZCA9IHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygnJywgJ2dsb2JhbFNwaW5uZXInKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYXBwLXBhZ2Utb3V0bGV0JykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3Mobm9kZSwgJ3BhZ2UtbG9hZC1pbi1wcm9ncmVzcycpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2VMb2FkU3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICBvblBhZ2VSZW5kZXJlZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKHNwaW5uZXJJZCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhcHAtcGFnZS1vdXRsZXQnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKG5vZGUsICdwYWdlLWxvYWQtaW4tcHJvZ3Jlc3MnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBvblBhZ2VSZW5kZXJlZCA9IG5vb3A7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwLmFjdGl2ZVBhZ2VMb2FkVGltZSA9IERhdGUubm93KCkgLSBwYWdlTG9hZFN0YXJ0VGltZTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCB8fCBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkNhbmNlbCB8fCBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG9uUGFnZVJlbmRlcmVkKCk7XG4gICAgICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFwcE1hbmFnZXIuc3Vic2NyaWJlKCdwYWdlUmVhZHknLCAoKSA9PiB7XG4gICAgICAgICAgICBvblBhZ2VSZW5kZXJlZCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLnN1YnNjcmliZSgncGFnZUF0dGFjaCcsICgpID0+IHtcbiAgICAgICAgICAgIG9uUGFnZVJlbmRlcmVkKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3ZpZGVyc0NvbmZpZztcbiAgICBpc09BdXRoRGlhbG9nT3BlbiA9IGZhbHNlO1xuXG4gICAgc2hvd09BdXRoRGlhbG9nKCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNPQXV0aERpYWxvZ09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuaXNPQXV0aERpYWxvZ09wZW4gPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oJ29BdXRoTG9naW5EaWFsb2cnLCB0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsb3NlT0F1dGhEaWFsb2coKSB7XG4gICAgICAgIGlmICh0aGlzLmlzT0F1dGhEaWFsb2dPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmlzT0F1dGhEaWFsb2dPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY2xvc2UoJ29BdXRoTG9naW5EaWFsb2cnLCB0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhcnQoKSB7XG4gICAgICAgIC8vdG8gZml4IHRoZSBpc3N1ZSB0aGF0IGhhcHBlbnMgb25seSBpbiB0aGUgZGV2ZWxvcG1lbnQgbW9kZVxuICAgICAgICAvL0V4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JcbiAgICAgICAgLy9maXg6IGh0dHBzOi8vYmxvZy5hbmd1bGFyLXVuaXZlcnNpdHkuaW8vYW5ndWxhci1kZWJ1Z2dpbmcvXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdGFydEFwcCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYXBwLmR5bmFtaWNDb21wb25lbnRDb250YWluZXJSZWYgPSB0aGlzLmR5bmFtaWNDb21wb25lbnRDb250YWluZXJSZWY7XG4gICAgICAgICAgICB0aGlzLm92ZXJyaWRlUm91dGVyT3V0bGV0KCk7XG4gICAgICAgIH0sIDEwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG92ZXJyaWRlUm91dGVyT3V0bGV0KCkge1xuICAgICAgICAvL292ZXJyaWRlIHRoZSBhdHRhY2gvZGV0YWNoIG1ldGhvZHNcbiAgICAgICAgY29uc3Qgb0F0dGFjaCA9IHRoaXMucm91dGVyT3V0bGV0LmF0dGFjaDtcbiAgICAgICAgY29uc3Qgb0RldGFjaCA9IHRoaXMucm91dGVyT3V0bGV0LmRldGFjaDtcbiAgICAgICAgdGhpcy5yb3V0ZXJPdXRsZXQuYXR0YWNoID0gKGNvbXBvbmVudFJlZjogYW55LCBhY3RpdmF0ZWRSb3V0ZTogIEFjdGl2YXRlZFJvdXRlKSA9PiB7XG4gICAgICAgICAgICBvQXR0YWNoLmNhbGwodGhpcy5yb3V0ZXJPdXRsZXQsIGNvbXBvbmVudFJlZiwgYWN0aXZhdGVkUm91dGUpO1xuICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLm5nT25BdHRhY2goKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yb3V0ZXJPdXRsZXQuZGV0YWNoID0gKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hcHAuYWN0aXZlUGFnZS5uZ09uRGV0YWNoKCk7XG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSBvRGV0YWNoLmNhbGwodGhpcy5yb3V0ZXJPdXRsZXQpO1xuICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudFJlZjtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBza2lwVG9BcHBDb250ZW50KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnJldHJ5Q291bnQgPSAwO1xuICAgICAgICB0aGlzLnRyeUZvY3VzQ29udGVudCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdHJ5Rm9jdXNDb250ZW50KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb250ZW50RWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYXBwLXBhZ2UtY29udGVudCcpIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgIGlmIChjb250ZW50RWwpIHtcbiAgICAgICAgICAgIGNvbnRlbnRFbC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7IC8vIEVuc3VyZSBpdCdzIGZvY3VzYWJsZVxuICAgICAgICAgICAgY29udGVudEVsLmZvY3VzKHsgcHJldmVudFNjcm9sbDogZmFsc2UgfSk7XG4gICAgICAgICAgICBjb250ZW50RWwuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZXRyeUNvdW50IDwgMTApIHtcbiAgICAgICAgICAgIHRoaXMucmV0cnlDb3VudCsrO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnRyeUZvY3VzQ29udGVudCgpLCAxMDApOyAvLyBSZXRyeSBldmVyeSAxMDBtc1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2V0QXR0cmlidXRlKCdsYW5nJywgZ2V0V21Qcm9qZWN0UHJvcGVydGllcygpLmRlZmF1bHRMYW5ndWFnZSk7XG4gICAgICAgIHRoaXMuc3RhcnQoKTtcblxuICAgICAgICBpZiAodGhpcy5lbmFibGVTa2lwVG9NYWluQ29udGVudCkge1xuICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25FbmRTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgICAgICAgICAgICAucGlwZShmaWx0ZXIoKGUpID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXBwLWZvY3VzLXN0YXJ0Jyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWwuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdEb0NoZWNrKCkge1xuICAgICAgICAkaW52b2tlV2F0Y2hlcnMoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMubmF2aWdhdGlvbkVuZFN1YnNjcmlwdGlvbil7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25FbmRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBpZiAoc3RhcnRBcHApIHtcbiAgICBAaWYoZW5hYmxlU2tpcFRvTWFpbkNvbnRlbnQpIHtcbiAgICAgICAgPGRpdiBpZD1cImFwcC1mb2N1cy1zdGFydFwiIHRhYmluZGV4PVwiLTFcIj48L2Rpdj5cbiAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiBjbGFzcz1cInNraXBcIiAoY2xpY2spPVwic2tpcFRvQXBwQ29udGVudCgkZXZlbnQpXCI+e3thcHBMb2NhbGUuTEFCRUxfU0tJUF9UT19NQUlOX0NPTlRFTlQgfHwgJ1NraXAgdG8gbWFpbiBjb250ZW50J319PC9hPlxuICAgIH1cbiAgICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XG4gIEBpZiAoaXNBcHBsaWNhdGlvblR5cGUpIHtcbiAgICA8ZGl2IHdtQ29udGFpbmVyIHBhcnRpYWxDb250YWluZXIgY29udGVudD1cIkNvbW1vblwiIGhpZGRlbiBjbGFzcz1cIm5nLWhpZGVcIj48L2Rpdj5cbiAgfVxuICA8YXBwLXNwaW5uZXIgbmFtZT1cImdsb2JhbHNwaW5uZXJcIiBjbGFzc25hbWU9XCJnbG9iYWwtc3Bpbm5lclwiIHJvbGU9XCJhbGVydFwiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwic3Bpbm5lci5hcmlhbGFiZWwgfHwgJ0xvYWRpbmcnXCIgW3Nob3ddPVwic3Bpbm5lci5zaG93XCIgW3NwaW5uZXJtZXNzYWdlc109XCJzcGlubmVyLm1lc3NhZ2VzXCI+PC9hcHAtc3Bpbm5lcj5cbiAgPGRpdiB3bURpYWxvZyBuYW1lPVwib0F1dGhMb2dpbkRpYWxvZ1wiIHRpdGxlPVwiQXBwbGljYXRpb24gaXMgcmVxdWVzdGluZyB5b3UgdG8gc2lnbiBpbiB3aXRoXCJcbiAgICBjbG9zZS5ldmVudD1cImNsb3NlT0F1dGhEaWFsb2coKVwiPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGlhbG9nQm9keT5cbiAgICAgIDx1bCBjbGFzcz1cImxpc3QtaXRlbXNcIj5cbiAgICAgICAgQGZvciAocHJvdmlkZXIgb2YgcHJvdmlkZXJzQ29uZmlnOyB0cmFjayBwcm92aWRlcikge1xuICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtaXRlbVwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0blwiIChjbGljayk9XCJwcm92aWRlci5pbnZva2UoKVwiPnt7cHJvdmlkZXIubmFtZX19PC9idXR0b24+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgfVxuICAgICAgPC91bD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbiAgPGRpdiB3bUNvbmZpcm1EaWFsb2cgbmFtZT1cIl9hcHAtY29uZmlybS1kaWFsb2dcIiB0aXRsZS5iaW5kPVwidGl0bGVcIiBtZXNzYWdlLmJpbmQ9XCJtZXNzYWdlXCIgb2t0ZXh0LmJpbmQ9XCJva3RleHRcIlxuICAgIGNhbmNlbHRleHQuYmluZD1cImNhbmNlbHRleHRcIiBjbG9zYWJsZT1cImZhbHNlXCIgaWNvbmNsYXNzLmJpbmQ9XCJpY29uY2xhc3NcIlxuICBlc2NhcGUuZXZlbnQ9XCJvbkVzY2FwZSgpXCIgb2suZXZlbnQ9XCJvbk9rKClcIiBjYW5jZWwuZXZlbnQ9XCJvbkNhbmNlbCgpXCIgY2xvc2UuZXZlbnQ9XCJvbkNsb3NlKClcIiBvcGVuZWQuZXZlbnQ9XCJvbk9wZW4oKVwiPjwvZGl2PlxuICBAaWYgKCFpc0FwcGxpY2F0aW9uVHlwZSkge1xuICAgIDxkaXYgIHdtQ29uZmlybURpYWxvZyBuYW1lPVwiUHJlZmFiQ29uZmlybURpYWxvZ1wiIHRpdGxlLmJpbmQ9XCJ0aXRsZVwiIG1lc3NhZ2UuYmluZD1cInRleHRcIiBva3RleHQuYmluZD1cIm9rQnV0dG9uVGV4dFwiXG4gICAgICBjYW5jZWx0ZXh0LmJpbmQ9XCJjYW5jZWxCdXR0b25UZXh0XCIgY2xvc2FibGU9XCJmYWxzZVwiIGljb25jbGFzcy5iaW5kPVwiaWNvbmNsYXNzXCJcbiAgICBlc2NhcGUuZXZlbnQ9XCJvbkVzY2FwZSgpXCIgb2suZXZlbnQ9XCJvbk9rKClcIiBjYW5jZWwuZXZlbnQ9XCJvbkNhbmNlbCgpXCIgY2xvc2UuZXZlbnQ9XCJvbkNsb3NlKClcIiBvcGVuZWQuZXZlbnQ9XCJvbk9wZW4oKVwiPjwvZGl2PlxuICB9XG4gIEBpZiAoIWlzQXBwbGljYXRpb25UeXBlKSB7XG4gICAgPGRpdiAgd21BbGVydERpYWxvZyBuYW1lPVwiUHJlZmFiQWxlcnREaWFsb2dcIiB0aXRsZS5iaW5kPVwidGl0bGVcIiBtZXNzYWdlLmJpbmQ9XCJ0ZXh0XCIgb2t0ZXh0LmJpbmQ9XCJva0J1dHRvblRleHRcIlxuICAgICAgY2FuY2VsdGV4dC5iaW5kPVwiY2FuY2VsQnV0dG9uVGV4dFwiIGNsb3NhYmxlPVwiZmFsc2VcIiBpY29uY2xhc3MuYmluZD1cImljb25jbGFzc1wiXG4gICAgZXNjYXBlLmV2ZW50PVwib25Fc2NhcGUoKVwiIG9rLmV2ZW50PVwib25PaygpXCIgY2FuY2VsLmV2ZW50PVwib25DYW5jZWwoKVwiIGNsb3NlLmV2ZW50PVwib25DbG9zZSgpXCIgb3BlbmVkLmV2ZW50PVwib25PcGVuKClcIj48L2Rpdj5cbiAgfVxuICA8ZGl2IHdtQXBwRXh0PjwvZGl2PlxuICA8aSBpZD1cIndtLW1vYmlsZS1kaXNwbGF5XCI+PC9pPlxufVxuPCEtLUR1bW15IGNvbnRhaW5lciB0byBjcmVhdGUgdGhlIGNvbXBvbmVudCBkeW5hbWljYWxseS0tPlxuPG5nLWNvbnRhaW5lciAjZHluYW1pY0NvbXBvbmVudD48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|