@hestia-earth/ui-components 0.29.7 → 0.30.0
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/engine/engine-models-version-link/engine-models-version-link.component.d.ts +1 -1
- package/engine/engine-orchestrator-edit/engine-orchestrator-edit.component.d.ts +1 -1
- package/engine/engine.service.d.ts +1 -2
- package/esm2022/engine/engine-orchestrator-edit/engine-orchestrator-edit.component.mjs +2 -2
- package/esm2022/engine/engine.service.mjs +2 -3
- package/esm2022/node/node-logs-models/node-logs-models.component.mjs +1 -1
- package/esm2022/node/node-logs-models/node-logs-models.model.mjs +1 -1
- package/fesm2022/hestia-earth-ui-components.mjs +1 -2
- package/fesm2022/hestia-earth-ui-components.mjs.map +1 -1
- package/node/node-logs-models/node-logs-models.component.d.ts +1 -1
- package/node/node-logs-models/node-logs-models.model.d.ts +1 -1
- package/package.json +1 -2
|
@@ -3,7 +3,7 @@ export declare class EngineModelsVersionLinkComponent {
|
|
|
3
3
|
protected readonly faExternalLinkAlt: import("@fortawesome/fontawesome-common-types").IconDefinition;
|
|
4
4
|
protected readonly node: import("@angular/core").InputSignal<any>;
|
|
5
5
|
protected readonly showDetails: import("@angular/core").InputSignal<boolean>;
|
|
6
|
-
protected readonly ENGINE_VERSION = "0.65.
|
|
6
|
+
protected readonly ENGINE_VERSION = "0.65.7";
|
|
7
7
|
protected readonly version: import("@angular/core").Signal<string>;
|
|
8
8
|
protected readonly url: import("@angular/core").Signal<string>;
|
|
9
9
|
static ɵfac: i0.ɵɵFactoryDeclaration<EngineModelsVersionLinkComponent, never>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ITermJSONLD } from '@hestia-earth/schema';
|
|
2
|
-
import { allowedType, IOrchestratorConfig, IOrchestratorModelConfig } from '@hestia-earth/engine-
|
|
2
|
+
import { allowedType, IOrchestratorConfig, IOrchestratorModelConfig } from '@hestia-earth/engine-models';
|
|
3
3
|
import { IModelExtended } from '../engine.service';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class EngineOrchestratorEditComponent {
|
|
@@ -2,8 +2,7 @@ import { InjectionToken } from '@angular/core';
|
|
|
2
2
|
import { HttpClient } from '@angular/common/http';
|
|
3
3
|
import { Observable } from 'rxjs';
|
|
4
4
|
import { EmissionMethodTier, JSONLD, NodeType, SchemaType, SiteSiteType, TermTermType, blankNodesType } from '@hestia-earth/schema';
|
|
5
|
-
import { IModel } from '@hestia-earth/engine-models';
|
|
6
|
-
import { allowedType, IOrchestratorConfig, IOrchestratorModelConfig } from '@hestia-earth/engine-config';
|
|
5
|
+
import { IModel, allowedType, IOrchestratorConfig, IOrchestratorModelConfig } from '@hestia-earth/engine-models';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
8
7
|
export declare const HE_CALCULATIONS_BASE_URL: InjectionToken<string>;
|
|
9
8
|
export declare const engineGitBaseUrl: () => string;
|
|
@@ -3,7 +3,7 @@ import { NgTemplateOutlet, JsonPipe, KeyValuePipe } from '@angular/common';
|
|
|
3
3
|
import { FormsModule } from '@angular/forms';
|
|
4
4
|
import { toObservable, toSignal } from '@angular/core/rxjs-interop';
|
|
5
5
|
import { NodeType, SchemaType } from '@hestia-earth/schema';
|
|
6
|
-
import { loadConfig } from '@hestia-earth/engine-
|
|
6
|
+
import { loadConfig } from '@hestia-earth/engine-models';
|
|
7
7
|
import { keyToLabel, unique } from '@hestia-earth/utils';
|
|
8
8
|
import { FaIconComponent } from '@fortawesome/angular-fontawesome';
|
|
9
9
|
import { NgbDropdownModule, NgbTooltip } from '@ng-bootstrap/ng-bootstrap';
|
|
@@ -130,4 +130,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
|
|
|
130
130
|
KeyToLabelPipe
|
|
131
131
|
], template: "<p>\n <i>\n The configuration below is a preview of the\n <a [href]=\"configUrl\" target=\"_blank\">JSON configuration file</a>\n used for the orchestration of the HESTIA's calculations.\n </i>\n</p>\n<p>\n <i>Note: not all models might be represented accurately.</i>\n</p>\n\n<div class=\"is-size-7 is-italic\">\n <div class=\"columns is-mobile is-multiline is-vcentered is-variable is-1 my-0\">\n <div class=\"column\">\n <div class=\"pl-3 model-parallel my-3\">\n <span>Models running in parallel</span>\n </div>\n </div>\n\n <div class=\"column is-narrow\">\n <div ngbDropdown #optionDd=\"ngbDropdown\" container=\"body\" placement=\"bottom-end\" autoClose=\"outside\">\n <button\n ngbDropdownToggle\n class=\"button is-ghost\"\n aria-haspopup=\"true\"\n aria-controls=\"option-menu\"\n ngbTooltip=\"Options\"\n placement=\"bottom\"\n container=\"body\"\n [disableTooltip]=\"optionDd.isOpen()\">\n <span class=\"icon is-small\">\n <fa-icon [icon]=\"faCog\" aria-hidden=\"true\" />\n </span>\n </button>\n <div ngbDropdownMenu id=\"option-menu\" role=\"menu\">\n <div class=\"dropdown-content | is-dropdown-filters\">\n <div class=\"dropdown-item\">\n <div class=\"field\">\n <div class=\"control is-expanded has-icons-right\">\n <input\n type=\"text\"\n class=\"input search-input is-secondary is-small\"\n [ngModel]=\"search()\"\n name=\"collection\"\n placeholder=\"Filter by key, name or model\"\n (input)=\"search.set($event.target.value)\" />\n <a class=\"icon is-small is-right\" (click)=\"search.set('')\">\n <fa-icon [icon]=\"faTimes\" />\n </a>\n </div>\n </div>\n\n <div class=\"field is-relative\">\n <input\n type=\"checkbox\"\n class=\"switch is-small is-rounded is-secondary\"\n [ngModel]=\"showAdvanced()\"\n id=\"showAdvanced\"\n (change)=\"showAdvanced.set($event.target.checked)\" />\n <label class=\"is-size-7\" for=\"showAdvanced\">\n <span>Show advanced data</span>\n </label>\n </div>\n\n <div class=\"field is-relative\">\n <input\n type=\"checkbox\"\n class=\"switch is-small is-rounded is-secondary\"\n [ngModel]=\"onlyGapFilled()\"\n id=\"onlyGapFilled\"\n (change)=\"onlyGapFilled.set($event.target.checked)\" />\n <label class=\"is-size-7\" for=\"onlyGapFilled\">\n <span>Show only gap-filled data</span>\n </label>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <div ngbDropdown #optionDd=\"ngbDropdown\" container=\"body\" placement=\"bottom-end\">\n <button\n ngbDropdownToggle\n class=\"button is-ghost\"\n aria-haspopup=\"true\"\n aria-controls=\"display-menu\"\n ngbTooltip=\"Display options\"\n placement=\"bottom\"\n container=\"body\"\n [disableTooltip]=\"optionDd.isOpen()\">\n <span class=\"icon is-small\">\n <fa-icon [icon]=\"displayBy() === 'list' ? faList : faTable\" aria-hidden=\"true\" />\n </span>\n </button>\n <div ngbDropdownMenu id=\"display-menu\" role=\"menu\">\n <div class=\"dropdown-content\">\n <a ngbDropdownItem [class.is-selected]=\"displayBy() === 'list'\" (click)=\"displayBy.set('list')\">\n <fa-icon [icon]=\"faList\" aria-hidden=\"true\" />\n <span class=\"pl-2\">Display by Priority</span>\n </a>\n <a ngbDropdownItem [class.is-selected]=\"displayBy() === 'type'\" (click)=\"displayBy.set('type')\">\n <fa-icon [icon]=\"faTable\" aria-hidden=\"true\" />\n <span class=\"pl-2\">Display by Type</span>\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n@if (displayBy() === 'list' && models()) {\n <div class=\"pl-3\">\n <ng-container *ngTemplateOutlet=\"modelList; context: { $implicit: models() }\" />\n </div>\n}\n\n@if (displayBy() === 'type' && groupedModels()) {\n <div class=\"tabs\">\n <ul>\n @for (group of groupedModels() | keyvalue; track group.key) {\n <li [class.is-active]=\"selectedGroupedKey() === group.key\">\n <a (click)=\"selectedGroupedKey.set(group.key)\">\n <span class=\"pl-2\">{{ group.key }} ({{ group.value.length }})</span>\n </a>\n </li>\n }\n </ul>\n </div>\n <div class=\"pl-3\">\n <ng-container *ngTemplateOutlet=\"modelList; context: { $implicit: groupedModels()[selectedGroupedKey()] }\" />\n </div>\n}\n\n<ng-template #termLink let-value>\n @if (termsById()[value]) {\n <he-node-link [node]=\"termsById()[value]\" [showExternalLink]=\"true\">\n <span>{{ termsById()[value].name }}</span>\n </he-node-link>\n } @else {\n <span>{{ value | keyToLabel }}</span>\n }\n</ng-template>\n\n<ng-template #modelList let-data>\n @for (v of data; track v) {\n <div>\n <ng-container *ngTemplateOutlet=\"model; context: { $implicit: v }\" />\n </div>\n }\n</ng-template>\n\n<ng-template #model let-data>\n @if (isArray(data) && data.length) {\n <div class=\"pl-3 model-parallel\">\n <ng-container *ngTemplateOutlet=\"modelList; context: { $implicit: data }\" />\n </div>\n <hr />\n } @else if (!isArray(data)) {\n <div class=\"card mb-2 model-serie is-size-6\">\n <div class=\"card-content p-3\">\n <span class=\"is-capitalized\">{{ data.key | keyToLabel }}</span>\n :\n @let link = findModelLink(data);\n @if (link) {\n <ng-container *ngTemplateOutlet=\"modelLink; context: { model: data.model, value: data.value, link }\" />\n } @else {\n @let modelLink = findModelPathLink(data);\n @if (modelLink) {\n <ng-container\n *ngTemplateOutlet=\"modelPathLink; context: { model: data.model, value: data.value, link: modelLink }\" />\n } @else {\n <span class=\"default-value\">{{ data.value }}</span>\n <p>\n <span class=\"pr-1\">Model:</span>\n <span class=\"pr-2\">\n <ng-container *ngTemplateOutlet=\"termLink; context: { $implicit: data.model }\" />\n </span>\n </p>\n }\n }\n @if (showAdvanced()) {\n <div>\n @if (data.runStrategy) {\n <div>\n <span class=\"pr-1\">Run strategy:</span>\n <ng-container\n *ngTemplateOutlet=\"strategiesLink; context: { strategy: data.runStrategy, type: 'run' }\" />\n @if (data.runArgs) {\n <div class=\"pl-3 is-size-7\">\n <p><b>Run arguments:</b></p>\n <ng-container *ngTemplateOutlet=\"strategiesArgs; context: { $implicit: data.runArgs }\" />\n </div>\n }\n </div>\n }\n @if (data.mergeStrategy) {\n <div>\n <span class=\"pr-1\">Merge strategy:</span>\n <ng-container\n *ngTemplateOutlet=\"strategiesLink; context: { strategy: data.mergeStrategy, type: 'merge' }\" />\n @if (data.mergeArgs) {\n <div class=\"pl-3 is-size-7\">\n <p><b>Merge arguments:</b></p>\n <ng-container *ngTemplateOutlet=\"strategiesArgs; context: { $implicit: data.mergeArgs }\" />\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #modelLinkKey let-model=\"model\" let-link=\"link\">\n <a [href]=\"modelKeyUrl(link, model)\" target=\"_blank\">{{ modelKeyName(link.modelKey) }}</a>\n</ng-template>\n\n<ng-template #modelLink let-model=\"model\" let-link=\"link\" let-value=\"value\">\n @if (link.term) {\n <ng-container *ngTemplateOutlet=\"termLink; context: { $implicit: link.term }\" />\n }\n\n @if (!link.term && !link?.modelKey) {\n <span class=\"default-value\">{{ value }}</span>\n }\n\n @if (!link.term && link?.modelKey) {\n <ng-container *ngTemplateOutlet=\"modelLinkKey; context: { link, model }\" />\n }\n\n <p class=\"model-link\">\n <span class=\"pr-1\">Model:</span>\n <span class=\"pr-2\">\n <ng-container *ngTemplateOutlet=\"termLink; context: { $implicit: model }\" />\n </span>\n\n <a class=\"is-size-7\" [href]=\"link.docPath\" target=\"_blank\">\n <span class=\"pr-1\">(View Docs)</span>\n <fa-icon [icon]=\"faExternalLinkAlt\" />\n </a>\n </p>\n</ng-template>\n\n<ng-template #modelPathLink let-model=\"model\" let-link=\"link\" let-value=\"value\">\n @if (!link?.modelKey) {\n <span class=\"default-value\">{{ value }}</span>\n }\n\n @if (link?.modelKey) {\n <ng-container *ngTemplateOutlet=\"modelLinkKey; context: { link, model }\" />\n }\n\n <p class=\"model-path-link\">\n <span class=\"pr-1\">Model:</span>\n <span class=\"pr-2\">\n <ng-container *ngTemplateOutlet=\"termLink; context: { $implicit: model }\" />\n </span>\n\n <a class=\"is-size-7\" [href]=\"link.docPath\" target=\"_blank\">\n <span class=\"pr-1\">(View Docs)</span>\n <fa-icon [icon]=\"faExternalLinkAlt\" />\n </a>\n </p>\n</ng-template>\n\n<ng-template #strategiesLink let-strategy=\"strategy\" let-type=\"type\">\n <span class=\"pr-2 is-inline-block\">\n <code>{{ strategy }}</code>\n </span>\n\n <a\n class=\"is-size-7\"\n [href]=\"strategiesDocs + '/' + type + '/' + (type === 'merge' ? 'merge_' : '') + strategy + '.md'\"\n target=\"_blank\">\n <span class=\"pr-1\">(View Docs)</span>\n <fa-icon [icon]=\"faExternalLinkAlt\" />\n </a>\n</ng-template>\n\n<ng-template #strategiesArgs let-args>\n <div class=\"pl-2\">\n @for (arg of args | keyvalue; track arg) {\n <p>\n <span class=\"has-text-underline\">{{ arg.key }}</span>\n :\n <code>{{ arg.value | json }}</code>\n </p>\n }\n </div>\n</ng-template>\n", styles: [":host{display:block}.model-parallel{border-left:3px solid #4a4a4a}.dropdown-content.is-dropdown-filters{min-width:250px}\n"] }]
|
|
132
132
|
}], ctorParameters: () => [] });
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLW9yY2hlc3RyYXRvci1lZGl0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbmdpbmUvZW5naW5lLW9yY2hlc3RyYXRvci1lZGl0L2VuZ2luZS1vcmNoZXN0cmF0b3ItZWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvZW5naW5lL2VuZ2luZS1vcmNoZXN0cmF0b3ItZWRpdC9lbmdpbmUtb3JjaGVzdHJhdG9yLWVkaXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFlLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RSxPQUFPLEVBQThELFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkcsT0FBTyxFQUFF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aUIsRUFBRSxJQUFJLEVBQUUsQ0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFUyxhQUFhLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUE0QjtRQUNoRSxPQUFPLGlCQUFpQixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFUyxpQkFBaUIsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQTRCO1FBQ3BFLE9BQU8saUJBQWlCLENBQUM7WUFDdkIsSUFBSSxFQUFFLEdBQUcsWUFBWSxFQUFFLHdCQUF3QixLQUFLLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsS0FBSztTQUM3RixDQUFDLENBQUM7SUFDTCxDQUFDOytHQXpGVSwrQkFBK0I7bUdBQS9CLCtCQUErQiwrVkM1RzVDLHU3VUFzU0EsK0tEdE1JLFlBQVksNENBQ1osUUFBUSw2Q0FFUixVQUFVLDBUQUNWLGlCQUFpQix1aEJBQ2pCLGVBQWUsMk1BQ2YsV0FBVyxneUJBQ1gsZ0JBQWdCLG9KQUNoQixpQkFBaUIsdUdBQ2pCLGNBQWM7OzRGQUdMLCtCQUErQjtrQkFuQjNDLFNBQVM7K0JBQ0UsNkJBQTZCLGNBRzNCLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDUCxZQUFZO3dCQUNaLFFBQVE7d0JBQ1IscUJBQXFCO3dCQUNyQixVQUFVO3dCQUNWLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixXQUFXO3dCQUNYLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQixjQUFjO3FCQUNmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0LCBKc29uUGlwZSwgS2V5VmFsdWVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IElUZXJtSlNPTkxELCBOb2RlVHlwZSwgU2NoZW1hVHlwZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IGFsbG93ZWRUeXBlLCBJT3JjaGVzdHJhdG9yQ29uZmlnLCBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcsIGxvYWRDb25maWcgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2VuZ2luZS1jb25maWcnO1xuaW1wb3J0IHsga2V5VG9MYWJlbCwgdW5pcXVlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5pbXBvcnQgeyBGYUljb25Db21wb25lbnQgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBOZ2JEcm9wZG93bk1vZHVsZSwgTmdiVG9vbHRpcCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IGZhQ29nLCBmYUV4dGVybmFsTGlua0FsdCwgZmFMaXN0LCBmYVRhYmxlLCBmYVRpbWVzIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgZ3JvdXBCeSwgbWFwLCBtZXJnZU1hcCwgcmVkdWNlLCBzdGFydFdpdGgsIHRvQXJyYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IElNb2RlbEV4dGVuZGVkLCBlbmdpbmVHaXRVcmwsIGZpbmRNYXRjaGluZ01vZGVsIH0gZnJvbSAnLi4vZW5naW5lLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSwgc2NoZW1hQmFzZVVybCwgZ2l0QnJhbmNoLCBnaXRIb21lIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWxzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkRGVlcCB9IGZyb20gJy4uLy4uL2NvbW1vbi9yeGpzLXV0aWxzJztcbmltcG9ydCB7IHBsdXJhbGl6ZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9wbHVyYWxpemUnO1xuaW1wb3J0IHsgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vY29tbW9uL2NsaWNrLW91dHNpZGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IEtleVRvTGFiZWxQaXBlIH0gZnJvbSAnLi4vLi4vY29tbW9uL2tleS10by1sYWJlbC5waXBlJztcbmltcG9ydCB7IEhlU2VhcmNoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlYXJjaC9zZWFyY2guc2VydmljZSc7XG5pbXBvcnQgeyBtYXRjaElkLCBtYXRjaFR5cGUgfSBmcm9tICcuLi8uLi9zZWFyY2gvc2VhcmNoLm1vZGVsJztcbmltcG9ydCB7IE5vZGVMaW5rQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbm9kZS9ub2RlLWxpbmsvbm9kZS1saW5rLmNvbXBvbmVudCc7XG5cbnR5cGUgY29uZmlncyA9IChJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcgfCBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWdbXSlbXTtcblxuY29uc3QgZ2l0VXJsID0gYCR7Z2l0SG9tZX0vJHtSZXBvc2l0b3J5Lm9yY2hlc3RyYXRvcn0vLS9ibG9iLyR7Z2l0QnJhbmNoKCl9YDtcbmNvbnN0IGdlbmVyYWxEb2NzVXJsID0gYCR7Z2l0VXJsfS9oZXN0aWFfZWFydGgvb3JjaGVzdHJhdG9yL2NvbmZpZy9SRUFETUUubWRgO1xuY29uc3Qgc3RyYXRlZ2llc0RvY3MgPSBgJHtnaXRVcmx9L2hlc3RpYV9lYXJ0aC9vcmNoZXN0cmF0b3Ivc3RyYXRlZ2llc2A7XG5cbmNvbnN0IHNjaGVtYVR5cGVLZXlzID0gT2JqZWN0LmtleXMoU2NoZW1hVHlwZSk7XG5cbmNvbnN0IHRvU2NoZW1hVHlwZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiBrZXlUb0xhYmVsKHZhbHVlKS5yZXBsYWNlKC9cXHMvZywgJycpO1xuXG5jb25zdCBpc1NjaGVtYVR5cGUgPSAodmFsdWU6IHN0cmluZykgPT5cbiAgW1xuICAgIHNjaGVtYVR5cGVLZXlzLmluY2x1ZGVzKHZhbHVlKSxcbiAgICBzY2hlbWFUeXBlS2V5cy5pbmNsdWRlcyhwbHVyYWxpemUodmFsdWUsIDEpKSxcbiAgICBzY2hlbWFUeXBlS2V5cy5pbmNsdWRlcyhwbHVyYWxpemUodG9TY2hlbWFUeXBlKHZhbHVlKSwgMSkpLFxuICAgIFsnZW1pc3Npb25zUmVzb3VyY2VVc2UnLCAnaW1wYWN0cycsICdlbmRwb2ludHMnXS5pbmNsdWRlcyh2YWx1ZSlcbiAgXS5zb21lKEJvb2xlYW4pO1xuXG5jb25zdCBpc0dhcEZpbGxlZCA9ICh7IHJ1blN0cmF0ZWd5LCBtZXJnZVN0cmF0ZWd5LCBtZXJnZUFyZ3MgfTogSU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnKSA9PlxuICBbJ2FkZF9ibGFua19ub2RlX2lmX21pc3NpbmcnLCAnYWRkX2tleV9pZl9taXNzaW5nJ10uaW5jbHVkZXMocnVuU3RyYXRlZ3kpICYmXG4gIChtZXJnZVN0cmF0ZWd5ICE9PSAnbGlzdCcgfHwgIW1lcmdlQXJncz8ucmVwbGFjZVRocmVzaG9sZCk7XG5cbmNvbnN0IGlzUmVjYWxjdWxhdGVkID0gKHsgcnVuU3RyYXRlZ3ksIG1lcmdlU3RyYXRlZ3ksIG1lcmdlQXJncyB9OiBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcpID0+XG4gIFsnYWRkX2JsYW5rX25vZGVfaWZfbWlzc2luZycsICdhZGRfa2V5X2lmX21pc3NpbmcnXS5pbmNsdWRlcyhydW5TdHJhdGVneSkgJiZcbiAgbWVyZ2VTdHJhdGVneSA9PT0gJ2xpc3QnICYmXG4gIG1lcmdlQXJncz8ucmVwbGFjZVRocmVzaG9sZDtcblxuY29uc3QgZmlsdGVyR2FwRmlsbGVkID0gKGNvbmZpZ3M6IGNvbmZpZ3MsIG9ubHlHYXBGaWxsZWQ6IGJvb2xlYW4pID0+XG4gIGNvbmZpZ3NcbiAgICAubWFwKG1vZGVsID0+IChBcnJheS5pc0FycmF5KG1vZGVsKSAmJiBvbmx5R2FwRmlsbGVkID8gbW9kZWwuZmlsdGVyKGlzR2FwRmlsbGVkKSA6IG1vZGVsKSlcbiAgICAuZmlsdGVyKG1vZGVsID0+ICFvbmx5R2FwRmlsbGVkIHx8IEFycmF5LmlzQXJyYXkobW9kZWwpIHx8IGlzR2FwRmlsbGVkKG1vZGVsKSk7XG5cbmNvbnN0IG1vZGVsTWF0Y2ggPVxuICAodGVybTogc3RyaW5nKSA9PlxuICAoeyBrZXksIG1vZGVsLCB2YWx1ZSB9OiBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcpID0+XG4gICAgW2tleSwgbW9kZWwsIHZhbHVlXS5maWx0ZXIoQm9vbGVhbikuc29tZSh2ID0+IHYudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtLnRvTG93ZXJDYXNlKCkpKTtcblxuY29uc3QgZmlsdGVyTW9kZWxzID0gKGNvbmZpZ3M6IGNvbmZpZ3MsIHRlcm0gPSAnJykgPT5cbiAgY29uZmlnc1xuICAgIC5tYXAobW9kZWwgPT4gKEFycmF5LmlzQXJyYXkobW9kZWwpICYmICEhdGVybSA/IG1vZGVsLmZpbHRlcihtb2RlbE1hdGNoKHRlcm0pKSA6IG1vZGVsKSlcbiAgICAuZmlsdGVyKG1vZGVsID0+ICF0ZXJtIHx8IEFycmF5LmlzQXJyYXkobW9kZWwpIHx8IG1vZGVsTWF0Y2godGVybSkobW9kZWwpKTtcblxuY29uc3QgbW9kZWxLZXlOYW1lID0gKG1vZGVsS2V5OiBzdHJpbmcpID0+IChtb2RlbEtleS5pbmNsdWRlcygnLicpID8gbW9kZWxLZXkuc3BsaXQoJy4nKVsxXSA6IG1vZGVsS2V5KTtcblxuY29uc3QgZ3JvdXBDb25maWckID0gKGNvbmZpZ3M6IGNvbmZpZ3MpID0+XG4gIGZyb20oY29uZmlncy5mbGF0KCkpLnBpcGUoXG4gICAgZmlsdGVyKCh7IGtleSB9KSA9PiBpc1NjaGVtYVR5cGUoa2V5KSksXG4gICAgZ3JvdXBCeSgoeyBrZXkgfSkgPT4ga2V5KSxcbiAgICBtZXJnZU1hcChncm91cCA9PiBncm91cC5waXBlKHRvQXJyYXkoKSkpLFxuICAgIHJlZHVjZShcbiAgICAgIChwcmV2LCBjdXJyKSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IGN1cnJbMF0ua2V5O1xuICAgICAgICBwcmV2W3RvU2NoZW1hVHlwZShrZXkpXSA9IGN1cnI7XG4gICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgfSxcbiAgICAgIHt9IGFzIHsgW2tleTogc3RyaW5nXTogSU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnW10gfVxuICAgIClcbiAgKTtcblxuY29uc3QgbW9kZWxLZXlVcmwgPSAoeyBtb2RlbEtleSB9OiBJTW9kZWxFeHRlbmRlZCwgbW9kZWw6IHN0cmluZykgPT4ge1xuICBjb25zdCBwYXJ0cyA9IG1vZGVsS2V5LnNwbGl0KCcuJyk7XG4gIGNvbnN0IHNjaGVtYVR5cGUgPSBwYXJ0cy5sZW5ndGggPT09IDIgPyBwYXJ0c1swXSA6IG1vZGVsO1xuICBjb25zdCB1cmwgPSBbc2NoZW1hQmFzZVVybCgpLCB0b1NjaGVtYVR5cGUoc2NoZW1hVHlwZSldLmZpbHRlcihCb29sZWFuKS5qb2luKCcvJyk7XG4gIHJldHVybiBpc1NjaGVtYVR5cGUoc2NoZW1hVHlwZSkgPyBgJHt1cmx9IyR7cGFydHMucG9wKCl9YCA6IG51bGw7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1lbmdpbmUtb3JjaGVzdHJhdG9yLWVkaXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZW5naW5lLW9yY2hlc3RyYXRvci1lZGl0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZW5naW5lLW9yY2hlc3RyYXRvci1lZGl0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgS2V5VmFsdWVQaXBlLFxuICAgIEpzb25QaXBlLFxuICAgIENsaWNrT3V0c2lkZURpcmVjdGl2ZSxcbiAgICBOZ2JUb29sdGlwLFxuICAgIE5nYkRyb3Bkb3duTW9kdWxlLFxuICAgIEZhSWNvbkNvbXBvbmVudCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIE5vZGVMaW5rQ29tcG9uZW50LFxuICAgIEtleVRvTGFiZWxQaXBlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRW5naW5lT3JjaGVzdHJhdG9yRWRpdENvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VhcmNoU2VydmljZSA9IGluamVjdChIZVNlYXJjaFNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBmYUV4dGVybmFsTGlua0FsdCA9IGZhRXh0ZXJuYWxMaW5rQWx0O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFUaW1lcyA9IGZhVGltZXM7XG4gIHByb3RlY3RlZCByZWFkb25seSBmYUNvZyA9IGZhQ29nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFMaXN0ID0gZmFMaXN0O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFUYWJsZSA9IGZhVGFibGU7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbmZpZyA9IGlucHV0PElPcmNoZXN0cmF0b3JDb25maWc+KCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBub2RlVHlwZSA9IGlucHV0PGFsbG93ZWRUeXBlPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYWxsTW9kZWxzID0gdG9TaWduYWwoXG4gICAgY29tYmluZUxhdGVzdChbdG9PYnNlcnZhYmxlKHRoaXMuY29uZmlnKSwgdG9PYnNlcnZhYmxlKHRoaXMubm9kZVR5cGUpXSkucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkRGVlcCgpLFxuICAgICAgbWFwKChbY29uZmlnLCBub2RlVHlwZV0pID0+IChjb25maWcgPyBjb25maWcgOiBsb2FkQ29uZmlnKG5vZGVUeXBlKSkpLFxuICAgICAgbWFwKCh7IG1vZGVscyB9KSA9PiBtb2RlbHMpLFxuICAgICAgc3RhcnRXaXRoKFtdIGFzIGNvbmZpZ3MpXG4gICAgKVxuICApO1xuICBwcml2YXRlIHJlYWRvbmx5IHRlcm1JZHMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHVuaXF1ZShcbiAgICAgIHRoaXMuYWxsTW9kZWxzKClcbiAgICAgICAgLmZsYXQoKVxuICAgICAgICAuZmxhdE1hcChtb2RlbCA9PiBbbW9kZWwubW9kZWwsIG1vZGVsLnZhbHVlXSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgIClcbiAgKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0ZXJtcyA9IHRvU2lnbmFsKFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLnRlcm1JZHMpLnBpcGUoXG4gICAgICBtZXJnZU1hcChpZHMgPT5cbiAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaCQ8SVRlcm1KU09OTEQsIE5vZGVUeXBlLlRlcm0+KHtcbiAgICAgICAgICBmaWVsZHM6IFsnQHR5cGUnLCAnQGlkJywgJ25hbWUnLCAndW5pdHMnXSxcbiAgICAgICAgICBsaW1pdDogaWRzLmxlbmd0aCxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgYm9vbDoge1xuICAgICAgICAgICAgICBtdXN0OiBbbWF0Y2hUeXBlKE5vZGVUeXBlLlRlcm0pXSxcbiAgICAgICAgICAgICAgc2hvdWxkOiBpZHMubWFwKG1hdGNoSWQpLFxuICAgICAgICAgICAgICBtaW5pbXVtX3Nob3VsZF9tYXRjaDogMVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgICBtYXAoKHsgcmVzdWx0cyB9KSA9PiByZXN1bHRzKVxuICAgIClcbiAgKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRlcm1zQnlJZCA9IGNvbXB1dGVkKCgpID0+XG4gICAgKHRoaXMudGVybXMoKSA/PyBbXSkucmVkdWNlKChwLCBjKSA9PiAoeyAuLi5wLCBbY1snQGlkJ11dOiBjIH0pLCB7fSBhcyB7IFtpZDogc3RyaW5nXTogSVRlcm1KU09OTEQgfSlcbiAgKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29uZmlnVXJsID0gW2dpdEhvbWUsICdoZXN0aWEtZW5naW5lLWNvbmZpZyddLmpvaW4oJy8nKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbW9kZWxLZXlOYW1lID0gbW9kZWxLZXlOYW1lO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbW9kZWxLZXlVcmwgPSBtb2RlbEtleVVybDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ2VuZXJhbERvY3NVcmwgPSBnZW5lcmFsRG9jc1VybDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0cmF0ZWdpZXNEb2NzID0gc3RyYXRlZ2llc0RvY3M7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlYXJjaCA9IHNpZ25hbCgnJyk7XG4gIHByb3RlY3RlZCByZWFkb25seSBvbmx5R2FwRmlsbGVkID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNob3dBZHZhbmNlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBkaXNwbGF5QnkgPSBzaWduYWw8J2xpc3QnIHwgJ3R5cGUnPignbGlzdCcpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBtb2RlbHMgPSBjb21wdXRlZCgoKSA9PlxuICAgIGZpbHRlck1vZGVscyhmaWx0ZXJHYXBGaWxsZWQodGhpcy5hbGxNb2RlbHMoKSwgdGhpcy5vbmx5R2FwRmlsbGVkKCkpLCB0aGlzLnNlYXJjaCgpKVxuICApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ3JvdXBlZE1vZGVscyA9IHRvU2lnbmFsKHRvT2JzZXJ2YWJsZSh0aGlzLm1vZGVscykucGlwZShtZXJnZU1hcChncm91cENvbmZpZyQpKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzZWxlY3RlZEdyb3VwZWRLZXkgPSBzaWduYWw8c3RyaW5nPih1bmRlZmluZWQpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gT2JqZWN0LmtleXModGhpcy5ncm91cGVkTW9kZWxzKCkpPy5bMF07XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZEdyb3VwZWRLZXkoKSAmJiBrZXkpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkR3JvdXBlZEtleS5zZXQoa2V5KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZmluZE1vZGVsTGluayh7IG1vZGVsLCB2YWx1ZSB9OiBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcpIHtcbiAgICByZXR1cm4gZmluZE1hdGNoaW5nTW9kZWwoeyBtb2RlbCwgdGVybTogdmFsdWUgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZmluZE1vZGVsUGF0aExpbmsoeyBtb2RlbCwgdmFsdWUgfTogSU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnKSB7XG4gICAgcmV0dXJuIGZpbmRNYXRjaGluZ01vZGVsKHtcbiAgICAgIHBhdGg6IGAke2VuZ2luZUdpdFVybCgpfS9oZXN0aWFfZWFydGgvbW9kZWxzLyR7bW9kZWx9LyR7KHZhbHVlIHx8ICcnKS5yZXBsYWNlKCcuJywgJy8nKX0ucHlgXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxwPlxuICA8aT5cbiAgICBUaGUgY29uZmlndXJhdGlvbiBiZWxvdyBpcyBhIHByZXZpZXcgb2YgdGhlXG4gICAgPGEgW2hyZWZdPVwiY29uZmlnVXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCI+SlNPTiBjb25maWd1cmF0aW9uIGZpbGU8L2E+XG4gICAgdXNlZCBmb3IgdGhlIG9yY2hlc3RyYXRpb24gb2YgdGhlIEhFU1RJQSdzIGNhbGN1bGF0aW9ucy5cbiAgPC9pPlxuPC9wPlxuPHA+XG4gIDxpPk5vdGU6IG5vdCBhbGwgbW9kZWxzIG1pZ2h0IGJlIHJlcHJlc2VudGVkIGFjY3VyYXRlbHkuPC9pPlxuPC9wPlxuXG48ZGl2IGNsYXNzPVwiaXMtc2l6ZS03IGlzLWl0YWxpY1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1ucyBpcy1tb2JpbGUgaXMtbXVsdGlsaW5lIGlzLXZjZW50ZXJlZCBpcy12YXJpYWJsZSBpcy0xIG15LTBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicGwtMyBtb2RlbC1wYXJhbGxlbCBteS0zXCI+XG4gICAgICAgIDxzcGFuPk1vZGVscyBydW5uaW5nIGluIHBhcmFsbGVsPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLW5hcnJvd1wiPlxuICAgICAgPGRpdiBuZ2JEcm9wZG93biAjb3B0aW9uRGQ9XCJuZ2JEcm9wZG93blwiIGNvbnRhaW5lcj1cImJvZHlcIiBwbGFjZW1lbnQ9XCJib3R0b20tZW5kXCIgYXV0b0Nsb3NlPVwib3V0c2lkZVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgbmdiRHJvcGRvd25Ub2dnbGVcbiAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1naG9zdFwiXG4gICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJvcHRpb24tbWVudVwiXG4gICAgICAgICAgbmdiVG9vbHRpcD1cIk9wdGlvbnNcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgW2Rpc2FibGVUb29sdGlwXT1cIm9wdGlvbkRkLmlzT3BlbigpXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYUNvZ1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnUgaWQ9XCJvcHRpb24tbWVudVwiIHJvbGU9XCJtZW51XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWNvbnRlbnQgfCBpcy1kcm9wZG93bi1maWx0ZXJzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24taXRlbVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZCBoYXMtaWNvbnMtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQgc2VhcmNoLWlucHV0IGlzLXNlY29uZGFyeSBpcy1zbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cImNvbGxlY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkZpbHRlciBieSBrZXksIG5hbWUgb3IgbW9kZWxcIlxuICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwic2VhcmNoLnNldCgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIC8+XG4gICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImljb24gaXMtc21hbGwgaXMtcmlnaHRcIiAoY2xpY2spPVwic2VhcmNoLnNldCgnJylcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiZmFUaW1lc1wiIC8+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBpcy1yZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3dpdGNoIGlzLXNtYWxsIGlzLXJvdW5kZWQgaXMtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInNob3dBZHZhbmNlZCgpXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwic2hvd0FkdmFuY2VkXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2hvd0FkdmFuY2VkLnNldCgkZXZlbnQudGFyZ2V0LmNoZWNrZWQpXCIgLz5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJpcy1zaXplLTdcIiBmb3I9XCJzaG93QWR2YW5jZWRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlNob3cgYWR2YW5jZWQgZGF0YTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaXMtcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInN3aXRjaCBpcy1zbWFsbCBpcy1yb3VuZGVkIGlzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvbmx5R2FwRmlsbGVkKClcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJvbmx5R2FwRmlsbGVkXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25seUdhcEZpbGxlZC5zZXQoJGV2ZW50LnRhcmdldC5jaGVja2VkKVwiIC8+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaXMtc2l6ZS03XCIgZm9yPVwib25seUdhcEZpbGxlZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+U2hvdyBvbmx5IGdhcC1maWxsZWQgZGF0YTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtbmFycm93XCI+XG4gICAgICA8ZGl2IG5nYkRyb3Bkb3duICNvcHRpb25EZD1cIm5nYkRyb3Bkb3duXCIgY29udGFpbmVyPVwiYm9keVwiIHBsYWNlbWVudD1cImJvdHRvbS1lbmRcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIG5nYkRyb3Bkb3duVG9nZ2xlXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtZ2hvc3RcIlxuICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwiZGlzcGxheS1tZW51XCJcbiAgICAgICAgICBuZ2JUb29sdGlwPVwiRGlzcGxheSBvcHRpb25zXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgIFtkaXNhYmxlVG9vbHRpcF09XCJvcHRpb25EZC5pc09wZW4oKVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiZGlzcGxheUJ5KCkgPT09ICdsaXN0JyA/IGZhTGlzdCA6IGZhVGFibGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51IGlkPVwiZGlzcGxheS1tZW51XCIgcm9sZT1cIm1lbnVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tY29udGVudFwiPlxuICAgICAgICAgICAgPGEgbmdiRHJvcGRvd25JdGVtIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJkaXNwbGF5QnkoKSA9PT0gJ2xpc3QnXCIgKGNsaWNrKT1cImRpc3BsYXlCeS5zZXQoJ2xpc3QnKVwiPlxuICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYUxpc3RcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBsLTJcIj5EaXNwbGF5IGJ5IFByaW9yaXR5PC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPGEgbmdiRHJvcGRvd25JdGVtIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJkaXNwbGF5QnkoKSA9PT0gJ3R5cGUnXCIgKGNsaWNrKT1cImRpc3BsYXlCeS5zZXQoJ3R5cGUnKVwiPlxuICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYVRhYmxlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbC0yXCI+RGlzcGxheSBieSBUeXBlPC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG5AaWYgKGRpc3BsYXlCeSgpID09PSAnbGlzdCcgJiYgbW9kZWxzKCkpIHtcbiAgPGRpdiBjbGFzcz1cInBsLTNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9kZWxMaXN0OyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbW9kZWxzKCkgfVwiIC8+XG4gIDwvZGl2PlxufVxuXG5AaWYgKGRpc3BsYXlCeSgpID09PSAndHlwZScgJiYgZ3JvdXBlZE1vZGVscygpKSB7XG4gIDxkaXYgY2xhc3M9XCJ0YWJzXCI+XG4gICAgPHVsPlxuICAgICAgQGZvciAoZ3JvdXAgb2YgZ3JvdXBlZE1vZGVscygpIHwga2V5dmFsdWU7IHRyYWNrIGdyb3VwLmtleSkge1xuICAgICAgICA8bGkgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZEdyb3VwZWRLZXkoKSA9PT0gZ3JvdXAua2V5XCI+XG4gICAgICAgICAgPGEgKGNsaWNrKT1cInNlbGVjdGVkR3JvdXBlZEtleS5zZXQoZ3JvdXAua2V5KVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbC0yXCI+e3sgZ3JvdXAua2V5IH19ICh7eyBncm91cC52YWx1ZS5sZW5ndGggfX0pPC9zcGFuPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9saT5cbiAgICAgIH1cbiAgICA8L3VsPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInBsLTNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9kZWxMaXN0OyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZ3JvdXBlZE1vZGVscygpW3NlbGVjdGVkR3JvdXBlZEtleSgpXSB9XCIgLz5cbiAgPC9kaXY+XG59XG5cbjxuZy10ZW1wbGF0ZSAjdGVybUxpbmsgbGV0LXZhbHVlPlxuICBAaWYgKHRlcm1zQnlJZCgpW3ZhbHVlXSkge1xuICAgIDxoZS1ub2RlLWxpbmsgW25vZGVdPVwidGVybXNCeUlkKClbdmFsdWVdXCIgW3Nob3dFeHRlcm5hbExpbmtdPVwidHJ1ZVwiPlxuICAgICAgPHNwYW4+e3sgdGVybXNCeUlkKClbdmFsdWVdLm5hbWUgfX08L3NwYW4+XG4gICAgPC9oZS1ub2RlLWxpbms+XG4gIH0gQGVsc2Uge1xuICAgIDxzcGFuPnt7IHZhbHVlIHwga2V5VG9MYWJlbCB9fTwvc3Bhbj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtb2RlbExpc3QgbGV0LWRhdGE+XG4gIEBmb3IgKHYgb2YgZGF0YTsgdHJhY2sgdikge1xuICAgIDxkaXY+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9kZWw7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB2IH1cIiAvPlxuICAgIDwvZGl2PlxuICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vZGVsIGxldC1kYXRhPlxuICBAaWYgKGlzQXJyYXkoZGF0YSkgJiYgZGF0YS5sZW5ndGgpIHtcbiAgICA8ZGl2IGNsYXNzPVwicGwtMyBtb2RlbC1wYXJhbGxlbFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1vZGVsTGlzdDsgY29udGV4dDogeyAkaW1wbGljaXQ6IGRhdGEgfVwiIC8+XG4gICAgPC9kaXY+XG4gICAgPGhyIC8+XG4gIH0gQGVsc2UgaWYgKCFpc0FycmF5KGRhdGEpKSB7XG4gICAgPGRpdiBjbGFzcz1cImNhcmQgbWItMiBtb2RlbC1zZXJpZSBpcy1zaXplLTZcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWNvbnRlbnQgcC0zXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaXMtY2FwaXRhbGl6ZWRcIj57eyBkYXRhLmtleSB8IGtleVRvTGFiZWwgfX08L3NwYW4+XG4gICAgICAgIDpcbiAgICAgICAgQGxldCBsaW5rID0gZmluZE1vZGVsTGluayhkYXRhKTtcbiAgICAgICAgQGlmIChsaW5rKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1vZGVsTGluazsgY29udGV4dDogeyBtb2RlbDogZGF0YS5tb2RlbCwgdmFsdWU6IGRhdGEudmFsdWUsIGxpbmsgfVwiIC8+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIEBsZXQgbW9kZWxMaW5rID0gZmluZE1vZGVsUGF0aExpbmsoZGF0YSk7XG4gICAgICAgICAgQGlmIChtb2RlbExpbmspIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2RlbFBhdGhMaW5rOyBjb250ZXh0OiB7IG1vZGVsOiBkYXRhLm1vZGVsLCB2YWx1ZTogZGF0YS52YWx1ZSwgbGluazogbW9kZWxMaW5rIH1cIiAvPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZWZhdWx0LXZhbHVlXCI+e3sgZGF0YS52YWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByLTFcIj5Nb2RlbDo8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHItMlwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZXJtTGluazsgY29udGV4dDogeyAkaW1wbGljaXQ6IGRhdGEubW9kZWwgfVwiIC8+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChzaG93QWR2YW5jZWQoKSkge1xuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICBAaWYgKGRhdGEucnVuU3RyYXRlZ3kpIHtcbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByLTFcIj5SdW4gc3RyYXRlZ3k6PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RyYXRlZ2llc0xpbms7IGNvbnRleHQ6IHsgc3RyYXRlZ3k6IGRhdGEucnVuU3RyYXRlZ3ksIHR5cGU6ICdydW4nIH1cIiAvPlxuICAgICAgICAgICAgICAgIEBpZiAoZGF0YS5ydW5BcmdzKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGwtMyBpcy1zaXplLTdcIj5cbiAgICAgICAgICAgICAgICAgICAgPHA+PGI+UnVuIGFyZ3VtZW50czo8L2I+PC9wPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RyYXRlZ2llc0FyZ3M7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBkYXRhLnJ1bkFyZ3MgfVwiIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChkYXRhLm1lcmdlU3RyYXRlZ3kpIHtcbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByLTFcIj5NZXJnZSBzdHJhdGVneTo8L3NwYW4+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdHJhdGVnaWVzTGluazsgY29udGV4dDogeyBzdHJhdGVneTogZGF0YS5tZXJnZVN0cmF0ZWd5LCB0eXBlOiAnbWVyZ2UnIH1cIiAvPlxuICAgICAgICAgICAgICAgIEBpZiAoZGF0YS5tZXJnZUFyZ3MpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbC0zIGlzLXNpemUtN1wiPlxuICAgICAgICAgICAgICAgICAgICA8cD48Yj5NZXJnZSBhcmd1bWVudHM6PC9iPjwvcD5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0cmF0ZWdpZXNBcmdzOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZGF0YS5tZXJnZUFyZ3MgfVwiIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtb2RlbExpbmtLZXkgbGV0LW1vZGVsPVwibW9kZWxcIiBsZXQtbGluaz1cImxpbmtcIj5cbiAgPGEgW2hyZWZdPVwibW9kZWxLZXlVcmwobGluaywgbW9kZWwpXCIgdGFyZ2V0PVwiX2JsYW5rXCI+e3sgbW9kZWxLZXlOYW1lKGxpbmsubW9kZWxLZXkpIH19PC9hPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtb2RlbExpbmsgbGV0LW1vZGVsPVwibW9kZWxcIiBsZXQtbGluaz1cImxpbmtcIiBsZXQtdmFsdWU9XCJ2YWx1ZVwiPlxuICBAaWYgKGxpbmsudGVybSkge1xuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZXJtTGluazsgY29udGV4dDogeyAkaW1wbGljaXQ6IGxpbmsudGVybSB9XCIgLz5cbiAgfVxuXG4gIEBpZiAoIWxpbmsudGVybSAmJiAhbGluaz8ubW9kZWxLZXkpIHtcbiAgICA8c3BhbiBjbGFzcz1cImRlZmF1bHQtdmFsdWVcIj57eyB2YWx1ZSB9fTwvc3Bhbj5cbiAgfVxuXG4gIEBpZiAoIWxpbmsudGVybSAmJiBsaW5rPy5tb2RlbEtleSkge1xuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2RlbExpbmtLZXk7IGNvbnRleHQ6IHsgbGluaywgbW9kZWwgfVwiIC8+XG4gIH1cblxuICA8cCBjbGFzcz1cIm1vZGVsLWxpbmtcIj5cbiAgICA8c3BhbiBjbGFzcz1cInByLTFcIj5Nb2RlbDo8L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJwci0yXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVybUxpbms7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBtb2RlbCB9XCIgLz5cbiAgICA8L3NwYW4+XG5cbiAgICA8YSBjbGFzcz1cImlzLXNpemUtN1wiIFtocmVmXT1cImxpbmsuZG9jUGF0aFwiIHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJwci0xXCI+KFZpZXcgRG9jcyk8L3NwYW4+XG4gICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYUV4dGVybmFsTGlua0FsdFwiIC8+XG4gICAgPC9hPlxuICA8L3A+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vZGVsUGF0aExpbmsgbGV0LW1vZGVsPVwibW9kZWxcIiBsZXQtbGluaz1cImxpbmtcIiBsZXQtdmFsdWU9XCJ2YWx1ZVwiPlxuICBAaWYgKCFsaW5rPy5tb2RlbEtleSkge1xuICAgIDxzcGFuIGNsYXNzPVwiZGVmYXVsdC12YWx1ZVwiPnt7IHZhbHVlIH19PC9zcGFuPlxuICB9XG5cbiAgQGlmIChsaW5rPy5tb2RlbEtleSkge1xuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2RlbExpbmtLZXk7IGNvbnRleHQ6IHsgbGluaywgbW9kZWwgfVwiIC8+XG4gIH1cblxuICA8cCBjbGFzcz1cIm1vZGVsLXBhdGgtbGlua1wiPlxuICAgIDxzcGFuIGNsYXNzPVwicHItMVwiPk1vZGVsOjwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cInByLTJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZXJtTGluazsgY29udGV4dDogeyAkaW1wbGljaXQ6IG1vZGVsIH1cIiAvPlxuICAgIDwvc3Bhbj5cblxuICAgIDxhIGNsYXNzPVwiaXMtc2l6ZS03XCIgW2hyZWZdPVwibGluay5kb2NQYXRoXCIgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInByLTFcIj4oVmlldyBEb2NzKTwvc3Bhbj5cbiAgICAgIDxmYS1pY29uIFtpY29uXT1cImZhRXh0ZXJuYWxMaW5rQWx0XCIgLz5cbiAgICA8L2E+XG4gIDwvcD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc3RyYXRlZ2llc0xpbmsgbGV0LXN0cmF0ZWd5PVwic3RyYXRlZ3lcIiBsZXQtdHlwZT1cInR5cGVcIj5cbiAgPHNwYW4gY2xhc3M9XCJwci0yIGlzLWlubGluZS1ibG9ja1wiPlxuICAgIDxjb2RlPnt7IHN0cmF0ZWd5IH19PC9jb2RlPlxuICA8L3NwYW4+XG5cbiAgPGFcbiAgICBjbGFzcz1cImlzLXNpemUtN1wiXG4gICAgW2hyZWZdPVwic3RyYXRlZ2llc0RvY3MgKyAnLycgKyB0eXBlICsgJy8nICsgKHR5cGUgPT09ICdtZXJnZScgPyAnbWVyZ2VfJyA6ICcnKSArIHN0cmF0ZWd5ICsgJy5tZCdcIlxuICAgIHRhcmdldD1cIl9ibGFua1wiPlxuICAgIDxzcGFuIGNsYXNzPVwicHItMVwiPihWaWV3IERvY3MpPC9zcGFuPlxuICAgIDxmYS1pY29uIFtpY29uXT1cImZhRXh0ZXJuYWxMaW5rQWx0XCIgLz5cbiAgPC9hPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzdHJhdGVnaWVzQXJncyBsZXQtYXJncz5cbiAgPGRpdiBjbGFzcz1cInBsLTJcIj5cbiAgICBAZm9yIChhcmcgb2YgYXJncyB8IGtleXZhbHVlOyB0cmFjayBhcmcpIHtcbiAgICAgIDxwPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImhhcy10ZXh0LXVuZGVybGluZVwiPnt7IGFyZy5rZXkgfX08L3NwYW4+XG4gICAgICAgIDpcbiAgICAgICAgPGNvZGU+e3sgYXJnLnZhbHVlIHwganNvbiB9fTwvY29kZT5cbiAgICAgIDwvcD5cbiAgICB9XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLW9yY2hlc3RyYXRvci1lZGl0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbmdpbmUvZW5naW5lLW9yY2hlc3RyYXRvci1lZGl0L2VuZ2luZS1vcmNoZXN0cmF0b3ItZWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvZW5naW5lL2VuZ2luZS1vcmNoZXN0cmF0b3ItZWRpdC9lbmdpbmUtb3JjaGVzdHJhdG9yLWVkaXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFlLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RSxPQUFPLEVBQThELFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkcsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVGLE9BQU8sRUFBa0IsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25GLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7QUFJN0UsTUFBTSxNQUFNLEdBQUcsR0FBRyxPQUFPLElBQUksVUFBVSxDQUFDLFlBQVksV0FBVyxTQUFTLEVBQUUsRUFBRSxDQUFDO0FBQzdFLE1BQU0sY0FBYyxHQUFHLEdBQUcsTUFBTSw2Q0FBNkMsQ0FBQztBQUM5RSxNQUFNLGNBQWMsR0FBRyxHQUFHLE1BQU0sdUNBQXVDLENBQUM7QUFFeEUsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUUvQyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFFN0UsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUNyQztJQUNFLGNBQWMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQzlCLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1QyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQyxzQkFBc0IsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztDQUNqRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUVsQixNQUFNLFdBQVcsR0FBRyxDQUFDLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQTRCLEVBQUUsRUFBRSxDQUMxRixDQUFDLDJCQUEyQixFQUFFLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztJQUN6RSxDQUFDLGFBQWEsS0FBSyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUU3RCxNQUFNLGNBQWMsR0FBRyxDQUFDLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQTRCLEVBQUUsRUFBRSxDQUM3RixDQUFDLDJCQUEyQixFQUFFLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztJQUN6RSxhQUFhLEtBQUssTUFBTTtJQUN4QixTQUFTLEVBQUUsZ0JBQWdCLENBQUM7QUFFOUIsTUFBTSxlQUFlLEdBQUcsQ0FBQyxPQUFnQixFQUFFLGFBQXNCLEVBQUUsRUFBRSxDQUNuRSxPQUFPO0tBQ0osR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDekYsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUVuRixNQUFNLFVBQVUsR0FDZCxDQUFDLElBQVksRUFBRSxFQUFFLENBQ2pCLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBNEIsRUFBRSxFQUFFLENBQ2xELENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRWhHLE1BQU0sWUFBWSxHQUFHLENBQUMsT0FBZ0IsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FDbkQsT0FBTztLQUNKLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUN2RixNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBRS9FLE1BQU0sWUFBWSxHQUFHLENBQUMsUUFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUV4RyxNQUFNLFlBQVksR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRSxDQUN4QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUN2QixNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDdEMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQ3pCLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUN4QyxNQUFNLENBQ0osQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDYixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDL0IsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLEVBQ0QsRUFBbUQsQ0FDcEQsQ0FDRixDQUFDO0FBRUosTUFBTSxXQUFXLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBa0IsRUFBRSxLQUFhLEVBQUUsRUFBRTtJQUNsRSxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN6RCxNQUFNLEdBQUcsR0FBRyxDQUFDLGFBQWEsRUFBRSxFQUFFLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEYsT0FBTyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDbkUsQ0FBQyxDQUFDO0FBcUJGLE1BQU0sT0FBTywrQkFBK0I7SUFxRTFDO1FBcEVpQixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUV0QyxzQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUN0QyxZQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ2xCLFVBQUssR0FBRyxLQUFLLENBQUM7UUFDZCxXQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ2hCLFlBQU8sR0FBRyxPQUFPLENBQUM7UUFFbEIsV0FBTSxHQUFHLEtBQUssRUFBdUIsQ0FBQztRQUN0QyxhQUFRLEdBQUcsS0FBSyxFQUFlLENBQUM7UUFFbEMsY0FBUyxHQUFHLFFBQVEsQ0FDbkMsYUFBYSxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzFFLHdCQUF3QixFQUFFLEVBQzFCLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUNyRSxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFDM0IsU0FBUyxDQUFDLEVBQWEsQ0FBQyxDQUN6QixDQUNGLENBQUM7UUFDZSxZQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUN2QyxNQUFNLENBQ0osSUFBSSxDQUFDLFNBQVMsRUFBRTthQUNiLElBQUksRUFBRTthQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDNUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUNuQixDQUNGLENBQUM7UUFDZSxVQUFLLEdBQUcsUUFBUSxDQUMvQixZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDN0IsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQ2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQTZCO1lBQ3JELE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztZQUN6QyxLQUFLLEVBQUUsR0FBRyxDQUFDLE1BQU07WUFDakIsS0FBSyxFQUFFO2dCQUNMLElBQUksRUFBRTtvQkFDSixJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNoQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7b0JBQ3hCLG9CQUFvQixFQUFFLENBQUM7aUJBQ3hCO2FBQ0Y7U0FDRixDQUFDLENBQ0gsRUFDRCxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FDOUIsQ0FDRixDQUFDO1FBQ2lCLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQzNDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBbUMsQ0FBQyxDQUN0RyxDQUFDO1FBRWlCLGNBQVMsR0FBRyxDQUFDLE9BQU8sRUFBRSxzQkFBc0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV4RCxpQkFBWSxHQUFHLFlBQVksQ0FBQztRQUM1QixnQkFBVyxHQUFHLFdBQVcsQ0FBQztRQUMxQixZQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN4QixtQkFBYyxHQUFHLGNBQWMsQ0FBQztRQUNoQyxtQkFBYyxHQUFHLGNBQWMsQ0FBQztRQUVoQyxXQUFNLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BCLGtCQUFhLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLGlCQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLGNBQVMsR0FBRyxNQUFNLENBQWtCLE1BQU0sQ0FBQyxDQUFDO1FBRTVDLFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQ3hDLFlBQVksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUNyRixDQUFDO1FBQ2lCLGtCQUFhLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakYsdUJBQWtCLEdBQUcsTUFBTSxDQUFTLFNBQVMsQ0FBQyxDQUFDO1FBR2hFLE1BQU0sQ0FDSixHQUFHLEVBQUU7WUFDSCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLENBQUM7UUFDSCxDQUFDLEVBQ0QsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFUyxhQUFhLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUE0QjtRQUNoRSxPQUFPLGlCQUFpQixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFUyxpQkFBaUIsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQTRCO1FBQ3BFLE9BQU8saUJBQWlCLENBQUM7WUFDdkIsSUFBSSxFQUFFLEdBQUcsWUFBWSxFQUFFLHdCQUF3QixLQUFLLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsS0FBSztTQUM3RixDQUFDLENBQUM7SUFDTCxDQUFDOytHQXpGVSwrQkFBK0I7bUdBQS9CLCtCQUErQiwrVkM1RzVDLHU3VUFzU0EsK0tEdE1JLFlBQVksNENBQ1osUUFBUSw2Q0FFUixVQUFVLDBUQUNWLGlCQUFpQix1aEJBQ2pCLGVBQWUsMk1BQ2YsV0FBVyxneUJBQ1gsZ0JBQWdCLG9KQUNoQixpQkFBaUIsdUdBQ2pCLGNBQWM7OzRGQUdMLCtCQUErQjtrQkFuQjNDLFNBQVM7K0JBQ0UsNkJBQTZCLGNBRzNCLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDUCxZQUFZO3dCQUNaLFFBQVE7d0JBQ1IscUJBQXFCO3dCQUNyQixVQUFVO3dCQUNWLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixXQUFXO3dCQUNYLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQixjQUFjO3FCQUNmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0LCBKc29uUGlwZSwgS2V5VmFsdWVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IElUZXJtSlNPTkxELCBOb2RlVHlwZSwgU2NoZW1hVHlwZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IGFsbG93ZWRUeXBlLCBJT3JjaGVzdHJhdG9yQ29uZmlnLCBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcsIGxvYWRDb25maWcgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2VuZ2luZS1tb2RlbHMnO1xuaW1wb3J0IHsga2V5VG9MYWJlbCwgdW5pcXVlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5pbXBvcnQgeyBGYUljb25Db21wb25lbnQgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBOZ2JEcm9wZG93bk1vZHVsZSwgTmdiVG9vbHRpcCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IGZhQ29nLCBmYUV4dGVybmFsTGlua0FsdCwgZmFMaXN0LCBmYVRhYmxlLCBmYVRpbWVzIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgZ3JvdXBCeSwgbWFwLCBtZXJnZU1hcCwgcmVkdWNlLCBzdGFydFdpdGgsIHRvQXJyYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IElNb2RlbEV4dGVuZGVkLCBlbmdpbmVHaXRVcmwsIGZpbmRNYXRjaGluZ01vZGVsIH0gZnJvbSAnLi4vZW5naW5lLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSwgc2NoZW1hQmFzZVVybCwgZ2l0QnJhbmNoLCBnaXRIb21lIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWxzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkRGVlcCB9IGZyb20gJy4uLy4uL2NvbW1vbi9yeGpzLXV0aWxzJztcbmltcG9ydCB7IHBsdXJhbGl6ZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9wbHVyYWxpemUnO1xuaW1wb3J0IHsgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vY29tbW9uL2NsaWNrLW91dHNpZGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IEtleVRvTGFiZWxQaXBlIH0gZnJvbSAnLi4vLi4vY29tbW9uL2tleS10by1sYWJlbC5waXBlJztcbmltcG9ydCB7IEhlU2VhcmNoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlYXJjaC9zZWFyY2guc2VydmljZSc7XG5pbXBvcnQgeyBtYXRjaElkLCBtYXRjaFR5cGUgfSBmcm9tICcuLi8uLi9zZWFyY2gvc2VhcmNoLm1vZGVsJztcbmltcG9ydCB7IE5vZGVMaW5rQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbm9kZS9ub2RlLWxpbmsvbm9kZS1saW5rLmNvbXBvbmVudCc7XG5cbnR5cGUgY29uZmlncyA9IChJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcgfCBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWdbXSlbXTtcblxuY29uc3QgZ2l0VXJsID0gYCR7Z2l0SG9tZX0vJHtSZXBvc2l0b3J5Lm9yY2hlc3RyYXRvcn0vLS9ibG9iLyR7Z2l0QnJhbmNoKCl9YDtcbmNvbnN0IGdlbmVyYWxEb2NzVXJsID0gYCR7Z2l0VXJsfS9oZXN0aWFfZWFydGgvb3JjaGVzdHJhdG9yL2NvbmZpZy9SRUFETUUubWRgO1xuY29uc3Qgc3RyYXRlZ2llc0RvY3MgPSBgJHtnaXRVcmx9L2hlc3RpYV9lYXJ0aC9vcmNoZXN0cmF0b3Ivc3RyYXRlZ2llc2A7XG5cbmNvbnN0IHNjaGVtYVR5cGVLZXlzID0gT2JqZWN0LmtleXMoU2NoZW1hVHlwZSk7XG5cbmNvbnN0IHRvU2NoZW1hVHlwZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiBrZXlUb0xhYmVsKHZhbHVlKS5yZXBsYWNlKC9cXHMvZywgJycpO1xuXG5jb25zdCBpc1NjaGVtYVR5cGUgPSAodmFsdWU6IHN0cmluZykgPT5cbiAgW1xuICAgIHNjaGVtYVR5cGVLZXlzLmluY2x1ZGVzKHZhbHVlKSxcbiAgICBzY2hlbWFUeXBlS2V5cy5pbmNsdWRlcyhwbHVyYWxpemUodmFsdWUsIDEpKSxcbiAgICBzY2hlbWFUeXBlS2V5cy5pbmNsdWRlcyhwbHVyYWxpemUodG9TY2hlbWFUeXBlKHZhbHVlKSwgMSkpLFxuICAgIFsnZW1pc3Npb25zUmVzb3VyY2VVc2UnLCAnaW1wYWN0cycsICdlbmRwb2ludHMnXS5pbmNsdWRlcyh2YWx1ZSlcbiAgXS5zb21lKEJvb2xlYW4pO1xuXG5jb25zdCBpc0dhcEZpbGxlZCA9ICh7IHJ1blN0cmF0ZWd5LCBtZXJnZVN0cmF0ZWd5LCBtZXJnZUFyZ3MgfTogSU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnKSA9PlxuICBbJ2FkZF9ibGFua19ub2RlX2lmX21pc3NpbmcnLCAnYWRkX2tleV9pZl9taXNzaW5nJ10uaW5jbHVkZXMocnVuU3RyYXRlZ3kpICYmXG4gIChtZXJnZVN0cmF0ZWd5ICE9PSAnbGlzdCcgfHwgIW1lcmdlQXJncz8ucmVwbGFjZVRocmVzaG9sZCk7XG5cbmNvbnN0IGlzUmVjYWxjdWxhdGVkID0gKHsgcnVuU3RyYXRlZ3ksIG1lcmdlU3RyYXRlZ3ksIG1lcmdlQXJncyB9OiBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcpID0+XG4gIFsnYWRkX2JsYW5rX25vZGVfaWZfbWlzc2luZycsICdhZGRfa2V5X2lmX21pc3NpbmcnXS5pbmNsdWRlcyhydW5TdHJhdGVneSkgJiZcbiAgbWVyZ2VTdHJhdGVneSA9PT0gJ2xpc3QnICYmXG4gIG1lcmdlQXJncz8ucmVwbGFjZVRocmVzaG9sZDtcblxuY29uc3QgZmlsdGVyR2FwRmlsbGVkID0gKGNvbmZpZ3M6IGNvbmZpZ3MsIG9ubHlHYXBGaWxsZWQ6IGJvb2xlYW4pID0+XG4gIGNvbmZpZ3NcbiAgICAubWFwKG1vZGVsID0+IChBcnJheS5pc0FycmF5KG1vZGVsKSAmJiBvbmx5R2FwRmlsbGVkID8gbW9kZWwuZmlsdGVyKGlzR2FwRmlsbGVkKSA6IG1vZGVsKSlcbiAgICAuZmlsdGVyKG1vZGVsID0+ICFvbmx5R2FwRmlsbGVkIHx8IEFycmF5LmlzQXJyYXkobW9kZWwpIHx8IGlzR2FwRmlsbGVkKG1vZGVsKSk7XG5cbmNvbnN0IG1vZGVsTWF0Y2ggPVxuICAodGVybTogc3RyaW5nKSA9PlxuICAoeyBrZXksIG1vZGVsLCB2YWx1ZSB9OiBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcpID0+XG4gICAgW2tleSwgbW9kZWwsIHZhbHVlXS5maWx0ZXIoQm9vbGVhbikuc29tZSh2ID0+IHYudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtLnRvTG93ZXJDYXNlKCkpKTtcblxuY29uc3QgZmlsdGVyTW9kZWxzID0gKGNvbmZpZ3M6IGNvbmZpZ3MsIHRlcm0gPSAnJykgPT5cbiAgY29uZmlnc1xuICAgIC5tYXAobW9kZWwgPT4gKEFycmF5LmlzQXJyYXkobW9kZWwpICYmICEhdGVybSA/IG1vZGVsLmZpbHRlcihtb2RlbE1hdGNoKHRlcm0pKSA6IG1vZGVsKSlcbiAgICAuZmlsdGVyKG1vZGVsID0+ICF0ZXJtIHx8IEFycmF5LmlzQXJyYXkobW9kZWwpIHx8IG1vZGVsTWF0Y2godGVybSkobW9kZWwpKTtcblxuY29uc3QgbW9kZWxLZXlOYW1lID0gKG1vZGVsS2V5OiBzdHJpbmcpID0+IChtb2RlbEtleS5pbmNsdWRlcygnLicpID8gbW9kZWxLZXkuc3BsaXQoJy4nKVsxXSA6IG1vZGVsS2V5KTtcblxuY29uc3QgZ3JvdXBDb25maWckID0gKGNvbmZpZ3M6IGNvbmZpZ3MpID0+XG4gIGZyb20oY29uZmlncy5mbGF0KCkpLnBpcGUoXG4gICAgZmlsdGVyKCh7IGtleSB9KSA9PiBpc1NjaGVtYVR5cGUoa2V5KSksXG4gICAgZ3JvdXBCeSgoeyBrZXkgfSkgPT4ga2V5KSxcbiAgICBtZXJnZU1hcChncm91cCA9PiBncm91cC5waXBlKHRvQXJyYXkoKSkpLFxuICAgIHJlZHVjZShcbiAgICAgIChwcmV2LCBjdXJyKSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IGN1cnJbMF0ua2V5O1xuICAgICAgICBwcmV2W3RvU2NoZW1hVHlwZShrZXkpXSA9IGN1cnI7XG4gICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgfSxcbiAgICAgIHt9IGFzIHsgW2tleTogc3RyaW5nXTogSU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnW10gfVxuICAgIClcbiAgKTtcblxuY29uc3QgbW9kZWxLZXlVcmwgPSAoeyBtb2RlbEtleSB9OiBJTW9kZWxFeHRlbmRlZCwgbW9kZWw6IHN0cmluZykgPT4ge1xuICBjb25zdCBwYXJ0cyA9IG1vZGVsS2V5LnNwbGl0KCcuJyk7XG4gIGNvbnN0IHNjaGVtYVR5cGUgPSBwYXJ0cy5sZW5ndGggPT09IDIgPyBwYXJ0c1swXSA6IG1vZGVsO1xuICBjb25zdCB1cmwgPSBbc2NoZW1hQmFzZVVybCgpLCB0b1NjaGVtYVR5cGUoc2NoZW1hVHlwZSldLmZpbHRlcihCb29sZWFuKS5qb2luKCcvJyk7XG4gIHJldHVybiBpc1NjaGVtYVR5cGUoc2NoZW1hVHlwZSkgPyBgJHt1cmx9IyR7cGFydHMucG9wKCl9YCA6IG51bGw7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1lbmdpbmUtb3JjaGVzdHJhdG9yLWVkaXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZW5naW5lLW9yY2hlc3RyYXRvci1lZGl0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZW5naW5lLW9yY2hlc3RyYXRvci1lZGl0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgS2V5VmFsdWVQaXBlLFxuICAgIEpzb25QaXBlLFxuICAgIENsaWNrT3V0c2lkZURpcmVjdGl2ZSxcbiAgICBOZ2JUb29sdGlwLFxuICAgIE5nYkRyb3Bkb3duTW9kdWxlLFxuICAgIEZhSWNvbkNvbXBvbmVudCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIE5vZGVMaW5rQ29tcG9uZW50LFxuICAgIEtleVRvTGFiZWxQaXBlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRW5naW5lT3JjaGVzdHJhdG9yRWRpdENvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VhcmNoU2VydmljZSA9IGluamVjdChIZVNlYXJjaFNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBmYUV4dGVybmFsTGlua0FsdCA9IGZhRXh0ZXJuYWxMaW5rQWx0O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFUaW1lcyA9IGZhVGltZXM7XG4gIHByb3RlY3RlZCByZWFkb25seSBmYUNvZyA9IGZhQ29nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFMaXN0ID0gZmFMaXN0O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFUYWJsZSA9IGZhVGFibGU7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbmZpZyA9IGlucHV0PElPcmNoZXN0cmF0b3JDb25maWc+KCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBub2RlVHlwZSA9IGlucHV0PGFsbG93ZWRUeXBlPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYWxsTW9kZWxzID0gdG9TaWduYWwoXG4gICAgY29tYmluZUxhdGVzdChbdG9PYnNlcnZhYmxlKHRoaXMuY29uZmlnKSwgdG9PYnNlcnZhYmxlKHRoaXMubm9kZVR5cGUpXSkucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkRGVlcCgpLFxuICAgICAgbWFwKChbY29uZmlnLCBub2RlVHlwZV0pID0+IChjb25maWcgPyBjb25maWcgOiBsb2FkQ29uZmlnKG5vZGVUeXBlKSkpLFxuICAgICAgbWFwKCh7IG1vZGVscyB9KSA9PiBtb2RlbHMpLFxuICAgICAgc3RhcnRXaXRoKFtdIGFzIGNvbmZpZ3MpXG4gICAgKVxuICApO1xuICBwcml2YXRlIHJlYWRvbmx5IHRlcm1JZHMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHVuaXF1ZShcbiAgICAgIHRoaXMuYWxsTW9kZWxzKClcbiAgICAgICAgLmZsYXQoKVxuICAgICAgICAuZmxhdE1hcChtb2RlbCA9PiBbbW9kZWwubW9kZWwsIG1vZGVsLnZhbHVlXSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgIClcbiAgKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0ZXJtcyA9IHRvU2lnbmFsKFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLnRlcm1JZHMpLnBpcGUoXG4gICAgICBtZXJnZU1hcChpZHMgPT5cbiAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaCQ8SVRlcm1KU09OTEQsIE5vZGVUeXBlLlRlcm0+KHtcbiAgICAgICAgICBmaWVsZHM6IFsnQHR5cGUnLCAnQGlkJywgJ25hbWUnLCAndW5pdHMnXSxcbiAgICAgICAgICBsaW1pdDogaWRzLmxlbmd0aCxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgYm9vbDoge1xuICAgICAgICAgICAgICBtdXN0OiBbbWF0Y2hUeXBlKE5vZGVUeXBlLlRlcm0pXSxcbiAgICAgICAgICAgICAgc2hvdWxkOiBpZHMubWFwKG1hdGNoSWQpLFxuICAgICAgICAgICAgICBtaW5pbXVtX3Nob3VsZF9tYXRjaDogMVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgICBtYXAoKHsgcmVzdWx0cyB9KSA9PiByZXN1bHRzKVxuICAgIClcbiAgKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRlcm1zQnlJZCA9IGNvbXB1dGVkKCgpID0+XG4gICAgKHRoaXMudGVybXMoKSA/PyBbXSkucmVkdWNlKChwLCBjKSA9PiAoeyAuLi5wLCBbY1snQGlkJ11dOiBjIH0pLCB7fSBhcyB7IFtpZDogc3RyaW5nXTogSVRlcm1KU09OTEQgfSlcbiAgKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29uZmlnVXJsID0gW2dpdEhvbWUsICdoZXN0aWEtZW5naW5lLWNvbmZpZyddLmpvaW4oJy8nKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbW9kZWxLZXlOYW1lID0gbW9kZWxLZXlOYW1lO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbW9kZWxLZXlVcmwgPSBtb2RlbEtleVVybDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ2VuZXJhbERvY3NVcmwgPSBnZW5lcmFsRG9jc1VybDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0cmF0ZWdpZXNEb2NzID0gc3RyYXRlZ2llc0RvY3M7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlYXJjaCA9IHNpZ25hbCgnJyk7XG4gIHByb3RlY3RlZCByZWFkb25seSBvbmx5R2FwRmlsbGVkID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNob3dBZHZhbmNlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBkaXNwbGF5QnkgPSBzaWduYWw8J2xpc3QnIHwgJ3R5cGUnPignbGlzdCcpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBtb2RlbHMgPSBjb21wdXRlZCgoKSA9PlxuICAgIGZpbHRlck1vZGVscyhmaWx0ZXJHYXBGaWxsZWQodGhpcy5hbGxNb2RlbHMoKSwgdGhpcy5vbmx5R2FwRmlsbGVkKCkpLCB0aGlzLnNlYXJjaCgpKVxuICApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ3JvdXBlZE1vZGVscyA9IHRvU2lnbmFsKHRvT2JzZXJ2YWJsZSh0aGlzLm1vZGVscykucGlwZShtZXJnZU1hcChncm91cENvbmZpZyQpKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzZWxlY3RlZEdyb3VwZWRLZXkgPSBzaWduYWw8c3RyaW5nPih1bmRlZmluZWQpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gT2JqZWN0LmtleXModGhpcy5ncm91cGVkTW9kZWxzKCkpPy5bMF07XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZEdyb3VwZWRLZXkoKSAmJiBrZXkpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkR3JvdXBlZEtleS5zZXQoa2V5KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZmluZE1vZGVsTGluayh7IG1vZGVsLCB2YWx1ZSB9OiBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcpIHtcbiAgICByZXR1cm4gZmluZE1hdGNoaW5nTW9kZWwoeyBtb2RlbCwgdGVybTogdmFsdWUgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZmluZE1vZGVsUGF0aExpbmsoeyBtb2RlbCwgdmFsdWUgfTogSU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnKSB7XG4gICAgcmV0dXJuIGZpbmRNYXRjaGluZ01vZGVsKHtcbiAgICAgIHBhdGg6IGAke2VuZ2luZUdpdFVybCgpfS9oZXN0aWFfZWFydGgvbW9kZWxzLyR7bW9kZWx9LyR7KHZhbHVlIHx8ICcnKS5yZXBsYWNlKCcuJywgJy8nKX0ucHlgXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxwPlxuICA8aT5cbiAgICBUaGUgY29uZmlndXJhdGlvbiBiZWxvdyBpcyBhIHByZXZpZXcgb2YgdGhlXG4gICAgPGEgW2hyZWZdPVwiY29uZmlnVXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCI+SlNPTiBjb25maWd1cmF0aW9uIGZpbGU8L2E+XG4gICAgdXNlZCBmb3IgdGhlIG9yY2hlc3RyYXRpb24gb2YgdGhlIEhFU1RJQSdzIGNhbGN1bGF0aW9ucy5cbiAgPC9pPlxuPC9wPlxuPHA+XG4gIDxpPk5vdGU6IG5vdCBhbGwgbW9kZWxzIG1pZ2h0IGJlIHJlcHJlc2VudGVkIGFjY3VyYXRlbHkuPC9pPlxuPC9wPlxuXG48ZGl2IGNsYXNzPVwiaXMtc2l6ZS03IGlzLWl0YWxpY1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1ucyBpcy1tb2JpbGUgaXMtbXVsdGlsaW5lIGlzLXZjZW50ZXJlZCBpcy12YXJpYWJsZSBpcy0xIG15LTBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicGwtMyBtb2RlbC1wYXJhbGxlbCBteS0zXCI+XG4gICAgICAgIDxzcGFuPk1vZGVscyBydW5uaW5nIGluIHBhcmFsbGVsPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLW5hcnJvd1wiPlxuICAgICAgPGRpdiBuZ2JEcm9wZG93biAjb3B0aW9uRGQ9XCJuZ2JEcm9wZG93blwiIGNvbnRhaW5lcj1cImJvZHlcIiBwbGFjZW1lbnQ9XCJib3R0b20tZW5kXCIgYXV0b0Nsb3NlPVwib3V0c2lkZVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgbmdiRHJvcGRvd25Ub2dnbGVcbiAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1naG9zdFwiXG4gICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJvcHRpb24tbWVudVwiXG4gICAgICAgICAgbmdiVG9vbHRpcD1cIk9wdGlvbnNcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgW2Rpc2FibGVUb29sdGlwXT1cIm9wdGlvbkRkLmlzT3BlbigpXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYUNvZ1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnUgaWQ9XCJvcHRpb24tbWVudVwiIHJvbGU9XCJtZW51XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWNvbnRlbnQgfCBpcy1kcm9wZG93bi1maWx0ZXJzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24taXRlbVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZCBoYXMtaWNvbnMtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQgc2VhcmNoLWlucHV0IGlzLXNlY29uZGFyeSBpcy1zbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cImNvbGxlY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkZpbHRlciBieSBrZXksIG5hbWUgb3IgbW9kZWxcIlxuICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwic2VhcmNoLnNldCgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIC8+XG4gICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImljb24gaXMtc21hbGwgaXMtcmlnaHRcIiAoY2xpY2spPVwic2VhcmNoLnNldCgnJylcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiZmFUaW1lc1wiIC8+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBpcy1yZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3dpdGNoIGlzLXNtYWxsIGlzLXJvdW5kZWQgaXMtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInNob3dBZHZhbmNlZCgpXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwic2hvd0FkdmFuY2VkXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2hvd0FkdmFuY2VkLnNldCgkZXZlbnQudGFyZ2V0LmNoZWNrZWQpXCIgLz5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJpcy1zaXplLTdcIiBmb3I9XCJzaG93QWR2YW5jZWRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlNob3cgYWR2YW5jZWQgZGF0YTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaXMtcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInN3aXRjaCBpcy1zbWFsbCBpcy1yb3VuZGVkIGlzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvbmx5R2FwRmlsbGVkKClcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJvbmx5R2FwRmlsbGVkXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25seUdhcEZpbGxlZC5zZXQoJGV2ZW50LnRhcmdldC5jaGVja2VkKVwiIC8+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaXMtc2l6ZS03XCIgZm9yPVwib25seUdhcEZpbGxlZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+U2hvdyBvbmx5IGdhcC1maWxsZWQgZGF0YTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtbmFycm93XCI+XG4gICAgICA8ZGl2IG5nYkRyb3Bkb3duICNvcHRpb25EZD1cIm5nYkRyb3Bkb3duXCIgY29udGFpbmVyPVwiYm9keVwiIHBsYWNlbWVudD1cImJvdHRvbS1lbmRcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIG5nYkRyb3Bkb3duVG9nZ2xlXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtZ2hvc3RcIlxuICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwiZGlzcGxheS1tZW51XCJcbiAgICAgICAgICBuZ2JUb29sdGlwPVwiRGlzcGxheSBvcHRpb25zXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgIFtkaXNhYmxlVG9vbHRpcF09XCJvcHRpb25EZC5pc09wZW4oKVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiZGlzcGxheUJ5KCkgPT09ICdsaXN0JyA/IGZhTGlzdCA6IGZhVGFibGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51IGlkPVwiZGlzcGxheS1tZW51XCIgcm9sZT1cIm1lbnVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tY29udGVudFwiPlxuICAgICAgICAgICAgPGEgbmdiRHJvcGRvd25JdGVtIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJkaXNwbGF5QnkoKSA9PT0gJ2xpc3QnXCIgKGNsaWNrKT1cImRpc3BsYXlCeS5zZXQoJ2xpc3QnKVwiPlxuICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYUxpc3RcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBsLTJcIj5EaXNwbGF5IGJ5IFByaW9yaXR5PC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPGEgbmdiRHJvcGRvd25JdGVtIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJkaXNwbGF5QnkoKSA9PT0gJ3R5cGUnXCIgKGNsaWNrKT1cImRpc3BsYXlCeS5zZXQoJ3R5cGUnKVwiPlxuICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYVRhYmxlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbC0yXCI+RGlzcGxheSBieSBUeXBlPC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG5AaWYgKGRpc3BsYXlCeSgpID09PSAnbGlzdCcgJiYgbW9kZWxzKCkpIHtcbiAgPGRpdiBjbGFzcz1cInBsLTNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9kZWxMaXN0OyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbW9kZWxzKCkgfVwiIC8+XG4gIDwvZGl2PlxufVxuXG5AaWYgKGRpc3BsYXlCeSgpID09PSAndHlwZScgJiYgZ3JvdXBlZE1vZGVscygpKSB7XG4gIDxkaXYgY2xhc3M9XCJ0YWJzXCI+XG4gICAgPHVsPlxuICAgICAgQGZvciAoZ3JvdXAgb2YgZ3JvdXBlZE1vZGVscygpIHwga2V5dmFsdWU7IHRyYWNrIGdyb3VwLmtleSkge1xuICAgICAgICA8bGkgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZEdyb3VwZWRLZXkoKSA9PT0gZ3JvdXAua2V5XCI+XG4gICAgICAgICAgPGEgKGNsaWNrKT1cInNlbGVjdGVkR3JvdXBlZEtleS5zZXQoZ3JvdXAua2V5KVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbC0yXCI+e3sgZ3JvdXAua2V5IH19ICh7eyBncm91cC52YWx1ZS5sZW5ndGggfX0pPC9zcGFuPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9saT5cbiAgICAgIH1cbiAgICA8L3VsPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInBsLTNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9kZWxMaXN0OyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZ3JvdXBlZE1vZGVscygpW3NlbGVjdGVkR3JvdXBlZEtleSgpXSB9XCIgLz5cbiAgPC9kaXY+XG59XG5cbjxuZy10ZW1wbGF0ZSAjdGVybUxpbmsgbGV0LXZhbHVlPlxuICBAaWYgKHRlcm1zQnlJZCgpW3ZhbHVlXSkge1xuICAgIDxoZS1ub2RlLWxpbmsgW25vZGVdPVwidGVybXNCeUlkKClbdmFsdWVdXCIgW3Nob3dFeHRlcm5hbExpbmtdPVwidHJ1ZVwiPlxuICAgICAgPHNwYW4+e3sgdGVybXNCeUlkKClbdmFsdWVdLm5hbWUgfX08L3NwYW4+XG4gICAgPC9oZS1ub2RlLWxpbms+XG4gIH0gQGVsc2Uge1xuICAgIDxzcGFuPnt7IHZhbHVlIHwga2V5VG9MYWJlbCB9fTwvc3Bhbj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtb2RlbExpc3QgbGV0LWRhdGE+XG4gIEBmb3IgKHYgb2YgZGF0YTsgdHJhY2sgdikge1xuICAgIDxkaXY+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9kZWw7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB2IH1cIiAvPlxuICAgIDwvZGl2PlxuICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vZGVsIGxldC1kYXRhPlxuICBAaWYgKGlzQXJyYXkoZGF0YSkgJiYgZGF0YS5sZW5ndGgpIHtcbiAgICA8ZGl2IGNsYXNzPVwicGwtMyBtb2RlbC1wYXJhbGxlbFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1vZGVsTGlzdDsgY29udGV4dDogeyAkaW1wbGljaXQ6IGRhdGEgfVwiIC8+XG4gICAgPC9kaXY+XG4gICAgPGhyIC8+XG4gIH0gQGVsc2UgaWYgKCFpc0FycmF5KGRhdGEpKSB7XG4gICAgPGRpdiBjbGFzcz1cImNhcmQgbWItMiBtb2RlbC1zZXJpZSBpcy1zaXplLTZcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWNvbnRlbnQgcC0zXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaXMtY2FwaXRhbGl6ZWRcIj57eyBkYXRhLmtleSB8IGtleVRvTGFiZWwgfX08L3NwYW4+XG4gICAgICAgIDpcbiAgICAgICAgQGxldCBsaW5rID0gZmluZE1vZGVsTGluayhkYXRhKTtcbiAgICAgICAgQGlmIChsaW5rKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1vZGVsTGluazsgY29udGV4dDogeyBtb2RlbDogZGF0YS5tb2RlbCwgdmFsdWU6IGRhdGEudmFsdWUsIGxpbmsgfVwiIC8+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIEBsZXQgbW9kZWxMaW5rID0gZmluZE1vZGVsUGF0aExpbmsoZGF0YSk7XG4gICAgICAgICAgQGlmIChtb2RlbExpbmspIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2RlbFBhdGhMaW5rOyBjb250ZXh0OiB7IG1vZGVsOiBkYXRhLm1vZGVsLCB2YWx1ZTogZGF0YS52YWx1ZSwgbGluazogbW9kZWxMaW5rIH1cIiAvPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZWZhdWx0LXZhbHVlXCI+e3sgZGF0YS52YWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByLTFcIj5Nb2RlbDo8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHItMlwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZXJtTGluazsgY29udGV4dDogeyAkaW1wbGljaXQ6IGRhdGEubW9kZWwgfVwiIC8+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChzaG93QWR2YW5jZWQoKSkge1xuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICBAaWYgKGRhdGEucnVuU3RyYXRlZ3kpIHtcbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByLTFcIj5SdW4gc3RyYXRlZ3k6PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RyYXRlZ2llc0xpbms7IGNvbnRleHQ6IHsgc3RyYXRlZ3k6IGRhdGEucnVuU3RyYXRlZ3ksIHR5cGU6ICdydW4nIH1cIiAvPlxuICAgICAgICAgICAgICAgIEBpZiAoZGF0YS5ydW5BcmdzKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGwtMyBpcy1zaXplLTdcIj5cbiAgICAgICAgICAgICAgICAgICAgPHA+PGI+UnVuIGFyZ3VtZW50czo8L2I+PC9wPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RyYXRlZ2llc0FyZ3M7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBkYXRhLnJ1bkFyZ3MgfVwiIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChkYXRhLm1lcmdlU3RyYXRlZ3kpIHtcbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByLTFcIj5NZXJnZSBzdHJhdGVneTo8L3NwYW4+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdHJhdGVnaWVzTGluazsgY29udGV4dDogeyBzdHJhdGVneTogZGF0YS5tZXJnZVN0cmF0ZWd5LCB0eXBlOiAnbWVyZ2UnIH1cIiAvPlxuICAgICAgICAgICAgICAgIEBpZiAoZGF0YS5tZXJnZUFyZ3MpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbC0zIGlzLXNpemUtN1wiPlxuICAgICAgICAgICAgICAgICAgICA8cD48Yj5NZXJnZSBhcmd1bWVudHM6PC9iPjwvcD5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0cmF0ZWdpZXNBcmdzOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZGF0YS5tZXJnZUFyZ3MgfVwiIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtb2RlbExpbmtLZXkgbGV0LW1vZGVsPVwibW9kZWxcIiBsZXQtbGluaz1cImxpbmtcIj5cbiAgPGEgW2hyZWZdPVwibW9kZWxLZXlVcmwobGluaywgbW9kZWwpXCIgdGFyZ2V0PVwiX2JsYW5rXCI+e3sgbW9kZWxLZXlOYW1lKGxpbmsubW9kZWxLZXkpIH19PC9hPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtb2RlbExpbmsgbGV0LW1vZGVsPVwibW9kZWxcIiBsZXQtbGluaz1cImxpbmtcIiBsZXQtdmFsdWU9XCJ2YWx1ZVwiPlxuICBAaWYgKGxpbmsudGVybSkge1xuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZXJtTGluazsgY29udGV4dDogeyAkaW1wbGljaXQ6IGxpbmsudGVybSB9XCIgLz5cbiAgfVxuXG4gIEBpZiAoIWxpbmsudGVybSAmJiAhbGluaz8ubW9kZWxLZXkpIHtcbiAgICA8c3BhbiBjbGFzcz1cImRlZmF1bHQtdmFsdWVcIj57eyB2YWx1ZSB9fTwvc3Bhbj5cbiAgfVxuXG4gIEBpZiAoIWxpbmsudGVybSAmJiBsaW5rPy5tb2RlbEtleSkge1xuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2RlbExpbmtLZXk7IGNvbnRleHQ6IHsgbGluaywgbW9kZWwgfVwiIC8+XG4gIH1cblxuICA8cCBjbGFzcz1cIm1vZGVsLWxpbmtcIj5cbiAgICA8c3BhbiBjbGFzcz1cInByLTFcIj5Nb2RlbDo8L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJwci0yXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVybUxpbms7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBtb2RlbCB9XCIgLz5cbiAgICA8L3NwYW4+XG5cbiAgICA8YSBjbGFzcz1cImlzLXNpemUtN1wiIFtocmVmXT1cImxpbmsuZG9jUGF0aFwiIHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJwci0xXCI+KFZpZXcgRG9jcyk8L3NwYW4+XG4gICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYUV4dGVybmFsTGlua0FsdFwiIC8+XG4gICAgPC9hPlxuICA8L3A+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vZGVsUGF0aExpbmsgbGV0LW1vZGVsPVwibW9kZWxcIiBsZXQtbGluaz1cImxpbmtcIiBsZXQtdmFsdWU9XCJ2YWx1ZVwiPlxuICBAaWYgKCFsaW5rPy5tb2RlbEtleSkge1xuICAgIDxzcGFuIGNsYXNzPVwiZGVmYXVsdC12YWx1ZVwiPnt7IHZhbHVlIH19PC9zcGFuPlxuICB9XG5cbiAgQGlmIChsaW5rPy5tb2RlbEtleSkge1xuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2RlbExpbmtLZXk7IGNvbnRleHQ6IHsgbGluaywgbW9kZWwgfVwiIC8+XG4gIH1cblxuICA8cCBjbGFzcz1cIm1vZGVsLXBhdGgtbGlua1wiPlxuICAgIDxzcGFuIGNsYXNzPVwicHItMVwiPk1vZGVsOjwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cInByLTJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZXJtTGluazsgY29udGV4dDogeyAkaW1wbGljaXQ6IG1vZGVsIH1cIiAvPlxuICAgIDwvc3Bhbj5cblxuICAgIDxhIGNsYXNzPVwiaXMtc2l6ZS03XCIgW2hyZWZdPVwibGluay5kb2NQYXRoXCIgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInByLTFcIj4oVmlldyBEb2NzKTwvc3Bhbj5cbiAgICAgIDxmYS1pY29uIFtpY29uXT1cImZhRXh0ZXJuYWxMaW5rQWx0XCIgLz5cbiAgICA8L2E+XG4gIDwvcD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc3RyYXRlZ2llc0xpbmsgbGV0LXN0cmF0ZWd5PVwic3RyYXRlZ3lcIiBsZXQtdHlwZT1cInR5cGVcIj5cbiAgPHNwYW4gY2xhc3M9XCJwci0yIGlzLWlubGluZS1ibG9ja1wiPlxuICAgIDxjb2RlPnt7IHN0cmF0ZWd5IH19PC9jb2RlPlxuICA8L3NwYW4+XG5cbiAgPGFcbiAgICBjbGFzcz1cImlzLXNpemUtN1wiXG4gICAgW2hyZWZdPVwic3RyYXRlZ2llc0RvY3MgKyAnLycgKyB0eXBlICsgJy8nICsgKHR5cGUgPT09ICdtZXJnZScgPyAnbWVyZ2VfJyA6ICcnKSArIHN0cmF0ZWd5ICsgJy5tZCdcIlxuICAgIHRhcmdldD1cIl9ibGFua1wiPlxuICAgIDxzcGFuIGNsYXNzPVwicHItMVwiPihWaWV3IERvY3MpPC9zcGFuPlxuICAgIDxmYS1pY29uIFtpY29uXT1cImZhRXh0ZXJuYWxMaW5rQWx0XCIgLz5cbiAgPC9hPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzdHJhdGVnaWVzQXJncyBsZXQtYXJncz5cbiAgPGRpdiBjbGFzcz1cInBsLTJcIj5cbiAgICBAZm9yIChhcmcgb2YgYXJncyB8IGtleXZhbHVlOyB0cmFjayBhcmcpIHtcbiAgICAgIDxwPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImhhcy10ZXh0LXVuZGVybGluZVwiPnt7IGFyZy5rZXkgfX08L3NwYW4+XG4gICAgICAgIDpcbiAgICAgICAgPGNvZGU+e3sgYXJnLnZhbHVlIHwganNvbiB9fTwvY29kZT5cbiAgICAgIDwvcD5cbiAgICB9XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -2,8 +2,7 @@ import { Injectable, InjectionToken, inject } from '@angular/core';
|
|
|
2
2
|
import { HttpClient } from '@angular/common/http';
|
|
3
3
|
import { of } from 'rxjs';
|
|
4
4
|
import { catchError, shareReplay } from 'rxjs/operators';
|
|
5
|
-
import { loadModels } from '@hestia-earth/engine-models';
|
|
6
|
-
import { loadConfig } from '@hestia-earth/engine-config';
|
|
5
|
+
import { loadModels, loadConfig } from '@hestia-earth/engine-models';
|
|
7
6
|
import { toDashCase } from '@hestia-earth/utils';
|
|
8
7
|
import { baseUrl, gitHome, gitBranch, filterParams, Repository } from '../common/utils';
|
|
9
8
|
import * as i0 from "@angular/core";
|
|
@@ -126,4 +125,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
|
|
|
126
125
|
providedIn: 'root'
|
|
127
126
|
}]
|
|
128
127
|
}] });
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZW5naW5lL2VuZ2luZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBVXpELE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQThELFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUV4RixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FBUywwQkFBMEIsQ0FBQyxDQUFDO0FBRS9GLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0UsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsZ0JBQWdCLEVBQUUsV0FBVyxTQUFTLEVBQUUsRUFBRSxDQUFDO0FBRWhGLE1BQU0scUJBQXFCLEdBQUc7SUFDNUIsaUJBQWlCLEVBQUUsWUFBWTtDQUNoQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FB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QUUsQ0FBQztTQUM3RCxDQUFDO2FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7K0dBakRVLGVBQWU7bUhBQWYsZUFBZSxjQUZkLE1BQU07OzRGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIEVtaXNzaW9uTWV0aG9kVGllcixcbiAgSlNPTkxELFxuICBOb2RlVHlwZSxcbiAgU2NoZW1hVHlwZSxcbiAgU2l0ZVNpdGVUeXBlLFxuICBUZXJtVGVybVR5cGUsXG4gIGJsYW5rTm9kZXNUeXBlXG59IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IElNb2RlbCwgbG9hZE1vZGVscyB9IGZyb20gJ0BoZXN0aWEtZWFydGgvZW5naW5lLW1vZGVscyc7XG5pbXBvcnQgeyBhbGxvd2VkVHlwZSwgSU9yY2hlc3RyYXRvckNvbmZpZywgSU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnLCBsb2FkQ29uZmlnIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9lbmdpbmUtY29uZmlnJztcbmltcG9ydCB7IHRvRGFzaENhc2UgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzJztcblxuaW1wb3J0IHsgYmFzZVVybCwgZ2l0SG9tZSwgZ2l0QnJhbmNoLCBmaWx0ZXJQYXJhbXMsIFJlcG9zaXRvcnkgfSBmcm9tICcuLi9jb21tb24vdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgSEVfQ0FMQ1VMQVRJT05TX0JBU0VfVVJMID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0hFX0NBTENVTEFUSU9OU19CQVNFX1VSTCcpO1xuXG5leHBvcnQgY29uc3QgZW5naW5lR2l0QmFzZVVybCA9ICgpID0+IFtnaXRIb21lLCBSZXBvc2l0b3J5Lm1vZGVsc10uam9pbignLycpO1xuZXhwb3J0IGNvbnN0IGVuZ2luZUdpdFVybCA9ICgpID0+IGAke2VuZ2luZUdpdEJhc2VVcmwoKX0vLS9ibG9iLyR7Z2l0QnJhbmNoKCl9YDtcblxuY29uc3QgY3VzdG9tVGVybUFwaURvY3NQYXRoID0ge1xuICAnZXhjcmV0YS1rZy1tYXNzJzogJ2V4Y3JldGEta2cnXG59O1xuXG5leHBvcnQgY29uc3QgcGF0aFRvQXBpRG9jc1BhdGggPSAobW9kZWw6IHN0cmluZywgdGVybT86IHN0cmluZykgPT5cbiAgW1xuICAgIGJhc2VVcmwoZmFsc2UpLFxuICAgICdkb2NzJyxcbiAgICBbJyNoZXN0aWEtY2FsY3VsYXRpb24tbW9kZWxzJywgdG9EYXNoQ2FzZShtb2RlbCksIGN1c3RvbVRlcm1BcGlEb2NzUGF0aFt0b0Rhc2hDYXNlKHRlcm0pXSB8fCB0b0Rhc2hDYXNlKHRlcm0pXVxuICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgLmpvaW4oJy0nKVxuICBdLmpvaW4oJy8nKTtcblxuZXhwb3J0IGludGVyZmFjZSBJTW9kZWxFeHRlbmRlZCBleHRlbmRzIElNb2RlbCB7XG4gIC8qKlxuICAgKiBJcyBtb2RlbCBmcm9tIEVjb2ludmVudFYzLlxuICAgKi9cbiAgZWNvaW52ZW50OiBib29sZWFuO1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgQVBJIERvY3VtZW50YXRpb24uXG4gICAqL1xuICBhcGlEb2NzUGF0aD86IHN0cmluZztcbn1cblxuY29uc3QgbWFwTW9kZWxMaW5rID1cbiAgKGVjb2ludmVudCA9IGZhbHNlKSA9PlxuICAoeyBwYXRoLCBkb2NQYXRoLCAuLi5saW5rIH06IElNb2RlbEV4dGVuZGVkKSA9PiAoe1xuICAgIC4uLmxpbmssXG4gICAgZWNvaW52ZW50LFxuICAgIHBhdGg6IGAke2VuZ2luZUdpdFVybCgpfS8ke3BhdGh9YCxcbiAgICBkb2NQYXRoOiBgJHtlbmdpbmVHaXRVcmwoKX0vJHtkb2NQYXRofWAsXG4gICAgYXBpRG9jc1BhdGg6IHBhdGhUb0FwaURvY3NQYXRoKGxpbmsubW9kZWwsIGxpbmsudGVybSB8fCBsaW5rLm1vZGVsS2V5KVxuICB9KTtcblxuY29uc3QgYWxsTW9kZWxzID0gKCkgPT4ge1xuICBjb25zdCB7IGxpbmtzLCBlY29pbnZlbnRMaW5rcywgZWNvaW52ZW50VjNBbmRFbWJlckNsaW1hdGVMaW5rcyB9ID0gbG9hZE1vZGVscygpO1xuICByZXR1cm4gW1xuICAgIC4uLmxpbmtzLm1hcChtYXBNb2RlbExpbmsoZmFsc2UpKSxcbiAgICAuLi4oZWNvaW52ZW50TGlua3MgfHwgW10pLm1hcChtYXBNb2RlbExpbmsodHJ1ZSkpLFxuICAgIC4uLihlY29pbnZlbnRWM0FuZEVtYmVyQ2xpbWF0ZUxpbmtzIHx8IFtdKS5tYXAobWFwTW9kZWxMaW5rKHRydWUpKVxuICBdO1xufTtcblxuZXhwb3J0IGNvbnN0IG1vZGVscyA9IGFsbE1vZGVscygpO1xuXG5leHBvcnQgY29uc3QgZmluZE1vZGVscyA9ICh0ZXJtSWQ6IHN0cmluZykgPT4gbW9kZWxzLmZpbHRlcigoeyB0ZXJtIH0pID0+IHRlcm0gPT09IHRlcm1JZCk7XG5cbmV4cG9ydCBjb25zdCBmaW5kTWF0Y2hpbmdNb2RlbCA9IChtb2RlbDogUGFydGlhbDxJTW9kZWw+KTogSU1vZGVsRXh0ZW5kZWQgPT5cbiAgT2JqZWN0LmtleXMobW9kZWwpLmxlbmd0aCA+IDBcbiAgICA/IG1vZGVscy5mbGF0KCkuZmluZChtID0+IE9iamVjdC5lbnRyaWVzKG1vZGVsKS5ldmVyeSgoW2tleSwgdmFsdWVdKSA9PiB2YWx1ZSA9PT0gbVtrZXldKSlcbiAgICA6IG51bGw7XG5cbmV4cG9ydCBjb25zdCBtb2RlbFBhcmFtcyA9IChub2RlOiBQYXJ0aWFsPGJsYW5rTm9kZXNUeXBlPiwgaW5jbHVkZVRlcm0gPSB0cnVlLCBrZXk/OiBzdHJpbmcpID0+XG4gIGZpbHRlclBhcmFtcyh7XG4gICAgbW9kZWw6ICdtZXRob2RNb2RlbCcgaW4gbm9kZSA/IG5vZGU/Lm1ldGhvZE1vZGVsPy5bJ0BpZCddIDogdW5kZWZpbmVkLFxuICAgIG1vZGVsS2V5OiBrZXksXG4gICAgLi4uKGluY2x1ZGVUZXJtID8geyB0ZXJtOiAndGVybScgaW4gbm9kZSA/IG5vZGU/LnRlcm0/LlsnQGlkJ10gOiB1bmRlZmluZWQgfSA6IHt9KVxuICB9KTtcblxuZXhwb3J0IGNvbnN0IG1vZGVsS2V5UGFyYW1zID0gKG5vZGU6IFBhcnRpYWw8YmxhbmtOb2Rlc1R5cGU+LCBrZXk6IHN0cmluZykgPT5cbiAgZmlsdGVyUGFyYW1zKHtcbiAgICBtb2RlbDogKG5vZGU/LlsnQHR5cGUnXSB8fCBub2RlPy50eXBlIHx8ICcnKS50b0xvd2VyQ2FzZSgpLFxuICAgIG1vZGVsS2V5OiBrZXlcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBmaW5kTm9kZU1vZGVsID0gKG5vZGU6IFBhcnRpYWw8YmxhbmtOb2Rlc1R5cGU+LCBrZXk/OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBmaW5kTWF0Y2hpbmdNb2RlbChtb2RlbFBhcmFtcyhub2RlKSk7XG4gIHJldHVybiAha2V5IHx8IHZhbHVlID8gdmFsdWUgOiBmaW5kTWF0Y2hpbmdNb2RlbChtb2RlbEtleVBhcmFtcyhub2RlLCBrZXkpKTtcbn07XG5cbi8qKlxuICogRmluZCBtb2RlbHMgZnJvbSB0aGUgb3JjaGVzdHJhdG9yIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogQHBhcmFtIGNvbmZpZyBUaGUgb3JjaGVzdHJhdG9yIGNvbmZpZ3VyYXRpb24gY29udGVudC5cbiAqIEBwYXJhbSB0ZXJtSWQgVGhlIGBAaWRgIG9mIHRoZSBUZXJtLlxuICogQHBhcmFtIG1vZGVsS2V5IFRoZSBrZXkgb2YgdGhlIGNvbmZpZ3VyYXRpb24gKGUuZy4gXCJwcm9kdWN0c1wiLCBcImlucHV0c1wiKVxuICogQHBhcmFtIG1vZGVscyBPcHRpb25hbCAtIGxpc3Qgb2YgbW9kZWxzIGZyb20gYG1vZGVsLWxpbmtzLmpzb25gIHRvIGRlZmF1bHQgd2hlbiBvcmNoZXN0cmF0b3IgZG9lcyBub3QgY29udGFpbiBjb25maWcuXG4gKiBAcmV0dXJucyBMaXN0IG9mIG1vZGVscyBmcm9tIG9yY2hlc3RyYXRvciBvciBtb2RlbHMgaWYgc2V0LlxuICovXG5leHBvcnQgY29uc3QgZmluZENvbmZpZ01vZGVscyA9IChjb25maWc6IElPcmNoZXN0cmF0b3JDb25maWcsIHRlcm1JZDogc3RyaW5nLCBtb2RlbEtleTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGNvbmZpZ01vZGVscyA9IGNvbmZpZy5tb2RlbHNcbiAgICAuZmxhdCgpXG4gICAgLmZpbHRlcigoeyB2YWx1ZSwga2V5IH0pID0+IHRlcm1JZCA9PT0gdmFsdWUgJiYgKCFtb2RlbEtleSB8fCBrZXkgPT09IG1vZGVsS2V5KSk7XG4gIHJldHVybiBjb25maWdNb2RlbHMubGVuZ3RoID8gY29uZmlnTW9kZWxzIDogZmluZE1vZGVscyh0ZXJtSWQpO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJQ2FsY3VsYXRpb25zTW9kZWxzUGFyYW1zIHtcbiAgdGVybVR5cGU/OiBTY2hlbWFUeXBlO1xuICBwcm9kdWN0VGVybUlkPzogc3RyaW5nO1xuICBwcm9kdWN0VGVybVR5cGU/OiBUZXJtVGVybVR5cGU7XG4gIHRpZXI/OiBFbWlzc2lvbk1ldGhvZFRpZXI7XG4gIHNpdGVUeXBlPzogU2l0ZVNpdGVUeXBlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDYWxjdWxhdGlvbnNSZXF1aXJlbWVudHNQYXJhbXMgZXh0ZW5kcyBJQ2FsY3VsYXRpb25zTW9kZWxzUGFyYW1zIHtcbiAgZm9ybWF0PzogJ2Nzdic7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNhbGN1bGF0aW9uc01vZGVsIHtcbiAgbW9kZWw6IHN0cmluZztcbiAga2V5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBmaW5kT3JjaGVzdHJhdG9yTW9kZWwgPSAoeyBtb2RlbHMgfTogSU9yY2hlc3RyYXRvckNvbmZpZywgbW9kZWw6IFBhcnRpYWw8SU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnPikgPT5cbiAgT2JqZWN0LmtleXMobW9kZWwpLmxlbmd0aCA+IDBcbiAgICA/IG1vZGVscy5mbGF0KCkuZmluZChtID0+IE9iamVjdC5lbnRyaWVzKG1vZGVsKS5ldmVyeSgoW2tleSwgdmFsdWVdKSA9PiB2YWx1ZSA9PT0gbVtrZXldKSlcbiAgICA6IG51bGw7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEhlRW5naW5lU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NhbGN1bGF0aW9uc0Jhc2VVcmwgPSBpbmplY3QoSEVfQ0FMQ1VMQVRJT05TX0JBU0VfVVJMKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG5cbiAgcHJpdmF0ZSBfcmVjb21tZW5kYXRpb25zOiB7IFtrZXk6IHN0cmluZ106IE9ic2VydmFibGU8c3RyaW5nW10+IH0gPSB7fTtcbiAgcHJpdmF0ZSBfcmVxdWlyZW1lbnRzOiB7IFtrZXk6IHN0cmluZ106IE9ic2VydmFibGU8SlNPTkxEPE5vZGVUeXBlPj4gfSA9IHt9O1xuXG4gIHB1YmxpYyBsaXN0TW9kZWxzKHBhcmFtczogSUNhbGN1bGF0aW9uc01vZGVsc1BhcmFtcykge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8eyBtb2RlbHM6IElDYWxjdWxhdGlvbnNNb2RlbFtdIH0+KGAke3RoaXMuX2NhbGN1bGF0aW9uc0Jhc2VVcmx9L21vZGVsc2AsIHtcbiAgICAgICAgcGFyYW1zOiBmaWx0ZXJQYXJhbXMocGFyYW1zKVxuICAgICAgfSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSZXF1aXJlbWVudHMkKHBhcmFtczogSUNhbGN1bGF0aW9uc1JlcXVpcmVtZW50c1BhcmFtcykge1xuICAgIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KGZpbHRlclBhcmFtcyhwYXJhbXMpKTtcbiAgICB0aGlzLl9yZXF1aXJlbWVudHNba2V5XSA9XG4gICAgICB0aGlzLl9yZXF1aXJlbWVudHNba2V5XSB8fFxuICAgICAgdGhpcy5odHRwXG4gICAgICAgIC5nZXQ8SlNPTkxEPE5vZGVUeXBlPj4oYCR7dGhpcy5fY2FsY3VsYXRpb25zQmFzZVVybH0vbW9kZWxzL3JlcXVpcmVtZW50c2AsIHtcbiAgICAgICAgICBwYXJhbXM6IGZpbHRlclBhcmFtcyhwYXJhbXMpXG4gICAgICAgIH0pXG4gICAgICAgIC5waXBlKHNoYXJlUmVwbGF5KDEpKTtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZW1lbnRzW2tleV07XG4gIH1cblxuICBwdWJsaWMgZ2V0UmVxdWlyZW1lbnRzKHBhcmFtczogSUNhbGN1bGF0aW9uc1JlcXVpcmVtZW50c1BhcmFtcykge1xuICAgIHJldHVybiB0aGlzLmdldFJlcXVpcmVtZW50cyQocGFyYW1zKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUZXJtSWRzJChwYXJhbXM6IElDYWxjdWxhdGlvbnNSZXF1aXJlbWVudHNQYXJhbXMpIHtcbiAgICBjb25zdCBrZXkgPSBKU09OLnN0cmluZ2lmeShmaWx0ZXJQYXJhbXMocGFyYW1zKSk7XG4gICAgdGhpcy5fcmVjb21tZW5kYXRpb25zW2tleV0gPVxuICAgICAgdGhpcy5fcmVjb21tZW5kYXRpb25zW2tleV0gfHxcbiAgICAgIHRoaXMuaHR0cFxuICAgICAgICAuZ2V0PHN0cmluZ1tdPihgJHt0aGlzLl9jYWxjdWxhdGlvbnNCYXNlVXJsfS9tb2RlbHMvdGVybS1pZHNgLCB7XG4gICAgICAgICAgcGFyYW1zOiBmaWx0ZXJQYXJhbXMocGFyYW1zKVxuICAgICAgICB9KVxuICAgICAgICAucGlwZShzaGFyZVJlcGxheSgxKSk7XG4gICAgcmV0dXJuIHRoaXMuX3JlY29tbWVuZGF0aW9uc1trZXldO1xuICB9XG5cbiAgcHVibGljIG9jaGVzdHJhdG9yQ29uZmlnJCh0eXBlOiBhbGxvd2VkVHlwZSwgaWQ/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PElPcmNoZXN0cmF0b3JDb25maWc+KGAke3RoaXMuX2NhbGN1bGF0aW9uc0Jhc2VVcmx9L3JlY2FsY3VsYXRlL2NvbmZpZ2AsIHtcbiAgICAgICAgcGFyYW1zOiBmaWx0ZXJQYXJhbXMoeyB0eXBlLCAnQHR5cGUnOiB0eXBlLCBpZCwgJ0BpZCc6IGlkIH0pXG4gICAgICB9KVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZihsb2FkQ29uZmlnKHR5cGUpKSkpO1xuICB9XG59XG4iXX0=
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZW5naW5lL2VuZ2luZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBVXpELE9BQU8sRUFFTCxVQUFVLEVBSVYsVUFBVSxFQUNYLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpELE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBRXhGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUFTLDBCQUEwQixDQUFDLENBQUM7QUFFL0YsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM3RSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxnQkFBZ0IsRUFBRSxXQUFXLFNBQVMsRUFBRSxFQUFFLENBQUM7QUFFaEYsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixpQkFBaUIsRUFBRSxZQUFZO0NBQ2hDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQWEsRUFBRSxJQUFhLEVBQUUsRUFBRSxDQUNoRTtJQUNFLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDZCxNQUFNO0lBQ04sQ0FBQyw0QkFBNEIsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUscUJBQXFCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNHLE1BQU0sQ0FBQyxPQUFPLENBQUM7U0FDZixJQUFJLENBQUMsR0FBRyxDQUFDO0NBQ2IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFhZCxNQUFNLFlBQVksR0FDaEIsQ0FBQyxTQUFTLEdBQUcsS0FBSyxFQUFFLEVBQUUsQ0FDdEIsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0MsR0FBRyxJQUFJO0lBQ1AsU0FBUztJQUNULElBQUksRUFBRSxHQUFHLFlBQVksRUFBRSxJQUFJLElBQUksRUFBRTtJQUNqQyxPQUFPLEVBQUUsR0FBRyxZQUFZLEVBQUUsSUFBSSxPQUFPLEVBQUU7SUFDdkMsV0FBVyxFQUFFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO0NBQ3ZFLENBQUMsQ0FBQztBQUVMLE1BQU0sU0FBUyxHQUFHLEdBQUcsRUFBRTtJQUNyQixNQUFNLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSwrQkFBK0IsRUFBRSxHQUFHLFVBQVUsRUFBRSxDQUFDO0lBQ2hGLE9BQU87UUFDTCxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLEdBQUcsQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxHQUFHLENBQUMsK0JBQStCLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNuRSxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLFNBQVMsRUFBRSxDQUFDO0FBRWxDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQztBQUUzRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQXNCLEVBQWtCLEVBQUUsQ0FDMUUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztJQUMzQixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMxRixDQUFDLENBQUMsSUFBSSxDQUFDO0FBRVgsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBNkIsRUFBRSxXQUFXLEdBQUcsSUFBSSxFQUFFLEdBQVksRUFBRSxFQUFFLENBQzdGLFlBQVksQ0FBQztJQUNYLEtBQUssRUFBRSxhQUFhLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7SUFDckUsUUFBUSxFQUFFLEdBQUc7SUFDYixHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Q0FDbkYsQ0FBQyxDQUFDO0FBRUwsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBNkIsRUFBRSxHQUFXLEVBQUUsRUFBRSxDQUMzRSxZQUFZLENBQUM7SUFDWCxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRTtJQUMxRCxRQUFRLEVBQUUsR0FBRztDQUNkLENBQUMsQ0FBQztBQUVMLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQTZCLEVBQUUsR0FBWSxFQUFFLEVBQUU7SUFDM0UsTUFBTSxLQUFLLEdBQUcsaUJBQWlCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsT0FBTyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzlFLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxNQUEyQixFQUFFLE1BQWMsRUFBRSxRQUFnQixFQUFFLEVBQUU7SUFDaEcsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU07U0FDL0IsSUFBSSxFQUFFO1NBQ04sTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLE1BQU0sS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNuRixPQUFPLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2pFLENBQUMsQ0FBQztBQW1CRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUF1QixFQUFFLEtBQXdDLEVBQUUsRUFBRSxDQUNqSCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO0lBQzNCLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzFGLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFLWCxNQUFNLE9BQU8sZUFBZTtJQUg1QjtRQUltQix5QkFBb0IsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUN0RCxTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXJDLHFCQUFnQixHQUE0QyxFQUFFLENBQUM7UUFDL0Qsa0JBQWEsR0FBb0QsRUFBRSxDQUFDO0tBNkM3RTtJQTNDUSxVQUFVLENBQUMsTUFBaUM7UUFDakQsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FBbUMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLFNBQVMsRUFBRTtZQUM1RSxNQUFNLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQztTQUM3QixDQUFDO2FBQ0QsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVNLGdCQUFnQixDQUFDLE1BQXVDO1FBQzdELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUM7WUFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxJQUFJO3FCQUNOLEdBQUcsQ0FBbUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLHNCQUFzQixFQUFFO29CQUN6RSxNQUFNLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQztpQkFDN0IsQ0FBQztxQkFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTSxlQUFlLENBQUMsTUFBdUM7UUFDNUQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVNLFdBQVcsQ0FBQyxNQUF1QztRQUN4RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUM7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLElBQUk7cUJBQ04sR0FBRyxDQUFXLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixrQkFBa0IsRUFBRTtvQkFDN0QsTUFBTSxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUM7aUJBQzdCLENBQUM7cUJBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxJQUFpQixFQUFFLEVBQVc7UUFDdEQsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FBc0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLHFCQUFxQixFQUFFO1lBQzNFLE1BQU0sRUFBRSxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQzdELENBQUM7YUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQzsrR0FqRFUsZUFBZTttSEFBZixlQUFlLGNBRmQsTUFBTTs7NEZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgRW1pc3Npb25NZXRob2RUaWVyLFxuICBKU09OTEQsXG4gIE5vZGVUeXBlLFxuICBTY2hlbWFUeXBlLFxuICBTaXRlU2l0ZVR5cGUsXG4gIFRlcm1UZXJtVHlwZSxcbiAgYmxhbmtOb2Rlc1R5cGVcbn0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHtcbiAgSU1vZGVsLFxuICBsb2FkTW9kZWxzLFxuICBhbGxvd2VkVHlwZSxcbiAgSU9yY2hlc3RyYXRvckNvbmZpZyxcbiAgSU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnLFxuICBsb2FkQ29uZmlnXG59IGZyb20gJ0BoZXN0aWEtZWFydGgvZW5naW5lLW1vZGVscyc7XG5pbXBvcnQgeyB0b0Rhc2hDYXNlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5cbmltcG9ydCB7IGJhc2VVcmwsIGdpdEhvbWUsIGdpdEJyYW5jaCwgZmlsdGVyUGFyYW1zLCBSZXBvc2l0b3J5IH0gZnJvbSAnLi4vY29tbW9uL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IEhFX0NBTENVTEFUSU9OU19CQVNFX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdIRV9DQUxDVUxBVElPTlNfQkFTRV9VUkwnKTtcblxuZXhwb3J0IGNvbnN0IGVuZ2luZUdpdEJhc2VVcmwgPSAoKSA9PiBbZ2l0SG9tZSwgUmVwb3NpdG9yeS5tb2RlbHNdLmpvaW4oJy8nKTtcbmV4cG9ydCBjb25zdCBlbmdpbmVHaXRVcmwgPSAoKSA9PiBgJHtlbmdpbmVHaXRCYXNlVXJsKCl9Ly0vYmxvYi8ke2dpdEJyYW5jaCgpfWA7XG5cbmNvbnN0IGN1c3RvbVRlcm1BcGlEb2NzUGF0aCA9IHtcbiAgJ2V4Y3JldGEta2ctbWFzcyc6ICdleGNyZXRhLWtnJ1xufTtcblxuZXhwb3J0IGNvbnN0IHBhdGhUb0FwaURvY3NQYXRoID0gKG1vZGVsOiBzdHJpbmcsIHRlcm0/OiBzdHJpbmcpID0+XG4gIFtcbiAgICBiYXNlVXJsKGZhbHNlKSxcbiAgICAnZG9jcycsXG4gICAgWycjaGVzdGlhLWNhbGN1bGF0aW9uLW1vZGVscycsIHRvRGFzaENhc2UobW9kZWwpLCBjdXN0b21UZXJtQXBpRG9jc1BhdGhbdG9EYXNoQ2FzZSh0ZXJtKV0gfHwgdG9EYXNoQ2FzZSh0ZXJtKV1cbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5qb2luKCctJylcbiAgXS5qb2luKCcvJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1vZGVsRXh0ZW5kZWQgZXh0ZW5kcyBJTW9kZWwge1xuICAvKipcbiAgICogSXMgbW9kZWwgZnJvbSBFY29pbnZlbnRWMy5cbiAgICovXG4gIGVjb2ludmVudDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIEFQSSBEb2N1bWVudGF0aW9uLlxuICAgKi9cbiAgYXBpRG9jc1BhdGg/OiBzdHJpbmc7XG59XG5cbmNvbnN0IG1hcE1vZGVsTGluayA9XG4gIChlY29pbnZlbnQgPSBmYWxzZSkgPT5cbiAgKHsgcGF0aCwgZG9jUGF0aCwgLi4ubGluayB9OiBJTW9kZWxFeHRlbmRlZCkgPT4gKHtcbiAgICAuLi5saW5rLFxuICAgIGVjb2ludmVudCxcbiAgICBwYXRoOiBgJHtlbmdpbmVHaXRVcmwoKX0vJHtwYXRofWAsXG4gICAgZG9jUGF0aDogYCR7ZW5naW5lR2l0VXJsKCl9LyR7ZG9jUGF0aH1gLFxuICAgIGFwaURvY3NQYXRoOiBwYXRoVG9BcGlEb2NzUGF0aChsaW5rLm1vZGVsLCBsaW5rLnRlcm0gfHwgbGluay5tb2RlbEtleSlcbiAgfSk7XG5cbmNvbnN0IGFsbE1vZGVscyA9ICgpID0+IHtcbiAgY29uc3QgeyBsaW5rcywgZWNvaW52ZW50TGlua3MsIGVjb2ludmVudFYzQW5kRW1iZXJDbGltYXRlTGlua3MgfSA9IGxvYWRNb2RlbHMoKTtcbiAgcmV0dXJuIFtcbiAgICAuLi5saW5rcy5tYXAobWFwTW9kZWxMaW5rKGZhbHNlKSksXG4gICAgLi4uKGVjb2ludmVudExpbmtzIHx8IFtdKS5tYXAobWFwTW9kZWxMaW5rKHRydWUpKSxcbiAgICAuLi4oZWNvaW52ZW50VjNBbmRFbWJlckNsaW1hdGVMaW5rcyB8fCBbXSkubWFwKG1hcE1vZGVsTGluayh0cnVlKSlcbiAgXTtcbn07XG5cbmV4cG9ydCBjb25zdCBtb2RlbHMgPSBhbGxNb2RlbHMoKTtcblxuZXhwb3J0IGNvbnN0IGZpbmRNb2RlbHMgPSAodGVybUlkOiBzdHJpbmcpID0+IG1vZGVscy5maWx0ZXIoKHsgdGVybSB9KSA9PiB0ZXJtID09PSB0ZXJtSWQpO1xuXG5leHBvcnQgY29uc3QgZmluZE1hdGNoaW5nTW9kZWwgPSAobW9kZWw6IFBhcnRpYWw8SU1vZGVsPik6IElNb2RlbEV4dGVuZGVkID0+XG4gIE9iamVjdC5rZXlzKG1vZGVsKS5sZW5ndGggPiAwXG4gICAgPyBtb2RlbHMuZmxhdCgpLmZpbmQobSA9PiBPYmplY3QuZW50cmllcyhtb2RlbCkuZXZlcnkoKFtrZXksIHZhbHVlXSkgPT4gdmFsdWUgPT09IG1ba2V5XSkpXG4gICAgOiBudWxsO1xuXG5leHBvcnQgY29uc3QgbW9kZWxQYXJhbXMgPSAobm9kZTogUGFydGlhbDxibGFua05vZGVzVHlwZT4sIGluY2x1ZGVUZXJtID0gdHJ1ZSwga2V5Pzogc3RyaW5nKSA9PlxuICBmaWx0ZXJQYXJhbXMoe1xuICAgIG1vZGVsOiAnbWV0aG9kTW9kZWwnIGluIG5vZGUgPyBub2RlPy5tZXRob2RNb2RlbD8uWydAaWQnXSA6IHVuZGVmaW5lZCxcbiAgICBtb2RlbEtleToga2V5LFxuICAgIC4uLihpbmNsdWRlVGVybSA/IHsgdGVybTogJ3Rlcm0nIGluIG5vZGUgPyBub2RlPy50ZXJtPy5bJ0BpZCddIDogdW5kZWZpbmVkIH0gOiB7fSlcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBtb2RlbEtleVBhcmFtcyA9IChub2RlOiBQYXJ0aWFsPGJsYW5rTm9kZXNUeXBlPiwga2V5OiBzdHJpbmcpID0+XG4gIGZpbHRlclBhcmFtcyh7XG4gICAgbW9kZWw6IChub2RlPy5bJ0B0eXBlJ10gfHwgbm9kZT8udHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKSxcbiAgICBtb2RlbEtleToga2V5XG4gIH0pO1xuXG5leHBvcnQgY29uc3QgZmluZE5vZGVNb2RlbCA9IChub2RlOiBQYXJ0aWFsPGJsYW5rTm9kZXNUeXBlPiwga2V5Pzogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IHZhbHVlID0gZmluZE1hdGNoaW5nTW9kZWwobW9kZWxQYXJhbXMobm9kZSkpO1xuICByZXR1cm4gIWtleSB8fCB2YWx1ZSA/IHZhbHVlIDogZmluZE1hdGNoaW5nTW9kZWwobW9kZWxLZXlQYXJhbXMobm9kZSwga2V5KSk7XG59O1xuXG4vKipcbiAqIEZpbmQgbW9kZWxzIGZyb20gdGhlIG9yY2hlc3RyYXRvciBjb25maWd1cmF0aW9uLlxuICpcbiAqIEBwYXJhbSBjb25maWcgVGhlIG9yY2hlc3RyYXRvciBjb25maWd1cmF0aW9uIGNvbnRlbnQuXG4gKiBAcGFyYW0gdGVybUlkIFRoZSBgQGlkYCBvZiB0aGUgVGVybS5cbiAqIEBwYXJhbSBtb2RlbEtleSBUaGUga2V5IG9mIHRoZSBjb25maWd1cmF0aW9uIChlLmcuIFwicHJvZHVjdHNcIiwgXCJpbnB1dHNcIilcbiAqIEBwYXJhbSBtb2RlbHMgT3B0aW9uYWwgLSBsaXN0IG9mIG1vZGVscyBmcm9tIGBtb2RlbC1saW5rcy5qc29uYCB0byBkZWZhdWx0IHdoZW4gb3JjaGVzdHJhdG9yIGRvZXMgbm90IGNvbnRhaW4gY29uZmlnLlxuICogQHJldHVybnMgTGlzdCBvZiBtb2RlbHMgZnJvbSBvcmNoZXN0cmF0b3Igb3IgbW9kZWxzIGlmIHNldC5cbiAqL1xuZXhwb3J0IGNvbnN0IGZpbmRDb25maWdNb2RlbHMgPSAoY29uZmlnOiBJT3JjaGVzdHJhdG9yQ29uZmlnLCB0ZXJtSWQ6IHN0cmluZywgbW9kZWxLZXk6IHN0cmluZykgPT4ge1xuICBjb25zdCBjb25maWdNb2RlbHMgPSBjb25maWcubW9kZWxzXG4gICAgLmZsYXQoKVxuICAgIC5maWx0ZXIoKHsgdmFsdWUsIGtleSB9KSA9PiB0ZXJtSWQgPT09IHZhbHVlICYmICghbW9kZWxLZXkgfHwga2V5ID09PSBtb2RlbEtleSkpO1xuICByZXR1cm4gY29uZmlnTW9kZWxzLmxlbmd0aCA/IGNvbmZpZ01vZGVscyA6IGZpbmRNb2RlbHModGVybUlkKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNhbGN1bGF0aW9uc01vZGVsc1BhcmFtcyB7XG4gIHRlcm1UeXBlPzogU2NoZW1hVHlwZTtcbiAgcHJvZHVjdFRlcm1JZD86IHN0cmluZztcbiAgcHJvZHVjdFRlcm1UeXBlPzogVGVybVRlcm1UeXBlO1xuICB0aWVyPzogRW1pc3Npb25NZXRob2RUaWVyO1xuICBzaXRlVHlwZT86IFNpdGVTaXRlVHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ2FsY3VsYXRpb25zUmVxdWlyZW1lbnRzUGFyYW1zIGV4dGVuZHMgSUNhbGN1bGF0aW9uc01vZGVsc1BhcmFtcyB7XG4gIGZvcm1hdD86ICdjc3YnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDYWxjdWxhdGlvbnNNb2RlbCB7XG4gIG1vZGVsOiBzdHJpbmc7XG4gIGtleTogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgZmluZE9yY2hlc3RyYXRvck1vZGVsID0gKHsgbW9kZWxzIH06IElPcmNoZXN0cmF0b3JDb25maWcsIG1vZGVsOiBQYXJ0aWFsPElPcmNoZXN0cmF0b3JNb2RlbENvbmZpZz4pID0+XG4gIE9iamVjdC5rZXlzKG1vZGVsKS5sZW5ndGggPiAwXG4gICAgPyBtb2RlbHMuZmxhdCgpLmZpbmQobSA9PiBPYmplY3QuZW50cmllcyhtb2RlbCkuZXZlcnkoKFtrZXksIHZhbHVlXSkgPT4gdmFsdWUgPT09IG1ba2V5XSkpXG4gICAgOiBudWxsO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBIZUVuZ2luZVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF9jYWxjdWxhdGlvbnNCYXNlVXJsID0gaW5qZWN0KEhFX0NBTENVTEFUSU9OU19CQVNFX1VSTCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXG4gIHByaXZhdGUgX3JlY29tbWVuZGF0aW9uczogeyBba2V5OiBzdHJpbmddOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiB9ID0ge307XG4gIHByaXZhdGUgX3JlcXVpcmVtZW50czogeyBba2V5OiBzdHJpbmddOiBPYnNlcnZhYmxlPEpTT05MRDxOb2RlVHlwZT4+IH0gPSB7fTtcblxuICBwdWJsaWMgbGlzdE1vZGVscyhwYXJhbXM6IElDYWxjdWxhdGlvbnNNb2RlbHNQYXJhbXMpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PHsgbW9kZWxzOiBJQ2FsY3VsYXRpb25zTW9kZWxbXSB9PihgJHt0aGlzLl9jYWxjdWxhdGlvbnNCYXNlVXJsfS9tb2RlbHNgLCB7XG4gICAgICAgIHBhcmFtczogZmlsdGVyUGFyYW1zKHBhcmFtcylcbiAgICAgIH0pXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmVxdWlyZW1lbnRzJChwYXJhbXM6IElDYWxjdWxhdGlvbnNSZXF1aXJlbWVudHNQYXJhbXMpIHtcbiAgICBjb25zdCBrZXkgPSBKU09OLnN0cmluZ2lmeShmaWx0ZXJQYXJhbXMocGFyYW1zKSk7XG4gICAgdGhpcy5fcmVxdWlyZW1lbnRzW2tleV0gPVxuICAgICAgdGhpcy5fcmVxdWlyZW1lbnRzW2tleV0gfHxcbiAgICAgIHRoaXMuaHR0cFxuICAgICAgICAuZ2V0PEpTT05MRDxOb2RlVHlwZT4+KGAke3RoaXMuX2NhbGN1bGF0aW9uc0Jhc2VVcmx9L21vZGVscy9yZXF1aXJlbWVudHNgLCB7XG4gICAgICAgICAgcGFyYW1zOiBmaWx0ZXJQYXJhbXMocGFyYW1zKVxuICAgICAgICB9KVxuICAgICAgICAucGlwZShzaGFyZVJlcGxheSgxKSk7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVtZW50c1trZXldO1xuICB9XG5cbiAgcHVibGljIGdldFJlcXVpcmVtZW50cyhwYXJhbXM6IElDYWxjdWxhdGlvbnNSZXF1aXJlbWVudHNQYXJhbXMpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXF1aXJlbWVudHMkKHBhcmFtcykudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VGVybUlkcyQocGFyYW1zOiBJQ2FsY3VsYXRpb25zUmVxdWlyZW1lbnRzUGFyYW1zKSB7XG4gICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoZmlsdGVyUGFyYW1zKHBhcmFtcykpO1xuICAgIHRoaXMuX3JlY29tbWVuZGF0aW9uc1trZXldID1cbiAgICAgIHRoaXMuX3JlY29tbWVuZGF0aW9uc1trZXldIHx8XG4gICAgICB0aGlzLmh0dHBcbiAgICAgICAgLmdldDxzdHJpbmdbXT4oYCR7dGhpcy5fY2FsY3VsYXRpb25zQmFzZVVybH0vbW9kZWxzL3Rlcm0taWRzYCwge1xuICAgICAgICAgIHBhcmFtczogZmlsdGVyUGFyYW1zKHBhcmFtcylcbiAgICAgICAgfSlcbiAgICAgICAgLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xuICAgIHJldHVybiB0aGlzLl9yZWNvbW1lbmRhdGlvbnNba2V5XTtcbiAgfVxuXG4gIHB1YmxpYyBvY2hlc3RyYXRvckNvbmZpZyQodHlwZTogYWxsb3dlZFR5cGUsIGlkPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxJT3JjaGVzdHJhdG9yQ29uZmlnPihgJHt0aGlzLl9jYWxjdWxhdGlvbnNCYXNlVXJsfS9yZWNhbGN1bGF0ZS9jb25maWdgLCB7XG4gICAgICAgIHBhcmFtczogZmlsdGVyUGFyYW1zKHsgdHlwZSwgJ0B0eXBlJzogdHlwZSwgaWQsICdAaWQnOiBpZCB9KVxuICAgICAgfSlcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YobG9hZENvbmZpZyh0eXBlKSkpKTtcbiAgfVxufVxuIl19
|