@wavemaker/app-ng-runtime 11.11.0-rc.6115 → 11.11.0-rc.6116

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wavemaker/app-ng-runtime",
3
- "version": "11.11.0-rc.6115",
3
+ "version": "11.11.0-rc.6116",
4
4
  "description": "All modules required for a WaveMaker application.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -0,0 +1,5 @@
1
+ import { ApplicationConfig } from "@angular/core";
2
+ export declare const xsrfHeaderName = "X-WM-XSRF-TOKEN";
3
+ export declare function InitializeApp(I18nService: any, AppJSResolve: any): () => Promise<any>;
4
+ export declare function setAngularLocale(I18nService: any): any;
5
+ export declare const appConfig: ApplicationConfig;
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/platform-browser-dynamic'), require('tslib'), require('@angular/platform-browser'), require('@angular/common'), require('@angular/router'), require('@angular/common/http'), require('@angular/forms'), require('ngx-bootstrap/typeahead'), require('ngx-bootstrap/timepicker'), require('ngx-bootstrap/progressbar'), require('ngx-bootstrap/pagination'), require('ngx-bootstrap/modal'), require('ngx-bootstrap/tooltip'), require('ngx-bootstrap/datepicker'), require('ngx-bootstrap/dropdown'), require('ngx-bootstrap/popover'), require('ng-circle-progress'), require('ngx-toastr'), require('ngx-bootstrap/carousel'), require('@wm/core'), require('@wm/components/basic'), require('@wm/components/basic/progress'), require('@wm/components/basic/rich-text-editor'), require('@wm/components/basic/search'), require('@wm/components/basic/tree'), require('@wm/components/input'), require('@wm/components/input/calendar'), require('@wm/components/input/chips'), require('@wm/components/input/color-picker'), require('@wm/components/input/currency'), require('@wm/components/input/epoch'), require('@wm/components/input/file-upload'), require('@wm/components/input/rating'), require('@wm/components/input/slider'), require('@wm/components/data/card'), require('@wm/components/data/form'), require('@wm/components/data/list'), require('@wm/components/data/live-table'), require('@wm/components/data/pagination'), require('@wm/components/data/table'), require('@wm/components/chart'), require('@wm/components/containers/accordion'), require('@wm/components/containers/linear-layout'), require('@wm/components/containers/layout-grid'), require('@wm/components/containers/panel'), require('@wm/components/containers/tabs'), require('@wm/components/containers/tile'), require('@wm/components/containers/wizard'), require('@wm/components/dialogs/alert-dialog'), require('@wm/components/dialogs/iframe-dialog'), require('@wm/components/dialogs/login-dialog'), require('@wm/components/dialogs/partial-dialog'), require('@wm/components/navigation/breadcrumb'), require('@wm/components/navigation/menu'), require('@wm/components/navigation/navbar'), require('@wm/components/navigation/popover'), require('@wm/components/advanced/carousel'), require('@wm/components/advanced/login'), require('@wm/components/advanced/marquee'), require('@wm/components/advanced/custom'), require('@wm/components/page'), require('@wm/components/page/footer'), require('@wm/components/page/header'), require('@wm/components/page/left-panel'), require('@wm/components/page/right-panel'), require('@wm/components/page/top-nav'), require('@wm/components/prefab'), require('@wm/runtime/base'), require('@wm/components/base'), require('@wm/variables'), require('@wm/security'), require('@wm/transpiler'), require('lodash-es'), require('@wavemaker/custom-widgets-m3'), require('@angular/platform-browser/animations'), require('@wm/http')) :
3
- typeof define === 'function' && define.amd ? define(['exports', '@angular/core', '@angular/platform-browser-dynamic', 'tslib', '@angular/platform-browser', '@angular/common', '@angular/router', '@angular/common/http', '@angular/forms', 'ngx-bootstrap/typeahead', 'ngx-bootstrap/timepicker', 'ngx-bootstrap/progressbar', 'ngx-bootstrap/pagination', 'ngx-bootstrap/modal', 'ngx-bootstrap/tooltip', 'ngx-bootstrap/datepicker', 'ngx-bootstrap/dropdown', 'ngx-bootstrap/popover', 'ng-circle-progress', 'ngx-toastr', 'ngx-bootstrap/carousel', '@wm/core', '@wm/components/basic', '@wm/components/basic/progress', '@wm/components/basic/rich-text-editor', '@wm/components/basic/search', '@wm/components/basic/tree', '@wm/components/input', '@wm/components/input/calendar', '@wm/components/input/chips', '@wm/components/input/color-picker', '@wm/components/input/currency', '@wm/components/input/epoch', '@wm/components/input/file-upload', '@wm/components/input/rating', '@wm/components/input/slider', '@wm/components/data/card', '@wm/components/data/form', '@wm/components/data/list', '@wm/components/data/live-table', '@wm/components/data/pagination', '@wm/components/data/table', '@wm/components/chart', '@wm/components/containers/accordion', '@wm/components/containers/linear-layout', '@wm/components/containers/layout-grid', '@wm/components/containers/panel', '@wm/components/containers/tabs', '@wm/components/containers/tile', '@wm/components/containers/wizard', '@wm/components/dialogs/alert-dialog', '@wm/components/dialogs/iframe-dialog', '@wm/components/dialogs/login-dialog', '@wm/components/dialogs/partial-dialog', '@wm/components/navigation/breadcrumb', '@wm/components/navigation/menu', '@wm/components/navigation/navbar', '@wm/components/navigation/popover', '@wm/components/advanced/carousel', '@wm/components/advanced/login', '@wm/components/advanced/marquee', '@wm/components/advanced/custom', '@wm/components/page', '@wm/components/page/footer', '@wm/components/page/header', '@wm/components/page/left-panel', '@wm/components/page/right-panel', '@wm/components/page/top-nav', '@wm/components/prefab', '@wm/runtime/base', '@wm/components/base', '@wm/variables', '@wm/security', '@wm/transpiler', 'lodash-es', '@wavemaker/custom-widgets-m3', '@angular/platform-browser/animations', '@wm/http'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.wm = global.wm || {}, global.wm.runtime = global.wm.runtime || {}, global.wm.runtime.dynamic = {}), global.ng.core, global.ng.platformBrowserDynamic, global.tslib, global.ng.platformBrowser, global.ng.common, global.ng.router, global.ng.common.http, global.ng.forms, global.typeahead, global.timepicker, global.progressbar, global.pagination, global.modal, global.tooltip, global.datepicker, global.dropdown, global.popover, global.ngCircleProgress, global.ngxToastr, global.carousel, global.wm.core, global.wm.components.basic, global.wm.components.basic.progress, global.wm.components.basic.richtexteditor, global.wm.components.basic.search, global.wm.components.basic.tree, global.wm.components.input, global.wm.components.input.calendar, global.wm.components.input.chips, global.wm.components.input.colorpicker, global.wm.components.input.currency, global.wm.components.input.epoch, global.wm.components.input.fileupload, global.wm.components.input.rating, global.wm.components.input.slider, global.wm.components.data.card, global.wm.components.data.form, global.wm.components.data.list, global.wm.components.data.livetable, global.wm.components.data.pagination, global.wm.components.data.table, global.wm.components.chart, global.wm.components.containers.accordion, global.wm.components.containers.linearlayout, global.wm.components.containers.layoutgrid, global.wm.components.containers.panel, global.wm.components.containers.tabs, global.wm.components.containers.tile, global.wm.components.containers.wizard, global.wm.components.dialogs.alertdialog, global.wm.components.dialogs.iframedialog, global.wm.components.dialogs.logindialog, global.wm.components.dialogs.partialdialog, global.wm.components.navigation.breadcrumb, global.wm.components.navigation.menu, global.wm.components.navigation.navbar, global.wm.components.navigation.popover, global.wm.components.advanced.carousel, global.wm.components.advanced.login, global.wm.components.advanced.marquee, global.wm.components.advanced.custom, global.wm.components.page, global.wm.components.page.footer, global.wm.components.page.header, global.wm.components.page.leftpanel, global.wm.components.page.rightpanel, global.wm.components.page.topnav, global.wm.components.prefab, global.wm.runtime.base, global.wm.components.base, global.wm.variables, global.wm.security, global.wm.transpiler, global._, global.wm_custom_widgets, global.ng.platformBrowser.animations, global.wm.http));
5
- })(this, (function (exports, i0, platformBrowserDynamic, tslib, platformBrowser, common, i1, i1$1, forms, typeahead, timepicker, progressbar, pagination, modal, tooltip, datepicker, dropdown, popover, ngCircleProgress, ngxToastr, carousel, i5, basic, progress, richTextEditor, search, tree, input, calendar, chips, colorPicker, currency, epoch, fileUpload, rating, slider, card, form, list, liveTable, pagination$1, table, chart, accordion, linearLayout, layoutGrid, panel, tabs, tile, wizard, alertDialog, iframeDialog, loginDialog, partialDialog, breadcrumb, menu, navbar, popover$1, carousel$1, login, marquee, custom, page, footer, header, leftPanel, rightPanel, topNav, prefab, i4, base, i2, i3, transpiler, lodashEs, customWidgets, animations, http) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('lodash-es'), require('@angular/platform-browser'), require('@wm/runtime/base'), require('@angular/router'), require('@angular/common/http'), require('@angular/platform-browser/animations'), require('@wm/components/base'), require('@wm/core'), require('@wm/variables'), require('@wm/security'), require('@wm/http'), require('@wm/oAuth'), require('ngx-bootstrap/modal'), require('ngx-toastr'), require('ngx-bootstrap/datepicker'), require('ng-circle-progress'), require('@angular/common'), require('tslib'), require('@wm/transpiler'), require('@wavemaker/custom-widgets-m3'), require('@wm/components/page'), require('@angular/forms'), require('ngx-bootstrap/typeahead'), require('ngx-bootstrap/timepicker'), require('ngx-bootstrap/progressbar'), require('ngx-bootstrap/pagination'), require('ngx-bootstrap/tooltip'), require('ngx-bootstrap/dropdown'), require('ngx-bootstrap/popover'), require('ngx-bootstrap/carousel'), require('@wm/components/basic'), require('@wm/components/basic/progress'), require('@wm/components/basic/rich-text-editor'), require('@wm/components/basic/search'), require('@wm/components/basic/tree'), require('@wm/components/input'), require('@wm/components/input/calendar'), require('@wm/components/input/chips'), require('@wm/components/input/color-picker'), require('@wm/components/input/currency'), require('@wm/components/input/epoch'), require('@wm/components/input/file-upload'), require('@wm/components/input/rating'), require('@wm/components/input/slider'), require('@wm/components/data/card'), require('@wm/components/data/form'), require('@wm/components/data/list'), require('@wm/components/data/live-table'), require('@wm/components/data/pagination'), require('@wm/components/data/table'), require('@wm/components/chart'), require('@wm/components/containers/accordion'), require('@wm/components/containers/linear-layout'), require('@wm/components/containers/layout-grid'), require('@wm/components/containers/panel'), require('@wm/components/containers/tabs'), require('@wm/components/containers/tile'), require('@wm/components/containers/wizard'), require('@wm/components/dialogs/alert-dialog'), require('@wm/components/dialogs/iframe-dialog'), require('@wm/components/dialogs/login-dialog'), require('@wm/components/dialogs/partial-dialog'), require('@wm/components/navigation/breadcrumb'), require('@wm/components/navigation/menu'), require('@wm/components/navigation/navbar'), require('@wm/components/navigation/popover'), require('@wm/components/advanced/carousel'), require('@wm/components/advanced/login'), require('@wm/components/advanced/marquee'), require('@wm/components/advanced/custom'), require('@wm/components/page/footer'), require('@wm/components/page/header'), require('@wm/components/page/left-panel'), require('@wm/components/page/right-panel'), require('@wm/components/page/top-nav'), require('@wm/components/prefab')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', '@angular/core', 'lodash-es', '@angular/platform-browser', '@wm/runtime/base', '@angular/router', '@angular/common/http', '@angular/platform-browser/animations', '@wm/components/base', '@wm/core', '@wm/variables', '@wm/security', '@wm/http', '@wm/oAuth', 'ngx-bootstrap/modal', 'ngx-toastr', 'ngx-bootstrap/datepicker', 'ng-circle-progress', '@angular/common', 'tslib', '@wm/transpiler', '@wavemaker/custom-widgets-m3', '@wm/components/page', '@angular/forms', 'ngx-bootstrap/typeahead', 'ngx-bootstrap/timepicker', 'ngx-bootstrap/progressbar', 'ngx-bootstrap/pagination', 'ngx-bootstrap/tooltip', 'ngx-bootstrap/dropdown', 'ngx-bootstrap/popover', 'ngx-bootstrap/carousel', '@wm/components/basic', '@wm/components/basic/progress', '@wm/components/basic/rich-text-editor', '@wm/components/basic/search', '@wm/components/basic/tree', '@wm/components/input', '@wm/components/input/calendar', '@wm/components/input/chips', '@wm/components/input/color-picker', '@wm/components/input/currency', '@wm/components/input/epoch', '@wm/components/input/file-upload', '@wm/components/input/rating', '@wm/components/input/slider', '@wm/components/data/card', '@wm/components/data/form', '@wm/components/data/list', '@wm/components/data/live-table', '@wm/components/data/pagination', '@wm/components/data/table', '@wm/components/chart', '@wm/components/containers/accordion', '@wm/components/containers/linear-layout', '@wm/components/containers/layout-grid', '@wm/components/containers/panel', '@wm/components/containers/tabs', '@wm/components/containers/tile', '@wm/components/containers/wizard', '@wm/components/dialogs/alert-dialog', '@wm/components/dialogs/iframe-dialog', '@wm/components/dialogs/login-dialog', '@wm/components/dialogs/partial-dialog', '@wm/components/navigation/breadcrumb', '@wm/components/navigation/menu', '@wm/components/navigation/navbar', '@wm/components/navigation/popover', '@wm/components/advanced/carousel', '@wm/components/advanced/login', '@wm/components/advanced/marquee', '@wm/components/advanced/custom', '@wm/components/page/footer', '@wm/components/page/header', '@wm/components/page/left-panel', '@wm/components/page/right-panel', '@wm/components/page/top-nav', '@wm/components/prefab'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.wm = global.wm || {}, global.wm.runtime = global.wm.runtime || {}, global.wm.runtime.dynamic = {}), global.ng.core, global._, global.ng.platformBrowser, global.wm.runtime.base, global.ng.router, global.ng.common.http, global.ng.platformBrowser.animations, global.wm.components.base, global.wm.core, global.wm.variables, global.wm.security, global.wm.http, global.wm.oAuth, global.modal, global.ngxToastr, global.datepicker, global.ngCircleProgress, global.ng.common, global.tslib, global.wm.transpiler, global.wm_custom_widgets, global.wm.components.page, global.ng.forms, global.typeahead, global.timepicker, global.progressbar, global.pagination, global.tooltip, global.dropdown, global.popover, global.carousel, global.wm.components.basic, global.wm.components.basic.progress, global.wm.components.basic.richtexteditor, global.wm.components.basic.search, global.wm.components.basic.tree, global.wm.components.input, global.wm.components.input.calendar, global.wm.components.input.chips, global.wm.components.input.colorpicker, global.wm.components.input.currency, global.wm.components.input.epoch, global.wm.components.input.fileupload, global.wm.components.input.rating, global.wm.components.input.slider, global.wm.components.data.card, global.wm.components.data.form, global.wm.components.data.list, global.wm.components.data.livetable, global.wm.components.data.pagination, global.wm.components.data.table, global.wm.components.chart, global.wm.components.containers.accordion, global.wm.components.containers.linearlayout, global.wm.components.containers.layoutgrid, global.wm.components.containers.panel, global.wm.components.containers.tabs, global.wm.components.containers.tile, global.wm.components.containers.wizard, global.wm.components.dialogs.alertdialog, global.wm.components.dialogs.iframedialog, global.wm.components.dialogs.logindialog, global.wm.components.dialogs.partialdialog, global.wm.components.navigation.breadcrumb, global.wm.components.navigation.menu, global.wm.components.navigation.navbar, global.wm.components.navigation.popover, global.wm.components.advanced.carousel, global.wm.components.advanced.login, global.wm.components.advanced.marquee, global.wm.components.advanced.custom, global.wm.components.page.footer, global.wm.components.page.header, global.wm.components.page.leftpanel, global.wm.components.page.rightpanel, global.wm.components.page.topnav, global.wm.components.prefab));
5
+ })(this, (function (exports, i0, lodashEs, platformBrowser, i4, i1, i1$1, animations, base, i5, i2, i3, http, oAuth, modal, ngxToastr, datepicker, ngCircleProgress, common, tslib, transpiler, customWidgets, page, forms, typeahead, timepicker, progressbar, pagination, tooltip, dropdown, popover, carousel, basic, progress, richTextEditor, search, tree, input, calendar, chips, colorPicker, currency, epoch, fileUpload, rating, slider, card, form, list, liveTable, pagination$1, table, chart, accordion, linearLayout, layoutGrid, panel, tabs, tile, wizard, alertDialog, iframeDialog, loginDialog, partialDialog, breadcrumb, menu, navbar, popover$1, carousel$1, login, marquee, custom, footer, header, leftPanel, rightPanel, topNav, prefab) { 'use strict';
6
6
 
7
7
  function _interopNamespaceDefault(e) {
8
8
  var n = Object.create(null);
@@ -22,10 +22,10 @@
22
22
  }
23
23
 
24
24
  var i0__namespace = /*#__PURE__*/_interopNamespaceDefault(i0);
25
+ var i4__namespace = /*#__PURE__*/_interopNamespaceDefault(i4);
25
26
  var i1__namespace = /*#__PURE__*/_interopNamespaceDefault(i1);
26
27
  var i1$1__namespace = /*#__PURE__*/_interopNamespaceDefault(i1$1);
27
28
  var i5__namespace = /*#__PURE__*/_interopNamespaceDefault(i5);
28
- var i4__namespace = /*#__PURE__*/_interopNamespaceDefault(i4);
29
29
  var i2__namespace = /*#__PURE__*/_interopNamespaceDefault(i2);
30
30
  var i3__namespace = /*#__PURE__*/_interopNamespaceDefault(i3);
31
31
  var customWidgets__namespace = /*#__PURE__*/_interopNamespaceDefault(customWidgets);
@@ -149,6 +149,23 @@
149
149
  canDeactivate: [i4.CanDeactivatePageGuard]
150
150
  }
151
151
  ];
152
+ class CustomwidgetConfigProviderService extends i4.CustomwidgetConfigProvider {
153
+ constructor() {
154
+ super();
155
+ }
156
+ getConfig(widgetname) {
157
+ return new Promise((res, rej) => {
158
+ Promise.resolve(window['resourceCache'].get(`./custom-widgets/${widgetname}/page.min.json`)).then((pageInfo) => {
159
+ res(pageInfo.config);
160
+ });
161
+ });
162
+ }
163
+ static { this.ɵfac = function CustomwidgetConfigProviderService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CustomwidgetConfigProviderService)(); }; }
164
+ static { this.ɵprov = /*@__PURE__*/ i0__namespace.ɵɵdefineInjectable({ token: CustomwidgetConfigProviderService, factory: CustomwidgetConfigProviderService.ɵfac }); }
165
+ }
166
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(CustomwidgetConfigProviderService, [{
167
+ type: i0.Injectable
168
+ }], () => [], null); })();
152
169
 
153
170
  class AppJSProviderService extends i4.AppJSProvider {
154
171
  constructor($http) {
@@ -170,22 +187,22 @@
170
187
  }]
171
188
  }], () => [{ type: i1$1__namespace.HttpClient }], null); })();
172
189
 
173
- const cache$2 = new Map();
190
+ const cache$1 = new Map();
174
191
  class AppResourceManagerService {
175
192
  get(url, useCache) {
176
- const cachedResponse = cache$2.get(url);
193
+ const cachedResponse = cache$1.get(url);
177
194
  if (cachedResponse) {
178
195
  return Promise.resolve(cachedResponse);
179
196
  }
180
197
  return this.$http.get(url).then(response => {
181
198
  if (useCache) {
182
- cache$2.set(url, response);
199
+ cache$1.set(url, response);
183
200
  }
184
201
  return response;
185
202
  });
186
203
  }
187
204
  clearCache() {
188
- cache$2.clear();
205
+ cache$1.clear();
189
206
  }
190
207
  constructor($http) {
191
208
  this.$http = $http;
@@ -352,8 +369,7 @@
352
369
  {
353
370
  provide: i5.UserDefinedExecutionContext,
354
371
  useExisting: DynamicComponent
355
- },
356
- page.PageDirective,
372
+ }
357
373
  ]
358
374
  })(DynamicComponent);
359
375
  return component;
@@ -440,23 +456,6 @@
440
456
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(ComponentRefProviderService, [{
441
457
  type: i0.Injectable
442
458
  }], () => [{ type: AppResourceManagerService }, { type: i5__namespace.App }, { type: i4__namespace.AppManagerService }, { type: i0__namespace.Compiler }], null); })();
443
- class CustomwidgetConfigProviderService extends i4.CustomwidgetConfigProvider {
444
- constructor() {
445
- super();
446
- }
447
- getConfig(widgetname) {
448
- return new Promise((res, rej) => {
449
- Promise.resolve(window['resourceCache'].get(`./custom-widgets/${widgetname}/page.min.json`)).then((pageInfo) => {
450
- res(pageInfo.config);
451
- });
452
- });
453
- }
454
- static { this.ɵfac = function CustomwidgetConfigProviderService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CustomwidgetConfigProviderService)(); }; }
455
- static { this.ɵprov = /*@__PURE__*/ i0__namespace.ɵɵdefineInjectable({ token: CustomwidgetConfigProviderService, factory: CustomwidgetConfigProviderService.ɵfac }); }
456
- }
457
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(CustomwidgetConfigProviderService, [{
458
- type: i0.Injectable
459
- }], () => [], null); })();
460
459
 
461
460
  const cache = new Map();
462
461
  class PrefabConfigProviderService extends i4.PrefabConfigProvider {
@@ -482,6 +481,144 @@
482
481
  type: i0.Injectable
483
482
  }], () => [{ type: AppResourceManagerService }], null); })();
484
483
 
484
+ const wmModules = [
485
+ i0.importProvidersFrom(modal.ModalModule.forRoot(), ngxToastr.ToastNoAnimationModule.forRoot({ maxOpened: 1, autoDismiss: true }), datepicker.BsDatepickerModule.forRoot(), ngCircleProgress.NgCircleProgressModule.forRoot())
486
+ ];
487
+ const xsrfHeaderName$1 = "X-WM-XSRF-TOKEN";
488
+ const initializeProjectDetails = () => {
489
+ let cdnUrl = document.querySelector('[name="deployUrl"]') && document.querySelector('[name="deployUrl"]').getAttribute('content');
490
+ i5._WM_APP_PROJECT.isPreview = cdnUrl ? false : true;
491
+ const apiUrl = document.querySelector('[name="apiUrl"]') && document.querySelector('[name="apiUrl"]').getAttribute('content');
492
+ //for preview
493
+ if (!cdnUrl) {
494
+ cdnUrl = document.querySelector('[name="cdnUrl"]') && document.querySelector('[name="cdnUrl"]').getAttribute('content');
495
+ }
496
+ i5._WM_APP_PROJECT.id = location.href.split('/')[3];
497
+ // Integration with third party apps like in SSPA/WebComponents, this meta tag with cdnUrl will not be there then default it to ng-bundle/
498
+ i5._WM_APP_PROJECT.apiUrl = apiUrl || './';
499
+ i5._WM_APP_PROJECT.cdnUrl = cdnUrl || 'ng-bundle/';
500
+ i5._WM_APP_PROJECT.ngDest = 'ng-bundle/';
501
+ try {
502
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
503
+ //@ts-ignore
504
+ __webpack_require__.p = __webpack_public_path__ = cdnUrl;
505
+ }
506
+ catch (e) {
507
+ //for app preview there is no webpack. Don't do anything.
508
+ }
509
+ };
510
+ function InitializeApp(I18nService, AppJSResolve) {
511
+ return async () => {
512
+ initializeProjectDetails();
513
+ await AppJSResolve.resolve();
514
+ return I18nService.loadDefaultLocale();
515
+ };
516
+ }
517
+ function setAngularLocale(I18nService) {
518
+ initializeProjectDetails();
519
+ return I18nService.deduceAppLocale();
520
+ }
521
+ const appConfig = {
522
+ providers: [
523
+ // Provide Angular core services
524
+ i1.provideRouter(routes, i1.withHashLocation(), i1.withComponentInputBinding()),
525
+ i1$1.provideHttpClient(i1$1.withInterceptorsFromDi(), i1$1.withXsrfConfiguration({
526
+ cookieName: "wm_xsrf_token",
527
+ headerName: xsrfHeaderName$1
528
+ })),
529
+ animations.provideAnimations(),
530
+ // Provide application-specific services
531
+ {
532
+ provide: i0.APP_INITIALIZER,
533
+ useFactory: InitializeApp,
534
+ deps: [i5.AbstractI18nService, i4.AppJSResolve],
535
+ multi: true
536
+ },
537
+ {
538
+ provide: i0.LOCALE_ID,
539
+ useFactory: setAngularLocale,
540
+ deps: [i5.AbstractI18nService]
541
+ },
542
+ {
543
+ provide: i1$1.HTTP_INTERCEPTORS,
544
+ useClass: i4.HttpCallInterceptor,
545
+ multi: true
546
+ },
547
+ { provide: i5.App, useClass: i4.AppRef },
548
+ { provide: i5.AbstractToasterService, useClass: i4.ToasterServiceImpl },
549
+ { provide: i5.AbstractI18nService, useClass: i4.I18nServiceImpl },
550
+ { provide: i5.AbstractSpinnerService, useClass: i4.SpinnerServiceImpl },
551
+ { provide: i5.AbstractNavigationService, useClass: i4.NavigationServiceImpl },
552
+ { provide: i5.AbstractDialogService, useClass: base.DialogServiceImpl },
553
+ { provide: i5.AppDefaults, useClass: i4.AppDefaultsService },
554
+ { provide: i5.DynamicComponentRefProvider, useClass: i4.DynamicComponentRefProviderService },
555
+ { provide: i4.AppJSProvider, useClass: AppJSProviderService },
556
+ { provide: i4.AppVariablesProvider, useClass: AppVariablesProviderService },
557
+ { provide: i4.AppExtensionProvider, useClass: AppExtensionProviderService },
558
+ { provide: i4.ComponentRefProvider, useClass: ComponentRefProviderService },
559
+ { provide: i5.PartialRefProvider, useClass: ComponentRefProviderService },
560
+ { provide: i5.CustomWidgetRefProvider, useClass: ComponentRefProviderService },
561
+ { provide: i4.CustomwidgetConfigProvider, useClass: CustomwidgetConfigProviderService },
562
+ { provide: i4.PrefabConfigProvider, useClass: PrefabConfigProviderService },
563
+ { provide: i1.RouteReuseStrategy, useClass: i4.WmRouteReuseStrategy },
564
+ { provide: i5.AbstractHttpService, useClass: http.HttpServiceImpl },
565
+ AppResourceManagerService,
566
+ i4.PipeService,
567
+ common.DecimalPipe,
568
+ base.SanitizePipe,
569
+ base.ToDatePipe,
570
+ base.FilterPipe,
571
+ base.TrailingZeroDecimalPipe,
572
+ base.TrustAsPipe,
573
+ base.ImagePipe,
574
+ base.CustomPipe,
575
+ Location,
576
+ common.DatePipe,
577
+ i4.AppManagerService,
578
+ i4.PrefabManagerService,
579
+ i4.AuthGuard,
580
+ i4.RoleGuard,
581
+ i4.PageNotFoundGuard,
582
+ i4.CanDeactivatePageGuard,
583
+ i4.AppJSResolve,
584
+ i4.AppExtensionJSResolve,
585
+ i4.I18nResolve,
586
+ i3.SecurityService,
587
+ oAuth.OAuthService,
588
+ i2.VariablesService,
589
+ i2.MetadataService,
590
+ ...wmModules,
591
+ page.PageDirective
592
+ ]
593
+ };
594
+
595
+ const DEBUG_MODE = 'debugMode';
596
+ if (sessionStorage.getItem(DEBUG_MODE) !== 'true') {
597
+ i0.enableProdMode();
598
+ }
599
+ console.time('bootstrap');
600
+ document.addEventListener('DOMContentLoaded', () => {
601
+ new Promise(resolve => {
602
+ resolve();
603
+ }).then(() => platformBrowser.bootstrapApplication(i4.AppComponent, appConfig))
604
+ .then((appRef) => {
605
+ window.addEventListener('unload', () => {
606
+ appRef.components.map(c => c?.destroy());
607
+ });
608
+ })
609
+ .catch(err => console.error('Error bootstrapping app:', err));
610
+ });
611
+ window.debugMode = function (on) {
612
+ if (lodashEs.isEmpty(on)) {
613
+ on = true;
614
+ }
615
+ const value = on ? 'true' : 'false';
616
+ if (sessionStorage.getItem(DEBUG_MODE) !== value) {
617
+ sessionStorage.setItem(DEBUG_MODE, value);
618
+ window.location.reload();
619
+ }
620
+ };
621
+
485
622
  const routerModule = i1.RouterModule.forRoot(routes, { useHash: true, scrollPositionRestoration: 'top' });
486
623
  const toastrModule = ngxToastr.ToastNoAnimationModule.forRoot({ maxOpened: 1, autoDismiss: true });
487
624
  // In angular 15, xsrf headerName should not be null. Angular 15 is not using default header value like it used to send in calls
@@ -678,34 +815,6 @@
678
815
  tslib.__metadata("design:paramtypes", [i5.App, i0.Injector, i4.ComponentRefProvider])
679
816
  ], exports.AppModule);
680
817
 
681
- const DEBUG_MODE = 'debugMode';
682
- if (sessionStorage.getItem(DEBUG_MODE) !== 'true') {
683
- i0.enableProdMode();
684
- }
685
- console.time('bootstrap');
686
- document.addEventListener('DOMContentLoaded', () => {
687
- new Promise(resolve => {
688
- resolve();
689
- }).then(() => platformBrowserDynamic.platformBrowserDynamic().bootstrapModule(exports.AppModule))
690
- .then((appModuleRef) => {
691
- const applicationRef = appModuleRef.injector.get(i0.ApplicationRef);
692
- window.addEventListener('unload', () => {
693
- applicationRef.components.map(c => c && c.destroy());
694
- });
695
- console.timeEnd('bootstrap');
696
- }, err => console.log(err));
697
- });
698
- window.debugMode = function (on) {
699
- if (lodashEs.isEmpty(on)) {
700
- on = true;
701
- }
702
- const value = on ? 'true' : 'false';
703
- if (sessionStorage.getItem(DEBUG_MODE) !== value) {
704
- sessionStorage.setItem(DEBUG_MODE, value);
705
- window.location.reload();
706
- }
707
- };
708
-
709
818
  exports.AppExtensionProviderService = AppExtensionProviderService;
710
819
  exports.AppJSProviderService = AppJSProviderService;
711
820
  exports.AppResourceManagerService = AppResourceManagerService;
@@ -0,0 +1,136 @@
1
+ import { importProvidersFrom, APP_INITIALIZER, LOCALE_ID } from "@angular/core";
2
+ import { provideRouter, RouteReuseStrategy, withComponentInputBinding, withHashLocation } from "@angular/router";
3
+ import { provideHttpClient, withXsrfConfiguration, HTTP_INTERCEPTORS, withInterceptorsFromDi } from "@angular/common/http";
4
+ import { provideAnimations } from "@angular/platform-browser/animations";
5
+ import { routes } from "./app.routes";
6
+ import { HttpServiceImpl } from "@wm/http";
7
+ import { SecurityService } from "@wm/security";
8
+ import { VariablesService, MetadataService } from "@wm/variables";
9
+ import { OAuthService } from "@wm/oAuth";
10
+ import { AppJSProvider, AppVariablesProvider, ComponentRefProvider, PrefabConfigProvider, AppExtensionProvider, CustomwidgetConfigProvider, AppDefaultsService, AppExtensionJSResolve, AppJSResolve, AppManagerService, AppRef, I18nServiceImpl, NavigationServiceImpl, SpinnerServiceImpl, ToasterServiceImpl, DynamicComponentRefProviderService, HttpCallInterceptor, PrefabManagerService, CanDeactivatePageGuard, PageNotFoundGuard, I18nResolve, RoleGuard, PipeService, AuthGuard, WmRouteReuseStrategy } from "@wm/runtime/base";
11
+ import { AbstractDialogService, AbstractHttpService, AbstractI18nService, AbstractNavigationService, AbstractSpinnerService, AbstractToasterService, App, AppDefaults, CustomWidgetRefProvider, DynamicComponentRefProvider, PartialRefProvider, _WM_APP_PROJECT, } from "@wm/core";
12
+ import { ModalModule } from "ngx-bootstrap/modal";
13
+ import { ToastNoAnimationModule } from "ngx-toastr";
14
+ import { BsDatepickerModule } from "ngx-bootstrap/datepicker";
15
+ import { NgCircleProgressModule } from "ng-circle-progress";
16
+ import { DatePipe, DecimalPipe } from "@angular/common";
17
+ import { CustomwidgetConfigProviderService } from "./services/customwidget-config-provider.service";
18
+ import { AppJSProviderService } from "./services/app-js-provider.service";
19
+ import { AppVariablesProviderService } from "./services/app-variables-provider.service";
20
+ import { AppExtensionProviderService } from "./services/app-extension.service";
21
+ import { ComponentRefProviderService } from "./services/component-ref-provider.service";
22
+ import { PrefabConfigProviderService } from "./services/prefab-config-provider.service";
23
+ import { AppResourceManagerService } from "./services/app-resource-manager.service";
24
+ import { CustomPipe, DialogServiceImpl, FilterPipe, ImagePipe, SanitizePipe, ToDatePipe, TrailingZeroDecimalPipe, TrustAsPipe } from "@wm/components/base";
25
+ import { PageDirective } from "@wm/components/page";
26
+ const wmModules = [
27
+ importProvidersFrom(ModalModule.forRoot(), ToastNoAnimationModule.forRoot({ maxOpened: 1, autoDismiss: true }), BsDatepickerModule.forRoot(), NgCircleProgressModule.forRoot())
28
+ ];
29
+ export const xsrfHeaderName = "X-WM-XSRF-TOKEN";
30
+ const initializeProjectDetails = () => {
31
+ let cdnUrl = document.querySelector('[name="deployUrl"]') && document.querySelector('[name="deployUrl"]').getAttribute('content');
32
+ _WM_APP_PROJECT.isPreview = cdnUrl ? false : true;
33
+ const apiUrl = document.querySelector('[name="apiUrl"]') && document.querySelector('[name="apiUrl"]').getAttribute('content');
34
+ //for preview
35
+ if (!cdnUrl) {
36
+ cdnUrl = document.querySelector('[name="cdnUrl"]') && document.querySelector('[name="cdnUrl"]').getAttribute('content');
37
+ }
38
+ _WM_APP_PROJECT.id = location.href.split('/')[3];
39
+ // Integration with third party apps like in SSPA/WebComponents, this meta tag with cdnUrl will not be there then default it to ng-bundle/
40
+ _WM_APP_PROJECT.apiUrl = apiUrl || './';
41
+ _WM_APP_PROJECT.cdnUrl = cdnUrl || 'ng-bundle/';
42
+ _WM_APP_PROJECT.ngDest = 'ng-bundle/';
43
+ try {
44
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
45
+ //@ts-ignore
46
+ __webpack_require__.p = __webpack_public_path__ = cdnUrl;
47
+ }
48
+ catch (e) {
49
+ //for app preview there is no webpack. Don't do anything.
50
+ }
51
+ };
52
+ export function InitializeApp(I18nService, AppJSResolve) {
53
+ return async () => {
54
+ initializeProjectDetails();
55
+ await AppJSResolve.resolve();
56
+ return I18nService.loadDefaultLocale();
57
+ };
58
+ }
59
+ export function setAngularLocale(I18nService) {
60
+ initializeProjectDetails();
61
+ return I18nService.deduceAppLocale();
62
+ }
63
+ export const appConfig = {
64
+ providers: [
65
+ // Provide Angular core services
66
+ provideRouter(routes, withHashLocation(), withComponentInputBinding()),
67
+ provideHttpClient(withInterceptorsFromDi(), withXsrfConfiguration({
68
+ cookieName: "wm_xsrf_token",
69
+ headerName: xsrfHeaderName
70
+ })),
71
+ provideAnimations(),
72
+ // Provide application-specific services
73
+ {
74
+ provide: APP_INITIALIZER,
75
+ useFactory: InitializeApp,
76
+ deps: [AbstractI18nService, AppJSResolve],
77
+ multi: true
78
+ },
79
+ {
80
+ provide: LOCALE_ID,
81
+ useFactory: setAngularLocale,
82
+ deps: [AbstractI18nService]
83
+ },
84
+ {
85
+ provide: HTTP_INTERCEPTORS,
86
+ useClass: HttpCallInterceptor,
87
+ multi: true
88
+ },
89
+ { provide: App, useClass: AppRef },
90
+ { provide: AbstractToasterService, useClass: ToasterServiceImpl },
91
+ { provide: AbstractI18nService, useClass: I18nServiceImpl },
92
+ { provide: AbstractSpinnerService, useClass: SpinnerServiceImpl },
93
+ { provide: AbstractNavigationService, useClass: NavigationServiceImpl },
94
+ { provide: AbstractDialogService, useClass: DialogServiceImpl },
95
+ { provide: AppDefaults, useClass: AppDefaultsService },
96
+ { provide: DynamicComponentRefProvider, useClass: DynamicComponentRefProviderService },
97
+ { provide: AppJSProvider, useClass: AppJSProviderService },
98
+ { provide: AppVariablesProvider, useClass: AppVariablesProviderService },
99
+ { provide: AppExtensionProvider, useClass: AppExtensionProviderService },
100
+ { provide: ComponentRefProvider, useClass: ComponentRefProviderService },
101
+ { provide: PartialRefProvider, useClass: ComponentRefProviderService },
102
+ { provide: CustomWidgetRefProvider, useClass: ComponentRefProviderService },
103
+ { provide: CustomwidgetConfigProvider, useClass: CustomwidgetConfigProviderService },
104
+ { provide: PrefabConfigProvider, useClass: PrefabConfigProviderService },
105
+ { provide: RouteReuseStrategy, useClass: WmRouteReuseStrategy },
106
+ { provide: AbstractHttpService, useClass: HttpServiceImpl },
107
+ AppResourceManagerService,
108
+ PipeService,
109
+ DecimalPipe,
110
+ SanitizePipe,
111
+ ToDatePipe,
112
+ FilterPipe,
113
+ TrailingZeroDecimalPipe,
114
+ TrustAsPipe,
115
+ ImagePipe,
116
+ CustomPipe,
117
+ Location,
118
+ DatePipe,
119
+ AppManagerService,
120
+ PrefabManagerService,
121
+ AuthGuard,
122
+ RoleGuard,
123
+ PageNotFoundGuard,
124
+ CanDeactivatePageGuard,
125
+ AppJSResolve,
126
+ AppExtensionJSResolve,
127
+ I18nResolve,
128
+ SecurityService,
129
+ OAuthService,
130
+ VariablesService,
131
+ MetadataService,
132
+ ...wmModules,
133
+ PageDirective
134
+ ]
135
+ };
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtZHluYW1pYy9zcmMvYXBwL2FwcC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixtQkFBbUIsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUseUJBQXlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxFQUNILGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsMEJBQTBCLEVBQzFCLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixNQUFNLEVBQ04sZUFBZSxFQUNmLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLGtDQUFrQyxFQUNsQyxtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLHNCQUFzQixFQUN0QixpQkFBaUIsRUFDakIs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a0JBQWtCLEVBQUUsUUFBUSxFQUFFLDJCQUEyQixFQUFFO1FBQ3RFLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFFBQVEsRUFBRSwyQkFBMkIsRUFBRTtRQUMzRSxFQUFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxRQUFRLEVBQUUsaUNBQWlDLEVBQUU7UUFDcEYsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLDJCQUEyQixFQUFFO1FBQ3hFLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRTtRQUMvRCxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFO1FBQzNELHlCQUF5QjtRQUN6QixXQUFXO1FBQ1gsV0FBVztRQUNYLFlBQVk7UUFDWixVQUFVO1FBQ1YsVUFBVTtRQUNWLHVCQUF1QjtRQUN2QixXQUFXO1FBQ1gsU0FBUztRQUNULFVBQVU7UUFDVixRQUFRO1FBQ1IsUUFBUTtRQUNSLGlCQUFpQjtRQUNqQixvQkFBb0I7UUFDcEIsU0FBUztRQUNULFNBQVM7UUFDVCxpQkFBaUI7UUFDakIsc0JBQXNCO1FBQ3RCLFlBQVk7UUFDWixxQkFBcUI7UUFDckIsV0FBVztRQUNYLGVBQWU7UUFDZixZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLGVBQWU7UUFDZixHQUFHLFNBQVM7UUFDWixhQUFhO0tBQ2hCO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uQ29uZmlnLCBpbXBvcnRQcm92aWRlcnNGcm9tLCBBUFBfSU5JVElBTElaRVIsIExPQ0FMRV9JRCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBwcm92aWRlUm91dGVyLCBSb3V0ZVJldXNlU3RyYXRlZ3ksIHdpdGhDb21wb25lbnRJbnB1dEJpbmRpbmcsIHdpdGhIYXNoTG9jYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBwcm92aWRlSHR0cENsaWVudCwgd2l0aFhzcmZDb25maWd1cmF0aW9uLCBIVFRQX0lOVEVSQ0VQVE9SUywgd2l0aEludGVyY2VwdG9yc0Zyb21EaSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHsgcHJvdmlkZUFuaW1hdGlvbnMgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zXCI7XG5pbXBvcnQgeyByb3V0ZXMgfSBmcm9tIFwiLi9hcHAucm91dGVzXCI7XG5pbXBvcnQgeyBIdHRwU2VydmljZUltcGwgfSBmcm9tIFwiQHdtL2h0dHBcIjtcbmltcG9ydCB7IFNlY3VyaXR5U2VydmljZSB9IGZyb20gXCJAd20vc2VjdXJpdHlcIjtcbmltcG9ydCB7IFZhcmlhYmxlc1NlcnZpY2UsIE1ldGFkYXRhU2VydmljZSB9IGZyb20gXCJAd20vdmFyaWFibGVzXCI7XG5pbXBvcnQgeyBPQXV0aFNlcnZpY2UgfSBmcm9tIFwiQHdtL29BdXRoXCI7XG5pbXBvcnQge1xuICAgIEFwcEpTUHJvdmlkZXIsXG4gICAgQXBwVmFyaWFibGVzUHJvdmlkZXIsXG4gICAgQ29tcG9uZW50UmVmUHJvdmlkZXIsXG4gICAgUHJlZmFiQ29uZmlnUHJvdmlkZXIsXG4gICAgQXBwRXh0ZW5zaW9uUHJvdmlkZXIsXG4gICAgQ3VzdG9td2lkZ2V0Q29uZmlnUHJvdmlkZXIsXG4gICAgQXBwRGVmYXVsdHNTZXJ2aWNlLFxuICAgIEFwcEV4dGVuc2lvbkpTUmVzb2x2ZSxcbiAgICBBcHBKU1Jlc29sdmUsXG4gICAgQXBwTWFuYWdlclNlcnZpY2UsXG4gICAgQXBwUmVmLFxuICAgIEkxOG5TZXJ2aWNlSW1wbCxcbiAgICBOYXZpZ2F0aW9uU2VydmljZUltcGwsXG4gICAgU3Bpbm5lclNlcnZpY2VJbXBsLFxuICAgIFRvYXN0ZXJTZXJ2aWNlSW1wbCxcbiAgICBEeW5hbWljQ29tcG9uZW50UmVmUHJvdmlkZXJTZXJ2aWNlLFxuICAgIEh0dHBDYWxsSW50ZXJjZXB0b3IsXG4gICAgUHJlZmFiTWFuYWdlclNlcnZpY2UsXG4gICAgQ2FuRGVhY3RpdmF0ZVBhZ2VHdWFyZCxcbiAgICBQYWdlTm90Rm91bmRHdWFyZCxcbiAgICBJMThuUmVzb2x2ZSxcbiAgICBSb2xlR3VhcmQsXG4gICAgUGlwZVNlcnZpY2UsXG4gICAgQXV0aEd1YXJkLFxuICAgIFdtUm91dGVSZXVzZVN0cmF0ZWd5XG59IGZyb20gXCJAd20vcnVudGltZS9iYXNlXCI7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0RGlhbG9nU2VydmljZSxcbiAgICBBYnN0cmFjdEh0dHBTZXJ2aWNlLFxuICAgIEFic3RyYWN0STE4blNlcnZpY2UsXG4gICAgQWJzdHJhY3ROYXZpZ2F0aW9uU2VydmljZSxcbiAgICBBYnN0cmFjdFNwaW5uZXJTZXJ2aWNlLFxuICAgIEFic3RyYWN0VG9hc3RlclNlcnZpY2UsXG4gICAgQXBwLFxuICAgIEFwcERlZmF1bHRzLFxuICAgIEN1c3RvbVdpZGdldFJlZlByb3ZpZGVyLFxuICAgIER5bmFtaWNDb21wb25lbnRSZWZQcm92aWRlcixcbiAgICBQYXJ0aWFsUmVmUHJvdmlkZXIsXG4gICAgX1dNX0FQUF9QUk9KRUNULFxufSBmcm9tIFwiQHdtL2NvcmVcIjtcbmltcG9ydCB7IE1vZGFsTW9kdWxlIH0gZnJvbSBcIm5neC1ib290c3RyYXAvbW9kYWxcIjtcbmltcG9ydCB7IFRvYXN0Tm9BbmltYXRpb25Nb2R1bGUgfSBmcm9tIFwibmd4LXRvYXN0clwiO1xuaW1wb3J0IHsgQnNEYXRlcGlja2VyTW9kdWxlIH0gZnJvbSBcIm5neC1ib290c3RyYXAvZGF0ZXBpY2tlclwiO1xuaW1wb3J0IHsgTmdDaXJjbGVQcm9ncmVzc01vZHVsZSB9IGZyb20gXCJuZy1jaXJjbGUtcHJvZ3Jlc3NcIjtcbmltcG9ydCB7IERhdGVQaXBlLCBEZWNpbWFsUGlwZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IEN1c3RvbXdpZGdldENvbmZpZ1Byb3ZpZGVyU2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2VzL2N1c3RvbXdpZGdldC1jb25maWctcHJvdmlkZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgQXBwSlNQcm92aWRlclNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlcy9hcHAtanMtcHJvdmlkZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgQXBwVmFyaWFibGVzUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvYXBwLXZhcmlhYmxlcy1wcm92aWRlci5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBcHBFeHRlbnNpb25Qcm92aWRlclNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlcy9hcHAtZXh0ZW5zaW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7IENvbXBvbmVudFJlZlByb3ZpZGVyU2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2VzL2NvbXBvbmVudC1yZWYtcHJvdmlkZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgUHJlZmFiQ29uZmlnUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvcHJlZmFiLWNvbmZpZy1wcm92aWRlci5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBcHBSZXNvdXJjZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvYXBwLXJlc291cmNlLW1hbmFnZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgQ3VzdG9tUGlwZSwgRGlhbG9nU2VydmljZUltcGwsIEZpbHRlclBpcGUsIEltYWdlUGlwZSwgU2FuaXRpemVQaXBlLCBUb0RhdGVQaXBlLCBUcmFpbGluZ1plcm9EZWNpbWFsUGlwZSwgVHJ1c3RBc1BpcGUgfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvYmFzZVwiO1xuaW1wb3J0IHtQYWdlRGlyZWN0aXZlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvcGFnZVwiO1xuXG5cbmNvbnN0IHdtTW9kdWxlcyA9IFtcbiAgICBpbXBvcnRQcm92aWRlcnNGcm9tKFxuICAgICAgICBNb2RhbE1vZHVsZS5mb3JSb290KCksXG4gICAgICAgIFRvYXN0Tm9BbmltYXRpb25Nb2R1bGUuZm9yUm9vdCh7IG1heE9wZW5lZDogMSwgYXV0b0Rpc21pc3M6IHRydWUgfSksXG4gICAgICAgIEJzRGF0ZXBpY2tlck1vZHVsZS5mb3JSb290KCksXG4gICAgICAgIE5nQ2lyY2xlUHJvZ3Jlc3NNb2R1bGUuZm9yUm9vdCgpLFxuICAgIClcbl07XG5leHBvcnQgY29uc3QgeHNyZkhlYWRlck5hbWUgPSBcIlgtV00tWFNSRi1UT0tFTlwiO1xuXG5cblxuXG5jb25zdCBpbml0aWFsaXplUHJvamVjdERldGFpbHMgPSAoKSA9PiB7XG4gICAgbGV0IGNkblVybCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPVwiZGVwbG95VXJsXCJdJykgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW25hbWU9XCJkZXBsb3lVcmxcIl0nKS5nZXRBdHRyaWJ1dGUoJ2NvbnRlbnQnKTtcbiAgICBfV01fQVBQX1BST0pFQ1QuaXNQcmV2aWV3ID0gY2RuVXJsID8gZmFsc2UgOiB0cnVlO1xuICAgIGNvbnN0IGFwaVVybCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPVwiYXBpVXJsXCJdJykgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW25hbWU9XCJhcGlVcmxcIl0nKS5nZXRBdHRyaWJ1dGUoJ2NvbnRlbnQnKTtcbiAgICAvL2ZvciBwcmV2aWV3XG4gICAgaWYgKCFjZG5VcmwpIHtcbiAgICAgICAgY2RuVXJsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW25hbWU9XCJjZG5VcmxcIl0nKSAmJiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbbmFtZT1cImNkblVybFwiXScpLmdldEF0dHJpYnV0ZSgnY29udGVudCcpO1xuICAgIH1cbiAgICBfV01fQVBQX1BST0pFQ1QuaWQgPSBsb2NhdGlvbi5ocmVmLnNwbGl0KCcvJylbM107XG4gICAgLy8gSW50ZWdyYXRpb24gd2l0aCB0aGlyZCBwYXJ0eSBhcHBzIGxpa2UgaW4gU1NQQS9XZWJDb21wb25lbnRzLCB0aGlzIG1ldGEgdGFnIHdpdGggY2RuVXJsIHdpbGwgbm90IGJlIHRoZXJlIHRoZW4gZGVmYXVsdCBpdCB0byBuZy1idW5kbGUvXG4gICAgX1dNX0FQUF9QUk9KRUNULmFwaVVybCA9IGFwaVVybCB8fCAnLi8nO1xuICAgIF9XTV9BUFBfUFJPSkVDVC5jZG5VcmwgPSBjZG5VcmwgfHwgJ25nLWJ1bmRsZS8nO1xuICAgIF9XTV9BUFBfUFJPSkVDVC5uZ0Rlc3QgPSAnbmctYnVuZGxlLyc7XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gX193ZWJwYWNrX3B1YmxpY19wYXRoX18gPSBjZG5Vcmw7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvL2ZvciBhcHAgcHJldmlldyB0aGVyZSBpcyBubyB3ZWJwYWNrLiBEb24ndCBkbyBhbnl0aGluZy5cbiAgICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gSW5pdGlhbGl6ZUFwcChJMThuU2VydmljZSwgQXBwSlNSZXNvbHZlKSB7XG4gICAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICAgICAgaW5pdGlhbGl6ZVByb2plY3REZXRhaWxzKCk7XG4gICAgICAgIGF3YWl0IEFwcEpTUmVzb2x2ZS5yZXNvbHZlKCk7XG4gICAgICAgIHJldHVybiBJMThuU2VydmljZS5sb2FkRGVmYXVsdExvY2FsZSgpO1xuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRBbmd1bGFyTG9jYWxlKEkxOG5TZXJ2aWNlKSB7XG4gICAgaW5pdGlhbGl6ZVByb2plY3REZXRhaWxzKCk7XG4gICAgcmV0dXJuIEkxOG5TZXJ2aWNlLmRlZHVjZUFwcExvY2FsZSgpO1xufVxuXG5leHBvcnQgY29uc3QgYXBwQ29uZmlnOiBBcHBsaWNhdGlvbkNvbmZpZyA9IHtcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgLy8gUHJvdmlkZSBBbmd1bGFyIGNvcmUgc2VydmljZXNcbiAgICAgICAgcHJvdmlkZVJvdXRlcihyb3V0ZXMsIHdpdGhIYXNoTG9jYXRpb24oKSwgd2l0aENvbXBvbmVudElucHV0QmluZGluZygpKSxcbiAgICAgICAgcHJvdmlkZUh0dHBDbGllbnQoXG4gICAgICAgICAgICB3aXRoSW50ZXJjZXB0b3JzRnJvbURpKCksXG4gICAgICAgICAgICB3aXRoWHNyZkNvbmZpZ3VyYXRpb24oe1xuICAgICAgICAgICAgICAgIGNvb2tpZU5hbWU6IFwid21feHNyZl90b2tlblwiLFxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6IHhzcmZIZWFkZXJOYW1lXG4gICAgICAgICAgICB9KVxuICAgICAgICApLFxuICAgICAgICBwcm92aWRlQW5pbWF0aW9ucygpLFxuICAgICAgICAvLyBQcm92aWRlIGFwcGxpY2F0aW9uLXNwZWNpZmljIHNlcnZpY2VzXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6IEluaXRpYWxpemVBcHAsXG4gICAgICAgICAgICBkZXBzOiBbQWJzdHJhY3RJMThuU2VydmljZSwgQXBwSlNSZXNvbHZlXSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IExPQ0FMRV9JRCxcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6IHNldEFuZ3VsYXJMb2NhbGUsXG4gICAgICAgICAgICBkZXBzOiBbQWJzdHJhY3RJMThuU2VydmljZV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsXG4gICAgICAgICAgICB1c2VDbGFzczogSHR0cENhbGxJbnRlcmNlcHRvcixcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHsgcHJvdmlkZTogQXBwLCB1c2VDbGFzczogQXBwUmVmIH0sXG4gICAgICAgIHsgcHJvdmlkZTogQWJzdHJhY3RUb2FzdGVyU2VydmljZSwgdXNlQ2xhc3M6IFRvYXN0ZXJTZXJ2aWNlSW1wbCB9LFxuICAgICAgICB7IHByb3ZpZGU6IEFic3RyYWN0STE4blNlcnZpY2UsIHVzZUNsYXNzOiBJMThuU2VydmljZUltcGwgfSxcbiAgICAgICAgeyBwcm92aWRlOiBBYnN0cmFjdFNwaW5uZXJTZXJ2aWNlLCB1c2VDbGFzczogU3Bpbm5lclNlcnZpY2VJbXBsIH0sXG4gICAgICAgIHsgcHJvdmlkZTogQWJzdHJhY3ROYXZpZ2F0aW9uU2VydmljZSwgdXNlQ2xhc3M6IE5hdmlnYXRpb25TZXJ2aWNlSW1wbCB9LFxuICAgICAgICB7IHByb3ZpZGU6IEFic3RyYWN0RGlhbG9nU2VydmljZSwgdXNlQ2xhc3M6IERpYWxvZ1NlcnZpY2VJbXBsIH0sXG4gICAgICAgIHsgcHJvdmlkZTogQXBwRGVmYXVsdHMsIHVzZUNsYXNzOiBBcHBEZWZhdWx0c1NlcnZpY2UgfSxcbiAgICAgICAgeyBwcm92aWRlOiBEeW5hbWljQ29tcG9uZW50UmVmUHJvdmlkZXIsIHVzZUNsYXNzOiBEeW5hbWljQ29tcG9uZW50UmVmUHJvdmlkZXJTZXJ2aWNlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogQXBwSlNQcm92aWRlciwgdXNlQ2xhc3M6IEFwcEpTUHJvdmlkZXJTZXJ2aWNlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogQXBwVmFyaWFibGVzUHJvdmlkZXIsIHVzZUNsYXNzOiBBcHBWYXJpYWJsZXNQcm92aWRlclNlcnZpY2UgfSxcbiAgICAgICAgeyBwcm92aWRlOiBBcHBFeHRlbnNpb25Qcm92aWRlciwgdXNlQ2xhc3M6IEFwcEV4dGVuc2lvblByb3ZpZGVyU2VydmljZSB9LFxuICAgICAgICB7IHByb3ZpZGU6IENvbXBvbmVudFJlZlByb3ZpZGVyLCB1c2VDbGFzczogQ29tcG9uZW50UmVmUHJvdmlkZXJTZXJ2aWNlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogUGFydGlhbFJlZlByb3ZpZGVyLCB1c2VDbGFzczogQ29tcG9uZW50UmVmUHJvdmlkZXJTZXJ2aWNlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogQ3VzdG9tV2lkZ2V0UmVmUHJvdmlkZXIsIHVzZUNsYXNzOiBDb21wb25lbnRSZWZQcm92aWRlclNlcnZpY2UgfSxcbiAgICAgICAgeyBwcm92aWRlOiBDdXN0b213aWRnZXRDb25maWdQcm92aWRlciwgdXNlQ2xhc3M6IEN1c3RvbXdpZGdldENvbmZpZ1Byb3ZpZGVyU2VydmljZSB9LFxuICAgICAgICB7IHByb3ZpZGU6IFByZWZhYkNvbmZpZ1Byb3ZpZGVyLCB1c2VDbGFzczogUHJlZmFiQ29uZmlnUHJvdmlkZXJTZXJ2aWNlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogUm91dGVSZXVzZVN0cmF0ZWd5LCB1c2VDbGFzczogV21Sb3V0ZVJldXNlU3RyYXRlZ3kgfSxcbiAgICAgICAgeyBwcm92aWRlOiBBYnN0cmFjdEh0dHBTZXJ2aWNlLCB1c2VDbGFzczogSHR0cFNlcnZpY2VJbXBsIH0sXG4gICAgICAgIEFwcFJlc291cmNlTWFuYWdlclNlcnZpY2UsXG4gICAgICAgIFBpcGVTZXJ2aWNlLFxuICAgICAgICBEZWNpbWFsUGlwZSxcbiAgICAgICAgU2FuaXRpemVQaXBlLFxuICAgICAgICBUb0RhdGVQaXBlLFxuICAgICAgICBGaWx0ZXJQaXBlLFxuICAgICAgICBUcmFpbGluZ1plcm9EZWNpbWFsUGlwZSxcbiAgICAgICAgVHJ1c3RBc1BpcGUsXG4gICAgICAgIEltYWdlUGlwZSxcbiAgICAgICAgQ3VzdG9tUGlwZSxcbiAgICAgICAgTG9jYXRpb24sXG4gICAgICAgIERhdGVQaXBlLFxuICAgICAgICBBcHBNYW5hZ2VyU2VydmljZSxcbiAgICAgICAgUHJlZmFiTWFuYWdlclNlcnZpY2UsXG4gICAgICAgIEF1dGhHdWFyZCxcbiAgICAgICAgUm9sZUd1YXJkLFxuICAgICAgICBQYWdlTm90Rm91bmRHdWFyZCxcbiAgICAgICAgQ2FuRGVhY3RpdmF0ZVBhZ2VHdWFyZCxcbiAgICAgICAgQXBwSlNSZXNvbHZlLFxuICAgICAgICBBcHBFeHRlbnNpb25KU1Jlc29sdmUsXG4gICAgICAgIEkxOG5SZXNvbHZlLFxuICAgICAgICBTZWN1cml0eVNlcnZpY2UsXG4gICAgICAgIE9BdXRoU2VydmljZSxcbiAgICAgICAgVmFyaWFibGVzU2VydmljZSxcbiAgICAgICAgTWV0YWRhdGFTZXJ2aWNlLFxuICAgICAgICAuLi53bU1vZHVsZXMsXG4gICAgICAgIFBhZ2VEaXJlY3RpdmVcbiAgICBdXG59O1xuIl19