@mis-wis/common 0.2.0 → 0.2.1

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.
@@ -15,9 +15,10 @@ import { LoaderModule } from 'mis-crystal-design-system/loader';
15
15
  import { map, forkJoin, ReplaySubject } from 'rxjs';
16
16
  import * as i2$2 from '@angular/forms';
17
17
  import { Validators, ReactiveFormsModule } from '@angular/forms';
18
- import { parseZone } from 'moment';
19
- import * as i1$3 from 'mis-design-system/mis-modal';
20
- import { MODAL_DATA_VAR } from 'mis-design-system/mis-modal';
18
+ import dayjs from 'dayjs';
19
+ import customParseFormat from 'dayjs/plugin/customParseFormat';
20
+ import * as i1$3 from 'mis-crystal-design-system/modal';
21
+ import { MODAL_DATA_VAR } from 'mis-crystal-design-system/modal';
21
22
  import * as i6 from 'mis-crystal-design-system/dropdown';
22
23
  import { DropdownModule } from 'mis-crystal-design-system/dropdown';
23
24
  import * as i7 from 'mis-crystal-design-system/datepicker_v2';
@@ -395,7 +396,10 @@ const CONSTANTS_ASSETS_WIS_COMMON = {
395
396
  ICONS: {}
396
397
  };
397
398
 
399
+ dayjs.extend(customParseFormat);
398
400
  const PROPERTIES = ["NON_SHIFT_TRIPS_CATEGORIES", "USE_VALID_OFFICE_FOR_IRREGULAR_TRIPS"];
401
+ const DATE_FORMAT = "DD/MM/YYYY";
402
+ const PICKUP_TIME_FORMAT = "DD/MM/YYYY HH/mm/ss";
399
403
  class CreateNonShiftModalComponent {
400
404
  constructor(modalData, modalRef, fb, http, toast) {
401
405
  this.modalData = modalData;
@@ -405,8 +409,8 @@ class CreateNonShiftModalComponent {
405
409
  this.toast = toast;
406
410
  this.CONSTANTS_ASSETS_WIS_COMMON = CONSTANTS_ASSETS_WIS_COMMON;
407
411
  this.dateConfig = {
408
- minDate: parseZone().format("DD/MM/YYYY"),
409
- format: "DD/MM/YYYY"
412
+ minDate: dayjs().format(DATE_FORMAT),
413
+ format: DATE_FORMAT
410
414
  };
411
415
  this.offices = [];
412
416
  this.locationDropdownData = [];
@@ -441,7 +445,7 @@ class CreateNonShiftModalComponent {
441
445
  });
442
446
  }
443
447
  initializeForm() {
444
- const currentTime = this.modalData?.date ?? parseZone().format("DD/MM/YYYY");
448
+ const currentTime = this.modalData?.date ?? dayjs().format(DATE_FORMAT);
445
449
  this.createTripsheetForm = this.fb.group({
446
450
  direction: [this.modalData?.shiftType === "logout" ? "OUT" : "IN", Validators.required],
447
451
  location: [{ label: "", value: "" }],
@@ -512,7 +516,7 @@ class CreateNonShiftModalComponent {
512
516
  }
513
517
  const formValue = this.createTripsheetForm.value;
514
518
  const pickupTime = `${formValue.date} ${formValue.hours.value}/${formValue.mins.value}/00`;
515
- const pickupTimeDate = parseZone(pickupTime).toDate();
519
+ const pickupTimeDate = dayjs(pickupTime, PICKUP_TIME_FORMAT).toDate();
516
520
  if (this.isDateAndTimeFromPast(pickupTimeDate)) {
517
521
  this.toast.displayMsg("Please select a future date and time.");
518
522
  return;
@@ -687,6 +691,23 @@ class SessionClaimNotFoundError extends SessionError {
687
691
  this.name = 'SessionClaimNotFoundError';
688
692
  }
689
693
  }
694
+ /** Renders failures as `claim (reason), claim (reason)` for error messages. */
695
+ function describeClaimFailures(failures) {
696
+ return failures.map(f => `${f.claim} (${f.reason})`).join(', ');
697
+ }
698
+ /**
699
+ * Every claim `run`'s `next` failed to read, reported once after the block has finished.
700
+ * Extends `SessionClaimNotFoundError` — and reports the first failure as `claim` — so handlers
701
+ * written against the single-claim error keep working.
702
+ */
703
+ class SessionClaimsMissingError extends SessionClaimNotFoundError {
704
+ constructor(failures) {
705
+ super(failures[0].claim);
706
+ this.failures = failures;
707
+ this.name = 'SessionClaimsMissingError';
708
+ this.message = `Session claims not found: ${describeClaimFailures(failures)}.`;
709
+ }
710
+ }
690
711
 
691
712
  const DEFAULT_SESSION_TOKEN_PREFIX = 'sso-wis-token';
692
713
  const DEFAULT_SESSION_TOKEN_FALLBACK_KEY = 'x-wis-token';
@@ -697,6 +718,7 @@ class SessionService {
697
718
  this.config = {};
698
719
  this.cachedToken = null;
699
720
  this.cachedState = null;
721
+ this.collecting = null;
700
722
  }
701
723
  init(config) {
702
724
  this.config = { ...config };
@@ -720,18 +742,50 @@ class SessionService {
720
742
  }
721
743
  /**
722
744
  * Statement-style variant of `read` for blocks of assignments/side effects with no return value.
745
+ *
746
+ * `next` always runs to completion: a claim that is absent or blank yields `undefined` instead of
747
+ * throwing, and every such failure is reported once afterwards via `handlers.error`, as a
748
+ * `SessionClaimsMissingError` listing all of them. An unusable token (missing, expired,
749
+ * undecodable) still aborts `next` immediately with the matching `SessionError`.
750
+ *
751
+ * Collecting covers the synchronous body of `next` only — claim reads deferred into a subscription,
752
+ * timeout or promise run after it has returned and throw as usual.
753
+ *
754
+ * An error `next` throws for any other reason propagates untouched, except that any claims missing
755
+ * at the time are appended to its message and attached as `sessionClaimFailures` — a collected
756
+ * `undefined` reaching the block is the usual cause, and that is the part worth knowing.
723
757
  */
724
758
  run(handlers) {
725
- this.read({
726
- next: s => { handlers.next(s); return undefined; },
727
- error: err => { handlers.error(err); return undefined; }
728
- });
759
+ const failures = [];
760
+ const previous = this.collecting;
761
+ this.collecting = failures;
762
+ try {
763
+ handlers.next(this);
764
+ }
765
+ catch (e) {
766
+ if (e instanceof SessionError) {
767
+ handlers.error(e);
768
+ return;
769
+ }
770
+ if (failures.length && e instanceof Error) {
771
+ e.sessionClaimFailures = failures;
772
+ e.message = `${e.message} — session claims missing during run(): ${describeClaimFailures(failures)}`;
773
+ }
774
+ throw e;
775
+ }
776
+ finally {
777
+ this.collecting = previous;
778
+ }
779
+ if (failures.length) {
780
+ handlers.error(new SessionClaimsMissingError(failures));
781
+ }
729
782
  }
730
783
  get isVET() {
731
784
  return this.state.isVET;
732
785
  }
733
786
  get sub() { return this.getClaim('sub'); }
734
787
  get empGuid() { return this.getClaim('employeeGUID'); }
788
+ get employeeId() { return this.getClaim('employeeId'); }
735
789
  get internalSsoRole() { return this.getClaim('internal_sso_role'); }
736
790
  get roles() { return this.getClaim('roles'); }
737
791
  get sessionId() { return this.getClaim('sessionId'); }
@@ -744,13 +798,22 @@ class SessionService {
744
798
  get vetUserId() { return this.getClaim('vetUserId'); }
745
799
  get source() { return this.getClaim('source'); }
746
800
  get roleId() {
747
- const claims = this.getClaims();
748
- const raw = claims.internal_sso_role?.trim() || claims.roles?.[0]?.trim();
749
- if (!raw || !/^\d+$/.test(raw)) {
750
- throw new SessionClaimNotFoundError('roleId');
801
+ const raw = this.resolveRole(this.getClaims());
802
+ if (!raw) {
803
+ return this.missingClaim('roleId', 'absent');
751
804
  }
752
805
  return Number(raw);
753
806
  }
807
+ /** First numeric role in `internal_sso_role` then `roles`, or `''` when the token carries none. */
808
+ resolveRole(claims) {
809
+ const candidates = [claims.internal_sso_role, ...(claims.roles ?? [])];
810
+ return candidates
811
+ .map(value => value?.trim())
812
+ .find(value => this.isDigitsOnly(value)) ?? '';
813
+ }
814
+ isDigitsOnly(value) {
815
+ return !!value && /^\d+$/.test(value);
816
+ }
754
817
  getClaims() {
755
818
  const state = this.state;
756
819
  if (state.status === 'ok') {
@@ -769,10 +832,18 @@ class SessionService {
769
832
  const value = claims[key];
770
833
  const isEmptyString = typeof value === 'string' && value.trim() === '';
771
834
  if (value === undefined || value === null || isEmptyString) {
772
- throw new SessionClaimNotFoundError(key);
835
+ return this.missingClaim(key, isEmptyString ? 'blank' : 'absent');
773
836
  }
774
837
  return (typeof value === 'string' ? value.trim() : value);
775
838
  }
839
+ /** Records the failure and yields `undefined` while `run` is collecting; throws otherwise. */
840
+ missingClaim(claim, reason) {
841
+ if (this.collecting) {
842
+ this.collecting.push({ claim, reason });
843
+ return undefined;
844
+ }
845
+ throw new SessionClaimNotFoundError(claim);
846
+ }
776
847
  get state() {
777
848
  const { token, isVET } = this.findToken();
778
849
  if (!this.cachedState || token !== this.cachedToken) {
@@ -838,5 +909,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
838
909
  * Generated bundle index. Do not edit.
839
910
  */
840
911
 
841
- export { AuthInterceptor, AuthModule, AuthService, ConfigurationService, CreateNonShiftModalComponent, LoaderService, LoggerModule, LoggerService, MfeCommunicationService, SessionClaimNotFoundError, SessionError, SessionService, SessionTokenExpiredError, SessionTokenInvalidError, SessionTokenNotFoundError, SidenavComponent, WisCommonModule, filterNavList, getCookie, getQueryParam, removeCookie, setCookie };
912
+ export { AuthInterceptor, AuthModule, AuthService, ConfigurationService, CreateNonShiftModalComponent, LoaderService, LoggerModule, LoggerService, MfeCommunicationService, SessionClaimNotFoundError, SessionClaimsMissingError, SessionError, SessionService, SessionTokenExpiredError, SessionTokenInvalidError, SessionTokenNotFoundError, SidenavComponent, WisCommonModule, describeClaimFailures, filterNavList, getCookie, getQueryParam, removeCookie, setCookie };
842
913
  //# sourceMappingURL=mis-wis-common.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"mis-wis-common.mjs","sources":["../../../libraries/wis-common/src/lib/modules/auth/auth.service.ts","../../../libraries/wis-common/src/lib/modules/auth/auth.module.ts","../../../libraries/wis-common/src/lib/services/configuration.service.ts","../../../libraries/wis-common/src/lib/functions/nav-filter.function.ts","../../../libraries/wis-common/src/lib/functions/cookie.function.ts","../../../libraries/wis-common/src/lib/functions/url.functions.ts","../../../libraries/wis-common/src/lib/interceptors/auth.interceptor.ts","../../../libraries/wis-common/src/lib/components/loader/loader.component.ts","../../../libraries/wis-common/src/lib/components/loader/loader.component.html","../../../libraries/wis-common/src/lib/services/loader.service.ts","../../../libraries/wis-common/src/lib/modules/logger/logger.constant.ts","../../../libraries/wis-common/src/lib/modules/logger/logger.functions.ts","../../../libraries/wis-common/src/lib/modules/logger/logger.service.ts","../../../libraries/wis-common/src/lib/modules/logger/logger.module.ts","../../../libraries/wis-common/src/lib/constants/emp-web-exp.constants.ts","../../../libraries/wis-common/src/lib/services/http.service.ts","../../../libraries/wis-common/src/lib/components/sidenav/sidenav.component.ts","../../../libraries/wis-common/src/lib/components/sidenav/sidenav.component.html","../../../libraries/wis-common/src/lib/constants/assets.constants.ts","../../../libraries/wis-common/src/lib/components/create-non-shift-modal/create-non-shift-modal.component.ts","../../../libraries/wis-common/src/lib/components/create-non-shift-modal/create-non-shift-modal.component.html","../../../libraries/wis-common/src/lib/wis-common.module.ts","../../../libraries/wis-common/src/lib/services/mfe-communication.service.ts","../../../libraries/wis-common/src/lib/services/session.errors.ts","../../../libraries/wis-common/src/lib/services/session.service.ts","../../../libraries/wis-common/src/public-api.ts","../../../libraries/wis-common/src/mis-wis-common.ts"],"sourcesContent":["import { Inject, Injectable } from \"@angular/core\";\nimport { IUserInfo } from \"./auth.model\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class AuthService {\n userDetails: IUserInfo;\n\n constructor() {}\n\n init(user: IUserInfo) {\n this.userDetails = user;\n }\n}\n","import { ErrorHandler, ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { AuthService } from \"./auth.service\";\n\n@NgModule({\n declarations: [],\n imports: [CommonModule],\n providers: []\n})\nexport class AuthModule {\n /**\n *\n * @returns ModuleWithProviders<AuthModule>\n */\n static forRoot(): ModuleWithProviders<AuthModule> {\n return {\n ngModule: AuthModule,\n providers: [AuthService]\n };\n }\n}\n","import { Injectable } from \"@angular/core\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class ConfigurationService {\n constructor() {}\n}\n","import { NsWISConfigurations } from \"../models/configurations.model\";\n\nexport const filterNavList = (\n navList: NsWISConfigurations.ISidenavLink[],\n features: NsWISConfigurations.IFeaturesMap\n): NsWISConfigurations.ISidenavLink[] => {\n return navList.filter(nav => {\n const mustHave = nav.mustHaveBasedProperty && nav.mustHaveBasedProperty.every(basedProperty => features[basedProperty]);\n const canHave = nav.canHaveBasedProperty && nav.canHaveBasedProperty.some(basedProperty => features[basedProperty]);\n if ((mustHave || canHave) && nav.children) {\n nav.children = filterNavList(nav.children, features);\n }\n return mustHave || canHave;\n });\n};\n","interface ICookieOptions {\n expires?: string;\n path?: string;\n domain?: string;\n \"Max-Age\"?: string;\n Secure?: boolean;\n HttpOnly?: boolean;\n SameSite?: \"Strict\" | \"Lax\" | \"None\";\n}\n\nexport function getCookie(name: string): string {\n const cookies = {};\n const cookieString = document.cookie;\n cookieString.split(\"; \").forEach(cookie => {\n const [key, value] = cookie.split(\"=\");\n cookies[key] = value;\n });\n return cookies[name] || undefined;\n}\n\nexport function setCookie(name: string, value: string, options?: ICookieOptions): void {\n let cookieStr = `${name}=${value};`;\n if (options) {\n const optsSelected = Object.keys(options);\n for (const opt of optsSelected) {\n cookieStr += ` ${opt}${(typeof options[opt] === \"string\" && `=${options[opt]}`) || \"\"};`;\n }\n }\n cookieStr += \";secure; SameSite=Strict;\";\n document.cookie = cookieStr;\n}\n\nexport function removeCookie(name: string, domain?: string): void {\n setCookie(name, \"\", { expires: new Date(0).toUTCString(), domain });\n}\n","export function getQueryParam(queryString: string): string | null {\n const results = new RegExp(\"[?&]\" + queryString + \"=([^&#]*)\").exec(window.location.href);\n if (results === null) {\n return null;\n } else {\n return decodeURIComponent(results[1]) || null;\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { HttpErrorResponse, HttpHandler, HttpInterceptor, HttpRequest } from \"@angular/common/http\";\nimport { tap } from \"rxjs/operators\";\nimport { ToastService } from \"mis-crystal-design-system/toast\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { getCookie } from \"../functions/cookie.function\";\nimport { getQueryParam } from \"../functions/url.functions\";\n\nconst TOKEN_NAME = \"x-wis-token\";\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n constructor(private route: ActivatedRoute, private toast: ToastService) {}\n\n intercept(request: HttpRequest<any>, next: HttpHandler) {\n const paramsMap = this.route.snapshot.queryParamMap;\n const buid = getQueryParam(\"buid\") || getQueryParam(\"buId\") || \"\";\n const empGuid = getQueryParam(\"empGuid\") || getQueryParam(\"empGuId\") || getQueryParam(\"userId\") || \"\";\n // const source = getQueryParam(\"source\");\n const authToken = getQueryParam(\"auth-token\");\n const token = getCookie(`sso-wis-token-${buid}`);\n const mobile_app_token = getCookie(TOKEN_NAME);\n const cloneReq = request.clone({\n setHeaders: {\n \"x-tenant-id\": buid,\n \"x-user-id\": empGuid,\n ...(!!token && { [TOKEN_NAME]: token }),\n ...(!!authToken && { [TOKEN_NAME]: authToken }),\n ...(!!mobile_app_token && { [TOKEN_NAME]: mobile_app_token })\n }\n });\n return next.handle(cloneReq).pipe(\n tap(\n () => {},\n err => {\n if (err instanceof HttpErrorResponse && err.status === 401) {\n this.toast.displayMsg(\"Your session has expired. Please login again.\",6000);\n }\n }\n )\n );\n }\n}\n","import { Component, OnInit } from \"@angular/core\";\n\n@Component({\n selector: \"mis-common-loader\",\n templateUrl: \"./loader.component.html\",\n styleUrls: [\"./loader.component.scss\"]\n})\nexport class LoaderComponent implements OnInit {\n message: string;\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<div class=\"message-wrapper\" *ngIf=\"message; else noMessageLoader\">\n <span><mis-loader type=\"block\"></mis-loader></span>\n <p>{{ message }}</p>\n</div>\n<ng-template #noMessageLoader>\n <mis-loader></mis-loader>\n</ng-template>\n","/** @format */\n\nimport { GlobalPositionStrategy, Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { Injectable } from \"@angular/core\";\nimport { LoaderComponent } from \"../components/loader/loader.component\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class LoaderService {\n private overlayRef: OverlayRef;\n public loading = false;\n\n constructor(private overlay: Overlay) {}\n\n show(message?: string): void {\n this.loading = true;\n if (this.overlayRef?.hasAttached()) {\n return;\n }\n const { positionStrategy, width, backdropClass, hasMessage } = this.calcLoaderProperties(!!message);\n const config = new OverlayConfig({\n hasBackdrop: true,\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n width,\n backdropClass\n });\n this.overlayRef = this.overlay.create(config);\n const portal = new ComponentPortal(LoaderComponent, null);\n const componentRef = this.overlayRef.attach(portal);\n if (hasMessage) {\n componentRef.instance.message = message;\n }\n }\n\n hide(): void {\n this.loading = false;\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n }\n\n private calcLoaderProperties(hasMessage: boolean): {\n positionStrategy: GlobalPositionStrategy;\n width: string;\n backdropClass: string;\n hasMessage: boolean;\n } {\n const positionStrategy = this.overlay.position().global();\n let width = \"100vh\";\n let backdropClass = \"cdk-overlay-transparent-backdrop\";\n if (hasMessage) {\n width = \"initial\";\n backdropClass = \"wis-common-loader-bg\";\n positionStrategy.centerHorizontally().centerVertically();\n } else {\n positionStrategy.top(\"0px\").right(\"0px\");\n }\n return { positionStrategy, width, backdropClass, hasMessage };\n }\n}\n","/** @format */\n\nexport const CONSTANTS_LOGGER = {\n APP_NAME: \"wisLoggerApp\",\n ENV_VAR: \"wisLoggerEnv\"\n};\n","import { TEnvName } from \"./logger.model\";\nconst envMap = {\n dev: \"https://bff.devcl.moveinsync.com\",\n qa: \"https://bff.stage.moveinsync.com\",\n production: \"https://bff.moveinsync.com\",\n uat: \"https://wisbff-uat.moveinsync.com\",\n \"production-green\": \"https://wisempweb-green.moveinsync.com\",\n \"production-beta\": \"https://bff-beta.moveinsync.com\",\n \"production-eu\": \"https://bff.eu.moveinsync.com\",\n \"production-eu-green\": \"https://bff-green.eu.moveinsync.com\",\n \"production-mu\": \"https://bff.moveinsync.in\"\n};\nexport function environmentHandler(env: TEnvName) {\n if (!env) {\n return \"/bff\";\n }\n return envMap[env];\n}\n","import { TEnvName } from \"./logger.model\";\nimport { CONSTANTS_LOGGER } from \"./logger.constant\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { environmentHandler } from \"./logger.functions\";\n@Injectable({\n providedIn: \"root\"\n})\nexport class LoggerService {\n private cookies: boolean = false;\n\n constructor(\n private http: HttpClient,\n @Inject(CONSTANTS_LOGGER.APP_NAME) private appName: string,\n @Inject(CONSTANTS_LOGGER.ENV_VAR) private appEnv: TEnvName\n ) {}\n\n useCookies(useCookies: boolean) {\n this.cookies = useCookies;\n }\n\n private logRequest(data: any, logLevel: \"info\" | \"error\" | \"warn\") {\n const request = {\n data,\n cookies: this.cookies ? document.cookie : undefined,\n logLevel\n };\n this.postLog(request);\n }\n\n private postLog(request) {\n const url = `${environmentHandler(this.appEnv)}/report-log/${this.appName}`;\n this.http.post(`${url}`, request).subscribe();\n }\n\n info(data: any) {\n this.logRequest(data, \"info\");\n }\n\n warn(data: any) {\n this.logRequest(data, \"warn\");\n }\n\n error(data: any, componentName: string, serviceUrl?: string) {\n this.logRequest({ ...data, componentName, serviceUrl }, \"error\");\n }\n}\n","import { CONSTANTS_LOGGER } from \"./logger.constant\";\nimport { ErrorHandler, ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { LoggerService } from \"./logger.service\";\nimport { TEnvName } from \"./logger.model\";\n\n@NgModule({\n declarations: [],\n imports: [CommonModule],\n providers: []\n})\nexport class LoggerModule {\n /**\n *\n * @param appName any app name eg. FAQ, Floor Plan, In App Popup, etc.\n * @param env \"dev\" | \"qa\" | \"uat\" | \"prod\" | \"prod-beta\" | \"prod-green\" | \"prod-eu\" | \"prod-eu-green\" | undefined\n * @returns ModuleWithProviders<LoggerModule>\n */\n static forChild(appName: string, env?: TEnvName): ModuleWithProviders<LoggerModule> {\n return {\n ngModule: LoggerModule,\n providers: [\n {\n provide: CONSTANTS_LOGGER.APP_NAME,\n useValue: appName\n },\n {\n provide: CONSTANTS_LOGGER.ENV_VAR,\n useValue: env\n },\n LoggerService\n ]\n };\n }\n}\n","/** @format */\n\nexport const CONSTANTS_WIS_COMMON = {\n ENV_VAR: \"wisCommonEnvironment\"\n};\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { map, Observable } from \"rxjs\";\nimport { CONSTANTS_WIS_COMMON } from \"../constants/emp-web-exp.constants\";\nimport { NsWISConfigurations } from \"../models/configurations.model\";\nimport { NsWISCommon } from \"../models/env.model\";\nimport { AuthService } from \"../modules/auth/auth.service\";\n\nconst API_URLS = {\n CONFIGURATIONS: \"configurations\"\n};\n\n@Injectable()\nexport class HttpService {\n constructor(@Inject(CONSTANTS_WIS_COMMON) public env: NsWISCommon.IEnv, private http: HttpClient) {}\n\n getProperties(Porperties: string[]) {\n return this.http.get(`${this.env.ets}/ets/apis/properties/${Porperties.join(\",\")}`).pipe(\n map((res: any) => {\n return res.reduce((acc: any, item: any) => {\n acc[item.propertyName] = item.propertyValue === \"true\" ? true : item.propertyValue === \"false\" ? false : item.propertyValue;\n return acc;\n }, {});\n })\n );\n }\n\n getOffices(nonce) {\n const body = `CSRF_NONCE=${nonce}&method=getOfficeList`;\n return this.http.post(`${this.env.ets}/Locality_Servlet`, body, { headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" } });\n }\n\n listTransportLocalities(nonce) {\n const body = `CSRF_NONCE=${nonce}&method=listTransportLocalities`;\n return this.http.post(`${this.env.ets}/Locality_Servlet`, body, { headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" } });\n }\n\n createEmptyIrregularTripSheet(nonce: string, direction: string): Observable<any> {\n const body = `CSRF_NONCE=${nonce}&method=createEmptyIrregularTripSheet&direction=${direction}`;\n return this.http.post(`${this.env.ets}/Tripsheet_Edit_Servlet`, body, { headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" } });\n }\n\n addEmployeeToTripSheet(\n nonce: string,\n params: {\n tripsheet: any;\n employee: any;\n pickupLoc: any;\n dropLoc: any;\n pickUpTime: string;\n dropTime: string;\n position: number;\n routeSource?: string;\n assetList?: any;\n }\n ): Observable<any> {\n const body = `CSRF_NONCE=${nonce}&method=addEmployeeToTripSheet&tripsheet=${encodeURIComponent(\n JSON.stringify(params.tripsheet)\n )}&employee=${encodeURIComponent(JSON.stringify(params.employee))}&pickupLoc=${encodeURIComponent(\n JSON.stringify(params.pickupLoc)\n )}&dropLoc=${encodeURIComponent(JSON.stringify(params.dropLoc))}&pickUpTime=\"${params.pickUpTime}\"&dropTime=\"${params.dropTime}\"&position=${\n params.position\n }${params.routeSource ? \"&routeSource=\" + params.routeSource : \"\"}${\n params.assetList ? \"&assetList=\" + encodeURIComponent(JSON.stringify(params.assetList)) : \"\"\n }`;\n return this.http.post(`${this.env.ets}/Tripsheet_Edit_Servlet`, body, { headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" } });\n }\n}\n","import { Component, OnInit } from \"@angular/core\";\n\n@Component({\n selector: \"wis-common-sidenav\",\n templateUrl: \"./sidenav.component.html\",\n styleUrls: [\"./sidenav.component.scss\"]\n})\nexport class SidenavComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<div class=\"wis-sidenav-wrapper\">\n <div class=\"wis-sidenav-header\">\n <div class=\"wis-sidenav-header-logo\">\n <img src=\"assets/sidenav/assets/Wis-icon.svg\" alt=\"\" />\n </div>\n <div class=\"wis-sidenav-header-title\">\n <h1>WIS</h1>\n </div>\n </div>\n <div class=\"wis-sidenav-body\">\n <div class=\"wis-sidenav-body-item\">\n <div class=\"wis-sidenav-body-item-icon\">\n <i class=\"fas fa-home\"></i>\n </div>\n <div class=\"wis-sidenav-body-item-text\">\n <h3>Home</h3>\n </div>\n </div>\n <div class=\"wis-sidenav-body-item\">\n <div class=\"wis-sidenav-body-item-icon\">\n <i class=\"fas fa-user\"></i>\n </div>\n <div class=\"wis-sidenav-body-item-text\">\n <h3>Profile</h3>\n </div>\n </div>\n <div class=\"wis-sidenav-body-item\">\n <div class=\"wis-sidenav-body-item-icon\">\n <i class=\"fas fa-users\"></i>\n </div>\n <div class=\"wis-sidenav-body-item-text\">\n <h3>Users</h3>\n </div>\n </div>\n <div class=\"wis-sidenav-body-item\">\n <div class=\"wis-sidenav-body-item-icon\">\n <i class=\"fas fa-cog\"></i>\n </div>\n <div class=\"wis-sidenav-body-item-text\">\n <h3>Settings</h3>\n </div>\n </div>\n </div>\n</div>\n","/** @format */\n\nexport const CONSTANTS_ASSETS_WIS_COMMON = {\n IMAGES: {\n CALENDAR_ICON: \"assets/libraries/wis-common/calendar.svg\"\n },\n ICONS: {}\n};\n","import { Component, Inject, OnInit } from \"@angular/core\";\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\nimport * as dayjs from \"dayjs\";\nimport { IDatePickerConfig } from \"mis-crystal-design-system/datepicker_v2\";\nimport { parseZone } from \"moment\";\nimport { CONSTANTS_ASSETS_WIS_COMMON } from \"../../constants/assets.constants\";\nimport { HttpService } from \"../../services/http.service\";\nimport { DropdownItem } from \"mis-crystal-design-system/dropdown\";\nimport { forkJoin } from \"rxjs\";\nimport { finalize } from \"rxjs/operators\";\nimport { MODAL_DATA_VAR, ModalRef } from \"mis-design-system/mis-modal\";\nimport { ToastService } from \"mis-crystal-design-system/toast\";\n\nconst PROPERTIES = [\"NON_SHIFT_TRIPS_CATEGORIES\", \"USE_VALID_OFFICE_FOR_IRREGULAR_TRIPS\"];\n\ninterface LocationValue {\n type: number;\n office: any | null;\n}\n\ninterface LocationDropdownItem {\n label: string;\n value: LocationValue;\n}\n\n@Component({\n selector: \"app-create-non-shift-modal\",\n templateUrl: \"./create-non-shift-modal.component.html\",\n styleUrls: [\"./create-non-shift-modal.component.scss\"]\n})\nexport class CreateNonShiftModalComponent implements OnInit {\n CONSTANTS_ASSETS_WIS_COMMON = CONSTANTS_ASSETS_WIS_COMMON;\n\n dateConfig: Partial<IDatePickerConfig> = {\n minDate: parseZone().format(\"DD/MM/YYYY\"),\n format: \"DD/MM/YYYY\"\n };\n createTripsheetForm!: FormGroup;\n offices: DropdownItem[] = [];\n\n locationDropdownData: LocationDropdownItem[] = [];\n\n categoryDropdownData: DropdownItem[] = [];\n\n hoursDropdownData: DropdownItem[] = [];\n\n minutesDropdownData: DropdownItem[] = [];\n\n showOtherAddress: boolean = false;\n\n loading: boolean = false;\n isSubmitting: boolean = false;\n\n readonly TYPE_OFFICE = 6;\n readonly TYPE_TRANSPORT = 3;\n readonly TYPE_OTHER = 4;\n properties: Record<string, any> = {};\n\n constructor(@Inject(MODAL_DATA_VAR) public modalData: any, private modalRef: ModalRef, private fb: FormBuilder, private http: HttpService,private toast: ToastService) {}\n\n ngOnInit(): void {\n this.loading = true;\n\n const $office = this.http.getOffices(this.modalData.nonce);\n const $properties = this.http.getProperties(PROPERTIES);\n\n forkJoin([$office, $properties])\n .pipe(finalize(() => (this.loading = false)))\n .subscribe({\n next: ([offices, properties]) => {\n this.properties = properties;\n this.initializeForm();\n this.initializeDropdownData(offices);\n this.setupFormListeners();\n },\n error: error => {\n console.error(\"Error loading form data:\", error);\n this.modalRef.close();\n }\n });\n }\n\n private initializeForm(): void {\n const currentTime = this.modalData?.date ?? parseZone().format(\"DD/MM/YYYY\");\n\n this.createTripsheetForm = this.fb.group({\n direction: [this.modalData?.shiftType === \"logout\" ? \"OUT\" : \"IN\", Validators.required],\n location: [{ label: \"\", value: \"\" }],\n otherAddress: \"\",\n tripCategory: [{ label: \"\", value: \"\" }],\n date: [currentTime, Validators.required],\n hours: [{ label: \"\", value: \"\" }],\n mins: [{ label: \"\", value: \"\" }]\n });\n }\n\n private initializeDropdownData(offices: any): void {\n this.locationDropdownData = offices.map(\n (office: any): LocationDropdownItem => ({\n label: office.address,\n value: { type: this.TYPE_OFFICE, office: office || null }\n })\n );\n this.createTripsheetForm.get(\"location\")?.setValue(this.locationDropdownData[0]);\n\n if (!this.properties?.[\"USE_VALID_OFFICE_FOR_IRREGULAR_TRIPS\"]) {\n this.locationDropdownData.push(\n { label: \"Airport\", value: { type: this.TYPE_TRANSPORT, office: null } } as LocationDropdownItem,\n { label: \"Other\", value: { type: this.TYPE_OTHER, office: null } } as LocationDropdownItem\n );\n }\n\n // Initialize category dropdown\n const categoriesString = this.properties?.[\"NON_SHIFT_TRIPS_CATEGORIES\"];\n if (categoriesString && typeof categoriesString === \"string\") {\n const categories = categoriesString.split(\",\").filter(cat => cat && cat.trim());\n if (categories.length > 0) {\n this.categoryDropdownData = categories.map(category => ({\n label: category.trim(),\n value: category.trim()\n }));\n }\n }\n\n const currentHour = new Date().getHours();\n this.hoursDropdownData = Array.from({ length: 24 }, (_, i) => ({\n label: this.padZero(i),\n value: this.padZero(i)\n }));\n this.createTripsheetForm.patchValue({ hours: this.hoursDropdownData[currentHour] });\n\n const currentMinute = new Date().getMinutes();\n this.minutesDropdownData = Array.from({ length: 60 }, (_, i) => ({\n label: this.padZero(i),\n value: this.padZero(i)\n }));\n this.createTripsheetForm.patchValue({ mins: this.minutesDropdownData[currentMinute] });\n }\n\n private setupFormListeners(): void {\n this.createTripsheetForm?.valueChanges.subscribe(value => {\n const { location } = this.createTripsheetForm?.value;\n if (this.showOtherAddress !== (location?.value?.type === this.TYPE_OTHER)) {\n this.showOtherAddress = location?.value?.type === this.TYPE_OTHER;\n if (this.showOtherAddress) {\n this.createTripsheetForm.get(\"otherAddress\")?.setValidators([Validators.required]);\n } else {\n this.createTripsheetForm.get(\"otherAddress\")?.clearValidators();\n }\n this.createTripsheetForm.get(\"otherAddress\")?.updateValueAndValidity();\n }\n });\n }\n\n private padZero(num: number): string {\n return num.toString().padStart(2, \"0\");\n }\n\n onCancel(): void {\n this.modalRef.close();\n }\n\n onSubmit(): void {\n if (this.createTripsheetForm.invalid) {\n return;\n }\n\n const formValue = this.createTripsheetForm.value;\n\n const pickupTime = `${formValue.date} ${formValue.hours.value}/${formValue.mins.value}/00`;\n const pickupTimeDate = parseZone(pickupTime).toDate();\n if (this.isDateAndTimeFromPast(pickupTimeDate)) {\n this.toast.displayMsg(\"Please select a future date and time.\");\n return;\n }\n\n if (this.categoryDropdownData.length > 0 && (!formValue.tripCategory || !formValue.tripCategory.value)) {\n this.toast.displayMsg(\"Please provide a trip category.\");\n return;\n }\n\n if (formValue.location?.value?.type === this.TYPE_OTHER) {\n if (!formValue.otherAddress || formValue.otherAddress.trim() === \"\") {\n this.toast.displayMsg(\"Please provide the address.\");\n return;\n }\n if (formValue.otherAddress.includes(\",\")) {\n this.toast.displayMsg(\"Special character (,) not allowed in address.\");\n return;\n }\n }\n\n this.isSubmitting = true;\n\n this.http.createEmptyIrregularTripSheet(this.modalData.nonce, formValue.direction).subscribe({\n next: routeTripSheet => {\n const pickupLoc = routeTripSheet.dir === \"IN\" ? this.modalData.employee.home : this.getLocation(formValue);\n const dropLoc = routeTripSheet.dir === \"OUT\" ? this.modalData.employee.home : this.getLocation(formValue);\n const pickupTimeFormatted = pickupTime;\n const dropTimeFormatted = pickupTime;\n\n const employee = { ...this.modalData.employee, employee_status: 1 };\n\n const addEmployeeParams = {\n tripsheet: routeTripSheet,\n employee: employee,\n pickupLoc: pickupLoc,\n dropLoc: dropLoc,\n pickUpTime: pickupTimeFormatted,\n dropTime: dropTimeFormatted,\n position: 0,\n routeSource: this.modalData.routeSource,\n assetList: this.modalData.assetList\n };\n\n this.http.addEmployeeToTripSheet(this.modalData.nonce, addEmployeeParams).subscribe({\n next: updatedTripSheet => {\n if (!updatedTripSheet.customMap) {\n updatedTripSheet.customMap = {};\n }\n updatedTripSheet.customMap.tripCategory = formValue.tripCategory?.value || \"\";\n\n this.modalRef.close({\n success: true,\n tripsheet: updatedTripSheet\n });\n },\n error: error => {\n console.error(\"Error adding employee to tripsheet:\", error);\n this.toast.displayMsg(\"Failed to add employee to tripsheet. Please try again.\");\n this.isSubmitting = false;\n }\n });\n },\n error: error => {\n console.error(\"Error creating tripsheet:\", error);\n this.toast.displayMsg(\"Failed to create tripsheet. Please try again.\");\n this.isSubmitting = false;\n }\n });\n }\n\n private isDateAndTimeFromPast(date: Date): boolean {\n const now = new Date();\n return date < now;\n }\n\n private getLocation(formValue: any): any {\n const location = formValue.location?.value;\n\n if (!location) {\n return null;\n }\n\n const locType = location.type;\n\n switch (locType) {\n case this.TYPE_OFFICE:\n return location.office;\n\n case this.TYPE_TRANSPORT:\n return {\n id: null,\n type: this.TYPE_TRANSPORT,\n address: \"Airport\",\n geoCord: null\n };\n\n case this.TYPE_OTHER:\n return {\n ...location.office,\n address: formValue.otherAddress || \"\"\n };\n }\n }\n}\n","<div class=\"createTripsheet\">\n <h2 class=\"modal-header\">Create Non-Shift Tripsheet</h2>\n\n <div *ngIf=\"loading\" class=\"loading-container\">\n <div class=\"spinner\"></div>\n <p>Loading...</p>\n </div>\n\n <form\n *ngIf=\"!loading && createTripsheetForm\"\n [formGroup]=\"createTripsheetForm\"\n (ngSubmit)=\"onSubmit()\"\n class=\"createTripsheetForm\"\n id=\"createTripsheetForm\"\n >\n <div class=\"form-content\">\n <!-- Radio buttons row -->\n <div [ngClass]=\"{ 'radio-row': true, disabled: modalData?.shiftSelectionDisabled }\">\n <label class=\"radio-label\">\n <input class=\"modern-checkbox\" type=\"radio\" formControlName=\"direction\" value=\"OUT\" id=\"startLoc\" />\n <span>Start Location Fixed (Logout)</span>\n </label>\n <label class=\"radio-label\">\n <input class=\"modern-checkbox\" type=\"radio\" formControlName=\"direction\" value=\"IN\" id=\"endLoc\" />\n <span>End Location Fixed (Login)</span>\n </label>\n </div>\n\n <!-- Location field -->\n <div class=\"form-field\">\n <div class=\"label-cell\">\n <label class=\"locText\">Location</label>\n </div>\n <div class=\"input-cell\">\n <mis-dropdown\n [searchEnabled]=\"true\"\n [width]=\"'100%'\"\n [height]=\"'40px'\"\n [data]=\"locationDropdownData\"\n [selectedItem]=\"createTripsheetForm.get('location')?.value\"\n [label]=\"'Select location...'\"\n (onChange)=\"createTripsheetForm.get('location')?.setValue($event)\"\n ></mis-dropdown>\n </div>\n </div>\n\n <!-- Other address field -->\n <div class=\"form-field otherAddress\" *ngIf=\"showOtherAddress\">\n <div class=\"label-cell\">\n <label>Pick/Drop point <sup>*</sup></label>\n </div>\n <div class=\"input-cell\">\n <input type=\"text\" formControlName=\"otherAddress\" class=\"modern-input\" />\n </div>\n </div>\n\n <!-- Trip category field -->\n <div class=\"form-field\" *ngIf=\"categoryDropdownData.length > 0\">\n <div class=\"label-cell\">\n <label>Trip Category</label>\n </div>\n <div class=\"input-cell\">\n <mis-dropdown\n [searchEnabled]=\"false\"\n [width]=\"'250px'\"\n [height]=\"'40px'\"\n [data]=\"categoryDropdownData\"\n [selectedItem]=\"createTripsheetForm.get('tripCategory')?.value\"\n [label]=\"'Select category...'\"\n (onChange)=\"createTripsheetForm.get('tripCategory')?.setValue($event)\"\n ></mis-dropdown>\n </div>\n </div>\n\n <!-- Time field -->\n <div class=\"form-field\">\n <div class=\"label-cell\">\n <label class=\"fixedTimeText\">Time</label>\n </div>\n <div class=\"input-cell modern-date-container\">\n <div class=\"date-select\">\n <input\n misTzDp\n readonly\n [dpConfig]=\"dateConfig\"\n [formControl]=\"createTripsheetForm.get('date')\"\n style=\"height: 44px !important; font-size: 16px !important; cursor: pointer; vertical-align: middle !important\"\n />\n <img [src]=\"CONSTANTS_ASSETS_WIS_COMMON.IMAGES.CALENDAR_ICON\" alt=\"Calendar Icon\" class=\"date-icon data-picker-icon\" />\n </div>\n\n <mis-dropdown\n [searchEnabled]=\"false\"\n [width]=\"'5rem'\"\n [height]=\"'40px'\"\n [data]=\"hoursDropdownData\"\n [selectedItem]=\"createTripsheetForm.get('hours')?.value\"\n [label]=\"'HH'\"\n (onChange)=\"createTripsheetForm.get('hours')?.setValue($event)\"\n ></mis-dropdown>\n\n <mis-dropdown\n [searchEnabled]=\"false\"\n [width]=\"'5rem'\"\n [height]=\"'40px'\"\n [data]=\"minutesDropdownData\"\n [selectedItem]=\"createTripsheetForm.get('mins')?.value\"\n [label]=\"'MM'\"\n (onChange)=\"createTripsheetForm.get('mins')?.setValue($event)\"\n ></mis-dropdown>\n </div>\n </div>\n </div>\n\n <div class=\"form-actions\">\n <button mis-button type=\"outline\" (click)=\"onCancel()\" [disabled]=\"isSubmitting\">Cancel</button>\n <button mis-button type=\"primary\" [disabled]=\"isSubmitting || createTripsheetForm?.invalid\">\n {{ isSubmitting ? \"Creating...\" : \"Create\" }}\n </button>\n </div>\n </form>\n</div>\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { ConfigurationService } from \"./services/configuration.service\";\nimport { NsWISCommon } from \"./models/env.model\";\nimport { CONSTANTS_WIS_COMMON } from \"./constants/emp-web-exp.constants\";\nimport { HttpService } from \"./services/http.service\";\nimport { LoaderModule } from \"mis-crystal-design-system/loader\";\nimport { LoaderComponent } from \"./components/loader/loader.component\";\nimport { LoaderService } from \"./services/loader.service\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { SidenavComponent } from \"./components/sidenav/sidenav.component\";\nimport { CreateNonShiftModalComponent } from \"./components/create-non-shift-modal/create-non-shift-modal.component\";\nimport { DropdownModule } from \"mis-crystal-design-system/dropdown\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { DatepickerModuleV2 } from \"mis-crystal-design-system/datepicker_v2\";\nimport { HttpClientModule } from \"@angular/common/http\";\n\n@NgModule({\n declarations: [LoaderComponent, SidenavComponent, CreateNonShiftModalComponent],\n imports: [CommonModule, HttpClientModule, OverlayModule, LoaderModule, DropdownModule, ReactiveFormsModule, DatepickerModuleV2,],\n providers: [],\n exports: [SidenavComponent, CreateNonShiftModalComponent]\n})\nexport class WisCommonModule {\n static forRoot(env: NsWISCommon.IEnv): ModuleWithProviders<WisCommonModule> {\n return {\n ngModule: WisCommonModule,\n providers: [HttpService,{ provide: CONSTANTS_WIS_COMMON, useValue: env }, ConfigurationService, LoaderService]\n };\n }\n}\n","import { ReplaySubject } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { NsWISConfigurations } from \"../models/configurations.model\";\n@Injectable({\n providedIn: 'root'\n})\nexport class MfeCommunicationService {\n private _etsLoginUser: NsWISConfigurations.ILoginUserDetails;\n\n setUserDetails(userDetails: NsWISConfigurations.ILoginUserDetails): void {\n this._etsLoginUser = userDetails;\n }\n\n getUserDetails(): NsWISConfigurations.ILoginUserDetails {\n return this._etsLoginUser;\n }\n\n constructor() { }\n loginDetails = new ReplaySubject<NsWISConfigurations.IMfeCommunication>(1);\n employeeExperience = new ReplaySubject<NsWISConfigurations.IMfeCommunication>(1);\n floorPlan = new ReplaySubject<NsWISConfigurations.IMfeCommunication>(1);\n meetingRooms = new ReplaySubject<NsWISConfigurations.IMfeCommunication>(1);\n adminUI = new ReplaySubject<NsWISConfigurations.IMfeCommunication>(1);\n paymentsDetails = new ReplaySubject<NsWISConfigurations.IMfeCommunication>(1); \n visitorMgmt = new ReplaySubject<NsWISConfigurations.IMfeCommunication>(1);\n}\n","export abstract class SessionError extends Error {}\n\nexport class SessionTokenNotFoundError extends SessionError {\n constructor() {\n super('Session token was not found.');\n this.name = 'SessionTokenNotFoundError';\n }\n}\n\nexport class SessionTokenExpiredError extends SessionError {\n constructor() {\n super('Session token has expired.');\n this.name = 'SessionTokenExpiredError';\n }\n}\n\nexport class SessionTokenInvalidError extends SessionError {\n constructor() {\n super('Session token could not be decoded.');\n this.name = 'SessionTokenInvalidError';\n }\n}\n\nexport class SessionClaimNotFoundError extends SessionError {\n constructor(public readonly claim: string) {\n super(`Session claim \"${claim}\" was not found in the token.`);\n this.name = 'SessionClaimNotFoundError';\n }\n}\n","import { Injectable } from '@angular/core';\nimport jwtDecode from 'jwt-decode';\n\nimport { getCookie } from '../functions/cookie.function';\nimport { getQueryParam } from '../functions/url.functions';\nimport { NsSession } from '../models/session.model';\nimport {\n SessionClaimNotFoundError,\n SessionError,\n SessionTokenExpiredError,\n SessionTokenInvalidError,\n SessionTokenNotFoundError,\n} from './session.errors';\n\nconst DEFAULT_SESSION_TOKEN_PREFIX = 'sso-wis-token';\nconst DEFAULT_SESSION_TOKEN_FALLBACK_KEY = 'x-wis-token';\nconst DEFAULT_VET_TOKEN_PREFIX = 'x-vet-token';\nconst LAUNCH_SOURCE_VET = 'VET';\n\ntype SessionState =\n | { status: 'ok'; claims: NsSession.IClaims; isVET: boolean }\n | { status: 'not-found'; isVET: boolean }\n | { status: 'expired'; isVET: boolean }\n | { status: 'invalid'; isVET: boolean };\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SessionService {\n private config: NsSession.IInitConfig = {};\n private cachedToken: string | null = null;\n private cachedState: SessionState | null = null;\n\n init(config: NsSession.IInitConfig): void {\n this.config = { ...config };\n this.cachedToken = null;\n this.cachedState = null;\n }\n\n /**\n * Runs `handlers.next` and returns its result, or `handlers.error(error)` if it throws a `SessionError`.\n * Centralizes the try/catch mechanics; the caller still supplies the actual handling logic.\n */\n read<T>(handlers: { next: (session: SessionService) => T; error: (error: SessionError) => T }): T {\n try {\n return handlers.next(this);\n } catch (e) {\n if (e instanceof SessionError) {\n return handlers.error(e);\n }\n throw e;\n }\n }\n\n /**\n * Statement-style variant of `read` for blocks of assignments/side effects with no return value.\n */\n run(handlers: { next: (session: SessionService) => void; error: (error: SessionError) => void }): void {\n this.read({\n next: s => { handlers.next(s); return undefined; },\n error: err => { handlers.error(err); return undefined; }\n });\n }\n\n get isVET(): boolean {\n return this.state.isVET;\n }\n\n get sub(): string { return this.getClaim('sub'); }\n get empGuid(): string { return this.getClaim('employeeGUID'); }\n get internalSsoRole(): string { return this.getClaim('internal_sso_role'); }\n get roles(): string[] { return this.getClaim('roles'); }\n get sessionId(): string { return this.getClaim('sessionId'); }\n get loggedInUser(): string { return this.getClaim('loggedInUser'); }\n get exp(): number { return this.getClaim('exp'); }\n get iat(): number { return this.getClaim('iat'); }\n get businessUnitId(): string { return this.getClaim('businessUnitId'); }\n get allowedBuids(): string[] { return this.getClaim('ALLOWED_BUIDS'); }\n get vetUserEmailId(): string { return this.getClaim('vetUserEmailId'); }\n get vetUserId(): number { return this.getClaim('vetUserId'); }\n get source(): string { return this.getClaim('source'); }\n\n get roleId(): number {\n const claims = this.getClaims();\n const raw = claims.internal_sso_role?.trim() || claims.roles?.[0]?.trim();\n if (!raw || !/^\\d+$/.test(raw)) {\n throw new SessionClaimNotFoundError('roleId');\n }\n return Number(raw);\n }\n\n private getClaims(): NsSession.IClaims {\n const state = this.state;\n if (state.status === 'ok') {\n return state.claims;\n }\n if (state.status === 'not-found') {\n throw new SessionTokenNotFoundError();\n }\n if (state.status === 'expired') {\n throw new SessionTokenExpiredError();\n }\n throw new SessionTokenInvalidError();\n }\n\n private getClaim<K extends keyof NsSession.IClaims>(key: K): NonNullable<NsSession.IClaims[K]> {\n const claims = this.getClaims();\n const value = claims[key];\n const isEmptyString = typeof value === 'string' && value.trim() === '';\n if (value === undefined || value === null || isEmptyString) {\n throw new SessionClaimNotFoundError(key as string);\n }\n return (typeof value === 'string' ? value.trim() : value) as NonNullable<NsSession.IClaims[K]>;\n }\n\n private get state(): SessionState {\n const { token, isVET } = this.findToken();\n if (!this.cachedState || token !== this.cachedToken) {\n this.cachedToken = token;\n this.cachedState = this.build(token, isVET);\n }\n return this.cachedState;\n }\n\n private build(token: string, isVET: boolean): SessionState {\n if (!token) {\n return { status: 'not-found', isVET };\n }\n\n let claims: NsSession.IClaims;\n try {\n claims = jwtDecode<NsSession.IClaims>(token);\n } catch {\n return { status: 'invalid', isVET };\n }\n\n if (this.isExpired(claims)) {\n return { status: 'expired', isVET };\n }\n\n return { status: 'ok', claims, isVET };\n }\n\n private isExpired(claims: NsSession.IClaims): boolean {\n return typeof claims.exp === 'number' && claims.exp * 1000 <= Date.now();\n }\n\n private isVETSource(): boolean {\n return getQueryParam('source') === LAUNCH_SOURCE_VET;\n }\n\n private resolveBuid(): string | null {\n return getQueryParam('buid') || getCookie('buid') || null;\n }\n\n private findToken(): { token: string; isVET: boolean } {\n const buid = this.resolveBuid();\n\n if (this.isVETSource()) {\n const vetKey = this.config.vetTokenCookieKey ?? (buid ? `${DEFAULT_VET_TOKEN_PREFIX}-${buid}` : null);\n const vetToken = (vetKey ? getCookie(vetKey) : '') || '';\n if (vetToken) {\n return { token: vetToken, isVET: true };\n }\n }\n\n const sessionToken = this.config.sessionTokenCookieKey\n ? getCookie(this.config.sessionTokenCookieKey)\n : (buid ? getCookie(`${DEFAULT_SESSION_TOKEN_PREFIX}-${buid}`) : '') || getCookie(DEFAULT_SESSION_TOKEN_FALLBACK_KEY);\n\n return { token: sessionToken || '', isVET: false };\n }\n}\n","/*\n * Public API Surface of wis-common\n */\n\nexport * from \"./lib/modules/auth/auth.service\";\nexport * from \"./lib/modules/auth/auth.module\";\nexport * from \"./lib/services/configuration.service\";\nexport * from \"./lib/models/configurations.model\";\nexport * from \"./lib/functions/nav-filter.function\";\nexport * from \"./lib/functions/cookie.function\";\nexport * from \"./lib/functions/url.functions\";\nexport * from \"./lib/interceptors/auth.interceptor\";\nexport * from \"./lib/services/loader.service\";\nexport * from \"./lib/modules/logger/logger.module\";\nexport * from \"./lib/modules/logger/logger.service\";\nexport * from \"./lib/wis-common.module\";\nexport * from \"./lib/modules/logger/logger.model\";\nexport * from \"./lib/components/sidenav/sidenav.component\";\nexport * from \"./lib/services/mfe-communication.service\";\nexport * from \"./lib/components/create-non-shift-modal/create-non-shift-modal.component\";\nexport * from \"./lib/services/session.service\";\nexport * from \"./lib/services/session.errors\";\nexport * from \"./lib/models/session.model\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.HttpService","i4"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;MAMa,WAAW,CAAA;AAGtB,IAAA,WAAA,GAAA,GAAgB;AAEhB,IAAA,IAAI,CAAC,IAAe,EAAA;AAClB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KACzB;;wGAPU,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAX,WAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA,CAAA;2FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCIY,UAAU,CAAA;AACrB;;;AAGG;AACH,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,CAAC,WAAW,CAAC;SACzB,CAAC;KACH;;uGAVU,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAV,UAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,YAHX,YAAY,CAAA,EAAA,CAAA,CAAA;AAGX,UAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,YAHX,YAAY,CAAA,EAAA,CAAA,CAAA;2FAGX,UAAU,EAAA,UAAA,EAAA,CAAA;kBALtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;oBAChB,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,SAAS,EAAE,EAAE;AACd,iBAAA,CAAA;;;MCHY,oBAAoB,CAAA;AAC/B,IAAA,WAAA,GAAA,GAAgB;;iHADL,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA;2FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCFY,aAAa,GAAG,CAC3B,OAA2C,EAC3C,QAA0C,KACJ;AACtC,IAAA,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,IAAG;QAC1B,MAAM,QAAQ,GAAG,GAAG,CAAC,qBAAqB,IAAI,GAAG,CAAC,qBAAqB,CAAC,KAAK,CAAC,aAAa,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;QACxH,MAAM,OAAO,GAAG,GAAG,CAAC,oBAAoB,IAAI,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;QACpH,IAAI,CAAC,QAAQ,IAAI,OAAO,KAAK,GAAG,CAAC,QAAQ,EAAE;YACzC,GAAG,CAAC,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACtD,SAAA;QACD,OAAO,QAAQ,IAAI,OAAO,CAAC;AAC7B,KAAC,CAAC,CAAC;AACL;;ACJM,SAAU,SAAS,CAAC,IAAY,EAAA;IACpC,MAAM,OAAO,GAAG,EAAE,CAAC;AACnB,IAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC;IACrC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,IAAG;AACxC,QAAA,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACvC,QAAA,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACvB,KAAC,CAAC,CAAC;AACH,IAAA,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;AACpC,CAAC;SAEe,SAAS,CAAC,IAAY,EAAE,KAAa,EAAE,OAAwB,EAAA;AAC7E,IAAA,IAAI,SAAS,GAAG,CAAA,EAAG,IAAI,CAAI,CAAA,EAAA,KAAK,GAAG,CAAC;AACpC,IAAA,IAAI,OAAO,EAAE;QACX,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C,QAAA,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE;YAC9B,SAAS,IAAI,IAAI,GAAG,CAAA,EAAG,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,CAAA,CAAA,EAAI,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAA,CAAA,CAAG,CAAC;AAC1F,SAAA;AACF,KAAA;IACD,SAAS,IAAI,2BAA2B,CAAC;AACzC,IAAA,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;AAC9B,CAAC;AAEe,SAAA,YAAY,CAAC,IAAY,EAAE,MAAe,EAAA;IACxD,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AACtE;;AClCM,SAAU,aAAa,CAAC,WAAmB,EAAA;IAC/C,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,WAAW,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1F,IAAI,OAAO,KAAK,IAAI,EAAE;AACpB,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AAAM,SAAA;QACL,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC/C,KAAA;AACH;;ACCA,MAAM,UAAU,GAAG,aAAa,CAAC;MAEpB,eAAe,CAAA;IAC1B,WAAoB,CAAA,KAAqB,EAAU,KAAmB,EAAA;QAAlD,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QAAU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAc;KAAI;IAE1E,SAAS,CAAC,OAAyB,EAAE,IAAiB,EAAA;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC;AACpD,QAAA,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAClE,QAAA,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;;AAEtG,QAAA,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,SAAS,CAAC,iBAAiB,IAAI,CAAA,CAAE,CAAC,CAAC;AACjD,QAAA,MAAM,gBAAgB,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;AAC/C,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;AAC7B,YAAA,UAAU,EAAE;AACV,gBAAA,aAAa,EAAE,IAAI;AACnB,gBAAA,WAAW,EAAE,OAAO;AACpB,gBAAA,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,GAAG,KAAK,EAAE,CAAC;AACvC,gBAAA,IAAI,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,UAAU,GAAG,SAAS,EAAE,CAAC;AAC/C,gBAAA,IAAI,CAAC,CAAC,gBAAgB,IAAI,EAAE,CAAC,UAAU,GAAG,gBAAgB,EAAE,CAAC;AAC9D,aAAA;AACF,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC/B,GAAG,CACD,MAAK,GAAG,EACR,GAAG,IAAG;YACJ,IAAI,GAAG,YAAY,iBAAiB,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;gBAC1D,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,+CAA+C,EAAC,IAAI,CAAC,CAAC;AAC7E,aAAA;SACF,CACF,CACF,CAAC;KACH;;4GA9BU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gHAAf,eAAe,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;;MCFE,eAAe,CAAA;AAE1B,IAAA,WAAA,GAAA,GAAgB;AAEhB,IAAA,QAAQ,MAAW;;4GAJR,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,yDCP5B,iPAOA,EAAA,MAAA,EAAA,CAAA,wSAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDAa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACE,mBAAmB,EAAA,QAAA,EAAA,iPAAA,EAAA,MAAA,EAAA,CAAA,wSAAA,CAAA,EAAA,CAAA;;;AEH/B;MAUa,aAAa,CAAA;AAIxB,IAAA,WAAA,CAAoB,OAAgB,EAAA;QAAhB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QAF7B,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;KAEiB;AAExC,IAAA,IAAI,CAAC,OAAgB,EAAA;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,EAAE;YAClC,OAAO;AACR,SAAA;AACD,QAAA,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACpG,QAAA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC;AAC/B,YAAA,WAAW,EAAE,IAAI;YACjB,gBAAgB;YAChB,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE;YACpD,KAAK;YACL,aAAa;AACd,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACpD,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;AACzC,SAAA;KACF;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;KAC5B;AAEO,IAAA,oBAAoB,CAAC,UAAmB,EAAA;QAM9C,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC;QAC1D,IAAI,KAAK,GAAG,OAAO,CAAC;QACpB,IAAI,aAAa,GAAG,kCAAkC,CAAC;AACvD,QAAA,IAAI,UAAU,EAAE;YACd,KAAK,GAAG,SAAS,CAAC;YAClB,aAAa,GAAG,sBAAsB,CAAC;AACvC,YAAA,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,gBAAgB,EAAE,CAAC;AAC1D,SAAA;AAAM,aAAA;YACL,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1C,SAAA;QACD,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;KAC/D;;0GAlDU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,OAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACTD;AAEO,MAAM,gBAAgB,GAAG;AAC9B,IAAA,QAAQ,EAAE,cAAc;AACxB,IAAA,OAAO,EAAE,cAAc;CACxB;;ACJD,MAAM,MAAM,GAAG;AACb,IAAA,GAAG,EAAE,kCAAkC;AACvC,IAAA,EAAE,EAAE,kCAAkC;AACtC,IAAA,UAAU,EAAE,4BAA4B;AACxC,IAAA,GAAG,EAAE,mCAAmC;AACxC,IAAA,kBAAkB,EAAE,wCAAwC;AAC5D,IAAA,iBAAiB,EAAE,iCAAiC;AACpD,IAAA,eAAe,EAAE,+BAA+B;AAChD,IAAA,qBAAqB,EAAE,qCAAqC;AAC5D,IAAA,eAAe,EAAE,2BAA2B;CAC7C,CAAC;AACI,SAAU,kBAAkB,CAAC,GAAa,EAAA;IAC9C,IAAI,CAAC,GAAG,EAAE;AACR,QAAA,OAAO,MAAM,CAAC;AACf,KAAA;AACD,IAAA,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB;;MCTa,aAAa,CAAA;AAGxB,IAAA,WAAA,CACU,IAAgB,EACmB,OAAe,EAChB,MAAgB,EAAA;QAFlD,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QACmB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;QAChB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAU;QALpD,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;KAM7B;AAEJ,IAAA,UAAU,CAAC,UAAmB,EAAA;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;KAC3B;IAEO,UAAU,CAAC,IAAS,EAAE,QAAmC,EAAA;AAC/D,QAAA,MAAM,OAAO,GAAG;YACd,IAAI;AACJ,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,SAAS;YACnD,QAAQ;SACT,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KACvB;AAEO,IAAA,OAAO,CAAC,OAAO,EAAA;AACrB,QAAA,MAAM,GAAG,GAAG,CAAG,EAAA,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAe,YAAA,EAAA,IAAI,CAAC,OAAO,EAAE,CAAC;AAC5E,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAG,EAAA,GAAG,CAAE,CAAA,EAAE,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;KAC/C;AAED,IAAA,IAAI,CAAC,IAAS,EAAA;AACZ,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KAC/B;AAED,IAAA,IAAI,CAAC,IAAS,EAAA;AACZ,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KAC/B;AAED,IAAA,KAAK,CAAC,IAAS,EAAE,aAAqB,EAAE,UAAmB,EAAA;AACzD,QAAA,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC;KAClE;;AArCU,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,8CAKd,gBAAgB,CAAC,QAAQ,EACzB,EAAA,EAAA,KAAA,EAAA,gBAAgB,CAAC,OAAO,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AANvB,aAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BAMI,MAAM;AAAC,oBAAA,IAAA,EAAA,CAAA,gBAAgB,CAAC,QAAQ,CAAA;;0BAChC,MAAM;AAAC,oBAAA,IAAA,EAAA,CAAA,gBAAgB,CAAC,OAAO,CAAA;;;MCHvB,YAAY,CAAA;AACvB;;;;;AAKG;AACH,IAAA,OAAO,QAAQ,CAAC,OAAe,EAAE,GAAc,EAAA;QAC7C,OAAO;AACL,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,SAAS,EAAE;AACT,gBAAA;oBACE,OAAO,EAAE,gBAAgB,CAAC,QAAQ;AAClC,oBAAA,QAAQ,EAAE,OAAO;AAClB,iBAAA;AACD,gBAAA;oBACE,OAAO,EAAE,gBAAgB,CAAC,OAAO;AACjC,oBAAA,QAAQ,EAAE,GAAG;AACd,iBAAA;gBACD,aAAa;AACd,aAAA;SACF,CAAC;KACH;;yGAtBU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAHb,YAAY,CAAA,EAAA,CAAA,CAAA;AAGX,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAHb,YAAY,CAAA,EAAA,CAAA,CAAA;2FAGX,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;oBAChB,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,SAAS,EAAE,EAAE;AACd,iBAAA,CAAA;;;ACVD;AAEO,MAAM,oBAAoB,GAAG;AAClC,IAAA,OAAO,EAAE,sBAAsB;CAChC;;ACID,MAAM,QAAQ,GAAG;AACf,IAAA,cAAc,EAAE,gBAAgB;CACjC,CAAC;MAGW,WAAW,CAAA;IACtB,WAAiD,CAAA,GAAqB,EAAU,IAAgB,EAAA;QAA/C,IAAG,CAAA,GAAA,GAAH,GAAG,CAAkB;QAAU,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;KAAI;AAEpG,IAAA,aAAa,CAAC,UAAoB,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAG,EAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAwB,qBAAA,EAAA,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC,CAAC,IAAI,CACtF,GAAG,CAAC,CAAC,GAAQ,KAAI;YACf,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,IAAS,KAAI;AACxC,gBAAA,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,aAAa,KAAK,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,aAAa,KAAK,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;AAC5H,gBAAA,OAAO,GAAG,CAAC;aACZ,EAAE,EAAE,CAAC,CAAC;SACR,CAAC,CACH,CAAC;KACH;AAED,IAAA,UAAU,CAAC,KAAK,EAAA;AACd,QAAA,MAAM,IAAI,GAAG,CAAc,WAAA,EAAA,KAAK,uBAAuB,CAAC;QACxD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA,iBAAA,CAAmB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE,EAAE,CAAC,CAAC;KACvI;AAED,IAAA,uBAAuB,CAAC,KAAK,EAAA;AAC3B,QAAA,MAAM,IAAI,GAAG,CAAc,WAAA,EAAA,KAAK,iCAAiC,CAAC;QAClE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA,iBAAA,CAAmB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE,EAAE,CAAC,CAAC;KACvI;IAED,6BAA6B,CAAC,KAAa,EAAE,SAAiB,EAAA;AAC5D,QAAA,MAAM,IAAI,GAAG,CAAA,WAAA,EAAc,KAAK,CAAmD,gDAAA,EAAA,SAAS,EAAE,CAAC;QAC/F,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA,uBAAA,CAAyB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE,EAAE,CAAC,CAAC;KAC7I;IAED,sBAAsB,CACpB,KAAa,EACb,MAUC,EAAA;QAED,MAAM,IAAI,GAAG,CAAc,WAAA,EAAA,KAAK,4CAA4C,kBAAkB,CAC5F,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CACjC,CAAa,UAAA,EAAA,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,kBAAkB,CAC/F,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CACjC,CAAA,SAAA,EAAY,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,gBAAgB,MAAM,CAAC,UAAU,CAAe,YAAA,EAAA,MAAM,CAAC,QAAQ,CAAA,WAAA,EAC5H,MAAM,CAAC,QACT,CAAA,EAAG,MAAM,CAAC,WAAW,GAAG,eAAe,GAAG,MAAM,CAAC,WAAW,GAAG,EAAE,CAC/D,EAAA,MAAM,CAAC,SAAS,GAAG,aAAa,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,EAC5F,CAAA,CAAE,CAAC;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA,uBAAA,CAAyB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE,EAAE,CAAC,CAAC;KAC7I;;AArDU,WAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,kBACF,oBAAoB,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4GAD7B,WAAW,EAAA,CAAA,CAAA;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;;0BAEI,MAAM;2BAAC,oBAAoB,CAAA;;;MCP7B,gBAAgB,CAAA;AAC3B,IAAA,WAAA,GAAA,GAAgB;AAEhB,IAAA,QAAQ,MAAW;;6GAHR,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,0DCP7B,mzCA4CA,EAAA,MAAA,EAAA,CAAA,mEAAA,CAAA,EAAA,CAAA,CAAA;2FDrCa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,mzCAAA,EAAA,MAAA,EAAA,CAAA,mEAAA,CAAA,EAAA,CAAA;;;AEHhC;AAEO,MAAM,2BAA2B,GAAG;AACzC,IAAA,MAAM,EAAE;AACN,QAAA,aAAa,EAAE,0CAA0C;AAC1D,KAAA;AACD,IAAA,KAAK,EAAE,EAAE;CACV;;ACMD,MAAM,UAAU,GAAG,CAAC,4BAA4B,EAAE,sCAAsC,CAAC,CAAC;MAiB7E,4BAA4B,CAAA;IA4BvC,WAA2C,CAAA,SAAc,EAAU,QAAkB,EAAU,EAAe,EAAU,IAAiB,EAAS,KAAmB,EAAA;QAA1H,IAAS,CAAA,SAAA,GAAT,SAAS,CAAK;QAAU,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAAU,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;QAAU,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;QAAS,IAAK,CAAA,KAAA,GAAL,KAAK,CAAc;QA3BrK,IAA2B,CAAA,2BAAA,GAAG,2BAA2B,CAAC;AAE1D,QAAA,IAAA,CAAA,UAAU,GAA+B;AACvC,YAAA,OAAO,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;AACzC,YAAA,MAAM,EAAE,YAAY;SACrB,CAAC;QAEF,IAAO,CAAA,OAAA,GAAmB,EAAE,CAAC;QAE7B,IAAoB,CAAA,oBAAA,GAA2B,EAAE,CAAC;QAElD,IAAoB,CAAA,oBAAA,GAAmB,EAAE,CAAC;QAE1C,IAAiB,CAAA,iBAAA,GAAmB,EAAE,CAAC;QAEvC,IAAmB,CAAA,mBAAA,GAAmB,EAAE,CAAC;QAEzC,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;QAElC,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;QACzB,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;QAErB,IAAW,CAAA,WAAA,GAAG,CAAC,CAAC;QAChB,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC;QACnB,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;QACxB,IAAU,CAAA,UAAA,GAAwB,EAAE,CAAC;KAEoI;IAEzK,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAEpB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAExD,QAAA,QAAQ,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AAC7B,aAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;AAC5C,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,KAAI;AAC9B,gBAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;gBAC7B,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,gBAAA,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;gBACrC,IAAI,CAAC,kBAAkB,EAAE,CAAC;aAC3B;YACD,KAAK,EAAE,KAAK,IAAG;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;AACjD,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;aACvB;AACF,SAAA,CAAC,CAAC;KACN;IAEO,cAAc,GAAA;AACpB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,SAAS,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAE7E,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACvC,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,KAAK,QAAQ,GAAG,KAAK,GAAG,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;YACvF,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACpC,YAAA,YAAY,EAAE,EAAE;YAChB,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACxC,YAAA,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC;YACxC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YACjC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACjC,SAAA,CAAC,CAAC;KACJ;AAEO,IAAA,sBAAsB,CAAC,OAAY,EAAA;AACzC,QAAA,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,GAAG,CACrC,CAAC,MAAW,MAA4B;YACtC,KAAK,EAAE,MAAM,CAAC,OAAO;AACrB,YAAA,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE;AAC1D,SAAA,CAAC,CACH,CAAC;AACF,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjF,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,sCAAsC,CAAC,EAAE;YAC9D,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC5B,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,EAA0B,EAChG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,EAA0B,CAC3F,CAAC;AACH,SAAA;;QAGD,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,GAAG,4BAA4B,CAAC,CAAC;AACzE,QAAA,IAAI,gBAAgB,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE;YAC5D,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AAChF,YAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,IAAI,CAAC,oBAAoB,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,KAAK;AACtD,oBAAA,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE;AACtB,oBAAA,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE;AACvB,iBAAA,CAAC,CAAC,CAAC;AACL,aAAA;AACF,SAAA;QAED,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC1C,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM;AAC7D,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACtB,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACvB,SAAA,CAAC,CAAC,CAAC;AACJ,QAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAEpF,MAAM,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;QAC9C,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM;AAC/D,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACtB,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACvB,SAAA,CAAC,CAAC,CAAC;AACJ,QAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;KACxF;IAEO,kBAAkB,GAAA;QACxB,IAAI,CAAC,mBAAmB,EAAE,YAAY,CAAC,SAAS,CAAC,KAAK,IAAG;YACvD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC;AACrD,YAAA,IAAI,IAAI,CAAC,gBAAgB,MAAM,QAAQ,EAAE,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,EAAE;AACzE,gBAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,EAAE,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC;gBAClE,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,oBAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpF,iBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,eAAe,EAAE,CAAC;AACjE,iBAAA;gBACD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,sBAAsB,EAAE,CAAC;AACxE,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,OAAO,CAAC,GAAW,EAAA;QACzB,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;KACxC;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;KACvB;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE;YACpC,OAAO;AACR,SAAA;AAED,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAEjD,QAAA,MAAM,UAAU,GAAG,CAAA,EAAG,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;QAC3F,MAAM,cAAc,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC;AACtD,QAAA,IAAI,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,EAAE;AAC9C,YAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,uCAAuC,CAAC,CAAC;YAC/D,OAAO;AACR,SAAA;QAED,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;AACtG,YAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,iCAAiC,CAAC,CAAC;YACzD,OAAO;AACR,SAAA;QAED,IAAI,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC,UAAU,EAAE;AACvD,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AACnE,gBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,6BAA6B,CAAC,CAAC;gBACrD,OAAO;AACR,aAAA;YACD,IAAI,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACxC,gBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,+CAA+C,CAAC,CAAC;gBACvE,OAAO;AACR,aAAA;AACF,SAAA;AAED,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAEzB,QAAA,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC;YAC3F,IAAI,EAAE,cAAc,IAAG;gBACrB,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;gBAC3G,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,KAAK,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;gBAC1G,MAAM,mBAAmB,GAAG,UAAU,CAAC;gBACvC,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAErC,gBAAA,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC;AAEpE,gBAAA,MAAM,iBAAiB,GAAG;AACxB,oBAAA,SAAS,EAAE,cAAc;AACzB,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,SAAS,EAAE,SAAS;AACpB,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,UAAU,EAAE,mBAAmB;AAC/B,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,CAAC;AACX,oBAAA,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW;AACvC,oBAAA,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;iBACpC,CAAC;AAEF,gBAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,SAAS,CAAC;oBAClF,IAAI,EAAE,gBAAgB,IAAG;AACvB,wBAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;AAC/B,4BAAA,gBAAgB,CAAC,SAAS,GAAG,EAAE,CAAC;AACjC,yBAAA;AACD,wBAAA,gBAAgB,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC;AAE9E,wBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAClB,4BAAA,OAAO,EAAE,IAAI;AACb,4BAAA,SAAS,EAAE,gBAAgB;AAC5B,yBAAA,CAAC,CAAC;qBACJ;oBACD,KAAK,EAAE,KAAK,IAAG;AACb,wBAAA,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;AAC5D,wBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,wDAAwD,CAAC,CAAC;AAChF,wBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;qBAC3B;AACF,iBAAA,CAAC,CAAC;aACJ;YACD,KAAK,EAAE,KAAK,IAAG;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;AAClD,gBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,+CAA+C,CAAC,CAAC;AACvE,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;aAC3B;AACF,SAAA,CAAC,CAAC;KACJ;AAEO,IAAA,qBAAqB,CAAC,IAAU,EAAA;AACtC,QAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,IAAI,GAAG,GAAG,CAAC;KACnB;AAEO,IAAA,WAAW,CAAC,SAAc,EAAA;AAChC,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC;QAE3C,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC;AAE9B,QAAA,QAAQ,OAAO;YACb,KAAK,IAAI,CAAC,WAAW;gBACnB,OAAO,QAAQ,CAAC,MAAM,CAAC;YAEzB,KAAK,IAAI,CAAC,cAAc;gBACtB,OAAO;AACL,oBAAA,EAAE,EAAE,IAAI;oBACR,IAAI,EAAE,IAAI,CAAC,cAAc;AACzB,oBAAA,OAAO,EAAE,SAAS;AAClB,oBAAA,OAAO,EAAE,IAAI;iBACd,CAAC;YAEJ,KAAK,IAAI,CAAC,UAAU;gBAClB,OAAO;oBACL,GAAG,QAAQ,CAAC,MAAM;AAClB,oBAAA,OAAO,EAAE,SAAS,CAAC,YAAY,IAAI,EAAE;iBACtC,CAAC;AACL,SAAA;KACF;;AApPU,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,kBA4BnB,cAAc,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA5BvB,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,kEC9BzC,6jJA0HA,EAAA,MAAA,EAAA,CAAA,woHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,OAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,8FAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,SAAA,EAAA,2BAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD5Fa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,SAAS;+BACE,4BAA4B,EAAA,QAAA,EAAA,6jJAAA,EAAA,MAAA,EAAA,CAAA,woHAAA,CAAA,EAAA,CAAA;;0BAgCzB,MAAM;2BAAC,cAAc,CAAA;;;MEnCvB,eAAe,CAAA;IAC1B,OAAO,OAAO,CAAC,GAAqB,EAAA;QAClC,OAAO;AACL,YAAA,QAAQ,EAAE,eAAe;AACzB,YAAA,SAAS,EAAE,CAAC,WAAW,EAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,oBAAoB,EAAE,aAAa,CAAC;SAC/G,CAAC;KACH;;4GANU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;6GAAf,eAAe,EAAA,YAAA,EAAA,CALX,eAAe,EAAE,gBAAgB,EAAE,4BAA4B,CAAA,EAAA,OAAA,EAAA,CACpE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAEpH,gBAAgB,EAAE,4BAA4B,CAAA,EAAA,CAAA,CAAA;AAE7C,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAJhB,OAAA,EAAA,CAAA,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,kBAAkB,CAAA,EAAA,CAAA,CAAA;2FAInH,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,eAAe,EAAE,gBAAgB,EAAE,4BAA4B,CAAC;AAC/E,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,kBAAkB,EAAE;AAChI,oBAAA,SAAS,EAAE,EAAE;AACb,oBAAA,OAAO,EAAE,CAAC,gBAAgB,EAAE,4BAA4B,CAAC;AAC1D,iBAAA,CAAA;;;MChBY,uBAAuB,CAAA;AAWlC,IAAA,WAAA,GAAA;AACA,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,aAAa,CAAwC,CAAC,CAAC,CAAC;AAC3E,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,aAAa,CAAwC,CAAC,CAAC,CAAC;AACjF,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,aAAa,CAAwC,CAAC,CAAC,CAAC;AACxE,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,aAAa,CAAwC,CAAC,CAAC,CAAC;AAC3E,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,aAAa,CAAwC,CAAC,CAAC,CAAC;AACtE,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,aAAa,CAAwC,CAAC,CAAC,CAAC;AAC9E,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,aAAa,CAAwC,CAAC,CAAC,CAAC;KAPzD;AARjB,IAAA,cAAc,CAAC,WAAkD,EAAA;AAC/D,QAAA,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;KAClC;IAED,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;;oHATU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA;2FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACLK,MAAgB,YAAa,SAAQ,KAAK,CAAA;AAAG,CAAA;AAE7C,MAAO,yBAA0B,SAAQ,YAAY,CAAA;AACzD,IAAA,WAAA,GAAA;QACE,KAAK,CAAC,8BAA8B,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;KACzC;AACF,CAAA;AAEK,MAAO,wBAAyB,SAAQ,YAAY,CAAA;AACxD,IAAA,WAAA,GAAA;QACE,KAAK,CAAC,4BAA4B,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;KACxC;AACF,CAAA;AAEK,MAAO,wBAAyB,SAAQ,YAAY,CAAA;AACxD,IAAA,WAAA,GAAA;QACE,KAAK,CAAC,qCAAqC,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;KACxC;AACF,CAAA;AAEK,MAAO,yBAA0B,SAAQ,YAAY,CAAA;AACzD,IAAA,WAAA,CAA4B,KAAa,EAAA;AACvC,QAAA,KAAK,CAAC,CAAA,eAAA,EAAkB,KAAK,CAAA,6BAAA,CAA+B,CAAC,CAAC;QADpC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;AAEvC,QAAA,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;KACzC;AACF;;ACdD,MAAM,4BAA4B,GAAG,eAAe,CAAC;AACrD,MAAM,kCAAkC,GAAG,aAAa,CAAC;AACzD,MAAM,wBAAwB,GAAG,aAAa,CAAC;AAC/C,MAAM,iBAAiB,GAAG,KAAK,CAAC;MAWnB,cAAc,CAAA;AAH3B,IAAA,WAAA,GAAA;QAIU,IAAM,CAAA,MAAA,GAA0B,EAAE,CAAC;QACnC,IAAW,CAAA,WAAA,GAAkB,IAAI,CAAC;QAClC,IAAW,CAAA,WAAA,GAAwB,IAAI,CAAC;AA6IjD,KAAA;AA3IC,IAAA,IAAI,CAAC,MAA6B,EAAA;AAChC,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KACzB;AAED;;;AAGG;AACH,IAAA,IAAI,CAAI,QAAqF,EAAA;QAC3F,IAAI;AACF,YAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,YAAY,YAAY,EAAE;AAC7B,gBAAA,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B,aAAA;AACD,YAAA,MAAM,CAAC,CAAC;AACT,SAAA;KACF;AAED;;AAEG;AACH,IAAA,GAAG,CAAC,QAA2F,EAAA;QAC7F,IAAI,CAAC,IAAI,CAAC;AACR,YAAA,IAAI,EAAE,CAAC,IAAG,EAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,EAAE;AAClD,YAAA,KAAK,EAAE,GAAG,IAAG,EAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,EAAE;AACzD,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;KACzB;IAED,IAAI,GAAG,GAAa,EAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;IAClD,IAAI,OAAO,GAAa,EAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,EAAE;IAC/D,IAAI,eAAe,GAAa,EAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,EAAE;IAC5E,IAAI,KAAK,GAAe,EAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE;IACxD,IAAI,SAAS,GAAa,EAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE;IAC9D,IAAI,YAAY,GAAa,EAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,EAAE;IACpE,IAAI,GAAG,GAAa,EAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;IAClD,IAAI,GAAG,GAAa,EAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;IAClD,IAAI,cAAc,GAAa,EAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE;IACxE,IAAI,YAAY,GAAe,EAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,EAAE;IACvE,IAAI,cAAc,GAAa,EAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE;IACxE,IAAI,SAAS,GAAa,EAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE;IAC9D,IAAI,MAAM,GAAa,EAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE;AAExD,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAChC,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,iBAAiB,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAC1E,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC9B,YAAA,MAAM,IAAI,yBAAyB,CAAC,QAAQ,CAAC,CAAC;AAC/C,SAAA;AACD,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;KACpB;IAEO,SAAS,GAAA;AACf,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;YACzB,OAAO,KAAK,CAAC,MAAM,CAAC;AACrB,SAAA;AACD,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE;YAChC,MAAM,IAAI,yBAAyB,EAAE,CAAC;AACvC,SAAA;AACD,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;YAC9B,MAAM,IAAI,wBAAwB,EAAE,CAAC;AACtC,SAAA;QACD,MAAM,IAAI,wBAAwB,EAAE,CAAC;KACtC;AAEO,IAAA,QAAQ,CAAoC,GAAM,EAAA;AACxD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAChC,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1B,QAAA,MAAM,aAAa,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;QACvE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,aAAa,EAAE;AAC1D,YAAA,MAAM,IAAI,yBAAyB,CAAC,GAAa,CAAC,CAAC;AACpD,SAAA;AACD,QAAA,QAAQ,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,KAAK,EAAuC;KAChG;AAED,IAAA,IAAY,KAAK,GAAA;QACf,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE;AACnD,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC7C,SAAA;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IAEO,KAAK,CAAC,KAAa,EAAE,KAAc,EAAA;QACzC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AACvC,SAAA;AAED,QAAA,IAAI,MAAyB,CAAC;QAC9B,IAAI;AACF,YAAA,MAAM,GAAG,SAAS,CAAoB,KAAK,CAAC,CAAC;AAC9C,SAAA;QAAC,MAAM;AACN,YAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACrC,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;AAC1B,YAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACrC,SAAA;QAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;KACxC;AAEO,IAAA,SAAS,CAAC,MAAyB,EAAA;AACzC,QAAA,OAAO,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;KAC1E;IAEO,WAAW,GAAA;AACjB,QAAA,OAAO,aAAa,CAAC,QAAQ,CAAC,KAAK,iBAAiB,CAAC;KACtD;IAEO,WAAW,GAAA;QACjB,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;KAC3D;IAEO,SAAS,GAAA;AACf,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAEhC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,KAAK,IAAI,GAAG,CAAA,EAAG,wBAAwB,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,GAAG,IAAI,CAAC,CAAC;AACtG,YAAA,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC;AACzD,YAAA,IAAI,QAAQ,EAAE;gBACZ,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzC,aAAA;AACF,SAAA;AAED,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB;cAClD,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC;cAC5C,CAAC,IAAI,GAAG,SAAS,CAAC,CAAG,EAAA,4BAA4B,CAAI,CAAA,EAAA,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,SAAS,CAAC,kCAAkC,CAAC,CAAC;QAExH,OAAO,EAAE,KAAK,EAAE,YAAY,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;KACpD;;2GA/IU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;2FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;AC3BD;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"mis-wis-common.mjs","sources":["../../../libraries/wis-common/src/lib/modules/auth/auth.service.ts","../../../libraries/wis-common/src/lib/modules/auth/auth.module.ts","../../../libraries/wis-common/src/lib/services/configuration.service.ts","../../../libraries/wis-common/src/lib/functions/nav-filter.function.ts","../../../libraries/wis-common/src/lib/functions/cookie.function.ts","../../../libraries/wis-common/src/lib/functions/url.functions.ts","../../../libraries/wis-common/src/lib/interceptors/auth.interceptor.ts","../../../libraries/wis-common/src/lib/components/loader/loader.component.ts","../../../libraries/wis-common/src/lib/components/loader/loader.component.html","../../../libraries/wis-common/src/lib/services/loader.service.ts","../../../libraries/wis-common/src/lib/modules/logger/logger.constant.ts","../../../libraries/wis-common/src/lib/modules/logger/logger.functions.ts","../../../libraries/wis-common/src/lib/modules/logger/logger.service.ts","../../../libraries/wis-common/src/lib/modules/logger/logger.module.ts","../../../libraries/wis-common/src/lib/constants/emp-web-exp.constants.ts","../../../libraries/wis-common/src/lib/services/http.service.ts","../../../libraries/wis-common/src/lib/components/sidenav/sidenav.component.ts","../../../libraries/wis-common/src/lib/components/sidenav/sidenav.component.html","../../../libraries/wis-common/src/lib/constants/assets.constants.ts","../../../libraries/wis-common/src/lib/components/create-non-shift-modal/create-non-shift-modal.component.ts","../../../libraries/wis-common/src/lib/components/create-non-shift-modal/create-non-shift-modal.component.html","../../../libraries/wis-common/src/lib/wis-common.module.ts","../../../libraries/wis-common/src/lib/services/mfe-communication.service.ts","../../../libraries/wis-common/src/lib/services/session.errors.ts","../../../libraries/wis-common/src/lib/services/session.service.ts","../../../libraries/wis-common/src/public-api.ts","../../../libraries/wis-common/src/mis-wis-common.ts"],"sourcesContent":["import { Inject, Injectable } from \"@angular/core\";\nimport { IUserInfo } from \"./auth.model\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class AuthService {\n userDetails: IUserInfo;\n\n constructor() {}\n\n init(user: IUserInfo) {\n this.userDetails = user;\n }\n}\n","import { ErrorHandler, ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { AuthService } from \"./auth.service\";\n\n@NgModule({\n declarations: [],\n imports: [CommonModule],\n providers: []\n})\nexport class AuthModule {\n /**\n *\n * @returns ModuleWithProviders<AuthModule>\n */\n static forRoot(): ModuleWithProviders<AuthModule> {\n return {\n ngModule: AuthModule,\n providers: [AuthService]\n };\n }\n}\n","import { Injectable } from \"@angular/core\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class ConfigurationService {\n constructor() {}\n}\n","import { NsWISConfigurations } from \"../models/configurations.model\";\n\nexport const filterNavList = (\n navList: NsWISConfigurations.ISidenavLink[],\n features: NsWISConfigurations.IFeaturesMap\n): NsWISConfigurations.ISidenavLink[] => {\n return navList.filter(nav => {\n const mustHave = nav.mustHaveBasedProperty && nav.mustHaveBasedProperty.every(basedProperty => features[basedProperty]);\n const canHave = nav.canHaveBasedProperty && nav.canHaveBasedProperty.some(basedProperty => features[basedProperty]);\n if ((mustHave || canHave) && nav.children) {\n nav.children = filterNavList(nav.children, features);\n }\n return mustHave || canHave;\n });\n};\n","interface ICookieOptions {\n expires?: string;\n path?: string;\n domain?: string;\n \"Max-Age\"?: string;\n Secure?: boolean;\n HttpOnly?: boolean;\n SameSite?: \"Strict\" | \"Lax\" | \"None\";\n}\n\nexport function getCookie(name: string): string {\n const cookies = {};\n const cookieString = document.cookie;\n cookieString.split(\"; \").forEach(cookie => {\n const [key, value] = cookie.split(\"=\");\n cookies[key] = value;\n });\n return cookies[name] || undefined;\n}\n\nexport function setCookie(name: string, value: string, options?: ICookieOptions): void {\n let cookieStr = `${name}=${value};`;\n if (options) {\n const optsSelected = Object.keys(options);\n for (const opt of optsSelected) {\n cookieStr += ` ${opt}${(typeof options[opt] === \"string\" && `=${options[opt]}`) || \"\"};`;\n }\n }\n cookieStr += \";secure; SameSite=Strict;\";\n document.cookie = cookieStr;\n}\n\nexport function removeCookie(name: string, domain?: string): void {\n setCookie(name, \"\", { expires: new Date(0).toUTCString(), domain });\n}\n","export function getQueryParam(queryString: string): string | null {\n const results = new RegExp(\"[?&]\" + queryString + \"=([^&#]*)\").exec(window.location.href);\n if (results === null) {\n return null;\n } else {\n return decodeURIComponent(results[1]) || null;\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { HttpErrorResponse, HttpHandler, HttpInterceptor, HttpRequest } from \"@angular/common/http\";\nimport { tap } from \"rxjs/operators\";\nimport { ToastService } from \"mis-crystal-design-system/toast\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { getCookie } from \"../functions/cookie.function\";\nimport { getQueryParam } from \"../functions/url.functions\";\n\nconst TOKEN_NAME = \"x-wis-token\";\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n constructor(private route: ActivatedRoute, private toast: ToastService) {}\n\n intercept(request: HttpRequest<any>, next: HttpHandler) {\n const paramsMap = this.route.snapshot.queryParamMap;\n const buid = getQueryParam(\"buid\") || getQueryParam(\"buId\") || \"\";\n const empGuid = getQueryParam(\"empGuid\") || getQueryParam(\"empGuId\") || getQueryParam(\"userId\") || \"\";\n // const source = getQueryParam(\"source\");\n const authToken = getQueryParam(\"auth-token\");\n const token = getCookie(`sso-wis-token-${buid}`);\n const mobile_app_token = getCookie(TOKEN_NAME);\n const cloneReq = request.clone({\n setHeaders: {\n \"x-tenant-id\": buid,\n \"x-user-id\": empGuid,\n ...(!!token && { [TOKEN_NAME]: token }),\n ...(!!authToken && { [TOKEN_NAME]: authToken }),\n ...(!!mobile_app_token && { [TOKEN_NAME]: mobile_app_token })\n }\n });\n return next.handle(cloneReq).pipe(\n tap(\n () => {},\n err => {\n if (err instanceof HttpErrorResponse && err.status === 401) {\n this.toast.displayMsg(\"Your session has expired. Please login again.\",6000);\n }\n }\n )\n );\n }\n}\n","import { Component, OnInit } from \"@angular/core\";\n\n@Component({\n selector: \"mis-common-loader\",\n templateUrl: \"./loader.component.html\",\n styleUrls: [\"./loader.component.scss\"]\n})\nexport class LoaderComponent implements OnInit {\n message: string;\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<div class=\"message-wrapper\" *ngIf=\"message; else noMessageLoader\">\n <span><mis-loader type=\"block\"></mis-loader></span>\n <p>{{ message }}</p>\n</div>\n<ng-template #noMessageLoader>\n <mis-loader></mis-loader>\n</ng-template>\n","/** @format */\n\nimport { GlobalPositionStrategy, Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { Injectable } from \"@angular/core\";\nimport { LoaderComponent } from \"../components/loader/loader.component\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class LoaderService {\n private overlayRef: OverlayRef;\n public loading = false;\n\n constructor(private overlay: Overlay) {}\n\n show(message?: string): void {\n this.loading = true;\n if (this.overlayRef?.hasAttached()) {\n return;\n }\n const { positionStrategy, width, backdropClass, hasMessage } = this.calcLoaderProperties(!!message);\n const config = new OverlayConfig({\n hasBackdrop: true,\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n width,\n backdropClass\n });\n this.overlayRef = this.overlay.create(config);\n const portal = new ComponentPortal(LoaderComponent, null);\n const componentRef = this.overlayRef.attach(portal);\n if (hasMessage) {\n componentRef.instance.message = message;\n }\n }\n\n hide(): void {\n this.loading = false;\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n }\n\n private calcLoaderProperties(hasMessage: boolean): {\n positionStrategy: GlobalPositionStrategy;\n width: string;\n backdropClass: string;\n hasMessage: boolean;\n } {\n const positionStrategy = this.overlay.position().global();\n let width = \"100vh\";\n let backdropClass = \"cdk-overlay-transparent-backdrop\";\n if (hasMessage) {\n width = \"initial\";\n backdropClass = \"wis-common-loader-bg\";\n positionStrategy.centerHorizontally().centerVertically();\n } else {\n positionStrategy.top(\"0px\").right(\"0px\");\n }\n return { positionStrategy, width, backdropClass, hasMessage };\n }\n}\n","/** @format */\n\nexport const CONSTANTS_LOGGER = {\n APP_NAME: \"wisLoggerApp\",\n ENV_VAR: \"wisLoggerEnv\"\n};\n","import { TEnvName } from \"./logger.model\";\nconst envMap = {\n dev: \"https://bff.devcl.moveinsync.com\",\n qa: \"https://bff.stage.moveinsync.com\",\n production: \"https://bff.moveinsync.com\",\n uat: \"https://wisbff-uat.moveinsync.com\",\n \"production-green\": \"https://wisempweb-green.moveinsync.com\",\n \"production-beta\": \"https://bff-beta.moveinsync.com\",\n \"production-eu\": \"https://bff.eu.moveinsync.com\",\n \"production-eu-green\": \"https://bff-green.eu.moveinsync.com\",\n \"production-mu\": \"https://bff.moveinsync.in\"\n};\nexport function environmentHandler(env: TEnvName) {\n if (!env) {\n return \"/bff\";\n }\n return envMap[env];\n}\n","import { TEnvName } from \"./logger.model\";\nimport { CONSTANTS_LOGGER } from \"./logger.constant\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { environmentHandler } from \"./logger.functions\";\n@Injectable({\n providedIn: \"root\"\n})\nexport class LoggerService {\n private cookies: boolean = false;\n\n constructor(\n private http: HttpClient,\n @Inject(CONSTANTS_LOGGER.APP_NAME) private appName: string,\n @Inject(CONSTANTS_LOGGER.ENV_VAR) private appEnv: TEnvName\n ) {}\n\n useCookies(useCookies: boolean) {\n this.cookies = useCookies;\n }\n\n private logRequest(data: any, logLevel: \"info\" | \"error\" | \"warn\") {\n const request = {\n data,\n cookies: this.cookies ? document.cookie : undefined,\n logLevel\n };\n this.postLog(request);\n }\n\n private postLog(request) {\n const url = `${environmentHandler(this.appEnv)}/report-log/${this.appName}`;\n this.http.post(`${url}`, request).subscribe();\n }\n\n info(data: any) {\n this.logRequest(data, \"info\");\n }\n\n warn(data: any) {\n this.logRequest(data, \"warn\");\n }\n\n error(data: any, componentName: string, serviceUrl?: string) {\n this.logRequest({ ...data, componentName, serviceUrl }, \"error\");\n }\n}\n","import { CONSTANTS_LOGGER } from \"./logger.constant\";\nimport { ErrorHandler, ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { LoggerService } from \"./logger.service\";\nimport { TEnvName } from \"./logger.model\";\n\n@NgModule({\n declarations: [],\n imports: [CommonModule],\n providers: []\n})\nexport class LoggerModule {\n /**\n *\n * @param appName any app name eg. FAQ, Floor Plan, In App Popup, etc.\n * @param env \"dev\" | \"qa\" | \"uat\" | \"prod\" | \"prod-beta\" | \"prod-green\" | \"prod-eu\" | \"prod-eu-green\" | undefined\n * @returns ModuleWithProviders<LoggerModule>\n */\n static forChild(appName: string, env?: TEnvName): ModuleWithProviders<LoggerModule> {\n return {\n ngModule: LoggerModule,\n providers: [\n {\n provide: CONSTANTS_LOGGER.APP_NAME,\n useValue: appName\n },\n {\n provide: CONSTANTS_LOGGER.ENV_VAR,\n useValue: env\n },\n LoggerService\n ]\n };\n }\n}\n","/** @format */\n\nexport const CONSTANTS_WIS_COMMON = {\n ENV_VAR: \"wisCommonEnvironment\"\n};\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { map, Observable } from \"rxjs\";\nimport { CONSTANTS_WIS_COMMON } from \"../constants/emp-web-exp.constants\";\nimport { NsWISConfigurations } from \"../models/configurations.model\";\nimport { NsWISCommon } from \"../models/env.model\";\nimport { AuthService } from \"../modules/auth/auth.service\";\n\nconst API_URLS = {\n CONFIGURATIONS: \"configurations\"\n};\n\n@Injectable()\nexport class HttpService {\n constructor(@Inject(CONSTANTS_WIS_COMMON) public env: NsWISCommon.IEnv, private http: HttpClient) {}\n\n getProperties(Porperties: string[]) {\n return this.http.get(`${this.env.ets}/ets/apis/properties/${Porperties.join(\",\")}`).pipe(\n map((res: any) => {\n return res.reduce((acc: any, item: any) => {\n acc[item.propertyName] = item.propertyValue === \"true\" ? true : item.propertyValue === \"false\" ? false : item.propertyValue;\n return acc;\n }, {});\n })\n );\n }\n\n getOffices(nonce) {\n const body = `CSRF_NONCE=${nonce}&method=getOfficeList`;\n return this.http.post(`${this.env.ets}/Locality_Servlet`, body, { headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" } });\n }\n\n listTransportLocalities(nonce) {\n const body = `CSRF_NONCE=${nonce}&method=listTransportLocalities`;\n return this.http.post(`${this.env.ets}/Locality_Servlet`, body, { headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" } });\n }\n\n createEmptyIrregularTripSheet(nonce: string, direction: string): Observable<any> {\n const body = `CSRF_NONCE=${nonce}&method=createEmptyIrregularTripSheet&direction=${direction}`;\n return this.http.post(`${this.env.ets}/Tripsheet_Edit_Servlet`, body, { headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" } });\n }\n\n addEmployeeToTripSheet(\n nonce: string,\n params: {\n tripsheet: any;\n employee: any;\n pickupLoc: any;\n dropLoc: any;\n pickUpTime: string;\n dropTime: string;\n position: number;\n routeSource?: string;\n assetList?: any;\n }\n ): Observable<any> {\n const body = `CSRF_NONCE=${nonce}&method=addEmployeeToTripSheet&tripsheet=${encodeURIComponent(\n JSON.stringify(params.tripsheet)\n )}&employee=${encodeURIComponent(JSON.stringify(params.employee))}&pickupLoc=${encodeURIComponent(\n JSON.stringify(params.pickupLoc)\n )}&dropLoc=${encodeURIComponent(JSON.stringify(params.dropLoc))}&pickUpTime=\"${params.pickUpTime}\"&dropTime=\"${params.dropTime}\"&position=${\n params.position\n }${params.routeSource ? \"&routeSource=\" + params.routeSource : \"\"}${\n params.assetList ? \"&assetList=\" + encodeURIComponent(JSON.stringify(params.assetList)) : \"\"\n }`;\n return this.http.post(`${this.env.ets}/Tripsheet_Edit_Servlet`, body, { headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" } });\n }\n}\n","import { Component, OnInit } from \"@angular/core\";\n\n@Component({\n selector: \"wis-common-sidenav\",\n templateUrl: \"./sidenav.component.html\",\n styleUrls: [\"./sidenav.component.scss\"]\n})\nexport class SidenavComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<div class=\"wis-sidenav-wrapper\">\n <div class=\"wis-sidenav-header\">\n <div class=\"wis-sidenav-header-logo\">\n <img src=\"assets/sidenav/assets/Wis-icon.svg\" alt=\"\" />\n </div>\n <div class=\"wis-sidenav-header-title\">\n <h1>WIS</h1>\n </div>\n </div>\n <div class=\"wis-sidenav-body\">\n <div class=\"wis-sidenav-body-item\">\n <div class=\"wis-sidenav-body-item-icon\">\n <i class=\"fas fa-home\"></i>\n </div>\n <div class=\"wis-sidenav-body-item-text\">\n <h3>Home</h3>\n </div>\n </div>\n <div class=\"wis-sidenav-body-item\">\n <div class=\"wis-sidenav-body-item-icon\">\n <i class=\"fas fa-user\"></i>\n </div>\n <div class=\"wis-sidenav-body-item-text\">\n <h3>Profile</h3>\n </div>\n </div>\n <div class=\"wis-sidenav-body-item\">\n <div class=\"wis-sidenav-body-item-icon\">\n <i class=\"fas fa-users\"></i>\n </div>\n <div class=\"wis-sidenav-body-item-text\">\n <h3>Users</h3>\n </div>\n </div>\n <div class=\"wis-sidenav-body-item\">\n <div class=\"wis-sidenav-body-item-icon\">\n <i class=\"fas fa-cog\"></i>\n </div>\n <div class=\"wis-sidenav-body-item-text\">\n <h3>Settings</h3>\n </div>\n </div>\n </div>\n</div>\n","/** @format */\n\nexport const CONSTANTS_ASSETS_WIS_COMMON = {\n IMAGES: {\n CALENDAR_ICON: \"assets/libraries/wis-common/calendar.svg\"\n },\n ICONS: {}\n};\n","import { Component, Inject, OnInit } from \"@angular/core\";\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\nimport dayjs from \"dayjs\";\nimport customParseFormat from \"dayjs/plugin/customParseFormat\";\nimport { IDatePickerConfig } from \"mis-crystal-design-system/datepicker_v2\";\nimport { CONSTANTS_ASSETS_WIS_COMMON } from \"../../constants/assets.constants\";\nimport { HttpService } from \"../../services/http.service\";\nimport { DropdownItem } from \"mis-crystal-design-system/dropdown\";\nimport { forkJoin } from \"rxjs\";\nimport { finalize } from \"rxjs/operators\";\nimport { MODAL_DATA_VAR, ModalRef } from \"mis-crystal-design-system/modal\";\nimport { ToastService } from \"mis-crystal-design-system/toast\";\n\ndayjs.extend(customParseFormat);\n\nconst PROPERTIES = [\"NON_SHIFT_TRIPS_CATEGORIES\", \"USE_VALID_OFFICE_FOR_IRREGULAR_TRIPS\"];\nconst DATE_FORMAT = \"DD/MM/YYYY\";\nconst PICKUP_TIME_FORMAT = \"DD/MM/YYYY HH/mm/ss\";\n\ninterface LocationValue {\n type: number;\n office: any | null;\n}\n\ninterface LocationDropdownItem {\n label: string;\n value: LocationValue;\n}\n\n@Component({\n selector: \"app-create-non-shift-modal\",\n templateUrl: \"./create-non-shift-modal.component.html\",\n styleUrls: [\"./create-non-shift-modal.component.scss\"]\n})\nexport class CreateNonShiftModalComponent implements OnInit {\n CONSTANTS_ASSETS_WIS_COMMON = CONSTANTS_ASSETS_WIS_COMMON;\n\n dateConfig: Partial<IDatePickerConfig> = {\n minDate: dayjs().format(DATE_FORMAT),\n format: DATE_FORMAT\n };\n createTripsheetForm!: FormGroup;\n offices: DropdownItem[] = [];\n\n locationDropdownData: LocationDropdownItem[] = [];\n\n categoryDropdownData: DropdownItem[] = [];\n\n hoursDropdownData: DropdownItem[] = [];\n\n minutesDropdownData: DropdownItem[] = [];\n\n showOtherAddress: boolean = false;\n\n loading: boolean = false;\n isSubmitting: boolean = false;\n\n readonly TYPE_OFFICE = 6;\n readonly TYPE_TRANSPORT = 3;\n readonly TYPE_OTHER = 4;\n properties: Record<string, any> = {};\n\n constructor(@Inject(MODAL_DATA_VAR) public modalData: any, private modalRef: ModalRef, private fb: FormBuilder, private http: HttpService,private toast: ToastService) {}\n\n ngOnInit(): void {\n this.loading = true;\n\n const $office = this.http.getOffices(this.modalData.nonce);\n const $properties = this.http.getProperties(PROPERTIES);\n\n forkJoin([$office, $properties])\n .pipe(finalize(() => (this.loading = false)))\n .subscribe({\n next: ([offices, properties]) => {\n this.properties = properties;\n this.initializeForm();\n this.initializeDropdownData(offices);\n this.setupFormListeners();\n },\n error: error => {\n console.error(\"Error loading form data:\", error);\n this.modalRef.close();\n }\n });\n }\n\n private initializeForm(): void {\n const currentTime = this.modalData?.date ?? dayjs().format(DATE_FORMAT);\n\n this.createTripsheetForm = this.fb.group({\n direction: [this.modalData?.shiftType === \"logout\" ? \"OUT\" : \"IN\", Validators.required],\n location: [{ label: \"\", value: \"\" }],\n otherAddress: \"\",\n tripCategory: [{ label: \"\", value: \"\" }],\n date: [currentTime, Validators.required],\n hours: [{ label: \"\", value: \"\" }],\n mins: [{ label: \"\", value: \"\" }]\n });\n }\n\n private initializeDropdownData(offices: any): void {\n this.locationDropdownData = offices.map(\n (office: any): LocationDropdownItem => ({\n label: office.address,\n value: { type: this.TYPE_OFFICE, office: office || null }\n })\n );\n this.createTripsheetForm.get(\"location\")?.setValue(this.locationDropdownData[0]);\n\n if (!this.properties?.[\"USE_VALID_OFFICE_FOR_IRREGULAR_TRIPS\"]) {\n this.locationDropdownData.push(\n { label: \"Airport\", value: { type: this.TYPE_TRANSPORT, office: null } } as LocationDropdownItem,\n { label: \"Other\", value: { type: this.TYPE_OTHER, office: null } } as LocationDropdownItem\n );\n }\n\n // Initialize category dropdown\n const categoriesString = this.properties?.[\"NON_SHIFT_TRIPS_CATEGORIES\"];\n if (categoriesString && typeof categoriesString === \"string\") {\n const categories = categoriesString.split(\",\").filter(cat => cat && cat.trim());\n if (categories.length > 0) {\n this.categoryDropdownData = categories.map(category => ({\n label: category.trim(),\n value: category.trim()\n }));\n }\n }\n\n const currentHour = new Date().getHours();\n this.hoursDropdownData = Array.from({ length: 24 }, (_, i) => ({\n label: this.padZero(i),\n value: this.padZero(i)\n }));\n this.createTripsheetForm.patchValue({ hours: this.hoursDropdownData[currentHour] });\n\n const currentMinute = new Date().getMinutes();\n this.minutesDropdownData = Array.from({ length: 60 }, (_, i) => ({\n label: this.padZero(i),\n value: this.padZero(i)\n }));\n this.createTripsheetForm.patchValue({ mins: this.minutesDropdownData[currentMinute] });\n }\n\n private setupFormListeners(): void {\n this.createTripsheetForm?.valueChanges.subscribe(value => {\n const { location } = this.createTripsheetForm?.value;\n if (this.showOtherAddress !== (location?.value?.type === this.TYPE_OTHER)) {\n this.showOtherAddress = location?.value?.type === this.TYPE_OTHER;\n if (this.showOtherAddress) {\n this.createTripsheetForm.get(\"otherAddress\")?.setValidators([Validators.required]);\n } else {\n this.createTripsheetForm.get(\"otherAddress\")?.clearValidators();\n }\n this.createTripsheetForm.get(\"otherAddress\")?.updateValueAndValidity();\n }\n });\n }\n\n private padZero(num: number): string {\n return num.toString().padStart(2, \"0\");\n }\n\n onCancel(): void {\n this.modalRef.close();\n }\n\n onSubmit(): void {\n if (this.createTripsheetForm.invalid) {\n return;\n }\n\n const formValue = this.createTripsheetForm.value;\n\n const pickupTime = `${formValue.date} ${formValue.hours.value}/${formValue.mins.value}/00`;\n const pickupTimeDate = dayjs(pickupTime, PICKUP_TIME_FORMAT).toDate();\n if (this.isDateAndTimeFromPast(pickupTimeDate)) {\n this.toast.displayMsg(\"Please select a future date and time.\");\n return;\n }\n\n if (this.categoryDropdownData.length > 0 && (!formValue.tripCategory || !formValue.tripCategory.value)) {\n this.toast.displayMsg(\"Please provide a trip category.\");\n return;\n }\n\n if (formValue.location?.value?.type === this.TYPE_OTHER) {\n if (!formValue.otherAddress || formValue.otherAddress.trim() === \"\") {\n this.toast.displayMsg(\"Please provide the address.\");\n return;\n }\n if (formValue.otherAddress.includes(\",\")) {\n this.toast.displayMsg(\"Special character (,) not allowed in address.\");\n return;\n }\n }\n\n this.isSubmitting = true;\n\n this.http.createEmptyIrregularTripSheet(this.modalData.nonce, formValue.direction).subscribe({\n next: routeTripSheet => {\n const pickupLoc = routeTripSheet.dir === \"IN\" ? this.modalData.employee.home : this.getLocation(formValue);\n const dropLoc = routeTripSheet.dir === \"OUT\" ? this.modalData.employee.home : this.getLocation(formValue);\n const pickupTimeFormatted = pickupTime;\n const dropTimeFormatted = pickupTime;\n\n const employee = { ...this.modalData.employee, employee_status: 1 };\n\n const addEmployeeParams = {\n tripsheet: routeTripSheet,\n employee: employee,\n pickupLoc: pickupLoc,\n dropLoc: dropLoc,\n pickUpTime: pickupTimeFormatted,\n dropTime: dropTimeFormatted,\n position: 0,\n routeSource: this.modalData.routeSource,\n assetList: this.modalData.assetList\n };\n\n this.http.addEmployeeToTripSheet(this.modalData.nonce, addEmployeeParams).subscribe({\n next: updatedTripSheet => {\n if (!updatedTripSheet.customMap) {\n updatedTripSheet.customMap = {};\n }\n updatedTripSheet.customMap.tripCategory = formValue.tripCategory?.value || \"\";\n\n this.modalRef.close({\n success: true,\n tripsheet: updatedTripSheet\n });\n },\n error: error => {\n console.error(\"Error adding employee to tripsheet:\", error);\n this.toast.displayMsg(\"Failed to add employee to tripsheet. Please try again.\");\n this.isSubmitting = false;\n }\n });\n },\n error: error => {\n console.error(\"Error creating tripsheet:\", error);\n this.toast.displayMsg(\"Failed to create tripsheet. Please try again.\");\n this.isSubmitting = false;\n }\n });\n }\n\n private isDateAndTimeFromPast(date: Date): boolean {\n const now = new Date();\n return date < now;\n }\n\n private getLocation(formValue: any): any {\n const location = formValue.location?.value;\n\n if (!location) {\n return null;\n }\n\n const locType = location.type;\n\n switch (locType) {\n case this.TYPE_OFFICE:\n return location.office;\n\n case this.TYPE_TRANSPORT:\n return {\n id: null,\n type: this.TYPE_TRANSPORT,\n address: \"Airport\",\n geoCord: null\n };\n\n case this.TYPE_OTHER:\n return {\n ...location.office,\n address: formValue.otherAddress || \"\"\n };\n }\n }\n}\n","<div class=\"createTripsheet\">\n <h2 class=\"modal-header\">Create Non-Shift Tripsheet</h2>\n\n <div *ngIf=\"loading\" class=\"loading-container\">\n <div class=\"spinner\"></div>\n <p>Loading...</p>\n </div>\n\n <form\n *ngIf=\"!loading && createTripsheetForm\"\n [formGroup]=\"createTripsheetForm\"\n (ngSubmit)=\"onSubmit()\"\n class=\"createTripsheetForm\"\n id=\"createTripsheetForm\"\n >\n <div class=\"form-content\">\n <!-- Radio buttons row -->\n <div [ngClass]=\"{ 'radio-row': true, disabled: modalData?.shiftSelectionDisabled }\">\n <label class=\"radio-label\">\n <input class=\"modern-checkbox\" type=\"radio\" formControlName=\"direction\" value=\"OUT\" id=\"startLoc\" />\n <span>Start Location Fixed (Logout)</span>\n </label>\n <label class=\"radio-label\">\n <input class=\"modern-checkbox\" type=\"radio\" formControlName=\"direction\" value=\"IN\" id=\"endLoc\" />\n <span>End Location Fixed (Login)</span>\n </label>\n </div>\n\n <!-- Location field -->\n <div class=\"form-field\">\n <div class=\"label-cell\">\n <label class=\"locText\">Location</label>\n </div>\n <div class=\"input-cell\">\n <mis-dropdown\n [searchEnabled]=\"true\"\n [width]=\"'100%'\"\n [height]=\"'40px'\"\n [data]=\"locationDropdownData\"\n [selectedItem]=\"createTripsheetForm.get('location')?.value\"\n [label]=\"'Select location...'\"\n (onChange)=\"createTripsheetForm.get('location')?.setValue($event)\"\n ></mis-dropdown>\n </div>\n </div>\n\n <!-- Other address field -->\n <div class=\"form-field otherAddress\" *ngIf=\"showOtherAddress\">\n <div class=\"label-cell\">\n <label>Pick/Drop point <sup>*</sup></label>\n </div>\n <div class=\"input-cell\">\n <input type=\"text\" formControlName=\"otherAddress\" class=\"modern-input\" />\n </div>\n </div>\n\n <!-- Trip category field -->\n <div class=\"form-field\" *ngIf=\"categoryDropdownData.length > 0\">\n <div class=\"label-cell\">\n <label>Trip Category</label>\n </div>\n <div class=\"input-cell\">\n <mis-dropdown\n [searchEnabled]=\"false\"\n [width]=\"'250px'\"\n [height]=\"'40px'\"\n [data]=\"categoryDropdownData\"\n [selectedItem]=\"createTripsheetForm.get('tripCategory')?.value\"\n [label]=\"'Select category...'\"\n (onChange)=\"createTripsheetForm.get('tripCategory')?.setValue($event)\"\n ></mis-dropdown>\n </div>\n </div>\n\n <!-- Time field -->\n <div class=\"form-field\">\n <div class=\"label-cell\">\n <label class=\"fixedTimeText\">Time</label>\n </div>\n <div class=\"input-cell modern-date-container\">\n <div class=\"date-select\">\n <input\n misTzDp\n readonly\n [dpConfig]=\"dateConfig\"\n [formControl]=\"createTripsheetForm.get('date')\"\n style=\"height: 44px !important; font-size: 16px !important; cursor: pointer; vertical-align: middle !important\"\n />\n <img [src]=\"CONSTANTS_ASSETS_WIS_COMMON.IMAGES.CALENDAR_ICON\" alt=\"Calendar Icon\" class=\"date-icon data-picker-icon\" />\n </div>\n\n <mis-dropdown\n [searchEnabled]=\"false\"\n [width]=\"'5rem'\"\n [height]=\"'40px'\"\n [data]=\"hoursDropdownData\"\n [selectedItem]=\"createTripsheetForm.get('hours')?.value\"\n [label]=\"'HH'\"\n (onChange)=\"createTripsheetForm.get('hours')?.setValue($event)\"\n ></mis-dropdown>\n\n <mis-dropdown\n [searchEnabled]=\"false\"\n [width]=\"'5rem'\"\n [height]=\"'40px'\"\n [data]=\"minutesDropdownData\"\n [selectedItem]=\"createTripsheetForm.get('mins')?.value\"\n [label]=\"'MM'\"\n (onChange)=\"createTripsheetForm.get('mins')?.setValue($event)\"\n ></mis-dropdown>\n </div>\n </div>\n </div>\n\n <div class=\"form-actions\">\n <button mis-button type=\"outline\" (click)=\"onCancel()\" [disabled]=\"isSubmitting\">Cancel</button>\n <button mis-button type=\"primary\" [disabled]=\"isSubmitting || createTripsheetForm?.invalid\">\n {{ isSubmitting ? \"Creating...\" : \"Create\" }}\n </button>\n </div>\n </form>\n</div>\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { ConfigurationService } from \"./services/configuration.service\";\nimport { NsWISCommon } from \"./models/env.model\";\nimport { CONSTANTS_WIS_COMMON } from \"./constants/emp-web-exp.constants\";\nimport { HttpService } from \"./services/http.service\";\nimport { LoaderModule } from \"mis-crystal-design-system/loader\";\nimport { LoaderComponent } from \"./components/loader/loader.component\";\nimport { LoaderService } from \"./services/loader.service\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { SidenavComponent } from \"./components/sidenav/sidenav.component\";\nimport { CreateNonShiftModalComponent } from \"./components/create-non-shift-modal/create-non-shift-modal.component\";\nimport { DropdownModule } from \"mis-crystal-design-system/dropdown\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { DatepickerModuleV2 } from \"mis-crystal-design-system/datepicker_v2\";\nimport { HttpClientModule } from \"@angular/common/http\";\n\n@NgModule({\n declarations: [LoaderComponent, SidenavComponent, CreateNonShiftModalComponent],\n imports: [CommonModule, HttpClientModule, OverlayModule, LoaderModule, DropdownModule, ReactiveFormsModule, DatepickerModuleV2,],\n providers: [],\n exports: [SidenavComponent, CreateNonShiftModalComponent]\n})\nexport class WisCommonModule {\n static forRoot(env: NsWISCommon.IEnv): ModuleWithProviders<WisCommonModule> {\n return {\n ngModule: WisCommonModule,\n providers: [HttpService,{ provide: CONSTANTS_WIS_COMMON, useValue: env }, ConfigurationService, LoaderService]\n };\n }\n}\n","import { ReplaySubject } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { NsWISConfigurations } from \"../models/configurations.model\";\n@Injectable({\n providedIn: 'root'\n})\nexport class MfeCommunicationService {\n private _etsLoginUser: NsWISConfigurations.ILoginUserDetails;\n\n setUserDetails(userDetails: NsWISConfigurations.ILoginUserDetails): void {\n this._etsLoginUser = userDetails;\n }\n\n getUserDetails(): NsWISConfigurations.ILoginUserDetails {\n return this._etsLoginUser;\n }\n\n constructor() { }\n loginDetails = new ReplaySubject<NsWISConfigurations.IMfeCommunication>(1);\n employeeExperience = new ReplaySubject<NsWISConfigurations.IMfeCommunication>(1);\n floorPlan = new ReplaySubject<NsWISConfigurations.IMfeCommunication>(1);\n meetingRooms = new ReplaySubject<NsWISConfigurations.IMfeCommunication>(1);\n adminUI = new ReplaySubject<NsWISConfigurations.IMfeCommunication>(1);\n paymentsDetails = new ReplaySubject<NsWISConfigurations.IMfeCommunication>(1); \n visitorMgmt = new ReplaySubject<NsWISConfigurations.IMfeCommunication>(1);\n}\n","export abstract class SessionError extends Error {}\n\nexport class SessionTokenNotFoundError extends SessionError {\n constructor() {\n super('Session token was not found.');\n this.name = 'SessionTokenNotFoundError';\n }\n}\n\nexport class SessionTokenExpiredError extends SessionError {\n constructor() {\n super('Session token has expired.');\n this.name = 'SessionTokenExpiredError';\n }\n}\n\nexport class SessionTokenInvalidError extends SessionError {\n constructor() {\n super('Session token could not be decoded.');\n this.name = 'SessionTokenInvalidError';\n }\n}\n\nexport class SessionClaimNotFoundError extends SessionError {\n constructor(public readonly claim: string) {\n super(`Session claim \"${claim}\" was not found in the token.`);\n this.name = 'SessionClaimNotFoundError';\n }\n}\n\nexport type SessionClaimFailureReason = 'absent' | 'blank';\n\nexport interface ISessionClaimFailure {\n claim: string;\n reason: SessionClaimFailureReason;\n}\n\n/** Renders failures as `claim (reason), claim (reason)` for error messages. */\nexport function describeClaimFailures(failures: ISessionClaimFailure[]): string {\n return failures.map(f => `${f.claim} (${f.reason})`).join(', ');\n}\n\n/**\n * Every claim `run`'s `next` failed to read, reported once after the block has finished.\n * Extends `SessionClaimNotFoundError` — and reports the first failure as `claim` — so handlers\n * written against the single-claim error keep working.\n */\nexport class SessionClaimsMissingError extends SessionClaimNotFoundError {\n constructor(public readonly failures: ISessionClaimFailure[]) {\n super(failures[0].claim);\n this.name = 'SessionClaimsMissingError';\n this.message = `Session claims not found: ${describeClaimFailures(failures)}.`;\n }\n}\n","import { Injectable } from '@angular/core';\nimport jwtDecode from 'jwt-decode';\n\nimport { getCookie } from '../functions/cookie.function';\nimport { getQueryParam } from '../functions/url.functions';\nimport { NsSession } from '../models/session.model';\nimport {\n describeClaimFailures,\n ISessionClaimFailure,\n SessionClaimFailureReason,\n SessionClaimNotFoundError,\n SessionClaimsMissingError,\n SessionError,\n SessionTokenExpiredError,\n SessionTokenInvalidError,\n SessionTokenNotFoundError,\n} from './session.errors';\n\nconst DEFAULT_SESSION_TOKEN_PREFIX = 'sso-wis-token';\nconst DEFAULT_SESSION_TOKEN_FALLBACK_KEY = 'x-wis-token';\nconst DEFAULT_VET_TOKEN_PREFIX = 'x-vet-token';\nconst LAUNCH_SOURCE_VET = 'VET';\n\n/** The accessors that read a single claim, and so can come back `undefined` inside `run`. */\ntype ClaimAccessor =\n | 'sub'\n | 'empGuid'\n | 'employeeId'\n | 'internalSsoRole'\n | 'roles'\n | 'sessionId'\n | 'loggedInUser'\n | 'exp'\n | 'iat'\n | 'businessUnitId'\n | 'allowedBuids'\n | 'vetUserEmailId'\n | 'vetUserId'\n | 'source'\n | 'roleId';\n\n/**\n * The session as seen inside `run`'s `next`. `run` collects missing claims instead of throwing\n * so the block always completes, which means any claim accessor may yield `undefined`.\n * Outside `run` — direct access, or `read` — the accessors still throw and stay non-optional.\n */\nexport type PartialSession = Omit<SessionService, ClaimAccessor> & {\n readonly [K in ClaimAccessor]: SessionService[K] | undefined;\n};\n\ntype SessionState =\n | { status: 'ok'; claims: NsSession.IClaims; isVET: boolean }\n | { status: 'not-found'; isVET: boolean }\n | { status: 'expired'; isVET: boolean }\n | { status: 'invalid'; isVET: boolean };\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SessionService {\n private config: NsSession.IInitConfig = {};\n private cachedToken: string | null = null;\n private cachedState: SessionState | null = null;\n private collecting: ISessionClaimFailure[] | null = null;\n\n init(config: NsSession.IInitConfig): void {\n this.config = { ...config };\n this.cachedToken = null;\n this.cachedState = null;\n }\n\n /**\n * Runs `handlers.next` and returns its result, or `handlers.error(error)` if it throws a `SessionError`.\n * Centralizes the try/catch mechanics; the caller still supplies the actual handling logic.\n */\n read<T>(handlers: { next: (session: SessionService) => T; error: (error: SessionError) => T }): T {\n try {\n return handlers.next(this);\n } catch (e) {\n if (e instanceof SessionError) {\n return handlers.error(e);\n }\n throw e;\n }\n }\n\n /**\n * Statement-style variant of `read` for blocks of assignments/side effects with no return value.\n *\n * `next` always runs to completion: a claim that is absent or blank yields `undefined` instead of\n * throwing, and every such failure is reported once afterwards via `handlers.error`, as a\n * `SessionClaimsMissingError` listing all of them. An unusable token (missing, expired,\n * undecodable) still aborts `next` immediately with the matching `SessionError`.\n *\n * Collecting covers the synchronous body of `next` only — claim reads deferred into a subscription,\n * timeout or promise run after it has returned and throw as usual.\n *\n * An error `next` throws for any other reason propagates untouched, except that any claims missing\n * at the time are appended to its message and attached as `sessionClaimFailures` — a collected\n * `undefined` reaching the block is the usual cause, and that is the part worth knowing.\n */\n run(handlers: { next: (session: PartialSession) => void; error: (error: SessionError) => void }): void {\n const failures: ISessionClaimFailure[] = [];\n const previous = this.collecting;\n this.collecting = failures;\n try {\n handlers.next(this);\n } catch (e) {\n if (e instanceof SessionError) {\n handlers.error(e);\n return;\n }\n if (failures.length && e instanceof Error) {\n (e as Error & { sessionClaimFailures?: ISessionClaimFailure[] }).sessionClaimFailures = failures;\n e.message = `${e.message} — session claims missing during run(): ${describeClaimFailures(failures)}`;\n }\n throw e;\n } finally {\n this.collecting = previous;\n }\n if (failures.length) {\n handlers.error(new SessionClaimsMissingError(failures));\n }\n }\n\n get isVET(): boolean {\n return this.state.isVET;\n }\n\n get sub(): string { return this.getClaim('sub'); }\n get empGuid(): string { return this.getClaim('employeeGUID'); }\n get employeeId(): string { return this.getClaim('employeeId'); }\n get internalSsoRole(): string { return this.getClaim('internal_sso_role'); }\n get roles(): string[] { return this.getClaim('roles'); }\n get sessionId(): string { return this.getClaim('sessionId'); }\n get loggedInUser(): string { return this.getClaim('loggedInUser'); }\n get exp(): number { return this.getClaim('exp'); }\n get iat(): number { return this.getClaim('iat'); }\n get businessUnitId(): string { return this.getClaim('businessUnitId'); }\n get allowedBuids(): string[] { return this.getClaim('ALLOWED_BUIDS'); }\n get vetUserEmailId(): string { return this.getClaim('vetUserEmailId'); }\n get vetUserId(): number { return this.getClaim('vetUserId'); }\n get source(): string { return this.getClaim('source'); }\n\n get roleId(): number {\n const raw = this.resolveRole(this.getClaims());\n if (!raw) {\n return this.missingClaim('roleId', 'absent');\n }\n return Number(raw);\n }\n\n /** First numeric role in `internal_sso_role` then `roles`, or `''` when the token carries none. */\n private resolveRole(claims: NsSession.IClaims): string {\n const candidates = [claims.internal_sso_role, ...(claims.roles ?? [])];\n return candidates\n .map(value => value?.trim())\n .find(value => this.isDigitsOnly(value)) ?? '';\n }\n\n private isDigitsOnly(value: string | undefined): value is string {\n return !!value && /^\\d+$/.test(value);\n }\n\n private getClaims(): NsSession.IClaims {\n const state = this.state;\n if (state.status === 'ok') {\n return state.claims;\n }\n if (state.status === 'not-found') {\n throw new SessionTokenNotFoundError();\n }\n if (state.status === 'expired') {\n throw new SessionTokenExpiredError();\n }\n throw new SessionTokenInvalidError();\n }\n\n private getClaim<K extends keyof NsSession.IClaims>(key: K): NonNullable<NsSession.IClaims[K]> {\n const claims = this.getClaims();\n const value = claims[key];\n const isEmptyString = typeof value === 'string' && value.trim() === '';\n if (value === undefined || value === null || isEmptyString) {\n return this.missingClaim(key as string, isEmptyString ? 'blank' : 'absent');\n }\n return (typeof value === 'string' ? value.trim() : value) as NonNullable<NsSession.IClaims[K]>;\n }\n\n /** Records the failure and yields `undefined` while `run` is collecting; throws otherwise. */\n private missingClaim(claim: string, reason: SessionClaimFailureReason): never {\n if (this.collecting) {\n this.collecting.push({ claim, reason });\n return undefined as never;\n }\n throw new SessionClaimNotFoundError(claim);\n }\n\n private get state(): SessionState {\n const { token, isVET } = this.findToken();\n if (!this.cachedState || token !== this.cachedToken) {\n this.cachedToken = token;\n this.cachedState = this.build(token, isVET);\n }\n return this.cachedState;\n }\n\n private build(token: string, isVET: boolean): SessionState {\n if (!token) {\n return { status: 'not-found', isVET };\n }\n\n let claims: NsSession.IClaims;\n try {\n claims = jwtDecode<NsSession.IClaims>(token);\n } catch {\n return { status: 'invalid', isVET };\n }\n\n if (this.isExpired(claims)) {\n return { status: 'expired', isVET };\n }\n\n return { status: 'ok', claims, isVET };\n }\n\n private isExpired(claims: NsSession.IClaims): boolean {\n return typeof claims.exp === 'number' && claims.exp * 1000 <= Date.now();\n }\n\n private isVETSource(): boolean {\n return getQueryParam('source') === LAUNCH_SOURCE_VET;\n }\n\n private resolveBuid(): string | null {\n return getQueryParam('buid') || getCookie('buid') || null;\n }\n\n private findToken(): { token: string; isVET: boolean } {\n const buid = this.resolveBuid();\n\n if (this.isVETSource()) {\n const vetKey = this.config.vetTokenCookieKey ?? (buid ? `${DEFAULT_VET_TOKEN_PREFIX}-${buid}` : null);\n const vetToken = (vetKey ? getCookie(vetKey) : '') || '';\n if (vetToken) {\n return { token: vetToken, isVET: true };\n }\n }\n\n const sessionToken = this.config.sessionTokenCookieKey\n ? getCookie(this.config.sessionTokenCookieKey)\n : (buid ? getCookie(`${DEFAULT_SESSION_TOKEN_PREFIX}-${buid}`) : '') || getCookie(DEFAULT_SESSION_TOKEN_FALLBACK_KEY);\n\n return { token: sessionToken || '', isVET: false };\n }\n}\n","/*\n * Public API Surface of wis-common\n */\n\nexport * from \"./lib/modules/auth/auth.service\";\nexport * from \"./lib/modules/auth/auth.module\";\nexport * from \"./lib/services/configuration.service\";\nexport * from \"./lib/models/configurations.model\";\nexport * from \"./lib/functions/nav-filter.function\";\nexport * from \"./lib/functions/cookie.function\";\nexport * from \"./lib/functions/url.functions\";\nexport * from \"./lib/interceptors/auth.interceptor\";\nexport * from \"./lib/services/loader.service\";\nexport * from \"./lib/modules/logger/logger.module\";\nexport * from \"./lib/modules/logger/logger.service\";\nexport * from \"./lib/wis-common.module\";\nexport * from \"./lib/modules/logger/logger.model\";\nexport * from \"./lib/components/sidenav/sidenav.component\";\nexport * from \"./lib/services/mfe-communication.service\";\nexport * from \"./lib/components/create-non-shift-modal/create-non-shift-modal.component\";\nexport * from \"./lib/services/session.service\";\nexport * from \"./lib/services/session.errors\";\nexport * from \"./lib/models/session.model\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.HttpService","i4"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { FormBuilder, FormGroup } from "@angular/forms";
3
3
  import { IDatePickerConfig } from "mis-crystal-design-system/datepicker_v2";
4
4
  import { HttpService } from "../../services/http.service";
5
5
  import { DropdownItem } from "mis-crystal-design-system/dropdown";
6
- import { ModalRef } from "mis-design-system/mis-modal";
6
+ import { ModalRef } from "mis-crystal-design-system/modal";
7
7
  import { ToastService } from "mis-crystal-design-system/toast";
8
8
  import * as i0 from "@angular/core";
9
9
  interface LocationValue {
@@ -2,6 +2,7 @@ export declare namespace NsSession {
2
2
  interface IClaims {
3
3
  sub?: string;
4
4
  employeeGUID?: string;
5
+ employeeId?: string;
5
6
  internal_sso_role?: string;
6
7
  sessionId?: string;
7
8
  loggedInUser?: string;