coer-elements 0.0.23 → 0.0.25

Sign up to get free protection for your applications and to get access to all the features.
Files changed (181) hide show
  1. package/components/index.d.ts +5 -0
  2. package/components/lib/coer-button/coer-button.component.d.ts +44 -0
  3. package/components/lib/coer-checkbox/coer-checkbox.component.d.ts +28 -0
  4. package/components/lib/coer-filebox/coer-filebox.component.d.ts +33 -0
  5. package/components/lib/coer-form/coer-form.component.d.ts +33 -0
  6. package/components/lib/coer-grid/coer-grid.component.d.ts +53 -0
  7. package/components/lib/coer-grid/coer-grid.extension.d.ts +103 -0
  8. package/components/lib/coer-grid/coer-grid.templates.d.ts +9 -0
  9. package/components/lib/coer-modal/coer-modal.component.d.ts +38 -0
  10. package/components/lib/coer-numberbox/coer-numberbox.component.d.ts +55 -0
  11. package/components/lib/coer-page-title/coer-page-title.component.d.ts +12 -0
  12. package/components/lib/coer-selectbox/coer-selectbox.component.d.ts +75 -0
  13. package/components/lib/coer-switch/coer-switch.component.d.ts +31 -0
  14. package/components/lib/coer-tab/coer-tab.component.d.ts +35 -0
  15. package/components/lib/coer-textarea/coer-textarea.component.d.ts +51 -0
  16. package/components/lib/coer-textbox/coer-textbox.component.d.ts +57 -0
  17. package/components/lib/components.module.d.ts +30 -0
  18. package/components/public-api.d.ts +15 -0
  19. package/directives/index.d.ts +5 -0
  20. package/directives/lib/coer-ref.directive.d.ts +14 -0
  21. package/directives/lib/directives.module.d.ts +8 -0
  22. package/directives/lib/life-cycle.directive.d.ts +16 -0
  23. package/directives/public-api.d.ts +3 -0
  24. package/esm2022/components/coer-elements-components.mjs +5 -0
  25. package/esm2022/components/lib/coer-button/coer-button.component.mjs +133 -0
  26. package/esm2022/components/lib/coer-checkbox/coer-checkbox.component.mjs +83 -0
  27. package/esm2022/components/lib/coer-filebox/coer-filebox.component.mjs +102 -0
  28. package/esm2022/components/lib/coer-form/coer-form.component.mjs +101 -0
  29. package/esm2022/components/lib/coer-grid/coer-grid.component.mjs +512 -0
  30. package/esm2022/components/lib/coer-grid/coer-grid.extension.mjs +408 -0
  31. package/esm2022/components/lib/coer-grid/coer-grid.templates.mjs +30 -0
  32. package/esm2022/components/lib/coer-modal/coer-modal.component.mjs +107 -0
  33. package/esm2022/components/lib/coer-numberbox/coer-numberbox.component.mjs +258 -0
  34. package/esm2022/components/lib/coer-page-title/coer-page-title.component.mjs +44 -0
  35. package/esm2022/components/lib/coer-selectbox/coer-selectbox.component.mjs +338 -0
  36. package/esm2022/components/lib/coer-switch/coer-switch.component.mjs +93 -0
  37. package/esm2022/components/lib/coer-tab/coer-tab.component.mjs +116 -0
  38. package/esm2022/components/lib/coer-textarea/coer-textarea.component.mjs +156 -0
  39. package/esm2022/components/lib/coer-textbox/coer-textbox.component.mjs +195 -0
  40. package/esm2022/components/lib/components.module.mjs +129 -0
  41. package/esm2022/components/public-api.mjs +16 -0
  42. package/esm2022/directives/coer-elements-directives.mjs +5 -0
  43. package/esm2022/directives/lib/coer-ref.directive.mjs +23 -0
  44. package/esm2022/directives/lib/directives.module.mjs +25 -0
  45. package/esm2022/directives/lib/life-cycle.directive.mjs +33 -0
  46. package/esm2022/directives/public-api.mjs +4 -0
  47. package/esm2022/interfaces/coer-elements-interfaces.mjs +5 -0
  48. package/esm2022/interfaces/lib/app-source.interface.mjs +2 -0
  49. package/esm2022/interfaces/lib/coer-filebox/file-image.interface.mjs +2 -0
  50. package/esm2022/interfaces/lib/coer-filebox/file.interface.mjs +2 -0
  51. package/esm2022/interfaces/lib/coer-grid/grid-button-by-row.interface.mjs +2 -0
  52. package/esm2022/interfaces/lib/coer-grid/grid-checkbox.interface.mjs +2 -0
  53. package/esm2022/interfaces/lib/coer-grid/grid-coer-numberbox.interface.mjs +2 -0
  54. package/esm2022/interfaces/lib/coer-grid/grid-coer-selectbox.interface.mjs +2 -0
  55. package/esm2022/interfaces/lib/coer-grid/grid-coer-switch.interface.mjs +2 -0
  56. package/esm2022/interfaces/lib/coer-grid/grid-coer-textbox.interface.mjs +2 -0
  57. package/esm2022/interfaces/lib/coer-grid/grid-column.interface.mjs +2 -0
  58. package/esm2022/interfaces/lib/coer-grid/grid-data-source.interface.mjs +2 -0
  59. package/esm2022/interfaces/lib/coer-grid/grid-header-button.interface.mjs +2 -0
  60. package/esm2022/interfaces/lib/coer-grid/grid-header-export-button.interface.mjs +2 -0
  61. package/esm2022/interfaces/lib/coer-grid/grid-header.interface.mjs +2 -0
  62. package/esm2022/interfaces/lib/coer-grid/grid-import.interface.mjs +2 -0
  63. package/esm2022/interfaces/lib/coer-grid/grid-input-checkbox.interface.mjs +2 -0
  64. package/esm2022/interfaces/lib/coer-grid/grid-input-switch-change.interface.mjs +2 -0
  65. package/esm2022/interfaces/lib/coer-grid/grid-input-textbox.interface.mjs +2 -0
  66. package/esm2022/interfaces/lib/coer-grid/grid-item.interface.mjs +2 -0
  67. package/esm2022/interfaces/lib/coer-grid/grid-keyup-enter.interface.mjs +2 -0
  68. package/esm2022/interfaces/lib/coer-grid/grid-length.interface.mjs +2 -0
  69. package/esm2022/interfaces/lib/coer-grid/grid-search.interface.mjs +2 -0
  70. package/esm2022/interfaces/lib/coer-grid/grid-sort.interface.mjs +2 -0
  71. package/esm2022/interfaces/lib/coer-menu/menu-option-selected.interface.mjs +2 -0
  72. package/esm2022/interfaces/lib/coer-menu/menu-selected.interface.mjs +2 -0
  73. package/esm2022/interfaces/lib/coer-menu/menu.interface.mjs +2 -0
  74. package/esm2022/interfaces/lib/coer-ref.interface.mjs +2 -0
  75. package/esm2022/interfaces/lib/page-title/breadcrumb.interface.mjs +2 -0
  76. package/esm2022/interfaces/lib/page-title/go-back.interface.mjs +2 -0
  77. package/esm2022/interfaces/lib/screen-size.interface.mjs +2 -0
  78. package/esm2022/interfaces/lib/service/http-request.interface.mjs +2 -0
  79. package/esm2022/interfaces/lib/service/http-response.interface.mjs +2 -0
  80. package/esm2022/interfaces/lib/service/patch.interface.mjs +2 -0
  81. package/esm2022/interfaces/public-api.mjs +39 -0
  82. package/esm2022/pipes/coer-elements-pipes.mjs +5 -0
  83. package/esm2022/pipes/lib/html.pipe.mjs +18 -0
  84. package/esm2022/pipes/lib/no-image.pipe.mjs +23 -0
  85. package/esm2022/pipes/lib/numeric-format.pipe.mjs +15 -0
  86. package/esm2022/pipes/lib/pipes.module.mjs +31 -0
  87. package/esm2022/pipes/public-api.mjs +5 -0
  88. package/esm2022/signals/coer-elements-signals.mjs +5 -0
  89. package/esm2022/signals/lib/breakpoint.signal.mjs +4 -0
  90. package/esm2022/signals/lib/is-loading.signal.mjs +3 -0
  91. package/esm2022/signals/lib/is-menu-open.signal.mjs +3 -0
  92. package/esm2022/signals/lib/is-modal-open.signal.mjs +3 -0
  93. package/esm2022/signals/lib/menu.signal.mjs +3 -0
  94. package/esm2022/signals/public-api.mjs +6 -0
  95. package/esm2022/tools/coer-elements-tools.mjs +5 -0
  96. package/esm2022/tools/lib/breadcrumbs.class.mjs +63 -0
  97. package/esm2022/tools/lib/coer-alert/coer-alert.component.mjs +228 -0
  98. package/esm2022/tools/lib/control-value.class.mjs +46 -0
  99. package/esm2022/tools/lib/date-time.class.mjs +29 -0
  100. package/esm2022/tools/lib/files.class.mjs +91 -0
  101. package/esm2022/tools/lib/menu.class.mjs +23 -0
  102. package/esm2022/tools/lib/page.class.mjs +156 -0
  103. package/esm2022/tools/lib/screen.class.mjs +51 -0
  104. package/esm2022/tools/lib/service.class.mjs +247 -0
  105. package/esm2022/tools/lib/source.class.mjs +80 -0
  106. package/esm2022/tools/lib/tools.mjs +220 -0
  107. package/esm2022/tools/public-api.mjs +12 -0
  108. package/fesm2022/coer-elements-components.mjs +2718 -0
  109. package/fesm2022/coer-elements-components.mjs.map +1 -0
  110. package/fesm2022/coer-elements-directives.mjs +82 -0
  111. package/fesm2022/coer-elements-directives.mjs.map +1 -0
  112. package/fesm2022/coer-elements-interfaces.mjs +6 -0
  113. package/fesm2022/coer-elements-interfaces.mjs.map +1 -0
  114. package/fesm2022/coer-elements-pipes.mjs +83 -0
  115. package/fesm2022/coer-elements-pipes.mjs.map +1 -0
  116. package/fesm2022/coer-elements-signals.mjs +19 -0
  117. package/fesm2022/coer-elements-signals.mjs.map +1 -0
  118. package/fesm2022/coer-elements-tools.mjs +1223 -0
  119. package/fesm2022/coer-elements-tools.mjs.map +1 -0
  120. package/interfaces/index.d.ts +5 -0
  121. package/interfaces/lib/app-source.interface.d.ts +4 -0
  122. package/interfaces/lib/coer-filebox/file-image.interface.d.ts +14 -0
  123. package/interfaces/lib/coer-filebox/file.interface.d.ts +5 -0
  124. package/interfaces/lib/coer-grid/grid-button-by-row.interface.d.ts +6 -0
  125. package/interfaces/lib/coer-grid/grid-checkbox.interface.d.ts +5 -0
  126. package/interfaces/lib/coer-grid/grid-coer-numberbox.interface.d.ts +12 -0
  127. package/interfaces/lib/coer-grid/grid-coer-selectbox.interface.d.ts +9 -0
  128. package/interfaces/lib/coer-grid/grid-coer-switch.interface.d.ts +6 -0
  129. package/interfaces/lib/coer-grid/grid-coer-textbox.interface.d.ts +11 -0
  130. package/interfaces/lib/coer-grid/grid-column.interface.d.ts +22 -0
  131. package/interfaces/lib/coer-grid/grid-data-source.interface.d.ts +6 -0
  132. package/interfaces/lib/coer-grid/grid-header-button.interface.d.ts +8 -0
  133. package/interfaces/lib/coer-grid/grid-header-export-button.interface.d.ts +10 -0
  134. package/interfaces/lib/coer-grid/grid-header.interface.d.ts +5 -0
  135. package/interfaces/lib/coer-grid/grid-import.interface.d.ts +4 -0
  136. package/interfaces/lib/coer-grid/grid-input-checkbox.interface.d.ts +5 -0
  137. package/interfaces/lib/coer-grid/grid-input-switch-change.interface.d.ts +5 -0
  138. package/interfaces/lib/coer-grid/grid-input-textbox.interface.d.ts +5 -0
  139. package/interfaces/lib/coer-grid/grid-item.interface.d.ts +5 -0
  140. package/interfaces/lib/coer-grid/grid-keyup-enter.interface.d.ts +6 -0
  141. package/interfaces/lib/coer-grid/grid-length.interface.d.ts +5 -0
  142. package/interfaces/lib/coer-grid/grid-search.interface.d.ts +4 -0
  143. package/interfaces/lib/coer-grid/grid-sort.interface.d.ts +5 -0
  144. package/interfaces/lib/coer-menu/menu-option-selected.interface.d.ts +9 -0
  145. package/interfaces/lib/coer-menu/menu-selected.interface.d.ts +10 -0
  146. package/interfaces/lib/coer-menu/menu.interface.d.ts +6 -0
  147. package/interfaces/lib/coer-ref.interface.d.ts +10 -0
  148. package/interfaces/lib/page-title/breadcrumb.interface.d.ts +6 -0
  149. package/interfaces/lib/page-title/go-back.interface.d.ts +6 -0
  150. package/interfaces/lib/screen-size.interface.d.ts +5 -0
  151. package/interfaces/lib/service/http-request.interface.d.ts +10 -0
  152. package/interfaces/lib/service/http-response.interface.d.ts +6 -0
  153. package/interfaces/lib/service/patch.interface.d.ts +5 -0
  154. package/interfaces/public-api.d.ts +33 -0
  155. package/package.json +37 -1
  156. package/pipes/index.d.ts +5 -0
  157. package/pipes/lib/html.pipe.d.ts +10 -0
  158. package/pipes/lib/no-image.pipe.d.ts +7 -0
  159. package/pipes/lib/numeric-format.pipe.d.ts +7 -0
  160. package/pipes/lib/pipes.module.d.ts +9 -0
  161. package/pipes/public-api.d.ts +4 -0
  162. package/signals/index.d.ts +5 -0
  163. package/signals/lib/breakpoint.signal.d.ts +1 -0
  164. package/signals/lib/is-loading.signal.d.ts +1 -0
  165. package/signals/lib/is-menu-open.signal.d.ts +1 -0
  166. package/signals/lib/is-modal-open.signal.d.ts +1 -0
  167. package/signals/lib/menu.signal.d.ts +2 -0
  168. package/signals/public-api.d.ts +5 -0
  169. package/tools/index.d.ts +5 -0
  170. package/tools/lib/breadcrumbs.class.d.ts +18 -0
  171. package/tools/lib/coer-alert/coer-alert.component.d.ts +23 -0
  172. package/tools/lib/control-value.class.d.ts +25 -0
  173. package/tools/lib/date-time.class.d.ts +13 -0
  174. package/tools/lib/files.class.d.ts +16 -0
  175. package/tools/lib/menu.class.d.ts +8 -0
  176. package/tools/lib/page.class.d.ts +60 -0
  177. package/tools/lib/screen.class.d.ts +13 -0
  178. package/tools/lib/service.class.d.ts +39 -0
  179. package/tools/lib/source.class.d.ts +20 -0
  180. package/tools/lib/tools.d.ts +34 -0
  181. package/tools/public-api.d.ts +11 -0
@@ -0,0 +1,220 @@
1
+ import { signal } from "@angular/core";
2
+ const reference_signal = signal({});
3
+ export const Tools = {
4
+ /** Generate a Guid */
5
+ GetGuid: (seed = 'coer-system') => {
6
+ let time = new Date().getTime();
7
+ seed = seed.toString().trim();
8
+ return seed + `-xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g, (c) => {
9
+ const random = (time + Math.random() * 16) % 16 | 0;
10
+ time = Math.floor(time / 16);
11
+ return (c == 'x' ? random : (random & 0x3 | 0x8)).toString(16);
12
+ });
13
+ },
14
+ /** Returns true if the value is null or undefined, false otherwise */
15
+ IsNull: (value) => {
16
+ if (value === undefined)
17
+ return true;
18
+ if (value === null)
19
+ return true;
20
+ return false;
21
+ },
22
+ /** Returns true if the value is not null or undefined, false otherwise */
23
+ IsNotNull: (value) => {
24
+ if (value === undefined)
25
+ return false;
26
+ if (value === null)
27
+ return false;
28
+ return true;
29
+ },
30
+ /** Returns true if the value is null or undefined or contains only whitespace, false otherwise */
31
+ IsOnlyWhiteSpace: (value) => {
32
+ if (value === undefined)
33
+ return true;
34
+ if (value === null)
35
+ return true;
36
+ if (typeof value === 'string' && value.trim() === '')
37
+ return true;
38
+ return false;
39
+ },
40
+ /** Returns true if has string value and is not only whitespace, false otherwise */
41
+ IsNotOnlyWhiteSpace: (value) => {
42
+ if (value === undefined)
43
+ return false;
44
+ if (value === null)
45
+ return false;
46
+ if (typeof value === 'string' && value.trim() === '')
47
+ return false;
48
+ return true;
49
+ },
50
+ /** Break reference of a object or array */
51
+ BreakReference: (object) => {
52
+ if (object === null)
53
+ return object;
54
+ if (typeof object === 'undefined')
55
+ return object;
56
+ if (typeof object === 'string')
57
+ return object;
58
+ if (typeof object === 'number')
59
+ return object;
60
+ if (typeof object === 'boolean')
61
+ return object;
62
+ const OBJECT = JSON.parse(JSON.stringify(object));
63
+ return (Array.isArray(OBJECT)) ? [...OBJECT] : { ...OBJECT };
64
+ },
65
+ /** Clean extra whitespaces */
66
+ CleanUpBlanks: (text) => {
67
+ if (Tools.IsNull(text))
68
+ return '';
69
+ let worlds = String(text).split(' ');
70
+ worlds = worlds.filter(x => x.length > 0);
71
+ return worlds.join(' ');
72
+ },
73
+ /** Get properties of an object */
74
+ GetObjectProperties: (obj) => {
75
+ const properties = [];
76
+ if (obj === null)
77
+ return properties;
78
+ if (typeof obj === 'undefined')
79
+ return properties;
80
+ if (typeof obj === 'string')
81
+ return properties;
82
+ if (typeof obj === 'number')
83
+ return properties;
84
+ if (typeof obj === 'boolean')
85
+ return properties;
86
+ for (const property in obj)
87
+ properties.push(String(property));
88
+ return properties;
89
+ },
90
+ /**
91
+ * Set an index and merge more arrays of the same type
92
+ * */
93
+ SetIndex: (array, ...args) => {
94
+ let index = 0;
95
+ for (const arg of args) {
96
+ array = Tools.BreakReference(array).concat(Tools.BreakReference(arg));
97
+ }
98
+ return Tools.BreakReference(array).map(item => Object.assign({ index: index++ }, item));
99
+ },
100
+ /** Set First Char To Lower */
101
+ FirstCharToLower: (text) => {
102
+ if (Tools.IsOnlyWhiteSpace(text))
103
+ return '';
104
+ const textArray = [];
105
+ for (let i = 0; i < text.length; i++) {
106
+ if (i === 0)
107
+ textArray.push(text[i].toLowerCase());
108
+ else
109
+ textArray.push(text[i]);
110
+ }
111
+ return textArray.join('');
112
+ },
113
+ /** Set First Char To Upper */
114
+ FirstCharToUpper: (text) => {
115
+ if (Tools.IsOnlyWhiteSpace(text))
116
+ return '';
117
+ const textArray = [];
118
+ for (let i = 0; i < text.length; i++) {
119
+ if (i === 0)
120
+ textArray.push(text[i].toUpperCase());
121
+ else
122
+ textArray.push(text[i]);
123
+ }
124
+ return textArray.join('');
125
+ },
126
+ /** Sort an array in ascending order by property */
127
+ SortBy: (array, property, propertyType = 'string') => {
128
+ switch (propertyType) {
129
+ case 'string': {
130
+ return array.sort((x, y) => {
131
+ if (String(x[property]).toUpperCase().trim() < String(y[property]).toUpperCase().trim())
132
+ return -1;
133
+ else if (String(x[property]).toUpperCase().trim() > String(y[property]).toUpperCase().trim())
134
+ return 1;
135
+ else
136
+ return 0;
137
+ });
138
+ }
139
+ case 'number': {
140
+ return array.sort((x, y) => Number(x[property] - Number(y[property])));
141
+ }
142
+ }
143
+ },
144
+ /** Sort an array in descending order by property */
145
+ SortByDesc: (array, property, propertyType = 'string') => {
146
+ switch (propertyType) {
147
+ case 'string': {
148
+ return array.sort((x, y) => {
149
+ if (String(x[property]).toUpperCase().trim() < String(y[property]).toUpperCase().trim())
150
+ return 1;
151
+ else if (String(x[property]).toUpperCase().trim() > String(y[property]).toUpperCase().trim())
152
+ return -1;
153
+ else
154
+ return 0;
155
+ });
156
+ }
157
+ case 'number': {
158
+ return array.sort((x, y) => Number(Number(y[property])) - x[property]);
159
+ }
160
+ }
161
+ },
162
+ /** Return a string with forman numeric */
163
+ GetNumericFormat: (value, decimals = 0) => {
164
+ if (Tools.IsOnlyWhiteSpace(value) || isNaN(Number(value))) {
165
+ return '0';
166
+ }
167
+ let valueInteger = '';
168
+ let valueDecimal = '';
169
+ value = value.toString().replaceAll(' ', '');
170
+ if (value.includes('.') || (decimals > 0)) {
171
+ valueInteger = value.includes('.') ? value.split('.')[0] : value;
172
+ if (decimals > 0) {
173
+ const PADDING = decimals - valueDecimal.length;
174
+ valueDecimal = value.includes('.') ? value.split('.')[1] : '';
175
+ for (let i = 0; i < PADDING; i++)
176
+ valueDecimal += '0';
177
+ valueDecimal = valueDecimal.substring(0, decimals);
178
+ valueDecimal = `.${valueDecimal}`;
179
+ }
180
+ }
181
+ else {
182
+ valueInteger = value;
183
+ }
184
+ let counter = 0;
185
+ const VALUE_INTEGER_ARRAY = [];
186
+ for (const char of valueInteger.split('').reverse()) {
187
+ if (counter == 3) {
188
+ VALUE_INTEGER_ARRAY.push(',');
189
+ counter = 0;
190
+ }
191
+ VALUE_INTEGER_ARRAY.push(char);
192
+ ++counter;
193
+ }
194
+ valueInteger = VALUE_INTEGER_ARRAY.reverse().join('');
195
+ return `${valueInteger}${valueDecimal}`;
196
+ },
197
+ /** Wait the time indicated */
198
+ Sleep: (milliseconds = 0, reference = null) => {
199
+ if (Tools.IsNull(reference)) {
200
+ return new Promise(Resolve => setTimeout(Resolve, milliseconds));
201
+ }
202
+ else
203
+ return new Promise(Resolve => {
204
+ reference = reference.replaceAll(' ', '_').toLowerCase();
205
+ if (reference_signal().hasOwnProperty(reference)) {
206
+ clearInterval(reference_signal()[reference]);
207
+ }
208
+ reference_signal.set(Object.assign(reference_signal(), {
209
+ [reference]: setTimeout(() => {
210
+ Resolve();
211
+ clearInterval(reference_signal()[reference]);
212
+ const _reference = { ...reference_signal() };
213
+ delete _reference[reference];
214
+ reference_signal.set({ ..._reference });
215
+ }, milliseconds)
216
+ }));
217
+ });
218
+ }
219
+ };
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL3Rvb2xzL2xpYi90b29scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFNLEVBQUUsQ0FBQyxDQUFDO0FBRXpDLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRztJQUNqQixzQkFBc0I7SUFDdEIsT0FBTyxFQUFFLENBQUMsT0FBZSxhQUFhLEVBQUUsRUFBRTtRQUN0QyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDN0IsT0FBTyxJQUFJLEdBQUcsdUNBQXVDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3pFLE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1lBQ25ELElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQTtZQUM1QixPQUFPLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDbEUsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBR0Qsc0VBQXNFO0lBQ3RFLE1BQU0sRUFBRSxDQUFJLEtBQTJCLEVBQVcsRUFBRTtRQUNoRCxJQUFJLEtBQUssS0FBSyxTQUFTO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDckMsSUFBSSxLQUFLLEtBQUssSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ2hDLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFHRCwwRUFBMEU7SUFDMUUsU0FBUyxFQUFFLENBQUksS0FBMkIsRUFBVyxFQUFFO1FBQ25ELElBQUksS0FBSyxLQUFLLFNBQVM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUN0QyxJQUFJLEtBQUssS0FBSyxJQUFJO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDakMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUdELGtHQUFrRztJQUNsRyxnQkFBZ0IsRUFBRSxDQUFJLEtBQTJCLEVBQVcsRUFBRTtRQUMxRCxJQUFJLEtBQUssS0FBSyxTQUFTO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDckMsSUFBSSxLQUFLLEtBQUssSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ2hDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDbEUsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUdELG1GQUFtRjtJQUNuRixtQkFBbUIsRUFBRSxDQUFJLEtBQTJCLEVBQVcsRUFBRTtRQUM3RCxJQUFJLEtBQUssS0FBSyxTQUFTO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDdEMsSUFBSSxLQUFLLEtBQUssSUFBSTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ2pDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDbkUsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUdELDJDQUEyQztJQUMzQyxjQUFjLEVBQUUsQ0FBSSxNQUFTLEVBQUssRUFBRTtRQUNoQyxJQUFJLE1BQU0sS0FBSyxJQUFJO1lBQUUsT0FBTyxNQUFNLENBQUM7UUFDbkMsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXO1lBQUUsT0FBTyxNQUFNLENBQUM7UUFDakQsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRO1lBQUUsT0FBTyxNQUFNLENBQUM7UUFDOUMsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRO1lBQUUsT0FBTyxNQUFNLENBQUM7UUFDOUMsSUFBSSxPQUFPLE1BQU0sS0FBSyxTQUFTO1lBQUUsT0FBTyxNQUFNLENBQUM7UUFDL0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7UUFDakQsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUE7SUFDaEUsQ0FBQztJQUdELDhCQUE4QjtJQUM5QixhQUFhLEVBQUUsQ0FBQyxJQUFxQixFQUFVLEVBQUU7UUFDN0MsSUFBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2pDLElBQUksTUFBTSxHQUFhLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0MsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBR0Qsa0NBQWtDO0lBQ2xDLG1CQUFtQixFQUFFLENBQUksR0FBeUIsRUFBWSxFQUFFO1FBQzVELE1BQU0sVUFBVSxHQUFhLEVBQUUsQ0FBQztRQUNoQyxJQUFJLEdBQUcsS0FBSyxJQUFJO1lBQUUsT0FBTyxVQUFVLENBQUM7UUFDcEMsSUFBSSxPQUFPLEdBQUcsS0FBSyxXQUFXO1lBQUUsT0FBTyxVQUFVLENBQUM7UUFDbEQsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1lBQUUsT0FBTyxVQUFVLENBQUM7UUFDL0MsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1lBQUUsT0FBTyxVQUFVLENBQUM7UUFDL0MsSUFBSSxPQUFPLEdBQUcsS0FBSyxTQUFTO1lBQUUsT0FBTyxVQUFVLENBQUM7UUFDaEQsS0FBSSxNQUFNLFFBQVEsSUFBSSxHQUFHO1lBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM3RCxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBR0Q7O1NBRUs7SUFDTCxRQUFRLEVBQUUsQ0FBSSxLQUFVLEVBQUUsR0FBRyxJQUFXLEVBQU8sRUFBRTtRQUM3QyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3JCLEtBQUssR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUUsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBR0QsOEJBQThCO0lBQzlCLGdCQUFnQixFQUFFLENBQUMsSUFBK0IsRUFBVSxFQUFFO1FBQzFELElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRTVDLE1BQU0sU0FBUyxHQUFhLEVBQUUsQ0FBQztRQUMvQixLQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ25DLElBQUcsQ0FBQyxLQUFLLENBQUM7Z0JBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQzs7Z0JBQzlDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBR0QsOEJBQThCO0lBQzlCLGdCQUFnQixFQUFFLENBQUMsSUFBK0IsRUFBVSxFQUFFO1FBQzFELElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRTVDLE1BQU0sU0FBUyxHQUFhLEVBQUUsQ0FBQztRQUMvQixLQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ25DLElBQUcsQ0FBQyxLQUFLLENBQUM7Z0JBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQzs7Z0JBQzlDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBR0QsbURBQW1EO0lBQ25ELE1BQU0sRUFBRSxDQUFJLEtBQVUsRUFBRSxRQUFnQixFQUFFLGVBQW9DLFFBQVEsRUFBTyxFQUFFO1FBQzNGLFFBQVEsWUFBWSxFQUFFLENBQUM7WUFDbkIsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUNaLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUUsRUFBRTtvQkFDakMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRTt3QkFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO3lCQUM5RixJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFO3dCQUFFLE9BQU8sQ0FBQyxDQUFDOzt3QkFDbEcsT0FBTyxDQUFDLENBQUM7Z0JBQ2xCLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztZQUVELEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDWixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckYsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBR0Qsb0RBQW9EO0lBQ3BELFVBQVUsRUFBRSxDQUFJLEtBQVUsRUFBRSxRQUFnQixFQUFFLGVBQW9DLFFBQVEsRUFBTyxFQUFFO1FBQy9GLFFBQVEsWUFBWSxFQUFFLENBQUM7WUFDbkIsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUNaLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUUsRUFBRTtvQkFDakMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRTt3QkFBRSxPQUFPLENBQUMsQ0FBQzt5QkFDN0YsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRTt3QkFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDOzt3QkFDbkcsT0FBTyxDQUFDLENBQUM7Z0JBQ2xCLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztZQUVELEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDWixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDckYsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBR0QsMENBQTBDO0lBQzFDLGdCQUFnQixFQUFFLENBQUMsS0FBeUMsRUFBRSxXQUFtQixDQUFDLEVBQVUsRUFBRTtRQUMxRixJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN4RCxPQUFPLEdBQUcsQ0FBQztRQUNmLENBQUM7UUFFRCxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLEtBQUssR0FBRyxLQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUU5QyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN4QyxZQUFZLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBRWpFLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNmLE1BQU0sT0FBTyxHQUFHLFFBQVEsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO2dCQUMvQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUM5RCxLQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxFQUFFLENBQUMsRUFBRTtvQkFBRSxZQUFZLElBQUksR0FBRyxDQUFDO2dCQUNyRCxZQUFZLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ25ELFlBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ3RDLENBQUM7UUFDTCxDQUFDO2FBRUksQ0FBQztZQUNGLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDekIsQ0FBQztRQUVELElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNoQixNQUFNLG1CQUFtQixHQUFhLEVBQUUsQ0FBQztRQUN6QyxLQUFJLE1BQU0sSUFBSSxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNqRCxJQUFJLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDZixtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzlCLE9BQU8sR0FBRyxDQUFDLENBQUM7WUFDaEIsQ0FBQztZQUVELG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvQixFQUFFLE9BQU8sQ0FBQztRQUNkLENBQUM7UUFFRCxZQUFZLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sR0FBRyxZQUFZLEdBQUcsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUdELDhCQUE4QjtJQUM5QixLQUFLLEVBQUUsQ0FBQyxlQUF1QixDQUFDLEVBQUUsWUFBMkIsSUFBSSxFQUFFLEVBQUU7UUFDakUsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDMUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUNyRSxDQUFDOztZQUVJLE9BQU8sSUFBSSxPQUFPLENBQU8sT0FBTyxDQUFDLEVBQUU7Z0JBQ3BDLFNBQVMsR0FBRyxTQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFFMUQsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO29CQUMvQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxTQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUNsRCxDQUFDO2dCQUVELGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUU7b0JBQ25ELENBQUMsU0FBVSxDQUFDLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRTt3QkFDMUIsT0FBTyxFQUFFLENBQUM7d0JBQ1YsYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQUMsU0FBVSxDQUFDLENBQUMsQ0FBQzt3QkFDOUMsTUFBTSxVQUFVLEdBQUcsRUFBRSxHQUFHLGdCQUFnQixFQUFFLEVBQUUsQ0FBQzt3QkFDN0MsT0FBTyxVQUFVLENBQUMsU0FBVSxDQUFDLENBQUM7d0JBQzlCLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsVUFBVSxFQUFFLENBQUMsQ0FBQztvQkFDNUMsQ0FBQyxFQUFFLFlBQVksQ0FBQztpQkFDbkIsQ0FBQyxDQUFDLENBQUM7WUFDUixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuY29uc3QgcmVmZXJlbmNlX3NpZ25hbCA9IHNpZ25hbDxhbnk+KHt9KTtcclxuXHJcbmV4cG9ydCBjb25zdCBUb29scyA9IHtcclxuICAgIC8qKiBHZW5lcmF0ZSBhIEd1aWQgKi9cclxuICAgIEdldEd1aWQ6IChzZWVkOiBzdHJpbmcgPSAnY29lci1zeXN0ZW0nKSA9PiB7XHJcbiAgICAgICAgbGV0IHRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICBzZWVkID0gc2VlZC50b1N0cmluZygpLnRyaW0oKVxyXG4gICAgICAgIHJldHVybiBzZWVkICsgYC14eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHhgLnJlcGxhY2UoL1t4eV0vZywgKGMpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcmFuZG9tID0gKHRpbWUgKyBNYXRoLnJhbmRvbSgpICogMTYpICUgMTYgfCAwXHJcbiAgICAgICAgICAgIHRpbWUgPSBNYXRoLmZsb29yKHRpbWUgLyAxNilcclxuICAgICAgICAgICAgcmV0dXJuIChjID09ICd4JyA/IHJhbmRvbSA6IChyYW5kb20gJiAweDMgfCAweDgpKS50b1N0cmluZygxNilcclxuICAgICAgICB9KVxyXG4gICAgfSxcclxuXHJcblxyXG4gICAgLyoqIFJldHVybnMgdHJ1ZSBpZiB0aGUgdmFsdWUgaXMgbnVsbCBvciB1bmRlZmluZWQsIGZhbHNlIG90aGVyd2lzZSAqL1xyXG4gICAgSXNOdWxsOiA8VD4odmFsdWU6IFQgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiA9PiB7XHJcbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSxcclxuXHJcblxyXG4gICAgLyoqIFJldHVybnMgdHJ1ZSBpZiB0aGUgdmFsdWUgaXMgbm90IG51bGwgb3IgdW5kZWZpbmVkLCBmYWxzZSBvdGhlcndpc2UgKi9cclxuICAgIElzTm90TnVsbDogPFQ+KHZhbHVlOiBUIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9LFxyXG5cclxuXHJcbiAgICAvKiogUmV0dXJucyB0cnVlIGlmIHRoZSB2YWx1ZSBpcyBudWxsIG9yIHVuZGVmaW5lZCBvciBjb250YWlucyBvbmx5IHdoaXRlc3BhY2UsIGZhbHNlIG90aGVyd2lzZSAqL1xyXG4gICAgSXNPbmx5V2hpdGVTcGFjZTogPFQ+KHZhbHVlOiBUIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKSA9PT0gJycpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0sXHJcblxyXG5cclxuICAgIC8qKiBSZXR1cm5zIHRydWUgaWYgaGFzIHN0cmluZyB2YWx1ZSBhbmQgaXMgbm90IG9ubHkgd2hpdGVzcGFjZSwgZmFsc2Ugb3RoZXJ3aXNlICovXHJcbiAgICBJc05vdE9ubHlXaGl0ZVNwYWNlOiA8VD4odmFsdWU6IFQgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiA9PiB7XHJcbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS50cmltKCkgPT09ICcnKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9LFxyXG5cclxuXHJcbiAgICAvKiogQnJlYWsgcmVmZXJlbmNlIG9mIGEgb2JqZWN0IG9yIGFycmF5ICovXHJcbiAgICBCcmVha1JlZmVyZW5jZTogPFQ+KG9iamVjdDogVCk6IFQgPT4ge1xyXG4gICAgICAgIGlmIChvYmplY3QgPT09IG51bGwpIHJldHVybiBvYmplY3Q7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBvYmplY3QgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gb2JqZWN0O1xyXG4gICAgICAgIGlmICh0eXBlb2Ygb2JqZWN0ID09PSAnc3RyaW5nJykgcmV0dXJuIG9iamVjdDtcclxuICAgICAgICBpZiAodHlwZW9mIG9iamVjdCA9PT0gJ251bWJlcicpIHJldHVybiBvYmplY3Q7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBvYmplY3QgPT09ICdib29sZWFuJykgcmV0dXJuIG9iamVjdDtcclxuICAgICAgICBjb25zdCBPQkpFQ1QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iamVjdCkpXHJcbiAgICAgICAgcmV0dXJuIChBcnJheS5pc0FycmF5KE9CSkVDVCkpID8gWy4uLk9CSkVDVF0gOiB7IC4uLk9CSkVDVCB9XHJcbiAgICB9LFxyXG5cclxuXHJcbiAgICAvKiogQ2xlYW4gZXh0cmEgd2hpdGVzcGFjZXMgKi9cclxuICAgIENsZWFuVXBCbGFua3M6ICh0ZXh0OiBzdHJpbmcgfCBudW1iZXIpOiBzdHJpbmcgPT4ge1xyXG4gICAgICAgIGlmKFRvb2xzLklzTnVsbCh0ZXh0KSkgcmV0dXJuICcnO1xyXG4gICAgICAgIGxldCB3b3JsZHM6IHN0cmluZ1tdID0gU3RyaW5nKHRleHQpLnNwbGl0KCcgJyk7XHJcbiAgICAgICAgd29ybGRzID0gd29ybGRzLmZpbHRlcih4ID0+IHgubGVuZ3RoID4gMCk7XHJcbiAgICAgICAgcmV0dXJuIHdvcmxkcy5qb2luKCcgJyk7XHJcbiAgICB9LFxyXG5cclxuXHJcbiAgICAvKiogR2V0IHByb3BlcnRpZXMgb2YgYW4gb2JqZWN0ICovXHJcbiAgICBHZXRPYmplY3RQcm9wZXJ0aWVzOiA8VD4ob2JqOiBUIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZ1tdID0+IHtcclxuICAgICAgICBjb25zdCBwcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgIGlmIChvYmogPT09IG51bGwpIHJldHVybiBwcm9wZXJ0aWVzO1xyXG4gICAgICAgIGlmICh0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJykgcmV0dXJuIHByb3BlcnRpZXM7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSByZXR1cm4gcHJvcGVydGllcztcclxuICAgICAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ251bWJlcicpIHJldHVybiBwcm9wZXJ0aWVzO1xyXG4gICAgICAgIGlmICh0eXBlb2Ygb2JqID09PSAnYm9vbGVhbicpIHJldHVybiBwcm9wZXJ0aWVzO1xyXG4gICAgICAgIGZvcihjb25zdCBwcm9wZXJ0eSBpbiBvYmopIHByb3BlcnRpZXMucHVzaChTdHJpbmcocHJvcGVydHkpKTtcclxuICAgICAgICByZXR1cm4gcHJvcGVydGllcztcclxuICAgIH0sXHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0IGFuIGluZGV4IGFuZCBtZXJnZSBtb3JlIGFycmF5cyBvZiB0aGUgc2FtZSB0eXBlXHJcbiAgICAgKiAqL1xyXG4gICAgU2V0SW5kZXg6IDxUPihhcnJheTogVFtdLCAuLi5hcmdzOiBUW11bXSk6IFRbXSA9PiB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcclxuICAgICAgICBmb3IgKGNvbnN0IGFyZyBvZiBhcmdzKSB7XHJcbiAgICAgICAgICAgIGFycmF5ID0gVG9vbHMuQnJlYWtSZWZlcmVuY2UoYXJyYXkpLmNvbmNhdChUb29scy5CcmVha1JlZmVyZW5jZShhcmcpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBUb29scy5CcmVha1JlZmVyZW5jZShhcnJheSkubWFwKGl0ZW0gPT4gT2JqZWN0LmFzc2lnbih7IGluZGV4OiBpbmRleCsrIH0sIGl0ZW0pKTtcclxuICAgIH0sXHJcblxyXG5cclxuICAgIC8qKiBTZXQgRmlyc3QgQ2hhciBUbyBMb3dlciAqL1xyXG4gICAgRmlyc3RDaGFyVG9Mb3dlcjogKHRleHQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcgPT4ge1xyXG4gICAgICAgIGlmIChUb29scy5Jc09ubHlXaGl0ZVNwYWNlKHRleHQpKSByZXR1cm4gJyc7XHJcblxyXG4gICAgICAgIGNvbnN0IHRleHRBcnJheTogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgdGV4dCEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYoaSA9PT0gMCkgdGV4dEFycmF5LnB1c2godGV4dCFbaV0udG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgICAgIGVsc2UgdGV4dEFycmF5LnB1c2godGV4dCFbaV0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRleHRBcnJheS5qb2luKCcnKTtcclxuICAgIH0sXHJcblxyXG5cclxuICAgIC8qKiBTZXQgRmlyc3QgQ2hhciBUbyBVcHBlciAqL1xyXG4gICAgRmlyc3RDaGFyVG9VcHBlcjogKHRleHQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcgPT4ge1xyXG4gICAgICAgIGlmIChUb29scy5Jc09ubHlXaGl0ZVNwYWNlKHRleHQpKSByZXR1cm4gJyc7XHJcblxyXG4gICAgICAgIGNvbnN0IHRleHRBcnJheTogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgdGV4dCEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYoaSA9PT0gMCkgdGV4dEFycmF5LnB1c2godGV4dCFbaV0udG9VcHBlckNhc2UoKSk7XHJcbiAgICAgICAgICAgIGVsc2UgdGV4dEFycmF5LnB1c2godGV4dCFbaV0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRleHRBcnJheS5qb2luKCcnKTtcclxuICAgIH0sXHJcblxyXG5cclxuICAgIC8qKiBTb3J0IGFuIGFycmF5IGluIGFzY2VuZGluZyBvcmRlciBieSBwcm9wZXJ0eSAqL1xyXG4gICAgU29ydEJ5OiA8VD4oYXJyYXk6IFRbXSwgcHJvcGVydHk6IHN0cmluZywgcHJvcGVydHlUeXBlOiAnc3RyaW5nJyB8ICdudW1iZXInID0gJ3N0cmluZycpOiBUW10gPT4ge1xyXG4gICAgICAgIHN3aXRjaCAocHJvcGVydHlUeXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhcnJheS5zb3J0KCh4OiBhbnksIHk6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChTdHJpbmcoeFtwcm9wZXJ0eV0pLnRvVXBwZXJDYXNlKCkudHJpbSgpIDwgU3RyaW5nKHlbcHJvcGVydHldKS50b1VwcGVyQ2FzZSgpLnRyaW0oKSkgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKFN0cmluZyh4W3Byb3BlcnR5XSkudG9VcHBlckNhc2UoKS50cmltKCkgPiBTdHJpbmcoeVtwcm9wZXJ0eV0pLnRvVXBwZXJDYXNlKCkudHJpbSgpKSByZXR1cm4gMTtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHJldHVybiAwO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhcnJheS5zb3J0KCh4OiBhbnksIHk6IGFueSkgPT4gTnVtYmVyKHhbcHJvcGVydHldIC0gTnVtYmVyKHlbcHJvcGVydHldKSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcblxyXG4gICAgLyoqIFNvcnQgYW4gYXJyYXkgaW4gZGVzY2VuZGluZyBvcmRlciBieSBwcm9wZXJ0eSAqL1xyXG4gICAgU29ydEJ5RGVzYzogPFQ+KGFycmF5OiBUW10sIHByb3BlcnR5OiBzdHJpbmcsIHByb3BlcnR5VHlwZTogJ3N0cmluZycgfCAnbnVtYmVyJyA9ICdzdHJpbmcnKTogVFtdID0+IHtcclxuICAgICAgICBzd2l0Y2ggKHByb3BlcnR5VHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlICdzdHJpbmcnOiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXkuc29ydCgoeDogYW55LCB5OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoU3RyaW5nKHhbcHJvcGVydHldKS50b1VwcGVyQ2FzZSgpLnRyaW0oKSA8IFN0cmluZyh5W3Byb3BlcnR5XSkudG9VcHBlckNhc2UoKS50cmltKCkpIHJldHVybiAxO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKFN0cmluZyh4W3Byb3BlcnR5XSkudG9VcHBlckNhc2UoKS50cmltKCkgPiBTdHJpbmcoeVtwcm9wZXJ0eV0pLnRvVXBwZXJDYXNlKCkudHJpbSgpKSByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gMDtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjYXNlICdudW1iZXInOiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXkuc29ydCgoeDogYW55LCB5OiBhbnkpID0+IE51bWJlcihOdW1iZXIoeVtwcm9wZXJ0eV0pKSAtIHhbcHJvcGVydHldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG5cclxuICAgIC8qKiBSZXR1cm4gYSBzdHJpbmcgd2l0aCBmb3JtYW4gbnVtZXJpYyAqL1xyXG4gICAgR2V0TnVtZXJpY0Zvcm1hdDogKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLCBkZWNpbWFsczogbnVtYmVyID0gMCk6IHN0cmluZyA9PiB7XHJcbiAgICAgICAgaWYgKFRvb2xzLklzT25seVdoaXRlU3BhY2UodmFsdWUpIHx8IGlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnMCc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdmFsdWVJbnRlZ2VyID0gJyc7XHJcbiAgICAgICAgbGV0IHZhbHVlRGVjaW1hbCA9ICcnO1xyXG4gICAgICAgIHZhbHVlID0gdmFsdWUhLnRvU3RyaW5nKCkucmVwbGFjZUFsbCgnICcsICcnKTtcclxuXHJcbiAgICAgICAgaWYgKHZhbHVlLmluY2x1ZGVzKCcuJykgfHwgKGRlY2ltYWxzID4gMCkpIHtcclxuICAgICAgICAgICAgdmFsdWVJbnRlZ2VyID0gdmFsdWUuaW5jbHVkZXMoJy4nKSA/IHZhbHVlLnNwbGl0KCcuJylbMF0gOiB2YWx1ZTtcclxuXHJcbiAgICAgICAgICAgIGlmIChkZWNpbWFscyA+IDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IFBBRERJTkcgPSBkZWNpbWFscyAtIHZhbHVlRGVjaW1hbC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZURlY2ltYWwgPSB2YWx1ZS5pbmNsdWRlcygnLicpID8gdmFsdWUuc3BsaXQoJy4nKVsxXSA6ICcnO1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IFBBRERJTkc7IGkrKykgdmFsdWVEZWNpbWFsICs9ICcwJztcclxuICAgICAgICAgICAgICAgIHZhbHVlRGVjaW1hbCA9IHZhbHVlRGVjaW1hbC5zdWJzdHJpbmcoMCwgZGVjaW1hbHMpO1xyXG4gICAgICAgICAgICAgICAgdmFsdWVEZWNpbWFsID0gYC4ke3ZhbHVlRGVjaW1hbH1gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdmFsdWVJbnRlZ2VyID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgY291bnRlciA9IDA7XHJcbiAgICAgICAgY29uc3QgVkFMVUVfSU5URUdFUl9BUlJBWTogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICBmb3IoY29uc3QgY2hhciBvZiB2YWx1ZUludGVnZXIuc3BsaXQoJycpLnJldmVyc2UoKSkge1xyXG4gICAgICAgICAgICBpZiAoY291bnRlciA9PSAzKSB7XHJcbiAgICAgICAgICAgICAgICBWQUxVRV9JTlRFR0VSX0FSUkFZLnB1c2goJywnKTtcclxuICAgICAgICAgICAgICAgIGNvdW50ZXIgPSAwO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBWQUxVRV9JTlRFR0VSX0FSUkFZLnB1c2goY2hhcik7XHJcbiAgICAgICAgICAgICsrY291bnRlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhbHVlSW50ZWdlciA9IFZBTFVFX0lOVEVHRVJfQVJSQVkucmV2ZXJzZSgpLmpvaW4oJycpO1xyXG4gICAgICAgIHJldHVybiBgJHt2YWx1ZUludGVnZXJ9JHt2YWx1ZURlY2ltYWx9YDtcclxuICAgIH0sXHJcblxyXG5cclxuICAgIC8qKiBXYWl0IHRoZSB0aW1lIGluZGljYXRlZCAqL1xyXG4gICAgU2xlZXA6IChtaWxsaXNlY29uZHM6IG51bWJlciA9IDAsIHJlZmVyZW5jZTogc3RyaW5nIHwgbnVsbCA9IG51bGwpID0+IHtcclxuICAgICAgICBpZiAoVG9vbHMuSXNOdWxsKHJlZmVyZW5jZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKFJlc29sdmUgPT4gc2V0VGltZW91dChSZXNvbHZlLCBtaWxsaXNlY29uZHMpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVsc2UgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KFJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICByZWZlcmVuY2UgPSByZWZlcmVuY2UhLnJlcGxhY2VBbGwoJyAnLCAnXycpLnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICAgICAgICBpZiAocmVmZXJlbmNlX3NpZ25hbCgpLmhhc093blByb3BlcnR5KHJlZmVyZW5jZSkpIHtcclxuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwocmVmZXJlbmNlX3NpZ25hbCgpW3JlZmVyZW5jZSFdKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVmZXJlbmNlX3NpZ25hbC5zZXQoT2JqZWN0LmFzc2lnbihyZWZlcmVuY2Vfc2lnbmFsKCksIHtcclxuICAgICAgICAgICAgICAgIFtyZWZlcmVuY2UhXTogc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwocmVmZXJlbmNlX3NpZ25hbCgpW3JlZmVyZW5jZSFdKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBfcmVmZXJlbmNlID0geyAuLi5yZWZlcmVuY2Vfc2lnbmFsKCkgfTtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgX3JlZmVyZW5jZVtyZWZlcmVuY2UhXTtcclxuICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2Vfc2lnbmFsLnNldCh7IC4uLl9yZWZlcmVuY2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9LCBtaWxsaXNlY29uZHMpXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufTsiXX0=
@@ -0,0 +1,12 @@
1
+ export * from './lib/coer-alert/coer-alert.component';
2
+ export * from './lib/breadcrumbs.class';
3
+ export * from './lib/control-value.class';
4
+ export * from './lib/date-time.class';
5
+ export * from './lib/files.class';
6
+ export * from './lib/menu.class';
7
+ export * from './lib/page.class';
8
+ export * from './lib/screen.class';
9
+ export * from './lib/service.class';
10
+ export * from './lib/source.class';
11
+ export * from './lib/tools';
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvdG9vbHMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvY29lci1hbGVydC9jb2VyLWFsZXJ0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JyZWFkY3J1bWJzLmNsYXNzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJvbC12YWx1ZS5jbGFzcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RhdGUtdGltZS5jbGFzcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpbGVzLmNsYXNzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVudS5jbGFzcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BhZ2UuY2xhc3MnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zY3JlZW4uY2xhc3MnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlLmNsYXNzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc291cmNlLmNsYXNzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9vbHMnOyJdfQ==