@elxjs/ui 0.0.200 → 0.0.202

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.
@@ -0,0 +1,472 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, ContentChildren, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';
3
+ import { EluxIcon } from '../icon';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ export class EluxCarouselFixedComponent {
7
+ constructor(renderer) {
8
+ this.renderer = renderer;
9
+ this.itemWidth = 200;
10
+ this.gap = 16;
11
+ this.showArrows = true;
12
+ this.showDots = true;
13
+ this.previousClickEventEmitter = new EventEmitter();
14
+ this.nextClickEventEmitter = new EventEmitter();
15
+ this.dotClickEventEmitter = new EventEmitter();
16
+ this.currentIndex = 0;
17
+ this.translateX = 0;
18
+ this.isDragging = false;
19
+ this.isMouseDown = false;
20
+ this.startX = 0;
21
+ this.currentX = 0;
22
+ this.initialTranslateX = 0;
23
+ this.dragOffset = 0;
24
+ this.containerWidth = 0;
25
+ this.maxTranslateX = 0;
26
+ this.minTranslateX = 0;
27
+ this.velocity = 0;
28
+ this.lastMoveTime = 0;
29
+ this.lastMoveX = 0;
30
+ this.touchStartTime = 0;
31
+ this.touchStartX = 0;
32
+ this.touchStartY = 0;
33
+ this.isVerticalScroll = false;
34
+ this.wasDragging = false;
35
+ this.clicksDisabled = false;
36
+ this.clickListeners = [];
37
+ this.dragStarted = false;
38
+ this.mouseDownTime = 0;
39
+ this.calculateRightBleedContainer = () => {
40
+ if (this.rightBleedContainer) {
41
+ const el = this.rightBleedContainer.nativeElement;
42
+ const left = el.getBoundingClientRect().left;
43
+ let scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;
44
+ scrollbarWidth = scrollbarWidth == 0 || scrollbarWidth > 30 ? 0 : scrollbarWidth;
45
+ el.style.setProperty('--scrollbar-width', `${scrollbarWidth}px`);
46
+ el.style.setProperty('--left-offset', `${left}px`);
47
+ }
48
+ };
49
+ }
50
+ ngAfterContentInit() {
51
+ setTimeout(() => {
52
+ this.calculateDimensions();
53
+ this.setItemWidths();
54
+ this.updateLimits();
55
+ this.setupClickPrevention();
56
+ this.items.changes.subscribe(() => {
57
+ this.calculateDimensions();
58
+ this.setItemWidths();
59
+ this.updateLimits();
60
+ this.goToFirstItem();
61
+ this.setupClickPrevention();
62
+ // Força atualização visual dos dots
63
+ if (this.cd && typeof this.cd.detectChanges === 'function') {
64
+ this.cd.detectChanges();
65
+ }
66
+ });
67
+ }, 10);
68
+ window.addEventListener('resize', () => this.onResize());
69
+ }
70
+ ngOnDestroy() {
71
+ // Clean up click listeners
72
+ this.clickListeners.forEach(unlisten => unlisten());
73
+ this.clickListeners = [];
74
+ window.removeEventListener('resize', () => this.onResize());
75
+ }
76
+ calculateDimensions() {
77
+ if (this.slidesContainer) {
78
+ this.containerWidth = this.slidesContainer.nativeElement.offsetWidth;
79
+ }
80
+ }
81
+ updateLimits() {
82
+ const totalWidth = this.items.length * (this.itemWidth + this.gap);
83
+ this.maxTranslateX = 0;
84
+ if (totalWidth > this.containerWidth) {
85
+ this.minTranslateX = this.containerWidth - totalWidth;
86
+ }
87
+ else {
88
+ this.minTranslateX = 0;
89
+ }
90
+ }
91
+ onResize() {
92
+ this.calculateRightBleedContainer();
93
+ this.calculateDimensions();
94
+ this.updateLimits();
95
+ // Garante que o currentIndex não ultrapasse o novo máximo
96
+ const maxIndex = this.getMaxIndex();
97
+ if (this.currentIndex > maxIndex) {
98
+ this.currentIndex = maxIndex;
99
+ }
100
+ this.updateTransform();
101
+ // Força detecção de mudanças para atualizar dots
102
+ if (window.ng && window.ng.getInjector) {
103
+ // Angular DevTools presente, não faz nada
104
+ }
105
+ else if (this.cd && typeof this.cd.detectChanges === 'function') {
106
+ this.cd.detectChanges();
107
+ }
108
+ }
109
+ ngAfterViewInit() {
110
+ // Garante cálculo correto após view carregada
111
+ setTimeout(() => {
112
+ this.calculateRightBleedContainer();
113
+ this.calculateDimensions();
114
+ this.updateLimits();
115
+ this.updateTransform();
116
+ });
117
+ }
118
+ setItemWidths() {
119
+ this.items.forEach((item) => {
120
+ this.renderer.setStyle(item.nativeElement, 'width', `${this.itemWidth}px`);
121
+ this.renderer.setStyle(item.nativeElement, 'flex-shrink', '0');
122
+ this.renderer.setStyle(item.nativeElement, 'margin-right', `${this.gap}px`);
123
+ });
124
+ }
125
+ // Mouse events
126
+ onMouseDown(event) {
127
+ event.preventDefault();
128
+ this.mouseDownTime = Date.now();
129
+ this.dragStarted = false;
130
+ this.isMouseDown = true;
131
+ this.wasDragging = false;
132
+ this.clicksDisabled = false;
133
+ this.startX = event.clientX;
134
+ this.currentX = event.clientX;
135
+ this.initialTranslateX = this.translateX;
136
+ this.dragOffset = 0;
137
+ this.velocity = 0;
138
+ this.lastMoveTime = Date.now();
139
+ this.lastMoveX = event.clientX;
140
+ this.calculateDimensions();
141
+ this.renderer.setStyle(this.slidesContainer.nativeElement, 'transition', 'none');
142
+ }
143
+ onMouseMove(event) {
144
+ if (!this.isMouseDown)
145
+ return;
146
+ event.preventDefault();
147
+ const dragDistance = Math.abs(event.clientX - this.startX);
148
+ // Only start dragging if moved more than 5px
149
+ if (dragDistance > 5 && !this.isDragging) {
150
+ this.isDragging = true;
151
+ this.dragStarted = true;
152
+ this.wasDragging = true;
153
+ }
154
+ if (this.isDragging) {
155
+ this.updateDrag(event.clientX);
156
+ }
157
+ }
158
+ onMouseUp(event) {
159
+ if (!this.isMouseDown)
160
+ return;
161
+ this.isMouseDown = false;
162
+ if (this.isDragging) {
163
+ const mouseUpTime = Date.now();
164
+ const holdDuration = mouseUpTime - this.mouseDownTime;
165
+ const mouseDistance = Math.abs(this.currentX - this.startX);
166
+ if (mouseDistance > 5 || (holdDuration > 200 && mouseDistance > 0)) {
167
+ this.wasDragging = true;
168
+ }
169
+ this.endDrag();
170
+ }
171
+ else {
172
+ // Reset transition if it was just a click
173
+ this.renderer.setStyle(this.slidesContainer.nativeElement, 'transition', 'transform 0.3s ease-out');
174
+ }
175
+ }
176
+ onMouseLeave(event) {
177
+ if (this.isDragging) {
178
+ this.wasDragging = true;
179
+ this.endDrag();
180
+ }
181
+ this.isMouseDown = false;
182
+ }
183
+ // Touch events
184
+ onTouchStart(event) {
185
+ this.touchStartTime = Date.now();
186
+ this.touchStartX = event.touches[0].clientX;
187
+ this.touchStartY = event.touches[0].clientY;
188
+ this.isVerticalScroll = false;
189
+ this.isMouseDown = true;
190
+ this.wasDragging = false;
191
+ this.dragStarted = false;
192
+ this.clicksDisabled = false;
193
+ this.startX = event.touches[0].clientX;
194
+ this.currentX = event.touches[0].clientX;
195
+ this.initialTranslateX = this.translateX;
196
+ this.dragOffset = 0;
197
+ this.velocity = 0;
198
+ this.lastMoveTime = Date.now();
199
+ this.lastMoveX = event.touches[0].clientX;
200
+ this.calculateDimensions();
201
+ this.renderer.setStyle(this.slidesContainer.nativeElement, 'transition', 'none');
202
+ }
203
+ onTouchMove(event) {
204
+ if (!this.isMouseDown)
205
+ return;
206
+ const currentX = event.touches[0].clientX;
207
+ const currentY = event.touches[0].clientY;
208
+ const deltaX = Math.abs(currentX - this.touchStartX);
209
+ const deltaY = Math.abs(currentY - this.touchStartY);
210
+ // Check if this is a vertical scroll
211
+ if (deltaY > deltaX && deltaY > 10) {
212
+ this.isVerticalScroll = true;
213
+ this.isDragging = false;
214
+ this.isMouseDown = false;
215
+ this.renderer.setStyle(this.slidesContainer.nativeElement, 'transition', 'transform 0.3s ease-out');
216
+ return;
217
+ }
218
+ // Start dragging if horizontal movement > 10px
219
+ if (deltaX > 10 && !this.isDragging) {
220
+ this.isDragging = true;
221
+ this.dragStarted = true;
222
+ this.wasDragging = true;
223
+ }
224
+ if (this.isDragging && deltaX > 10) {
225
+ event.preventDefault();
226
+ this.updateDrag(currentX);
227
+ }
228
+ }
229
+ onTouchEnd(event) {
230
+ if (this.isVerticalScroll) {
231
+ this.isVerticalScroll = false;
232
+ this.isMouseDown = false;
233
+ return;
234
+ }
235
+ this.isMouseDown = false;
236
+ const touchDuration = Date.now() - this.touchStartTime;
237
+ const touchDistance = Math.abs(this.currentX - this.startX);
238
+ // Mark as dragging if significant movement occurred
239
+ if (touchDistance > 10 || touchDuration > 300) {
240
+ this.wasDragging = true;
241
+ }
242
+ if (this.isDragging) {
243
+ this.endDrag();
244
+ }
245
+ else {
246
+ // Reset transition if it was just a tap
247
+ this.renderer.setStyle(this.slidesContainer.nativeElement, 'transition', 'transform 0.3s ease-out');
248
+ }
249
+ }
250
+ setupClickPrevention() {
251
+ // Clean up existing listeners
252
+ this.clickListeners.forEach(unlisten => unlisten());
253
+ this.clickListeners = [];
254
+ this.items.forEach((item) => {
255
+ // Only prevent click events, not mouseup which is needed for drag functionality
256
+ const eventHandler = (event) => {
257
+ if (event.type === 'click' && (this.wasDragging || this.clicksDisabled || this.dragStarted)) {
258
+ event.preventDefault();
259
+ event.stopPropagation();
260
+ event.stopImmediatePropagation();
261
+ return false;
262
+ }
263
+ return true;
264
+ };
265
+ // Only listen to click events to avoid interfering with drag functionality
266
+ item.nativeElement.addEventListener('click', eventHandler, true);
267
+ this.clickListeners.push(() => {
268
+ item.nativeElement.removeEventListener('click', eventHandler, true);
269
+ });
270
+ });
271
+ }
272
+ updateDrag(clientX) {
273
+ if (!this.isDragging)
274
+ return;
275
+ this.currentX = clientX;
276
+ const totalDeltaX = this.currentX - this.startX;
277
+ // Mark as dragging if movement is significant
278
+ if (Math.abs(totalDeltaX) > 5) {
279
+ this.wasDragging = true;
280
+ this.dragStarted = true;
281
+ }
282
+ const now = Date.now();
283
+ const timeDelta = now - this.lastMoveTime;
284
+ if (timeDelta > 0) {
285
+ this.velocity = (clientX - this.lastMoveX) / timeDelta;
286
+ }
287
+ this.lastMoveTime = now;
288
+ this.lastMoveX = clientX;
289
+ let resistedDeltaX = totalDeltaX;
290
+ const potentialTranslateX = this.initialTranslateX + totalDeltaX;
291
+ // Apply softer resistance at boundaries
292
+ if (potentialTranslateX > this.maxTranslateX) {
293
+ const overDrag = potentialTranslateX - this.maxTranslateX;
294
+ resistedDeltaX = totalDeltaX - (overDrag * 0.5);
295
+ }
296
+ else if (potentialTranslateX < this.minTranslateX) {
297
+ const overDrag = this.minTranslateX - potentialTranslateX;
298
+ resistedDeltaX = totalDeltaX + (overDrag * 0.5);
299
+ }
300
+ this.dragOffset = resistedDeltaX;
301
+ this.updateDragPosition();
302
+ }
303
+ updateDragPosition() {
304
+ const newTranslateX = this.initialTranslateX + this.dragOffset;
305
+ this.renderer.setStyle(this.slidesContainer.nativeElement, 'transform', `translateX(${newTranslateX}px)`);
306
+ }
307
+ endDrag() {
308
+ if (!this.isDragging)
309
+ return;
310
+ this.isDragging = false;
311
+ // Disable clicks temporarily after any drag
312
+ if (this.wasDragging || this.dragStarted) {
313
+ this.clicksDisabled = true;
314
+ setTimeout(() => {
315
+ this.clicksDisabled = false;
316
+ }, 200);
317
+ }
318
+ // Clear the wasDragging and dragStarted flags after a shorter delay
319
+ setTimeout(() => {
320
+ this.wasDragging = false;
321
+ this.dragStarted = false;
322
+ }, 250);
323
+ this.renderer.setStyle(this.slidesContainer.nativeElement, 'transition', 'transform 0.3s ease-out');
324
+ // Snap sempre para o início da página mais próxima
325
+ this.snapToNearestItem();
326
+ this.dragOffset = 0;
327
+ this.velocity = 0;
328
+ }
329
+ getMaxIndex() {
330
+ // Permite avançar até que o último item esteja visível (não necessariamente alinhado à esquerda)
331
+ if (!this.items || this.items.length === 0)
332
+ return 0;
333
+ const visibleCount = Math.max(1, Math.floor(this.containerWidth / (this.itemWidth + this.gap)));
334
+ if (this.items.length <= visibleCount)
335
+ return 0;
336
+ // Última posição onde o último item aparece visível
337
+ return this.items.length - visibleCount;
338
+ }
339
+ canGoNext() {
340
+ return this.currentIndex < this.getMaxIndex();
341
+ }
342
+ nextItem() {
343
+ const maxIndex = this.getMaxIndex();
344
+ if (this.canGoNext()) {
345
+ let newIndex = this.currentIndex + 1;
346
+ if (newIndex > maxIndex)
347
+ newIndex = maxIndex;
348
+ this.currentIndex = newIndex;
349
+ this.updateTransform();
350
+ this.nextClickEventEmitter.emit();
351
+ }
352
+ }
353
+ canGoPrevious() {
354
+ return this.currentIndex > 0;
355
+ }
356
+ prevItem() {
357
+ if (this.canGoPrevious()) {
358
+ let newIndex = this.currentIndex - 1;
359
+ if (newIndex < 0)
360
+ newIndex = 0;
361
+ this.currentIndex = newIndex;
362
+ this.updateTransform();
363
+ this.previousClickEventEmitter.emit();
364
+ }
365
+ }
366
+ goToDot(dotIndex) {
367
+ const maxIndex = this.getMaxIndex();
368
+ let newIndex = dotIndex;
369
+ if (newIndex > maxIndex)
370
+ newIndex = maxIndex;
371
+ this.currentIndex = newIndex;
372
+ this.updateTransform();
373
+ this.dotClickEventEmitter.emit();
374
+ }
375
+ snapToNearestItem() {
376
+ const itemStep = this.itemWidth + this.gap;
377
+ const position = -(this.initialTranslateX + this.dragOffset) / itemStep;
378
+ // Threshold: 0.3 = 30%, 0.5 = 50% (padrão)
379
+ const threshold = 0.3;
380
+ let targetIndex;
381
+ // Calcula quantos itens completos foram arrastados
382
+ const itemsMoved = Math.floor(Math.abs(position - this.currentIndex));
383
+ const decimal = Math.abs(position - this.currentIndex) - itemsMoved;
384
+ if (position > this.currentIndex) {
385
+ // Arrastando para frente
386
+ if (decimal >= threshold) {
387
+ targetIndex = this.currentIndex + itemsMoved + 1;
388
+ }
389
+ else {
390
+ targetIndex = this.currentIndex + itemsMoved;
391
+ }
392
+ }
393
+ else if (position < this.currentIndex) {
394
+ // Arrastando para trás
395
+ if (decimal >= threshold) {
396
+ targetIndex = this.currentIndex - itemsMoved - 1;
397
+ }
398
+ else {
399
+ targetIndex = this.currentIndex - itemsMoved;
400
+ }
401
+ }
402
+ else {
403
+ // Não se moveu
404
+ targetIndex = this.currentIndex;
405
+ }
406
+ const maxIndex = this.getMaxIndex();
407
+ targetIndex = Math.max(0, Math.min(targetIndex, maxIndex));
408
+ this.currentIndex = targetIndex;
409
+ this.updateTransform();
410
+ }
411
+ getDotsArray() {
412
+ // Só mostra dots para cada posição possível (cada "página" possível)
413
+ const maxIndex = this.getMaxIndex();
414
+ return Array(maxIndex + 1);
415
+ }
416
+ getCurrentDotIndex() {
417
+ return this.currentIndex;
418
+ }
419
+ updateTransform() {
420
+ const itemStep = this.itemWidth + this.gap;
421
+ this.translateX = -this.currentIndex * itemStep;
422
+ // Clamp para não mostrar espaço vazio à direita
423
+ const visibleCount = Math.max(1, Math.floor(this.containerWidth / itemStep));
424
+ // Inclui o gap após o último item
425
+ const totalWidth = this.items.length * itemStep;
426
+ if (this.items.length > visibleCount) {
427
+ const minTranslateX = this.containerWidth - totalWidth;
428
+ this.translateX = Math.max(this.translateX, minTranslateX);
429
+ }
430
+ else {
431
+ this.translateX = 0;
432
+ }
433
+ if (!this.isDragging && this.slidesContainer) {
434
+ this.renderer.setStyle(this.slidesContainer.nativeElement, 'transform', `translateX(${this.translateX}px)`);
435
+ }
436
+ }
437
+ // Adicione este método para evitar erro de propriedade ausente
438
+ goToFirstItem() {
439
+ this.currentIndex = 0;
440
+ this.updateTransform();
441
+ }
442
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EluxCarouselFixedComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
443
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: EluxCarouselFixedComponent, isStandalone: true, selector: "lib-elux-carousel-fixed", inputs: { itemWidth: "itemWidth", gap: "gap", showArrows: "showArrows", showDots: "showDots" }, outputs: { previousClickEventEmitter: "previousClickEventEmitter", nextClickEventEmitter: "nextClickEventEmitter", dotClickEventEmitter: "dotClickEventEmitter" }, queries: [{ propertyName: "items", predicate: ["carouselItem"], read: ElementRef }], viewQueries: [{ propertyName: "slidesContainer", first: true, predicate: ["slidesContainer"], descendants: true }, { propertyName: "rightBleedContainer", first: true, predicate: ["rightBleedContainer"], descendants: true }], ngImport: i0, template: "<div class=\"c-carousel-fixed-container\" #rightBleedContainer>\n <div \n class=\"c-carousel-fixed-slides\" \n #slidesContainer\n [style.transform]=\"'translateX(' + translateX + 'px)'\" \n (mousedown)=\"onMouseDown($event)\"\n (mousemove)=\"onMouseMove($event)\"\n (mouseup)=\"onMouseUp($event)\"\n (mouseleave)=\"onMouseLeave($event)\"\n (touchstart)=\"onTouchStart($event)\" \n (touchmove)=\"onTouchMove($event)\" \n (touchend)=\"onTouchEnd($event)\">\n <ng-content></ng-content>\n </div>\n</div>\n<div class=\"c-carousel-fixed-footer\" *ngIf=\"showArrows || showDots\">\n <button *ngIf=\"showArrows && getDotsArray().length > 1\"\n class=\"c-carousel-fixed-nav prev\" \n [disabled]=\"!canGoPrevious()\"\n title=\"Item anterior\" \n aria-label=\"Item anterior\" \n (click)=\"prevItem()\">\n <lib-elux-icon [icon]=\"'Chevron_Left.svg'\" [size]=\"'16'\" [sizeType]=\"'px'\" [color]=\"'#020F2E'\"></lib-elux-icon>\n </button>\n\n <div class=\"c-carousel-fixed-dots\" *ngIf=\"showDots && getDotsArray().length > 1\">\n <ng-container *ngFor=\"let dot of getDotsArray(); let idx = index\">\n <span \n class=\"c-carousel-fixed-dot\" \n [class.active]=\"idx === getCurrentDotIndex()\" \n (click)=\"goToDot(idx)\">\n </span>\n </ng-container>\n </div>\n\n <button *ngIf=\"showArrows && getDotsArray().length > 1\"\n class=\"c-carousel-fixed-nav next\" \n [disabled]=\"!canGoNext()\"\n title=\"Pr\u00F3ximo item\" \n aria-label=\"Pr\u00F3ximo item\" \n (click)=\"nextItem()\">\n <lib-elux-icon [icon]=\"'Chevron_Right.svg'\" [size]=\"'16'\" [sizeType]=\"'px'\" [color]=\"'#020F2E'\"></lib-elux-icon>\n </button>\n</div>\n", styles: [".c-carousel-fixed-container{overflow-x:hidden;width:calc(100vw - var(--left-offset, 0px) - var(--scrollbar-width, 0px))}.c-carousel-fixed-slides{display:flex;transition:transform .5s ease-out;touch-action:pan-y;cursor:grab;will-change:transform}.c-carousel-fixed-slides:active{cursor:grabbing}.c-carousel-fixed-footer{display:flex;justify-content:space-between;padding:16px}.c-carousel-fixed-footer .c-carousel-fixed-nav{background:none;border:none;cursor:pointer;padding:8px;border-radius:50px;background-color:#dfe7ea;transition:all ease-in-out .2s;z-index:2}.c-carousel-fixed-footer .c-carousel-fixed-nav:hover:not(:disabled){transform:scale(1.2)}.c-carousel-fixed-footer .c-carousel-fixed-nav:disabled{opacity:.3;cursor:not-allowed}.c-carousel-fixed-footer .c-carousel-fixed-nav:disabled:hover{transform:none}.c-carousel-fixed-footer .c-carousel-fixed-nav ::ng-deep span{display:block}.c-carousel-fixed-footer .c-carousel-fixed-dots{display:flex;align-items:center;gap:8px;margin:0 16px}.c-carousel-fixed-footer .c-carousel-fixed-dots .c-carousel-fixed-dot{width:10px;height:10px;border-radius:50%;background:#dfe7ea;transition:background .3s;cursor:pointer;display:inline-block}.c-carousel-fixed-footer .c-carousel-fixed-dots .c-carousel-fixed-dot.active{background:#011e41}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: EluxIcon, selector: "lib-elux-icon", inputs: ["color", "useSubscription", "icon", "description", "size", "height", "width", "sizeType"] }] }); }
444
+ }
445
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EluxCarouselFixedComponent, decorators: [{
446
+ type: Component,
447
+ args: [{ standalone: true, selector: 'lib-elux-carousel-fixed', imports: [CommonModule, EluxIcon], template: "<div class=\"c-carousel-fixed-container\" #rightBleedContainer>\n <div \n class=\"c-carousel-fixed-slides\" \n #slidesContainer\n [style.transform]=\"'translateX(' + translateX + 'px)'\" \n (mousedown)=\"onMouseDown($event)\"\n (mousemove)=\"onMouseMove($event)\"\n (mouseup)=\"onMouseUp($event)\"\n (mouseleave)=\"onMouseLeave($event)\"\n (touchstart)=\"onTouchStart($event)\" \n (touchmove)=\"onTouchMove($event)\" \n (touchend)=\"onTouchEnd($event)\">\n <ng-content></ng-content>\n </div>\n</div>\n<div class=\"c-carousel-fixed-footer\" *ngIf=\"showArrows || showDots\">\n <button *ngIf=\"showArrows && getDotsArray().length > 1\"\n class=\"c-carousel-fixed-nav prev\" \n [disabled]=\"!canGoPrevious()\"\n title=\"Item anterior\" \n aria-label=\"Item anterior\" \n (click)=\"prevItem()\">\n <lib-elux-icon [icon]=\"'Chevron_Left.svg'\" [size]=\"'16'\" [sizeType]=\"'px'\" [color]=\"'#020F2E'\"></lib-elux-icon>\n </button>\n\n <div class=\"c-carousel-fixed-dots\" *ngIf=\"showDots && getDotsArray().length > 1\">\n <ng-container *ngFor=\"let dot of getDotsArray(); let idx = index\">\n <span \n class=\"c-carousel-fixed-dot\" \n [class.active]=\"idx === getCurrentDotIndex()\" \n (click)=\"goToDot(idx)\">\n </span>\n </ng-container>\n </div>\n\n <button *ngIf=\"showArrows && getDotsArray().length > 1\"\n class=\"c-carousel-fixed-nav next\" \n [disabled]=\"!canGoNext()\"\n title=\"Pr\u00F3ximo item\" \n aria-label=\"Pr\u00F3ximo item\" \n (click)=\"nextItem()\">\n <lib-elux-icon [icon]=\"'Chevron_Right.svg'\" [size]=\"'16'\" [sizeType]=\"'px'\" [color]=\"'#020F2E'\"></lib-elux-icon>\n </button>\n</div>\n", styles: [".c-carousel-fixed-container{overflow-x:hidden;width:calc(100vw - var(--left-offset, 0px) - var(--scrollbar-width, 0px))}.c-carousel-fixed-slides{display:flex;transition:transform .5s ease-out;touch-action:pan-y;cursor:grab;will-change:transform}.c-carousel-fixed-slides:active{cursor:grabbing}.c-carousel-fixed-footer{display:flex;justify-content:space-between;padding:16px}.c-carousel-fixed-footer .c-carousel-fixed-nav{background:none;border:none;cursor:pointer;padding:8px;border-radius:50px;background-color:#dfe7ea;transition:all ease-in-out .2s;z-index:2}.c-carousel-fixed-footer .c-carousel-fixed-nav:hover:not(:disabled){transform:scale(1.2)}.c-carousel-fixed-footer .c-carousel-fixed-nav:disabled{opacity:.3;cursor:not-allowed}.c-carousel-fixed-footer .c-carousel-fixed-nav:disabled:hover{transform:none}.c-carousel-fixed-footer .c-carousel-fixed-nav ::ng-deep span{display:block}.c-carousel-fixed-footer .c-carousel-fixed-dots{display:flex;align-items:center;gap:8px;margin:0 16px}.c-carousel-fixed-footer .c-carousel-fixed-dots .c-carousel-fixed-dot{width:10px;height:10px;border-radius:50%;background:#dfe7ea;transition:background .3s;cursor:pointer;display:inline-block}.c-carousel-fixed-footer .c-carousel-fixed-dots .c-carousel-fixed-dot.active{background:#011e41}\n"] }]
448
+ }], ctorParameters: () => [{ type: i0.Renderer2 }], propDecorators: { items: [{
449
+ type: ContentChildren,
450
+ args: ['carouselItem', { read: ElementRef }]
451
+ }], slidesContainer: [{
452
+ type: ViewChild,
453
+ args: ['slidesContainer']
454
+ }], rightBleedContainer: [{
455
+ type: ViewChild,
456
+ args: ['rightBleedContainer', { static: false }]
457
+ }], itemWidth: [{
458
+ type: Input
459
+ }], gap: [{
460
+ type: Input
461
+ }], showArrows: [{
462
+ type: Input
463
+ }], showDots: [{
464
+ type: Input
465
+ }], previousClickEventEmitter: [{
466
+ type: Output
467
+ }], nextClickEventEmitter: [{
468
+ type: Output
469
+ }], dotClickEventEmitter: [{
470
+ type: Output
471
+ }] } });
472
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwtZml4ZWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdWkvbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvY2Fyb3VzZWwtZml4ZWQtZGVwcmVjYXRlZC9jYXJvdXNlbC1maXhlZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi91aS9saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy9jYXJvdXNlbC1maXhlZC1kZXByZWNhdGVkL2Nhcm91c2VsLWZpeGVkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQW9CLFNBQVMsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUF3QixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEssT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7O0FBU25DLE1BQU0sT0FBTywwQkFBMEI7SUF3Q3JDLFlBQW9CLFFBQW1CO1FBQW5CLGFBQVEsR0FBUixRQUFRLENBQVc7UUFsQzlCLGNBQVMsR0FBVyxHQUFHLENBQUM7UUFDeEIsUUFBRyxHQUFXLEVBQUUsQ0FBQztRQUNqQixlQUFVLEdBQVksSUFBSSxDQUFDO1FBQzNCLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFFeEIsOEJBQXlCLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztRQUN0RCwwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO1FBQ2xELHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFFM0QsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFDakIsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUVQLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFD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O0lBQ0gsQ0FBQztJQUVELCtEQUErRDtJQUMvRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7K0dBOWZVLDBCQUEwQjttR0FBMUIsMEJBQTBCLG9ZQUNJLFVBQVUsOFBDWnJELDh0REE0Q0EsMHpDRG5DWSxZQUFZLGdRQUFFLFFBQVE7OzRGQUVyQiwwQkFBMEI7a0JBUHRDLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLHlCQUF5QixXQUcxQixDQUFDLFlBQVksRUFBRSxRQUFRLENBQUM7OEVBR3NCLEtBQUs7c0JBQTNELGVBQWU7dUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFDdkIsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBQ3lCLG1CQUFtQjtzQkFBdkUsU0FBUzt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRzFDLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFSSx5QkFBeUI7c0JBQWxDLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVsdXhJY29uIH0gZnJvbSAnLi4vaWNvbic7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ2xpYi1lbHV4LWNhcm91c2VsLWZpeGVkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nhcm91c2VsLWZpeGVkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2Fyb3VzZWwtZml4ZWQuY29tcG9uZW50LnNjc3MnXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRWx1eEljb25dLFxufSlcbmV4cG9ydCBjbGFzcyBFbHV4Q2Fyb3VzZWxGaXhlZENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gIEBDb250ZW50Q2hpbGRyZW4oJ2Nhcm91c2VsSXRlbScsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBpdGVtcyE6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcbiAgQFZpZXdDaGlsZCgnc2xpZGVzQ29udGFpbmVyJykgc2xpZGVzQ29udGFpbmVyITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgncmlnaHRCbGVlZENvbnRhaW5lcicsIHsgc3RhdGljOiBmYWxzZSB9KSByaWdodEJsZWVkQ29udGFpbmVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cblxuICBASW5wdXQoKSBpdGVtV2lkdGg6IG51bWJlciA9IDIwMDtcbiAgQElucHV0KCkgZ2FwOiBudW1iZXIgPSAxNjtcbiAgQElucHV0KCkgc2hvd0Fycm93czogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dEb3RzOiBib29sZWFuID0gdHJ1ZTtcblxuICBAT3V0cHV0KCkgcHJldmlvdXNDbGlja0V2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBuZXh0Q2xpY2tFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICBAT3V0cHV0KCkgZG90Q2xpY2tFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuXG4gIGN1cnJlbnRJbmRleCA9IDA7XG4gIHRyYW5zbGF0ZVggPSAwO1xuXG4gIHByaXZhdGUgaXNEcmFnZ2luZyA9IGZhbHNlO1xuICBwcml2YXRlIGlzTW91c2VEb3duID0gZmFsc2U7XG4gIHByaXZhdGUgc3RhcnRYID0gMDtcbiAgcHJpdmF0ZSBjdXJyZW50WCA9IDA7XG4gIHByaXZhdGUgaW5pdGlhbFRyYW5zbGF0ZVggPSAwO1xuICBwcml2YXRlIGRyYWdPZmZzZXQgPSAwO1xuICBwcml2YXRlIGNvbnRhaW5lcldpZHRoID0gMDtcbiAgcHJpdmF0ZSBtYXhUcmFuc2xhdGVYID0gMDtcbiAgcHJpdmF0ZSBtaW5UcmFuc2xhdGVYID0gMDtcbiAgcHJpdmF0ZSB2ZWxvY2l0eSA9IDA7XG4gIHByaXZhdGUgbGFzdE1vdmVUaW1lID0gMDtcbiAgcHJpdmF0ZSBsYXN0TW92ZVggPSAwO1xuICBwcml2YXRlIHRvdWNoU3RhcnRUaW1lID0gMDtcbiAgcHJpdmF0ZSB0b3VjaFN0YXJ0WCA9IDA7XG4gIHByaXZhdGUgdG91Y2hTdGFydFkgPSAwO1xuICBwcml2YXRlIGlzVmVydGljYWxTY3JvbGwgPSBmYWxzZTtcbiAgcHJpdmF0ZSB3YXNEcmFnZ2luZyA9IGZhbHNlO1xuICBwcml2YXRlIGNsaWNrc0Rpc2FibGVkID0gZmFsc2U7XG4gIHByaXZhdGUgY2xpY2tMaXN0ZW5lcnM6ICgoKSA9PiB2b2lkKVtdID0gW107XG4gIHByaXZhdGUgZHJhZ1N0YXJ0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBtb3VzZURvd25UaW1lID0gMDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHt9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVSaWdodEJsZWVkQ29udGFpbmVyID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLnJpZ2h0QmxlZWRDb250YWluZXIpIHtcbiAgICAgIGNvbnN0IGVsID0gdGhpcy5yaWdodEJsZWVkQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBjb25zdCBsZWZ0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcblxuICAgICAgbGV0IHNjcm9sbGJhcldpZHRoID0gd2luZG93LmlubmVyV2lkdGggLSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgICBzY3JvbGxiYXJXaWR0aCA9IHNjcm9sbGJhcldpZHRoID09IDAgfHwgc2Nyb2xsYmFyV2lkdGggPiAzMCA/IDAgOiBzY3JvbGxiYXJXaWR0aDsgICAgIFxuICAgICAgXG4gICAgICBlbC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zY3JvbGxiYXItd2lkdGgnLCBgJHtzY3JvbGxiYXJXaWR0aH1weGApO1xuICAgICAgZWwuc3R5bGUuc2V0UHJvcGVydHkoJy0tbGVmdC1vZmZzZXQnLCBgJHtsZWZ0fXB4YCk7XG4gICAgfVxuICB9O1xuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY2FsY3VsYXRlRGltZW5zaW9ucygpO1xuICAgICAgdGhpcy5zZXRJdGVtV2lkdGhzKCk7XG4gICAgICB0aGlzLnVwZGF0ZUxpbWl0cygpO1xuICAgICAgdGhpcy5zZXR1cENsaWNrUHJldmVudGlvbigpO1xuXG4gICAgICB0aGlzLml0ZW1zLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVEaW1lbnNpb25zKCk7XG4gICAgICAgIHRoaXMuc2V0SXRlbVdpZHRocygpO1xuICAgICAgICB0aGlzLnVwZGF0ZUxpbWl0cygpO1xuICAgICAgICB0aGlzLmdvVG9GaXJzdEl0ZW0oKTtcbiAgICAgICAgdGhpcy5zZXR1cENsaWNrUHJldmVudGlvbigpO1xuICAgICAgICAvLyBGb3LDp2EgYXR1YWxpemHDp8OjbyB2aXN1YWwgZG9zIGRvdHNcbiAgICAgICAgaWYgKCh0aGlzIGFzIGFueSkuY2QgJiYgdHlwZW9mICh0aGlzIGFzIGFueSkuY2QuZGV0ZWN0Q2hhbmdlcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICh0aGlzIGFzIGFueSkuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LCAxMCk7XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4gdGhpcy5vblJlc2l6ZSgpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8vIENsZWFuIHVwIGNsaWNrIGxpc3RlbmVyc1xuICAgIHRoaXMuY2xpY2tMaXN0ZW5lcnMuZm9yRWFjaCh1bmxpc3RlbiA9PiB1bmxpc3RlbigpKTtcbiAgICB0aGlzLmNsaWNrTGlzdGVuZXJzID0gW107XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHRoaXMub25SZXNpemUoKSk7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZURpbWVuc2lvbnMoKSB7XG4gICAgaWYgKHRoaXMuc2xpZGVzQ29udGFpbmVyKSB7XG4gICAgICB0aGlzLmNvbnRhaW5lcldpZHRoID0gdGhpcy5zbGlkZXNDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUxpbWl0cygpIHtcbiAgICBjb25zdCB0b3RhbFdpZHRoID0gdGhpcy5pdGVtcy5sZW5ndGggKiAodGhpcy5pdGVtV2lkdGggKyB0aGlzLmdhcCk7XG4gICAgdGhpcy5tYXhUcmFuc2xhdGVYID0gMDtcbiAgICBcbiAgICBpZiAodG90YWxXaWR0aCA+IHRoaXMuY29udGFpbmVyV2lkdGgpIHtcbiAgICAgIHRoaXMubWluVHJhbnNsYXRlWCA9IHRoaXMuY29udGFpbmVyV2lkdGggLSB0b3RhbFdpZHRoO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1pblRyYW5zbGF0ZVggPSAwO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25SZXNpemUoKSB7XG4gICAgdGhpcy5jYWxjdWxhdGVSaWdodEJsZWVkQ29udGFpbmVyKCk7XG4gICAgdGhpcy5jYWxjdWxhdGVEaW1lbnNpb25zKCk7XG4gICAgdGhpcy51cGRhdGVMaW1pdHMoKTtcblxuICAgIC8vIEdhcmFudGUgcXVlIG8gY3VycmVudEluZGV4IG7Do28gdWx0cmFwYXNzZSBvIG5vdm8gbcOheGltb1xuICAgIGNvbnN0IG1heEluZGV4ID0gdGhpcy5nZXRNYXhJbmRleCgpO1xuICAgIGlmICh0aGlzLmN1cnJlbnRJbmRleCA+IG1heEluZGV4KSB7XG4gICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IG1heEluZGV4O1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlVHJhbnNmb3JtKCk7XG4gICAgXG4gICAgLy8gRm9yw6dhIGRldGVjw6fDo28gZGUgbXVkYW7Dp2FzIHBhcmEgYXR1YWxpemFyIGRvdHNcbiAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLm5nICYmICh3aW5kb3cgYXMgYW55KS5uZy5nZXRJbmplY3Rvcikge1xuICAgICAgLy8gQW5ndWxhciBEZXZUb29scyBwcmVzZW50ZSwgbsOjbyBmYXogbmFkYVxuICAgIH0gZWxzZSBpZiAoKHRoaXMgYXMgYW55KS5jZCAmJiB0eXBlb2YgKHRoaXMgYXMgYW55KS5jZC5kZXRlY3RDaGFuZ2VzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAodGhpcyBhcyBhbnkpLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gR2FyYW50ZSBjw6FsY3VsbyBjb3JyZXRvIGFww7NzIHZpZXcgY2FycmVnYWRhXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNhbGN1bGF0ZVJpZ2h0QmxlZWRDb250YWluZXIoKTtcbiAgICAgIHRoaXMuY2FsY3VsYXRlRGltZW5zaW9ucygpO1xuICAgICAgdGhpcy51cGRhdGVMaW1pdHMoKTtcbiAgICAgIHRoaXMudXBkYXRlVHJhbnNmb3JtKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldEl0ZW1XaWR0aHMoKSB7XG4gICAgdGhpcy5pdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGl0ZW0ubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgYCR7dGhpcy5pdGVtV2lkdGh9cHhgKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaXRlbS5uYXRpdmVFbGVtZW50LCAnZmxleC1zaHJpbmsnLCAnMCcpO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShpdGVtLm5hdGl2ZUVsZW1lbnQsICdtYXJnaW4tcmlnaHQnLCBgJHt0aGlzLmdhcH1weGApO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gTW91c2UgZXZlbnRzXG4gIG9uTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLm1vdXNlRG93blRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuZHJhZ1N0YXJ0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmlzTW91c2VEb3duID0gdHJ1ZTtcbiAgICB0aGlzLndhc0RyYWdnaW5nID0gZmFsc2U7XG4gICAgdGhpcy5jbGlja3NEaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuc3RhcnRYID0gZXZlbnQuY2xpZW50WDtcbiAgICB0aGlzLmN1cnJlbnRYID0gZXZlbnQuY2xpZW50WDtcbiAgICB0aGlzLmluaXRpYWxUcmFuc2xhdGVYID0gdGhpcy50cmFuc2xhdGVYO1xuICAgIHRoaXMuZHJhZ09mZnNldCA9IDA7XG4gICAgdGhpcy52ZWxvY2l0eSA9IDA7XG4gICAgdGhpcy5sYXN0TW92ZVRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMubGFzdE1vdmVYID0gZXZlbnQuY2xpZW50WDtcbiAgICBcbiAgICB0aGlzLmNhbGN1bGF0ZURpbWVuc2lvbnMoKTtcbiAgICBcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc2xpZGVzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2l0aW9uJywgJ25vbmUnKTtcbiAgfVxuXG4gIG9uTW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmlzTW91c2VEb3duKSByZXR1cm47XG4gICAgXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBcbiAgICBjb25zdCBkcmFnRGlzdGFuY2UgPSBNYXRoLmFicyhldmVudC5jbGllbnRYIC0gdGhpcy5zdGFydFgpO1xuICAgIFxuICAgIC8vIE9ubHkgc3RhcnQgZHJhZ2dpbmcgaWYgbW92ZWQgbW9yZSB0aGFuIDVweFxuICAgIGlmIChkcmFnRGlzdGFuY2UgPiA1ICYmICF0aGlzLmlzRHJhZ2dpbmcpIHtcbiAgICAgIHRoaXMuaXNEcmFnZ2luZyA9IHRydWU7XG4gICAgICB0aGlzLmRyYWdTdGFydGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMud2FzRHJhZ2dpbmcgPSB0cnVlO1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5pc0RyYWdnaW5nKSB7XG4gICAgICB0aGlzLnVwZGF0ZURyYWcoZXZlbnQuY2xpZW50WCk7XG4gICAgfVxuICB9XG5cbiAgb25Nb3VzZVVwKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmlzTW91c2VEb3duKSByZXR1cm47XG4gICAgXG4gICAgdGhpcy5pc01vdXNlRG93biA9IGZhbHNlO1xuICAgIFxuICAgIGlmICh0aGlzLmlzRHJhZ2dpbmcpIHtcbiAgICAgIGNvbnN0IG1vdXNlVXBUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgIGNvbnN0IGhvbGREdXJhdGlvbiA9IG1vdXNlVXBUaW1lIC0gdGhpcy5tb3VzZURvd25UaW1lO1xuICAgICAgY29uc3QgbW91c2VEaXN0YW5jZSA9IE1hdGguYWJzKHRoaXMuY3VycmVudFggLSB0aGlzLnN0YXJ0WCk7XG4gICAgICBcbiAgICAgIGlmIChtb3VzZURpc3RhbmNlID4gNSB8fCAoaG9sZER1cmF0aW9uID4gMjAwICYmIG1vdXNlRGlzdGFuY2UgPiAwKSkge1xuICAgICAgICB0aGlzLndhc0RyYWdnaW5nID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgdGhpcy5lbmREcmFnKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlc2V0IHRyYW5zaXRpb24gaWYgaXQgd2FzIGp1c3QgYSBjbGlja1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNsaWRlc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAndHJhbnNpdGlvbicsICd0cmFuc2Zvcm0gMC4zcyBlYXNlLW91dCcpO1xuICAgIH1cbiAgfVxuXG4gIG9uTW91c2VMZWF2ZShldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLmlzRHJhZ2dpbmcpIHtcbiAgICAgIHRoaXMud2FzRHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5lbmREcmFnKCk7XG4gICAgfVxuICAgIHRoaXMuaXNNb3VzZURvd24gPSBmYWxzZTtcbiAgfVxuXG4gIC8vIFRvdWNoIGV2ZW50c1xuICBvblRvdWNoU3RhcnQoZXZlbnQ6IFRvdWNoRXZlbnQpIHtcbiAgICB0aGlzLnRvdWNoU3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLnRvdWNoU3RhcnRYID0gZXZlbnQudG91Y2hlc1swXS5jbGllbnRYO1xuICAgIHRoaXMudG91Y2hTdGFydFkgPSBldmVudC50b3VjaGVzWzBdLmNsaWVudFk7XG4gICAgdGhpcy5pc1ZlcnRpY2FsU2Nyb2xsID0gZmFsc2U7XG4gICAgdGhpcy5pc01vdXNlRG93biA9IHRydWU7XG4gICAgdGhpcy53YXNEcmFnZ2luZyA9IGZhbHNlO1xuICAgIHRoaXMuZHJhZ1N0YXJ0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmNsaWNrc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgdGhpcy5zdGFydFggPSBldmVudC50b3VjaGVzWzBdLmNsaWVudFg7XG4gICAgdGhpcy5jdXJyZW50WCA9IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WDtcbiAgICB0aGlzLmluaXRpYWxUcmFuc2xhdGVYID0gdGhpcy50cmFuc2xhdGVYO1xuICAgIHRoaXMuZHJhZ09mZnNldCA9IDA7XG4gICAgdGhpcy52ZWxvY2l0eSA9IDA7XG4gICAgdGhpcy5sYXN0TW92ZVRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMubGFzdE1vdmVYID0gZXZlbnQudG91Y2hlc1swXS5jbGllbnRYO1xuICAgIFxuICAgIHRoaXMuY2FsY3VsYXRlRGltZW5zaW9ucygpO1xuICAgIFxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5zbGlkZXNDb250YWluZXIubmF0aXZlRWxlbWVudCwgJ3RyYW5zaXRpb24nLCAnbm9uZScpO1xuICB9XG5cbiAgb25Ub3VjaE1vdmUoZXZlbnQ6IFRvdWNoRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuaXNNb3VzZURvd24pIHJldHVybjtcbiAgICBcbiAgICBjb25zdCBjdXJyZW50WCA9IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WDtcbiAgICBjb25zdCBjdXJyZW50WSA9IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WTtcbiAgICBjb25zdCBkZWx0YVggPSBNYXRoLmFicyhjdXJyZW50WCAtIHRoaXMudG91Y2hTdGFydFgpO1xuICAgIGNvbnN0IGRlbHRhWSA9IE1hdGguYWJzKGN1cnJlbnRZIC0gdGhpcy50b3VjaFN0YXJ0WSk7XG4gICAgXG4gICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIHZlcnRpY2FsIHNjcm9sbFxuICAgIGlmIChkZWx0YVkgPiBkZWx0YVggJiYgZGVsdGFZID4gMTApIHtcbiAgICAgIHRoaXMuaXNWZXJ0aWNhbFNjcm9sbCA9IHRydWU7XG4gICAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuaXNNb3VzZURvd24gPSBmYWxzZTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5zbGlkZXNDb250YWluZXIubmF0aXZlRWxlbWVudCwgJ3RyYW5zaXRpb24nLCAndHJhbnNmb3JtIDAuM3MgZWFzZS1vdXQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgLy8gU3RhcnQgZHJhZ2dpbmcgaWYgaG9yaXpvbnRhbCBtb3ZlbWVudCA+IDEwcHhcbiAgICBpZiAoZGVsdGFYID4gMTAgJiYgIXRoaXMuaXNEcmFnZ2luZykge1xuICAgICAgdGhpcy5pc0RyYWdnaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuZHJhZ1N0YXJ0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy53YXNEcmFnZ2luZyA9IHRydWU7XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLmlzRHJhZ2dpbmcgJiYgZGVsdGFYID4gMTApIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnVwZGF0ZURyYWcoY3VycmVudFgpO1xuICAgIH1cbiAgfVxuXG4gIG9uVG91Y2hFbmQoZXZlbnQ6IFRvdWNoRXZlbnQpIHtcbiAgICBpZiAodGhpcy5pc1ZlcnRpY2FsU2Nyb2xsKSB7XG4gICAgICB0aGlzLmlzVmVydGljYWxTY3JvbGwgPSBmYWxzZTtcbiAgICAgIHRoaXMuaXNNb3VzZURvd24gPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5pc01vdXNlRG93biA9IGZhbHNlO1xuICAgIFxuICAgIGNvbnN0IHRvdWNoRHVyYXRpb24gPSBEYXRlLm5vdygpIC0gdGhpcy50b3VjaFN0YXJ0VGltZTtcbiAgICBjb25zdCB0b3VjaERpc3RhbmNlID0gTWF0aC5hYnModGhpcy5jdXJyZW50WCAtIHRoaXMuc3RhcnRYKTtcbiAgICBcbiAgICAvLyBNYXJrIGFzIGRyYWdnaW5nIGlmIHNpZ25pZmljYW50IG1vdmVtZW50IG9jY3VycmVkXG4gICAgaWYgKHRvdWNoRGlzdGFuY2UgPiAxMCB8fCB0b3VjaER1cmF0aW9uID4gMzAwKSB7XG4gICAgICB0aGlzLndhc0RyYWdnaW5nID0gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMuaXNEcmFnZ2luZykge1xuICAgICAgdGhpcy5lbmREcmFnKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlc2V0IHRyYW5zaXRpb24gaWYgaXQgd2FzIGp1c3QgYSB0YXBcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5zbGlkZXNDb250YWluZXIubmF0aXZlRWxlbWVudCwgJ3RyYW5zaXRpb24nLCAndHJhbnNmb3JtIDAuM3MgZWFzZS1vdXQnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldHVwQ2xpY2tQcmV2ZW50aW9uKCkge1xuICAgIC8vIENsZWFuIHVwIGV4aXN0aW5nIGxpc3RlbmVyc1xuICAgIHRoaXMuY2xpY2tMaXN0ZW5lcnMuZm9yRWFjaCh1bmxpc3RlbiA9PiB1bmxpc3RlbigpKTtcbiAgICB0aGlzLmNsaWNrTGlzdGVuZXJzID0gW107XG5cbiAgICB0aGlzLml0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIC8vIE9ubHkgcHJldmVudCBjbGljayBldmVudHMsIG5vdCBtb3VzZXVwIHdoaWNoIGlzIG5lZWRlZCBmb3IgZHJhZyBmdW5jdGlvbmFsaXR5XG4gICAgICBjb25zdCBldmVudEhhbmRsZXIgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudC50eXBlID09PSAnY2xpY2snICYmICh0aGlzLndhc0RyYWdnaW5nIHx8IHRoaXMuY2xpY2tzRGlzYWJsZWQgfHwgdGhpcy5kcmFnU3RhcnRlZCkpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH07XG5cbiAgICAgIC8vIE9ubHkgbGlzdGVuIHRvIGNsaWNrIGV2ZW50cyB0byBhdm9pZCBpbnRlcmZlcmluZyB3aXRoIGRyYWcgZnVuY3Rpb25hbGl0eVxuICAgICAgaXRlbS5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZXZlbnRIYW5kbGVyLCB0cnVlKTtcbiAgICAgIFxuICAgICAgdGhpcy5jbGlja0xpc3RlbmVycy5wdXNoKCgpID0+IHtcbiAgICAgICAgaXRlbS5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZXZlbnRIYW5kbGVyLCB0cnVlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEcmFnKGNsaWVudFg6IG51bWJlcikge1xuICAgIGlmICghdGhpcy5pc0RyYWdnaW5nKSByZXR1cm47XG5cbiAgICB0aGlzLmN1cnJlbnRYID0gY2xpZW50WDtcbiAgICBjb25zdCB0b3RhbERlbHRhWCA9IHRoaXMuY3VycmVudFggLSB0aGlzLnN0YXJ0WDtcbiAgICBcbiAgICAvLyBNYXJrIGFzIGRyYWdnaW5nIGlmIG1vdmVtZW50IGlzIHNpZ25pZmljYW50XG4gICAgaWYgKE1hdGguYWJzKHRvdGFsRGVsdGFYKSA+IDUpIHtcbiAgICAgIHRoaXMud2FzRHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5kcmFnU3RhcnRlZCA9IHRydWU7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3QgdGltZURlbHRhID0gbm93IC0gdGhpcy5sYXN0TW92ZVRpbWU7XG4gICAgaWYgKHRpbWVEZWx0YSA+IDApIHtcbiAgICAgIHRoaXMudmVsb2NpdHkgPSAoY2xpZW50WCAtIHRoaXMubGFzdE1vdmVYKSAvIHRpbWVEZWx0YTtcbiAgICB9XG4gICAgdGhpcy5sYXN0TW92ZVRpbWUgPSBub3c7XG4gICAgdGhpcy5sYXN0TW92ZVggPSBjbGllbnRYO1xuXG4gICAgbGV0IHJlc2lzdGVkRGVsdGFYID0gdG90YWxEZWx0YVg7XG4gICAgY29uc3QgcG90ZW50aWFsVHJhbnNsYXRlWCA9IHRoaXMuaW5pdGlhbFRyYW5zbGF0ZVggKyB0b3RhbERlbHRhWDtcbiAgICBcbiAgICAvLyBBcHBseSBzb2Z0ZXIgcmVzaXN0YW5jZSBhdCBib3VuZGFyaWVzXG4gICAgaWYgKHBvdGVudGlhbFRyYW5zbGF0ZVggPiB0aGlzLm1heFRyYW5zbGF0ZVgpIHtcbiAgICAgIGNvbnN0IG92ZXJEcmFnID0gcG90ZW50aWFsVHJhbnNsYXRlWCAtIHRoaXMubWF4VHJhbnNsYXRlWDtcbiAgICAgIHJlc2lzdGVkRGVsdGFYID0gdG90YWxEZWx0YVggLSAob3ZlckRyYWcgKiAwLjUpO1xuICAgIH0gZWxzZSBpZiAocG90ZW50aWFsVHJhbnNsYXRlWCA8IHRoaXMubWluVHJhbnNsYXRlWCkge1xuICAgICAgY29uc3Qgb3ZlckRyYWcgPSB0aGlzLm1pblRyYW5zbGF0ZVggLSBwb3RlbnRpYWxUcmFuc2xhdGVYO1xuICAgICAgcmVzaXN0ZWREZWx0YVggPSB0b3RhbERlbHRhWCArIChvdmVyRHJhZyAqIDAuNSk7XG4gICAgfVxuXG4gICAgdGhpcy5kcmFnT2Zmc2V0ID0gcmVzaXN0ZWREZWx0YVg7XG4gICAgdGhpcy51cGRhdGVEcmFnUG9zaXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRHJhZ1Bvc2l0aW9uKCkge1xuICAgIGNvbnN0IG5ld1RyYW5zbGF0ZVggPSB0aGlzLmluaXRpYWxUcmFuc2xhdGVYICsgdGhpcy5kcmFnT2Zmc2V0O1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICB0aGlzLnNsaWRlc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCBcbiAgICAgICd0cmFuc2Zvcm0nLCBcbiAgICAgIGB0cmFuc2xhdGVYKCR7bmV3VHJhbnNsYXRlWH1weClgXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZW5kRHJhZygpIHtcbiAgICBpZiAoIXRoaXMuaXNEcmFnZ2luZykgcmV0dXJuO1xuXG4gICAgdGhpcy5pc0RyYWdnaW5nID0gZmFsc2U7XG4gICAgXG4gICAgLy8gRGlzYWJsZSBjbGlja3MgdGVtcG9yYXJpbHkgYWZ0ZXIgYW55IGRyYWdcbiAgICBpZiAodGhpcy53YXNEcmFnZ2luZyB8fCB0aGlzLmRyYWdTdGFydGVkKSB7XG4gICAgICB0aGlzLmNsaWNrc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNsaWNrc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgICB9LCAyMDApO1xuICAgIH1cbiAgICBcbiAgICAvLyBDbGVhciB0aGUgd2FzRHJhZ2dpbmcgYW5kIGRyYWdTdGFydGVkIGZsYWdzIGFmdGVyIGEgc2hvcnRlciBkZWxheVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy53YXNEcmFnZ2luZyA9IGZhbHNlO1xuICAgICAgdGhpcy5kcmFnU3RhcnRlZCA9IGZhbHNlO1xuICAgIH0sIDI1MCk7XG4gICAgXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNsaWRlc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAndHJhbnNpdGlvbicsICd0cmFuc2Zvcm0gMC4zcyBlYXNlLW91dCcpO1xuXG4gICAgLy8gU25hcCBzZW1wcmUgcGFyYSBvIGluw61jaW8gZGEgcMOhZ2luYSBtYWlzIHByw7N4aW1hXG4gICAgdGhpcy5zbmFwVG9OZWFyZXN0SXRlbSgpO1xuXG4gICAgdGhpcy5kcmFnT2Zmc2V0ID0gMDtcbiAgICB0aGlzLnZlbG9jaXR5ID0gMDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWF4SW5kZXgoKTogbnVtYmVyIHtcbiAgICAvLyBQZXJtaXRlIGF2YW7Dp2FyIGF0w6kgcXVlIG8gw7psdGltbyBpdGVtIGVzdGVqYSB2aXPDrXZlbCAobsOjbyBuZWNlc3NhcmlhbWVudGUgYWxpbmhhZG8gw6AgZXNxdWVyZGEpXG4gICAgaWYgKCF0aGlzLml0ZW1zIHx8IHRoaXMuaXRlbXMubGVuZ3RoID09PSAwKSByZXR1cm4gMDtcbiAgICBjb25zdCB2aXNpYmxlQ291bnQgPSBNYXRoLm1heCgxLCBNYXRoLmZsb29yKHRoaXMuY29udGFpbmVyV2lkdGggLyAodGhpcy5pdGVtV2lkdGggKyB0aGlzLmdhcCkpKTtcbiAgICBpZiAodGhpcy5pdGVtcy5sZW5ndGggPD0gdmlzaWJsZUNvdW50KSByZXR1cm4gMDtcbiAgICAvLyDDmmx0aW1hIHBvc2nDp8OjbyBvbmRlIG8gw7psdGltbyBpdGVtIGFwYXJlY2Ugdmlzw612ZWxcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5sZW5ndGggLSB2aXNpYmxlQ291bnQ7XG4gIH1cblxuICBjYW5Hb05leHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEluZGV4IDwgdGhpcy5nZXRNYXhJbmRleCgpO1xuICB9XG5cbiAgbmV4dEl0ZW0oKSB7XG4gICAgY29uc3QgbWF4SW5kZXggPSB0aGlzLmdldE1heEluZGV4KCk7XG4gICAgaWYgKHRoaXMuY2FuR29OZXh0KCkpIHtcbiAgICAgIGxldCBuZXdJbmRleCA9IHRoaXMuY3VycmVudEluZGV4ICsgMTtcbiAgICAgIGlmIChuZXdJbmRleCA+IG1heEluZGV4KSBuZXdJbmRleCA9IG1heEluZGV4O1xuICAgICAgdGhpcy5jdXJyZW50SW5kZXggPSBuZXdJbmRleDtcbiAgICAgIHRoaXMudXBkYXRlVHJhbnNmb3JtKCk7XG4gICAgICB0aGlzLm5leHRDbGlja0V2ZW50RW1pdHRlci5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgY2FuR29QcmV2aW91cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50SW5kZXggPiAwO1xuICB9XG5cbiAgcHJldkl0ZW0oKSB7XG4gICAgaWYgKHRoaXMuY2FuR29QcmV2aW91cygpKSB7XG4gICAgICBsZXQgbmV3SW5kZXggPSB0aGlzLmN1cnJlbnRJbmRleCAtIDE7XG4gICAgICBpZiAobmV3SW5kZXggPCAwKSBuZXdJbmRleCA9IDA7XG4gICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IG5ld0luZGV4O1xuICAgICAgdGhpcy51cGRhdGVUcmFuc2Zvcm0oKTtcbiAgICAgIHRoaXMucHJldmlvdXNDbGlja0V2ZW50RW1pdHRlci5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgZ29Ub0RvdChkb3RJbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgbWF4SW5kZXggPSB0aGlzLmdldE1heEluZGV4KCk7XG4gICAgbGV0IG5ld0luZGV4ID0gZG90SW5kZXg7XG4gICAgaWYgKG5ld0luZGV4ID4gbWF4SW5kZXgpIG5ld0luZGV4ID0gbWF4SW5kZXg7XG4gICAgdGhpcy5jdXJyZW50SW5kZXggPSBuZXdJbmRleDtcbiAgICB0aGlzLnVwZGF0ZVRyYW5zZm9ybSgpO1xuICAgIHRoaXMuZG90Q2xpY2tFdmVudEVtaXR0ZXIuZW1pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzbmFwVG9OZWFyZXN0SXRlbSgpIHtcbiAgICBjb25zdCBpdGVtU3RlcCA9IHRoaXMuaXRlbVdpZHRoICsgdGhpcy5nYXA7XG4gICAgY29uc3QgcG9zaXRpb24gPSAtKHRoaXMuaW5pdGlhbFRyYW5zbGF0ZVggKyB0aGlzLmRyYWdPZmZzZXQpIC8gaXRlbVN0ZXA7XG4gICAgXG4gICAgLy8gVGhyZXNob2xkOiAwLjMgPSAzMCUsIDAuNSA9IDUwJSAocGFkcsOjbylcbiAgICBjb25zdCB0aHJlc2hvbGQgPSAwLjM7XG4gICAgXG4gICAgbGV0IHRhcmdldEluZGV4OiBudW1iZXI7XG4gICAgXG4gICAgLy8gQ2FsY3VsYSBxdWFudG9zIGl0ZW5zIGNvbXBsZXRvcyBmb3JhbSBhcnJhc3RhZG9zXG4gICAgY29uc3QgaXRlbXNNb3ZlZCA9IE1hdGguZmxvb3IoTWF0aC5hYnMocG9zaXRpb24gLSB0aGlzLmN1cnJlbnRJbmRleCkpO1xuICAgIGNvbnN0IGRlY2ltYWwgPSBNYXRoLmFicyhwb3NpdGlvbiAtIHRoaXMuY3VycmVudEluZGV4KSAtIGl0ZW1zTW92ZWQ7XG4gICAgXG4gICAgaWYgKHBvc2l0aW9uID4gdGhpcy5jdXJyZW50SW5kZXgpIHtcbiAgICAgIC8vIEFycmFzdGFuZG8gcGFyYSBmcmVudGVcbiAgICAgIGlmIChkZWNpbWFsID49IHRocmVzaG9sZCkge1xuICAgICAgICB0YXJnZXRJbmRleCA9IHRoaXMuY3VycmVudEluZGV4ICsgaXRlbXNNb3ZlZCArIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXJnZXRJbmRleCA9IHRoaXMuY3VycmVudEluZGV4ICsgaXRlbXNNb3ZlZDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHBvc2l0aW9uIDwgdGhpcy5jdXJyZW50SW5kZXgpIHtcbiAgICAgIC8vIEFycmFzdGFuZG8gcGFyYSB0csOhc1xuICAgICAgaWYgKGRlY2ltYWwgPj0gdGhyZXNob2xkKSB7XG4gICAgICAgIHRhcmdldEluZGV4ID0gdGhpcy5jdXJyZW50SW5kZXggLSBpdGVtc01vdmVkIC0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRhcmdldEluZGV4ID0gdGhpcy5jdXJyZW50SW5kZXggLSBpdGVtc01vdmVkO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOw6NvIHNlIG1vdmV1XG4gICAgICB0YXJnZXRJbmRleCA9IHRoaXMuY3VycmVudEluZGV4O1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBtYXhJbmRleCA9IHRoaXMuZ2V0TWF4SW5kZXgoKTtcbiAgICB0YXJnZXRJbmRleCA9IE1hdGgubWF4KDAsIE1hdGgubWluKHRhcmdldEluZGV4LCBtYXhJbmRleCkpO1xuICAgIHRoaXMuY3VycmVudEluZGV4ID0gdGFyZ2V0SW5kZXg7XG4gICAgdGhpcy51cGRhdGVUcmFuc2Zvcm0oKTtcbiAgfVxuXG4gIGdldERvdHNBcnJheSgpOiBhbnlbXSB7XG4gICAgLy8gU8OzIG1vc3RyYSBkb3RzIHBhcmEgY2FkYSBwb3Npw6fDo28gcG9zc8OtdmVsIChjYWRhIFwicMOhZ2luYVwiIHBvc3PDrXZlbClcbiAgICBjb25zdCBtYXhJbmRleCA9IHRoaXMuZ2V0TWF4SW5kZXgoKTtcbiAgICByZXR1cm4gQXJyYXkobWF4SW5kZXggKyAxKTtcbiAgfVxuXG4gIGdldEN1cnJlbnREb3RJbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRJbmRleDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVHJhbnNmb3JtKCkge1xuICAgIGNvbnN0IGl0ZW1TdGVwID0gdGhpcy5pdGVtV2lkdGggKyB0aGlzLmdhcDtcbiAgICB0aGlzLnRyYW5zbGF0ZVggPSAtdGhpcy5jdXJyZW50SW5kZXggKiBpdGVtU3RlcDtcblxuICAgIC8vIENsYW1wIHBhcmEgbsOjbyBtb3N0cmFyIGVzcGHDp28gdmF6aW8gw6AgZGlyZWl0YVxuICAgIGNvbnN0IHZpc2libGVDb3VudCA9IE1hdGgubWF4KDEsIE1hdGguZmxvb3IodGhpcy5jb250YWluZXJXaWR0aCAvIGl0ZW1TdGVwKSk7XG4gICAgLy8gSW5jbHVpIG8gZ2FwIGFww7NzIG8gw7psdGltbyBpdGVtXG4gICAgY29uc3QgdG90YWxXaWR0aCA9IHRoaXMuaXRlbXMubGVuZ3RoICogaXRlbVN0ZXA7XG4gICAgaWYgKHRoaXMuaXRlbXMubGVuZ3RoID4gdmlzaWJsZUNvdW50KSB7XG4gICAgICBjb25zdCBtaW5UcmFuc2xhdGVYID0gdGhpcy5jb250YWluZXJXaWR0aCAtIHRvdGFsV2lkdGg7XG4gICAgICB0aGlzLnRyYW5zbGF0ZVggPSBNYXRoLm1heCh0aGlzLnRyYW5zbGF0ZVgsIG1pblRyYW5zbGF0ZVgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyYW5zbGF0ZVggPSAwO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5pc0RyYWdnaW5nICYmIHRoaXMuc2xpZGVzQ29udGFpbmVyKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLnNsaWRlc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LFxuICAgICAgICAndHJhbnNmb3JtJyxcbiAgICAgICAgYHRyYW5zbGF0ZVgoJHt0aGlzLnRyYW5zbGF0ZVh9cHgpYFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBBZGljaW9uZSBlc3RlIG3DqXRvZG8gcGFyYSBldml0YXIgZXJybyBkZSBwcm9wcmllZGFkZSBhdXNlbnRlXG4gIGdvVG9GaXJzdEl0ZW0oKSB7XG4gICAgdGhpcy5jdXJyZW50SW5kZXggPSAwO1xuICAgIHRoaXMudXBkYXRlVHJhbnNmb3JtKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjLWNhcm91c2VsLWZpeGVkLWNvbnRhaW5lclwiICNyaWdodEJsZWVkQ29udGFpbmVyPlxuICA8ZGl2IFxuICBjbGFzcz1cImMtY2Fyb3VzZWwtZml4ZWQtc2xpZGVzXCIgXG4gICNzbGlkZXNDb250YWluZXJcbiAgW3N0eWxlLnRyYW5zZm9ybV09XCIndHJhbnNsYXRlWCgnICsgdHJhbnNsYXRlWCArICdweCknXCIgXG4gIChtb3VzZWRvd24pPVwib25Nb3VzZURvd24oJGV2ZW50KVwiXG4gIChtb3VzZW1vdmUpPVwib25Nb3VzZU1vdmUoJGV2ZW50KVwiXG4gIChtb3VzZXVwKT1cIm9uTW91c2VVcCgkZXZlbnQpXCJcbiAgKG1vdXNlbGVhdmUpPVwib25Nb3VzZUxlYXZlKCRldmVudClcIlxuICAodG91Y2hzdGFydCk9XCJvblRvdWNoU3RhcnQoJGV2ZW50KVwiIFxuICAodG91Y2htb3ZlKT1cIm9uVG91Y2hNb3ZlKCRldmVudClcIiBcbiAgKHRvdWNoZW5kKT1cIm9uVG91Y2hFbmQoJGV2ZW50KVwiPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiYy1jYXJvdXNlbC1maXhlZC1mb290ZXJcIiAqbmdJZj1cInNob3dBcnJvd3MgfHwgc2hvd0RvdHNcIj5cbiAgICA8YnV0dG9uICpuZ0lmPVwic2hvd0Fycm93cyAmJiBnZXREb3RzQXJyYXkoKS5sZW5ndGggPiAxXCJcbiAgICAgIGNsYXNzPVwiYy1jYXJvdXNlbC1maXhlZC1uYXYgcHJldlwiIFxuICAgICAgW2Rpc2FibGVkXT1cIiFjYW5Hb1ByZXZpb3VzKClcIlxuICAgICAgdGl0bGU9XCJJdGVtIGFudGVyaW9yXCIgXG4gICAgICBhcmlhLWxhYmVsPVwiSXRlbSBhbnRlcmlvclwiIFxuICAgICAgKGNsaWNrKT1cInByZXZJdGVtKClcIj5cbiAgICAgIDxsaWItZWx1eC1pY29uIFtpY29uXT1cIidDaGV2cm9uX0xlZnQuc3ZnJ1wiIFtzaXplXT1cIicxNidcIiBbc2l6ZVR5cGVdPVwiJ3B4J1wiIFtjb2xvcl09XCInIzAyMEYyRSdcIj48L2xpYi1lbHV4LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYy1jYXJvdXNlbC1maXhlZC1kb3RzXCIgKm5nSWY9XCJzaG93RG90cyAmJiBnZXREb3RzQXJyYXkoKS5sZW5ndGggPiAxXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkb3Qgb2YgZ2V0RG90c0FycmF5KCk7IGxldCBpZHggPSBpbmRleFwiPlxuICAgICAgICA8c3BhbiBcbiAgICAgICAgICBjbGFzcz1cImMtY2Fyb3VzZWwtZml4ZWQtZG90XCIgXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpZHggPT09IGdldEN1cnJlbnREb3RJbmRleCgpXCIgXG4gICAgICAgICAgKGNsaWNrKT1cImdvVG9Eb3QoaWR4KVwiPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxidXR0b24gKm5nSWY9XCJzaG93QXJyb3dzICYmIGdldERvdHNBcnJheSgpLmxlbmd0aCA+IDFcIlxuICAgICAgY2xhc3M9XCJjLWNhcm91c2VsLWZpeGVkLW5hdiBuZXh0XCIgXG4gICAgICBbZGlzYWJsZWRdPVwiIWNhbkdvTmV4dCgpXCJcbiAgICAgIHRpdGxlPVwiUHLDs3hpbW8gaXRlbVwiIFxuICAgICAgYXJpYS1sYWJlbD1cIlByw7N4aW1vIGl0ZW1cIiBcbiAgICAgIChjbGljayk9XCJuZXh0SXRlbSgpXCI+XG4gICAgICA8bGliLWVsdXgtaWNvbiBbaWNvbl09XCInQ2hldnJvbl9SaWdodC5zdmcnXCIgW3NpemVdPVwiJzE2J1wiIFtzaXplVHlwZV09XCIncHgnXCIgW2NvbG9yXT1cIicjMDIwRjJFJ1wiPjwvbGliLWVsdXgtaWNvbj5cbiAgICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19
@@ -57,7 +57,7 @@ export * from './card-4';
57
57
  export * from './dropdown-multiple';
58
58
  export * from './loading-2';
59
59
  export * from './carousel';
60
- export * from './carousel-fixed/carousel-fixed.component';
60
+ export * from './carousel-fixed-deprecated/carousel-fixed.component';
61
61
  export * from './arrow-link';
62
62
  export * from './switch';
63
63
  export * from './chip';
@@ -66,4 +66,5 @@ export * from './card-article/card-article.component';
66
66
  export * from './card-service-order/card-service-order.component';
67
67
  export * from './card-manual/card-manual.component';
68
68
  export * from './card-routine/card-routine.component';
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi91aS9saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMxQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDcEMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWxDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFnQjtJQUMvQyxjQUFjO0lBQ2QsVUFBVTtJQUNWLGNBQWM7SUFDZCxZQUFZO0lBQ1osUUFBUTtJQUNSLGFBQWE7SUFDYixXQUFXO0lBQ1gsU0FBUztJQUNULGFBQWE7SUFDYixhQUFhO0lBQ2IsU0FBUztJQUNULHdCQUF3QjtJQUN4Qiw2QkFBNkI7SUFDN0IsV0FBVztJQUNYLG9CQUFvQjtJQUNwQixxQkFBcUI7SUFDckIsVUFBVTtJQUNWLFFBQVE7Q0FDVCxDQUFDO0FBRUYsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsdUNBQXVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbHV4QnJlYWRjcnVtYiB9IGZyb20gJy4vYnJlYWRjcnVtYic7XG5pbXBvcnQgeyBFbHV4QnV0dG9uIH0gZnJvbSAnLi9idXR0b24nO1xuaW1wb3J0IHsgRWx1eERyb3Bkb3duIH0gZnJvbSAnLi9kcm9wZG93bic7XG5pbXBvcnQgeyBFbHV4SWNvbiB9IGZyb20gJy4vaWNvbic7XG5pbXBvcnQgeyBFbHV4UGFnaW5hdG9yIH0gZnJvbSAnLi9wYWdpbmF0b3InO1xuaW1wb3J0IHsgRWx1eFN0ZXBCYXIgfSBmcm9tICcuL3N0ZXBiYXInO1xuaW1wb3J0IHsgRWx1eERhdGVwaWNrZXIgfSBmcm9tICcuL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgRWx1eFRvYXN0IH0gZnJvbSAnLi90b2FzdCc7XG5pbXBvcnQgeyBFbHV4RGF0YVRhYmxlIH0gZnJvbSAnLi9kYXRhdGFibGUnO1xuaW1wb3J0IHsgRWx1eEFjY29yZGlvbiB9IGZyb20gJy4vYWNjb3JkaW9uJztcbmltcG9ydCB7IEVsdXhNb2RhbCB9IGZyb20gJy4vbW9kYWwnO1xuaW1wb3J0IHsgRWx1eElucHV0U2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC1zZWFyY2gnO1xuaW1wb3J0IHsgRWx1eExvYWRpbmcgfSBmcm9tICcuL2xvYWRpbmcnO1xuaW1wb3J0IHsgRWx1eElucHV0U2VhcmNoTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2lucHV0LXNlYXJjaC1tb2RhbC9pbnB1dC1zZWFyY2gtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IEVsdXhEcm9wZG93bk11bHRpcGxlIH0gZnJvbSAnLi9kcm9wZG93bi1tdWx0aXBsZSc7XG5pbXBvcnQgeyBFbHV4Q2Fyb3VzZWxDb21wb25lbnQgfSBmcm9tICcuL2Nhcm91c2VsJztcbmltcG9ydCB7IEVsdXhTd2l0Y2ggfSBmcm9tICcuL3N3aXRjaCc7XG5pbXBvcnQgeyBFbHV4Q2hpcCB9IGZyb20gJy4vY2hpcCc7XG5cbmV4cG9ydCBjb25zdCBFbGVjdHJvbHV4Q29tcG9uZW50czogVHlwZTxhbnk+W10gPSBbXG4gIEVsdXhCcmVhZGNydW1iLFxuICBFbHV4QnV0dG9uLFxuICBFbHV4RGF0ZXBpY2tlcixcbiAgRWx1eERyb3Bkb3duLFxuICBFbHV4SWNvbixcbiAgRWx1eFBhZ2luYXRvcixcbiAgRWx1eFN0ZXBCYXIsXG4gIEVsdXhUb2FzdCxcbiAgRWx1eERhdGFUYWJsZSxcbiAgRWx1eEFjY29yZGlvbixcbiAgRWx1eE1vZGFsLFxuICBFbHV4SW5wdXRTZWFyY2hDb21wb25lbnQsXG4gIEVsdXhJbnB1dFNlYXJjaE1vZGFsQ29tcG9uZW50LFxuICBFbHV4TG9hZGluZyxcbiAgRWx1eERyb3Bkb3duTXVsdGlwbGUsXG4gIEVsdXhDYXJvdXNlbENvbXBvbmVudCxcbiAgRWx1eFN3aXRjaCxcbiAgRWx1eENoaXAsXG5dO1xuXG5leHBvcnQgKiBmcm9tICcuL2JyZWFkY3J1bWInO1xuZXhwb3J0ICogZnJvbSAnLi9idXR0b24nO1xuZXhwb3J0ICogZnJvbSAnLi9kcm9wZG93bic7XG5leHBvcnQgKiBmcm9tICcuL2ljb24nO1xuZXhwb3J0ICogZnJvbSAnLi9wYWdpbmF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9zdGVwYmFyJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZXBpY2tlcic7XG5leHBvcnQgKiBmcm9tICcuL3RvYXN0JztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXRhYmxlJztcbmV4cG9ydCAqIGZyb20gJy4vYWNjb3JkaW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2FkaW5nJztcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtc2VhcmNoJztcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtc2VhcmNoLW1vZGFsJztcbmV4cG9ydCAqIGZyb20gJy4vY2FyZC0xJztcbmV4cG9ydCAqIGZyb20gJy4vY2FyZC0yJztcbmV4cG9ydCAqIGZyb20gJy4vY2FyZC0zJztcbmV4cG9ydCAqIGZyb20gJy4vY2FyZC00JztcbmV4cG9ydCAqIGZyb20gJy4vZHJvcGRvd24tbXVsdGlwbGUnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2FkaW5nLTInO1xuZXhwb3J0ICogZnJvbSAnLi9jYXJvdXNlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Nhcm91c2VsLWZpeGVkL2Nhcm91c2VsLWZpeGVkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2Fycm93LWxpbmsnO1xuZXhwb3J0ICogZnJvbSAnLi9zd2l0Y2gnO1xuZXhwb3J0ICogZnJvbSAnLi9jaGlwJztcbmV4cG9ydCAqIGZyb20gJy4vY2FyZC1wcm9kdWN0L2NhcmQtcHJvZHVjdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXJkLWFydGljbGUvY2FyZC1hcnRpY2xlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NhcmQtc2VydmljZS1vcmRlci9jYXJkLXNlcnZpY2Utb3JkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY2FyZC1tYW51YWwvY2FyZC1tYW51YWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY2FyZC1yb3V0aW5lL2NhcmQtcm91dGluZS5jb21wb25lbnQnOyJdfQ==
69
+ export * from './carousel-bleed/carousel-bleed.component';
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi91aS9saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMxQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDcEMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWxDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFnQjtJQUMvQyxjQUFjO0lBQ2QsVUFBVTtJQUNWLGNBQWM7SUFDZCxZQUFZO0lBQ1osUUFBUTtJQUNSLGFBQWE7SUFDYixXQUFXO0lBQ1gsU0FBUztJQUNULGFBQWE7SUFDYixhQUFhO0lBQ2IsU0FBUztJQUNULHdCQUF3QjtJQUN4Qiw2QkFBNkI7SUFDN0IsV0FBVztJQUNYLG9CQUFvQjtJQUNwQixxQkFBcUI7SUFDckIsVUFBVTtJQUNWLFFBQVE7Q0FDVCxDQUFDO0FBRUYsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYywyQ0FBMkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVsdXhCcmVhZGNydW1iIH0gZnJvbSAnLi9icmVhZGNydW1iJztcbmltcG9ydCB7IEVsdXhCdXR0b24gfSBmcm9tICcuL2J1dHRvbic7XG5pbXBvcnQgeyBFbHV4RHJvcGRvd24gfSBmcm9tICcuL2Ryb3Bkb3duJztcbmltcG9ydCB7IEVsdXhJY29uIH0gZnJvbSAnLi9pY29uJztcbmltcG9ydCB7IEVsdXhQYWdpbmF0b3IgfSBmcm9tICcuL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBFbHV4U3RlcEJhciB9IGZyb20gJy4vc3RlcGJhcic7XG5pbXBvcnQgeyBFbHV4RGF0ZXBpY2tlciB9IGZyb20gJy4vZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBFbHV4VG9hc3QgfSBmcm9tICcuL3RvYXN0JztcbmltcG9ydCB7IEVsdXhEYXRhVGFibGUgfSBmcm9tICcuL2RhdGF0YWJsZSc7XG5pbXBvcnQgeyBFbHV4QWNjb3JkaW9uIH0gZnJvbSAnLi9hY2NvcmRpb24nO1xuaW1wb3J0IHsgRWx1eE1vZGFsIH0gZnJvbSAnLi9tb2RhbCc7XG5pbXBvcnQgeyBFbHV4SW5wdXRTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuL2lucHV0LXNlYXJjaCc7XG5pbXBvcnQgeyBFbHV4TG9hZGluZyB9IGZyb20gJy4vbG9hZGluZyc7XG5pbXBvcnQgeyBFbHV4SW5wdXRTZWFyY2hNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQtc2VhcmNoLW1vZGFsL2lucHV0LXNlYXJjaC1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWx1eERyb3Bkb3duTXVsdGlwbGUgfSBmcm9tICcuL2Ryb3Bkb3duLW11bHRpcGxlJztcbmltcG9ydCB7IEVsdXhDYXJvdXNlbENvbXBvbmVudCB9IGZyb20gJy4vY2Fyb3VzZWwnO1xuaW1wb3J0IHsgRWx1eFN3aXRjaCB9IGZyb20gJy4vc3dpdGNoJztcbmltcG9ydCB7IEVsdXhDaGlwIH0gZnJvbSAnLi9jaGlwJztcblxuZXhwb3J0IGNvbnN0IEVsZWN0cm9sdXhDb21wb25lbnRzOiBUeXBlPGFueT5bXSA9IFtcbiAgRWx1eEJyZWFkY3J1bWIsXG4gIEVsdXhCdXR0b24sXG4gIEVsdXhEYXRlcGlja2VyLFxuICBFbHV4RHJvcGRvd24sXG4gIEVsdXhJY29uLFxuICBFbHV4UGFnaW5hdG9yLFxuICBFbHV4U3RlcEJhcixcbiAgRWx1eFRvYXN0LFxuICBFbHV4RGF0YVRhYmxlLFxuICBFbHV4QWNjb3JkaW9uLFxuICBFbHV4TW9kYWwsXG4gIEVsdXhJbnB1dFNlYXJjaENvbXBvbmVudCxcbiAgRWx1eElucHV0U2VhcmNoTW9kYWxDb21wb25lbnQsXG4gIEVsdXhMb2FkaW5nLFxuICBFbHV4RHJvcGRvd25NdWx0aXBsZSxcbiAgRWx1eENhcm91c2VsQ29tcG9uZW50LFxuICBFbHV4U3dpdGNoLFxuICBFbHV4Q2hpcCxcbl07XG5cbmV4cG9ydCAqIGZyb20gJy4vYnJlYWRjcnVtYic7XG5leHBvcnQgKiBmcm9tICcuL2J1dHRvbic7XG5leHBvcnQgKiBmcm9tICcuL2Ryb3Bkb3duJztcbmV4cG9ydCAqIGZyb20gJy4vaWNvbic7XG5leHBvcnQgKiBmcm9tICcuL3BhZ2luYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL3N0ZXBiYXInO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRlcGlja2VyJztcbmV4cG9ydCAqIGZyb20gJy4vdG9hc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhdGFibGUnO1xuZXhwb3J0ICogZnJvbSAnLi9hY2NvcmRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RhbCc7XG5leHBvcnQgKiBmcm9tICcuL2xvYWRpbmcnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC1zZWFyY2gnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC1zZWFyY2gtbW9kYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXJkLTEnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXJkLTInO1xuZXhwb3J0ICogZnJvbSAnLi9jYXJkLTMnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXJkLTQnO1xuZXhwb3J0ICogZnJvbSAnLi9kcm9wZG93bi1tdWx0aXBsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xvYWRpbmctMic7XG5leHBvcnQgKiBmcm9tICcuL2Nhcm91c2VsJztcbmV4cG9ydCAqIGZyb20gJy4vY2Fyb3VzZWwtZml4ZWQtZGVwcmVjYXRlZC9jYXJvdXNlbC1maXhlZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9hcnJvdy1saW5rJztcbmV4cG9ydCAqIGZyb20gJy4vc3dpdGNoJztcbmV4cG9ydCAqIGZyb20gJy4vY2hpcCc7XG5leHBvcnQgKiBmcm9tICcuL2NhcmQtcHJvZHVjdC9jYXJkLXByb2R1Y3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY2FyZC1hcnRpY2xlL2NhcmQtYXJ0aWNsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXJkLXNlcnZpY2Utb3JkZXIvY2FyZC1zZXJ2aWNlLW9yZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NhcmQtbWFudWFsL2NhcmQtbWFudWFsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NhcmQtcm91dGluZS9jYXJkLXJvdXRpbmUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY2Fyb3VzZWwtYmxlZWQvY2Fyb3VzZWwtYmxlZWQuY29tcG9uZW50JzsiXX0=