valtech-components 4.0.418 → 4.0.420
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/components/organisms/mini-games/bubble-blitz-game.component.mjs +732 -0
- package/esm2022/lib/components/organisms/mini-games/chessimals-game.component.mjs +9 -7
- package/esm2022/lib/components/organisms/mini-games/memory-game.component.mjs +151 -14
- package/esm2022/lib/components/organisms/mini-games/mini-games-menu.component.mjs +4 -2
- package/esm2022/lib/components/organisms/mini-games/mini-games.i18n.mjs +59 -1
- package/esm2022/lib/components/organisms/mini-games/simon-game.component.mjs +149 -12
- package/esm2022/lib/components/organisms/mini-games/types.mjs +1 -1
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/mini-games/public-api.mjs +44 -14
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/valtech-components-mini-games.mjs +44 -14
- package/fesm2022/valtech-components-mini-games.mjs.map +1 -1
- package/fesm2022/valtech-components.mjs +1210 -157
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/mini-games/bubble-blitz-game.component.d.ts +99 -0
- package/lib/components/organisms/mini-games/chessimals-game.component.d.ts +1 -1
- package/lib/components/organisms/mini-games/memory-game.component.d.ts +16 -1
- package/lib/components/organisms/mini-games/simon-game.component.d.ts +16 -1
- package/lib/components/organisms/mini-games/types.d.ts +11 -0
- package/lib/version.d.ts +1 -1
- package/mini-games/public-api.d.ts +4 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { Component, computed, inject, signal } from '@angular/core';
|
|
2
|
-
import {
|
|
1
|
+
import { Component, Input, computed, inject, signal } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { IonIcon, IonModal } from '@ionic/angular/standalone';
|
|
3
4
|
import { addIcons } from 'ionicons';
|
|
4
5
|
import { trophyOutline } from 'ionicons/icons';
|
|
5
6
|
import { I18nService } from '../../../services/i18n';
|
|
6
7
|
import { MINI_GAMES_I18N } from './mini-games.i18n';
|
|
7
8
|
import { RetroAudioService } from './retro-audio.service';
|
|
9
|
+
import { ModalLayoutComponent } from '../../molecules/modal-layout/modal-layout.component';
|
|
8
10
|
import * as i0 from "@angular/core";
|
|
9
11
|
addIcons({ trophyOutline });
|
|
10
12
|
const SIMON_MODES = {
|
|
@@ -22,9 +24,11 @@ const LEADERBOARD_KEY = 'val-mini-games-simon-leaderboard:v1';
|
|
|
22
24
|
export class SimonGameComponent {
|
|
23
25
|
constructor() {
|
|
24
26
|
this.i18n = inject(I18nService);
|
|
27
|
+
this.router = inject(Router);
|
|
25
28
|
this.audio = inject(RetroAudioService);
|
|
26
29
|
this.timers = [];
|
|
27
30
|
this.acceptingInput = false;
|
|
31
|
+
this.miniGamesRoute = '/mini-games';
|
|
28
32
|
this.modes = ['kid', 'classic', 'ninja'];
|
|
29
33
|
this.pads = SIMON_PADS;
|
|
30
34
|
this.phase = signal('home');
|
|
@@ -34,6 +38,7 @@ export class SimonGameComponent {
|
|
|
34
38
|
this.inputIndex = signal(0);
|
|
35
39
|
this.activePad = signal(undefined);
|
|
36
40
|
this.leaderboard = signal(this.readLeaderboard());
|
|
41
|
+
this.confirmAction = signal(undefined);
|
|
37
42
|
this.modeConfig = computed(() => SIMON_MODES[this.mode()]);
|
|
38
43
|
this.bestRound = computed(() => this.modeLeaderboard()[0]?.round ?? 0);
|
|
39
44
|
this.modeLeaderboard = computed(() => this.leaderboard()
|
|
@@ -42,6 +47,46 @@ export class SimonGameComponent {
|
|
|
42
47
|
.slice(0, 5));
|
|
43
48
|
this.leaderboardHeading = computed(() => this.t('simonLeaderboardModeTitle').replace('{mode}', this.modeTitle(this.mode())));
|
|
44
49
|
this.failBody = computed(() => this.t('simonFailedBody').replace('{round}', String(Math.max(0, this.round() - 1))));
|
|
50
|
+
this.confirmTitle = computed(() => {
|
|
51
|
+
const action = this.confirmAction();
|
|
52
|
+
if (action === 'restart')
|
|
53
|
+
return this.t('confirmRestartTitle');
|
|
54
|
+
if (action === 'games')
|
|
55
|
+
return this.t('confirmGamesTitle');
|
|
56
|
+
return this.t('confirmModeTitle');
|
|
57
|
+
});
|
|
58
|
+
this.confirmBody = computed(() => {
|
|
59
|
+
const action = this.confirmAction();
|
|
60
|
+
if (action === 'restart')
|
|
61
|
+
return this.t('confirmRestartBody');
|
|
62
|
+
if (action === 'games')
|
|
63
|
+
return this.t('confirmGamesBody');
|
|
64
|
+
return this.t('confirmModeBody');
|
|
65
|
+
});
|
|
66
|
+
this.confirmActions = computed(() => [
|
|
67
|
+
{
|
|
68
|
+
text: this.t('cancel'),
|
|
69
|
+
color: 'dark',
|
|
70
|
+
state: 'ENABLED',
|
|
71
|
+
fill: 'outline',
|
|
72
|
+
shape: 'round',
|
|
73
|
+
type: 'button',
|
|
74
|
+
token: 'cancel',
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
text: this.confirmAction() === 'restart'
|
|
78
|
+
? this.t('restart')
|
|
79
|
+
: this.confirmAction() === 'games'
|
|
80
|
+
? this.t('changeGame')
|
|
81
|
+
: this.t('backToSetup'),
|
|
82
|
+
color: 'dark',
|
|
83
|
+
state: 'ENABLED',
|
|
84
|
+
fill: 'outline',
|
|
85
|
+
shape: 'round',
|
|
86
|
+
type: 'button',
|
|
87
|
+
token: 'confirm',
|
|
88
|
+
},
|
|
89
|
+
]);
|
|
45
90
|
this.i18n.registerDefaults('MiniGames', MINI_GAMES_I18N);
|
|
46
91
|
this.audio.stopMusic();
|
|
47
92
|
}
|
|
@@ -78,6 +123,40 @@ export class SimonGameComponent {
|
|
|
78
123
|
this.inputIndex.set(0);
|
|
79
124
|
this.activePad.set(undefined);
|
|
80
125
|
}
|
|
126
|
+
requestRestartGame() {
|
|
127
|
+
this.confirmAction.set('restart');
|
|
128
|
+
this.audio.flip();
|
|
129
|
+
}
|
|
130
|
+
requestChangeMode() {
|
|
131
|
+
this.confirmAction.set('mode');
|
|
132
|
+
this.audio.flip();
|
|
133
|
+
}
|
|
134
|
+
requestChangeGame() {
|
|
135
|
+
this.confirmAction.set('games');
|
|
136
|
+
this.audio.flip();
|
|
137
|
+
}
|
|
138
|
+
closeConfirmModal() {
|
|
139
|
+
this.confirmAction.set(undefined);
|
|
140
|
+
}
|
|
141
|
+
confirmPendingAction(token) {
|
|
142
|
+
if (token !== 'confirm') {
|
|
143
|
+
this.closeConfirmModal();
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
const action = this.confirmAction();
|
|
147
|
+
this.confirmAction.set(undefined);
|
|
148
|
+
if (action === 'restart') {
|
|
149
|
+
this.start();
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
if (action === 'mode') {
|
|
153
|
+
this.resetToSetup();
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
if (action === 'games') {
|
|
157
|
+
this.resetToGamesMenu();
|
|
158
|
+
}
|
|
159
|
+
}
|
|
81
160
|
tap(pad) {
|
|
82
161
|
if (this.phase() !== 'waiting' || !this.acceptingInput)
|
|
83
162
|
return;
|
|
@@ -177,6 +256,14 @@ export class SimonGameComponent {
|
|
|
177
256
|
// El ranking local no es crítico si storage no está disponible.
|
|
178
257
|
}
|
|
179
258
|
}
|
|
259
|
+
resetToGamesMenu() {
|
|
260
|
+
this.resetToSetup();
|
|
261
|
+
void this.router.navigateByUrl(this.miniGamesBaseRoute()).catch(() => undefined);
|
|
262
|
+
}
|
|
263
|
+
miniGamesBaseRoute() {
|
|
264
|
+
const route = (this.miniGamesRoute || '/mini-games').trim();
|
|
265
|
+
return `/${route.replace(/^\/+|\/+$/g, '') || 'mini-games'}`;
|
|
266
|
+
}
|
|
180
267
|
readLeaderboard() {
|
|
181
268
|
try {
|
|
182
269
|
const raw = localStorage.getItem(LEADERBOARD_KEY);
|
|
@@ -201,7 +288,7 @@ export class SimonGameComponent {
|
|
|
201
288
|
return `${value.charAt(0).toUpperCase()}${value.slice(1)}`;
|
|
202
289
|
}
|
|
203
290
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SimonGameComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
204
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SimonGameComponent, isStandalone: true, selector: "val-simon-game", ngImport: i0, template: `
|
|
291
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SimonGameComponent, isStandalone: true, selector: "val-simon-game", inputs: { miniGamesRoute: "miniGamesRoute" }, ngImport: i0, template: `
|
|
205
292
|
<main class="simon-shell">
|
|
206
293
|
@if (phase() === 'home') {
|
|
207
294
|
<section class="simon-hero">
|
|
@@ -230,6 +317,11 @@ export class SimonGameComponent {
|
|
|
230
317
|
</div>
|
|
231
318
|
|
|
232
319
|
<button class="simon-primary" type="button" (click)="start()">{{ t('simonStart') }}</button>
|
|
320
|
+
<div class="simon-menu-actions">
|
|
321
|
+
<button class="simon-secondary" type="button" (click)="requestChangeGame()">
|
|
322
|
+
{{ t('changeGame') }}
|
|
323
|
+
</button>
|
|
324
|
+
</div>
|
|
233
325
|
</section>
|
|
234
326
|
} @else {
|
|
235
327
|
<section class="simon-game">
|
|
@@ -277,8 +369,9 @@ export class SimonGameComponent {
|
|
|
277
369
|
</div>
|
|
278
370
|
|
|
279
371
|
<div class="simon-actions">
|
|
280
|
-
<button class="simon-secondary" type="button" (click)="
|
|
281
|
-
<button class="simon-
|
|
372
|
+
<button class="simon-secondary" type="button" (click)="requestChangeMode()">{{ t('backToSetup') }}</button>
|
|
373
|
+
<button class="simon-secondary" type="button" (click)="requestChangeGame()">{{ t('changeGame') }}</button>
|
|
374
|
+
<button class="simon-primary" type="button" (click)="requestRestartGame()">{{ t('restart') }}</button>
|
|
282
375
|
</div>
|
|
283
376
|
</section>
|
|
284
377
|
}
|
|
@@ -303,11 +396,29 @@ export class SimonGameComponent {
|
|
|
303
396
|
}
|
|
304
397
|
</section>
|
|
305
398
|
</main>
|
|
306
|
-
|
|
399
|
+
|
|
400
|
+
<ion-modal
|
|
401
|
+
[isOpen]="!!confirmAction()"
|
|
402
|
+
cssClass="val-modal-adaptive"
|
|
403
|
+
(didDismiss)="closeConfirmModal()"
|
|
404
|
+
>
|
|
405
|
+
<ng-template>
|
|
406
|
+
<val-modal-layout
|
|
407
|
+
[title]="confirmTitle()"
|
|
408
|
+
[subtitle]="confirmBody()"
|
|
409
|
+
[closeLabel]="t('close')"
|
|
410
|
+
[actions]="confirmActions()"
|
|
411
|
+
actionsAlign="end"
|
|
412
|
+
(close)="closeConfirmModal()"
|
|
413
|
+
(actionClick)="confirmPendingAction($event.action?.token)"
|
|
414
|
+
/>
|
|
415
|
+
</ng-template>
|
|
416
|
+
</ion-modal>
|
|
417
|
+
`, isInline: true, styles: [":host{display:block}.simon-shell{--simon-panel: var(--ion-card-background, #ffffff);--simon-border: var(--ion-border-color, #e7e4ea);--simon-text: var(--ion-color-dark, #2f2a3a);--simon-muted: var(--ion-color-medium, #6f6a7a);--simon-soft: rgba(var(--ion-color-primary-rgb, 255, 0, 178), .08);--simon-primary: var(--ion-color-primary, #ff00b2);--simon-secondary: var(--ion-color-tertiary, #6a2de2);display:grid;gap:18px;max-width:760px;margin:0 auto;color:var(--simon-text)}:host-context(html.ion-palette-dark) .simon-shell,:host-context([data-theme=\"dark\"]) .simon-shell{--simon-panel: #231f2d;--simon-border: rgba(255, 255, 255, .13);--simon-text: #fff8ff;--simon-muted: rgba(255, 248, 255, .68);--simon-soft: rgba(255, 255, 255, .07)}.simon-hero{display:grid;gap:10px;overflow:hidden;border-radius:28px;padding:clamp(28px,7vw,54px);background:radial-gradient(circle at 20% 18%,rgba(255,255,255,.55),transparent 18%),linear-gradient(135deg,var(--simon-primary),var(--simon-secondary));color:#fff;text-align:center}.simon-hero__spark{font-size:1.8rem;letter-spacing:.2em}.simon-hero h1{margin:0;font-size:clamp(48px,14vw,86px);line-height:.9;font-weight:950}.simon-hero p,.simon-howto p,.simon-callout p,.simon-leaderboard p{margin:0;color:inherit;line-height:1.45}.simon-panel,.simon-game,.simon-leaderboard{display:grid;gap:16px;border:1px solid var(--simon-border);border-radius:26px;padding:clamp(16px,4vw,24px);background:var(--simon-panel)}.simon-howto{display:grid;gap:6px;padding:16px;border-radius:20px;background:var(--simon-soft)}.simon-howto h2,.simon-leaderboard h2{margin:0;color:var(--simon-text)}.simon-howto p,.simon-leaderboard p{color:var(--simon-muted)}.simon-modes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.simon-modes button{display:grid;gap:6px;min-height:126px;padding:14px;border:1px solid var(--simon-border);border-radius:22px;background:var(--simon-panel);color:var(--simon-text);font:inherit;text-align:left}.simon-modes button.is-selected{border-color:var(--simon-primary);box-shadow:0 0 0 2px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.16)}.simon-modes strong{font-size:1rem;font-weight:950}.simon-modes small,.simon-status small,.simon-leaderboard small{color:var(--simon-muted)}.simon-primary,.simon-secondary{min-height:58px;border-radius:999px;font:inherit;font-weight:950}.simon-primary{border:0;background:var(--simon-primary);color:var(--ion-color-primary-contrast, #fff);box-shadow:0 18px 45px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.28)}.simon-secondary{border:1px solid var(--simon-border);background:transparent;color:var(--simon-text)}.simon-status{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.simon-status div{display:grid;gap:2px;padding:14px;border-radius:18px;background:var(--simon-soft)}.simon-status strong{font-size:2rem;line-height:1}.simon-callout{display:grid;gap:4px;min-height:76px;align-content:center;padding:16px;border-radius:20px;background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.12);color:var(--simon-text);text-align:center}.simon-callout.is-failed{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.simon-board{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;width:min(100%,480px);margin:0 auto}.simon-pad{aspect-ratio:1;border:0;border-radius:34px;background:radial-gradient(circle at 30% 25%,rgba(255,255,255,.7),transparent 28%),var(--pad-color);color:#fff;font:inherit;font-size:clamp(28px,9vw,56px);font-weight:950;box-shadow:inset 0 -12px 22px #00000029,0 18px 42px color-mix(in srgb,var(--pad-color),transparent 68%);opacity:.82;transform:scale(.98);transition:opacity .14s ease,transform .14s ease,filter .14s ease}.simon-pad.is-active{opacity:1;filter:brightness(1.3) saturate(1.2);transform:scale(1.035)}.simon-board.is-locked .simon-pad:not(.is-active){opacity:.48}.simon-actions{position:sticky;bottom:10px;z-index:2;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:4px;padding-top:12px;background:linear-gradient(to bottom,transparent,var(--simon-panel) 28%)}.simon-menu-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:10px}.simon-leaderboard__title{display:flex;align-items:center;gap:10px}.simon-leaderboard__title ion-icon{color:var(--simon-primary);font-size:1.4rem}.simon-leaderboard ol{display:grid;gap:8px;margin:0;padding:0;list-style:none}.simon-leaderboard li{display:grid;grid-template-columns:38px 1fr auto;gap:10px;align-items:center;padding:12px;border-radius:16px;background:var(--simon-soft)}.simon-leaderboard li>span{display:grid;place-items:center;width:34px;height:34px;border-radius:999px;background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.18);color:var(--simon-primary);font-weight:950}@media (max-width: 560px){.simon-modes,.simon-status,.simon-actions,.simon-menu-actions{grid-template-columns:1fr}.simon-board{gap:10px}.simon-pad{border-radius:26px}}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: ModalLayoutComponent, selector: "val-modal-layout", inputs: ["title", "subtitle", "closeLabel", "showClose", "actions", "actionsAlign", "footer", "footerClass"], outputs: ["close", "actionClick"] }] }); }
|
|
307
418
|
}
|
|
308
419
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SimonGameComponent, decorators: [{
|
|
309
420
|
type: Component,
|
|
310
|
-
args: [{ selector: 'val-simon-game', standalone: true, imports: [IonIcon], template: `
|
|
421
|
+
args: [{ selector: 'val-simon-game', standalone: true, imports: [IonIcon, IonModal, ModalLayoutComponent], template: `
|
|
311
422
|
<main class="simon-shell">
|
|
312
423
|
@if (phase() === 'home') {
|
|
313
424
|
<section class="simon-hero">
|
|
@@ -336,6 +447,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
336
447
|
</div>
|
|
337
448
|
|
|
338
449
|
<button class="simon-primary" type="button" (click)="start()">{{ t('simonStart') }}</button>
|
|
450
|
+
<div class="simon-menu-actions">
|
|
451
|
+
<button class="simon-secondary" type="button" (click)="requestChangeGame()">
|
|
452
|
+
{{ t('changeGame') }}
|
|
453
|
+
</button>
|
|
454
|
+
</div>
|
|
339
455
|
</section>
|
|
340
456
|
} @else {
|
|
341
457
|
<section class="simon-game">
|
|
@@ -383,8 +499,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
383
499
|
</div>
|
|
384
500
|
|
|
385
501
|
<div class="simon-actions">
|
|
386
|
-
<button class="simon-secondary" type="button" (click)="
|
|
387
|
-
<button class="simon-
|
|
502
|
+
<button class="simon-secondary" type="button" (click)="requestChangeMode()">{{ t('backToSetup') }}</button>
|
|
503
|
+
<button class="simon-secondary" type="button" (click)="requestChangeGame()">{{ t('changeGame') }}</button>
|
|
504
|
+
<button class="simon-primary" type="button" (click)="requestRestartGame()">{{ t('restart') }}</button>
|
|
388
505
|
</div>
|
|
389
506
|
</section>
|
|
390
507
|
}
|
|
@@ -409,6 +526,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
409
526
|
}
|
|
410
527
|
</section>
|
|
411
528
|
</main>
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltb24tZ2FtZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21pbmktZ2FtZXMvc2ltb24tZ2FtZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFHMUQsUUFBUSxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztBQWdCNUIsTUFBTSxXQUFXLEdBQTJDO0lBQzFELEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUU7SUFDNUQsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRTtJQUNwRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFO0NBQ2pFLENBQUM7QUFFRixNQUFN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QixrQkFBa0IsMEVBOVluQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0dULDB3SkF2R1MsT0FBTzs7NEZBK1lOLGtCQUFrQjtrQkFsWjlCLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQLENBQUMsT0FBTyxDQUFDLFlBQ1I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNHVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBjb21wdXRlZCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkljb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgdHJvcGh5T3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE1JTklfR0FNRVNfSTE4TiB9IGZyb20gJy4vbWluaS1nYW1lcy5pMThuJztcbmltcG9ydCB7IFJldHJvQXVkaW9TZXJ2aWNlIH0gZnJvbSAnLi9yZXRyby1hdWRpby5zZXJ2aWNlJztcbmltcG9ydCB7IFNpbW9uR2FtZU1vZGUsIFNpbW9uR2FtZVBoYXNlLCBTaW1vblBhZCB9IGZyb20gJy4vdHlwZXMnO1xuXG5hZGRJY29ucyh7IHRyb3BoeU91dGxpbmUgfSk7XG5cbmludGVyZmFjZSBTaW1vbk1vZGVDb25maWcge1xuICBtb2RlOiBTaW1vbkdhbWVNb2RlO1xuICBzaG93TXM6IG51bWJlcjtcbiAgZ2FwTXM6IG51bWJlcjtcbiAgc3RhcnRTdGVwczogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgU2ltb25MZWFkZXJib2FyZEVudHJ5IHtcbiAgbW9kZTogU2ltb25HYW1lTW9kZTtcbiAgcm91bmQ6IG51bWJlcjtcbiAgc3RlcHM6IG51bWJlcjtcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG59XG5cbmNvbnN0IFNJTU9OX01PREVTOiBSZWNvcmQ8U2ltb25HYW1lTW9kZSwgU2ltb25Nb2RlQ29uZmlnPiA9IHtcbiAga2lkOiB7IG1vZGU6ICdraWQnLCBzaG93TXM6IDcyMCwgZ2FwTXM6IDI4MCwgc3RhcnRTdGVwczogMSB9LFxuICBjbGFzc2ljOiB7IG1vZGU6ICdjbGFzc2ljJywgc2hvd01zOiA1MjAsIGdhcE1zOiAyMTAsIHN0YXJ0U3RlcHM6IDEgfSxcbiAgbmluamE6IHsgbW9kZTogJ25pbmphJywgc2hvd01zOiAzNDAsIGdhcE1zOiAxNTAsIHN0YXJ0U3RlcHM6IDIgfSxcbn07XG5cbmNvbnN0IFNJTU9OX1BBRFM6IFNpbW9uUGFkW10gPSBbXG4gIHsgaWQ6ICdwaW5rJywgbGFiZWw6ICcxJywgY29sb3I6ICcjZmYwMGIyJywgdG9uZTogMzI5LjYzIH0sXG4gIHsgaWQ6ICdjeWFuJywgbGFiZWw6ICcyJywgY29sb3I6ICcjMDBiY2Q0JywgdG9uZTogMzkyIH0sXG4gIHsgaWQ6ICd5ZWxsb3cnLCBsYWJlbDogJzMnLCBjb2xvcjogJyNmZmM0MDknLCB0b25lOiA0OTMuODggfSxcbiAgeyBpZDogJ3B1cnBsZScsIGxhYmVsOiAnNCcsIGNvbG9yOiAnIzZhMmRlMicsIHRvbmU6IDY1OS4yNSB9LFxuXTtcblxuY29uc3QgTEVBREVSQk9BUkRfS0VZID0gJ3ZhbC1taW5pLWdhbWVzLXNpbW9uLWxlYWRlcmJvYXJkOnYxJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXNpbW9uLWdhbWUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbSW9uSWNvbl0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPG1haW4gY2xhc3M9XCJzaW1vbi1zaGVsbFwiPlxuICAgICAgQGlmIChwaGFzZSgpID09PSAnaG9tZScpIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzaW1vbi1oZXJvXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzaW1vbi1oZXJvX19zcGFya1wiPuKXjyDil48g4pePIOKXjzwvc3Bhbj5cbiAgICAgICAgICA8aDE+e3sgdCgnc2ltb25Ib21lVGl0bGUnKSB9fTwvaDE+XG4gICAgICAgICAgPHA+e3sgdCgnc2ltb25Ib21lU3VidGl0bGUnKSB9fTwvcD5cbiAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2ltb24tcGFuZWxcIj5cbiAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cInNpbW9uLWhvd3RvXCI+XG4gICAgICAgICAgICA8aDI+e3sgdCgnc2ltb25Ib3dUb1RpdGxlJykgfX08L2gyPlxuICAgICAgICAgICAgPHA+e3sgdCgnc2ltb25Ib3dUb0JvZHknKSB9fTwvcD5cbiAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2ltb24tbW9kZXNcIiByb2xlPVwicmFkaW9ncm91cFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnbW9kZVRpdGxlJylcIj5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgbW9kZXM7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJtb2RlKCkgPT09IGl0ZW1cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RNb2RlKGl0ZW0pXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgbW9kZVRpdGxlKGl0ZW0pIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IG1vZGVEZXNjcmlwdGlvbihpdGVtKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNpbW9uLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInN0YXJ0KClcIj57eyB0KCdzaW1vblN0YXJ0JykgfX08L2J1dHRvbj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2ltb24tZ2FtZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW1vbi1zdGF0dXNcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdzaW1vblJvdW5kJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHJvdW5kKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ3NpbW9uU3RlcHMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgc2VxdWVuY2UoKS5sZW5ndGggfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ3NpbW9uQmVzdFJvdW5kJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IGJlc3RSb3VuZCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW1vbi1jYWxsb3V0XCIgW2NsYXNzLmlzLWZhaWxlZF09XCJwaGFzZSgpID09PSAnZmFpbGVkJ1wiPlxuICAgICAgICAgICAgQGlmIChwaGFzZSgpID09PSAnc2hvd2luZycpIHtcbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdzaW1vbldhdGNoJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKHBoYXNlKCkgPT09ICd3YWl0aW5nJykge1xuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ3NpbW9uUmVwZWF0JykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKHBoYXNlKCkgPT09ICdzdWNjZXNzJykge1xuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ3NpbW9uR29vZCcpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdzaW1vbkZhaWxlZCcpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxwPnt7IGZhaWxCb2R5KCkgfX08L3A+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2ltb24tYm9hcmRcIiBbY2xhc3MuaXMtbG9ja2VkXT1cInBoYXNlKCkgIT09ICd3YWl0aW5nJ1wiPlxuICAgICAgICAgICAgQGZvciAocGFkIG9mIHBhZHM7IHRyYWNrIHBhZC5pZCkge1xuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzaW1vbi1wYWRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtzdHlsZS4tLXBhZC1jb2xvcl09XCJwYWQuY29sb3JcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1hY3RpdmVdPVwiYWN0aXZlUGFkKCkgPT09IHBhZC5pZFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInBoYXNlKCkgIT09ICd3YWl0aW5nJ1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRhcChwYWQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHBhZC5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2ltb24tYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNpbW9uLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVzZXRUb1NldHVwKClcIj57eyB0KCdiYWNrVG9TZXR1cCcpIH19PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2ltb24tcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3RhcnQoKVwiPnt7IHQoJ3Jlc3RhcnQnKSB9fTwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2ltb24tbGVhZGVyYm9hcmRcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNpbW9uLWxlYWRlcmJvYXJkX190aXRsZVwiPlxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJvcGh5LW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDxoMj57eyBsZWFkZXJib2FyZEhlYWRpbmcoKSB9fTwvaDI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKG1vZGVMZWFkZXJib2FyZCgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIDxwPnt7IHQoJ3NpbW9uTGVhZGVyYm9hcmRFbXB0eScpIH19PC9wPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8b2w+XG4gICAgICAgICAgICBAZm9yIChlbnRyeSBvZiBtb2RlTGVhZGVyYm9hcmQoKTsgdHJhY2sgZW50cnkuY3JlYXRlZEF0KSB7XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyAkaW5kZXggKyAxIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc2NvcmVUZXh0KGVudHJ5KSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyBkYXRlVGV4dChlbnRyeS5jcmVhdGVkQXQpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L29sPlxuICAgICAgICB9XG4gICAgICA8L3NlY3Rpb24+XG4gICAgPC9tYWluPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tc2hlbGwge1xuICAgICAgICAtLXNpbW9uLXBhbmVsOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCAjZmZmZmZmKTtcbiAgICAgICAgLS1zaW1vbi1ib3JkZXI6IHZhcigtLWlvbi1ib3JkZXItY29sb3IsICNlN2U0ZWEpO1xuICAgICAgICAtLXNpbW9uLXRleHQ6IHZhcigtLWlvbi1jb2xvci1kYXJrLCAjMmYyYTNhKTtcbiAgICAgICAgLS1zaW1vbi1tdXRlZDogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzZmNmE3YSk7XG4gICAgICAgIC0tc2ltb24tc29mdDogcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4wOCk7XG4gICAgICAgIC0tc2ltb24tcHJpbWFyeTogdmFyKC0taW9uLWNvbG9yLXByaW1hcnksICNmZjAwYjIpO1xuICAgICAgICAtLXNpbW9uLXNlY29uZGFyeTogdmFyKC0taW9uLWNvbG9yLXRlcnRpYXJ5LCAjNmEyZGUyKTtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxOHB4O1xuICAgICAgICBtYXgtd2lkdGg6IDc2MHB4O1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgY29sb3I6IHZhcigtLXNpbW9uLXRleHQpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLnNpbW9uLXNoZWxsLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuc2ltb24tc2hlbGwge1xuICAgICAgICAtLXNpbW9uLXBhbmVsOiAjMjMxZjJkO1xuICAgICAgICAtLXNpbW9uLWJvcmRlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEzKTtcbiAgICAgICAgLS1zaW1vbi10ZXh0OiAjZmZmOGZmO1xuICAgICAgICAtLXNpbW9uLW11dGVkOiByZ2JhKDI1NSwgMjQ4LCAyNTUsIDAuNjgpO1xuICAgICAgICAtLXNpbW9uLXNvZnQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNyk7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1oZXJvIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyOHB4O1xuICAgICAgICBwYWRkaW5nOiBjbGFtcCgyOHB4LCA3dncsIDU0cHgpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMjAlIDE4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU1KSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zaW1vbi1wcmltYXJ5KSwgdmFyKC0tc2ltb24tc2Vjb25kYXJ5KSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1oZXJvX19zcGFyayB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS44cmVtO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4yZW07XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1oZXJvIGgxIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDQ4cHgsIDE0dncsIDg2cHgpO1xuICAgICAgICBsaW5lLWhlaWdodDogMC45O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24taGVybyBwLFxuICAgICAgLnNpbW9uLWhvd3RvIHAsXG4gICAgICAuc2ltb24tY2FsbG91dCBwLFxuICAgICAgLnNpbW9uLWxlYWRlcmJvYXJkIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICBsaW5lLWhlaWdodDogMS40NTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLXBhbmVsLFxuICAgICAgLnNpbW9uLWdhbWUsXG4gICAgICAuc2ltb24tbGVhZGVyYm9hcmQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDE2cHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXNpbW9uLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDI2cHg7XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDE2cHgsIDR2dywgMjRweCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXNpbW9uLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLWhvd3RvIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIHBhZGRpbmc6IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXNpbW9uLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24taG93dG8gaDIsXG4gICAgICAuc2ltb24tbGVhZGVyYm9hcmQgaDIge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zaW1vbi10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLWhvd3RvIHAsXG4gICAgICAuc2ltb24tbGVhZGVyYm9hcmQgcCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zaW1vbi1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1tb2RlcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tbW9kZXMgYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDEyNnB4O1xuICAgICAgICBwYWRkaW5nOiAxNHB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zaW1vbi1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaW1vbi1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zaW1vbi10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLW1vZGVzIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc2ltb24tcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjE2KTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLW1vZGVzIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLW1vZGVzIHNtYWxsLFxuICAgICAgLnNpbW9uLXN0YXR1cyBzbWFsbCxcbiAgICAgIC5zaW1vbi1sZWFkZXJib2FyZCBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zaW1vbi1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1wcmltYXJ5LFxuICAgICAgLnNpbW9uLXNlY29uZGFyeSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDU4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tcHJpbWFyeSB7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2ltb24tcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdCwgI2ZmZik7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMThweCA0NXB4IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMjgpO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tc2Vjb25kYXJ5IHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc2ltb24tYm9yZGVyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zaW1vbi10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLXN0YXR1cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tc3RhdHVzIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgICBwYWRkaW5nOiAxNHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaW1vbi1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLXN0YXR1cyBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tY2FsbG91dCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtaW4taGVpZ2h0OiA3NnB4O1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXNpbW9uLXRleHQpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1jYWxsb3V0LmlzLWZhaWxlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xMik7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1ib2FyZCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAxNHB4O1xuICAgICAgICB3aWR0aDogbWluKDEwMCUsIDQ4MHB4KTtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1wYWQge1xuICAgICAgICBhc3BlY3QtcmF0aW86IDE7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMzRweDtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDMwJSAyNSUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSwgdHJhbnNwYXJlbnQgMjglKSxcbiAgICAgICAgICB2YXIoLS1wYWQtY29sb3IpO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgyOHB4LCA5dncsIDU2cHgpO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgLTEycHggMjJweCByZ2JhKDAsIDAsIDAsIDAuMTYpLFxuICAgICAgICAgIDAgMThweCA0MnB4IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1wYWQtY29sb3IpLCB0cmFuc3BhcmVudCA2OCUpO1xuICAgICAgICBvcGFjaXR5OiAwLjgyO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIG9wYWNpdHkgMTQwbXMgZWFzZSxcbiAgICAgICAgICB0cmFuc2Zvcm0gMTQwbXMgZWFzZSxcbiAgICAgICAgICBmaWx0ZXIgMTQwbXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLXBhZC5pcy1hY3RpdmUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4zKSBzYXR1cmF0ZSgxLjIpO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDM1KTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLWJvYXJkLmlzLWxvY2tlZCAuc2ltb24tcGFkOm5vdCguaXMtYWN0aXZlKSB7XG4gICAgICAgIG9wYWNpdHk6IDAuNDg7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1hY3Rpb25zIHtcbiAgICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgICAgYm90dG9tOiAxMHB4O1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgbWFyZ2luLXRvcDogNHB4O1xuICAgICAgICBwYWRkaW5nLXRvcDogMTJweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdHJhbnNwYXJlbnQsIHZhcigtLXNpbW9uLXBhbmVsKSAyOCUpO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tbGVhZGVyYm9hcmRfX3RpdGxlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tbGVhZGVyYm9hcmRfX3RpdGxlIGlvbi1pY29uIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXNpbW9uLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLWxlYWRlcmJvYXJkIG9sIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLWxlYWRlcmJvYXJkIGxpIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAzOHB4IDFmciBhdXRvO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDEycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXNpbW9uLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tbGVhZGVyYm9hcmQgbGkgPiBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDM0cHg7XG4gICAgICAgIGhlaWdodDogMzRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMTgpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc2ltb24tcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1NjBweCkge1xuICAgICAgICAuc2ltb24tbW9kZXMsXG4gICAgICAgIC5zaW1vbi1zdGF0dXMsXG4gICAgICAgIC5zaW1vbi1hY3Rpb25zIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zaW1vbi1ib2FyZCB7XG4gICAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnNpbW9uLXBhZCB7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMjZweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNpbW9uR2FtZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXVkaW8gPSBpbmplY3QoUmV0cm9BdWRpb1NlcnZpY2UpO1xuICBwcml2YXRlIHRpbWVyczogbnVtYmVyW10gPSBbXTtcbiAgcHJpdmF0ZSBhY2NlcHRpbmdJbnB1dCA9IGZhbHNlO1xuXG4gIHJlYWRvbmx5IG1vZGVzOiBTaW1vbkdhbWVNb2RlW10gPSBbJ2tpZCcsICdjbGFzc2ljJywgJ25pbmphJ107XG4gIHJlYWRvbmx5IHBhZHMgPSBTSU1PTl9QQURTO1xuICByZWFkb25seSBwaGFzZSA9IHNpZ25hbDxTaW1vbkdhbWVQaGFzZT4oJ2hvbWUnKTtcbiAgcmVhZG9ubHkgbW9kZSA9IHNpZ25hbDxTaW1vbkdhbWVNb2RlPigna2lkJyk7XG4gIHJlYWRvbmx5IHJvdW5kID0gc2lnbmFsKDApO1xuICByZWFkb25seSBzZXF1ZW5jZSA9IHNpZ25hbDxzdHJpbmdbXT4oW10pO1xuICByZWFkb25seSBpbnB1dEluZGV4ID0gc2lnbmFsKDApO1xuICByZWFkb25seSBhY3RpdmVQYWQgPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBsZWFkZXJib2FyZCA9IHNpZ25hbDxTaW1vbkxlYWRlcmJvYXJkRW50cnlbXT4odGhpcy5yZWFkTGVhZGVyYm9hcmQoKSk7XG5cbiAgcmVhZG9ubHkgbW9kZUNvbmZpZyA9IGNvbXB1dGVkKCgpID0+IFNJTU9OX01PREVTW3RoaXMubW9kZSgpXSk7XG4gIHJlYWRvbmx5IGJlc3RSb3VuZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMubW9kZUxlYWRlcmJvYXJkKClbMF0/LnJvdW5kID8/IDApO1xuICByZWFkb25seSBtb2RlTGVhZGVyYm9hcmQgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMubGVhZGVyYm9hcmQoKVxuICAgICAgLmZpbHRlcigoZW50cnkpID0+IGVudHJ5Lm1vZGUgPT09IHRoaXMubW9kZSgpKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGIucm91bmQgLSBhLnJvdW5kIHx8IGIuc3RlcHMgLSBhLnN0ZXBzKVxuICAgICAgLnNsaWNlKDAsIDUpXG4gICk7XG4gIHJlYWRvbmx5IGxlYWRlcmJvYXJkSGVhZGluZyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy50KCdzaW1vbkxlYWRlcmJvYXJkTW9kZVRpdGxlJykucmVwbGFjZSgne21vZGV9JywgdGhpcy5tb2RlVGl0bGUodGhpcy5tb2RlKCkpKVxuICApO1xuICByZWFkb25seSBmYWlsQm9keSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy50KCdzaW1vbkZhaWxlZEJvZHknKS5yZXBsYWNlKCd7cm91bmR9JywgU3RyaW5nKE1hdGgubWF4KDAsIHRoaXMucm91bmQoKSAtIDEpKSlcbiAgKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cygnTWluaUdhbWVzJywgTUlOSV9HQU1FU19JMThOKTtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhclRpbWVycygpO1xuICAgIHRoaXMuYXVkaW8uc3RvcE11c2ljKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnTWluaUdhbWVzJyk7XG4gIH1cblxuICBzZWxlY3RNb2RlKG1vZGU6IFNpbW9uR2FtZU1vZGUpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGUuc2V0KG1vZGUpO1xuICB9XG5cbiAgbW9kZVRpdGxlKG1vZGU6IFNpbW9uR2FtZU1vZGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoYHNpbW9uTW9kZSR7dGhpcy5jYXBpdGFsaXplKG1vZGUpfWApO1xuICB9XG5cbiAgbW9kZURlc2NyaXB0aW9uKG1vZGU6IFNpbW9uR2FtZU1vZGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoYHNpbW9uTW9kZSR7dGhpcy5jYXBpdGFsaXplKG1vZGUpfURlc2NyaXB0aW9uYCk7XG4gIH1cblxuICBzdGFydCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyVGltZXJzKCk7XG4gICAgdGhpcy5waGFzZS5zZXQoJ3Nob3dpbmcnKTtcbiAgICB0aGlzLnJvdW5kLnNldCgxKTtcbiAgICB0aGlzLmlucHV0SW5kZXguc2V0KDApO1xuICAgIHRoaXMuc2VxdWVuY2Uuc2V0KHRoaXMuY3JlYXRlSW5pdGlhbFNlcXVlbmNlKCkpO1xuICAgIHRoaXMuc2hvd1NlcXVlbmNlKCk7XG4gIH1cblxuICByZXNldFRvU2V0dXAoKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhclRpbWVycygpO1xuICAgIHRoaXMucGhhc2Uuc2V0KCdob21lJyk7XG4gICAgdGhpcy5yb3VuZC5zZXQoMCk7XG4gICAgdGhpcy5zZXF1ZW5jZS5zZXQoW10pO1xuICAgIHRoaXMuaW5wdXRJbmRleC5zZXQoMCk7XG4gICAgdGhpcy5hY3RpdmVQYWQuc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICB0YXAocGFkOiBTaW1vblBhZCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBoYXNlKCkgIT09ICd3YWl0aW5nJyB8fCAhdGhpcy5hY2NlcHRpbmdJbnB1dCkgcmV0dXJuO1xuICAgIHRoaXMuZmxhc2hQYWQocGFkLmlkLCAxODApO1xuICAgIHRoaXMuYXVkaW8uc2ltb25QYWQocGFkLnRvbmUpO1xuICAgIGNvbnN0IGV4cGVjdGVkID0gdGhpcy5zZXF1ZW5jZSgpW3RoaXMuaW5wdXRJbmRleCgpXTtcbiAgICBpZiAocGFkLmlkICE9PSBleHBlY3RlZCkge1xuICAgICAgdGhpcy5mYWlsKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG5leHRJbmRleCA9IHRoaXMuaW5wdXRJbmRleCgpICsgMTtcbiAgICB0aGlzLmlucHV0SW5kZXguc2V0KG5leHRJbmRleCk7XG4gICAgaWYgKG5leHRJbmRleCA8IHRoaXMuc2VxdWVuY2UoKS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuYXVkaW8uc2ltb25TdGVwT2soKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jb21wbGV0ZVJvdW5kKCk7XG4gIH1cblxuICBzY29yZVRleHQoZW50cnk6IFNpbW9uTGVhZGVyYm9hcmRFbnRyeSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudCgnc2ltb25TY29yZScpXG4gICAgICAucmVwbGFjZSgne3JvdW5kfScsIFN0cmluZyhlbnRyeS5yb3VuZCkpXG4gICAgICAucmVwbGFjZSgne3N0ZXBzfScsIFN0cmluZyhlbnRyeS5zdGVwcykpO1xuICB9XG5cbiAgZGF0ZVRleHQodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlLnNsaWNlKDAsIDEwKTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcGxldGVSb3VuZCgpOiB2b2lkIHtcbiAgICB0aGlzLmFjY2VwdGluZ0lucHV0ID0gZmFsc2U7XG4gICAgdGhpcy5waGFzZS5zZXQoJ3N1Y2Nlc3MnKTtcbiAgICB0aGlzLmF1ZGlvLnNpbW9uUm91bmRPaygpO1xuICAgIHRoaXMuc2F2ZVNjb3JlKHRoaXMucm91bmQoKSwgdGhpcy5zZXF1ZW5jZSgpLmxlbmd0aCk7XG4gICAgdGhpcy5zZXRUaW1lcigoKSA9PiB7XG4gICAgICB0aGlzLnJvdW5kLnNldCh0aGlzLnJvdW5kKCkgKyAxKTtcbiAgICAgIHRoaXMuc2VxdWVuY2UudXBkYXRlKChjdXJyZW50KSA9PiBbLi4uY3VycmVudCwgdGhpcy5yYW5kb21QYWRJZCgpXSk7XG4gICAgICB0aGlzLnNob3dTZXF1ZW5jZSgpO1xuICAgIH0sIHRoaXMubW9kZSgpID09PSAnbmluamEnID8gNTIwIDogNzYwKTtcbiAgfVxuXG4gIHByaXZhdGUgZmFpbCgpOiB2b2lkIHtcbiAgICB0aGlzLmFjY2VwdGluZ0lucHV0ID0gZmFsc2U7XG4gICAgdGhpcy5waGFzZS5zZXQoJ2ZhaWxlZCcpO1xuICAgIHRoaXMuYWN0aXZlUGFkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuYXVkaW8uc2ltb25GYWlsKCk7XG4gICAgdGhpcy5zYXZlU2NvcmUoTWF0aC5tYXgoMCwgdGhpcy5yb3VuZCgpIC0gMSksIE1hdGgubWF4KDAsIHRoaXMuc2VxdWVuY2UoKS5sZW5ndGggLSAxKSk7XG4gIH1cblxuICBwcml2YXRlIHNob3dTZXF1ZW5jZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyVGltZXJzKCk7XG4gICAgdGhpcy5hY2NlcHRpbmdJbnB1dCA9IGZhbHNlO1xuICAgIHRoaXMuaW5wdXRJbmRleC5zZXQoMCk7XG4gICAgdGhpcy5waGFzZS5zZXQoJ3Nob3dpbmcnKTtcbiAgICBjb25zdCB7IHNob3dNcywgZ2FwTXMgfSA9IHRoaXMubW9kZUNvbmZpZygpO1xuICAgIGxldCBkZWxheSA9IDI4MDtcbiAgICB0aGlzLnNlcXVlbmNlKCkuZm9yRWFjaCgocGFkSWQpID0+IHtcbiAgICAgIHRoaXMuc2V0VGltZXIoKCkgPT4ge1xuICAgICAgICBjb25zdCBwYWQgPSB0aGlzLnBhZHMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gcGFkSWQpO1xuICAgICAgICBpZiAocGFkKSB0aGlzLmF1ZGlvLnNpbW9uUGFkKHBhZC50b25lKTtcbiAgICAgICAgdGhpcy5hY3RpdmVQYWQuc2V0KHBhZElkKTtcbiAgICAgIH0sIGRlbGF5KTtcbiAgICAgIHRoaXMuc2V0VGltZXIoKCkgPT4gdGhpcy5hY3RpdmVQYWQuc2V0KHVuZGVmaW5lZCksIGRlbGF5ICsgc2hvd01zKTtcbiAgICAgIGRlbGF5ICs9IHNob3dNcyArIGdhcE1zO1xuICAgIH0pO1xuICAgIHRoaXMuc2V0VGltZXIoKCkgPT4ge1xuICAgICAgdGhpcy5waGFzZS5zZXQoJ3dhaXRpbmcnKTtcbiAgICAgIHRoaXMuYWNjZXB0aW5nSW5wdXQgPSB0cnVlO1xuICAgIH0sIGRlbGF5ICsgMTAwKTtcbiAgfVxuXG4gIHByaXZhdGUgZmxhc2hQYWQocGFkSWQ6IHN0cmluZywgbXM6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlUGFkLnNldChwYWRJZCk7XG4gICAgdGhpcy5zZXRUaW1lcigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5hY3RpdmVQYWQoKSA9PT0gcGFkSWQpIHRoaXMuYWN0aXZlUGFkLnNldCh1bmRlZmluZWQpO1xuICAgIH0sIG1zKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlSW5pdGlhbFNlcXVlbmNlKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy5tb2RlQ29uZmlnKCkuc3RhcnRTdGVwcyB9LCAoKSA9PiB0aGlzLnJhbmRvbVBhZElkKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSByYW5kb21QYWRJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBhZHNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogdGhpcy5wYWRzLmxlbmd0aCldLmlkO1xuICB9XG5cbiAgcHJpdmF0ZSBzYXZlU2NvcmUocm91bmQ6IG51bWJlciwgc3RlcHM6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChyb3VuZCA8PSAwKSByZXR1cm47XG4gICAgY29uc3QgZW50cnk6IFNpbW9uTGVhZGVyYm9hcmRFbnRyeSA9IHtcbiAgICAgIG1vZGU6IHRoaXMubW9kZSgpLFxuICAgICAgcm91bmQsXG4gICAgICBzdGVwcyxcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH07XG4gICAgY29uc3QgdXBkYXRlZCA9IFtlbnRyeSwgLi4udGhpcy5sZWFkZXJib2FyZCgpXVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGIucm91bmQgLSBhLnJvdW5kIHx8IGIuc3RlcHMgLSBhLnN0ZXBzKVxuICAgICAgLnNsaWNlKDAsIDQwKTtcbiAgICB0aGlzLmxlYWRlcmJvYXJkLnNldCh1cGRhdGVkKTtcbiAgICB0cnkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTEVBREVSQk9BUkRfS0VZLCBKU09OLnN0cmluZ2lmeSh1cGRhdGVkKSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBFbCByYW5raW5nIGxvY2FsIG5vIGVzIGNyw610aWNvIHNpIHN0b3JhZ2Ugbm8gZXN0w6EgZGlzcG9uaWJsZS5cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlYWRMZWFkZXJib2FyZCgpOiBTaW1vbkxlYWRlcmJvYXJkRW50cnlbXSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJhdyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKExFQURFUkJPQVJEX0tFWSk7XG4gICAgICBjb25zdCBwYXJzZWQgPSByYXcgPyAoSlNPTi5wYXJzZShyYXcpIGFzIFNpbW9uTGVhZGVyYm9hcmRFbnRyeVtdKSA6IFtdO1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocGFyc2VkKSA/IHBhcnNlZCA6IFtdO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0VGltZXIoY2FsbGJhY2s6ICgpID0+IHZvaWQsIG1zOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBpZCA9IHdpbmRvdy5zZXRUaW1lb3V0KGNhbGxiYWNrLCBtcyk7XG4gICAgdGhpcy50aW1lcnMucHVzaChpZCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyVGltZXJzKCk6IHZvaWQge1xuICAgIHRoaXMudGltZXJzLmZvckVhY2goKGlkKSA9PiB3aW5kb3cuY2xlYXJUaW1lb3V0KGlkKSk7XG4gICAgdGhpcy50aW1lcnMgPSBbXTtcbiAgICB0aGlzLmFjY2VwdGluZ0lucHV0ID0gZmFsc2U7XG4gICAgdGhpcy5hY3RpdmVQYWQuc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICBwcml2YXRlIGNhcGl0YWxpemUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3ZhbHVlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7dmFsdWUuc2xpY2UoMSl9YDtcbiAgfVxufVxuIl19
|
|
529
|
+
|
|
530
|
+
<ion-modal
|
|
531
|
+
[isOpen]="!!confirmAction()"
|
|
532
|
+
cssClass="val-modal-adaptive"
|
|
533
|
+
(didDismiss)="closeConfirmModal()"
|
|
534
|
+
>
|
|
535
|
+
<ng-template>
|
|
536
|
+
<val-modal-layout
|
|
537
|
+
[title]="confirmTitle()"
|
|
538
|
+
[subtitle]="confirmBody()"
|
|
539
|
+
[closeLabel]="t('close')"
|
|
540
|
+
[actions]="confirmActions()"
|
|
541
|
+
actionsAlign="end"
|
|
542
|
+
(close)="closeConfirmModal()"
|
|
543
|
+
(actionClick)="confirmPendingAction($event.action?.token)"
|
|
544
|
+
/>
|
|
545
|
+
</ng-template>
|
|
546
|
+
</ion-modal>
|
|
547
|
+
`, styles: [":host{display:block}.simon-shell{--simon-panel: var(--ion-card-background, #ffffff);--simon-border: var(--ion-border-color, #e7e4ea);--simon-text: var(--ion-color-dark, #2f2a3a);--simon-muted: var(--ion-color-medium, #6f6a7a);--simon-soft: rgba(var(--ion-color-primary-rgb, 255, 0, 178), .08);--simon-primary: var(--ion-color-primary, #ff00b2);--simon-secondary: var(--ion-color-tertiary, #6a2de2);display:grid;gap:18px;max-width:760px;margin:0 auto;color:var(--simon-text)}:host-context(html.ion-palette-dark) .simon-shell,:host-context([data-theme=\"dark\"]) .simon-shell{--simon-panel: #231f2d;--simon-border: rgba(255, 255, 255, .13);--simon-text: #fff8ff;--simon-muted: rgba(255, 248, 255, .68);--simon-soft: rgba(255, 255, 255, .07)}.simon-hero{display:grid;gap:10px;overflow:hidden;border-radius:28px;padding:clamp(28px,7vw,54px);background:radial-gradient(circle at 20% 18%,rgba(255,255,255,.55),transparent 18%),linear-gradient(135deg,var(--simon-primary),var(--simon-secondary));color:#fff;text-align:center}.simon-hero__spark{font-size:1.8rem;letter-spacing:.2em}.simon-hero h1{margin:0;font-size:clamp(48px,14vw,86px);line-height:.9;font-weight:950}.simon-hero p,.simon-howto p,.simon-callout p,.simon-leaderboard p{margin:0;color:inherit;line-height:1.45}.simon-panel,.simon-game,.simon-leaderboard{display:grid;gap:16px;border:1px solid var(--simon-border);border-radius:26px;padding:clamp(16px,4vw,24px);background:var(--simon-panel)}.simon-howto{display:grid;gap:6px;padding:16px;border-radius:20px;background:var(--simon-soft)}.simon-howto h2,.simon-leaderboard h2{margin:0;color:var(--simon-text)}.simon-howto p,.simon-leaderboard p{color:var(--simon-muted)}.simon-modes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.simon-modes button{display:grid;gap:6px;min-height:126px;padding:14px;border:1px solid var(--simon-border);border-radius:22px;background:var(--simon-panel);color:var(--simon-text);font:inherit;text-align:left}.simon-modes button.is-selected{border-color:var(--simon-primary);box-shadow:0 0 0 2px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.16)}.simon-modes strong{font-size:1rem;font-weight:950}.simon-modes small,.simon-status small,.simon-leaderboard small{color:var(--simon-muted)}.simon-primary,.simon-secondary{min-height:58px;border-radius:999px;font:inherit;font-weight:950}.simon-primary{border:0;background:var(--simon-primary);color:var(--ion-color-primary-contrast, #fff);box-shadow:0 18px 45px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.28)}.simon-secondary{border:1px solid var(--simon-border);background:transparent;color:var(--simon-text)}.simon-status{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.simon-status div{display:grid;gap:2px;padding:14px;border-radius:18px;background:var(--simon-soft)}.simon-status strong{font-size:2rem;line-height:1}.simon-callout{display:grid;gap:4px;min-height:76px;align-content:center;padding:16px;border-radius:20px;background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.12);color:var(--simon-text);text-align:center}.simon-callout.is-failed{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.simon-board{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;width:min(100%,480px);margin:0 auto}.simon-pad{aspect-ratio:1;border:0;border-radius:34px;background:radial-gradient(circle at 30% 25%,rgba(255,255,255,.7),transparent 28%),var(--pad-color);color:#fff;font:inherit;font-size:clamp(28px,9vw,56px);font-weight:950;box-shadow:inset 0 -12px 22px #00000029,0 18px 42px color-mix(in srgb,var(--pad-color),transparent 68%);opacity:.82;transform:scale(.98);transition:opacity .14s ease,transform .14s ease,filter .14s ease}.simon-pad.is-active{opacity:1;filter:brightness(1.3) saturate(1.2);transform:scale(1.035)}.simon-board.is-locked .simon-pad:not(.is-active){opacity:.48}.simon-actions{position:sticky;bottom:10px;z-index:2;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:4px;padding-top:12px;background:linear-gradient(to bottom,transparent,var(--simon-panel) 28%)}.simon-menu-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:10px}.simon-leaderboard__title{display:flex;align-items:center;gap:10px}.simon-leaderboard__title ion-icon{color:var(--simon-primary);font-size:1.4rem}.simon-leaderboard ol{display:grid;gap:8px;margin:0;padding:0;list-style:none}.simon-leaderboard li{display:grid;grid-template-columns:38px 1fr auto;gap:10px;align-items:center;padding:12px;border-radius:16px;background:var(--simon-soft)}.simon-leaderboard li>span{display:grid;place-items:center;width:34px;height:34px;border-radius:999px;background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.18);color:var(--simon-primary);font-weight:950}@media (max-width: 560px){.simon-modes,.simon-status,.simon-actions,.simon-menu-actions{grid-template-columns:1fr}.simon-board{gap:10px}.simon-pad{border-radius:26px}}\n"] }]
|
|
548
|
+
}], ctorParameters: () => [], propDecorators: { miniGamesRoute: [{
|
|
549
|
+
type: Input
|
|
550
|
+
}] } });
|
|
551
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltb24tZ2FtZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21pbmktZ2FtZXMvc2ltb24tZ2FtZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxREFBcUQsQ0FBQzs7QUFHM0YsUUFBUSxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztBQWdCNUIsTUFBTSxXQUFXLEdBQTJDO0lBQzFELEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUU7SUFDNUQsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRTtJQUNwRSxLQUFLLEVB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThIVCxnNUpBL0hTLE9BQU8sMkpBQUUsUUFBUSxzREFBRSxvQkFBb0I7OzRGQThhdEMsa0JBQWtCO2tCQWpiOUIsU0FBUzsrQkFDRSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1AsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixDQUFDLFlBQ3hDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4SFQ7d0RBc1RRLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElvbkljb24sIElvbk1vZGFsIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IHRyb3BoeU91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5cbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBNSU5JX0dBTUVTX0kxOE4gfSBmcm9tICcuL21pbmktZ2FtZXMuaTE4bic7XG5pbXBvcnQgeyBSZXRyb0F1ZGlvU2VydmljZSB9IGZyb20gJy4vcmV0cm8tYXVkaW8uc2VydmljZSc7XG5pbXBvcnQgeyBTaW1vbkdhbWVNb2RlLCBTaW1vbkdhbWVQaGFzZSwgU2ltb25QYWQgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IE1vZGFsTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL21vZGFsLWxheW91dC9tb2RhbC1sYXlvdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbk1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5hZGRJY29ucyh7IHRyb3BoeU91dGxpbmUgfSk7XG5cbmludGVyZmFjZSBTaW1vbk1vZGVDb25maWcge1xuICBtb2RlOiBTaW1vbkdhbWVNb2RlO1xuICBzaG93TXM6IG51bWJlcjtcbiAgZ2FwTXM6IG51bWJlcjtcbiAgc3RhcnRTdGVwczogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgU2ltb25MZWFkZXJib2FyZEVudHJ5IHtcbiAgbW9kZTogU2ltb25HYW1lTW9kZTtcbiAgcm91bmQ6IG51bWJlcjtcbiAgc3RlcHM6IG51bWJlcjtcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG59XG5cbmNvbnN0IFNJTU9OX01PREVTOiBSZWNvcmQ8U2ltb25HYW1lTW9kZSwgU2ltb25Nb2RlQ29uZmlnPiA9IHtcbiAga2lkOiB7IG1vZGU6ICdraWQnLCBzaG93TXM6IDcyMCwgZ2FwTXM6IDI4MCwgc3RhcnRTdGVwczogMSB9LFxuICBjbGFzc2ljOiB7IG1vZGU6ICdjbGFzc2ljJywgc2hvd01zOiA1MjAsIGdhcE1zOiAyMTAsIHN0YXJ0U3RlcHM6IDEgfSxcbiAgbmluamE6IHsgbW9kZTogJ25pbmphJywgc2hvd01zOiAzNDAsIGdhcE1zOiAxNTAsIHN0YXJ0U3RlcHM6IDIgfSxcbn07XG5cbmNvbnN0IFNJTU9OX1BBRFM6IFNpbW9uUGFkW10gPSBbXG4gIHsgaWQ6ICdwaW5rJywgbGFiZWw6ICcxJywgY29sb3I6ICcjZmYwMGIyJywgdG9uZTogMzI5LjYzIH0sXG4gIHsgaWQ6ICdjeWFuJywgbGFiZWw6ICcyJywgY29sb3I6ICcjMDBiY2Q0JywgdG9uZTogMzkyIH0sXG4gIHsgaWQ6ICd5ZWxsb3cnLCBsYWJlbDogJzMnLCBjb2xvcjogJyNmZmM0MDknLCB0b25lOiA0OTMuODggfSxcbiAgeyBpZDogJ3B1cnBsZScsIGxhYmVsOiAnNCcsIGNvbG9yOiAnIzZhMmRlMicsIHRvbmU6IDY1OS4yNSB9LFxuXTtcblxuY29uc3QgTEVBREVSQk9BUkRfS0VZID0gJ3ZhbC1taW5pLWdhbWVzLXNpbW9uLWxlYWRlcmJvYXJkOnYxJztcbnR5cGUgU2ltb25Db25maXJtQWN0aW9uID0gJ3Jlc3RhcnQnIHwgJ21vZGUnIHwgJ2dhbWVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXNpbW9uLWdhbWUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbSW9uSWNvbiwgSW9uTW9kYWwsIE1vZGFsTGF5b3V0Q29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bWFpbiBjbGFzcz1cInNpbW9uLXNoZWxsXCI+XG4gICAgICBAaWYgKHBoYXNlKCkgPT09ICdob21lJykge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInNpbW9uLWhlcm9cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNpbW9uLWhlcm9fX3NwYXJrXCI+4pePIOKXjyDil48g4pePPC9zcGFuPlxuICAgICAgICAgIDxoMT57eyB0KCdzaW1vbkhvbWVUaXRsZScpIH19PC9oMT5cbiAgICAgICAgICA8cD57eyB0KCdzaW1vbkhvbWVTdWJ0aXRsZScpIH19PC9wPlxuICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzaW1vbi1wYW5lbFwiPlxuICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwic2ltb24taG93dG9cIj5cbiAgICAgICAgICAgIDxoMj57eyB0KCdzaW1vbkhvd1RvVGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICA8cD57eyB0KCdzaW1vbkhvd1RvQm9keScpIH19PC9wPlxuICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW1vbi1tb2Rlc1wiIHJvbGU9XCJyYWRpb2dyb3VwXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdtb2RlVGl0bGUnKVwiPlxuICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBtb2RlczsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cIm1vZGUoKSA9PT0gaXRlbVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE1vZGUoaXRlbSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBtb2RlVGl0bGUoaXRlbSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgbW9kZURlc2NyaXB0aW9uKGl0ZW0pIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2ltb24tcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3RhcnQoKVwiPnt7IHQoJ3NpbW9uU3RhcnQnKSB9fTwvYnV0dG9uPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW1vbi1tZW51LWFjdGlvbnNcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzaW1vbi1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RDaGFuZ2VHYW1lKClcIj5cbiAgICAgICAgICAgICAge3sgdCgnY2hhbmdlR2FtZScpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2ltb24tZ2FtZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW1vbi1zdGF0dXNcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdzaW1vblJvdW5kJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHJvdW5kKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ3NpbW9uU3RlcHMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgc2VxdWVuY2UoKS5sZW5ndGggfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ3NpbW9uQmVzdFJvdW5kJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IGJlc3RSb3VuZCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW1vbi1jYWxsb3V0XCIgW2NsYXNzLmlzLWZhaWxlZF09XCJwaGFzZSgpID09PSAnZmFpbGVkJ1wiPlxuICAgICAgICAgICAgQGlmIChwaGFzZSgpID09PSAnc2hvd2luZycpIHtcbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdzaW1vbldhdGNoJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKHBoYXNlKCkgPT09ICd3YWl0aW5nJykge1xuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ3NpbW9uUmVwZWF0JykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKHBoYXNlKCkgPT09ICdzdWNjZXNzJykge1xuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ3NpbW9uR29vZCcpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdzaW1vbkZhaWxlZCcpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxwPnt7IGZhaWxCb2R5KCkgfX08L3A+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2ltb24tYm9hcmRcIiBbY2xhc3MuaXMtbG9ja2VkXT1cInBoYXNlKCkgIT09ICd3YWl0aW5nJ1wiPlxuICAgICAgICAgICAgQGZvciAocGFkIG9mIHBhZHM7IHRyYWNrIHBhZC5pZCkge1xuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzaW1vbi1wYWRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtzdHlsZS4tLXBhZC1jb2xvcl09XCJwYWQuY29sb3JcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1hY3RpdmVdPVwiYWN0aXZlUGFkKCkgPT09IHBhZC5pZFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInBoYXNlKCkgIT09ICd3YWl0aW5nJ1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRhcChwYWQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHBhZC5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2ltb24tYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNpbW9uLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdENoYW5nZU1vZGUoKVwiPnt7IHQoJ2JhY2tUb1NldHVwJykgfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzaW1vbi1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RDaGFuZ2VHYW1lKClcIj57eyB0KCdjaGFuZ2VHYW1lJykgfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzaW1vbi1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0UmVzdGFydEdhbWUoKVwiPnt7IHQoJ3Jlc3RhcnQnKSB9fTwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2ltb24tbGVhZGVyYm9hcmRcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNpbW9uLWxlYWRlcmJvYXJkX190aXRsZVwiPlxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJvcGh5LW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDxoMj57eyBsZWFkZXJib2FyZEhlYWRpbmcoKSB9fTwvaDI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKG1vZGVMZWFkZXJib2FyZCgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIDxwPnt7IHQoJ3NpbW9uTGVhZGVyYm9hcmRFbXB0eScpIH19PC9wPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8b2w+XG4gICAgICAgICAgICBAZm9yIChlbnRyeSBvZiBtb2RlTGVhZGVyYm9hcmQoKTsgdHJhY2sgZW50cnkuY3JlYXRlZEF0KSB7XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyAkaW5kZXggKyAxIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc2NvcmVUZXh0KGVudHJ5KSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyBkYXRlVGV4dChlbnRyeS5jcmVhdGVkQXQpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L29sPlxuICAgICAgICB9XG4gICAgICA8L3NlY3Rpb24+XG4gICAgPC9tYWluPlxuXG4gICAgPGlvbi1tb2RhbFxuICAgICAgW2lzT3Blbl09XCIhIWNvbmZpcm1BY3Rpb24oKVwiXG4gICAgICBjc3NDbGFzcz1cInZhbC1tb2RhbC1hZGFwdGl2ZVwiXG4gICAgICAoZGlkRGlzbWlzcyk9XCJjbG9zZUNvbmZpcm1Nb2RhbCgpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDx2YWwtbW9kYWwtbGF5b3V0XG4gICAgICAgICAgW3RpdGxlXT1cImNvbmZpcm1UaXRsZSgpXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiY29uZmlybUJvZHkoKVwiXG4gICAgICAgICAgW2Nsb3NlTGFiZWxdPVwidCgnY2xvc2UnKVwiXG4gICAgICAgICAgW2FjdGlvbnNdPVwiY29uZmlybUFjdGlvbnMoKVwiXG4gICAgICAgICAgYWN0aW9uc0FsaWduPVwiZW5kXCJcbiAgICAgICAgICAoY2xvc2UpPVwiY2xvc2VDb25maXJtTW9kYWwoKVwiXG4gICAgICAgICAgKGFjdGlvbkNsaWNrKT1cImNvbmZpcm1QZW5kaW5nQWN0aW9uKCRldmVudC5hY3Rpb24/LnRva2VuKVwiXG4gICAgICAgIC8+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tc2hlbGwge1xuICAgICAgICAtLXNpbW9uLXBhbmVsOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCAjZmZmZmZmKTtcbiAgICAgICAgLS1zaW1vbi1ib3JkZXI6IHZhcigtLWlvbi1ib3JkZXItY29sb3IsICNlN2U0ZWEpO1xuICAgICAgICAtLXNpbW9uLXRleHQ6IHZhcigtLWlvbi1jb2xvci1kYXJrLCAjMmYyYTNhKTtcbiAgICAgICAgLS1zaW1vbi1tdXRlZDogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzZmNmE3YSk7XG4gICAgICAgIC0tc2ltb24tc29mdDogcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4wOCk7XG4gICAgICAgIC0tc2ltb24tcHJpbWFyeTogdmFyKC0taW9uLWNvbG9yLXByaW1hcnksICNmZjAwYjIpO1xuICAgICAgICAtLXNpbW9uLXNlY29uZGFyeTogdmFyKC0taW9uLWNvbG9yLXRlcnRpYXJ5LCAjNmEyZGUyKTtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxOHB4O1xuICAgICAgICBtYXgtd2lkdGg6IDc2MHB4O1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgY29sb3I6IHZhcigtLXNpbW9uLXRleHQpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLnNpbW9uLXNoZWxsLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuc2ltb24tc2hlbGwge1xuICAgICAgICAtLXNpbW9uLXBhbmVsOiAjMjMxZjJkO1xuICAgICAgICAtLXNpbW9uLWJvcmRlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEzKTtcbiAgICAgICAgLS1zaW1vbi10ZXh0OiAjZmZmOGZmO1xuICAgICAgICAtLXNpbW9uLW11dGVkOiByZ2JhKDI1NSwgMjQ4LCAyNTUsIDAuNjgpO1xuICAgICAgICAtLXNpbW9uLXNvZnQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNyk7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1oZXJvIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyOHB4O1xuICAgICAgICBwYWRkaW5nOiBjbGFtcCgyOHB4LCA3dncsIDU0cHgpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMjAlIDE4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU1KSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zaW1vbi1wcmltYXJ5KSwgdmFyKC0tc2ltb24tc2Vjb25kYXJ5KSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1oZXJvX19zcGFyayB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS44cmVtO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4yZW07XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1oZXJvIGgxIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDQ4cHgsIDE0dncsIDg2cHgpO1xuICAgICAgICBsaW5lLWhlaWdodDogMC45O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24taGVybyBwLFxuICAgICAgLnNpbW9uLWhvd3RvIHAsXG4gICAgICAuc2ltb24tY2FsbG91dCBwLFxuICAgICAgLnNpbW9uLWxlYWRlcmJvYXJkIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICBsaW5lLWhlaWdodDogMS40NTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLXBhbmVsLFxuICAgICAgLnNpbW9uLWdhbWUsXG4gICAgICAuc2ltb24tbGVhZGVyYm9hcmQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDE2cHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXNpbW9uLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDI2cHg7XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDE2cHgsIDR2dywgMjRweCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXNpbW9uLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLWhvd3RvIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIHBhZGRpbmc6IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXNpbW9uLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24taG93dG8gaDIsXG4gICAgICAuc2ltb24tbGVhZGVyYm9hcmQgaDIge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zaW1vbi10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLWhvd3RvIHAsXG4gICAgICAuc2ltb24tbGVhZGVyYm9hcmQgcCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zaW1vbi1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1tb2RlcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tbW9kZXMgYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDEyNnB4O1xuICAgICAgICBwYWRkaW5nOiAxNHB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zaW1vbi1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaW1vbi1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zaW1vbi10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLW1vZGVzIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc2ltb24tcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjE2KTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLW1vZGVzIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLW1vZGVzIHNtYWxsLFxuICAgICAgLnNpbW9uLXN0YXR1cyBzbWFsbCxcbiAgICAgIC5zaW1vbi1sZWFkZXJib2FyZCBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zaW1vbi1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1wcmltYXJ5LFxuICAgICAgLnNpbW9uLXNlY29uZGFyeSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDU4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tcHJpbWFyeSB7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2ltb24tcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdCwgI2ZmZik7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMThweCA0NXB4IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMjgpO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tc2Vjb25kYXJ5IHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc2ltb24tYm9yZGVyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zaW1vbi10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLXN0YXR1cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tc3RhdHVzIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgICBwYWRkaW5nOiAxNHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaW1vbi1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLXN0YXR1cyBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tY2FsbG91dCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtaW4taGVpZ2h0OiA3NnB4O1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXNpbW9uLXRleHQpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1jYWxsb3V0LmlzLWZhaWxlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xMik7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1ib2FyZCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAxNHB4O1xuICAgICAgICB3aWR0aDogbWluKDEwMCUsIDQ4MHB4KTtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1wYWQge1xuICAgICAgICBhc3BlY3QtcmF0aW86IDE7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMzRweDtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDMwJSAyNSUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSwgdHJhbnNwYXJlbnQgMjglKSxcbiAgICAgICAgICB2YXIoLS1wYWQtY29sb3IpO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgyOHB4LCA5dncsIDU2cHgpO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgLTEycHggMjJweCByZ2JhKDAsIDAsIDAsIDAuMTYpLFxuICAgICAgICAgIDAgMThweCA0MnB4IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1wYWQtY29sb3IpLCB0cmFuc3BhcmVudCA2OCUpO1xuICAgICAgICBvcGFjaXR5OiAwLjgyO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIG9wYWNpdHkgMTQwbXMgZWFzZSxcbiAgICAgICAgICB0cmFuc2Zvcm0gMTQwbXMgZWFzZSxcbiAgICAgICAgICBmaWx0ZXIgMTQwbXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLXBhZC5pcy1hY3RpdmUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4zKSBzYXR1cmF0ZSgxLjIpO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDM1KTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLWJvYXJkLmlzLWxvY2tlZCAuc2ltb24tcGFkOm5vdCguaXMtYWN0aXZlKSB7XG4gICAgICAgIG9wYWNpdHk6IDAuNDg7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1hY3Rpb25zIHtcbiAgICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgICAgYm90dG9tOiAxMHB4O1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgbWFyZ2luLXRvcDogNHB4O1xuICAgICAgICBwYWRkaW5nLXRvcDogMTJweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdHJhbnNwYXJlbnQsIHZhcigtLXNpbW9uLXBhbmVsKSAyOCUpO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tbWVudS1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCg5cmVtLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tbGVhZGVyYm9hcmRfX3RpdGxlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tbGVhZGVyYm9hcmRfX3RpdGxlIGlvbi1pY29uIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXNpbW9uLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLWxlYWRlcmJvYXJkIG9sIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLWxlYWRlcmJvYXJkIGxpIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAzOHB4IDFmciBhdXRvO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDEycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXNpbW9uLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tbGVhZGVyYm9hcmQgbGkgPiBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDM0cHg7XG4gICAgICAgIGhlaWdodDogMzRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMTgpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc2ltb24tcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1NjBweCkge1xuICAgICAgICAuc2ltb24tbW9kZXMsXG4gICAgICAgIC5zaW1vbi1zdGF0dXMsXG4gICAgICAgIC5zaW1vbi1hY3Rpb25zLFxuICAgICAgICAuc2ltb24tbWVudS1hY3Rpb25zIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zaW1vbi1ib2FyZCB7XG4gICAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnNpbW9uLXBhZCB7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMjZweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNpbW9uR2FtZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXVkaW8gPSBpbmplY3QoUmV0cm9BdWRpb1NlcnZpY2UpO1xuICBwcml2YXRlIHRpbWVyczogbnVtYmVyW10gPSBbXTtcbiAgcHJpdmF0ZSBhY2NlcHRpbmdJbnB1dCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIG1pbmlHYW1lc1JvdXRlID0gJy9taW5pLWdhbWVzJztcblxuICByZWFkb25seSBtb2RlczogU2ltb25HYW1lTW9kZVtdID0gWydraWQnLCAnY2xhc3NpYycsICduaW5qYSddO1xuICByZWFkb25seSBwYWRzID0gU0lNT05fUEFEUztcbiAgcmVhZG9ubHkgcGhhc2UgPSBzaWduYWw8U2ltb25HYW1lUGhhc2U+KCdob21lJyk7XG4gIHJlYWRvbmx5IG1vZGUgPSBzaWduYWw8U2ltb25HYW1lTW9kZT4oJ2tpZCcpO1xuICByZWFkb25seSByb3VuZCA9IHNpZ25hbCgwKTtcbiAgcmVhZG9ubHkgc2VxdWVuY2UgPSBzaWduYWw8c3RyaW5nW10+KFtdKTtcbiAgcmVhZG9ubHkgaW5wdXRJbmRleCA9IHNpZ25hbCgwKTtcbiAgcmVhZG9ubHkgYWN0aXZlUGFkID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgbGVhZGVyYm9hcmQgPSBzaWduYWw8U2ltb25MZWFkZXJib2FyZEVudHJ5W10+KHRoaXMucmVhZExlYWRlcmJvYXJkKCkpO1xuICByZWFkb25seSBjb25maXJtQWN0aW9uID0gc2lnbmFsPFNpbW9uQ29uZmlybUFjdGlvbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICByZWFkb25seSBtb2RlQ29uZmlnID0gY29tcHV0ZWQoKCkgPT4gU0lNT05fTU9ERVNbdGhpcy5tb2RlKCldKTtcbiAgcmVhZG9ubHkgYmVzdFJvdW5kID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5tb2RlTGVhZGVyYm9hcmQoKVswXT8ucm91bmQgPz8gMCk7XG4gIHJlYWRvbmx5IG1vZGVMZWFkZXJib2FyZCA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5sZWFkZXJib2FyZCgpXG4gICAgICAuZmlsdGVyKChlbnRyeSkgPT4gZW50cnkubW9kZSA9PT0gdGhpcy5tb2RlKCkpXG4gICAgICAuc29ydCgoYSwgYikgPT4gYi5yb3VuZCAtIGEucm91bmQgfHwgYi5zdGVwcyAtIGEuc3RlcHMpXG4gICAgICAuc2xpY2UoMCwgNSlcbiAgKTtcbiAgcmVhZG9ubHkgbGVhZGVyYm9hcmRIZWFkaW5nID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnQoJ3NpbW9uTGVhZGVyYm9hcmRNb2RlVGl0bGUnKS5yZXBsYWNlKCd7bW9kZX0nLCB0aGlzLm1vZGVUaXRsZSh0aGlzLm1vZGUoKSkpXG4gICk7XG4gIHJlYWRvbmx5IGZhaWxCb2R5ID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnQoJ3NpbW9uRmFpbGVkQm9keScpLnJlcGxhY2UoJ3tyb3VuZH0nLCBTdHJpbmcoTWF0aC5tYXgoMCwgdGhpcy5yb3VuZCgpIC0gMSkpKVxuICApO1xuICByZWFkb25seSBjb25maXJtVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc3RhcnQnKSByZXR1cm4gdGhpcy50KCdjb25maXJtUmVzdGFydFRpdGxlJyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2dhbWVzJykgcmV0dXJuIHRoaXMudCgnY29uZmlybUdhbWVzVGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjb25maXJtTW9kZVRpdGxlJyk7XG4gIH0pO1xuICByZWFkb25seSBjb25maXJtQm9keSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1BY3Rpb24oKTtcbiAgICBpZiAoYWN0aW9uID09PSAncmVzdGFydCcpIHJldHVybiB0aGlzLnQoJ2NvbmZpcm1SZXN0YXJ0Qm9keScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdnYW1lcycpIHJldHVybiB0aGlzLnQoJ2NvbmZpcm1HYW1lc0JvZHknKTtcbiAgICByZXR1cm4gdGhpcy50KCdjb25maXJtTW9kZUJvZHknKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGNvbmZpcm1BY3Rpb25zID0gY29tcHV0ZWQ8QnV0dG9uTWV0YWRhdGFbXT4oKCkgPT4gW1xuICAgIHtcbiAgICAgIHRleHQ6IHRoaXMudCgnY2FuY2VsJyksXG4gICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICB0b2tlbjogJ2NhbmNlbCcsXG4gICAgfSxcbiAgICB7XG4gICAgICB0ZXh0OlxuICAgICAgICB0aGlzLmNvbmZpcm1BY3Rpb24oKSA9PT0gJ3Jlc3RhcnQnXG4gICAgICAgICAgPyB0aGlzLnQoJ3Jlc3RhcnQnKVxuICAgICAgICAgIDogdGhpcy5jb25maXJtQWN0aW9uKCkgPT09ICdnYW1lcydcbiAgICAgICAgICAgID8gdGhpcy50KCdjaGFuZ2VHYW1lJylcbiAgICAgICAgICAgIDogdGhpcy50KCdiYWNrVG9TZXR1cCcpLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgdG9rZW46ICdjb25maXJtJyxcbiAgICB9LFxuICBdKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cygnTWluaUdhbWVzJywgTUlOSV9HQU1FU19JMThOKTtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhclRpbWVycygpO1xuICAgIHRoaXMuYXVkaW8uc3RvcE11c2ljKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnTWluaUdhbWVzJyk7XG4gIH1cblxuICBzZWxlY3RNb2RlKG1vZGU6IFNpbW9uR2FtZU1vZGUpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGUuc2V0KG1vZGUpO1xuICB9XG5cbiAgbW9kZVRpdGxlKG1vZGU6IFNpbW9uR2FtZU1vZGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoYHNpbW9uTW9kZSR7dGhpcy5jYXBpdGFsaXplKG1vZGUpfWApO1xuICB9XG5cbiAgbW9kZURlc2NyaXB0aW9uKG1vZGU6IFNpbW9uR2FtZU1vZGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoYHNpbW9uTW9kZSR7dGhpcy5jYXBpdGFsaXplKG1vZGUpfURlc2NyaXB0aW9uYCk7XG4gIH1cblxuICBzdGFydCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyVGltZXJzKCk7XG4gICAgdGhpcy5waGFzZS5zZXQoJ3Nob3dpbmcnKTtcbiAgICB0aGlzLnJvdW5kLnNldCgxKTtcbiAgICB0aGlzLmlucHV0SW5kZXguc2V0KDApO1xuICAgIHRoaXMuc2VxdWVuY2Uuc2V0KHRoaXMuY3JlYXRlSW5pdGlhbFNlcXVlbmNlKCkpO1xuICAgIHRoaXMuc2hvd1NlcXVlbmNlKCk7XG4gIH1cblxuICByZXNldFRvU2V0dXAoKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhclRpbWVycygpO1xuICAgIHRoaXMucGhhc2Uuc2V0KCdob21lJyk7XG4gICAgdGhpcy5yb3VuZC5zZXQoMCk7XG4gICAgdGhpcy5zZXF1ZW5jZS5zZXQoW10pO1xuICAgIHRoaXMuaW5wdXRJbmRleC5zZXQoMCk7XG4gICAgdGhpcy5hY3RpdmVQYWQuc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICByZXF1ZXN0UmVzdGFydEdhbWUoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgncmVzdGFydCcpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgcmVxdWVzdENoYW5nZU1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgnbW9kZScpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgcmVxdWVzdENoYW5nZUdhbWUoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgnZ2FtZXMnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIGNsb3NlQ29uZmlybU1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIGNvbmZpcm1QZW5kaW5nQWN0aW9uKHRva2VuPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRva2VuICE9PSAnY29uZmlybScpIHtcbiAgICAgIHRoaXMuY2xvc2VDb25maXJtTW9kYWwoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgIGlmIChhY3Rpb24gPT09ICdyZXN0YXJ0Jykge1xuICAgICAgdGhpcy5zdGFydCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAnbW9kZScpIHtcbiAgICAgIHRoaXMucmVzZXRUb1NldHVwKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY3Rpb24gPT09ICdnYW1lcycpIHtcbiAgICAgIHRoaXMucmVzZXRUb0dhbWVzTWVudSgpO1xuICAgIH1cbiAgfVxuXG4gIHRhcChwYWQ6IFNpbW9uUGFkKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGhhc2UoKSAhPT0gJ3dhaXRpbmcnIHx8ICF0aGlzLmFjY2VwdGluZ0lucHV0KSByZXR1cm47XG4gICAgdGhpcy5mbGFzaFBhZChwYWQuaWQsIDE4MCk7XG4gICAgdGhpcy5hdWRpby5zaW1vblBhZChwYWQudG9uZSk7XG4gICAgY29uc3QgZXhwZWN0ZWQgPSB0aGlzLnNlcXVlbmNlKClbdGhpcy5pbnB1dEluZGV4KCldO1xuICAgIGlmIChwYWQuaWQgIT09IGV4cGVjdGVkKSB7XG4gICAgICB0aGlzLmZhaWwoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbmV4dEluZGV4ID0gdGhpcy5pbnB1dEluZGV4KCkgKyAxO1xuICAgIHRoaXMuaW5wdXRJbmRleC5zZXQobmV4dEluZGV4KTtcbiAgICBpZiAobmV4dEluZGV4IDwgdGhpcy5zZXF1ZW5jZSgpLmxlbmd0aCkge1xuICAgICAgdGhpcy5hdWRpby5zaW1vblN0ZXBPaygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNvbXBsZXRlUm91bmQoKTtcbiAgfVxuXG4gIHNjb3JlVGV4dChlbnRyeTogU2ltb25MZWFkZXJib2FyZEVudHJ5KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50KCdzaW1vblNjb3JlJylcbiAgICAgIC5yZXBsYWNlKCd7cm91bmR9JywgU3RyaW5nKGVudHJ5LnJvdW5kKSlcbiAgICAgIC5yZXBsYWNlKCd7c3RlcHN9JywgU3RyaW5nKGVudHJ5LnN0ZXBzKSk7XG4gIH1cblxuICBkYXRlVGV4dCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWUuc2xpY2UoMCwgMTApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21wbGV0ZVJvdW5kKCk6IHZvaWQge1xuICAgIHRoaXMuYWNjZXB0aW5nSW5wdXQgPSBmYWxzZTtcbiAgICB0aGlzLnBoYXNlLnNldCgnc3VjY2VzcycpO1xuICAgIHRoaXMuYXVkaW8uc2ltb25Sb3VuZE9rKCk7XG4gICAgdGhpcy5zYXZlU2NvcmUodGhpcy5yb3VuZCgpLCB0aGlzLnNlcXVlbmNlKCkubGVuZ3RoKTtcbiAgICB0aGlzLnNldFRpbWVyKCgpID0+IHtcbiAgICAgIHRoaXMucm91bmQuc2V0KHRoaXMucm91bmQoKSArIDEpO1xuICAgICAgdGhpcy5zZXF1ZW5jZS51cGRhdGUoKGN1cnJlbnQpID0+IFsuLi5jdXJyZW50LCB0aGlzLnJhbmRvbVBhZElkKCldKTtcbiAgICAgIHRoaXMuc2hvd1NlcXVlbmNlKCk7XG4gICAgfSwgdGhpcy5tb2RlKCkgPT09ICduaW5qYScgPyA1MjAgOiA3NjApO1xuICB9XG5cbiAgcHJpdmF0ZSBmYWlsKCk6IHZvaWQge1xuICAgIHRoaXMuYWNjZXB0aW5nSW5wdXQgPSBmYWxzZTtcbiAgICB0aGlzLnBoYXNlLnNldCgnZmFpbGVkJyk7XG4gICAgdGhpcy5hY3RpdmVQYWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5hdWRpby5zaW1vbkZhaWwoKTtcbiAgICB0aGlzLnNhdmVTY29yZShNYXRoLm1heCgwLCB0aGlzLnJvdW5kKCkgLSAxKSwgTWF0aC5tYXgoMCwgdGhpcy5zZXF1ZW5jZSgpLmxlbmd0aCAtIDEpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd1NlcXVlbmNlKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJUaW1lcnMoKTtcbiAgICB0aGlzLmFjY2VwdGluZ0lucHV0ID0gZmFsc2U7XG4gICAgdGhpcy5pbnB1dEluZGV4LnNldCgwKTtcbiAgICB0aGlzLnBoYXNlLnNldCgnc2hvd2luZycpO1xuICAgIGNvbnN0IHsgc2hvd01zLCBnYXBNcyB9ID0gdGhpcy5tb2RlQ29uZmlnKCk7XG4gICAgbGV0IGRlbGF5ID0gMjgwO1xuICAgIHRoaXMuc2VxdWVuY2UoKS5mb3JFYWNoKChwYWRJZCkgPT4ge1xuICAgICAgdGhpcy5zZXRUaW1lcigoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhZCA9IHRoaXMucGFkcy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBwYWRJZCk7XG4gICAgICAgIGlmIChwYWQpIHRoaXMuYXVkaW8uc2ltb25QYWQocGFkLnRvbmUpO1xuICAgICAgICB0aGlzLmFjdGl2ZVBhZC5zZXQocGFkSWQpO1xuICAgICAgfSwgZGVsYXkpO1xuICAgICAgdGhpcy5zZXRUaW1lcigoKSA9PiB0aGlzLmFjdGl2ZVBhZC5zZXQodW5kZWZpbmVkKSwgZGVsYXkgKyBzaG93TXMpO1xuICAgICAgZGVsYXkgKz0gc2hvd01zICsgZ2FwTXM7XG4gICAgfSk7XG4gICAgdGhpcy5zZXRUaW1lcigoKSA9PiB7XG4gICAgICB0aGlzLnBoYXNlLnNldCgnd2FpdGluZycpO1xuICAgICAgdGhpcy5hY2NlcHRpbmdJbnB1dCA9IHRydWU7XG4gICAgfSwgZGVsYXkgKyAxMDApO1xuICB9XG5cbiAgcHJpdmF0ZSBmbGFzaFBhZChwYWRJZDogc3RyaW5nLCBtczogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVQYWQuc2V0KHBhZElkKTtcbiAgICB0aGlzLnNldFRpbWVyKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZVBhZCgpID09PSBwYWRJZCkgdGhpcy5hY3RpdmVQYWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgfSwgbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVJbml0aWFsU2VxdWVuY2UoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLm1vZGVDb25maWcoKS5zdGFydFN0ZXBzIH0sICgpID0+IHRoaXMucmFuZG9tUGFkSWQoKSk7XG4gIH1cblxuICBwcml2YXRlIHJhbmRvbVBhZElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGFkc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiB0aGlzLnBhZHMubGVuZ3RoKV0uaWQ7XG4gIH1cblxuICBwcml2YXRlIHNhdmVTY29yZShyb3VuZDogbnVtYmVyLCBzdGVwczogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHJvdW5kIDw9IDApIHJldHVybjtcbiAgICBjb25zdCBlbnRyeTogU2ltb25MZWFkZXJib2FyZEVudHJ5ID0ge1xuICAgICAgbW9kZTogdGhpcy5tb2RlKCksXG4gICAgICByb3VuZCxcbiAgICAgIHN0ZXBzLFxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfTtcbiAgICBjb25zdCB1cGRhdGVkID0gW2VudHJ5LCAuLi50aGlzLmxlYWRlcmJvYXJkKCldXG4gICAgICAuc29ydCgoYSwgYikgPT4gYi5yb3VuZCAtIGEucm91bmQgfHwgYi5zdGVwcyAtIGEuc3RlcHMpXG4gICAgICAuc2xpY2UoMCwgNDApO1xuICAgIHRoaXMubGVhZGVyYm9hcmQuc2V0KHVwZGF0ZWQpO1xuICAgIHRyeSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMRUFERVJCT0FSRF9LRVksIEpTT04uc3RyaW5naWZ5KHVwZGF0ZWQpKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIEVsIHJhbmtpbmcgbG9jYWwgbm8gZXMgY3LDrXRpY28gc2kgc3RvcmFnZSBubyBlc3TDoSBkaXNwb25pYmxlLlxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRUb0dhbWVzTWVudSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0VG9TZXR1cCgpO1xuICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLm1pbmlHYW1lc0Jhc2VSb3V0ZSgpKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBtaW5pR2FtZXNCYXNlUm91dGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCByb3V0ZSA9ICh0aGlzLm1pbmlHYW1lc1JvdXRlIHx8ICcvbWluaS1nYW1lcycpLnRyaW0oKTtcbiAgICByZXR1cm4gYC8ke3JvdXRlLnJlcGxhY2UoL15cXC8rfFxcLyskL2csICcnKSB8fCAnbWluaS1nYW1lcyd9YDtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZExlYWRlcmJvYXJkKCk6IFNpbW9uTGVhZGVyYm9hcmRFbnRyeVtdIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmF3ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTEVBREVSQk9BUkRfS0VZKTtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHJhdyA/IChKU09OLnBhcnNlKHJhdykgYXMgU2ltb25MZWFkZXJib2FyZEVudHJ5W10pIDogW107XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShwYXJzZWQpID8gcGFyc2VkIDogW107XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRUaW1lcihjYWxsYmFjazogKCkgPT4gdm9pZCwgbXM6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGlkID0gd2luZG93LnNldFRpbWVvdXQoY2FsbGJhY2ssIG1zKTtcbiAgICB0aGlzLnRpbWVycy5wdXNoKGlkKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJUaW1lcnMoKTogdm9pZCB7XG4gICAgdGhpcy50aW1lcnMuZm9yRWFjaCgoaWQpID0+IHdpbmRvdy5jbGVhclRpbWVvdXQoaWQpKTtcbiAgICB0aGlzLnRpbWVycyA9IFtdO1xuICAgIHRoaXMuYWNjZXB0aW5nSW5wdXQgPSBmYWxzZTtcbiAgICB0aGlzLmFjdGl2ZVBhZC5zZXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FwaXRhbGl6ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHt2YWx1ZS5zbGljZSgxKX1gO1xuICB9XG59XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21pbmktZ2FtZXMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIE1pbmlHYW1lU3RhdHVzID0gJ2F2YWlsYWJsZScgfCAnc29vbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWluaUdhbWVEZWZpbml0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xuICBpbWFnZVNyYz86IHN0cmluZztcbiAgcm91dGU/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21pbmktZ2FtZXMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIE1pbmlHYW1lU3RhdHVzID0gJ2F2YWlsYWJsZScgfCAnc29vbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWluaUdhbWVEZWZpbml0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xuICBpbWFnZVNyYz86IHN0cmluZztcbiAgcm91dGU/OiBzdHJpbmc7XG4gIHN0YXR1cz86IE1pbmlHYW1lU3RhdHVzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1pbmlHYW1lUGxheWVyUHJvZmlsZSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgYXZhdGFyOiBzdHJpbmc7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICB1cGRhdGVkQXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgTWVtb3J5R2FtZURpZmZpY3VsdHkgPSAnZWFzeScgfCAnbWVkaXVtJyB8ICdoYXJkJztcblxuZXhwb3J0IHR5cGUgTWVtb3J5R2FtZU1vZGUgPSAnY2xhc3NpYycgfCAncmVsYXhlZCcgfCAndGltZWQnO1xuXG5leHBvcnQgdHlwZSBNZW1vcnlHYW1lUHJvZmlsZSA9ICdraWQnIHwgJ2NsYXNzaWMnIHwgJ25pbmphJztcblxuZXhwb3J0IGludGVyZmFjZSBNZW1vcnlHYW1lQ2FyZCB7XG4gIGlkOiBzdHJpbmc7XG4gIHN5bWJvbDogc3RyaW5nO1xuICBtYXRjaGVkOiBib29sZWFuO1xuICBmbGlwcGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBTaW1vbkdhbWVNb2RlID0gJ2tpZCcgfCAnY2xhc3NpYycgfCAnbmluamEnO1xuXG5leHBvcnQgdHlwZSBTaW1vbkdhbWVQaGFzZSA9ICdob21lJyB8ICdzaG93aW5nJyB8ICd3YWl0aW5nJyB8ICdzdWNjZXNzJyB8ICdmYWlsZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpbW9uUGFkIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgY29sb3I6IHN0cmluZztcbiAgdG9uZTogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBCdWJibGVCbGl0ek1vZGUgPSAna2lkJyB8ICdjbGFzc2ljJyB8ICduaW5qYSc7XG5leHBvcnQgdHlwZSBCdWJibGVCbGl0elBoYXNlID0gJ2hvbWUnIHwgJ3BsYXlpbmcnIHwgJ2ZpbmlzaGVkJztcbmV4cG9ydCB0eXBlIEJ1YmJsZUJsaXR6Q29sb3IgPSAncm9zZScgfCAnY3lhbicgfCAnc3VuJyB8ICd2aW9sZXQnIHwgJ2xlYWYnIHwgJ29yYW5nZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnViYmxlQmxpdHpDZWxsIHtcbiAgaWQ6IHN0cmluZztcbiAgcm93OiBudW1iZXI7XG4gIGNvbDogbnVtYmVyO1xuICBjb2xvcjogQnViYmxlQmxpdHpDb2xvcjtcbiAgc3RhdGU/OiAnaWRsZScgfCAncG9wcGluZycgfCAnZmFsbGluZycgfCAnZW50ZXJpbmcnO1xuICBkcm9wPzogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBDaGVzc2ltYWxzQm9hcmRTaXplID0gNiB8IDg7XG5leHBvcnQgdHlwZSBDaGVzc2ltYWxzUGxheWVyQ29sb3IgPSAnd2hpdGUnIHwgJ2JsYWNrJztcbmV4cG9ydCB0eXBlIENoZXNzaW1hbHNBbmltYWxUeXBlID0gJ2VhZ2xlJyB8ICdidWxsJyB8ICdrYW5nYXJvbycgfCAnbGlvbic7XG5leHBvcnQgdHlwZSBDaGVzc2ltYWxzTW92ZUtpbmQgPSAnYmFzaWMnIHwgJ3Bvd2VyJztcbmV4cG9ydCB0eXBlIENoZXNzaW1hbHNXaW5SZWFzb24gPSAncHJvbW90aW9uJyB8ICdlbGltaW5hdGlvbicgfCAncmVzaWduYXRpb24nO1xuZXhwb3J0IHR5cGUgQ2hlc3NpbWFsc0dhbWVNb2RlID0gJ2xvY2FsJyB8ICdvbmxpbmUnO1xuZXhwb3J0IHR5cGUgQ2hlc3NpbWFsc0xvY2FsTW9kZSA9ICdvbmUtZGV2aWNlJyB8ICdib3QnO1xuZXhwb3J0IHR5cGUgQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHkgPSAnZWFzeScgfCAnbm9ybWFsJyB8ICdoYXJkJztcbmV4cG9ydCB0eXBlIENoZXNzaW1hbHNCb3RQcm9maWxlSWQgPVxuICB8ICdleHBsb3JlcidcbiAgfCAnaW1wdWxzaXZlJ1xuICB8ICdydW5uZXInXG4gIHwgJ2h1bnRlcidcbiAgfCAnZ3VhcmRpYW4nXG4gIHwgJ2p1bXBlcidcbiAgfCAnc3RyYXRlZ2lzdCdcbiAgfCAncHJlZGF0b3InXG4gIHwgJ3NwcmludGVyJ1xuICB8ICdzZW50aW5lbCc7XG5leHBvcnQgdHlwZSBDaGVzc2ltYWxzR2FtZVN0YXR1cyA9ICd3YWl0aW5nJyB8ICdpbl9wcm9ncmVzcycgfCAnZmluaXNoZWQnIHwgJ2V4cGlyZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoZXNzaW1hbHNCb3RQcm9maWxlIHtcbiAgaWQ6IENoZXNzaW1hbHNCb3RQcm9maWxlSWQ7XG4gIGRpZmZpY3VsdHk6IENoZXNzaW1hbHNCb3REaWZmaWN1bHR5O1xuICBhdmF0YXI6IHN0cmluZztcbiAgbGFiZWxLZXk6IHN0cmluZztcbiAgZGVzY3JpcHRpb25LZXk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGVzc2ltYWxzUG9zaXRpb24ge1xuICByb3c6IG51bWJlcjtcbiAgY29sOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlc3NpbWFsc1BpZWNlIHtcbiAgaWQ6IHN0cmluZztcbiAgY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcjtcbiAgcG9zaXRpb246IENoZXNzaW1hbHNQb3NpdGlvbjtcbiAgY2FwdHVyZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlc3NpbWFsc1Bvd2VyQ2FyZCB7XG4gIHR5cGU6IENoZXNzaW1hbHNBbmltYWxUeXBlO1xuICB1c2VkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoZXNzaW1hbHNQbGF5ZXJTdGF0ZSB7XG4gIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3I7XG4gIHBvd2VyVW5sb2NrZWQ6IGJvb2xlYW47XG4gIGNhcmRzOiBSZWNvcmQ8Q2hlc3NpbWFsc0FuaW1hbFR5cGUsIENoZXNzaW1hbHNQb3dlckNhcmQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoZXNzaW1hbHNNb3ZlIHtcbiAgcGllY2VJZDogc3RyaW5nO1xuICBmcm9tOiBDaGVzc2ltYWxzUG9zaXRpb247XG4gIHRvOiBDaGVzc2ltYWxzUG9zaXRpb247XG4gIGtpbmQ6IENoZXNzaW1hbHNNb3ZlS2luZDtcbiAgYW5pbWFsPzogQ2hlc3NpbWFsc0FuaW1hbFR5cGU7XG4gIGNhcHR1cmVzUGllY2VJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGVzc2ltYWxzTW92ZUhpc3RvcnlFbnRyeSB7XG4gIG1vdmVOdW1iZXI6IG51bWJlcjtcbiAgcGllY2VzOiBDaGVzc2ltYWxzUGllY2VbXTtcbiAgY3VycmVudFR1cm46IENoZXNzaW1hbHNQbGF5ZXJDb2xvcjtcbiAgc3RhdHVzOiBDaGVzc2ltYWxzR2FtZVN0YXR1cztcbiAgbW92ZT86IENoZXNzaW1hbHNNb3ZlO1xuICB3aW5uZXI/OiBDaGVzc2ltYWxzUGxheWVyQ29sb3I7XG4gIHdpbm5lclJlYXNvbj86IENoZXNzaW1hbHNXaW5SZWFzb247XG59XG5cbmV4cG9ydCB0eXBlIENoZXNzaW1hbHNNb3ZlTG9nU3RhdHVzID0gJ2FjY2VwdGVkJyB8ICdyZWplY3RlZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlc3NpbWFsc01vdmVMb2dFbnRyeSB7XG4gIGlkOiBzdHJpbmc7XG4gIGF0OiBzdHJpbmc7XG4gIHVpZDogc3RyaW5nO1xuICBwcm9maWxlSWQ/OiBzdHJpbmc7XG4gIHNlYXRLZXk/OiBzdHJpbmc7XG4gIHNpZGU/OiBDaGVzc2ltYWxzUGxheWVyQ29sb3I7XG4gIHN0YXR1czogQ2hlc3NpbWFsc01vdmVMb2dTdGF0dXM7XG4gIGNvZGU/OiBzdHJpbmc7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG4gIG1vdmU6IENoZXNzaW1hbHNNb3ZlO1xuICBtb3ZlQ291bnRCZWZvcmU6IG51bWJlcjtcbiAgbW92ZUNvdW50QWZ0ZXI/OiBudW1iZXI7XG4gIGN1cnJlbnRUdXJuQmVmb3JlOiBDaGVzc2ltYWxzUGxheWVyQ29sb3I7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlc3NpbWFsc09ubGluZVBhcnRpY2lwYW50IHtcbiAgdWlkOiBzdHJpbmc7XG4gIGFjY291bnRVc2VySWQ/OiBzdHJpbmc7XG4gIHByb2ZpbGVJZDogc3RyaW5nO1xuICBzZWF0S2V5Pzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGhhbmRsZT86IHN0cmluZztcbiAgZW1haWw/OiBzdHJpbmc7XG4gIGF2YXRhcjogc3RyaW5nO1xuICBhdmF0YXJVcmw/OiBzdHJpbmc7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIHNpZGU/OiBDaGVzc2ltYWxzUGxheWVyQ29sb3I7XG4gIGpvaW5lZEF0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlc3NpbWFsc09ubGluZVN0YXRlIHtcbiAgZ2FtZUlkOiBzdHJpbmc7XG4gIGhvc3RVaWQ6IHN0cmluZztcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xuICBleHBpcmVzQXQ6IHN0cmluZztcbiAgZXhwaXJlc0F0TXM6IG51bWJlcjtcbiAgcm91bmQ6IG51bWJlcjtcbiAgcmVtYXRjaE9mPzogc3RyaW5nO1xuICBsb2JieT86IENoZXNzaW1hbHNPbmxpbmVQYXJ0aWNpcGFudDtcbiAgcGVuZGluZ0d1ZXN0PzogQ2hlc3NpbWFsc09ubGluZVBhcnRpY2lwYW50O1xuICBwYXJ0aWNpcGFudHM/OiBQYXJ0aWFsPFJlY29yZDxDaGVzc2ltYWxzUGxheWVyQ29sb3IsIENoZXNzaW1hbHNPbmxpbmVQYXJ0aWNpcGFudD4+O1xuICByZW1hdGNoUmVxdWVzdHM/OiBzdHJpbmdbXTtcbiAgbW92ZUxvZz86IENoZXNzaW1hbHNNb3ZlTG9nRW50cnlbXTtcbn1cblxuZXhwb3J0IHR5cGUgQ2hlc3NpbWFsc0hpc3RvcnlPdXRjb21lID0gJ3dhaXRpbmcnIHwgJ3BlbmRpbmcnIHwgJ2luX3Byb2dyZXNzJyB8ICd3b24nIHwgJ2xvc3QnIHwgJ2RlY2xpbmVkJztcblxuZXhwb3J0IGludGVyZmFjZSBDaGVzc2ltYWxzSGlzdG9yeUVudHJ5IHtcbiAgZ2FtZUlkOiBzdHJpbmc7XG4gIG1vZGU6ICdvbmxpbmUnO1xuICBib2FyZFNpemU6IENoZXNzaW1hbHNCb2FyZFNpemU7XG4gIHN0YXR1czogQ2hlc3NpbWFsc0dhbWVTdGF0dXM7XG4gIG91dGNvbWU6IENoZXNzaW1hbHNIaXN0b3J5T3V0Y29tZTtcbiAgc2lkZT86IENoZXNzaW1hbHNQbGF5ZXJDb2xvcjtcbiAgb3Bwb25lbnRVaWQ/OiBzdHJpbmc7XG4gIG9wcG9uZW50TmFtZT86IHN0cmluZztcbiAgd2lubmVyPzogQ2hlc3NpbWFsc1BsYXllckNvbG9yO1xuICB3aW5uZXJSZWFzb24/OiBDaGVzc2ltYWxzV2luUmVhc29uO1xuICBtb3ZlQ291bnQ6IG51bWJlcjtcbiAgcm91bmQ6IG51bWJlcjtcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xuICBmaW5pc2hlZEF0Pzogc3RyaW5nO1xuICBleHBpcmVzQXQ/OiBzdHJpbmc7XG4gIHJlbWF0Y2hPZj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGVzc2ltYWxzR2FtZVN0YXRlIHtcbiAgaWQ6IHN0cmluZztcbiAgbW9kZTogQ2hlc3NpbWFsc0dhbWVNb2RlO1xuICBib2FyZFNpemU6IENoZXNzaW1hbHNCb2FyZFNpemU7XG4gIHN0YXR1czogQ2hlc3NpbWFsc0dhbWVTdGF0dXM7XG4gIGN1cnJlbnRUdXJuOiBDaGVzc2ltYWxzUGxheWVyQ29sb3I7XG4gIHBpZWNlczogQ2hlc3NpbWFsc1BpZWNlW107XG4gIHBsYXllcnM6IFJlY29yZDxDaGVzc2ltYWxzUGxheWVyQ29sb3IsIENoZXNzaW1hbHNQbGF5ZXJTdGF0ZT47XG4gIHdpbm5lcj86IENoZXNzaW1hbHNQbGF5ZXJDb2xvcjtcbiAgd2lubmVyUmVhc29uPzogQ2hlc3NpbWFsc1dpblJlYXNvbjtcbiAgbW92ZUNvdW50OiBudW1iZXI7XG4gIGxhc3RNb3ZlPzogQ2hlc3NpbWFsc01vdmU7XG4gIG1vdmVIaXN0b3J5PzogQ2hlc3NpbWFsc01vdmVIaXN0b3J5RW50cnlbXTtcbiAgb25saW5lPzogQ2hlc3NpbWFsc09ubGluZVN0YXRlO1xufVxuIl19
|
package/esm2022/lib/version.mjs
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Current version of valtech-components.
|
|
3
3
|
* This is automatically updated during the publish process.
|
|
4
4
|
*/
|
|
5
|
-
export const VERSION = '4.0.
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
export const VERSION = '4.0.420';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC40MjAnO1xuIl19
|