@dev-tcloud/tcloud-ui 4.2.2 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +106 -105
- package/datepicker/js/_info.txt +3 -3
- package/fesm2022/dev-tcloud-tcloud-ui.mjs +432 -365
- package/fesm2022/dev-tcloud-tcloud-ui.mjs.map +1 -1
- package/lib/_interfaces/theme.service.interface.d.ts +3 -0
- package/lib/_modules/tcloud-ui-accordion/tcloud-ui-accordion.component.d.ts +1 -0
- package/lib/_modules/tcloud-ui-datepicker/tcloud-ui-datepicker.component.d.ts +1 -1
- package/lib/_services/tcloud-ui-theme.services.d.ts +12 -0
- package/lib/tcloud-ui.config.d.ts +1 -0
- package/package.json +3 -5
- package/scss/components/custom/el-copy.scss +17 -17
- package/scss/components/custom/loading-transitions.scss +27 -27
- package/scss/components/custom/loading.scss +2 -2
- package/scss/components/custom/tab-menu.scss +57 -57
- package/scss/components/custom/table.scss +98 -98
- package/scss/components/custom/tooltip.scss +89 -89
- package/scss/components/custom/ui-datepicker.scss +15 -15
- package/scss/components/custom/validation.scss +7 -7
- package/scss/components/custom/variables.scss +32 -32
- package/scss/components/styles.scss +9 -9
- package/scss/tcloud/custom/alerts.scss +38 -37
- package/scss/tcloud/custom/buttons.scss +1002 -1002
- package/scss/tcloud/custom/card.scss +51 -51
- package/scss/tcloud/custom/colors.scss +97 -97
- package/scss/tcloud/custom/forms.scss +81 -81
- package/scss/tcloud/custom/layout.scss +5 -5
- package/scss/tcloud/custom/left-navigation.scss +47 -47
- package/scss/tcloud/custom/mixins.scss +318 -318
- package/scss/tcloud/custom/tcloud-prime.scss +4519 -4519
- package/scss/tcloud/custom/tcloud-standard.scss +121 -121
- package/scss/tcloud/custom/text.scss +57 -57
- package/scss/tcloud/custom/top-navigation.scss +59 -59
- package/scss/tcloud/custom/variables.scss +60 -60
- package/scss/tcloud/disaster-recovery/colors.scss +14 -14
- package/scss/tcloud/disaster-recovery/layout.scss +13 -13
- package/scss/tcloud/disaster-recovery/styles.scss +2 -2
- package/scss/tcloud/prime/cards-products.scss +333 -331
- package/scss/tcloud/prime/left-navigation.scss +329 -327
- package/scss/tcloud/prime/styles.scss +3 -3
- package/scss/tcloud/prime/tcloud-prime.scss +3874 -3872
- package/scss/tcloud/standard/left-navigation.scss +47 -47
- package/scss/tcloud/standard/styles.scss +3 -3
- package/scss/tcloud/standard/tcloud-standard.scss +125 -125
- package/scss/tcloud/standard/top-navigation.scss +61 -61
- package/scss/tcloud/styles.scss +19 -19
- package/scss/tcloud/tcloud-ui.scss +7 -7
- package/esm2022/dev-tcloud-tcloud-ui.mjs +0 -5
- package/esm2022/lib/_directives/align/align.directive.mjs +0 -42
- package/esm2022/lib/_directives/currency/currency.directive.mjs +0 -160
- package/esm2022/lib/_directives/directives.module.mjs +0 -76
- package/esm2022/lib/_directives/el-copy/el-copy.directive.mjs +0 -68
- package/esm2022/lib/_directives/hover-parent/hover-parent.directive.mjs +0 -58
- package/esm2022/lib/_directives/tcloud-access/tcloud-ui-check-access.directive.mjs +0 -66
- package/esm2022/lib/_directives/tcloud-access/tcloud-ui-ng-check-access.directive.mjs +0 -50
- package/esm2022/lib/_directives/tcloud-access/tcloud-ui-ng-feature-flags.directive.mjs +0 -44
- package/esm2022/lib/_directives/tcloud-ui-digit-only.directive.mjs +0 -64
- package/esm2022/lib/_directives/tcloud-ui-highlight.diretive.mjs +0 -36
- package/esm2022/lib/_directives/tcloud-ui-ip-mask.directive.mjs +0 -54
- package/esm2022/lib/_directives/tooltip/tooltip.directive.mjs +0 -196
- package/esm2022/lib/_interfaces/user.service.interface.mjs +0 -2
- package/esm2022/lib/_modules/tcloud-ui-accordion/components/tcloud-ui-accordion-body/tcloud-ui-accordion-body.component.mjs +0 -35
- package/esm2022/lib/_modules/tcloud-ui-accordion/components/tcloud-ui-accordion-title/tcloud-ui-accordion-title.component.mjs +0 -54
- package/esm2022/lib/_modules/tcloud-ui-accordion/services/tcloud-ui-accordion.service.mjs +0 -38
- package/esm2022/lib/_modules/tcloud-ui-accordion/tcloud-ui-accordion.component.mjs +0 -75
- package/esm2022/lib/_modules/tcloud-ui-accordion/tcloud-ui-accordion.module.mjs +0 -35
- package/esm2022/lib/_modules/tcloud-ui-choice-issues/tcloud-ui-choice-issues.component.mjs +0 -87
- package/esm2022/lib/_modules/tcloud-ui-choice-issues/tcloud-ui-choice-issues.module.mjs +0 -32
- package/esm2022/lib/_modules/tcloud-ui-data-list/services/data-list.service.mjs +0 -38
- package/esm2022/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list-option/tcloud-ui-data-list-option.component.mjs +0 -65
- package/esm2022/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.component.mjs +0 -317
- package/esm2022/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.mjs +0 -3
- package/esm2022/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.module.mjs +0 -37
- package/esm2022/lib/_modules/tcloud-ui-datepicker/tcloud-ui-datepicker.component.mjs +0 -440
- package/esm2022/lib/_modules/tcloud-ui-datepicker/tcloud-ui-datepicker.module.mjs +0 -32
- package/esm2022/lib/_modules/tcloud-ui-datepicker-time/tcloud-ui-datepicker-time.component.mjs +0 -320
- package/esm2022/lib/_modules/tcloud-ui-datepicker-time/tcloud-ui-datepicker-time.module.mjs +0 -40
- package/esm2022/lib/_modules/tcloud-ui-filters/components/range-date/range-date.component.mjs +0 -213
- package/esm2022/lib/_modules/tcloud-ui-filters/tcloud-ui-filters.component.mjs +0 -537
- package/esm2022/lib/_modules/tcloud-ui-filters/tcloud-ui-filters.mjs +0 -20
- package/esm2022/lib/_modules/tcloud-ui-filters/tcloud-ui-filters.module.mjs +0 -45
- package/esm2022/lib/_modules/tcloud-ui-input-password/tcloud-ui-input-password.component.mjs +0 -142
- package/esm2022/lib/_modules/tcloud-ui-input-password/tcloud-ui-input-password.module.mjs +0 -32
- package/esm2022/lib/_modules/tcloud-ui-input-search/tcloud-ui-input-search.component.mjs +0 -66
- package/esm2022/lib/_modules/tcloud-ui-input-search/tcloud-ui-input-search.module.mjs +0 -32
- package/esm2022/lib/_modules/tcloud-ui-label-token/tcloud-ui-label-token.component.mjs +0 -36
- package/esm2022/lib/_modules/tcloud-ui-label-token/tcloud-ui-label-token.module.mjs +0 -31
- package/esm2022/lib/_modules/tcloud-ui-line-step-circle/tcloud-ui-line-step-circle.component.mjs +0 -93
- package/esm2022/lib/_modules/tcloud-ui-line-step-circle/tcloud-ui-line-step-circle.module.mjs +0 -25
- package/esm2022/lib/_modules/tcloud-ui-line-step-title/tcloud-ui-line-step-title.component.mjs +0 -43
- package/esm2022/lib/_modules/tcloud-ui-line-step-title/tcloud-ui-line-step-title.mjs +0 -2
- package/esm2022/lib/_modules/tcloud-ui-line-step-title/tcloud-ui-line-step-title.module.mjs +0 -19
- package/esm2022/lib/_modules/tcloud-ui-linha-logo/tcloud-ui-linha-logo.component.mjs +0 -65
- package/esm2022/lib/_modules/tcloud-ui-linha-logo/tcloud-ui-linha-logo.module.mjs +0 -25
- package/esm2022/lib/_modules/tcloud-ui-loading/components/tcloud-ui-cubes/tcloud-ui-cubes.component.mjs +0 -11
- package/esm2022/lib/_modules/tcloud-ui-loading/tcloud-ui-loading.component.mjs +0 -29
- package/esm2022/lib/_modules/tcloud-ui-loading/tcloud-ui-loading.module.mjs +0 -21
- package/esm2022/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-body/tcloud-ui-modal-body.component.mjs +0 -14
- package/esm2022/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-footer/tcloud-ui-modal-footer.component.mjs +0 -61
- package/esm2022/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-header/tcloud-ui-modal-header.component.mjs +0 -24
- package/esm2022/lib/_modules/tcloud-ui-modal/services/tcloud-modal.service.mjs +0 -63
- package/esm2022/lib/_modules/tcloud-ui-modal/tcloud-ui-modal.component.mjs +0 -203
- package/esm2022/lib/_modules/tcloud-ui-modal/tcloud-ui-modal.mjs +0 -2
- package/esm2022/lib/_modules/tcloud-ui-modal/tcloud-ui-modal.module.mjs +0 -47
- package/esm2022/lib/_modules/tcloud-ui-multi-input/tcloud-ui-multi-input.component.mjs +0 -155
- package/esm2022/lib/_modules/tcloud-ui-multi-input/tcloud-ui-multi-input.module.mjs +0 -28
- package/esm2022/lib/_modules/tcloud-ui-multi-select/tcloud-ui-multi-select.component.mjs +0 -170
- package/esm2022/lib/_modules/tcloud-ui-multi-select/tcloud-ui-multi-select.module.mjs +0 -28
- package/esm2022/lib/_modules/tcloud-ui-multiples-values/tcloud-ui-multiples-values.component.mjs +0 -348
- package/esm2022/lib/_modules/tcloud-ui-multiples-values/tcloud-ui-multiples-values.module.mjs +0 -36
- package/esm2022/lib/_modules/tcloud-ui-not-found/tcloud-ui-not-found.component.mjs +0 -20
- package/esm2022/lib/_modules/tcloud-ui-not-found/tcloud-ui-not-found.module.mjs +0 -25
- package/esm2022/lib/_modules/tcloud-ui-number-step/tcloud-ui-number-step.component.mjs +0 -33
- package/esm2022/lib/_modules/tcloud-ui-number-step/tcloud-ui-number-step.module.mjs +0 -28
- package/esm2022/lib/_modules/tcloud-ui-progress-bar/tcloud-ui-progress-bar.component.mjs +0 -165
- package/esm2022/lib/_modules/tcloud-ui-progress-bar/tcloud-ui-progress-bar.module.mjs +0 -21
- package/esm2022/lib/_modules/tcloud-ui-reorder-items/tcloud-ui-reorder-items.component.mjs +0 -105
- package/esm2022/lib/_modules/tcloud-ui-reorder-items/tcloud-ui-reorder-items.mjs +0 -2
- package/esm2022/lib/_modules/tcloud-ui-reorder-items/tcloud-ui-reorder-items.module.mjs +0 -24
- package/esm2022/lib/_modules/tcloud-ui-scroll-box/tcloud-ui-scroll-box.component.mjs +0 -46
- package/esm2022/lib/_modules/tcloud-ui-scroll-box/tcloud-ui-scroll-box.module.mjs +0 -25
- package/esm2022/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-content/tcloud-ui-tab-content.component.mjs +0 -36
- package/esm2022/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-head/tcloud-ui-tab-head.component.mjs +0 -85
- package/esm2022/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-subtitle/tcloud-ui-tab-subtitle.component.mjs +0 -69
- package/esm2022/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-title/tcloud-ui-tab-title.component.mjs +0 -71
- package/esm2022/lib/_modules/tcloud-ui-tab-menu/services/tab-menu.service.mjs +0 -104
- package/esm2022/lib/_modules/tcloud-ui-tab-menu/tcloud-ui-tab-menu.component.mjs +0 -64
- package/esm2022/lib/_modules/tcloud-ui-tab-menu/tcloud-ui-tab-menu.mjs +0 -2
- package/esm2022/lib/_modules/tcloud-ui-tab-menu/tcloud-ui-tab-menu.module.mjs +0 -45
- package/esm2022/lib/_modules/tcloud-ui-table/tcloud-ui-table.component.mjs +0 -21
- package/esm2022/lib/_modules/tcloud-ui-table/tcloud-ui-table.module.mjs +0 -25
- package/esm2022/lib/_modules/tcloud-ui-welcome/tcloud-ui-welcome.component.mjs +0 -37
- package/esm2022/lib/_modules/tcloud-ui-welcome/tcloud-ui-welcome.module.mjs +0 -25
- package/esm2022/lib/_pipes/array-to-text.mjs +0 -29
- package/esm2022/lib/_pipes/bytes.mjs +0 -31
- package/esm2022/lib/_pipes/cnpj.mjs +0 -37
- package/esm2022/lib/_pipes/cpf.mjs +0 -37
- package/esm2022/lib/_pipes/datebr.mjs +0 -102
- package/esm2022/lib/_pipes/index.mjs +0 -9
- package/esm2022/lib/_pipes/monthname.mjs +0 -25
- package/esm2022/lib/_pipes/respective.mjs +0 -73
- package/esm2022/lib/_pipes/statusinfo.mjs +0 -78
- package/esm2022/lib/_pipes/tcloud-pipes.module.mjs +0 -75
- package/esm2022/lib/_services/loading-transitions.service.mjs +0 -52
- package/esm2022/lib/_services/search-in-object.service.mjs +0 -99
- package/esm2022/lib/_services/tcloud-ui-check-access.service.mjs +0 -170
- package/esm2022/lib/tcloud-ui.config.mjs +0 -2
- package/esm2022/lib/tcloud-ui.module.mjs +0 -235
- package/esm2022/public-api.mjs +0 -116
package/esm2022/lib/_modules/tcloud-ui-datepicker-time/tcloud-ui-datepicker-time.component.mjs
DELETED
|
@@ -1,320 +0,0 @@
|
|
|
1
|
-
import { Component, forwardRef, EventEmitter, Output, Input, ViewChild } from '@angular/core';
|
|
2
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common";
|
|
5
|
-
import * as i2 from "../tcloud-ui-datepicker/tcloud-ui-datepicker.component";
|
|
6
|
-
import * as i3 from "@angular/forms";
|
|
7
|
-
import * as i4 from "../tcloud-ui-data-list/tcloud-ui-data-list.component";
|
|
8
|
-
const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR = {
|
|
9
|
-
provide: NG_VALUE_ACCESSOR,
|
|
10
|
-
useExisting: forwardRef(() => TCloudUiDatepickerTimeComponent),
|
|
11
|
-
multi: true
|
|
12
|
-
};
|
|
13
|
-
const noop = () => {
|
|
14
|
-
};
|
|
15
|
-
export class TCloudUiDatepickerTimeComponent {
|
|
16
|
-
constructor() {
|
|
17
|
-
this.show_date_picker = true;
|
|
18
|
-
this.ngModelChange = new EventEmitter();
|
|
19
|
-
this.onChange = new EventEmitter();
|
|
20
|
-
this.eventChange = new EventEmitter();
|
|
21
|
-
// minDate - Data minima para exibicao do calendario - ex: 01/01/2020
|
|
22
|
-
this.minDate = '';
|
|
23
|
-
// maxDate - Data maxima para exibicao do calendario - ex: 31/12/2020
|
|
24
|
-
this.maxDate = '';
|
|
25
|
-
this.useOptionsDateTime = false;
|
|
26
|
-
this.DD_MM_YYYY = '';
|
|
27
|
-
this.HH = '00';
|
|
28
|
-
this.MM = '00';
|
|
29
|
-
this.ID = '';
|
|
30
|
-
this.options_date_time = [];
|
|
31
|
-
this.open_options_date_time = false;
|
|
32
|
-
this.description_options_date_time = '';
|
|
33
|
-
this.value_options_date_time = '';
|
|
34
|
-
//Placeholders for the callbacks which are later providesd
|
|
35
|
-
//by the Control Value Accessor
|
|
36
|
-
this.onTouchedCallback = noop;
|
|
37
|
-
this.onChangeCallback = noop;
|
|
38
|
-
}
|
|
39
|
-
set ngModel(v) {
|
|
40
|
-
if (v && v !== this.innerValue) {
|
|
41
|
-
this.innerValue = v;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
ngOnInit() {
|
|
45
|
-
this.setOptionsDateTime();
|
|
46
|
-
this.ID = this.generateID();
|
|
47
|
-
this.option_HH = this.getListTIME(23);
|
|
48
|
-
this.option_MM = this.getListTIME(59);
|
|
49
|
-
}
|
|
50
|
-
setOptionsDateTime() {
|
|
51
|
-
this.options_date_time = [
|
|
52
|
-
{ value: '7-days', description: '7 dias' },
|
|
53
|
-
{ value: '15-days', description: '15 dias' },
|
|
54
|
-
{ value: '30-days', description: '30 dias' },
|
|
55
|
-
{ value: 'current-month', description: 'Mês atual até agora' },
|
|
56
|
-
{ value: 'current-year', description: 'Ano atual até agora' }
|
|
57
|
-
];
|
|
58
|
-
}
|
|
59
|
-
generateID() {
|
|
60
|
-
return `tcloud-ui-datepicker-time-${Math.floor(Math.random() * Math.floor(Math.random() * Date.now()))}`;
|
|
61
|
-
}
|
|
62
|
-
getListTIME(v) {
|
|
63
|
-
let mm = [];
|
|
64
|
-
for (let i = 0; i <= v; i++) {
|
|
65
|
-
if (i < 10) {
|
|
66
|
-
(mm).push(`0${i}`);
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
(mm).push(`${i}`);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
return mm;
|
|
73
|
-
}
|
|
74
|
-
toSetDate(date) {
|
|
75
|
-
this.set_date_by_datepicker(date);
|
|
76
|
-
}
|
|
77
|
-
toSetTime() {
|
|
78
|
-
if (this.DD_MM_YYYY && ((this.DD_MM_YYYY).trim()).length === 10) {
|
|
79
|
-
const date = (this.DD_MM_YYYY).replace(/-/g, '/');
|
|
80
|
-
let date_part = (date).split('/');
|
|
81
|
-
let dd = date_part[0];
|
|
82
|
-
let mm = date_part[1];
|
|
83
|
-
let yy = date_part[2];
|
|
84
|
-
const datetime = new Date(`${yy}-${mm}-${dd}`);
|
|
85
|
-
if (this.checkIsDate(datetime)) {
|
|
86
|
-
this.set_date_by_datepicker(date);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
set_date_by_datepicker(date) {
|
|
91
|
-
if (date) {
|
|
92
|
-
date = (date).replace(/-/g, '/');
|
|
93
|
-
let date_part = (date).split('/');
|
|
94
|
-
let dia = date_part[0];
|
|
95
|
-
let mes = date_part[1];
|
|
96
|
-
let ano = date_part[2];
|
|
97
|
-
let hh = this.HH;
|
|
98
|
-
if (!hh) {
|
|
99
|
-
hh = '00';
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
if ((+(hh) >= 0 && +(hh) < 24)) {
|
|
103
|
-
hh = (+(hh) < 10) ? `0${+(hh)}` : `${+(hh)}`;
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
hh = '00';
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
let mm = this.MM;
|
|
110
|
-
if (!mm) {
|
|
111
|
-
mm = '00';
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
if ((+(mm) >= 0 && +(mm) < 60)) {
|
|
115
|
-
mm = (+(mm) < 10) ? `0${+(mm)}` : `${+(mm)}`;
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
mm = '00';
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
if (hh === '00') {
|
|
122
|
-
this.HH = hh;
|
|
123
|
-
}
|
|
124
|
-
if (mm === '00') {
|
|
125
|
-
this.MM = mm;
|
|
126
|
-
}
|
|
127
|
-
const notation = '00';
|
|
128
|
-
const str_date = `${ano}-${mes}-${dia}T${hh}:${mm}:${notation}`;
|
|
129
|
-
const datetime = new Date(str_date);
|
|
130
|
-
if (this.checkIsDate(datetime)) {
|
|
131
|
-
this.innerValue = datetime;
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
this.innerValue = undefined;
|
|
135
|
-
}
|
|
136
|
-
// console.log('this.datepickertime?.nativeElement', this.datepickertime?.nativeElement);
|
|
137
|
-
// if(this.datepickertime && this.datepickertime.nativeElement){
|
|
138
|
-
// const elem = <any> this.datepickertime.nativeElement;
|
|
139
|
-
// elem.value = this.innerValue;
|
|
140
|
-
// }
|
|
141
|
-
this.ngModelChange.emit(this.innerValue);
|
|
142
|
-
this.onChange.emit(this.innerValue);
|
|
143
|
-
this.eventChange.emit(this.datepickertime?.nativeElement);
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
this.description_options_date_time = '';
|
|
147
|
-
this.value_options_date_time = '';
|
|
148
|
-
this.innerValue = undefined;
|
|
149
|
-
this.ngModelChange.emit(this.innerValue);
|
|
150
|
-
this.onChange.emit(this.innerValue);
|
|
151
|
-
this.eventChange.emit(this.datepickertime?.nativeElement);
|
|
152
|
-
}
|
|
153
|
-
if (`${this.last_options_date_time}` !== `${this.innerValue}`) {
|
|
154
|
-
// this.description_options_date_time = '';
|
|
155
|
-
// this.value_options_date_time = '';
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
// Distribuir os valores da data por pedaços: data - hora - min
|
|
159
|
-
to_date_hh_mm(d) {
|
|
160
|
-
let dia = `${(d).getDate()}`;
|
|
161
|
-
dia = (+(dia) < 10) ? `0${+dia}` : dia;
|
|
162
|
-
let mes = `${(d).getMonth() + 1}`;
|
|
163
|
-
mes = (+(mes) < 10) ? `0${+mes}` : mes;
|
|
164
|
-
let ano = `${(d).getFullYear()}`;
|
|
165
|
-
let hh = `${(d).getHours()}`;
|
|
166
|
-
let mm = `${(d).getMinutes()}`;
|
|
167
|
-
if (hh && (+(hh) < 0 || +(hh) > 23)) {
|
|
168
|
-
hh = '00';
|
|
169
|
-
}
|
|
170
|
-
hh = (hh) ? ((+(hh) < 10) ? `0${hh}` : hh) : '00';
|
|
171
|
-
if (mm && (+(mm) < 0 || +(mm) > 59)) {
|
|
172
|
-
mm = '00';
|
|
173
|
-
}
|
|
174
|
-
mm = (mm) ? ((+(mm) < 10) ? `0${mm}` : mm) : '00';
|
|
175
|
-
this.MM = mm;
|
|
176
|
-
this.HH = hh;
|
|
177
|
-
this.DD_MM_YYYY = `${dia}/${mes}/${ano}`;
|
|
178
|
-
}
|
|
179
|
-
checkIsDate(d) {
|
|
180
|
-
if (Object.prototype.toString.call(d) === "[object Date]") {
|
|
181
|
-
if (isNaN(d)) {
|
|
182
|
-
return false;
|
|
183
|
-
}
|
|
184
|
-
else {
|
|
185
|
-
return true;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
return false;
|
|
189
|
-
}
|
|
190
|
-
clean() {
|
|
191
|
-
this.DD_MM_YYYY = '';
|
|
192
|
-
this.HH = '00';
|
|
193
|
-
this.MM = '00';
|
|
194
|
-
this.description_options_date_time = '';
|
|
195
|
-
this.value_options_date_time = '';
|
|
196
|
-
}
|
|
197
|
-
toClickIn(id) {
|
|
198
|
-
document.getElementById(id)?.focus();
|
|
199
|
-
}
|
|
200
|
-
onClosedOptionsDateTime() {
|
|
201
|
-
this.open_options_date_time = false;
|
|
202
|
-
}
|
|
203
|
-
onChangeOptionsDateTime(event) {
|
|
204
|
-
// this.description_options_date_time = '';
|
|
205
|
-
// this.value_options_date_time = '';
|
|
206
|
-
this.show_date_picker = false;
|
|
207
|
-
let now = new Date();
|
|
208
|
-
let filter_date = undefined;
|
|
209
|
-
if (event === '7-days') {
|
|
210
|
-
filter_date = new Date((new Date(now)).setDate(now.getDate() - 7));
|
|
211
|
-
filter_date = new Date((filter_date).setSeconds(0));
|
|
212
|
-
}
|
|
213
|
-
if (event === '15-days') {
|
|
214
|
-
filter_date = new Date((new Date(now)).setDate(now.getDate() - 15));
|
|
215
|
-
filter_date = new Date((filter_date).setSeconds(0));
|
|
216
|
-
}
|
|
217
|
-
if (event === '30-days') {
|
|
218
|
-
filter_date = new Date((new Date(now)).setDate(now.getDate() - 30));
|
|
219
|
-
filter_date = new Date((filter_date).setSeconds(0));
|
|
220
|
-
}
|
|
221
|
-
if (event === 'current-month') {
|
|
222
|
-
filter_date = new Date(now.getFullYear(), now.getMonth(), 1);
|
|
223
|
-
}
|
|
224
|
-
if (event === 'current-year') {
|
|
225
|
-
filter_date = new Date(now.getFullYear(), 0, 1);
|
|
226
|
-
}
|
|
227
|
-
if (filter_date) {
|
|
228
|
-
this.innerValue = filter_date;
|
|
229
|
-
if (this.checkIsDate(filter_date)) {
|
|
230
|
-
setTimeout(() => {
|
|
231
|
-
this.to_date_hh_mm(filter_date);
|
|
232
|
-
this.toSetDate(this.DD_MM_YYYY);
|
|
233
|
-
this.show_date_picker = true;
|
|
234
|
-
this.value_options_date_time = event;
|
|
235
|
-
this.last_options_date_time = filter_date;
|
|
236
|
-
this.description_options_date_time = this.get_description_options_date_time(event);
|
|
237
|
-
});
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
get_description_options_date_time(value) {
|
|
242
|
-
if (this.options_date_time && (this.options_date_time).length > 0) {
|
|
243
|
-
for (let i = 0; i < (this.options_date_time).length; i++) {
|
|
244
|
-
const item = this.options_date_time[i];
|
|
245
|
-
if (item.value === value) {
|
|
246
|
-
return item.description;
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
return '';
|
|
251
|
-
}
|
|
252
|
-
closedTimeDescription() {
|
|
253
|
-
this.value_options_date_time = '';
|
|
254
|
-
this.description_options_date_time = '';
|
|
255
|
-
}
|
|
256
|
-
//get accessor
|
|
257
|
-
get value() {
|
|
258
|
-
return this.innerValue;
|
|
259
|
-
}
|
|
260
|
-
;
|
|
261
|
-
//set accessor including call the onchange callback
|
|
262
|
-
set value(v) {
|
|
263
|
-
if (v !== this.innerValue) {
|
|
264
|
-
this.innerValue = v;
|
|
265
|
-
this.onChangeCallback(v);
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
//Set touched on blur
|
|
269
|
-
onBlur() {
|
|
270
|
-
this.onTouchedCallback();
|
|
271
|
-
}
|
|
272
|
-
//From ControlValueAccessor interface
|
|
273
|
-
writeValue(value) {
|
|
274
|
-
if (value !== this.innerValue) {
|
|
275
|
-
try {
|
|
276
|
-
value = new Date(`${value}`);
|
|
277
|
-
}
|
|
278
|
-
catch (error) { }
|
|
279
|
-
this.innerValue = value;
|
|
280
|
-
if (this.checkIsDate(value)) {
|
|
281
|
-
this.to_date_hh_mm(value);
|
|
282
|
-
}
|
|
283
|
-
else {
|
|
284
|
-
this.clean();
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
//From ControlValueAccessor interface
|
|
289
|
-
registerOnChange(fn) {
|
|
290
|
-
this.onChangeCallback = fn;
|
|
291
|
-
}
|
|
292
|
-
//From ControlValueAccessor interface
|
|
293
|
-
registerOnTouched(fn) {
|
|
294
|
-
this.onTouchedCallback = fn;
|
|
295
|
-
}
|
|
296
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TCloudUiDatepickerTimeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
297
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TCloudUiDatepickerTimeComponent, selector: "tcloud-ui-datepicker-time", inputs: { ngModel: "ngModel", minDate: "minDate", maxDate: "maxDate", useOptionsDateTime: "useOptionsDateTime" }, outputs: { ngModelChange: "ngModelChange", onChange: "onChange", eventChange: "eventChange" }, providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR], viewQueries: [{ propertyName: "datepickertime", first: true, predicate: ["_datepickertime"], descendants: true }], ngImport: i0, template: "<div class=\"tcloud-ui-datepicker-time\">\n <input type=\"hidden\" value=\"{{ innerValue }}\" #_datepickertime >\n <form #_formulario=\"ngForm\">\n <div class=\"input-control-time\">\n <div class=\"form-control-time\">\n\n <table style=\"width: 100%;\">\n <tr>\n <td>\n\n <div class=\"input-options-date\">\n <table class=\"form-time\">\n <tr>\n <!-- <td class=\"area-icon\"><div class=\"delimiter-time-icon\" (click)=\"toClickIn(ID)\" ><i class=\"fas fa-calendar-alt\"></i></div></td> -->\n <td class=\"area-input-date\">\n <ng-container *ngIf=\"show_date_picker\">\n <tcloud-ui-datepicker [minDate]=\"minDate\" [maxDate]=\"maxDate\" #_tclouddatepickertime [childInputDateTime]=\"true\" [modeInput]=\"true\" name=\"date\" [useBorder]=\"false\" [(ngModel)]=\"DD_MM_YYYY\" (onChange)=\"toSetDate($event)\" ></tcloud-ui-datepicker>\n </ng-container>\n </td>\n \n <td class=\"area-delimiter\"><div class=\"delimiter-time\"></div></td>\n <td class=\"area-input-hour\">\n <!--<input type=\"text\" placeholder=\"HH\" (keyup)=\"toSetTime()\" [(ngModel)]=\"HH\" maxlength=\"2\" name=\"hh\" pattern=\"[0][0-9]|[1][0-9]|2[0-3]\">-->\n <select class=\"select-time-date\" (change)=\"toSetTime()\" [(ngModel)]=\"HH\" name=\"hh\">\n <ng-container *ngFor=\"let hh of option_HH\">\n <option [ngValue]=\"hh\">{{ hh }}</option>\n </ng-container>\n </select>\n </td>\n <td class=\"area-delimiter\"><div class=\"delimiter-time\">:</div></td>\n <td class=\"area-input-minute\">\n <!--<input type=\"text\" placeholder=\"MM\" (keyup)=\"toSetTime()\" [(ngModel)]=\"MM\" maxlength=\"2\" name=\"mm\" pattern=\"[012345][0-9]\">-->\n <select class=\"select-time-date\" (change)=\"toSetTime()\" [(ngModel)]=\"MM\" name=\"mm\">\n <ng-container *ngFor=\"let mm of option_MM\">\n <option [value]=\"mm\">{{ mm }}</option>\n </ng-container>\n </select>\n </td>\n <td class=\"area-clean\"></td>\n </tr>\n </table>\n\n <div class=\"description-options-date\" *ngIf=\"value_options_date_time !== ''\">\n <strong>{{ description_options_date_time }}</strong>\n\n <!-- <div class=\"area-action-date-time-selected\">\n <button class=\"btn-icon\" type=\"button\" (click)=\"closedTimeDescription()\" >\n <i class=\"fas fa-times\"></i>\n </button> \n </div> -->\n </div>\n\n\n </div>\n\n </td>\n <td *ngIf=\"useOptionsDateTime && options_date_time && (options_date_time).length > 0\" style=\"width: 20px\">\n <button type=\"button\" class=\"icon-short-time\" (click)=\"open_options_date_time = !open_options_date_time\" [title]=\"description_options_date_time\" >\n <i *ngIf=\"!open_options_date_time\" class=\"fas fa-caret-down\"></i>\n <i *ngIf=\"open_options_date_time\" class=\"fas fa-caret-up\"></i>\n </button>\n\n <ng-container *ngIf=\"value_options_date_time !== ''\">\n <button class=\"btn-icon-close\" type=\"button\" (click)=\"closedTimeDescription()\" >\n <i class=\"fas fa-times\"></i>\n </button> \n </ng-container>\n\n </td>\n </tr>\n <tr *ngIf=\"useOptionsDateTime && options_date_time && (options_date_time).length > 0 && open_options_date_time\">\n <td colspan=\"2\">\n <tcloud-ui-data-list \n name=\"value_options_date_time\"\n [showInput]=\"false\" \n [search]=\"false\" \n [open]=\"true\" \n [listItems]=\"options_date_time\" \n (onClosed)=\"onClosedOptionsDateTime()\"\n [ngModel]=\"value_options_date_time\"\n (ngModelChange)=\"onChangeOptionsDateTime($event)\"\n >\n </tcloud-ui-data-list>\n\n \n\n\n \n </td>\n </tr>\n </table>\n\n \n </div>\n </div>\n </form>\n</div>", styles: ["@charset \"UTF-8\";.input-control-time{background-color:#fff;border:1px solid #ccc;border-radius:3px;width:100%;height:40px}.form-control-time{max-width:220px;border:none}.form-control-time input{text-align:center}.form-time{width:100%}.form-time td:first-child{overflow:hidden}.delimiter-time{width:100%;text-align:center}.delimiter-time-icon{border:none;height:35px;width:10px;padding:4px;font-size:17px;text-align:center;opacity:.6}.area-icon{width:25px}.area-input-date{width:100px}.area-delimiter{width:2px;text-align:center}.area-input-hour,.area-input-minute{text-align:center;width:28px}.area-input-hour input,.area-input-minute input{height:35px;width:28px;text-align:center;color:#999;font-weight:600;font-style:italic}.area-input-hour input:focus,.area-input-minute input:focus{outline:none}.area-clean{width:12px}input,.datepicker-input{border:none!important}.select-time-date{border:none;background-color:transparent;width:40px;height:35px;padding:0;text-align:center;font-size:13px;color:#777;position:relative;top:-2px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.select-time-date:focus{box-shadow:0 0;border:0 none;outline:0}.btn-icon-close{border:none;background-color:#fff;cursor:pointer;padding:0;color:#aaa;width:17px;position:relative;top:-20px;z-index:1}.btn-icon-close:hover{color:#c43a3a!important}.icon-short-time{border:none;background:none;cursor:pointer;font-size:15px;color:#8a8a8a}.input-options-date{position:relative}.input-options-date .description-options-date{position:absolute;left:0;top:0;padding:5px 10px;background-color:#fff;width:100%;height:34px;overflow:hidden}.input-options-date .description-options-date strong{font-size:14px;font-weight:400;padding-left:5px}.input-options-date .area-action-date-time-selected{width:20px;display:block;float:right;text-align:right;position:relative;top:-2px;left:30px;z-index:1}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.TCloudUiDatepickerComponent, selector: "tcloud-ui-datepicker", inputs: ["multiple", "maxNumberOfDates", "daysOfWeekDisabled", "minDate", "maxDate", "datesDisabled", "modeInput", "useBorder", "childInputDateTime", "startViewInMinDate", "startViewInMaxDate", "disabled", "ngModel", "code"], outputs: ["onChange", "ngModelChange", "onCheckDate"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.TCloudUiDataListComponent, selector: "tcloud-ui-data-list", inputs: ["placeholder", "disabled", "loading", "showInput", "search", "listItems", "open", "border", "ngModel"], outputs: ["onInputChange", "onChange", "onOpened", "onClosed", "ngModelChange"] }] }); }
|
|
298
|
-
}
|
|
299
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TCloudUiDatepickerTimeComponent, decorators: [{
|
|
300
|
-
type: Component,
|
|
301
|
-
args: [{ selector: 'tcloud-ui-datepicker-time', providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR], template: "<div class=\"tcloud-ui-datepicker-time\">\n <input type=\"hidden\" value=\"{{ innerValue }}\" #_datepickertime >\n <form #_formulario=\"ngForm\">\n <div class=\"input-control-time\">\n <div class=\"form-control-time\">\n\n <table style=\"width: 100%;\">\n <tr>\n <td>\n\n <div class=\"input-options-date\">\n <table class=\"form-time\">\n <tr>\n <!-- <td class=\"area-icon\"><div class=\"delimiter-time-icon\" (click)=\"toClickIn(ID)\" ><i class=\"fas fa-calendar-alt\"></i></div></td> -->\n <td class=\"area-input-date\">\n <ng-container *ngIf=\"show_date_picker\">\n <tcloud-ui-datepicker [minDate]=\"minDate\" [maxDate]=\"maxDate\" #_tclouddatepickertime [childInputDateTime]=\"true\" [modeInput]=\"true\" name=\"date\" [useBorder]=\"false\" [(ngModel)]=\"DD_MM_YYYY\" (onChange)=\"toSetDate($event)\" ></tcloud-ui-datepicker>\n </ng-container>\n </td>\n \n <td class=\"area-delimiter\"><div class=\"delimiter-time\"></div></td>\n <td class=\"area-input-hour\">\n <!--<input type=\"text\" placeholder=\"HH\" (keyup)=\"toSetTime()\" [(ngModel)]=\"HH\" maxlength=\"2\" name=\"hh\" pattern=\"[0][0-9]|[1][0-9]|2[0-3]\">-->\n <select class=\"select-time-date\" (change)=\"toSetTime()\" [(ngModel)]=\"HH\" name=\"hh\">\n <ng-container *ngFor=\"let hh of option_HH\">\n <option [ngValue]=\"hh\">{{ hh }}</option>\n </ng-container>\n </select>\n </td>\n <td class=\"area-delimiter\"><div class=\"delimiter-time\">:</div></td>\n <td class=\"area-input-minute\">\n <!--<input type=\"text\" placeholder=\"MM\" (keyup)=\"toSetTime()\" [(ngModel)]=\"MM\" maxlength=\"2\" name=\"mm\" pattern=\"[012345][0-9]\">-->\n <select class=\"select-time-date\" (change)=\"toSetTime()\" [(ngModel)]=\"MM\" name=\"mm\">\n <ng-container *ngFor=\"let mm of option_MM\">\n <option [value]=\"mm\">{{ mm }}</option>\n </ng-container>\n </select>\n </td>\n <td class=\"area-clean\"></td>\n </tr>\n </table>\n\n <div class=\"description-options-date\" *ngIf=\"value_options_date_time !== ''\">\n <strong>{{ description_options_date_time }}</strong>\n\n <!-- <div class=\"area-action-date-time-selected\">\n <button class=\"btn-icon\" type=\"button\" (click)=\"closedTimeDescription()\" >\n <i class=\"fas fa-times\"></i>\n </button> \n </div> -->\n </div>\n\n\n </div>\n\n </td>\n <td *ngIf=\"useOptionsDateTime && options_date_time && (options_date_time).length > 0\" style=\"width: 20px\">\n <button type=\"button\" class=\"icon-short-time\" (click)=\"open_options_date_time = !open_options_date_time\" [title]=\"description_options_date_time\" >\n <i *ngIf=\"!open_options_date_time\" class=\"fas fa-caret-down\"></i>\n <i *ngIf=\"open_options_date_time\" class=\"fas fa-caret-up\"></i>\n </button>\n\n <ng-container *ngIf=\"value_options_date_time !== ''\">\n <button class=\"btn-icon-close\" type=\"button\" (click)=\"closedTimeDescription()\" >\n <i class=\"fas fa-times\"></i>\n </button> \n </ng-container>\n\n </td>\n </tr>\n <tr *ngIf=\"useOptionsDateTime && options_date_time && (options_date_time).length > 0 && open_options_date_time\">\n <td colspan=\"2\">\n <tcloud-ui-data-list \n name=\"value_options_date_time\"\n [showInput]=\"false\" \n [search]=\"false\" \n [open]=\"true\" \n [listItems]=\"options_date_time\" \n (onClosed)=\"onClosedOptionsDateTime()\"\n [ngModel]=\"value_options_date_time\"\n (ngModelChange)=\"onChangeOptionsDateTime($event)\"\n >\n </tcloud-ui-data-list>\n\n \n\n\n \n </td>\n </tr>\n </table>\n\n \n </div>\n </div>\n </form>\n</div>", styles: ["@charset \"UTF-8\";.input-control-time{background-color:#fff;border:1px solid #ccc;border-radius:3px;width:100%;height:40px}.form-control-time{max-width:220px;border:none}.form-control-time input{text-align:center}.form-time{width:100%}.form-time td:first-child{overflow:hidden}.delimiter-time{width:100%;text-align:center}.delimiter-time-icon{border:none;height:35px;width:10px;padding:4px;font-size:17px;text-align:center;opacity:.6}.area-icon{width:25px}.area-input-date{width:100px}.area-delimiter{width:2px;text-align:center}.area-input-hour,.area-input-minute{text-align:center;width:28px}.area-input-hour input,.area-input-minute input{height:35px;width:28px;text-align:center;color:#999;font-weight:600;font-style:italic}.area-input-hour input:focus,.area-input-minute input:focus{outline:none}.area-clean{width:12px}input,.datepicker-input{border:none!important}.select-time-date{border:none;background-color:transparent;width:40px;height:35px;padding:0;text-align:center;font-size:13px;color:#777;position:relative;top:-2px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.select-time-date:focus{box-shadow:0 0;border:0 none;outline:0}.btn-icon-close{border:none;background-color:#fff;cursor:pointer;padding:0;color:#aaa;width:17px;position:relative;top:-20px;z-index:1}.btn-icon-close:hover{color:#c43a3a!important}.icon-short-time{border:none;background:none;cursor:pointer;font-size:15px;color:#8a8a8a}.input-options-date{position:relative}.input-options-date .description-options-date{position:absolute;left:0;top:0;padding:5px 10px;background-color:#fff;width:100%;height:34px;overflow:hidden}.input-options-date .description-options-date strong{font-size:14px;font-weight:400;padding-left:5px}.input-options-date .area-action-date-time-selected{width:20px;display:block;float:right;text-align:right;position:relative;top:-2px;left:30px;z-index:1}\n"] }]
|
|
302
|
-
}], propDecorators: { ngModel: [{
|
|
303
|
-
type: Input
|
|
304
|
-
}], ngModelChange: [{
|
|
305
|
-
type: Output
|
|
306
|
-
}], onChange: [{
|
|
307
|
-
type: Output
|
|
308
|
-
}], eventChange: [{
|
|
309
|
-
type: Output
|
|
310
|
-
}], minDate: [{
|
|
311
|
-
type: Input
|
|
312
|
-
}], maxDate: [{
|
|
313
|
-
type: Input
|
|
314
|
-
}], useOptionsDateTime: [{
|
|
315
|
-
type: Input
|
|
316
|
-
}], datepickertime: [{
|
|
317
|
-
type: ViewChild,
|
|
318
|
-
args: ['_datepickertime', { static: false }]
|
|
319
|
-
}] } });
|
|
320
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNsb3VkLXVpLWRhdGVwaWNrZXItdGltZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Y2xvdWQtdWkvc3JjL2xpYi9fbW9kdWxlcy90Y2xvdWQtdWktZGF0ZXBpY2tlci10aW1lL3RjbG91ZC11aS1kYXRlcGlja2VyLXRpbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLWRhdGVwaWNrZXItdGltZS90Y2xvdWQtdWktZGF0ZXBpY2tlci10aW1lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFVLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBR25ELE1BQU0sbUNBQW1DLEdBQVE7SUFDL0MsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLCtCQUErQixDQUFDO0lBQzlELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQUVGLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRTtBQUNsQixDQUFDLENBQUM7QUFRRixNQUFNLE9BQU8sK0JBQStCO0lBTjVDO1FBUUUscUJBQWdCLEdBQVksSUFBSSxDQUFDO1FBUXZCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUV6QyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNwQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFaEQscUVBQXFFO1FBQzVELFlBQU8sR0FBVyxFQUFFLENBQUM7UUFFOUIscUVBQXFFO1FBQzVELFlBQU8s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UTtzQkFBakIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUdFLE9BQU87c0JBQWYsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQVd5QyxjQUFjO3NCQUE1RCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgT25Jbml0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgSW5wdXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJU2VsZWN0T3B0aW9ucyB9IGZyb20gJy4uL3RjbG91ZC11aS1kYXRhLWxpc3QvdGNsb3VkLXVpLWRhdGEtbGlzdCc7XG5cbmNvbnN0IENVU1RPTV9JTlBVVF9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUQ2xvdWRVaURhdGVwaWNrZXJUaW1lQ29tcG9uZW50KSxcbiAgbXVsdGk6IHRydWVcbn07XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0Y2xvdWQtdWktZGF0ZXBpY2tlci10aW1lJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RjbG91ZC11aS1kYXRlcGlja2VyLXRpbWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90Y2xvdWQtdWktZGF0ZXBpY2tlci10aW1lLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW0NVU1RPTV9JTlBVVF9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SXVxufSlcbmV4cG9ydCBjbGFzcyBUQ2xvdWRVaURhdGVwaWNrZXJUaW1lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBzaG93X2RhdGVfcGlja2VyOiBib29sZWFuID0gdHJ1ZTtcblxuICBwcml2YXRlIF9uZ01vZGVsOiBhbnkgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHNldCBuZ01vZGVsKHY6IGFueSl7XG4gICAgaWYoIHYgJiYgdiAhPT0gdGhpcy5pbm5lclZhbHVlICl7XG4gICAgICB0aGlzLmlubmVyVmFsdWUgPSB2OyBcbiAgICB9IFxuICB9XG4gIEBPdXRwdXQoKSBuZ01vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gIEBPdXRwdXQoKSBvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgQE91dHB1dCgpIGV2ZW50Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLy8gbWluRGF0ZSAtIERhdGEgbWluaW1hIHBhcmEgZXhpYmljYW8gZG8gY2FsZW5kYXJpbyAtIGV4OiAwMS8wMS8yMDIwXG4gIEBJbnB1dCgpIG1pbkRhdGU6IHN0cmluZyA9ICcnO1xuXG4gIC8vIG1heERhdGUgLSBEYXRhIG1heGltYSBwYXJhIGV4aWJpY2FvIGRvIGNhbGVuZGFyaW8gLSBleDogMzEvMTIvMjAyMFxuICBASW5wdXQoKSBtYXhEYXRlOiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKSB1c2VPcHRpb25zRGF0ZVRpbWUgPSBmYWxzZTtcblxuICBERF9NTV9ZWVlZOiBzdHJpbmcgPSAnJztcbiAgSEg6IHN0cmluZyA9ICcwMCc7XG4gIE1NOiBzdHJpbmcgPSAnMDAnO1xuXG4gIElEOiBzdHJpbmcgPSAnJztcblxuICBvcHRpb25fSEg6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICBvcHRpb25fTU06IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ19kYXRlcGlja2VydGltZScsIHtzdGF0aWM6IGZhbHNlfSkgZGF0ZXBpY2tlcnRpbWU6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgdW5kZWZpbmVkO1xuXG4gIG9wdGlvbnNfZGF0ZV90aW1lIDogSVNlbGVjdE9wdGlvbnNbXSA9IFtdO1xuICBvcGVuX29wdGlvbnNfZGF0ZV90aW1lOiBib29sZWFuID0gZmFsc2U7XG5cbiAgbGFzdF9vcHRpb25zX2RhdGVfdGltZTogYW55O1xuICBkZXNjcmlwdGlvbl9vcHRpb25zX2RhdGVfdGltZTogYW55ID0gJyc7XG4gIHZhbHVlX29wdGlvbnNfZGF0ZV90aW1lOiBhbnkgPSAnJztcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcblxuXG4gICAgdGhpcy5zZXRPcHRpb25zRGF0ZVRpbWUoKTtcblxuICAgIHRoaXMuSUQgPSB0aGlzLmdlbmVyYXRlSUQoKTtcbiAgICB0aGlzLm9wdGlvbl9ISCA9IHRoaXMuZ2V0TGlzdFRJTUUoMjMpO1xuICAgIHRoaXMub3B0aW9uX01NID0gdGhpcy5nZXRMaXN0VElNRSg1OSk7XG4gIH1cblxuICBzZXRPcHRpb25zRGF0ZVRpbWUoKXtcbiAgICB0aGlzLm9wdGlvbnNfZGF0ZV90aW1lID0gW1xuICAgICAge3ZhbHVlOic3LWRheXMnLCBkZXNjcmlwdGlvbjogJzcgZGlhcyd9LFxuICAgICAge3ZhbHVlOicxNS1kYXlzJywgZGVzY3JpcHRpb246ICcxNSBkaWFzJ30sXG4gICAgICB7dmFsdWU6JzMwLWRheXMnLCBkZXNjcmlwdGlvbjogJzMwIGRpYXMnfSxcbiAgICAgIHt2YWx1ZTonY3VycmVudC1tb250aCcsIGRlc2NyaXB0aW9uOiAnTcOqcyBhdHVhbCBhdMOpIGFnb3JhJ30sXG4gICAgICB7dmFsdWU6J2N1cnJlbnQteWVhcicsIGRlc2NyaXB0aW9uOiAnQW5vIGF0dWFsIGF0w6kgYWdvcmEnfVxuICAgIF1cbiAgfVxuXG4gIGdlbmVyYXRlSUQoKTogc3RyaW5ne1xuICAgIHJldHVybiBgdGNsb3VkLXVpLWRhdGVwaWNrZXItdGltZS0ke01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIERhdGUubm93KCkpKX1gO1xuICB9XG5cbiAgZ2V0TGlzdFRJTUUodjogbnVtYmVyKXtcbiAgICBsZXQgbW0gPSBbXTtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDw9IHY7IGkrKyApe1xuICAgICAgaWYoIGkgPCAxMCApe1xuICAgICAgICAobW0pLnB1c2goYDAke2l9YCk7XG4gICAgICB9ZWxzZXtcbiAgICAgICAgKG1tKS5wdXNoKGAke2l9YCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtbTtcbiAgfVxuXG4gIHRvU2V0RGF0ZShkYXRlOiBzdHJpbmcpeyAgICBcbiAgICB0aGlzLnNldF9kYXRlX2J5X2RhdGVwaWNrZXIoZGF0ZSk7XG4gIH1cblxuICB0b1NldFRpbWUoKXtcbiAgICBpZiggdGhpcy5ERF9NTV9ZWVlZICYmICgodGhpcy5ERF9NTV9ZWVlZKS50cmltKCkpLmxlbmd0aCA9PT0gMTApe1xuICAgICAgY29uc3QgZGF0ZSA9ICh0aGlzLkREX01NX1lZWVkpLnJlcGxhY2UoLy0vZywgJy8nKTtcbiAgICAgIGxldCBkYXRlX3BhcnQgPSAoZGF0ZSkuc3BsaXQoJy8nKTtcbiAgICAgIGxldCBkZCA9IGRhdGVfcGFydFswXTtcbiAgICAgIGxldCBtbSA9IGRhdGVfcGFydFsxXTtcbiAgICAgIGxldCB5eSA9IGRhdGVfcGFydFsyXTtcbiAgICAgIGNvbnN0IGRhdGV0aW1lID0gbmV3IERhdGUoYCR7eXl9LSR7bW19LSR7ZGR9YCk7XG4gICAgICBpZiggdGhpcy5jaGVja0lzRGF0ZShkYXRldGltZSkgKXtcbiAgICAgICAgdGhpcy5zZXRfZGF0ZV9ieV9kYXRlcGlja2VyKGRhdGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldF9kYXRlX2J5X2RhdGVwaWNrZXIoZGF0ZTogc3RyaW5nKXtcblxuICAgIGlmKCBkYXRlICl7XG4gICAgICBkYXRlID0gKGRhdGUpLnJlcGxhY2UoLy0vZywgJy8nKTtcbiAgICAgIGxldCBkYXRlX3BhcnQgPSAoZGF0ZSkuc3BsaXQoJy8nKTtcbiAgICAgIGxldCBkaWEgPSBkYXRlX3BhcnRbMF07XG4gICAgICBsZXQgbWVzID0gZGF0ZV9wYXJ0WzFdO1xuICAgICAgbGV0IGFubyA9IGRhdGVfcGFydFsyXTtcblxuICAgICAgbGV0IGhoID0gdGhpcy5ISDtcbiAgICAgIGlmKCAhaGggKXtcbiAgICAgICAgaGggPSAnMDAnO1xuICAgICAgfWVsc2V7XG4gICAgICAgIGlmKCAoICsoaGgpID49IDAgJiYgKyhoaCkgPCAyNCApICl7XG4gICAgICAgICAgaGggPSAoKyhoaCkgPCAxMCApID8gYDAkeysoaGgpfWAgOiBgJHsrKGhoKX1gO1xuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICBoaCA9ICcwMCc7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGV0IG1tID0gdGhpcy5NTTtcbiAgICAgIGlmKCAhbW0gKXtcbiAgICAgICAgbW0gPSAnMDAnO1xuICAgICAgfWVsc2V7XG4gICAgICAgIGlmKCAoICsobW0pID49IDAgJiYgKyhtbSkgPCA2MCApICl7XG4gICAgICAgICAgbW0gPSAoKyhtbSkgPCAxMCApID8gYDAkeysobW0pfWAgOiBgJHsrKG1tKX1gO1xuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICBtbSA9ICcwMCc7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYoIGhoID09PSAnMDAnICl7IHRoaXMuSEggPSBoaDsgfVxuICAgICAgaWYoIG1tID09PSAnMDAnICl7IHRoaXMuTU0gPSBtbTsgfVxuXG4gICAgICBjb25zdCBub3RhdGlvbiA9ICcwMCc7XG5cbiAgICAgIGNvbnN0IHN0cl9kYXRlID0gYCR7YW5vfS0ke21lc30tJHtkaWF9VCR7aGh9OiR7bW19OiR7bm90YXRpb259YDtcbiAgICAgIGNvbnN0IGRhdGV0aW1lID0gbmV3IERhdGUoIHN0cl9kYXRlICk7XG4gICAgICBcbiAgICAgIGlmKCB0aGlzLmNoZWNrSXNEYXRlKGRhdGV0aW1lKSApe1xuICAgICAgICB0aGlzLmlubmVyVmFsdWUgPSBkYXRldGltZTtcbiAgICAgIH1lbHNle1xuICAgICAgICB0aGlzLmlubmVyVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIC8vIGNvbnNvbGUubG9nKCd0aGlzLmRhdGVwaWNrZXJ0aW1lPy5uYXRpdmVFbGVtZW50JywgdGhpcy5kYXRlcGlja2VydGltZT8ubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgIC8vIGlmKHRoaXMuZGF0ZXBpY2tlcnRpbWUgJiYgdGhpcy5kYXRlcGlja2VydGltZS5uYXRpdmVFbGVtZW50KXtcbiAgICAgIC8vICAgY29uc3QgZWxlbSA9IDxhbnk+IHRoaXMuZGF0ZXBpY2tlcnRpbWUubmF0aXZlRWxlbWVudDtcbiAgICAgIC8vICAgZWxlbS52YWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZTtcbiAgICAgIC8vIH1cblxuICAgICAgdGhpcy5uZ01vZGVsQ2hhbmdlLmVtaXQoIHRoaXMuaW5uZXJWYWx1ZSApO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KCB0aGlzLmlubmVyVmFsdWUgKTtcbiAgICAgIHRoaXMuZXZlbnRDaGFuZ2UuZW1pdCggdGhpcy5kYXRlcGlja2VydGltZT8ubmF0aXZlRWxlbWVudCApO1xuXG4gICAgfWVsc2V7XG5cbiAgICAgIHRoaXMuZGVzY3JpcHRpb25fb3B0aW9uc19kYXRlX3RpbWUgPSAnJztcbiAgICAgIHRoaXMudmFsdWVfb3B0aW9uc19kYXRlX3RpbWUgPSAnJztcblxuICAgICAgdGhpcy5pbm5lclZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5uZ01vZGVsQ2hhbmdlLmVtaXQoIHRoaXMuaW5uZXJWYWx1ZSApO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KCB0aGlzLmlubmVyVmFsdWUgKTtcbiAgICAgIHRoaXMuZXZlbnRDaGFuZ2UuZW1pdCggdGhpcy5kYXRlcGlja2VydGltZT8ubmF0aXZlRWxlbWVudCApO1xuICAgIH1cblxuICAgIGlmKCBgJHt0aGlzLmxhc3Rfb3B0aW9uc19kYXRlX3RpbWV9YCAhPT0gYCR7dGhpcy5pbm5lclZhbHVlfWAgKXtcbiAgICAgIC8vIHRoaXMuZGVzY3JpcHRpb25fb3B0aW9uc19kYXRlX3RpbWUgPSAnJztcbiAgICAgIC8vIHRoaXMudmFsdWVfb3B0aW9uc19kYXRlX3RpbWUgPSAnJztcbiAgICB9XG5cbiAgfVxuXG4gIC8vIERpc3RyaWJ1aXIgb3MgdmFsb3JlcyBkYSBkYXRhIHBvciBwZWRhw6dvczogZGF0YSAtIGhvcmEgLSBtaW5cbiAgdG9fZGF0ZV9oaF9tbShkOiBEYXRlKXtcbiAgICBsZXQgZGlhID0gYCR7KGQpLmdldERhdGUoKX1gO1xuICAgIGRpYSA9ICgrKGRpYSkgPCAxMCApID8gYDAkeytkaWF9YCA6IGRpYTtcbiAgICBsZXQgbWVzID0gYCR7KGQpLmdldE1vbnRoKCkrMX1gO1xuICAgIG1lcyA9ICgrKG1lcykgPCAxMCApID8gYDAkeyttZXN9YCA6IG1lczsgIFxuXG4gICAgbGV0IGFubyA9IGAkeyhkKS5nZXRGdWxsWWVhcigpfWA7XG4gICAgbGV0IGhoICA9IGAkeyhkKS5nZXRIb3VycygpfWA7XG4gICAgbGV0IG1tICA9IGAkeyhkKS5nZXRNaW51dGVzKCl9YDtcblxuICAgIGlmKCBoaCAmJiAoICsoaGgpIDwgMCB8fCArKGhoKSA+IDIzICkgKXsgaGggPSAnMDAnOyB9XG4gICAgaGggPSAoaGgpID8gKCAoKyhoaCkgPCAxMCApID8gYDAke2hofWAgOiBoaCApIDogJzAwJztcblxuICAgIGlmKCBtbSAmJiAoICsobW0pIDwgMCB8fCArKG1tKSA+IDU5ICkgKXsgbW0gPSAnMDAnOyB9XG4gICAgbW0gPSAobW0pID8gKCAoKyhtbSkgPCAxMCApID8gYDAke21tfWAgOiBtbSApIDogJzAwJztcblxuICAgIHRoaXMuTU0gPSBtbTtcbiAgICB0aGlzLkhIID0gaGg7XG5cbiAgICB0aGlzLkREX01NX1lZWVkgPSBgJHtkaWF9LyR7bWVzfS8ke2Fub31gO1xuICB9XG5cbiAgY2hlY2tJc0RhdGUoZDogYW55KTogYm9vbGVhbntcblxuICAgIGlmKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKSA9PT0gXCJbb2JqZWN0IERhdGVdXCIpIHtcbiAgICAgIGlmKGlzTmFOKGQpKSB7IHJldHVybiBmYWxzZTsgfSBlbHNlIHsgcmV0dXJuIHRydWU7IH1cbiAgICB9IFxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG5cbiAgY2xlYW4oKXtcbiAgICB0aGlzLkREX01NX1lZWVkgPSAnJztcbiAgICB0aGlzLkhIID0gJzAwJztcbiAgICB0aGlzLk1NID0gJzAwJztcbiAgICB0aGlzLmRlc2NyaXB0aW9uX29wdGlvbnNfZGF0ZV90aW1lID0gJyc7XG4gICAgdGhpcy52YWx1ZV9vcHRpb25zX2RhdGVfdGltZSA9ICcnO1xuICB9XG5cbiAgdG9DbGlja0luKGlkOiBzdHJpbmcpe1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKT8uZm9jdXMoKTtcbiAgfVxuXG4gIG9uQ2xvc2VkT3B0aW9uc0RhdGVUaW1lKCl7XG4gICAgdGhpcy5vcGVuX29wdGlvbnNfZGF0ZV90aW1lID0gZmFsc2VcbiAgfVxuXG4gIFxuICBvbkNoYW5nZU9wdGlvbnNEYXRlVGltZShldmVudDogYW55KXtcbiAgICAvLyB0aGlzLmRlc2NyaXB0aW9uX29wdGlvbnNfZGF0ZV90aW1lID0gJyc7XG4gICAgLy8gdGhpcy52YWx1ZV9vcHRpb25zX2RhdGVfdGltZSA9ICcnO1xuICAgIHRoaXMuc2hvd19kYXRlX3BpY2tlciA9IGZhbHNlO1xuXG4gICAgbGV0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgbGV0IGZpbHRlcl9kYXRlOiBhbnkgPSB1bmRlZmluZWQ7XG4gICAgaWYoIGV2ZW50ID09PSAnNy1kYXlzJyApe1xuICAgICAgZmlsdGVyX2RhdGUgPSBuZXcgRGF0ZSggKG5ldyBEYXRlKG5vdykpLnNldERhdGUoIG5vdy5nZXREYXRlKCkgLSA3ICkgKTsgIFxuICAgICAgZmlsdGVyX2RhdGUgPSBuZXcgRGF0ZSggKGZpbHRlcl9kYXRlKS5zZXRTZWNvbmRzKDApICk7ICAgICAgXG4gICAgfVxuXG4gICAgaWYoIGV2ZW50ID09PSAnMTUtZGF5cycgKXtcbiAgICAgIGZpbHRlcl9kYXRlID0gbmV3IERhdGUoIChuZXcgRGF0ZShub3cpKS5zZXREYXRlKCBub3cuZ2V0RGF0ZSgpIC0gMTUgKSApO1xuICAgICAgZmlsdGVyX2RhdGUgPSBuZXcgRGF0ZSggKGZpbHRlcl9kYXRlKS5zZXRTZWNvbmRzKDApICk7XG4gICAgfVxuXG4gICAgaWYoIGV2ZW50ID09PSAnMzAtZGF5cycgKXtcbiAgICAgIGZpbHRlcl9kYXRlID0gbmV3IERhdGUoIChuZXcgRGF0ZShub3cpKS5zZXREYXRlKCBub3cuZ2V0RGF0ZSgpIC0gMzAgKSApO1xuICAgICAgZmlsdGVyX2RhdGUgPSBuZXcgRGF0ZSggKGZpbHRlcl9kYXRlKS5zZXRTZWNvbmRzKDApICk7XG4gICAgfVxuXG4gICAgaWYoIGV2ZW50ID09PSAnY3VycmVudC1tb250aCcgKXtcbiAgICAgIGZpbHRlcl9kYXRlID0gbmV3IERhdGUobm93LmdldEZ1bGxZZWFyKCksIG5vdy5nZXRNb250aCgpLCAxKTtcbiAgICB9XG5cbiAgICBpZiggZXZlbnQgPT09ICdjdXJyZW50LXllYXInICl7XG4gICAgICBmaWx0ZXJfZGF0ZSA9IG5ldyBEYXRlKG5vdy5nZXRGdWxsWWVhcigpLCAwLCAxKTtcbiAgICB9XG5cbiAgICBpZihmaWx0ZXJfZGF0ZSl7ICAgICAgXG4gICAgICB0aGlzLmlubmVyVmFsdWUgPSBmaWx0ZXJfZGF0ZTtcbiAgICAgIGlmKCB0aGlzLmNoZWNrSXNEYXRlKGZpbHRlcl9kYXRlKSApeyAgICAgICAgICAgICAgXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudG9fZGF0ZV9oaF9tbShmaWx0ZXJfZGF0ZSk7XG4gICAgICAgICAgdGhpcy50b1NldERhdGUodGhpcy5ERF9NTV9ZWVlZKTsgIFxuICAgICAgICAgIHRoaXMuc2hvd19kYXRlX3BpY2tlciA9IHRydWU7XG4gICAgICAgICAgdGhpcy52YWx1ZV9vcHRpb25zX2RhdGVfdGltZSA9IGV2ZW50O1xuICAgICAgICAgIHRoaXMubGFzdF9vcHRpb25zX2RhdGVfdGltZSA9IGZpbHRlcl9kYXRlIGFzIGFueTtcbiAgICAgICAgICB0aGlzLmRlc2NyaXB0aW9uX29wdGlvbnNfZGF0ZV90aW1lID0gdGhpcy5nZXRfZGVzY3JpcHRpb25fb3B0aW9uc19kYXRlX3RpbWUoZXZlbnQpO1xuICAgICAgICB9KTsgICAgICAgXG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuXG4gIGdldF9kZXNjcmlwdGlvbl9vcHRpb25zX2RhdGVfdGltZSh2YWx1ZTogc3RyaW5nKXtcbiAgICBpZiggdGhpcy5vcHRpb25zX2RhdGVfdGltZSAmJiAodGhpcy5vcHRpb25zX2RhdGVfdGltZSkubGVuZ3RoID4gMCApe1xuICAgICAgZm9yKCBsZXQgaSA9IDA7IGkgPCAodGhpcy5vcHRpb25zX2RhdGVfdGltZSkubGVuZ3RoOyBpKysgKXtcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMub3B0aW9uc19kYXRlX3RpbWVbaV07XG4gICAgICAgIGlmKCBpdGVtLnZhbHVlID09PSB2YWx1ZSApe1xuICAgICAgICAgIHJldHVybiBpdGVtLmRlc2NyaXB0aW9uO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG5cbiAgY2xvc2VkVGltZURlc2NyaXB0aW9uKCl7XG4gICAgdGhpcy52YWx1ZV9vcHRpb25zX2RhdGVfdGltZSA9ICcnO1xuICAgIHRoaXMuZGVzY3JpcHRpb25fb3B0aW9uc19kYXRlX3RpbWUgPSAnJzsgXG4gIH1cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbiAgXG4gIGlubmVyVmFsdWU6IGFueSB8IHVuZGVmaW5lZDtcbiAgLy9QbGFjZWhvbGRlcnMgZm9yIHRoZSBjYWxsYmFja3Mgd2hpY2ggYXJlIGxhdGVyIHByb3ZpZGVzZFxuICAvL2J5IHRoZSBDb250cm9sIFZhbHVlIEFjY2Vzc29yXG4gIHByaXZhdGUgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xuXG4gIC8vZ2V0IGFjY2Vzc29yXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgICAgcmV0dXJuIHRoaXMuaW5uZXJWYWx1ZTtcbiAgfTtcblxuICAvL3NldCBhY2Nlc3NvciBpbmNsdWRpbmcgY2FsbCB0aGUgb25jaGFuZ2UgY2FsbGJhY2tcbiAgc2V0IHZhbHVlKHY6IGFueSkge1xuICAgIGlmICh2ICE9PSB0aGlzLmlubmVyVmFsdWUpIHtcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHY7ICAgICAgXG4gICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodik7XG4gICAgfVxuICB9XG5cbiAgLy9TZXQgdG91Y2hlZCBvbiBibHVyXG4gIG9uQmx1cigpIHtcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrKCk7XG4gIH1cblxuICAvL0Zyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5pbm5lclZhbHVlKSB7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHZhbHVlID0gbmV3IERhdGUoIGAke3ZhbHVlfWAgKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxuXG4gICAgICB0aGlzLmlubmVyVmFsdWUgPSB2YWx1ZTtcbiAgICAgIGlmKCB0aGlzLmNoZWNrSXNEYXRlKHZhbHVlKSApe1xuICAgICAgICB0aGlzLnRvX2RhdGVfaGhfbW0odmFsdWUpO1xuICAgICAgfWVsc2V7XG4gICAgICAgIHRoaXMuY2xlYW4oKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrID0gZm47XG4gIH1cblxuICAvL0Zyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cInRjbG91ZC11aS1kYXRlcGlja2VyLXRpbWVcIj5cbiAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiB2YWx1ZT1cInt7IGlubmVyVmFsdWUgfX1cIiAjX2RhdGVwaWNrZXJ0aW1lID5cbiAgPGZvcm0gI19mb3JtdWxhcmlvPVwibmdGb3JtXCI+XG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRyb2wtdGltZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY29udHJvbC10aW1lXCI+XG5cbiAgICAgICAgPHRhYmxlIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRkPlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1vcHRpb25zLWRhdGVcIj5cbiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwiZm9ybS10aW1lXCI+XG4gICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgPCEtLSA8dGQgY2xhc3M9XCJhcmVhLWljb25cIj48ZGl2IGNsYXNzPVwiZGVsaW1pdGVyLXRpbWUtaWNvblwiIChjbGljayk9XCJ0b0NsaWNrSW4oSUQpXCIgPjxpIGNsYXNzPVwiZmFzIGZhLWNhbGVuZGFyLWFsdFwiPjwvaT48L2Rpdj48L3RkPiAtLT5cbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImFyZWEtaW5wdXQtZGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd19kYXRlX3BpY2tlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0Y2xvdWQtdWktZGF0ZXBpY2tlciBbbWluRGF0ZV09XCJtaW5EYXRlXCIgW21heERhdGVdPVwibWF4RGF0ZVwiICNfdGNsb3VkZGF0ZXBpY2tlcnRpbWUgW2NoaWxkSW5wdXREYXRlVGltZV09XCJ0cnVlXCIgW21vZGVJbnB1dF09XCJ0cnVlXCIgbmFtZT1cImRhdGVcIiBbdXNlQm9yZGVyXT1cImZhbHNlXCIgWyhuZ01vZGVsKV09XCJERF9NTV9ZWVlZXCIgKG9uQ2hhbmdlKT1cInRvU2V0RGF0ZSgkZXZlbnQpXCIgPjwvdGNsb3VkLXVpLWRhdGVwaWNrZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYXJlYS1kZWxpbWl0ZXJcIj48ZGl2IGNsYXNzPVwiZGVsaW1pdGVyLXRpbWVcIj48L2Rpdj48L3RkPlxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYXJlYS1pbnB1dC1ob3VyXCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS08aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIkhIXCIgKGtleXVwKT1cInRvU2V0VGltZSgpXCIgWyhuZ01vZGVsKV09XCJISFwiIG1heGxlbmd0aD1cIjJcIiBuYW1lPVwiaGhcIiBwYXR0ZXJuPVwiWzBdWzAtOV18WzFdWzAtOV18MlswLTNdXCI+LS0+XG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJzZWxlY3QtdGltZS1kYXRlXCIgKGNoYW5nZSk9XCJ0b1NldFRpbWUoKVwiIFsobmdNb2RlbCldPVwiSEhcIiBuYW1lPVwiaGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBoaCBvZiBvcHRpb25fSEhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiaGhcIj57eyBoaCB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJhcmVhLWRlbGltaXRlclwiPjxkaXYgY2xhc3M9XCJkZWxpbWl0ZXItdGltZVwiPjo8L2Rpdj48L3RkPlxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYXJlYS1pbnB1dC1taW51dGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLTxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiTU1cIiAoa2V5dXApPVwidG9TZXRUaW1lKClcIiBbKG5nTW9kZWwpXT1cIk1NXCIgbWF4bGVuZ3RoPVwiMlwiIG5hbWU9XCJtbVwiIHBhdHRlcm49XCJbMDEyMzQ1XVswLTldXCI+LS0+XG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJzZWxlY3QtdGltZS1kYXRlXCIgKGNoYW5nZSk9XCJ0b1NldFRpbWUoKVwiIFsobmdNb2RlbCldPVwiTU1cIiBuYW1lPVwibW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtbSBvZiBvcHRpb25fTU1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm1tXCI+e3sgbW0gfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYXJlYS1jbGVhblwiPjwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgPC90YWJsZT5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb24tb3B0aW9ucy1kYXRlXCIgKm5nSWY9XCJ2YWx1ZV9vcHRpb25zX2RhdGVfdGltZSAhPT0gJydcIj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGRlc2NyaXB0aW9uX29wdGlvbnNfZGF0ZV90aW1lIH19PC9zdHJvbmc+XG5cbiAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImFyZWEtYWN0aW9uLWRhdGUtdGltZS1zZWxlY3RlZFwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWljb25cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlZFRpbWVEZXNjcmlwdGlvbigpXCIgPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJ1c2VPcHRpb25zRGF0ZVRpbWUgJiYgb3B0aW9uc19kYXRlX3RpbWUgJiYgKG9wdGlvbnNfZGF0ZV90aW1lKS5sZW5ndGggPiAwXCIgc3R5bGU9XCJ3aWR0aDogMjBweFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImljb24tc2hvcnQtdGltZVwiIChjbGljayk9XCJvcGVuX29wdGlvbnNfZGF0ZV90aW1lID0gIW9wZW5fb3B0aW9uc19kYXRlX3RpbWVcIiBbdGl0bGVdPVwiZGVzY3JpcHRpb25fb3B0aW9uc19kYXRlX3RpbWVcIiA+XG4gICAgICAgICAgICAgICAgPGkgKm5nSWY9XCIhb3Blbl9vcHRpb25zX2RhdGVfdGltZVwiIGNsYXNzPVwiZmFzIGZhLWNhcmV0LWRvd25cIj48L2k+XG4gICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJvcGVuX29wdGlvbnNfZGF0ZV90aW1lXCIgY2xhc3M9XCJmYXMgZmEtY2FyZXQtdXBcIj48L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2YWx1ZV9vcHRpb25zX2RhdGVfdGltZSAhPT0gJydcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWljb24tY2xvc2VcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlZFRpbWVEZXNjcmlwdGlvbigpXCIgPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+IFxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDx0ciAqbmdJZj1cInVzZU9wdGlvbnNEYXRlVGltZSAmJiBvcHRpb25zX2RhdGVfdGltZSAmJiAob3B0aW9uc19kYXRlX3RpbWUpLmxlbmd0aCA+IDAgJiYgb3Blbl9vcHRpb25zX2RhdGVfdGltZVwiPlxuICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIyXCI+XG4gICAgICAgICAgICAgICAgPHRjbG91ZC11aS1kYXRhLWxpc3QgXG4gICAgICAgICAgICAgICAgICBuYW1lPVwidmFsdWVfb3B0aW9uc19kYXRlX3RpbWVcIlxuICAgICAgICAgICAgICAgICAgW3Nob3dJbnB1dF09XCJmYWxzZVwiIFxuICAgICAgICAgICAgICAgICAgW3NlYXJjaF09XCJmYWxzZVwiIFxuICAgICAgICAgICAgICAgICAgW29wZW5dPVwidHJ1ZVwiIFxuICAgICAgICAgICAgICAgICAgW2xpc3RJdGVtc109XCJvcHRpb25zX2RhdGVfdGltZVwiIFxuICAgICAgICAgICAgICAgICAgKG9uQ2xvc2VkKT1cIm9uQ2xvc2VkT3B0aW9uc0RhdGVUaW1lKClcIlxuICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwidmFsdWVfb3B0aW9uc19kYXRlX3RpbWVcIlxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2VPcHRpb25zRGF0ZVRpbWUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC90Y2xvdWQtdWktZGF0YS1saXN0PlxuXG4gICAgICAgICAgICAgICAgXG5cblxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90YWJsZT5cblxuICAgICAgICBcbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L2Rpdj4iXX0=
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
2
|
-
import { CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, NgModule } from '@angular/core';
|
|
3
|
-
import { CommonModule } from '@angular/common';
|
|
4
|
-
import { TCloudUiDatepickerTimeComponent } from './tcloud-ui-datepicker-time.component';
|
|
5
|
-
import { TCloudUiDatepickerModule } from './../tcloud-ui-datepicker/tcloud-ui-datepicker.module';
|
|
6
|
-
import { TCloudUiDataListModule } from '../tcloud-ui-data-list/tcloud-ui-data-list.module';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
export class TCloudUiDatepickerTimeModule {
|
|
9
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TCloudUiDatepickerTimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: TCloudUiDatepickerTimeModule, declarations: [TCloudUiDatepickerTimeComponent], imports: [CommonModule,
|
|
11
|
-
TCloudUiDatepickerModule,
|
|
12
|
-
FormsModule,
|
|
13
|
-
ReactiveFormsModule,
|
|
14
|
-
TCloudUiDataListModule], exports: [TCloudUiDatepickerTimeComponent] }); }
|
|
15
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TCloudUiDatepickerTimeModule, imports: [CommonModule,
|
|
16
|
-
TCloudUiDatepickerModule,
|
|
17
|
-
FormsModule,
|
|
18
|
-
ReactiveFormsModule,
|
|
19
|
-
TCloudUiDataListModule] }); }
|
|
20
|
-
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TCloudUiDatepickerTimeModule, decorators: [{
|
|
22
|
-
type: NgModule,
|
|
23
|
-
args: [{
|
|
24
|
-
declarations: [
|
|
25
|
-
TCloudUiDatepickerTimeComponent
|
|
26
|
-
],
|
|
27
|
-
exports: [
|
|
28
|
-
TCloudUiDatepickerTimeComponent
|
|
29
|
-
],
|
|
30
|
-
imports: [
|
|
31
|
-
CommonModule,
|
|
32
|
-
TCloudUiDatepickerModule,
|
|
33
|
-
FormsModule,
|
|
34
|
-
ReactiveFormsModule,
|
|
35
|
-
TCloudUiDataListModule
|
|
36
|
-
],
|
|
37
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA]
|
|
38
|
-
}]
|
|
39
|
-
}] });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNsb3VkLXVpLWRhdGVwaWNrZXItdGltZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Y2xvdWQtdWkvc3JjL2xpYi9fbW9kdWxlcy90Y2xvdWQtdWktZGF0ZXBpY2tlci10aW1lL3RjbG91ZC11aS1kYXRlcGlja2VyLXRpbWUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQzs7QUFrQjNGLE1BQU0sT0FBTyw0QkFBNEI7K0dBQTVCLDRCQUE0QjtnSEFBNUIsNEJBQTRCLGlCQWRyQywrQkFBK0IsYUFNL0IsWUFBWTtZQUNaLHdCQUF3QjtZQUN4QixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLHNCQUFzQixhQVB0QiwrQkFBK0I7Z0hBV3RCLDRCQUE0QixZQVJyQyxZQUFZO1lBQ1osd0JBQXdCO1lBQ3hCLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsc0JBQXNCOzs0RkFJYiw0QkFBNEI7a0JBaEJ4QyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWiwrQkFBK0I7cUJBQ2hDO29CQUNELE9BQU8sRUFBRTt3QkFDUCwrQkFBK0I7cUJBQ2hDO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLHdCQUF3Qjt3QkFDeEIsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLHNCQUFzQjtxQkFDdkI7b0JBQ0QsT0FBTyxFQUFFLENBQUUsc0JBQXNCLEVBQUUsZ0JBQWdCLENBQUM7aUJBQ3JEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBOT19FUlJPUlNfU0NIRU1BLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRDbG91ZFVpRGF0ZXBpY2tlclRpbWVDb21wb25lbnQgfSBmcm9tICcuL3RjbG91ZC11aS1kYXRlcGlja2VyLXRpbWUuY29tcG9uZW50JztcbmltcG9ydCB7IFRDbG91ZFVpRGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJy4vLi4vdGNsb3VkLXVpLWRhdGVwaWNrZXIvdGNsb3VkLXVpLWRhdGVwaWNrZXIubW9kdWxlJztcbmltcG9ydCB7IFRDbG91ZFVpRGF0YUxpc3RNb2R1bGUgfSBmcm9tICcuLi90Y2xvdWQtdWktZGF0YS1saXN0L3RjbG91ZC11aS1kYXRhLWxpc3QubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgVENsb3VkVWlEYXRlcGlja2VyVGltZUNvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgVENsb3VkVWlEYXRlcGlja2VyVGltZUNvbXBvbmVudFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRDbG91ZFVpRGF0ZXBpY2tlck1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFRDbG91ZFVpRGF0YUxpc3RNb2R1bGVcbiAgXSxcbiAgc2NoZW1hczogWyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBOT19FUlJPUlNfU0NIRU1BXVxufSlcbmV4cG9ydCBjbGFzcyBUQ2xvdWRVaURhdGVwaWNrZXJUaW1lTW9kdWxlIHsgfVxuIl19
|