@po-ui/ng-components 17.7.0 → 17.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/po-table/po-table-base.component.mjs +17 -2
- package/esm2022/lib/components/po-table/po-table-column-label/po-table-column-label.component.mjs +4 -5
- package/esm2022/lib/components/po-table/po-table.component.mjs +7 -7
- package/esm2022/lib/services/index.mjs +2 -1
- package/esm2022/lib/services/po-theme/enum/po-theme-type.enum.mjs +27 -0
- package/esm2022/lib/services/po-theme/helpers/po-theme-dark-defaults.constant.mjs +203 -0
- package/esm2022/lib/services/po-theme/helpers/po-theme-light-defaults.constant.mjs +134 -0
- package/esm2022/lib/services/po-theme/helpers/po-theme-poui.constant.mjs +31 -0
- package/esm2022/lib/services/po-theme/index.mjs +10 -0
- package/esm2022/lib/services/po-theme/interfaces/po-theme-color.interface.mjs +3 -0
- package/esm2022/lib/services/po-theme/interfaces/po-theme-tokens.interface.mjs +2 -0
- package/esm2022/lib/services/po-theme/interfaces/po-theme.interface.mjs +2 -0
- package/esm2022/lib/services/po-theme/po-theme.module.mjs +27 -0
- package/esm2022/lib/services/po-theme/po-theme.service.mjs +260 -0
- package/esm2022/lib/services/services.module.mjs +14 -7
- package/fesm2022/po-ui-ng-components.mjs +711 -20
- package/fesm2022/po-ui-ng-components.mjs.map +1 -1
- package/lib/components/po-table/po-table-base.component.d.ts +14 -1
- package/lib/components/po-table/po-table-column-label/po-table-column-label.component.d.ts +1 -2
- package/lib/services/index.d.ts +1 -0
- package/lib/services/po-theme/enum/po-theme-type.enum.d.ts +25 -0
- package/lib/services/po-theme/helpers/po-theme-dark-defaults.constant.d.ts +116 -0
- package/lib/services/po-theme/helpers/po-theme-light-defaults.constant.d.ts +41 -0
- package/lib/services/po-theme/helpers/po-theme-poui.constant.d.ts +11 -0
- package/lib/services/po-theme/index.d.ts +9 -0
- package/lib/services/po-theme/interfaces/po-theme-color.interface.d.ts +374 -0
- package/lib/services/po-theme/interfaces/po-theme-tokens.interface.d.ts +61 -0
- package/lib/services/po-theme/interfaces/po-theme.interface.d.ts +28 -0
- package/lib/services/po-theme/po-theme.module.d.ts +9 -0
- package/lib/services/po-theme/po-theme.service.d.ts +129 -0
- package/lib/services/services.module.d.ts +2 -1
- package/package.json +4 -4
- package/po-ui-ng-components-17.9.0.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-update/v14/index.js +1 -1
- package/schematics/ng-update/v15/index.js +1 -1
- package/schematics/ng-update/v16/index.js +1 -1
- package/schematics/ng-update/v17/index.js +1 -1
- package/schematics/ng-update/v2/index.js +1 -1
- package/schematics/ng-update/v3/index.js +1 -1
- package/schematics/ng-update/v4/index.js +1 -1
- package/schematics/ng-update/v5/index.js +1 -1
- package/schematics/ng-update/v6/index.js +1 -1
- package/po-ui-ng-components-17.7.0.tgz +0 -0
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { Inject, Injectable } from '@angular/core';
|
|
3
|
+
import { PoThemeTypeEnum } from './enum/po-theme-type.enum';
|
|
4
|
+
import { poThemeDefault } from './helpers/po-theme-poui.constant';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* @description
|
|
8
|
+
*
|
|
9
|
+
* O `PoThemeService` possibilita a personalização das cores do tema padrão do `PO-UI`, permitindo a alteração dos valores das variáveis de estilo usadas no CSS padrão.
|
|
10
|
+
*
|
|
11
|
+
* > Para saber mais sobre como customizar as cores do tema padrão verifique o item [Customizando cores do tema padrão](https://po-ui.io/guides/colors-customization) na aba `Guias`.
|
|
12
|
+
*
|
|
13
|
+
* > Obs.: Não está documentado aqui e não indicamos a customização das cores de 'feedback' por motivos de acessibilidade e usabilidade.
|
|
14
|
+
*/
|
|
15
|
+
export class PoThemeService {
|
|
16
|
+
window;
|
|
17
|
+
document;
|
|
18
|
+
renderer;
|
|
19
|
+
theme = poThemeDefault;
|
|
20
|
+
constructor(window, document, rendererFactory) {
|
|
21
|
+
this.window = window;
|
|
22
|
+
this.document = document;
|
|
23
|
+
this.renderer = rendererFactory.createRenderer(null, null);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Define o tema a ser aplicado no componente, de acordo com o tipo de tema especificado.
|
|
27
|
+
*
|
|
28
|
+
* Este método define o tema a ser aplicado no componente com base no objeto `theme` fornecido e no tipo de tema especificado.
|
|
29
|
+
* Ele atualiza as propriedades do componente para refletir o tema selecionado, como cores, estilos e comportamentos.
|
|
30
|
+
*
|
|
31
|
+
* @param {PoTheme} theme - Objeto contendo as definições de tema a serem aplicadas no componente.
|
|
32
|
+
* @param {PoThemeTypeEnum} [themeType=PoThemeTypeEnum.light] - (Opcional) Tipo de tema a ser aplicado, podendo ser 'light' (claro) ou 'dark' (escuro). Por padrão, o tema claro é aplicado.
|
|
33
|
+
*/
|
|
34
|
+
setTheme(theme, themeType = PoThemeTypeEnum.light) {
|
|
35
|
+
// Change theme name, remove special characteres and number, replace space with dash
|
|
36
|
+
theme.name = theme.name
|
|
37
|
+
.toLowerCase()
|
|
38
|
+
.replace(/[^a-zA-Z ]/g, '')
|
|
39
|
+
.replace(/\s+/g, '-');
|
|
40
|
+
theme.active = themeType;
|
|
41
|
+
const _themeType = theme.type[PoThemeTypeEnum[themeType]];
|
|
42
|
+
if (!_themeType) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const colorStyles = _themeType.color ? this.generateThemeStyles(_themeType.color) : '';
|
|
46
|
+
const perComponentStyles = _themeType.perComponent ? this.generatePerComponentStyles(_themeType.perComponent) : '';
|
|
47
|
+
const onRootStyles = _themeType.onRoot ? this.generateAdditionalStyles(_themeType.onRoot) : '';
|
|
48
|
+
const additionalStyles = this.generateAdditionalStyles(_themeType);
|
|
49
|
+
const combinedStyles = `
|
|
50
|
+
.${theme.name}-${PoThemeTypeEnum[themeType]}:root {
|
|
51
|
+
${colorStyles}
|
|
52
|
+
${perComponentStyles}
|
|
53
|
+
${onRootStyles}
|
|
54
|
+
${additionalStyles}
|
|
55
|
+
}`;
|
|
56
|
+
this.applyThemeStyles(combinedStyles);
|
|
57
|
+
this.changeThemeType(theme);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* @docsPrivate
|
|
61
|
+
*
|
|
62
|
+
* Gera estilos adicionais com base nos tokens de tema fornecidos, excluindo os tokens de cor.
|
|
63
|
+
* @param theme Os tokens de tema contendo os estilos adicionais a serem gerados.
|
|
64
|
+
* @returns Uma string contendo os estilos adicionais formatados.
|
|
65
|
+
*/
|
|
66
|
+
generateAdditionalStyles(theme) {
|
|
67
|
+
return Object.entries(theme)
|
|
68
|
+
.filter(([key]) => !['color', 'perComponent', 'onRoot'].includes(key))
|
|
69
|
+
.map(([key, value]) => `${key}: ${value};`)
|
|
70
|
+
.join(' ');
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* @docsPrivate
|
|
74
|
+
*
|
|
75
|
+
* Aplica os estilos de tema ao documento.
|
|
76
|
+
* @param styleCss Os estilos CSS a serem aplicados.
|
|
77
|
+
*/
|
|
78
|
+
applyThemeStyles(styleCss) {
|
|
79
|
+
const styleElement = this.createStyleElement(styleCss);
|
|
80
|
+
const existingStyleElement = document.head.querySelector('#pouiTheme');
|
|
81
|
+
if (existingStyleElement) {
|
|
82
|
+
this.renderer.removeChild(document.head, existingStyleElement);
|
|
83
|
+
}
|
|
84
|
+
this.renderer.appendChild(document.head, styleElement);
|
|
85
|
+
}
|
|
86
|
+
changeThemeType(theme) {
|
|
87
|
+
this.cleanThemeActive();
|
|
88
|
+
this.setThemeActive(theme);
|
|
89
|
+
document.getElementsByTagName('html')[0].classList.add(...[`${theme.name}-${PoThemeTypeEnum[theme.active]}`]);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Persiste e define o tema do aplicativo com base nos dados armazenados.
|
|
93
|
+
*
|
|
94
|
+
* Este método recupera os dados do tema armazenados e os aplica ao aplicativo.
|
|
95
|
+
*
|
|
96
|
+
* @returns {PoTheme} Recupera o tema armazenado.
|
|
97
|
+
*/
|
|
98
|
+
persistThemeActive() {
|
|
99
|
+
const _theme = this.getThemeActive();
|
|
100
|
+
this.setTheme(_theme, _theme.active);
|
|
101
|
+
return _theme;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Altera o tipo do tema armazenado e aplica os novos estilos ao documento.
|
|
105
|
+
*
|
|
106
|
+
* Este método altera o tipo do tema armazenado ativo (light/dark)
|
|
107
|
+
*
|
|
108
|
+
* @param {PoThemeTypeEnum} themeType O tipo de tema a ser aplicado, light ou dark.
|
|
109
|
+
*/
|
|
110
|
+
changeCurrentThemeType(type) {
|
|
111
|
+
const _theme = this.getThemeActive();
|
|
112
|
+
_theme.active = type;
|
|
113
|
+
this.changeThemeType(_theme);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Método remove o tema armazenado e limpa todos os estilos de tema
|
|
117
|
+
* aplicados ao documento.
|
|
118
|
+
*/
|
|
119
|
+
cleanThemeActive() {
|
|
120
|
+
const _theme = this.getThemeActive();
|
|
121
|
+
document.getElementsByTagName('html')[0].classList.remove(`${_theme.name}-${PoThemeTypeEnum[_theme.active]}`);
|
|
122
|
+
localStorage.removeItem('totvs-theme');
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* @docsPrivate
|
|
126
|
+
*
|
|
127
|
+
* Este método define um dados do tema e o armazena.
|
|
128
|
+
* @param theme Os tokens de tema contendo os estilos adicionais a serem gerados.
|
|
129
|
+
*/
|
|
130
|
+
setThemeActive(theme) {
|
|
131
|
+
if (theme) {
|
|
132
|
+
localStorage.setItem('totvs-theme', JSON.stringify(theme));
|
|
133
|
+
this.theme = theme;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Retorna o tema ativo como um observable.
|
|
138
|
+
* @returns {PoTheme} Tema ativo.
|
|
139
|
+
*/
|
|
140
|
+
getThemeActive() {
|
|
141
|
+
try {
|
|
142
|
+
const themeData = JSON.parse(localStorage.getItem('totvs-theme'));
|
|
143
|
+
if (themeData && JSON.stringify(themeData) !== JSON.stringify(this.theme)) {
|
|
144
|
+
this.theme = themeData;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
console.error('Erro ao obter o tema do armazenamento local:', error);
|
|
149
|
+
}
|
|
150
|
+
return this.theme;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* @docsPrivate
|
|
154
|
+
*
|
|
155
|
+
* Gera estilos CSS com base nos tokens de cores fornecidos.
|
|
156
|
+
* @param themeColor Os tokens de cor a serem usados para gerar os estilos.
|
|
157
|
+
* @returns Uma string contendo os estilos CSS gerados.
|
|
158
|
+
*/
|
|
159
|
+
createStyleElement(css) {
|
|
160
|
+
const styleElement = this.renderer.createElement('style');
|
|
161
|
+
styleElement.id = 'pouiTheme';
|
|
162
|
+
this.renderer.appendChild(styleElement, this.renderer.createText(css));
|
|
163
|
+
return styleElement;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* @docsPrivate
|
|
167
|
+
*
|
|
168
|
+
* Gera estilos CSS com base nos tokens de cores fornecidos.
|
|
169
|
+
* @param themeColor Os tokens de cor a serem usados para gerar os estilos.
|
|
170
|
+
* @returns Uma string contendo os estilos CSS gerados.
|
|
171
|
+
*/
|
|
172
|
+
generateThemeStyles(themeColor) {
|
|
173
|
+
const selectBgIconStyle = this.getSelectBgIconsStyle(themeColor);
|
|
174
|
+
return [
|
|
175
|
+
Object.entries(themeColor)
|
|
176
|
+
.flatMap(([type, values]) => Object.entries(values).flatMap(([tonality, tonalityValues]) => {
|
|
177
|
+
if (type === 'action') {
|
|
178
|
+
return [`--color-${type}-${tonality}: ${tonalityValues};`];
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
return Object.entries(tonalityValues).map(([level, colorValue]) => `--color-${type}-${tonality}-${level}: ${colorValue};`);
|
|
182
|
+
}
|
|
183
|
+
}))
|
|
184
|
+
.join(''),
|
|
185
|
+
selectBgIconStyle
|
|
186
|
+
].join('');
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* @docsPrivate
|
|
190
|
+
*
|
|
191
|
+
* Gera estilos CSS com base nos tokens per Component fornecidos.
|
|
192
|
+
* @param themePerComponent Os tokens de cor a serem usados para gerar os estilos.
|
|
193
|
+
* @returns Uma string contendo os estilos CSS gerados.
|
|
194
|
+
*/
|
|
195
|
+
generatePerComponentStyles(themePerComponent) {
|
|
196
|
+
return Object.entries(themePerComponent)
|
|
197
|
+
.flatMap(([type, values]) => Object.entries(values).flatMap(([level, colorValue]) => [`${type} {${level}: ${colorValue};};`]))
|
|
198
|
+
.join('');
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Define o tema atual como o tema "PoUI Padrão".
|
|
202
|
+
*
|
|
203
|
+
* @param {PoThemeTypeEnum} type O tipo de Tema a ser aplicado, light / dark.
|
|
204
|
+
*/
|
|
205
|
+
setDefaultTheme(type) {
|
|
206
|
+
this.setTheme(poThemeDefault, type);
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* @docsPrivate
|
|
210
|
+
*
|
|
211
|
+
* Retorna o estilo CSS para o fundo dos ícones do componente po-select, com base nas cores do tema.
|
|
212
|
+
*
|
|
213
|
+
* @param {PoThemeColor} themeColor - Objeto contendo as cores do tema.
|
|
214
|
+
* @returns {string} - Estilo CSS para o fundo dos ícones do po-select.
|
|
215
|
+
*/
|
|
216
|
+
getSelectBgIconsStyle(themeColor) {
|
|
217
|
+
let selectBgIcon = '';
|
|
218
|
+
if (themeColor?.brand?.['01']?.dark) {
|
|
219
|
+
selectBgIcon += `po-select { --background-image: url("${this.getSelectBgIcon(themeColor.brand['01'].dark)}"); };`;
|
|
220
|
+
}
|
|
221
|
+
if (themeColor?.feedback?.negative?.base)
|
|
222
|
+
selectBgIcon += `po-select.ng-dirty.ng-invalid select { --background-image: url("${this.getSelectBgIcon(themeColor.feedback.negative.base)}"); };`;
|
|
223
|
+
if (themeColor?.neutral?.light?.['30'])
|
|
224
|
+
selectBgIcon += `select:disabled { --background-image: url("${this.getSelectBgIcon(themeColor.neutral.light['30'])}"); };`;
|
|
225
|
+
return selectBgIcon;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* @docsPrivate
|
|
229
|
+
*
|
|
230
|
+
* Retorna a imagem SVG utilizada como fundo do po-select.
|
|
231
|
+
*
|
|
232
|
+
* @param {string} color Cor da Imagem - Utilizada no atributo 'fill'.
|
|
233
|
+
* @returns {string} Imagem SVG utilizada no po-select.
|
|
234
|
+
*/
|
|
235
|
+
getSelectBgIcon(color) {
|
|
236
|
+
let svg = `"data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' `;
|
|
237
|
+
svg = svg.concat(`xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' `);
|
|
238
|
+
svg = svg.concat(`d='M18.707 8.29301C18.316 7.90201 17.684 7.90201 17.293 8.29301L12 13.586L6.70701 `);
|
|
239
|
+
svg = svg.concat(`8.29301C6.31601 7.90201 5.68401 7.90201 5.29301 8.29301C4.90201 8.68401 4.90201 `);
|
|
240
|
+
svg = svg.concat(`9.31601 5.29301 9.70701L11.293 15.707C11.488 15.902 11.744 16 12 16C12.256 16 12.512 `);
|
|
241
|
+
svg = svg.concat(`15.902 12.707 15.707L18.707 9.70701C19.098 9.31601 19.098 8.68401 18.707 8.29301Z' `);
|
|
242
|
+
svg = svg.concat(`fill='%23${color}'/%3E%3C/svg%3E%0A");`);
|
|
243
|
+
return svg;
|
|
244
|
+
}
|
|
245
|
+
static ɵfac = function PoThemeService_Factory(t) { return new (t || PoThemeService)(i0.ɵɵinject('Window'), i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i0.RendererFactory2)); };
|
|
246
|
+
static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PoThemeService, factory: PoThemeService.ɵfac, providedIn: 'root' });
|
|
247
|
+
}
|
|
248
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoThemeService, [{
|
|
249
|
+
type: Injectable,
|
|
250
|
+
args: [{
|
|
251
|
+
providedIn: 'root'
|
|
252
|
+
}]
|
|
253
|
+
}], () => [{ type: Window, decorators: [{
|
|
254
|
+
type: Inject,
|
|
255
|
+
args: ['Window']
|
|
256
|
+
}] }, { type: Document, decorators: [{
|
|
257
|
+
type: Inject,
|
|
258
|
+
args: [DOCUMENT]
|
|
259
|
+
}] }, { type: i0.RendererFactory2 }], null); })();
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGhlbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvc2VydmljZXMvcG8tdGhlbWUvcG8tdGhlbWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQStCLE1BQU0sZUFBZSxDQUFDO0FBRWhGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBS2xFOzs7Ozs7OztHQVFHO0FBSUgsTUFBTSxPQUFPLGNBQWM7SUFLRztJQUNBO0lBTHBCLFFBQVEsQ0FBWTtJQUNwQixLQUFLLEdBQVksY0FBYyxDQUFDO0lBRXhDLFlBQzRCLE1BQWMsRUFDZCxRQUFrQixFQUM1QyxlQUFpQztRQUZQLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsUUFBUSxDQUFDLEtBQWMsRUFBRSxZQUE2QixlQUFlLENBQUMsS0FBSztRQUN6RSxvRkFBb0Y7UUFDcEYsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSTthQUNwQixXQUFXLEVBQUU7YUFDYixPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQzthQUMxQixPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBRXpCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLE9BQU87U0FDUjtRQUVELE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN2RixNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNuSCxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDL0YsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFbkUsTUFBTSxjQUFjLEdBQUc7U0FDbEIsS0FBSyxDQUFDLElBQUksSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDO1VBQ3ZDLFdBQVc7VUFDWCxrQkFBa0I7VUFDbEIsWUFBWTtVQUNaLGdCQUFnQjtRQUNsQixDQUFDO1FBRUwsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLHdCQUF3QixDQUFDLEtBQW9CO1FBQ25ELE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7YUFDekIsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3JFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsS0FBSyxLQUFLLEdBQUcsQ0FBQzthQUMxQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDZixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxnQkFBZ0IsQ0FBQyxRQUFnQjtRQUN2QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkQsTUFBTSxvQkFBb0IsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV2RSxJQUFJLG9CQUFvQixFQUFFO1lBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztTQUNoRTtRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVPLGVBQWUsQ0FBQyxLQUFjO1FBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxrQkFBa0I7UUFDaEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsc0JBQXNCLENBQUMsSUFBcUI7UUFDMUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILGdCQUFnQjtRQUNkLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxjQUFjLENBQUMsS0FBYztRQUNuQyxJQUFJLEtBQUssRUFBRTtZQUNULFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxjQUFjO1FBQ1osSUFBSTtZQUNGLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ2xFLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3pFLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO2FBQ3hCO1NBQ0Y7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLE9BQU8sQ0FBQyxLQUFLLENBQUMsOENBQThDLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDdEU7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLGtCQUFrQixDQUFDLEdBQVc7UUFDcEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUQsWUFBWSxDQUFDLEVBQUUsR0FBRyxXQUFXLENBQUM7UUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdkUsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLG1CQUFtQixDQUFDLFVBQXdCO1FBQ2xELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWpFLE9BQU87WUFDTCxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztpQkFDdkIsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUMxQixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxFQUFFLEVBQUU7Z0JBQzVELElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRTtvQkFDckIsT0FBTyxDQUFDLFdBQVcsSUFBSSxJQUFJLFFBQVEsS0FBSyxjQUFjLEdBQUcsQ0FBQyxDQUFDO2lCQUM1RDtxQkFBTTtvQkFDTCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsR0FBRyxDQUN2QyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLElBQUksSUFBSSxRQUFRLElBQUksS0FBSyxLQUFLLFVBQVUsR0FBRyxDQUNoRixDQUFDO2lCQUNIO1lBQ0gsQ0FBQyxDQUFDLENBQ0g7aUJBQ0EsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNYLGlCQUFpQjtTQUNsQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSywwQkFBMEIsQ0FBQyxpQkFBc0I7UUFDdkQsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDO2FBQ3JDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FDMUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxLQUFLLEtBQUssVUFBVSxLQUFLLENBQUMsQ0FBQyxDQUNqRzthQUNBLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNkLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZUFBZSxDQUFDLElBQXFCO1FBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0sscUJBQXFCLENBQUMsVUFBd0I7UUFDcEQsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBRXRCLElBQUksVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRTtZQUNuQyxZQUFZLElBQUksd0NBQXdDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ25IO1FBQ0QsSUFBSSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJO1lBQ3RDLFlBQVksSUFBSSxtRUFBbUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRXJKLElBQUksVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDcEMsWUFBWSxJQUFJLDhDQUE4QyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUU3SCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLGVBQWUsQ0FBQyxLQUFhO1FBQ25DLElBQUksR0FBRyxHQUFXLG9GQUFvRixDQUFDO1FBRXZHLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLHVGQUF1RixDQUFDLENBQUM7UUFDMUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsb0ZBQW9GLENBQUMsQ0FBQztRQUN2RyxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxrRkFBa0YsQ0FBQyxDQUFDO1FBQ3JHLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLHVGQUF1RixDQUFDLENBQUM7UUFDMUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMscUZBQXFGLENBQUMsQ0FBQztRQUN4RyxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEtBQUssdUJBQXVCLENBQUMsQ0FBQztRQUUzRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7d0VBclFVLGNBQWMsY0FLZixRQUFRLGVBQ1IsUUFBUTtnRUFOUCxjQUFjLFdBQWQsY0FBYyxtQkFGYixNQUFNOztpRkFFUCxjQUFjO2NBSDFCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7c0JBTUksTUFBTTt1QkFBQyxRQUFROztzQkFDZixNQUFNO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIFJlbmRlcmVyMiwgUmVuZGVyZXJGYWN0b3J5MiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQb1RoZW1lVHlwZUVudW0gfSBmcm9tICcuL2VudW0vcG8tdGhlbWUtdHlwZS5lbnVtJztcbmltcG9ydCB7IHBvVGhlbWVEZWZhdWx0IH0gZnJvbSAnLi9oZWxwZXJzL3BvLXRoZW1lLXBvdWkuY29uc3RhbnQnO1xuaW1wb3J0IHsgUG9UaGVtZUNvbG9yIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXRoZW1lLWNvbG9yLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RoZW1lVG9rZW5zIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXRoZW1lLXRva2Vucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9UaGVtZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby10aGVtZS5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIE8gYFBvVGhlbWVTZXJ2aWNlYCBwb3NzaWJpbGl0YSBhIHBlcnNvbmFsaXphw6fDo28gZGFzIGNvcmVzIGRvIHRlbWEgcGFkcsOjbyBkbyBgUE8tVUlgLCBwZXJtaXRpbmRvIGEgYWx0ZXJhw6fDo28gZG9zIHZhbG9yZXMgZGFzIHZhcmnDoXZlaXMgZGUgZXN0aWxvIHVzYWRhcyBubyBDU1MgcGFkcsOjby5cbiAqXG4gKiA+IFBhcmEgc2FiZXIgbWFpcyBzb2JyZSBjb21vIGN1c3RvbWl6YXIgYXMgY29yZXMgZG8gdGVtYSBwYWRyw6NvIHZlcmlmaXF1ZSBvIGl0ZW0gW0N1c3RvbWl6YW5kbyBjb3JlcyBkbyB0ZW1hIHBhZHLDo29dKGh0dHBzOi8vcG8tdWkuaW8vZ3VpZGVzL2NvbG9ycy1jdXN0b21pemF0aW9uKSBuYSBhYmEgYEd1aWFzYC5cbiAqXG4gKiA+IE9icy46IE7Do28gZXN0w6EgZG9jdW1lbnRhZG8gYXF1aSBlIG7Do28gaW5kaWNhbW9zIGEgY3VzdG9taXphw6fDo28gZGFzIGNvcmVzIGRlICdmZWVkYmFjaycgcG9yIG1vdGl2b3MgZGUgYWNlc3NpYmlsaWRhZGUgZSB1c2FiaWxpZGFkZS5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUG9UaGVtZVNlcnZpY2Uge1xuICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjI7XG4gIHByaXZhdGUgdGhlbWU6IFBvVGhlbWUgPSBwb1RoZW1lRGVmYXVsdDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCdXaW5kb3cnKSBwcml2YXRlIHdpbmRvdzogV2luZG93LFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgIHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MlxuICApIHtcbiAgICB0aGlzLnJlbmRlcmVyID0gcmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSBvIHRlbWEgYSBzZXIgYXBsaWNhZG8gbm8gY29tcG9uZW50ZSwgZGUgYWNvcmRvIGNvbSBvIHRpcG8gZGUgdGVtYSBlc3BlY2lmaWNhZG8uXG4gICAqXG4gICAqIEVzdGUgbcOpdG9kbyBkZWZpbmUgbyB0ZW1hIGEgc2VyIGFwbGljYWRvIG5vIGNvbXBvbmVudGUgY29tIGJhc2Ugbm8gb2JqZXRvIGB0aGVtZWAgZm9ybmVjaWRvIGUgbm8gdGlwbyBkZSB0ZW1hIGVzcGVjaWZpY2Fkby5cbiAgICogRWxlIGF0dWFsaXphIGFzIHByb3ByaWVkYWRlcyBkbyBjb21wb25lbnRlIHBhcmEgcmVmbGV0aXIgbyB0ZW1hIHNlbGVjaW9uYWRvLCBjb21vIGNvcmVzLCBlc3RpbG9zIGUgY29tcG9ydGFtZW50b3MuXG4gICAqXG4gICAqIEBwYXJhbSB7UG9UaGVtZX0gdGhlbWUgLSBPYmpldG8gY29udGVuZG8gYXMgZGVmaW5pw6fDtWVzIGRlIHRlbWEgYSBzZXJlbSBhcGxpY2FkYXMgbm8gY29tcG9uZW50ZS5cbiAgICogQHBhcmFtIHtQb1RoZW1lVHlwZUVudW19IFt0aGVtZVR5cGU9UG9UaGVtZVR5cGVFbnVtLmxpZ2h0XSAtIChPcGNpb25hbCkgVGlwbyBkZSB0ZW1hIGEgc2VyIGFwbGljYWRvLCBwb2RlbmRvIHNlciAnbGlnaHQnIChjbGFybykgb3UgJ2RhcmsnIChlc2N1cm8pLiBQb3IgcGFkcsOjbywgbyB0ZW1hIGNsYXJvIMOpIGFwbGljYWRvLlxuICAgKi9cbiAgc2V0VGhlbWUodGhlbWU6IFBvVGhlbWUsIHRoZW1lVHlwZTogUG9UaGVtZVR5cGVFbnVtID0gUG9UaGVtZVR5cGVFbnVtLmxpZ2h0KTogdm9pZCB7XG4gICAgLy8gQ2hhbmdlIHRoZW1lIG5hbWUsIHJlbW92ZSBzcGVjaWFsIGNoYXJhY3RlcmVzIGFuZCBudW1iZXIsIHJlcGxhY2Ugc3BhY2Ugd2l0aCBkYXNoXG4gICAgdGhlbWUubmFtZSA9IHRoZW1lLm5hbWVcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAucmVwbGFjZSgvW15hLXpBLVogXS9nLCAnJylcbiAgICAgIC5yZXBsYWNlKC9cXHMrL2csICctJyk7XG4gICAgdGhlbWUuYWN0aXZlID0gdGhlbWVUeXBlO1xuXG4gICAgY29uc3QgX3RoZW1lVHlwZSA9IHRoZW1lLnR5cGVbUG9UaGVtZVR5cGVFbnVtW3RoZW1lVHlwZV1dO1xuICAgIGlmICghX3RoZW1lVHlwZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbG9yU3R5bGVzID0gX3RoZW1lVHlwZS5jb2xvciA/IHRoaXMuZ2VuZXJhdGVUaGVtZVN0eWxlcyhfdGhlbWVUeXBlLmNvbG9yKSA6ICcnO1xuICAgIGNvbnN0IHBlckNvbXBvbmVudFN0eWxlcyA9IF90aGVtZVR5cGUucGVyQ29tcG9uZW50ID8gdGhpcy5nZW5lcmF0ZVBlckNvbXBvbmVudFN0eWxlcyhfdGhlbWVUeXBlLnBlckNvbXBvbmVudCkgOiAnJztcbiAgICBjb25zdCBvblJvb3RTdHlsZXMgPSBfdGhlbWVUeXBlLm9uUm9vdCA/IHRoaXMuZ2VuZXJhdGVBZGRpdGlvbmFsU3R5bGVzKF90aGVtZVR5cGUub25Sb290KSA6ICcnO1xuICAgIGNvbnN0IGFkZGl0aW9uYWxTdHlsZXMgPSB0aGlzLmdlbmVyYXRlQWRkaXRpb25hbFN0eWxlcyhfdGhlbWVUeXBlKTtcblxuICAgIGNvbnN0IGNvbWJpbmVkU3R5bGVzID0gYFxuICAgICAgLiR7dGhlbWUubmFtZX0tJHtQb1RoZW1lVHlwZUVudW1bdGhlbWVUeXBlXX06cm9vdCB7IFxuICAgICAgICAke2NvbG9yU3R5bGVzfSBcbiAgICAgICAgJHtwZXJDb21wb25lbnRTdHlsZXN9XG4gICAgICAgICR7b25Sb290U3R5bGVzfVxuICAgICAgICAke2FkZGl0aW9uYWxTdHlsZXN9IFxuICAgICAgfWA7XG5cbiAgICB0aGlzLmFwcGx5VGhlbWVTdHlsZXMoY29tYmluZWRTdHlsZXMpO1xuICAgIHRoaXMuY2hhbmdlVGhlbWVUeXBlKHRoZW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZG9jc1ByaXZhdGVcbiAgICpcbiAgICogR2VyYSBlc3RpbG9zIGFkaWNpb25haXMgY29tIGJhc2Ugbm9zIHRva2VucyBkZSB0ZW1hIGZvcm5lY2lkb3MsIGV4Y2x1aW5kbyBvcyB0b2tlbnMgZGUgY29yLlxuICAgKiBAcGFyYW0gdGhlbWUgT3MgdG9rZW5zIGRlIHRlbWEgY29udGVuZG8gb3MgZXN0aWxvcyBhZGljaW9uYWlzIGEgc2VyZW0gZ2VyYWRvcy5cbiAgICogQHJldHVybnMgVW1hIHN0cmluZyBjb250ZW5kbyBvcyBlc3RpbG9zIGFkaWNpb25haXMgZm9ybWF0YWRvcy5cbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVBZGRpdGlvbmFsU3R5bGVzKHRoZW1lOiBQb1RoZW1lVG9rZW5zKTogc3RyaW5nIHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModGhlbWUpXG4gICAgICAuZmlsdGVyKChba2V5XSkgPT4gIVsnY29sb3InLCAncGVyQ29tcG9uZW50JywgJ29uUm9vdCddLmluY2x1ZGVzKGtleSkpXG4gICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IGAke2tleX06ICR7dmFsdWV9O2ApXG4gICAgICAuam9pbignICcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkb2NzUHJpdmF0ZVxuICAgKlxuICAgKiBBcGxpY2Egb3MgZXN0aWxvcyBkZSB0ZW1hIGFvIGRvY3VtZW50by5cbiAgICogQHBhcmFtIHN0eWxlQ3NzIE9zIGVzdGlsb3MgQ1NTIGEgc2VyZW0gYXBsaWNhZG9zLlxuICAgKi9cbiAgcHJpdmF0ZSBhcHBseVRoZW1lU3R5bGVzKHN0eWxlQ3NzOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzdHlsZUVsZW1lbnQgPSB0aGlzLmNyZWF0ZVN0eWxlRWxlbWVudChzdHlsZUNzcyk7XG4gICAgY29uc3QgZXhpc3RpbmdTdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3IoJyNwb3VpVGhlbWUnKTtcblxuICAgIGlmIChleGlzdGluZ1N0eWxlRWxlbWVudCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChkb2N1bWVudC5oZWFkLCBleGlzdGluZ1N0eWxlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChkb2N1bWVudC5oZWFkLCBzdHlsZUVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VUaGVtZVR5cGUodGhlbWU6IFBvVGhlbWUpIHtcbiAgICB0aGlzLmNsZWFuVGhlbWVBY3RpdmUoKTtcbiAgICB0aGlzLnNldFRoZW1lQWN0aXZlKHRoZW1lKTtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdLmNsYXNzTGlzdC5hZGQoLi4uW2Ake3RoZW1lLm5hbWV9LSR7UG9UaGVtZVR5cGVFbnVtW3RoZW1lLmFjdGl2ZV19YF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcnNpc3RlIGUgZGVmaW5lIG8gdGVtYSBkbyBhcGxpY2F0aXZvIGNvbSBiYXNlIG5vcyBkYWRvcyBhcm1hemVuYWRvcy5cbiAgICpcbiAgICogRXN0ZSBtw6l0b2RvIHJlY3VwZXJhIG9zIGRhZG9zIGRvIHRlbWEgYXJtYXplbmFkb3MgZSBvcyBhcGxpY2EgYW8gYXBsaWNhdGl2by5cbiAgICpcbiAgICogQHJldHVybnMge1BvVGhlbWV9IFJlY3VwZXJhIG8gdGVtYSBhcm1hemVuYWRvLlxuICAgKi9cbiAgcGVyc2lzdFRoZW1lQWN0aXZlKCkge1xuICAgIGNvbnN0IF90aGVtZSA9IHRoaXMuZ2V0VGhlbWVBY3RpdmUoKTtcbiAgICB0aGlzLnNldFRoZW1lKF90aGVtZSwgX3RoZW1lLmFjdGl2ZSk7XG4gICAgcmV0dXJuIF90aGVtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbHRlcmEgbyB0aXBvIGRvIHRlbWEgYXJtYXplbmFkbyBlIGFwbGljYSBvcyBub3ZvcyBlc3RpbG9zIGFvIGRvY3VtZW50by5cbiAgICpcbiAgICogRXN0ZSBtw6l0b2RvIGFsdGVyYSBvIHRpcG8gZG8gdGVtYSBhcm1hemVuYWRvIGF0aXZvIChsaWdodC9kYXJrKVxuICAgKlxuICAgKiBAcGFyYW0ge1BvVGhlbWVUeXBlRW51bX0gdGhlbWVUeXBlIE8gdGlwbyBkZSB0ZW1hIGEgc2VyIGFwbGljYWRvLCBsaWdodCBvdSBkYXJrLlxuICAgKi9cbiAgY2hhbmdlQ3VycmVudFRoZW1lVHlwZSh0eXBlOiBQb1RoZW1lVHlwZUVudW0pOiB2b2lkIHtcbiAgICBjb25zdCBfdGhlbWUgPSB0aGlzLmdldFRoZW1lQWN0aXZlKCk7XG4gICAgX3RoZW1lLmFjdGl2ZSA9IHR5cGU7XG4gICAgdGhpcy5jaGFuZ2VUaGVtZVR5cGUoX3RoZW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHJlbW92ZSBvIHRlbWEgYXJtYXplbmFkbyBlIGxpbXBhIHRvZG9zIG9zIGVzdGlsb3MgZGUgdGVtYVxuICAgKiBhcGxpY2Fkb3MgYW8gZG9jdW1lbnRvLlxuICAgKi9cbiAgY2xlYW5UaGVtZUFjdGl2ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBfdGhlbWUgPSB0aGlzLmdldFRoZW1lQWN0aXZlKCk7XG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2h0bWwnKVswXS5jbGFzc0xpc3QucmVtb3ZlKGAke190aGVtZS5uYW1lfS0ke1BvVGhlbWVUeXBlRW51bVtfdGhlbWUuYWN0aXZlXX1gKTtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndG90dnMtdGhlbWUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZG9jc1ByaXZhdGVcbiAgICpcbiAgICogRXN0ZSBtw6l0b2RvIGRlZmluZSB1bSBkYWRvcyBkbyB0ZW1hIGUgbyBhcm1hemVuYS5cbiAgICogQHBhcmFtIHRoZW1lIE9zIHRva2VucyBkZSB0ZW1hIGNvbnRlbmRvIG9zIGVzdGlsb3MgYWRpY2lvbmFpcyBhIHNlcmVtIGdlcmFkb3MuXG4gICAqL1xuICBwcml2YXRlIHNldFRoZW1lQWN0aXZlKHRoZW1lOiBQb1RoZW1lKTogdm9pZCB7XG4gICAgaWYgKHRoZW1lKSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndG90dnMtdGhlbWUnLCBKU09OLnN0cmluZ2lmeSh0aGVtZSkpO1xuICAgICAgdGhpcy50aGVtZSA9IHRoZW1lO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRvcm5hIG8gdGVtYSBhdGl2byBjb21vIHVtIG9ic2VydmFibGUuXG4gICAqIEByZXR1cm5zIHtQb1RoZW1lfSBUZW1hIGF0aXZvLlxuICAgKi9cbiAgZ2V0VGhlbWVBY3RpdmUoKTogUG9UaGVtZSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRoZW1lRGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RvdHZzLXRoZW1lJykpO1xuICAgICAgaWYgKHRoZW1lRGF0YSAmJiBKU09OLnN0cmluZ2lmeSh0aGVtZURhdGEpICE9PSBKU09OLnN0cmluZ2lmeSh0aGlzLnRoZW1lKSkge1xuICAgICAgICB0aGlzLnRoZW1lID0gdGhlbWVEYXRhO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvIGFvIG9idGVyIG8gdGVtYSBkbyBhcm1hemVuYW1lbnRvIGxvY2FsOicsIGVycm9yKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudGhlbWU7XG4gIH1cblxuICAvKipcbiAgICogQGRvY3NQcml2YXRlXG4gICAqXG4gICAqIEdlcmEgZXN0aWxvcyBDU1MgY29tIGJhc2Ugbm9zIHRva2VucyBkZSBjb3JlcyBmb3JuZWNpZG9zLlxuICAgKiBAcGFyYW0gdGhlbWVDb2xvciBPcyB0b2tlbnMgZGUgY29yIGEgc2VyZW0gdXNhZG9zIHBhcmEgZ2VyYXIgb3MgZXN0aWxvcy5cbiAgICogQHJldHVybnMgVW1hIHN0cmluZyBjb250ZW5kbyBvcyBlc3RpbG9zIENTUyBnZXJhZG9zLlxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVTdHlsZUVsZW1lbnQoY3NzOiBzdHJpbmcpOiBIVE1MU3R5bGVFbGVtZW50IHtcbiAgICBjb25zdCBzdHlsZUVsZW1lbnQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgc3R5bGVFbGVtZW50LmlkID0gJ3BvdWlUaGVtZSc7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQsIHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dChjc3MpKTtcbiAgICByZXR1cm4gc3R5bGVFbGVtZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkb2NzUHJpdmF0ZVxuICAgKlxuICAgKiBHZXJhIGVzdGlsb3MgQ1NTIGNvbSBiYXNlIG5vcyB0b2tlbnMgZGUgY29yZXMgZm9ybmVjaWRvcy5cbiAgICogQHBhcmFtIHRoZW1lQ29sb3IgT3MgdG9rZW5zIGRlIGNvciBhIHNlcmVtIHVzYWRvcyBwYXJhIGdlcmFyIG9zIGVzdGlsb3MuXG4gICAqIEByZXR1cm5zIFVtYSBzdHJpbmcgY29udGVuZG8gb3MgZXN0aWxvcyBDU1MgZ2VyYWRvcy5cbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVUaGVtZVN0eWxlcyh0aGVtZUNvbG9yOiBQb1RoZW1lQ29sb3IpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNlbGVjdEJnSWNvblN0eWxlID0gdGhpcy5nZXRTZWxlY3RCZ0ljb25zU3R5bGUodGhlbWVDb2xvcik7XG5cbiAgICByZXR1cm4gW1xuICAgICAgT2JqZWN0LmVudHJpZXModGhlbWVDb2xvcilcbiAgICAgICAgLmZsYXRNYXAoKFt0eXBlLCB2YWx1ZXNdKSA9PlxuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHZhbHVlcykuZmxhdE1hcCgoW3RvbmFsaXR5LCB0b25hbGl0eVZhbHVlc10pID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlID09PSAnYWN0aW9uJykge1xuICAgICAgICAgICAgICByZXR1cm4gW2AtLWNvbG9yLSR7dHlwZX0tJHt0b25hbGl0eX06ICR7dG9uYWxpdHlWYWx1ZXN9O2BdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRvbmFsaXR5VmFsdWVzKS5tYXAoXG4gICAgICAgICAgICAgICAgKFtsZXZlbCwgY29sb3JWYWx1ZV0pID0+IGAtLWNvbG9yLSR7dHlwZX0tJHt0b25hbGl0eX0tJHtsZXZlbH06ICR7Y29sb3JWYWx1ZX07YFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLmpvaW4oJycpLFxuICAgICAgc2VsZWN0QmdJY29uU3R5bGVcbiAgICBdLmpvaW4oJycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkb2NzUHJpdmF0ZVxuICAgKlxuICAgKiBHZXJhIGVzdGlsb3MgQ1NTIGNvbSBiYXNlIG5vcyB0b2tlbnMgcGVyIENvbXBvbmVudCBmb3JuZWNpZG9zLlxuICAgKiBAcGFyYW0gdGhlbWVQZXJDb21wb25lbnQgT3MgdG9rZW5zIGRlIGNvciBhIHNlcmVtIHVzYWRvcyBwYXJhIGdlcmFyIG9zIGVzdGlsb3MuXG4gICAqIEByZXR1cm5zIFVtYSBzdHJpbmcgY29udGVuZG8gb3MgZXN0aWxvcyBDU1MgZ2VyYWRvcy5cbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVQZXJDb21wb25lbnRTdHlsZXModGhlbWVQZXJDb21wb25lbnQ6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoZW1lUGVyQ29tcG9uZW50KVxuICAgICAgLmZsYXRNYXAoKFt0eXBlLCB2YWx1ZXNdKSA9PlxuICAgICAgICBPYmplY3QuZW50cmllcyh2YWx1ZXMpLmZsYXRNYXAoKFtsZXZlbCwgY29sb3JWYWx1ZV0pID0+IFtgJHt0eXBlfSB7JHtsZXZlbH06ICR7Y29sb3JWYWx1ZX07fTtgXSlcbiAgICAgIClcbiAgICAgIC5qb2luKCcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmUgbyB0ZW1hIGF0dWFsIGNvbW8gbyB0ZW1hIFwiUG9VSSBQYWRyw6NvXCIuXG4gICAqXG4gICAqIEBwYXJhbSB7UG9UaGVtZVR5cGVFbnVtfSB0eXBlIE8gdGlwbyBkZSBUZW1hIGEgc2VyIGFwbGljYWRvLCBsaWdodCAvIGRhcmsuXG4gICAqL1xuICBzZXREZWZhdWx0VGhlbWUodHlwZTogUG9UaGVtZVR5cGVFbnVtKTogdm9pZCB7XG4gICAgdGhpcy5zZXRUaGVtZShwb1RoZW1lRGVmYXVsdCwgdHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogQGRvY3NQcml2YXRlXG4gICAqXG4gICAqIFJldG9ybmEgbyBlc3RpbG8gQ1NTIHBhcmEgbyBmdW5kbyBkb3Mgw61jb25lcyBkbyBjb21wb25lbnRlIHBvLXNlbGVjdCwgY29tIGJhc2UgbmFzIGNvcmVzIGRvIHRlbWEuXG4gICAqXG4gICAqIEBwYXJhbSB7UG9UaGVtZUNvbG9yfSB0aGVtZUNvbG9yIC0gT2JqZXRvIGNvbnRlbmRvIGFzIGNvcmVzIGRvIHRlbWEuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gRXN0aWxvIENTUyBwYXJhIG8gZnVuZG8gZG9zIMOtY29uZXMgZG8gcG8tc2VsZWN0LlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTZWxlY3RCZ0ljb25zU3R5bGUodGhlbWVDb2xvcjogUG9UaGVtZUNvbG9yKTogc3RyaW5nIHtcbiAgICBsZXQgc2VsZWN0QmdJY29uID0gJyc7XG5cbiAgICBpZiAodGhlbWVDb2xvcj8uYnJhbmQ/LlsnMDEnXT8uZGFyaykge1xuICAgICAgc2VsZWN0QmdJY29uICs9IGBwby1zZWxlY3QgeyAtLWJhY2tncm91bmQtaW1hZ2U6IHVybChcIiR7dGhpcy5nZXRTZWxlY3RCZ0ljb24odGhlbWVDb2xvci5icmFuZFsnMDEnXS5kYXJrKX1cIik7IH07YDtcbiAgICB9XG4gICAgaWYgKHRoZW1lQ29sb3I/LmZlZWRiYWNrPy5uZWdhdGl2ZT8uYmFzZSlcbiAgICAgIHNlbGVjdEJnSWNvbiArPSBgcG8tc2VsZWN0Lm5nLWRpcnR5Lm5nLWludmFsaWQgc2VsZWN0IHsgLS1iYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIke3RoaXMuZ2V0U2VsZWN0QmdJY29uKHRoZW1lQ29sb3IuZmVlZGJhY2submVnYXRpdmUuYmFzZSl9XCIpOyB9O2A7XG5cbiAgICBpZiAodGhlbWVDb2xvcj8ubmV1dHJhbD8ubGlnaHQ/LlsnMzAnXSlcbiAgICAgIHNlbGVjdEJnSWNvbiArPSBgc2VsZWN0OmRpc2FibGVkIHsgLS1iYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIke3RoaXMuZ2V0U2VsZWN0QmdJY29uKHRoZW1lQ29sb3IubmV1dHJhbC5saWdodFsnMzAnXSl9XCIpOyB9O2A7XG5cbiAgICByZXR1cm4gc2VsZWN0QmdJY29uO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkb2NzUHJpdmF0ZVxuICAgKlxuICAgKiBSZXRvcm5hIGEgaW1hZ2VtIFNWRyB1dGlsaXphZGEgY29tbyBmdW5kbyBkbyBwby1zZWxlY3QuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb2xvciBDb3IgZGEgSW1hZ2VtIC0gVXRpbGl6YWRhIG5vIGF0cmlidXRvICdmaWxsJy5cbiAgICogQHJldHVybnMge3N0cmluZ30gSW1hZ2VtIFNWRyB1dGlsaXphZGEgbm8gcG8tc2VsZWN0LlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTZWxlY3RCZ0ljb24oY29sb3I6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IHN2Zzogc3RyaW5nID0gYFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB3aWR0aD0nMjQnIGhlaWdodD0nMjQnIHZpZXdCb3g9JzAgMCAyNCAyNCcgZmlsbD0nbm9uZScgYDtcblxuICAgIHN2ZyA9IHN2Zy5jb25jYXQoYHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGwtcnVsZT0nZXZlbm9kZCcgY2xpcC1ydWxlPSdldmVub2RkJyBgKTtcbiAgICBzdmcgPSBzdmcuY29uY2F0KGBkPSdNMTguNzA3IDguMjkzMDFDMTguMzE2IDcuOTAyMDEgMTcuNjg0IDcuOTAyMDEgMTcuMjkzIDguMjkzMDFMMTIgMTMuNTg2TDYuNzA3MDEgYCk7XG4gICAgc3ZnID0gc3ZnLmNvbmNhdChgOC4yOTMwMUM2LjMxNjAxIDcuOTAyMDEgNS42ODQwMSA3LjkwMjAxIDUuMjkzMDEgOC4yOTMwMUM0LjkwMjAxIDguNjg0MDEgNC45MDIwMSBgKTtcbiAgICBzdmcgPSBzdmcuY29uY2F0KGA5LjMxNjAxIDUuMjkzMDEgOS43MDcwMUwxMS4yOTMgMTUuNzA3QzExLjQ4OCAxNS45MDIgMTEuNzQ0IDE2IDEyIDE2QzEyLjI1NiAxNiAxMi41MTIgYCk7XG4gICAgc3ZnID0gc3ZnLmNvbmNhdChgMTUuOTAyIDEyLjcwNyAxNS43MDdMMTguNzA3IDkuNzA3MDFDMTkuMDk4IDkuMzE2MDEgMTkuMDk4IDguNjg0MDEgMTguNzA3IDguMjkzMDFaJyBgKTtcbiAgICBzdmcgPSBzdmcuY29uY2F0KGBmaWxsPSclMjMke2NvbG9yfScvJTNFJTNDL3N2ZyUzRSUwQVwiKTtgKTtcblxuICAgIHJldHVybiBzdmc7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -8,6 +8,7 @@ import { PoDialogModule } from './po-dialog/po-dialog.module';
|
|
|
8
8
|
import { PoI18nPipe } from './po-i18n/po-i18n.pipe';
|
|
9
9
|
import { PoLanguageModule } from './po-language/po-language.module';
|
|
10
10
|
import { PoNotificationModule } from './po-notification/po-notification.module';
|
|
11
|
+
import { PoThemeModule } from './po-theme/po-theme.module';
|
|
11
12
|
import * as i0 from "@angular/core";
|
|
12
13
|
export class PoServicesModule {
|
|
13
14
|
static ɵfac = function PoServicesModule_Factory(t) { return new (t || PoServicesModule)(); };
|
|
@@ -19,13 +20,15 @@ export class PoServicesModule {
|
|
|
19
20
|
PoDateTimeModule,
|
|
20
21
|
PoDialogModule,
|
|
21
22
|
PoLanguageModule,
|
|
22
|
-
PoNotificationModule,
|
|
23
|
+
PoNotificationModule,
|
|
24
|
+
PoThemeModule, PoActiveOverlayModule,
|
|
23
25
|
PoColorPaletteModule,
|
|
24
26
|
PoComponentInjectorModule,
|
|
25
27
|
PoControlPositionModule,
|
|
26
28
|
PoDateTimeModule,
|
|
27
29
|
PoDialogModule,
|
|
28
|
-
PoNotificationModule
|
|
30
|
+
PoNotificationModule,
|
|
31
|
+
PoThemeModule] });
|
|
29
32
|
}
|
|
30
33
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoServicesModule, [{
|
|
31
34
|
type: NgModule,
|
|
@@ -39,7 +42,8 @@ export class PoServicesModule {
|
|
|
39
42
|
PoDateTimeModule,
|
|
40
43
|
PoDialogModule,
|
|
41
44
|
PoLanguageModule,
|
|
42
|
-
PoNotificationModule
|
|
45
|
+
PoNotificationModule,
|
|
46
|
+
PoThemeModule
|
|
43
47
|
],
|
|
44
48
|
exports: [
|
|
45
49
|
PoActiveOverlayModule,
|
|
@@ -49,7 +53,8 @@ export class PoServicesModule {
|
|
|
49
53
|
PoDateTimeModule,
|
|
50
54
|
PoDialogModule,
|
|
51
55
|
PoI18nPipe,
|
|
52
|
-
PoNotificationModule
|
|
56
|
+
PoNotificationModule,
|
|
57
|
+
PoThemeModule
|
|
53
58
|
],
|
|
54
59
|
providers: [],
|
|
55
60
|
bootstrap: []
|
|
@@ -62,12 +67,14 @@ export class PoServicesModule {
|
|
|
62
67
|
PoDateTimeModule,
|
|
63
68
|
PoDialogModule,
|
|
64
69
|
PoLanguageModule,
|
|
65
|
-
PoNotificationModule
|
|
70
|
+
PoNotificationModule,
|
|
71
|
+
PoThemeModule], exports: [PoActiveOverlayModule,
|
|
66
72
|
PoColorPaletteModule,
|
|
67
73
|
PoComponentInjectorModule,
|
|
68
74
|
PoControlPositionModule,
|
|
69
75
|
PoDateTimeModule,
|
|
70
76
|
PoDialogModule,
|
|
71
77
|
PoI18nPipe,
|
|
72
|
-
PoNotificationModule
|
|
73
|
-
|
|
78
|
+
PoNotificationModule,
|
|
79
|
+
PoThemeModule] }); })();
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9zZXJ2aWNlcy9zZXJ2aWNlcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNsRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUE2QjNELE1BQU0sT0FBTyxnQkFBZ0I7MEVBQWhCLGdCQUFnQjs0REFBaEIsZ0JBQWdCO2dFQXhCekIscUJBQXFCO1lBQ3JCLG9CQUFvQjtZQUNwQix5QkFBeUI7WUFDekIsdUJBQXVCO1lBQ3ZCLGdCQUFnQjtZQUNoQixjQUFjO1lBQ2QsZ0JBQWdCO1lBQ2hCLG9CQUFvQjtZQUNwQixhQUFhLEVBR2IscUJBQXFCO1lBQ3JCLG9CQUFvQjtZQUNwQix5QkFBeUI7WUFDekIsdUJBQXVCO1lBQ3ZCLGdCQUFnQjtZQUNoQixjQUFjO1lBRWQsb0JBQW9CO1lBQ3BCLGFBQWE7O2lGQUtKLGdCQUFnQjtjQTNCNUIsUUFBUTtlQUFDO2dCQUNSLFlBQVksRUFBRSxDQUFDLFVBQVUsQ0FBQztnQkFDMUIsT0FBTyxFQUFFO29CQUNQLHFCQUFxQjtvQkFDckIsb0JBQW9CO29CQUNwQix5QkFBeUI7b0JBQ3pCLHVCQUF1QjtvQkFDdkIsZ0JBQWdCO29CQUNoQixjQUFjO29CQUNkLGdCQUFnQjtvQkFDaEIsb0JBQW9CO29CQUNwQixhQUFhO2lCQUNkO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxxQkFBcUI7b0JBQ3JCLG9CQUFvQjtvQkFDcEIseUJBQXlCO29CQUN6Qix1QkFBdUI7b0JBQ3ZCLGdCQUFnQjtvQkFDaEIsY0FBYztvQkFDZCxVQUFVO29CQUNWLG9CQUFvQjtvQkFDcEIsYUFBYTtpQkFDZDtnQkFDRCxTQUFTLEVBQUUsRUFBRTtnQkFDYixTQUFTLEVBQUUsRUFBRTthQUNkOzt3RkFDWSxnQkFBZ0IsbUJBMUJaLFVBQVUsYUFFdkIscUJBQXFCO1FBQ3JCLG9CQUFvQjtRQUNwQix5QkFBeUI7UUFDekIsdUJBQXVCO1FBQ3ZCLGdCQUFnQjtRQUNoQixjQUFjO1FBQ2QsZ0JBQWdCO1FBQ2hCLG9CQUFvQjtRQUNwQixhQUFhLGFBR2IscUJBQXFCO1FBQ3JCLG9CQUFvQjtRQUNwQix5QkFBeUI7UUFDekIsdUJBQXVCO1FBQ3ZCLGdCQUFnQjtRQUNoQixjQUFjO1FBQ2QsVUFBVTtRQUNWLG9CQUFvQjtRQUNwQixhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUG9BY3RpdmVPdmVybGF5TW9kdWxlIH0gZnJvbSAnLi9wby1hY3RpdmUtb3ZlcmxheS9wby1hY3RpdmUtb3ZlcmxheS5tb2R1bGUnO1xuaW1wb3J0IHsgUG9Db2xvclBhbGV0dGVNb2R1bGUgfSBmcm9tICcuL3BvLWNvbG9yLXBhbGV0dGUvcG8tY29sb3ItcGFsZXR0ZS5tb2R1bGUnO1xuaW1wb3J0IHsgUG9Db21wb25lbnRJbmplY3Rvck1vZHVsZSB9IGZyb20gJy4vcG8tY29tcG9uZW50LWluamVjdG9yL3BvLWNvbXBvbmVudC1pbmplY3Rvci5tb2R1bGUnO1xuaW1wb3J0IHsgUG9Db250cm9sUG9zaXRpb25Nb2R1bGUgfSBmcm9tICcuL3BvLWNvbnRyb2wtcG9zaXRpb24vcG8tY29udHJvbC1wb3NpdGlvbi5tb2R1bGUnO1xuaW1wb3J0IHsgUG9EYXRlVGltZU1vZHVsZSB9IGZyb20gJy4vcG8tZGF0ZS9wby1kYXRlLm1vZHVsZSc7XG5pbXBvcnQgeyBQb0RpYWxvZ01vZHVsZSB9IGZyb20gJy4vcG8tZGlhbG9nL3BvLWRpYWxvZy5tb2R1bGUnO1xuaW1wb3J0IHsgUG9JMThuUGlwZSB9IGZyb20gJy4vcG8taTE4bi9wby1pMThuLnBpcGUnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZU1vZHVsZSB9IGZyb20gJy4vcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2UubW9kdWxlJztcbmltcG9ydCB7IFBvTm90aWZpY2F0aW9uTW9kdWxlIH0gZnJvbSAnLi9wby1ub3RpZmljYXRpb24vcG8tbm90aWZpY2F0aW9uLm1vZHVsZSc7XG5pbXBvcnQgeyBQb1RoZW1lTW9kdWxlIH0gZnJvbSAnLi9wby10aGVtZS9wby10aGVtZS5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtQb0kxOG5QaXBlXSxcbiAgaW1wb3J0czogW1xuICAgIFBvQWN0aXZlT3ZlcmxheU1vZHVsZSxcbiAgICBQb0NvbG9yUGFsZXR0ZU1vZHVsZSxcbiAgICBQb0NvbXBvbmVudEluamVjdG9yTW9kdWxlLFxuICAgIFBvQ29udHJvbFBvc2l0aW9uTW9kdWxlLFxuICAgIFBvRGF0ZVRpbWVNb2R1bGUsXG4gICAgUG9EaWFsb2dNb2R1bGUsXG4gICAgUG9MYW5ndWFnZU1vZHVsZSxcbiAgICBQb05vdGlmaWNhdGlvbk1vZHVsZSxcbiAgICBQb1RoZW1lTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBQb0FjdGl2ZU92ZXJsYXlNb2R1bGUsXG4gICAgUG9Db2xvclBhbGV0dGVNb2R1bGUsXG4gICAgUG9Db21wb25lbnRJbmplY3Rvck1vZHVsZSxcbiAgICBQb0NvbnRyb2xQb3NpdGlvbk1vZHVsZSxcbiAgICBQb0RhdGVUaW1lTW9kdWxlLFxuICAgIFBvRGlhbG9nTW9kdWxlLFxuICAgIFBvSTE4blBpcGUsXG4gICAgUG9Ob3RpZmljYXRpb25Nb2R1bGUsXG4gICAgUG9UaGVtZU1vZHVsZVxuICBdLFxuICBwcm92aWRlcnM6IFtdLFxuICBib290c3RyYXA6IFtdXG59KVxuZXhwb3J0IGNsYXNzIFBvU2VydmljZXNNb2R1bGUge31cbiJdfQ==
|