libey-ng-component-library 0.0.29 → 0.0.31

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,184 @@
1
+ import { Component, Input, Output, EventEmitter, ViewChild } from '@angular/core';
2
+ import { CpmIndicatorMode, CpmItemType, DEFAULT_THRESHOLDS, ZONE_COLORS, } from '../../utils/CpmIndicator/cpm-indicator-types';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class LibeyNgCpmIndicatorComponent {
6
+ constructor() {
7
+ /** Tope máximo del contrato. */
8
+ this.limit = 250;
9
+ /**
10
+ * Ítems de gasto. El padre es responsable de:
11
+ * - Excluir ítems que no aplican al CPM
12
+ * - Marcar cada uno con CpmItemType.Base o CpmItemType.Projected
13
+ * - Actualizar el array al agregar o eliminar
14
+ */
15
+ this.items = [];
16
+ /** Símbolo de moneda. Por defecto 's/' (sol peruano). */
17
+ this.currency = 's/';
18
+ /** Modo de visualización: CPM (solo gauge) o Gauge (montos + leyenda). */
19
+ this.mode = CpmIndicatorMode.Cpm;
20
+ /** Activa sliders de prueba. Solo para desarrollo, nunca en producción. */
21
+ this.devMode = false;
22
+ // ── Outputs ──
23
+ /** Emite el resumen de montos en cada recalculo. Usar para persistir en BD. */
24
+ this.cpmChange = new EventEmitter();
25
+ /** Emite true cuando la proyección supera el límite. */
26
+ this.limitExceeded = new EventEmitter();
27
+ this.scale = 1;
28
+ // ── Propiedades del template ──
29
+ this.baseAmount = 0;
30
+ this.projectedAmount = 0;
31
+ this.totalAmount = 0;
32
+ this.excess = 0;
33
+ this.activeColors = ZONE_COLORS['zone1'];
34
+ this.trackArcPath = '';
35
+ this.baseArcPath = '';
36
+ this.totalArcPath = '';
37
+ this.dotBasePos = { x: 0, y: 0 };
38
+ this.dotTotalPos = { x: 0, y: 0 };
39
+ this.dotTotalVisible = false;
40
+ this.limitTextPos = { x: 0, y: 0 };
41
+ // ── devMode ──
42
+ this.sliderBase = 0;
43
+ this.sliderProjected = 0;
44
+ // Necesario para usar el enum en el template
45
+ this.CpmIndicatorMode = CpmIndicatorMode;
46
+ // Geometría del SVG (coordenadas internas del viewBox 220x130)
47
+ this.CX = 110;
48
+ this.CY = 115;
49
+ this.R = 90;
50
+ this.ANGLE_START = Math.PI;
51
+ this.ANGLE_END = 0;
52
+ this.EXCESS_TOLERANCE = 0.005;
53
+ }
54
+ get sliderMax() {
55
+ return this.limit * 1.5;
56
+ }
57
+ ngOnInit() {
58
+ this.recalculate();
59
+ }
60
+ ngOnChanges(changes) {
61
+ if (changes['items'] || changes['limit'] || changes['thresholds']) {
62
+ this.recalculate();
63
+ }
64
+ }
65
+ onDevBaseChange(event) {
66
+ this.sliderBase = parseFloat(event.target.value);
67
+ if (this.sliderBase > this.sliderProjected) {
68
+ this.sliderProjected = this.sliderBase;
69
+ }
70
+ this.recalculateFromSliders();
71
+ }
72
+ onDevProjectedChange(event) {
73
+ this.sliderProjected = parseFloat(event.target.value);
74
+ if (this.sliderProjected < this.sliderBase) {
75
+ this.sliderProjected = this.sliderBase;
76
+ }
77
+ this.recalculateFromSliders();
78
+ }
79
+ // Flujo de producción: calcula a partir del array de items
80
+ recalculate() {
81
+ this.baseAmount = this.items
82
+ .filter(i => i.type === CpmItemType.Base)
83
+ .reduce((acc, i) => acc + i.amount, 0);
84
+ this.projectedAmount = this.items
85
+ .filter(i => i.type === CpmItemType.Projected)
86
+ .reduce((acc, i) => acc + i.amount, 0);
87
+ this.totalAmount = this.baseAmount + this.projectedAmount;
88
+ // Sincroniza sliders por si se activa devMode
89
+ this.sliderBase = this.baseAmount;
90
+ this.sliderProjected = this.totalAmount;
91
+ this.updateGauge();
92
+ this.emitSummary();
93
+ }
94
+ // Flujo de devMode: calcula a partir de los sliders
95
+ recalculateFromSliders() {
96
+ this.baseAmount = this.sliderBase;
97
+ this.projectedAmount = this.sliderProjected - this.sliderBase;
98
+ this.totalAmount = this.sliderProjected;
99
+ this.updateGauge();
100
+ this.emitSummary();
101
+ }
102
+ updateGauge() {
103
+ var _a;
104
+ const thresholds = (_a = this.thresholds) !== null && _a !== void 0 ? _a : DEFAULT_THRESHOLDS;
105
+ this.activeColors = this.getZoneColors(this.totalAmount, thresholds);
106
+ this.trackArcPath = this.buildArcPath(this.ANGLE_START, this.ANGLE_END);
107
+ this.totalArcPath = this.buildArcPath(this.ANGLE_START, this.valueToAngle(this.totalAmount));
108
+ this.baseArcPath = this.buildArcPath(this.ANGLE_START, this.valueToAngle(this.baseAmount));
109
+ this.dotBasePos = this.polar(this.valueToAngle(this.baseAmount));
110
+ this.dotTotalPos = this.polar(this.valueToAngle(this.totalAmount));
111
+ // El punto de proyección solo aparece si va delante del real y no llegó al borde
112
+ this.dotTotalVisible = this.totalAmount > this.baseAmount && this.totalAmount < this.limit;
113
+ this.limitTextPos = this.polar(this.ANGLE_END, this.R + 20);
114
+ this.excess = Math.max(0, this.totalAmount - this.limit);
115
+ this.limitExceeded.emit(this.excess > this.EXCESS_TOLERANCE);
116
+ }
117
+ emitSummary() {
118
+ this.cpmChange.emit({
119
+ baseAmount: this.baseAmount,
120
+ projectedAmount: this.projectedAmount,
121
+ totalAmount: this.totalAmount,
122
+ limit: this.limit,
123
+ });
124
+ }
125
+ // Clampea el valor al límite para que el arco no desborde visualmente
126
+ valueToAngle(value) {
127
+ const clamped = Math.min(value, this.limit);
128
+ return Math.PI - (clamped / this.limit) * Math.PI;
129
+ }
130
+ polar(angle, radius = this.R) {
131
+ return {
132
+ x: this.CX + radius * Math.cos(angle),
133
+ y: this.CY - radius * Math.sin(angle),
134
+ };
135
+ }
136
+ buildArcPath(a1, a2) {
137
+ const start = this.polar(a1);
138
+ const end = this.polar(a2);
139
+ const large = (a1 - a2) > Math.PI ? 1 : 0;
140
+ return `M ${start.x} ${start.y} A ${this.R} ${this.R} 0 ${large} 1 ${end.x} ${end.y}`;
141
+ }
142
+ getZoneColors(value, t) {
143
+ const pct = value / this.limit;
144
+ if (pct < t.zone1Max)
145
+ return ZONE_COLORS['zone1'];
146
+ if (pct < t.zone2Max)
147
+ return ZONE_COLORS['zone2'];
148
+ if (pct < t.zone3Max)
149
+ return ZONE_COLORS['zone3'];
150
+ return ZONE_COLORS['zone4'];
151
+ }
152
+ }
153
+ LibeyNgCpmIndicatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: LibeyNgCpmIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
154
+ LibeyNgCpmIndicatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: LibeyNgCpmIndicatorComponent, selector: "lib-libey-ng-cpm-indicator", inputs: { limit: "limit", items: "items", currency: "currency", thresholds: "thresholds", mode: "mode", devMode: "devMode", scale: "scale" }, outputs: { cpmChange: "cpmChange", limitExceeded: "limitExceeded" }, viewQueries: [{ propertyName: "cpmLegend", first: true, predicate: ["cpmLegend"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- Modo CPM: solo el gauge con \"CPM\" en el centro -->\r\n<ng-container *ngIf=\"mode === CpmIndicatorMode.Cpm\">\r\n <div class=\"gauge-wrap\" [style.width.px]=\"220 * scale\" [style.height.px]=\"120 * scale\">\r\n <svg class=\"gauge-svg\" viewBox=\"0 0 220 130\" xmlns=\"http://www.w3.org/2000/svg\"\r\n [style.width.px]=\"220 * scale\"\r\n [style.height.px]=\"135 * scale\">\r\n <defs>\r\n <filter id=\"dotShadowCpm\" x=\"-60%\" y=\"-60%\" width=\"220%\" height=\"220%\">\r\n <feDropShadow dx=\"0\" dy=\"1\" stdDeviation=\"2\" flood-color=\"rgba(0,0,0,0.22)\"/>\r\n </filter>\r\n </defs>\r\n\r\n <path [attr.d]=\"trackArcPath\" fill=\"none\" stroke=\"#e8ecf5\" stroke-width=\"14\" stroke-linecap=\"round\"/>\r\n\r\n <!-- Proyecci\u00F3n debajo, real encima -->\r\n <path\r\n [style.display]=\"totalAmount > 0 ? '' : 'none'\"\r\n [attr.d]=\"totalArcPath\"\r\n [attr.stroke]=\"activeColors.light\"\r\n fill=\"none\" stroke-width=\"14\" stroke-linecap=\"round\"/>\r\n\r\n <path\r\n [style.display]=\"baseAmount > 0 ? '' : 'none'\"\r\n [attr.d]=\"baseArcPath\"\r\n [attr.stroke]=\"activeColors.dark\"\r\n fill=\"none\" stroke-width=\"14\" stroke-linecap=\"round\"/>\r\n\r\n <circle\r\n [style.display]=\"baseAmount > 0 ? '' : 'none'\"\r\n [attr.cx]=\"dotBasePos.x\" [attr.cy]=\"dotBasePos.y\"\r\n r=\"7\" [attr.fill]=\"activeColors.dark\"\r\n stroke=\"#ffffff\" stroke-width=\"2.5\"\r\n filter=\"url(#dotShadowCpm)\"/>\r\n\r\n <!-- Solo visible si la proyecci\u00F3n va por delante del real -->\r\n <circle\r\n [style.display]=\"dotTotalVisible ? '' : 'none'\"\r\n [attr.cx]=\"dotTotalPos.x\" [attr.cy]=\"dotTotalPos.y\"\r\n r=\"6\" [attr.fill]=\"activeColors.light\"\r\n stroke=\"#ffffff\" stroke-width=\"2.5\"\r\n filter=\"url(#dotShadowCpm)\"/>\r\n </svg>\r\n\r\n <div class=\"gauge-center gauge-center--cpm\" [style.bottom.px]=\"15 * scale\">\r\n <div class=\"main-value\" [style.font-size.px]=\"26 * scale\">CPM</div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n\r\n<!-- Modo Gauge: gauge completo con montos, leyenda y alerta -->\r\n<ng-container *ngIf=\"mode === CpmIndicatorMode.Gauge\">\r\n <div class=\"gauge-wrap\" [style.width.px]=\"220 * scale\" [style.height.px]=\"120 * scale\">\r\n <svg class=\"gauge-svg\" viewBox=\"0 0 220 130\" xmlns=\"http://www.w3.org/2000/svg\"\r\n [style.width.px]=\"220 * scale\"\r\n [style.height.px]=\"135 * scale\">\r\n <defs>\r\n <filter id=\"dotShadowGauge\" x=\"-60%\" y=\"-60%\" width=\"220%\" height=\"220%\">\r\n <feDropShadow dx=\"0\" dy=\"1\" stdDeviation=\"2\" flood-color=\"rgba(0,0,0,0.22)\"/>\r\n </filter>\r\n </defs>\r\n\r\n <path [attr.d]=\"trackArcPath\" fill=\"none\" stroke=\"#e8ecf5\" stroke-width=\"14\" stroke-linecap=\"round\"/>\r\n\r\n <!-- Proyecci\u00F3n debajo, real encima -->\r\n <path\r\n [style.display]=\"totalAmount > 0 ? '' : 'none'\"\r\n [attr.d]=\"totalArcPath\"\r\n [attr.stroke]=\"activeColors.light\"\r\n fill=\"none\" stroke-width=\"14\" stroke-linecap=\"round\"/>\r\n\r\n <path\r\n [style.display]=\"baseAmount > 0 ? '' : 'none'\"\r\n [attr.d]=\"baseArcPath\"\r\n [attr.stroke]=\"activeColors.dark\"\r\n fill=\"none\" stroke-width=\"14\" stroke-linecap=\"round\"/>\r\n\r\n <circle\r\n [style.display]=\"baseAmount > 0 ? '' : 'none'\"\r\n [attr.cx]=\"dotBasePos.x\" [attr.cy]=\"dotBasePos.y\"\r\n r=\"7\" [attr.fill]=\"activeColors.dark\"\r\n stroke=\"#ffffff\" stroke-width=\"2.5\"\r\n filter=\"url(#dotShadowGauge)\"/>\r\n\r\n <circle\r\n [style.display]=\"dotTotalVisible ? '' : 'none'\"\r\n [attr.cx]=\"dotTotalPos.x\" [attr.cy]=\"dotTotalPos.y\"\r\n r=\"6\" [attr.fill]=\"activeColors.light\"\r\n stroke=\"#ffffff\" stroke-width=\"2.5\"\r\n filter=\"url(#dotShadowGauge)\"/>\r\n\r\n <!-- <text\r\n [attr.x]=\"limitTextPos.x\" [attr.y]=\"limitTextPos.y\"\r\n font-family=\"DM Mono,monospace\" font-size=\"9\" font-weight=\"600\"\r\n fill=\"#8a8fa8\" text-anchor=\"middle\">\r\n {{ currency }}{{ limit }}\r\n </text> -->\r\n </svg>\r\n\r\n <!-- El color del monto cambia a rojo si supera el l\u00EDmite -->\r\n <div class=\"gauge-center gauge-center--gauge\" [style.bottom.px]=\"-10 * scale\">\r\n <div class=\"main-value\"\r\n [style.font-size.px]=\"26 * scale\"\r\n [style.color]=\"totalAmount > limit ? activeColors.dark : '#1a1a2e'\">\r\n CPM<br>\r\n {{ currency }}{{ totalAmount | number:'1.2-2' }}\r\n </div>\r\n <div class=\"limit-label\" [style.font-size.px]=\"16 * scale\">\r\n de {{ currency }}{{ limit | number:'1.2-2' }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"legend\">\r\n <div class=\"legend-item\">\r\n <span class=\"dot\" [style.background]=\"activeColors.dark\"></span>\r\n Real\r\n </div>\r\n <div class=\"legend-item\">\r\n <span class=\"dot\"\r\n [style.background]=\"activeColors.light\"\r\n [style.border]=\"'1.5px solid ' + activeColors.dark\">\r\n </span>\r\n Proyecci\u00F3n\r\n </div>\r\n <div class=\"legend-item\">\r\n <span class=\"dot\" style=\"background:#e8ecf5; border:1px solid #ccc\"></span>\r\n Disponible\r\n </div>\r\n </div>\r\n\r\n <!-- Sliders de prueba \u2014 solo en devMode -->\r\n <ng-container *ngIf=\"devMode\">\r\n <div class=\"divider\"></div>\r\n <div class=\"dev-badge\">Dev Mode</div>\r\n <div class=\"controls\">\r\n\r\n <div class=\"ctrl-row\">\r\n <div class=\"ctrl-header\">\r\n <span class=\"ctrl-label\">\r\n <span class=\"ctrl-label-dot\" [style.background]=\"activeColors.dark\"></span>\r\n Gasto real (consumido)\r\n </span>\r\n <span class=\"ctrl-val\" [style.color]=\"activeColors.dark\">\r\n {{ currency }}{{ sliderBase | number:'1.2-2' }}\r\n </span>\r\n </div>\r\n <div class=\"zones-bar\">\r\n <div style=\"background:#16a34a\"></div>\r\n <div style=\"background:#ca8a04\"></div>\r\n <div style=\"background:#ea580c\"></div>\r\n <div style=\"background:#dc2626\"></div>\r\n </div>\r\n <input type=\"range\" [min]=\"0\" [max]=\"sliderMax\" step=\"0.5\"\r\n [value]=\"sliderBase\" (input)=\"onDevBaseChange($event)\">\r\n </div>\r\n\r\n <div class=\"ctrl-row\">\r\n <div class=\"ctrl-header\">\r\n <span class=\"ctrl-label\">\r\n <span class=\"ctrl-label-dot\"\r\n [style.background]=\"activeColors.light\"\r\n [style.border]=\"'1px solid ' + activeColors.dark\"\r\n style=\"border-radius:50%\">\r\n </span>\r\n Proyecci\u00F3n (presupuesto)\r\n </span>\r\n <span class=\"ctrl-val\" [style.color]=\"activeColors.dark\">\r\n {{ currency }}{{ sliderProjected | number:'1.2-2' }}\r\n </span>\r\n </div>\r\n <div class=\"zones-bar\">\r\n <div style=\"background:#16a34a\"></div>\r\n <div style=\"background:#ca8a04\"></div>\r\n <div style=\"background:#ea580c\"></div>\r\n <div style=\"background:#dc2626\"></div>\r\n </div>\r\n <input type=\"range\" [min]=\"0\" [max]=\"sliderMax\" step=\"0.5\"\r\n [value]=\"sliderProjected\" (input)=\"onDevProjectedChange($event)\">\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #cpmLegend>\r\n <div class=\"legend-tooltip\">\r\n <div class=\"legend-tooltip__item\">\r\n <span class=\"dot\" [style.background]=\"activeColors.dark\"></span>\r\n Real<span *ngIf=\"mode === CpmIndicatorMode.Gauge\">: {{ currency }}{{ baseAmount | number:'1.2-2' }}</span>\r\n </div>\r\n <div class=\"legend-tooltip__item\">\r\n <span class=\"dot\" [style.background]=\"activeColors.light\"></span>\r\n Proyecci\u00F3n<span *ngIf=\"mode === CpmIndicatorMode.Gauge\">: {{ currency }}{{ projectedAmount | number:'1.2-2' }}</span>\r\n </div>\r\n <div class=\"legend-tooltip__item\">\r\n <span class=\"dot\" style=\"background:#e8ecf5\"></span>\r\n Disponible<span *ngIf=\"mode === CpmIndicatorMode.Gauge\">: {{ currency }}{{ (limit - totalAmount) | number:'1.2-2' }}</span>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [":host{display:inline-flex;flex-direction:column;align-items:center;font-family:\"DM Sans\",sans-serif}.card{background:#ffffff;border-radius:20px;padding:36px 40px 28px;width:340px;box-shadow:0 4px 32px #0000001a,0 1px 4px #0000000f;display:flex;flex-direction:column;align-items:center}.gauge-wrap{position:relative;overflow:visible}.gauge-svg{overflow:visible}.gauge-center{position:absolute;left:50%;transform:translate(-50%);text-align:center;pointer-events:none;white-space:nowrap}.gauge-center--cpm{bottom:15px}.gauge-center--gauge{bottom:-10px}.main-value{font-size:26px;font-weight:700;font-family:\"DM Mono\",monospace;letter-spacing:-.5px;color:#1a1a2e;line-height:1;transition:color .3s ease}.limit-label{font-size:12px;color:#8a8fa8;font-weight:400;margin-top:3px;font-family:\"DM Mono\",monospace}.legend{display:flex;grid-gap:14px;gap:14px;margin-top:22px;margin-bottom:6px;flex-wrap:wrap;justify-content:center}.legend-item{display:flex;align-items:center;grid-gap:6px;gap:6px;font-size:12px;color:#555;font-weight:500}.dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.divider{width:100%;height:1px;background:#f0f2f5;margin:14px 0 4px}.dev-badge{font-size:11px;font-weight:700;color:#7c3aed;background:#ede9fe;border-radius:6px;padding:3px 10px;margin-bottom:8px;letter-spacing:.3px}.controls{width:100%;display:flex;flex-direction:column;grid-gap:16px;gap:16px}.ctrl-row{display:flex;flex-direction:column;grid-gap:5px;gap:5px}.ctrl-header{display:flex;justify-content:space-between;align-items:center}.ctrl-label{font-size:12px;color:#8a8fa8;font-weight:500;display:flex;align-items:center;grid-gap:5px;gap:5px}.ctrl-label-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}.ctrl-val{font-size:12px;font-family:\"DM Mono\",monospace;font-weight:600;color:#1a1a2e}.zones-bar{display:flex;border-radius:4px;overflow:hidden;height:3px;width:100%;margin-bottom:3px}.zones-bar div{flex:1}input[type=range]{appearance:none;width:100%;height:5px;border-radius:99px;background:#e2e6ef;outline:none;cursor:pointer}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:#16a34a;border:2.5px solid #fff;box-shadow:0 1px 8px #0003;cursor:grab;-webkit-transition:background .3s,transform .15s;transition:background .3s,transform .15s}input[type=range]::-webkit-slider-thumb:active{transform:scale(1.2);cursor:grabbing}input[type=range]::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:#16a34a;border:2.5px solid #fff;cursor:grab}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "number": i1.DecimalPipe } });
155
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: LibeyNgCpmIndicatorComponent, decorators: [{
156
+ type: Component,
157
+ args: [{
158
+ selector: 'lib-libey-ng-cpm-indicator',
159
+ templateUrl: './libey-ng-cpm-indicator.component.html',
160
+ styleUrls: ['./libey-ng-cpm-indicator.component.css']
161
+ }]
162
+ }], ctorParameters: function () { return []; }, propDecorators: { limit: [{
163
+ type: Input
164
+ }], items: [{
165
+ type: Input
166
+ }], currency: [{
167
+ type: Input
168
+ }], thresholds: [{
169
+ type: Input
170
+ }], mode: [{
171
+ type: Input
172
+ }], devMode: [{
173
+ type: Input
174
+ }], cpmChange: [{
175
+ type: Output
176
+ }], limitExceeded: [{
177
+ type: Output
178
+ }], cpmLegend: [{
179
+ type: ViewChild,
180
+ args: ['cpmLegend']
181
+ }], scale: [{
182
+ type: Input
183
+ }] } });
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliZXktbmctY3BtLWluZGljYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWJleS1uZy1jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2NwbS1pbmRpY2F0b3IvbGliZXktbmctY3BtLWluZGljYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWJleS1uZy1jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2NwbS1pbmRpY2F0b3IvbGliZXktbmctY3BtLWluZGljYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBb0MsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDakksT0FBTyxFQUFFLGdCQUFnQixFQUFDLFdBQVcsRUFBcUQsa0JBQWtCLEVBQUMsV0FBVyxHQUFFLE1BQU0sOENBQThDLENBQUM7OztBQU8vSyxNQUFNLE9BQU8sNEJBQTRCO0lBdUV2QztRQXJFQSxnQ0FBZ0M7UUFDdkIsVUFBSyxHQUFXLEdBQUcsQ0FBQztRQUU3Qjs7Ozs7V0FLRztRQUNNLFVBQUssR0FBYyxFQUFFLENBQUM7UUFFL0IseURBQXlEO1FBQ2hELGFBQVEsR0FBVyxJQUFJLENBQUM7UUFLakMsMEVBQTBFO1FBQ2pFLFNBQUksR0FBcUIsZ0JBQWdCLENBQUMsR0FBRyxDQUFDO1FBRXZELDJFQUEyRTtRQUNsRSxZQUFPLEdBQVksS0FBSyxDQUFDO1FBRWxDLGdCQUFnQjtRQUNoQiwrRUFBK0U7UUFDckUsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7UUFFckQsd0RBQXdEO1FBQzlDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUk3QyxVQUFLLEdBQVcsQ0FBQyxDQUFDO1FBRTNCLGlDQUFpQztRQUNqQyxlQUFVLEdBQWdC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Q0FBQyxDQUFDLE1BQU0sS0FBSyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3hGLENBQUM7SUFFTyxhQUFhLENBQUMsS0FBYSxFQUFFLENBQWdCO1FBQ25ELE1BQU0sR0FBRyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQy9CLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxRQUFRO1lBQUUsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEQsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFFBQVE7WUFBRSxPQUFPLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsRCxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsUUFBUTtZQUFFLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xELE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7OzBIQXhMVSw0QkFBNEI7OEdBQTVCLDRCQUE0QixrWkNSekMsdS9RQXdNYzs0RkRoTUQsNEJBQTRCO2tCQUx4QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLFdBQVcsRUFBRSx5Q0FBeUM7b0JBQ3RELFNBQVMsRUFBRSxDQUFDLHdDQUF3QyxDQUFDO2lCQUN0RDswRUFJVSxLQUFLO3NCQUFiLEtBQUs7Z0JBUUcsS0FBSztzQkFBYixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxJQUFJO3NCQUFaLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLO2dCQUlJLFNBQVM7c0JBQWxCLE1BQU07Z0JBR0csYUFBYTtzQkFBdEIsTUFBTTtnQkFFaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUViLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0NoaWxkLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDcG1JbmRpY2F0b3JNb2RlLENwbUl0ZW1UeXBlLENwbUl0ZW0sQ3BtVGhyZXNob2xkcyxDcG1TdW1tYXJ5LFpvbmVDb2xvcixTdmdQb2ludCxERUZBVUxUX1RIUkVTSE9MRFMsWk9ORV9DT0xPUlMsfSBmcm9tICcuLi8uLi91dGlscy9DcG1JbmRpY2F0b3IvY3BtLWluZGljYXRvci10eXBlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1saWJleS1uZy1jcG0taW5kaWNhdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbGliZXktbmctY3BtLWluZGljYXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGliZXktbmctY3BtLWluZGljYXRvci5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIExpYmV5TmdDcG1JbmRpY2F0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIC8qKiBUb3BlIG3DoXhpbW8gZGVsIGNvbnRyYXRvLiAqL1xyXG4gIEBJbnB1dCgpIGxpbWl0OiBudW1iZXIgPSAyNTA7XHJcblxyXG4gIC8qKlxyXG4gICAqIMONdGVtcyBkZSBnYXN0by4gRWwgcGFkcmUgZXMgcmVzcG9uc2FibGUgZGU6XHJcbiAgICogLSBFeGNsdWlyIMOtdGVtcyBxdWUgbm8gYXBsaWNhbiBhbCBDUE1cclxuICAgKiAtIE1hcmNhciBjYWRhIHVubyBjb24gQ3BtSXRlbVR5cGUuQmFzZSBvIENwbUl0ZW1UeXBlLlByb2plY3RlZFxyXG4gICAqIC0gQWN0dWFsaXphciBlbCBhcnJheSBhbCBhZ3JlZ2FyIG8gZWxpbWluYXJcclxuICAgKi9cclxuICBASW5wdXQoKSBpdGVtczogQ3BtSXRlbVtdID0gW107XHJcblxyXG4gIC8qKiBTw61tYm9sbyBkZSBtb25lZGEuIFBvciBkZWZlY3RvICdzLycgKHNvbCBwZXJ1YW5vKS4gKi9cclxuICBASW5wdXQoKSBjdXJyZW5jeTogc3RyaW5nID0gJ3MvJztcclxuXHJcbiAgLyoqIFVtYnJhbGVzIGRlIHpvbmFzIGNvbW8gcG9yY2VudGFqZSBkZWwgbMOtbWl0ZSAoMC4wIOKGkiAxLjApLiBVc2EgdGVyY2lvcyBzaSBubyBzZSBwcm9wb3JjaW9uYS4gKi9cclxuICBASW5wdXQoKSB0aHJlc2hvbGRzPzogQ3BtVGhyZXNob2xkcztcclxuXHJcbiAgLyoqIE1vZG8gZGUgdmlzdWFsaXphY2nDs246IENQTSAoc29sbyBnYXVnZSkgbyBHYXVnZSAobW9udG9zICsgbGV5ZW5kYSkuICovXHJcbiAgQElucHV0KCkgbW9kZTogQ3BtSW5kaWNhdG9yTW9kZSA9IENwbUluZGljYXRvck1vZGUuQ3BtO1xyXG5cclxuICAvKiogQWN0aXZhIHNsaWRlcnMgZGUgcHJ1ZWJhLiBTb2xvIHBhcmEgZGVzYXJyb2xsbywgbnVuY2EgZW4gcHJvZHVjY2nDs24uICovXHJcbiAgQElucHV0KCkgZGV2TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyDilIDilIAgT3V0cHV0cyDilIDilIBcclxuICAvKiogRW1pdGUgZWwgcmVzdW1lbiBkZSBtb250b3MgZW4gY2FkYSByZWNhbGN1bG8uIFVzYXIgcGFyYSBwZXJzaXN0aXIgZW4gQkQuICovXHJcbiAgQE91dHB1dCgpIGNwbUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q3BtU3VtbWFyeT4oKTtcclxuXHJcbiAgLyoqIEVtaXRlIHRydWUgY3VhbmRvIGxhIHByb3llY2Npw7NuIHN1cGVyYSBlbCBsw61taXRlLiAqL1xyXG4gIEBPdXRwdXQoKSBsaW1pdEV4Y2VlZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdjcG1MZWdlbmQnKSBjcG1MZWdlbmQhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBASW5wdXQoKSBzY2FsZTogbnVtYmVyID0gMTtcclxuXHJcbiAgLy8g4pSA4pSAIFByb3BpZWRhZGVzIGRlbCB0ZW1wbGF0ZSDilIDilIBcclxuICBiYXNlQW1vdW50OiBudW1iZXIgICAgICA9IDA7XHJcbiAgcHJvamVjdGVkQW1vdW50OiBudW1iZXIgPSAwO1xyXG4gIHRvdGFsQW1vdW50OiBudW1iZXIgICAgID0gMDtcclxuICBleGNlc3M6IG51bWJlciAgICAgICAgICA9IDA7XHJcbiAgYWN0aXZlQ29sb3JzOiBab25lQ29sb3IgPSBaT05FX0NPTE9SU1snem9uZTEnXTtcclxuXHJcbiAgdHJhY2tBcmNQYXRoOiBzdHJpbmcgICAgID0gJyc7XHJcbiAgYmFzZUFyY1BhdGg6IHN0cmluZyAgICAgID0gJyc7XHJcbiAgdG90YWxBcmNQYXRoOiBzdHJpbmcgICAgID0gJyc7XHJcbiAgZG90QmFzZVBvczogU3ZnUG9pbnQgICAgID0geyB4OiAwLCB5OiAwIH07XHJcbiAgZG90VG90YWxQb3M6IFN2Z1BvaW50ICAgID0geyB4OiAwLCB5OiAwIH07XHJcbiAgZG90VG90YWxWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbGltaXRUZXh0UG9zOiBTdmdQb2ludCAgID0geyB4OiAwLCB5OiAwIH07XHJcblxyXG4gIC8vIOKUgOKUgCBkZXZNb2RlIOKUgOKUgFxyXG4gIHNsaWRlckJhc2U6IG51bWJlciAgICAgID0gMDtcclxuICBzbGlkZXJQcm9qZWN0ZWQ6IG51bWJlciA9IDA7XHJcblxyXG4gIGdldCBzbGlkZXJNYXgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmxpbWl0ICogMS41O1xyXG4gIH1cclxuXHJcbiAgLy8gTmVjZXNhcmlvIHBhcmEgdXNhciBlbCBlbnVtIGVuIGVsIHRlbXBsYXRlXHJcbiAgcmVhZG9ubHkgQ3BtSW5kaWNhdG9yTW9kZSA9IENwbUluZGljYXRvck1vZGU7XHJcblxyXG4gIC8vIEdlb21ldHLDrWEgZGVsIFNWRyAoY29vcmRlbmFkYXMgaW50ZXJuYXMgZGVsIHZpZXdCb3ggMjIweDEzMClcclxuICBwcml2YXRlIHJlYWRvbmx5IENYICAgICAgICAgID0gMTEwO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgQ1kgICAgICAgICAgPSAxMTU7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBSICAgICAgICAgICA9IDkwO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgQU5HTEVfU1RBUlQgPSBNYXRoLlBJO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgQU5HTEVfRU5EICAgPSAwO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IEVYQ0VTU19UT0xFUkFOQ0UgPSAwLjAwNTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVjYWxjdWxhdGUoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydpdGVtcyddIHx8IGNoYW5nZXNbJ2xpbWl0J10gfHwgY2hhbmdlc1sndGhyZXNob2xkcyddKSB7XHJcbiAgICAgIHRoaXMucmVjYWxjdWxhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRGV2QmFzZUNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuc2xpZGVyQmFzZSA9IHBhcnNlRmxvYXQoKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSk7XHJcbiAgICBpZiAodGhpcy5zbGlkZXJCYXNlID4gdGhpcy5zbGlkZXJQcm9qZWN0ZWQpIHtcclxuICAgICAgdGhpcy5zbGlkZXJQcm9qZWN0ZWQgPSB0aGlzLnNsaWRlckJhc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlY2FsY3VsYXRlRnJvbVNsaWRlcnMoKTtcclxuICB9XHJcblxyXG4gIG9uRGV2UHJvamVjdGVkQ2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5zbGlkZXJQcm9qZWN0ZWQgPSBwYXJzZUZsb2F0KChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUpO1xyXG4gICAgaWYgKHRoaXMuc2xpZGVyUHJvamVjdGVkIDwgdGhpcy5zbGlkZXJCYXNlKSB7XHJcbiAgICAgIHRoaXMuc2xpZGVyUHJvamVjdGVkID0gdGhpcy5zbGlkZXJCYXNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZWNhbGN1bGF0ZUZyb21TbGlkZXJzKCk7XHJcbiAgfVxyXG5cclxuICAvLyBGbHVqbyBkZSBwcm9kdWNjacOzbjogY2FsY3VsYSBhIHBhcnRpciBkZWwgYXJyYXkgZGUgaXRlbXNcclxuICBwcml2YXRlIHJlY2FsY3VsYXRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5iYXNlQW1vdW50ID0gdGhpcy5pdGVtc1xyXG4gICAgICAuZmlsdGVyKGkgPT4gaS50eXBlID09PSBDcG1JdGVtVHlwZS5CYXNlKVxyXG4gICAgICAucmVkdWNlKChhY2MsIGkpID0+IGFjYyArIGkuYW1vdW50LCAwKTtcclxuXHJcbiAgICB0aGlzLnByb2plY3RlZEFtb3VudCA9IHRoaXMuaXRlbXNcclxuICAgICAgLmZpbHRlcihpID0+IGkudHlwZSA9PT0gQ3BtSXRlbVR5cGUuUHJvamVjdGVkKVxyXG4gICAgICAucmVkdWNlKChhY2MsIGkpID0+IGFjYyArIGkuYW1vdW50LCAwKTtcclxuXHJcbiAgICB0aGlzLnRvdGFsQW1vdW50ID0gdGhpcy5iYXNlQW1vdW50ICsgdGhpcy5wcm9qZWN0ZWRBbW91bnQ7XHJcblxyXG4gICAgLy8gU2luY3Jvbml6YSBzbGlkZXJzIHBvciBzaSBzZSBhY3RpdmEgZGV2TW9kZVxyXG4gICAgdGhpcy5zbGlkZXJCYXNlICAgICAgPSB0aGlzLmJhc2VBbW91bnQ7XHJcbiAgICB0aGlzLnNsaWRlclByb2plY3RlZCA9IHRoaXMudG90YWxBbW91bnQ7XHJcblxyXG4gICAgdGhpcy51cGRhdGVHYXVnZSgpO1xyXG4gICAgdGhpcy5lbWl0U3VtbWFyeSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gRmx1am8gZGUgZGV2TW9kZTogY2FsY3VsYSBhIHBhcnRpciBkZSBsb3Mgc2xpZGVyc1xyXG4gIHByaXZhdGUgcmVjYWxjdWxhdGVGcm9tU2xpZGVycygpOiB2b2lkIHtcclxuICAgIHRoaXMuYmFzZUFtb3VudCAgICAgID0gdGhpcy5zbGlkZXJCYXNlO1xyXG4gICAgdGhpcy5wcm9qZWN0ZWRBbW91bnQgPSB0aGlzLnNsaWRlclByb2plY3RlZCAtIHRoaXMuc2xpZGVyQmFzZTtcclxuICAgIHRoaXMudG90YWxBbW91bnQgICAgID0gdGhpcy5zbGlkZXJQcm9qZWN0ZWQ7XHJcblxyXG4gICAgdGhpcy51cGRhdGVHYXVnZSgpO1xyXG4gICAgdGhpcy5lbWl0U3VtbWFyeSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVHYXVnZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHRocmVzaG9sZHMgID0gdGhpcy50aHJlc2hvbGRzID8/IERFRkFVTFRfVEhSRVNIT0xEUztcclxuICAgIHRoaXMuYWN0aXZlQ29sb3JzID0gdGhpcy5nZXRab25lQ29sb3JzKHRoaXMudG90YWxBbW91bnQsIHRocmVzaG9sZHMpO1xyXG5cclxuICAgIHRoaXMudHJhY2tBcmNQYXRoID0gdGhpcy5idWlsZEFyY1BhdGgodGhpcy5BTkdMRV9TVEFSVCwgdGhpcy5BTkdMRV9FTkQpO1xyXG4gICAgdGhpcy50b3RhbEFyY1BhdGggPSB0aGlzLmJ1aWxkQXJjUGF0aCh0aGlzLkFOR0xFX1NUQVJULCB0aGlzLnZhbHVlVG9BbmdsZSh0aGlzLnRvdGFsQW1vdW50KSk7XHJcbiAgICB0aGlzLmJhc2VBcmNQYXRoICA9IHRoaXMuYnVpbGRBcmNQYXRoKHRoaXMuQU5HTEVfU1RBUlQsIHRoaXMudmFsdWVUb0FuZ2xlKHRoaXMuYmFzZUFtb3VudCkpO1xyXG5cclxuICAgIHRoaXMuZG90QmFzZVBvcyAgPSB0aGlzLnBvbGFyKHRoaXMudmFsdWVUb0FuZ2xlKHRoaXMuYmFzZUFtb3VudCkpO1xyXG4gICAgdGhpcy5kb3RUb3RhbFBvcyA9IHRoaXMucG9sYXIodGhpcy52YWx1ZVRvQW5nbGUodGhpcy50b3RhbEFtb3VudCkpO1xyXG5cclxuICAgIC8vIEVsIHB1bnRvIGRlIHByb3llY2Npw7NuIHNvbG8gYXBhcmVjZSBzaSB2YSBkZWxhbnRlIGRlbCByZWFsIHkgbm8gbGxlZ8OzIGFsIGJvcmRlXHJcbiAgICB0aGlzLmRvdFRvdGFsVmlzaWJsZSA9IHRoaXMudG90YWxBbW91bnQgPiB0aGlzLmJhc2VBbW91bnQgJiYgdGhpcy50b3RhbEFtb3VudCA8IHRoaXMubGltaXQ7XHJcblxyXG4gICAgdGhpcy5saW1pdFRleHRQb3MgPSB0aGlzLnBvbGFyKHRoaXMuQU5HTEVfRU5ELCB0aGlzLlIgKyAyMCk7XHJcblxyXG4gICAgdGhpcy5leGNlc3MgPSBNYXRoLm1heCgwLCB0aGlzLnRvdGFsQW1vdW50IC0gdGhpcy5saW1pdCk7XHJcbiAgICB0aGlzLmxpbWl0RXhjZWVkZWQuZW1pdCh0aGlzLmV4Y2VzcyA+IHRoaXMuRVhDRVNTX1RPTEVSQU5DRSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVtaXRTdW1tYXJ5KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jcG1DaGFuZ2UuZW1pdCh7XHJcbiAgICAgIGJhc2VBbW91bnQ6ICAgICAgdGhpcy5iYXNlQW1vdW50LFxyXG4gICAgICBwcm9qZWN0ZWRBbW91bnQ6IHRoaXMucHJvamVjdGVkQW1vdW50LFxyXG4gICAgICB0b3RhbEFtb3VudDogICAgIHRoaXMudG90YWxBbW91bnQsXHJcbiAgICAgIGxpbWl0OiAgICAgICAgICAgdGhpcy5saW1pdCxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gQ2xhbXBlYSBlbCB2YWxvciBhbCBsw61taXRlIHBhcmEgcXVlIGVsIGFyY28gbm8gZGVzYm9yZGUgdmlzdWFsbWVudGVcclxuICBwcml2YXRlIHZhbHVlVG9BbmdsZSh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IGNsYW1wZWQgPSBNYXRoLm1pbih2YWx1ZSwgdGhpcy5saW1pdCk7XHJcbiAgICByZXR1cm4gTWF0aC5QSSAtIChjbGFtcGVkIC8gdGhpcy5saW1pdCkgKiBNYXRoLlBJO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwb2xhcihhbmdsZTogbnVtYmVyLCByYWRpdXM6IG51bWJlciA9IHRoaXMuUik6IFN2Z1BvaW50IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHg6IHRoaXMuQ1ggKyByYWRpdXMgKiBNYXRoLmNvcyhhbmdsZSksXHJcbiAgICAgIHk6IHRoaXMuQ1kgLSByYWRpdXMgKiBNYXRoLnNpbihhbmdsZSksXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZEFyY1BhdGgoYTE6IG51bWJlciwgYTI6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBjb25zdCBzdGFydCA9IHRoaXMucG9sYXIoYTEpO1xyXG4gICAgY29uc3QgZW5kICAgPSB0aGlzLnBvbGFyKGEyKTtcclxuICAgIGNvbnN0IGxhcmdlID0gKGExIC0gYTIpID4gTWF0aC5QSSA/IDEgOiAwO1xyXG4gICAgcmV0dXJuIGBNICR7c3RhcnQueH0gJHtzdGFydC55fSBBICR7dGhpcy5SfSAke3RoaXMuUn0gMCAke2xhcmdlfSAxICR7ZW5kLnh9ICR7ZW5kLnl9YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Wm9uZUNvbG9ycyh2YWx1ZTogbnVtYmVyLCB0OiBDcG1UaHJlc2hvbGRzKTogWm9uZUNvbG9yIHtcclxuICAgIGNvbnN0IHBjdCA9IHZhbHVlIC8gdGhpcy5saW1pdDtcclxuICAgIGlmIChwY3QgPCB0LnpvbmUxTWF4KSByZXR1cm4gWk9ORV9DT0xPUlNbJ3pvbmUxJ107XHJcbiAgICBpZiAocGN0IDwgdC56b25lMk1heCkgcmV0dXJuIFpPTkVfQ09MT1JTWyd6b25lMiddO1xyXG4gICAgaWYgKHBjdCA8IHQuem9uZTNNYXgpIHJldHVybiBaT05FX0NPTE9SU1snem9uZTMnXTtcclxuICAgIHJldHVybiBaT05FX0NPTE9SU1snem9uZTQnXTtcclxuICB9XHJcbn0iLCI8IS0tIE1vZG8gQ1BNOiBzb2xvIGVsIGdhdWdlIGNvbiBcIkNQTVwiIGVuIGVsIGNlbnRybyAtLT5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGUgPT09IENwbUluZGljYXRvck1vZGUuQ3BtXCI+XHJcbiAgPGRpdiBjbGFzcz1cImdhdWdlLXdyYXBcIiBbc3R5bGUud2lkdGgucHhdPVwiMjIwICogc2NhbGVcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cIjEyMCAqIHNjYWxlXCI+XHJcbiAgICA8c3ZnIGNsYXNzPVwiZ2F1Z2Utc3ZnXCIgdmlld0JveD1cIjAgMCAyMjAgMTMwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwiMjIwICogc2NhbGVcIlxyXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCIxMzUgKiBzY2FsZVwiPlxyXG4gICAgICA8ZGVmcz5cclxuICAgICAgICA8ZmlsdGVyIGlkPVwiZG90U2hhZG93Q3BtXCIgeD1cIi02MCVcIiB5PVwiLTYwJVwiIHdpZHRoPVwiMjIwJVwiIGhlaWdodD1cIjIyMCVcIj5cclxuICAgICAgICAgIDxmZURyb3BTaGFkb3cgZHg9XCIwXCIgZHk9XCIxXCIgc3RkRGV2aWF0aW9uPVwiMlwiIGZsb29kLWNvbG9yPVwicmdiYSgwLDAsMCwwLjIyKVwiLz5cclxuICAgICAgICA8L2ZpbHRlcj5cclxuICAgICAgPC9kZWZzPlxyXG5cclxuICAgICAgPHBhdGggW2F0dHIuZF09XCJ0cmFja0FyY1BhdGhcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiNlOGVjZjVcIiBzdHJva2Utd2lkdGg9XCIxNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIi8+XHJcblxyXG4gICAgICA8IS0tIFByb3llY2Npw7NuIGRlYmFqbywgcmVhbCBlbmNpbWEgLS0+XHJcbiAgICAgIDxwYXRoXHJcbiAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwidG90YWxBbW91bnQgPiAwID8gJycgOiAnbm9uZSdcIlxyXG4gICAgICAgIFthdHRyLmRdPVwidG90YWxBcmNQYXRoXCJcclxuICAgICAgICBbYXR0ci5zdHJva2VdPVwiYWN0aXZlQ29sb3JzLmxpZ2h0XCJcclxuICAgICAgICBmaWxsPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIjE0XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiLz5cclxuXHJcbiAgICAgIDxwYXRoXHJcbiAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiYmFzZUFtb3VudCA+IDAgPyAnJyA6ICdub25lJ1wiXHJcbiAgICAgICAgW2F0dHIuZF09XCJiYXNlQXJjUGF0aFwiXHJcbiAgICAgICAgW2F0dHIuc3Ryb2tlXT1cImFjdGl2ZUNvbG9ycy5kYXJrXCJcclxuICAgICAgICBmaWxsPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIjE0XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiLz5cclxuXHJcbiAgICAgIDxjaXJjbGVcclxuICAgICAgICBbc3R5bGUuZGlzcGxheV09XCJiYXNlQW1vdW50ID4gMCA/ICcnIDogJ25vbmUnXCJcclxuICAgICAgICBbYXR0ci5jeF09XCJkb3RCYXNlUG9zLnhcIiBbYXR0ci5jeV09XCJkb3RCYXNlUG9zLnlcIlxyXG4gICAgICAgIHI9XCI3XCIgW2F0dHIuZmlsbF09XCJhY3RpdmVDb2xvcnMuZGFya1wiXHJcbiAgICAgICAgc3Ryb2tlPVwiI2ZmZmZmZlwiIHN0cm9rZS13aWR0aD1cIjIuNVwiXHJcbiAgICAgICAgZmlsdGVyPVwidXJsKCNkb3RTaGFkb3dDcG0pXCIvPlxyXG5cclxuICAgICAgPCEtLSBTb2xvIHZpc2libGUgc2kgbGEgcHJveWVjY2nDs24gdmEgcG9yIGRlbGFudGUgZGVsIHJlYWwgLS0+XHJcbiAgICAgIDxjaXJjbGVcclxuICAgICAgICBbc3R5bGUuZGlzcGxheV09XCJkb3RUb3RhbFZpc2libGUgPyAnJyA6ICdub25lJ1wiXHJcbiAgICAgICAgW2F0dHIuY3hdPVwiZG90VG90YWxQb3MueFwiIFthdHRyLmN5XT1cImRvdFRvdGFsUG9zLnlcIlxyXG4gICAgICAgIHI9XCI2XCIgW2F0dHIuZmlsbF09XCJhY3RpdmVDb2xvcnMubGlnaHRcIlxyXG4gICAgICAgIHN0cm9rZT1cIiNmZmZmZmZcIiBzdHJva2Utd2lkdGg9XCIyLjVcIlxyXG4gICAgICAgIGZpbHRlcj1cInVybCgjZG90U2hhZG93Q3BtKVwiLz5cclxuICAgIDwvc3ZnPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJnYXVnZS1jZW50ZXIgZ2F1Z2UtY2VudGVyLS1jcG1cIiBbc3R5bGUuYm90dG9tLnB4XT1cIjE1ICogc2NhbGVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1haW4tdmFsdWVcIiBbc3R5bGUuZm9udC1zaXplLnB4XT1cIjI2ICogc2NhbGVcIj5DUE08L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG48IS0tIE1vZG8gR2F1Z2U6IGdhdWdlIGNvbXBsZXRvIGNvbiBtb250b3MsIGxleWVuZGEgeSBhbGVydGEgLS0+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlID09PSBDcG1JbmRpY2F0b3JNb2RlLkdhdWdlXCI+XHJcbiAgPGRpdiBjbGFzcz1cImdhdWdlLXdyYXBcIiBbc3R5bGUud2lkdGgucHhdPVwiMjIwICogc2NhbGVcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cIjEyMCAqIHNjYWxlXCI+XHJcbiAgICA8c3ZnIGNsYXNzPVwiZ2F1Z2Utc3ZnXCIgdmlld0JveD1cIjAgMCAyMjAgMTMwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwiMjIwICogc2NhbGVcIlxyXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCIxMzUgKiBzY2FsZVwiPlxyXG4gICAgICA8ZGVmcz5cclxuICAgICAgICA8ZmlsdGVyIGlkPVwiZG90U2hhZG93R2F1Z2VcIiB4PVwiLTYwJVwiIHk9XCItNjAlXCIgd2lkdGg9XCIyMjAlXCIgaGVpZ2h0PVwiMjIwJVwiPlxyXG4gICAgICAgICAgPGZlRHJvcFNoYWRvdyBkeD1cIjBcIiBkeT1cIjFcIiBzdGREZXZpYXRpb249XCIyXCIgZmxvb2QtY29sb3I9XCJyZ2JhKDAsMCwwLDAuMjIpXCIvPlxyXG4gICAgICAgIDwvZmlsdGVyPlxyXG4gICAgICA8L2RlZnM+XHJcblxyXG4gICAgICA8cGF0aCBbYXR0ci5kXT1cInRyYWNrQXJjUGF0aFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiI2U4ZWNmNVwiIHN0cm9rZS13aWR0aD1cIjE0XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiLz5cclxuXHJcbiAgICAgIDwhLS0gUHJveWVjY2nDs24gZGViYWpvLCByZWFsIGVuY2ltYSAtLT5cclxuICAgICAgPHBhdGhcclxuICAgICAgICBbc3R5bGUuZGlzcGxheV09XCJ0b3RhbEFtb3VudCA+IDAgPyAnJyA6ICdub25lJ1wiXHJcbiAgICAgICAgW2F0dHIuZF09XCJ0b3RhbEFyY1BhdGhcIlxyXG4gICAgICAgIFthdHRyLnN0cm9rZV09XCJhY3RpdmVDb2xvcnMubGlnaHRcIlxyXG4gICAgICAgIGZpbGw9XCJub25lXCIgc3Ryb2tlLXdpZHRoPVwiMTRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPlxyXG5cclxuICAgICAgPHBhdGhcclxuICAgICAgICBbc3R5bGUuZGlzcGxheV09XCJiYXNlQW1vdW50ID4gMCA/ICcnIDogJ25vbmUnXCJcclxuICAgICAgICBbYXR0ci5kXT1cImJhc2VBcmNQYXRoXCJcclxuICAgICAgICBbYXR0ci5zdHJva2VdPVwiYWN0aXZlQ29sb3JzLmRhcmtcIlxyXG4gICAgICAgIGZpbGw9XCJub25lXCIgc3Ryb2tlLXdpZHRoPVwiMTRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPlxyXG5cclxuICAgICAgPGNpcmNsZVxyXG4gICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cImJhc2VBbW91bnQgPiAwID8gJycgOiAnbm9uZSdcIlxyXG4gICAgICAgIFthdHRyLmN4XT1cImRvdEJhc2VQb3MueFwiIFthdHRyLmN5XT1cImRvdEJhc2VQb3MueVwiXHJcbiAgICAgICAgcj1cIjdcIiBbYXR0ci5maWxsXT1cImFjdGl2ZUNvbG9ycy5kYXJrXCJcclxuICAgICAgICBzdHJva2U9XCIjZmZmZmZmXCIgc3Ryb2tlLXdpZHRoPVwiMi41XCJcclxuICAgICAgICBmaWx0ZXI9XCJ1cmwoI2RvdFNoYWRvd0dhdWdlKVwiLz5cclxuXHJcbiAgICAgIDxjaXJjbGVcclxuICAgICAgICBbc3R5bGUuZGlzcGxheV09XCJkb3RUb3RhbFZpc2libGUgPyAnJyA6ICdub25lJ1wiXHJcbiAgICAgICAgW2F0dHIuY3hdPVwiZG90VG90YWxQb3MueFwiIFthdHRyLmN5XT1cImRvdFRvdGFsUG9zLnlcIlxyXG4gICAgICAgIHI9XCI2XCIgW2F0dHIuZmlsbF09XCJhY3RpdmVDb2xvcnMubGlnaHRcIlxyXG4gICAgICAgIHN0cm9rZT1cIiNmZmZmZmZcIiBzdHJva2Utd2lkdGg9XCIyLjVcIlxyXG4gICAgICAgIGZpbHRlcj1cInVybCgjZG90U2hhZG93R2F1Z2UpXCIvPlxyXG5cclxuICAgICAgPCEtLSA8dGV4dFxyXG4gICAgICAgIFthdHRyLnhdPVwibGltaXRUZXh0UG9zLnhcIiBbYXR0ci55XT1cImxpbWl0VGV4dFBvcy55XCJcclxuICAgICAgICBmb250LWZhbWlseT1cIkRNIE1vbm8sbW9ub3NwYWNlXCIgZm9udC1zaXplPVwiOVwiIGZvbnQtd2VpZ2h0PVwiNjAwXCJcclxuICAgICAgICBmaWxsPVwiIzhhOGZhOFwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCI+XHJcbiAgICAgICAge3sgY3VycmVuY3kgfX17eyBsaW1pdCB9fVxyXG4gICAgICA8L3RleHQ+IC0tPlxyXG4gICAgPC9zdmc+XHJcblxyXG4gICAgPCEtLSBFbCBjb2xvciBkZWwgbW9udG8gY2FtYmlhIGEgcm9qbyBzaSBzdXBlcmEgZWwgbMOtbWl0ZSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJnYXVnZS1jZW50ZXIgZ2F1Z2UtY2VudGVyLS1nYXVnZVwiIFtzdHlsZS5ib3R0b20ucHhdPVwiLTEwICogc2NhbGVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1haW4tdmFsdWVcIlxyXG4gICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCIyNiAqIHNjYWxlXCJcclxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0b3RhbEFtb3VudCA+IGxpbWl0ID8gYWN0aXZlQ29sb3JzLmRhcmsgOiAnIzFhMWEyZSdcIj5cclxuICAgICAgICBDUE08YnI+XHJcbiAgICAgICAge3sgY3VycmVuY3kgfX17eyB0b3RhbEFtb3VudCB8IG51bWJlcjonMS4yLTInIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGltaXQtbGFiZWxcIiBbc3R5bGUuZm9udC1zaXplLnB4XT1cIjE2ICogc2NhbGVcIj5cclxuICAgICAgICBkZSB7eyBjdXJyZW5jeSB9fXt7IGxpbWl0IHwgbnVtYmVyOicxLjItMicgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImxlZ2VuZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImxlZ2VuZC1pdGVtXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCIgW3N0eWxlLmJhY2tncm91bmRdPVwiYWN0aXZlQ29sb3JzLmRhcmtcIj48L3NwYW4+XHJcbiAgICAgIFJlYWxcclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImxlZ2VuZC1pdGVtXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwiYWN0aXZlQ29sb3JzLmxpZ2h0XCJcclxuICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCInMS41cHggc29saWQgJyArIGFjdGl2ZUNvbG9ycy5kYXJrXCI+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgUHJveWVjY2nDs25cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImxlZ2VuZC1pdGVtXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCIgc3R5bGU9XCJiYWNrZ3JvdW5kOiNlOGVjZjU7IGJvcmRlcjoxcHggc29saWQgI2NjY1wiPjwvc3Bhbj5cclxuICAgICAgRGlzcG9uaWJsZVxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gU2xpZGVycyBkZSBwcnVlYmEg4oCUIHNvbG8gZW4gZGV2TW9kZSAtLT5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGV2TW9kZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkZXYtYmFkZ2VcIj5EZXYgTW9kZTwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRyb2xzXCI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY3RybC1yb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3RybC1oZWFkZXJcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3RybC1sYWJlbFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN0cmwtbGFiZWwtZG90XCIgW3N0eWxlLmJhY2tncm91bmRdPVwiYWN0aXZlQ29sb3JzLmRhcmtcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIEdhc3RvIHJlYWwgKGNvbnN1bWlkbylcclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3RybC12YWxcIiBbc3R5bGUuY29sb3JdPVwiYWN0aXZlQ29sb3JzLmRhcmtcIj5cclxuICAgICAgICAgICAge3sgY3VycmVuY3kgfX17eyBzbGlkZXJCYXNlIHwgbnVtYmVyOicxLjItMicgfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiem9uZXMtYmFyXCI+XHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPVwiYmFja2dyb3VuZDojMTZhMzRhXCI+PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPVwiYmFja2dyb3VuZDojY2E4YTA0XCI+PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPVwiYmFja2dyb3VuZDojZWE1ODBjXCI+PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPVwiYmFja2dyb3VuZDojZGMyNjI2XCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIFttaW5dPVwiMFwiIFttYXhdPVwic2xpZGVyTWF4XCIgc3RlcD1cIjAuNVwiXHJcbiAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzbGlkZXJCYXNlXCIgKGlucHV0KT1cIm9uRGV2QmFzZUNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImN0cmwtcm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImN0cmwtaGVhZGVyXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImN0cmwtbGFiZWxcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdHJsLWxhYmVsLWRvdFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImFjdGl2ZUNvbG9ycy5saWdodFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwiJzFweCBzb2xpZCAnICsgYWN0aXZlQ29sb3JzLmRhcmtcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cImJvcmRlci1yYWRpdXM6NTAlXCI+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgUHJveWVjY2nDs24gKHByZXN1cHVlc3RvKVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdHJsLXZhbFwiIFtzdHlsZS5jb2xvcl09XCJhY3RpdmVDb2xvcnMuZGFya1wiPlxyXG4gICAgICAgICAgICB7eyBjdXJyZW5jeSB9fXt7IHNsaWRlclByb2plY3RlZCB8IG51bWJlcjonMS4yLTInIH19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInpvbmVzLWJhclwiPlxyXG4gICAgICAgICAgPGRpdiBzdHlsZT1cImJhY2tncm91bmQ6IzE2YTM0YVwiPjwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBzdHlsZT1cImJhY2tncm91bmQ6I2NhOGEwNFwiPjwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBzdHlsZT1cImJhY2tncm91bmQ6I2VhNTgwY1wiPjwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBzdHlsZT1cImJhY2tncm91bmQ6I2RjMjYyNlwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBbbWluXT1cIjBcIiBbbWF4XT1cInNsaWRlck1heFwiIHN0ZXA9XCIwLjVcIlxyXG4gICAgICAgICAgICAgICBbdmFsdWVdPVwic2xpZGVyUHJvamVjdGVkXCIgKGlucHV0KT1cIm9uRGV2UHJvamVjdGVkQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjcG1MZWdlbmQ+XHJcbiAgPGRpdiBjbGFzcz1cImxlZ2VuZC10b29sdGlwXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLXRvb2x0aXBfX2l0ZW1cIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJhY3RpdmVDb2xvcnMuZGFya1wiPjwvc3Bhbj5cclxuICAgICAgUmVhbDxzcGFuICpuZ0lmPVwibW9kZSA9PT0gQ3BtSW5kaWNhdG9yTW9kZS5HYXVnZVwiPjoge3sgY3VycmVuY3kgfX17eyBiYXNlQW1vdW50IHwgbnVtYmVyOicxLjItMicgfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtdG9vbHRpcF9faXRlbVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRvdFwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImFjdGl2ZUNvbG9ycy5saWdodFwiPjwvc3Bhbj5cclxuICAgICAgUHJveWVjY2nDs248c3BhbiAqbmdJZj1cIm1vZGUgPT09IENwbUluZGljYXRvck1vZGUuR2F1Z2VcIj46IHt7IGN1cnJlbmN5IH19e3sgcHJvamVjdGVkQW1vdW50IHwgbnVtYmVyOicxLjItMicgfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtdG9vbHRpcF9faXRlbVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRvdFwiIHN0eWxlPVwiYmFja2dyb3VuZDojZThlY2Y1XCI+PC9zcGFuPlxyXG4gICAgICBEaXNwb25pYmxlPHNwYW4gKm5nSWY9XCJtb2RlID09PSBDcG1JbmRpY2F0b3JNb2RlLkdhdWdlXCI+OiB7eyBjdXJyZW5jeSB9fXt7IChsaW1pdCAtIHRvdGFsQW1vdW50KSB8IG51bWJlcjonMS4yLTInIH19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+Il19
@@ -0,0 +1,26 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { LibeyNgCpmIndicatorComponent } from './libey-ng-cpm-indicator.component';
4
+ import * as i0 from "@angular/core";
5
+ export class LibeyNgCpmIndicatorModule {
6
+ }
7
+ LibeyNgCpmIndicatorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: LibeyNgCpmIndicatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
+ LibeyNgCpmIndicatorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: LibeyNgCpmIndicatorModule, declarations: [LibeyNgCpmIndicatorComponent], imports: [CommonModule], exports: [LibeyNgCpmIndicatorComponent] });
9
+ LibeyNgCpmIndicatorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: LibeyNgCpmIndicatorModule, imports: [[
10
+ CommonModule
11
+ ]] });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: LibeyNgCpmIndicatorModule, decorators: [{
13
+ type: NgModule,
14
+ args: [{
15
+ declarations: [
16
+ LibeyNgCpmIndicatorComponent
17
+ ],
18
+ imports: [
19
+ CommonModule
20
+ ],
21
+ exports: [
22
+ LibeyNgCpmIndicatorComponent
23
+ ]
24
+ }]
25
+ }] });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliZXktbmctY3BtLWluZGljYXRvci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWJleS1uZy1jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2NwbS1pbmRpY2F0b3IvbGliZXktbmctY3BtLWluZGljYXRvci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7O0FBZ0JsRixNQUFNLE9BQU8seUJBQXlCOzt1SEFBekIseUJBQXlCO3dIQUF6Qix5QkFBeUIsaUJBVGxDLDRCQUE0QixhQUc1QixZQUFZLGFBR1osNEJBQTRCO3dIQUduQix5QkFBeUIsWUFQM0I7WUFDUCxZQUFZO1NBQ2I7NEZBS1UseUJBQXlCO2tCQVhyQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWiw0QkFBNEI7cUJBQzdCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3FCQUNiO29CQUNELE9BQU8sRUFBRTt3QkFDUCw0QkFBNEI7cUJBQzdCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTGliZXlOZ0NwbUluZGljYXRvckNvbXBvbmVudCB9IGZyb20gJy4vbGliZXktbmctY3BtLWluZGljYXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOZ2JUb29sdGlwTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5cclxuXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgTGliZXlOZ0NwbUluZGljYXRvckNvbXBvbmVudFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBMaWJleU5nQ3BtSW5kaWNhdG9yQ29tcG9uZW50XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGliZXlOZ0NwbUluZGljYXRvck1vZHVsZSB7IH1cclxuIl19
@@ -6,21 +6,21 @@ export class LibeyNgComponentLibraryComponent {
6
6
  }
7
7
  }
8
8
  LibeyNgComponentLibraryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: LibeyNgComponentLibraryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
- LibeyNgComponentLibraryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: LibeyNgComponentLibraryComponent, selector: "lib-libey-ngComponent-library", ngImport: i0, template: `
10
- <p>
11
- libey-ng-component-library works!
12
- </p>
9
+ LibeyNgComponentLibraryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: LibeyNgComponentLibraryComponent, selector: "lib-libey-ngComponent-library", ngImport: i0, template: `
10
+ <p>
11
+ libey-ng-component-library works!
12
+ </p>
13
13
  `, isInline: true });
14
14
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: LibeyNgComponentLibraryComponent, decorators: [{
15
15
  type: Component,
16
16
  args: [{
17
17
  selector: 'lib-libey-ngComponent-library',
18
- template: `
19
- <p>
20
- libey-ng-component-library works!
21
- </p>
18
+ template: `
19
+ <p>
20
+ libey-ng-component-library works!
21
+ </p>
22
22
  `,
23
23
  styles: []
24
24
  }]
25
25
  }], ctorParameters: function () { return []; } });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliZXktbmctY29tcG9uZW50LWxpYnJhcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliZXktbmctY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi9saWJleS1uZy1jb21wb25lbnQtbGlicmFyeS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7QUFZbEQsTUFBTSxPQUFPLGdDQUFnQztJQUUzQyxnQkFBZ0IsQ0FBQztJQUVqQixRQUFRO0lBQ1IsQ0FBQzs7OEhBTFUsZ0NBQWdDO2tIQUFoQyxnQ0FBZ0MscUVBUmpDOzs7O0dBSVQ7NEZBSVUsZ0NBQWdDO2tCQVY1QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwrQkFBK0I7b0JBQ3pDLFFBQVEsRUFBRTs7OztHQUlUO29CQUNELE1BQU0sRUFBRSxFQUNQO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWxpYmV5LW5nQ29tcG9uZW50LWxpYnJhcnknLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxwPlxuICAgICAgbGliZXktbmctY29tcG9uZW50LWxpYnJhcnkgd29ya3MhXG4gICAgPC9wPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBMaWJleU5nQ29tcG9uZW50TGlicmFyeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgfVxuXG59XG4iXX0=
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliZXktbmctY29tcG9uZW50LWxpYnJhcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliZXktbmctY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi9saWJleS1uZy1jb21wb25lbnQtbGlicmFyeS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7QUFZbEQsTUFBTSxPQUFPLGdDQUFnQztJQUUzQyxnQkFBZ0IsQ0FBQztJQUVqQixRQUFRO0lBQ1IsQ0FBQzs7OEhBTFUsZ0NBQWdDO2tIQUFoQyxnQ0FBZ0MscUVBUmpDOzs7O0dBSVQ7NEZBSVUsZ0NBQWdDO2tCQVY1QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwrQkFBK0I7b0JBQ3pDLFFBQVEsRUFBRTs7OztHQUlUO29CQUNELE1BQU0sRUFBRSxFQUNQO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWxpYmV5LW5nQ29tcG9uZW50LWxpYnJhcnknLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8cD5cclxuICAgICAgbGliZXktbmctY29tcG9uZW50LWxpYnJhcnkgd29ya3MhXHJcbiAgICA8L3A+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaWJleU5nQ29tcG9uZW50TGlicmFyeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -5,6 +5,7 @@ import { LibeyNgTableModule } from './table/libey-ng-table.module';
5
5
  import { LibeyNgSignatureModule } from './signature/libey-ng-signature.module';
6
6
  import { SignaturePadModule } from 'angular2-signaturepad';
7
7
  import { IconsModule } from './icons/icons.module';
8
+ import { LibeyNgCpmIndicatorModule } from './cpm-indicator/libey-ng-cpm-indicator.module';
8
9
  import * as i0 from "@angular/core";
9
10
  export class LibeyNgComponentLibraryModule {
10
11
  }
@@ -14,21 +15,25 @@ LibeyNgComponentLibraryModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12
14
15
  LibeyNgTableModule,
15
16
  LibeyNgSignatureModule,
16
17
  SignaturePadModule,
17
- IconsModule], exports: [LibeyNgTableModule,
18
+ IconsModule,
19
+ LibeyNgCpmIndicatorModule], exports: [LibeyNgTableModule,
18
20
  LibeyNgSignatureModule,
19
21
  SignaturePadModule,
20
- IconsModule] });
22
+ IconsModule,
23
+ LibeyNgCpmIndicatorModule] });
21
24
  LibeyNgComponentLibraryModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: LibeyNgComponentLibraryModule, providers: [DatePipe], imports: [[
22
25
  CommonModule,
23
26
  FormsModule,
24
27
  LibeyNgTableModule,
25
28
  LibeyNgSignatureModule,
26
29
  SignaturePadModule,
27
- IconsModule
30
+ IconsModule,
31
+ LibeyNgCpmIndicatorModule,
28
32
  ], LibeyNgTableModule,
29
33
  LibeyNgSignatureModule,
30
34
  SignaturePadModule,
31
- IconsModule] });
35
+ IconsModule,
36
+ LibeyNgCpmIndicatorModule] });
32
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: LibeyNgComponentLibraryModule, decorators: [{
33
38
  type: NgModule,
34
39
  args: [{
@@ -39,15 +44,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
39
44
  LibeyNgTableModule,
40
45
  LibeyNgSignatureModule,
41
46
  SignaturePadModule,
42
- IconsModule
47
+ IconsModule,
48
+ LibeyNgCpmIndicatorModule,
43
49
  ],
44
50
  exports: [
45
51
  LibeyNgTableModule,
46
52
  LibeyNgSignatureModule,
47
53
  SignaturePadModule,
48
54
  IconsModule,
55
+ LibeyNgCpmIndicatorModule
49
56
  ],
50
57
  providers: [DatePipe]
51
58
  }]
52
59
  }] });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliZXktbmctY29tcG9uZW50LWxpYnJhcnkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliZXktbmctY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi9saWJleS1uZy1jb21wb25lbnQtbGlicmFyeS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBc0JuRCxNQUFNLE9BQU8sNkJBQTZCOzsySEFBN0IsNkJBQTZCOzRIQUE3Qiw2QkFBNkIsWUFmdEMsWUFBWTtRQUNaLFdBQVc7UUFDWCxrQkFBa0I7UUFDbEIsc0JBQXNCO1FBQ3RCLGtCQUFrQjtRQUNsQixXQUFXLGFBR1gsa0JBQWtCO1FBQ2xCLHNCQUFzQjtRQUN0QixrQkFBa0I7UUFDbEIsV0FBVzs0SEFJRiw2QkFBNkIsYUFGN0IsQ0FBQyxRQUFRLENBQUMsWUFkWjtZQUNQLFlBQVk7WUFDWixXQUFXO1lBQ1gsa0JBQWtCO1lBQ2xCLHNCQUFzQjtZQUN0QixrQkFBa0I7WUFDbEIsV0FBVztTQUNaLEVBRUMsa0JBQWtCO1FBQ2xCLHNCQUFzQjtRQUN0QixrQkFBa0I7UUFDbEIsV0FBVzs0RkFJRiw2QkFBNkI7a0JBbkJ6QyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxFQUNiO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixzQkFBc0I7d0JBQ3RCLGtCQUFrQjt3QkFDbEIsV0FBVztxQkFDWjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asa0JBQWtCO3dCQUNsQixzQkFBc0I7d0JBQ3RCLGtCQUFrQjt3QkFDbEIsV0FBVztxQkFDWjtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7aUJBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBMaWJleU5nVGFibGVNb2R1bGUgfSBmcm9tICcuL3RhYmxlL2xpYmV5LW5nLXRhYmxlLm1vZHVsZSc7XHJcbmltcG9ydCB7IExpYmV5TmdTaWduYXR1cmVNb2R1bGUgfSBmcm9tICcuL3NpZ25hdHVyZS9saWJleS1uZy1zaWduYXR1cmUubW9kdWxlJztcclxuaW1wb3J0IHsgU2lnbmF0dXJlUGFkTW9kdWxlIH0gZnJvbSAnYW5ndWxhcjItc2lnbmF0dXJlcGFkJztcclxuaW1wb3J0IHsgSWNvbnNNb2R1bGUgfSBmcm9tICcuL2ljb25zL2ljb25zLm1vZHVsZSc7XHJcblxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgTGliZXlOZ1RhYmxlTW9kdWxlLFxyXG4gICAgTGliZXlOZ1NpZ25hdHVyZU1vZHVsZSxcclxuICAgIFNpZ25hdHVyZVBhZE1vZHVsZSxcclxuICAgIEljb25zTW9kdWxlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBMaWJleU5nVGFibGVNb2R1bGUsXHJcbiAgICBMaWJleU5nU2lnbmF0dXJlTW9kdWxlLFxyXG4gICAgU2lnbmF0dXJlUGFkTW9kdWxlLFxyXG4gICAgSWNvbnNNb2R1bGUsXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtEYXRlUGlwZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIExpYmV5TmdDb21wb25lbnRMaWJyYXJ5TW9kdWxlIHsgfVxyXG4iXX0=
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliZXktbmctY29tcG9uZW50LWxpYnJhcnkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliZXktbmctY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi9saWJleS1uZy1jb21wb25lbnQtbGlicmFyeS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0NBQStDLENBQUM7O0FBd0IxRixNQUFNLE9BQU8sNkJBQTZCOzsySEFBN0IsNkJBQTZCOzRIQUE3Qiw2QkFBNkIsWUFqQnRDLFlBQVk7UUFDWixXQUFXO1FBQ1gsa0JBQWtCO1FBQ2xCLHNCQUFzQjtRQUN0QixrQkFBa0I7UUFDbEIsV0FBVztRQUNYLHlCQUF5QixhQUd6QixrQkFBa0I7UUFDbEIsc0JBQXNCO1FBQ3RCLGtCQUFrQjtRQUNsQixXQUFXO1FBQ1gseUJBQXlCOzRIQUloQiw2QkFBNkIsYUFGN0IsQ0FBQyxRQUFRLENBQUMsWUFoQlo7WUFDUCxZQUFZO1lBQ1osV0FBVztZQUNYLGtCQUFrQjtZQUNsQixzQkFBc0I7WUFDdEIsa0JBQWtCO1lBQ2xCLFdBQVc7WUFDWCx5QkFBeUI7U0FDMUIsRUFFQyxrQkFBa0I7UUFDbEIsc0JBQXNCO1FBQ3RCLGtCQUFrQjtRQUNsQixXQUFXO1FBQ1gseUJBQXlCOzRGQUloQiw2QkFBNkI7a0JBckJ6QyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxFQUNiO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixzQkFBc0I7d0JBQ3RCLGtCQUFrQjt3QkFDbEIsV0FBVzt3QkFDWCx5QkFBeUI7cUJBQzFCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsa0JBQWtCO3dCQUNsQixXQUFXO3dCQUNYLHlCQUF5QjtxQkFDMUI7b0JBQ0QsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2lCQUN0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTGliZXlOZ1RhYmxlTW9kdWxlIH0gZnJvbSAnLi90YWJsZS9saWJleS1uZy10YWJsZS5tb2R1bGUnO1xyXG5pbXBvcnQgeyBMaWJleU5nU2lnbmF0dXJlTW9kdWxlIH0gZnJvbSAnLi9zaWduYXR1cmUvbGliZXktbmctc2lnbmF0dXJlLm1vZHVsZSc7XHJcbmltcG9ydCB7IFNpZ25hdHVyZVBhZE1vZHVsZSB9IGZyb20gJ2FuZ3VsYXIyLXNpZ25hdHVyZXBhZCc7XHJcbmltcG9ydCB7IEljb25zTW9kdWxlIH0gZnJvbSAnLi9pY29ucy9pY29ucy5tb2R1bGUnO1xyXG5pbXBvcnQgeyBMaWJleU5nQ3BtSW5kaWNhdG9yTW9kdWxlIH0gZnJvbSAnLi9jcG0taW5kaWNhdG9yL2xpYmV5LW5nLWNwbS1pbmRpY2F0b3IubW9kdWxlJztcclxuXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBMaWJleU5nVGFibGVNb2R1bGUsXHJcbiAgICBMaWJleU5nU2lnbmF0dXJlTW9kdWxlLFxyXG4gICAgU2lnbmF0dXJlUGFkTW9kdWxlLFxyXG4gICAgSWNvbnNNb2R1bGUsXHJcbiAgICBMaWJleU5nQ3BtSW5kaWNhdG9yTW9kdWxlLFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgTGliZXlOZ1RhYmxlTW9kdWxlLFxyXG4gICAgTGliZXlOZ1NpZ25hdHVyZU1vZHVsZSxcclxuICAgIFNpZ25hdHVyZVBhZE1vZHVsZSxcclxuICAgIEljb25zTW9kdWxlLFxyXG4gICAgTGliZXlOZ0NwbUluZGljYXRvck1vZHVsZVxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbRGF0ZVBpcGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaWJleU5nQ29tcG9uZW50TGlicmFyeU1vZHVsZSB7IH1cclxuIl19
@@ -11,4 +11,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
11
11
  providedIn: 'root'
12
12
  }]
13
13
  }], ctorParameters: function () { return []; } });
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliZXktbmctY29tcG9uZW50LWxpYnJhcnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5L3NyYy9saWIvbGliZXktbmctY29tcG9uZW50LWxpYnJhcnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sOEJBQThCO0lBRXpDLGdCQUFnQixDQUFDOzs0SEFGTiw4QkFBOEI7Z0lBQTlCLDhCQUE4QixjQUY3QixNQUFNOzRGQUVQLDhCQUE4QjtrQkFIMUMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIExpYmV5TmdDb21wb25lbnRMaWJyYXJ5U2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cbn1cbiJdfQ==
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliZXktbmctY29tcG9uZW50LWxpYnJhcnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5L3NyYy9saWIvbGliZXktbmctY29tcG9uZW50LWxpYnJhcnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sOEJBQThCO0lBRXpDLGdCQUFnQixDQUFDOzs0SEFGTiw4QkFBOEI7Z0lBQTlCLDhCQUE4QixjQUY3QixNQUFNOzRGQUVQLDhCQUE4QjtrQkFIMUMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaWJleU5nQ29tcG9uZW50TGlicmFyeVNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG59XHJcbiJdfQ==
@@ -10,11 +10,14 @@ export * from './lib/table/directives/libey-column.directive';
10
10
  export * from './lib/signature/libey-ng-signature.module';
11
11
  export * from './lib/signature/libey-ng-signature/libey-ng-signature.component';
12
12
  export * from './utils/SigWeb/SigWeb';
13
+ export * from './utils/CpmIndicator/cpm-indicator-types';
13
14
  export * from './lib/icons/icons.module';
14
15
  export * from './lib/icons/libey-ng-icons/libey-ng-icons.component';
16
+ export * from './lib/cpm-indicator/libey-ng-cpm-indicator.module';
17
+ export * from './lib/cpm-indicator/libey-ng-cpm-indicator.component';
15
18
  import { SignaturePadModule, SignaturePad } from 'angular2-signaturepad';
16
19
  export { SignaturePadModule, SignaturePad };
17
20
  export { NgSelectModule } from '@ng-select/ng-select';
18
21
  export { NgbModule } from '@ng-bootstrap/ng-bootstrap';
19
22
  export * from '@popperjs/core';
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2xpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5L3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBsaWJleS1uZy1jb21wb25lbnQtbGlicmFyeVxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2xpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbGliZXktbmctY29tcG9uZW50LWxpYnJhcnkuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWJsZS9saWJleS1uZy10YWJsZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFibGUvbGliZXktbmctdGFibGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlL2RpcmVjdGl2ZXMvbGliZXktY29sdW1uLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaWduYXR1cmUvbGliZXktbmctc2lnbmF0dXJlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaWduYXR1cmUvbGliZXktbmctc2lnbmF0dXJlL2xpYmV5LW5nLXNpZ25hdHVyZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9TaWdXZWIvU2lnV2ViJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ljb25zL2ljb25zLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pY29ucy9saWJleS1uZy1pY29ucy9saWJleS1uZy1pY29ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2lnbmF0dXJlUGFkTW9kdWxlLCBTaWduYXR1cmVQYWQgfSBmcm9tICdhbmd1bGFyMi1zaWduYXR1cmVwYWQnO1xuZXhwb3J0IHsgU2lnbmF0dXJlUGFkTW9kdWxlLCBTaWduYXR1cmVQYWQgfTtcbmV4cG9ydCB7IE5nU2VsZWN0TW9kdWxlIH0gZnJvbSAnQG5nLXNlbGVjdC9uZy1zZWxlY3QnO1xuZXhwb3J0IHsgTmdiTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuZXhwb3J0ICogZnJvbSAnQHBvcHBlcmpzL2NvcmUnO1xuIl19
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2xpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5L3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLHNEQUFzRCxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGxpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5XHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbGliZXktbmctY29tcG9uZW50LWxpYnJhcnkuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5Lm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlL2xpYmV5LW5nLXRhYmxlLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlL2xpYmV5LW5nLXRhYmxlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlL2RpcmVjdGl2ZXMvbGliZXktY29sdW1uLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NpZ25hdHVyZS9saWJleS1uZy1zaWduYXR1cmUubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2lnbmF0dXJlL2xpYmV5LW5nLXNpZ25hdHVyZS9saWJleS1uZy1zaWduYXR1cmUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi91dGlscy9TaWdXZWIvU2lnV2ViJztcclxuZXhwb3J0ICogZnJvbSAnLi91dGlscy9DcG1JbmRpY2F0b3IvY3BtLWluZGljYXRvci10eXBlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ljb25zL2ljb25zLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ljb25zL2xpYmV5LW5nLWljb25zL2xpYmV5LW5nLWljb25zLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NwbS1pbmRpY2F0b3IvbGliZXktbmctY3BtLWluZGljYXRvci5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jcG0taW5kaWNhdG9yL2xpYmV5LW5nLWNwbS1pbmRpY2F0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2lnbmF0dXJlUGFkTW9kdWxlLCBTaWduYXR1cmVQYWQgfSBmcm9tICdhbmd1bGFyMi1zaWduYXR1cmVwYWQnO1xyXG5leHBvcnQgeyBTaWduYXR1cmVQYWRNb2R1bGUsIFNpZ25hdHVyZVBhZCB9O1xyXG5leHBvcnQgeyBOZ1NlbGVjdE1vZHVsZSB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0JztcclxuZXhwb3J0IHsgTmdiTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5leHBvcnQgKiBmcm9tICdAcG9wcGVyanMvY29yZSc7XHJcbiJdfQ==
@@ -0,0 +1,25 @@
1
+ // Modos de visualización del indicador
2
+ export var CpmIndicatorMode;
3
+ (function (CpmIndicatorMode) {
4
+ CpmIndicatorMode["Cpm"] = "cpm";
5
+ CpmIndicatorMode["Gauge"] = "gauge";
6
+ })(CpmIndicatorMode || (CpmIndicatorMode = {}));
7
+ // Tipo de ítem: gasto ya consumido (Base) o estimado (Projected)
8
+ export var CpmItemType;
9
+ (function (CpmItemType) {
10
+ CpmItemType["Base"] = "base";
11
+ CpmItemType["Projected"] = "projected";
12
+ })(CpmItemType || (CpmItemType = {}));
13
+ // Tercios por defecto si no se proporcionan thresholds
14
+ export const DEFAULT_THRESHOLDS = {
15
+ zone1Max: 1 / 3,
16
+ zone2Max: 2 / 3,
17
+ zone3Max: 1.0,
18
+ };
19
+ export const ZONE_COLORS = {
20
+ zone1: { dark: '#16a34a', light: '#86efac' },
21
+ zone2: { dark: '#ca8a04', light: '#fde68a' },
22
+ zone3: { dark: '#ea580c', light: '#fdba74' },
23
+ zone4: { dark: '#dc2626', light: '#fca5a5' }, // Rojo
24
+ };
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BtLWluZGljYXRvci10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5L3NyYy91dGlscy9DcG1JbmRpY2F0b3IvY3BtLWluZGljYXRvci10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1Q0FBdUM7QUFDdkMsTUFBTSxDQUFOLElBQVksZ0JBR1g7QUFIRCxXQUFZLGdCQUFnQjtJQUMxQiwrQkFBYSxDQUFBO0lBQ2IsbUNBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSFcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUczQjtBQUVELGlFQUFpRTtBQUNqRSxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLDRCQUFrQixDQUFBO0lBQ2xCLHNDQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QjtBQWtDRCx1REFBdUQ7QUFDdkQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQWtCO0lBQy9DLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNmLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNmLFFBQVEsRUFBRSxHQUFHO0NBQ2QsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBOEI7SUFDcEQsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQzVDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtJQUM1QyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7SUFDNUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsT0FBTztDQUN0RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTW9kb3MgZGUgdmlzdWFsaXphY2nDs24gZGVsIGluZGljYWRvclxyXG5leHBvcnQgZW51bSBDcG1JbmRpY2F0b3JNb2RlIHtcclxuICBDcG0gICA9ICdjcG0nLFxyXG4gIEdhdWdlID0gJ2dhdWdlJyxcclxufVxyXG5cclxuLy8gVGlwbyBkZSDDrXRlbTogZ2FzdG8geWEgY29uc3VtaWRvIChCYXNlKSBvIGVzdGltYWRvIChQcm9qZWN0ZWQpXHJcbmV4cG9ydCBlbnVtIENwbUl0ZW1UeXBlIHtcclxuICBCYXNlICAgICAgPSAnYmFzZScsXHJcbiAgUHJvamVjdGVkID0gJ3Byb2plY3RlZCcsXHJcbn1cclxuXHJcbi8vIEVsIHBhZHJlIGV4Y2x1eWUgbG9zIMOtdGVtcyBxdWUgbm8gYXBsaWNhbiBhbCBDUE0gYW50ZXMgZGUgYXJtYXIgZXN0YSBsaXN0YVxyXG5leHBvcnQgaW50ZXJmYWNlIENwbUl0ZW0ge1xyXG4gIGlkOiAgICAgc3RyaW5nIHwgbnVtYmVyO1xyXG4gIGFtb3VudDogbnVtYmVyO1xyXG4gIHR5cGU6ICAgQ3BtSXRlbVR5cGU7XHJcbn1cclxuXHJcbi8vIFBvcmNlbnRhamVzIGRlbCBsw61taXRlICgwLjAg4oaSIDEuMCkuIExhIHpvbmEgNCAocm9qbykgZXMgYXV0b23DoXRpY2FcclxuZXhwb3J0IGludGVyZmFjZSBDcG1UaHJlc2hvbGRzIHtcclxuICB6b25lMU1heDogbnVtYmVyO1xyXG4gIHpvbmUyTWF4OiBudW1iZXI7XHJcbiAgem9uZTNNYXg6IG51bWJlcjtcclxufVxyXG5cclxuLy8gUmVzdW1lbiBxdWUgZW1pdGUgZWwgY29tcG9uZW50ZSBwYXJhIHBlcnNpc3RpciBlbiBCRFxyXG5leHBvcnQgaW50ZXJmYWNlIENwbVN1bW1hcnkge1xyXG4gIGJhc2VBbW91bnQ6ICAgICAgbnVtYmVyO1xyXG4gIHByb2plY3RlZEFtb3VudDogbnVtYmVyO1xyXG4gIHRvdGFsQW1vdW50OiAgICAgbnVtYmVyO1xyXG4gIGxpbWl0OiAgICAgICAgICAgbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFpvbmVDb2xvciB7XHJcbiAgZGFyazogIHN0cmluZztcclxuICBsaWdodDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFN2Z1BvaW50IHtcclxuICB4OiBudW1iZXI7XHJcbiAgeTogbnVtYmVyO1xyXG59XHJcblxyXG4vLyBUZXJjaW9zIHBvciBkZWZlY3RvIHNpIG5vIHNlIHByb3BvcmNpb25hbiB0aHJlc2hvbGRzXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX1RIUkVTSE9MRFM6IENwbVRocmVzaG9sZHMgPSB7XHJcbiAgem9uZTFNYXg6IDEgLyAzLFxyXG4gIHpvbmUyTWF4OiAyIC8gMyxcclxuICB6b25lM01heDogMS4wLFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IFpPTkVfQ09MT1JTOiBSZWNvcmQ8c3RyaW5nLCBab25lQ29sb3I+ID0ge1xyXG4gIHpvbmUxOiB7IGRhcms6ICcjMTZhMzRhJywgbGlnaHQ6ICcjODZlZmFjJyB9LCAvLyBWZXJkZVxyXG4gIHpvbmUyOiB7IGRhcms6ICcjY2E4YTA0JywgbGlnaHQ6ICcjZmRlNjhhJyB9LCAvLyBBbWFyaWxsb1xyXG4gIHpvbmUzOiB7IGRhcms6ICcjZWE1ODBjJywgbGlnaHQ6ICcjZmRiYTc0JyB9LCAvLyBOYXJhbmphXHJcbiAgem9uZTQ6IHsgZGFyazogJyNkYzI2MjYnLCBsaWdodDogJyNmY2E1YTUnIH0sIC8vIFJvam9cclxufTsiXX0=