bways-report 0.2.0 → 0.2.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 +64 -0
- package/esm2022/lib/core/config/bways-report-config.mjs +1 -1
- package/esm2022/lib/core/models/report-grid.model.mjs +1 -1
- package/esm2022/lib/core/services/report-overlay.service.mjs +79 -0
- package/esm2022/lib/core/services/report-session-context.service.mjs +1 -44
- package/esm2022/lib/core/utils/report-parameter.util.mjs +81 -16
- package/esm2022/lib/data-access/adapters/endpoint-datasource.adapter.mjs +10 -2
- package/esm2022/lib/data-access/adapters/endpoint-lookup.adapter.mjs +10 -1
- package/esm2022/lib/data-access/adapters/http-datasource.adapter.mjs +10 -1
- package/esm2022/lib/data-access/adapters/http-lookup.adapter.mjs +10 -1
- package/esm2022/lib/features/designer/components/design-canvas/design-canvas.component.mjs +6 -4
- package/esm2022/lib/features/designer/components/dialogs/report-saved-dialog.component.mjs +11 -10
- package/esm2022/lib/features/designer/components/property-editor/parameter-binding-editor.component.mjs +93 -7
- package/esm2022/lib/features/designer/components/property-editor/property-editor-datasource.component.mjs +9 -7
- package/esm2022/lib/features/designer/components/property-editor/property-editor-grid.component.mjs +9 -16
- package/esm2022/lib/features/designer/components/property-editor/property-editor.component.mjs +5 -3
- package/esm2022/lib/features/designer/components/toolbar/designer-toolbar.component.mjs +11 -11
- package/esm2022/lib/features/designer/designer.component.mjs +12 -7
- package/esm2022/lib/features/designer/services/designer-state.service.mjs +5 -3
- package/esm2022/lib/features/runtime/dynamic-renderer.component.mjs +2 -2
- package/esm2022/lib/features/runtime/report-execution.service.mjs +35 -4
- package/esm2022/lib/features/runtime/report-grid-bridge.component.mjs +15 -20
- package/esm2022/lib/primitives/components/dropdown/rpt-dropdown.component.mjs +22 -11
- package/esm2022/lib/primitives/components/radio/rpt-radio.component.mjs +15 -5
- package/esm2022/lib/primitives/components/searchable-select/rpt-searchable-select.component.mjs +6 -6
- package/fesm2022/bways-report.mjs +414 -165
- package/fesm2022/bways-report.mjs.map +1 -1
- package/lib/core/config/bways-report-config.d.ts +3 -0
- package/lib/core/models/report-grid.model.d.ts +1 -1
- package/lib/core/services/report-overlay.service.d.ts +14 -0
- package/lib/core/services/report-session-context.service.d.ts +0 -5
- package/lib/core/utils/report-parameter.util.d.ts +15 -1
- package/lib/features/designer/components/property-editor/parameter-binding-editor.component.d.ts +12 -0
- package/lib/features/designer/components/property-editor/property-editor-datasource.component.d.ts +1 -0
- package/lib/features/designer/designer.component.d.ts +1 -0
- package/lib/features/runtime/report-grid-bridge.component.d.ts +2 -2
- package/lib/primitives/components/dropdown/rpt-dropdown.component.d.ts +1 -2
- package/lib/primitives/components/searchable-select/rpt-searchable-select.component.d.ts +0 -1
- package/package.json +8 -5
- package/styles/theme.css +181 -0
- package/third-party-notices/angular-cdk-LICENSE.txt +21 -0
|
@@ -190,9 +190,9 @@ export class DesignerToolbarComponent {
|
|
|
190
190
|
}
|
|
191
191
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DesignerToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
192
192
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DesignerToolbarComponent, isStandalone: true, selector: "rpt-designer-toolbar", inputs: { isLeftPanelCollapsed: { classPropertyName: "isLeftPanelCollapsed", publicName: "isLeftPanelCollapsed", isSignal: true, isRequired: false, transformFunction: null }, isRightPanelCollapsed: { classPropertyName: "isRightPanelCollapsed", publicName: "isRightPanelCollapsed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { toggleLeftPanel: "toggleLeftPanel", toggleRightPanel: "toggleRightPanel", saveRequested: "saveRequested" }, ngImport: i0, template: `
|
|
193
|
-
<div class="toolbar-root">
|
|
193
|
+
<div class="rpt-toolbar-root">
|
|
194
194
|
<!-- Left: Panel toggle, Title, Inline Rename, + New Report, Switcher & Dirty indicator -->
|
|
195
|
-
<div class="toolbar-left">
|
|
195
|
+
<div class="rpt-toolbar-left">
|
|
196
196
|
@if (viewMode() === 'design') {
|
|
197
197
|
<button
|
|
198
198
|
type="button"
|
|
@@ -267,7 +267,7 @@ export class DesignerToolbarComponent {
|
|
|
267
267
|
</div>
|
|
268
268
|
|
|
269
269
|
<!-- Center: Mode Switcher -->
|
|
270
|
-
<div class="toolbar-center">
|
|
270
|
+
<div class="rpt-toolbar-center">
|
|
271
271
|
<div class="mode-pill-group" role="tablist" aria-label="Workbench View Mode">
|
|
272
272
|
<button
|
|
273
273
|
type="button"
|
|
@@ -303,7 +303,7 @@ export class DesignerToolbarComponent {
|
|
|
303
303
|
</div>
|
|
304
304
|
|
|
305
305
|
<!-- Right: Undo, Redo, Blueprints, Grid, Export, Save -->
|
|
306
|
-
<div class="toolbar-right">
|
|
306
|
+
<div class="rpt-toolbar-right">
|
|
307
307
|
<div class="history-group">
|
|
308
308
|
<button
|
|
309
309
|
type="button"
|
|
@@ -430,14 +430,14 @@ export class DesignerToolbarComponent {
|
|
|
430
430
|
</div>
|
|
431
431
|
}
|
|
432
432
|
</div>
|
|
433
|
-
`, isInline: true, styles: [":host{display:block;background:var(--rpt-color-surface, #ffffff);color:var(--rpt-color-text, #0f172a);height:56px;font-family:var(--rpt-font-family, inherit);border-bottom:1px solid var(--rpt-color-border, #cbd5e1);box-sizing:border-box;position:relative;box-shadow:0 1px 3px #0000000a;z-index:30;flex-shrink:0}.toolbar-root{display:flex;align-items:center;justify-content:flex-start;height:100%;padding:0 16px;gap:8px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-webkit-overflow-scrolling:touch;box-sizing:border-box}.toolbar-root::-webkit-scrollbar{display:none}.toolbar-left{display:flex;align-items:center;gap:8px;min-width:0;flex-shrink:0}.toolbar-right{display:flex;align-items:center;gap:6px;min-width:0;flex-shrink:0;margin-left:auto;justify-content:flex-end}.toolbar-center{display:flex;align-items:center;justify-content:center;flex-shrink:0;margin:0 auto}.report-identity{display:flex;align-items:center;gap:8px;min-width:0}.report-name{font-weight:600;font-size:.9rem;letter-spacing:-.01em;color:var(--rpt-color-text, #0f172a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px;cursor:pointer;padding:2px 6px;border-radius:4px;border:1px dashed transparent;transition:all .12s ease}.report-name:hover{background:#f1f5f9;border-color:#cbd5e1}.report-name-input{font-weight:600;font-size:.9rem;color:var(--rpt-color-text, #0f172a);border:1px solid var(--rpt-color-primary, #2563eb);border-radius:4px;padding:2px 6px;outline:none;box-shadow:0 0 0 2px #2563eb33;background:#fff;max-width:220px;box-sizing:border-box}.btn-new-report{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;background:#f8fafc;color:var(--rpt-color-text-muted, #64748b);cursor:pointer;transition:all .12s ease}.btn-new-report:hover{background:#e2e8f0;color:var(--rpt-color-primary, #2563eb);border-color:var(--rpt-color-primary, #2563eb)}.report-switcher-select{height:26px;padding:0 6px;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;background:#f8fafc;color:var(--rpt-color-text, #334155);font-size:.75rem;font-weight:500;cursor:pointer;max-width:140px;outline:none;transition:border-color .12s ease}.report-switcher-select:hover{border-color:#94a3b8}.dirty-badge{font-size:.65rem;font-weight:600;color:#b45309;background:#fef3c7;border:1px solid #fde68a;padding:1px 6px;border-radius:9999px;white-space:nowrap;flex-shrink:0}.mode-pill-group{display:flex;background:#f1f5f9;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);padding:3px;gap:2px;flex-shrink:0}.mode-btn{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text-muted, #64748b);background:transparent;border:none;border-radius:var(--rpt-border-radius, 6px);cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease;white-space:nowrap}.mode-btn:hover{color:var(--rpt-color-text, #0f172a);background:#0000000a}.mode-btn.active{background:#fff;color:var(--rpt-color-primary, #2563eb);font-weight:600;box-shadow:0 1px 3px #00000014}.history-group{display:flex;gap:2px;flex-shrink:0}.tool-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text-secondary, #334155);background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease;white-space:nowrap;flex-shrink:0}.tool-btn:hover:not(:disabled){background:var(--rpt-color-surface-hover, #f8fafc);color:var(--rpt-color-text, #0f172a);border-color:var(--rpt-color-border-hover, #94a3b8)}.tool-btn:disabled{opacity:.45;cursor:not-allowed}.btn-panel-toggle{padding:6px 8px;color:var(--rpt-color-text-muted, #64748b)}.btn-panel-toggle:hover:not(:disabled){color:var(--rpt-color-text, #0f172a);background:var(--rpt-color-surface-hover, #f8fafc)}.btn-panel-toggle.active{background:#eff6ff;border-color:#bfdbfe;color:var(--rpt-color-primary, #2563eb)}.actions-divider{width:1px;height:20px;background:var(--rpt-color-border, #cbd5e1);flex-shrink:0}.btn-blueprints{background:#faf5ff;border-color:#e9d5ff;color:#7c3aed}.btn-blueprints:hover:not(:disabled){background:#f3e8ff;color:#6d28d9;border-color:#c084fc}.btn-save{background:var(--rpt-color-primary, #2563eb);border-color:var(--rpt-color-primary, #2563eb);color:#fff;font-weight:600}.btn-save:hover:not(:disabled){background:var(--rpt-color-primary-hover, #1d4ed8);border-color:var(--rpt-color-primary-hover, #1d4ed8)}.btn-export{background:#fff;color:var(--rpt-color-text-secondary, #334155)}.btn-grid-action{background:#f0fdf4;border-color:#bbf7d0;color:#16a34a}.btn-grid-action:hover:not(:disabled){background:#dcfce7;color:#15803d;border-color:#86efac}.btn-grid-configured{background:#eff6ff;border-color:#bfdbfe;color:#2563eb}.btn-grid-configured:hover:not(:disabled){background:#dbeafe;color:#1d4ed8;border-color:#93c5fd}@media (max-width: 1024px){.toolbar-root{padding:0 12px;gap:6px}.report-name{max-width:140px}.btn-blueprints .btn-label,.btn-export .btn-label{display:none}.tool-btn{padding:6px 9px}}@media (max-width: 900px){:host{height:48px}.toolbar-root{padding:0 8px;gap:4px}.btn-panel-toggle{display:none!important}.report-name{max-width:100px;font-size:.8125rem}.actions-divider{display:none}.tool-btn .btn-label{display:none!important}.tool-btn{padding:5px 7px;min-width:30px;height:30px;justify-content:center}.mode-pill-group{padding:2px;gap:1px}.mode-btn{padding:4px 8px;font-size:.725rem;gap:4px}}@media (max-width: 680px){:host{height:46px}.toolbar-root{padding:0 6px;gap:3px}.report-name{max-width:75px;font-size:.75rem}.dirty-badge{font-size:.6rem;padding:1px 4px}.mode-btn .mode-label{display:none}.mode-btn{padding:5px 8px}.tool-btn{min-width:28px;height:28px;padding:4px 6px}.toolbar-right{gap:3px}}.blueprint-backdrop{position:fixed;inset:0;background:#0f172a73;backdrop-filter:blur(4px);z-index:2000;animation:rpt-fade-in .15s ease-out}.blueprint-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(840px,92vw);max-height:85vh;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-xl, 12px);box-shadow:var(--rpt-box-shadow-xl, 0 20px 25px -5px rgba(0, 0, 0, .15));z-index:2001;display:flex;flex-direction:column;overflow:hidden;animation:rpt-modal-in .18s cubic-bezier(.16,1,.3,1)}@keyframes rpt-fade-in{0%{opacity:0}to{opacity:1}}@keyframes rpt-modal-in{0%{transform:translate(-50%,-46%) scale(.96);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}.blueprint-modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--rpt-color-border, #cbd5e1);background:var(--rpt-color-surface, #f8fafc)}.blueprint-modal-title{font-size:var(--rpt-font-size-lg, 1.125rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 4px}.blueprint-modal-sub{font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-text-muted, #64748b);margin:0}.btn-close-modal{background:transparent;border:none;color:var(--rpt-color-text-muted, #64748b);font-size:1.25rem;cursor:pointer;padding:4px;line-height:1;border-radius:4px;transition:all .12s ease}.btn-close-modal:hover{color:var(--rpt-color-text, #0f172a);background:#e2e8f0}.blueprint-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;padding:20px 24px;overflow-y:auto}.blueprint-card{background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);padding:16px;cursor:pointer;display:flex;flex-direction:column;transition:all .15s ease}.blueprint-card:hover{border-color:var(--rpt-color-primary, #2563eb);transform:translateY(-2px);box-shadow:0 8px 24px #2563eb1f}.blueprint-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.blueprint-cat-badge{font-size:.65rem;font-weight:600;color:#7c3aed;background:#f5f3ff;border:1px solid #ddd6fe;padding:2px 6px;border-radius:4px}.blueprint-card-icon{color:var(--rpt-color-primary, #2563eb)}.blueprint-card-title{font-size:var(--rpt-font-size-base, .875rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px}.blueprint-card-desc{font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-text-muted, #64748b);line-height:1.4;margin:0 0 16px;flex:1}.blueprint-card-footer{margin-top:auto}.btn-apply-blueprint{width:100%;background:var(--rpt-color-primary, #2563eb);color:#fff;border:none;border-radius:var(--rpt-border-radius, 6px);padding:6px 12px;font-size:.75rem;font-weight:600;cursor:pointer;transition:background .12s ease}.blueprint-card:hover .btn-apply-blueprint{background:var(--rpt-color-primary-hover, #1d4ed8)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: RptIconComponent, selector: "rpt-icon", inputs: ["name", "size", "color", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
433
|
+
`, isInline: true, styles: [":host{display:block;background:var(--rpt-color-surface, #ffffff);color:var(--rpt-color-text, #0f172a);height:56px;font-family:var(--rpt-font-family, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Arial, sans-serif);border-bottom:1px solid var(--rpt-color-border, #cbd5e1);box-sizing:border-box;position:relative;box-shadow:0 1px 3px #0000000a;z-index:30;flex-shrink:0}:host .rpt-toolbar-root>:is(.rpt-toolbar-left,.rpt-toolbar-center,.rpt-toolbar-right) button{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;align-self:center;width:auto;min-width:0;max-width:none;height:var(--rpt-toolbar-control-height, 32px);min-height:0;max-height:none;margin:0;font-family:var(--rpt-font-family, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Arial, sans-serif);font-size:var(--rpt-font-size-sm, 12px);font-style:normal;font-weight:500;line-height:1.25;letter-spacing:normal;text-transform:none;white-space:nowrap}:host .rpt-toolbar-root>:is(.rpt-toolbar-left,.rpt-toolbar-center,.rpt-toolbar-right) button.btn-new-report{width:26px;height:26px;padding:0}:host .rpt-toolbar-root>:is(.rpt-toolbar-left,.rpt-toolbar-center,.rpt-toolbar-right) button.mode-btn{height:calc(var(--rpt-toolbar-control-height, 32px) - 4px)}:host .rpt-toolbar-root>:is(.rpt-toolbar-left,.rpt-toolbar-center,.rpt-toolbar-right) button.btn-save,:host .rpt-toolbar-root>:is(.rpt-toolbar-left,.rpt-toolbar-center,.rpt-toolbar-right) button.mode-btn.active{font-weight:600}:host .rpt-toolbar-root input,:host .rpt-toolbar-root select{flex:0 0 auto;font-family:inherit;font-style:normal;line-height:1.25;text-transform:none;letter-spacing:normal}.rpt-toolbar-root{display:flex;align-items:center;justify-content:flex-start;height:100%;padding:0 16px;gap:8px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-webkit-overflow-scrolling:touch;box-sizing:border-box}.rpt-toolbar-root::-webkit-scrollbar{display:none}.rpt-toolbar-left{display:flex;align-items:center;gap:8px;min-width:0;flex-shrink:0}.rpt-toolbar-right{display:flex;align-items:center;gap:6px;min-width:0;flex-shrink:0;margin-left:auto;justify-content:flex-end}.rpt-toolbar-center{display:flex;align-items:center;justify-content:center;flex-shrink:0;margin:0 auto}.report-identity{display:flex;align-items:center;gap:8px;min-width:0}.report-name{font-weight:600;font-size:14.4px;letter-spacing:-.01em;color:var(--rpt-color-text, #0f172a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px;cursor:pointer;padding:2px 6px;border-radius:4px;border:1px dashed transparent;transition:all .12s ease}.report-name:hover{background:#f1f5f9;border-color:#cbd5e1}.report-name-input{font-weight:600;font-size:14.4px;color:var(--rpt-color-text, #0f172a);border:1px solid var(--rpt-color-primary, #2563eb);border-radius:4px;padding:2px 6px;outline:none;box-shadow:0 0 0 2px #2563eb33;background:#fff;max-width:220px;box-sizing:border-box}.btn-new-report{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;background:#f8fafc;color:var(--rpt-color-text-muted, #64748b);cursor:pointer;transition:all .12s ease}.btn-new-report:hover{background:#e2e8f0;color:var(--rpt-color-primary, #2563eb);border-color:var(--rpt-color-primary, #2563eb)}.report-switcher-select{height:26px;padding:0 6px;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;background:#f8fafc;color:var(--rpt-color-text, #334155);font-size:12px;font-weight:500;cursor:pointer;max-width:140px;outline:none;transition:border-color .12s ease}.report-switcher-select:hover{border-color:#94a3b8}.dirty-badge{font-size:10.4px;font-weight:600;color:#b45309;background:#fef3c7;border:1px solid #fde68a;padding:1px 6px;border-radius:9999px;white-space:nowrap;flex-shrink:0}.mode-pill-group{display:flex;background:#f1f5f9;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);padding:3px;gap:2px;flex-shrink:0}.mode-btn{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;font-size:var(--rpt-font-size-sm, 12px);font-weight:500;color:var(--rpt-color-text-muted, #64748b);background:transparent;border:none;border-radius:var(--rpt-border-radius, 6px);cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease;white-space:nowrap}.mode-btn:hover{color:var(--rpt-color-text, #0f172a);background:#0000000a}.mode-btn.active{background:#fff;color:var(--rpt-color-primary, #2563eb);font-weight:600;box-shadow:0 1px 3px #00000014}.history-group{display:flex;gap:2px;flex-shrink:0}.tool-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;font-size:var(--rpt-font-size-sm, 12px);font-weight:500;color:var(--rpt-color-text-secondary, #334155);background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease;white-space:nowrap;flex-shrink:0}.tool-btn:hover:not(:disabled){background:var(--rpt-color-surface-hover, #f8fafc);color:var(--rpt-color-text, #0f172a);border-color:var(--rpt-color-border-hover, #94a3b8)}.tool-btn:disabled{opacity:.45;cursor:not-allowed}.btn-panel-toggle{padding:6px 8px;color:var(--rpt-color-text-muted, #64748b)}.btn-panel-toggle:hover:not(:disabled){color:var(--rpt-color-text, #0f172a);background:var(--rpt-color-surface-hover, #f8fafc)}.btn-panel-toggle.active{background:#eff6ff;border-color:#bfdbfe;color:var(--rpt-color-primary, #2563eb)}.actions-divider{width:1px;height:20px;background:var(--rpt-color-border, #cbd5e1);flex-shrink:0}.btn-blueprints{background:#faf5ff;border-color:#e9d5ff;color:#7c3aed}.btn-blueprints:hover:not(:disabled){background:#f3e8ff;color:#6d28d9;border-color:#c084fc}.btn-save{background:var(--rpt-color-primary, #2563eb);border-color:var(--rpt-color-primary, #2563eb);color:#fff;font-weight:600}.btn-save:hover:not(:disabled){background:var(--rpt-color-primary-hover, #1d4ed8);border-color:var(--rpt-color-primary-hover, #1d4ed8)}.btn-export{background:#fff;color:var(--rpt-color-text-secondary, #334155)}.btn-grid-action{background:#f0fdf4;border-color:#bbf7d0;color:#16a34a}.btn-grid-action:hover:not(:disabled){background:#dcfce7;color:#15803d;border-color:#86efac}.btn-grid-configured{background:#eff6ff;border-color:#bfdbfe;color:#2563eb}.btn-grid-configured:hover:not(:disabled){background:#dbeafe;color:#1d4ed8;border-color:#93c5fd}@media (max-width: 1024px){.rpt-toolbar-root{padding:0 12px;gap:6px}.report-name{max-width:140px}.btn-blueprints .btn-label,.btn-export .btn-label{display:none}.tool-btn{padding:6px 9px}}@media (max-width: 900px){:host{--rpt-toolbar-control-height: 30px}:host{height:48px}.rpt-toolbar-root{padding:0 8px;gap:4px}.btn-panel-toggle{display:none!important}.report-name{max-width:100px;font-size:13px}.actions-divider{display:none}.tool-btn .btn-label{display:none!important}.tool-btn{padding:5px 7px;min-width:30px;height:30px;justify-content:center}.mode-pill-group{padding:2px;gap:1px}.mode-btn{padding:4px 8px;font-size:11.6px;gap:4px}}@media (max-width: 680px){:host{--rpt-toolbar-control-height: 28px}:host{height:46px}.rpt-toolbar-root{padding:0 6px;gap:3px}.report-name{max-width:75px;font-size:12px}.dirty-badge{font-size:9.6px;padding:1px 4px}.mode-btn .mode-label{display:none}.mode-btn{padding:5px 8px}.tool-btn{min-width:28px;height:28px;padding:4px 6px}.rpt-toolbar-right{gap:3px}}.blueprint-backdrop{position:fixed;inset:0;background:#0f172a73;backdrop-filter:blur(4px);z-index:2000;animation:rpt-fade-in .15s ease-out}.blueprint-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(840px,92vw);max-height:85vh;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-xl, 12px);box-shadow:var(--rpt-box-shadow-xl, 0 20px 25px -5px rgba(0, 0, 0, .15));z-index:2001;display:flex;flex-direction:column;overflow:hidden;animation:rpt-modal-in .18s cubic-bezier(.16,1,.3,1)}@keyframes rpt-fade-in{0%{opacity:0}to{opacity:1}}@keyframes rpt-modal-in{0%{transform:translate(-50%,-46%) scale(.96);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}.blueprint-modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--rpt-color-border, #cbd5e1);background:var(--rpt-color-surface, #f8fafc)}.blueprint-modal-title{font-size:var(--rpt-font-size-lg, 18px);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 4px}.blueprint-modal-sub{font-size:var(--rpt-font-size-sm, 12px);color:var(--rpt-color-text-muted, #64748b);margin:0}.btn-close-modal{background:transparent;border:none;color:var(--rpt-color-text-muted, #64748b);font-size:20px;cursor:pointer;padding:4px;line-height:1;border-radius:4px;transition:all .12s ease}.btn-close-modal:hover{color:var(--rpt-color-text, #0f172a);background:#e2e8f0}.blueprint-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;padding:20px 24px;overflow-y:auto}.blueprint-card{background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);padding:16px;cursor:pointer;display:flex;flex-direction:column;transition:all .15s ease}.blueprint-card:hover{border-color:var(--rpt-color-primary, #2563eb);transform:translateY(-2px);box-shadow:0 8px 24px #2563eb1f}.blueprint-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.blueprint-cat-badge{font-size:10.4px;font-weight:600;color:#7c3aed;background:#f5f3ff;border:1px solid #ddd6fe;padding:2px 6px;border-radius:4px}.blueprint-card-icon{color:var(--rpt-color-primary, #2563eb)}.blueprint-card-title{font-size:var(--rpt-font-size-base, 14px);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px}.blueprint-card-desc{font-size:var(--rpt-font-size-sm, 12px);color:var(--rpt-color-text-muted, #64748b);line-height:1.4;margin:0 0 16px;flex:1}.blueprint-card-footer{margin-top:auto}.btn-apply-blueprint{width:100%;background:var(--rpt-color-primary, #2563eb);color:#fff;border:none;border-radius:var(--rpt-border-radius, 6px);padding:6px 12px;font-size:12px;font-weight:600;cursor:pointer;transition:background .12s ease}.blueprint-card:hover .btn-apply-blueprint{background:var(--rpt-color-primary-hover, #1d4ed8)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: RptIconComponent, selector: "rpt-icon", inputs: ["name", "size", "color", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
434
434
|
}
|
|
435
435
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DesignerToolbarComponent, decorators: [{
|
|
436
436
|
type: Component,
|
|
437
437
|
args: [{ selector: 'rpt-designer-toolbar', standalone: true, imports: [CommonModule, FormsModule, RptIconComponent], template: `
|
|
438
|
-
<div class="toolbar-root">
|
|
438
|
+
<div class="rpt-toolbar-root">
|
|
439
439
|
<!-- Left: Panel toggle, Title, Inline Rename, + New Report, Switcher & Dirty indicator -->
|
|
440
|
-
<div class="toolbar-left">
|
|
440
|
+
<div class="rpt-toolbar-left">
|
|
441
441
|
@if (viewMode() === 'design') {
|
|
442
442
|
<button
|
|
443
443
|
type="button"
|
|
@@ -512,7 +512,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
512
512
|
</div>
|
|
513
513
|
|
|
514
514
|
<!-- Center: Mode Switcher -->
|
|
515
|
-
<div class="toolbar-center">
|
|
515
|
+
<div class="rpt-toolbar-center">
|
|
516
516
|
<div class="mode-pill-group" role="tablist" aria-label="Workbench View Mode">
|
|
517
517
|
<button
|
|
518
518
|
type="button"
|
|
@@ -548,7 +548,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
548
548
|
</div>
|
|
549
549
|
|
|
550
550
|
<!-- Right: Undo, Redo, Blueprints, Grid, Export, Save -->
|
|
551
|
-
<div class="toolbar-right">
|
|
551
|
+
<div class="rpt-toolbar-right">
|
|
552
552
|
<div class="history-group">
|
|
553
553
|
<button
|
|
554
554
|
type="button"
|
|
@@ -675,6 +675,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
675
675
|
</div>
|
|
676
676
|
}
|
|
677
677
|
</div>
|
|
678
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;background:var(--rpt-color-surface, #ffffff);color:var(--rpt-color-text, #0f172a);height:56px;font-family:var(--rpt-font-family, inherit);border-bottom:1px solid var(--rpt-color-border, #cbd5e1);box-sizing:border-box;position:relative;box-shadow:0 1px 3px #0000000a;z-index:30;flex-shrink:0}.toolbar-root{display:flex;align-items:center;justify-content:flex-start;height:100%;padding:0 16px;gap:8px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-webkit-overflow-scrolling:touch;box-sizing:border-box}.toolbar-root::-webkit-scrollbar{display:none}.toolbar-left{display:flex;align-items:center;gap:8px;min-width:0;flex-shrink:0}.toolbar-right{display:flex;align-items:center;gap:6px;min-width:0;flex-shrink:0;margin-left:auto;justify-content:flex-end}.toolbar-center{display:flex;align-items:center;justify-content:center;flex-shrink:0;margin:0 auto}.report-identity{display:flex;align-items:center;gap:8px;min-width:0}.report-name{font-weight:600;font-size:.9rem;letter-spacing:-.01em;color:var(--rpt-color-text, #0f172a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px;cursor:pointer;padding:2px 6px;border-radius:4px;border:1px dashed transparent;transition:all .12s ease}.report-name:hover{background:#f1f5f9;border-color:#cbd5e1}.report-name-input{font-weight:600;font-size:.9rem;color:var(--rpt-color-text, #0f172a);border:1px solid var(--rpt-color-primary, #2563eb);border-radius:4px;padding:2px 6px;outline:none;box-shadow:0 0 0 2px #2563eb33;background:#fff;max-width:220px;box-sizing:border-box}.btn-new-report{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;background:#f8fafc;color:var(--rpt-color-text-muted, #64748b);cursor:pointer;transition:all .12s ease}.btn-new-report:hover{background:#e2e8f0;color:var(--rpt-color-primary, #2563eb);border-color:var(--rpt-color-primary, #2563eb)}.report-switcher-select{height:26px;padding:0 6px;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;background:#f8fafc;color:var(--rpt-color-text, #334155);font-size:.75rem;font-weight:500;cursor:pointer;max-width:140px;outline:none;transition:border-color .12s ease}.report-switcher-select:hover{border-color:#94a3b8}.dirty-badge{font-size:.65rem;font-weight:600;color:#b45309;background:#fef3c7;border:1px solid #fde68a;padding:1px 6px;border-radius:9999px;white-space:nowrap;flex-shrink:0}.mode-pill-group{display:flex;background:#f1f5f9;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);padding:3px;gap:2px;flex-shrink:0}.mode-btn{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text-muted, #64748b);background:transparent;border:none;border-radius:var(--rpt-border-radius, 6px);cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease;white-space:nowrap}.mode-btn:hover{color:var(--rpt-color-text, #0f172a);background:#0000000a}.mode-btn.active{background:#fff;color:var(--rpt-color-primary, #2563eb);font-weight:600;box-shadow:0 1px 3px #00000014}.history-group{display:flex;gap:2px;flex-shrink:0}.tool-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text-secondary, #334155);background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease;white-space:nowrap;flex-shrink:0}.tool-btn:hover:not(:disabled){background:var(--rpt-color-surface-hover, #f8fafc);color:var(--rpt-color-text, #0f172a);border-color:var(--rpt-color-border-hover, #94a3b8)}.tool-btn:disabled{opacity:.45;cursor:not-allowed}.btn-panel-toggle{padding:6px 8px;color:var(--rpt-color-text-muted, #64748b)}.btn-panel-toggle:hover:not(:disabled){color:var(--rpt-color-text, #0f172a);background:var(--rpt-color-surface-hover, #f8fafc)}.btn-panel-toggle.active{background:#eff6ff;border-color:#bfdbfe;color:var(--rpt-color-primary, #2563eb)}.actions-divider{width:1px;height:20px;background:var(--rpt-color-border, #cbd5e1);flex-shrink:0}.btn-blueprints{background:#faf5ff;border-color:#e9d5ff;color:#7c3aed}.btn-blueprints:hover:not(:disabled){background:#f3e8ff;color:#6d28d9;border-color:#c084fc}.btn-save{background:var(--rpt-color-primary, #2563eb);border-color:var(--rpt-color-primary, #2563eb);color:#fff;font-weight:600}.btn-save:hover:not(:disabled){background:var(--rpt-color-primary-hover, #1d4ed8);border-color:var(--rpt-color-primary-hover, #1d4ed8)}.btn-export{background:#fff;color:var(--rpt-color-text-secondary, #334155)}.btn-grid-action{background:#f0fdf4;border-color:#bbf7d0;color:#16a34a}.btn-grid-action:hover:not(:disabled){background:#dcfce7;color:#15803d;border-color:#86efac}.btn-grid-configured{background:#eff6ff;border-color:#bfdbfe;color:#2563eb}.btn-grid-configured:hover:not(:disabled){background:#dbeafe;color:#1d4ed8;border-color:#93c5fd}@media (max-width: 1024px){.toolbar-root{padding:0 12px;gap:6px}.report-name{max-width:140px}.btn-blueprints .btn-label,.btn-export .btn-label{display:none}.tool-btn{padding:6px 9px}}@media (max-width: 900px){:host{height:48px}.toolbar-root{padding:0 8px;gap:4px}.btn-panel-toggle{display:none!important}.report-name{max-width:100px;font-size:.8125rem}.actions-divider{display:none}.tool-btn .btn-label{display:none!important}.tool-btn{padding:5px 7px;min-width:30px;height:30px;justify-content:center}.mode-pill-group{padding:2px;gap:1px}.mode-btn{padding:4px 8px;font-size:.725rem;gap:4px}}@media (max-width: 680px){:host{height:46px}.toolbar-root{padding:0 6px;gap:3px}.report-name{max-width:75px;font-size:.75rem}.dirty-badge{font-size:.6rem;padding:1px 4px}.mode-btn .mode-label{display:none}.mode-btn{padding:5px 8px}.tool-btn{min-width:28px;height:28px;padding:4px 6px}.toolbar-right{gap:3px}}.blueprint-backdrop{position:fixed;inset:0;background:#0f172a73;backdrop-filter:blur(4px);z-index:2000;animation:rpt-fade-in .15s ease-out}.blueprint-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(840px,92vw);max-height:85vh;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-xl, 12px);box-shadow:var(--rpt-box-shadow-xl, 0 20px 25px -5px rgba(0, 0, 0, .15));z-index:2001;display:flex;flex-direction:column;overflow:hidden;animation:rpt-modal-in .18s cubic-bezier(.16,1,.3,1)}@keyframes rpt-fade-in{0%{opacity:0}to{opacity:1}}@keyframes rpt-modal-in{0%{transform:translate(-50%,-46%) scale(.96);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}.blueprint-modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--rpt-color-border, #cbd5e1);background:var(--rpt-color-surface, #f8fafc)}.blueprint-modal-title{font-size:var(--rpt-font-size-lg, 1.125rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 4px}.blueprint-modal-sub{font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-text-muted, #64748b);margin:0}.btn-close-modal{background:transparent;border:none;color:var(--rpt-color-text-muted, #64748b);font-size:1.25rem;cursor:pointer;padding:4px;line-height:1;border-radius:4px;transition:all .12s ease}.btn-close-modal:hover{color:var(--rpt-color-text, #0f172a);background:#e2e8f0}.blueprint-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;padding:20px 24px;overflow-y:auto}.blueprint-card{background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);padding:16px;cursor:pointer;display:flex;flex-direction:column;transition:all .15s ease}.blueprint-card:hover{border-color:var(--rpt-color-primary, #2563eb);transform:translateY(-2px);box-shadow:0 8px 24px #2563eb1f}.blueprint-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.blueprint-cat-badge{font-size:.65rem;font-weight:600;color:#7c3aed;background:#f5f3ff;border:1px solid #ddd6fe;padding:2px 6px;border-radius:4px}.blueprint-card-icon{color:var(--rpt-color-primary, #2563eb)}.blueprint-card-title{font-size:var(--rpt-font-size-base, .875rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px}.blueprint-card-desc{font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-text-muted, #64748b);line-height:1.4;margin:0 0 16px;flex:1}.blueprint-card-footer{margin-top:auto}.btn-apply-blueprint{width:100%;background:var(--rpt-color-primary, #2563eb);color:#fff;border:none;border-radius:var(--rpt-border-radius, 6px);padding:6px 12px;font-size:.75rem;font-weight:600;cursor:pointer;transition:background .12s ease}.blueprint-card:hover .btn-apply-blueprint{background:var(--rpt-color-primary-hover, #1d4ed8)}\n"] }]
|
|
678
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;background:var(--rpt-color-surface, #ffffff);color:var(--rpt-color-text, #0f172a);height:56px;font-family:var(--rpt-font-family, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Arial, sans-serif);border-bottom:1px solid var(--rpt-color-border, #cbd5e1);box-sizing:border-box;position:relative;box-shadow:0 1px 3px #0000000a;z-index:30;flex-shrink:0}:host .rpt-toolbar-root>:is(.rpt-toolbar-left,.rpt-toolbar-center,.rpt-toolbar-right) button{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;align-self:center;width:auto;min-width:0;max-width:none;height:var(--rpt-toolbar-control-height, 32px);min-height:0;max-height:none;margin:0;font-family:var(--rpt-font-family, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Arial, sans-serif);font-size:var(--rpt-font-size-sm, 12px);font-style:normal;font-weight:500;line-height:1.25;letter-spacing:normal;text-transform:none;white-space:nowrap}:host .rpt-toolbar-root>:is(.rpt-toolbar-left,.rpt-toolbar-center,.rpt-toolbar-right) button.btn-new-report{width:26px;height:26px;padding:0}:host .rpt-toolbar-root>:is(.rpt-toolbar-left,.rpt-toolbar-center,.rpt-toolbar-right) button.mode-btn{height:calc(var(--rpt-toolbar-control-height, 32px) - 4px)}:host .rpt-toolbar-root>:is(.rpt-toolbar-left,.rpt-toolbar-center,.rpt-toolbar-right) button.btn-save,:host .rpt-toolbar-root>:is(.rpt-toolbar-left,.rpt-toolbar-center,.rpt-toolbar-right) button.mode-btn.active{font-weight:600}:host .rpt-toolbar-root input,:host .rpt-toolbar-root select{flex:0 0 auto;font-family:inherit;font-style:normal;line-height:1.25;text-transform:none;letter-spacing:normal}.rpt-toolbar-root{display:flex;align-items:center;justify-content:flex-start;height:100%;padding:0 16px;gap:8px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-webkit-overflow-scrolling:touch;box-sizing:border-box}.rpt-toolbar-root::-webkit-scrollbar{display:none}.rpt-toolbar-left{display:flex;align-items:center;gap:8px;min-width:0;flex-shrink:0}.rpt-toolbar-right{display:flex;align-items:center;gap:6px;min-width:0;flex-shrink:0;margin-left:auto;justify-content:flex-end}.rpt-toolbar-center{display:flex;align-items:center;justify-content:center;flex-shrink:0;margin:0 auto}.report-identity{display:flex;align-items:center;gap:8px;min-width:0}.report-name{font-weight:600;font-size:14.4px;letter-spacing:-.01em;color:var(--rpt-color-text, #0f172a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px;cursor:pointer;padding:2px 6px;border-radius:4px;border:1px dashed transparent;transition:all .12s ease}.report-name:hover{background:#f1f5f9;border-color:#cbd5e1}.report-name-input{font-weight:600;font-size:14.4px;color:var(--rpt-color-text, #0f172a);border:1px solid var(--rpt-color-primary, #2563eb);border-radius:4px;padding:2px 6px;outline:none;box-shadow:0 0 0 2px #2563eb33;background:#fff;max-width:220px;box-sizing:border-box}.btn-new-report{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;background:#f8fafc;color:var(--rpt-color-text-muted, #64748b);cursor:pointer;transition:all .12s ease}.btn-new-report:hover{background:#e2e8f0;color:var(--rpt-color-primary, #2563eb);border-color:var(--rpt-color-primary, #2563eb)}.report-switcher-select{height:26px;padding:0 6px;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;background:#f8fafc;color:var(--rpt-color-text, #334155);font-size:12px;font-weight:500;cursor:pointer;max-width:140px;outline:none;transition:border-color .12s ease}.report-switcher-select:hover{border-color:#94a3b8}.dirty-badge{font-size:10.4px;font-weight:600;color:#b45309;background:#fef3c7;border:1px solid #fde68a;padding:1px 6px;border-radius:9999px;white-space:nowrap;flex-shrink:0}.mode-pill-group{display:flex;background:#f1f5f9;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);padding:3px;gap:2px;flex-shrink:0}.mode-btn{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;font-size:var(--rpt-font-size-sm, 12px);font-weight:500;color:var(--rpt-color-text-muted, #64748b);background:transparent;border:none;border-radius:var(--rpt-border-radius, 6px);cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease;white-space:nowrap}.mode-btn:hover{color:var(--rpt-color-text, #0f172a);background:#0000000a}.mode-btn.active{background:#fff;color:var(--rpt-color-primary, #2563eb);font-weight:600;box-shadow:0 1px 3px #00000014}.history-group{display:flex;gap:2px;flex-shrink:0}.tool-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;font-size:var(--rpt-font-size-sm, 12px);font-weight:500;color:var(--rpt-color-text-secondary, #334155);background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease;white-space:nowrap;flex-shrink:0}.tool-btn:hover:not(:disabled){background:var(--rpt-color-surface-hover, #f8fafc);color:var(--rpt-color-text, #0f172a);border-color:var(--rpt-color-border-hover, #94a3b8)}.tool-btn:disabled{opacity:.45;cursor:not-allowed}.btn-panel-toggle{padding:6px 8px;color:var(--rpt-color-text-muted, #64748b)}.btn-panel-toggle:hover:not(:disabled){color:var(--rpt-color-text, #0f172a);background:var(--rpt-color-surface-hover, #f8fafc)}.btn-panel-toggle.active{background:#eff6ff;border-color:#bfdbfe;color:var(--rpt-color-primary, #2563eb)}.actions-divider{width:1px;height:20px;background:var(--rpt-color-border, #cbd5e1);flex-shrink:0}.btn-blueprints{background:#faf5ff;border-color:#e9d5ff;color:#7c3aed}.btn-blueprints:hover:not(:disabled){background:#f3e8ff;color:#6d28d9;border-color:#c084fc}.btn-save{background:var(--rpt-color-primary, #2563eb);border-color:var(--rpt-color-primary, #2563eb);color:#fff;font-weight:600}.btn-save:hover:not(:disabled){background:var(--rpt-color-primary-hover, #1d4ed8);border-color:var(--rpt-color-primary-hover, #1d4ed8)}.btn-export{background:#fff;color:var(--rpt-color-text-secondary, #334155)}.btn-grid-action{background:#f0fdf4;border-color:#bbf7d0;color:#16a34a}.btn-grid-action:hover:not(:disabled){background:#dcfce7;color:#15803d;border-color:#86efac}.btn-grid-configured{background:#eff6ff;border-color:#bfdbfe;color:#2563eb}.btn-grid-configured:hover:not(:disabled){background:#dbeafe;color:#1d4ed8;border-color:#93c5fd}@media (max-width: 1024px){.rpt-toolbar-root{padding:0 12px;gap:6px}.report-name{max-width:140px}.btn-blueprints .btn-label,.btn-export .btn-label{display:none}.tool-btn{padding:6px 9px}}@media (max-width: 900px){:host{--rpt-toolbar-control-height: 30px}:host{height:48px}.rpt-toolbar-root{padding:0 8px;gap:4px}.btn-panel-toggle{display:none!important}.report-name{max-width:100px;font-size:13px}.actions-divider{display:none}.tool-btn .btn-label{display:none!important}.tool-btn{padding:5px 7px;min-width:30px;height:30px;justify-content:center}.mode-pill-group{padding:2px;gap:1px}.mode-btn{padding:4px 8px;font-size:11.6px;gap:4px}}@media (max-width: 680px){:host{--rpt-toolbar-control-height: 28px}:host{height:46px}.rpt-toolbar-root{padding:0 6px;gap:3px}.report-name{max-width:75px;font-size:12px}.dirty-badge{font-size:9.6px;padding:1px 4px}.mode-btn .mode-label{display:none}.mode-btn{padding:5px 8px}.tool-btn{min-width:28px;height:28px;padding:4px 6px}.rpt-toolbar-right{gap:3px}}.blueprint-backdrop{position:fixed;inset:0;background:#0f172a73;backdrop-filter:blur(4px);z-index:2000;animation:rpt-fade-in .15s ease-out}.blueprint-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(840px,92vw);max-height:85vh;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-xl, 12px);box-shadow:var(--rpt-box-shadow-xl, 0 20px 25px -5px rgba(0, 0, 0, .15));z-index:2001;display:flex;flex-direction:column;overflow:hidden;animation:rpt-modal-in .18s cubic-bezier(.16,1,.3,1)}@keyframes rpt-fade-in{0%{opacity:0}to{opacity:1}}@keyframes rpt-modal-in{0%{transform:translate(-50%,-46%) scale(.96);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}.blueprint-modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--rpt-color-border, #cbd5e1);background:var(--rpt-color-surface, #f8fafc)}.blueprint-modal-title{font-size:var(--rpt-font-size-lg, 18px);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 4px}.blueprint-modal-sub{font-size:var(--rpt-font-size-sm, 12px);color:var(--rpt-color-text-muted, #64748b);margin:0}.btn-close-modal{background:transparent;border:none;color:var(--rpt-color-text-muted, #64748b);font-size:20px;cursor:pointer;padding:4px;line-height:1;border-radius:4px;transition:all .12s ease}.btn-close-modal:hover{color:var(--rpt-color-text, #0f172a);background:#e2e8f0}.blueprint-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;padding:20px 24px;overflow-y:auto}.blueprint-card{background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);padding:16px;cursor:pointer;display:flex;flex-direction:column;transition:all .15s ease}.blueprint-card:hover{border-color:var(--rpt-color-primary, #2563eb);transform:translateY(-2px);box-shadow:0 8px 24px #2563eb1f}.blueprint-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.blueprint-cat-badge{font-size:10.4px;font-weight:600;color:#7c3aed;background:#f5f3ff;border:1px solid #ddd6fe;padding:2px 6px;border-radius:4px}.blueprint-card-icon{color:var(--rpt-color-primary, #2563eb)}.blueprint-card-title{font-size:var(--rpt-font-size-base, 14px);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px}.blueprint-card-desc{font-size:var(--rpt-font-size-sm, 12px);color:var(--rpt-color-text-muted, #64748b);line-height:1.4;margin:0 0 16px;flex:1}.blueprint-card-footer{margin-top:auto}.btn-apply-blueprint{width:100%;background:var(--rpt-color-primary, #2563eb);color:#fff;border:none;border-radius:var(--rpt-border-radius, 6px);padding:6px 12px;font-size:12px;font-weight:600;cursor:pointer;transition:background .12s ease}.blueprint-card:hover .btn-apply-blueprint{background:var(--rpt-color-primary-hover, #1d4ed8)}\n"] }]
|
|
679
679
|
}], ctorParameters: () => [] });
|
|
680
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXItdG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9mZWF0dXJlcy9kZXNpZ25lci9jb21wb25lbnRzL3Rvb2xiYXIvZGVzaWduZXItdG9vbGJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDakYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDbkcsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNyRixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQW9CLE1BQU0sdUNBQXVDLENBQUM7QUFDL0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFFN0YsT0FBTyxFQUFFLHFCQUFxQixFQUFtQixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOzs7QUF5dUJ4RixNQUFNLE9BQU8sd0JBQXdCO0lBQ2xCLFFBQVEsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7SUFDNUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixZQUFZLEdBQUcsTUFBTSxDQUFnQixJQUFJLENBQUMsQ0FBQztJQUMzQyxpQkFBaUIsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsYUFBYSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQzdDLGVBQWUsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNoRCxhQUFhLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDckUsV0FBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRXJFLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQztJQUMzQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7SUFDdkMsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO0lBQ3JDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztJQUNyQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7SUFFckMsb0JBQW9CLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQzlDLG1CQUFtQixHQUFzQixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRTdFLGFBQWEsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDdkMsU0FBUyxHQUFHLE1BQU0sQ0FBUyxFQUFFLENBQUMsQ0FBQztJQUMvQixlQUFlLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFdEUsb0JBQW9CLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQzdDLHFCQUFxQixHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUM5QyxlQUFlLEdBQUcsTUFBTSxFQUFRLENBQUM7SUFDakMsZ0JBQWdCLEdBQUcsTUFBTSxFQUFRLENBQUM7SUFFbEMsYUFBYSxHQUFHLE1BQU0sRUFBUSxDQUFDO0lBRXhDO1FBQ0UsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3hELFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JGLENBQUMsRUFBRSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUE0QixDQUFDO1lBQ3hGLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNoQixPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkIsQ0FBQztRQUNILENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFBRSxPQUFPO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU5QixJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkQsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBOEIsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM1QixPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDbkIsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUM1QixzR0FBc0csQ0FDdkcsQ0FBQztZQUNGLElBQUksQ0FBQyxjQUFjO2dCQUFFLE9BQU87UUFDOUIsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUM7WUFDaEMsRUFBRSxFQUFFLEtBQUs7WUFDVCxJQUFJLEVBQUUsbUJBQW1CO1lBQ3pCLFdBQVcsRUFBRSw2REFBNkQ7WUFDMUUsYUFBYSxFQUFFLENBQUM7WUFDaEIsT0FBTyxFQUFFLENBQUM7WUFDVixNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFO1lBQy9ELFVBQVUsRUFBRSxFQUFFO1lBQ2QsVUFBVSxFQUFFLEVBQUU7WUFDZCxXQUFXLEVBQUUsRUFBRTtTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU87UUFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVksQ0FBQyxhQUFhLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDLEVBQzVFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUFnQixFQUFFLE1BQTBCO1FBQ3pELE1BQU0sT0FBTyxHQUFHLEdBQUcsRUFBRSxHQUFHLElBQUksTUFBTTtZQUFFLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFBQyxPQUFPLEVBQUUsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBQzFFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLHNFQUFzRSxDQUFDLEVBQUUsQ0FBQztZQUFDLE9BQU8sRUFBRSxDQUFDO1lBQUMsT0FBTztRQUFDLENBQUM7UUFDOUgsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7WUFBQyxPQUFPLEVBQUUsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBQ3pHLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFZLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ25HLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLEtBQUs7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxrRkFBa0YsQ0FBQyxDQUFDO1lBQ3JJLE9BQU8seUJBQXlCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQy9HLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sTUFBTSxDQUFDLEdBQVc7UUFDeEIsT0FBTyxHQUFHO2FBQ1AsV0FBVyxFQUFFO2FBQ2IsSUFBSSxFQUFFO2FBQ04sT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7YUFDeEIsT0FBTyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUM7YUFDeEIsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsT0FBTyxDQUFDLElBQXNCO1FBQzVCLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGNBQWMsQ0FBQyxXQUFtQjtRQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxhQUFhO1FBQ1gsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRCxNQUFNLFdBQVcsR0FBeUI7WUFDeEMsWUFBWSxFQUFFLFVBQVUsRUFBRSxFQUFFLElBQUksU0FBUztZQUN6QyxPQUFPLEVBQUU7Z0JBQ1AsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQy9FLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2FBQ3BGO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixRQUFRLEVBQUUsRUFBRTtnQkFDWixjQUFjLEVBQUUsSUFBSTtnQkFDcEIsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLE9BQU8sRUFBRSxJQUFJO2dCQUNiLFlBQVksRUFBRSxJQUFJO2dCQUNsQixTQUFTLEVBQUUsSUFBSTthQUNoQjtTQUNGLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELFVBQVU7UUFDUixNQUFNLE9BQU8sR0FDWCwrQkFBK0I7WUFDL0Isa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakUsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuRCxjQUFjLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM3QyxjQUFjLENBQUMsWUFBWSxDQUN6QixVQUFVLEVBQ1YsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLG1CQUFtQixPQUFPLENBQ3RELENBQUM7UUFDRixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMxQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzFCLENBQUM7d0dBak1VLHdCQUF3Qjs0RkFBeEIsd0JBQXdCLGdpQkFsdUJ6Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlQVCwweFJBbFBTLFlBQVksOEJBQUUsV0FBVyw0T0FBRSxnQkFBZ0I7OzRGQW11QjFDLHdCQUF3QjtrQkF0dUJwQyxTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixDQUFDLFlBQzVDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaVBULG1CQStlZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcG9ydFJlcXVlc3RTY29wZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvdXRpbHMvcmVwb3J0LXJlcXVlc3Qtc2NvcGUnO1xuaW1wb3J0IHsgbm9ybWFsaXplUmVwb3J0RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uLy4uL3BlcnNpc3RlbmNlL3NlcnZpY2VzL3NjaGVtYS12YWxpZGF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERlc2lnbmVyRW5kcG9pbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Rlc2lnbmVyLWVuZHBvaW50cy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxuICB1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRGVzaWduZXJTdGF0ZVNlcnZpY2UsIERlc2lnbmVyVmlld01vZGUgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kZXNpZ25lci1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJwdEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9wcmltaXRpdmVzL2NvbXBvbmVudHMvaWNvbi9ycHQtaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVwb3J0R3JpZERlZmluaXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtZ3JpZC5tb2RlbCc7XG5pbXBvcnQgeyBSZXBvcnRUZW1wbGF0ZVNlcnZpY2UsIFJlcG9ydEJsdWVwcmludCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlcG9ydC10ZW1wbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcG9ydFN0b3JlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3BlcnNpc3RlbmNlL3NlcnZpY2VzL3JlcG9ydC1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcG9ydERlZmluaXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtZGVmaW5pdGlvbi5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JwdC1kZXNpZ25lci10b29sYmFyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFJwdEljb25Db21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJ0b29sYmFyLXJvb3RcIj5cbiAgICAgIDwhLS0gTGVmdDogUGFuZWwgdG9nZ2xlLCBUaXRsZSwgSW5saW5lIFJlbmFtZSwgKyBOZXcgUmVwb3J0LCBTd2l0Y2hlciAmIERpcnR5IGluZGljYXRvciAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0b29sYmFyLWxlZnRcIj5cbiAgICAgICAgQGlmICh2aWV3TW9kZSgpID09PSAnZGVzaWduJykge1xuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0b29sLWJ0biBidG4tcGFuZWwtdG9nZ2xlXCJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiIWlzTGVmdFBhbmVsQ29sbGFwc2VkKClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUxlZnRQYW5lbC5lbWl0KClcIlxuICAgICAgICAgICAgW3RpdGxlXT1cImlzTGVmdFBhbmVsQ29sbGFwc2VkKCkgPyAnU2hvdyBDb21wb25lbnQgUGFsZXR0ZSAoQ3RybCtCKScgOiAnSGlkZSBDb21wb25lbnQgUGFsZXR0ZSAoQ3RybCtCKSdcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpc0xlZnRQYW5lbENvbGxhcHNlZCgpID8gJ1Nob3cgQ29tcG9uZW50IFBhbGV0dGUgKEN0cmwrQiknIDogJ0hpZGUgQ29tcG9uZW50IFBhbGV0dGUgKEN0cmwrQiknXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cnB0LWljb24gbmFtZT1cInBhbmVsLWxlZnRcIiBbc2l6ZV09XCIxNFwiIC8+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlcG9ydC1pZGVudGl0eVwiPlxuICAgICAgICAgIEBpZiAoaXNFZGl0aW5nTmFtZSgpKSB7XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBjbGFzcz1cInJlcG9ydC1uYW1lLWlucHV0XCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cIm5hbWVEcmFmdCgpXCJcbiAgICAgICAgICAgICAgKGlucHV0KT1cIm5hbWVEcmFmdC5zZXQoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIlxuICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJzYXZlUmVuYW1lKClcIlxuICAgICAgICAgICAgICAoa2V5ZG93bi5lc2NhcGUpPVwiY2FuY2VsUmVuYW1lKClcIlxuICAgICAgICAgICAgICAoYmx1cik9XCJzYXZlUmVuYW1lKClcIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiUmVwb3J0IE5hbWVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwicmVwb3J0LW5hbWVcIlxuICAgICAgICAgICAgICAoZGJsY2xpY2spPVwic3RhcnRSZW5hbWUoKVwiXG4gICAgICAgICAgICAgIHRpdGxlPVwiRG91YmxlLWNsaWNrIHRvIHJlbmFtZSByZXBvcnRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBkZWZpbml0aW9uKCkubmFtZSB8fCAnVW50aXRsZWQgUmVwb3J0JyB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJidG4tbmV3LXJlcG9ydFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY3JlYXRlTmV3UmVwb3J0KClcIlxuICAgICAgICAgICAgdGl0bGU9XCJDcmVhdGUgbmV3IHJlcG9ydCBwYWdlICgrKVwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ3JlYXRlIG5ldyByZXBvcnQgcGFnZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJwbHVzXCIgW3NpemVdPVwiMTJcIiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgQGlmIChjYXRhbG9nTG9hZGluZygpKSB7IDxzcGFuIHJvbGU9XCJzdGF0dXNcIj5Mb2FkaW5nIHNhdmVkIHJlcG9ydHMuLi48L3NwYW4+IH1cbiAgICAgICAgICBAaWYgKGNhdGFsb2dFcnJvcigpKSB7IDxzcGFuIHJvbGU9XCJhbGVydFwiPnt7IGNhdGFsb2dFcnJvcigpIH19IDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZWZyZXNoUmVwb3J0cygpXCI+UmV0cnk8L2J1dHRvbj48L3NwYW4+IH1cbiAgICAgICAgICBAaWYgKCFjYXRhbG9nTG9hZGluZygpICYmICFjYXRhbG9nRXJyb3IoKSAmJiByZXBvcnRTdW1tYXJpZXMoKS5sZW5ndGggPT09IDApIHsgPHNwYW4+Tm8gc2F2ZWQgcmVwb3J0czwvc3Bhbj4gfVxuICAgICAgICAgIEBpZiAocmVwb3J0U3VtbWFyaWVzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICBjbGFzcz1cInJlcG9ydC1zd2l0Y2hlci1zZWxlY3RcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwiZGVmaW5pdGlvbigpLmlkXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzU3dpdGNoaW5nUmVwb3J0KClcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uU3dpdGNoUmVwb3J0KCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUsICRhbnkoJGV2ZW50LnRhcmdldCkpXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJTd2l0Y2ggcmVwb3J0XCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlN3aXRjaCByZXBvcnRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJkZWZpbml0aW9uKCkuaWRcIiBkaXNhYmxlZCBzZWxlY3RlZCBoaWRkZW4+XG4gICAgICAgICAgICAgICAge3sgZGVmaW5pdGlvbigpLm5hbWUgfHwgJ0N1cnJlbnQgUmVwb3J0JyB9fVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiByZXBvcnRTdW1tYXJpZXMoKTsgdHJhY2sgaXRlbS5pZCkge1xuICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIml0ZW0uaWRcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKGlzRGlydHkoKSkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkaXJ0eS1iYWRnZVwiIHRpdGxlPVwiVW5zYXZlZCBjaGFuZ2VzXCI+4pePIFVuc2F2ZWQ8L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIENlbnRlcjogTW9kZSBTd2l0Y2hlciAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0b29sYmFyLWNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kZS1waWxsLWdyb3VwXCIgcm9sZT1cInRhYmxpc3RcIiBhcmlhLWxhYmVsPVwiV29ya2JlbmNoIFZpZXcgTW9kZVwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJtb2RlLWJ0blwiXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInZpZXdNb2RlKCkgPT09ICdkZXNpZ24nXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZXRNb2RlKCdkZXNpZ24nKVwiXG4gICAgICAgICAgICB0aXRsZT1cIlZpc3VhbCBEZXNpZ24gQ2FudmFzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cnB0LWljb24gbmFtZT1cImVkaXRcIiBbc2l6ZV09XCIxNFwiIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1vZGUtbGFiZWxcIj5EZXNpZ248L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cIm1vZGUtYnRuXCJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwidmlld01vZGUoKSA9PT0gJ3ByZXZpZXcnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZXRNb2RlKCdwcmV2aWV3JylcIlxuICAgICAgICAgICAgdGl0bGU9XCJMaXZlIFJ1bnRpbWUgUHJldmlld1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJleWVcIiBbc2l6ZV09XCIxNFwiIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1vZGUtbGFiZWxcIj5QcmV2aWV3PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJtb2RlLWJ0blwiXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInZpZXdNb2RlKCkgPT09ICdqc29uJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwic2V0TW9kZSgnanNvbicpXCJcbiAgICAgICAgICAgIHRpdGxlPVwiSlNPTiBSZXBvcnQgU2NoZW1hXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cnB0LWljb24gbmFtZT1cImNvZGVcIiBbc2l6ZV09XCIxNFwiIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1vZGUtbGFiZWxcIj5KU09OPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFJpZ2h0OiBVbmRvLCBSZWRvLCBCbHVlcHJpbnRzLCBHcmlkLCBFeHBvcnQsIFNhdmUgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwidG9vbGJhci1yaWdodFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGlzdG9yeS1ncm91cFwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0b29sLWJ0blwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhblVuZG8oKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidW5kbygpXCJcbiAgICAgICAgICAgIHRpdGxlPVwiVW5kbyAoQ3RybCtaKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJ1bmRvXCIgW3NpemVdPVwiMTRcIiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0b29sLWJ0blwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhblJlZG8oKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwicmVkbygpXCJcbiAgICAgICAgICAgIHRpdGxlPVwiUmVkbyAoQ3RybCtZKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJyZWRvXCIgW3NpemVdPVwiMTRcIiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKHZpZXdNb2RlKCkgPT09ICdkZXNpZ24nKSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInRvb2wtYnRuIGJ0bi1wYW5lbC10b2dnbGVcIlxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCIhaXNSaWdodFBhbmVsQ29sbGFwc2VkKClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJpZ2h0UGFuZWwuZW1pdCgpXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJpc1JpZ2h0UGFuZWxDb2xsYXBzZWQoKSA/ICdTaG93IFByb3BlcnR5IEVkaXRvciAoQ3RybCtBbHQrQiknIDogJ0hpZGUgUHJvcGVydHkgRWRpdG9yIChDdHJsK0FsdCtCKSdcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpc1JpZ2h0UGFuZWxDb2xsYXBzZWQoKSA/ICdTaG93IFByb3BlcnR5IEVkaXRvciAoQ3RybCtBbHQrQiknIDogJ0hpZGUgUHJvcGVydHkgRWRpdG9yIChDdHJsK0FsdCtCKSdcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwicGFuZWwtcmlnaHRcIiBbc2l6ZV09XCIxNFwiIC8+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy1kaXZpZGVyXCI+PC9kaXY+XG5cbiAgICAgICAgPCEtLSAxLUNsaWNrIEJsdWVwcmludHMgR2FsbGVyeSBCdXR0b24gLS0+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cInRvb2wtYnRuIGJ0bi1ibHVlcHJpbnRzXCJcbiAgICAgICAgICAoY2xpY2spPVwib3BlblRlbXBsYXRlc01vZGFsKClcIlxuICAgICAgICAgIHRpdGxlPVwiU3RhcnQgZnJvbSBwcmUtY29uZmlndXJlZCBlbnRlcnByaXNlIGJsdWVwcmludHNcIlxuICAgICAgICA+XG4gICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJsYXllcnNcIiBbc2l6ZV09XCIxNFwiIC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJidG4tbGFiZWxcIj5CbHVlcHJpbnRzPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8IS0tIEFkZCAvIENvbmZpZ3VyZSBHcmlkIFF1aWNrIEJ1dHRvbiAtLT5cbiAgICAgICAgQGlmICghZGVmaW5pdGlvbigpLmdyaWQpIHtcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwidG9vbC1idG4gYnRuLWdyaWQtYWN0aW9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhZGRSZXN1bHRHcmlkKClcIlxuICAgICAgICAgICAgdGl0bGU9XCJBdHRhY2ggYSBSZXN1bHQgRGF0YSBHcmlkIChVbHRyYUdyaWQgLyBUYWJsZSkgdG8gdGhpcyByZXBvcnRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwidGFibGVcIiBbc2l6ZV09XCIxNFwiIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ0bi1sYWJlbFwiPisgQWRkIEdyaWQ8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0b29sLWJ0biBidG4tZ3JpZC1jb25maWd1cmVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RHcmlkU2V0dGluZ3MoKVwiXG4gICAgICAgICAgICB0aXRsZT1cIkNvbmZpZ3VyZSBSZXN1bHQgRGF0YSBHcmlkIGNvbHVtbnMgYW5kIHBhZ2luYXRpb25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwidGFibGVcIiBbc2l6ZV09XCIxNFwiIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ0bi1sYWJlbFwiPkdyaWQgKHt7IGRlZmluaXRpb24oKS5ncmlkPy5jb2x1bW5zPy5sZW5ndGggPz8gMCB9fSk8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy1kaXZpZGVyXCI+PC9kaXY+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwidG9vbC1idG4gYnRuLWV4cG9ydFwiXG4gICAgICAgICAgKGNsaWNrKT1cImV4cG9ydEpzb24oKVwiXG4gICAgICAgICAgdGl0bGU9XCJEb3dubG9hZCBKU09OIERlZmluaXRpb25cIlxuICAgICAgICA+XG4gICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJkb3dubG9hZFwiIFtzaXplXT1cIjE0XCIgLz5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ0bi1sYWJlbFwiPkV4cG9ydDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwidG9vbC1idG4gYnRuLXNhdmVcIlxuICAgICAgICAgIChjbGljayk9XCJzYXZlUmVwb3J0KClcIlxuICAgICAgICAgIHRpdGxlPVwiU2F2ZSBSZXBvcnQgRGVmaW5pdGlvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8cnB0LWljb24gbmFtZT1cInNhdmVcIiBbc2l6ZV09XCIxNFwiIC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJidG4tbGFiZWxcIj5TYXZlPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIEJsdWVwcmludHMgR2FsbGVyeSBNb2RhbCAtLT5cbiAgICAgIEBpZiAoaXNUZW1wbGF0ZXNNb2RhbE9wZW4oKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYmx1ZXByaW50LWJhY2tkcm9wXCIgKGNsaWNrKT1cImNsb3NlVGVtcGxhdGVzTW9kYWwoKVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmx1ZXByaW50LW1vZGFsXCIgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbW9kYWw9XCJ0cnVlXCIgYXJpYS1sYWJlbD1cIlN0YXJ0ZXIgUmVwb3J0IEJsdWVwcmludHNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmx1ZXByaW50LW1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiYmx1ZXByaW50LW1vZGFsLXRpdGxlXCI+U3RhcnRlciBSZXBvcnQgQmx1ZXByaW50czwvaDM+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiYmx1ZXByaW50LW1vZGFsLXN1YlwiPkNob29zZSBhIHByZS1jb25maWd1cmVkIGFyY2hpdGVjdHVyZSBwYXR0ZXJuIHRvIGp1bXBzdGFydCByZXBvcnQgY3JlYXRpb24uPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1jbG9zZS1tb2RhbFwiIChjbGljayk9XCJjbG9zZVRlbXBsYXRlc01vZGFsKClcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIj7inJU8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmx1ZXByaW50LWdyaWRcIj5cbiAgICAgICAgICAgIEBmb3IgKGJwIG9mIGF2YWlsYWJsZUJsdWVwcmludHM7IHRyYWNrIGJwLmlkKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJibHVlcHJpbnQtY2FyZFwiIChjbGljayk9XCJhcHBseUJsdWVwcmludChicC5pZClcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmx1ZXByaW50LWNhcmQtdG9wXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJsdWVwcmludC1jYXQtYmFkZ2VcIj57eyBicC5jYXRlZ29yeSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJibHVlcHJpbnQtY2FyZC1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxycHQtaWNvbiBbbmFtZV09XCJicC5pY29uIHx8ICd0YWJsZSdcIiBbc2l6ZV09XCIyMFwiIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJibHVlcHJpbnQtY2FyZC10aXRsZVwiPnt7IGJwLm5hbWUgfX08L2g0PlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYmx1ZXByaW50LWNhcmQtZGVzY1wiPnt7IGJwLmRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJibHVlcHJpbnQtY2FyZC1mb290ZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWFwcGx5LWJsdWVwcmludFwiPlxuICAgICAgICAgICAgICAgICAgICBVc2UgQmx1ZXByaW50IOKGklxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcblxuICBzdHlsZXM6IFtgXG4gICAgOmhvc3Qge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtY29sb3Itc3VyZmFjZSwgI2ZmZmZmZik7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQsICMwZjE3MmEpO1xuICAgICAgaGVpZ2h0OiA1NnB4O1xuICAgICAgZm9udC1mYW1pbHk6IHZhcigtLXJwdC1mb250LWZhbWlseSwgaW5oZXJpdCk7XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2NiZDVlMSk7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG4gICAgICB6LWluZGV4OiAzMDtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cbiAgICAudG9vbGJhci1yb290IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgcGFkZGluZzogMCAxNnB4O1xuICAgICAgZ2FwOiA4cHg7XG4gICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAgICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lO1xuICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB9XG4gICAgLnRvb2xiYXItcm9vdDo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gICAgLnRvb2xiYXItbGVmdCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogOHB4O1xuICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxuICAgIC50b29sYmFyLXJpZ2h0IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZ2FwOiA2cHg7XG4gICAgICBtaW4td2lkdGg6IDA7XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICB9XG4gICAgLnRvb2xiYXItY2VudGVyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgICAucmVwb3J0LWlkZW50aXR5IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZ2FwOiA4cHg7XG4gICAgICBtaW4td2lkdGg6IDA7XG4gICAgfVxuICAgIC5yZXBvcnQtbmFtZSB7XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dCwgIzBmMTcyYSk7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgbWF4LXdpZHRoOiAyMjBweDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHBhZGRpbmc6IDJweCA2cHg7XG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICBib3JkZXI6IDFweCBkYXNoZWQgdHJhbnNwYXJlbnQ7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMTIwbXMgZWFzZTtcbiAgICB9XG4gICAgLnJlcG9ydC1uYW1lOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICNmMWY1Zjk7XG4gICAgICBib3JkZXItY29sb3I6ICNjYmQ1ZTE7XG4gICAgfVxuICAgIC5yZXBvcnQtbmFtZS1pbnB1dCB7XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQsICMwZjE3MmEpO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgcGFkZGluZzogMnB4IDZweDtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiYSgzNywgOTksIDIzNSwgMC4yKTtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICBtYXgtd2lkdGg6IDIyMHB4O1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB9XG4gICAgLmJ0bi1uZXctcmVwb3J0IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgd2lkdGg6IDI2cHg7XG4gICAgICBoZWlnaHQ6IDI2cHg7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2NiZDVlMSk7XG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICBiYWNrZ3JvdW5kOiAjZjhmYWZjO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LW11dGVkLCAjNjQ3NDhiKTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHRyYW5zaXRpb246IGFsbCAxMjBtcyBlYXNlO1xuICAgIH1cbiAgICAuYnRuLW5ldy1yZXBvcnQ6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogI2UyZThmMDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICBib3JkZXItY29sb3I6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICB9XG4gICAgLnJlcG9ydC1zd2l0Y2hlci1zZWxlY3Qge1xuICAgICAgaGVpZ2h0OiAyNnB4O1xuICAgICAgcGFkZGluZzogMCA2cHg7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ycHQtY29sb3ItYm9yZGVyLCAjY2JkNWUxKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgIGJhY2tncm91bmQ6ICNmOGZhZmM7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQsICMzMzQxNTUpO1xuICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIG1heC13aWR0aDogMTQwcHg7XG4gICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDEyMG1zIGVhc2U7XG4gICAgfVxuICAgIC5yZXBvcnQtc3dpdGNoZXItc2VsZWN0OmhvdmVyIHtcbiAgICAgIGJvcmRlci1jb2xvcjogIzk0YTNiODtcbiAgICB9XG4gICAgLmRpcnR5LWJhZGdlIHtcbiAgICAgIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBjb2xvcjogI2I0NTMwOTtcbiAgICAgIGJhY2tncm91bmQ6ICNmZWYzYzc7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjZmRlNjhhO1xuICAgICAgcGFkZGluZzogMXB4IDZweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG4gICAgLm1vZGUtcGlsbC1ncm91cCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYmFja2dyb3VuZDogI2YxZjVmOTtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXJwdC1jb2xvci1ib3JkZXIsICNjYmQ1ZTEpO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMtbGcsIDhweCk7XG4gICAgICBwYWRkaW5nOiAzcHg7XG4gICAgICBnYXA6IDJweDtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cbiAgICAubW9kZS1idG4ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZ2FwOiA2cHg7XG4gICAgICBwYWRkaW5nOiA1cHggMTJweDtcbiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tcnB0LWZvbnQtc2l6ZS1zbSwgMC43NXJlbSk7XG4gICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LW11dGVkLCAjNjQ3NDhiKTtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMsIDZweCk7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tcnB0LXRyYW5zaXRpb24tc3BlZWQsIDE1MG1zKSBlYXNlO1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG4gICAgLm1vZGUtYnRuOmhvdmVyIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dCwgIzBmMTcyYSk7XG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDQpO1xuICAgIH1cbiAgICAubW9kZS1idG4uYWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMDgpO1xuICAgIH1cbiAgICAuaGlzdG9yeS1ncm91cCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZ2FwOiAycHg7XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG4gICAgLnRvb2wtYnRuIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogNnB4O1xuICAgICAgcGFkZGluZzogNnB4IDEycHg7XG4gICAgICBmb250LXNpemU6IHZhcigtLXJwdC1mb250LXNpemUtc20sIDAuNzVyZW0pO1xuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dC1zZWNvbmRhcnksICMzMzQxNTUpO1xuICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXJwdC1jb2xvci1ib3JkZXIsICNjYmQ1ZTEpO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMsIDZweCk7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tcnB0LXRyYW5zaXRpb24tc3BlZWQsIDE1MG1zKSBlYXNlO1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cbiAgICAudG9vbC1idG46aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LWNvbG9yLXN1cmZhY2UtaG92ZXIsICNmOGZhZmMpO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LCAjMGYxNzJhKTtcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcnB0LWNvbG9yLWJvcmRlci1ob3ZlciwgIzk0YTNiOCk7XG4gICAgfVxuICAgIC50b29sLWJ0bjpkaXNhYmxlZCB7XG4gICAgICBvcGFjaXR5OiAwLjQ1O1xuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICB9XG4gICAgLmJ0bi1wYW5lbC10b2dnbGUge1xuICAgICAgcGFkZGluZzogNnB4IDhweDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dC1tdXRlZCwgIzY0NzQ4Yik7XG4gICAgfVxuICAgIC5idG4tcGFuZWwtdG9nZ2xlOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dCwgIzBmMTcyYSk7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtY29sb3Itc3VyZmFjZS1ob3ZlciwgI2Y4ZmFmYyk7XG4gICAgfVxuICAgIC5idG4tcGFuZWwtdG9nZ2xlLmFjdGl2ZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZWZmNmZmO1xuICAgICAgYm9yZGVyLWNvbG9yOiAjYmZkYmZlO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICB9XG4gICAgLmFjdGlvbnMtZGl2aWRlciB7XG4gICAgICB3aWR0aDogMXB4O1xuICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2NiZDVlMSk7XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG4gICAgLmJ0bi1ibHVlcHJpbnRzIHtcbiAgICAgIGJhY2tncm91bmQ6ICNmYWY1ZmY7XG4gICAgICBib3JkZXItY29sb3I6ICNlOWQ1ZmY7XG4gICAgICBjb2xvcjogIzdjM2FlZDtcbiAgICB9XG4gICAgLmJ0bi1ibHVlcHJpbnRzOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgIGJhY2tncm91bmQ6ICNmM2U4ZmY7XG4gICAgICBjb2xvcjogIzZkMjhkOTtcbiAgICAgIGJvcmRlci1jb2xvcjogI2MwODRmYztcbiAgICB9XG4gICAgLmJ0bi1zYXZlIHtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgIH1cbiAgICAuYnRuLXNhdmU6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnktaG92ZXIsICMxZDRlZDgpO1xuICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeS1ob3ZlciwgIzFkNGVkOCk7XG4gICAgfVxuICAgIC5idG4tZXhwb3J0IHtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQtc2Vjb25kYXJ5LCAjMzM0MTU1KTtcbiAgICB9XG4gICAgLmJ0bi1ncmlkLWFjdGlvbiB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZjBmZGY0O1xuICAgICAgYm9yZGVyLWNvbG9yOiAjYmJmN2QwO1xuICAgICAgY29sb3I6ICMxNmEzNGE7XG4gICAgfVxuICAgIC5idG4tZ3JpZC1hY3Rpb246aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgICAgYmFja2dyb3VuZDogI2RjZmNlNztcbiAgICAgIGNvbG9yOiAjMTU4MDNkO1xuICAgICAgYm9yZGVyLWNvbG9yOiAjODZlZmFjO1xuICAgIH1cbiAgICAuYnRuLWdyaWQtY29uZmlndXJlZCB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZWZmNmZmO1xuICAgICAgYm9yZGVyLWNvbG9yOiAjYmZkYmZlO1xuICAgICAgY29sb3I6ICMyNTYzZWI7XG4gICAgfVxuICAgIC5idG4tZ3JpZC1jb25maWd1cmVkOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgIGJhY2tncm91bmQ6ICNkYmVhZmU7XG4gICAgICBjb2xvcjogIzFkNGVkODtcbiAgICAgIGJvcmRlci1jb2xvcjogIzkzYzVmZDtcbiAgICB9XG5cbiAgICBAbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gICAgICAudG9vbGJhci1yb290IHtcbiAgICAgICAgcGFkZGluZzogMCAxMnB4O1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgIH1cbiAgICAgIC5yZXBvcnQtbmFtZSB7XG4gICAgICAgIG1heC13aWR0aDogMTQwcHg7XG4gICAgICB9XG4gICAgICAuYnRuLWJsdWVwcmludHMgLmJ0bi1sYWJlbCxcbiAgICAgIC5idG4tZXhwb3J0IC5idG4tbGFiZWwge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgICAgLnRvb2wtYnRuIHtcbiAgICAgICAgcGFkZGluZzogNnB4IDlweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHtcbiAgICAgIDpob3N0IHtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgICAgfVxuICAgICAgLnRvb2xiYXItcm9vdCB7XG4gICAgICAgIHBhZGRpbmc6IDAgOHB4O1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgIH1cbiAgICAgIC5idG4tcGFuZWwtdG9nZ2xlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgICAgLnJlcG9ydC1uYW1lIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDBweDtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICB9XG4gICAgICAuYWN0aW9ucy1kaXZpZGVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICAgIC50b29sLWJ0biAuYnRuLWxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgICAgLnRvb2wtYnRuIHtcbiAgICAgICAgcGFkZGluZzogNXB4IDdweDtcbiAgICAgICAgbWluLXdpZHRoOiAzMHB4O1xuICAgICAgICBoZWlnaHQ6IDMwcHg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgfVxuICAgICAgLm1vZGUtcGlsbC1ncm91cCB7XG4gICAgICAgIHBhZGRpbmc6IDJweDtcbiAgICAgICAgZ2FwOiAxcHg7XG4gICAgICB9XG4gICAgICAubW9kZS1idG4ge1xuICAgICAgICBwYWRkaW5nOiA0cHggOHB4O1xuICAgICAgICBmb250LXNpemU6IDAuNzI1cmVtO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAbWVkaWEgKG1heC13aWR0aDogNjgwcHgpIHtcbiAgICAgIDpob3N0IHtcbiAgICAgICAgaGVpZ2h0OiA0NnB4O1xuICAgICAgfVxuICAgICAgLnRvb2xiYXItcm9vdCB7XG4gICAgICAgIHBhZGRpbmc6IDAgNnB4O1xuICAgICAgICBnYXA6IDNweDtcbiAgICAgIH1cbiAgICAgIC5yZXBvcnQtbmFtZSB7XG4gICAgICAgIG1heC13aWR0aDogNzVweDtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgfVxuICAgICAgLmRpcnR5LWJhZGdlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjZyZW07XG4gICAgICAgIHBhZGRpbmc6IDFweCA0cHg7XG4gICAgICB9XG4gICAgICAubW9kZS1idG4gLm1vZGUtbGFiZWwge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgICAgLm1vZGUtYnRuIHtcbiAgICAgICAgcGFkZGluZzogNXB4IDhweDtcbiAgICAgIH1cbiAgICAgIC50b29sLWJ0biB7XG4gICAgICAgIG1pbi13aWR0aDogMjhweDtcbiAgICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgICBwYWRkaW5nOiA0cHggNnB4O1xuICAgICAgfVxuICAgICAgLnRvb2xiYXItcmlnaHQge1xuICAgICAgICBnYXA6IDNweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBCbHVlcHJpbnRzIE1vZGFsICovXG4gICAgLmJsdWVwcmludC1iYWNrZHJvcCB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBpbnNldDogMDtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTUsIDIzLCA0MiwgMC40NSk7XG4gICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNHB4KTtcbiAgICAgIHotaW5kZXg6IDIwMDA7XG4gICAgICBhbmltYXRpb246IHJwdC1mYWRlLWluIDE1MG1zIGVhc2Utb3V0O1xuICAgIH1cbiAgICAuYmx1ZXByaW50LW1vZGFsIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICB3aWR0aDogbWluKDg0MHB4LCA5MnZ3KTtcbiAgICAgIG1heC1oZWlnaHQ6IDg1dmg7XG4gICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2NiZDVlMSk7XG4gICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ycHQtYm9yZGVyLXJhZGl1cy14bCwgMTJweCk7XG4gICAgICBib3gtc2hhZG93OiB2YXIoLS1ycHQtYm94LXNoYWRvdy14bCwgMCAyMHB4IDI1cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMTUpKTtcbiAgICAgIHotaW5kZXg6IDIwMDE7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBhbmltYXRpb246IHJwdC1tb2RhbC1pbiAxODBtcyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKTtcbiAgICB9XG4gICAgQGtleWZyYW1lcyBycHQtZmFkZS1pbiB7XG4gICAgICBmcm9tIHsgb3BhY2l0eTogMDsgfVxuICAgICAgdG8geyBvcGFjaXR5OiAxOyB9XG4gICAgfVxuICAgIEBrZXlmcmFtZXMgcnB0LW1vZGFsLWluIHtcbiAgICAgIGZyb20geyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNDYlKSBzY2FsZSgwLjk2KTsgb3BhY2l0eTogMDsgfVxuICAgICAgdG8geyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSBzY2FsZSgxKTsgb3BhY2l0eTogMTsgfVxuICAgIH1cbiAgICAuYmx1ZXByaW50LW1vZGFsLWhlYWRlciB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICBwYWRkaW5nOiAyMHB4IDI0cHg7XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2NiZDVlMSk7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtY29sb3Itc3VyZmFjZSwgI2Y4ZmFmYyk7XG4gICAgfVxuICAgIC5ibHVlcHJpbnQtbW9kYWwtdGl0bGUge1xuICAgICAgZm9udC1zaXplOiB2YXIoLS1ycHQtZm9udC1zaXplLWxnLCAxLjEyNXJlbSk7XG4gICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LCAjMGYxNzJhKTtcbiAgICAgIG1hcmdpbjogMCAwIDRweCAwO1xuICAgIH1cbiAgICAuYmx1ZXByaW50LW1vZGFsLXN1YiB7XG4gICAgICBmb250LXNpemU6IHZhcigtLXJwdC1mb250LXNpemUtc20sIDAuNzVyZW0pO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LW11dGVkLCAjNjQ3NDhiKTtcbiAgICAgIG1hcmdpbjogMDtcbiAgICB9XG4gICAgLmJ0bi1jbG9zZS1tb2RhbCB7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dC1tdXRlZCwgIzY0NzQ4Yik7XG4gICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBwYWRkaW5nOiA0cHg7XG4gICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgIHRyYW5zaXRpb246IGFsbCAxMjBtcyBlYXNlO1xuICAgIH1cbiAgICAuYnRuLWNsb3NlLW1vZGFsOmhvdmVyIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dCwgIzBmMTcyYSk7XG4gICAgICBiYWNrZ3JvdW5kOiAjZTJlOGYwO1xuICAgIH1cbiAgICAuYmx1ZXByaW50LWdyaWQge1xuICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjQwcHgsIDFmcikpO1xuICAgICAgZ2FwOiAxNnB4O1xuICAgICAgcGFkZGluZzogMjBweCAyNHB4O1xuICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICB9XG4gICAgLmJsdWVwcmludC1jYXJkIHtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ycHQtY29sb3ItYm9yZGVyLCAjY2JkNWUxKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJwdC1ib3JkZXItcmFkaXVzLWxnLCA4cHgpO1xuICAgICAgcGFkZGluZzogMTZweDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDE1MG1zIGVhc2U7XG4gICAgfVxuICAgIC5ibHVlcHJpbnQtY2FyZDpob3ZlciB7XG4gICAgICBib3JkZXItY29sb3I6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICAgIGJveC1zaGFkb3c6IDAgOHB4IDI0cHggcmdiYSgzNywgOTksIDIzNSwgMC4xMik7XG4gICAgfVxuICAgIC5ibHVlcHJpbnQtY2FyZC10b3Age1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuICAgIH1cbiAgICAuYmx1ZXByaW50LWNhdC1iYWRnZSB7XG4gICAgICBmb250LXNpemU6IDAuNjVyZW07XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgY29sb3I6ICM3YzNhZWQ7XG4gICAgICBiYWNrZ3JvdW5kOiAjZjVmM2ZmO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDZmZTtcbiAgICAgIHBhZGRpbmc6IDJweCA2cHg7XG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgfVxuICAgIC5ibHVlcHJpbnQtY2FyZC1pY29uIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgfVxuICAgIC5ibHVlcHJpbnQtY2FyZC10aXRsZSB7XG4gICAgICBmb250LXNpemU6IHZhcigtLXJwdC1mb250LXNpemUtYmFzZSwgMC44NzVyZW0pO1xuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dCwgIzBmMTcyYSk7XG4gICAgICBtYXJnaW46IDAgMCA2cHggMDtcbiAgICB9XG4gICAgLmJsdWVwcmludC1jYXJkLWRlc2Mge1xuICAgICAgZm9udC1zaXplOiB2YXIoLS1ycHQtZm9udC1zaXplLXNtLCAwLjc1cmVtKTtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dC1tdXRlZCwgIzY0NzQ4Yik7XG4gICAgICBsaW5lLWhlaWdodDogMS40O1xuICAgICAgbWFyZ2luOiAwIDAgMTZweCAwO1xuICAgICAgZmxleDogMTtcbiAgICB9XG4gICAgLmJsdWVwcmludC1jYXJkLWZvb3RlciB7XG4gICAgICBtYXJnaW4tdG9wOiBhdXRvO1xuICAgIH1cbiAgICAuYnRuLWFwcGx5LWJsdWVwcmludCB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMsIDZweCk7XG4gICAgICBwYWRkaW5nOiA2cHggMTJweDtcbiAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDEyMG1zIGVhc2U7XG4gICAgfVxuICAgIC5ibHVlcHJpbnQtY2FyZDpob3ZlciAuYnRuLWFwcGx5LWJsdWVwcmludCB7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeS1ob3ZlciwgIzFkNGVkOCk7XG4gICAgfVxuICBgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERlc2lnbmVyVG9vbGJhckNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVxdWVzdHMgPSBuZXcgUmVwb3J0UmVxdWVzdFNjb3BlKCk7XG4gIHJlYWRvbmx5IGNhdGFsb2dMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgY2F0YWxvZ0Vycm9yID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSBpc1N3aXRjaGluZ1JlcG9ydCA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzaWduZXJTdGF0ZSA9IGluamVjdChEZXNpZ25lclN0YXRlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGVtcGxhdGVTZXJ2aWNlID0gaW5qZWN0KFJlcG9ydFRlbXBsYXRlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW5kcG9pbnRTY29wZSA9IGluamVjdChEZXNpZ25lckVuZHBvaW50c1NlcnZpY2UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVwb3J0U3RvcmUgPSBpbmplY3QoUmVwb3J0U3RvcmVTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHJlYWRvbmx5IGRlZmluaXRpb24gPSB0aGlzLmRlc2lnbmVyU3RhdGUuZGVmaW5pdGlvbjtcbiAgcmVhZG9ubHkgdmlld01vZGUgPSB0aGlzLmRlc2lnbmVyU3RhdGUudmlld01vZGU7XG4gIHJlYWRvbmx5IGlzRGlydHkgPSB0aGlzLmRlc2lnbmVyU3RhdGUuaXNEaXJ0eTtcbiAgcmVhZG9ubHkgY2FuVW5kbyA9IHRoaXMuZGVzaWduZXJTdGF0ZS5jYW5VbmRvO1xuICByZWFkb25seSBjYW5SZWRvID0gdGhpcy5kZXNpZ25lclN0YXRlLmNhblJlZG87XG5cbiAgcmVhZG9ubHkgaXNUZW1wbGF0ZXNNb2RhbE9wZW4gPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBhdmFpbGFibGVCbHVlcHJpbnRzOiBSZXBvcnRCbHVlcHJpbnRbXSA9IHRoaXMudGVtcGxhdGVTZXJ2aWNlLmdldFRlbXBsYXRlcygpO1xuXG4gIHJlYWRvbmx5IGlzRWRpdGluZ05hbWUgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBuYW1lRHJhZnQgPSBzaWduYWw8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IHJlcG9ydFN1bW1hcmllcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMucmVwb3J0U3RvcmU/LnN1bW1hcmllcygpID8/IFtdKTtcblxuICByZWFkb25seSBpc0xlZnRQYW5lbENvbGxhcHNlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgaXNSaWdodFBhbmVsQ29sbGFwc2VkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSB0b2dnbGVMZWZ0UGFuZWwgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcmVhZG9ubHkgdG9nZ2xlUmlnaHRQYW5lbCA9IG91dHB1dDx2b2lkPigpO1xuXG4gIHJlYWRvbmx5IHNhdmVSZXF1ZXN0ZWQgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgdGhpcy5lbmRwb2ludFNjb3BlPy5yZXZpc2lvbigpOyB0aGlzLnJlcXVlc3RzLmNvbnRleHQoKTtcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7IHRoaXMucmVxdWVzdHMuY2FuY2VsKCdzd2l0Y2gtcmVwb3J0Jyk7IHRoaXMucmVmcmVzaFJlcG9ydHMoKTsgfSk7XG4gICAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcbiAgfVxuXG4gIHN0YXJ0UmVuYW1lKCk6IHZvaWQge1xuICAgIHRoaXMubmFtZURyYWZ0LnNldCh0aGlzLmRlZmluaXRpb24oKS5uYW1lIHx8ICcnKTtcbiAgICB0aGlzLmlzRWRpdGluZ05hbWUuc2V0KHRydWUpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXRFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5yZXBvcnQtbmFtZS1pbnB1dCcpIGFzIEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsO1xuICAgICAgaWYgKGlucHV0RWwpIHtcbiAgICAgICAgaW5wdXRFbC5mb2N1cygpO1xuICAgICAgICBpbnB1dEVsLnNlbGVjdCgpO1xuICAgICAgfVxuICAgIH0sIDIwKTtcbiAgfVxuXG4gIHNhdmVSZW5hbWUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzRWRpdGluZ05hbWUoKSkgcmV0dXJuO1xuICAgIGNvbnN0IHRyaW1tZWQgPSB0aGlzLm5hbWVEcmFmdCgpLnRyaW0oKTtcbiAgICB0aGlzLmlzRWRpdGluZ05hbWUuc2V0KGZhbHNlKTtcblxuICAgIGlmICghdHJpbW1lZCB8fCB0cmltbWVkID09PSB0aGlzLmRlZmluaXRpb24oKS5uYW1lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdXBkYXRlczogUGFydGlhbDxSZXBvcnREZWZpbml0aW9uPiA9IHsgbmFtZTogdHJpbW1lZCB9O1xuICAgIGlmICghdGhpcy5kZWZpbml0aW9uKCkuc2x1Zykge1xuICAgICAgdXBkYXRlcy5zbHVnID0gdGhpcy50b1NsdWcodHJpbW1lZCk7XG4gICAgfVxuXG4gICAgdGhpcy5kZXNpZ25lclN0YXRlLnVwZGF0ZVJlcG9ydFNldHRpbmdzKHVwZGF0ZXMpO1xuICB9XG5cbiAgY2FuY2VsUmVuYW1lKCk6IHZvaWQge1xuICAgIHRoaXMuaXNFZGl0aW5nTmFtZS5zZXQoZmFsc2UpO1xuICB9XG5cbiAgY3JlYXRlTmV3UmVwb3J0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGlydHkoKSkge1xuICAgICAgY29uc3QgY29uZmlybURpc2NhcmQgPSBjb25maXJtKFxuICAgICAgICAnWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzIG9uIHRoZSBjdXJyZW50IHJlcG9ydC4gRG8geW91IHdhbnQgdG8gZGlzY2FyZCB0aGVtIGFuZCBjcmVhdGUgYSBuZXcgcmVwb3J0PydcbiAgICAgICk7XG4gICAgICBpZiAoIWNvbmZpcm1EaXNjYXJkKSByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbmV3SWQgPSBgcnB0LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDgpfWA7XG4gICAgdGhpcy5kZXNpZ25lclN0YXRlLmxvYWREZWZpbml0aW9uKHtcbiAgICAgIGlkOiBuZXdJZCxcbiAgICAgIG5hbWU6ICdOZXcgQ3VzdG9tIFJlcG9ydCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ1Zpc3VhbGx5IGRlc2lnbmVkIHJlcG9ydGluZyBwYWdlIGNyZWF0ZWQgd2l0aCBCV2F5cy1SZXBvcnQuJyxcbiAgICAgIHNjaGVtYVZlcnNpb246IDEsXG4gICAgICB2ZXJzaW9uOiAxLFxuICAgICAgbGF5b3V0OiB7IGNvbHVtbnM6IDEyLCBnYXA6IDE2LCBwYWRkaW5nOiAyNCwgZGlyZWN0aW9uOiAnbHRyJyB9LFxuICAgICAgY29tcG9uZW50czogW10sXG4gICAgICBwYXJhbWV0ZXJzOiBbXSxcbiAgICAgIGRhdGFTb3VyY2VzOiBbXSxcbiAgICB9KTtcbiAgfVxuXG4gIHJlZnJlc2hSZXBvcnRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5yZXBvcnRTdG9yZSkgcmV0dXJuO1xuICAgIHRoaXMuY2F0YWxvZ0xvYWRpbmcuc2V0KHRydWUpOyB0aGlzLmNhdGFsb2dFcnJvci5zZXQobnVsbCk7XG4gICAgdGhpcy5yZXF1ZXN0cy5ydW4oJ2NhdGFsb2cnLCAoKSA9PiB0aGlzLnJlcG9ydFN0b3JlIS5sb2FkU3VtbWFyaWVzKCksICgpID0+IHt9LFxuICAgICAgZXJyb3IgPT4gdGhpcy5jYXRhbG9nRXJyb3Iuc2V0KGVycm9yLm1lc3NhZ2UpLCAoKSA9PiB0aGlzLmNhdGFsb2dMb2FkaW5nLnNldChmYWxzZSkpO1xuICB9XG5cbiAgb25Td2l0Y2hSZXBvcnQocmVwb3J0SWQ6IHN0cmluZywgc2VsZWN0PzogSFRNTFNlbGVjdEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCByZXN0b3JlID0gKCkgPT4geyBpZiAoc2VsZWN0KSBzZWxlY3QudmFsdWUgPSB0aGlzLmRlZmluaXRpb24oKS5pZDsgfTtcbiAgICBpZiAoIXJlcG9ydElkIHx8IHJlcG9ydElkID09PSB0aGlzLmRlZmluaXRpb24oKS5pZCkgeyByZXN0b3JlKCk7IHJldHVybjsgfVxuICAgIGlmICh0aGlzLmlzRGlydHkoKSAmJiAhY29uZmlybSgnWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzLiBEaXNjYXJkIHRoZW0gYW5kIHN3aXRjaCB0byBhbm90aGVyIHJlcG9ydD8nKSkgeyByZXN0b3JlKCk7IHJldHVybjsgfVxuICAgIGlmICghdGhpcy5yZXBvcnRTdG9yZSkgeyB0aGlzLmNhdGFsb2dFcnJvci5zZXQoJ1JlcG9ydCBzdG9yYWdlIGlzIG5vdCBjb25maWd1cmVkLicpOyByZXN0b3JlKCk7IHJldHVybjsgfVxuICAgIGNvbnN0IGRyYWZ0ID0gdGhpcy5kZWZpbml0aW9uKCk7XG4gICAgdGhpcy5pc1N3aXRjaGluZ1JlcG9ydC5zZXQodHJ1ZSk7IHRoaXMuY2F0YWxvZ0Vycm9yLnNldChudWxsKTtcbiAgICB0aGlzLnJlcXVlc3RzLnJ1bignc3dpdGNoLXJlcG9ydCcsICgpID0+IHRoaXMucmVwb3J0U3RvcmUhLmxvYWRSZXBvcnQocmVwb3J0SWQsIHRydWUpLnBpcGUobWFwKGRlZiA9PiB7XG4gICAgICBpZiAodGhpcy5kZWZpbml0aW9uKCkgIT09IGRyYWZ0KSB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBkcmFmdCBjaGFuZ2VkIHdoaWxlIGxvYWRpbmcuIFNlbGVjdCB0aGUgcmVwb3J0IGFnYWluIHRvIHJldmlldyB5b3VyIGNoYW5nZXMuJyk7XG4gICAgICByZXR1cm4gbm9ybWFsaXplUmVwb3J0RGVmaW5pdGlvbihkZWYpO1xuICAgIH0pKSwgZGVmID0+IHRoaXMuZGVzaWduZXJTdGF0ZS5sb2FkRGVmaW5pdGlvbihkZWYpLCBlcnJvciA9PiB7IHRoaXMuY2F0YWxvZ0Vycm9yLnNldChlcnJvci5tZXNzYWdlKTsgcmVzdG9yZSgpOyB9LFxuICAgICAgKCkgPT4gdGhpcy5pc1N3aXRjaGluZ1JlcG9ydC5zZXQoZmFsc2UpKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9TbHVnKHZhbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnRyaW0oKVxuICAgICAgLnJlcGxhY2UoL1teXFx3XFxzLV0vZywgJycpXG4gICAgICAucmVwbGFjZSgvW1xcc18tXSsvZywgJy0nKVxuICAgICAgLnJlcGxhY2UoL14tK3wtKyQvZywgJycpO1xuICB9XG5cbiAgc2V0TW9kZShtb2RlOiBEZXNpZ25lclZpZXdNb2RlKTogdm9pZCB7XG4gICAgdGhpcy5kZXNpZ25lclN0YXRlLnNldFZpZXdNb2RlKG1vZGUpO1xuICB9XG5cbiAgdW5kbygpOiB2b2lkIHtcbiAgICB0aGlzLmRlc2lnbmVyU3RhdGUudW5kbygpO1xuICB9XG5cbiAgcmVkbygpOiB2b2lkIHtcbiAgICB0aGlzLmRlc2lnbmVyU3RhdGUucmVkbygpO1xuICB9XG5cbiAgc2F2ZVJlcG9ydCgpOiB2b2lkIHtcbiAgICB0aGlzLnNhdmVSZXF1ZXN0ZWQuZW1pdCgpO1xuICB9XG5cbiAgb3BlblRlbXBsYXRlc01vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNUZW1wbGF0ZXNNb2RhbE9wZW4uc2V0KHRydWUpO1xuICB9XG5cbiAgY2xvc2VUZW1wbGF0ZXNNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzVGVtcGxhdGVzTW9kYWxPcGVuLnNldChmYWxzZSk7XG4gIH1cblxuICBhcHBseUJsdWVwcmludChibHVlcHJpbnRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbmV3RGVmID0gdGhpcy50ZW1wbGF0ZVNlcnZpY2UuaW5zdGFudGlhdGVUZW1wbGF0ZShibHVlcHJpbnRJZCk7XG4gICAgdGhpcy5kZXNpZ25lclN0YXRlLmxvYWREZWZpbml0aW9uKG5ld0RlZik7XG4gICAgdGhpcy5jbG9zZVRlbXBsYXRlc01vZGFsKCk7XG4gIH1cblxuICBhZGRSZXN1bHRHcmlkKCk6IHZvaWQge1xuICAgIGNvbnN0IGV4aXN0aW5nRHMgPSB0aGlzLmRlZmluaXRpb24oKS5kYXRhU291cmNlc1swXTtcbiAgICBjb25zdCBkZWZhdWx0R3JpZDogUmVwb3J0R3JpZERlZmluaXRpb24gPSB7XG4gICAgICBkYXRhU291cmNlSWQ6IGV4aXN0aW5nRHM/LmlkID8/ICdkZWZhdWx0JyxcbiAgICAgIGNvbHVtbnM6IFtcbiAgICAgICAgeyBmaWVsZDogJ2lkJywgbGFiZWw6ICdJRCcsIGRhdGFUeXBlOiAnbnVtYmVyJywgdmlzaWJsZTogdHJ1ZSwgc29ydGFibGU6IHRydWUgfSxcbiAgICAgICAgeyBmaWVsZDogJ25hbWUnLCBsYWJlbDogJ05hbWUnLCBkYXRhVHlwZTogJ3N0cmluZycsIHZpc2libGU6IHRydWUsIHNvcnRhYmxlOiB0cnVlIH0sXG4gICAgICBdLFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBwYWdpbmF0aW9uOiB0cnVlLFxuICAgICAgICBwYWdlU2l6ZTogMjUsXG4gICAgICAgIHNob3dSb3dOdW1iZXJzOiB0cnVlLFxuICAgICAgICBzaG93Rm9vdGVyOiB0cnVlLFxuICAgICAgICBzaWRlQmFyOiB0cnVlLFxuICAgICAgICBnbG9iYWxTZWFyY2g6IHRydWUsXG4gICAgICAgIHN0YXR1c0JhcjogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfTtcbiAgICB0aGlzLmRlc2lnbmVyU3RhdGUudXBkYXRlR3JpZFNldHRpbmdzKGRlZmF1bHRHcmlkKTtcbiAgICB0aGlzLmRlc2lnbmVyU3RhdGUuc2VsZWN0Q29tcG9uZW50KG51bGwpO1xuICAgIHRoaXMuZGVzaWduZXJTdGF0ZS5zZXRBY3RpdmVUYWIoJ2dyaWQnKTtcbiAgfVxuXG4gIHNlbGVjdEdyaWRTZXR0aW5ncygpOiB2b2lkIHtcbiAgICB0aGlzLmRlc2lnbmVyU3RhdGUuc2VsZWN0Q29tcG9uZW50KG51bGwpO1xuICAgIHRoaXMuZGVzaWduZXJTdGF0ZS5zZXRBY3RpdmVUYWIoJ2dyaWQnKTtcbiAgfVxuXG4gIGV4cG9ydEpzb24oKTogdm9pZCB7XG4gICAgY29uc3QgZGF0YVN0ciA9XG4gICAgICAnZGF0YTp0ZXh0L2pzb247Y2hhcnNldD11dGYtOCwnICtcbiAgICAgIGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeSh0aGlzLmRlZmluaXRpb24oKSwgbnVsbCwgMikpO1xuICAgIGNvbnN0IGRvd25sb2FkQW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGRvd25sb2FkQW5jaG9yLnNldEF0dHJpYnV0ZSgnaHJlZicsIGRhdGFTdHIpO1xuICAgIGRvd25sb2FkQW5jaG9yLnNldEF0dHJpYnV0ZShcbiAgICAgICdkb3dubG9hZCcsXG4gICAgICBgJHt0aGlzLmRlZmluaXRpb24oKS5pZCB8fCAncmVwb3J0LWRlZmluaXRpb24nfS5qc29uYFxuICAgICk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb3dubG9hZEFuY2hvcik7XG4gICAgZG93bmxvYWRBbmNob3IuY2xpY2soKTtcbiAgICBkb3dubG9hZEFuY2hvci5yZW1vdmUoKTtcbiAgfVxufVxuIl19
|
|
680
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXItdG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9mZWF0dXJlcy9kZXNpZ25lci9jb21wb25lbnRzL3Rvb2xiYXIvZGVzaWduZXItdG9vbGJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDakYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDbkcsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNyRixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQW9CLE1BQU0sdUNBQXVDLENBQUM7QUFDL0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFFN0YsT0FBTyxFQUFFLHFCQUFxQixFQUFtQixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOzs7QUFzeEJ4RixNQUFNLE9BQU8sd0JBQXdCO0lBQ2xCLFFBQVEsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7SUFDNUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixZQUFZLEdBQUcsTUFBTSxDQUFnQixJQUFJLENBQUMsQ0FBQztJQUMzQyxpQkFBaUIsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsYUFBYSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQzdDLGVBQWUsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNoRCxhQUFhLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDckUsV0FBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRXJFLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQztJQUMzQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7SUFDdkMsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO0lBQ3JDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztJQUNyQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7SUFFckMsb0JBQW9CLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQzlDLG1CQUFtQixHQUFzQixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRTdFLGFBQWEsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDdkMsU0FBUyxHQUFHLE1BQU0sQ0FBUyxFQUFFLENBQUMsQ0FBQztJQUMvQixlQUFlLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFdEUsb0JBQW9CLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQzdDLHFCQUFxQixHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUM5QyxlQUFlLEdBQUcsTUFBTSxFQUFRLENBQUM7SUFDakMsZ0JBQWdCLEdBQUcsTUFBTSxFQUFRLENBQUM7SUFFbEMsYUFBYSxHQUFHLE1BQU0sRUFBUSxDQUFDO0lBRXhDO1FBQ0UsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3hELFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JGLENBQUMsRUFBRSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUE0QixDQUFDO1lBQ3hGLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNoQixPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkIsQ0FBQztRQUNILENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFBRSxPQUFPO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU5QixJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkQsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBOEIsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM1QixPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDbkIsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUM1QixzR0FBc0csQ0FDdkcsQ0FBQztZQUNGLElBQUksQ0FBQyxjQUFjO2dCQUFFLE9BQU87UUFDOUIsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUM7WUFDaEMsRUFBRSxFQUFFLEtBQUs7WUFDVCxJQUFJLEVBQUUsbUJBQW1CO1lBQ3pCLFdBQVcsRUFBRSw2REFBNkQ7WUFDMUUsYUFBYSxFQUFFLENBQUM7WUFDaEIsT0FBTyxFQUFFLENBQUM7WUFDVixNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFO1lBQy9ELFVBQVUsRUFBRSxFQUFFO1lBQ2QsVUFBVSxFQUFFLEVBQUU7WUFDZCxXQUFXLEVBQUUsRUFBRTtTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU87UUFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVksQ0FBQyxhQUFhLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDLEVBQzVFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUFnQixFQUFFLE1BQTBCO1FBQ3pELE1BQU0sT0FBTyxHQUFHLEdBQUcsRUFBRSxHQUFHLElBQUksTUFBTTtZQUFFLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFBQyxPQUFPLEVBQUUsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBQzFFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLHNFQUFzRSxDQUFDLEVBQUUsQ0FBQztZQUFDLE9BQU8sRUFBRSxDQUFDO1lBQUMsT0FBTztRQUFDLENBQUM7UUFDOUgsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7WUFBQyxPQUFPLEVBQUUsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBQ3pHLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFZLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ25HLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLEtBQUs7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxrRkFBa0YsQ0FBQyxDQUFDO1lBQ3JJLE9BQU8seUJBQXlCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQy9HLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sTUFBTSxDQUFDLEdBQVc7UUFDeEIsT0FBTyxHQUFHO2FBQ1AsV0FBVyxFQUFFO2FBQ2IsSUFBSSxFQUFFO2FBQ04sT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7YUFDeEIsT0FBTyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUM7YUFDeEIsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsT0FBTyxDQUFDLElBQXNCO1FBQzVCLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGNBQWMsQ0FBQyxXQUFtQjtRQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxhQUFhO1FBQ1gsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRCxNQUFNLFdBQVcsR0FBeUI7WUFDeEMsWUFBWSxFQUFFLFVBQVUsRUFBRSxFQUFFLElBQUksU0FBUztZQUN6QyxPQUFPLEVBQUU7Z0JBQ1AsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQy9FLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2FBQ3BGO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixRQUFRLEVBQUUsRUFBRTtnQkFDWixjQUFjLEVBQUUsSUFBSTtnQkFDcEIsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLE9BQU8sRUFBRSxJQUFJO2dCQUNiLFlBQVksRUFBRSxJQUFJO2dCQUNsQixTQUFTLEVBQUUsSUFBSTthQUNoQjtTQUNGLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELFVBQVU7UUFDUixNQUFNLE9BQU8sR0FDWCwrQkFBK0I7WUFDL0Isa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakUsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuRCxjQUFjLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM3QyxjQUFjLENBQUMsWUFBWSxDQUN6QixVQUFVLEVBQ1YsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLG1CQUFtQixPQUFPLENBQ3RELENBQUM7UUFDRixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMxQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzFCLENBQUM7d0dBak1VLHdCQUF3Qjs0RkFBeEIsd0JBQXdCLGdpQkEvd0J6Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlQVCw4dFVBbFBTLFlBQVksOEJBQUUsV0FBVyw0T0FBRSxnQkFBZ0I7OzRGQWd4QjFDLHdCQUF3QjtrQkFueEJwQyxTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixDQUFDLFlBQzVDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaVBULG1CQTRoQmdCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXBvcnRSZXF1ZXN0U2NvcGUgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3V0aWxzL3JlcG9ydC1yZXF1ZXN0LXNjb3BlJztcbmltcG9ydCB7IG5vcm1hbGl6ZVJlcG9ydERlZmluaXRpb24gfSBmcm9tICcuLi8uLi8uLi9wZXJzaXN0ZW5jZS9zZXJ2aWNlcy9zY2hlbWEtdmFsaWRhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEZXNpZ25lckVuZHBvaW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kZXNpZ25lci1lbmRwb2ludHMuc2VydmljZSc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgdW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERlc2lnbmVyU3RhdGVTZXJ2aWNlLCBEZXNpZ25lclZpZXdNb2RlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGVzaWduZXItc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBScHRJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vcHJpbWl0aXZlcy9jb21wb25lbnRzL2ljb24vcnB0LWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IFJlcG9ydEdyaWREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9tb2RlbHMvcmVwb3J0LWdyaWQubW9kZWwnO1xuaW1wb3J0IHsgUmVwb3J0VGVtcGxhdGVTZXJ2aWNlLCBSZXBvcnRCbHVlcHJpbnQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXBvcnQtdGVtcGxhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBSZXBvcnRTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wZXJzaXN0ZW5jZS9zZXJ2aWNlcy9yZXBvcnQtc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBSZXBvcnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9tb2RlbHMvcmVwb3J0LWRlZmluaXRpb24ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdycHQtZGVzaWduZXItdG9vbGJhcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBScHRJY29uQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicnB0LXRvb2xiYXItcm9vdFwiPlxuICAgICAgPCEtLSBMZWZ0OiBQYW5lbCB0b2dnbGUsIFRpdGxlLCBJbmxpbmUgUmVuYW1lLCArIE5ldyBSZXBvcnQsIFN3aXRjaGVyICYgRGlydHkgaW5kaWNhdG9yIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInJwdC10b29sYmFyLWxlZnRcIj5cbiAgICAgICAgQGlmICh2aWV3TW9kZSgpID09PSAnZGVzaWduJykge1xuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0b29sLWJ0biBidG4tcGFuZWwtdG9nZ2xlXCJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiIWlzTGVmdFBhbmVsQ29sbGFwc2VkKClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUxlZnRQYW5lbC5lbWl0KClcIlxuICAgICAgICAgICAgW3RpdGxlXT1cImlzTGVmdFBhbmVsQ29sbGFwc2VkKCkgPyAnU2hvdyBDb21wb25lbnQgUGFsZXR0ZSAoQ3RybCtCKScgOiAnSGlkZSBDb21wb25lbnQgUGFsZXR0ZSAoQ3RybCtCKSdcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpc0xlZnRQYW5lbENvbGxhcHNlZCgpID8gJ1Nob3cgQ29tcG9uZW50IFBhbGV0dGUgKEN0cmwrQiknIDogJ0hpZGUgQ29tcG9uZW50IFBhbGV0dGUgKEN0cmwrQiknXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cnB0LWljb24gbmFtZT1cInBhbmVsLWxlZnRcIiBbc2l6ZV09XCIxNFwiIC8+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlcG9ydC1pZGVudGl0eVwiPlxuICAgICAgICAgIEBpZiAoaXNFZGl0aW5nTmFtZSgpKSB7XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBjbGFzcz1cInJlcG9ydC1uYW1lLWlucHV0XCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cIm5hbWVEcmFmdCgpXCJcbiAgICAgICAgICAgICAgKGlucHV0KT1cIm5hbWVEcmFmdC5zZXQoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIlxuICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJzYXZlUmVuYW1lKClcIlxuICAgICAgICAgICAgICAoa2V5ZG93bi5lc2NhcGUpPVwiY2FuY2VsUmVuYW1lKClcIlxuICAgICAgICAgICAgICAoYmx1cik9XCJzYXZlUmVuYW1lKClcIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiUmVwb3J0IE5hbWVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwicmVwb3J0LW5hbWVcIlxuICAgICAgICAgICAgICAoZGJsY2xpY2spPVwic3RhcnRSZW5hbWUoKVwiXG4gICAgICAgICAgICAgIHRpdGxlPVwiRG91YmxlLWNsaWNrIHRvIHJlbmFtZSByZXBvcnRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBkZWZpbml0aW9uKCkubmFtZSB8fCAnVW50aXRsZWQgUmVwb3J0JyB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJidG4tbmV3LXJlcG9ydFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY3JlYXRlTmV3UmVwb3J0KClcIlxuICAgICAgICAgICAgdGl0bGU9XCJDcmVhdGUgbmV3IHJlcG9ydCBwYWdlICgrKVwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ3JlYXRlIG5ldyByZXBvcnQgcGFnZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJwbHVzXCIgW3NpemVdPVwiMTJcIiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgQGlmIChjYXRhbG9nTG9hZGluZygpKSB7IDxzcGFuIHJvbGU9XCJzdGF0dXNcIj5Mb2FkaW5nIHNhdmVkIHJlcG9ydHMuLi48L3NwYW4+IH1cbiAgICAgICAgICBAaWYgKGNhdGFsb2dFcnJvcigpKSB7IDxzcGFuIHJvbGU9XCJhbGVydFwiPnt7IGNhdGFsb2dFcnJvcigpIH19IDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZWZyZXNoUmVwb3J0cygpXCI+UmV0cnk8L2J1dHRvbj48L3NwYW4+IH1cbiAgICAgICAgICBAaWYgKCFjYXRhbG9nTG9hZGluZygpICYmICFjYXRhbG9nRXJyb3IoKSAmJiByZXBvcnRTdW1tYXJpZXMoKS5sZW5ndGggPT09IDApIHsgPHNwYW4+Tm8gc2F2ZWQgcmVwb3J0czwvc3Bhbj4gfVxuICAgICAgICAgIEBpZiAocmVwb3J0U3VtbWFyaWVzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICBjbGFzcz1cInJlcG9ydC1zd2l0Y2hlci1zZWxlY3RcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwiZGVmaW5pdGlvbigpLmlkXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzU3dpdGNoaW5nUmVwb3J0KClcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uU3dpdGNoUmVwb3J0KCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUsICRhbnkoJGV2ZW50LnRhcmdldCkpXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJTd2l0Y2ggcmVwb3J0XCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlN3aXRjaCByZXBvcnRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJkZWZpbml0aW9uKCkuaWRcIiBkaXNhYmxlZCBzZWxlY3RlZCBoaWRkZW4+XG4gICAgICAgICAgICAgICAge3sgZGVmaW5pdGlvbigpLm5hbWUgfHwgJ0N1cnJlbnQgUmVwb3J0JyB9fVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiByZXBvcnRTdW1tYXJpZXMoKTsgdHJhY2sgaXRlbS5pZCkge1xuICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIml0ZW0uaWRcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKGlzRGlydHkoKSkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkaXJ0eS1iYWRnZVwiIHRpdGxlPVwiVW5zYXZlZCBjaGFuZ2VzXCI+4pePIFVuc2F2ZWQ8L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIENlbnRlcjogTW9kZSBTd2l0Y2hlciAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJycHQtdG9vbGJhci1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGUtcGlsbC1ncm91cFwiIHJvbGU9XCJ0YWJsaXN0XCIgYXJpYS1sYWJlbD1cIldvcmtiZW5jaCBWaWV3IE1vZGVcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwibW9kZS1idG5cIlxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJ2aWV3TW9kZSgpID09PSAnZGVzaWduJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwic2V0TW9kZSgnZGVzaWduJylcIlxuICAgICAgICAgICAgdGl0bGU9XCJWaXN1YWwgRGVzaWduIENhbnZhc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJlZGl0XCIgW3NpemVdPVwiMTRcIiAvPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtb2RlLWxhYmVsXCI+RGVzaWduPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJtb2RlLWJ0blwiXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInZpZXdNb2RlKCkgPT09ICdwcmV2aWV3J1wiXG4gICAgICAgICAgICAoY2xpY2spPVwic2V0TW9kZSgncHJldmlldycpXCJcbiAgICAgICAgICAgIHRpdGxlPVwiTGl2ZSBSdW50aW1lIFByZXZpZXdcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwiZXllXCIgW3NpemVdPVwiMTRcIiAvPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtb2RlLWxhYmVsXCI+UHJldmlldzwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwibW9kZS1idG5cIlxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJ2aWV3TW9kZSgpID09PSAnanNvbidcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNldE1vZGUoJ2pzb24nKVwiXG4gICAgICAgICAgICB0aXRsZT1cIkpTT04gUmVwb3J0IFNjaGVtYVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJjb2RlXCIgW3NpemVdPVwiMTRcIiAvPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtb2RlLWxhYmVsXCI+SlNPTjwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBSaWdodDogVW5kbywgUmVkbywgQmx1ZXByaW50cywgR3JpZCwgRXhwb3J0LCBTYXZlIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInJwdC10b29sYmFyLXJpZ2h0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoaXN0b3J5LWdyb3VwXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInRvb2wtYnRuXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuVW5kbygpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ1bmRvKClcIlxuICAgICAgICAgICAgdGl0bGU9XCJVbmRvIChDdHJsK1opXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cnB0LWljb24gbmFtZT1cInVuZG9cIiBbc2l6ZV09XCIxNFwiIC8+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInRvb2wtYnRuXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuUmVkbygpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJyZWRvKClcIlxuICAgICAgICAgICAgdGl0bGU9XCJSZWRvIChDdHJsK1kpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cnB0LWljb24gbmFtZT1cInJlZG9cIiBbc2l6ZV09XCIxNFwiIC8+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAodmlld01vZGUoKSA9PT0gJ2Rlc2lnbicpIHtcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwidG9vbC1idG4gYnRuLXBhbmVsLXRvZ2dsZVwiXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIiFpc1JpZ2h0UGFuZWxDb2xsYXBzZWQoKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUmlnaHRQYW5lbC5lbWl0KClcIlxuICAgICAgICAgICAgW3RpdGxlXT1cImlzUmlnaHRQYW5lbENvbGxhcHNlZCgpID8gJ1Nob3cgUHJvcGVydHkgRWRpdG9yIChDdHJsK0FsdCtCKScgOiAnSGlkZSBQcm9wZXJ0eSBFZGl0b3IgKEN0cmwrQWx0K0IpJ1wiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImlzUmlnaHRQYW5lbENvbGxhcHNlZCgpID8gJ1Nob3cgUHJvcGVydHkgRWRpdG9yIChDdHJsK0FsdCtCKScgOiAnSGlkZSBQcm9wZXJ0eSBFZGl0b3IgKEN0cmwrQWx0K0IpJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJwYW5lbC1yaWdodFwiIFtzaXplXT1cIjE0XCIgLz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zLWRpdmlkZXJcIj48L2Rpdj5cblxuICAgICAgICA8IS0tIDEtQ2xpY2sgQmx1ZXByaW50cyBHYWxsZXJ5IEJ1dHRvbiAtLT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwidG9vbC1idG4gYnRuLWJsdWVwcmludHNcIlxuICAgICAgICAgIChjbGljayk9XCJvcGVuVGVtcGxhdGVzTW9kYWwoKVwiXG4gICAgICAgICAgdGl0bGU9XCJTdGFydCBmcm9tIHByZS1jb25maWd1cmVkIGVudGVycHJpc2UgYmx1ZXByaW50c1wiXG4gICAgICAgID5cbiAgICAgICAgICA8cnB0LWljb24gbmFtZT1cImxheWVyc1wiIFtzaXplXT1cIjE0XCIgLz5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ0bi1sYWJlbFwiPkJsdWVwcmludHM8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDwhLS0gQWRkIC8gQ29uZmlndXJlIEdyaWQgUXVpY2sgQnV0dG9uIC0tPlxuICAgICAgICBAaWYgKCFkZWZpbml0aW9uKCkuZ3JpZCkge1xuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0b29sLWJ0biBidG4tZ3JpZC1hY3Rpb25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFkZFJlc3VsdEdyaWQoKVwiXG4gICAgICAgICAgICB0aXRsZT1cIkF0dGFjaCBhIFJlc3VsdCBEYXRhIEdyaWQgKFVsdHJhR3JpZCAvIFRhYmxlKSB0byB0aGlzIHJlcG9ydFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJ0YWJsZVwiIFtzaXplXT1cIjE0XCIgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnRuLWxhYmVsXCI+KyBBZGQgR3JpZDwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInRvb2wtYnRuIGJ0bi1ncmlkLWNvbmZpZ3VyZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEdyaWRTZXR0aW5ncygpXCJcbiAgICAgICAgICAgIHRpdGxlPVwiQ29uZmlndXJlIFJlc3VsdCBEYXRhIEdyaWQgY29sdW1ucyBhbmQgcGFnaW5hdGlvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJ0YWJsZVwiIFtzaXplXT1cIjE0XCIgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnRuLWxhYmVsXCI+R3JpZCAoe3sgZGVmaW5pdGlvbigpLmdyaWQ/LmNvbHVtbnM/Lmxlbmd0aCA/PyAwIH19KTwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zLWRpdmlkZXJcIj48L2Rpdj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJ0b29sLWJ0biBidG4tZXhwb3J0XCJcbiAgICAgICAgICAoY2xpY2spPVwiZXhwb3J0SnNvbigpXCJcbiAgICAgICAgICB0aXRsZT1cIkRvd25sb2FkIEpTT04gRGVmaW5pdGlvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8cnB0LWljb24gbmFtZT1cImRvd25sb2FkXCIgW3NpemVdPVwiMTRcIiAvPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnRuLWxhYmVsXCI+RXhwb3J0PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJ0b29sLWJ0biBidG4tc2F2ZVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNhdmVSZXBvcnQoKVwiXG4gICAgICAgICAgdGl0bGU9XCJTYXZlIFJlcG9ydCBEZWZpbml0aW9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwic2F2ZVwiIFtzaXplXT1cIjE0XCIgLz5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ0bi1sYWJlbFwiPlNhdmU8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gQmx1ZXByaW50cyBHYWxsZXJ5IE1vZGFsIC0tPlxuICAgICAgQGlmIChpc1RlbXBsYXRlc01vZGFsT3BlbigpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJibHVlcHJpbnQtYmFja2Ryb3BcIiAoY2xpY2spPVwiY2xvc2VUZW1wbGF0ZXNNb2RhbCgpXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJibHVlcHJpbnQtbW9kYWxcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1tb2RhbD1cInRydWVcIiBhcmlhLWxhYmVsPVwiU3RhcnRlciBSZXBvcnQgQmx1ZXByaW50c1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJibHVlcHJpbnQtbW9kYWwtaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJibHVlcHJpbnQtbW9kYWwtdGl0bGVcIj5TdGFydGVyIFJlcG9ydCBCbHVlcHJpbnRzPC9oMz5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJibHVlcHJpbnQtbW9kYWwtc3ViXCI+Q2hvb3NlIGEgcHJlLWNvbmZpZ3VyZWQgYXJjaGl0ZWN0dXJlIHBhdHRlcm4gdG8ganVtcHN0YXJ0IHJlcG9ydCBjcmVhdGlvbi48L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWNsb3NlLW1vZGFsXCIgKGNsaWNrKT1cImNsb3NlVGVtcGxhdGVzTW9kYWwoKVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiPuKclTwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJibHVlcHJpbnQtZ3JpZFwiPlxuICAgICAgICAgICAgQGZvciAoYnAgb2YgYXZhaWxhYmxlQmx1ZXByaW50czsgdHJhY2sgYnAuaWQpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJsdWVwcmludC1jYXJkXCIgKGNsaWNrKT1cImFwcGx5Qmx1ZXByaW50KGJwLmlkKVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJibHVlcHJpbnQtY2FyZC10b3BcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmx1ZXByaW50LWNhdC1iYWRnZVwiPnt7IGJwLmNhdGVnb3J5IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJsdWVwcmludC1jYXJkLWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPHJwdC1pY29uIFtuYW1lXT1cImJwLmljb24gfHwgJ3RhYmxlJ1wiIFtzaXplXT1cIjIwXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cImJsdWVwcmludC1jYXJkLXRpdGxlXCI+e3sgYnAubmFtZSB9fTwvaDQ+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJibHVlcHJpbnQtY2FyZC1kZXNjXCI+e3sgYnAuZGVzY3JpcHRpb24gfX08L3A+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJsdWVwcmludC1jYXJkLWZvb3RlclwiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tYXBwbHktYmx1ZXByaW50XCI+XG4gICAgICAgICAgICAgICAgICAgIFVzZSBCbHVlcHJpbnQg4oaSXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuXG4gIHN0eWxlczogW2BcbiAgICA6aG9zdCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1jb2xvci1zdXJmYWNlLCAjZmZmZmZmKTtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dCwgIzBmMTcyYSk7XG4gICAgICBoZWlnaHQ6IDU2cHg7XG4gICAgICBmb250LWZhbWlseTogdmFyKC0tcnB0LWZvbnQtZmFtaWx5LCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIEFyaWFsLCBzYW5zLXNlcmlmKTtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ycHQtY29sb3ItYm9yZGVyLCAjY2JkNWUxKTtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjA0KTtcbiAgICAgIHotaW5kZXg6IDMwO1xuICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxuICAgIC8qIFNjb3BlIHJlc2V0cyB0byBoZWFkZXIgZ3JvdXBzOyBibHVlcHJpbnQgZGlhbG9ncyByZXRhaW4gdGhlaXIgb3duIGxheW91dC4gKi9cbiAgICA6aG9zdCAucnB0LXRvb2xiYXItcm9vdCA+IDppcygucnB0LXRvb2xiYXItbGVmdCwgLnJwdC10b29sYmFyLWNlbnRlciwgLnJwdC10b29sYmFyLXJpZ2h0KSBidXR0b24ge1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICAgIGhlaWdodDogdmFyKC0tcnB0LXRvb2xiYXItY29udHJvbC1oZWlnaHQsIDMycHgpO1xuICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgIG1heC1oZWlnaHQ6IG5vbmU7XG4gICAgICBtYXJnaW46IDA7XG4gICAgICBmb250LWZhbWlseTogdmFyKC0tcnB0LWZvbnQtZmFtaWx5LCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIEFyaWFsLCBzYW5zLXNlcmlmKTtcbiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tcnB0LWZvbnQtc2l6ZS1zbSwgMTJweCk7XG4gICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gICAgICBsZXR0ZXItc3BhY2luZzogbm9ybWFsO1xuICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cbiAgICA6aG9zdCAucnB0LXRvb2xiYXItcm9vdCA+IDppcygucnB0LXRvb2xiYXItbGVmdCwgLnJwdC10b29sYmFyLWNlbnRlciwgLnJwdC10b29sYmFyLXJpZ2h0KSBidXR0b24uYnRuLW5ldy1yZXBvcnQge1xuICAgICAgd2lkdGg6IDI2cHg7XG4gICAgICBoZWlnaHQ6IDI2cHg7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgIH1cbiAgICA6aG9zdCAucnB0LXRvb2xiYXItcm9vdCA+IDppcygucnB0LXRvb2xiYXItbGVmdCwgLnJwdC10b29sYmFyLWNlbnRlciwgLnJwdC10b29sYmFyLXJpZ2h0KSBidXR0b24ubW9kZS1idG4ge1xuICAgICAgaGVpZ2h0OiBjYWxjKHZhcigtLXJwdC10b29sYmFyLWNvbnRyb2wtaGVpZ2h0LCAzMnB4KSAtIDRweCk7XG4gICAgfVxuICAgIDpob3N0IC5ycHQtdG9vbGJhci1yb290ID4gOmlzKC5ycHQtdG9vbGJhci1sZWZ0LCAucnB0LXRvb2xiYXItY2VudGVyLCAucnB0LXRvb2xiYXItcmlnaHQpIGJ1dHRvbi5idG4tc2F2ZSxcbiAgICA6aG9zdCAucnB0LXRvb2xiYXItcm9vdCA+IDppcygucnB0LXRvb2xiYXItbGVmdCwgLnJwdC10b29sYmFyLWNlbnRlciwgLnJwdC10b29sYmFyLXJpZ2h0KSBidXR0b24ubW9kZS1idG4uYWN0aXZlIHsgZm9udC13ZWlnaHQ6IDYwMDsgfVxuICAgIDpob3N0IC5ycHQtdG9vbGJhci1yb290IGlucHV0LFxuICAgIDpob3N0IC5ycHQtdG9vbGJhci1yb290IHNlbGVjdCB7XG4gICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICAgIGxldHRlci1zcGFjaW5nOiBub3JtYWw7XG4gICAgfVxuICAgIC5ycHQtdG9vbGJhci1yb290IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgcGFkZGluZzogMCAxNnB4O1xuICAgICAgZ2FwOiA4cHg7XG4gICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAgICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lO1xuICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB9XG4gICAgLnJwdC10b29sYmFyLXJvb3Q6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgIC5ycHQtdG9vbGJhci1sZWZ0IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZ2FwOiA4cHg7XG4gICAgICBtaW4td2lkdGg6IDA7XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG4gICAgLnJwdC10b29sYmFyLXJpZ2h0IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZ2FwOiA2cHg7XG4gICAgICBtaW4td2lkdGg6IDA7XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICB9XG4gICAgLnJwdC10b29sYmFyLWNlbnRlciB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gICAgLnJlcG9ydC1pZGVudGl0eSB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogOHB4O1xuICAgICAgbWluLXdpZHRoOiAwO1xuICAgIH1cbiAgICAucmVwb3J0LW5hbWUge1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGZvbnQtc2l6ZTogMTQuNHB4O1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQsICMwZjE3MmEpO1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIG1heC13aWR0aDogMjIwcHg7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBwYWRkaW5nOiAycHggNnB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgYm9yZGVyOiAxcHggZGFzaGVkIHRyYW5zcGFyZW50O1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDEyMG1zIGVhc2U7XG4gICAgfVxuICAgIC5yZXBvcnQtbmFtZTpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZjFmNWY5O1xuICAgICAgYm9yZGVyLWNvbG9yOiAjY2JkNWUxO1xuICAgIH1cbiAgICAucmVwb3J0LW5hbWUtaW5wdXQge1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGZvbnQtc2l6ZTogMTQuNHB4O1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LCAjMGYxNzJhKTtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgIHBhZGRpbmc6IDJweCA2cHg7XG4gICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEoMzcsIDk5LCAyMzUsIDAuMik7XG4gICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgbWF4LXdpZHRoOiAyMjBweDtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgfVxuICAgIC5idG4tbmV3LXJlcG9ydCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIHdpZHRoOiAyNnB4O1xuICAgICAgaGVpZ2h0OiAyNnB4O1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXJwdC1jb2xvci1ib3JkZXIsICNjYmQ1ZTEpO1xuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgYmFja2dyb3VuZDogI2Y4ZmFmYztcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dC1tdXRlZCwgIzY0NzQ4Yik7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMTIwbXMgZWFzZTtcbiAgICB9XG4gICAgLmJ0bi1uZXctcmVwb3J0OmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICNlMmU4ZjA7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgfVxuICAgIC5yZXBvcnQtc3dpdGNoZXItc2VsZWN0IHtcbiAgICAgIGhlaWdodDogMjZweDtcbiAgICAgIHBhZGRpbmc6IDAgNnB4O1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2NiZDVlMSk7XG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICBiYWNrZ3JvdW5kOiAjZjhmYWZjO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LCAjMzM0MTU1KTtcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBtYXgtd2lkdGg6IDE0MHB4O1xuICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAxMjBtcyBlYXNlO1xuICAgIH1cbiAgICAucmVwb3J0LXN3aXRjaGVyLXNlbGVjdDpob3ZlciB7XG4gICAgICBib3JkZXItY29sb3I6ICM5NGEzYjg7XG4gICAgfVxuICAgIC5kaXJ0eS1iYWRnZSB7XG4gICAgICBmb250LXNpemU6IDEwLjRweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBjb2xvcjogI2I0NTMwOTtcbiAgICAgIGJhY2tncm91bmQ6ICNmZWYzYzc7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjZmRlNjhhO1xuICAgICAgcGFkZGluZzogMXB4IDZweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG4gICAgLm1vZGUtcGlsbC1ncm91cCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYmFja2dyb3VuZDogI2YxZjVmOTtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXJwdC1jb2xvci1ib3JkZXIsICNjYmQ1ZTEpO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMtbGcsIDhweCk7XG4gICAgICBwYWRkaW5nOiAzcHg7XG4gICAgICBnYXA6IDJweDtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cbiAgICAubW9kZS1idG4ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZ2FwOiA2cHg7XG4gICAgICBwYWRkaW5nOiA1cHggMTJweDtcbiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tcnB0LWZvbnQtc2l6ZS1zbSwgMTJweCk7XG4gICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LW11dGVkLCAjNjQ3NDhiKTtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMsIDZweCk7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tcnB0LXRyYW5zaXRpb24tc3BlZWQsIDE1MG1zKSBlYXNlO1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG4gICAgLm1vZGUtYnRuOmhvdmVyIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dCwgIzBmMTcyYSk7XG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDQpO1xuICAgIH1cbiAgICAubW9kZS1idG4uYWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMDgpO1xuICAgIH1cbiAgICAuaGlzdG9yeS1ncm91cCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZ2FwOiAycHg7XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG4gICAgLnRvb2wtYnRuIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogNnB4O1xuICAgICAgcGFkZGluZzogNnB4IDEycHg7XG4gICAgICBmb250LXNpemU6IHZhcigtLXJwdC1mb250LXNpemUtc20sIDEycHgpO1xuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dC1zZWNvbmRhcnksICMzMzQxNTUpO1xuICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXJwdC1jb2xvci1ib3JkZXIsICNjYmQ1ZTEpO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMsIDZweCk7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tcnB0LXRyYW5zaXRpb24tc3BlZWQsIDE1MG1zKSBlYXNlO1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cbiAgICAudG9vbC1idG46aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LWNvbG9yLXN1cmZhY2UtaG92ZXIsICNmOGZhZmMpO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LCAjMGYxNzJhKTtcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcnB0LWNvbG9yLWJvcmRlci1ob3ZlciwgIzk0YTNiOCk7XG4gICAgfVxuICAgIC50b29sLWJ0bjpkaXNhYmxlZCB7XG4gICAgICBvcGFjaXR5OiAwLjQ1O1xuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICB9XG4gICAgLmJ0bi1wYW5lbC10b2dnbGUge1xuICAgICAgcGFkZGluZzogNnB4IDhweDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dC1tdXRlZCwgIzY0NzQ4Yik7XG4gICAgfVxuICAgIC5idG4tcGFuZWwtdG9nZ2xlOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dCwgIzBmMTcyYSk7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtY29sb3Itc3VyZmFjZS1ob3ZlciwgI2Y4ZmFmYyk7XG4gICAgfVxuICAgIC5idG4tcGFuZWwtdG9nZ2xlLmFjdGl2ZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZWZmNmZmO1xuICAgICAgYm9yZGVyLWNvbG9yOiAjYmZkYmZlO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICB9XG4gICAgLmFjdGlvbnMtZGl2aWRlciB7XG4gICAgICB3aWR0aDogMXB4O1xuICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2NiZDVlMSk7XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG4gICAgLmJ0bi1ibHVlcHJpbnRzIHtcbiAgICAgIGJhY2tncm91bmQ6ICNmYWY1ZmY7XG4gICAgICBib3JkZXItY29sb3I6ICNlOWQ1ZmY7XG4gICAgICBjb2xvcjogIzdjM2FlZDtcbiAgICB9XG4gICAgLmJ0bi1ibHVlcHJpbnRzOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgIGJhY2tncm91bmQ6ICNmM2U4ZmY7XG4gICAgICBjb2xvcjogIzZkMjhkOTtcbiAgICAgIGJvcmRlci1jb2xvcjogI2MwODRmYztcbiAgICB9XG4gICAgLmJ0bi1zYXZlIHtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgIH1cbiAgICAuYnRuLXNhdmU6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnktaG92ZXIsICMxZDRlZDgpO1xuICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeS1ob3ZlciwgIzFkNGVkOCk7XG4gICAgfVxuICAgIC5idG4tZXhwb3J0IHtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQtc2Vjb25kYXJ5LCAjMzM0MTU1KTtcbiAgICB9XG4gICAgLmJ0bi1ncmlkLWFjdGlvbiB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZjBmZGY0O1xuICAgICAgYm9yZGVyLWNvbG9yOiAjYmJmN2QwO1xuICAgICAgY29sb3I6ICMxNmEzNGE7XG4gICAgfVxuICAgIC5idG4tZ3JpZC1hY3Rpb246aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgICAgYmFja2dyb3VuZDogI2RjZmNlNztcbiAgICAgIGNvbG9yOiAjMTU4MDNkO1xuICAgICAgYm9yZGVyLWNvbG9yOiAjODZlZmFjO1xuICAgIH1cbiAgICAuYnRuLWdyaWQtY29uZmlndXJlZCB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZWZmNmZmO1xuICAgICAgYm9yZGVyLWNvbG9yOiAjYmZkYmZlO1xuICAgICAgY29sb3I6ICMyNTYzZWI7XG4gICAgfVxuICAgIC5idG4tZ3JpZC1jb25maWd1cmVkOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgIGJhY2tncm91bmQ6ICNkYmVhZmU7XG4gICAgICBjb2xvcjogIzFkNGVkODtcbiAgICAgIGJvcmRlci1jb2xvcjogIzkzYzVmZDtcbiAgICB9XG5cbiAgICBAbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gICAgICAucnB0LXRvb2xiYXItcm9vdCB7XG4gICAgICAgIHBhZGRpbmc6IDAgMTJweDtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICB9XG4gICAgICAucmVwb3J0LW5hbWUge1xuICAgICAgICBtYXgtd2lkdGg6IDE0MHB4O1xuICAgICAgfVxuICAgICAgLmJ0bi1ibHVlcHJpbnRzIC5idG4tbGFiZWwsXG4gICAgICAuYnRuLWV4cG9ydCAuYnRuLWxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICAgIC50b29sLWJ0biB7XG4gICAgICAgIHBhZGRpbmc6IDZweCA5cHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDkwMHB4KSB7XG4gICAgICA6aG9zdCB7IC0tcnB0LXRvb2xiYXItY29udHJvbC1oZWlnaHQ6IDMwcHg7IH1cbiAgICAgIDpob3N0IHtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgICAgfVxuICAgICAgLnJwdC10b29sYmFyLXJvb3Qge1xuICAgICAgICBwYWRkaW5nOiAwIDhweDtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICB9XG4gICAgICAuYnRuLXBhbmVsLXRvZ2dsZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICAgIC5yZXBvcnQtbmFtZSB7XG4gICAgICAgIG1heC13aWR0aDogMTAwcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICAgIH1cbiAgICAgIC5hY3Rpb25zLWRpdmlkZXIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgICAgLnRvb2wtYnRuIC5idG4tbGFiZWwge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgICAudG9vbC1idG4ge1xuICAgICAgICBwYWRkaW5nOiA1cHggN3B4O1xuICAgICAgICBtaW4td2lkdGg6IDMwcHg7XG4gICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB9XG4gICAgICAubW9kZS1waWxsLWdyb3VwIHtcbiAgICAgICAgcGFkZGluZzogMnB4O1xuICAgICAgICBnYXA6IDFweDtcbiAgICAgIH1cbiAgICAgIC5tb2RlLWJ0biB7XG4gICAgICAgIHBhZGRpbmc6IDRweCA4cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTEuNnB4O1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAbWVkaWEgKG1heC13aWR0aDogNjgwcHgpIHtcbiAgICAgIDpob3N0IHsgLS1ycHQtdG9vbGJhci1jb250cm9sLWhlaWdodDogMjhweDsgfVxuICAgICAgOmhvc3Qge1xuICAgICAgICBoZWlnaHQ6IDQ2cHg7XG4gICAgICB9XG4gICAgICAucnB0LXRvb2xiYXItcm9vdCB7XG4gICAgICAgIHBhZGRpbmc6IDAgNnB4O1xuICAgICAgICBnYXA6IDNweDtcbiAgICAgIH1cbiAgICAgIC5yZXBvcnQtbmFtZSB7XG4gICAgICAgIG1heC13aWR0aDogNzVweDtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgfVxuICAgICAgLmRpcnR5LWJhZGdlIHtcbiAgICAgICAgZm9udC1zaXplOiA5LjZweDtcbiAgICAgICAgcGFkZGluZzogMXB4IDRweDtcbiAgICAgIH1cbiAgICAgIC5tb2RlLWJ0biAubW9kZS1sYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgICAubW9kZS1idG4ge1xuICAgICAgICBwYWRkaW5nOiA1cHggOHB4O1xuICAgICAgfVxuICAgICAgLnRvb2wtYnRuIHtcbiAgICAgICAgbWluLXdpZHRoOiAyOHB4O1xuICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIHBhZGRpbmc6IDRweCA2cHg7XG4gICAgICB9XG4gICAgICAucnB0LXRvb2xiYXItcmlnaHQge1xuICAgICAgICBnYXA6IDNweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBCbHVlcHJpbnRzIE1vZGFsICovXG4gICAgLmJsdWVwcmludC1iYWNrZHJvcCB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBpbnNldDogMDtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTUsIDIzLCA0MiwgMC40NSk7XG4gICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNHB4KTtcbiAgICAgIHotaW5kZXg6IDIwMDA7XG4gICAgICBhbmltYXRpb246IHJwdC1mYWRlLWluIDE1MG1zIGVhc2Utb3V0O1xuICAgIH1cbiAgICAuYmx1ZXByaW50LW1vZGFsIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICB3aWR0aDogbWluKDg0MHB4LCA5MnZ3KTtcbiAgICAgIG1heC1oZWlnaHQ6IDg1dmg7XG4gICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2NiZDVlMSk7XG4gICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ycHQtYm9yZGVyLXJhZGl1cy14bCwgMTJweCk7XG4gICAgICBib3gtc2hhZG93OiB2YXIoLS1ycHQtYm94LXNoYWRvdy14bCwgMCAyMHB4IDI1cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMTUpKTtcbiAgICAgIHotaW5kZXg6IDIwMDE7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBhbmltYXRpb246IHJwdC1tb2RhbC1pbiAxODBtcyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKTtcbiAgICB9XG4gICAgQGtleWZyYW1lcyBycHQtZmFkZS1pbiB7XG4gICAgICBmcm9tIHsgb3BhY2l0eTogMDsgfVxuICAgICAgdG8geyBvcGFjaXR5OiAxOyB9XG4gICAgfVxuICAgIEBrZXlmcmFtZXMgcnB0LW1vZGFsLWluIHtcbiAgICAgIGZyb20geyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNDYlKSBzY2FsZSgwLjk2KTsgb3BhY2l0eTogMDsgfVxuICAgICAgdG8geyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSBzY2FsZSgxKTsgb3BhY2l0eTogMTsgfVxuICAgIH1cbiAgICAuYmx1ZXByaW50LW1vZGFsLWhlYWRlciB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICBwYWRkaW5nOiAyMHB4IDI0cHg7XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2NiZDVlMSk7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtY29sb3Itc3VyZmFjZSwgI2Y4ZmFmYyk7XG4gICAgfVxuICAgIC5ibHVlcHJpbnQtbW9kYWwtdGl0bGUge1xuICAgICAgZm9udC1zaXplOiB2YXIoLS1ycHQtZm9udC1zaXplLWxnLCAxOHB4KTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQsICMwZjE3MmEpO1xuICAgICAgbWFyZ2luOiAwIDAgNHB4IDA7XG4gICAgfVxuICAgIC5ibHVlcHJpbnQtbW9kYWwtc3ViIHtcbiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tcnB0LWZvbnQtc2l6ZS1zbSwgMTJweCk7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQtbXV0ZWQsICM2NDc0OGIpO1xuICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbiAgICAuYnRuLWNsb3NlLW1vZGFsIHtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LW11dGVkLCAjNjQ3NDhiKTtcbiAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHBhZGRpbmc6IDRweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDEyMG1zIGVhc2U7XG4gICAgfVxuICAgIC5idG4tY2xvc2UtbW9kYWw6aG92ZXIge1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LCAjMGYxNzJhKTtcbiAgICAgIGJhY2tncm91bmQ6ICNlMmU4ZjA7XG4gICAgfVxuICAgIC5ibHVlcHJpbnQtZ3JpZCB7XG4gICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyNDBweCwgMWZyKSk7XG4gICAgICBnYXA6IDE2cHg7XG4gICAgICBwYWRkaW5nOiAyMHB4IDI0cHg7XG4gICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIH1cbiAgICAuYmx1ZXByaW50LWNhcmQge1xuICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXJwdC1jb2xvci1ib3JkZXIsICNjYmQ1ZTEpO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMtbGcsIDhweCk7XG4gICAgICBwYWRkaW5nOiAxNnB4O1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMTUwbXMgZWFzZTtcbiAgICB9XG4gICAgLmJsdWVwcmludC1jYXJkOmhvdmVyIHtcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgICAgYm94LXNoYWRvdzogMCA4cHggMjRweCByZ2JhKDM3LCA5OSwgMjM1LCAwLjEyKTtcbiAgICB9XG4gICAgLmJsdWVwcmludC1jYXJkLXRvcCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG4gICAgfVxuICAgIC5ibHVlcHJpbnQtY2F0LWJhZGdlIHtcbiAgICAgIGZvbnQtc2l6ZTogMTAuNHB4O1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGNvbG9yOiAjN2MzYWVkO1xuICAgICAgYmFja2dyb3VuZDogI2Y1ZjNmZjtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ2ZmU7XG4gICAgICBwYWRkaW5nOiAycHggNnB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIH1cbiAgICAuYmx1ZXByaW50LWNhcmQtaWNvbiB7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgIH1cbiAgICAuYmx1ZXByaW50LWNhcmQtdGl0bGUge1xuICAgICAgZm9udC1zaXplOiB2YXIoLS1ycHQtZm9udC1zaXplLWJhc2UsIDE0cHgpO1xuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dCwgIzBmMTcyYSk7XG4gICAgICBtYXJnaW46IDAgMCA2cHggMDtcbiAgICB9XG4gICAgLmJsdWVwcmludC1jYXJkLWRlc2Mge1xuICAgICAgZm9udC1zaXplOiB2YXIoLS1ycHQtZm9udC1zaXplLXNtLCAxMnB4KTtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dC1tdXRlZCwgIzY0NzQ4Yik7XG4gICAgICBsaW5lLWhlaWdodDogMS40O1xuICAgICAgbWFyZ2luOiAwIDAgMTZweCAwO1xuICAgICAgZmxleDogMTtcbiAgICB9XG4gICAgLmJsdWVwcmludC1jYXJkLWZvb3RlciB7XG4gICAgICBtYXJnaW4tdG9wOiBhdXRvO1xuICAgIH1cbiAgICAuYnRuLWFwcGx5LWJsdWVwcmludCB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMsIDZweCk7XG4gICAgICBwYWRkaW5nOiA2cHggMTJweDtcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDEyMG1zIGVhc2U7XG4gICAgfVxuICAgIC5ibHVlcHJpbnQtY2FyZDpob3ZlciAuYnRuLWFwcGx5LWJsdWVwcmludCB7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeS1ob3ZlciwgIzFkNGVkOCk7XG4gICAgfVxuICBgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERlc2lnbmVyVG9vbGJhckNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVxdWVzdHMgPSBuZXcgUmVwb3J0UmVxdWVzdFNjb3BlKCk7XG4gIHJlYWRvbmx5IGNhdGFsb2dMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgY2F0YWxvZ0Vycm9yID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSBpc1N3aXRjaGluZ1JlcG9ydCA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzaWduZXJTdGF0ZSA9IGluamVjdChEZXNpZ25lclN0YXRlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGVtcGxhdGVTZXJ2aWNlID0gaW5qZWN0KFJlcG9ydFRlbXBsYXRlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW5kcG9pbnRTY29wZSA9IGluamVjdChEZXNpZ25lckVuZHBvaW50c1NlcnZpY2UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVwb3J0U3RvcmUgPSBpbmplY3QoUmVwb3J0U3RvcmVTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHJlYWRvbmx5IGRlZmluaXRpb24gPSB0aGlzLmRlc2lnbmVyU3RhdGUuZGVmaW5pdGlvbjtcbiAgcmVhZG9ubHkgdmlld01vZGUgPSB0aGlzLmRlc2lnbmVyU3RhdGUudmlld01vZGU7XG4gIHJlYWRvbmx5IGlzRGlydHkgPSB0aGlzLmRlc2lnbmVyU3RhdGUuaXNEaXJ0eTtcbiAgcmVhZG9ubHkgY2FuVW5kbyA9IHRoaXMuZGVzaWduZXJTdGF0ZS5jYW5VbmRvO1xuICByZWFkb25seSBjYW5SZWRvID0gdGhpcy5kZXNpZ25lclN0YXRlLmNhblJlZG87XG5cbiAgcmVhZG9ubHkgaXNUZW1wbGF0ZXNNb2RhbE9wZW4gPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBhdmFpbGFibGVCbHVlcHJpbnRzOiBSZXBvcnRCbHVlcHJpbnRbXSA9IHRoaXMudGVtcGxhdGVTZXJ2aWNlLmdldFRlbXBsYXRlcygpO1xuXG4gIHJlYWRvbmx5IGlzRWRpdGluZ05hbWUgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBuYW1lRHJhZnQgPSBzaWduYWw8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IHJlcG9ydFN1bW1hcmllcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMucmVwb3J0U3RvcmU/LnN1bW1hcmllcygpID8/IFtdKTtcblxuICByZWFkb25seSBpc0xlZnRQYW5lbENvbGxhcHNlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgaXNSaWdodFBhbmVsQ29sbGFwc2VkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSB0b2dnbGVMZWZ0UGFuZWwgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcmVhZG9ubHkgdG9nZ2xlUmlnaHRQYW5lbCA9IG91dHB1dDx2b2lkPigpO1xuXG4gIHJlYWRvbmx5IHNhdmVSZXF1ZXN0ZWQgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgdGhpcy5lbmRwb2ludFNjb3BlPy5yZXZpc2lvbigpOyB0aGlzLnJlcXVlc3RzLmNvbnRleHQoKTtcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7IHRoaXMucmVxdWVzdHMuY2FuY2VsKCdzd2l0Y2gtcmVwb3J0Jyk7IHRoaXMucmVmcmVzaFJlcG9ydHMoKTsgfSk7XG4gICAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcbiAgfVxuXG4gIHN0YXJ0UmVuYW1lKCk6IHZvaWQge1xuICAgIHRoaXMubmFtZURyYWZ0LnNldCh0aGlzLmRlZmluaXRpb24oKS5uYW1lIHx8ICcnKTtcbiAgICB0aGlzLmlzRWRpdGluZ05hbWUuc2V0KHRydWUpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXRFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5yZXBvcnQtbmFtZS1pbnB1dCcpIGFzIEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsO1xuICAgICAgaWYgKGlucHV0RWwpIHtcbiAgICAgICAgaW5wdXRFbC5mb2N1cygpO1xuICAgICAgICBpbnB1dEVsLnNlbGVjdCgpO1xuICAgICAgfVxuICAgIH0sIDIwKTtcbiAgfVxuXG4gIHNhdmVSZW5hbWUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzRWRpdGluZ05hbWUoKSkgcmV0dXJuO1xuICAgIGNvbnN0IHRyaW1tZWQgPSB0aGlzLm5hbWVEcmFmdCgpLnRyaW0oKTtcbiAgICB0aGlzLmlzRWRpdGluZ05hbWUuc2V0KGZhbHNlKTtcblxuICAgIGlmICghdHJpbW1lZCB8fCB0cmltbWVkID09PSB0aGlzLmRlZmluaXRpb24oKS5uYW1lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdXBkYXRlczogUGFydGlhbDxSZXBvcnREZWZpbml0aW9uPiA9IHsgbmFtZTogdHJpbW1lZCB9O1xuICAgIGlmICghdGhpcy5kZWZpbml0aW9uKCkuc2x1Zykge1xuICAgICAgdXBkYXRlcy5zbHVnID0gdGhpcy50b1NsdWcodHJpbW1lZCk7XG4gICAgfVxuXG4gICAgdGhpcy5kZXNpZ25lclN0YXRlLnVwZGF0ZVJlcG9ydFNldHRpbmdzKHVwZGF0ZXMpO1xuICB9XG5cbiAgY2FuY2VsUmVuYW1lKCk6IHZvaWQge1xuICAgIHRoaXMuaXNFZGl0aW5nTmFtZS5zZXQoZmFsc2UpO1xuICB9XG5cbiAgY3JlYXRlTmV3UmVwb3J0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGlydHkoKSkge1xuICAgICAgY29uc3QgY29uZmlybURpc2NhcmQgPSBjb25maXJtKFxuICAgICAgICAnWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzIG9uIHRoZSBjdXJyZW50IHJlcG9ydC4gRG8geW91IHdhbnQgdG8gZGlzY2FyZCB0aGVtIGFuZCBjcmVhdGUgYSBuZXcgcmVwb3J0PydcbiAgICAgICk7XG4gICAgICBpZiAoIWNvbmZpcm1EaXNjYXJkKSByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbmV3SWQgPSBgcnB0LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDgpfWA7XG4gICAgdGhpcy5kZXNpZ25lclN0YXRlLmxvYWREZWZpbml0aW9uKHtcbiAgICAgIGlkOiBuZXdJZCxcbiAgICAgIG5hbWU6ICdOZXcgQ3VzdG9tIFJlcG9ydCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ1Zpc3VhbGx5IGRlc2lnbmVkIHJlcG9ydGluZyBwYWdlIGNyZWF0ZWQgd2l0aCBCV2F5cy1SZXBvcnQuJyxcbiAgICAgIHNjaGVtYVZlcnNpb246IDEsXG4gICAgICB2ZXJzaW9uOiAxLFxuICAgICAgbGF5b3V0OiB7IGNvbHVtbnM6IDEyLCBnYXA6IDE2LCBwYWRkaW5nOiAyNCwgZGlyZWN0aW9uOiAnbHRyJyB9LFxuICAgICAgY29tcG9uZW50czogW10sXG4gICAgICBwYXJhbWV0ZXJzOiBbXSxcbiAgICAgIGRhdGFTb3VyY2VzOiBbXSxcbiAgICB9KTtcbiAgfVxuXG4gIHJlZnJlc2hSZXBvcnRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5yZXBvcnRTdG9yZSkgcmV0dXJuO1xuICAgIHRoaXMuY2F0YWxvZ0xvYWRpbmcuc2V0KHRydWUpOyB0aGlzLmNhdGFsb2dFcnJvci5zZXQobnVsbCk7XG4gICAgdGhpcy5yZXF1ZXN0cy5ydW4oJ2NhdGFsb2cnLCAoKSA9PiB0aGlzLnJlcG9ydFN0b3JlIS5sb2FkU3VtbWFyaWVzKCksICgpID0+IHt9LFxuICAgICAgZXJyb3IgPT4gdGhpcy5jYXRhbG9nRXJyb3Iuc2V0KGVycm9yLm1lc3NhZ2UpLCAoKSA9PiB0aGlzLmNhdGFsb2dMb2FkaW5nLnNldChmYWxzZSkpO1xuICB9XG5cbiAgb25Td2l0Y2hSZXBvcnQocmVwb3J0SWQ6IHN0cmluZywgc2VsZWN0PzogSFRNTFNlbGVjdEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCByZXN0b3JlID0gKCkgPT4geyBpZiAoc2VsZWN0KSBzZWxlY3QudmFsdWUgPSB0aGlzLmRlZmluaXRpb24oKS5pZDsgfTtcbiAgICBpZiAoIXJlcG9ydElkIHx8IHJlcG9ydElkID09PSB0aGlzLmRlZmluaXRpb24oKS5pZCkgeyByZXN0b3JlKCk7IHJldHVybjsgfVxuICAgIGlmICh0aGlzLmlzRGlydHkoKSAmJiAhY29uZmlybSgnWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzLiBEaXNjYXJkIHRoZW0gYW5kIHN3aXRjaCB0byBhbm90aGVyIHJlcG9ydD8nKSkgeyByZXN0b3JlKCk7IHJldHVybjsgfVxuICAgIGlmICghdGhpcy5yZXBvcnRTdG9yZSkgeyB0aGlzLmNhdGFsb2dFcnJvci5zZXQoJ1JlcG9ydCBzdG9yYWdlIGlzIG5vdCBjb25maWd1cmVkLicpOyByZXN0b3JlKCk7IHJldHVybjsgfVxuICAgIGNvbnN0IGRyYWZ0ID0gdGhpcy5kZWZpbml0aW9uKCk7XG4gICAgdGhpcy5pc1N3aXRjaGluZ1JlcG9ydC5zZXQodHJ1ZSk7IHRoaXMuY2F0YWxvZ0Vycm9yLnNldChudWxsKTtcbiAgICB0aGlzLnJlcXVlc3RzLnJ1bignc3dpdGNoLXJlcG9ydCcsICgpID0+IHRoaXMucmVwb3J0U3RvcmUhLmxvYWRSZXBvcnQocmVwb3J0SWQsIHRydWUpLnBpcGUobWFwKGRlZiA9PiB7XG4gICAgICBpZiAodGhpcy5kZWZpbml0aW9uKCkgIT09IGRyYWZ0KSB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBkcmFmdCBjaGFuZ2VkIHdoaWxlIGxvYWRpbmcuIFNlbGVjdCB0aGUgcmVwb3J0IGFnYWluIHRvIHJldmlldyB5b3VyIGNoYW5nZXMuJyk7XG4gICAgICByZXR1cm4gbm9ybWFsaXplUmVwb3J0RGVmaW5pdGlvbihkZWYpO1xuICAgIH0pKSwgZGVmID0+IHRoaXMuZGVzaWduZXJTdGF0ZS5sb2FkRGVmaW5pdGlvbihkZWYpLCBlcnJvciA9PiB7IHRoaXMuY2F0YWxvZ0Vycm9yLnNldChlcnJvci5tZXNzYWdlKTsgcmVzdG9yZSgpOyB9LFxuICAgICAgKCkgPT4gdGhpcy5pc1N3aXRjaGluZ1JlcG9ydC5zZXQoZmFsc2UpKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9TbHVnKHZhbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnRyaW0oKVxuICAgICAgLnJlcGxhY2UoL1teXFx3XFxzLV0vZywgJycpXG4gICAgICAucmVwbGFjZSgvW1xcc18tXSsvZywgJy0nKVxuICAgICAgLnJlcGxhY2UoL14tK3wtKyQvZywgJycpO1xuICB9XG5cbiAgc2V0TW9kZShtb2RlOiBEZXNpZ25lclZpZXdNb2RlKTogdm9pZCB7XG4gICAgdGhpcy5kZXNpZ25lclN0YXRlLnNldFZpZXdNb2RlKG1vZGUpO1xuICB9XG5cbiAgdW5kbygpOiB2b2lkIHtcbiAgICB0aGlzLmRlc2lnbmVyU3RhdGUudW5kbygpO1xuICB9XG5cbiAgcmVkbygpOiB2b2lkIHtcbiAgICB0aGlzLmRlc2lnbmVyU3RhdGUucmVkbygpO1xuICB9XG5cbiAgc2F2ZVJlcG9ydCgpOiB2b2lkIHtcbiAgICB0aGlzLnNhdmVSZXF1ZXN0ZWQuZW1pdCgpO1xuICB9XG5cbiAgb3BlblRlbXBsYXRlc01vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNUZW1wbGF0ZXNNb2RhbE9wZW4uc2V0KHRydWUpO1xuICB9XG5cbiAgY2xvc2VUZW1wbGF0ZXNNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzVGVtcGxhdGVzTW9kYWxPcGVuLnNldChmYWxzZSk7XG4gIH1cblxuICBhcHBseUJsdWVwcmludChibHVlcHJpbnRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbmV3RGVmID0gdGhpcy50ZW1wbGF0ZVNlcnZpY2UuaW5zdGFudGlhdGVUZW1wbGF0ZShibHVlcHJpbnRJZCk7XG4gICAgdGhpcy5kZXNpZ25lclN0YXRlLmxvYWREZWZpbml0aW9uKG5ld0RlZik7XG4gICAgdGhpcy5jbG9zZVRlbXBsYXRlc01vZGFsKCk7XG4gIH1cblxuICBhZGRSZXN1bHRHcmlkKCk6IHZvaWQge1xuICAgIGNvbnN0IGV4aXN0aW5nRHMgPSB0aGlzLmRlZmluaXRpb24oKS5kYXRhU291cmNlc1swXTtcbiAgICBjb25zdCBkZWZhdWx0R3JpZDogUmVwb3J0R3JpZERlZmluaXRpb24gPSB7XG4gICAgICBkYXRhU291cmNlSWQ6IGV4aXN0aW5nRHM/LmlkID8/ICdkZWZhdWx0JyxcbiAgICAgIGNvbHVtbnM6IFtcbiAgICAgICAgeyBmaWVsZDogJ2lkJywgbGFiZWw6ICdJRCcsIGRhdGFUeXBlOiAnbnVtYmVyJywgdmlzaWJsZTogdHJ1ZSwgc29ydGFibGU6IHRydWUgfSxcbiAgICAgICAgeyBmaWVsZDogJ25hbWUnLCBsYWJlbDogJ05hbWUnLCBkYXRhVHlwZTogJ3N0cmluZycsIHZpc2libGU6IHRydWUsIHNvcnRhYmxlOiB0cnVlIH0sXG4gICAgICBdLFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBwYWdpbmF0aW9uOiB0cnVlLFxuICAgICAgICBwYWdlU2l6ZTogMjUsXG4gICAgICAgIHNob3dSb3dOdW1iZXJzOiB0cnVlLFxuICAgICAgICBzaG93Rm9vdGVyOiB0cnVlLFxuICAgICAgICBzaWRlQmFyOiB0cnVlLFxuICAgICAgICBnbG9iYWxTZWFyY2g6IHRydWUsXG4gICAgICAgIHN0YXR1c0JhcjogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfTtcbiAgICB0aGlzLmRlc2lnbmVyU3RhdGUudXBkYXRlR3JpZFNldHRpbmdzKGRlZmF1bHRHcmlkKTtcbiAgICB0aGlzLmRlc2lnbmVyU3RhdGUuc2VsZWN0Q29tcG9uZW50KG51bGwpO1xuICAgIHRoaXMuZGVzaWduZXJTdGF0ZS5zZXRBY3RpdmVUYWIoJ2dyaWQnKTtcbiAgfVxuXG4gIHNlbGVjdEdyaWRTZXR0aW5ncygpOiB2b2lkIHtcbiAgICB0aGlzLmRlc2lnbmVyU3RhdGUuc2VsZWN0Q29tcG9uZW50KG51bGwpO1xuICAgIHRoaXMuZGVzaWduZXJTdGF0ZS5zZXRBY3RpdmVUYWIoJ2dyaWQnKTtcbiAgfVxuXG4gIGV4cG9ydEpzb24oKTogdm9pZCB7XG4gICAgY29uc3QgZGF0YVN0ciA9XG4gICAgICAnZGF0YTp0ZXh0L2pzb247Y2hhcnNldD11dGYtOCwnICtcbiAgICAgIGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeSh0aGlzLmRlZmluaXRpb24oKSwgbnVsbCwgMikpO1xuICAgIGNvbnN0IGRvd25sb2FkQW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGRvd25sb2FkQW5jaG9yLnNldEF0dHJpYnV0ZSgnaHJlZicsIGRhdGFTdHIpO1xuICAgIGRvd25sb2FkQW5jaG9yLnNldEF0dHJpYnV0ZShcbiAgICAgICdkb3dubG9hZCcsXG4gICAgICBgJHt0aGlzLmRlZmluaXRpb24oKS5pZCB8fCAncmVwb3J0LWRlZmluaXRpb24nfS5qc29uYFxuICAgICk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb3dubG9hZEFuY2hvcik7XG4gICAgZG93bmxvYWRBbmNob3IuY2xpY2soKTtcbiAgICBkb3dubG9hZEFuY2hvci5yZW1vdmUoKTtcbiAgfVxufVxuIl19
|