ngx-sp-auth 0.0.0-watch

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.
Files changed (108) hide show
  1. package/README.md +24 -0
  2. package/esm2022/lib/auth.module.mjs +87 -0
  3. package/esm2022/lib/auth.service.mjs +306 -0
  4. package/esm2022/lib/components/login/login.component.mjs +326 -0
  5. package/esm2022/lib/components/menu-lateral/dropdown/primary-dropdown/primary-dropdown.component.mjs +68 -0
  6. package/esm2022/lib/components/menu-lateral/dropdown/secondary-dropdown/secondary-dropdown.component.mjs +32 -0
  7. package/esm2022/lib/components/menu-lateral/menu/list-estab.service.mjs +55 -0
  8. package/esm2022/lib/components/menu-lateral/menu/menu-lateral.component.mjs +235 -0
  9. package/esm2022/lib/components/menu-lateral/menu/selecao-estabelecimentos-modal/selecao-estabelecimentos-modal.component.mjs +200 -0
  10. package/esm2022/lib/components/menu-lateral/menu-services.service.mjs +151 -0
  11. package/esm2022/lib/components/menu-lateral/model/iestabelecimento.model.mjs +2 -0
  12. package/esm2022/lib/components/menu-lateral/model/imenu-item-structure.model.mjs +2 -0
  13. package/esm2022/lib/components/menu-lateral/model/imenu.model.mjs +12 -0
  14. package/esm2022/lib/components/menu-lateral/model/infrausuarioimg.mjs +12 -0
  15. package/esm2022/lib/components/menu-lateral/model/isubmenu-item-structure.model.mjs +2 -0
  16. package/esm2022/lib/components/menu-lateral/model/ret-estabelecimento-session.mjs +10 -0
  17. package/esm2022/lib/components/menu-lateral/model/ret-infrausuarioemail.mjs +8 -0
  18. package/esm2022/lib/components/menu-lateral/model/ret-infrausuarioimg.mjs +11 -0
  19. package/esm2022/lib/components/menu-lateral/model/usuario-img.mjs +8 -0
  20. package/esm2022/lib/components/menu-lateral/submenus/dynamic-menu/dynamic-menu.component.mjs +54 -0
  21. package/esm2022/lib/components/menu-lateral/submenus/notif-submenu/notif-submenu.component.mjs +14 -0
  22. package/esm2022/lib/components/nova-senha/nova-senhacomponent.mjs +191 -0
  23. package/esm2022/lib/custom/custom-login.service.mjs +52 -0
  24. package/esm2022/lib/custom/custom-menu.service.mjs +88 -0
  25. package/esm2022/lib/custom/menu-config.service.mjs +70 -0
  26. package/esm2022/lib/custom/models/icustom-login-service.mjs +2 -0
  27. package/esm2022/lib/custom/models/icustom-menu-service.mjs +2 -0
  28. package/esm2022/lib/custom/models/imenu-config.mjs +2 -0
  29. package/esm2022/lib/environments/environments.service.mjs +21 -0
  30. package/esm2022/lib/environments/models/ienvironments.mjs +2 -0
  31. package/esm2022/lib/guards/auth-guard.mjs +34 -0
  32. package/esm2022/lib/guards/external-login-guard.mjs +88 -0
  33. package/esm2022/lib/guards/login-guard.mjs +35 -0
  34. package/esm2022/lib/interceptors/auth-aplic.interceptor.mjs +41 -0
  35. package/esm2022/lib/interceptors/auth-infra.interceptor.mjs +30 -0
  36. package/esm2022/lib/models/code-2fa.mjs +2 -0
  37. package/esm2022/lib/models/custom-propriedades-login.mjs +3 -0
  38. package/esm2022/lib/models/forgotten-password-form.mjs +2 -0
  39. package/esm2022/lib/models/login-form.mjs +2 -0
  40. package/esm2022/lib/models/login.mjs +2 -0
  41. package/esm2022/lib/models/nova-senha-form.mjs +2 -0
  42. package/esm2022/lib/models/password-recup.mjs +2 -0
  43. package/esm2022/lib/models/payload.mjs +2 -0
  44. package/esm2022/lib/models/ret-login.mjs +21 -0
  45. package/esm2022/lib/models/ret-token.mjs +8 -0
  46. package/esm2022/lib/models/token.mjs +2 -0
  47. package/esm2022/lib/server/ret-server-config.mjs +9 -0
  48. package/esm2022/lib/server/server.service.mjs +38 -0
  49. package/esm2022/lib/storage/auth-storage.service.mjs +409 -0
  50. package/esm2022/ngx-sp-auth.mjs +5 -0
  51. package/esm2022/public-api.mjs +37 -0
  52. package/fesm2022/ngx-sp-auth.mjs +2520 -0
  53. package/fesm2022/ngx-sp-auth.mjs.map +1 -0
  54. package/index.d.ts +5 -0
  55. package/lib/auth.module.d.ts +21 -0
  56. package/lib/auth.service.d.ts +42 -0
  57. package/lib/components/login/login.component.d.ts +67 -0
  58. package/lib/components/menu-lateral/dropdown/primary-dropdown/primary-dropdown.component.d.ts +20 -0
  59. package/lib/components/menu-lateral/dropdown/secondary-dropdown/secondary-dropdown.component.d.ts +12 -0
  60. package/lib/components/menu-lateral/menu/list-estab.service.d.ts +19 -0
  61. package/lib/components/menu-lateral/menu/menu-lateral.component.d.ts +74 -0
  62. package/lib/components/menu-lateral/menu/selecao-estabelecimentos-modal/selecao-estabelecimentos-modal.component.d.ts +71 -0
  63. package/lib/components/menu-lateral/menu-services.service.d.ts +31 -0
  64. package/lib/components/menu-lateral/model/iestabelecimento.model.d.ts +4 -0
  65. package/lib/components/menu-lateral/model/imenu-item-structure.model.d.ts +12 -0
  66. package/lib/components/menu-lateral/model/imenu.model.d.ts +40 -0
  67. package/lib/components/menu-lateral/model/infrausuarioimg.d.ts +9 -0
  68. package/lib/components/menu-lateral/model/isubmenu-item-structure.model.d.ts +9 -0
  69. package/lib/components/menu-lateral/model/ret-estabelecimento-session.d.ts +8 -0
  70. package/lib/components/menu-lateral/model/ret-infrausuarioemail.d.ts +6 -0
  71. package/lib/components/menu-lateral/model/ret-infrausuarioimg.d.ts +9 -0
  72. package/lib/components/menu-lateral/model/usuario-img.d.ts +5 -0
  73. package/lib/components/menu-lateral/submenus/dynamic-menu/dynamic-menu.component.d.ts +25 -0
  74. package/lib/components/menu-lateral/submenus/notif-submenu/notif-submenu.component.d.ts +8 -0
  75. package/lib/components/nova-senha/nova-senhacomponent.d.ts +48 -0
  76. package/lib/custom/custom-login.service.d.ts +38 -0
  77. package/lib/custom/custom-menu.service.d.ts +48 -0
  78. package/lib/custom/menu-config.service.d.ts +32 -0
  79. package/lib/custom/models/icustom-login-service.d.ts +13 -0
  80. package/lib/custom/models/icustom-menu-service.d.ts +10 -0
  81. package/lib/custom/models/imenu-config.d.ts +7 -0
  82. package/lib/environments/environments.service.d.ts +11 -0
  83. package/lib/environments/models/ienvironments.d.ts +4 -0
  84. package/lib/guards/auth-guard.d.ts +14 -0
  85. package/lib/guards/external-login-guard.d.ts +21 -0
  86. package/lib/guards/login-guard.d.ts +24 -0
  87. package/lib/interceptors/auth-aplic.interceptor.d.ts +22 -0
  88. package/lib/interceptors/auth-infra.interceptor.d.ts +16 -0
  89. package/lib/models/code-2fa.d.ts +4 -0
  90. package/lib/models/custom-propriedades-login.d.ts +11 -0
  91. package/lib/models/forgotten-password-form.d.ts +5 -0
  92. package/lib/models/login-form.d.ts +5 -0
  93. package/lib/models/login.d.ts +4 -0
  94. package/lib/models/nova-senha-form.d.ts +5 -0
  95. package/lib/models/password-recup.d.ts +5 -0
  96. package/lib/models/payload.d.ts +9 -0
  97. package/lib/models/ret-login.d.ts +20 -0
  98. package/lib/models/ret-token.d.ts +6 -0
  99. package/lib/models/token.d.ts +8 -0
  100. package/lib/server/ret-server-config.d.ts +7 -0
  101. package/lib/server/server.service.d.ts +14 -0
  102. package/lib/storage/auth-storage.service.d.ts +90 -0
  103. package/package.json +25 -0
  104. package/public-api.d.ts +36 -0
  105. package/src/assets/imgs/Property1-cadeado.png +0 -0
  106. package/src/assets/imgs/Property1-calendariofino.png +0 -0
  107. package/src/assets/imgs/Property1-mao.png +0 -0
  108. package/src/assets/styles/styles.novo.scss +0 -0
@@ -0,0 +1,38 @@
1
+ import { HttpHeaders } from '@angular/common/http';
2
+ import { Injectable } from '@angular/core';
3
+ import { take, tap } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common/http";
6
+ export class ServerService {
7
+ constructor(_httpClient) {
8
+ this._httpClient = _httpClient;
9
+ // private readonly _HOSTNAME: any = window.location.hostname.includes("localhost")
10
+ // ? `http://${window.location.hostname}`
11
+ // : `https://${window.location.hostname}`;
12
+ this._HOSTNAME = "https://siscandesv6.sispro.com.br";
13
+ this._BASE_URL = `${this._HOSTNAME}/SisproErpCloud/Service_Private/Infra/SpInfra2ConfigWS/api/Config`;
14
+ this._HTTP_HEADERS = new HttpHeaders().set('Content-Type', 'application/json');
15
+ this._BASE_URL.includes("localhost") || this._BASE_URL.includes('127.0.0.1')
16
+ ? this._BASE_URL
17
+ : this._BASE_URL = "https://siscandesv6.sispro.com.br/SisproErpCloud/Service_Private/Infra/SpInfra2ConfigWS/api/Config";
18
+ }
19
+ // #region GET Server
20
+ getServer() {
21
+ const url = `${this._BASE_URL}/GetConfig`;
22
+ return this._httpClient
23
+ .post(url, null, { 'headers': this._HTTP_HEADERS })
24
+ .pipe(take(1), tap(response => {
25
+ localStorage.setItem('configServerUser', response.User);
26
+ localStorage.setItem('configServerPassword', response.Password);
27
+ }));
28
+ }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ServerService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
30
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ServerService, providedIn: 'root' }); }
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ServerService, decorators: [{
33
+ type: Injectable,
34
+ args: [{
35
+ providedIn: 'root'
36
+ }]
37
+ }], ctorParameters: () => [{ type: i1.HttpClient }] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtYXV0aC9zcmMvbGliL3NlcnZlci9zZXJ2ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQWMsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBTzdDLE1BQU0sT0FBTyxhQUFhO0lBWXhCLFlBQW9CLFdBQXVCO1FBQXZCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBVDNDLG1GQUFtRjtRQUNuRiwyQ0FBMkM7UUFDM0MsNkNBQTZDO1FBRTVCLGNBQVMsR0FBUSxtQ0FBbUMsQ0FBQztRQUVyRCxjQUFTLEdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxtRUFBbUUsQ0FBQztRQUN6RyxrQkFBYSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBR3pGLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztZQUMxRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFDaEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsb0dBQW9HLENBQUM7SUFDNUgsQ0FBQztJQUVELHFCQUFxQjtJQUNkLFNBQVM7UUFDZCxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLFlBQVksQ0FBQztRQUUxQyxPQUFPLElBQUksQ0FBQyxXQUFXO2FBQ3BCLElBQUksQ0FBa0IsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDbkUsSUFBSSxDQUNILElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDYixZQUFZLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4RCxZQUFZLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0wsQ0FBQzsrR0EvQlUsYUFBYTttSEFBYixhQUFhLGNBRlosTUFBTTs7NEZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBSZXRTZXJ2ZXJDb25maWcgfSBmcm9tICcuL3JldC1zZXJ2ZXItY29uZmlnJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNlcnZlclNlcnZpY2Uge1xyXG5cclxuXHJcbiAgLy8gcHJpdmF0ZSByZWFkb25seSBfSE9TVE5BTUU6IGFueSA9IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZS5pbmNsdWRlcyhcImxvY2FsaG9zdFwiKVxyXG4gIC8vICAgPyBgaHR0cDovLyR7d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lfWBcclxuICAvLyAgIDogYGh0dHBzOi8vJHt3aW5kb3cubG9jYXRpb24uaG9zdG5hbWV9YDtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfSE9TVE5BTUU6IGFueSA9IFwiaHR0cHM6Ly9zaXNjYW5kZXN2Ni5zaXNwcm8uY29tLmJyXCI7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX0JBU0VfVVJMOiBzdHJpbmcgPSBgJHt0aGlzLl9IT1NUTkFNRX0vU2lzcHJvRXJwQ2xvdWQvU2VydmljZV9Qcml2YXRlL0luZnJhL1NwSW5mcmEyQ29uZmlnV1MvYXBpL0NvbmZpZ2A7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfSFRUUF9IRUFERVJTID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9odHRwQ2xpZW50OiBIdHRwQ2xpZW50KSB7XHJcbiAgICB0aGlzLl9CQVNFX1VSTC5pbmNsdWRlcyhcImxvY2FsaG9zdFwiKSB8fCB0aGlzLl9CQVNFX1VSTC5pbmNsdWRlcygnMTI3LjAuMC4xJylcclxuICAgICAgPyB0aGlzLl9CQVNFX1VSTFxyXG4gICAgICA6IHRoaXMuX0JBU0VfVVJMID0gXCJodHRwczovL3Npc2NhbmRlc3Y2LnNpc3Byby5jb20uYnIvU2lzcHJvRXJwQ2xvdWQvU2VydmljZV9Qcml2YXRlL0luZnJhL1NwSW5mcmEyQ29uZmlnV1MvYXBpL0NvbmZpZ1wiO1xyXG4gIH1cclxuXHJcbiAgLy8gI3JlZ2lvbiBHRVQgU2VydmVyXHJcbiAgcHVibGljIGdldFNlcnZlcigpOiBPYnNlcnZhYmxlPFJldFNlcnZlckNvbmZpZz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5fQkFTRV9VUkx9L0dldENvbmZpZ2A7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnRcclxuICAgICAgLnBvc3Q8UmV0U2VydmVyQ29uZmlnPih1cmwsIG51bGwsIHsgJ2hlYWRlcnMnOiB0aGlzLl9IVFRQX0hFQURFUlMgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICB0YXAocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NvbmZpZ1NlcnZlclVzZXInLCByZXNwb25zZS5Vc2VyKTtcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjb25maWdTZXJ2ZXJQYXNzd29yZCcsIHJlc3BvbnNlLlBhc3N3b3JkKTtcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgfVxyXG4gIC8vICNlbmRyZWdpb24gR0VUIFNlcnZlclxyXG59XHJcbiJdfQ==
@@ -0,0 +1,409 @@
1
+ import { HttpClient, HttpHeaders } from '@angular/common/http';
2
+ import { Injectable } from '@angular/core';
3
+ import { BehaviorSubject, take, tap } from 'rxjs';
4
+ import { Utils } from 'ngx-sp-infra';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common/http";
7
+ export class AuthStorageService {
8
+ constructor(_httpBackend) {
9
+ this._httpBackend = _httpBackend;
10
+ this._HOSTNAME = window.location.hostname.includes("localhost")
11
+ ? `http://${window.location.hostname}`
12
+ : `https://${window.location.hostname}`;
13
+ this._BASE_URL = `${this._HOSTNAME}/SisproErpCloud/Service_Private/Infra/SpInfra2LoginWS/api/LoginSisproERP`; // SpInfra2WS
14
+ this.__local_key = 'user_auth_v6';
15
+ // indica se objeto já está marcado para salvar os dados no local storage.
16
+ this.__isSaving = false;
17
+ /** Se ainda estamos com uma função rodando para verificar o login do usuário */
18
+ this.__isCheckingAuth = false;
19
+ // #region GETTERS/SETTERS
20
+ this.isLoggedInSub = new BehaviorSubject(false);
21
+ //ip
22
+ this.__ip = "";
23
+ //tenantId
24
+ this.__tenantId = 0;
25
+ //infraUsuarioId
26
+ this.__infraUsuarioId = "";
27
+ // EstabelecimentoID
28
+ this.__infraEstabId = "";
29
+ // NomeEstabelecimento
30
+ this.__infraEstabNome = "";
31
+ // EmpresaID
32
+ this.__infraEmpresaId = "";
33
+ // NomeEmpresa
34
+ this.__infraEmpresaNome = "";
35
+ //user
36
+ this.__user = "";
37
+ //username
38
+ this.__userName = "";
39
+ //authToken
40
+ this.__authToken = "";
41
+ /** Domínio */
42
+ this.__dominio = "";
43
+ //url para redirecionamento
44
+ this.__UrlRedirect = "/";
45
+ //indica Login Externo
46
+ this.__isExternalLogin = false;
47
+ /** Se é para ignorar o método reCheckLogin */
48
+ this.__ignoreCheckLogin = false;
49
+ this._httpClient = new HttpClient(_httpBackend);
50
+ //this._BASE_URL = !environment.production ? this._BASE_URL : `${environment.SpInfra2LoginWS}/LoginSisproERP`;
51
+ // Método com customizações para inicializações da storage
52
+ this.storageConstructor();
53
+ const expectedLocalAuthStorage = localStorage.getItem(this.__local_key);
54
+ if (expectedLocalAuthStorage) {
55
+ const localAuthStorage = JSON.parse(expectedLocalAuthStorage);
56
+ this.__ip = localAuthStorage.__ip;
57
+ this.__tenantId = localAuthStorage.__tenantId;
58
+ this.__infraUsuarioId = localAuthStorage.__infraUsuarioId;
59
+ this.__infraEstabId = localAuthStorage.__infraEstabId;
60
+ this.__infraEstabNome = localAuthStorage.__infraEstabNome;
61
+ this.__infraEmpresaId = localAuthStorage.__infraEmpresaId;
62
+ this.__infraEmpresaNome = localAuthStorage.__infraEmpresaNome;
63
+ this.__user = localAuthStorage.__user;
64
+ this.__userName = localAuthStorage.__userName;
65
+ this.__tokenPayload = localAuthStorage.__tokenPayload;
66
+ this.__authToken = localAuthStorage.__authToken;
67
+ this.__dominio = localAuthStorage.__dominio;
68
+ this.__isExternalLogin = localAuthStorage.__isExternalLogin;
69
+ this.startLoginCheck();
70
+ }
71
+ }
72
+ get ip() {
73
+ return this.__ip;
74
+ }
75
+ set ip(value) {
76
+ this.__ip = value;
77
+ if (this.isLoggedInSub.value) {
78
+ this.__saveLocalInstance();
79
+ }
80
+ }
81
+ get tenantId() {
82
+ return this.__tenantId;
83
+ }
84
+ set tenantId(value) {
85
+ this.__tenantId = value;
86
+ this.__saveLocalInstance();
87
+ }
88
+ get infraUsuarioId() {
89
+ return this.__infraUsuarioId;
90
+ }
91
+ set infraUsuarioId(value) {
92
+ this.__infraUsuarioId = value;
93
+ this.__saveLocalInstance();
94
+ }
95
+ get infraEstabId() {
96
+ return this.__infraEstabId;
97
+ }
98
+ set infraEstabId(value) {
99
+ this.__infraEstabId = value;
100
+ this.__saveLocalInstance();
101
+ }
102
+ get infraEstabNome() {
103
+ return this.__infraEstabNome;
104
+ }
105
+ set infraEstabNome(value) {
106
+ this.__infraEstabNome = value;
107
+ this.__saveLocalInstance();
108
+ }
109
+ get infraEmpresaId() {
110
+ return this.__infraEmpresaId;
111
+ }
112
+ set infraEmpresaId(value) {
113
+ this.__infraEmpresaId = value;
114
+ this.__saveLocalInstance();
115
+ }
116
+ get infraEmpresaNome() {
117
+ return this.__infraEmpresaNome;
118
+ }
119
+ set infraEmpresaNome(value) {
120
+ this.__infraEmpresaNome = value;
121
+ this.__saveLocalInstance();
122
+ }
123
+ get user() {
124
+ return this.__user;
125
+ }
126
+ set user(value) {
127
+ this.__user = value;
128
+ this.__saveLocalInstance();
129
+ }
130
+ get userName() {
131
+ return this.__userName;
132
+ }
133
+ set userName(value) {
134
+ this.__userName = value;
135
+ this.__saveLocalInstance();
136
+ }
137
+ get tokenPayload() {
138
+ return this.__tokenPayload;
139
+ }
140
+ get authToken() {
141
+ return this.__authToken;
142
+ }
143
+ set authToken(value) {
144
+ this.__authToken = value;
145
+ if (this.__authToken != '') {
146
+ // Utiliza-se a função dos Utils para pegar o segundo valor do Token, separados por um '.'
147
+ // e define o __tokenPayload como o objeto resultante do JSON.parse(payloadJson)
148
+ const payloadJson = Utils.b64DecodeUnicode(this.__authToken.split('.')[1]);
149
+ this.__tokenPayload = JSON.parse(payloadJson);
150
+ this.startLoginCheck();
151
+ }
152
+ this.__saveLocalInstance();
153
+ }
154
+ get dominio() {
155
+ return this.__dominio;
156
+ }
157
+ set dominio(value) {
158
+ this.__dominio = value;
159
+ this.__saveLocalInstance();
160
+ }
161
+ get urlRedirect() {
162
+ return this.__UrlRedirect;
163
+ }
164
+ set urlRedirect(value) {
165
+ this.__UrlRedirect = value;
166
+ }
167
+ get isExternalLogin() {
168
+ return this.__isExternalLogin;
169
+ }
170
+ set isExternalLogin(value) {
171
+ this.__isExternalLogin = value;
172
+ this.__saveLocalInstance();
173
+ }
174
+ get ignoreCheckLogin() {
175
+ return this.__ignoreCheckLogin;
176
+ }
177
+ set ignoreCheckLogin(value) {
178
+ this.__ignoreCheckLogin = value;
179
+ this.__saveLocalInstance();
180
+ }
181
+ // #endregion GETTERS/SETTERS
182
+ async __saveLocalInstance() {
183
+ if (this.__isSaving) {
184
+ return;
185
+ }
186
+ this.__isSaving = true;
187
+ localStorage.setItem(this.__local_key, this.toJson());
188
+ // Método com customizações para salvar informações na storage
189
+ this.storageSaveLocalInstance();
190
+ this.__notSaving();
191
+ }
192
+ async __notSaving() {
193
+ this.__isSaving = false;
194
+ }
195
+ /**
196
+ * Salva a instância como JSON seguro, ignorando objetos que não podem se tornar um JSON.
197
+ */
198
+ toJson() {
199
+ const json = `
200
+ {
201
+ "__ip": "${this.ip}",
202
+ "__tenantId": ${this.tenantId},
203
+ "__infraUsuarioId": "${this.infraUsuarioId}",
204
+ "__infraEstabId": "${this.infraEstabId}",
205
+ "__infraEstabNome": "${this.infraEstabNome}",
206
+ "__infraEmpresaId": "${this.infraEmpresaId}",
207
+ "__infraEmpresaNome": "${this.infraEmpresaNome}",
208
+ "__user": "${this.user}",
209
+ "__userName": "${this.userName}",
210
+ "__authToken": "${this.authToken}",
211
+ "__tokenPayload": ${JSON.stringify(this.tokenPayload)},
212
+ "__dominio": "${this.dominio}",
213
+ "__isExternalLogin": ${this.isExternalLogin}
214
+ }
215
+ `;
216
+ return json;
217
+ }
218
+ /** Inicia a verificação do login. */
219
+ startLoginCheck() {
220
+ if (!this.__isCheckingAuth) {
221
+ this.reCheckLogin();
222
+ }
223
+ }
224
+ /**
225
+ * Verifica a cada diferença de tempo entre a data atual e a data do token.
226
+ */
227
+ async reCheckLogin() {
228
+ if (this.__authToken === undefined || this.__authToken === '' || this.authToken === null || this.authToken === '') {
229
+ this.__isCheckingAuth = false;
230
+ return;
231
+ }
232
+ this.__isCheckingAuth = true;
233
+ let isRenewToken = false;
234
+ let nowDate = Math.round(Date.now() / 1000);
235
+ if (this.tokenPayload.exp <= nowDate) {
236
+ isRenewToken = true;
237
+ }
238
+ let leftTime = this.tokenPayload.exp - nowDate;
239
+ if (leftTime <= 0) {
240
+ isRenewToken = true;
241
+ }
242
+ // TODO: Alterar aqui para não deslogar e avisar o usuário para logar denovo.
243
+ if (isRenewToken) {
244
+ const response = await this.getNewToken();
245
+ if (response !== undefined && response !== null && response != '') {
246
+ this.authToken = response;
247
+ nowDate = Math.round(Date.now() / 1000);
248
+ leftTime = this.tokenPayload.exp - nowDate;
249
+ }
250
+ else {
251
+ this.logout();
252
+ return;
253
+ }
254
+ }
255
+ if (this.ignoreCheckLogin) {
256
+ this.ignoreCheckLogin = false;
257
+ }
258
+ else {
259
+ // Método com customizações para inicializações da AutoStorage
260
+ this.storageInitializeAutoStorage();
261
+ }
262
+ this.isLoggedInSub.next(true);
263
+ setTimeout(this.reCheckLogin.bind(this), leftTime * 1000);
264
+ }
265
+ logout() {
266
+ this.__isCheckingAuth = false;
267
+ this.isLoggedInSub.next(false);
268
+ this.__UrlRedirect = "/";
269
+ this.__ip = "";
270
+ this.__tenantId = 0;
271
+ this.__infraUsuarioId = "";
272
+ this.__infraEstabId = "";
273
+ this.__infraEstabNome = "";
274
+ this.__infraEmpresaId = "";
275
+ this.__infraEmpresaNome = "";
276
+ this.__user = "";
277
+ this.__userName = "";
278
+ this.__authToken = "";
279
+ this.__dominio = "";
280
+ this.__tokenPayload = {};
281
+ this.__isExternalLogin = false;
282
+ localStorage.removeItem(this.__local_key);
283
+ // Método com customizações para finalizações da storage
284
+ this.storageLogout();
285
+ }
286
+ getNewTokenBack() {
287
+ let token = {
288
+ domain: this.__dominio,
289
+ user: this.__user,
290
+ tenantId: this.tenantId,
291
+ token: this.authToken,
292
+ infraUsuarioId: this.__infraUsuarioId,
293
+ userName: this.__userName
294
+ };
295
+ const url = `${this._BASE_URL}/GetNewToken`;
296
+ const headers = new HttpHeaders()
297
+ .set('Content-Type', 'application/json')
298
+ .set('Authorization', `Basic ${btoa(`${localStorage.getItem('configServerUser')}:${localStorage.getItem('configServerPassword')}`)}`);
299
+ return this._httpClient
300
+ .post(url, token, { 'headers': headers })
301
+ .pipe(take(1), tap((response) => {
302
+ if (response.Error) {
303
+ throw Error(response.ErrorMessage);
304
+ }
305
+ }));
306
+ }
307
+ getNewToken() {
308
+ return new Promise((resolve, reject) => {
309
+ this.getNewTokenBack().subscribe({
310
+ next: response => {
311
+ resolve(response.Token);
312
+ },
313
+ error: error => {
314
+ reject(error);
315
+ }
316
+ });
317
+ });
318
+ }
319
+ /**
320
+ * Renova o Token quando este estiver vencido.
321
+ */
322
+ async renewToken() {
323
+ if (!this.isLoggedInSub || this.__authToken === undefined || this.__authToken === '' || this.authToken === null || this.authToken === '') {
324
+ return;
325
+ }
326
+ let isRenewToken = false;
327
+ let nowDate = Math.round(Date.now() / 1000);
328
+ if (this.tokenPayload.exp <= nowDate) {
329
+ isRenewToken = true;
330
+ }
331
+ let leftTime = this.tokenPayload.exp - nowDate;
332
+ if (leftTime <= 0) {
333
+ isRenewToken = true;
334
+ }
335
+ if (isRenewToken) {
336
+ const response = await this.getNewToken();
337
+ if (response !== undefined && response !== null && response != '') {
338
+ this.authToken = response;
339
+ }
340
+ }
341
+ }
342
+ isPrePortal() {
343
+ // Identifica se a origem é PrePortal
344
+ var url = new URL(window.location.href);
345
+ var isPrePortal = url.searchParams.get("PrePortal");
346
+ if (isPrePortal != null) {
347
+ if (isPrePortal.toString() == "true") {
348
+ return true;
349
+ }
350
+ else {
351
+ return false;
352
+ }
353
+ }
354
+ else {
355
+ return false;
356
+ }
357
+ }
358
+ // #region ==========> UTILS <==========
359
+ // #endregion Propriedades Customizadas para o Componente auth-storage.service.ts
360
+ // #region Métodos Customizadas para o Componente auth-storage.service.ts
361
+ // Método executado no auth-storage.service.ts - método: constructor ()
362
+ // Utilizado para inicializações diversas
363
+ storageConstructor(callback) {
364
+ if (callback) {
365
+ callback();
366
+ }
367
+ }
368
+ // Método executado no auth-storage.service.ts - método: saveLocalInstance ()
369
+ // Utilizado para salvar informações no localStorage
370
+ storageSaveLocalInstance(callback) {
371
+ if (callback) {
372
+ callback();
373
+ }
374
+ }
375
+ // Método executado no auth-storage.service.ts - método: logout ()
376
+ // Utilizado para inicializar informações no localStorage na logout da aplicação
377
+ storageLogout(callback) {
378
+ if (callback) {
379
+ callback();
380
+ }
381
+ }
382
+ // Método executado no auth-storage.service.ts - método: reCheckLogin ()
383
+ // Utilizado para inicializações diversas quando o Login exeutado via Pré Portal
384
+ storageInitializeAutoStorage(callback) {
385
+ if (callback) {
386
+ callback();
387
+ }
388
+ }
389
+ // Método executado para salvar as propriedades no LocalStorage (não deve ser modificado)
390
+ async __authStorageSaveLocalInstance() {
391
+ if (this.__isSaving) {
392
+ return;
393
+ }
394
+ this.__isSaving = true;
395
+ this.storageSaveLocalInstance();
396
+ this.__authStorageNotSaving();
397
+ }
398
+ // Método executado para salvar as propriedades no LocalStorage (não deve ser modificado)
399
+ async __authStorageNotSaving() {
400
+ this.__isSaving = false;
401
+ }
402
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthStorageService, deps: [{ token: i1.HttpBackend }], target: i0.ɵɵFactoryTarget.Injectable }); }
403
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthStorageService, providedIn: 'root' }); }
404
+ }
405
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthStorageService, decorators: [{
406
+ type: Injectable,
407
+ args: [{ providedIn: 'root' }]
408
+ }], ctorParameters: () => [{ type: i1.HttpBackend }] });
409
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtYXV0aC9zcmMvbGliL3N0b3JhZ2UvYXV0aC1zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU5RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7QUFPckMsTUFBTSxPQUFPLGtCQUFrQjtJQW9CN0IsWUFDVSxZQUF5QjtRQUF6QixpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQWxCbEIsY0FBUyxHQUFRLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7WUFDOUUsQ0FBQyxDQUFDLFVBQVUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7WUFDdEMsQ0FBQyxDQUFDLFdBQVcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUV6QixjQUFTLEdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUywwRUFBMEUsQ0FBQyxDQUFDLGFBQWE7UUFFOUgsZ0JBQVcsR0FBRyxjQUFjLENBQUM7UUFFOUMsMEVBQTBFO1FBQ2xFLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFcEMsZ0ZBQWdGO1FBQ3hFLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQXVDMUMsMEJBQTBCO1FBRW5CLGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFM0QsSUFBSTtRQUNJLFNBQUksR0FBVyxFQUFFLENBQUM7UUFlMUIsVUFBVTtRQUNGLGVBQVUsR0FB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LEVBQUUsQ0FBQztRQUVoQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQTtJQUMvQixDQUFDO0lBRUQseUZBQXlGO0lBQ2pGLEtBQUssQ0FBQyxzQkFBc0I7UUFDbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUE7SUFDekIsQ0FBQzsrR0FuaUJVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmYsTUFBTTs7NEZBRVQsa0JBQWtCO2tCQUg5QixVQUFVO21CQUNULEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBCYWNrZW5kLCBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQYXlsb2FkIH0gZnJvbSAnLi8uLi9tb2RlbHMvcGF5bG9hZCc7XHJcblxyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICduZ3gtc3AtaW5mcmEnO1xyXG5pbXBvcnQgeyBSZXRUb2tlbiB9IGZyb20gJy4uL21vZGVscy9yZXQtdG9rZW4nO1xyXG5pbXBvcnQgeyBUb2tlbiB9IGZyb20gJy4uL21vZGVscy90b2tlbic7XHJcblxyXG5ASW5qZWN0YWJsZShcclxuICB7IHByb3ZpZGVkSW46ICdyb290JyB9XHJcbilcclxuZXhwb3J0IGNsYXNzIEF1dGhTdG9yYWdlU2VydmljZSB7XHJcblxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9IT1NUTkFNRTogYW55ID0gd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLmluY2x1ZGVzKFwibG9jYWxob3N0XCIpXHJcbiAgICA/IGBodHRwOi8vJHt3aW5kb3cubG9jYXRpb24uaG9zdG5hbWV9YFxyXG4gICAgOiBgaHR0cHM6Ly8ke3dpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZX1gO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9CQVNFX1VSTDogc3RyaW5nID0gYCR7dGhpcy5fSE9TVE5BTUV9L1Npc3Byb0VycENsb3VkL1NlcnZpY2VfUHJpdmF0ZS9JbmZyYS9TcEluZnJhMkxvZ2luV1MvYXBpL0xvZ2luU2lzcHJvRVJQYDsgLy8gU3BJbmZyYTJXU1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9fbG9jYWxfa2V5ID0gJ3VzZXJfYXV0aF92Nic7XHJcblxyXG4gIC8vIGluZGljYSBzZSBvYmpldG8gasOhIGVzdMOhIG1hcmNhZG8gcGFyYSBzYWx2YXIgb3MgZGFkb3Mgbm8gbG9jYWwgc3RvcmFnZS5cclxuICBwcml2YXRlIF9faXNTYXZpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIFNlIGFpbmRhIGVzdGFtb3MgY29tIHVtYSBmdW7Dp8OjbyByb2RhbmRvIHBhcmEgdmVyaWZpY2FyIG8gbG9naW4gZG8gdXN1w6FyaW8gKi9cclxuICBwcml2YXRlIF9faXNDaGVja2luZ0F1dGg6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyogVmFyacOhdmVsIHBhcmEgY29udG9ybmFyIG8gZXJybyA+Pj4gTkcwMjAwOiBDaXJjdWxhciBkZXBlbmRlbmN5XCIgKi9cclxuICBwcml2YXRlIF9odHRwQ2xpZW50OiBIdHRwQ2xpZW50O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2h0dHBCYWNrZW5kOiBIdHRwQmFja2VuZCxcclxuICApIHtcclxuICAgIHRoaXMuX2h0dHBDbGllbnQgPSBuZXcgSHR0cENsaWVudChfaHR0cEJhY2tlbmQpO1xyXG5cclxuICAgIC8vdGhpcy5fQkFTRV9VUkwgPSAhZW52aXJvbm1lbnQucHJvZHVjdGlvbiA/IHRoaXMuX0JBU0VfVVJMIDogYCR7ZW52aXJvbm1lbnQuU3BJbmZyYTJMb2dpbldTfS9Mb2dpblNpc3Byb0VSUGA7XHJcblxyXG4gICAgLy8gTcOpdG9kbyBjb20gY3VzdG9taXphw6fDtWVzIHBhcmEgaW5pY2lhbGl6YcOnw7VlcyBkYSBzdG9yYWdlXHJcbiAgICB0aGlzLnN0b3JhZ2VDb25zdHJ1Y3RvcigpXHJcblxyXG4gICAgY29uc3QgZXhwZWN0ZWRMb2NhbEF1dGhTdG9yYWdlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5fX2xvY2FsX2tleSk7XHJcblxyXG4gICAgaWYgKGV4cGVjdGVkTG9jYWxBdXRoU3RvcmFnZSkge1xyXG4gICAgICBjb25zdCBsb2NhbEF1dGhTdG9yYWdlID0gSlNPTi5wYXJzZShleHBlY3RlZExvY2FsQXV0aFN0b3JhZ2UpIGFzIEF1dGhTdG9yYWdlU2VydmljZTtcclxuXHJcbiAgICAgIHRoaXMuX19pcCA9IGxvY2FsQXV0aFN0b3JhZ2UuX19pcDtcclxuICAgICAgdGhpcy5fX3RlbmFudElkID0gbG9jYWxBdXRoU3RvcmFnZS5fX3RlbmFudElkO1xyXG4gICAgICB0aGlzLl9faW5mcmFVc3VhcmlvSWQgPSBsb2NhbEF1dGhTdG9yYWdlLl9faW5mcmFVc3VhcmlvSWQ7XHJcbiAgICAgIHRoaXMuX19pbmZyYUVzdGFiSWQgPSBsb2NhbEF1dGhTdG9yYWdlLl9faW5mcmFFc3RhYklkO1xyXG4gICAgICB0aGlzLl9faW5mcmFFc3RhYk5vbWUgPSBsb2NhbEF1dGhTdG9yYWdlLl9faW5mcmFFc3RhYk5vbWU7XHJcbiAgICAgIHRoaXMuX19pbmZyYUVtcHJlc2FJZCA9IGxvY2FsQXV0aFN0b3JhZ2UuX19pbmZyYUVtcHJlc2FJZDtcclxuICAgICAgdGhpcy5fX2luZnJhRW1wcmVzYU5vbWUgPSBsb2NhbEF1dGhTdG9yYWdlLl9faW5mcmFFbXByZXNhTm9tZTtcclxuICAgICAgdGhpcy5fX3VzZXIgPSBsb2NhbEF1dGhTdG9yYWdlLl9fdXNlcjtcclxuICAgICAgdGhpcy5fX3VzZXJOYW1lID0gbG9jYWxBdXRoU3RvcmFnZS5fX3VzZXJOYW1lO1xyXG4gICAgICB0aGlzLl9fdG9rZW5QYXlsb2FkID0gbG9jYWxBdXRoU3RvcmFnZS5fX3Rva2VuUGF5bG9hZDtcclxuICAgICAgdGhpcy5fX2F1dGhUb2tlbiA9IGxvY2FsQXV0aFN0b3JhZ2UuX19hdXRoVG9rZW47XHJcbiAgICAgIHRoaXMuX19kb21pbmlvID0gbG9jYWxBdXRoU3RvcmFnZS5fX2RvbWluaW87XHJcbiAgICAgIHRoaXMuX19pc0V4dGVybmFsTG9naW4gPSBsb2NhbEF1dGhTdG9yYWdlLl9faXNFeHRlcm5hbExvZ2luO1xyXG5cclxuICAgICAgdGhpcy5zdGFydExvZ2luQ2hlY2soKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICAvLyAjcmVnaW9uIEdFVFRFUlMvU0VUVEVSU1xyXG5cclxuICBwdWJsaWMgaXNMb2dnZWRJblN1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICAvL2lwXHJcbiAgcHJpdmF0ZSBfX2lwOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBwdWJsaWMgZ2V0IGlwKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fX2lwO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBpcCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9faXAgPSB2YWx1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5pc0xvZ2dlZEluU3ViLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX19zYXZlTG9jYWxJbnN0YW5jZSgpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8vdGVuYW50SWRcclxuICBwcml2YXRlIF9fdGVuYW50SWQ6IG51bWJlciA9IDA7XHJcblxyXG4gIHB1YmxpYyBnZXQgdGVuYW50SWQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9fdGVuYW50SWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IHRlbmFudElkKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX190ZW5hbnRJZCA9IHZhbHVlO1xyXG5cclxuICAgIHRoaXMuX19zYXZlTG9jYWxJbnN0YW5jZSgpO1xyXG4gIH1cclxuXHJcbiAgLy9pbmZyYVVzdWFyaW9JZFxyXG4gIHByaXZhdGUgX19pbmZyYVVzdWFyaW9JZDogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgcHVibGljIGdldCBpbmZyYVVzdWFyaW9JZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX19pbmZyYVVzdWFyaW9JZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgaW5mcmFVc3VhcmlvSWQodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fX2luZnJhVXN1YXJpb0lkID0gdmFsdWU7XHJcblxyXG4gICAgdGhpcy5fX3NhdmVMb2NhbEluc3RhbmNlKCk7XHJcbiAgfVxyXG5cclxuICAvLyBFc3RhYmVsZWNpbWVudG9JRFxyXG4gIHByaXZhdGUgX19pbmZyYUVzdGFiSWQ6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIHB1YmxpYyBnZXQgaW5mcmFFc3RhYklkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fX2luZnJhRXN0YWJJZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgaW5mcmFFc3RhYklkKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX19pbmZyYUVzdGFiSWQgPSB2YWx1ZTtcclxuXHJcbiAgICB0aGlzLl9fc2F2ZUxvY2FsSW5zdGFuY2UoKTtcclxuICB9XHJcblxyXG4gIC8vIE5vbWVFc3RhYmVsZWNpbWVudG9cclxuICBwcml2YXRlIF9faW5mcmFFc3RhYk5vbWU6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIHB1YmxpYyBnZXQgaW5mcmFFc3RhYk5vbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9faW5mcmFFc3RhYk5vbWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IGluZnJhRXN0YWJOb21lKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX19pbmZyYUVzdGFiTm9tZSA9IHZhbHVlO1xyXG5cclxuICAgIHRoaXMuX19zYXZlTG9jYWxJbnN0YW5jZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gRW1wcmVzYUlEXHJcbiAgcHJpdmF0ZSBfX2luZnJhRW1wcmVzYUlkOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBwdWJsaWMgZ2V0IGluZnJhRW1wcmVzYUlkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fX2luZnJhRW1wcmVzYUlkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBpbmZyYUVtcHJlc2FJZCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9faW5mcmFFbXByZXNhSWQgPSB2YWx1ZTtcclxuXHJcbiAgICB0aGlzLl9fc2F2ZUxvY2FsSW5zdGFuY2UoKTtcclxuICB9XHJcblxyXG4gIC8vIE5vbWVFbXByZXNhXHJcbiAgcHJpdmF0ZSBfX2luZnJhRW1wcmVzYU5vbWU6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIHB1YmxpYyBnZXQgaW5mcmFFbXByZXNhTm9tZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX19pbmZyYUVtcHJlc2FOb21lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBpbmZyYUVtcHJlc2FOb21lKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX19pbmZyYUVtcHJlc2FOb21lID0gdmFsdWU7XHJcblxyXG4gICAgdGhpcy5fX3NhdmVMb2NhbEluc3RhbmNlKCk7XHJcbiAgfVxyXG5cclxuICAvL3VzZXJcclxuICBwcml2YXRlIF9fdXNlcjogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgcHVibGljIGdldCB1c2VyKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fX3VzZXI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IHVzZXIodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fX3VzZXIgPSB2YWx1ZTtcclxuXHJcbiAgICB0aGlzLl9fc2F2ZUxvY2FsSW5zdGFuY2UoKTtcclxuICB9XHJcblxyXG4gIC8vdXNlcm5hbWVcclxuICBwcml2YXRlIF9fdXNlck5hbWU6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIHB1YmxpYyBnZXQgdXNlck5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9fdXNlck5hbWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IHVzZXJOYW1lKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX191c2VyTmFtZSA9IHZhbHVlO1xyXG5cclxuICAgIHRoaXMuX19zYXZlTG9jYWxJbnN0YW5jZSgpO1xyXG4gIH1cclxuXHJcbiAgLy90b2tlblBheWxvYWRcclxuICBwcml2YXRlIF9fdG9rZW5QYXlsb2FkITogUGF5bG9hZDtcclxuXHJcbiAgcHVibGljIGdldCB0b2tlblBheWxvYWQoKTogUGF5bG9hZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fX3Rva2VuUGF5bG9hZDtcclxuICB9XHJcblxyXG4gIC8vYXV0aFRva2VuXHJcbiAgcHJpdmF0ZSBfX2F1dGhUb2tlbjogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgcHVibGljIGdldCBhdXRoVG9rZW4oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9fYXV0aFRva2VuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBhdXRoVG9rZW4odmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fX2F1dGhUb2tlbiA9IHZhbHVlO1xyXG5cclxuICAgIGlmICh0aGlzLl9fYXV0aFRva2VuICE9ICcnKSB7XHJcbiAgICAgIC8vIFV0aWxpemEtc2UgYSBmdW7Dp8OjbyBkb3MgVXRpbHMgcGFyYSBwZWdhciBvIHNlZ3VuZG8gdmFsb3IgZG8gVG9rZW4sIHNlcGFyYWRvcyBwb3IgdW0gJy4nXHJcbiAgICAgIC8vIGUgZGVmaW5lIG8gX190b2tlblBheWxvYWQgY29tbyBvIG9iamV0byByZXN1bHRhbnRlIGRvIEpTT04ucGFyc2UocGF5bG9hZEpzb24pXHJcbiAgICAgIGNvbnN0IHBheWxvYWRKc29uOiBzdHJpbmcgPSBVdGlscy5iNjREZWNvZGVVbmljb2RlKHRoaXMuX19hdXRoVG9rZW4uc3BsaXQoJy4nKVsxXSk7XHJcblxyXG4gICAgICB0aGlzLl9fdG9rZW5QYXlsb2FkID0gSlNPTi5wYXJzZShwYXlsb2FkSnNvbik7XHJcblxyXG4gICAgICB0aGlzLnN0YXJ0TG9naW5DaGVjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX19zYXZlTG9jYWxJbnN0YW5jZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqIERvbcOtbmlvICovXHJcbiAgcHJpdmF0ZSBfX2RvbWluaW86IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIHB1YmxpYyBnZXQgZG9taW5pbygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX19kb21pbmlvO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBkb21pbmlvKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX19kb21pbmlvID0gdmFsdWU7XHJcblxyXG4gICAgdGhpcy5fX3NhdmVMb2NhbEluc3RhbmNlKCk7XHJcbiAgfVxyXG5cclxuICAvL3VybCBwYXJhIHJlZGlyZWNpb25hbWVudG9cclxuICBwcml2YXRlIF9fVXJsUmVkaXJlY3Q6IHN0cmluZyA9IFwiL1wiO1xyXG5cclxuICBwdWJsaWMgZ2V0IHVybFJlZGlyZWN0KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fX1VybFJlZGlyZWN0O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCB1cmxSZWRpcmVjdCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9fVXJsUmVkaXJlY3QgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIC8vaW5kaWNhIExvZ2luIEV4dGVybm9cclxuICBwcml2YXRlIF9faXNFeHRlcm5hbExvZ2luOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNFeHRlcm5hbExvZ2luKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX19pc0V4dGVybmFsTG9naW47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IGlzRXh0ZXJuYWxMb2dpbih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fX2lzRXh0ZXJuYWxMb2dpbiA9IHZhbHVlO1xyXG5cclxuICAgIHRoaXMuX19zYXZlTG9jYWxJbnN0YW5jZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFNlIMOpIHBhcmEgaWdub3JhciBvIG3DqXRvZG8gcmVDaGVja0xvZ2luICovXHJcbiAgcHJpdmF0ZSBfX2lnbm9yZUNoZWNrTG9naW46IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIGdldCBpZ25vcmVDaGVja0xvZ2luKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX19pZ25vcmVDaGVja0xvZ2luO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBpZ25vcmVDaGVja0xvZ2luKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9faWdub3JlQ2hlY2tMb2dpbiA9IHZhbHVlO1xyXG5cclxuICAgIHRoaXMuX19zYXZlTG9jYWxJbnN0YW5jZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBHRVRURVJTL1NFVFRFUlNcclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfX3NhdmVMb2NhbEluc3RhbmNlKCk6IFByb21pc2U8dm9pZD4ge1xyXG5cclxuICAgIGlmICh0aGlzLl9faXNTYXZpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX19pc1NhdmluZyA9IHRydWU7XHJcblxyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5fX2xvY2FsX2tleSwgdGhpcy50b0pzb24oKSk7XHJcblxyXG4gICAgLy8gTcOpdG9kbyBjb20gY3VzdG9taXphw6fDtWVzIHBhcmEgc2FsdmFyIGluZm9ybWHDp8O1ZXMgbmEgc3RvcmFnZVxyXG4gICAgdGhpcy5zdG9yYWdlU2F2ZUxvY2FsSW5zdGFuY2UoKTtcclxuXHJcbiAgICB0aGlzLl9fbm90U2F2aW5nKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9fbm90U2F2aW5nKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5fX2lzU2F2aW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTYWx2YSBhIGluc3TDom5jaWEgY29tbyBKU09OIHNlZ3VybywgaWdub3JhbmRvIG9iamV0b3MgcXVlIG7Do28gcG9kZW0gc2UgdG9ybmFyIHVtIEpTT04uXHJcbiAgICovXHJcbiAgcHVibGljIHRvSnNvbigpOiBzdHJpbmcge1xyXG4gICAgY29uc3QganNvbiA9IGBcclxuICAgIHtcclxuICAgICAgXCJfX2lwXCI6IFwiJHt0aGlzLmlwfVwiLFxyXG4gICAgICBcIl9fdGVuYW50SWRcIjogJHt0aGlzLnRlbmFudElkfSxcclxuICAgICAgXCJfX2luZnJhVXN1YXJpb0lkXCI6IFwiJHt0aGlzLmluZnJhVXN1YXJpb0lkfVwiLFxyXG4gICAgICBcIl9faW5mcmFFc3RhYklkXCI6IFwiJHt0aGlzLmluZnJhRXN0YWJJZH1cIixcclxuICAgICAgXCJfX2luZnJhRXN0YWJOb21lXCI6IFwiJHt0aGlzLmluZnJhRXN0YWJOb21lfVwiLFxyXG4gICAgICBcIl9faW5mcmFFbXByZXNhSWRcIjogXCIke3RoaXMuaW5mcmFFbXByZXNhSWR9XCIsXHJcbiAgICAgIFwiX19pbmZyYUVtcHJlc2FOb21lXCI6IFwiJHt0aGlzLmluZnJhRW1wcmVzYU5vbWV9XCIsXHJcbiAgICAgIFwiX191c2VyXCI6IFwiJHt0aGlzLnVzZXJ9XCIsXHJcbiAgICAgIFwiX191c2VyTmFtZVwiOiBcIiR7dGhpcy51c2VyTmFtZX1cIixcclxuICAgICAgXCJfX2F1dGhUb2tlblwiOiBcIiR7dGhpcy5hdXRoVG9rZW59XCIsXHJcbiAgICAgIFwiX190b2tlblBheWxvYWRcIjogJHtKU09OLnN0cmluZ2lmeSh0aGlzLnRva2VuUGF5bG9hZCl9LFxyXG4gICAgICBcIl9fZG9taW5pb1wiOiBcIiR7dGhpcy5kb21pbmlvfVwiLFxyXG4gICAgICBcIl9faXNFeHRlcm5hbExvZ2luXCI6ICR7dGhpcy5pc0V4dGVybmFsTG9naW59XHJcbiAgICB9XHJcbiAgICBgO1xyXG5cclxuICAgIHJldHVybiBqc29uO1xyXG4gIH1cclxuXHJcbiAgLyoqIEluaWNpYSBhIHZlcmlmaWNhw6fDo28gZG8gbG9naW4uICovXHJcbiAgcHVibGljIHN0YXJ0TG9naW5DaGVjaygpIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuX19pc0NoZWNraW5nQXV0aCkge1xyXG4gICAgICB0aGlzLnJlQ2hlY2tMb2dpbigpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZlcmlmaWNhIGEgY2FkYSBkaWZlcmVuw6dhIGRlIHRlbXBvIGVudHJlIGEgZGF0YSBhdHVhbCBlIGEgZGF0YSBkbyB0b2tlbi5cclxuICAgKi9cclxuICBwdWJsaWMgYXN5bmMgcmVDaGVja0xvZ2luKCkge1xyXG5cclxuICAgIGlmICh0aGlzLl9fYXV0aFRva2VuID09PSB1bmRlZmluZWQgfHwgdGhpcy5fX2F1dGhUb2tlbiA9PT0gJycgfHwgdGhpcy5hdXRoVG9rZW4gPT09IG51bGwgfHwgdGhpcy5hdXRoVG9rZW4gPT09ICcnKSB7XHJcbiAgICAgIHRoaXMuX19pc0NoZWNraW5nQXV0aCA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fX2lzQ2hlY2tpbmdBdXRoID0gdHJ1ZTtcclxuXHJcbiAgICBsZXQgaXNSZW5ld1Rva2VuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsZXQgbm93RGF0ZTogbnVtYmVyID0gTWF0aC5yb3VuZChEYXRlLm5vdygpIC8gMTAwMCk7XHJcblxyXG4gICAgaWYgKHRoaXMudG9rZW5QYXlsb2FkLmV4cCA8PSBub3dEYXRlKSB7XHJcbiAgICAgIGlzUmVuZXdUb2tlbiA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGxlZnRUaW1lOiBudW1iZXIgPSB0aGlzLnRva2VuUGF5bG9hZC5leHAgLSBub3dEYXRlXHJcblxyXG4gICAgaWYgKGxlZnRUaW1lIDw9IDApIHtcclxuICAgICAgaXNSZW5ld1Rva2VuID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUT0RPOiBBbHRlcmFyIGFxdWkgcGFyYSBuw6NvIGRlc2xvZ2FyIGUgYXZpc2FyIG8gdXN1w6FyaW8gcGFyYSBsb2dhciBkZW5vdm8uXHJcbiAgICBpZiAoaXNSZW5ld1Rva2VuKSB7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5nZXROZXdUb2tlbigpO1xyXG5cclxuICAgICAgaWYgKHJlc3BvbnNlICE9PSB1bmRlZmluZWQgJiYgcmVzcG9uc2UgIT09IG51bGwgJiYgcmVzcG9uc2UgIT0gJycpIHtcclxuICAgICAgICB0aGlzLmF1dGhUb2tlbiA9IHJlc3BvbnNlO1xyXG4gICAgICAgIG5vd0RhdGUgPSBNYXRoLnJvdW5kKERhdGUubm93KCkgLyAxMDAwKTtcclxuICAgICAgICBsZWZ0VGltZSA9IHRoaXMudG9rZW5QYXlsb2FkLmV4cCAtIG5vd0RhdGU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sb2dvdXQoKTtcclxuXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlnbm9yZUNoZWNrTG9naW4pIHtcclxuICAgICAgdGhpcy5pZ25vcmVDaGVja0xvZ2luID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBNw6l0b2RvIGNvbSBjdXN0b21pemHDp8O1ZXMgcGFyYSBpbmljaWFsaXphw6fDtWVzIGRhIEF1dG9TdG9yYWdlXHJcbiAgICAgIHRoaXMuc3RvcmFnZUluaXRpYWxpemVBdXRvU3RvcmFnZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNMb2dnZWRJblN1Yi5uZXh0KHRydWUpO1xyXG5cclxuICAgIHNldFRpbWVvdXQodGhpcy5yZUNoZWNrTG9naW4uYmluZCh0aGlzKSwgbGVmdFRpbWUgKiAxMDAwKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBsb2dvdXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9faXNDaGVja2luZ0F1dGggPSBmYWxzZTtcclxuICAgIHRoaXMuaXNMb2dnZWRJblN1Yi5uZXh0KGZhbHNlKTtcclxuICAgIHRoaXMuX19VcmxSZWRpcmVjdCA9IFwiL1wiO1xyXG5cclxuICAgIHRoaXMuX19pcCA9IFwiXCI7XHJcbiAgICB0aGlzLl9fdGVuYW50SWQgPSAwO1xyXG4gICAgdGhpcy5fX2luZnJhVXN1YXJpb0lkID0gXCJcIjtcclxuICAgIHRoaXMuX19pbmZyYUVzdGFiSWQgPSBcIlwiO1xyXG4gICAgdGhpcy5fX2luZnJhRXN0YWJOb21lID0gXCJcIjtcclxuICAgIHRoaXMuX19pbmZyYUVtcHJlc2FJZCA9IFwiXCI7XHJcbiAgICB0aGlzLl9faW5mcmFFbXByZXNhTm9tZSA9IFwiXCI7XHJcbiAgICB0aGlzLl9fdXNlciA9IFwiXCI7XHJcbiAgICB0aGlzLl9fdXNlck5hbWUgPSBcIlwiO1xyXG4gICAgdGhpcy5fX2F1dGhUb2tlbiA9IFwiXCI7XHJcbiAgICB0aGlzLl9fZG9taW5pbyA9IFwiXCI7XHJcbiAgICB0aGlzLl9fdG9rZW5QYXlsb2FkID0ge30gYXMgUGF5bG9hZDtcclxuICAgIHRoaXMuX19pc0V4dGVybmFsTG9naW4gPSBmYWxzZTtcclxuXHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLl9fbG9jYWxfa2V5KTtcclxuXHJcbiAgICAvLyBNw6l0b2RvIGNvbSBjdXN0b21pemHDp8O1ZXMgcGFyYSBmaW5hbGl6YcOnw7VlcyBkYSBzdG9yYWdlXHJcbiAgICB0aGlzLnN0b3JhZ2VMb2dvdXQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TmV3VG9rZW5CYWNrKCk6IE9ic2VydmFibGU8UmV0VG9rZW4+IHtcclxuICAgIGxldCB0b2tlbjogVG9rZW4gPSB7XHJcbiAgICAgIGRvbWFpbjogdGhpcy5fX2RvbWluaW8sXHJcbiAgICAgIHVzZXI6IHRoaXMuX191c2VyLFxyXG4gICAgICB0ZW5hbnRJZDogdGhpcy50ZW5hbnRJZCxcclxuICAgICAgdG9rZW46IHRoaXMuYXV0aFRva2VuLFxyXG4gICAgICBpbmZyYVVzdWFyaW9JZDogdGhpcy5fX2luZnJhVXN1YXJpb0lkLFxyXG4gICAgICB1c2VyTmFtZTogdGhpcy5fX3VzZXJOYW1lXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5fQkFTRV9VUkx9L0dldE5ld1Rva2VuYDtcclxuXHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKClcclxuICAgICAgLnNldCgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKVxyXG4gICAgICAuc2V0KCdBdXRob3JpemF0aW9uJyxcclxuICAgICAgICBgQmFzaWMgJHtidG9hKGAke2xvY2FsU3RvcmFnZS5nZXRJdGVtKCdjb25maWdTZXJ2ZXJVc2VyJyl9OiR7bG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2NvbmZpZ1NlcnZlclBhc3N3b3JkJyl9YCl9YFxyXG4gICAgICApO1xyXG5cclxuICAgIHJldHVybiB0aGlzLl9odHRwQ2xpZW50XHJcbiAgICAgIC5wb3N0PFJldFRva2VuPih1cmwsIHRva2VuLCB7ICdoZWFkZXJzJzogaGVhZGVycyB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgIHRhcCgocmVzcG9uc2UpID0+IHtcclxuXHJcbiAgICAgICAgICBpZiAocmVzcG9uc2UuRXJyb3IpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IocmVzcG9uc2UuRXJyb3JNZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXROZXdUb2tlbigpOiBQcm9taXNlPGFueT4ge1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIHRoaXMuZ2V0TmV3VG9rZW5CYWNrKCkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLlRva2VuKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiBlcnJvciA9PiB7XHJcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFJlbm92YSBvIFRva2VuIHF1YW5kbyBlc3RlIGVzdGl2ZXIgdmVuY2lkby5cclxuICAqL1xyXG4gIHB1YmxpYyBhc3luYyByZW5ld1Rva2VuKCkge1xyXG5cclxuICAgIGlmICghdGhpcy5pc0xvZ2dlZEluU3ViIHx8IHRoaXMuX19hdXRoVG9rZW4gPT09IHVuZGVmaW5lZCB8fCB0aGlzLl9fYXV0aFRva2VuID09PSAnJyB8fCB0aGlzLmF1dGhUb2tlbiA9PT0gbnVsbCB8fCB0aGlzLmF1dGhUb2tlbiA9PT0gJycpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpc1JlbmV3VG9rZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxldCBub3dEYXRlOiBudW1iZXIgPSBNYXRoLnJvdW5kKERhdGUubm93KCkgLyAxMDAwKTtcclxuXHJcbiAgICBpZiAodGhpcy50b2tlblBheWxvYWQuZXhwIDw9IG5vd0RhdGUpIHtcclxuICAgICAgaXNSZW5ld1Rva2VuID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgbGVmdFRpbWU6IG51bWJlciA9IHRoaXMudG9rZW5QYXlsb2FkLmV4cCAtIG5vd0RhdGVcclxuXHJcbiAgICBpZiAobGVmdFRpbWUgPD0gMCkge1xyXG4gICAgICBpc1JlbmV3VG9rZW4gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpc1JlbmV3VG9rZW4pIHtcclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdldE5ld1Rva2VuKCk7XHJcblxyXG4gICAgICBpZiAocmVzcG9uc2UgIT09IHVuZGVmaW5lZCAmJiByZXNwb25zZSAhPT0gbnVsbCAmJiByZXNwb25zZSAhPSAnJykge1xyXG4gICAgICAgIHRoaXMuYXV0aFRva2VuID0gcmVzcG9uc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc1ByZVBvcnRhbCgpOiBib29sZWFuIHtcclxuXHJcbiAgICAvLyBJZGVudGlmaWNhIHNlIGEgb3JpZ2VtIMOpIFByZVBvcnRhbFxyXG4gICAgdmFyIHVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xyXG4gICAgdmFyIGlzUHJlUG9ydGFsID0gdXJsLnNlYXJjaFBhcmFtcy5nZXQoXCJQcmVQb3J0YWxcIik7XHJcblxyXG4gICAgaWYgKGlzUHJlUG9ydGFsICE9IG51bGwpIHtcclxuXHJcbiAgICAgIGlmIChpc1ByZVBvcnRhbC50b1N0cmluZygpID09IFwidHJ1ZVwiKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWVcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gZmFsc2VcclxuICAgICAgfVxyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8vICNyZWdpb24gPT09PT09PT09PT4gVVRJTFMgPD09PT09PT09PT1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQcm9wcmllZGFkZXMgQ3VzdG9taXphZGFzIHBhcmEgbyBDb21wb25lbnRlIGF1dGgtc3RvcmFnZS5zZXJ2aWNlLnRzXHJcblxyXG4gIC8vICNyZWdpb24gTcOpdG9kb3MgQ3VzdG9taXphZGFzIHBhcmEgbyBDb21wb25lbnRlIGF1dGgtc3RvcmFnZS5zZXJ2aWNlLnRzXHJcblxyXG4gIC8vIE3DqXRvZG8gZXhlY3V0YWRvIG5vIGF1dGgtc3RvcmFnZS5zZXJ2aWNlLnRzIC0gbcOpdG9kbzogY29uc3RydWN0b3IgKClcclxuICAvLyBVdGlsaXphZG8gcGFyYSBpbmljaWFsaXphw6fDtWVzIGRpdmVyc2FzXHJcbiAgcHVibGljIHN0b3JhZ2VDb25zdHJ1Y3RvcihjYWxsYmFjaz86ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIGlmIChjYWxsYmFjaykge1xyXG4gICAgICBjYWxsYmFjaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTcOpdG9kbyBleGVjdXRhZG8gbm8gYXV0aC1zdG9yYWdlLnNlcnZpY2UudHMgLSBtw6l0b2RvOiBzYXZlTG9jYWxJbnN0YW5jZSAoKVxyXG4gIC8vIFV0aWxpemFkbyBwYXJhIHNhbHZhciBpbmZvcm1hw6fDtWVzIG5vIGxvY2FsU3RvcmFnZVxyXG4gIHB1YmxpYyBzdG9yYWdlU2F2ZUxvY2FsSW5zdGFuY2UoY2FsbGJhY2s/OiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICBpZiAoY2FsbGJhY2spIHtcclxuICAgICAgY2FsbGJhY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIE3DqXRvZG8gZXhlY3V0YWRvIG5vIGF1dGgtc3RvcmFnZS5zZXJ2aWNlLnRzIC0gbcOpdG9kbzogbG9nb3V0ICgpXHJcbiAgLy8gVXRpbGl6YWRvIHBhcmEgaW5pY2lhbGl6YXIgaW5mb3JtYcOnw7VlcyBubyBsb2NhbFN0b3JhZ2UgbmEgbG9nb3V0IGRhIGFwbGljYcOnw6NvXHJcbiAgcHVibGljIHN0b3JhZ2VMb2dvdXQoY2FsbGJhY2s/OiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICBpZiAoY2FsbGJhY2spIHtcclxuICAgICAgY2FsbGJhY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIE3DqXRvZG8gZXhlY3V0YWRvIG5vIGF1dGgtc3RvcmFnZS5zZXJ2aWNlLnRzIC0gbcOpdG9kbzogcmVDaGVja0xvZ2luICgpXHJcbiAgLy8gVXRpbGl6YWRvIHBhcmEgaW5pY2lhbGl6YcOnw7VlcyBkaXZlcnNhcyBxdWFuZG8gbyBMb2dpbiBleGV1dGFkbyB2aWEgUHLDqSBQb3J0YWxcclxuICBwdWJsaWMgc3RvcmFnZUluaXRpYWxpemVBdXRvU3RvcmFnZShjYWxsYmFjaz86ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIGlmIChjYWxsYmFjaykge1xyXG4gICAgICBjYWxsYmFjaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTcOpdG9kbyBleGVjdXRhZG8gcGFyYSBzYWx2YXIgYXMgcHJvcHJpZWRhZGVzIG5vIExvY2FsU3RvcmFnZSAobsOjbyBkZXZlIHNlciBtb2RpZmljYWRvKVxyXG4gIHByaXZhdGUgYXN5bmMgX19hdXRoU3RvcmFnZVNhdmVMb2NhbEluc3RhbmNlKCk6IFByb21pc2U8dm9pZD4ge1xyXG5cclxuICAgIGlmICh0aGlzLl9faXNTYXZpbmcpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLl9faXNTYXZpbmcgPSB0cnVlXHJcblxyXG4gICAgdGhpcy5zdG9yYWdlU2F2ZUxvY2FsSW5zdGFuY2UoKTtcclxuXHJcbiAgICB0aGlzLl9fYXV0aFN0b3JhZ2VOb3RTYXZpbmcoKVxyXG4gIH1cclxuXHJcbiAgLy8gTcOpdG9kbyBleGVjdXRhZG8gcGFyYSBzYWx2YXIgYXMgcHJvcHJpZWRhZGVzIG5vIExvY2FsU3RvcmFnZSAobsOjbyBkZXZlIHNlciBtb2RpZmljYWRvKVxyXG4gIHByaXZhdGUgYXN5bmMgX19hdXRoU3RvcmFnZU5vdFNhdmluZygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuX19pc1NhdmluZyA9IGZhbHNlXHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uID09PT09PT09PT0+IFVUSUxTIDw9PT09PT09PT09XHJcblxyXG59XHJcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXNwLWF1dGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtYXV0aC9zcmMvbmd4LXNwLWF1dGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,37 @@
1
+ export * from './lib/auth.module';
2
+ /** Services */
3
+ export * from './lib/auth.service';
4
+ export * from './lib/components/menu-lateral/menu-services.service';
5
+ export * from './lib/components/menu-lateral/menu/list-estab.service';
6
+ export * from './lib/custom/custom-login.service';
7
+ export * from './lib/custom/custom-menu.service';
8
+ export * from './lib/custom/menu-config.service';
9
+ export * from './lib/environments/environments.service';
10
+ export * from './lib/server/server.service';
11
+ export * from './lib/storage/auth-storage.service';
12
+ /** Components */
13
+ export * from './lib/components/login/login.component';
14
+ export * from './lib/components/menu-lateral/dropdown/primary-dropdown/primary-dropdown.component';
15
+ export * from './lib/components/menu-lateral/dropdown/secondary-dropdown/secondary-dropdown.component';
16
+ export * from './lib/components/menu-lateral/menu/menu-lateral.component';
17
+ export * from './lib/components/menu-lateral/menu/selecao-estabelecimentos-modal/selecao-estabelecimentos-modal.component';
18
+ export * from './lib/components/menu-lateral/submenus/dynamic-menu/dynamic-menu.component';
19
+ export * from './lib/components/menu-lateral/submenus/notif-submenu/notif-submenu.component';
20
+ export * from './lib/components/nova-senha/nova-senhacomponent';
21
+ /** Models */
22
+ export * from './lib/components/menu-lateral/model/imenu-item-structure.model';
23
+ export * from './lib/components/menu-lateral/model/imenu.model';
24
+ export * from './lib/components/menu-lateral/model/infrausuarioimg';
25
+ export * from './lib/custom/models/icustom-login-service';
26
+ export * from './lib/custom/models/icustom-menu-service';
27
+ export * from './lib/custom/models/imenu-config';
28
+ export * from './lib/environments/models/ienvironments';
29
+ export * from './lib/models/custom-propriedades-login';
30
+ /** Guards */
31
+ export * from './lib/guards/auth-guard';
32
+ export * from './lib/guards/external-login-guard';
33
+ export * from './lib/guards/login-guard';
34
+ /** Interceptors */
35
+ export * from './lib/interceptors/auth-aplic.interceptor';
36
+ export * from './lib/interceptors/auth-infra.interceptor';
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1zcC1hdXRoL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQW1CLENBQUM7QUFFbEMsZUFBZTtBQUNmLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG9DQUFvQyxDQUFDO0FBR25ELGlCQUFpQjtBQUNqQixjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsb0ZBQW9GLENBQUM7QUFDbkcsY0FBYyx3RkFBd0YsQ0FBQztBQUN2RyxjQUFjLDJEQUEyRCxDQUFDO0FBQzFFLGNBQWMsNEdBQTRHLENBQUM7QUFDM0gsY0FBYyw0RUFBNEUsQ0FBQztBQUMzRixjQUFjLDhFQUE4RSxDQUFDO0FBQzdGLGNBQWMsaURBQWlELENBQUM7QUFFaEUsYUFBYTtBQUNiLGNBQWMsZ0VBQWdFLENBQUM7QUFDL0UsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyx3Q0FBd0MsQ0FBQztBQUd2RCxhQUFhO0FBQ2IsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsMEJBQTBCLENBQUM7QUFFekMsbUJBQW1CO0FBQ25CLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYywyQ0FBMkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGgubW9kdWxlJztcclxuXHJcbi8qKiBTZXJ2aWNlcyAqL1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRoLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21lbnUtbGF0ZXJhbC9tZW51LXNlcnZpY2VzLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21lbnUtbGF0ZXJhbC9tZW51L2xpc3QtZXN0YWIuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2N1c3RvbS9jdXN0b20tbG9naW4uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2N1c3RvbS9jdXN0b20tbWVudS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY3VzdG9tL21lbnUtY29uZmlnLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnRzLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2ZXIvc2VydmVyLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdG9yYWdlL2F1dGgtc3RvcmFnZS5zZXJ2aWNlJztcclxuXHJcblxyXG4vKiogQ29tcG9uZW50cyAqL1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xvZ2luL2xvZ2luLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbWVudS1sYXRlcmFsL2Ryb3Bkb3duL3ByaW1hcnktZHJvcGRvd24vcHJpbWFyeS1kcm9wZG93bi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21lbnUtbGF0ZXJhbC9kcm9wZG93bi9zZWNvbmRhcnktZHJvcGRvd24vc2Vjb25kYXJ5LWRyb3Bkb3duLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbWVudS1sYXRlcmFsL21lbnUvbWVudS1sYXRlcmFsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbWVudS1sYXRlcmFsL21lbnUvc2VsZWNhby1lc3RhYmVsZWNpbWVudG9zLW1vZGFsL3NlbGVjYW8tZXN0YWJlbGVjaW1lbnRvcy1tb2RhbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21lbnUtbGF0ZXJhbC9zdWJtZW51cy9keW5hbWljLW1lbnUvZHluYW1pYy1tZW51LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbWVudS1sYXRlcmFsL3N1Ym1lbnVzL25vdGlmLXN1Ym1lbnUvbm90aWYtc3VibWVudS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL25vdmEtc2VuaGEvbm92YS1zZW5oYWNvbXBvbmVudCc7XHJcblxyXG4vKiogTW9kZWxzICovXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbWVudS1sYXRlcmFsL21vZGVsL2ltZW51LWl0ZW0tc3RydWN0dXJlLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tZW51LWxhdGVyYWwvbW9kZWwvaW1lbnUubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21lbnUtbGF0ZXJhbC9tb2RlbC9pbmZyYXVzdWFyaW9pbWcnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jdXN0b20vbW9kZWxzL2ljdXN0b20tbG9naW4tc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2N1c3RvbS9tb2RlbHMvaWN1c3RvbS1tZW51LXNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jdXN0b20vbW9kZWxzL2ltZW51LWNvbmZpZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Vudmlyb25tZW50cy9tb2RlbHMvaWVudmlyb25tZW50cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9jdXN0b20tcHJvcHJpZWRhZGVzLWxvZ2luJztcclxuXHJcblxyXG4vKiogR3VhcmRzICovXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2d1YXJkcy9hdXRoLWd1YXJkJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZ3VhcmRzL2V4dGVybmFsLWxvZ2luLWd1YXJkJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZ3VhcmRzL2xvZ2luLWd1YXJkJztcclxuXHJcbi8qKiBJbnRlcmNlcHRvcnMgKi9cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJjZXB0b3JzL2F1dGgtYXBsaWMuaW50ZXJjZXB0b3InO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmNlcHRvcnMvYXV0aC1pbmZyYS5pbnRlcmNlcHRvcic7XHJcblxyXG5cclxuIl19