bways-report 0.1.1 → 0.1.2
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/README.md +3 -0
- package/esm2022/lib/features/designer/components/design-canvas/design-canvas.component.mjs +121 -9
- package/esm2022/lib/features/designer/components/property-editor/property-editor-grid.component.mjs +52 -6
- package/esm2022/lib/features/designer/components/property-editor/property-editor.component.mjs +26 -2
- package/esm2022/lib/features/designer/components/toolbar/designer-toolbar.component.mjs +76 -3
- package/esm2022/lib/primitives/components/button/rpt-button.component.mjs +8 -2
- package/fesm2022/bways-report.mjs +278 -17
- package/fesm2022/bways-report.mjs.map +1 -1
- package/lib/features/designer/components/design-canvas/design-canvas.component.d.ts +2 -0
- package/lib/features/designer/components/property-editor/property-editor-grid.component.d.ts +3 -1
- package/lib/features/designer/components/property-editor/property-editor.component.d.ts +2 -0
- package/lib/features/designer/components/toolbar/designer-toolbar.component.d.ts +2 -0
- package/lib/primitives/components/button/rpt-button.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -198,6 +198,30 @@ export class DesignCanvasComponent {
|
|
|
198
198
|
}
|
|
199
199
|
}
|
|
200
200
|
}
|
|
201
|
+
addResultGrid(event) {
|
|
202
|
+
event?.stopPropagation();
|
|
203
|
+
const existingDs = this.definition().dataSources[0];
|
|
204
|
+
const defaultGrid = {
|
|
205
|
+
dataSourceId: existingDs?.id ?? 'default',
|
|
206
|
+
columns: [
|
|
207
|
+
{ field: 'id', label: 'ID', dataType: 'number', visible: true, sortable: true },
|
|
208
|
+
{ field: 'name', label: 'Name', dataType: 'string', visible: true, sortable: true },
|
|
209
|
+
],
|
|
210
|
+
options: {
|
|
211
|
+
pagination: true,
|
|
212
|
+
pageSize: 25,
|
|
213
|
+
showRowNumbers: true,
|
|
214
|
+
showFooter: true,
|
|
215
|
+
},
|
|
216
|
+
};
|
|
217
|
+
this.designerState.updateGridSettings(defaultGrid);
|
|
218
|
+
this.designerState.selectComponent(null);
|
|
219
|
+
this.designerState.setActiveTab('grid');
|
|
220
|
+
}
|
|
221
|
+
removeGrid(event) {
|
|
222
|
+
event?.stopPropagation();
|
|
223
|
+
this.designerState.updateGridSettings(undefined);
|
|
224
|
+
}
|
|
201
225
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DesignCanvasComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
202
226
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DesignCanvasComponent, isStandalone: true, selector: "rpt-design-canvas", host: { listeners: { "document:keydown.escape": "onEscape()" } }, ngImport: i0, template: `
|
|
203
227
|
<div class="canvas-wrapper" (click)="onCanvasBackgroundClick($event)">
|
|
@@ -211,6 +235,29 @@ export class DesignCanvasComponent {
|
|
|
211
235
|
<span class="info-value">{{ components().length }}</span>
|
|
212
236
|
</div>
|
|
213
237
|
|
|
238
|
+
<div class="canvas-actions">
|
|
239
|
+
@if (!definition().grid) {
|
|
240
|
+
<button
|
|
241
|
+
type="button"
|
|
242
|
+
class="canvas-action-btn btn-grid-add"
|
|
243
|
+
(click)="addResultGrid($event)"
|
|
244
|
+
title="Add a Result Grid to this report"
|
|
245
|
+
>
|
|
246
|
+
<rpt-icon name="table" [size]="14" />
|
|
247
|
+
<span>+ Add Grid</span>
|
|
248
|
+
</button>
|
|
249
|
+
} @else {
|
|
250
|
+
<button
|
|
251
|
+
type="button"
|
|
252
|
+
class="canvas-action-btn"
|
|
253
|
+
(click)="selectGridSettings($event)"
|
|
254
|
+
title="Configure Result Data Grid"
|
|
255
|
+
>
|
|
256
|
+
<rpt-icon name="table" [size]="14" />
|
|
257
|
+
<span>Grid ({{ definition().grid?.columns?.length ?? 0 }})</span>
|
|
258
|
+
</button>
|
|
259
|
+
}
|
|
260
|
+
|
|
214
261
|
<button
|
|
215
262
|
type="button"
|
|
216
263
|
class="canvas-action-btn"
|
|
@@ -220,6 +267,7 @@ export class DesignCanvasComponent {
|
|
|
220
267
|
<rpt-icon name="settings" [size]="15" />
|
|
221
268
|
<span>Report Settings</span>
|
|
222
269
|
</button>
|
|
270
|
+
</div>
|
|
223
271
|
</div>
|
|
224
272
|
|
|
225
273
|
<!-- Canvas Drop Area -->
|
|
@@ -491,7 +539,7 @@ export class DesignCanvasComponent {
|
|
|
491
539
|
}
|
|
492
540
|
</div>
|
|
493
541
|
|
|
494
|
-
<!-- Result Grid Preview Placeholder -->
|
|
542
|
+
<!-- Result Grid Preview Placeholder or Empty Add Grid Banner -->
|
|
495
543
|
@if (definition().grid) {
|
|
496
544
|
<div class="canvas-grid-preview-box" (click)="selectGridSettings($event)">
|
|
497
545
|
<div class="grid-preview-header">
|
|
@@ -499,10 +547,19 @@ export class DesignCanvasComponent {
|
|
|
499
547
|
<rpt-icon name="table" [size]="15" />
|
|
500
548
|
<span>Result Grid Preview ({{ definition().grid?.columns?.length ?? 0 }} columns)</span>
|
|
501
549
|
</div>
|
|
502
|
-
<
|
|
550
|
+
<div style="display: flex; align-items: center; gap: 10px;">
|
|
551
|
+
<span class="grid-click-hint">Click to edit columns</span>
|
|
552
|
+
<button
|
|
553
|
+
type="button"
|
|
554
|
+
class="btn-remove-grid"
|
|
555
|
+
(click)="removeGrid($event)"
|
|
556
|
+
title="Remove Result Grid from this report"
|
|
557
|
+
>
|
|
558
|
+
<rpt-icon name="trash" [size]="13" />
|
|
559
|
+
</button>
|
|
560
|
+
</div>
|
|
503
561
|
</div>
|
|
504
562
|
<div class="grid-preview-columns">
|
|
505
|
-
|
|
506
563
|
@for (col of definition().grid?.columns; track col.field) {
|
|
507
564
|
<div class="grid-col-pill">
|
|
508
565
|
<span class="col-pill-name">{{ col.label }}</span>
|
|
@@ -511,11 +568,22 @@ export class DesignCanvasComponent {
|
|
|
511
568
|
}
|
|
512
569
|
</div>
|
|
513
570
|
</div>
|
|
571
|
+
} @else {
|
|
572
|
+
<div class="canvas-add-grid-banner" (click)="addResultGrid($event)">
|
|
573
|
+
<div class="add-grid-icon">
|
|
574
|
+
<rpt-icon name="table" [size]="20" />
|
|
575
|
+
</div>
|
|
576
|
+
<div class="add-grid-text">
|
|
577
|
+
<span class="add-grid-title">+ Add Result Data Grid</span>
|
|
578
|
+
<span class="add-grid-sub">Attach an interactive data table or UltraGrid to display report execution output</span>
|
|
579
|
+
</div>
|
|
580
|
+
<button type="button" class="btn-banner-add">Add Grid</button>
|
|
581
|
+
</div>
|
|
514
582
|
}
|
|
515
583
|
</div>
|
|
516
584
|
</div>
|
|
517
585
|
</div>
|
|
518
|
-
`, isInline: true, styles: [":host{display:block;height:100%;background-color:#f1f5f9;font-family:var(--rpt-font-family, inherit);box-sizing:border-box}.canvas-wrapper{display:flex;flex-direction:column;height:100%}.canvas-toolbar{display:flex;align-items:center;justify-content:space-between;min-height:46px;padding:6px 20px;background:#fff;border-bottom:1px solid var(--rpt-color-border, #cbd5e1);box-sizing:border-box}.canvas-info{display:flex;align-items:center;gap:8px;color:var(--rpt-color-text-muted, #64748b);font-size:.8125rem}.info-label{color:#64748b}.info-value{font-weight:600;color:var(--rpt-color-text, #0f172a)}.info-divider{color:var(--rpt-color-border, #cbd5e1);margin:0 2px}.canvas-action-btn{display:inline-flex;align-items:center;gap:8px;height:32px;padding:0 14px;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:6px;font-size:.8125rem;font-weight:500;color:#1e293b;cursor:pointer;line-height:1;white-space:nowrap;box-shadow:0 1px 2px #0000000a;transition:all var(--rpt-transition-speed, .15s) ease}.canvas-action-btn rpt-icon{color:#64748b;transition:color .15s ease}.canvas-action-btn:hover{background:var(--rpt-color-surface, #f8fafc);border-color:var(--rpt-color-primary, #2563eb);color:var(--rpt-color-primary, #2563eb);box-shadow:0 2px 4px #2563eb14}.canvas-action-btn:hover rpt-icon{color:var(--rpt-color-primary, #2563eb)}.canvas-action-btn:active{transform:translateY(1px)}.canvas-scroll-area{flex:1;overflow-y:auto;padding:16px}.canvas-artboard{width:100%;max-width:1400px;margin:0 auto;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);box-shadow:0 4px 6px -1px #0000000d;min-height:480px;box-sizing:border-box}.canvas-report-header{margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--rpt-color-border, #e2e8f0)}.canvas-report-title{font-size:var(--rpt-font-size-xl, 1.5rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px}.canvas-report-desc{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #64748b);margin:0}.canvas-grid{display:grid;width:100%;min-height:180px;align-items:start;border-radius:6px;transition:all var(--rpt-transition-speed, .15s) ease}.canvas-component-card{background:#fff;border:1.5px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);box-shadow:var(--rpt-box-shadow, 0 1px 2px rgba(0, 0, 0, .05));box-sizing:border-box;transition:all var(--rpt-transition-speed, .15s) ease;cursor:pointer;position:relative;overflow:hidden;display:flex;flex-direction:column;min-height:96px}.canvas-component-card:hover{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 4px 6px -1px #2563eb1a}.canvas-component-card.is-selected{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 2px #2563eb40}.canvas-component-card.is-resizing{-webkit-user-select:none;user-select:none;border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 2px #2563eb59;z-index:30;transition:none!important}.resize-handle{position:absolute;z-index:40;touch-action:none;opacity:0;transition:opacity .15s ease}.canvas-component-card.is-selected .resize-handle,.canvas-component-card:hover .resize-handle{opacity:1}.resize-handle.handle-e{top:0;right:0;width:6px;height:100%;cursor:ew-resize;display:flex;align-items:center;justify-content:center}.resize-handle.handle-e:after{content:\"\";width:3px;height:24px;background:#cbd5e1;border-radius:2px;transition:background .15s ease}.resize-handle.handle-e:hover:after,.canvas-component-card.is-selected .resize-handle.handle-e:after{background:var(--rpt-color-primary, #2563eb)}.resize-handle.handle-s{bottom:0;left:0;height:6px;width:100%;cursor:ns-resize;display:flex;align-items:center;justify-content:center}.resize-handle.handle-s:after{content:\"\";height:3px;width:24px;background:#cbd5e1;border-radius:2px;transition:background .15s ease}.resize-handle.handle-s:hover:after,.canvas-component-card.is-selected .resize-handle.handle-s:after{background:var(--rpt-color-primary, #2563eb)}.resize-handle.handle-se{bottom:0;right:0;width:12px;height:12px;cursor:nwse-resize;display:flex;align-items:flex-end;justify-content:flex-end;padding:2px}.resize-handle.handle-se:after{content:\"\";width:5px;height:5px;border-right:2px solid #cbd5e1;border-bottom:2px solid #cbd5e1;transition:border-color .15s ease}.resize-handle.handle-se:hover:after,.canvas-component-card.is-selected .resize-handle.handle-se:after{border-color:var(--rpt-color-primary, #2563eb)}.resize-dimension-tooltip{position:absolute;top:38px;right:8px;background:#0f172ae6;color:#fff;font-size:.7rem;font-weight:600;padding:3px 8px;border-radius:4px;white-space:nowrap;pointer-events:none;z-index:50;box-shadow:0 2px 4px #0003}.card-header{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:5px 8px;background:var(--rpt-color-surface, #f8fafc);border-bottom:1px solid var(--rpt-color-border, #e2e8f0);min-height:32px;box-sizing:border-box;overflow:hidden}.card-title-group{display:flex;align-items:center;gap:5px;cursor:grab;min-width:0;flex:1;overflow:hidden}.drag-handle-dots{color:var(--rpt-color-text-muted, #94a3b8);font-size:.85rem;letter-spacing:-2px;flex-shrink:0;-webkit-user-select:none;user-select:none}.comp-title{font-size:.75rem;font-weight:600;color:var(--rpt-color-text, #0f172a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none}.card-actions{display:flex;align-items:center;gap:4px;flex-shrink:0;margin-left:auto}.new-row-pill-static{font-size:.65rem;font-weight:600;color:#7c3aed;background:#f5f3ff;border:1px solid #ddd6fe;padding:1px 5px;border-radius:9999px;white-space:nowrap;line-height:1;flex-shrink:0}.span-pill-static{display:inline-flex;align-items:center;justify-content:center;font-size:.65rem;font-weight:600;color:var(--rpt-color-text-muted, #64748b);background:var(--rpt-color-surface, #f1f5f9);border:1px solid var(--rpt-color-border, #e2e8f0);padding:1px 6px;border-radius:9999px;line-height:1.2;white-space:nowrap;-webkit-user-select:none;user-select:none}.card-quick-controls{display:none;align-items:center;gap:3px}.canvas-component-card:hover .span-pill-static,.canvas-component-card.is-selected .span-pill-static,.canvas-component-card:hover .new-row-pill-static,.canvas-component-card.is-selected .new-row-pill-static{display:none}.canvas-component-card:hover .card-quick-controls,.canvas-component-card.is-selected .card-quick-controls{display:inline-flex}.canvas-component-card.is-narrow .card-header{padding:4px 6px;gap:3px}.canvas-component-card.is-narrow:hover .comp-title,.canvas-component-card.is-narrow.is-selected .comp-title,.canvas-component-card.is-narrow:hover .drag-handle-dots,.canvas-component-card.is-narrow.is-selected .drag-handle-dots{display:none}.canvas-component-card.is-narrow .card-quick-controls{gap:2px}.canvas-component-card.is-narrow .span-control-group{height:18px}.canvas-component-card.is-narrow .span-btn{width:14px;height:16px}.canvas-component-card.is-narrow .span-badge{font-size:.6rem;padding:0 2px}.canvas-component-card.is-narrow .card-action-btn{width:18px;height:18px}.canvas-component-card.is-compact:hover .card-action-btn:not(.btn-delete),.canvas-component-card.is-compact.is-selected .card-action-btn:not(.btn-delete){display:none}.span-control-group{display:inline-flex;align-items:center;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;height:20px;padding:0 1px;white-space:nowrap;flex-shrink:0}.span-btn{width:16px;height:18px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;padding:0;color:var(--rpt-color-text-muted, #64748b);cursor:pointer;border-radius:2px;transition:all .12s ease}.span-btn:hover:not(:disabled){background:var(--rpt-color-surface-hover, #f1f5f9);color:var(--rpt-color-primary, #2563eb)}.span-btn:disabled{opacity:.3;cursor:not-allowed}.span-badge{font-size:.65rem;font-weight:600;color:var(--rpt-color-text, #0f172a);padding:0 3px;white-space:nowrap;-webkit-user-select:none;user-select:none;line-height:1}.card-action-btn{width:20px;height:20px;border:none;background:transparent;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;padding:0;cursor:pointer;color:var(--rpt-color-text-muted, #64748b);transition:all .12s ease;flex-shrink:0}.card-action-btn:hover{background:#e2e8f0;color:var(--rpt-color-text, #0f172a)}.card-action-btn.btn-active-toggle{background:#7c3aed;color:#fff;border-color:#7c3aed}.card-action-btn.btn-active-toggle:hover{background:#6d28d9;color:#fff}.btn-delete:hover{background:#fee2e2;color:#ef4444}.card-body{padding:8px 12px 8px 10px;flex:1;display:flex;flex-direction:column;min-height:0;box-sizing:border-box;overflow:hidden}.mock-input-field{display:flex;flex-direction:column;gap:4px;flex:1;height:100%;min-height:0}.mock-label{font-size:.7rem;font-weight:600;color:var(--rpt-color-text-muted, #475569);flex-shrink:0}.mock-input-box,.mock-select-box{border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:6px;padding:6px 12px;font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #94a3b8);background:#fff;flex:1;min-height:38px;height:100%;display:flex;align-items:center;justify-content:space-between;box-sizing:border-box}.mock-checkbox-field{display:flex;align-items:center;gap:6px;flex:1;height:100%;min-height:0;padding-top:14px}.mock-check-box{width:18px;height:18px;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:.65rem;color:var(--rpt-color-primary, #2563eb);flex-shrink:0}.mock-btn-wrapper{display:flex;flex:1;height:100%;min-height:38px;align-items:center;justify-content:flex-start;width:100%;min-width:0;box-sizing:border-box}.mock-btn{border-radius:var(--rpt-border-radius, 6px);padding:0 16px;height:36px;font-size:var(--rpt-font-size-base, .875rem);font-weight:500;border:1px solid transparent;cursor:pointer;width:auto;max-width:100%;display:inline-flex;align-items:center;justify-content:center;gap:6px;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:all .15s ease}.mock-btn.mock-btn-full{width:100%}.canvas-component-card.is-narrow .mock-btn{padding:0 6px;font-size:.775rem;width:100%;height:34px}.mock-kpi-field{display:flex;flex-direction:column;justify-content:space-between;flex:1;height:100%;min-height:0}.mock-kpi-header{display:flex;align-items:center;justify-content:space-between}.mock-kpi-value{font-size:1.25rem;font-weight:700;color:var(--rpt-color-text, #0f172a);margin:2px 0}.mock-kpi-footer{display:flex;align-items:center;gap:6px;font-size:.65rem}.mock-kpi-trend{color:#16a34a;font-weight:600}.mock-kpi-sub{color:#64748b}.mock-chart-field{display:flex;flex-direction:column;flex:1;height:100%;min-height:0}.mock-chart-bars{display:flex;align-items:flex-end;justify-content:space-around;gap:8px;flex:1;min-height:36px;padding-top:6px}.mock-chart-bar{width:16%;background:var(--rpt-color-primary, #2563eb);border-radius:3px 3px 0 0;opacity:.85;min-height:10px}.btn-primary{background:var(--rpt-color-primary, #2563eb);color:#fff}.btn-secondary{background:#f1f5f9;color:#0f172a;border:1px solid #cbd5e1}.btn-outline{background:transparent;color:#2563eb;border:1px solid #2563eb}.btn-danger{background:#ef4444;color:#fff}.mock-generic-box{border:1px dashed #cbd5e1;border-radius:4px;padding:8px;font-size:.75rem;text-align:center;color:#64748b}.canvas-drag-placeholder{background:#2563eb0f;border:2px dashed var(--rpt-color-primary, #2563eb);border-radius:6px;min-height:80px;box-sizing:border-box;transition:transform .15s ease}.canvas-drag-preview,::ng-deep .canvas-drag-preview{background:#fff;border:2px solid var(--rpt-color-primary, #2563eb);border-radius:6px;padding:8px 14px;display:inline-flex;align-items:center;gap:8px;font-family:var(--rpt-font-family, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif)!important;font-size:.8rem;font-weight:600;color:var(--rpt-color-text, #0f172a);box-shadow:0 12px 24px -4px #00000040;z-index:10000}.preview-title,::ng-deep .preview-title{font-family:inherit!important;max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preview-span,::ng-deep .preview-span{font-family:inherit!important;font-size:.65rem;font-weight:600;color:var(--rpt-color-primary, #2563eb);background:#eff6ff;border:1px solid #bfdbfe;padding:1px 6px;border-radius:9999px}.canvas-empty-state{grid-column:1 / -1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;border:2px dashed var(--rpt-color-border, #cbd5e1);border-radius:8px;background:var(--rpt-color-surface, #f8fafc);text-align:center}.empty-icon{font-size:2.5rem;margin-bottom:12px}.canvas-empty-state h3{font-size:1rem;font-weight:600;color:var(--rpt-color-text, #0f172a);margin:0 0 6px}.canvas-empty-state p{font-size:.8rem;color:var(--rpt-color-text-muted, #64748b);max-width:380px;margin:0}.canvas-grid-preview-box{margin-top:32px;border:1px dashed var(--rpt-color-border, #cbd5e1);border-radius:8px;background:var(--rpt-color-surface, #f8fafc);padding:16px;cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease}.canvas-grid-preview-box:hover{border-color:var(--rpt-color-primary, #2563eb);background:#fff}.grid-preview-header{display:flex;align-items:center;justify-content:space-between;font-size:.8rem;font-weight:600;color:var(--rpt-color-text, #0f172a);margin-bottom:10px}.grid-click-hint{font-size:.7rem;color:var(--rpt-color-primary, #2563eb);font-weight:500}.grid-preview-columns{display:flex;flex-wrap:wrap;gap:6px}.grid-col-pill{display:flex;align-items:center;gap:4px;background:#fff;border:1px solid var(--rpt-color-border, #e2e8f0);border-radius:4px;padding:4px 8px;font-size:.75rem}.col-pill-name{font-weight:600;color:var(--rpt-color-text, #0f172a)}.col-pill-type{font-size:.65rem;color:var(--rpt-color-text-muted, #94a3b8);background:var(--rpt-color-surface, #f1f5f9);padding:1px 4px;border-radius:3px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i1.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i1.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "directive", type: i1.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "component", type: RptIconComponent, selector: "rpt-icon", inputs: ["name", "size", "color", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
586
|
+
`, isInline: true, styles: [":host{display:block;height:100%;background-color:#f1f5f9;font-family:var(--rpt-font-family, inherit);box-sizing:border-box}.canvas-wrapper{display:flex;flex-direction:column;height:100%}.canvas-toolbar{display:flex;align-items:center;justify-content:space-between;min-height:46px;padding:6px 20px;background:#fff;border-bottom:1px solid var(--rpt-color-border, #cbd5e1);box-sizing:border-box}.canvas-info{display:flex;align-items:center;gap:8px;color:var(--rpt-color-text-muted, #64748b);font-size:.8125rem}.info-label{color:#64748b}.info-value{font-weight:600;color:var(--rpt-color-text, #0f172a)}.info-divider{color:var(--rpt-color-border, #cbd5e1);margin:0 2px}.canvas-action-btn{display:inline-flex;align-items:center;gap:8px;height:32px;padding:0 14px;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:6px;font-size:.8125rem;font-weight:500;color:#1e293b;cursor:pointer;line-height:1;white-space:nowrap;box-shadow:0 1px 2px #0000000a;transition:all var(--rpt-transition-speed, .15s) ease}.canvas-action-btn rpt-icon{color:#64748b;transition:color .15s ease}.canvas-action-btn:hover{background:var(--rpt-color-surface, #f8fafc);border-color:var(--rpt-color-primary, #2563eb);color:var(--rpt-color-primary, #2563eb);box-shadow:0 2px 4px #2563eb14}.canvas-action-btn:hover rpt-icon{color:var(--rpt-color-primary, #2563eb)}.canvas-action-btn:active{transform:translateY(1px)}.canvas-scroll-area{flex:1;overflow-y:auto;padding:16px}.canvas-artboard{width:100%;max-width:1400px;margin:0 auto;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);box-shadow:0 4px 6px -1px #0000000d;min-height:480px;box-sizing:border-box}.canvas-report-header{margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--rpt-color-border, #e2e8f0)}.canvas-report-title{font-size:var(--rpt-font-size-xl, 1.5rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px}.canvas-report-desc{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #64748b);margin:0}.canvas-grid{display:grid;width:100%;min-height:180px;align-items:start;border-radius:6px;transition:all var(--rpt-transition-speed, .15s) ease}.canvas-component-card{background:#fff;border:1.5px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);box-shadow:var(--rpt-box-shadow, 0 1px 2px rgba(0, 0, 0, .05));box-sizing:border-box;transition:all var(--rpt-transition-speed, .15s) ease;cursor:pointer;position:relative;overflow:hidden;display:flex;flex-direction:column;min-height:96px}.canvas-component-card:hover{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 4px 6px -1px #2563eb1a}.canvas-component-card.is-selected{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 2px #2563eb40}.canvas-component-card.is-resizing{-webkit-user-select:none;user-select:none;border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 2px #2563eb59;z-index:30;transition:none!important}.resize-handle{position:absolute;z-index:40;touch-action:none;opacity:0;transition:opacity .15s ease}.canvas-component-card.is-selected .resize-handle,.canvas-component-card:hover .resize-handle{opacity:1}.resize-handle.handle-e{top:0;right:0;width:6px;height:100%;cursor:ew-resize;display:flex;align-items:center;justify-content:center}.resize-handle.handle-e:after{content:\"\";width:3px;height:24px;background:#cbd5e1;border-radius:2px;transition:background .15s ease}.resize-handle.handle-e:hover:after,.canvas-component-card.is-selected .resize-handle.handle-e:after{background:var(--rpt-color-primary, #2563eb)}.resize-handle.handle-s{bottom:0;left:0;height:6px;width:100%;cursor:ns-resize;display:flex;align-items:center;justify-content:center}.resize-handle.handle-s:after{content:\"\";height:3px;width:24px;background:#cbd5e1;border-radius:2px;transition:background .15s ease}.resize-handle.handle-s:hover:after,.canvas-component-card.is-selected .resize-handle.handle-s:after{background:var(--rpt-color-primary, #2563eb)}.resize-handle.handle-se{bottom:0;right:0;width:12px;height:12px;cursor:nwse-resize;display:flex;align-items:flex-end;justify-content:flex-end;padding:2px}.resize-handle.handle-se:after{content:\"\";width:5px;height:5px;border-right:2px solid #cbd5e1;border-bottom:2px solid #cbd5e1;transition:border-color .15s ease}.resize-handle.handle-se:hover:after,.canvas-component-card.is-selected .resize-handle.handle-se:after{border-color:var(--rpt-color-primary, #2563eb)}.resize-dimension-tooltip{position:absolute;top:38px;right:8px;background:#0f172ae6;color:#fff;font-size:.7rem;font-weight:600;padding:3px 8px;border-radius:4px;white-space:nowrap;pointer-events:none;z-index:50;box-shadow:0 2px 4px #0003}.card-header{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:5px 8px;background:var(--rpt-color-surface, #f8fafc);border-bottom:1px solid var(--rpt-color-border, #e2e8f0);min-height:32px;box-sizing:border-box;overflow:hidden}.card-title-group{display:flex;align-items:center;gap:5px;cursor:grab;min-width:0;flex:1;overflow:hidden}.drag-handle-dots{color:var(--rpt-color-text-muted, #94a3b8);font-size:.85rem;letter-spacing:-2px;flex-shrink:0;-webkit-user-select:none;user-select:none}.comp-title{font-size:.75rem;font-weight:600;color:var(--rpt-color-text, #0f172a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none}.card-actions{display:flex;align-items:center;gap:4px;flex-shrink:0;margin-left:auto}.new-row-pill-static{font-size:.65rem;font-weight:600;color:#7c3aed;background:#f5f3ff;border:1px solid #ddd6fe;padding:1px 5px;border-radius:9999px;white-space:nowrap;line-height:1;flex-shrink:0}.span-pill-static{display:inline-flex;align-items:center;justify-content:center;font-size:.65rem;font-weight:600;color:var(--rpt-color-text-muted, #64748b);background:var(--rpt-color-surface, #f1f5f9);border:1px solid var(--rpt-color-border, #e2e8f0);padding:1px 6px;border-radius:9999px;line-height:1.2;white-space:nowrap;-webkit-user-select:none;user-select:none}.card-quick-controls{display:none;align-items:center;gap:3px}.canvas-component-card:hover .span-pill-static,.canvas-component-card.is-selected .span-pill-static,.canvas-component-card:hover .new-row-pill-static,.canvas-component-card.is-selected .new-row-pill-static{display:none}.canvas-component-card:hover .card-quick-controls,.canvas-component-card.is-selected .card-quick-controls{display:inline-flex}.canvas-component-card.is-narrow .card-header{padding:4px 6px;gap:3px}.canvas-component-card.is-narrow:hover .comp-title,.canvas-component-card.is-narrow.is-selected .comp-title,.canvas-component-card.is-narrow:hover .drag-handle-dots,.canvas-component-card.is-narrow.is-selected .drag-handle-dots{display:none}.canvas-component-card.is-narrow .card-quick-controls{gap:2px}.canvas-component-card.is-narrow .span-control-group{height:18px}.canvas-component-card.is-narrow .span-btn{width:14px;height:16px}.canvas-component-card.is-narrow .span-badge{font-size:.6rem;padding:0 2px}.canvas-component-card.is-narrow .card-action-btn{width:18px;height:18px}.canvas-component-card.is-compact:hover .card-action-btn:not(.btn-delete),.canvas-component-card.is-compact.is-selected .card-action-btn:not(.btn-delete){display:none}.span-control-group{display:inline-flex;align-items:center;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;height:20px;padding:0 1px;white-space:nowrap;flex-shrink:0}.span-btn{width:16px;height:18px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;padding:0;color:var(--rpt-color-text-muted, #64748b);cursor:pointer;border-radius:2px;transition:all .12s ease}.span-btn:hover:not(:disabled){background:var(--rpt-color-surface-hover, #f1f5f9);color:var(--rpt-color-primary, #2563eb)}.span-btn:disabled{opacity:.3;cursor:not-allowed}.span-badge{font-size:.65rem;font-weight:600;color:var(--rpt-color-text, #0f172a);padding:0 3px;white-space:nowrap;-webkit-user-select:none;user-select:none;line-height:1}.card-action-btn{width:20px;height:20px;border:none;background:transparent;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;padding:0;cursor:pointer;color:var(--rpt-color-text-muted, #64748b);transition:all .12s ease;flex-shrink:0}.card-action-btn:hover{background:#e2e8f0;color:var(--rpt-color-text, #0f172a)}.card-action-btn.btn-active-toggle{background:#7c3aed;color:#fff;border-color:#7c3aed}.card-action-btn.btn-active-toggle:hover{background:#6d28d9;color:#fff}.btn-delete:hover{background:#fee2e2;color:#ef4444}.card-body{padding:8px 12px 8px 10px;flex:1;display:flex;flex-direction:column;min-height:0;box-sizing:border-box;overflow:hidden}.mock-input-field{display:flex;flex-direction:column;gap:4px;flex:1;height:100%;min-height:0}.mock-label{font-size:.7rem;font-weight:600;color:var(--rpt-color-text-muted, #475569);flex-shrink:0}.mock-input-box,.mock-select-box{border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:6px;padding:6px 12px;font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #94a3b8);background:#fff;flex:1;min-height:38px;height:100%;display:flex;align-items:center;justify-content:space-between;box-sizing:border-box}.mock-checkbox-field{display:flex;align-items:center;gap:6px;flex:1;height:100%;min-height:0;padding-top:14px}.mock-check-box{width:18px;height:18px;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:.65rem;color:var(--rpt-color-primary, #2563eb);flex-shrink:0}.mock-btn-wrapper{display:flex;flex:1;height:100%;min-height:38px;align-items:center;justify-content:flex-start;width:100%;min-width:0;box-sizing:border-box}.mock-btn{border-radius:var(--rpt-border-radius, 6px);padding:0 16px;height:36px;font-size:var(--rpt-font-size-base, .875rem);font-weight:500;border:1px solid transparent;cursor:pointer;width:auto;max-width:100%;display:inline-flex;align-items:center;justify-content:center;gap:6px;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:all .15s ease}.mock-btn.mock-btn-full{width:100%}.canvas-component-card.is-narrow .mock-btn{padding:0 6px;font-size:.775rem;width:100%;height:34px}.mock-kpi-field{display:flex;flex-direction:column;justify-content:space-between;flex:1;height:100%;min-height:0}.mock-kpi-header{display:flex;align-items:center;justify-content:space-between}.mock-kpi-value{font-size:1.25rem;font-weight:700;color:var(--rpt-color-text, #0f172a);margin:2px 0}.mock-kpi-footer{display:flex;align-items:center;gap:6px;font-size:.65rem}.mock-kpi-trend{color:#16a34a;font-weight:600}.mock-kpi-sub{color:#64748b}.mock-chart-field{display:flex;flex-direction:column;flex:1;height:100%;min-height:0}.mock-chart-bars{display:flex;align-items:flex-end;justify-content:space-around;gap:8px;flex:1;min-height:36px;padding-top:6px}.mock-chart-bar{width:16%;background:var(--rpt-color-primary, #2563eb);border-radius:3px 3px 0 0;opacity:.85;min-height:10px}.btn-primary{background:var(--rpt-color-primary, #2563eb);color:#fff}.btn-secondary{background:#f1f5f9;color:#0f172a;border:1px solid #cbd5e1}.btn-outline{background:transparent;color:#2563eb;border:1px solid #2563eb}.btn-danger{background:#ef4444;color:#fff}.mock-generic-box{border:1px dashed #cbd5e1;border-radius:4px;padding:8px;font-size:.75rem;text-align:center;color:#64748b}.canvas-drag-placeholder{background:#2563eb0f;border:2px dashed var(--rpt-color-primary, #2563eb);border-radius:6px;min-height:80px;box-sizing:border-box;transition:transform .15s ease}.canvas-drag-preview,::ng-deep .canvas-drag-preview{background:#fff;border:2px solid var(--rpt-color-primary, #2563eb);border-radius:6px;padding:8px 14px;display:inline-flex;align-items:center;gap:8px;font-family:var(--rpt-font-family, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif)!important;font-size:.8rem;font-weight:600;color:var(--rpt-color-text, #0f172a);box-shadow:0 12px 24px -4px #00000040;z-index:10000}.preview-title,::ng-deep .preview-title{font-family:inherit!important;max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preview-span,::ng-deep .preview-span{font-family:inherit!important;font-size:.65rem;font-weight:600;color:var(--rpt-color-primary, #2563eb);background:#eff6ff;border:1px solid #bfdbfe;padding:1px 6px;border-radius:9999px}.canvas-empty-state{grid-column:1 / -1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;border:2px dashed var(--rpt-color-border, #cbd5e1);border-radius:8px;background:var(--rpt-color-surface, #f8fafc);text-align:center}.empty-icon{font-size:2.5rem;margin-bottom:12px}.canvas-empty-state h3{font-size:1rem;font-weight:600;color:var(--rpt-color-text, #0f172a);margin:0 0 6px}.canvas-empty-state p{font-size:.8rem;color:var(--rpt-color-text-muted, #64748b);max-width:380px;margin:0}.canvas-grid-preview-box{margin-top:32px;border:1px dashed var(--rpt-color-border, #cbd5e1);border-radius:8px;background:var(--rpt-color-surface, #f8fafc);padding:16px;cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease}.canvas-grid-preview-box:hover{border-color:var(--rpt-color-primary, #2563eb);background:#fff}.grid-preview-header{display:flex;align-items:center;justify-content:space-between;font-size:.8rem;font-weight:600;color:var(--rpt-color-text, #0f172a);margin-bottom:10px}.grid-click-hint{font-size:.7rem;color:var(--rpt-color-primary, #2563eb);font-weight:500}.grid-preview-columns{display:flex;flex-wrap:wrap;gap:6px}.grid-col-pill{display:flex;align-items:center;gap:4px;background:#fff;border:1px solid var(--rpt-color-border, #e2e8f0);border-radius:4px;padding:4px 8px;font-size:.75rem}.col-pill-name{font-weight:600;color:var(--rpt-color-text, #0f172a)}.col-pill-type{font-size:.65rem;color:var(--rpt-color-text-muted, #94a3b8);background:var(--rpt-color-surface, #f1f5f9);padding:1px 4px;border-radius:3px}.canvas-actions{display:flex;align-items:center;gap:8px}.btn-grid-add{background:#f0fdf4;border-color:#bbf7d0;color:#16a34a}.btn-grid-add:hover{background:#dcfce7;border-color:#86efac;color:#15803d}.btn-remove-grid{display:inline-flex;align-items:center;justify-content:center;padding:4px;border:none;background:transparent;color:#94a3b8;border-radius:4px;cursor:pointer;transition:all .15s ease}.btn-remove-grid:hover{background:#fee2e2;color:#ef4444}.canvas-add-grid-banner{margin-top:24px;border:2px dashed #cbd5e1;border-radius:8px;background:#fff;padding:16px 20px;display:flex;align-items:center;gap:16px;cursor:pointer;transition:all .15s ease}.canvas-add-grid-banner:hover{border-color:#2563eb;background:#f8fafc;box-shadow:0 2px 8px #2563eb14}.add-grid-icon{width:40px;height:40px;border-radius:8px;background:#eff6ff;color:#2563eb;display:flex;align-items:center;justify-content:center;flex-shrink:0}.add-grid-text{display:flex;flex-direction:column;gap:2px;flex:1}.add-grid-title{font-size:.875rem;font-weight:600;color:#0f172a}.add-grid-sub{font-size:.75rem;color:#64748b}.btn-banner-add{padding:6px 14px;font-size:.75rem;font-weight:600;color:#2563eb;background:#eff6ff;border:1px solid #bfdbfe;border-radius:6px;cursor:pointer;white-space:nowrap;transition:all .15s ease}.canvas-add-grid-banner:hover .btn-banner-add{background:#2563eb;color:#fff;border-color:#2563eb}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i1.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i1.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "directive", type: i1.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "component", type: RptIconComponent, selector: "rpt-icon", inputs: ["name", "size", "color", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
519
587
|
}
|
|
520
588
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DesignCanvasComponent, decorators: [{
|
|
521
589
|
type: Component,
|
|
@@ -531,6 +599,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
531
599
|
<span class="info-value">{{ components().length }}</span>
|
|
532
600
|
</div>
|
|
533
601
|
|
|
602
|
+
<div class="canvas-actions">
|
|
603
|
+
@if (!definition().grid) {
|
|
604
|
+
<button
|
|
605
|
+
type="button"
|
|
606
|
+
class="canvas-action-btn btn-grid-add"
|
|
607
|
+
(click)="addResultGrid($event)"
|
|
608
|
+
title="Add a Result Grid to this report"
|
|
609
|
+
>
|
|
610
|
+
<rpt-icon name="table" [size]="14" />
|
|
611
|
+
<span>+ Add Grid</span>
|
|
612
|
+
</button>
|
|
613
|
+
} @else {
|
|
614
|
+
<button
|
|
615
|
+
type="button"
|
|
616
|
+
class="canvas-action-btn"
|
|
617
|
+
(click)="selectGridSettings($event)"
|
|
618
|
+
title="Configure Result Data Grid"
|
|
619
|
+
>
|
|
620
|
+
<rpt-icon name="table" [size]="14" />
|
|
621
|
+
<span>Grid ({{ definition().grid?.columns?.length ?? 0 }})</span>
|
|
622
|
+
</button>
|
|
623
|
+
}
|
|
624
|
+
|
|
534
625
|
<button
|
|
535
626
|
type="button"
|
|
536
627
|
class="canvas-action-btn"
|
|
@@ -540,6 +631,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
540
631
|
<rpt-icon name="settings" [size]="15" />
|
|
541
632
|
<span>Report Settings</span>
|
|
542
633
|
</button>
|
|
634
|
+
</div>
|
|
543
635
|
</div>
|
|
544
636
|
|
|
545
637
|
<!-- Canvas Drop Area -->
|
|
@@ -811,7 +903,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
811
903
|
}
|
|
812
904
|
</div>
|
|
813
905
|
|
|
814
|
-
<!-- Result Grid Preview Placeholder -->
|
|
906
|
+
<!-- Result Grid Preview Placeholder or Empty Add Grid Banner -->
|
|
815
907
|
@if (definition().grid) {
|
|
816
908
|
<div class="canvas-grid-preview-box" (click)="selectGridSettings($event)">
|
|
817
909
|
<div class="grid-preview-header">
|
|
@@ -819,10 +911,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
819
911
|
<rpt-icon name="table" [size]="15" />
|
|
820
912
|
<span>Result Grid Preview ({{ definition().grid?.columns?.length ?? 0 }} columns)</span>
|
|
821
913
|
</div>
|
|
822
|
-
<
|
|
914
|
+
<div style="display: flex; align-items: center; gap: 10px;">
|
|
915
|
+
<span class="grid-click-hint">Click to edit columns</span>
|
|
916
|
+
<button
|
|
917
|
+
type="button"
|
|
918
|
+
class="btn-remove-grid"
|
|
919
|
+
(click)="removeGrid($event)"
|
|
920
|
+
title="Remove Result Grid from this report"
|
|
921
|
+
>
|
|
922
|
+
<rpt-icon name="trash" [size]="13" />
|
|
923
|
+
</button>
|
|
924
|
+
</div>
|
|
823
925
|
</div>
|
|
824
926
|
<div class="grid-preview-columns">
|
|
825
|
-
|
|
826
927
|
@for (col of definition().grid?.columns; track col.field) {
|
|
827
928
|
<div class="grid-col-pill">
|
|
828
929
|
<span class="col-pill-name">{{ col.label }}</span>
|
|
@@ -831,13 +932,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
831
932
|
}
|
|
832
933
|
</div>
|
|
833
934
|
</div>
|
|
935
|
+
} @else {
|
|
936
|
+
<div class="canvas-add-grid-banner" (click)="addResultGrid($event)">
|
|
937
|
+
<div class="add-grid-icon">
|
|
938
|
+
<rpt-icon name="table" [size]="20" />
|
|
939
|
+
</div>
|
|
940
|
+
<div class="add-grid-text">
|
|
941
|
+
<span class="add-grid-title">+ Add Result Data Grid</span>
|
|
942
|
+
<span class="add-grid-sub">Attach an interactive data table or UltraGrid to display report execution output</span>
|
|
943
|
+
</div>
|
|
944
|
+
<button type="button" class="btn-banner-add">Add Grid</button>
|
|
945
|
+
</div>
|
|
834
946
|
}
|
|
835
947
|
</div>
|
|
836
948
|
</div>
|
|
837
949
|
</div>
|
|
838
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;height:100%;background-color:#f1f5f9;font-family:var(--rpt-font-family, inherit);box-sizing:border-box}.canvas-wrapper{display:flex;flex-direction:column;height:100%}.canvas-toolbar{display:flex;align-items:center;justify-content:space-between;min-height:46px;padding:6px 20px;background:#fff;border-bottom:1px solid var(--rpt-color-border, #cbd5e1);box-sizing:border-box}.canvas-info{display:flex;align-items:center;gap:8px;color:var(--rpt-color-text-muted, #64748b);font-size:.8125rem}.info-label{color:#64748b}.info-value{font-weight:600;color:var(--rpt-color-text, #0f172a)}.info-divider{color:var(--rpt-color-border, #cbd5e1);margin:0 2px}.canvas-action-btn{display:inline-flex;align-items:center;gap:8px;height:32px;padding:0 14px;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:6px;font-size:.8125rem;font-weight:500;color:#1e293b;cursor:pointer;line-height:1;white-space:nowrap;box-shadow:0 1px 2px #0000000a;transition:all var(--rpt-transition-speed, .15s) ease}.canvas-action-btn rpt-icon{color:#64748b;transition:color .15s ease}.canvas-action-btn:hover{background:var(--rpt-color-surface, #f8fafc);border-color:var(--rpt-color-primary, #2563eb);color:var(--rpt-color-primary, #2563eb);box-shadow:0 2px 4px #2563eb14}.canvas-action-btn:hover rpt-icon{color:var(--rpt-color-primary, #2563eb)}.canvas-action-btn:active{transform:translateY(1px)}.canvas-scroll-area{flex:1;overflow-y:auto;padding:16px}.canvas-artboard{width:100%;max-width:1400px;margin:0 auto;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);box-shadow:0 4px 6px -1px #0000000d;min-height:480px;box-sizing:border-box}.canvas-report-header{margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--rpt-color-border, #e2e8f0)}.canvas-report-title{font-size:var(--rpt-font-size-xl, 1.5rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px}.canvas-report-desc{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #64748b);margin:0}.canvas-grid{display:grid;width:100%;min-height:180px;align-items:start;border-radius:6px;transition:all var(--rpt-transition-speed, .15s) ease}.canvas-component-card{background:#fff;border:1.5px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);box-shadow:var(--rpt-box-shadow, 0 1px 2px rgba(0, 0, 0, .05));box-sizing:border-box;transition:all var(--rpt-transition-speed, .15s) ease;cursor:pointer;position:relative;overflow:hidden;display:flex;flex-direction:column;min-height:96px}.canvas-component-card:hover{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 4px 6px -1px #2563eb1a}.canvas-component-card.is-selected{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 2px #2563eb40}.canvas-component-card.is-resizing{-webkit-user-select:none;user-select:none;border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 2px #2563eb59;z-index:30;transition:none!important}.resize-handle{position:absolute;z-index:40;touch-action:none;opacity:0;transition:opacity .15s ease}.canvas-component-card.is-selected .resize-handle,.canvas-component-card:hover .resize-handle{opacity:1}.resize-handle.handle-e{top:0;right:0;width:6px;height:100%;cursor:ew-resize;display:flex;align-items:center;justify-content:center}.resize-handle.handle-e:after{content:\"\";width:3px;height:24px;background:#cbd5e1;border-radius:2px;transition:background .15s ease}.resize-handle.handle-e:hover:after,.canvas-component-card.is-selected .resize-handle.handle-e:after{background:var(--rpt-color-primary, #2563eb)}.resize-handle.handle-s{bottom:0;left:0;height:6px;width:100%;cursor:ns-resize;display:flex;align-items:center;justify-content:center}.resize-handle.handle-s:after{content:\"\";height:3px;width:24px;background:#cbd5e1;border-radius:2px;transition:background .15s ease}.resize-handle.handle-s:hover:after,.canvas-component-card.is-selected .resize-handle.handle-s:after{background:var(--rpt-color-primary, #2563eb)}.resize-handle.handle-se{bottom:0;right:0;width:12px;height:12px;cursor:nwse-resize;display:flex;align-items:flex-end;justify-content:flex-end;padding:2px}.resize-handle.handle-se:after{content:\"\";width:5px;height:5px;border-right:2px solid #cbd5e1;border-bottom:2px solid #cbd5e1;transition:border-color .15s ease}.resize-handle.handle-se:hover:after,.canvas-component-card.is-selected .resize-handle.handle-se:after{border-color:var(--rpt-color-primary, #2563eb)}.resize-dimension-tooltip{position:absolute;top:38px;right:8px;background:#0f172ae6;color:#fff;font-size:.7rem;font-weight:600;padding:3px 8px;border-radius:4px;white-space:nowrap;pointer-events:none;z-index:50;box-shadow:0 2px 4px #0003}.card-header{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:5px 8px;background:var(--rpt-color-surface, #f8fafc);border-bottom:1px solid var(--rpt-color-border, #e2e8f0);min-height:32px;box-sizing:border-box;overflow:hidden}.card-title-group{display:flex;align-items:center;gap:5px;cursor:grab;min-width:0;flex:1;overflow:hidden}.drag-handle-dots{color:var(--rpt-color-text-muted, #94a3b8);font-size:.85rem;letter-spacing:-2px;flex-shrink:0;-webkit-user-select:none;user-select:none}.comp-title{font-size:.75rem;font-weight:600;color:var(--rpt-color-text, #0f172a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none}.card-actions{display:flex;align-items:center;gap:4px;flex-shrink:0;margin-left:auto}.new-row-pill-static{font-size:.65rem;font-weight:600;color:#7c3aed;background:#f5f3ff;border:1px solid #ddd6fe;padding:1px 5px;border-radius:9999px;white-space:nowrap;line-height:1;flex-shrink:0}.span-pill-static{display:inline-flex;align-items:center;justify-content:center;font-size:.65rem;font-weight:600;color:var(--rpt-color-text-muted, #64748b);background:var(--rpt-color-surface, #f1f5f9);border:1px solid var(--rpt-color-border, #e2e8f0);padding:1px 6px;border-radius:9999px;line-height:1.2;white-space:nowrap;-webkit-user-select:none;user-select:none}.card-quick-controls{display:none;align-items:center;gap:3px}.canvas-component-card:hover .span-pill-static,.canvas-component-card.is-selected .span-pill-static,.canvas-component-card:hover .new-row-pill-static,.canvas-component-card.is-selected .new-row-pill-static{display:none}.canvas-component-card:hover .card-quick-controls,.canvas-component-card.is-selected .card-quick-controls{display:inline-flex}.canvas-component-card.is-narrow .card-header{padding:4px 6px;gap:3px}.canvas-component-card.is-narrow:hover .comp-title,.canvas-component-card.is-narrow.is-selected .comp-title,.canvas-component-card.is-narrow:hover .drag-handle-dots,.canvas-component-card.is-narrow.is-selected .drag-handle-dots{display:none}.canvas-component-card.is-narrow .card-quick-controls{gap:2px}.canvas-component-card.is-narrow .span-control-group{height:18px}.canvas-component-card.is-narrow .span-btn{width:14px;height:16px}.canvas-component-card.is-narrow .span-badge{font-size:.6rem;padding:0 2px}.canvas-component-card.is-narrow .card-action-btn{width:18px;height:18px}.canvas-component-card.is-compact:hover .card-action-btn:not(.btn-delete),.canvas-component-card.is-compact.is-selected .card-action-btn:not(.btn-delete){display:none}.span-control-group{display:inline-flex;align-items:center;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;height:20px;padding:0 1px;white-space:nowrap;flex-shrink:0}.span-btn{width:16px;height:18px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;padding:0;color:var(--rpt-color-text-muted, #64748b);cursor:pointer;border-radius:2px;transition:all .12s ease}.span-btn:hover:not(:disabled){background:var(--rpt-color-surface-hover, #f1f5f9);color:var(--rpt-color-primary, #2563eb)}.span-btn:disabled{opacity:.3;cursor:not-allowed}.span-badge{font-size:.65rem;font-weight:600;color:var(--rpt-color-text, #0f172a);padding:0 3px;white-space:nowrap;-webkit-user-select:none;user-select:none;line-height:1}.card-action-btn{width:20px;height:20px;border:none;background:transparent;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;padding:0;cursor:pointer;color:var(--rpt-color-text-muted, #64748b);transition:all .12s ease;flex-shrink:0}.card-action-btn:hover{background:#e2e8f0;color:var(--rpt-color-text, #0f172a)}.card-action-btn.btn-active-toggle{background:#7c3aed;color:#fff;border-color:#7c3aed}.card-action-btn.btn-active-toggle:hover{background:#6d28d9;color:#fff}.btn-delete:hover{background:#fee2e2;color:#ef4444}.card-body{padding:8px 12px 8px 10px;flex:1;display:flex;flex-direction:column;min-height:0;box-sizing:border-box;overflow:hidden}.mock-input-field{display:flex;flex-direction:column;gap:4px;flex:1;height:100%;min-height:0}.mock-label{font-size:.7rem;font-weight:600;color:var(--rpt-color-text-muted, #475569);flex-shrink:0}.mock-input-box,.mock-select-box{border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:6px;padding:6px 12px;font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #94a3b8);background:#fff;flex:1;min-height:38px;height:100%;display:flex;align-items:center;justify-content:space-between;box-sizing:border-box}.mock-checkbox-field{display:flex;align-items:center;gap:6px;flex:1;height:100%;min-height:0;padding-top:14px}.mock-check-box{width:18px;height:18px;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:.65rem;color:var(--rpt-color-primary, #2563eb);flex-shrink:0}.mock-btn-wrapper{display:flex;flex:1;height:100%;min-height:38px;align-items:center;justify-content:flex-start;width:100%;min-width:0;box-sizing:border-box}.mock-btn{border-radius:var(--rpt-border-radius, 6px);padding:0 16px;height:36px;font-size:var(--rpt-font-size-base, .875rem);font-weight:500;border:1px solid transparent;cursor:pointer;width:auto;max-width:100%;display:inline-flex;align-items:center;justify-content:center;gap:6px;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:all .15s ease}.mock-btn.mock-btn-full{width:100%}.canvas-component-card.is-narrow .mock-btn{padding:0 6px;font-size:.775rem;width:100%;height:34px}.mock-kpi-field{display:flex;flex-direction:column;justify-content:space-between;flex:1;height:100%;min-height:0}.mock-kpi-header{display:flex;align-items:center;justify-content:space-between}.mock-kpi-value{font-size:1.25rem;font-weight:700;color:var(--rpt-color-text, #0f172a);margin:2px 0}.mock-kpi-footer{display:flex;align-items:center;gap:6px;font-size:.65rem}.mock-kpi-trend{color:#16a34a;font-weight:600}.mock-kpi-sub{color:#64748b}.mock-chart-field{display:flex;flex-direction:column;flex:1;height:100%;min-height:0}.mock-chart-bars{display:flex;align-items:flex-end;justify-content:space-around;gap:8px;flex:1;min-height:36px;padding-top:6px}.mock-chart-bar{width:16%;background:var(--rpt-color-primary, #2563eb);border-radius:3px 3px 0 0;opacity:.85;min-height:10px}.btn-primary{background:var(--rpt-color-primary, #2563eb);color:#fff}.btn-secondary{background:#f1f5f9;color:#0f172a;border:1px solid #cbd5e1}.btn-outline{background:transparent;color:#2563eb;border:1px solid #2563eb}.btn-danger{background:#ef4444;color:#fff}.mock-generic-box{border:1px dashed #cbd5e1;border-radius:4px;padding:8px;font-size:.75rem;text-align:center;color:#64748b}.canvas-drag-placeholder{background:#2563eb0f;border:2px dashed var(--rpt-color-primary, #2563eb);border-radius:6px;min-height:80px;box-sizing:border-box;transition:transform .15s ease}.canvas-drag-preview,::ng-deep .canvas-drag-preview{background:#fff;border:2px solid var(--rpt-color-primary, #2563eb);border-radius:6px;padding:8px 14px;display:inline-flex;align-items:center;gap:8px;font-family:var(--rpt-font-family, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif)!important;font-size:.8rem;font-weight:600;color:var(--rpt-color-text, #0f172a);box-shadow:0 12px 24px -4px #00000040;z-index:10000}.preview-title,::ng-deep .preview-title{font-family:inherit!important;max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preview-span,::ng-deep .preview-span{font-family:inherit!important;font-size:.65rem;font-weight:600;color:var(--rpt-color-primary, #2563eb);background:#eff6ff;border:1px solid #bfdbfe;padding:1px 6px;border-radius:9999px}.canvas-empty-state{grid-column:1 / -1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;border:2px dashed var(--rpt-color-border, #cbd5e1);border-radius:8px;background:var(--rpt-color-surface, #f8fafc);text-align:center}.empty-icon{font-size:2.5rem;margin-bottom:12px}.canvas-empty-state h3{font-size:1rem;font-weight:600;color:var(--rpt-color-text, #0f172a);margin:0 0 6px}.canvas-empty-state p{font-size:.8rem;color:var(--rpt-color-text-muted, #64748b);max-width:380px;margin:0}.canvas-grid-preview-box{margin-top:32px;border:1px dashed var(--rpt-color-border, #cbd5e1);border-radius:8px;background:var(--rpt-color-surface, #f8fafc);padding:16px;cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease}.canvas-grid-preview-box:hover{border-color:var(--rpt-color-primary, #2563eb);background:#fff}.grid-preview-header{display:flex;align-items:center;justify-content:space-between;font-size:.8rem;font-weight:600;color:var(--rpt-color-text, #0f172a);margin-bottom:10px}.grid-click-hint{font-size:.7rem;color:var(--rpt-color-primary, #2563eb);font-weight:500}.grid-preview-columns{display:flex;flex-wrap:wrap;gap:6px}.grid-col-pill{display:flex;align-items:center;gap:4px;background:#fff;border:1px solid var(--rpt-color-border, #e2e8f0);border-radius:4px;padding:4px 8px;font-size:.75rem}.col-pill-name{font-weight:600;color:var(--rpt-color-text, #0f172a)}.col-pill-type{font-size:.65rem;color:var(--rpt-color-text-muted, #94a3b8);background:var(--rpt-color-surface, #f1f5f9);padding:1px 4px;border-radius:3px}\n"] }]
|
|
950
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;height:100%;background-color:#f1f5f9;font-family:var(--rpt-font-family, inherit);box-sizing:border-box}.canvas-wrapper{display:flex;flex-direction:column;height:100%}.canvas-toolbar{display:flex;align-items:center;justify-content:space-between;min-height:46px;padding:6px 20px;background:#fff;border-bottom:1px solid var(--rpt-color-border, #cbd5e1);box-sizing:border-box}.canvas-info{display:flex;align-items:center;gap:8px;color:var(--rpt-color-text-muted, #64748b);font-size:.8125rem}.info-label{color:#64748b}.info-value{font-weight:600;color:var(--rpt-color-text, #0f172a)}.info-divider{color:var(--rpt-color-border, #cbd5e1);margin:0 2px}.canvas-action-btn{display:inline-flex;align-items:center;gap:8px;height:32px;padding:0 14px;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:6px;font-size:.8125rem;font-weight:500;color:#1e293b;cursor:pointer;line-height:1;white-space:nowrap;box-shadow:0 1px 2px #0000000a;transition:all var(--rpt-transition-speed, .15s) ease}.canvas-action-btn rpt-icon{color:#64748b;transition:color .15s ease}.canvas-action-btn:hover{background:var(--rpt-color-surface, #f8fafc);border-color:var(--rpt-color-primary, #2563eb);color:var(--rpt-color-primary, #2563eb);box-shadow:0 2px 4px #2563eb14}.canvas-action-btn:hover rpt-icon{color:var(--rpt-color-primary, #2563eb)}.canvas-action-btn:active{transform:translateY(1px)}.canvas-scroll-area{flex:1;overflow-y:auto;padding:16px}.canvas-artboard{width:100%;max-width:1400px;margin:0 auto;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);box-shadow:0 4px 6px -1px #0000000d;min-height:480px;box-sizing:border-box}.canvas-report-header{margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--rpt-color-border, #e2e8f0)}.canvas-report-title{font-size:var(--rpt-font-size-xl, 1.5rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px}.canvas-report-desc{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #64748b);margin:0}.canvas-grid{display:grid;width:100%;min-height:180px;align-items:start;border-radius:6px;transition:all var(--rpt-transition-speed, .15s) ease}.canvas-component-card{background:#fff;border:1.5px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);box-shadow:var(--rpt-box-shadow, 0 1px 2px rgba(0, 0, 0, .05));box-sizing:border-box;transition:all var(--rpt-transition-speed, .15s) ease;cursor:pointer;position:relative;overflow:hidden;display:flex;flex-direction:column;min-height:96px}.canvas-component-card:hover{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 4px 6px -1px #2563eb1a}.canvas-component-card.is-selected{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 2px #2563eb40}.canvas-component-card.is-resizing{-webkit-user-select:none;user-select:none;border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 2px #2563eb59;z-index:30;transition:none!important}.resize-handle{position:absolute;z-index:40;touch-action:none;opacity:0;transition:opacity .15s ease}.canvas-component-card.is-selected .resize-handle,.canvas-component-card:hover .resize-handle{opacity:1}.resize-handle.handle-e{top:0;right:0;width:6px;height:100%;cursor:ew-resize;display:flex;align-items:center;justify-content:center}.resize-handle.handle-e:after{content:\"\";width:3px;height:24px;background:#cbd5e1;border-radius:2px;transition:background .15s ease}.resize-handle.handle-e:hover:after,.canvas-component-card.is-selected .resize-handle.handle-e:after{background:var(--rpt-color-primary, #2563eb)}.resize-handle.handle-s{bottom:0;left:0;height:6px;width:100%;cursor:ns-resize;display:flex;align-items:center;justify-content:center}.resize-handle.handle-s:after{content:\"\";height:3px;width:24px;background:#cbd5e1;border-radius:2px;transition:background .15s ease}.resize-handle.handle-s:hover:after,.canvas-component-card.is-selected .resize-handle.handle-s:after{background:var(--rpt-color-primary, #2563eb)}.resize-handle.handle-se{bottom:0;right:0;width:12px;height:12px;cursor:nwse-resize;display:flex;align-items:flex-end;justify-content:flex-end;padding:2px}.resize-handle.handle-se:after{content:\"\";width:5px;height:5px;border-right:2px solid #cbd5e1;border-bottom:2px solid #cbd5e1;transition:border-color .15s ease}.resize-handle.handle-se:hover:after,.canvas-component-card.is-selected .resize-handle.handle-se:after{border-color:var(--rpt-color-primary, #2563eb)}.resize-dimension-tooltip{position:absolute;top:38px;right:8px;background:#0f172ae6;color:#fff;font-size:.7rem;font-weight:600;padding:3px 8px;border-radius:4px;white-space:nowrap;pointer-events:none;z-index:50;box-shadow:0 2px 4px #0003}.card-header{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:5px 8px;background:var(--rpt-color-surface, #f8fafc);border-bottom:1px solid var(--rpt-color-border, #e2e8f0);min-height:32px;box-sizing:border-box;overflow:hidden}.card-title-group{display:flex;align-items:center;gap:5px;cursor:grab;min-width:0;flex:1;overflow:hidden}.drag-handle-dots{color:var(--rpt-color-text-muted, #94a3b8);font-size:.85rem;letter-spacing:-2px;flex-shrink:0;-webkit-user-select:none;user-select:none}.comp-title{font-size:.75rem;font-weight:600;color:var(--rpt-color-text, #0f172a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none}.card-actions{display:flex;align-items:center;gap:4px;flex-shrink:0;margin-left:auto}.new-row-pill-static{font-size:.65rem;font-weight:600;color:#7c3aed;background:#f5f3ff;border:1px solid #ddd6fe;padding:1px 5px;border-radius:9999px;white-space:nowrap;line-height:1;flex-shrink:0}.span-pill-static{display:inline-flex;align-items:center;justify-content:center;font-size:.65rem;font-weight:600;color:var(--rpt-color-text-muted, #64748b);background:var(--rpt-color-surface, #f1f5f9);border:1px solid var(--rpt-color-border, #e2e8f0);padding:1px 6px;border-radius:9999px;line-height:1.2;white-space:nowrap;-webkit-user-select:none;user-select:none}.card-quick-controls{display:none;align-items:center;gap:3px}.canvas-component-card:hover .span-pill-static,.canvas-component-card.is-selected .span-pill-static,.canvas-component-card:hover .new-row-pill-static,.canvas-component-card.is-selected .new-row-pill-static{display:none}.canvas-component-card:hover .card-quick-controls,.canvas-component-card.is-selected .card-quick-controls{display:inline-flex}.canvas-component-card.is-narrow .card-header{padding:4px 6px;gap:3px}.canvas-component-card.is-narrow:hover .comp-title,.canvas-component-card.is-narrow.is-selected .comp-title,.canvas-component-card.is-narrow:hover .drag-handle-dots,.canvas-component-card.is-narrow.is-selected .drag-handle-dots{display:none}.canvas-component-card.is-narrow .card-quick-controls{gap:2px}.canvas-component-card.is-narrow .span-control-group{height:18px}.canvas-component-card.is-narrow .span-btn{width:14px;height:16px}.canvas-component-card.is-narrow .span-badge{font-size:.6rem;padding:0 2px}.canvas-component-card.is-narrow .card-action-btn{width:18px;height:18px}.canvas-component-card.is-compact:hover .card-action-btn:not(.btn-delete),.canvas-component-card.is-compact.is-selected .card-action-btn:not(.btn-delete){display:none}.span-control-group{display:inline-flex;align-items:center;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;height:20px;padding:0 1px;white-space:nowrap;flex-shrink:0}.span-btn{width:16px;height:18px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;padding:0;color:var(--rpt-color-text-muted, #64748b);cursor:pointer;border-radius:2px;transition:all .12s ease}.span-btn:hover:not(:disabled){background:var(--rpt-color-surface-hover, #f1f5f9);color:var(--rpt-color-primary, #2563eb)}.span-btn:disabled{opacity:.3;cursor:not-allowed}.span-badge{font-size:.65rem;font-weight:600;color:var(--rpt-color-text, #0f172a);padding:0 3px;white-space:nowrap;-webkit-user-select:none;user-select:none;line-height:1}.card-action-btn{width:20px;height:20px;border:none;background:transparent;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;padding:0;cursor:pointer;color:var(--rpt-color-text-muted, #64748b);transition:all .12s ease;flex-shrink:0}.card-action-btn:hover{background:#e2e8f0;color:var(--rpt-color-text, #0f172a)}.card-action-btn.btn-active-toggle{background:#7c3aed;color:#fff;border-color:#7c3aed}.card-action-btn.btn-active-toggle:hover{background:#6d28d9;color:#fff}.btn-delete:hover{background:#fee2e2;color:#ef4444}.card-body{padding:8px 12px 8px 10px;flex:1;display:flex;flex-direction:column;min-height:0;box-sizing:border-box;overflow:hidden}.mock-input-field{display:flex;flex-direction:column;gap:4px;flex:1;height:100%;min-height:0}.mock-label{font-size:.7rem;font-weight:600;color:var(--rpt-color-text-muted, #475569);flex-shrink:0}.mock-input-box,.mock-select-box{border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:6px;padding:6px 12px;font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #94a3b8);background:#fff;flex:1;min-height:38px;height:100%;display:flex;align-items:center;justify-content:space-between;box-sizing:border-box}.mock-checkbox-field{display:flex;align-items:center;gap:6px;flex:1;height:100%;min-height:0;padding-top:14px}.mock-check-box{width:18px;height:18px;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:.65rem;color:var(--rpt-color-primary, #2563eb);flex-shrink:0}.mock-btn-wrapper{display:flex;flex:1;height:100%;min-height:38px;align-items:center;justify-content:flex-start;width:100%;min-width:0;box-sizing:border-box}.mock-btn{border-radius:var(--rpt-border-radius, 6px);padding:0 16px;height:36px;font-size:var(--rpt-font-size-base, .875rem);font-weight:500;border:1px solid transparent;cursor:pointer;width:auto;max-width:100%;display:inline-flex;align-items:center;justify-content:center;gap:6px;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:all .15s ease}.mock-btn.mock-btn-full{width:100%}.canvas-component-card.is-narrow .mock-btn{padding:0 6px;font-size:.775rem;width:100%;height:34px}.mock-kpi-field{display:flex;flex-direction:column;justify-content:space-between;flex:1;height:100%;min-height:0}.mock-kpi-header{display:flex;align-items:center;justify-content:space-between}.mock-kpi-value{font-size:1.25rem;font-weight:700;color:var(--rpt-color-text, #0f172a);margin:2px 0}.mock-kpi-footer{display:flex;align-items:center;gap:6px;font-size:.65rem}.mock-kpi-trend{color:#16a34a;font-weight:600}.mock-kpi-sub{color:#64748b}.mock-chart-field{display:flex;flex-direction:column;flex:1;height:100%;min-height:0}.mock-chart-bars{display:flex;align-items:flex-end;justify-content:space-around;gap:8px;flex:1;min-height:36px;padding-top:6px}.mock-chart-bar{width:16%;background:var(--rpt-color-primary, #2563eb);border-radius:3px 3px 0 0;opacity:.85;min-height:10px}.btn-primary{background:var(--rpt-color-primary, #2563eb);color:#fff}.btn-secondary{background:#f1f5f9;color:#0f172a;border:1px solid #cbd5e1}.btn-outline{background:transparent;color:#2563eb;border:1px solid #2563eb}.btn-danger{background:#ef4444;color:#fff}.mock-generic-box{border:1px dashed #cbd5e1;border-radius:4px;padding:8px;font-size:.75rem;text-align:center;color:#64748b}.canvas-drag-placeholder{background:#2563eb0f;border:2px dashed var(--rpt-color-primary, #2563eb);border-radius:6px;min-height:80px;box-sizing:border-box;transition:transform .15s ease}.canvas-drag-preview,::ng-deep .canvas-drag-preview{background:#fff;border:2px solid var(--rpt-color-primary, #2563eb);border-radius:6px;padding:8px 14px;display:inline-flex;align-items:center;gap:8px;font-family:var(--rpt-font-family, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif)!important;font-size:.8rem;font-weight:600;color:var(--rpt-color-text, #0f172a);box-shadow:0 12px 24px -4px #00000040;z-index:10000}.preview-title,::ng-deep .preview-title{font-family:inherit!important;max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preview-span,::ng-deep .preview-span{font-family:inherit!important;font-size:.65rem;font-weight:600;color:var(--rpt-color-primary, #2563eb);background:#eff6ff;border:1px solid #bfdbfe;padding:1px 6px;border-radius:9999px}.canvas-empty-state{grid-column:1 / -1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;border:2px dashed var(--rpt-color-border, #cbd5e1);border-radius:8px;background:var(--rpt-color-surface, #f8fafc);text-align:center}.empty-icon{font-size:2.5rem;margin-bottom:12px}.canvas-empty-state h3{font-size:1rem;font-weight:600;color:var(--rpt-color-text, #0f172a);margin:0 0 6px}.canvas-empty-state p{font-size:.8rem;color:var(--rpt-color-text-muted, #64748b);max-width:380px;margin:0}.canvas-grid-preview-box{margin-top:32px;border:1px dashed var(--rpt-color-border, #cbd5e1);border-radius:8px;background:var(--rpt-color-surface, #f8fafc);padding:16px;cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease}.canvas-grid-preview-box:hover{border-color:var(--rpt-color-primary, #2563eb);background:#fff}.grid-preview-header{display:flex;align-items:center;justify-content:space-between;font-size:.8rem;font-weight:600;color:var(--rpt-color-text, #0f172a);margin-bottom:10px}.grid-click-hint{font-size:.7rem;color:var(--rpt-color-primary, #2563eb);font-weight:500}.grid-preview-columns{display:flex;flex-wrap:wrap;gap:6px}.grid-col-pill{display:flex;align-items:center;gap:4px;background:#fff;border:1px solid var(--rpt-color-border, #e2e8f0);border-radius:4px;padding:4px 8px;font-size:.75rem}.col-pill-name{font-weight:600;color:var(--rpt-color-text, #0f172a)}.col-pill-type{font-size:.65rem;color:var(--rpt-color-text-muted, #94a3b8);background:var(--rpt-color-surface, #f1f5f9);padding:1px 4px;border-radius:3px}.canvas-actions{display:flex;align-items:center;gap:8px}.btn-grid-add{background:#f0fdf4;border-color:#bbf7d0;color:#16a34a}.btn-grid-add:hover{background:#dcfce7;border-color:#86efac;color:#15803d}.btn-remove-grid{display:inline-flex;align-items:center;justify-content:center;padding:4px;border:none;background:transparent;color:#94a3b8;border-radius:4px;cursor:pointer;transition:all .15s ease}.btn-remove-grid:hover{background:#fee2e2;color:#ef4444}.canvas-add-grid-banner{margin-top:24px;border:2px dashed #cbd5e1;border-radius:8px;background:#fff;padding:16px 20px;display:flex;align-items:center;gap:16px;cursor:pointer;transition:all .15s ease}.canvas-add-grid-banner:hover{border-color:#2563eb;background:#f8fafc;box-shadow:0 2px 8px #2563eb14}.add-grid-icon{width:40px;height:40px;border-radius:8px;background:#eff6ff;color:#2563eb;display:flex;align-items:center;justify-content:center;flex-shrink:0}.add-grid-text{display:flex;flex-direction:column;gap:2px;flex:1}.add-grid-title{font-size:.875rem;font-weight:600;color:#0f172a}.add-grid-sub{font-size:.75rem;color:#64748b}.btn-banner-add{padding:6px 14px;font-size:.75rem;font-weight:600;color:#2563eb;background:#eff6ff;border:1px solid #bfdbfe;border-radius:6px;cursor:pointer;white-space:nowrap;transition:all .15s ease}.canvas-add-grid-banner:hover .btn-banner-add{background:#2563eb;color:#fff;border-color:#2563eb}\n"] }]
|
|
839
951
|
}], propDecorators: { onEscape: [{
|
|
840
952
|
type: HostListener,
|
|
841
953
|
args: ['document:keydown.escape']
|
|
842
954
|
}] } });
|
|
843
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduLWNhbnZhcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9mZWF0dXJlcy9kZXNpZ25lci9jb21wb25lbnRzL2Rlc2lnbi1jYW52YXMvZGVzaWduLWNhbnZhcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBT0wsY0FBYyxHQUNmLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFHN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDN0YsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLHVCQUF1QixFQUN2QiwwQkFBMEIsRUFDMUIsb0JBQW9CLEdBQ3JCLE1BQU0sb0NBQW9DLENBQUM7OztBQW9pQzVDLE1BQU0sT0FBTyxxQkFBcUI7SUFDZixhQUFhLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFckQsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDO0lBQzNDLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFELFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDO0lBRXBELFlBQVks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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNFRULHUwYkE5VFMsWUFBWSw4QkFBRSxjQUFjLHUxQ0FBRSxnQkFBZ0I7OzRGQStoQzdDLHFCQUFxQjtrQkFsaUNqQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixDQUFDLFlBRS9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNFRULG1CQSt0QmdCLHVCQUF1QixDQUFDLE1BQU07OEJBOEcvQyxRQUFRO3NCQURQLFlBQVk7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIEhvc3RMaXN0ZW5lcixcbiAgaW5qZWN0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENka0RyYWcsXG4gIENka0RyYWdEcm9wLFxuICBDZGtEcmFnSGFuZGxlLFxuICBDZGtEcmFnUGxhY2Vob2xkZXIsXG4gIENka0RyYWdQcmV2aWV3LFxuICBDZGtEcm9wTGlzdCxcbiAgRHJhZ0Ryb3BNb2R1bGUsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgRGVzaWduZXJTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kZXNpZ25lci1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcG9ydENvbXBvbmVudERlZmluaXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtY29tcG9uZW50Lm1vZGVsJztcbmltcG9ydCB7IENvbXBvbmVudExheW91dERlZmluaXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtbGF5b3V0Lm1vZGVsJztcbmltcG9ydCB7IFJwdEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9wcmltaXRpdmVzL2NvbXBvbmVudHMvaWNvbi9ycHQtaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgY2FsY3VsYXRlR3JpZENvbHVtbixcbiAgY2FsY3VsYXRlR3JpZFJvdyxcbiAgY2FsY3VsYXRlU25hcHBlZEhlaWdodCxcbiAgY2FsY3VsYXRlU25hcHBlZFNwYW4sXG4gIENBTlZBU19DQVJEX09WRVJIRUFELFxuICBnZXRDb21wb25lbnRJY29uTmFtZSxcbiAgcmVzb2x2ZUNhbnZhc0NhcmRIZWlnaHQsXG4gIHJlc29sdmVDYW52YXNDYXJkTWluSGVpZ2h0LFxuICByZXNvbHZlQ29tcG9uZW50U3Bhbixcbn0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2NhbnZhcy1sYXlvdXQudXRpbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JwdC1kZXNpZ24tY2FudmFzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRHJhZ0Ryb3BNb2R1bGUsIFJwdEljb25Db21wb25lbnRdLFxuXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImNhbnZhcy13cmFwcGVyXCIgKGNsaWNrKT1cIm9uQ2FudmFzQmFja2dyb3VuZENsaWNrKCRldmVudClcIj5cbiAgICAgIDwhLS0gQ2FudmFzIFN0YXR1cyAvIFF1aWNrIENvbnRyb2xzIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNhbnZhcy10b29sYmFyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYW52YXMtaW5mb1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5mby1sYWJlbFwiPkdyaWQgTGF5b3V0Ojwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZm8tdmFsdWVcIj57eyB0b3RhbENvbHVtbnMoKSB9fSBDb2x1bW5zPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5mby1kaXZpZGVyXCI+4oCiPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5mby1sYWJlbFwiPkNvbXBvbmVudHM6PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5mby12YWx1ZVwiPnt7IGNvbXBvbmVudHMoKS5sZW5ndGggfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImNhbnZhcy1hY3Rpb24tYnRuXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RSZXBvcnRTZXR0aW5ncygkZXZlbnQpXCJcbiAgICAgICAgICAgIHRpdGxlPVwiQ29uZmlndXJlIFBhZ2UgTGF5b3V0ICYgR3JpZCBTZXR0aW5nc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJzZXR0aW5nc1wiIFtzaXplXT1cIjE1XCIgLz5cbiAgICAgICAgICAgIDxzcGFuPlJlcG9ydCBTZXR0aW5nczwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIENhbnZhcyBEcm9wIEFyZWEgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FudmFzLXNjcm9sbC1hcmVhXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNhbnZhcy1hcnRib2FyZFwiXG4gICAgICAgICAgW3N0eWxlLnBhZGRpbmcucHhdPVwiZGVmaW5pdGlvbigpLmxheW91dC5wYWRkaW5nID8/IDI0XCJcbiAgICAgICAgPlxuICAgICAgICAgIDwhLS0gUmVwb3J0IEhlYWRlciBQcmV2aWV3IC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYW52YXMtcmVwb3J0LWhlYWRlclwiPlxuICAgICAgICAgICAgPGgyIGNsYXNzPVwiY2FudmFzLXJlcG9ydC10aXRsZVwiPnt7IGRlZmluaXRpb24oKS5uYW1lIHx8ICdVbnRpdGxlZCBSZXBvcnQnIH19PC9oMj5cbiAgICAgICAgICAgIEBpZiAoZGVmaW5pdGlvbigpLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiY2FudmFzLXJlcG9ydC1kZXNjXCI+e3sgZGVmaW5pdGlvbigpLmRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBDb21wb25lbnQgRHJvcCBMaXN0IEdyaWQgd2l0aCAyRCBtaXhlZCBvcmllbnRhdGlvbiBhbmQgZGF0YSBiaW5kaW5nIC0tPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgICBpZD1cImRlc2lnbmVyLWNhbnZhcy1kcm9wLWxpc3RcIlxuICAgICAgICAgICAgY2xhc3M9XCJjYW52YXMtZ3JpZFwiXG4gICAgICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwibWl4ZWRcIlxuICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJzb3J0ZWRDb21wb25lbnRzKClcIlxuICAgICAgICAgICAgW3N0eWxlLmdyaWQtdGVtcGxhdGUtY29sdW1uc109XCJncmlkVGVtcGxhdGVDb2x1bW5zKClcIlxuICAgICAgICAgICAgW3N0eWxlLmdhcC5weF09XCJkZWZpbml0aW9uKCkubGF5b3V0LmdhcCA/PyAxNlwiXG4gICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcCgkZXZlbnQpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBAZm9yIChjb21wIG9mIHNvcnRlZENvbXBvbmVudHMoKTsgdHJhY2sgY29tcC5pZDsgbGV0IGlkeCA9ICRpbmRleCkge1xuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJjb21wXCJcbiAgICAgICAgICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cImlzQW55UmVzaXppbmcoKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjYW52YXMtY29tcG9uZW50LWNhcmRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJpc1NlbGVjdGVkKGNvbXAuaWQpXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtcmVzaXppbmddPVwicmVzaXppbmdDb21wSWQoKSA9PT0gY29tcC5pZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLW5hcnJvd109XCJnZXRTcGFuKGNvbXApIDw9IDJcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1jb21wYWN0XT1cImdldFNwYW4oY29tcCkgPT09IDFcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5ncmlkLWNvbHVtbl09XCJnZXRHcmlkQ29sdW1uKGNvbXApXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZ3JpZC1yb3ddPVwiZ2V0R3JpZFJvdyhjb21wKVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbXAubGF5b3V0Py53aWR0aCB8fCAnYXV0bydcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiZ2V0Q29tcG9uZW50SGVpZ2h0KGNvbXApXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWluLWhlaWdodF09XCJnZXRDb21wb25lbnRNaW5IZWlnaHQoY29tcClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdChjb21wLmlkLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwhLS0gQ2FyZCBIZWFkZXIgd2l0aCBEcmFnIEhhbmRsZSAmIEFjdGlvbnMgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZS1ncm91cFwiIGNka0RyYWdIYW5kbGUgdGl0bGU9XCJEcmFnIHRvIHJlb3JkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcmFnLWhhbmRsZS1kb3RzXCI+4ouu4ouuPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8cnB0LWljb24gW25hbWVdPVwiZ2V0Q29tcG9uZW50SWNvbk5hbWUoY29tcC50eXBlKVwiIFtzaXplXT1cIjE0XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb21wLXRpdGxlXCIgW3RpdGxlXT1cImNvbXAubGFiZWwgfHwgY29tcC5rZXkgfHwgY29tcC50eXBlXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgY29tcC5sYWJlbCB8fCBjb21wLmtleSB8fCBjb21wLnR5cGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTdGF0aWMgc3BhbiBwaWxsICYgbmV3IHJvdyAvIHN0YXJ0IGNvbCBwaWxsIHdoZW4gbm90IGhvdmVyZWQgLyBub3Qgc2VsZWN0ZWQgLS0+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoY29tcC5sYXlvdXQ/LmNvbHVtbjsgYXMgY29sKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZXctcm93LXBpbGwtc3RhdGljXCIgdGl0bGU9XCJTdGFydHMgYXQgQ29sdW1uIHt7IGNvbCB9fVwiPkNvbCB7eyBjb2wgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGNvbXAubGF5b3V0Py5uZXdSb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5ldy1yb3ctcGlsbC1zdGF0aWNcIiB0aXRsZT1cIlN0YXJ0cyBvbiBzZXBhcmF0ZSByb3dcIj7ihrMgUm93PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzcGFuLXBpbGwtc3RhdGljXCJcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIkNvbHVtbiBzcGFuOiB7eyBnZXRTcGFuKGNvbXApIH19IG9mIHt7IHRvdGFsQ29sdW1ucygpIH19IGNvbHVtbnNcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgZ2V0U3Bhbihjb21wKSB9fS97eyB0b3RhbENvbHVtbnMoKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBRdWljayBBY3Rpb24gU3RlcHBlciAmIEJ1dHRvbnMgKHJldmVhbGVkIG9uIGhvdmVyIG9yIHNlbGVjdGlvbikgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXF1aWNrLWNvbnRyb2xzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQtYWN0aW9uLWJ0blwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYnRuLWFjdGl2ZS10b2dnbGVdPVwiY29tcC5sYXlvdXQ/Lm5ld1Jvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTmV3Um93KGNvbXAsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBjb21wLmxheW91dD8ubmV3Um93ID8gJ1N0YXJ0cyBvbiBuZXcgcm93IChDbGljayB0byBwbGFjZSBpbmxpbmUpJyA6ICdTdGFydCBvbiBzZXBhcmF0ZSByb3cgKFJvdyBCcmVhayknIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cnB0LWljb24gbmFtZT1cImNvcm5lci1kb3duLXJpZ2h0XCIgW3NpemVdPVwiMTFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwYW4tY29udHJvbC1ncm91cFwiIHRpdGxlPVwiQWRqdXN0IENvbHVtbiBTcGFuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNwYW4tYnRuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdldFNwYW4oY29tcCkgPD0gMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGp1c3RTcGFuKGNvbXAsIC0xLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJTaHJpbmsgQ29sdW1uIFNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cnB0LWljb24gbmFtZT1cIm1pbnVzXCIgW3NpemVdPVwiOVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Bhbi1iYWRnZVwiPnt7IGdldFNwYW4oY29tcCkgPD0gMiA/IGdldFNwYW4oY29tcCkgOiAoZ2V0U3Bhbihjb21wKSArICcvJyArIHRvdGFsQ29sdW1ucygpKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3Bhbi1idG5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2V0U3Bhbihjb21wKSA+PSB0b3RhbENvbHVtbnMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGp1c3RTcGFuKGNvbXAsIDEsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIkV4cGFuZCBDb2x1bW4gU3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwicGx1c1wiIFtzaXplXT1cIjlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZC1hY3Rpb24tYnRuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkR1cGxpY2F0ZShjb21wLmlkLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiRHVwbGljYXRlIGNvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJjb3B5XCIgW3NpemVdPVwiMTJcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkLWFjdGlvbi1idG4gYnRuLWRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGUoY29tcC5pZCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIlJlbW92ZSBjb21wb25lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwidHJhc2hcIiBbc2l6ZV09XCIxMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIENhcmQgQm9keSBWaXN1YWwgUHJldmlldyAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XG5cbiAgICAgICAgICAgICAgICAgIEBzd2l0Y2ggKGNvbXAudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2lucHV0Jykge1xuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2NrLWlucHV0LWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1vY2stbGFiZWxcIj57eyBjb21wLmxhYmVsIHx8ICdJbnB1dCcgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9jay1pbnB1dC1ib3hcIj57eyBjb21wLnByb3BlcnRpZXM/LlsncGxhY2Vob2xkZXInXSB8fCAnRW50ZXIgdGV4dC4uLicgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2Ryb3Bkb3duJykge1xuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2NrLWlucHV0LWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1vY2stbGFiZWxcIj57eyBjb21wLmxhYmVsIHx8ICdEcm9wZG93bicgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9jay1zZWxlY3QtYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNvbXAucHJvcGVydGllcz8uWydwbGFjZWhvbGRlciddIHx8ICctLSBTZWxlY3QgLS0nIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cnB0LWljb24gbmFtZT1cImNoZXZyb24tZG93blwiIFtzaXplXT1cIjEyXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlICgnZGF0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9jay1pbnB1dC1maWVsZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtb2NrLWxhYmVsXCI+e3sgY29tcC5sYWJlbCB8fCAnRGF0ZScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9jay1zZWxlY3QtYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPllZWVktTU0tREQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwiY2FsZW5kYXJcIiBbc2l6ZV09XCIxMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9jay1pbnB1dC1maWVsZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtb2NrLWxhYmVsXCI+e3sgY29tcC5sYWJlbCB8fCAnTnVtYmVyJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2NrLWlucHV0LWJveFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb21wLnByb3BlcnRpZXM/LlsncHJlZml4J10gfHwgJycgfX0gMC4wMCB7eyBjb21wLnByb3BlcnRpZXM/Llsnc3VmZml4J10gfHwgJycgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlICgnY2hlY2tib3gnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vY2stY2hlY2tib3gtZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibW9jay1jaGVjay1ib3hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJjaGVja1wiIFtzaXplXT1cIjEwXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibW9jay1sYWJlbFwiPnt7IGNvbXAubGFiZWwgfHwgJ0NoZWNrYm94JyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2J1dHRvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9jay1idG4td3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtb2NrLWJ0blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCInYnRuLScgKyAoY29tcC5wcm9wZXJ0aWVzPy5bJ3ZhcmlhbnQnXSB8fCAncHJpbWFyeScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm1vY2stYnRuLWZ1bGxdPVwiY29tcC5wcm9wZXJ0aWVzPy5bJ2Z1bGxXaWR0aCddID09PSB0cnVlIHx8IGNvbXAubGF5b3V0Py53aWR0aCA9PT0gJzEwMCUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJnZXRDdXN0b21CdG5IZWlnaHQoY29tcClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiZ2V0Q3VzdG9tQnRuV2lkdGgoY29tcClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGdldEN1c3RvbUJ0bkljb24oY29tcCk7IGFzIGJ0bkljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnB0LWljb24gW25hbWVdPVwiYnRuSWNvblwiIFtzaXplXT1cIjE1XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBjb21wLmxhYmVsIHx8ICdCdXR0b24nIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdrcGktY2FyZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9jay1rcGktZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2NrLWtwaS1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtb2NrLWxhYmVsXCI+e3sgY29tcC5sYWJlbCB8fCAnS1BJIE1ldHJpYycgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwia3BpXCIgW3NpemVdPVwiMTRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9jay1rcGktdmFsdWVcIj57eyBjb21wLnByb3BlcnRpZXM/LlsndmFsdWUnXSB8fCAnJDEyOCw0NTAnIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9jay1rcGktZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibW9jay1rcGktdHJlbmRcIj4rMTIuNSU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibW9jay1rcGktc3ViXCI+dnMgbGFzdCBwZXJpb2Q8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2NoYXJ0Jykge1xuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2NrLWNoYXJ0LWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9jay1jaGFydC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtb2NrLWxhYmVsXCI+e3sgY29tcC5sYWJlbCB8fCAnQ2hhcnQgVmlzdWFsaXphdGlvbicgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2NrLWNoYXJ0LWJhcnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vY2stY2hhcnQtYmFyXCIgc3R5bGU9XCJoZWlnaHQ6IDU1JVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9jay1jaGFydC1iYXJcIiBzdHlsZT1cImhlaWdodDogODAlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2NrLWNoYXJ0LWJhclwiIHN0eWxlPVwiaGVpZ2h0OiA0NSVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vY2stY2hhcnQtYmFyXCIgc3R5bGU9XCJoZWlnaHQ6IDk1JVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9jay1jaGFydC1iYXJcIiBzdHlsZT1cImhlaWdodDogNzAlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vY2stZ2VuZXJpYy1ib3hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNvbXAudHlwZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBSZXNpemluZyBIYW5kbGVzIChFYXN0LCBTb3V0aCwgU291dGgtRWFzdCkgLS0+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZXNpemUtaGFuZGxlIGhhbmRsZS1lXCJcbiAgICAgICAgICAgICAgICAgIChwb2ludGVyZG93bik9XCJzdGFydFJlc2l6ZSgkZXZlbnQsIGNvbXAsICdlJylcIlxuICAgICAgICAgICAgICAgICAgKGRibGNsaWNrKT1cInJlc2V0RGltZW5zaW9ucyhjb21wLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPVwiRHJhZyB0byByZXNpemUgY29sdW1uIHdpZHRoIOKAoiBEb3VibGUtY2xpY2sgdG8gcmVzZXRcIlxuICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInJlc2l6ZS1oYW5kbGUgaGFuZGxlLXNcIlxuICAgICAgICAgICAgICAgICAgKHBvaW50ZXJkb3duKT1cInN0YXJ0UmVzaXplKCRldmVudCwgY29tcCwgJ3MnKVwiXG4gICAgICAgICAgICAgICAgICAoZGJsY2xpY2spPVwicmVzZXREaW1lbnNpb25zKGNvbXAsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgdGl0bGU9XCJEcmFnIHRvIHJlc2l6ZSBoZWlnaHQg4oCiIERvdWJsZS1jbGljayB0byByZXNldFwiXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVzaXplLWhhbmRsZSBoYW5kbGUtc2VcIlxuICAgICAgICAgICAgICAgICAgKHBvaW50ZXJkb3duKT1cInN0YXJ0UmVzaXplKCRldmVudCwgY29tcCwgJ3NlJylcIlxuICAgICAgICAgICAgICAgICAgKGRibGNsaWNrKT1cInJlc2V0RGltZW5zaW9ucyhjb21wLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPVwiRHJhZyB0byByZXNpemUgd2lkdGggYW5kIGhlaWdodCDigKIgRG91YmxlLWNsaWNrIHRvIHJlc2V0XCJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIFJlc2l6aW5nIERpbWVuc2lvbiBHaG9zdCAvIEJhZGdlIC0tPlxuICAgICAgICAgICAgICAgIEBpZiAocmVzaXppbmdDb21wSWQoKSA9PT0gY29tcC5pZCkge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZS1kaW1lbnNpb24tdG9vbHRpcFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyByZXNpemluZ1Rvb2x0aXAoY29tcCkgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0gRHJhZyBwbGFjZWhvbGRlciB3aXRoIG1hdGNoZWQgZ3JpZCBjb2x1bW4gc3BhbiAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAqY2RrRHJhZ1BsYWNlaG9sZGVyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNhbnZhcy1kcmFnLXBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5ncmlkLWNvbHVtbl09XCJnZXRHcmlkQ29sdW1uKGNvbXApXCJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIERyYWcgcHJldmlldyAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2ICpjZGtEcmFnUHJldmlldyBjbGFzcz1cImNhbnZhcy1kcmFnLXByZXZpZXdcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJhZy1oYW5kbGUtZG90c1wiPuKLruKLrjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxycHQtaWNvbiBbbmFtZV09XCJnZXRDb21wb25lbnRJY29uTmFtZShjb21wLnR5cGUpXCIgW3NpemVdPVwiMTRcIiAvPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcmV2aWV3LXRpdGxlXCI+e3sgY29tcC5sYWJlbCB8fCBjb21wLmtleSB8fCBjb21wLnR5cGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByZXZpZXctc3BhblwiPnt7IGdldFNwYW4oY29tcCkgfX0ve3sgdG90YWxDb2x1bW5zKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKGNvbXBvbmVudHMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbnZhcy1lbXB0eS1zdGF0ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1pY29uXCI+PHJwdC1pY29uIG5hbWU9XCJkZXNpZ25cIiBbc2l6ZV09XCI0MFwiIC8+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGgzPlZpc3VhbCBDYW52YXMgaXMgRW1wdHk8L2gzPlxuICAgICAgICAgICAgICAgIDxwPkRyYWcgY29tcG9uZW50cyBmcm9tIHRoZSBwYWxldHRlIG9uIHRoZSBsZWZ0IG9yIGRvdWJsZS1jbGljayB0byBhZGQgdGhlbSB0byB0aGlzIHJlcG9ydC48L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBSZXN1bHQgR3JpZCBQcmV2aWV3IFBsYWNlaG9sZGVyIC0tPlxuICAgICAgICAgIEBpZiAoZGVmaW5pdGlvbigpLmdyaWQpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYW52YXMtZ3JpZC1wcmV2aWV3LWJveFwiIChjbGljayk9XCJzZWxlY3RHcmlkU2V0dGluZ3MoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZC1wcmV2aWV3LWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDtcIj5cbiAgICAgICAgICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwidGFibGVcIiBbc2l6ZV09XCIxNVwiIC8+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5SZXN1bHQgR3JpZCBQcmV2aWV3ICh7eyBkZWZpbml0aW9uKCkuZ3JpZD8uY29sdW1ucz8ubGVuZ3RoID8/IDAgfX0gY29sdW1ucyk8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJncmlkLWNsaWNrLWhpbnRcIj5DbGljayB0byBlZGl0IGNvbHVtbnM8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZC1wcmV2aWV3LWNvbHVtbnNcIj5cblxuICAgICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiBkZWZpbml0aW9uKCkuZ3JpZD8uY29sdW1uczsgdHJhY2sgY29sLmZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZC1jb2wtcGlsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbC1waWxsLW5hbWVcIj57eyBjb2wubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29sLXBpbGwtdHlwZVwiPnt7IGNvbC5kYXRhVHlwZSB8fCAnc3RyaW5nJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW2BcbiAgICA6aG9zdCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmMWY1Zjk7XG4gICAgICBmb250LWZhbWlseTogdmFyKC0tcnB0LWZvbnQtZmFtaWx5LCBpbmhlcml0KTtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgfVxuICAgIC5jYW52YXMtd3JhcHBlciB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG4gICAgLmNhbnZhcy10b29sYmFyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgbWluLWhlaWdodDogNDZweDtcbiAgICAgIHBhZGRpbmc6IDZweCAyMHB4O1xuICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ycHQtY29sb3ItYm9yZGVyLCAjY2JkNWUxKTtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgfVxuICAgIC5jYW52YXMtaW5mbyB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogOHB4O1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LW11dGVkLCAjNjQ3NDhiKTtcbiAgICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgIH1cbiAgICAuaW5mby1sYWJlbCB7XG4gICAgICBjb2xvcjogIzY0NzQ4YjtcbiAgICB9XG4gICAgLmluZm8tdmFsdWUge1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dCwgIzBmMTcyYSk7XG4gICAgfVxuICAgIC5pbmZvLWRpdmlkZXIge1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci1ib3JkZXIsICNjYmQ1ZTEpO1xuICAgICAgbWFyZ2luOiAwIDJweDtcbiAgICB9XG4gICAgLmNhbnZhcy1hY3Rpb24tYnRuIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogOHB4O1xuICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgcGFkZGluZzogMCAxNHB4O1xuICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXJwdC1jb2xvci1ib3JkZXIsICNjYmQ1ZTEpO1xuICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgY29sb3I6ICMxZTI5M2I7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICBib3gtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA0KTtcbiAgICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1ycHQtdHJhbnNpdGlvbi1zcGVlZCwgMTUwbXMpIGVhc2U7XG4gICAgfVxuICAgIC5jYW52YXMtYWN0aW9uLWJ0biBycHQtaWNvbiB7XG4gICAgICBjb2xvcjogIzY0NzQ4YjtcbiAgICAgIHRyYW5zaXRpb246IGNvbG9yIDE1MG1zIGVhc2U7XG4gICAgfVxuICAgIC5jYW52YXMtYWN0aW9uLWJ0bjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtY29sb3Itc3VyZmFjZSwgI2Y4ZmFmYyk7XG4gICAgICBib3JkZXItY29sb3I6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgzNywgOTksIDIzNSwgMC4wOCk7XG4gICAgfVxuICAgIC5jYW52YXMtYWN0aW9uLWJ0bjpob3ZlciBycHQtaWNvbiB7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgIH1cbiAgICAuY2FudmFzLWFjdGlvbi1idG46YWN0aXZlIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxcHgpO1xuICAgIH1cbiAgICAuY2FudmFzLXNjcm9sbC1hcmVhIHtcbiAgICAgIGZsZXg6IDE7XG4gICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgcGFkZGluZzogMTZweDtcbiAgICB9XG4gICAgLmNhbnZhcy1hcnRib2FyZCB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1heC13aWR0aDogMTQwMHB4O1xuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2NiZDVlMSk7XG4gICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ycHQtYm9yZGVyLXJhZGl1cy1sZywgOHB4KTtcbiAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDZweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gICAgICBtaW4taGVpZ2h0OiA0ODBweDtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgfVxuICAgIC5jYW52YXMtcmVwb3J0LWhlYWRlciB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAyNHB4O1xuICAgICAgcGFkZGluZy1ib3R0b206IDE2cHg7XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2UyZThmMCk7XG4gICAgfVxuICAgIC5jYW52YXMtcmVwb3J0LXRpdGxlIHtcbiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tcnB0LWZvbnQtc2l6ZS14bCwgMS41cmVtKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQsICMwZjE3MmEpO1xuICAgICAgbWFyZ2luOiAwIDAgNnB4IDA7XG4gICAgfVxuICAgIC5jYW52YXMtcmVwb3J0LWRlc2Mge1xuICAgICAgZm9udC1zaXplOiB2YXIoLS1ycHQtZm9udC1zaXplLWJhc2UsIDAuODc1cmVtKTtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dC1tdXRlZCwgIzY0NzQ4Yik7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuICAgIC5jYW52YXMtZ3JpZCB7XG4gICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBtaW4taGVpZ2h0OiAxODBweDtcbiAgICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1ycHQtdHJhbnNpdGlvbi1zcGVlZCwgMTUwbXMpIGVhc2U7XG4gICAgfVxuICAgIC5jYW52YXMtY29tcG9uZW50LWNhcmQge1xuICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2NiZDVlMSk7XG4gICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ycHQtYm9yZGVyLXJhZGl1cywgNnB4KTtcbiAgICAgIGJveC1zaGFkb3c6IHZhcigtLXJwdC1ib3gtc2hhZG93LCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA1KSk7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXJwdC10cmFuc2l0aW9uLXNwZWVkLCAxNTBtcykgZWFzZTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIG1pbi1oZWlnaHQ6IDk2cHg7XG4gICAgfVxuICAgIC5jYW52YXMtY29tcG9uZW50LWNhcmQ6aG92ZXIge1xuICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICBib3gtc2hhZG93OiAwIDRweCA2cHggLTFweCByZ2JhKDM3LCA5OSwgMjM1LCAwLjEpO1xuICAgIH1cbiAgICAuY2FudmFzLWNvbXBvbmVudC1jYXJkLmlzLXNlbGVjdGVkIHtcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEoMzcsIDk5LCAyMzUsIDAuMjUpO1xuICAgIH1cbiAgICAuY2FudmFzLWNvbXBvbmVudC1jYXJkLmlzLXJlc2l6aW5nIHtcbiAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiYSgzNywgOTksIDIzNSwgMC4zNSk7XG4gICAgICB6LWluZGV4OiAzMDtcbiAgICAgIHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLnJlc2l6ZS1oYW5kbGUge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgei1pbmRleDogNDA7XG4gICAgICB0b3VjaC1hY3Rpb246IG5vbmU7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAxNTBtcyBlYXNlO1xuICAgIH1cbiAgICAuY2FudmFzLWNvbXBvbmVudC1jYXJkLmlzLXNlbGVjdGVkIC5yZXNpemUtaGFuZGxlLFxuICAgIC5jYW52YXMtY29tcG9uZW50LWNhcmQ6aG92ZXIgLnJlc2l6ZS1oYW5kbGUge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gICAgLnJlc2l6ZS1oYW5kbGUuaGFuZGxlLWUge1xuICAgICAgdG9wOiAwO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICB3aWR0aDogNnB4O1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgY3Vyc29yOiBldy1yZXNpemU7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIH1cbiAgICAucmVzaXplLWhhbmRsZS5oYW5kbGUtZTo6YWZ0ZXIge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICB3aWR0aDogM3B4O1xuICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgYmFja2dyb3VuZDogI2NiZDVlMTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMTUwbXMgZWFzZTtcbiAgICB9XG4gICAgLnJlc2l6ZS1oYW5kbGUuaGFuZGxlLWU6aG92ZXI6OmFmdGVyLFxuICAgIC5jYW52YXMtY29tcG9uZW50LWNhcmQuaXMtc2VsZWN0ZWQgLnJlc2l6ZS1oYW5kbGUuaGFuZGxlLWU6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICB9XG4gICAgLnJlc2l6ZS1oYW5kbGUuaGFuZGxlLXMge1xuICAgICAgYm90dG9tOiAwO1xuICAgICAgbGVmdDogMDtcbiAgICAgIGhlaWdodDogNnB4O1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBjdXJzb3I6IG5zLXJlc2l6ZTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuICAgIC5yZXNpemUtaGFuZGxlLmhhbmRsZS1zOjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIGhlaWdodDogM3B4O1xuICAgICAgd2lkdGg6IDI0cHg7XG4gICAgICBiYWNrZ3JvdW5kOiAjY2JkNWUxO1xuICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAxNTBtcyBlYXNlO1xuICAgIH1cbiAgICAucmVzaXplLWhhbmRsZS5oYW5kbGUtczpob3Zlcjo6YWZ0ZXIsXG4gICAgLmNhbnZhcy1jb21wb25lbnQtY2FyZC5pcy1zZWxlY3RlZCAucmVzaXplLWhhbmRsZS5oYW5kbGUtczo6YWZ0ZXIge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgIH1cbiAgICAucmVzaXplLWhhbmRsZS5oYW5kbGUtc2Uge1xuICAgICAgYm90dG9tOiAwO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICB3aWR0aDogMTJweDtcbiAgICAgIGhlaWdodDogMTJweDtcbiAgICAgIGN1cnNvcjogbndzZS1yZXNpemU7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgIHBhZGRpbmc6IDJweDtcbiAgICB9XG4gICAgLnJlc2l6ZS1oYW5kbGUuaGFuZGxlLXNlOjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIHdpZHRoOiA1cHg7XG4gICAgICBoZWlnaHQ6IDVweDtcbiAgICAgIGJvcmRlci1yaWdodDogMnB4IHNvbGlkICNjYmQ1ZTE7XG4gICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgI2NiZDVlMTtcbiAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAxNTBtcyBlYXNlO1xuICAgIH1cbiAgICAucmVzaXplLWhhbmRsZS5oYW5kbGUtc2U6aG92ZXI6OmFmdGVyLFxuICAgIC5jYW52YXMtY29tcG9uZW50LWNhcmQuaXMtc2VsZWN0ZWQgLnJlc2l6ZS1oYW5kbGUuaGFuZGxlLXNlOjphZnRlciB7XG4gICAgICBib3JkZXItY29sb3I6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICB9XG4gICAgLnJlc2l6ZS1kaW1lbnNpb24tdG9vbHRpcCB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDM4cHg7XG4gICAgICByaWdodDogOHB4O1xuICAgICAgYmFja2dyb3VuZDogcmdiYSgxNSwgMjMsIDQyLCAwLjkpO1xuICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICBmb250LXNpemU6IDAuN3JlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBwYWRkaW5nOiAzcHggOHB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgei1pbmRleDogNTA7XG4gICAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjIpO1xuICAgIH1cbiAgICAuY2FyZC1oZWFkZXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICBnYXA6IDZweDtcbiAgICAgIHBhZGRpbmc6IDVweCA4cHg7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtY29sb3Itc3VyZmFjZSwgI2Y4ZmFmYyk7XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2UyZThmMCk7XG4gICAgICBtaW4taGVpZ2h0OiAzMnB4O1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICAgIC5jYXJkLXRpdGxlLWdyb3VwIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZ2FwOiA1cHg7XG4gICAgICBjdXJzb3I6IGdyYWI7XG4gICAgICBtaW4td2lkdGg6IDA7XG4gICAgICBmbGV4OiAxO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG4gICAgLmRyYWctaGFuZGxlLWRvdHMge1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LW11dGVkLCAjOTRhM2I4KTtcbiAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgICAgIGxldHRlci1zcGFjaW5nOiAtMnB4O1xuICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICB9XG4gICAgLmNvbXAtdGl0bGUge1xuICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dCwgIzBmMTcyYSk7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgfVxuICAgIC5jYXJkLWFjdGlvbnMge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6IDRweDtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgfVxuICAgIC5uZXctcm93LXBpbGwtc3RhdGljIHtcbiAgICAgIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBjb2xvcjogIzdjM2FlZDtcbiAgICAgIGJhY2tncm91bmQ6ICNmNWYzZmY7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkNmZlO1xuICAgICAgcGFkZGluZzogMXB4IDVweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cbiAgICAuc3Bhbi1waWxsLXN0YXRpYyB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQtbXV0ZWQsICM2NDc0OGIpO1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LWNvbG9yLXN1cmZhY2UsICNmMWY1ZjkpO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2UyZThmMCk7XG4gICAgICBwYWRkaW5nOiAxcHggNnB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogOTk5OXB4O1xuICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICB9XG4gICAgLmNhcmQtcXVpY2stY29udHJvbHMge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6IDNweDtcbiAgICB9XG4gICAgLmNhbnZhcy1jb21wb25lbnQtY2FyZDpob3ZlciAuc3Bhbi1waWxsLXN0YXRpYyxcbiAgICAuY2FudmFzLWNvbXBvbmVudC1jYXJkLmlzLXNlbGVjdGVkIC5zcGFuLXBpbGwtc3RhdGljLFxuICAgIC5jYW52YXMtY29tcG9uZW50LWNhcmQ6aG92ZXIgLm5ldy1yb3ctcGlsbC1zdGF0aWMsXG4gICAgLmNhbnZhcy1jb21wb25lbnQtY2FyZC5pcy1zZWxlY3RlZCAubmV3LXJvdy1waWxsLXN0YXRpYyB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgICAuY2FudmFzLWNvbXBvbmVudC1jYXJkOmhvdmVyIC5jYXJkLXF1aWNrLWNvbnRyb2xzLFxuICAgIC5jYW52YXMtY29tcG9uZW50LWNhcmQuaXMtc2VsZWN0ZWQgLmNhcmQtcXVpY2stY29udHJvbHMge1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgfVxuICAgIC5jYW52YXMtY29tcG9uZW50LWNhcmQuaXMtbmFycm93IC5jYXJkLWhlYWRlciB7XG4gICAgICBwYWRkaW5nOiA0cHggNnB4O1xuICAgICAgZ2FwOiAzcHg7XG4gICAgfVxuICAgIC5jYW52YXMtY29tcG9uZW50LWNhcmQuaXMtbmFycm93OmhvdmVyIC5jb21wLXRpdGxlLFxuICAgIC5jYW52YXMtY29tcG9uZW50LWNhcmQuaXMtbmFycm93LmlzLXNlbGVjdGVkIC5jb21wLXRpdGxlLFxuICAgIC5jYW52YXMtY29tcG9uZW50LWNhcmQuaXMtbmFycm93OmhvdmVyIC5kcmFnLWhhbmRsZS1kb3RzLFxuICAgIC5jYW52YXMtY29tcG9uZW50LWNhcmQuaXMtbmFycm93LmlzLXNlbGVjdGVkIC5kcmFnLWhhbmRsZS1kb3RzIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgIC5jYW52YXMtY29tcG9uZW50LWNhcmQuaXMtbmFycm93IC5jYXJkLXF1aWNrLWNvbnRyb2xzIHtcbiAgICAgIGdhcDogMnB4O1xuICAgIH1cbiAgICAuY2FudmFzLWNvbXBvbmVudC1jYXJkLmlzLW5hcnJvdyAuc3Bhbi1jb250cm9sLWdyb3VwIHtcbiAgICAgIGhlaWdodDogMThweDtcbiAgICB9XG4gICAgLmNhbnZhcy1jb21wb25lbnQtY2FyZC5pcy1uYXJyb3cgLnNwYW4tYnRuIHtcbiAgICAgIHdpZHRoOiAxNHB4O1xuICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgIH1cbiAgICAuY2FudmFzLWNvbXBvbmVudC1jYXJkLmlzLW5hcnJvdyAuc3Bhbi1iYWRnZSB7XG4gICAgICBmb250LXNpemU6IDAuNnJlbTtcbiAgICAgIHBhZGRpbmc6IDAgMnB4O1xuICAgIH1cbiAgICAuY2FudmFzLWNvbXBvbmVudC1jYXJkLmlzLW5hcnJvdyAuY2FyZC1hY3Rpb24tYnRuIHtcbiAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgIH1cbiAgICAuY2FudmFzLWNvbXBvbmVudC1jYXJkLmlzLWNvbXBhY3Q6aG92ZXIgLmNhcmQtYWN0aW9uLWJ0bjpub3QoLmJ0bi1kZWxldGUpLFxuICAgIC5jYW52YXMtY29tcG9uZW50LWNhcmQuaXMtY29tcGFjdC5pcy1zZWxlY3RlZCAuY2FyZC1hY3Rpb24tYnRuOm5vdCguYnRuLWRlbGV0ZSkge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gICAgLnNwYW4tY29udHJvbC1ncm91cCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2NiZDVlMSk7XG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICBwYWRkaW5nOiAwIDFweDtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG4gICAgLnNwYW4tYnRuIHtcbiAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQtbXV0ZWQsICM2NDc0OGIpO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDEyMG1zIGVhc2U7XG4gICAgfVxuICAgIC5zcGFuLWJ0bjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtY29sb3Itc3VyZmFjZS1ob3ZlciwgI2YxZjVmOSk7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgIH1cbiAgICAuc3Bhbi1idG46ZGlzYWJsZWQge1xuICAgICAgb3BhY2l0eTogMC4zO1xuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICB9XG4gICAgLnNwYW4tYmFkZ2Uge1xuICAgICAgZm9udC1zaXplOiAwLjY1cmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dCwgIzBmMTcyYSk7XG4gICAgICBwYWRkaW5nOiAwIDNweDtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIH1cbiAgICAuY2FyZC1hY3Rpb24tYnRuIHtcbiAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQtbXV0ZWQsICM2NDc0OGIpO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDEyMG1zIGVhc2U7XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG4gICAgLmNhcmQtYWN0aW9uLWJ0bjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZTJlOGYwO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LCAjMGYxNzJhKTtcbiAgICB9XG4gICAgLmNhcmQtYWN0aW9uLWJ0bi5idG4tYWN0aXZlLXRvZ2dsZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAjN2MzYWVkO1xuICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICBib3JkZXItY29sb3I6ICM3YzNhZWQ7XG4gICAgfVxuICAgIC5jYXJkLWFjdGlvbi1idG4uYnRuLWFjdGl2ZS10b2dnbGU6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogIzZkMjhkOTtcbiAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgIH1cbiAgICAuYnRuLWRlbGV0ZTpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZmVlMmUyO1xuICAgICAgY29sb3I6ICNlZjQ0NDQ7XG4gICAgfVxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgcGFkZGluZzogOHB4IDEycHggOHB4IDEwcHg7XG4gICAgICBmbGV4OiAxO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBtaW4taGVpZ2h0OiAwO1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICAgIC5tb2NrLWlucHV0LWZpZWxkIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgZ2FwOiA0cHg7XG4gICAgICBmbGV4OiAxO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgbWluLWhlaWdodDogMDtcbiAgICB9XG4gICAgLm1vY2stbGFiZWwge1xuICAgICAgZm9udC1zaXplOiAwLjdyZW07XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LW11dGVkLCAjNDc1NTY5KTtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cbiAgICAubW9jay1pbnB1dC1ib3gsIC5tb2NrLXNlbGVjdC1ib3gge1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2NiZDVlMSk7XG4gICAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgICBwYWRkaW5nOiA2cHggMTJweDtcbiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tcnB0LWZvbnQtc2l6ZS1iYXNlLCAwLjg3NXJlbSk7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQtbXV0ZWQsICM5NGEzYjgpO1xuICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgIGZsZXg6IDE7XG4gICAgICBtaW4taGVpZ2h0OiAzOHB4O1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIH1cbiAgICAubW9jay1jaGVja2JveC1maWVsZCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogNnB4O1xuICAgICAgZmxleDogMTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICBwYWRkaW5nLXRvcDogMTRweDtcbiAgICB9XG4gICAgLm1vY2stY2hlY2stYm94IHtcbiAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2NiZDVlMSk7XG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgZm9udC1zaXplOiAwLjY1cmVtO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cbiAgICAubW9jay1idG4td3JhcHBlciB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleDogMTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIG1pbi1oZWlnaHQ6IDM4cHg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBtaW4td2lkdGg6IDA7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIH1cbiAgICAubW9jay1idG4ge1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMsIDZweCk7XG4gICAgICBwYWRkaW5nOiAwIDE2cHg7XG4gICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgICBmb250LXNpemU6IHZhcigtLXJwdC1mb250LXNpemUtYmFzZSwgMC44NzVyZW0pO1xuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgd2lkdGg6IGF1dG87XG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGdhcDogNnB4O1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMTUwbXMgZWFzZTtcbiAgICB9XG4gICAgLm1vY2stYnRuLm1vY2stYnRuLWZ1bGwge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICAgIC5jYW52YXMtY29tcG9uZW50LWNhcmQuaXMtbmFycm93IC5tb2NrLWJ0biB7XG4gICAgICBwYWRkaW5nOiAwIDZweDtcbiAgICAgIGZvbnQtc2l6ZTogMC43NzVyZW07XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMzRweDtcbiAgICB9XG4gICAgLm1vY2sta3BpLWZpZWxkIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgZmxleDogMTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgfVxuICAgIC5tb2NrLWtwaS1oZWFkZXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgfVxuICAgIC5tb2NrLWtwaS12YWx1ZSB7XG4gICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LCAjMGYxNzJhKTtcbiAgICAgIG1hcmdpbjogMnB4IDA7XG4gICAgfVxuICAgIC5tb2NrLWtwaS1mb290ZXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6IDZweDtcbiAgICAgIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgICB9XG4gICAgLm1vY2sta3BpLXRyZW5kIHtcbiAgICAgIGNvbG9yOiAjMTZhMzRhO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB9XG4gICAgLm1vY2sta3BpLXN1YiB7XG4gICAgICBjb2xvcjogIzY0NzQ4YjtcbiAgICB9XG4gICAgLm1vY2stY2hhcnQtZmllbGQge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBmbGV4OiAxO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgbWluLWhlaWdodDogMDtcbiAgICB9XG4gICAgLm1vY2stY2hhcnQtYmFycyB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG4gICAgICBnYXA6IDhweDtcbiAgICAgIGZsZXg6IDE7XG4gICAgICBtaW4taGVpZ2h0OiAzNnB4O1xuICAgICAgcGFkZGluZy10b3A6IDZweDtcbiAgICB9XG4gICAgLm1vY2stY2hhcnQtYmFyIHtcbiAgICAgIHdpZHRoOiAxNiU7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICBib3JkZXItcmFkaXVzOiAzcHggM3B4IDAgMDtcbiAgICAgIG9wYWNpdHk6IDAuODU7XG4gICAgICBtaW4taGVpZ2h0OiAxMHB4O1xuICAgIH1cbiAgICAuYnRuLXByaW1hcnkge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgfVxuICAgIC5idG4tc2Vjb25kYXJ5IHtcbiAgICAgIGJhY2tncm91bmQ6ICNmMWY1Zjk7XG4gICAgICBjb2xvcjogIzBmMTcyYTtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNjYmQ1ZTE7XG4gICAgfVxuICAgIC5idG4tb3V0bGluZSB7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIGNvbG9yOiAjMjU2M2ViO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgIzI1NjNlYjtcbiAgICB9XG4gICAgLmJ0bi1kYW5nZXIge1xuICAgICAgYmFja2dyb3VuZDogI2VmNDQ0NDtcbiAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgIH1cbiAgICAubW9jay1nZW5lcmljLWJveCB7XG4gICAgICBib3JkZXI6IDFweCBkYXNoZWQgI2NiZDVlMTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgIHBhZGRpbmc6IDhweDtcbiAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIGNvbG9yOiAjNjQ3NDhiO1xuICAgIH1cbiAgICAuY2FudmFzLWRyYWctcGxhY2Vob2xkZXIge1xuICAgICAgYmFja2dyb3VuZDogcmdiYSgzNywgOTksIDIzNSwgMC4wNik7XG4gICAgICBib3JkZXI6IDJweCBkYXNoZWQgdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgbWluLWhlaWdodDogODBweDtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMTUwbXMgZWFzZTtcbiAgICB9XG4gICAgLmNhbnZhcy1kcmFnLXByZXZpZXcsXG4gICAgOjpuZy1kZWVwIC5jYW52YXMtZHJhZy1wcmV2aWV3IHtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgICBwYWRkaW5nOiA4cHggMTRweDtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogOHB4O1xuICAgICAgZm9udC1mYW1pbHk6IHZhcigtLXJwdC1mb250LWZhbWlseSwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZikgIWltcG9ydGFudDtcbiAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dCwgIzBmMTcyYSk7XG4gICAgICBib3gtc2hhZG93OiAwIDEycHggMjRweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gICAgICB6LWluZGV4OiAxMDAwMDtcbiAgICB9XG4gICAgLnByZXZpZXctdGl0bGUsXG4gICAgOjpuZy1kZWVwIC5wcmV2aWV3LXRpdGxlIHtcbiAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0ICFpbXBvcnRhbnQ7XG4gICAgICBtYXgtd2lkdGg6IDE2MHB4O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB9XG4gICAgLnByZXZpZXctc3BhbixcbiAgICA6Om5nLWRlZXAgLnByZXZpZXctc3BhbiB7XG4gICAgICBmb250LWZhbWlseTogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgICAgZm9udC1zaXplOiAwLjY1cmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICBiYWNrZ3JvdW5kOiAjZWZmNmZmO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2JmZGJmZTtcbiAgICAgIHBhZGRpbmc6IDFweCA2cHg7XG4gICAgICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XG4gICAgfVxuICAgIC5jYW52YXMtZW1wdHktc3RhdGUge1xuICAgICAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgcGFkZGluZzogNjBweCAyMHB4O1xuICAgICAgYm9yZGVyOiAycHggZGFzaGVkIHZhcigtLXJwdC1jb2xvci1ib3JkZXIsICNjYmQ1ZTEpO1xuICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LWNvbG9yLXN1cmZhY2UsICNmOGZhZmMpO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbiAgICAuZW1wdHktaWNvbiB7XG4gICAgICBmb250LXNpemU6IDIuNXJlbTtcbiAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG4gICAgfVxuICAgIC5jYW52YXMtZW1wdHktc3RhdGUgaDMge1xuICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dCwgIzBmMTcyYSk7XG4gICAgICBtYXJnaW46IDAgMCA2cHggMDtcbiAgICB9XG4gICAgLmNhbnZhcy1lbXB0eS1zdGF0ZSBwIHtcbiAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LW11dGVkLCAjNjQ3NDhiKTtcbiAgICAgIG1heC13aWR0aDogMzgwcHg7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuICAgIC5jYW52YXMtZ3JpZC1wcmV2aWV3LWJveCB7XG4gICAgICBtYXJnaW4tdG9wOiAzMnB4O1xuICAgICAgYm9yZGVyOiAxcHggZGFzaGVkIHZhcigtLXJwdC1jb2xvci1ib3JkZXIsICNjYmQ1ZTEpO1xuICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LWNvbG9yLXN1cmZhY2UsICNmOGZhZmMpO1xuICAgICAgcGFkZGluZzogMTZweDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1ycHQtdHJhbnNpdGlvbi1zcGVlZCwgMTUwbXMpIGVhc2U7XG4gICAgfVxuICAgIC5jYW52YXMtZ3JpZC1wcmV2aWV3LWJveDpob3ZlciB7XG4gICAgICBib3JkZXItY29sb3I6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgfVxuICAgIC5ncmlkLXByZXZpZXctaGVhZGVyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LCAjMGYxNzJhKTtcbiAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgfVxuICAgIC5ncmlkLWNsaWNrLWhpbnQge1xuICAgICAgZm9udC1zaXplOiAwLjdyZW07XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICB9XG4gICAgLmdyaWQtcHJldmlldy1jb2x1bW5zIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICBnYXA6IDZweDtcbiAgICB9XG4gICAgLmdyaWQtY29sLXBpbGwge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6IDRweDtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ycHQtY29sb3ItYm9yZGVyLCAjZTJlOGYwKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgIHBhZGRpbmc6IDRweCA4cHg7XG4gICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgfVxuICAgIC5jb2wtcGlsbC1uYW1lIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQsICMwZjE3MmEpO1xuICAgIH1cbiAgICAuY29sLXBpbGwtdHlwZSB7XG4gICAgICBmb250LXNpemU6IDAuNjVyZW07XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQtbXV0ZWQsICM5NGEzYjgpO1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LWNvbG9yLXN1cmZhY2UsICNmMWY1ZjkpO1xuICAgICAgcGFkZGluZzogMXB4IDRweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICB9XG4gIGBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRGVzaWduQ2FudmFzQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXNpZ25lclN0YXRlID0gaW5qZWN0KERlc2lnbmVyU3RhdGVTZXJ2aWNlKTtcblxuICByZWFkb25seSBkZWZpbml0aW9uID0gdGhpcy5kZXNpZ25lclN0YXRlLmRlZmluaXRpb247XG4gIHJlYWRvbmx5IGNvbXBvbmVudHMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmRlZmluaXRpb24oKS5jb21wb25lbnRzKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRJZCA9IHRoaXMuZGVzaWduZXJTdGF0ZS5zZWxlY3RlZENvbXBvbmVudElkO1xuXG4gIHJlYWRvbmx5IHRvdGFsQ29sdW1ucyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZGVmaW5pdGlvbigpLmxheW91dC5jb2x1bW5zIHx8IDEyKTtcblxuICByZWFkb25seSBncmlkVGVtcGxhdGVDb2x1bW5zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBgcmVwZWF0KCR7dGhpcy50b3RhbENvbHVtbnMoKX0sIG1pbm1heCgwLCAxZnIpKWA7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHNvcnRlZENvbXBvbmVudHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmNvbXBvbmVudHMoKV0uc29ydCgoYSwgYikgPT4gKGEub3JkZXIgPz8gMCkgLSAoYi5vcmRlciA/PyAwKSk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHJlc2l6aW5nQ29tcElkID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSByZXNpemluZ1NwYW4gPSBzaWduYWw8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IHJlc2l6aW5nSGVpZ2h0ID0gc2lnbmFsPG51bWJlciB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSBpc0FueVJlc2l6aW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXNpemluZ0NvbXBJZCgpICE9PSBudWxsKTtcblxuICBpc1NlbGVjdGVkKGlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZElkKCkgPT09IGlkO1xuICB9XG5cbiAgZ2V0U3Bhbihjb21wOiBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uKTogbnVtYmVyIHtcbiAgICByZXR1cm4gcmVzb2x2ZUNvbXBvbmVudFNwYW4oXG4gICAgICBjb21wLFxuICAgICAgdGhpcy50b3RhbENvbHVtbnMoKSxcbiAgICAgIHRoaXMucmVzaXppbmdDb21wSWQoKSA9PT0gY29tcC5pZCA/IHRoaXMucmVzaXppbmdTcGFuKCkgOiBudWxsXG4gICAgKTtcbiAgfVxuXG4gIGdldEdyaWRDb2x1bW4oY29tcDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNhbGN1bGF0ZUdyaWRDb2x1bW4oY29tcCwgdGhpcy50b3RhbENvbHVtbnMoKSwgdGhpcy5nZXRTcGFuKGNvbXApKTtcbiAgfVxuXG4gIHRvZ2dsZU5ld1Jvdyhjb21wOiBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uLCBldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IGN1cnJlbnQgPSAhIWNvbXAubGF5b3V0Py5uZXdSb3c7XG4gICAgdGhpcy5kZXNpZ25lclN0YXRlLnVwZGF0ZUNvbXBvbmVudExheW91dChjb21wLmlkLCB7IG5ld1JvdzogIWN1cnJlbnQgfSk7XG4gIH1cblxuICBnZXRHcmlkUm93KGNvbXA6IFJlcG9ydENvbXBvbmVudERlZmluaXRpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiBjYWxjdWxhdGVHcmlkUm93KGNvbXApO1xuICB9XG5cbiAgZ2V0Q29tcG9uZW50SGVpZ2h0KGNvbXA6IFJlcG9ydENvbXBvbmVudERlZmluaXRpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiByZXNvbHZlQ2FudmFzQ2FyZEhlaWdodChcbiAgICAgIGNvbXAsXG4gICAgICB0aGlzLnJlc2l6aW5nQ29tcElkKCkgPT09IGNvbXAuaWQgPyB0aGlzLnJlc2l6aW5nSGVpZ2h0KCkgOiBudWxsXG4gICAgKTtcbiAgfVxuXG4gIGdldENvbXBvbmVudE1pbkhlaWdodChjb21wOiBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcmVzb2x2ZUNhbnZhc0NhcmRNaW5IZWlnaHQoXG4gICAgICBjb21wLFxuICAgICAgdGhpcy5yZXNpemluZ0NvbXBJZCgpID09PSBjb21wLmlkID8gdGhpcy5yZXNpemluZ0hlaWdodCgpIDogbnVsbFxuICAgICk7XG4gIH1cblxuICBnZXRDdXN0b21CdG5IZWlnaHQoY29tcDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbik6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IGggPSBjb21wLmxheW91dD8uaGVpZ2h0O1xuICAgIHJldHVybiBoICYmIGggIT09ICdhdXRvJyA/IGggOiBudWxsO1xuICB9XG5cbiAgZ2V0Q3VzdG9tQnRuV2lkdGgoY29tcDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbik6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IHcgPSBjb21wLmxheW91dD8ud2lkdGg7XG4gICAgcmV0dXJuIHcgJiYgdyAhPT0gJ2F1dG8nID8gdyA6IG51bGw7XG4gIH1cblxuICBnZXRDdXN0b21CdG5JY29uKGNvbXA6IFJlcG9ydENvbXBvbmVudERlZmluaXRpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiAoY29tcC5wcm9wZXJ0aWVzPy5bJ2ljb24nXSBhcyBzdHJpbmcpIHx8ICcnO1xuICB9XG5cbiAgcmVzaXppbmdUb29sdGlwKGNvbXA6IFJlcG9ydENvbXBvbmVudERlZmluaXRpb24pOiBzdHJpbmcge1xuICAgIGNvbnN0IHNwYW4gPSB0aGlzLmdldFNwYW4oY29tcCk7XG4gICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5yZXNpemluZ0hlaWdodCgpID8/IChjb21wLmxheW91dD8uaGVpZ2h0ID8gcGFyc2VJbnQoY29tcC5sYXlvdXQuaGVpZ2h0LCAxMCkgOiA1OCk7XG4gICAgcmV0dXJuIGAke3NwYW59IGNvbHMgw5cgJHtoZWlnaHR9cHhgO1xuICB9XG5cbiAgcmVhZG9ubHkgZ2V0Q29tcG9uZW50SWNvbk5hbWUgPSBnZXRDb21wb25lbnRJY29uTmFtZTtcblxuICBvblNlbGVjdChpZDogc3RyaW5nLCBldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzQW55UmVzaXppbmcoKSkgcmV0dXJuO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuZGVzaWduZXJTdGF0ZS5zZWxlY3RDb21wb25lbnQoaWQpO1xuICB9XG5cbiAgYWRqdXN0U3Bhbihjb21wOiBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uLCBkZWx0YTogbnVtYmVyLCBldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmdldFNwYW4oY29tcCk7XG4gICAgY29uc3QgbmV4dCA9IE1hdGgubWF4KDEsIE1hdGgubWluKHRoaXMudG90YWxDb2x1bW5zKCksIGN1cnJlbnQgKyBkZWx0YSkpO1xuICAgIHRoaXMuZGVzaWduZXJTdGF0ZS51cGRhdGVDb21wb25lbnRMYXlvdXQoY29tcC5pZCwgeyBjb2x1bW5TcGFuOiBuZXh0IH0pO1xuICB9XG5cbiAgb25EdXBsaWNhdGUoaWQ6IHN0cmluZywgZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmRlc2lnbmVyU3RhdGUuZHVwbGljYXRlQ29tcG9uZW50KGlkKTtcbiAgfVxuXG4gIG9uRGVsZXRlKGlkOiBzdHJpbmcsIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5kZXNpZ25lclN0YXRlLnJlbW92ZUNvbXBvbmVudChpZCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScpXG4gIG9uRXNjYXBlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSWQoKSkge1xuICAgICAgdGhpcy5kZXNpZ25lclN0YXRlLnNlbGVjdENvbXBvbmVudChudWxsKTtcbiAgICB9XG4gIH1cblxuICBvbkNhbnZhc0JhY2tncm91bmRDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzQW55UmVzaXppbmcoKSkgcmV0dXJuO1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAoXG4gICAgICB0YXJnZXQuY2xvc2VzdCgnLmNhbnZhcy1jb21wb25lbnQtY2FyZCcpIHx8XG4gICAgICB0YXJnZXQuY2xvc2VzdCgnLmNhbnZhcy1hY3Rpb24tYnRuJykgfHxcbiAgICAgIHRhcmdldC5jbG9zZXN0KCcuY2FudmFzLWdyaWQtcHJldmlldy1ib3gnKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRlc2lnbmVyU3RhdGUuc2VsZWN0Q29tcG9uZW50KG51bGwpO1xuICB9XG5cbiAgc2VsZWN0UmVwb3J0U2V0dGluZ3MoZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuZGVzaWduZXJTdGF0ZS5zZWxlY3RDb21wb25lbnQobnVsbCk7XG4gICAgdGhpcy5kZXNpZ25lclN0YXRlLnNldEFjdGl2ZVRhYigncmVwb3J0Jyk7XG4gIH1cblxuICBzZWxlY3RHcmlkU2V0dGluZ3MoZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuZGVzaWduZXJTdGF0ZS5zZWxlY3RDb21wb25lbnQobnVsbCk7XG4gICAgdGhpcy5kZXNpZ25lclN0YXRlLnNldEFjdGl2ZVRhYignZ3JpZCcpO1xuICB9XG5cbiAgc3RhcnRSZXNpemUoZXZlbnQ6IFBvaW50ZXJFdmVudCwgY29tcDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbiwgZGlyZWN0aW9uOiAnZScgfCAncycgfCAnc2UnKTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHRoaXMuZGVzaWduZXJTdGF0ZS5zZWxlY3RDb21wb25lbnQoY29tcC5pZCk7XG5cbiAgICBjb25zdCBoYW5kbGUgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaGFuZGxlLnNldFBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCk7XG5cbiAgICBjb25zdCBjYXJkID0gaGFuZGxlLmNsb3Nlc3QoJy5jYW52YXMtY29tcG9uZW50LWNhcmQnKSBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBncmlkID0gaGFuZGxlLmNsb3Nlc3QoJy5jYW52YXMtZ3JpZCcpIGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICghY2FyZCB8fCAhZ3JpZCkgcmV0dXJuO1xuXG4gICAgY29uc3Qgc3RhcnRYID0gZXZlbnQuY2xpZW50WDtcbiAgICBjb25zdCBzdGFydFkgPSBldmVudC5jbGllbnRZO1xuICAgIGNvbnN0IHN0YXJ0U3BhbiA9IGNvbXAubGF5b3V0Py5jb2x1bW5TcGFuID8/IChjb21wLnR5cGUgPT09ICdidXR0b24nID8gMiA6IDQpO1xuICAgIGNvbnN0IGV4aXN0aW5nQ29tcEhlaWdodCA9IGNvbXAubGF5b3V0Py5oZWlnaHQgPyBwYXJzZUludChjb21wLmxheW91dC5oZWlnaHQsIDEwKSA6IG51bGw7XG4gICAgY29uc3Qgc3RhcnRIZWlnaHQgPSBleGlzdGluZ0NvbXBIZWlnaHQgPz8gTWF0aC5tYXgoMzgsIGNhcmQub2Zmc2V0SGVpZ2h0IC0gQ0FOVkFTX0NBUkRfT1ZFUkhFQUQpO1xuICAgIGNvbnN0IHRvdGFsQ29scyA9IHRoaXMudG90YWxDb2x1bW5zKCk7XG4gICAgY29uc3QgZ2FwID0gdGhpcy5kZWZpbml0aW9uKCkubGF5b3V0LmdhcCA/PyAxNjtcbiAgICBjb25zdCBjb2xXaWR0aCA9IChncmlkLm9mZnNldFdpZHRoIC0gKHRvdGFsQ29scyAtIDEpICogZ2FwKSAvIHRvdGFsQ29scztcblxuICAgIHRoaXMucmVzaXppbmdDb21wSWQuc2V0KGNvbXAuaWQpO1xuICAgIHRoaXMucmVzaXppbmdTcGFuLnNldChzdGFydFNwYW4pO1xuICAgIHRoaXMucmVzaXppbmdIZWlnaHQuc2V0KHN0YXJ0SGVpZ2h0KTtcblxuICAgIGxldCBjdXJyZW50U3BhbiA9IHN0YXJ0U3BhbjtcbiAgICBsZXQgY3VycmVudEhlaWdodCA9IHN0YXJ0SGVpZ2h0O1xuXG4gICAgY29uc3Qgb25Qb2ludGVyTW92ZSA9IChtb3ZlRXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ2UnIHx8IGRpcmVjdGlvbiA9PT0gJ3NlJykge1xuICAgICAgICBjb25zdCBkZWx0YVggPSBtb3ZlRXZlbnQuY2xpZW50WCAtIHN0YXJ0WDtcbiAgICAgICAgY3VycmVudFNwYW4gPSBjYWxjdWxhdGVTbmFwcGVkU3BhbihkZWx0YVgsIHN0YXJ0U3BhbiwgY29sV2lkdGgsIGdhcCwgdG90YWxDb2xzKTtcbiAgICAgICAgdGhpcy5yZXNpemluZ1NwYW4uc2V0KGN1cnJlbnRTcGFuKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3MnIHx8IGRpcmVjdGlvbiA9PT0gJ3NlJykge1xuICAgICAgICBjb25zdCBkZWx0YVkgPSBtb3ZlRXZlbnQuY2xpZW50WSAtIHN0YXJ0WTtcbiAgICAgICAgY3VycmVudEhlaWdodCA9IGNhbGN1bGF0ZVNuYXBwZWRIZWlnaHQoZGVsdGFZLCBzdGFydEhlaWdodCwgMzgpO1xuICAgICAgICB0aGlzLnJlc2l6aW5nSGVpZ2h0LnNldChjdXJyZW50SGVpZ2h0KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25Qb2ludGVyVXAgPSAodXBFdmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBoYW5kbGUucmVsZWFzZVBvaW50ZXJDYXB0dXJlKHVwRXZlbnQucG9pbnRlcklkKTtcbiAgICAgIH0gY2F0Y2gge31cblxuICAgICAgaGFuZGxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJtb3ZlJywgb25Qb2ludGVyTW92ZSk7XG4gICAgICBoYW5kbGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgb25Qb2ludGVyVXApO1xuICAgICAgaGFuZGxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJjYW5jZWwnLCBvblBvaW50ZXJVcCk7XG5cbiAgICAgIGNvbnN0IGxheW91dENoYW5nZXM6IFBhcnRpYWw8Q29tcG9uZW50TGF5b3V0RGVmaW5pdGlvbj4gPSB7fTtcbiAgICAgIGlmIChkaXJlY3Rpb24gPT09ICdlJyB8fCBkaXJlY3Rpb24gPT09ICdzZScpIHtcbiAgICAgICAgbGF5b3V0Q2hhbmdlcy5jb2x1bW5TcGFuID0gY3VycmVudFNwYW47XG4gICAgICB9XG4gICAgICBjb25zdCBkZWx0YVkgPSBNYXRoLmFicyh1cEV2ZW50LmNsaWVudFkgLSBzdGFydFkpO1xuICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3MnIHx8IChkaXJlY3Rpb24gPT09ICdzZScgJiYgZGVsdGFZID4gOCkpIHtcbiAgICAgICAgbGF5b3V0Q2hhbmdlcy5oZWlnaHQgPSBgJHtjdXJyZW50SGVpZ2h0fXB4YDtcbiAgICAgICAgbGF5b3V0Q2hhbmdlcy5taW5IZWlnaHQgPSBgJHtjdXJyZW50SGVpZ2h0fXB4YDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kZXNpZ25lclN0YXRlLnVwZGF0ZUNvbXBvbmVudExheW91dChjb21wLmlkLCBsYXlvdXRDaGFuZ2VzKTtcblxuICAgICAgdGhpcy5yZXNpemluZ0NvbXBJZC5zZXQobnVsbCk7XG4gICAgICB0aGlzLnJlc2l6aW5nU3Bhbi5zZXQobnVsbCk7XG4gICAgICB0aGlzLnJlc2l6aW5nSGVpZ2h0LnNldChudWxsKTtcbiAgICB9O1xuXG4gICAgaGFuZGxlLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJtb3ZlJywgb25Qb2ludGVyTW92ZSk7XG4gICAgaGFuZGxlLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIG9uUG9pbnRlclVwKTtcbiAgICBoYW5kbGUuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmNhbmNlbCcsIG9uUG9pbnRlclVwKTtcbiAgfVxuXG4gIHJlc2V0RGltZW5zaW9ucyhjb21wOiBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uLCBldmVudD86IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgY29uc3QgZGVmYXVsdFNwYW4gPSBjb21wLnR5cGUgPT09ICdidXR0b24nID8gMiA6IDQ7XG4gICAgdGhpcy5kZXNpZ25lclN0YXRlLnVwZGF0ZUNvbXBvbmVudExheW91dChjb21wLmlkLCB7XG4gICAgICBjb2x1bW5TcGFuOiBkZWZhdWx0U3BhbixcbiAgICAgIGhlaWdodDogdW5kZWZpbmVkLFxuICAgICAgbWluSGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgICB3aWR0aDogdW5kZWZpbmVkLFxuICAgIH0pO1xuICB9XG5cbiAgb25Ecm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxSZXBvcnRDb21wb25lbnREZWZpbml0aW9uW10sIHVua25vd24sIHVua25vd24+KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNBbnlSZXNpemluZygpKSByZXR1cm47XG5cbiAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgLy8gUmVvcmRlcmluZyB3aXRoaW4gY2FudmFzXG4gICAgICB0aGlzLmRlc2lnbmVyU3RhdGUubW92ZUNvbXBvbmVudChldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEcmFnZ2VkIGZyb20gcGFsZXR0ZSBpbnRvIGNhbnZhc1xuICAgICAgY29uc3QgcmF3RGF0YSA9IGV2ZW50Lml0ZW0uZGF0YSBhcyBzdHJpbmcgfCB7IHR5cGU/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGNvbXBvbmVudFR5cGUgPSB0eXBlb2YgcmF3RGF0YSA9PT0gJ3N0cmluZycgPyByYXdEYXRhIDogcmF3RGF0YT8udHlwZTtcbiAgICAgIGlmIChjb21wb25lbnRUeXBlKSB7XG4gICAgICAgIHRoaXMuZGVzaWduZXJTdGF0ZS5hZGRDb21wb25lbnQoY29tcG9uZW50VHlwZSwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
955
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduLWNhbnZhcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9mZWF0dXJlcy9kZXNpZ25lci9jb21wb25lbnRzL2Rlc2lnbi1jYW52YXMvZGVzaWduLWNhbnZhcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBT0wsY0FBYyxHQUNmLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFJN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDN0YsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLHVCQUF1QixFQUN2QiwwQkFBMEIsRUFDMUIsb0JBQW9CLEdBQ3JCLE1BQU0sb0NBQW9DLENBQUM7OztBQTJxQzVDLE1BQU0sT0FBTyxxQkFBcUI7SUFDZixhQUFhLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFckQsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDO0lBQzNDLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFELFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDO0lBRXBELFlBQVks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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd1dULDZxZUExV1MsWUFBWSw4QkFBRSxjQUFjLHUxQ0FBRSxnQkFBZ0I7OzRGQXNxQzdDLHFCQUFxQjtrQkF6cUNqQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixDQUFDLFlBRS9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3V1QsbUJBMHpCZ0IsdUJBQXVCLENBQUMsTUFBTTs4QkE4Ry9DLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2RrRHJhZyxcbiAgQ2RrRHJhZ0Ryb3AsXG4gIENka0RyYWdIYW5kbGUsXG4gIENka0RyYWdQbGFjZWhvbGRlcixcbiAgQ2RrRHJhZ1ByZXZpZXcsXG4gIENka0Ryb3BMaXN0LFxuICBEcmFnRHJvcE1vZHVsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBEZXNpZ25lclN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Rlc2lnbmVyLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvbW9kZWxzL3JlcG9ydC1jb21wb25lbnQubW9kZWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50TGF5b3V0RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvbW9kZWxzL3JlcG9ydC1sYXlvdXQubW9kZWwnO1xuaW1wb3J0IHsgUmVwb3J0R3JpZERlZmluaXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtZ3JpZC5tb2RlbCc7XG5pbXBvcnQgeyBScHRJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vcHJpbWl0aXZlcy9jb21wb25lbnRzL2ljb24vcnB0LWljb24uY29tcG9uZW50JztcbmltcG9ydCB7XG4gIGNhbGN1bGF0ZUdyaWRDb2x1bW4sXG4gIGNhbGN1bGF0ZUdyaWRSb3csXG4gIGNhbGN1bGF0ZVNuYXBwZWRIZWlnaHQsXG4gIGNhbGN1bGF0ZVNuYXBwZWRTcGFuLFxuICBDQU5WQVNfQ0FSRF9PVkVSSEVBRCxcbiAgZ2V0Q29tcG9uZW50SWNvbk5hbWUsXG4gIHJlc29sdmVDYW52YXNDYXJkSGVpZ2h0LFxuICByZXNvbHZlQ2FudmFzQ2FyZE1pbkhlaWdodCxcbiAgcmVzb2x2ZUNvbXBvbmVudFNwYW4sXG59IGZyb20gJy4uLy4uL3V0aWxpdGllcy9jYW52YXMtbGF5b3V0LnV0aWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdycHQtZGVzaWduLWNhbnZhcycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIERyYWdEcm9wTW9kdWxlLCBScHRJY29uQ29tcG9uZW50XSxcblxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJjYW52YXMtd3JhcHBlclwiIChjbGljayk9XCJvbkNhbnZhc0JhY2tncm91bmRDbGljaygkZXZlbnQpXCI+XG4gICAgICA8IS0tIENhbnZhcyBTdGF0dXMgLyBRdWljayBDb250cm9scyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYW52YXMtdG9vbGJhclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FudmFzLWluZm9cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZm8tbGFiZWxcIj5HcmlkIExheW91dDo8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvLXZhbHVlXCI+e3sgdG90YWxDb2x1bW5zKCkgfX0gQ29sdW1uczwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZm8tZGl2aWRlclwiPuKAojwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZm8tbGFiZWxcIj5Db21wb25lbnRzOjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZm8tdmFsdWVcIj57eyBjb21wb25lbnRzKCkubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FudmFzLWFjdGlvbnNcIj5cbiAgICAgICAgICBAaWYgKCFkZWZpbml0aW9uKCkuZ3JpZCkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjYW52YXMtYWN0aW9uLWJ0biBidG4tZ3JpZC1hZGRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkUmVzdWx0R3JpZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJBZGQgYSBSZXN1bHQgR3JpZCB0byB0aGlzIHJlcG9ydFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwidGFibGVcIiBbc2l6ZV09XCIxNFwiIC8+XG4gICAgICAgICAgICAgIDxzcGFuPisgQWRkIEdyaWQ8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2FudmFzLWFjdGlvbi1idG5cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0R3JpZFNldHRpbmdzKCRldmVudClcIlxuICAgICAgICAgICAgICB0aXRsZT1cIkNvbmZpZ3VyZSBSZXN1bHQgRGF0YSBHcmlkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJ0YWJsZVwiIFtzaXplXT1cIjE0XCIgLz5cbiAgICAgICAgICAgICAgPHNwYW4+R3JpZCAoe3sgZGVmaW5pdGlvbigpLmdyaWQ/LmNvbHVtbnM/Lmxlbmd0aCA/PyAwIH19KTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJjYW52YXMtYWN0aW9uLWJ0blwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UmVwb3J0U2V0dGluZ3MoJGV2ZW50KVwiXG4gICAgICAgICAgICB0aXRsZT1cIkNvbmZpZ3VyZSBQYWdlIExheW91dCAmIEdyaWQgU2V0dGluZ3NcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwic2V0dGluZ3NcIiBbc2l6ZV09XCIxNVwiIC8+XG4gICAgICAgICAgICA8c3Bhbj5SZXBvcnQgU2V0dGluZ3M8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gQ2FudmFzIERyb3AgQXJlYSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYW52YXMtc2Nyb2xsLWFyZWFcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY2FudmFzLWFydGJvYXJkXCJcbiAgICAgICAgICBbc3R5bGUucGFkZGluZy5weF09XCJkZWZpbml0aW9uKCkubGF5b3V0LnBhZGRpbmcgPz8gMjRcIlxuICAgICAgICA+XG4gICAgICAgICAgPCEtLSBSZXBvcnQgSGVhZGVyIFByZXZpZXcgLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhbnZhcy1yZXBvcnQtaGVhZGVyXCI+XG4gICAgICAgICAgICA8aDIgY2xhc3M9XCJjYW52YXMtcmVwb3J0LXRpdGxlXCI+e3sgZGVmaW5pdGlvbigpLm5hbWUgfHwgJ1VudGl0bGVkIFJlcG9ydCcgfX08L2gyPlxuICAgICAgICAgICAgQGlmIChkZWZpbml0aW9uKCkuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjYW52YXMtcmVwb3J0LWRlc2NcIj57eyBkZWZpbml0aW9uKCkuZGVzY3JpcHRpb24gfX08L3A+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIENvbXBvbmVudCBEcm9wIExpc3QgR3JpZCB3aXRoIDJEIG1peGVkIG9yaWVudGF0aW9uIGFuZCBkYXRhIGJpbmRpbmcgLS0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICAgIGlkPVwiZGVzaWduZXItY2FudmFzLWRyb3AtbGlzdFwiXG4gICAgICAgICAgICBjbGFzcz1cImNhbnZhcy1ncmlkXCJcbiAgICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJtaXhlZFwiXG4gICAgICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cInNvcnRlZENvbXBvbmVudHMoKVwiXG4gICAgICAgICAgICBbc3R5bGUuZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zXT1cImdyaWRUZW1wbGF0ZUNvbHVtbnMoKVwiXG4gICAgICAgICAgICBbc3R5bGUuZ2FwLnB4XT1cImRlZmluaXRpb24oKS5sYXlvdXQuZ2FwID8/IDE2XCJcbiAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wKCRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBmb3IgKGNvbXAgb2Ygc29ydGVkQ29tcG9uZW50cygpOyB0cmFjayBjb21wLmlkOyBsZXQgaWR4ID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cImNvbXBcIlxuICAgICAgICAgICAgICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwiaXNBbnlSZXNpemluZygpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNhbnZhcy1jb21wb25lbnQtY2FyZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWQoY29tcC5pZClcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1yZXNpemluZ109XCJyZXNpemluZ0NvbXBJZCgpID09PSBjb21wLmlkXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbmFycm93XT1cImdldFNwYW4oY29tcCkgPD0gMlwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLWNvbXBhY3RdPVwiZ2V0U3Bhbihjb21wKSA9PT0gMVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmdyaWQtY29sdW1uXT1cImdldEdyaWRDb2x1bW4oY29tcClcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5ncmlkLXJvd109XCJnZXRHcmlkUm93KGNvbXApXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29tcC5sYXlvdXQ/LndpZHRoIHx8ICdhdXRvJ1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJnZXRDb21wb25lbnRIZWlnaHQoY29tcClcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0XT1cImdldENvbXBvbmVudE1pbkhlaWdodChjb21wKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0KGNvbXAuaWQsICRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPCEtLSBDYXJkIEhlYWRlciB3aXRoIERyYWcgSGFuZGxlICYgQWN0aW9ucyAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlLWdyb3VwXCIgY2RrRHJhZ0hhbmRsZSB0aXRsZT1cIkRyYWcgdG8gcmVvcmRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyYWctaGFuZGxlLWRvdHNcIj7ii67ii648L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxycHQtaWNvbiBbbmFtZV09XCJnZXRDb21wb25lbnRJY29uTmFtZShjb21wLnR5cGUpXCIgW3NpemVdPVwiMTRcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbXAtdGl0bGVcIiBbdGl0bGVdPVwiY29tcC5sYWJlbCB8fCBjb21wLmtleSB8fCBjb21wLnR5cGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBjb21wLmxhYmVsIHx8IGNvbXAua2V5IHx8IGNvbXAudHlwZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIFN0YXRpYyBzcGFuIHBpbGwgJiBuZXcgcm93IC8gc3RhcnQgY29sIHBpbGwgd2hlbiBub3QgaG92ZXJlZCAvIG5vdCBzZWxlY3RlZCAtLT5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChjb21wLmxheW91dD8uY29sdW1uOyBhcyBjb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5ldy1yb3ctcGlsbC1zdGF0aWNcIiB0aXRsZT1cIlN0YXJ0cyBhdCBDb2x1bW4ge3sgY29sIH19XCI+Q29sIHt7IGNvbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoY29tcC5sYXlvdXQ/Lm5ld1Jvdykge1xuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmV3LXJvdy1waWxsLXN0YXRpY1wiIHRpdGxlPVwiU3RhcnRzIG9uIHNlcGFyYXRlIHJvd1wiPuKGsyBSb3c8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNwYW4tcGlsbC1zdGF0aWNcIlxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiQ29sdW1uIHNwYW46IHt7IGdldFNwYW4oY29tcCkgfX0gb2Yge3sgdG90YWxDb2x1bW5zKCkgfX0gY29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRTcGFuKGNvbXApIH19L3t7IHRvdGFsQ29sdW1ucygpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIFF1aWNrIEFjdGlvbiBTdGVwcGVyICYgQnV0dG9ucyAocmV2ZWFsZWQgb24gaG92ZXIgb3Igc2VsZWN0aW9uKSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtcXVpY2stY29udHJvbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZC1hY3Rpb24tYnRuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5idG4tYWN0aXZlLXRvZ2dsZV09XCJjb21wLmxheW91dD8ubmV3Um93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVOZXdSb3coY29tcCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7IGNvbXAubGF5b3V0Py5uZXdSb3cgPyAnU3RhcnRzIG9uIG5ldyByb3cgKENsaWNrIHRvIHBsYWNlIGlubGluZSknIDogJ1N0YXJ0IG9uIHNlcGFyYXRlIHJvdyAoUm93IEJyZWFrKScgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwiY29ybmVyLWRvd24tcmlnaHRcIiBbc2l6ZV09XCIxMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bhbi1jb250cm9sLWdyb3VwXCIgdGl0bGU9XCJBZGp1c3QgQ29sdW1uIFNwYW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3Bhbi1idG5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2V0U3Bhbihjb21wKSA8PSAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkanVzdFNwYW4oY29tcCwgLTEsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIlNocmluayBDb2x1bW4gU3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwibWludXNcIiBbc2l6ZV09XCI5XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzcGFuLWJhZGdlXCI+e3sgZ2V0U3Bhbihjb21wKSA8PSAyID8gZ2V0U3Bhbihjb21wKSA6IChnZXRTcGFuKGNvbXApICsgJy8nICsgdG90YWxDb2x1bW5zKCkpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzcGFuLWJ0blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnZXRTcGFuKGNvbXApID49IHRvdGFsQ29sdW1ucygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkanVzdFNwYW4oY29tcCwgMSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiRXhwYW5kIENvbHVtbiBTcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJwbHVzXCIgW3NpemVdPVwiOVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkLWFjdGlvbi1idG5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRHVwbGljYXRlKGNvbXAuaWQsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJEdXBsaWNhdGUgY29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cnB0LWljb24gbmFtZT1cImNvcHlcIiBbc2l6ZV09XCIxMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQtYWN0aW9uLWJ0biBidG4tZGVsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZShjb21wLmlkLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiUmVtb3ZlIGNvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJ0cmFzaFwiIFtzaXplXT1cIjEyXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwhLS0gQ2FyZCBCb2R5IFZpc3VhbCBQcmV2aWV3IC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cblxuICAgICAgICAgICAgICAgICAgQHN3aXRjaCAoY29tcC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlICgnaW5wdXQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vY2staW5wdXQtZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibW9jay1sYWJlbFwiPnt7IGNvbXAubGFiZWwgfHwgJ0lucHV0JyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2NrLWlucHV0LWJveFwiPnt7IGNvbXAucHJvcGVydGllcz8uWydwbGFjZWhvbGRlciddIHx8ICdFbnRlciB0ZXh0Li4uJyB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlICgnZHJvcGRvd24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vY2staW5wdXQtZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibW9jay1sYWJlbFwiPnt7IGNvbXAubGFiZWwgfHwgJ0Ryb3Bkb3duJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2NrLXNlbGVjdC1ib3hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgY29tcC5wcm9wZXJ0aWVzPy5bJ3BsYWNlaG9sZGVyJ10gfHwgJy0tIFNlbGVjdCAtLScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwiY2hldnJvbi1kb3duXCIgW3NpemVdPVwiMTJcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdkYXRlJykge1xuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2NrLWlucHV0LWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1vY2stbGFiZWxcIj57eyBjb21wLmxhYmVsIHx8ICdEYXRlJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2NrLXNlbGVjdC1ib3hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WVlZWS1NTS1ERDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJjYWxlbmRhclwiIFtzaXplXT1cIjEyXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlICgnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2NrLWlucHV0LWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1vY2stbGFiZWxcIj57eyBjb21wLmxhYmVsIHx8ICdOdW1iZXInIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vY2staW5wdXQtYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbXAucHJvcGVydGllcz8uWydwcmVmaXgnXSB8fCAnJyB9fSAwLjAwIHt7IGNvbXAucHJvcGVydGllcz8uWydzdWZmaXgnXSB8fCAnJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdjaGVja2JveCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9jay1jaGVja2JveC1maWVsZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtb2NrLWNoZWNrLWJveFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cnB0LWljb24gbmFtZT1cImNoZWNrXCIgW3NpemVdPVwiMTBcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtb2NrLWxhYmVsXCI+e3sgY29tcC5sYWJlbCB8fCAnQ2hlY2tib3gnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlICgnYnV0dG9uJykge1xuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2NrLWJ0bi13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1vY2stYnRuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIididG4tJyArIChjb21wLnByb3BlcnRpZXM/LlsndmFyaWFudCddIHx8ICdwcmltYXJ5JylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MubW9jay1idG4tZnVsbF09XCJjb21wLnByb3BlcnRpZXM/LlsnZnVsbFdpZHRoJ10gPT09IHRydWUgfHwgY29tcC5sYXlvdXQ/LndpZHRoID09PSAnMTAwJSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImdldEN1c3RvbUJ0bkhlaWdodChjb21wKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJnZXRDdXN0b21CdG5XaWR0aChjb21wKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZ2V0Q3VzdG9tQnRuSWNvbihjb21wKTsgYXMgYnRuSWNvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycHQtaWNvbiBbbmFtZV09XCJidG5JY29uXCIgW3NpemVdPVwiMTVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNvbXAubGFiZWwgfHwgJ0J1dHRvbicgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2twaS1jYXJkJykge1xuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2NrLWtwaS1maWVsZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vY2sta3BpLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1vY2stbGFiZWxcIj57eyBjb21wLmxhYmVsIHx8ICdLUEkgTWV0cmljJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJrcGlcIiBbc2l6ZV09XCIxNFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2NrLWtwaS12YWx1ZVwiPnt7IGNvbXAucHJvcGVydGllcz8uWyd2YWx1ZSddIHx8ICckMTI4LDQ1MCcgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2NrLWtwaS1mb290ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtb2NrLWtwaS10cmVuZFwiPisxMi41JTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtb2NrLWtwaS1zdWJcIj52cyBsYXN0IHBlcmlvZDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlICgnY2hhcnQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vY2stY2hhcnQtZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2NrLWNoYXJ0LWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1vY2stbGFiZWxcIj57eyBjb21wLmxhYmVsIHx8ICdDaGFydCBWaXN1YWxpemF0aW9uJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vY2stY2hhcnQtYmFyc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9jay1jaGFydC1iYXJcIiBzdHlsZT1cImhlaWdodDogNTUlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2NrLWNoYXJ0LWJhclwiIHN0eWxlPVwiaGVpZ2h0OiA4MCVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vY2stY2hhcnQtYmFyXCIgc3R5bGU9XCJoZWlnaHQ6IDQ1JVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9jay1jaGFydC1iYXJcIiBzdHlsZT1cImhlaWdodDogOTUlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2NrLWNoYXJ0LWJhclwiIHN0eWxlPVwiaGVpZ2h0OiA3MCVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9jay1nZW5lcmljLWJveFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgY29tcC50eXBlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIFJlc2l6aW5nIEhhbmRsZXMgKEVhc3QsIFNvdXRoLCBTb3V0aC1FYXN0KSAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInJlc2l6ZS1oYW5kbGUgaGFuZGxlLWVcIlxuICAgICAgICAgICAgICAgICAgKHBvaW50ZXJkb3duKT1cInN0YXJ0UmVzaXplKCRldmVudCwgY29tcCwgJ2UnKVwiXG4gICAgICAgICAgICAgICAgICAoZGJsY2xpY2spPVwicmVzZXREaW1lbnNpb25zKGNvbXAsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgdGl0bGU9XCJEcmFnIHRvIHJlc2l6ZSBjb2x1bW4gd2lkdGgg4oCiIERvdWJsZS1jbGljayB0byByZXNldFwiXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVzaXplLWhhbmRsZSBoYW5kbGUtc1wiXG4gICAgICAgICAgICAgICAgICAocG9pbnRlcmRvd24pPVwic3RhcnRSZXNpemUoJGV2ZW50LCBjb21wLCAncycpXCJcbiAgICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJyZXNldERpbWVuc2lvbnMoY29tcCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICB0aXRsZT1cIkRyYWcgdG8gcmVzaXplIGhlaWdodCDigKIgRG91YmxlLWNsaWNrIHRvIHJlc2V0XCJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZXNpemUtaGFuZGxlIGhhbmRsZS1zZVwiXG4gICAgICAgICAgICAgICAgICAocG9pbnRlcmRvd24pPVwic3RhcnRSZXNpemUoJGV2ZW50LCBjb21wLCAnc2UnKVwiXG4gICAgICAgICAgICAgICAgICAoZGJsY2xpY2spPVwicmVzZXREaW1lbnNpb25zKGNvbXAsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgdGl0bGU9XCJEcmFnIHRvIHJlc2l6ZSB3aWR0aCBhbmQgaGVpZ2h0IOKAoiBEb3VibGUtY2xpY2sgdG8gcmVzZXRcIlxuICAgICAgICAgICAgICAgID48L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwhLS0gUmVzaXppbmcgRGltZW5zaW9uIEdob3N0IC8gQmFkZ2UgLS0+XG4gICAgICAgICAgICAgICAgQGlmIChyZXNpemluZ0NvbXBJZCgpID09PSBjb21wLmlkKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzaXplLWRpbWVuc2lvbi10b29sdGlwXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHJlc2l6aW5nVG9vbHRpcChjb21wKSB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLSBEcmFnIHBsYWNlaG9sZGVyIHdpdGggbWF0Y2hlZCBncmlkIGNvbHVtbiBzcGFuIC0tPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICpjZGtEcmFnUGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FudmFzLWRyYWctcGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmdyaWQtY29sdW1uXT1cImdldEdyaWRDb2x1bW4oY29tcClcIlxuICAgICAgICAgICAgICAgID48L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwhLS0gRHJhZyBwcmV2aWV3IC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgKmNka0RyYWdQcmV2aWV3IGNsYXNzPVwiY2FudmFzLWRyYWctcHJldmlld1wiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcmFnLWhhbmRsZS1kb3RzXCI+4ouu4ouuPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHJwdC1pY29uIFtuYW1lXT1cImdldENvbXBvbmVudEljb25OYW1lKGNvbXAudHlwZSlcIiBbc2l6ZV09XCIxNFwiIC8+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByZXZpZXctdGl0bGVcIj57eyBjb21wLmxhYmVsIHx8IGNvbXAua2V5IHx8IGNvbXAudHlwZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJldmlldy1zcGFuXCI+e3sgZ2V0U3Bhbihjb21wKSB9fS97eyB0b3RhbENvbHVtbnMoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZiAoY29tcG9uZW50cygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FudmFzLWVtcHR5LXN0YXRlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LWljb25cIj48cnB0LWljb24gbmFtZT1cImRlc2lnblwiIFtzaXplXT1cIjQwXCIgLz48L2Rpdj5cbiAgICAgICAgICAgICAgICA8aDM+VmlzdWFsIENhbnZhcyBpcyBFbXB0eTwvaDM+XG4gICAgICAgICAgICAgICAgPHA+RHJhZyBjb21wb25lbnRzIGZyb20gdGhlIHBhbGV0dGUgb24gdGhlIGxlZnQgb3IgZG91YmxlLWNsaWNrIHRvIGFkZCB0aGVtIHRvIHRoaXMgcmVwb3J0LjwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIFJlc3VsdCBHcmlkIFByZXZpZXcgUGxhY2Vob2xkZXIgb3IgRW1wdHkgQWRkIEdyaWQgQmFubmVyIC0tPlxuICAgICAgICAgIEBpZiAoZGVmaW5pdGlvbigpLmdyaWQpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYW52YXMtZ3JpZC1wcmV2aWV3LWJveFwiIChjbGljayk9XCJzZWxlY3RHcmlkU2V0dGluZ3MoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZC1wcmV2aWV3LWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDtcIj5cbiAgICAgICAgICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwidGFibGVcIiBbc2l6ZV09XCIxNVwiIC8+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5SZXN1bHQgR3JpZCBQcmV2aWV3ICh7eyBkZWZpbml0aW9uKCkuZ3JpZD8uY29sdW1ucz8ubGVuZ3RoID8/IDAgfX0gY29sdW1ucyk8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogMTBweDtcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ3JpZC1jbGljay1oaW50XCI+Q2xpY2sgdG8gZWRpdCBjb2x1bW5zPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tcmVtb3ZlLWdyaWRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlR3JpZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJSZW1vdmUgUmVzdWx0IEdyaWQgZnJvbSB0aGlzIHJlcG9ydFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwidHJhc2hcIiBbc2l6ZV09XCIxM1wiIC8+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLXByZXZpZXctY29sdW1uc1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiBkZWZpbml0aW9uKCkuZ3JpZD8uY29sdW1uczsgdHJhY2sgY29sLmZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZC1jb2wtcGlsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbC1waWxsLW5hbWVcIj57eyBjb2wubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29sLXBpbGwtdHlwZVwiPnt7IGNvbC5kYXRhVHlwZSB8fCAnc3RyaW5nJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYW52YXMtYWRkLWdyaWQtYmFubmVyXCIgKGNsaWNrKT1cImFkZFJlc3VsdEdyaWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkLWdyaWQtaWNvblwiPlxuICAgICAgICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwidGFibGVcIiBbc2l6ZV09XCIyMFwiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkLWdyaWQtdGV4dFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWRkLWdyaWQtdGl0bGVcIj4rIEFkZCBSZXN1bHQgRGF0YSBHcmlkPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWRkLWdyaWQtc3ViXCI+QXR0YWNoIGFuIGludGVyYWN0aXZlIGRhdGEgdGFibGUgb3IgVWx0cmFHcmlkIHRvIGRpc3BsYXkgcmVwb3J0IGV4ZWN1dGlvbiBvdXRwdXQ8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1iYW5uZXItYWRkXCI+QWRkIEdyaWQ8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbYFxuICAgIDpob3N0IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjVmOTtcbiAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1ycHQtZm9udC1mYW1pbHksIGluaGVyaXQpO1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB9XG4gICAgLmNhbnZhcy13cmFwcGVyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cbiAgICAuY2FudmFzLXRvb2xiYXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICBtaW4taGVpZ2h0OiA0NnB4O1xuICAgICAgcGFkZGluZzogNnB4IDIwcHg7XG4gICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXJwdC1jb2xvci1ib3JkZXIsICNjYmQ1ZTEpO1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB9XG4gICAgLmNhbnZhcy1pbmZvIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZ2FwOiA4cHg7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQtbXV0ZWQsICM2NDc0OGIpO1xuICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgfVxuICAgIC5pbmZvLWxhYmVsIHtcbiAgICAgIGNvbG9yOiAjNjQ3NDhiO1xuICAgIH1cbiAgICAuaW5mby12YWx1ZSB7XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LCAjMGYxNzJhKTtcbiAgICB9XG4gICAgLmluZm8tZGl2aWRlciB7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2NiZDVlMSk7XG4gICAgICBtYXJnaW46IDAgMnB4O1xuICAgIH1cbiAgICAuY2FudmFzLWFjdGlvbi1idG4ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZ2FwOiA4cHg7XG4gICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICBwYWRkaW5nOiAwIDE0cHg7XG4gICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2NiZDVlMSk7XG4gICAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICBjb2xvcjogIzFlMjkzYjtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDQpO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXJwdC10cmFuc2l0aW9uLXNwZWVkLCAxNTBtcykgZWFzZTtcbiAgICB9XG4gICAgLmNhbnZhcy1hY3Rpb24tYnRuIHJwdC1pY29uIHtcbiAgICAgIGNvbG9yOiAjNjQ3NDhiO1xuICAgICAgdHJhbnNpdGlvbjogY29sb3IgMTUwbXMgZWFzZTtcbiAgICB9XG4gICAgLmNhbnZhcy1hY3Rpb24tYnRuOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1jb2xvci1zdXJmYWNlLCAjZjhmYWZjKTtcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDM3LCA5OSwgMjM1LCAwLjA4KTtcbiAgICB9XG4gICAgLmNhbnZhcy1hY3Rpb24tYnRuOmhvdmVyIHJwdC1pY29uIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgfVxuICAgIC5jYW52YXMtYWN0aW9uLWJ0bjphY3RpdmUge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDFweCk7XG4gICAgfVxuICAgIC5jYW52YXMtc2Nyb2xsLWFyZWEge1xuICAgICAgZmxleDogMTtcbiAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICBwYWRkaW5nOiAxNnB4O1xuICAgIH1cbiAgICAuY2FudmFzLWFydGJvYXJkIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgbWF4LXdpZHRoOiAxNDAwcHg7XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ycHQtY29sb3ItYm9yZGVyLCAjY2JkNWUxKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJwdC1ib3JkZXItcmFkaXVzLWxnLCA4cHgpO1xuICAgICAgYm94LXNoYWRvdzogMCA0cHggNnB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgICAgIG1pbi1oZWlnaHQ6IDQ4MHB4O1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB9XG4gICAgLmNhbnZhcy1yZXBvcnQtaGVhZGVyIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogMTZweDtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ycHQtY29sb3ItYm9yZGVyLCAjZTJlOGYwKTtcbiAgICB9XG4gICAgLmNhbnZhcy1yZXBvcnQtdGl0bGUge1xuICAgICAgZm9udC1zaXplOiB2YXIoLS1ycHQtZm9udC1zaXplLXhsLCAxLjVyZW0pO1xuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dCwgIzBmMTcyYSk7XG4gICAgICBtYXJnaW46IDAgMCA2cHggMDtcbiAgICB9XG4gICAgLmNhbnZhcy1yZXBvcnQtZGVzYyB7XG4gICAgICBmb250LXNpemU6IHZhcigtLXJwdC1mb250LXNpemUtYmFzZSwgMC44NzVyZW0pO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LW11dGVkLCAjNjQ3NDhiKTtcbiAgICAgIG1hcmdpbjogMDtcbiAgICB9XG4gICAgLmNhbnZhcy1ncmlkIHtcbiAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1pbi1oZWlnaHQ6IDE4MHB4O1xuICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXJwdC10cmFuc2l0aW9uLXNwZWVkLCAxNTBtcykgZWFzZTtcbiAgICB9XG4gICAgLmNhbnZhcy1jb21wb25lbnQtY2FyZCB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgYm9yZGVyOiAxLjVweCBzb2xpZCB2YXIoLS1ycHQtY29sb3ItYm9yZGVyLCAjY2JkNWUxKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJwdC1ib3JkZXItcmFkaXVzLCA2cHgpO1xuICAgICAgYm94LXNoYWRvdzogdmFyKC0tcnB0LWJveC1zaGFkb3csIDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDUpKTtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tcnB0LXRyYW5zaXRpb24tc3BlZWQsIDE1MG1zKSBlYXNlO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgbWluLWhlaWdodDogOTZweDtcbiAgICB9XG4gICAgLmNhbnZhcy1jb21wb25lbnQtY2FyZDpob3ZlciB7XG4gICAgICBib3JkZXItY29sb3I6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDZweCAtMXB4IHJnYmEoMzcsIDk5LCAyMzUsIDAuMSk7XG4gICAgfVxuICAgIC5jYW52YXMtY29tcG9uZW50LWNhcmQuaXMtc2VsZWN0ZWQge1xuICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiYSgzNywgOTksIDIzNSwgMC4yNSk7XG4gICAgfVxuICAgIC5jYW52YXMtY29tcG9uZW50LWNhcmQuaXMtcmVzaXppbmcge1xuICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICBib3JkZXItY29sb3I6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKDM3LCA5OSwgMjM1LCAwLjM1KTtcbiAgICAgIHotaW5kZXg6IDMwO1xuICAgICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAucmVzaXplLWhhbmRsZSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB6LWluZGV4OiA0MDtcbiAgICAgIHRvdWNoLWFjdGlvbjogbm9uZTtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDE1MG1zIGVhc2U7XG4gICAgfVxuICAgIC5jYW52YXMtY29tcG9uZW50LWNhcmQuaXMtc2VsZWN0ZWQgLnJlc2l6ZS1oYW5kbGUsXG4gICAgLmNhbnZhcy1jb21wb25lbnQtY2FyZDpob3ZlciAucmVzaXplLWhhbmRsZSB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgICAucmVzaXplLWhhbmRsZS5oYW5kbGUtZSB7XG4gICAgICB0b3A6IDA7XG4gICAgICByaWdodDogMDtcbiAgICAgIHdpZHRoOiA2cHg7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBjdXJzb3I6IGV3LXJlc2l6ZTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuICAgIC5yZXNpemUtaGFuZGxlLmhhbmRsZS1lOjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIHdpZHRoOiAzcHg7XG4gICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICBiYWNrZ3JvdW5kOiAjY2JkNWUxO1xuICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAxNTBtcyBlYXNlO1xuICAgIH1cbiAgICAucmVzaXplLWhhbmRsZS5oYW5kbGUtZTpob3Zlcjo6YWZ0ZXIsXG4gICAgLmNhbnZhcy1jb21wb25lbnQtY2FyZC5pcy1zZWxlY3RlZCAucmVzaXplLWhhbmRsZS5oYW5kbGUtZTo6YWZ0ZXIge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgIH1cbiAgICAucmVzaXplLWhhbmRsZS5oYW5kbGUtcyB7XG4gICAgICBib3R0b206IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgaGVpZ2h0OiA2cHg7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGN1cnNvcjogbnMtcmVzaXplO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG4gICAgLnJlc2l6ZS1oYW5kbGUuaGFuZGxlLXM6OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgaGVpZ2h0OiAzcHg7XG4gICAgICB3aWR0aDogMjRweDtcbiAgICAgIGJhY2tncm91bmQ6ICNjYmQ1ZTE7XG4gICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDE1MG1zIGVhc2U7XG4gICAgfVxuICAgIC5yZXNpemUtaGFuZGxlLmhhbmRsZS1zOmhvdmVyOjphZnRlcixcbiAgICAuY2FudmFzLWNvbXBvbmVudC1jYXJkLmlzLXNlbGVjdGVkIC5yZXNpemUtaGFuZGxlLmhhbmRsZS1zOjphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgfVxuICAgIC5yZXNpemUtaGFuZGxlLmhhbmRsZS1zZSB7XG4gICAgICBib3R0b206IDA7XG4gICAgICByaWdodDogMDtcbiAgICAgIHdpZHRoOiAxMnB4O1xuICAgICAgaGVpZ2h0OiAxMnB4O1xuICAgICAgY3Vyc29yOiBud3NlLXJlc2l6ZTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgcGFkZGluZzogMnB4O1xuICAgIH1cbiAgICAucmVzaXplLWhhbmRsZS5oYW5kbGUtc2U6OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgd2lkdGg6IDVweDtcbiAgICAgIGhlaWdodDogNXB4O1xuICAgICAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgI2NiZDVlMTtcbiAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjY2JkNWUxO1xuICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDE1MG1zIGVhc2U7XG4gICAgfVxuICAgIC5yZXNpemUtaGFuZGxlLmhhbmRsZS1zZTpob3Zlcjo6YWZ0ZXIsXG4gICAgLmNhbnZhcy1jb21wb25lbnQtY2FyZC5pcy1zZWxlY3RlZCAucmVzaXplLWhhbmRsZS5oYW5kbGUtc2U6OmFmdGVyIHtcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgIH1cbiAgICAucmVzaXplLWRpbWVuc2lvbi10b29sdGlwIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMzhweDtcbiAgICAgIHJpZ2h0OiA4cHg7XG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDE1LCAyMywgNDIsIDAuOSk7XG4gICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgIGZvbnQtc2l6ZTogMC43cmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIHBhZGRpbmc6IDNweCA4cHg7XG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB6LWluZGV4OiA1MDtcbiAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMik7XG4gICAgfVxuICAgIC5jYXJkLWhlYWRlciB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGdhcDogNnB4O1xuICAgICAgcGFkZGluZzogNXB4IDhweDtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1jb2xvci1zdXJmYWNlLCAjZjhmYWZjKTtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ycHQtY29sb3ItYm9yZGVyLCAjZTJlOGYwKTtcbiAgICAgIG1pbi1oZWlnaHQ6IDMycHg7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG4gICAgLmNhcmQtdGl0bGUtZ3JvdXAge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6IDVweDtcbiAgICAgIGN1cnNvcjogZ3JhYjtcbiAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIGZsZXg6IDE7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cbiAgICAuZHJhZy1oYW5kbGUtZG90cyB7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQtbXV0ZWQsICM5NGEzYjgpO1xuICAgICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IC0ycHg7XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIH1cbiAgICAuY29tcC10aXRsZSB7XG4gICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LCAjMGYxNzJhKTtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICB9XG4gICAgLmNhcmQtYWN0aW9ucyB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogNHB4O1xuICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICB9XG4gICAgLm5ldy1yb3ctcGlsbC1zdGF0aWMge1xuICAgICAgZm9udC1zaXplOiAwLjY1cmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGNvbG9yOiAjN2MzYWVkO1xuICAgICAgYmFja2dyb3VuZDogI2Y1ZjNmZjtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ2ZmU7XG4gICAgICBwYWRkaW5nOiAxcHggNXB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogOTk5OXB4O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxuICAgIC5zcGFuLXBpbGwtc3RhdGljIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgZm9udC1zaXplOiAwLjY1cmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dC1tdXRlZCwgIzY0NzQ4Yik7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtY29sb3Itc3VyZmFjZSwgI2YxZjVmOSk7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ycHQtY29sb3ItYm9yZGVyLCAjZTJlOGYwKTtcbiAgICAgIHBhZGRpbmc6IDFweCA2cHg7XG4gICAgICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XG4gICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIH1cbiAgICAuY2FyZC1xdWljay1jb250cm9scyB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogM3B4O1xuICAgIH1cbiAgICAuY2FudmFzLWNvbXBvbmVudC1jYXJkOmhvdmVyIC5zcGFuLXBpbGwtc3RhdGljLFxuICAgIC5jYW52YXMtY29tcG9uZW50LWNhcmQuaXMtc2VsZWN0ZWQgLnNwYW4tcGlsbC1zdGF0aWMsXG4gICAgLmNhbnZhcy1jb21wb25lbnQtY2FyZDpob3ZlciAubmV3LXJvdy1waWxsLXN0YXRpYyxcbiAgICAuY2FudmFzLWNvbXBvbmVudC1jYXJkLmlzLXNlbGVjdGVkIC5uZXctcm93LXBpbGwtc3RhdGljIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgIC5jYW52YXMtY29tcG9uZW50LWNhcmQ6aG92ZXIgLmNhcmQtcXVpY2stY29udHJvbHMsXG4gICAgLmNhbnZhcy1jb21wb25lbnQtY2FyZC5pcy1zZWxlY3RlZCAuY2FyZC1xdWljay1jb250cm9scyB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICB9XG4gICAgLmNhbnZhcy1jb21wb25lbnQtY2FyZC5pcy1uYXJyb3cgLmNhcmQtaGVhZGVyIHtcbiAgICAgIHBhZGRpbmc6IDRweCA2cHg7XG4gICAgICBnYXA6IDNweDtcbiAgICB9XG4gICAgLmNhbnZhcy1jb21wb25lbnQtY2FyZC5pcy1uYXJyb3c6aG92ZXIgLmNvbXAtdGl0bGUsXG4gICAgLmNhbnZhcy1jb21wb25lbnQtY2FyZC5pcy1uYXJyb3cuaXMtc2VsZWN0ZWQgLmNvbXAtdGl0bGUsXG4gICAgLmNhbnZhcy1jb21wb25lbnQtY2FyZC5pcy1uYXJyb3c6aG92ZXIgLmRyYWctaGFuZGxlLWRvdHMsXG4gICAgLmNhbnZhcy1jb21wb25lbnQtY2FyZC5pcy1uYXJyb3cuaXMtc2VsZWN0ZWQgLmRyYWctaGFuZGxlLWRvdHMge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gICAgLmNhbnZhcy1jb21wb25lbnQtY2FyZC5pcy1uYXJyb3cgLmNhcmQtcXVpY2stY29udHJvbHMge1xuICAgICAgZ2FwOiAycHg7XG4gICAgfVxuICAgIC5jYW52YXMtY29tcG9uZW50LWNhcmQuaXMtbmFycm93IC5zcGFuLWNvbnRyb2wtZ3JvdXAge1xuICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgIH1cbiAgICAuY2FudmFzLWNvbXBvbmVudC1jYXJkLmlzLW5hcnJvdyAuc3Bhbi1idG4ge1xuICAgICAgd2lkdGg6IDE0cHg7XG4gICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgfVxuICAgIC5jYW52YXMtY29tcG9uZW50LWNhcmQuaXMtbmFycm93IC5zcGFuLWJhZGdlIHtcbiAgICAgIGZvbnQtc2l6ZTogMC42cmVtO1xuICAgICAgcGFkZGluZzogMCAycHg7XG4gICAgfVxuICAgIC5jYW52YXMtY29tcG9uZW50LWNhcmQuaXMtbmFycm93IC5jYXJkLWFjdGlvbi1idG4ge1xuICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgfVxuICAgIC5jYW52YXMtY29tcG9uZW50LWNhcmQuaXMtY29tcGFjdDpob3ZlciAuY2FyZC1hY3Rpb24tYnRuOm5vdCguYnRuLWRlbGV0ZSksXG4gICAgLmNhbnZhcy1jb21wb25lbnQtY2FyZC5pcy1jb21wYWN0LmlzLXNlbGVjdGVkIC5jYXJkLWFjdGlvbi1idG46bm90KC5idG4tZGVsZXRlKSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgICAuc3Bhbi1jb250cm9sLWdyb3VwIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ycHQtY29sb3ItYm9yZGVyLCAjY2JkNWUxKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgIGhlaWdodDogMjBweDtcbiAgICAgIHBhZGRpbmc6IDAgMXB4O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cbiAgICAuc3Bhbi1idG4ge1xuICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dC1tdXRlZCwgIzY0NzQ4Yik7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMTIwbXMgZWFzZTtcbiAgICB9XG4gICAgLnNwYW4tYnRuOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1jb2xvci1zdXJmYWNlLWhvdmVyLCAjZjFmNWY5KTtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgfVxuICAgIC5zcGFuLWJ0bjpkaXNhYmxlZCB7XG4gICAgICBvcGFjaXR5OiAwLjM7XG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIH1cbiAgICAuc3Bhbi1iYWRnZSB7XG4gICAgICBmb250LXNpemU6IDAuNjVyZW07XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LCAjMGYxNzJhKTtcbiAgICAgIHBhZGRpbmc6IDAgM3B4O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgfVxuICAgIC5jYXJkLWFjdGlvbi1idG4ge1xuICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dC1tdXRlZCwgIzY0NzQ4Yik7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMTIwbXMgZWFzZTtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cbiAgICAuY2FyZC1hY3Rpb24tYnRuOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICNlMmU4ZjA7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQsICMwZjE3MmEpO1xuICAgIH1cbiAgICAuY2FyZC1hY3Rpb24tYnRuLmJ0bi1hY3RpdmUtdG9nZ2xlIHtcbiAgICAgIGJhY2tncm91bmQ6ICM3YzNhZWQ7XG4gICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgIGJvcmRlci1jb2xvcjogIzdjM2FlZDtcbiAgICB9XG4gICAgLmNhcmQtYWN0aW9uLWJ0bi5idG4tYWN0aXZlLXRvZ2dsZTpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAjNmQyOGQ5O1xuICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgfVxuICAgIC5idG4tZGVsZXRlOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICNmZWUyZTI7XG4gICAgICBjb2xvcjogI2VmNDQ0NDtcbiAgICB9XG4gICAgLmNhcmQtYm9keSB7XG4gICAgICBwYWRkaW5nOiA4cHggMTJweCA4cHggMTBweDtcbiAgICAgIGZsZXg6IDE7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG4gICAgLm1vY2staW5wdXQtZmllbGQge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBnYXA6IDRweDtcbiAgICAgIGZsZXg6IDE7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBtaW4taGVpZ2h0OiAwO1xuICAgIH1cbiAgICAubW9jay1sYWJlbCB7XG4gICAgICBmb250LXNpemU6IDAuN3JlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQtbXV0ZWQsICM0NzU1NjkpO1xuICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxuICAgIC5tb2NrLWlucHV0LWJveCwgLm1vY2stc2VsZWN0LWJveCB7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ycHQtY29sb3ItYm9yZGVyLCAjY2JkNWUxKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICAgIHBhZGRpbmc6IDZweCAxMnB4O1xuICAgICAgZm9udC1zaXplOiB2YXIoLS1ycHQtZm9udC1zaXplLWJhc2UsIDAuODc1cmVtKTtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dC1tdXRlZCwgIzk0YTNiOCk7XG4gICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgZmxleDogMTtcbiAgICAgIG1pbi1oZWlnaHQ6IDM4cHg7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgfVxuICAgIC5tb2NrLWNoZWNrYm94LWZpZWxkIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZ2FwOiA2cHg7XG4gICAgICBmbGV4OiAxO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgIHBhZGRpbmctdG9wOiAxNHB4O1xuICAgIH1cbiAgICAubW9jay1jaGVjay1ib3gge1xuICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ycHQtY29sb3ItYm9yZGVyLCAjY2JkNWUxKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBmb250LXNpemU6IDAuNjVyZW07XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxuICAgIC5tb2NrLWJ0bi13cmFwcGVyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4OiAxO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgbWluLWhlaWdodDogMzhweDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgfVxuICAgIC5tb2NrLWJ0biB7XG4gICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ycHQtYm9yZGVyLXJhZGl1cywgNnB4KTtcbiAgICAgIHBhZGRpbmc6IDAgMTZweDtcbiAgICAgIGhlaWdodDogMzZweDtcbiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tcnB0LWZvbnQtc2l6ZS1iYXNlLCAwLjg3NXJlbSk7XG4gICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgZ2FwOiA2cHg7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIHRyYW5zaXRpb246IGFsbCAxNTBtcyBlYXNlO1xuICAgIH1cbiAgICAubW9jay1idG4ubW9jay1idG4tZnVsbCB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gICAgLmNhbnZhcy1jb21wb25lbnQtY2FyZC5pcy1uYXJyb3cgLm1vY2stYnRuIHtcbiAgICAgIHBhZGRpbmc6IDAgNnB4O1xuICAgICAgZm9udC1zaXplOiAwLjc3NXJlbTtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAzNHB4O1xuICAgIH1cbiAgICAubW9jay1rcGktZmllbGQge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICBmbGV4OiAxO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgbWluLWhlaWdodDogMDtcbiAgICB9XG4gICAgLm1vY2sta3BpLWhlYWRlciB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICB9XG4gICAgLm1vY2sta3BpLXZhbHVlIHtcbiAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQsICMwZjE3MmEpO1xuICAgICAgbWFyZ2luOiAycHggMDtcbiAgICB9XG4gICAgLm1vY2sta3BpLWZvb3RlciB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogNnB4O1xuICAgICAgZm9udC1zaXplOiAwLjY1cmVtO1xuICAgIH1cbiAgICAubW9jay1rcGktdHJlbmQge1xuICAgICAgY29sb3I6ICMxNmEzNGE7XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgIH1cbiAgICAubW9jay1rcGktc3ViIHtcbiAgICAgIGNvbG9yOiAjNjQ3NDhiO1xuICAgIH1cbiAgICAubW9jay1jaGFydC1maWVsZCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIGZsZXg6IDE7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBtaW4taGVpZ2h0OiAwO1xuICAgIH1cbiAgICAubW9jay1jaGFydC1iYXJzIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbiAgICAgIGdhcDogOHB4O1xuICAgICAgZmxleDogMTtcbiAgICAgIG1pbi1oZWlnaHQ6IDM2cHg7XG4gICAgICBwYWRkaW5nLXRvcDogNnB4O1xuICAgIH1cbiAgICAubW9jay1jaGFydC1iYXIge1xuICAgICAgd2lkdGg6IDE2JTtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDNweCAzcHggMCAwO1xuICAgICAgb3BhY2l0eTogMC44NTtcbiAgICAgIG1pbi1oZWlnaHQ6IDEwcHg7XG4gICAgfVxuICAgIC5idG4tcHJpbWFyeSB7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICB9XG4gICAgLmJ0bi1zZWNvbmRhcnkge1xuICAgICAgYmFja2dyb3VuZDogI2YxZjVmOTtcbiAgICAgIGNvbG9yOiAjMGYxNzJhO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2NiZDVlMTtcbiAgICB9XG4gICAgLmJ0bi1vdXRsaW5lIHtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgY29sb3I6ICMyNTYzZWI7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjMjU2M2ViO1xuICAgIH1cbiAgICAuYnRuLWRhbmdlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZWY0NDQ0O1xuICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgfVxuICAgIC5tb2NrLWdlbmVyaWMtYm94IHtcbiAgICAgIGJvcmRlcjogMXB4IGRhc2hlZCAjY2JkNWUxO1xuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgcGFkZGluZzogOHB4O1xuICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgY29sb3I6ICM2NDc0OGI7XG4gICAgfVxuICAgIC5jYW52YXMtZHJhZy1wbGFjZWhvbGRlciB7XG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDM3LCA5OSwgMjM1LCAwLjA2KTtcbiAgICAgIGJvcmRlcjogMnB4IGRhc2hlZCB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgICBtaW4taGVpZ2h0OiA4MHB4O1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAxNTBtcyBlYXNlO1xuICAgIH1cbiAgICAuY2FudmFzLWRyYWctcHJldmlldyxcbiAgICA6Om5nLWRlZXAgLmNhbnZhcy1kcmFnLXByZXZpZXcge1xuICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICAgIHBhZGRpbmc6IDhweCAxNHB4O1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZ2FwOiA4cHg7XG4gICAgICBmb250LWZhbWlseTogdmFyKC0tcnB0LWZvbnQtZmFtaWx5LCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmKSAhaW1wb3J0YW50O1xuICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LCAjMGYxNzJhKTtcbiAgICAgIGJveC1zaGFkb3c6IDAgMTJweCAyNHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgICAgIHotaW5kZXg6IDEwMDAwO1xuICAgIH1cbiAgICAucHJldmlldy10aXRsZSxcbiAgICA6Om5nLWRlZXAgLnByZXZpZXctdGl0bGUge1xuICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgICAgIG1heC13aWR0aDogMTYwcHg7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIH1cbiAgICAucHJldmlldy1zcGFuLFxuICAgIDo6bmctZGVlcCAucHJldmlldy1zcGFuIHtcbiAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0ICFpbXBvcnRhbnQ7XG4gICAgICBmb250LXNpemU6IDAuNjVyZW07XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgIGJhY2tncm91bmQ6ICNlZmY2ZmY7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjYmZkYmZlO1xuICAgICAgcGFkZGluZzogMXB4IDZweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcbiAgICB9XG4gICAgLmNhbnZhcy1lbXB0eS1zdGF0ZSB7XG4gICAgICBncmlkLWNvbHVtbjogMSAvIC0xO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBwYWRkaW5nOiA2MHB4IDIwcHg7XG4gICAgICBib3JkZXI6IDJweCBkYXNoZWQgdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2NiZDVlMSk7XG4gICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtY29sb3Itc3VyZmFjZSwgI2Y4ZmFmYyk7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuICAgIC5lbXB0eS1pY29uIHtcbiAgICAgIGZvbnQtc2l6ZTogMi41cmVtO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgICB9XG4gICAgLmNhbnZhcy1lbXB0eS1zdGF0ZSBoMyB7XG4gICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LCAjMGYxNzJhKTtcbiAgICAgIG1hcmdpbjogMCAwIDZweCAwO1xuICAgIH1cbiAgICAuY2FudmFzLWVtcHR5LXN0YXRlIHAge1xuICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQtbXV0ZWQsICM2NDc0OGIpO1xuICAgICAgbWF4LXdpZHRoOiAzODBweDtcbiAgICAgIG1hcmdpbjogMDtcbiAgICB9XG4gICAgLmNhbnZhcy1ncmlkLXByZXZpZXctYm94IHtcbiAgICAgIG1hcmdpbi10b3A6IDMycHg7XG4gICAgICBib3JkZXI6IDFweCBkYXNoZWQgdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2NiZDVlMSk7XG4gICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtY29sb3Itc3VyZmFjZSwgI2Y4ZmFmYyk7XG4gICAgICBwYWRkaW5nOiAxNnB4O1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXJwdC10cmFuc2l0aW9uLXNwZWVkLCAxNTBtcykgZWFzZTtcbiAgICB9XG4gICAgLmNhbnZhcy1ncmlkLXByZXZpZXctYm94OmhvdmVyIHtcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICB9XG4gICAgLmdyaWQtcHJldmlldy1oZWFkZXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQsICMwZjE3MmEpO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICB9XG4gICAgLmdyaWQtY2xpY2staGludCB7XG4gICAgICBmb250LXNpemU6IDAuN3JlbTtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICBmb250LXdlaWdodDogNTAwO1xuICAgIH1cbiAgICAuZ3JpZC1wcmV2aWV3LWNvbHVtbnMge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgIGdhcDogNnB4O1xuICAgIH1cbiAgICAuZ3JpZC1jb2wtcGlsbCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogNHB4O1xuICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXJwdC1jb2xvci1ib3JkZXIsICNlMmU4ZjApO1xuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgcGFkZGluZzogNHB4IDhweDtcbiAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICB9XG4gICAgLmNvbC1waWxsLW5hbWUge1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dCwgIzBmMTcyYSk7XG4gICAgfVxuICAgIC5jb2wtcGlsbC10eXBlIHtcbiAgICAgIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dC1tdXRlZCwgIzk0YTNiOCk7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtY29sb3Itc3VyZmFjZSwgI2YxZjVmOSk7XG4gICAgICBwYWRkaW5nOiAxcHggNHB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIH1cbiAgICAuY2FudmFzLWFjdGlvbnMge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6IDhweDtcbiAgICB9XG4gICAgLmJ0bi1ncmlkLWFkZCB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZjBmZGY0O1xuICAgICAgYm9yZGVyLWNvbG9yOiAjYmJmN2QwO1xuICAgICAgY29sb3I6ICMxNmEzNGE7XG4gICAgfVxuICAgIC5idG4tZ3JpZC1hZGQ6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogI2RjZmNlNztcbiAgICAgIGJvcmRlci1jb2xvcjogIzg2ZWZhYztcbiAgICAgIGNvbG9yOiAjMTU4MDNkO1xuICAgIH1cbiAgICAuYnRuLXJlbW92ZS1ncmlkIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgcGFkZGluZzogNHB4O1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICBjb2xvcjogIzk0YTNiODtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHRyYW5zaXRpb246IGFsbCAxNTBtcyBlYXNlO1xuICAgIH1cbiAgICAuYnRuLXJlbW92ZS1ncmlkOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICNmZWUyZTI7XG4gICAgICBjb2xvcjogI2VmNDQ0NDtcbiAgICB9XG4gICAgLmNhbnZhcy1hZGQtZ3JpZC1iYW5uZXIge1xuICAgICAgbWFyZ2luLXRvcDogMjRweDtcbiAgICAgIGJvcmRlcjogMnB4IGRhc2hlZCAjY2JkNWUxO1xuICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgIHBhZGRpbmc6IDE2cHggMjBweDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZ2FwOiAxNnB4O1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDE1MG1zIGVhc2U7XG4gICAgfVxuICAgIC5jYW52YXMtYWRkLWdyaWQtYmFubmVyOmhvdmVyIHtcbiAgICAgIGJvcmRlci1jb2xvcjogIzI1NjNlYjtcbiAgICAgIGJhY2tncm91bmQ6ICNmOGZhZmM7XG4gICAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgzNywgOTksIDIzNSwgMC4wOCk7XG4gICAgfVxuICAgIC5hZGQtZ3JpZC1pY29uIHtcbiAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgYmFja2dyb3VuZDogI2VmZjZmZjtcbiAgICAgIGNvbG9yOiAjMjU2M2ViO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cbiAgICAuYWRkLWdyaWQtdGV4dCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIGdhcDogMnB4O1xuICAgICAgZmxleDogMTtcbiAgICB9XG4gICAgLmFkZC1ncmlkLXRpdGxlIHtcbiAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgY29sb3I6ICMwZjE3MmE7XG4gICAgfVxuICAgIC5hZGQtZ3JpZC1zdWIge1xuICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgY29sb3I6ICM2NDc0OGI7XG4gICAgfVxuICAgIC5idG4tYmFubmVyLWFkZCB7XG4gICAgICBwYWRkaW5nOiA2cHggMTRweDtcbiAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBjb2xvcjogIzI1NjNlYjtcbiAgICAgIGJhY2tncm91bmQ6ICNlZmY2ZmY7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjYmZkYmZlO1xuICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIHRyYW5zaXRpb246IGFsbCAxNTBtcyBlYXNlO1xuICAgIH1cbiAgICAuY2FudmFzLWFkZC1ncmlkLWJhbm5lcjpob3ZlciAuYnRuLWJhbm5lci1hZGQge1xuICAgICAgYmFja2dyb3VuZDogIzI1NjNlYjtcbiAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgYm9yZGVyLWNvbG9yOiAjMjU2M2ViO1xuICAgIH1cbiAgYF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEZXNpZ25DYW52YXNDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc2lnbmVyU3RhdGUgPSBpbmplY3QoRGVzaWduZXJTdGF0ZVNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5IGRlZmluaXRpb24gPSB0aGlzLmRlc2lnbmVyU3RhdGUuZGVmaW5pdGlvbjtcbiAgcmVhZG9ubHkgY29tcG9uZW50cyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZGVmaW5pdGlvbigpLmNvbXBvbmVudHMpO1xuICByZWFkb25seSBzZWxlY3RlZElkID0gdGhpcy5kZXNpZ25lclN0YXRlLnNlbGVjdGVkQ29tcG9uZW50SWQ7XG5cbiAgcmVhZG9ubHkgdG90YWxDb2x1bW5zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5kZWZpbml0aW9uKCkubGF5b3V0LmNvbHVtbnMgfHwgMTIpO1xuXG4gIHJlYWRvbmx5IGdyaWRUZW1wbGF0ZUNvbHVtbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIGByZXBlYXQoJHt0aGlzLnRvdGFsQ29sdW1ucygpfSwgbWlubWF4KDAsIDFmcikpYDtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc29ydGVkQ29tcG9uZW50cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gWy4uLnRoaXMuY29tcG9uZW50cygpXS5zb3J0KChhLCBiKSA9PiAoYS5vcmRlciA/PyAwKSAtIChiLm9yZGVyID8/IDApKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgcmVzaXppbmdDb21wSWQgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IHJlc2l6aW5nU3BhbiA9IHNpZ25hbDxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgcmVzaXppbmdIZWlnaHQgPSBzaWduYWw8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IGlzQW55UmVzaXppbmcgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJlc2l6aW5nQ29tcElkKCkgIT09IG51bGwpO1xuXG4gIGlzU2VsZWN0ZWQoaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSWQoKSA9PT0gaWQ7XG4gIH1cblxuICBnZXRTcGFuKGNvbXA6IFJlcG9ydENvbXBvbmVudERlZmluaXRpb24pOiBudW1iZXIge1xuICAgIHJldHVybiByZXNvbHZlQ29tcG9uZW50U3BhbihcbiAgICAgIGNvbXAsXG4gICAgICB0aGlzLnRvdGFsQ29sdW1ucygpLFxuICAgICAgdGhpcy5yZXNpemluZ0NvbXBJZCgpID09PSBjb21wLmlkID8gdGhpcy5yZXNpemluZ1NwYW4oKSA6IG51bGxcbiAgICApO1xuICB9XG5cbiAgZ2V0R3JpZENvbHVtbihjb21wOiBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY2FsY3VsYXRlR3JpZENvbHVtbihjb21wLCB0aGlzLnRvdGFsQ29sdW1ucygpLCB0aGlzLmdldFNwYW4oY29tcCkpO1xuICB9XG5cbiAgdG9nZ2xlTmV3Um93KGNvbXA6IFJlcG9ydENvbXBvbmVudERlZmluaXRpb24sIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgY3VycmVudCA9ICEhY29tcC5sYXlvdXQ/Lm5ld1JvdztcbiAgICB0aGlzLmRlc2lnbmVyU3RhdGUudXBkYXRlQ29tcG9uZW50TGF5b3V0KGNvbXAuaWQsIHsgbmV3Um93OiAhY3VycmVudCB9KTtcbiAgfVxuXG4gIGdldEdyaWRSb3coY29tcDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNhbGN1bGF0ZUdyaWRSb3coY29tcCk7XG4gIH1cblxuICBnZXRDb21wb25lbnRIZWlnaHQoY29tcDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJlc29sdmVDYW52YXNDYXJkSGVpZ2h0KFxuICAgICAgY29tcCxcbiAgICAgIHRoaXMucmVzaXppbmdDb21wSWQoKSA9PT0gY29tcC5pZCA/IHRoaXMucmVzaXppbmdIZWlnaHQoKSA6IG51bGxcbiAgICApO1xuICB9XG5cbiAgZ2V0Q29tcG9uZW50TWluSGVpZ2h0KGNvbXA6IFJlcG9ydENvbXBvbmVudERlZmluaXRpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiByZXNvbHZlQ2FudmFzQ2FyZE1pbkhlaWdodChcbiAgICAgIGNvbXAsXG4gICAgICB0aGlzLnJlc2l6aW5nQ29tcElkKCkgPT09IGNvbXAuaWQgPyB0aGlzLnJlc2l6aW5nSGVpZ2h0KCkgOiBudWxsXG4gICAgKTtcbiAgfVxuXG4gIGdldEN1c3RvbUJ0bkhlaWdodChjb21wOiBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgaCA9IGNvbXAubGF5b3V0Py5oZWlnaHQ7XG4gICAgcmV0dXJuIGggJiYgaCAhPT0gJ2F1dG8nID8gaCA6IG51bGw7XG4gIH1cblxuICBnZXRDdXN0b21CdG5XaWR0aChjb21wOiBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgdyA9IGNvbXAubGF5b3V0Py53aWR0aDtcbiAgICByZXR1cm4gdyAmJiB3ICE9PSAnYXV0bycgPyB3IDogbnVsbDtcbiAgfVxuXG4gIGdldEN1c3RvbUJ0bkljb24oY29tcDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIChjb21wLnByb3BlcnRpZXM/LlsnaWNvbiddIGFzIHN0cmluZykgfHwgJyc7XG4gIH1cblxuICByZXNpemluZ1Rvb2x0aXAoY29tcDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbik6IHN0cmluZyB7XG4gICAgY29uc3Qgc3BhbiA9IHRoaXMuZ2V0U3Bhbihjb21wKTtcbiAgICBjb25zdCBoZWlnaHQgPSB0aGlzLnJlc2l6aW5nSGVpZ2h0KCkgPz8gKGNvbXAubGF5b3V0Py5oZWlnaHQgPyBwYXJzZUludChjb21wLmxheW91dC5oZWlnaHQsIDEwKSA6IDU4KTtcbiAgICByZXR1cm4gYCR7c3Bhbn0gY29scyDDlyAke2hlaWdodH1weGA7XG4gIH1cblxuICByZWFkb25seSBnZXRDb21wb25lbnRJY29uTmFtZSA9IGdldENvbXBvbmVudEljb25OYW1lO1xuXG4gIG9uU2VsZWN0KGlkOiBzdHJpbmcsIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNBbnlSZXNpemluZygpKSByZXR1cm47XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5kZXNpZ25lclN0YXRlLnNlbGVjdENvbXBvbmVudChpZCk7XG4gIH1cblxuICBhZGp1c3RTcGFuKGNvbXA6IFJlcG9ydENvbXBvbmVudERlZmluaXRpb24sIGRlbHRhOiBudW1iZXIsIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuZ2V0U3Bhbihjb21wKTtcbiAgICBjb25zdCBuZXh0ID0gTWF0aC5tYXgoMSwgTWF0aC5taW4odGhpcy50b3RhbENvbHVtbnMoKSwgY3VycmVudCArIGRlbHRhKSk7XG4gICAgdGhpcy5kZXNpZ25lclN0YXRlLnVwZGF0ZUNvbXBvbmVudExheW91dChjb21wLmlkLCB7IGNvbHVtblNwYW46IG5leHQgfSk7XG4gIH1cblxuICBvbkR1cGxpY2F0ZShpZDogc3RyaW5nLCBldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuZGVzaWduZXJTdGF0ZS5kdXBsaWNhdGVDb21wb25lbnQoaWQpO1xuICB9XG5cbiAgb25EZWxldGUoaWQ6IHN0cmluZywgZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmRlc2lnbmVyU3RhdGUucmVtb3ZlQ29tcG9uZW50KGlkKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJylcbiAgb25Fc2NhcGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJZCgpKSB7XG4gICAgICB0aGlzLmRlc2lnbmVyU3RhdGUuc2VsZWN0Q29tcG9uZW50KG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2FudmFzQmFja2dyb3VuZENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNBbnlSZXNpemluZygpKSByZXR1cm47XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGlmIChcbiAgICAgIHRhcmdldC5jbG9zZXN0KCcuY2FudmFzLWNvbXBvbmVudC1jYXJkJykgfHxcbiAgICAgIHRhcmdldC5jbG9zZXN0KCcuY2FudmFzLWFjdGlvbi1idG4nKSB8fFxuICAgICAgdGFyZ2V0LmNsb3Nlc3QoJy5jYW52YXMtZ3JpZC1wcmV2aWV3LWJveCcpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGVzaWduZXJTdGF0ZS5zZWxlY3RDb21wb25lbnQobnVsbCk7XG4gIH1cblxuICBzZWxlY3RSZXBvcnRTZXR0aW5ncyhldmVudD86IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5kZXNpZ25lclN0YXRlLnNlbGVjdENvbXBvbmVudChudWxsKTtcbiAgICB0aGlzLmRlc2lnbmVyU3RhdGUuc2V0QWN0aXZlVGFiKCdyZXBvcnQnKTtcbiAgfVxuXG4gIHNlbGVjdEdyaWRTZXR0aW5ncyhldmVudD86IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5kZXNpZ25lclN0YXRlLnNlbGVjdENvbXBvbmVudChudWxsKTtcbiAgICB0aGlzLmRlc2lnbmVyU3RhdGUuc2V0QWN0aXZlVGFiKCdncmlkJyk7XG4gIH1cblxuICBzdGFydFJlc2l6ZShldmVudDogUG9pbnRlckV2ZW50LCBjb21wOiBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uLCBkaXJlY3Rpb246ICdlJyB8ICdzJyB8ICdzZScpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdGhpcy5kZXNpZ25lclN0YXRlLnNlbGVjdENvbXBvbmVudChjb21wLmlkKTtcblxuICAgIGNvbnN0IGhhbmRsZSA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBoYW5kbGUuc2V0UG9pbnRlckNhcHR1cmUoZXZlbnQucG9pbnRlcklkKTtcblxuICAgIGNvbnN0IGNhcmQgPSBoYW5kbGUuY2xvc2VzdCgnLmNhbnZhcy1jb21wb25lbnQtY2FyZCcpIGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGdyaWQgPSBoYW5kbGUuY2xvc2VzdCgnLmNhbnZhcy1ncmlkJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKCFjYXJkIHx8ICFncmlkKSByZXR1cm47XG5cbiAgICBjb25zdCBzdGFydFggPSBldmVudC5jbGllbnRYO1xuICAgIGNvbnN0IHN0YXJ0WSA9IGV2ZW50LmNsaWVudFk7XG4gICAgY29uc3Qgc3RhcnRTcGFuID0gY29tcC5sYXlvdXQ/LmNvbHVtblNwYW4gPz8gKGNvbXAudHlwZSA9PT0gJ2J1dHRvbicgPyAyIDogNCk7XG4gICAgY29uc3QgZXhpc3RpbmdDb21wSGVpZ2h0ID0gY29tcC5sYXlvdXQ/LmhlaWdodCA/IHBhcnNlSW50KGNvbXAubGF5b3V0LmhlaWdodCwgMTApIDogbnVsbDtcbiAgICBjb25zdCBzdGFydEhlaWdodCA9IGV4aXN0aW5nQ29tcEhlaWdodCA/PyBNYXRoLm1heCgzOCwgY2FyZC5vZmZzZXRIZWlnaHQgLSBDQU5WQVNfQ0FSRF9PVkVSSEVBRCk7XG4gICAgY29uc3QgdG90YWxDb2xzID0gdGhpcy50b3RhbENvbHVtbnMoKTtcbiAgICBjb25zdCBnYXAgPSB0aGlzLmRlZmluaXRpb24oKS5sYXlvdXQuZ2FwID8/IDE2O1xuICAgIGNvbnN0IGNvbFdpZHRoID0gKGdyaWQub2Zmc2V0V2lkdGggLSAodG90YWxDb2xzIC0gMSkgKiBnYXApIC8gdG90YWxDb2xzO1xuXG4gICAgdGhpcy5yZXNpemluZ0NvbXBJZC5zZXQoY29tcC5pZCk7XG4gICAgdGhpcy5yZXNpemluZ1NwYW4uc2V0KHN0YXJ0U3Bhbik7XG4gICAgdGhpcy5yZXNpemluZ0hlaWdodC5zZXQoc3RhcnRIZWlnaHQpO1xuXG4gICAgbGV0IGN1cnJlbnRTcGFuID0gc3RhcnRTcGFuO1xuICAgIGxldCBjdXJyZW50SGVpZ2h0ID0gc3RhcnRIZWlnaHQ7XG5cbiAgICBjb25zdCBvblBvaW50ZXJNb3ZlID0gKG1vdmVFdmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICBpZiAoZGlyZWN0aW9uID09PSAnZScgfHwgZGlyZWN0aW9uID09PSAnc2UnKSB7XG4gICAgICAgIGNvbnN0IGRlbHRhWCA9IG1vdmVFdmVudC5jbGllbnRYIC0gc3RhcnRYO1xuICAgICAgICBjdXJyZW50U3BhbiA9IGNhbGN1bGF0ZVNuYXBwZWRTcGFuKGRlbHRhWCwgc3RhcnRTcGFuLCBjb2xXaWR0aCwgZ2FwLCB0b3RhbENvbHMpO1xuICAgICAgICB0aGlzLnJlc2l6aW5nU3Bhbi5zZXQoY3VycmVudFNwYW4pO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGlyZWN0aW9uID09PSAncycgfHwgZGlyZWN0aW9uID09PSAnc2UnKSB7XG4gICAgICAgIGNvbnN0IGRlbHRhWSA9IG1vdmVFdmVudC5jbGllbnRZIC0gc3RhcnRZO1xuICAgICAgICBjdXJyZW50SGVpZ2h0ID0gY2FsY3VsYXRlU25hcHBlZEhlaWdodChkZWx0YVksIHN0YXJ0SGVpZ2h0LCAzOCk7XG4gICAgICAgIHRoaXMucmVzaXppbmdIZWlnaHQuc2V0KGN1cnJlbnRIZWlnaHQpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvblBvaW50ZXJVcCA9ICh1cEV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGhhbmRsZS5yZWxlYXNlUG9pbnRlckNhcHR1cmUodXBFdmVudC5wb2ludGVySWQpO1xuICAgICAgfSBjYXRjaCB7fVxuXG4gICAgICBoYW5kbGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLCBvblBvaW50ZXJNb3ZlKTtcbiAgICAgIGhhbmRsZS5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCBvblBvaW50ZXJVcCk7XG4gICAgICBoYW5kbGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcmNhbmNlbCcsIG9uUG9pbnRlclVwKTtcblxuICAgICAgY29uc3QgbGF5b3V0Q2hhbmdlczogUGFydGlhbDxDb21wb25lbnRMYXlvdXREZWZpbml0aW9uPiA9IHt9O1xuICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ2UnIHx8IGRpcmVjdGlvbiA9PT0gJ3NlJykge1xuICAgICAgICBsYXlvdXRDaGFuZ2VzLmNvbHVtblNwYW4gPSBjdXJyZW50U3BhbjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRlbHRhWSA9IE1hdGguYWJzKHVwRXZlbnQuY2xpZW50WSAtIHN0YXJ0WSk7XG4gICAgICBpZiAoZGlyZWN0aW9uID09PSAncycgfHwgKGRpcmVjdGlvbiA9PT0gJ3NlJyAmJiBkZWx0YVkgPiA4KSkge1xuICAgICAgICBsYXlvdXRDaGFuZ2VzLmhlaWdodCA9IGAke2N1cnJlbnRIZWlnaHR9cHhgO1xuICAgICAgICBsYXlvdXRDaGFuZ2VzLm1pbkhlaWdodCA9IGAke2N1cnJlbnRIZWlnaHR9cHhgO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRlc2lnbmVyU3RhdGUudXBkYXRlQ29tcG9uZW50TGF5b3V0KGNvbXAuaWQsIGxheW91dENoYW5nZXMpO1xuXG4gICAgICB0aGlzLnJlc2l6aW5nQ29tcElkLnNldChudWxsKTtcbiAgICAgIHRoaXMucmVzaXppbmdTcGFuLnNldChudWxsKTtcbiAgICAgIHRoaXMucmVzaXppbmdIZWlnaHQuc2V0KG51bGwpO1xuICAgIH07XG5cbiAgICBoYW5kbGUuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLCBvblBvaW50ZXJNb3ZlKTtcbiAgICBoYW5kbGUuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgb25Qb2ludGVyVXApO1xuICAgIGhhbmRsZS5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyY2FuY2VsJywgb25Qb2ludGVyVXApO1xuICB9XG5cbiAgcmVzZXREaW1lbnNpb25zKGNvbXA6IFJlcG9ydENvbXBvbmVudERlZmluaXRpb24sIGV2ZW50PzogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBjb25zdCBkZWZhdWx0U3BhbiA9IGNvbXAudHlwZSA9PT0gJ2J1dHRvbicgPyAyIDogNDtcbiAgICB0aGlzLmRlc2lnbmVyU3RhdGUudXBkYXRlQ29tcG9uZW50TGF5b3V0KGNvbXAuaWQsIHtcbiAgICAgIGNvbHVtblNwYW46IGRlZmF1bHRTcGFuLFxuICAgICAgaGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgICBtaW5IZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICAgIHdpZHRoOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gIH1cblxuICBvbkRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPFJlcG9ydENvbXBvbmVudERlZmluaXRpb25bXSwgdW5rbm93biwgdW5rbm93bj4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0FueVJlc2l6aW5nKCkpIHJldHVybjtcblxuICAgIGlmIChldmVudC5wcmV2aW91c0NvbnRhaW5lciA9PT0gZXZlbnQuY29udGFpbmVyKSB7XG4gICAgICAvLyBSZW9yZGVyaW5nIHdpdGhpbiBjYW52YXNcbiAgICAgIHRoaXMuZGVzaWduZXJTdGF0ZS5tb3ZlQ29tcG9uZW50KGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIERyYWdnZWQgZnJvbSBwYWxldHRlIGludG8gY2FudmFzXG4gICAgICBjb25zdCByYXdEYXRhID0gZXZlbnQuaXRlbS5kYXRhIGFzIHN0cmluZyB8IHsgdHlwZT86IHN0cmluZyB9IHwgdW5kZWZpbmVkO1xuICAgICAgY29uc3QgY29tcG9uZW50VHlwZSA9IHR5cGVvZiByYXdEYXRhID09PSAnc3RyaW5nJyA/IHJhd0RhdGEgOiByYXdEYXRhPy50eXBlO1xuICAgICAgaWYgKGNvbXBvbmVudFR5cGUpIHtcbiAgICAgICAgdGhpcy5kZXNpZ25lclN0YXRlLmFkZENvbXBvbmVudChjb21wb25lbnRUeXBlLCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFkZFJlc3VsdEdyaWQoZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IGV4aXN0aW5nRHMgPSB0aGlzLmRlZmluaXRpb24oKS5kYXRhU291cmNlc1swXTtcbiAgICBjb25zdCBkZWZhdWx0R3JpZDogUmVwb3J0R3JpZERlZmluaXRpb24gPSB7XG4gICAgICBkYXRhU291cmNlSWQ6IGV4aXN0aW5nRHM/LmlkID8/ICdkZWZhdWx0JyxcbiAgICAgIGNvbHVtbnM6IFtcbiAgICAgICAgeyBmaWVsZDogJ2lkJywgbGFiZWw6ICdJRCcsIGRhdGFUeXBlOiAnbnVtYmVyJywgdmlzaWJsZTogdHJ1ZSwgc29ydGFibGU6IHRydWUgfSxcbiAgICAgICAgeyBmaWVsZDogJ25hbWUnLCBsYWJlbDogJ05hbWUnLCBkYXRhVHlwZTogJ3N0cmluZycsIHZpc2libGU6IHRydWUsIHNvcnRhYmxlOiB0cnVlIH0sXG4gICAgICBdLFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBwYWdpbmF0aW9uOiB0cnVlLFxuICAgICAgICBwYWdlU2l6ZTogMjUsXG4gICAgICAgIHNob3dSb3dOdW1iZXJzOiB0cnVlLFxuICAgICAgICBzaG93Rm9vdGVyOiB0cnVlLFxuICAgICAgfSxcbiAgICB9O1xuICAgIHRoaXMuZGVzaWduZXJTdGF0ZS51cGRhdGVHcmlkU2V0dGluZ3MoZGVmYXVsdEdyaWQpO1xuICAgIHRoaXMuZGVzaWduZXJTdGF0ZS5zZWxlY3RDb21wb25lbnQobnVsbCk7XG4gICAgdGhpcy5kZXNpZ25lclN0YXRlLnNldEFjdGl2ZVRhYignZ3JpZCcpO1xuICB9XG5cbiAgcmVtb3ZlR3JpZChldmVudD86IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5kZXNpZ25lclN0YXRlLnVwZGF0ZUdyaWRTZXR0aW5ncyh1bmRlZmluZWQpO1xuICB9XG59XG4iXX0=
|