simpo-component-library 3.6.902 → 3.6.903
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/ecommerce/sections/cart/cart.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/featured-products/featured-products.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +39 -22
- package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +26 -16
- package/esm2022/lib/ecommerce/sections/small-product-listing/small-product-listing.component.mjs +5 -3
- package/esm2022/lib/sections/footer/footer.component.mjs +3 -3
- package/esm2022/lib/sections/header-section/header-section.component.mjs +3 -3
- package/esm2022/lib/sections/moving-text/moving-text.component.mjs +59 -14
- package/esm2022/lib/services/rest.service.mjs +2 -1
- package/fesm2022/simpo-component-library.mjs +266 -191
- package/fesm2022/simpo-component-library.mjs.map +1 -1
- package/lib/ecommerce/sections/product-desc/product-desc.component.d.ts +4 -1
- package/lib/ecommerce/sections/product-list/product-list.component.d.ts +11 -3
- package/lib/ecommerce/sections/small-product-listing/small-product-listing.component.d.ts +1 -0
- package/lib/sections/moving-text/moving-text.component.d.ts +5 -1
- package/package.json +1 -1
- package/simpo-component-library-3.6.903.tgz +0 -0
- package/simpo-component-library-3.6.902.tgz +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
1
|
+
import { Component, Inject, Input, PLATFORM_ID } from '@angular/core';
|
|
2
2
|
import BaseSection from '../BaseSection';
|
|
3
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { CommonModule, isPlatformBrowser } from '@angular/common';
|
|
4
4
|
import { SimpoElementsModule } from '../../elements/index';
|
|
5
5
|
import { SimpoComponentModule } from '../../components/index';
|
|
6
6
|
import { BackgroundDirective } from '../../directive/background-directive';
|
|
@@ -13,9 +13,10 @@ import * as i2 from "@angular/common";
|
|
|
13
13
|
import * as i3 from "../../components/hover-elements/hover-elements.component";
|
|
14
14
|
import * as i4 from "../../components/delete-hover-element/delete-hover-element.component";
|
|
15
15
|
export class MovingTextComponent extends BaseSection {
|
|
16
|
-
constructor(_eventService) {
|
|
16
|
+
constructor(_eventService, platformId) {
|
|
17
17
|
super();
|
|
18
18
|
this._eventService = _eventService;
|
|
19
|
+
this.platformId = platformId;
|
|
19
20
|
this.currentIndex = 0;
|
|
20
21
|
this.previousIndex = -1;
|
|
21
22
|
this.isTransitioning = false;
|
|
@@ -24,11 +25,13 @@ export class MovingTextComponent extends BaseSection {
|
|
|
24
25
|
this.displayDuration = 3000; // How long each item shows
|
|
25
26
|
}
|
|
26
27
|
ngOnInit() {
|
|
27
|
-
if (this.
|
|
28
|
-
this.data?.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
29
|
+
if (this.data?.styles?.headline?.headlineAnimationType === 'SoftTransition' &&
|
|
30
|
+
this.data?.content?.listItem?.data?.length) {
|
|
31
|
+
setTimeout(() => {
|
|
32
|
+
this.startAnimationCycle();
|
|
33
|
+
}, 100);
|
|
34
|
+
}
|
|
32
35
|
}
|
|
33
36
|
}
|
|
34
37
|
ngOnDestroy() {
|
|
@@ -66,6 +69,43 @@ export class MovingTextComponent extends BaseSection {
|
|
|
66
69
|
this.previousIndex = -1;
|
|
67
70
|
}, this.animationDuration);
|
|
68
71
|
}
|
|
72
|
+
restartAutoPlay() {
|
|
73
|
+
if (this.interval)
|
|
74
|
+
clearInterval(this.interval);
|
|
75
|
+
this.interval = setInterval(() => {
|
|
76
|
+
this.transitionToNext();
|
|
77
|
+
}, this.displayDuration);
|
|
78
|
+
}
|
|
79
|
+
goToPrev() {
|
|
80
|
+
if (this.isTransitioning)
|
|
81
|
+
return;
|
|
82
|
+
clearInterval(this.interval);
|
|
83
|
+
this.isTransitioning = true;
|
|
84
|
+
this.previousIndex = this.currentIndex;
|
|
85
|
+
const len = this.data.content.listItem.data.length;
|
|
86
|
+
this.currentIndex = (this.currentIndex - 1 + len) % len;
|
|
87
|
+
this.animationDirection = 'right';
|
|
88
|
+
setTimeout(() => {
|
|
89
|
+
this.isTransitioning = false;
|
|
90
|
+
this.previousIndex = -1;
|
|
91
|
+
this.restartAutoPlay();
|
|
92
|
+
}, this.animationDuration);
|
|
93
|
+
}
|
|
94
|
+
goToNext() {
|
|
95
|
+
if (this.isTransitioning)
|
|
96
|
+
return;
|
|
97
|
+
clearInterval(this.interval);
|
|
98
|
+
this.isTransitioning = true;
|
|
99
|
+
this.previousIndex = this.currentIndex;
|
|
100
|
+
const len = this.data.content.listItem.data.length;
|
|
101
|
+
this.currentIndex = (this.currentIndex + 1) % len;
|
|
102
|
+
this.animationDirection = 'left';
|
|
103
|
+
setTimeout(() => {
|
|
104
|
+
this.isTransitioning = false;
|
|
105
|
+
this.previousIndex = -1;
|
|
106
|
+
this.restartAutoPlay();
|
|
107
|
+
}, this.animationDuration);
|
|
108
|
+
}
|
|
69
109
|
// Method to check if item should be visible
|
|
70
110
|
isItemVisible(index) {
|
|
71
111
|
return index === this.currentIndex || index === this.previousIndex;
|
|
@@ -73,7 +113,9 @@ export class MovingTextComponent extends BaseSection {
|
|
|
73
113
|
// Method to get animation class for item
|
|
74
114
|
getItemClass(index) {
|
|
75
115
|
if (index === this.currentIndex) {
|
|
76
|
-
return
|
|
116
|
+
return this.isTransitioning
|
|
117
|
+
? `active fade-in-${this.animationDirection}`
|
|
118
|
+
: 'active';
|
|
77
119
|
}
|
|
78
120
|
else if (index === this.previousIndex && this.isTransitioning) {
|
|
79
121
|
return `fade-out-${this.animationDirection === 'left' ? 'right' : 'left'}`;
|
|
@@ -91,8 +133,8 @@ export class MovingTextComponent extends BaseSection {
|
|
|
91
133
|
}
|
|
92
134
|
return "#ffffff";
|
|
93
135
|
}
|
|
94
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MovingTextComponent, deps: [{ token: i1.EventsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
95
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MovingTextComponent, isStandalone: true, selector: "simpo-moving-text", inputs: { data: "data", edit: "edit", delete: "delete", customClass: "customClass", index: "index" }, usesInheritance: true, ngImport: i0, template: "<section class=\"main-container\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\" [attr.style]=\"customClass\">\r\n <div class=\"slider-wrapper px-2 py-2 d-flex align-items-center justify-content-between\"\r\n [style.background]=\"data?.styles?.headline?.color ? data?.styles?.headline?.color : data?.styles?.background?.color\">\r\n <!-- Infinite Scroll Animation -->\r\n <div class=\"slider-track w-100 d-flex justify-content-between align-items-center\"\r\n *ngIf=\"data?.styles?.headline?.headlineAnimationType == 'InfiniteScroll'\">\r\n <ng-container *ngFor=\"let item of data?.content?.listItem?.data; let i = index\">\r\n <div class=\"sliding-text text-nowrap\" [style.color]=\"getTextColor(data?.styles?.headline?.color)\">\r\n {{item.inputText[0].value}}\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n <!-- Soft Transition Animation -->\r\n <div *ngIf=\"data?.styles?.headline?.headlineAnimationType == 'SoftTransition'\" class=\"list-container\">\r\n
|
|
136
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MovingTextComponent, deps: [{ token: i1.EventsService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
137
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MovingTextComponent, isStandalone: true, selector: "simpo-moving-text", inputs: { data: "data", edit: "edit", delete: "delete", customClass: "customClass", index: "index" }, usesInheritance: true, ngImport: i0, template: "<section class=\"main-container\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\" [attr.style]=\"customClass\">\r\n <div class=\"slider-wrapper px-2 py-2 d-flex align-items-center justify-content-between\"\r\n [style.background]=\"data?.styles?.headline?.color ? data?.styles?.headline?.color : data?.styles?.background?.color\">\r\n <!-- Infinite Scroll Animation -->\r\n <div class=\"slider-track w-100 d-flex justify-content-between align-items-center\"\r\n *ngIf=\"data?.styles?.headline?.headlineAnimationType == 'InfiniteScroll'\">\r\n <ng-container *ngFor=\"let item of data?.content?.listItem?.data; let i = index\">\r\n <div class=\"sliding-text text-nowrap\" [style.color]=\"getTextColor(data?.styles?.headline?.color)\">\r\n {{item.inputText[0].value}}\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n <!-- Soft Transition Animation -->\r\n <div *ngIf=\"data?.styles?.headline?.headlineAnimationType == 'SoftTransition'\" class=\"soft-transition-wrapper\">\r\n <button class=\"carousel-btn carousel-btn--prev\"\r\n *ngIf=\"(data?.content?.listItem?.data?.length ?? 0) > 1\"\r\n [style.color]=\"getTextColor(data?.styles?.headline?.color)\"\r\n (click)=\"goToPrev()\">‹</button>\r\n <div class=\"list-container\">\r\n <ng-container *ngFor=\"let item of data?.content?.listItem?.data; let i = index\">\r\n <div class=\"list-item text-nowrap\"\r\n [ngClass]=\"getItemClass(i)\"\r\n [class.visible]=\"isItemVisible(i)\"\r\n [style.color]=\"getTextColor(data?.styles?.headline?.color)\">\r\n {{item.inputText[0].value}}\r\n </div>\r\n </ng-container>\r\n </div>\r\n <button class=\"carousel-btn carousel-btn--next\"\r\n *ngIf=\"(data?.content?.listItem?.data?.length ?? 0) > 1\"\r\n [style.color]=\"getTextColor(data?.styles?.headline?.color)\"\r\n (click)=\"goToNext()\">›</button>\r\n </div>\r\n\r\n <!-- No Effect -->\r\n <ng-container *ngIf=\"data?.styles?.headline?.headlineAnimationType == 'NoEffect'\">\r\n <ng-container *ngFor=\"let item of data?.content?.listItem?.data\">\r\n <div class=\"d-flex align-items-center justify-content-center w-100 text-nowrap\" \r\n [style.color]=\"getTextColor(data?.styles?.headline?.color)\">\r\n {{item.inputText[0].value}}\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- Existing hover elements -->\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</section>", styles: [".main-container{position:relative;height:auto}.hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.slider-wrapper{position:relative;overflow:hidden}.slider-track{display:flex;gap:2rem;height:20px;width:max-content;animation:scrollLeft 30s linear infinite;animation-play-state:running;will-change:transform}.slider-track:hover{animation-play-state:paused}.sliding-text{flex-shrink:0;white-space:nowrap;padding:0 1rem;position:relative}@keyframes scrollLeft{0%{transform:translate(100%)}to{transform:translate(-100%)}}.soft-transition-wrapper{display:flex;align-items:center;width:100%;gap:8px}.carousel-btn{background:none;border:none;cursor:pointer;font-size:20px;line-height:1;width:2%!important;padding:0 4px;opacity:.6;transition:opacity .2s ease;flex-shrink:0}.carousel-btn:hover{opacity:1}.list-container{position:relative;flex:1;height:20px;overflow:hidden;display:flex;align-items:center;justify-content:center}.list-item{position:absolute;width:100%;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .8s ease,transform .8s ease;text-align:center}.list-item.active{opacity:1;visibility:visible}.fade-in-left{animation:fadeInLeft .8s forwards}.fade-out-left{animation:fadeOutLeft .8s forwards}.fade-in-right{animation:fadeInRight .8s forwards}.fade-out-right{animation:fadeOutRight .8s forwards}@keyframes fadeInLeft{0%{opacity:0;transform:translate(-100px)}to{opacity:1;transform:translate(0)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-100px)}}@keyframes fadeInRight{0%{opacity:0;transform:translate(100px)}to{opacity:1;transform:translate(0)}}@keyframes fadeOutRight{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100px)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: SimpoElementsModule }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i3.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i4.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }] }); }
|
|
96
138
|
}
|
|
97
139
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MovingTextComponent, decorators: [{
|
|
98
140
|
type: Component,
|
|
@@ -104,8 +146,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
104
146
|
SimpoHoverBorderDirective,
|
|
105
147
|
HoverDirective,
|
|
106
148
|
TextBackgroundDirectiveDirective,
|
|
107
|
-
], template: "<section class=\"main-container\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\" [attr.style]=\"customClass\">\r\n <div class=\"slider-wrapper px-2 py-2 d-flex align-items-center justify-content-between\"\r\n [style.background]=\"data?.styles?.headline?.color ? data?.styles?.headline?.color : data?.styles?.background?.color\">\r\n <!-- Infinite Scroll Animation -->\r\n <div class=\"slider-track w-100 d-flex justify-content-between align-items-center\"\r\n *ngIf=\"data?.styles?.headline?.headlineAnimationType == 'InfiniteScroll'\">\r\n <ng-container *ngFor=\"let item of data?.content?.listItem?.data; let i = index\">\r\n <div class=\"sliding-text text-nowrap\" [style.color]=\"getTextColor(data?.styles?.headline?.color)\">\r\n {{item.inputText[0].value}}\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n <!-- Soft Transition Animation -->\r\n <div *ngIf=\"data?.styles?.headline?.headlineAnimationType == 'SoftTransition'\" class=\"list-container\">\r\n
|
|
108
|
-
}], ctorParameters: () => [{ type: i1.EventsService }
|
|
149
|
+
], template: "<section class=\"main-container\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\" [attr.style]=\"customClass\">\r\n <div class=\"slider-wrapper px-2 py-2 d-flex align-items-center justify-content-between\"\r\n [style.background]=\"data?.styles?.headline?.color ? data?.styles?.headline?.color : data?.styles?.background?.color\">\r\n <!-- Infinite Scroll Animation -->\r\n <div class=\"slider-track w-100 d-flex justify-content-between align-items-center\"\r\n *ngIf=\"data?.styles?.headline?.headlineAnimationType == 'InfiniteScroll'\">\r\n <ng-container *ngFor=\"let item of data?.content?.listItem?.data; let i = index\">\r\n <div class=\"sliding-text text-nowrap\" [style.color]=\"getTextColor(data?.styles?.headline?.color)\">\r\n {{item.inputText[0].value}}\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n <!-- Soft Transition Animation -->\r\n <div *ngIf=\"data?.styles?.headline?.headlineAnimationType == 'SoftTransition'\" class=\"soft-transition-wrapper\">\r\n <button class=\"carousel-btn carousel-btn--prev\"\r\n *ngIf=\"(data?.content?.listItem?.data?.length ?? 0) > 1\"\r\n [style.color]=\"getTextColor(data?.styles?.headline?.color)\"\r\n (click)=\"goToPrev()\">‹</button>\r\n <div class=\"list-container\">\r\n <ng-container *ngFor=\"let item of data?.content?.listItem?.data; let i = index\">\r\n <div class=\"list-item text-nowrap\"\r\n [ngClass]=\"getItemClass(i)\"\r\n [class.visible]=\"isItemVisible(i)\"\r\n [style.color]=\"getTextColor(data?.styles?.headline?.color)\">\r\n {{item.inputText[0].value}}\r\n </div>\r\n </ng-container>\r\n </div>\r\n <button class=\"carousel-btn carousel-btn--next\"\r\n *ngIf=\"(data?.content?.listItem?.data?.length ?? 0) > 1\"\r\n [style.color]=\"getTextColor(data?.styles?.headline?.color)\"\r\n (click)=\"goToNext()\">›</button>\r\n </div>\r\n\r\n <!-- No Effect -->\r\n <ng-container *ngIf=\"data?.styles?.headline?.headlineAnimationType == 'NoEffect'\">\r\n <ng-container *ngFor=\"let item of data?.content?.listItem?.data\">\r\n <div class=\"d-flex align-items-center justify-content-center w-100 text-nowrap\" \r\n [style.color]=\"getTextColor(data?.styles?.headline?.color)\">\r\n {{item.inputText[0].value}}\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- Existing hover elements -->\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</section>", styles: [".main-container{position:relative;height:auto}.hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.slider-wrapper{position:relative;overflow:hidden}.slider-track{display:flex;gap:2rem;height:20px;width:max-content;animation:scrollLeft 30s linear infinite;animation-play-state:running;will-change:transform}.slider-track:hover{animation-play-state:paused}.sliding-text{flex-shrink:0;white-space:nowrap;padding:0 1rem;position:relative}@keyframes scrollLeft{0%{transform:translate(100%)}to{transform:translate(-100%)}}.soft-transition-wrapper{display:flex;align-items:center;width:100%;gap:8px}.carousel-btn{background:none;border:none;cursor:pointer;font-size:20px;line-height:1;width:2%!important;padding:0 4px;opacity:.6;transition:opacity .2s ease;flex-shrink:0}.carousel-btn:hover{opacity:1}.list-container{position:relative;flex:1;height:20px;overflow:hidden;display:flex;align-items:center;justify-content:center}.list-item{position:absolute;width:100%;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .8s ease,transform .8s ease;text-align:center}.list-item.active{opacity:1;visibility:visible}.fade-in-left{animation:fadeInLeft .8s forwards}.fade-out-left{animation:fadeOutLeft .8s forwards}.fade-in-right{animation:fadeInRight .8s forwards}.fade-out-right{animation:fadeOutRight .8s forwards}@keyframes fadeInLeft{0%{opacity:0;transform:translate(-100px)}to{opacity:1;transform:translate(0)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-100px)}}@keyframes fadeInRight{0%{opacity:0;transform:translate(100px)}to{opacity:1;transform:translate(0)}}@keyframes fadeOutRight{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100px)}}\n"] }]
|
|
150
|
+
}], ctorParameters: () => [{ type: i1.EventsService }, { type: undefined, decorators: [{
|
|
151
|
+
type: Inject,
|
|
152
|
+
args: [PLATFORM_ID]
|
|
153
|
+
}] }], propDecorators: { data: [{
|
|
109
154
|
type: Input
|
|
110
155
|
}], edit: [{
|
|
111
156
|
type: Input
|
|
@@ -116,4 +161,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
116
161
|
}], index: [{
|
|
117
162
|
type: Input
|
|
118
163
|
}] } });
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92aW5nLXRleHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZWN0aW9ucy9tb3ZpbmctdGV4dC9tb3ZpbmctdGV4dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL21vdmluZy10ZXh0L21vdmluZy10ZXh0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWdCLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLFdBQVcsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHFEQUFxRCxDQUFDOzs7Ozs7QUFnQnZHLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxXQUFXO0lBZWxELFlBQW9CLGFBQTRCO1FBQzlDLEtBQUssRUFBRSxDQUFDO1FBRFUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFSaEQsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFDakIsa0JBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNuQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4Qix1QkFBa0IsR0FBcUIsTUFBTSxDQUFDO1FB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QkFBeUI7d0JBQ3pCLGNBQWM7d0JBQ2QsZ0NBQWdDO3FCQUNqQztrRkFLUSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBNb3ZpbmdUZXh0TW9kYWwgfSBmcm9tICcuL21vdmluZy10ZXh0Lm1vZGFsJztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgU2ltcG9FbGVtZW50c01vZHVsZSB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL2luZGV4JztcclxuaW1wb3J0IHsgU2ltcG9Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2luZGV4JztcclxuaW1wb3J0IHsgQmFja2dyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9iYWNrZ3JvdW5kLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNpbXBvSG92ZXJCb3JkZXJEaXJlY3RpdmUgfSBmcm9tIFwiLi4vLi4vZGlyZWN0aXZlL2hvdmVyYm9yZGVyLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFRleHRCYWNrZ3JvdW5kRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL3RleHQtYmFja2dyb3VuZC1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby1tb3ZpbmctdGV4dCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBTaW1wb0VsZW1lbnRzTW9kdWxlLFxyXG4gICAgU2ltcG9Db21wb25lbnRNb2R1bGUsXHJcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxyXG4gICAgU2ltcG9Ib3ZlckJvcmRlckRpcmVjdGl2ZSxcclxuICAgIEhvdmVyRGlyZWN0aXZlLFxyXG4gICAgVGV4dEJhY2tncm91bmREaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbW92aW5nLXRleHQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9tb3ZpbmctdGV4dC5jb21wb25lbnQuY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1vdmluZ1RleHRDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2VjdGlvbiB7XHJcbiAgQElucHV0KCkgZGF0YT86IGFueTtcclxuICBASW5wdXQoKSBlZGl0PzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkZWxldGU/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGluZGV4PzogbnVtYmVyO1xyXG5cclxuICBjdXJyZW50SW5kZXggPSAwO1xyXG4gIHByZXZpb3VzSW5kZXggPSAtMTtcclxuICBpc1RyYW5zaXRpb25pbmcgPSBmYWxzZTtcclxuICBhbmltYXRpb25EaXJlY3Rpb246ICdsZWZ0JyB8ICdyaWdodCcgPSAnbGVmdCc7XHJcbiAgcHJpdmF0ZSBpbnRlcnZhbDogYW55O1xyXG4gIHByaXZhdGUgYW5pbWF0aW9uRHVyYXRpb24gPSA4MDA7IC8vIE1hdGNoIENTUyBhbmltYXRpb24gZHVyYXRpb25cclxuICBwcml2YXRlIGRpc3BsYXlEdXJhdGlvbiA9IDMwMDA7IC8vIEhvdyBsb25nIGVhY2ggaXRlbSBzaG93c1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9ldmVudFNlcnZpY2U6IEV2ZW50c1NlcnZpY2UpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmRhdGE/LnN0eWxlcz8uaGVhZGxpbmU/LmhlYWRsaW5lQW5pbWF0aW9uVHlwZSA9PT0gJ1NvZnRUcmFuc2l0aW9uJyAmJlxyXG4gICAgICAgIHRoaXMuZGF0YT8uY29udGVudD8ubGlzdEl0ZW0/LmRhdGE/Lmxlbmd0aCkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnN0YXJ0QW5pbWF0aW9uQ3ljbGUoKTtcclxuICAgICAgfSwgMTAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuaW50ZXJ2YWwpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXJ0QW5pbWF0aW9uQ3ljbGUoKSB7XHJcbiAgICBpZiAoIXRoaXMuZGF0YT8uY29udGVudD8ubGlzdEl0ZW0/LmRhdGE/Lmxlbmd0aCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2xlYXIgYW55IGV4aXN0aW5nIGludGVydmFsXHJcbiAgICBpZiAodGhpcy5pbnRlcnZhbCkge1xyXG4gICAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY3VycmVudEluZGV4ID0gMDtcclxuICAgIHRoaXMucHJldmlvdXNJbmRleCA9IC0xO1xyXG4gICAgdGhpcy5hbmltYXRpb25EaXJlY3Rpb24gPSAncmlnaHQnOyAvLyBTdGFydCB3aXRoIHJpZ2h0IGFuaW1hdGlvblxyXG5cclxuICAgIHRoaXMuaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIHRoaXMudHJhbnNpdGlvblRvTmV4dCgpO1xyXG4gICAgfSwgdGhpcy5kaXNwbGF5RHVyYXRpb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0cmFuc2l0aW9uVG9OZXh0KCkge1xyXG4gICAgaWYgKHRoaXMuaXNUcmFuc2l0aW9uaW5nKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5pc1RyYW5zaXRpb25pbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5wcmV2aW91c0luZGV4ID0gdGhpcy5jdXJyZW50SW5kZXg7XHJcbiAgICBcclxuICAgIC8vIENhbGN1bGF0ZSBuZXh0IGluZGV4XHJcbiAgICB0aGlzLmN1cnJlbnRJbmRleCA9ICh0aGlzLmN1cnJlbnRJbmRleCArIDEpICUgdGhpcy5kYXRhIS5jb250ZW50IS5saXN0SXRlbSEuZGF0YSEubGVuZ3RoO1xyXG4gICAgXHJcbiAgICAvLyBBbHRlcm5hdGUgZGlyZWN0aW9uIGZvciB2YXJpZXR5XHJcbiAgICB0aGlzLmFuaW1hdGlvbkRpcmVjdGlvbiA9IHRoaXMuYW5pbWF0aW9uRGlyZWN0aW9uID09PSAnbGVmdCcgPyAncmlnaHQnIDogJ2xlZnQnO1xyXG5cclxuICAgIC8vIFJlc2V0IHRyYW5zaXRpb24gZmxhZyBhZnRlciBhbmltYXRpb24gY29tcGxldGVzXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5pc1RyYW5zaXRpb25pbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5wcmV2aW91c0luZGV4ID0gLTE7XHJcbiAgICB9LCB0aGlzLmFuaW1hdGlvbkR1cmF0aW9uKTtcclxuICB9XHJcblxyXG4gIC8vIE1ldGhvZCB0byBjaGVjayBpZiBpdGVtIHNob3VsZCBiZSB2aXNpYmxlXHJcbiAgaXNJdGVtVmlzaWJsZShpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gaW5kZXggPT09IHRoaXMuY3VycmVudEluZGV4IHx8IGluZGV4ID09PSB0aGlzLnByZXZpb3VzSW5kZXg7XHJcbiAgfVxyXG5cclxuICAvLyBNZXRob2QgdG8gZ2V0IGFuaW1hdGlvbiBjbGFzcyBmb3IgaXRlbVxyXG4gIGdldEl0ZW1DbGFzcyhpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmIChpbmRleCA9PT0gdGhpcy5jdXJyZW50SW5kZXgpIHtcclxuICAgICAgcmV0dXJuIGBhY3RpdmUgZmFkZS1pbi0ke3RoaXMuYW5pbWF0aW9uRGlyZWN0aW9ufWA7XHJcbiAgICB9IGVsc2UgaWYgKGluZGV4ID09PSB0aGlzLnByZXZpb3VzSW5kZXggJiYgdGhpcy5pc1RyYW5zaXRpb25pbmcpIHtcclxuICAgICAgcmV0dXJuIGBmYWRlLW91dC0ke3RoaXMuYW5pbWF0aW9uRGlyZWN0aW9uID09PSAnbGVmdCcgPyAncmlnaHQnIDogJ2xlZnQnfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBnZXRUZXh0Q29sb3IoYmdDb2xvcjogc3RyaW5nKSB7XHJcbiAgICBpZiAoYmdDb2xvcikge1xyXG4gICAgICBjb25zdCB0aHJlc2hvbGQgPSAxMzA7XHJcbiAgICAgIGNvbnN0IHIgPSBwYXJzZUludChiZ0NvbG9yLnNsaWNlKDEsIDMpLCAxNik7XHJcbiAgICAgIGNvbnN0IGcgPSBwYXJzZUludChiZ0NvbG9yLnNsaWNlKDMsIDUpLCAxNik7XHJcbiAgICAgIGNvbnN0IGIgPSBwYXJzZUludChiZ0NvbG9yLnNsaWNlKDUsIDcpLCAxNik7XHJcbiAgICAgIGNvbnN0IGJyaWdodG5lc3MgPSAociAqIDI5OSArIGcgKiA1ODcgKyBiICogMTE0KSAvIDEwMDA7XHJcbiAgICAgIHJldHVybiBicmlnaHRuZXNzID4gdGhyZXNob2xkID8gJyMwMDAwMDAnIDogJyNmZmZmZmYnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFwiI2ZmZmZmZlwiO1xyXG4gIH1cclxufSIsIjxzZWN0aW9uIGNsYXNzPVwibWFpbi1jb250YWluZXJcIiBzaW1wb0hvdmVyIChob3ZlcmluZyk9XCJzaG93RWRpdFRhYnMoJGV2ZW50KVwiIFtpZF09XCJkYXRhPy5pZFwiIFthdHRyLnN0eWxlXT1cImN1c3RvbUNsYXNzXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2xpZGVyLXdyYXBwZXIgcHgtMiBweS0yIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIlxyXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImRhdGE/LnN0eWxlcz8uaGVhZGxpbmU/LmNvbG9yID8gZGF0YT8uc3R5bGVzPy5oZWFkbGluZT8uY29sb3IgOiBkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmNvbG9yXCI+XHJcbiAgICAgICAgPCEtLSBJbmZpbml0ZSBTY3JvbGwgQW5pbWF0aW9uIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZXItdHJhY2sgdy0xMDAgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZGF0YT8uc3R5bGVzPy5oZWFkbGluZT8uaGVhZGxpbmVBbmltYXRpb25UeXBlID09ICdJbmZpbml0ZVNjcm9sbCdcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhPy5jb250ZW50Py5saXN0SXRlbT8uZGF0YTsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRpbmctdGV4dCB0ZXh0LW5vd3JhcFwiIFtzdHlsZS5jb2xvcl09XCJnZXRUZXh0Q29sb3IoZGF0YT8uc3R5bGVzPy5oZWFkbGluZT8uY29sb3IpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3tpdGVtLmlucHV0VGV4dFswXS52YWx1ZX19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPCEtLSBTb2Z0IFRyYW5zaXRpb24gQW5pbWF0aW9uIC0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJkYXRhPy5zdHlsZXM/LmhlYWRsaW5lPy5oZWFkbGluZUFuaW1hdGlvblR5cGUgPT0gJ1NvZnRUcmFuc2l0aW9uJ1wiIGNsYXNzPVwibGlzdC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhPy5jb250ZW50Py5saXN0SXRlbT8uZGF0YTsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtaXRlbSB0ZXh0LW5vd3JhcFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXRJdGVtQ2xhc3MoaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbY2xhc3MudmlzaWJsZV09XCJpc0l0ZW1WaXNpYmxlKGkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImdldFRleHRDb2xvcihkYXRhPy5zdHlsZXM/LmhlYWRsaW5lPy5jb2xvcilcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2l0ZW0uaW5wdXRUZXh0WzBdLnZhbHVlfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBObyBFZmZlY3QgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGE/LnN0eWxlcz8uaGVhZGxpbmU/LmhlYWRsaW5lQW5pbWF0aW9uVHlwZSA9PSAnTm9FZmZlY3QnXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YT8uY29udGVudD8ubGlzdEl0ZW0/LmRhdGFcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgdy0xMDAgdGV4dC1ub3dyYXBcIiBcclxuICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImdldFRleHRDb2xvcihkYXRhPy5zdHlsZXM/LmhlYWRsaW5lPy5jb2xvcilcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2l0ZW0uaW5wdXRUZXh0WzBdLnZhbHVlfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gRXhpc3RpbmcgaG92ZXIgZWxlbWVudHMgLS0+XHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICAgICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICAgICAgPHNpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50IFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIj48L3NpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50PlxyXG4gICAgPC9kaXY+XHJcbjwvc2VjdGlvbj4iXX0=
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92aW5nLXRleHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZWN0aW9ucy9tb3ZpbmctdGV4dC9tb3ZpbmctdGV4dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL21vdmluZy10ZXh0L21vdmluZy10ZXh0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sV0FBVyxNQUFNLGdCQUFnQixDQUFDO0FBR3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNsRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDekUsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0scURBQXFELENBQUM7Ozs7OztBQWdCdkcsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFdBQVc7SUFlbEQsWUFBb0IsYUFBNEIsRUFDakIsVUFBa0I7UUFFL0MsS0FBSyxFQUFFLENBQUM7UUFIVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUNqQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBVGpELGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLGtCQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbkIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsdUJBQWtCLEdBQXFCLE1BQU0sQ0FBQztRQUV0QyxzQkFBaUIsR0FBRyxHQUFHLENBQUMsQ0FBQywrQkFBK0I7UUFDeEQsb0JBQWUsR0FBRyxJQUFJLENBQUMsQ0FBQywyQkFBMkI7SUFNM0QsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixLQUFLLGdCQUFnQjtnQkFDekUsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDN0MsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDZCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDN0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ1YsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBR0QsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDaEQsT0FBTztRQUNULENBQUM7UUFFRCw4QkFBOEI7UUFDOUIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsT0FBTyxDQUFDLENBQUMsNkJBQTZCO1FBRWhFLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUMvQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMxQixDQUFDLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxJQUFJLENBQUMsZUFBZTtZQUFFLE9BQU87UUFFakMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBRXZDLHVCQUF1QjtRQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSyxDQUFDLE9BQVEsQ0FBQyxRQUFTLENBQUMsSUFBSyxDQUFDLE1BQU0sQ0FBQztRQUV6RixrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBRWhGLGtEQUFrRDtRQUNsRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7WUFDN0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQixDQUFDLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO1lBQy9CLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzFCLENBQUMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxlQUFlO1lBQUUsT0FBTztRQUNqQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN2QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSyxDQUFDLE9BQVEsQ0FBQyxRQUFTLENBQUMsSUFBSyxDQUFDLE1BQU0sQ0FBQztRQUN2RCxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ3hELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxPQUFPLENBQUM7UUFDbEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQzdCLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDeEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLENBQUMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLGVBQWU7WUFBRSxPQUFPO1FBQ2pDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3ZDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFLLENBQUMsT0FBUSxDQUFDLFFBQVMsQ0FBQyxJQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNsRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsTUFBTSxDQUFDO1FBQ2pDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixDQUFDLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELDRDQUE0QztJQUM1QyxhQUFhLENBQUMsS0FBYTtRQUN6QixPQUFPLEtBQUssS0FBSyxJQUFJLENBQUMsWUFBWSxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ3JFLENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsWUFBWSxDQUFDLEtBQWE7UUFDeEIsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLGVBQWU7Z0JBQ3pCLENBQUMsQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLGtCQUFrQixFQUFFO2dCQUM3QyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ2YsQ0FBQzthQUFNLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ2hFLE9BQU8sWUFBWSxJQUFJLENBQUMsa0JBQWtCLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzdFLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxZQUFZLENBQUMsT0FBZTtRQUMxQixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDO1lBQ3RCLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM1QyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDNUMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDeEQsT0FBTyxVQUFVLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN4RCxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQzsrR0E3SVUsbUJBQW1CLCtDQWdCcEIsV0FBVzttR0FoQlYsbUJBQW1CLDBNQzFCaEMsNnRHQXFEVSxteUREdENOLFlBQVksNlZBQ1osbUJBQW1CLDhCQUNuQixvQkFBb0Isb1dBR3BCLGNBQWM7OzRGQU1MLG1CQUFtQjtrQkFmL0IsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIseUJBQXlCO3dCQUN6QixjQUFjO3dCQUNkLGdDQUFnQztxQkFDakM7OzBCQW9CRSxNQUFNOzJCQUFDLFdBQVc7eUNBZlosSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IEJhc2VTZWN0aW9uIGZyb20gJy4uL0Jhc2VTZWN0aW9uJztcclxuaW1wb3J0IHsgTW92aW5nVGV4dE1vZGFsIH0gZnJvbSAnLi9tb3ZpbmctdGV4dC5tb2RhbCc7XHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBTaW1wb0VsZW1lbnRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBTaW1wb0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBCYWNrZ3JvdW5kRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2JhY2tncm91bmQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2ltcG9Ib3ZlckJvcmRlckRpcmVjdGl2ZSB9IGZyb20gXCIuLi8uLi9kaXJlY3RpdmUvaG92ZXJib3JkZXIuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgVGV4dEJhY2tncm91bmREaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvdGV4dC1iYWNrZ3JvdW5kLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLW1vdmluZy10ZXh0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFNpbXBvRWxlbWVudHNNb2R1bGUsXHJcbiAgICBTaW1wb0NvbXBvbmVudE1vZHVsZSxcclxuICAgIEJhY2tncm91bmREaXJlY3RpdmUsXHJcbiAgICBTaW1wb0hvdmVyQm9yZGVyRGlyZWN0aXZlLFxyXG4gICAgSG92ZXJEaXJlY3RpdmUsXHJcbiAgICBUZXh0QmFja2dyb3VuZERpcmVjdGl2ZURpcmVjdGl2ZSxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tb3ZpbmctdGV4dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL21vdmluZy10ZXh0LmNvbXBvbmVudC5jc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTW92aW5nVGV4dENvbXBvbmVudCBleHRlbmRzIEJhc2VTZWN0aW9uIHtcclxuICBASW5wdXQoKSBkYXRhPzogYW55O1xyXG4gIEBJbnB1dCgpIGVkaXQ/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGRlbGV0ZT86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3M/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaW5kZXg/OiBudW1iZXI7XHJcblxyXG4gIGN1cnJlbnRJbmRleCA9IDA7XHJcbiAgcHJldmlvdXNJbmRleCA9IC0xO1xyXG4gIGlzVHJhbnNpdGlvbmluZyA9IGZhbHNlO1xyXG4gIGFuaW1hdGlvbkRpcmVjdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JyA9ICdsZWZ0JztcclxuICBwcml2YXRlIGludGVydmFsOiBhbnk7XHJcbiAgcHJpdmF0ZSBhbmltYXRpb25EdXJhdGlvbiA9IDgwMDsgLy8gTWF0Y2ggQ1NTIGFuaW1hdGlvbiBkdXJhdGlvblxyXG4gIHByaXZhdGUgZGlzcGxheUR1cmF0aW9uID0gMzAwMDsgLy8gSG93IGxvbmcgZWFjaCBpdGVtIHNob3dzXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2V2ZW50U2VydmljZTogRXZlbnRzU2VydmljZSxcclxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogb2JqZWN0XHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICBpZiAodGhpcy5kYXRhPy5zdHlsZXM/LmhlYWRsaW5lPy5oZWFkbGluZUFuaW1hdGlvblR5cGUgPT09ICdTb2Z0VHJhbnNpdGlvbicgJiZcclxuICAgICAgICB0aGlzLmRhdGE/LmNvbnRlbnQ/Lmxpc3RJdGVtPy5kYXRhPy5sZW5ndGgpIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuc3RhcnRBbmltYXRpb25DeWNsZSgpO1xyXG4gICAgICAgIH0sIDEwMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLmludGVydmFsKSB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGFydEFuaW1hdGlvbkN5Y2xlKCkge1xyXG4gICAgaWYgKCF0aGlzLmRhdGE/LmNvbnRlbnQ/Lmxpc3RJdGVtPy5kYXRhPy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENsZWFyIGFueSBleGlzdGluZyBpbnRlcnZhbFxyXG4gICAgaWYgKHRoaXMuaW50ZXJ2YWwpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmN1cnJlbnRJbmRleCA9IDA7XHJcbiAgICB0aGlzLnByZXZpb3VzSW5kZXggPSAtMTtcclxuICAgIHRoaXMuYW5pbWF0aW9uRGlyZWN0aW9uID0gJ3JpZ2h0JzsgLy8gU3RhcnQgd2l0aCByaWdodCBhbmltYXRpb25cclxuXHJcbiAgICB0aGlzLmludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICB0aGlzLnRyYW5zaXRpb25Ub05leHQoKTtcclxuICAgIH0sIHRoaXMuZGlzcGxheUR1cmF0aW9uKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdHJhbnNpdGlvblRvTmV4dCgpIHtcclxuICAgIGlmICh0aGlzLmlzVHJhbnNpdGlvbmluZykgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuaXNUcmFuc2l0aW9uaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMucHJldmlvdXNJbmRleCA9IHRoaXMuY3VycmVudEluZGV4O1xyXG5cclxuICAgIC8vIENhbGN1bGF0ZSBuZXh0IGluZGV4XHJcbiAgICB0aGlzLmN1cnJlbnRJbmRleCA9ICh0aGlzLmN1cnJlbnRJbmRleCArIDEpICUgdGhpcy5kYXRhIS5jb250ZW50IS5saXN0SXRlbSEuZGF0YSEubGVuZ3RoO1xyXG5cclxuICAgIC8vIEFsdGVybmF0ZSBkaXJlY3Rpb24gZm9yIHZhcmlldHlcclxuICAgIHRoaXMuYW5pbWF0aW9uRGlyZWN0aW9uID0gdGhpcy5hbmltYXRpb25EaXJlY3Rpb24gPT09ICdsZWZ0JyA/ICdyaWdodCcgOiAnbGVmdCc7XHJcblxyXG4gICAgLy8gUmVzZXQgdHJhbnNpdGlvbiBmbGFnIGFmdGVyIGFuaW1hdGlvbiBjb21wbGV0ZXNcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmlzVHJhbnNpdGlvbmluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnByZXZpb3VzSW5kZXggPSAtMTtcclxuICAgIH0sIHRoaXMuYW5pbWF0aW9uRHVyYXRpb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXN0YXJ0QXV0b1BsYXkoKSB7XHJcbiAgICBpZiAodGhpcy5pbnRlcnZhbCkgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTtcclxuICAgIHRoaXMuaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIHRoaXMudHJhbnNpdGlvblRvTmV4dCgpO1xyXG4gICAgfSwgdGhpcy5kaXNwbGF5RHVyYXRpb24pO1xyXG4gIH1cclxuXHJcbiAgZ29Ub1ByZXYoKSB7XHJcbiAgICBpZiAodGhpcy5pc1RyYW5zaXRpb25pbmcpIHJldHVybjtcclxuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XHJcbiAgICB0aGlzLmlzVHJhbnNpdGlvbmluZyA9IHRydWU7XHJcbiAgICB0aGlzLnByZXZpb3VzSW5kZXggPSB0aGlzLmN1cnJlbnRJbmRleDtcclxuICAgIGNvbnN0IGxlbiA9IHRoaXMuZGF0YSEuY29udGVudCEubGlzdEl0ZW0hLmRhdGEhLmxlbmd0aDtcclxuICAgIHRoaXMuY3VycmVudEluZGV4ID0gKHRoaXMuY3VycmVudEluZGV4IC0gMSArIGxlbikgJSBsZW47XHJcbiAgICB0aGlzLmFuaW1hdGlvbkRpcmVjdGlvbiA9ICdyaWdodCc7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5pc1RyYW5zaXRpb25pbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5wcmV2aW91c0luZGV4ID0gLTE7XHJcbiAgICAgIHRoaXMucmVzdGFydEF1dG9QbGF5KCk7XHJcbiAgICB9LCB0aGlzLmFuaW1hdGlvbkR1cmF0aW9uKTtcclxuICB9XHJcblxyXG4gIGdvVG9OZXh0KCkge1xyXG4gICAgaWYgKHRoaXMuaXNUcmFuc2l0aW9uaW5nKSByZXR1cm47XHJcbiAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpO1xyXG4gICAgdGhpcy5pc1RyYW5zaXRpb25pbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5wcmV2aW91c0luZGV4ID0gdGhpcy5jdXJyZW50SW5kZXg7XHJcbiAgICBjb25zdCBsZW4gPSB0aGlzLmRhdGEhLmNvbnRlbnQhLmxpc3RJdGVtIS5kYXRhIS5sZW5ndGg7XHJcbiAgICB0aGlzLmN1cnJlbnRJbmRleCA9ICh0aGlzLmN1cnJlbnRJbmRleCArIDEpICUgbGVuO1xyXG4gICAgdGhpcy5hbmltYXRpb25EaXJlY3Rpb24gPSAnbGVmdCc7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5pc1RyYW5zaXRpb25pbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5wcmV2aW91c0luZGV4ID0gLTE7XHJcbiAgICAgIHRoaXMucmVzdGFydEF1dG9QbGF5KCk7XHJcbiAgICB9LCB0aGlzLmFuaW1hdGlvbkR1cmF0aW9uKTtcclxuICB9XHJcblxyXG4gIC8vIE1ldGhvZCB0byBjaGVjayBpZiBpdGVtIHNob3VsZCBiZSB2aXNpYmxlXHJcbiAgaXNJdGVtVmlzaWJsZShpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gaW5kZXggPT09IHRoaXMuY3VycmVudEluZGV4IHx8IGluZGV4ID09PSB0aGlzLnByZXZpb3VzSW5kZXg7XHJcbiAgfVxyXG5cclxuICAvLyBNZXRob2QgdG8gZ2V0IGFuaW1hdGlvbiBjbGFzcyBmb3IgaXRlbVxyXG4gIGdldEl0ZW1DbGFzcyhpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmIChpbmRleCA9PT0gdGhpcy5jdXJyZW50SW5kZXgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaXNUcmFuc2l0aW9uaW5nXHJcbiAgICAgICAgPyBgYWN0aXZlIGZhZGUtaW4tJHt0aGlzLmFuaW1hdGlvbkRpcmVjdGlvbn1gXHJcbiAgICAgICAgOiAnYWN0aXZlJztcclxuICAgIH0gZWxzZSBpZiAoaW5kZXggPT09IHRoaXMucHJldmlvdXNJbmRleCAmJiB0aGlzLmlzVHJhbnNpdGlvbmluZykge1xyXG4gICAgICByZXR1cm4gYGZhZGUtb3V0LSR7dGhpcy5hbmltYXRpb25EaXJlY3Rpb24gPT09ICdsZWZ0JyA/ICdyaWdodCcgOiAnbGVmdCd9YDtcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIGdldFRleHRDb2xvcihiZ0NvbG9yOiBzdHJpbmcpIHtcclxuICAgIGlmIChiZ0NvbG9yKSB7XHJcbiAgICAgIGNvbnN0IHRocmVzaG9sZCA9IDEzMDtcclxuICAgICAgY29uc3QgciA9IHBhcnNlSW50KGJnQ29sb3Iuc2xpY2UoMSwgMyksIDE2KTtcclxuICAgICAgY29uc3QgZyA9IHBhcnNlSW50KGJnQ29sb3Iuc2xpY2UoMywgNSksIDE2KTtcclxuICAgICAgY29uc3QgYiA9IHBhcnNlSW50KGJnQ29sb3Iuc2xpY2UoNSwgNyksIDE2KTtcclxuICAgICAgY29uc3QgYnJpZ2h0bmVzcyA9IChyICogMjk5ICsgZyAqIDU4NyArIGIgKiAxMTQpIC8gMTAwMDtcclxuICAgICAgcmV0dXJuIGJyaWdodG5lc3MgPiB0aHJlc2hvbGQgPyAnIzAwMDAwMCcgOiAnI2ZmZmZmZic7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gXCIjZmZmZmZmXCI7XHJcbiAgfVxyXG59IiwiPHNlY3Rpb24gY2xhc3M9XCJtYWluLWNvbnRhaW5lclwiIHNpbXBvSG92ZXIgKGhvdmVyaW5nKT1cInNob3dFZGl0VGFicygkZXZlbnQpXCIgW2lkXT1cImRhdGE/LmlkXCIgW2F0dHIuc3R5bGVdPVwiY3VzdG9tQ2xhc3NcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzbGlkZXItd3JhcHBlciBweC0yIHB5LTIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwiZGF0YT8uc3R5bGVzPy5oZWFkbGluZT8uY29sb3IgPyBkYXRhPy5zdHlsZXM/LmhlYWRsaW5lPy5jb2xvciA6IGRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uY29sb3JcIj5cclxuICAgICAgICA8IS0tIEluZmluaXRlIFNjcm9sbCBBbmltYXRpb24gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlci10cmFjayB3LTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJkYXRhPy5zdHlsZXM/LmhlYWRsaW5lPy5oZWFkbGluZUFuaW1hdGlvblR5cGUgPT0gJ0luZmluaXRlU2Nyb2xsJ1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGE/LmNvbnRlbnQ/Lmxpc3RJdGVtPy5kYXRhOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2xpZGluZy10ZXh0IHRleHQtbm93cmFwXCIgW3N0eWxlLmNvbG9yXT1cImdldFRleHRDb2xvcihkYXRhPy5zdHlsZXM/LmhlYWRsaW5lPy5jb2xvcilcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2l0ZW0uaW5wdXRUZXh0WzBdLnZhbHVlfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICBcclxuICAgICAgICA8IS0tIFNvZnQgVHJhbnNpdGlvbiBBbmltYXRpb24gLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImRhdGE/LnN0eWxlcz8uaGVhZGxpbmU/LmhlYWRsaW5lQW5pbWF0aW9uVHlwZSA9PSAnU29mdFRyYW5zaXRpb24nXCIgY2xhc3M9XCJzb2Z0LXRyYW5zaXRpb24td3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2Fyb3VzZWwtYnRuIGNhcm91c2VsLWJ0bi0tcHJldlwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZGF0YT8uY29udGVudD8ubGlzdEl0ZW0/LmRhdGE/Lmxlbmd0aCA/PyAwKSA+IDFcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJnZXRUZXh0Q29sb3IoZGF0YT8uc3R5bGVzPy5oZWFkbGluZT8uY29sb3IpXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1ByZXYoKVwiPiYjODI0OTs8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGE/LmNvbnRlbnQ/Lmxpc3RJdGVtPy5kYXRhOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtaXRlbSB0ZXh0LW5vd3JhcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXRJdGVtQ2xhc3MoaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnZpc2libGVdPVwiaXNJdGVtVmlzaWJsZShpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiZ2V0VGV4dENvbG9yKGRhdGE/LnN0eWxlcz8uaGVhZGxpbmU/LmNvbG9yKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0uaW5wdXRUZXh0WzBdLnZhbHVlfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhcm91c2VsLWJ0biBjYXJvdXNlbC1idG4tLW5leHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGRhdGE/LmNvbnRlbnQ/Lmxpc3RJdGVtPy5kYXRhPy5sZW5ndGggPz8gMCkgPiAxXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiZ2V0VGV4dENvbG9yKGRhdGE/LnN0eWxlcz8uaGVhZGxpbmU/LmNvbG9yKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9OZXh0KClcIj4mIzgyNTA7PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gTm8gRWZmZWN0IC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhPy5zdHlsZXM/LmhlYWRsaW5lPy5oZWFkbGluZUFuaW1hdGlvblR5cGUgPT0gJ05vRWZmZWN0J1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGE/LmNvbnRlbnQ/Lmxpc3RJdGVtPy5kYXRhXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHctMTAwIHRleHQtbm93cmFwXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJnZXRUZXh0Q29sb3IoZGF0YT8uc3R5bGVzPy5oZWFkbGluZT8uY29sb3IpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3tpdGVtLmlucHV0VGV4dFswXS52YWx1ZX19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEV4aXN0aW5nIGhvdmVyIGVsZW1lbnRzIC0tPlxyXG4gICAgPGRpdiBbbmdDbGFzc109XCJ7J2hvdmVyX2VmZmVjdCc6IGVkaXR9XCIgKm5nSWY9XCJzaG93RWRpdG9yc1wiPlxyXG4gICAgICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0RlbGV0ZVwiIFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZGVsZXRlfVwiPlxyXG4gICAgICAgIDxzaW1wby1kZWxldGUtaG92ZXItZWxlbWVudCBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCI+PC9zaW1wby1kZWxldGUtaG92ZXItZWxlbWVudD5cclxuICAgIDwvZGl2PlxyXG48L3NlY3Rpb24+Il19
|