@refinitiv-ui/elements 6.0.0-next.2 → 6.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.
Files changed (122) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +3 -15
  3. package/lib/autosuggest/custom-elements.json +5 -15
  4. package/lib/autosuggest/custom-elements.md +14 -14
  5. package/lib/autosuggest/helpers/renderer.d.ts +8 -0
  6. package/lib/autosuggest/helpers/renderer.js +35 -0
  7. package/lib/autosuggest/helpers/types.d.ts +101 -1
  8. package/lib/autosuggest/helpers/utils.d.ts +1 -8
  9. package/lib/autosuggest/helpers/utils.js +0 -27
  10. package/lib/autosuggest/index.d.ts +33 -32
  11. package/lib/autosuggest/index.js +246 -202
  12. package/lib/autosuggest/themes/halo/dark/index.js +1 -1
  13. package/lib/autosuggest/themes/halo/light/index.js +1 -1
  14. package/lib/autosuggest/themes/solar/charcoal/index.js +1 -1
  15. package/lib/autosuggest/themes/solar/pearl/index.js +1 -1
  16. package/lib/button/themes/halo/dark/index.js +1 -1
  17. package/lib/button/themes/halo/light/index.js +1 -1
  18. package/lib/calendar/themes/halo/dark/index.js +1 -1
  19. package/lib/calendar/themes/halo/light/index.js +1 -1
  20. package/lib/calendar/themes/solar/charcoal/index.js +1 -1
  21. package/lib/calendar/themes/solar/pearl/index.js +1 -1
  22. package/lib/card/themes/halo/dark/index.js +1 -1
  23. package/lib/card/themes/halo/light/index.js +1 -1
  24. package/lib/chart/plugins/doughnut-center-label.js +1 -1
  25. package/lib/chart/themes/halo/dark/index.js +1 -1
  26. package/lib/chart/themes/halo/light/index.js +1 -1
  27. package/lib/clock/custom-elements.json +10 -10
  28. package/lib/clock/custom-elements.md +1 -1
  29. package/lib/clock/index.d.ts +44 -16
  30. package/lib/clock/index.js +178 -61
  31. package/lib/clock/themes/halo/dark/index.js +1 -1
  32. package/lib/clock/themes/halo/light/index.js +1 -1
  33. package/lib/clock/themes/solar/charcoal/index.js +1 -1
  34. package/lib/clock/themes/solar/pearl/index.js +1 -1
  35. package/lib/collapse/themes/halo/dark/index.js +1 -1
  36. package/lib/collapse/themes/halo/light/index.js +1 -1
  37. package/lib/combo-box/custom-elements.json +0 -22
  38. package/lib/combo-box/custom-elements.md +0 -7
  39. package/lib/combo-box/themes/halo/dark/index.js +1 -1
  40. package/lib/combo-box/themes/halo/light/index.js +1 -1
  41. package/lib/counter/themes/halo/dark/index.js +1 -1
  42. package/lib/counter/themes/halo/light/index.js +1 -1
  43. package/lib/datetime-field/custom-elements.json +0 -75
  44. package/lib/datetime-field/custom-elements.md +27 -36
  45. package/lib/datetime-picker/themes/halo/dark/index.js +1 -1
  46. package/lib/datetime-picker/themes/halo/light/index.js +1 -1
  47. package/lib/dialog/themes/halo/dark/index.js +1 -1
  48. package/lib/dialog/themes/halo/light/index.js +1 -1
  49. package/lib/flag/utils/FlagLoader.d.ts +2 -32
  50. package/lib/flag/utils/FlagLoader.js +2 -69
  51. package/lib/heatmap/themes/halo/dark/index.js +1 -1
  52. package/lib/heatmap/themes/halo/light/index.js +1 -1
  53. package/lib/icon/utils/IconLoader.d.ts +2 -37
  54. package/lib/icon/utils/IconLoader.js +2 -76
  55. package/lib/interactive-chart/themes/halo/dark/index.js +1 -1
  56. package/lib/interactive-chart/themes/halo/light/index.js +1 -1
  57. package/lib/item/themes/halo/dark/index.js +1 -1
  58. package/lib/item/themes/halo/light/index.js +1 -1
  59. package/lib/list/themes/halo/dark/index.js +1 -1
  60. package/lib/list/themes/halo/light/index.js +1 -1
  61. package/lib/multi-input/themes/halo/dark/index.js +1 -1
  62. package/lib/multi-input/themes/halo/light/index.js +1 -1
  63. package/lib/number-field/custom-elements.json +0 -48
  64. package/lib/number-field/custom-elements.md +20 -26
  65. package/lib/number-field/themes/halo/dark/index.js +1 -1
  66. package/lib/number-field/themes/halo/light/index.js +1 -1
  67. package/lib/overlay/themes/halo/dark/index.js +1 -1
  68. package/lib/overlay/themes/halo/light/index.js +1 -1
  69. package/lib/overlay-menu/themes/halo/dark/index.js +1 -1
  70. package/lib/overlay-menu/themes/halo/light/index.js +1 -1
  71. package/lib/password-field/custom-elements.json +0 -7
  72. package/lib/password-field/custom-elements.md +0 -6
  73. package/lib/pill/themes/halo/dark/index.js +1 -1
  74. package/lib/pill/themes/halo/light/index.js +1 -1
  75. package/lib/rating/custom-elements.json +4 -4
  76. package/lib/rating/custom-elements.md +2 -2
  77. package/lib/rating/index.d.ts +84 -32
  78. package/lib/rating/index.js +209 -80
  79. package/lib/rating/themes/halo/dark/index.js +1 -1
  80. package/lib/rating/themes/halo/light/index.js +1 -1
  81. package/lib/rating/themes/solar/charcoal/index.js +1 -1
  82. package/lib/rating/themes/solar/pearl/index.js +1 -1
  83. package/lib/rating/utils.d.ts +9 -0
  84. package/lib/rating/utils.js +11 -0
  85. package/lib/search-field/custom-elements.json +0 -7
  86. package/lib/search-field/custom-elements.md +0 -6
  87. package/lib/select/themes/halo/dark/index.js +1 -1
  88. package/lib/select/themes/halo/light/index.js +1 -1
  89. package/lib/sidebar-layout/themes/halo/dark/index.js +1 -1
  90. package/lib/sidebar-layout/themes/halo/light/index.js +1 -1
  91. package/lib/slider/constants.d.ts +5 -1
  92. package/lib/slider/constants.js +6 -1
  93. package/lib/slider/index.d.ts +112 -49
  94. package/lib/slider/index.js +331 -182
  95. package/lib/slider/themes/halo/dark/index.js +1 -1
  96. package/lib/slider/themes/halo/light/index.js +1 -1
  97. package/lib/slider/themes/solar/charcoal/index.js +1 -1
  98. package/lib/slider/themes/solar/pearl/index.js +1 -1
  99. package/lib/slider/utils.d.ts +1 -9
  100. package/lib/slider/utils.js +1 -18
  101. package/lib/sparkline/themes/halo/dark/index.js +1 -1
  102. package/lib/sparkline/themes/halo/light/index.js +1 -1
  103. package/lib/tab/themes/halo/dark/index.js +1 -1
  104. package/lib/tab/themes/halo/light/index.js +1 -1
  105. package/lib/tab-bar/themes/halo/dark/index.js +1 -1
  106. package/lib/tab-bar/themes/halo/light/index.js +1 -1
  107. package/lib/text-field/custom-elements.json +0 -22
  108. package/lib/text-field/custom-elements.md +0 -7
  109. package/lib/toggle/themes/halo/dark/index.js +1 -1
  110. package/lib/toggle/themes/halo/light/index.js +1 -1
  111. package/lib/tree/elements/tree-item.js +1 -2
  112. package/lib/tree/elements/tree.d.ts +6 -0
  113. package/lib/tree/elements/tree.js +11 -1
  114. package/lib/tree/themes/halo/dark/index.js +2 -2
  115. package/lib/tree/themes/halo/light/index.js +2 -2
  116. package/lib/tree-select/index.js +15 -5
  117. package/lib/tree-select/themes/halo/dark/index.js +1 -1
  118. package/lib/tree-select/themes/halo/light/index.js +1 -1
  119. package/lib/version.js +1 -1
  120. package/package.json +19 -18
  121. package/lib/clock/utils/timestamps.d.ts +0 -6
  122. package/lib/clock/utils/timestamps.js +0 -6
@@ -1,5 +1,7 @@
1
1
  import { JSXInterface } from '../jsx';
2
2
  import { TemplateResult, CSSResultGroup, PropertyValues, ResponsiveElement, ElementSize } from '@refinitiv-ui/core';
3
+ import '@refinitiv-ui/phrasebook/locale/en/clock.js';
4
+ import { TranslatePromise } from '@refinitiv-ui/translate';
3
5
  /**
4
6
  * Display hours, minutes and seconds as clock interface
5
7
  * @fires value-changed - Fired when the value property changes while ticking.
@@ -42,6 +44,14 @@ export declare class Clock extends ResponsiveElement {
42
44
  * Used for accurately ticking time.
43
45
  */
44
46
  private tickTimestamp;
47
+ /**
48
+ * Current active segment for interactive mode
49
+ */
50
+ private activeSegment;
51
+ /**
52
+ * Clock internal translation strings
53
+ */
54
+ protected tPromise: TranslatePromise;
45
55
  /**
46
56
  * Get time value in format `hh:mm:ss`
47
57
  * @default 00:00:00
@@ -81,14 +91,14 @@ export declare class Clock extends ResponsiveElement {
81
91
  * Display the seconds segment.
82
92
  */
83
93
  showSeconds: boolean;
84
- /**
85
- * Enabled interactive mode. Allowing the user to offset the value.
86
- */
87
- interactive: boolean;
88
94
  /**
89
95
  * Display clock in analogue style.
90
96
  */
91
97
  analogue: boolean;
98
+ /**
99
+ * Enable interactive mode. Allowing the user to offset the value.
100
+ */
101
+ interactive: boolean;
92
102
  /**
93
103
  * Getter for hours part.
94
104
  */
@@ -151,6 +161,11 @@ export declare class Clock extends ResponsiveElement {
151
161
  * @returns display seconds
152
162
  */
153
163
  private get displaySeconds();
164
+ /**
165
+ * Get display value
166
+ * @returns display value
167
+ */
168
+ private get displayValue();
154
169
  /**
155
170
  * Get display AM or PM depending on time
156
171
  * @returns `AM` or `PM`
@@ -161,6 +176,11 @@ export declare class Clock extends ResponsiveElement {
161
176
  * @returns Result
162
177
  */
163
178
  private get isAM();
179
+ /**
180
+ * Returns `true` if display minutes has changed
181
+ * @returns Result
182
+ */
183
+ private get isDisplayMinutesChange();
164
184
  /**
165
185
  * Configures the tick manager to either start or stop ticking,
166
186
  * depending on the state of the element.
@@ -182,15 +202,15 @@ export declare class Clock extends ResponsiveElement {
182
202
  */
183
203
  private shift;
184
204
  /**
185
- * Returns any shift amount assigned to a target.
186
- * @param target target of an event.
205
+ * Returns any shift amount assigned to a segment.
206
+ * @param segment Segment.
187
207
  * @returns {void}
188
208
  */
189
- private getShiftAmountFromTarget;
209
+ private getShiftAmountFromSegment;
190
210
  /**
191
211
  * Returns `true` or `false` depends on the offset value's effect on giving segment
192
212
  *
193
- * @param segment segment's name
213
+ * @param segment segment
194
214
  * @returns Result
195
215
  */
196
216
  private isSegmentShifted;
@@ -217,27 +237,24 @@ export declare class Clock extends ResponsiveElement {
217
237
  private manageControlKeys;
218
238
  /**
219
239
  * Handles UP key press
220
- * @param event Event Object
221
240
  * @returns {void}
222
241
  */
223
242
  private handleUpKey;
224
243
  /**
225
244
  * Handle DOWN key press
226
- * @param event Event Object
227
245
  * @returns {void}
228
246
  */
229
247
  private handleDownKey;
230
248
  /**
231
- * Template for increment and decrement button
232
- * if interactive mode is enabled.
233
- * @returns {TemplateResult} template result
249
+ * Set aria-valuenow to display value and aria-valuetext to translated format
250
+ * @param updateAriaValueText condition to update aria-valueText
251
+ * @returns {void}
234
252
  */
235
- private generateButtonsTemplate;
253
+ private updateAriaValue;
236
254
  /**
237
255
  * Get template of segment
238
- * @param name segment's name
256
+ * @param segment segment
239
257
  * @param value segment's value
240
- * @param shiftAmount amount to shift
241
258
  * @returns {TemplateResult} template
242
259
  */
243
260
  private generateSegmentTemplate;
@@ -288,6 +305,17 @@ export declare class Clock extends ResponsiveElement {
288
305
  * @returns {void}
289
306
  */
290
307
  protected firstUpdated(changedProperties: PropertyValues): void;
308
+ /**
309
+ * Handles interactive by update role, tabindex, and aria attribute
310
+ * @returns {void}
311
+ */
312
+ private interactiveChanged;
313
+ /**
314
+ * Called before update() to compute values needed during the update.
315
+ * @param changedProperties Properties that has changed
316
+ * @returns {void}
317
+ */
318
+ protected willUpdate(changedProperties: PropertyValues): void;
291
319
  /**
292
320
  * Template for digital clock
293
321
  * @returns {TemplateResult} template
@@ -4,14 +4,23 @@ import { customElement } from '@refinitiv-ui/core/decorators/custom-element.js';
4
4
  import { property } from '@refinitiv-ui/core/decorators/property.js';
5
5
  import { query } from '@refinitiv-ui/core/decorators/query.js';
6
6
  import { state } from '@refinitiv-ui/core/decorators/state.js';
7
- import { ifDefined } from '@refinitiv-ui/core/directives/if-defined.js';
8
7
  import { VERSION } from '../version.js';
9
- import { MILLISECONDS_IN_SECOND, HOURS_OF_NOON, isValidTime, toTimeSegment, TimeFormat, format, padNumber } from '@refinitiv-ui/utils/date.js';
10
- import { HOURS_IN_DAY, MINUTES_IN_HOUR, SECONDS_IN_DAY, SECONDS_IN_HOUR, SECONDS_IN_MINUTE } from './utils/timestamps.js';
8
+ import '@refinitiv-ui/phrasebook/locale/en/clock.js';
9
+ import { MILLISECONDS_IN_SECOND, HOURS_OF_NOON, isValidTime, toTimeSegment, TimeFormat, format, padNumber, HOURS_IN_DAY, MINUTES_IN_HOUR, SECONDS_IN_MINUTE, SECONDS_IN_DAY, SECONDS_IN_HOUR, parse } from '@refinitiv-ui/utils/date.js';
10
+ import { translate, TranslatePropertyKey } from '@refinitiv-ui/translate';
11
11
  import { register, deRegister } from './utils/TickManager.js';
12
- const UP = 'Up';
13
- const DOWN = 'Down';
14
12
  const SMALL_SIZE = 130; // Break point for small size clock face.
13
+ var Direction;
14
+ (function (Direction) {
15
+ Direction["UP"] = "Up";
16
+ Direction["DOWN"] = "Down";
17
+ })(Direction || (Direction = {}));
18
+ var Segment;
19
+ (function (Segment) {
20
+ Segment["HOURS"] = "hours";
21
+ Segment["MINUTES"] = "minutes";
22
+ Segment["SECOND"] = "seconds";
23
+ })(Segment || (Segment = {}));
15
24
  /**
16
25
  * Display hours, minutes and seconds as clock interface
17
26
  * @fires value-changed - Fired when the value property changes while ticking.
@@ -43,6 +52,10 @@ let Clock = class Clock extends ResponsiveElement {
43
52
  * Used for accurately ticking time.
44
53
  */
45
54
  this.tickTimestamp = 0;
55
+ /**
56
+ * Current active segment for interactive mode
57
+ */
58
+ this.activeSegment = Segment.HOURS;
46
59
  this._offset = 0;
47
60
  this._tick = false;
48
61
  /**
@@ -53,14 +66,14 @@ let Clock = class Clock extends ResponsiveElement {
53
66
  * Display the seconds segment.
54
67
  */
55
68
  this.showSeconds = false;
56
- /**
57
- * Enabled interactive mode. Allowing the user to offset the value.
58
- */
59
- this.interactive = false;
60
69
  /**
61
70
  * Display clock in analogue style.
62
71
  */
63
72
  this.analogue = false;
73
+ /**
74
+ * Enable interactive mode. Allowing the user to offset the value.
75
+ */
76
+ this.interactive = false;
64
77
  /**
65
78
  * Size of the clock.
66
79
  */
@@ -171,10 +184,9 @@ let Clock = class Clock extends ResponsiveElement {
171
184
  return this._tick;
172
185
  }
173
186
  set tick(value) {
174
- const newValue = !!value;
175
187
  const oldValue = this.tick;
176
- if (oldValue !== newValue) {
177
- this._tick = newValue;
188
+ if (oldValue !== value) {
189
+ this._tick = value;
178
190
  this.synchronise();
179
191
  this.configureTickManager();
180
192
  this.requestUpdate('tick', oldValue);
@@ -244,6 +256,18 @@ let Clock = class Clock extends ResponsiveElement {
244
256
  get displaySeconds() {
245
257
  return this.displayTime % SECONDS_IN_MINUTE;
246
258
  }
259
+ /**
260
+ * Get display value
261
+ * @returns display value
262
+ */
263
+ get displayValue() {
264
+ return format({
265
+ hours: this.displayHours,
266
+ minutes: this.displayMinutes,
267
+ seconds: this.displaySeconds,
268
+ milliseconds: 0
269
+ }, TimeFormat.HHmmss);
270
+ }
247
271
  /**
248
272
  * Get display AM or PM depending on time
249
273
  * @returns `AM` or `PM`
@@ -258,6 +282,13 @@ let Clock = class Clock extends ResponsiveElement {
258
282
  get isAM() {
259
283
  return this.displayHours24 < HOURS_OF_NOON;
260
284
  }
285
+ /**
286
+ * Returns `true` if display minutes has changed
287
+ * @returns Result
288
+ */
289
+ get isDisplayMinutesChange() {
290
+ return this.displayTime % SECONDS_IN_MINUTE === 0;
291
+ }
261
292
  /**
262
293
  * Configures the tick manager to either start or stop ticking,
263
294
  * depending on the state of the element.
@@ -290,42 +321,39 @@ let Clock = class Clock extends ResponsiveElement {
290
321
  * @returns {void}
291
322
  */
292
323
  shift(direction, amount) {
293
- this.offset = (SECONDS_IN_DAY + this.offset + amount * (direction === UP ? 1 : -1)) % SECONDS_IN_DAY;
324
+ this.offset = (SECONDS_IN_DAY + this.offset + amount * (direction === Direction.UP ? 1 : -1)) % SECONDS_IN_DAY;
294
325
  this.notifyPropertyChange('offset', this.offset);
295
326
  }
296
327
  /**
297
- * Returns any shift amount assigned to a target.
298
- * @param target target of an event.
328
+ * Returns any shift amount assigned to a segment.
329
+ * @param segment Segment.
299
330
  * @returns {void}
300
331
  */
301
- getShiftAmountFromTarget(target) {
302
- if (target === this.hoursPart) {
332
+ getShiftAmountFromSegment(segment) {
333
+ if (segment === Segment.HOURS) {
303
334
  return SECONDS_IN_HOUR;
304
335
  }
305
- if (target === this.minutesPart) {
336
+ if (segment === Segment.MINUTES) {
306
337
  return SECONDS_IN_MINUTE;
307
338
  }
308
- if (target === this.secondsPart) {
339
+ if (segment === Segment.SECOND) {
309
340
  return 1;
310
341
  }
311
- if (target instanceof HTMLElement && target.parentElement) {
312
- return this.getShiftAmountFromTarget(target.parentElement);
313
- }
314
342
  return 0;
315
343
  }
316
344
  /**
317
345
  * Returns `true` or `false` depends on the offset value's effect on giving segment
318
346
  *
319
- * @param segment segment's name
347
+ * @param segment segment
320
348
  * @returns Result
321
349
  */
322
350
  isSegmentShifted(segment) {
323
351
  switch (segment) {
324
- case 'hours':
352
+ case Segment.HOURS:
325
353
  return this.hours !== this.displayHours24;
326
- case 'minutes':
354
+ case Segment.MINUTES:
327
355
  return this.minutes !== this.displayMinutes;
328
- case 'seconds':
356
+ case Segment.SECOND:
329
357
  return this.seconds !== this.displaySeconds;
330
358
  default:
331
359
  return false;
@@ -338,7 +366,9 @@ let Clock = class Clock extends ResponsiveElement {
338
366
  * @returns {void}
339
367
  */
340
368
  onKeydown(event) {
341
- this.manageControlKeys(event);
369
+ if (this.interactive) {
370
+ this.manageControlKeys(event);
371
+ }
342
372
  }
343
373
  /**
344
374
  * Handles any tap events
@@ -347,8 +377,21 @@ let Clock = class Clock extends ResponsiveElement {
347
377
  * @returns {void}
348
378
  */
349
379
  onTapStart(event) {
350
- if (event.target instanceof HTMLElement && event.target.dataset.key) {
351
- this.shift(event.target.dataset.key, this.getShiftAmountFromTarget(event.target));
380
+ if (!this.interactive) {
381
+ return;
382
+ }
383
+ if (event.target === this.hoursPart) {
384
+ this.activeSegment = Segment.HOURS;
385
+ }
386
+ else if (event.target === this.minutesPart) {
387
+ this.activeSegment = Segment.MINUTES;
388
+ }
389
+ const buttonTarget = event.target;
390
+ if (buttonTarget.getAttribute('name') === Direction.UP) {
391
+ this.shift(Direction.UP, this.getShiftAmountFromSegment(this.activeSegment));
392
+ }
393
+ else if (buttonTarget.getAttribute('name') === Direction.DOWN) {
394
+ this.shift(Direction.DOWN, this.getShiftAmountFromSegment(this.activeSegment));
352
395
  }
353
396
  }
354
397
  /**
@@ -358,14 +401,26 @@ let Clock = class Clock extends ResponsiveElement {
358
401
  * @returns {void}
359
402
  */
360
403
  manageControlKeys(event) {
404
+ // Ignore special keys
405
+ if (event.shiftKey || event.ctrlKey || event.altKey || event.metaKey) {
406
+ return;
407
+ }
361
408
  switch (event.key) {
362
409
  case 'Up': // IE
363
410
  case 'ArrowUp':
364
- this.handleUpKey(event);
411
+ this.handleUpKey();
365
412
  break;
366
413
  case 'Down': // IE
367
414
  case 'ArrowDown':
368
- this.handleDownKey(event);
415
+ this.handleDownKey();
416
+ break;
417
+ case 'Left': // IE
418
+ case 'ArrowLeft':
419
+ this.activeSegment = Segment.HOURS;
420
+ break;
421
+ case 'Right': // IE
422
+ case 'ArrowRight':
423
+ this.activeSegment = Segment.MINUTES;
369
424
  break;
370
425
  default:
371
426
  return;
@@ -374,44 +429,57 @@ let Clock = class Clock extends ResponsiveElement {
374
429
  }
375
430
  /**
376
431
  * Handles UP key press
377
- * @param event Event Object
378
432
  * @returns {void}
379
433
  */
380
- handleUpKey(event) {
381
- this.shift(UP, this.getShiftAmountFromTarget(event.target));
434
+ handleUpKey() {
435
+ this.shift(Direction.UP, this.getShiftAmountFromSegment(this.activeSegment));
382
436
  }
383
437
  /**
384
438
  * Handle DOWN key press
385
- * @param event Event Object
386
439
  * @returns {void}
387
440
  */
388
- handleDownKey(event) {
389
- this.shift(DOWN, this.getShiftAmountFromTarget(event.target));
441
+ handleDownKey() {
442
+ this.shift(Direction.DOWN, this.getShiftAmountFromSegment(this.activeSegment));
390
443
  }
391
444
  /**
392
- * Template for increment and decrement button
393
- * if interactive mode is enabled.
394
- * @returns {TemplateResult} template result
445
+ * Set aria-valuenow to display value and aria-valuetext to translated format
446
+ * @param updateAriaValueText condition to update aria-valueText
447
+ * @returns {void}
395
448
  */
396
- generateButtonsTemplate() {
397
- return html `
398
- <div part="increment-button" role="button" data-key="${UP}"></div>
399
- <div part="decrement-button" role="button" data-key="${DOWN}"></div>
400
- `;
449
+ async updateAriaValue(updateAriaValueText = true) {
450
+ this.setAttribute('aria-valuenow', `${this.displayTime}`);
451
+ if (updateAriaValueText) {
452
+ const value = await this.tPromise('TIME', {
453
+ value: parse(this.displayValue),
454
+ amPm: this.amPm,
455
+ showSeconds: this.showSeconds
456
+ });
457
+ this.setAttribute('aria-valuetext', value);
458
+ }
401
459
  }
402
460
  /**
403
461
  * Get template of segment
404
- * @param name segment's name
462
+ * @param segment segment
405
463
  * @param value segment's value
406
- * @param shiftAmount amount to shift
407
464
  * @returns {TemplateResult} template
408
465
  */
409
- generateSegmentTemplate(name, value) {
466
+ generateSegmentTemplate(segment, value) {
467
+ const isActive = this.interactive && (segment === this.activeSegment);
410
468
  return html `
411
- <div part="segment ${name}${ifDefined(this.isSegmentShifted(name) ? ' shifted' : '')}" tabindex="${ifDefined(this.interactive ? '0' : undefined)}">
469
+ <div part="segment ${segment}${this.isSegmentShifted(segment) ? ' shifted' : ''}"
470
+ ?active=${isActive}>
412
471
  ${padNumber(value, 2)}
413
- ${this.interactive ? this.generateButtonsTemplate() : undefined}
414
- </div>
472
+ <div
473
+ part="increment-button"
474
+ aria-hidden="true"
475
+ name=${Direction.UP}
476
+ ?active=${isActive}></div>
477
+ <div
478
+ part="decrement-button"
479
+ aria-hidden="true"
480
+ name=${Direction.DOWN}
481
+ ?active=${isActive}></div>
482
+ </div>
415
483
  `;
416
484
  }
417
485
  /**
@@ -420,7 +488,7 @@ let Clock = class Clock extends ResponsiveElement {
420
488
  */
421
489
  get dividerTemplate() {
422
490
  return html `
423
- <div part="segment divider">:</div>
491
+ <div part="segment divider" aria-hidden="true">:</div>
424
492
  `;
425
493
  }
426
494
  /**
@@ -437,21 +505,21 @@ let Clock = class Clock extends ResponsiveElement {
437
505
  * @returns {TemplateResult} template
438
506
  */
439
507
  get hoursSegmentTemplate() {
440
- return this.generateSegmentTemplate('hours', this.displayHours);
508
+ return this.generateSegmentTemplate(Segment.HOURS, this.displayHours);
441
509
  }
442
510
  /**
443
511
  * Template of minutes segment
444
512
  * @returns {TemplateResult} template
445
513
  */
446
514
  get minutesSegmentTemplate() {
447
- return this.generateSegmentTemplate('minutes', this.displayMinutes);
515
+ return this.generateSegmentTemplate(Segment.MINUTES, this.displayMinutes);
448
516
  }
449
517
  /**
450
518
  * Template of seconds segment
451
519
  * @returns {TemplateResult} template
452
520
  */
453
521
  get secondsSegmentTemplate() {
454
- return this.generateSegmentTemplate('seconds', this.displaySeconds);
522
+ return this.generateSegmentTemplate(Segment.SECOND, this.displaySeconds);
455
523
  }
456
524
  /**
457
525
  * Called when the element's dimension have changed
@@ -485,9 +553,52 @@ let Clock = class Clock extends ResponsiveElement {
485
553
  */
486
554
  firstUpdated(changedProperties) {
487
555
  super.firstUpdated(changedProperties);
488
- this.renderRoot.addEventListener('keydown', (event) => this.onKeydown(event));
556
+ this.addEventListener('keydown', (event) => this.onKeydown(event));
489
557
  this.renderRoot.addEventListener('tapstart', (event) => this.onTapStart(event));
490
558
  }
559
+ /**
560
+ * Handles interactive by update role, tabindex, and aria attribute
561
+ * @returns {void}
562
+ */
563
+ interactiveChanged() {
564
+ if (this.interactive) {
565
+ this.setAttribute('role', 'spinbutton');
566
+ this.setAttribute('tabindex', this.getAttribute('tabindex') || '0');
567
+ void this.updateAriaValue();
568
+ }
569
+ else {
570
+ if (this.getAttribute('role') === 'spinbutton') {
571
+ this.removeAttribute('role');
572
+ }
573
+ this.removeAttribute('aria-valuenow');
574
+ this.removeAttribute('aria-valuetext');
575
+ }
576
+ }
577
+ /**
578
+ * Called before update() to compute values needed during the update.
579
+ * @param changedProperties Properties that has changed
580
+ * @returns {void}
581
+ */
582
+ willUpdate(changedProperties) {
583
+ super.willUpdate(changedProperties);
584
+ if (changedProperties.has('interactive')) {
585
+ this.interactiveChanged();
586
+ }
587
+ if (this.interactive) {
588
+ if (!this.hasUpdated
589
+ || changedProperties.has('offset')
590
+ || changedProperties.has('value')
591
+ || changedProperties.has('showSeconds')
592
+ || changedProperties.has('amPm')
593
+ || changedProperties.has(TranslatePropertyKey)) {
594
+ void this.updateAriaValue();
595
+ }
596
+ // Avoid announce every second that could interrupt the screen reader when the user takes an action.
597
+ if (changedProperties.has('sessionTicks')) {
598
+ void this.updateAriaValue(this.isDisplayMinutesChange);
599
+ }
600
+ }
601
+ }
491
602
  /**
492
603
  * Template for digital clock
493
604
  * @returns {TemplateResult} template
@@ -542,6 +653,12 @@ __decorate([
542
653
  __decorate([
543
654
  state()
544
655
  ], Clock.prototype, "tickTimestamp", void 0);
656
+ __decorate([
657
+ state()
658
+ ], Clock.prototype, "activeSegment", void 0);
659
+ __decorate([
660
+ translate({ mode: 'promise', scope: 'ef-clock' })
661
+ ], Clock.prototype, "tPromise", void 0);
545
662
  __decorate([
546
663
  property({ type: String })
547
664
  ], Clock.prototype, "value", null);
@@ -552,17 +669,17 @@ __decorate([
552
669
  property({ type: Boolean })
553
670
  ], Clock.prototype, "tick", null);
554
671
  __decorate([
555
- property({ type: Boolean, attribute: 'am-pm' })
672
+ property({ type: Boolean, attribute: 'am-pm', reflect: true })
556
673
  ], Clock.prototype, "amPm", void 0);
557
674
  __decorate([
558
- property({ type: Boolean, attribute: 'show-seconds' })
675
+ property({ type: Boolean, attribute: 'show-seconds', reflect: true })
559
676
  ], Clock.prototype, "showSeconds", void 0);
560
- __decorate([
561
- property({ type: Boolean })
562
- ], Clock.prototype, "interactive", void 0);
563
677
  __decorate([
564
678
  property({ type: Boolean, reflect: true })
565
679
  ], Clock.prototype, "analogue", void 0);
680
+ __decorate([
681
+ property({ type: Boolean })
682
+ ], Clock.prototype, "interactive", void 0);
566
683
  __decorate([
567
684
  query('[part~=hours]', true)
568
685
  ], Clock.prototype, "hoursPart", void 0);
@@ -1,2 +1,2 @@
1
1
 
2
- elf.customStyles.define('ef-clock', ':host{font-size:2.5em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}:host [part~=segment]{padding:.15em 0;line-height:1em;align-self:flex-end}:host [part~=hours],:host [part~=minutes],:host [part~=seconds]{position:relative;outline:0}:host [part~=hours][part~=shifted],:host [part~=minutes][part~=shifted],:host [part~=seconds][part~=shifted]{color:#334bff}:host [part~=am-pm]{font-size:60%;line-height:1.5em;padding-left:3px}:host [part=decrement-button],:host [part=increment-button]{left:0;width:100%;height:50%;position:absolute;cursor:pointer;display:none}:host [part=decrement-button]::after,:host [part=increment-button]::after{content:"";left:0;right:0;width:0;height:0;margin:0 auto;position:absolute;border-style:solid;transform:rotate(360deg)}:host [part=decrement-button][part=increment-button],:host [part=increment-button][part=increment-button]{top:0}:host [part=decrement-button][part=increment-button]::after,:host [part=increment-button][part=increment-button]::after{top:0;border-width:0 .167em .178em;border-color:transparent transparent #334bff}:host [part=decrement-button][part=decrement-button],:host [part=increment-button][part=decrement-button]{bottom:0}:host [part=decrement-button][part=decrement-button]::after,:host [part=increment-button][part=decrement-button]::after{bottom:0;border-width:.178em .167em 0;border-color:#334bff transparent transparent}:host [part~=hours]:focus,:host [part~=minutes]:focus,:host [part~=seconds]:focus{color:#334bff}:host [part~=hours]:focus [part=decrement-button],:host [part~=hours]:focus [part=increment-button],:host [part~=minutes]:focus [part=decrement-button],:host [part~=minutes]:focus [part=increment-button],:host [part~=seconds]:focus [part=decrement-button],:host [part~=seconds]:focus [part=increment-button]{display:block}:host([analogue]){border-radius:100%;width:160px;max-width:200px;color:grey;background:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTYzIDE2MyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBjb2xvcj0iIzgwODA4MCI+PHBhdGggc3Ryb2tlLXdpZHRoPSI0IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0iTTgxLjUgMHY5LjMiLz48cGF0aCBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0ibTkwLjAyLjQ0Ni0uNDkyIDQuNjc1TTk4LjQ0NSAxLjc4MWwtLjk3NyA0LjU5N00xMDYuNjg1IDMuOTg5bC0xLjQ1MiA0LjQ3TTExNC42NDkgNy4wNDZsLTEuOTEyIDQuMjk0Ii8+PHBhdGggc3Ryb2tlLXdpZHRoPSI0IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0ibTEyMi4yNSAxMC45MTktNC42NSA4LjA1NCIvPjxwYXRoIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJtMTI5LjQwNCAxNS41NjUtMi43NjIgMy44MDJNMTM2LjAzNCAyMC45MzRsLTMuMTQ1IDMuNDkyTTE0Mi4wNjYgMjYuOTY2bC0zLjQ5MiAzLjE0NU0xNDcuNDM1IDMzLjU5NmwtMy44MDIgMi43NjIiLz48cGF0aCBzdHJva2Utd2lkdGg9IjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJtMTUyLjA4MSA0MC43NS04LjA1NCA0LjY1Ii8+PHBhdGggc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Im0xNTUuOTU0IDQ4LjM1MS00LjI5NCAxLjkxMk0xNTkuMDExIDU2LjMxNWwtNC40NyAxLjQ1Mk0xNjEuMjE5IDY0LjU1NWwtNC41OTcuOTc3TTE2Mi41NTQgNzIuOThsLTQuNjc1LjQ5MiIvPjxwYXRoIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Ik0xNjMgODEuNWgtOS4zIi8+PHBhdGggc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Im0xNjIuNTU0IDkwLjAyLTQuNjc1LS40OTJNMTYxLjIxOSA5OC40NDVsLTQuNTk3LS45NzdNMTU5LjAxMSAxMDYuNjg1bC00LjQ3LTEuNDUyTTE1NS45NTQgMTE0LjY0OWwtNC4yOTQtMS45MTIiLz48cGF0aCBzdHJva2Utd2lkdGg9IjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJtMTUyLjA4MSAxMjIuMjUtOC4wNTQtNC42NSIvPjxwYXRoIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJtMTQ3LjQzNSAxMjkuNDA0LTMuODAyLTIuNzYyTTE0Mi4wNjYgMTM2LjAzNGwtMy40OTItMy4xNDVNMTM2LjAzNCAxNDIuMDY2bC0zLjE0NS0zLjQ5Mk0xMjkuNDA0IDE0Ny40MzVsLTIuNzYyLTMuODAyIi8+PHBhdGggc3Ryb2tlLXdpZHRoPSI0IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0ibTEyMi4yNSAxNTIuMDgxLTQuNjUtOC4wNTQiLz48cGF0aCBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0ibTExNC42NDkgMTU1Ljk1NC0xLjkxMi00LjI5NE0xMDYuNjg1IDE1OS4wMTFsLTEuNDUyLTQuNDdNOTguNDQ1IDE2MS4yMTlsLS45NzctNC41OTdNOTAuMDIgMTYyLjU1NGwtLjQ5Mi00LjY3NSIvPjxwYXRoIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Ik04MS41IDE2M3YtOS4zIi8+PHBhdGggc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Im03Mi45OC40NDYuNDkyIDQuNjc1TTY0LjU1NSAxLjc4MWwuOTc3IDQuNTk3TTU2LjMxNSAzLjk4OWwxLjQ1MiA0LjQ3TTQ4LjM1MSA3LjA0NmwxLjkxMiA0LjI5NCIvPjxwYXRoIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Im00MC43NSAxMC45MTkgNC42NSA4LjA1NCIvPjxwYXRoIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJtMzMuNTk2IDE1LjU2NSAyLjc2MiAzLjgwMk0yNi45NjYgMjAuOTM0bDMuMTQ1IDMuNDkyTTIwLjkzNCAyNi45NjZsMy40OTIgMy4xNDVNMTUuNTY1IDMzLjU5NmwzLjgwMiAyLjc2MiIvPjxwYXRoIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Im0xMC45MTkgNDAuNzUgOC4wNTQgNC42NSIvPjxwYXRoIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJtNy4wNDYgNDguMzUxIDQuMjk0IDEuOTEyTTMuOTg5IDU2LjMxNWw0LjQ3IDEuNDUyTTEuNzgxIDY0LjU1NWw0LjU5Ny45NzdNLjQ0NiA3Mi45OGw0LjY3NS40OTIiLz48cGF0aCBzdHJva2Utd2lkdGg9IjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJNMCA4MS41aDkuMyIvPjxwYXRoIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJtLjQ0NiA5MC4wMiA0LjY3NS0uNDkyTTEuNzgxIDk4LjQ0NWw0LjU5Ny0uOTc3TTMuOTg5IDEwNi42ODVsNC40Ny0xLjQ1Mk03LjA0NiAxMTQuNjQ5bDQuMjk0LTEuOTEyIi8+PHBhdGggc3Ryb2tlLXdpZHRoPSI0IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0ibTEwLjkxOSAxMjIuMjUgOC4wNTQtNC42NSIvPjxwYXRoIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJtMTUuNTY1IDEyOS40MDQgMy44MDItMi43NjJNMjAuOTM0IDEzNi4wMzRsMy40OTItMy4xNDVNMjYuOTY2IDE0Mi4wNjZsMy4xNDUtMy40OTJNMzMuNTk2IDE0Ny40MzVsMi43NjItMy44MDIiLz48cGF0aCBzdHJva2Utd2lkdGg9IjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJtNDAuNzUgMTUyLjA4MSA0LjY1LTguMDU0Ii8+PHBhdGggc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Im00OC4zNTEgMTU1Ljk1NCAxLjkxMi00LjI5NE01Ni4zMTUgMTU5LjAxMWwxLjQ1Mi00LjQ3TTY0LjU1NSAxNjEuMjE5bC45NzctNC41OTdNNzIuOTggMTYyLjU1NGwuNDkyLTQuNjc1Ii8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04MC44MTQgNC42NVYwaDF2NC42NWgtMXpNNzIuMTkyLjUybC40OTMgNC42MjMuOTk0LS4xMDYtLjQ5My00LjYyMy0uOTk0LjEwNnptMTguNDA3IDE2MS43MDQtLjQ5My00LjYyNC0uOTk0LjEwNi40OTMgNC42MjQuOTk0LS4xMDZ6TTY0LjY2IDYuNDk0bC0uOTgtNC41NDYuOTc4LS4yMS45OCA0LjU0NS0uOTc4LjIxek05OS4xMSAxNjAuNzk1bC0uOTgtNC41NDUtLjk3Ny4yMS45OCA0LjU0Ni45NzctLjIxMXpNNTYuODIgOC42ODhsLTEuNDU2LTQuNDE2Ljk1LS4zMTMgMS40NTUgNC40MTYtLjk1LjMxM3ptNTAuNjA5IDE0OS43ODMtMS40NTYtNC40MTYtLjk1LjMxMyAxLjQ1NiA0LjQxNi45NS0uMzEzek00OS4yNTYgMTEuNjk5IDQ3LjM0IDcuNDYybC45MTItLjQxMiAxLjkxNSA0LjIzNy0uOTEuNDEyem02Ni4xOTQgMTQzLjU4Mi0xLjkxNS00LjIzNy0uOTEyLjQxMiAxLjkxNiA0LjIzNy45MTEtLjQxMnptLTMzLjQ3MyA3LjQ2MnYtNC42NDloLTF2NC42NDloMXpNMzUuNzI3IDE5LjcxbC0yLjc0LTMuNzU4LjgwOC0uNTg5IDIuNzQgMy43NTgtLjgwOS41OXptOTQuMDc3IDEyNy4wODEtMi43NC0zLjc1OC0uODA4LjU4OSAyLjczOSAzLjc1OC44MDktLjU4OXpNMjkuNDU0IDI0Ljg5bC0zLjEyMi0zLjQ0Ny43NC0uNjcgMy4xMjMgMy40NDYtLjc0Mi42N3pNMTM2LjQ1OCAxNDEuM2wtMy4xMjItMy40NDctLjc0MS42NzIgMy4xMjIgMy40NDYuNzQxLS42NzF6TTIzLjc1OSAzMC43MWwtMy40Ny0zLjA5Ni42NjYtLjc0NiAzLjQ3IDMuMDk3LS42NjYuNzQ2ek0xNDIuNTAyIDEzNS4xM2wtMy40Ny0zLjA5Ni0uNjY2Ljc0NiAzLjQ2OSAzLjA5Ni42NjctLjc0NnpNMTguNzE2IDM3LjA5OWwtMy43NzktMi43MTIuNTg0LS44MTMgMy43NzggMi43MTItLjU4My44MTN6bTEyOS4xMzcgOTEuMjU4LTMuNzc4LTIuNzEyLS41ODMuODEyIDMuNzc4IDIuNzEyLjU4My0uODEyek00Mi41MiAxNS4yMTlsLTIuMzI2LTQuMDI3Ljg2Ni0uNSAyLjMyNiA0LjAyNy0uODY2LjV6bTgwLjA3NyAxMzYuMzMyLTIuMzI2LTQuMDI3LS44NjYuNSAyLjMyNSA0LjAyNy44NjctLjV6TTExLjAwNSA1MC43OTlsLTQuMjUyLTEuODg1TDcuMTYgNDhsNC4yNTIgMS44ODUtLjQwNi45MTR6bTE0NS4wMzIgNjMuMDMtNC4yNTEtMS44ODUtLjQwNi45MTQgNC4yNTIgMS44ODYuNDA1LS45MTV6TTguMTYzIDU4LjQyMWwtNC40MjctMS40MjUuMzA2LS45NTJMOC40NyA1Ny40N2wtLjMwNy45NTF6bTE1MC44OTIgNDcuMzI2LTQuNDI3LTEuNDI0LS4zMDcuOTUyIDQuNDI4IDEuNDI0LjMwNi0uOTUyek02LjE0MyA2Ni4zMDdsLTQuNTU0LS45NDcuMjA0LS45NzkgNC41NTQuOTQ4LS4yMDQuOTc5em0xNTUuMDU5IDMxLjA3Ni00LjU1NC0uOTQ3LS4yMDQuOTc5IDQuNTU0Ljk0Ny4yMDQtLjk3OXpNNC45NyA3NC4zNjEuMzQyIDczLjlsLjA5OS0uOTk1IDQuNjI4LjQ2LS4wOTkuOTk1ek0xNjIuNDUgODguODQzbC00LjYyOC0uNDYtLjA5OS45OTUgNC42MjguNDYuMDk5LS45OTV6TTE0LjY0MiA0My41MTRsLTQuMDI4LTIuMzI1LjUtLjg2NiA0LjAyOCAyLjMyNS0uNS44NjZ6bTEzNy41MzUgNzguMDQtNC4wMjgtMi4zMjUtLjUwMS44NjYgNC4wMjggMi4zMjUuNTAxLS44NjZ6TTUuMTQ1IDkwLjA4bC00LjYyNS40OTMtLjEwNi0uOTk1IDQuNjI1LS40OTMuMTA2Ljk5NXpNMTYyLjI3IDcyLjE3bC00LjYyNS40OTMuMTA2Ljk5NSA0LjYyNS0uNDkzLS4xMDYtLjk5NHpNNi40OTYgOTguMWwtNC41NDcuOTgtLjIxMS0uOTc3IDQuNTQ3LS45OC4yMS45Nzh6bTE1NC4zNDYtMzQuNDM3LTQuNTQ3Ljk4LjIxMS45NzcgNC41NDctLjk4LS4yMTEtLjk3N3pNOC42OTEgMTA1Ljk0MWwtNC40MTggMS40NTYtLjMxMy0uOTUgNC40MTctMS40NTUuMzE0Ljk0OXptMTQ5LjgyNy01MC41OTUtNC40MTggMS40NTYuMzEzLjk1IDQuNDE4LTEuNDU2LS4zMTMtLjk1ek0xMS43MDMgMTEzLjUwMWwtNC4yMzkgMS45MTYtLjQxMi0uOTEyIDQuMjM5LTEuOTE1LjQxMi45MTF6bTE0My42MjMtNjYuMTc0LTQuMjM4IDEuOTE1LjQxMi45MTEgNC4yMzgtMS45MTUtLjQxMi0uOTExek00LjY1MSA4MS45NTNIMHYtMWg0LjY1MXYxem0xNTguMTQtMS4xNjNoLTQuNjUxdjFoNC42NTF2LTF6TTE5LjcxNiAxMjcuMDI3bC0zLjc1OSAyLjczOS0uNTktLjgwOCAzLjc2LTIuNzM5LjU4OS44MDh6bTEyNy4xMTgtOTQuMDUtMy43NTkgMi43MzkuNTg5LjgwOCAzLjc1OS0yLjczOC0uNTg5LS44MDl6TTI0Ljg5NyAxMzMuMjk4bC0zLjQ0NyAzLjEyMS0uNjcyLS43NDEgMy40NDgtMy4xMjEuNjcxLjc0MXpNMTQxLjM0MSAyNi4zMjRsLTMuNDQ3IDMuMTIuNjcxLjc0MiAzLjQ0OC0zLjEyMS0uNjcyLS43NDF6TTMwLjcxOSAxMzguOTlsLTMuMDk3IDMuNDY5LS43NDYtLjY2NiAzLjA5Ny0zLjQ2OS43NDcuNjY2ek0xMzUuMTcgMjAuMjgzbC0zLjA5OCAzLjQ2OS43NDYuNjY2IDMuMDk4LTMuNDY5LS43NDYtLjY2NnptLTk4LjA2IDEyMy43NS0yLjcxMiAzLjc3Ny0uODEzLS41ODMgMi43MTMtMy43NzcuODEyLjU4M3ptOTEuMjg1LTEyOS4xLTIuNzEyIDMuNzc3LjgxMi41ODMgMi43MTMtMy43NzctLjgxMy0uNTgzek0xNS4yMjQgMTIwLjIzNmwtNC4wMjggMi4zMjUtLjUtLjg2NiA0LjAyOC0yLjMyNS41Ljg2NnptMTM2LjM3MS04MC4wNTQtNC4wMjggMi4zMjUuNS44NjYgNC4wMjgtMi4zMjUtLjUtLjg2NnpNNTAuODE0IDE1MS43NDFsLTEuODg2IDQuMjUxLS45MTQtLjQwNSAxLjg4Ni00LjI1MS45MTQuNDA1em02My4wNDktMTQ0Ljk5LTEuODg2IDQuMjUxLjkxNC40MDUgMS44ODYtNC4yNS0uOTE0LS40MDZ6TTU4LjQzOCAxNTQuNTgybC0xLjQyNSA0LjQyNy0uOTUyLS4zMDcgMS40MjUtNC40MjYuOTUyLjMwNnptNDcuMzQtMTUwLjg0Ny0xLjQyNSA0LjQyNi45NTIuMzA2IDEuNDI1LTQuNDI2LS45NTItLjMwNnpNNjYuMzI3IDE1Ni42MDJsLS45NDggNC41NTMtLjk3OS0uMjA0Ljk0OC00LjU1Mi45NzkuMjAzek05Ny40MTEgMS41ODlsLS45NDcgNC41NTIuOTc5LjIwNC45NDgtNC41NTMtLjk4LS4yMDN6TTc0LjM4MiAxNTcuNzc1bC0uNDYgNC42MjctLjk5NS0uMDk5LjQ2LTQuNjI3Ljk5NS4wOTl6TTg4Ljg2OC4zNDJsLS40NiA0LjYyNy45OTUuMDk4LjQ2LTQuNjI3LS45OTUtLjA5OHpNNDMuNTI3IDE0OC4xMDVsLTIuMzI2IDQuMDI3LS44NjYtLjUgMi4zMjYtNC4wMjcuODY2LjV6TTEyMS41OSAxMC42MTFsLTIuMzI2IDQuMDI3Ljg2Ni41IDIuMzI2LTQuMDI3LS44NjYtLjV6IiBmaWxsPSJjdXJyZW50Q29sb3IiLz48cGF0aCBkPSJNMTEyLjg4NyAyMy4wOTNjMC0uNTQ3LjAxMy0uOTU0LjA0LTEuMjJsLS4yNi4yNGMtLjEuMDg2LS40NC4zNjYtMS4wMi44NGwtLjU0LS42OCAxLjk2LTEuNTRoLjl2Ni42N2gtMS4wOHYtNC4zMXpNMTM1LjIwNSA0OC45MjdsMS43Mi0xLjczYy41MTQtLjUyLjg1NC0uODkgMS4wMi0xLjExLjE2Ny0uMjIuMjg3LS40MjQuMzYtLjYxYTEuNjkgMS42OSAwIDAgMCAuMTEtLjYxYzAtLjMwNy0uMDktLjU0Ny0uMjctLjcyLS4xOC0uMTczLS40My0uMjYtLjc1LS4yNi0uMjY2IDAtLjUyLjA1LS43Ni4xNS0uMjMzLjA5My0uNTA2LjI2My0uODIuNTFsLS41Ny0uNzJjLjM2LS4zLjcxNC0uNTE3IDEuMDYtLjY1LjM1NC0uMTMzLjczNC0uMiAxLjE0LS4yLjYyNyAwIDEuMTI3LjE2IDEuNS40OC4zNzQuMzIuNTYuNzU3LjU2IDEuMzEgMCAuMzEzLS4wNTMuNi0uMTYuODYtLjEyLjI4Ni0uMjg2LjU2Ni0uNS44NC0uMjQuMy0uNjEzLjY5LTEuMTIgMS4xN2wtMS4xNiAxLjExdi4wNWgzLjE3di45NWgtNC41M3YtLjgyek0xNDcuMTUxIDg0Ljg2NGMtLjc0IDAtMS4zNjctLjEyLTEuODgtLjM2di0uOTVhNC42IDQuNiAwIDAgMCAuOS4zMWMuMzIuMDczLjYyNi4xMS45Mi4xMS41MjYgMCAuOTEzLS4wOTMgMS4xNi0uMjguMjUzLS4xOTMuMzgtLjQ5LjM4LS44OSAwLS4zNi0uMTQtLjYyMy0uNDItLjc5LS4yOC0uMTY2LS43MjctLjI1LTEuMzQtLjI1aC0uNTd2LS44OGguNThjMS4wNzMgMCAxLjYxLS4zNjcgMS42MS0xLjEgMC0uMjkzLS4wOTQtLjUxNy0uMjgtLjY3LS4xODctLjE1My0uNDY0LS4yMy0uODMtLjIzLS4yNjcgMC0uNTE3LjAzNy0uNzUuMTEtLjIzNC4wNzMtLjUwNC4yMS0uODEuNDFsLS41My0uNzVhMy41NTggMy41NTggMCAwIDEgMi4xNC0uNjhjLjY3MyAwIDEuMi4xNDcgMS41OC40NC4zOC4yODcuNTcuNjkuNTcgMS4yMSAwIC40MTMtLjEyNy43NjQtLjM4IDEuMDUtLjI0Ny4yOC0uNTk0LjQ3LTEuMDQuNTd2LjA0Yy41MzMuMDY3LjkzNi4yMzMgMS4yMS41LjI3My4yNjcuNDEuNjIzLjQxIDEuMDcgMCAuNjQtLjIzIDEuMTM3LS42OSAxLjQ5LS40NTQuMzQ3LTEuMS41Mi0xLjk0LjUyek0xMzguMDI1IDExNS4yODNoLTMuMDR2LS44M2wzLjA0LTQuMzloMS4wNHY0LjMzaC45di44OWgtLjl2MS40NWgtMS4wNHYtMS40NXptMC0uODl2LTEuNjdjMC0uNTUzLjAxNy0xLjA0LjA1LTEuNDZoLS4wNGMtLjA5My4yMDctLjIyNi40NS0uNC43M2wtMS42NSAyLjRoMi4wNHpNMTEzLjU5NCAxMzkuMTUyYy0uNzQ3IDAtMS4zMzMtLjEyNC0xLjc2LS4zN3YtLjk2Yy4yNDcuMTMzLjUyNy4yMzYuODQuMzEuMzIuMDczLjYyLjExLjkuMTEuNDggMCAuODUtLjEwNyAxLjExLS4zMi4yNi0uMjIuMzktLjUzNC4zOS0uOTQgMC0uODA3LS41MTctMS4yMS0xLjU1LTEuMjEtLjE2NyAwLS4zNzcuMDItLjYzLjA2bC0uNDQuMDctLjQ5LS4yNy4yNy0zLjI3aDMuNDh2Ljk2aC0yLjU0bC0uMTUgMS42NmMuMzQ3LS4wNjcuNjY3LS4xLjk2LS4xLjY2NyAwIDEuMi4xOCAxLjYuNTQuNC4zNTMuNi44MzYuNiAxLjQ1IDAgLjcxMy0uMjI3IDEuMjczLS42OCAxLjY4LS40NTMuNC0xLjA5LjYtMS45MS42ek04MS43NSAxNDguMDg5Yy0uNzQgMC0xLjMyLS4yNTYtMS43NC0uNzctLjQyLS41MTMtLjYzLTEuMjQtLjYzLTIuMTggMC0yLjYyNiAxLjA3LTMuOTQgMy4yMS0zLjk0LjMyIDAgLjYwNC4wMjcuODUuMDh2Ljg5YTIuODUgMi44NSAwIDAgMC0uODEtLjFjLS43MiAwLTEuMjYuMTk3LTEuNjIuNTktLjM2LjM5NC0uNTU2IDEuMDEtLjU5IDEuODVoLjA2Yy4zMi0uNTI2LjgyNy0uNzkgMS41Mi0uNzkuNjA3IDAgMS4wOC4xODcgMS40Mi41Ni4zNDcuMzc0LjUyLjg4NC41MiAxLjUzIDAgLjctLjE5NiAxLjI1Ny0uNTkgMS42Ny0uMzkzLjQwNy0uOTI2LjYxLTEuNi42MXptLS4wMi0uODhjLjM2IDAgLjY0LS4xMi44NC0uMzYuMjA3LS4yNDYuMzEtLjU5My4zMS0xLjA0IDAtLjM4Ni0uMDk2LS42ODYtLjI5LS45LS4xOTMtLjIyLS40Ny0uMzMtLjgzLS4zMy0uMjMzIDAtLjQ1LjA1NC0uNjUuMTYtLjE5My4xLS4zNS4yMzQtLjQ3LjRhLjkxMi45MTIgMCAwIDAtLjE3LjUyYzAgLjQzNC4xMTcuODA0LjM1IDEuMTEuMjM0LjI5NC41MzcuNDQuOTEuNDR6TTQ5LjI2IDEzMy4zMDJINDUuOHYtLjk0aDQuNjF2Ljc2bC0yLjYxIDUuOTFoLTEuMTZsMi42Mi01Ljczek0yNC43MDMgMTE2Ljg1M2MtLjcyNiAwLTEuMjkzLS4xNTMtMS43LS40Ni0uNC0uMzEzLS42LS43Ni0uNi0xLjM0IDAtLjM4LjEwNy0uNzE2LjMyLTEuMDEuMjE0LS4yOTMuNTU0LS41NTYgMS4wMi0uNzktLjQtLjI0LS42OS0uNDkzLS44Ny0uNzZhMS42OTcgMS42OTcgMCAwIDEtLjI2LS45M2MwLS40OTMuMTg3LS44ODMuNTYtMS4xNy4zOC0uMjg2Ljg4NC0uNDMgMS41MS0uNDMuNjM0IDAgMS4xMzQuMTQ3IDEuNS40NC4zNzQuMjg3LjU2LjY3Ny41NiAxLjE3IDAgLjY5NC0uNDEzIDEuMjQ0LTEuMjQgMS42NS41Mi4yNTQuODkuNTI0IDEuMTEuODEuMjI3LjI4Ny4zNC42MTQuMzQuOTggMCAuNTYtLjIwMyAxLjAwNy0uNjEgMS4zNC0uNC4zMzQtLjk0Ni41LTEuNjQuNXptMC00LjA3Yy4zNi0uMTYuNjE3LS4zMy43Ny0uNTEuMTU0LS4xOC4yMy0uMzkuMjMtLjYzYS43NjIuNzYyIDAgMCAwLS4yOC0uNjJjLS4xODYtLjE1My0uNDM2LS4yMy0uNzUtLjIzLS4zMDYgMC0uNTUzLjA3Ny0uNzQuMjNhLjc2MS43NjEgMCAwIDAtLjI4LjYyYzAgLjE1NC4wMzQuMjk0LjEuNDIuMDY3LjEyNy4xNjcuMjQ0LjMuMzUuMTQuMTA3LjM1Ny4yMy42NS4zN3ptLS4wMiAzLjI1Yy4zOTQgMCAuNjk3LS4wOS45MS0uMjcuMjItLjE4Ni4zMy0uNDQuMzMtLjc2IDAtLjQ3My0uNDAzLS44ODYtMS4yMS0xLjI0bC0uMTQtLjA2Yy0uNC4xNzQtLjY5LjM2Ny0uODcuNTgtLjE4LjIwNy0uMjcuNDUtLjI3LjczIDAgLjMyLjExLjU3LjMzLjc1LjIyNy4xOC41MzQuMjcuOTIuMjd6TTE0Ljg2MiA4NC44NTRjLS40MTQgMC0uNzA0LS4wMjMtLjg3LS4wN3YtLjkxYy4yOC4wNzQuNTUuMTEuODEuMTEuNzMzIDAgMS4yNzYtLjE5MyAxLjYzLS41OC4zNi0uMzkzLjU1Ni0xLjAxLjU5LTEuODVoLS4wNWMtLjE4LjI3My0uMzk3LjQ3NC0uNjUuNi0uMjU0LjEyLS41NTQuMTgtLjkuMTgtLjU5NCAwLTEuMDYtLjE4My0xLjQtLjU1LS4zNC0uMzY3LS41MS0uODczLS41MS0xLjUyIDAtLjcwNi4xOTYtMS4yNjYuNTktMS42OC4zOTMtLjQxMy45My0uNjIgMS42MS0uNjIuNDggMCAuODk2LjExNyAxLjI1LjM1LjM1My4yMzQuNjI2LjU3NC44MiAxLjAyLjE5My40NC4yOS45NjcuMjkgMS41OCAwIDEuMzI3LS4yNjcgMi4zMTctLjggMi45Ny0uNTM0LjY0Ny0xLjMzNy45Ny0yLjQxLjk3em0uODMtMy4zOGMuMzYgMCAuNjY2LS4xMDYuOTItLjMyYS45NTYuOTU2IDAgMCAwIC4zNy0uNzZjMC0uNDMzLS4xMTctLjc5Ny0uMzUtMS4wOWExLjA5OSAxLjA5OSAwIDAgMC0uOS0uNDRjLS4zOCAwLS42Ny4xMi0uODcuMzYtLjE5NC4yNC0uMjkuNTg0LS4yOSAxLjAzIDAgLjM4Ny4wOTMuNjg3LjI4LjkuMTg2LjIxNC40NjYuMzIuODQuMzJ6TTIzLjQ0IDQ3LjY3MWMwLS41NDcuMDE0LS45NTMuMDQtMS4yMmwtLjI2LjI0Yy0uMS4wODctLjQ0LjM2Ny0xLjAyLjg0bC0uNTQtLjY4IDEuOTYtMS41NGguOXY2LjY3aC0xLjA4di00LjMxem01LjAwOCA0LjQzYy0uNzUzIDAtMS4zMjMtLjI5LTEuNzEtLjg3LS4zOC0uNTg3LS41Ny0xLjQ0My0uNTctMi41NyAwLTEuMTguMTg3LTIuMDUuNTYtMi42MS4zNzQtLjU2Ljk0Ny0uODQgMS43Mi0uODQuNzQgMCAxLjMwNC4yOTQgMS42OS44OC4zODcuNTguNTggMS40MzcuNTggMi41NyAwIDEuMTYtLjE4NiAyLjAyMy0uNTYgMi41OS0uMzczLjU2Ny0uOTQzLjg1LTEuNzEuODV6bTAtLjljLjQwNyAwIC43MDQtLjIuODktLjYuMTk0LS40LjI5LTEuMDQ3LjI5LTEuOTRzLS4wOTYtMS41NC0uMjktMS45NGMtLjE4Ni0uNDA2LS40ODMtLjYxLS44OS0uNjEtLjQyIDAtLjcyMy4yLS45MS42LS4xODYuMzk0LS4yOCAxLjA0NC0uMjggMS45NSAwIC45MDcuMDk0IDEuNTU3LjI4IDEuOTUuMTg3LjM5NC40OS41OS45MS41OXpNNDguMDE4IDIzLjA5M2MwLS41NDcuMDE0LS45NTQuMDQtMS4yMmwtLjI2LjI0Yy0uMS4wODYtLjQ0LjM2Ni0xLjAyLjg0bC0uNTQtLjY4IDEuOTYtMS41NGguOXY2LjY3aC0xLjA4di00LjMxem00Ljk5OCAwYzAtLjU0Ny4wMTQtLjk1NC4wNC0xLjIybC0uMjYuMjRjLS4xLjA4Ni0uNDQuMzY2LTEuMDIuODRsLS41NC0uNjggMS45Ni0xLjU0aC45djYuNjdoLTEuMDh2LTQuMzF6TTc4LjE4MyAxNS4zMThjMC0uNTQ3LjAxNC0uOTUzLjA0LTEuMjJsLS4yNi4yNGMtLjEuMDg3LS40NC4zNjctMS4wMi44NGwtLjU0LS42OCAxLjk2LTEuNTRoLjl2Ni42N2gtMS4wOHYtNC4zMXptMi43MzggMy40OSAxLjcyLTEuNzNjLjUxNC0uNTIuODU0LS44OSAxLjAyLTEuMTEuMTY3LS4yMi4yODctLjQyMy4zNi0uNjEuMDc0LS4xOTMuMTEtLjM5Ny4xMS0uNjEgMC0uMzA3LS4wOS0uNTQ3LS4yNy0uNzItLjE4LS4xNzMtLjQzLS4yNi0uNzUtLjI2LS4yNjYgMC0uNTIuMDUtLjc2LjE1LS4yMzMuMDkzLS41MDYuMjYzLS44Mi41MWwtLjU3LS43MmMuMzYtLjMuNzE0LS41MTcgMS4wNi0uNjUuMzU0LS4xMzMuNzM0LS4yIDEuMTQtLjIuNjI3IDAgMS4xMjcuMTYgMS41LjQ4LjM3NC4zMi41Ni43NTcuNTYgMS4zMSAwIC4zMTMtLjA1My42LS4xNi44Ni0uMTIuMjg3LS4yODYuNTY3LS41Ljg0LS4yNC4zLS42MTMuNjktMS4xMiAxLjE3bC0xLjE2IDEuMTF2LjA1aDMuMTd2Ljk1aC00LjUzdi0uODJ6IiBmaWxsPSJjdXJyZW50Q29sb3IiLz48L3N2Zz4=) center center no-repeat}:host([analogue]) [part=digital]{display:flex;position:absolute;top:20%;left:0;right:0;justify-content:center;font-size:.34em}:host([analogue]) [part=digital] [part~=am-pm]{font-size:100%;line-height:1}:host([analogue]) [part=hands]::after{content:\'\';position:absolute;border-radius:50%;width:9%;height:9%;top:45.5%;left:45.5%;border:2px solid #fff;box-sizing:border-box;z-index:1}:host([analogue]) [part~=hand]::after{content:\'\';position:absolute}:host([analogue]) [part~=second]::after{width:1%;height:43%;margin-top:3%;margin-left:49.5%;background-color:#334bff}:host([analogue]) [part~=minute]::after{width:3%;height:43%;margin-top:3%;margin-left:48.5%;background-color:#fff}:host([analogue]) [part~=hour]::after{width:3%;height:28%;margin-top:18%;margin-left:48.5%;background-color:#fff}:host([analogue][size=small]){font-size:10px;min-width:50px;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIHZpZXdCb3g9IjAgMCA2NCA2NCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBjb2xvcj0iI0NDQ0NDQyI+CiAgICA8Y2lyY2xlIGN4PSIzMiIgY3k9IjMyIiByPSIzMS41IiBzdHJva2U9ImN1cnJlbnRDb2xvciIvPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zMS4yNjE5IDAuOTk5NTEyVjMuOTUxODlIMzIuMjYxOVYwLjk5OTUxMkgzMS4yNjE5Wk00NS4yODU4IDcuMjQ2ODdMNDYuNzYyIDQuNjkwMDNMNDcuNjI4IDUuMTkwMDNMNDYuMTUxOCA3Ljc0Njg3TDQ1LjI4NTggNy4yNDY4N1pNMTUuODM1NyA1LjU3NTUzTDE3LjMxMTkgOC4xMzIzN0wxOC4xNzc5IDcuNjMyMzdMMTYuNzAxNyA1LjA3NTUzTDE1LjgzNTcgNS41NzU1M1pNNC44MzgxIDE3LjA4OThMNy4zOTQ5NCAxOC41NjZMNy44OTQ5NCAxNy43TDUuMzM4MSAxNi4yMjM4TDQuODM4MSAxNy4wODk4Wk0zLjk1MjM4IDMyLjczNzRIMVYzMS43Mzc0SDMuOTUyMzhWMzIuNzM3NFpNNy4zNzEyNiA0NS41MDlMNC44MTQ0MiA0Ni45ODUyTDUuMzE0NDIgNDcuODUxMkw3Ljg3MTI2IDQ2LjM3NUw3LjM3MTI2IDQ1LjUwOVpNMTUuOTA5NSA1OC40NzA1TDE3LjM4NTcgNTUuOTEzNkwxOC4yNTE4IDU2LjQxMzZMMTYuNzc1NiA1OC45NzA1TDE1LjkwOTUgNTguNDcwNVpNMzEuMjYxOSA2MC4wNDY5VjYyLjk5OTNIMzIuMjYxOVY2MC4wNDY5SDMxLjI2MTlaTTQ2LjkxMDMgNTkuMjA5M0w0NS40MzQxIDU2LjY1MjVMNDYuMzAwMSA1Ni4xNTI1TDQ3Ljc3NjMgNTguNzA5M0w0Ni45MTAzIDU5LjIwOTNaTTU1LjkxNDMgNDYuNjE0TDU4LjQ3MTEgNDguMDkwMkw1OC45NzExIDQ3LjIyNDJMNTYuNDE0MyA0NS43NDhMNTUuOTE0MyA0Ni42MTRaTTYzIDMyLjczNzRINjAuMDQ3NlYzMS43Mzc0SDYzVjMyLjczNzRaTTU4LjQyMzcgMTUuODM1NEw1NS44NjY5IDE3LjMxMTZMNTYuMzY2OSAxOC4xNzc2TDU4LjkyMzcgMTYuNzAxNEw1OC40MjM3IDE1LjgzNTRaIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4KPC9zdmc+Cg==) center center/cover no-repeat}:host([analogue][size=small]) [part=hands]::after{background-color:#fff}:host([analogue][size=small]) [part~=second]::after{width:1.5%;height:32%;margin-top:16%}:host([analogue][size=small]) [part~=minute]::after{height:37%;margin-top:12%}:host([analogue][size=small]) [part~=hour]::after{height:26%;margin-top:23%}:host([analogue][size=small]) [part~=am-pm]{padding-left:0;display:flex;position:absolute;left:0;right:0;bottom:15%;font-size:100%;justify-content:center}:host [part~=seconds]{color:grey}');
2
+ elf.customStyles.define('ef-clock', ':host{font-size:2.5em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:0}:host [part~=segment]{padding:.15em 0;line-height:1em;align-self:flex-end}:host [part~=hours],:host [part~=minutes],:host [part~=seconds]{position:relative}:host [part~=hours][part~=shifted],:host [part~=minutes][part~=shifted],:host [part~=seconds][part~=shifted]{color:#334bff}:host [part~=am-pm]{font-size:60%;line-height:1.5em;padding-left:3px}:host [part=decrement-button],:host [part=increment-button]{left:0;width:100%;height:50%;position:absolute;cursor:pointer;display:none}:host [part=decrement-button]::after,:host [part=increment-button]::after{content:"";left:0;right:0;width:0;height:0;margin:0 auto;position:absolute;border-style:solid;transform:rotate(360deg)}:host [part=decrement-button][part=increment-button],:host [part=increment-button][part=increment-button]{top:0}:host [part=decrement-button][part=increment-button]::after,:host [part=increment-button][part=increment-button]::after{top:0;border-width:0 .167em .178em;border-color:transparent transparent #334bff}:host [part=decrement-button][part=decrement-button],:host [part=increment-button][part=decrement-button]{bottom:0}:host [part=decrement-button][part=decrement-button]::after,:host [part=increment-button][part=decrement-button]::after{bottom:0;border-width:.178em .167em 0;border-color:#334bff transparent transparent}:host(:focus) [part~=hours][active],:host(:focus) [part~=minutes][active],:host(:focus) [part~=seconds][active]{color:#334bff}:host(:focus) [active]{display:block}:host([analogue]){border-radius:100%;width:160px;max-width:200px;color:grey;background:url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTYzIDE2MyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBjb2xvcj0iIzgwODA4MCI+PHBhdGggc3Ryb2tlLXdpZHRoPSI0IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0iTTgxLjUgMHY5LjMiLz48cGF0aCBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0ibTkwLjAyLjQ0Ni0uNDkyIDQuNjc1TTk4LjQ0NSAxLjc4MWwtLjk3NyA0LjU5N00xMDYuNjg1IDMuOTg5bC0xLjQ1MiA0LjQ3TTExNC42NDkgNy4wNDZsLTEuOTEyIDQuMjk0Ii8+PHBhdGggc3Ryb2tlLXdpZHRoPSI0IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0ibTEyMi4yNSAxMC45MTktNC42NSA4LjA1NCIvPjxwYXRoIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJtMTI5LjQwNCAxNS41NjUtMi43NjIgMy44MDJNMTM2LjAzNCAyMC45MzRsLTMuMTQ1IDMuNDkyTTE0Mi4wNjYgMjYuOTY2bC0zLjQ5MiAzLjE0NU0xNDcuNDM1IDMzLjU5NmwtMy44MDIgMi43NjIiLz48cGF0aCBzdHJva2Utd2lkdGg9IjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJtMTUyLjA4MSA0MC43NS04LjA1NCA0LjY1Ii8+PHBhdGggc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Im0xNTUuOTU0IDQ4LjM1MS00LjI5NCAxLjkxMk0xNTkuMDExIDU2LjMxNWwtNC40NyAxLjQ1Mk0xNjEuMjE5IDY0LjU1NWwtNC41OTcuOTc3TTE2Mi41NTQgNzIuOThsLTQuNjc1LjQ5MiIvPjxwYXRoIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Ik0xNjMgODEuNWgtOS4zIi8+PHBhdGggc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Im0xNjIuNTU0IDkwLjAyLTQuNjc1LS40OTJNMTYxLjIxOSA5OC40NDVsLTQuNTk3LS45NzdNMTU5LjAxMSAxMDYuNjg1bC00LjQ3LTEuNDUyTTE1NS45NTQgMTE0LjY0OWwtNC4yOTQtMS45MTIiLz48cGF0aCBzdHJva2Utd2lkdGg9IjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJtMTUyLjA4MSAxMjIuMjUtOC4wNTQtNC42NSIvPjxwYXRoIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJtMTQ3LjQzNSAxMjkuNDA0LTMuODAyLTIuNzYyTTE0Mi4wNjYgMTM2LjAzNGwtMy40OTItMy4xNDVNMTM2LjAzNCAxNDIuMDY2bC0zLjE0NS0zLjQ5Mk0xMjkuNDA0IDE0Ny40MzVsLTIuNzYyLTMuODAyIi8+PHBhdGggc3Ryb2tlLXdpZHRoPSI0IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0ibTEyMi4yNSAxNTIuMDgxLTQuNjUtOC4wNTQiLz48cGF0aCBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0ibTExNC42NDkgMTU1Ljk1NC0xLjkxMi00LjI5NE0xMDYuNjg1IDE1OS4wMTFsLTEuNDUyLTQuNDdNOTguNDQ1IDE2MS4yMTlsLS45NzctNC41OTdNOTAuMDIgMTYyLjU1NGwtLjQ5Mi00LjY3NSIvPjxwYXRoIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Ik04MS41IDE2M3YtOS4zIi8+PHBhdGggc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Im03Mi45OC40NDYuNDkyIDQuNjc1TTY0LjU1NSAxLjc4MWwuOTc3IDQuNTk3TTU2LjMxNSAzLjk4OWwxLjQ1MiA0LjQ3TTQ4LjM1MSA3LjA0NmwxLjkxMiA0LjI5NCIvPjxwYXRoIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Im00MC43NSAxMC45MTkgNC42NSA4LjA1NCIvPjxwYXRoIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJtMzMuNTk2IDE1LjU2NSAyLjc2MiAzLjgwMk0yNi45NjYgMjAuOTM0bDMuMTQ1IDMuNDkyTTIwLjkzNCAyNi45NjZsMy40OTIgMy4xNDVNMTUuNTY1IDMzLjU5NmwzLjgwMiAyLjc2MiIvPjxwYXRoIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Im0xMC45MTkgNDAuNzUgOC4wNTQgNC42NSIvPjxwYXRoIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJtNy4wNDYgNDguMzUxIDQuMjk0IDEuOTEyTTMuOTg5IDU2LjMxNWw0LjQ3IDEuNDUyTTEuNzgxIDY0LjU1NWw0LjU5Ny45NzdNLjQ0NiA3Mi45OGw0LjY3NS40OTIiLz48cGF0aCBzdHJva2Utd2lkdGg9IjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJNMCA4MS41aDkuMyIvPjxwYXRoIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJtLjQ0NiA5MC4wMiA0LjY3NS0uNDkyTTEuNzgxIDk4LjQ0NWw0LjU5Ny0uOTc3TTMuOTg5IDEwNi42ODVsNC40Ny0xLjQ1Mk03LjA0NiAxMTQuNjQ5bDQuMjk0LTEuOTEyIi8+PHBhdGggc3Ryb2tlLXdpZHRoPSI0IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0ibTEwLjkxOSAxMjIuMjUgOC4wNTQtNC42NSIvPjxwYXRoIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJtMTUuNTY1IDEyOS40MDQgMy44MDItMi43NjJNMjAuOTM0IDEzNi4wMzRsMy40OTItMy4xNDVNMjYuOTY2IDE0Mi4wNjZsMy4xNDUtMy40OTJNMzMuNTk2IDE0Ny40MzVsMi43NjItMy44MDIiLz48cGF0aCBzdHJva2Utd2lkdGg9IjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJtNDAuNzUgMTUyLjA4MSA0LjY1LTguMDU0Ii8+PHBhdGggc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Im00OC4zNTEgMTU1Ljk1NCAxLjkxMi00LjI5NE01Ni4zMTUgMTU5LjAxMWwxLjQ1Mi00LjQ3TTY0LjU1NSAxNjEuMjE5bC45NzctNC41OTdNNzIuOTggMTYyLjU1NGwuNDkyLTQuNjc1Ii8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04MC44MTQgNC42NVYwaDF2NC42NWgtMXpNNzIuMTkyLjUybC40OTMgNC42MjMuOTk0LS4xMDYtLjQ5My00LjYyMy0uOTk0LjEwNnptMTguNDA3IDE2MS43MDQtLjQ5My00LjYyNC0uOTk0LjEwNi40OTMgNC42MjQuOTk0LS4xMDZ6TTY0LjY2IDYuNDk0bC0uOTgtNC41NDYuOTc4LS4yMS45OCA0LjU0NS0uOTc4LjIxek05OS4xMSAxNjAuNzk1bC0uOTgtNC41NDUtLjk3Ny4yMS45OCA0LjU0Ni45NzctLjIxMXpNNTYuODIgOC42ODhsLTEuNDU2LTQuNDE2Ljk1LS4zMTMgMS40NTUgNC40MTYtLjk1LjMxM3ptNTAuNjA5IDE0OS43ODMtMS40NTYtNC40MTYtLjk1LjMxMyAxLjQ1NiA0LjQxNi45NS0uMzEzek00OS4yNTYgMTEuNjk5IDQ3LjM0IDcuNDYybC45MTItLjQxMiAxLjkxNSA0LjIzNy0uOTEuNDEyem02Ni4xOTQgMTQzLjU4Mi0xLjkxNS00LjIzNy0uOTEyLjQxMiAxLjkxNiA0LjIzNy45MTEtLjQxMnptLTMzLjQ3MyA3LjQ2MnYtNC42NDloLTF2NC42NDloMXpNMzUuNzI3IDE5LjcxbC0yLjc0LTMuNzU4LjgwOC0uNTg5IDIuNzQgMy43NTgtLjgwOS41OXptOTQuMDc3IDEyNy4wODEtMi43NC0zLjc1OC0uODA4LjU4OSAyLjczOSAzLjc1OC44MDktLjU4OXpNMjkuNDU0IDI0Ljg5bC0zLjEyMi0zLjQ0Ny43NC0uNjcgMy4xMjMgMy40NDYtLjc0Mi42N3pNMTM2LjQ1OCAxNDEuM2wtMy4xMjItMy40NDctLjc0MS42NzIgMy4xMjIgMy40NDYuNzQxLS42NzF6TTIzLjc1OSAzMC43MWwtMy40Ny0zLjA5Ni42NjYtLjc0NiAzLjQ3IDMuMDk3LS42NjYuNzQ2ek0xNDIuNTAyIDEzNS4xM2wtMy40Ny0zLjA5Ni0uNjY2Ljc0NiAzLjQ2OSAzLjA5Ni42NjctLjc0NnpNMTguNzE2IDM3LjA5OWwtMy43NzktMi43MTIuNTg0LS44MTMgMy43NzggMi43MTItLjU4My44MTN6bTEyOS4xMzcgOTEuMjU4LTMuNzc4LTIuNzEyLS41ODMuODEyIDMuNzc4IDIuNzEyLjU4My0uODEyek00Mi41MiAxNS4yMTlsLTIuMzI2LTQuMDI3Ljg2Ni0uNSAyLjMyNiA0LjAyNy0uODY2LjV6bTgwLjA3NyAxMzYuMzMyLTIuMzI2LTQuMDI3LS44NjYuNSAyLjMyNSA0LjAyNy44NjctLjV6TTExLjAwNSA1MC43OTlsLTQuMjUyLTEuODg1TDcuMTYgNDhsNC4yNTIgMS44ODUtLjQwNi45MTR6bTE0NS4wMzIgNjMuMDMtNC4yNTEtMS44ODUtLjQwNi45MTQgNC4yNTIgMS44ODYuNDA1LS45MTV6TTguMTYzIDU4LjQyMWwtNC40MjctMS40MjUuMzA2LS45NTJMOC40NyA1Ny40N2wtLjMwNy45NTF6bTE1MC44OTIgNDcuMzI2LTQuNDI3LTEuNDI0LS4zMDcuOTUyIDQuNDI4IDEuNDI0LjMwNi0uOTUyek02LjE0MyA2Ni4zMDdsLTQuNTU0LS45NDcuMjA0LS45NzkgNC41NTQuOTQ4LS4yMDQuOTc5em0xNTUuMDU5IDMxLjA3Ni00LjU1NC0uOTQ3LS4yMDQuOTc5IDQuNTU0Ljk0Ny4yMDQtLjk3OXpNNC45NyA3NC4zNjEuMzQyIDczLjlsLjA5OS0uOTk1IDQuNjI4LjQ2LS4wOTkuOTk1ek0xNjIuNDUgODguODQzbC00LjYyOC0uNDYtLjA5OS45OTUgNC42MjguNDYuMDk5LS45OTV6TTE0LjY0MiA0My41MTRsLTQuMDI4LTIuMzI1LjUtLjg2NiA0LjAyOCAyLjMyNS0uNS44NjZ6bTEzNy41MzUgNzguMDQtNC4wMjgtMi4zMjUtLjUwMS44NjYgNC4wMjggMi4zMjUuNTAxLS44NjZ6TTUuMTQ1IDkwLjA4bC00LjYyNS40OTMtLjEwNi0uOTk1IDQuNjI1LS40OTMuMTA2Ljk5NXpNMTYyLjI3IDcyLjE3bC00LjYyNS40OTMuMTA2Ljk5NSA0LjYyNS0uNDkzLS4xMDYtLjk5NHpNNi40OTYgOTguMWwtNC41NDcuOTgtLjIxMS0uOTc3IDQuNTQ3LS45OC4yMS45Nzh6bTE1NC4zNDYtMzQuNDM3LTQuNTQ3Ljk4LjIxMS45NzcgNC41NDctLjk4LS4yMTEtLjk3N3pNOC42OTEgMTA1Ljk0MWwtNC40MTggMS40NTYtLjMxMy0uOTUgNC40MTctMS40NTUuMzE0Ljk0OXptMTQ5LjgyNy01MC41OTUtNC40MTggMS40NTYuMzEzLjk1IDQuNDE4LTEuNDU2LS4zMTMtLjk1ek0xMS43MDMgMTEzLjUwMWwtNC4yMzkgMS45MTYtLjQxMi0uOTEyIDQuMjM5LTEuOTE1LjQxMi45MTF6bTE0My42MjMtNjYuMTc0LTQuMjM4IDEuOTE1LjQxMi45MTEgNC4yMzgtMS45MTUtLjQxMi0uOTExek00LjY1MSA4MS45NTNIMHYtMWg0LjY1MXYxem0xNTguMTQtMS4xNjNoLTQuNjUxdjFoNC42NTF2LTF6TTE5LjcxNiAxMjcuMDI3bC0zLjc1OSAyLjczOS0uNTktLjgwOCAzLjc2LTIuNzM5LjU4OS44MDh6bTEyNy4xMTgtOTQuMDUtMy43NTkgMi43MzkuNTg5LjgwOCAzLjc1OS0yLjczOC0uNTg5LS44MDl6TTI0Ljg5NyAxMzMuMjk4bC0zLjQ0NyAzLjEyMS0uNjcyLS43NDEgMy40NDgtMy4xMjEuNjcxLjc0MXpNMTQxLjM0MSAyNi4zMjRsLTMuNDQ3IDMuMTIuNjcxLjc0MiAzLjQ0OC0zLjEyMS0uNjcyLS43NDF6TTMwLjcxOSAxMzguOTlsLTMuMDk3IDMuNDY5LS43NDYtLjY2NiAzLjA5Ny0zLjQ2OS43NDcuNjY2ek0xMzUuMTcgMjAuMjgzbC0zLjA5OCAzLjQ2OS43NDYuNjY2IDMuMDk4LTMuNDY5LS43NDYtLjY2NnptLTk4LjA2IDEyMy43NS0yLjcxMiAzLjc3Ny0uODEzLS41ODMgMi43MTMtMy43NzcuODEyLjU4M3ptOTEuMjg1LTEyOS4xLTIuNzEyIDMuNzc3LjgxMi41ODMgMi43MTMtMy43NzctLjgxMy0uNTgzek0xNS4yMjQgMTIwLjIzNmwtNC4wMjggMi4zMjUtLjUtLjg2NiA0LjAyOC0yLjMyNS41Ljg2NnptMTM2LjM3MS04MC4wNTQtNC4wMjggMi4zMjUuNS44NjYgNC4wMjgtMi4zMjUtLjUtLjg2NnpNNTAuODE0IDE1MS43NDFsLTEuODg2IDQuMjUxLS45MTQtLjQwNSAxLjg4Ni00LjI1MS45MTQuNDA1em02My4wNDktMTQ0Ljk5LTEuODg2IDQuMjUxLjkxNC40MDUgMS44ODYtNC4yNS0uOTE0LS40MDZ6TTU4LjQzOCAxNTQuNTgybC0xLjQyNSA0LjQyNy0uOTUyLS4zMDcgMS40MjUtNC40MjYuOTUyLjMwNnptNDcuMzQtMTUwLjg0Ny0xLjQyNSA0LjQyNi45NTIuMzA2IDEuNDI1LTQuNDI2LS45NTItLjMwNnpNNjYuMzI3IDE1Ni42MDJsLS45NDggNC41NTMtLjk3OS0uMjA0Ljk0OC00LjU1Mi45NzkuMjAzek05Ny40MTEgMS41ODlsLS45NDcgNC41NTIuOTc5LjIwNC45NDgtNC41NTMtLjk4LS4yMDN6TTc0LjM4MiAxNTcuNzc1bC0uNDYgNC42MjctLjk5NS0uMDk5LjQ2LTQuNjI3Ljk5NS4wOTl6TTg4Ljg2OC4zNDJsLS40NiA0LjYyNy45OTUuMDk4LjQ2LTQuNjI3LS45OTUtLjA5OHpNNDMuNTI3IDE0OC4xMDVsLTIuMzI2IDQuMDI3LS44NjYtLjUgMi4zMjYtNC4wMjcuODY2LjV6TTEyMS41OSAxMC42MTFsLTIuMzI2IDQuMDI3Ljg2Ni41IDIuMzI2LTQuMDI3LS44NjYtLjV6IiBmaWxsPSJjdXJyZW50Q29sb3IiLz48cGF0aCBkPSJNMTEyLjg4NyAyMy4wOTNjMC0uNTQ3LjAxMy0uOTU0LjA0LTEuMjJsLS4yNi4yNGMtLjEuMDg2LS40NC4zNjYtMS4wMi44NGwtLjU0LS42OCAxLjk2LTEuNTRoLjl2Ni42N2gtMS4wOHYtNC4zMXpNMTM1LjIwNSA0OC45MjdsMS43Mi0xLjczYy41MTQtLjUyLjg1NC0uODkgMS4wMi0xLjExLjE2Ny0uMjIuMjg3LS40MjQuMzYtLjYxYTEuNjkgMS42OSAwIDAgMCAuMTEtLjYxYzAtLjMwNy0uMDktLjU0Ny0uMjctLjcyLS4xOC0uMTczLS40My0uMjYtLjc1LS4yNi0uMjY2IDAtLjUyLjA1LS43Ni4xNS0uMjMzLjA5My0uNTA2LjI2My0uODIuNTFsLS41Ny0uNzJjLjM2LS4zLjcxNC0uNTE3IDEuMDYtLjY1LjM1NC0uMTMzLjczNC0uMiAxLjE0LS4yLjYyNyAwIDEuMTI3LjE2IDEuNS40OC4zNzQuMzIuNTYuNzU3LjU2IDEuMzEgMCAuMzEzLS4wNTMuNi0uMTYuODYtLjEyLjI4Ni0uMjg2LjU2Ni0uNS44NC0uMjQuMy0uNjEzLjY5LTEuMTIgMS4xN2wtMS4xNiAxLjExdi4wNWgzLjE3di45NWgtNC41M3YtLjgyek0xNDcuMTUxIDg0Ljg2NGMtLjc0IDAtMS4zNjctLjEyLTEuODgtLjM2di0uOTVhNC42IDQuNiAwIDAgMCAuOS4zMWMuMzIuMDczLjYyNi4xMS45Mi4xMS41MjYgMCAuOTEzLS4wOTMgMS4xNi0uMjguMjUzLS4xOTMuMzgtLjQ5LjM4LS44OSAwLS4zNi0uMTQtLjYyMy0uNDItLjc5LS4yOC0uMTY2LS43MjctLjI1LTEuMzQtLjI1aC0uNTd2LS44OGguNThjMS4wNzMgMCAxLjYxLS4zNjcgMS42MS0xLjEgMC0uMjkzLS4wOTQtLjUxNy0uMjgtLjY3LS4xODctLjE1My0uNDY0LS4yMy0uODMtLjIzLS4yNjcgMC0uNTE3LjAzNy0uNzUuMTEtLjIzNC4wNzMtLjUwNC4yMS0uODEuNDFsLS41My0uNzVhMy41NTggMy41NTggMCAwIDEgMi4xNC0uNjhjLjY3MyAwIDEuMi4xNDcgMS41OC40NC4zOC4yODcuNTcuNjkuNTcgMS4yMSAwIC40MTMtLjEyNy43NjQtLjM4IDEuMDUtLjI0Ny4yOC0uNTk0LjQ3LTEuMDQuNTd2LjA0Yy41MzMuMDY3LjkzNi4yMzMgMS4yMS41LjI3My4yNjcuNDEuNjIzLjQxIDEuMDcgMCAuNjQtLjIzIDEuMTM3LS42OSAxLjQ5LS40NTQuMzQ3LTEuMS41Mi0xLjk0LjUyek0xMzguMDI1IDExNS4yODNoLTMuMDR2LS44M2wzLjA0LTQuMzloMS4wNHY0LjMzaC45di44OWgtLjl2MS40NWgtMS4wNHYtMS40NXptMC0uODl2LTEuNjdjMC0uNTUzLjAxNy0xLjA0LjA1LTEuNDZoLS4wNGMtLjA5My4yMDctLjIyNi40NS0uNC43M2wtMS42NSAyLjRoMi4wNHpNMTEzLjU5NCAxMzkuMTUyYy0uNzQ3IDAtMS4zMzMtLjEyNC0xLjc2LS4zN3YtLjk2Yy4yNDcuMTMzLjUyNy4yMzYuODQuMzEuMzIuMDczLjYyLjExLjkuMTEuNDggMCAuODUtLjEwNyAxLjExLS4zMi4yNi0uMjIuMzktLjUzNC4zOS0uOTQgMC0uODA3LS41MTctMS4yMS0xLjU1LTEuMjEtLjE2NyAwLS4zNzcuMDItLjYzLjA2bC0uNDQuMDctLjQ5LS4yNy4yNy0zLjI3aDMuNDh2Ljk2aC0yLjU0bC0uMTUgMS42NmMuMzQ3LS4wNjcuNjY3LS4xLjk2LS4xLjY2NyAwIDEuMi4xOCAxLjYuNTQuNC4zNTMuNi44MzYuNiAxLjQ1IDAgLjcxMy0uMjI3IDEuMjczLS42OCAxLjY4LS40NTMuNC0xLjA5LjYtMS45MS42ek04MS43NSAxNDguMDg5Yy0uNzQgMC0xLjMyLS4yNTYtMS43NC0uNzctLjQyLS41MTMtLjYzLTEuMjQtLjYzLTIuMTggMC0yLjYyNiAxLjA3LTMuOTQgMy4yMS0zLjk0LjMyIDAgLjYwNC4wMjcuODUuMDh2Ljg5YTIuODUgMi44NSAwIDAgMC0uODEtLjFjLS43MiAwLTEuMjYuMTk3LTEuNjIuNTktLjM2LjM5NC0uNTU2IDEuMDEtLjU5IDEuODVoLjA2Yy4zMi0uNTI2LjgyNy0uNzkgMS41Mi0uNzkuNjA3IDAgMS4wOC4xODcgMS40Mi41Ni4zNDcuMzc0LjUyLjg4NC41MiAxLjUzIDAgLjctLjE5NiAxLjI1Ny0uNTkgMS42Ny0uMzkzLjQwNy0uOTI2LjYxLTEuNi42MXptLS4wMi0uODhjLjM2IDAgLjY0LS4xMi44NC0uMzYuMjA3LS4yNDYuMzEtLjU5My4zMS0xLjA0IDAtLjM4Ni0uMDk2LS42ODYtLjI5LS45LS4xOTMtLjIyLS40Ny0uMzMtLjgzLS4zMy0uMjMzIDAtLjQ1LjA1NC0uNjUuMTYtLjE5My4xLS4zNS4yMzQtLjQ3LjRhLjkxMi45MTIgMCAwIDAtLjE3LjUyYzAgLjQzNC4xMTcuODA0LjM1IDEuMTEuMjM0LjI5NC41MzcuNDQuOTEuNDR6TTQ5LjI2IDEzMy4zMDJINDUuOHYtLjk0aDQuNjF2Ljc2bC0yLjYxIDUuOTFoLTEuMTZsMi42Mi01Ljczek0yNC43MDMgMTE2Ljg1M2MtLjcyNiAwLTEuMjkzLS4xNTMtMS43LS40Ni0uNC0uMzEzLS42LS43Ni0uNi0xLjM0IDAtLjM4LjEwNy0uNzE2LjMyLTEuMDEuMjE0LS4yOTMuNTU0LS41NTYgMS4wMi0uNzktLjQtLjI0LS42OS0uNDkzLS44Ny0uNzZhMS42OTcgMS42OTcgMCAwIDEtLjI2LS45M2MwLS40OTMuMTg3LS44ODMuNTYtMS4xNy4zOC0uMjg2Ljg4NC0uNDMgMS41MS0uNDMuNjM0IDAgMS4xMzQuMTQ3IDEuNS40NC4zNzQuMjg3LjU2LjY3Ny41NiAxLjE3IDAgLjY5NC0uNDEzIDEuMjQ0LTEuMjQgMS42NS41Mi4yNTQuODkuNTI0IDEuMTEuODEuMjI3LjI4Ny4zNC42MTQuMzQuOTggMCAuNTYtLjIwMyAxLjAwNy0uNjEgMS4zNC0uNC4zMzQtLjk0Ni41LTEuNjQuNXptMC00LjA3Yy4zNi0uMTYuNjE3LS4zMy43Ny0uNTEuMTU0LS4xOC4yMy0uMzkuMjMtLjYzYS43NjIuNzYyIDAgMCAwLS4yOC0uNjJjLS4xODYtLjE1My0uNDM2LS4yMy0uNzUtLjIzLS4zMDYgMC0uNTUzLjA3Ny0uNzQuMjNhLjc2MS43NjEgMCAwIDAtLjI4LjYyYzAgLjE1NC4wMzQuMjk0LjEuNDIuMDY3LjEyNy4xNjcuMjQ0LjMuMzUuMTQuMTA3LjM1Ny4yMy42NS4zN3ptLS4wMiAzLjI1Yy4zOTQgMCAuNjk3LS4wOS45MS0uMjcuMjItLjE4Ni4zMy0uNDQuMzMtLjc2IDAtLjQ3My0uNDAzLS44ODYtMS4yMS0xLjI0bC0uMTQtLjA2Yy0uNC4xNzQtLjY5LjM2Ny0uODcuNTgtLjE4LjIwNy0uMjcuNDUtLjI3LjczIDAgLjMyLjExLjU3LjMzLjc1LjIyNy4xOC41MzQuMjcuOTIuMjd6TTE0Ljg2MiA4NC44NTRjLS40MTQgMC0uNzA0LS4wMjMtLjg3LS4wN3YtLjkxYy4yOC4wNzQuNTUuMTEuODEuMTEuNzMzIDAgMS4yNzYtLjE5MyAxLjYzLS41OC4zNi0uMzkzLjU1Ni0xLjAxLjU5LTEuODVoLS4wNWMtLjE4LjI3My0uMzk3LjQ3NC0uNjUuNi0uMjU0LjEyLS41NTQuMTgtLjkuMTgtLjU5NCAwLTEuMDYtLjE4My0xLjQtLjU1LS4zNC0uMzY3LS41MS0uODczLS41MS0xLjUyIDAtLjcwNi4xOTYtMS4yNjYuNTktMS42OC4zOTMtLjQxMy45My0uNjIgMS42MS0uNjIuNDggMCAuODk2LjExNyAxLjI1LjM1LjM1My4yMzQuNjI2LjU3NC44MiAxLjAyLjE5My40NC4yOS45NjcuMjkgMS41OCAwIDEuMzI3LS4yNjcgMi4zMTctLjggMi45Ny0uNTM0LjY0Ny0xLjMzNy45Ny0yLjQxLjk3em0uODMtMy4zOGMuMzYgMCAuNjY2LS4xMDYuOTItLjMyYS45NTYuOTU2IDAgMCAwIC4zNy0uNzZjMC0uNDMzLS4xMTctLjc5Ny0uMzUtMS4wOWExLjA5OSAxLjA5OSAwIDAgMC0uOS0uNDRjLS4zOCAwLS42Ny4xMi0uODcuMzYtLjE5NC4yNC0uMjkuNTg0LS4yOSAxLjAzIDAgLjM4Ny4wOTMuNjg3LjI4LjkuMTg2LjIxNC40NjYuMzIuODQuMzJ6TTIzLjQ0IDQ3LjY3MWMwLS41NDcuMDE0LS45NTMuMDQtMS4yMmwtLjI2LjI0Yy0uMS4wODctLjQ0LjM2Ny0xLjAyLjg0bC0uNTQtLjY4IDEuOTYtMS41NGguOXY2LjY3aC0xLjA4di00LjMxem01LjAwOCA0LjQzYy0uNzUzIDAtMS4zMjMtLjI5LTEuNzEtLjg3LS4zOC0uNTg3LS41Ny0xLjQ0My0uNTctMi41NyAwLTEuMTguMTg3LTIuMDUuNTYtMi42MS4zNzQtLjU2Ljk0Ny0uODQgMS43Mi0uODQuNzQgMCAxLjMwNC4yOTQgMS42OS44OC4zODcuNTguNTggMS40MzcuNTggMi41NyAwIDEuMTYtLjE4NiAyLjAyMy0uNTYgMi41OS0uMzczLjU2Ny0uOTQzLjg1LTEuNzEuODV6bTAtLjljLjQwNyAwIC43MDQtLjIuODktLjYuMTk0LS40LjI5LTEuMDQ3LjI5LTEuOTRzLS4wOTYtMS41NC0uMjktMS45NGMtLjE4Ni0uNDA2LS40ODMtLjYxLS44OS0uNjEtLjQyIDAtLjcyMy4yLS45MS42LS4xODYuMzk0LS4yOCAxLjA0NC0uMjggMS45NSAwIC45MDcuMDk0IDEuNTU3LjI4IDEuOTUuMTg3LjM5NC40OS41OS45MS41OXpNNDguMDE4IDIzLjA5M2MwLS41NDcuMDE0LS45NTQuMDQtMS4yMmwtLjI2LjI0Yy0uMS4wODYtLjQ0LjM2Ni0xLjAyLjg0bC0uNTQtLjY4IDEuOTYtMS41NGguOXY2LjY3aC0xLjA4di00LjMxem00Ljk5OCAwYzAtLjU0Ny4wMTQtLjk1NC4wNC0xLjIybC0uMjYuMjRjLS4xLjA4Ni0uNDQuMzY2LTEuMDIuODRsLS41NC0uNjggMS45Ni0xLjU0aC45djYuNjdoLTEuMDh2LTQuMzF6TTc4LjE4MyAxNS4zMThjMC0uNTQ3LjAxNC0uOTUzLjA0LTEuMjJsLS4yNi4yNGMtLjEuMDg3LS40NC4zNjctMS4wMi44NGwtLjU0LS42OCAxLjk2LTEuNTRoLjl2Ni42N2gtMS4wOHYtNC4zMXptMi43MzggMy40OSAxLjcyLTEuNzNjLjUxNC0uNTIuODU0LS44OSAxLjAyLTEuMTEuMTY3LS4yMi4yODctLjQyMy4zNi0uNjEuMDc0LS4xOTMuMTEtLjM5Ny4xMS0uNjEgMC0uMzA3LS4wOS0uNTQ3LS4yNy0uNzItLjE4LS4xNzMtLjQzLS4yNi0uNzUtLjI2LS4yNjYgMC0uNTIuMDUtLjc2LjE1LS4yMzMuMDkzLS41MDYuMjYzLS44Mi41MWwtLjU3LS43MmMuMzYtLjMuNzE0LS41MTcgMS4wNi0uNjUuMzU0LS4xMzMuNzM0LS4yIDEuMTQtLjIuNjI3IDAgMS4xMjcuMTYgMS41LjQ4LjM3NC4zMi41Ni43NTcuNTYgMS4zMSAwIC4zMTMtLjA1My42LS4xNi44Ni0uMTIuMjg3LS4yODYuNTY3LS41Ljg0LS4yNC4zLS42MTMuNjktMS4xMiAxLjE3bC0xLjE2IDEuMTF2LjA1aDMuMTd2Ljk1aC00LjUzdi0uODJ6IiBmaWxsPSJjdXJyZW50Q29sb3IiLz48L3N2Zz4=) center center no-repeat}:host([analogue]) [part=digital]{display:flex;position:absolute;top:20%;left:0;right:0;justify-content:center;font-size:.34em}:host([analogue]) [part=digital] [part~=am-pm]{font-size:100%;line-height:1}:host([analogue]) [part=hands]::after{content:\'\';position:absolute;border-radius:50%;width:9%;height:9%;top:45.5%;left:45.5%;border:2px solid #fff;box-sizing:border-box;z-index:1}:host([analogue]) [part~=hand]::after{content:\'\';position:absolute}:host([analogue]) [part~=second]::after{width:1%;height:43%;margin-top:3%;margin-left:49.5%;background-color:#334bff}:host([analogue]) [part~=minute]::after{width:3%;height:43%;margin-top:3%;margin-left:48.5%;background-color:#fff}:host([analogue]) [part~=hour]::after{width:3%;height:28%;margin-top:18%;margin-left:48.5%;background-color:#fff}:host([analogue][size=small]){font-size:10px;min-width:50px;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIHZpZXdCb3g9IjAgMCA2NCA2NCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBjb2xvcj0iI0NDQ0NDQyI+CiAgICA8Y2lyY2xlIGN4PSIzMiIgY3k9IjMyIiByPSIzMS41IiBzdHJva2U9ImN1cnJlbnRDb2xvciIvPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zMS4yNjE5IDAuOTk5NTEyVjMuOTUxODlIMzIuMjYxOVYwLjk5OTUxMkgzMS4yNjE5Wk00NS4yODU4IDcuMjQ2ODdMNDYuNzYyIDQuNjkwMDNMNDcuNjI4IDUuMTkwMDNMNDYuMTUxOCA3Ljc0Njg3TDQ1LjI4NTggNy4yNDY4N1pNMTUuODM1NyA1LjU3NTUzTDE3LjMxMTkgOC4xMzIzN0wxOC4xNzc5IDcuNjMyMzdMMTYuNzAxNyA1LjA3NTUzTDE1LjgzNTcgNS41NzU1M1pNNC44MzgxIDE3LjA4OThMNy4zOTQ5NCAxOC41NjZMNy44OTQ5NCAxNy43TDUuMzM4MSAxNi4yMjM4TDQuODM4MSAxNy4wODk4Wk0zLjk1MjM4IDMyLjczNzRIMVYzMS43Mzc0SDMuOTUyMzhWMzIuNzM3NFpNNy4zNzEyNiA0NS41MDlMNC44MTQ0MiA0Ni45ODUyTDUuMzE0NDIgNDcuODUxMkw3Ljg3MTI2IDQ2LjM3NUw3LjM3MTI2IDQ1LjUwOVpNMTUuOTA5NSA1OC40NzA1TDE3LjM4NTcgNTUuOTEzNkwxOC4yNTE4IDU2LjQxMzZMMTYuNzc1NiA1OC45NzA1TDE1LjkwOTUgNTguNDcwNVpNMzEuMjYxOSA2MC4wNDY5VjYyLjk5OTNIMzIuMjYxOVY2MC4wNDY5SDMxLjI2MTlaTTQ2LjkxMDMgNTkuMjA5M0w0NS40MzQxIDU2LjY1MjVMNDYuMzAwMSA1Ni4xNTI1TDQ3Ljc3NjMgNTguNzA5M0w0Ni45MTAzIDU5LjIwOTNaTTU1LjkxNDMgNDYuNjE0TDU4LjQ3MTEgNDguMDkwMkw1OC45NzExIDQ3LjIyNDJMNTYuNDE0MyA0NS43NDhMNTUuOTE0MyA0Ni42MTRaTTYzIDMyLjczNzRINjAuMDQ3NlYzMS43Mzc0SDYzVjMyLjczNzRaTTU4LjQyMzcgMTUuODM1NEw1NS44NjY5IDE3LjMxMTZMNTYuMzY2OSAxOC4xNzc2TDU4LjkyMzcgMTYuNzAxNEw1OC40MjM3IDE1LjgzNTRaIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4KPC9zdmc+Cg==) center center/cover no-repeat}:host([analogue][size=small]) [part=hands]::after{background-color:#fff}:host([analogue][size=small]) [part~=second]::after{width:1.5%;height:32%;margin-top:16%}:host([analogue][size=small]) [part~=minute]::after{height:37%;margin-top:12%}:host([analogue][size=small]) [part~=hour]::after{height:26%;margin-top:23%}:host([analogue][size=small]) [part~=am-pm]{padding-left:0;display:flex;position:absolute;left:0;right:0;bottom:15%;font-size:100%;justify-content:center}:host [part~=seconds]{color:grey}');