@dotglitch/ngx-common 1.1.37 → 1.1.38
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.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Input, ViewContainerRef, isDevMode, EventEmitter, Optional, ViewChild, Component, Inject, Output } from '@angular/core';
|
|
2
|
-
import { NgComponentOutlet,
|
|
2
|
+
import { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';
|
|
3
3
|
import { MAT_DIALOG_DATA, } from '@angular/material/dialog';
|
|
4
4
|
import { debounceTime } from 'rxjs';
|
|
5
5
|
import { LazyLoaderService } from './lazy-loader.service';
|
|
@@ -329,11 +329,11 @@ export class LazyLoaderComponent {
|
|
|
329
329
|
this.clearEmitter.emit();
|
|
330
330
|
}
|
|
331
331
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: LazyLoaderComponent, deps: [{ token: i1.LazyLoaderService }, { token: i0.ViewContainerRef, optional: true }, { token: i2.DialogRef, optional: true }, { token: MAT_DIALOG_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
332
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
332
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: LazyLoaderComponent, isStandalone: true, selector: "ngx-lazy-loader", inputs: { id: ["component", "id"], group: "group", inputs: "inputs", outputs: "outputs" }, outputs: { componentLoadError: "componentLoadError", componentLoaded: "componentLoaded" }, viewQueries: [{ propertyName: "targetContainer", first: true, predicate: ["content"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<ng-container #content></ng-container>\n\n@if (renderSpinner) {\n <div\n class=\"ngx-lazy-loader-distractor\"\n [class.destroying]=\"isClearingLoader\"\n >\n @if (config.loaderDistractorComponent) {\n <ng-container\n [ngComponentOutlet]=\"config.loaderDistractorComponent\"\n />\n }\n @if (config.loaderDistractorTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"config.loaderDistractorTemplate\"\n [ngTemplateOutletContext]=\"{ '$implicit': inputs }\"\n />\n }\n </div>\n}\n", styles: [":host{display:contents;contain:content;z-index:1;position:relative}.ngx-lazy-loader-distractor{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;background-color:var(--background-color, #212121);opacity:1;transition:opacity .3s ease;z-index:999999;animation:fade-in .3s ease}.ngx-lazy-loader-distractor.destroying{opacity:0;pointer-events:none}@keyframes fade-in{0%{opacity:0;pointer-events:none}to{opacity:1;pointer-events:all}}\n"], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
333
333
|
}
|
|
334
334
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: LazyLoaderComponent, decorators: [{
|
|
335
335
|
type: Component,
|
|
336
|
-
args: [{ selector: 'ngx-lazy-loader', imports: [
|
|
336
|
+
args: [{ selector: 'ngx-lazy-loader', imports: [NgComponentOutlet, NgTemplateOutlet], standalone: true, template: "<ng-container #content></ng-container>\n\n@if (renderSpinner) {\n <div\n class=\"ngx-lazy-loader-distractor\"\n [class.destroying]=\"isClearingLoader\"\n >\n @if (config.loaderDistractorComponent) {\n <ng-container\n [ngComponentOutlet]=\"config.loaderDistractorComponent\"\n />\n }\n @if (config.loaderDistractorTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"config.loaderDistractorTemplate\"\n [ngTemplateOutletContext]=\"{ '$implicit': inputs }\"\n />\n }\n </div>\n}\n", styles: [":host{display:contents;contain:content;z-index:1;position:relative}.ngx-lazy-loader-distractor{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;background-color:var(--background-color, #212121);opacity:1;transition:opacity .3s ease;z-index:999999;animation:fade-in .3s ease}.ngx-lazy-loader-distractor.destroying{opacity:0;pointer-events:none}@keyframes fade-in{0%{opacity:0;pointer-events:none}to{opacity:1;pointer-events:all}}\n"] }]
|
|
337
337
|
}], ctorParameters: () => [{ type: i1.LazyLoaderService }, { type: i0.ViewContainerRef, decorators: [{
|
|
338
338
|
type: Optional
|
|
339
339
|
}] }, { type: i2.DialogRef, decorators: [{
|
|
@@ -363,4 +363,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
363
363
|
}], componentLoaded: [{
|
|
364
364
|
type: Output
|
|
365
365
|
}] } });
|
|
366
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1sb2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9jb21wb25lbnRzL2xhenktbG9hZGVyL2xhenktbG9hZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvY29tcG9uZW50cy9sYXp5LWxvYWRlci9sYXp5LWxvYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBZ0IsWUFBWSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQW1DLE1BQU0sZUFBZSxDQUFDO0FBQ2hMLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxHQUFHLE1BQU0sMEJBQTBCLENBQUM7QUFFNUQsT0FBTyxFQUFtQixZQUFZLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7QUFXM0MsTUFBTSxPQUFPLG1CQUFtQjtJQWdCNUI7O09BRUc7SUFDSCxJQUF3QixFQUFFLENBQUMsSUFBWTtRQUNuQyxNQUFNLEVBQUUsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFOUIsMERBQTBEO1FBQzFELGlFQUFpRTtRQUNqRSxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FB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RXJFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs4R0E5YlEsbUJBQW1CLDRJQW1OSixlQUFlO2tHQW5OOUIsbUJBQW1CLHdWQUNFLGdCQUFnQiw2QkNsQmxELGtmQVVBLDhoQkRJZSxJQUFJLDZGQUFFLGlCQUFpQixvUEFBRSxnQkFBZ0I7OzJGQUczQyxtQkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0ksaUJBQWlCLFdBR2xCLENBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixDQUFFLGNBQzFDLElBQUk7OzBCQW1OWCxRQUFROzswQkFDUixRQUFROzswQkFDUixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWU7eUNBbE5XLGVBQWU7c0JBQWhFLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQWtCeEIsRUFBRTtzQkFBekIsS0FBSzt1QkFBQyxXQUFXO2dCQWdCRSxLQUFLO3NCQUF4QixLQUFLO3VCQUFDLE9BQU87Z0JBcUNPLE1BQU07c0JBQTFCLEtBQUs7dUJBQUMsUUFBUTtnQkF3Q08sT0FBTztzQkFBNUIsS0FBSzt1QkFBQyxTQUFTO2dCQXVCTixrQkFBa0I7c0JBQTNCLE1BQU07Z0JBU0csZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElucHV0LCBWaWV3Q29udGFpbmVyUmVmLCBpc0Rldk1vZGUsIENvbXBvbmVudFJlZiwgRXZlbnRFbWl0dGVyLCBPcHRpb25hbCwgVmlld0NoaWxkLCBDb21wb25lbnQsIEluamVjdCwgT3V0cHV0LCBOZ01vZHVsZSwgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0NvbXBvbmVudE91dGxldCwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kaWFsb2cnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTGF6eUxvYWRlclNlcnZpY2UgfSBmcm9tICcuL2xhenktbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgc3RyaW5nVG9TbHVnIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgQ29tcGlsZWRCdW5kbGUsIE5neExhenlMb2FkZXJDb25maWcgfSBmcm9tICcuL3R5cGVzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25neC1sYXp5LWxvYWRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2xhenktbG9hZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsgJy4vbGF6eS1sb2FkZXIuY29tcG9uZW50LnNjc3MnIF0sXG4gICAgaW1wb3J0czogWyBOZ0lmLCBOZ0NvbXBvbmVudE91dGxldCwgTmdUZW1wbGF0ZU91dGxldCBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTGF6eUxvYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIEBWaWV3Q2hpbGQoXCJjb250ZW50XCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSB0YXJnZXRDb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgICAvKipcbiAgICAgKiAhIEhlcmUgYmUgZHJhZ29ucy5cbiAgICAgKiBPbmx5IHRoZSBicmF2ZXN0IG9mIEFkdmVudHVyZXJzIGNhbiBzdXJ2aXZlIHRoZSBiYXR0bGVzIGJlbG93LFxuICAgICAqIGFuZCB0aGV5IG11c3QgYmUgdHJhaW5lZCBhbmQgcmVhZHkgZm9yIHRoZSBncnVlbGxpbmcgam91cm5leSBhaGVhZC5cbiAgICAgKiBNYW55IGEgc291bCBoYXMgdHJpZWQgdG8gYmVzdCB0aGVzZSBEcmFnb25zLCB5ZXQgb25seSBvbmUgaGFzXG4gICAgICogc3VjY2VlZGVkIHNpbmNlIG91ciBmb3VuZGluZy5cbiAgICAgKlxuICAgICAqIFRMO0RSIC0tIERvbid0IG1lc3Mgd2l0aCB0aGlzIHVubGVzcyB5b3Uga25vdyB3aGF0IHlvdSdyZSBkb2luZy5cbiAgICAgKiAgICAgVGhpcyBpcyBjZW50cmFsIHRvIGEgdG9uIG9mIG1vdmluZyBwYXJ0cyAtLSBicmVha2luZyBpdCB3aWxsXG4gICAgICogICAgIGNhdXNlIG1vcmUgY29sbGF0ZXJhbCBkYW1hZ2UgdGhhbiB5b3UgbWF5IHJlYWxpemUuXG4gICAgICovXG5cbiAgICBwcml2YXRlIF9pZDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRoZSBpZCBvZiB0aGUgY29tcG9uZW50IHRoYXQgd2lsbCBiZSBsYXp5IGxvYWRlZFxuICAgICAqL1xuICAgIEBJbnB1dChcImNvbXBvbmVudFwiKSBzZXQgaWQoZGF0YTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGlkID0gc3RyaW5nVG9TbHVnKGRhdGEpO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIHRoZXJlIGlzIGEgY2hhbmdlIHRvIHRoZSBsb2FkZWQgY29tcG9uZW50J3MgaWRcbiAgICAgICAgLy8gaWYgaXQncyB1cGRhdGVkLCB3ZSBkZXN0cm95IGFuZCByZWh5ZHJhdGUgdGhlIGVudGlyZSBjb250YWluZXJcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQgJiYgdGhpcy5faWQgIT0gaWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2lkID0gaWQ7XG4gICAgICAgICAgICB0aGlzLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faWQgPSBpZDtcbiAgICAgICAgfVxuICAgIH07XG5cblxuICAgIHByaXZhdGUgX2dyb3VwID0gXCJkZWZhdWx0XCI7XG4gICAgQElucHV0KFwiZ3JvdXBcIikgc2V0IGdyb3VwKGRhdGE6IHN0cmluZykge1xuICAgICAgICBjb25zdCBncm91cCA9IHN0cmluZ1RvU2x1ZyhkYXRhKTtcblxuICAgICAgICBpZiAodHlwZW9mIGdyb3VwICE9IFwic3RyaW5nXCIgfHwgIWdyb3VwKSByZXR1cm47XG5cbiAgICAgICAgLy8gSWYgdGhlIGdyb3VwIHdhcyB1cGRhdGVkLCByZXRyeSB0byBib290c3RyYXAgc29tZXRoaW5nIGludG8gdGhlIGNvbnRhaW5lci5cbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQgJiYgdGhpcy5fZ3JvdXAgIT0gZ3JvdXApIHtcbiAgICAgICAgICAgIHRoaXMuX2dyb3VwID0gZ3JvdXA7XG5cbiAgICAgICAgICAgIHRoaXMubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9ncm91cCA9IGdyb3VwO1xuICAgIH1cbiAgICBnZXQgZ3JvdXAoKSB7IHJldHVybiB0aGlzLl9ncm91cCB9XG5cbiAgICBwcml2YXRlIF9tYXRjaEdyb3VwczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICBwcml2YXRlIF9pbnB1dHM6IHsgW2tleTogc3RyaW5nXTogYW55OyB9O1xuICAgIC8qKlxuICAgICAqIEEgbWFwIG9mIGlucHV0cyB0byBiaW5kIHRvIHRoZSBjaGlsZC5cbiAgICAgKiBTdXBwb3J0cyBjaGFuZ2UgZGV0ZWN0aW9uLiAoTWF5IGZhaWwgb24gZGVlcCBKU09OIGNoYW5nZXMpXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGxhenktbG9hZGVyIGNvbXBvbmVudD1cIk15TGF6eUNvbXBvbmVudFwiXG4gICAgICogICAgICAgW2lucHV0c109XCJ7XG4gICAgICogICAgICAgICAgcHJvcDE6IHRydWUsXG4gICAgICogICAgICAgICAgcHJvcDI6IGZhbHNlLFxuICAgICAqICAgICAgICAgIGNvbXBsZXg6IHtcbiAgICAgKiAgICAgICAgICAgICAgYTogdHJ1ZSxcbiAgICAgKiAgICAgICAgICAgICAgYjogMFxuICAgICAqICAgICAgICAgIH1cbiAgICAgKiAgICAgICB9XCJcbiAgICAgKiA+XG4gICAgICogPC9sYXp5LWxvYWRlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoXCJpbnB1dHNcIikgc2V0IGlucHV0cyhkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueTsgfSkge1xuICAgICAgICBpZiAoZGF0YSA9PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgICAgICBsZXQgcHJldmlvdXMgPSB0aGlzLl9pbnB1dHM7XG4gICAgICAgIHRoaXMuX2lucHV0cyA9IGRhdGE7XG4gICAgICAgIGlmIChkYXRhID09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIGNvbnNvbGUudHJhY2UoZGF0YSk7XG5cbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0Q29tcG9uZW50RmFjdG9yeSkge1xuICAgICAgICAgICAgY29uc3QgeyBpbnB1dHMgfSA9IHRoaXMudGFyZ2V0Q29tcG9uZW50RmFjdG9yeS7JtWNtcDtcblxuICAgICAgICAgICAgY29uc3QgY3VycmVudEtleXMgPSBPYmplY3Qua2V5cyhpbnB1dHMpO1xuXG4gICAgICAgICAgICBjb25zdCBvbGRLZXlzID0gT2JqZWN0LmtleXMocHJldmlvdXMpLmZpbHRlcihrZXkgPT4gY3VycmVudEtleXMuaW5jbHVkZXMoa2V5KSk7XG4gICAgICAgICAgICBjb25zdCBuZXdLZXlzID0gT2JqZWN0LmtleXMoZGF0YSkuZmlsdGVyKGtleSA9PiBjdXJyZW50S2V5cy5pbmNsdWRlcyhrZXkpKTtcblxuICAgICAgICAgICAgY29uc3QgcmVtb3ZlZCA9IG9sZEtleXMuZmlsdGVyKGtleSA9PiAhbmV3S2V5cy5pbmNsdWRlcyhrZXkpKTtcblxuICAgICAgICAgICAgLy8gPyBwZXJoYXBzIHNldCB0byBudWxsIG9yIHVuZGVmaW5lZCBpbnN0ZWFkXG4gICAgICAgICAgICByZW1vdmVkLmZvckVhY2goayA9PiB0aGlzLnRhcmdldENvbXBvbmVudEluc3RhbmNlW2tdID0gbnVsbCk7XG5cbiAgICAgICAgICAgIHRoaXMuYmluZElucHV0cygpO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBwcml2YXRlIG91dHB1dFN1YnNjcmlwdGlvbnM6IHsgW2tleTogc3RyaW5nXTogU3Vic2NyaXB0aW9uOyB9ID0ge307XG4gICAgcHJpdmF0ZSBfb3V0cHV0czogeyBba2V5OiBzdHJpbmddOiBGdW5jdGlvbjsgfTtcbiAgICAvKipcbiAgICAgKiBBIG1hcCBvZiBvdXRwdXRzIHRvIGJpbmQgZnJvbSB0aGUgY2hpbGQuXG4gICAgICogU2hvdWxkIHN1cHBvcnQgY2hhbmdlIGRldGVjdGlvbi5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGxhenktbG9hZGVyIGNvbXBvbmVudD1cIk15TGF6eUNvbXBvbmVudFwiXG4gICAgICogICAgICAgW291dHB1dHNdPVwie1xuICAgICAqICAgICAgICAgICBwcm9wMzogb25PdXRwdXRGaXJlXG4gICAgICogICAgICAgfVwiXG4gICAgICogPlxuICAgICAqIDwvbGF6eS1sb2FkZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KFwib3V0cHV0c1wiKSBzZXQgb3V0cHV0cyhkYXRhOiB7IFtrZXk6IHN0cmluZ106IEZ1bmN0aW9uOyB9KSB7XG4gICAgICAgIGxldCBwcmV2aW91cyA9IHRoaXMuX291dHB1dHM7XG4gICAgICAgIHRoaXMuX291dHB1dHMgPSBkYXRhO1xuXG4gICAgICAgIGlmICh0aGlzLnRhcmdldENvbXBvbmVudEZhY3RvcnkpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgaW5wdXRzIH0gPSB0aGlzLnRhcmdldENvbXBvbmVudEZhY3RvcnkuybVjbXA7XG5cbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRLZXlzID0gT2JqZWN0LmtleXMoaW5wdXRzKTtcbiAgICAgICAgICAgIGNvbnN0IHJlbW92ZWQgPSBPYmplY3Qua2V5cyhwcmV2aW91cykuZmlsdGVyKGtleSA9PiAhY3VycmVudEtleXMuaW5jbHVkZXMoa2V5KSk7XG5cbiAgICAgICAgICAgIHJlbW92ZWQuZm9yRWFjaChrID0+IHtcbiAgICAgICAgICAgICAgICAvLyBVbnN1YnNjcmliZSBmcm9tIG9ic2VydmFibGVcbiAgICAgICAgICAgICAgICB0aGlzLm91dHB1dFN1YnNjcmlwdGlvbnNba10/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMudGFyZ2V0Q29tcG9uZW50SW5zdGFuY2Vba107XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5iaW5kT3V0cHV0cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW1pdHMgZXJyb3JzIGVuY291bnRlcmVkIHdoZW4gbG9hZGluZyBjb21wb25lbnRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIGNvbXBvbmVudExvYWRFcnJvciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBmdWxseSBjb25zdHJ1Y3RlZFxuICAgICAqIGFuZCBoYWQgaXQncyBpbnB1dHMgYW5kIG91dHB1dHMgYm91bmRcbiAgICAgKiA+IGJlZm9yZSBgT25Jbml0YFxuICAgICAqXG4gICAgICogUmV0dXJucyB0aGUgYWN0aXZlIGNsYXNzIGluc3RhbmNlIG9mIHRoZSBsYXp5LWxvYWRlZCBjb21wb25lbnRcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgY29tcG9uZW50TG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBjb21wb25lbnQgdGhhdCBpcyBjdXJyZW50bHkgbG9hZGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBpbnN0YW5jZTogYW55O1xuXG5cbiAgICAvKipcbiAgICAgKiBDb250YWluZXIgdGhhdCBwcm92aWRlcyB0aGUgY29tcG9uZW50IGRhdGFcbiAgICAgKi9cbiAgICBwcml2YXRlIHRhcmdldE1vZHVsZTogQ29tcGlsZWRCdW5kbGU7XG5cbiAgICAvKipcbiAgICAgKiBDb21wb25lbnQgZGVmaW5pdGlvblxuICAgICAqL1xuICAgIHByaXZhdGUgdGFyZ2V0Q29tcG9uZW50RmFjdG9yeTogYW55O1xuXG4gICAgLyoqXG4gICAgICogQWN0aXZlIGNvbXBvbmVudCBjb250YWluZXIgcmVmZXJlbmNlXG4gICAgICovXG4gICAgcHJpdmF0ZSB0YXJnZXRDb21wb25lbnRDb250YWluZXJSZWY6IENvbXBvbmVudFJlZjxhbnk+O1xuICAgIHByaXZhdGUgdGFyZ2V0UmVmOiBhbnk7XG4gICAgLyoqXG4gICAgICogUmVmZXJlbmNlIHRvIHRoZSBjb21wb25lbnQgY2xhc3MgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBwcml2YXRlIHRhcmdldENvbXBvbmVudEluc3RhbmNlOiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBTdWJzY3JpcHRpb24gd2l0aCB0cnVlL2ZhbHNlIHN0YXRlIG9uIHdoZXRoZXIgdGhlIGRpc3RyYWN0b3Igc2hvdWxkIGJlXG4gICAgICovXG4gICAgcHJpdmF0ZSBkaXN0cmFjdG9yU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBwdWJsaWMgY29uZmlnOiBOZ3hMYXp5TG9hZGVyQ29uZmlnO1xuICAgIHByaXZhdGUgZXJyO1xuICAgIHByaXZhdGUgd2FybjtcbiAgICBwcml2YXRlIGxvZztcblxuICAgIC8vIEZvcmNlIDUwMG1zIGRlbGF5IGJlZm9yZSByZXZlYWxpbmcgdGhlIHNwaW5uZXJcbiAgICBwcml2YXRlIGNsZWFyRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBwcml2YXRlIGNsZWFyTG9hZGVyJCA9IHRoaXMuY2xlYXJFbWl0dGVyLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpO1xuXG4gICAgcHJpdmF0ZSBzaG93RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBwcml2YXRlIHNob3dMb2FkZXIkID0gdGhpcy5zaG93RW1pdHRlci5waXBlKGRlYm91bmNlVGltZSgxKSk7XG5cbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBbXG4gICAgICAgIHRoaXMuY2xlYXJMb2FkZXIkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzQ2xlYXJpbmdMb2FkZXIgPSB0cnVlO1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlclNwaW5uZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sIDMwMClcbiAgICAgICAgfSksXG4gICAgICAgIHRoaXMuc2hvd0xvYWRlciQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNDbGVhcmluZ0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJTcGlubmVyID0gdHJ1ZTtcbiAgICAgICAgfSlcbiAgICBdO1xuXG4gICAgcHVibGljIHJlbmRlclNwaW5uZXIgPSB0cnVlOyAvLyB3aGV0aGVyIHdlIHJlbmRlciB0aGUgRE9NIGZvciB0aGUgc3Bpbm5lclxuICAgIHB1YmxpYyBpc0NsZWFyaW5nTG9hZGVyID0gZmFsc2U7IC8vIHNob3VsZCB0aGUgc3Bpbm5lciBzdGFydCBmYWRpbmcgb3V0XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBzZXJ2aWNlOiBMYXp5TG9hZGVyU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBwdWJsaWMgZGlhbG9nOiBEaWFsb2dSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGlhbG9nQXJndW1lbnRzXG4gICAgKSB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gTGF6eUxvYWRlclNlcnZpY2UuY29uZmlnO1xuICAgICAgICB0aGlzLmVyciA9IExhenlMb2FkZXJTZXJ2aWNlLmNvbmZpZy5sb2dnZXIuZXJyO1xuICAgICAgICB0aGlzLndhcm4gPSBMYXp5TG9hZGVyU2VydmljZS5jb25maWcubG9nZ2VyLndhcm47XG4gICAgICAgIHRoaXMubG9nID0gTGF6eUxvYWRlclNlcnZpY2UuY29uZmlnLmxvZ2dlci5sb2c7XG5cbiAgICAgICAgLy8gRmlyc3QsIGNoZWNrIGZvciBkaWFsb2cgYXJndW1lbnRzXG4gICAgICAgIGlmICh0aGlzLmRpYWxvZ0FyZ3VtZW50cykge1xuICAgICAgICAgICAgdGhpcy5pbnB1dHMgPSB0aGlzLmRpYWxvZ0FyZ3VtZW50cy5pbnB1dHMgfHwgdGhpcy5kaWFsb2dBcmd1bWVudHMuZGF0YTtcbiAgICAgICAgICAgIHRoaXMub3V0cHV0cyA9IHRoaXMuZGlhbG9nQXJndW1lbnRzLm91dHB1dHM7XG4gICAgICAgICAgICB0aGlzLmlkID0gdGhpcy5kaWFsb2dBcmd1bWVudHMuaWQ7XG4gICAgICAgICAgICB0aGlzLmdyb3VwID0gdGhpcy5kaWFsb2dBcmd1bWVudHMuZ3JvdXA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgYXN5bmMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLm5nT25EZXN0cm95KGZhbHNlKTtcbiAgICAgICAgdGhpcy5pc0NsZWFyaW5nTG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVuZGVyU3Bpbm5lciA9IHRydWU7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgIGlmICghdGhpcy5faWQpIHtcbiAgICAgICAgICAgIHRoaXMud2FybihcIk5vIGNvbXBvbmVudCB3YXMgc3BlY2lmaWVkIVwiKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgX2VudHJ5ID0gdGhpcy5zZXJ2aWNlLnJlc29sdmVSZWdpc3RyYXRpb25FbnRyeSh0aGlzLl9pZCwgdGhpcy5fZ3JvdXApO1xuICAgICAgICAgICAgaWYgKCFfZW50cnkgfHwgIV9lbnRyeS5lbnRyeSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyKGBGYWlsZWQgdG8gZmluZCBDb21wb25lbnQgJyR7dGhpcy5faWR9JyBpbiBncm91cCAnJHt0aGlzLl9ncm91cH0nIGluIHJlZ2lzdHJ5IWApO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHsgZW50cnksIG1hdGNoR3JvdXBzIH0gPSBfZW50cnk7XG4gICAgICAgICAgICB0aGlzLl9tYXRjaEdyb3VwcyA9IG1hdGNoR3JvdXBzO1xuXG4gICAgICAgICAgICAvLyBEb3dubG9hZCB0aGUgXCJtb2R1bGVcIiAodGhlIHN0YW5kYWxvbmUgY29tcG9uZW50KVxuICAgICAgICAgICAgY29uc3QgYnVuZGxlOiBDb21waWxlZEJ1bmRsZSA9IHRoaXMudGFyZ2V0TW9kdWxlID0gYXdhaXQgZW50cnkubG9hZCgpO1xuXG5cbiAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZXJlIGlzIHNvbWUgY29ycnVwdGlvbiBvbiB0aGUgYnVuZGxlLlxuICAgICAgICAgICAgaWYgKCFidW5kbGUgfHwgdHlwZW9mIGJ1bmRsZSAhPSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyKGBGYWlsZWQgdG8gbG9hZCBjb21wb25lbnQvbW9kdWxlIGZvciAnJHt0aGlzLl9pZH0nISBQYXJzZWQgcmVzb3VyY2UgaXMgaW52YWxpZC5gKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkRXJyb3IoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbW9kdWxlcyA9IE9iamVjdC5rZXlzKGJ1bmRsZSlcbiAgICAgICAgICAgICAgICAubWFwKGsgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbnRyeSA9IGJ1bmRsZVtrXTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBTdHJpY3RseSBjaGVjayBmb3IgZXhwb3J0ZWQgbW9kdWxlcyBvciBzdGFuZGFsb25lIGNvbXBvbmVudHNcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBlbnRyeSA9PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIGVudHJ5W1wiybVmYWNcIl0gPT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoZSA9PiBlICE9IG51bGwpXG4gICAgICAgICAgICAgICAgLmZpbHRlcihlbnRyeSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGVudHJ5WydfaXNNb2R1bGUnXSA9ICEhZW50cnlbJ8m1bW9kJ107IC8vIG1vZHVsZVxuICAgICAgICAgICAgICAgICAgICBlbnRyeVsnX2lzQ29tcG9uZW50J10gPSAhIWVudHJ5WyfJtWNtcCddOyAvLyBjb21wb25lbnRcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGVudHJ5WydfaXNNb2R1bGUnXSB8fCBlbnRyeVsnX2lzQ29tcG9uZW50J10pO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAobW9kdWxlcy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyKGBDb21wb25lbnQvTW9kdWxlIGxvYWRlZCBmb3IgJyR7dGhpcy5faWR9JyBoYXMgbm8gZXhwb3J0ZWQgY29tcG9uZW50cyBvciBtb2R1bGVzIWApO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRFcnJvcigpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLnRhcmdldENvbXBvbmVudEZhY3RvcnkgPSB0aGlzLnNlcnZpY2UucmVzb2x2ZUNvbXBvbmVudCh0aGlzLl9pZCwgXCJkZWZhdWx0XCIsIG1vZHVsZXMpO1xuXG4gICAgICAgICAgICBpZiAoIWNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyKGBDb21wb25lbnQgJyR7dGhpcy5faWR9JyBpcyBpbnZhbGlkIG9yIGNvcnJ1cHRlZCFgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkRXJyb3IoKTtcbiAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAvLyBCb290c3RyYXAgdGhlIGNvbXBvbmVudCBpbnRvIHRoZSBjb250YWluZXJcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMudGFyZ2V0Q29tcG9uZW50Q29udGFpbmVyUmVmID0gdGhpcy50YXJnZXRDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCBhcyBhbnkpO1xuICAgICAgICAgICAgdGhpcy50YXJnZXRSZWYgPSB0aGlzLnRhcmdldENvbnRhaW5lci5pbnNlcnQodGhpcy50YXJnZXRDb21wb25lbnRDb250YWluZXJSZWYuaG9zdFZpZXcpO1xuXG4gICAgICAgICAgICBjb25zdCBpbnN0YW5jZTogYW55ID0gdGhpcy50YXJnZXRDb21wb25lbnRJbnN0YW5jZSA9IGNvbXBvbmVudFJlZlsnaW5zdGFuY2UnXTtcblxuICAgICAgICAgICAgdGhpcy5iaW5kSW5wdXRzKCk7XG4gICAgICAgICAgICB0aGlzLmJpbmRPdXRwdXRzKCk7XG5cbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50TG9hZGVkLm5leHQoaW5zdGFuY2UpO1xuICAgICAgICAgICAgdGhpcy5pbnN0YW5jZSA9IGluc3RhbmNlO1xuXG4gICAgICAgICAgICAvLyBMb29rIGZvciBhbiBvYnNlcnZhYmxlIGNhbGxlZCBpc0xvYWRpbmckIHRoYXQgd2lsbCBtYWtlIHVzIHNob3cvaGlkZVxuICAgICAgICAgICAgLy8gdGhlIHNhbWUgZGlzdHJhY3RvciB0aGF0IGlzIHVzZWQgb24gYmFzaWMgbG9hZGluZ1xuICAgICAgICAgICAgY29uc3QgaXNMb2FkaW5nJCA9IGluc3RhbmNlWyduZ3hTaG93RGlzdHJhY3RvciQnXSBhcyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XG5cbiAgICAgICAgICAgIGlmIChpc0xvYWRpbmckICYmIHR5cGVvZiBpc0xvYWRpbmckLnN1YnNjcmliZSA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3RyYWN0b3JTdWJzY3JpcHRpb24gPSBpc0xvYWRpbmckLnN1YnNjcmliZShsb2FkaW5nID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZyA/IHRoaXMuc2hvd0VtaXR0ZXIuZW1pdCgpIDogdGhpcy5jbGVhckVtaXR0ZXIuZW1pdCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhckVtaXR0ZXIuZW1pdCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBuYW1lID0gT2JqZWN0LmtleXMoYnVuZGxlKVswXTtcbiAgICAgICAgICAgIHRoaXMubG9nKGBMb2FkZWQgJyR7bmFtZX0nYCk7XG4gICAgICAgICAgICB0aGlzLmNsZWFyRW1pdHRlci5lbWl0KCk7XG5cbiAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRSZWY7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGV4KSB7XG5cbiAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkNvbXBvbmVudCBEREQgXCIgKyB0aGlzLl9pZCArIFwiIHRocmV3IGFuIGVycm9yIG9uIG1vdW50IVwiKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJUaGlzIHdpbGwgY2F1c2UgeW91IHRvIHNlZSBhIDQwNCBwYW5lbC5cIik7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihleCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE5ldHdvcmsgZXJyb3JzIHRocm93IGEgdG9hc3QgYW5kIHJldHVybiBhbiBlcnJvciBjb21wb25lbnRcbiAgICAgICAgICAgIGlmIChleCAmJiAhaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiVW5jYXVnaHQgZXJyb3Igd2hlbiBsb2FkaW5nIGNvbXBvbmVudFwiKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBleDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KGNsZWFyQWxsID0gdHJ1ZSkge1xuICAgICAgICAvLyB1bnN1YnNjcmliZSBmcm9tIGFsbCBzdWJzY3JpcHRpb25zXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMub3V0cHV0U3Vic2NyaXB0aW9ucykuZm9yRWFjaCgoW2tleSwgc3ViXSkgPT4ge1xuICAgICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm91dHB1dFN1YnNjcmlwdGlvbnMgPSB7fTtcblxuICAgICAgICAvLyBDbGVhciBhbGwgdGhpbmdzXG4gICAgICAgIGlmIChjbGVhckFsbCkge1xuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXModGhpcy5zdWJzY3JpcHRpb25zKS5mb3JFYWNoKChba2V5LCBzdWJdKSA9PiB7XG4gICAgICAgICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGlzdHJhY3RvclN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcblxuICAgICAgICAvLyBDbGVhciB0YXJnZXQgY29udGFpbmVyXG4gICAgICAgIHRoaXMudGFyZ2V0UmVmPy5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMudGFyZ2V0Q29tcG9uZW50Q29udGFpbmVyUmVmPy5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMudGFyZ2V0Q29udGFpbmVyPy5jbGVhcigpO1xuXG4gICAgICAgIC8vIFdpcGUgdGhlIHJlc3Qgb2YgdGhlIHN0YXRlIGNsZWFuXG4gICAgICAgIHRoaXMudGFyZ2V0UmVmID0gbnVsbDtcbiAgICAgICAgdGhpcy50YXJnZXRDb21wb25lbnRDb250YWluZXJSZWYgPSBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJpbmQgdGhlIGlucHV0IHZhbHVlcyB0byB0aGUgY2hpbGQgY29tcG9uZW50LlxuICAgICAqL1xuICAgIHByaXZhdGUgYmluZElucHV0cygpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9pbnB1dHMgfHwgIXRoaXMudGFyZ2V0Q29tcG9uZW50SW5zdGFuY2UpIHJldHVybjtcblxuICAgICAgICAvLyBNZXJnZSBtYXRjaCBncm91cHNcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9tYXRjaEdyb3VwcyA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyh0aGlzLl9tYXRjaEdyb3VwcykuZm9yRWFjaCgoW2tleSwgdmFsXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5faW5wdXRzW2tleV0gPT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2lucHV0c1trZXldID0gdmFsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBmb3J3YXJkLWJpbmQgaW5wdXRzXG4gICAgICAgIGNvbnN0IHsgaW5wdXRzIH0gPSB0aGlzLnRhcmdldENvbXBvbmVudEZhY3RvcnkuybVjbXA7XG5cbiAgICAgICAgLy8gUmV0dXJucyBhIGxpc3Qgb2YgZW50cmllcyB0aGF0IG5lZWQgdG8gYmUgc2V0XG4gICAgICAgIC8vIFRoaXMgbWFrZXMgaXQgc28gdGhhdCB1bm5lY2Vzc2FyeSBzZXR0ZXJzIGFyZSBub3QgaW52b2tlZC5cbiAgICAgICAgY29uc3QgdXBkYXRlZCA9IE9iamVjdC5lbnRyaWVzKGlucHV0cykuZmlsdGVyKChbcGFyZW50S2V5LCBjaGlsZEtleV06IFtzdHJpbmcsIHN0cmluZ10pID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRhcmdldENvbXBvbmVudEluc3RhbmNlW2NoaWxkS2V5XSAhPSB0aGlzLl9pbnB1dHNbcGFyZW50S2V5XTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdXBkYXRlZC5mb3JFYWNoKChbcGFyZW50S2V5LCBjaGlsZEtleV06IFtzdHJpbmcsIHN0cmluZ10pID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pbnB1dHMuaGFzT3duUHJvcGVydHkocGFyZW50S2V5KSlcbiAgICAgICAgICAgICAgICB0aGlzLnRhcmdldENvbXBvbmVudEluc3RhbmNlW2NoaWxkS2V5XSA9IHRoaXMuX2lucHV0c1twYXJlbnRLZXldO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCaW5kIHRoZSBvdXRwdXQgaGFuZGxlcnMgdG8gdGhlIGxvYWRlZCBjaGlsZCBjb21wb25lbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIGJpbmRPdXRwdXRzKCkge1xuICAgICAgICBpZiAoIXRoaXMuX291dHB1dHMgfHwgIXRoaXMudGFyZ2V0Q29tcG9uZW50SW5zdGFuY2UpIHJldHVybjtcblxuICAgICAgICBjb25zdCB7IG91dHB1dHMgfSA9IHRoaXMudGFyZ2V0Q29tcG9uZW50RmFjdG9yeS7JtWNtcDtcblxuICAgICAgICAvLyBHZXQgYSBsaXN0IG9mIHVucmVnaXN0ZXJlZCBvdXRwdXRzXG4gICAgICAgIGNvbnN0IG5ld091dHB1dHMgPSBPYmplY3QuZW50cmllcyhvdXRwdXRzKS5maWx0ZXIoKFtwYXJlbnRLZXksIGNoaWxkS2V5XTogW3N0cmluZywgc3RyaW5nXSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICF0aGlzLm91dHB1dFN1YnNjcmlwdGlvbnNbcGFyZW50S2V5XTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gUmV2ZXJzZSBiaW5kIHZpYSBzdWJzY3JpcHRpb25cbiAgICAgICAgbmV3T3V0cHV0cy5mb3JFYWNoKChbcGFyZW50S2V5LCBjaGlsZEtleV06IFtzdHJpbmcsIHN0cmluZ10pID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9vdXRwdXRzLmhhc093blByb3BlcnR5KHBhcmVudEtleSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQ6IEV2ZW50RW1pdHRlcjx1bmtub3duPiA9IHRoaXMudGFyZ2V0Q29tcG9uZW50SW5zdGFuY2VbY2hpbGRLZXldO1xuICAgICAgICAgICAgICAgIGNvbnN0IG91dHB1dHMgPSB0aGlzLl9vdXRwdXRzO1xuXG4gICAgICAgICAgICAgICAgLy8gQW5ndWxhciBmb2xrcywgc3RvcCBtYWtpbmcgdGhpcyBzbyBkaWZmaWN1bHQuXG4gICAgICAgICAgICAgICAgY29uc3QgY3R4ID0gdGhpcy52aWV3Q29udGFpbmVyUmVmWydfaG9zdExWaWV3J11bOF07XG4gICAgICAgICAgICAgICAgY29uc3Qgc3ViID0gdGFyZ2V0LnN1YnNjcmliZShvdXRwdXRzW3BhcmVudEtleV0uYmluZChjdHgpKTsgLy8gU3Vic2NyaXB0aW9uXG5cbiAgICAgICAgICAgICAgICB0aGlzLm91dHB1dFN1YnNjcmlwdGlvbnNbcGFyZW50S2V5XSA9IHN1YjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTG9hZCB0aGUgXCJEZWZhdWx0XCIgY29tcG9uZW50ICg0MDQpIHNjcmVlbiBub3JtYWxseS5cbiAgICAgKiBUaGlzIGlzIHNob3duIHdoZW4gdGhlIGNvbXBvbmVudCBpZCBpc24ndCBpbiB0aGVcbiAgICAgKiByZWdpc3RyeSBvciBvdGhlcndpc2UgZG9lc24ndCBtYXRjaFxuICAgICAqXG4gICAgICogVGhpc1xuICAgICAqL1xuICAgIHByaXZhdGUgbG9hZERlZmF1bHQoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5ub3RGb3VuZENvbXBvbmVudClcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudCh0aGlzLmNvbmZpZy5ub3RGb3VuZENvbXBvbmVudCk7XG5cbiAgICAgICAgdGhpcy5jbGVhckVtaXR0ZXIuZW1pdCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExvYWQgdGhlIFwiRXJyb3JcIiBjb21wb25lbnQuXG4gICAgICogVGhpcyBpcyBzaG93biB3aGVuIHdlIGFyZSBhYmxlIHRvIHJlc29sdmUgdGhlIGNvbXBvbmVudFxuICAgICAqIGluIHRoZSByZWdpc3RyeSwgYnV0IGhhdmUgc29tZSBpc3N1ZSBib29zdHJhcHBpbmcgdGhlXG4gICAgICogY29tcG9uZW50IGludG8gdGhlIHZpZXdDb250YWluZXJcbiAgICAgKi9cbiAgICBwcml2YXRlIGxvYWRFcnJvcigpIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmVycm9yQ29tcG9uZW50KVxuICAgICAgICAgICAgdGhpcy50YXJnZXRDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KHRoaXMuY29uZmlnLmVycm9yQ29tcG9uZW50KTtcblxuICAgICAgICB0aGlzLmNsZWFyRW1pdHRlci5lbWl0KCk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAjY29udGVudD48L25nLWNvbnRhaW5lcj5cblxuPGRpdlxuICAgICpuZ0lmPVwicmVuZGVyU3Bpbm5lclwiXG4gICAgY2xhc3M9XCJuZ3gtbGF6eS1sb2FkZXItZGlzdHJhY3RvclwiXG4gICAgW2NsYXNzLmRlc3Ryb3lpbmddPVwiaXNDbGVhcmluZ0xvYWRlclwiXG4+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5sb2FkZXJEaXN0cmFjdG9yQ29tcG9uZW50XCIgW25nQ29tcG9uZW50T3V0bGV0XT1cImNvbmZpZy5sb2FkZXJEaXN0cmFjdG9yQ29tcG9uZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5sb2FkZXJEaXN0cmFjdG9yVGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjb25maWcubG9hZGVyRGlzdHJhY3RvclRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJyRpbXBsaWNpdCc6IGlucHV0cyB9XCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
|
|
366
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1sb2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9jb21wb25lbnRzL2xhenktbG9hZGVyL2xhenktbG9hZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvY29tcG9uZW50cy9sYXp5LWxvYWRlci9sYXp5LWxvYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBZ0IsWUFBWSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQW1DLE1BQU0sZUFBZSxDQUFDO0FBQ2hMLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEdBQUcsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RCxPQUFPLEVBQW1CLFlBQVksRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQzs7OztBQVczQyxNQUFNLE9BQU8sbUJBQW1CO0lBZ0I1Qjs7T0FFRztJQUNILElBQXdCLEVBQUUsQ0FBQyxJQUFZO1FBQ25DLE1BQU0sRUFBRSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU5QiwwREFBMEQ7UUFDMUQsaUVBQWlFO1FBQ2pFLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzNCLENB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QUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDOzhHQTliUSxtQkFBbUIsNElBbU5KLGVBQWU7a0dBbk45QixtQkFBbUIsd1ZBQ0UsZ0JBQWdCLDZCQ2xCbEQsMG1CQW9CQSw4aEJETmUsaUJBQWlCLG9QQUFFLGdCQUFnQjs7MkZBR3JDLG1CQUFtQjtrQkFQL0IsU0FBUzsrQkFDSSxpQkFBaUIsV0FHbEIsQ0FBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsQ0FBRSxjQUNwQyxJQUFJOzswQkFtTlgsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxlQUFlO3lDQWxOVyxlQUFlO3NCQUFoRSxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFrQnhCLEVBQUU7c0JBQXpCLEtBQUs7dUJBQUMsV0FBVztnQkFnQkUsS0FBSztzQkFBeEIsS0FBSzt1QkFBQyxPQUFPO2dCQXFDTyxNQUFNO3NCQUExQixLQUFLO3VCQUFDLFFBQVE7Z0JBd0NPLE9BQU87c0JBQTVCLEtBQUs7dUJBQUMsU0FBUztnQkF1Qk4sa0JBQWtCO3NCQUEzQixNQUFNO2dCQVNHLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnB1dCwgVmlld0NvbnRhaW5lclJlZiwgaXNEZXZNb2RlLCBDb21wb25lbnRSZWYsIEV2ZW50RW1pdHRlciwgT3B0aW9uYWwsIFZpZXdDaGlsZCwgQ29tcG9uZW50LCBJbmplY3QsIE91dHB1dCwgTmdNb2R1bGUsIEFmdGVyVmlld0luaXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDb21wb25lbnRPdXRsZXQsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBEaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvZGlhbG9nJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZGVib3VuY2VUaW1lLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExhenlMb2FkZXJTZXJ2aWNlIH0gZnJvbSAnLi9sYXp5LWxvYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IHN0cmluZ1RvU2x1ZyB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IENvbXBpbGVkQnVuZGxlLCBOZ3hMYXp5TG9hZGVyQ29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3gtbGF6eS1sb2FkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9sYXp5LWxvYWRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbICcuL2xhenktbG9hZGVyLmNvbXBvbmVudC5zY3NzJyBdLFxuICAgIGltcG9ydHM6IFsgTmdDb21wb25lbnRPdXRsZXQsIE5nVGVtcGxhdGVPdXRsZXQgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIExhenlMb2FkZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICBAVmlld0NoaWxkKFwiY29udGVudFwiLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgdGFyZ2V0Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gICAgLyoqXG4gICAgICogISBIZXJlIGJlIGRyYWdvbnMuXG4gICAgICogT25seSB0aGUgYnJhdmVzdCBvZiBBZHZlbnR1cmVycyBjYW4gc3Vydml2ZSB0aGUgYmF0dGxlcyBiZWxvdyxcbiAgICAgKiBhbmQgdGhleSBtdXN0IGJlIHRyYWluZWQgYW5kIHJlYWR5IGZvciB0aGUgZ3J1ZWxsaW5nIGpvdXJuZXkgYWhlYWQuXG4gICAgICogTWFueSBhIHNvdWwgaGFzIHRyaWVkIHRvIGJlc3QgdGhlc2UgRHJhZ29ucywgeWV0IG9ubHkgb25lIGhhc1xuICAgICAqIHN1Y2NlZWRlZCBzaW5jZSBvdXIgZm91bmRpbmcuXG4gICAgICpcbiAgICAgKiBUTDtEUiAtLSBEb24ndCBtZXNzIHdpdGggdGhpcyB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UncmUgZG9pbmcuXG4gICAgICogICAgIFRoaXMgaXMgY2VudHJhbCB0byBhIHRvbiBvZiBtb3ZpbmcgcGFydHMgLS0gYnJlYWtpbmcgaXQgd2lsbFxuICAgICAqICAgICBjYXVzZSBtb3JlIGNvbGxhdGVyYWwgZGFtYWdlIHRoYW4geW91IG1heSByZWFsaXplLlxuICAgICAqL1xuXG4gICAgcHJpdmF0ZSBfaWQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgaWQgb2YgdGhlIGNvbXBvbmVudCB0aGF0IHdpbGwgYmUgbGF6eSBsb2FkZWRcbiAgICAgKi9cbiAgICBASW5wdXQoXCJjb21wb25lbnRcIikgc2V0IGlkKGRhdGE6IHN0cmluZykge1xuICAgICAgICBjb25zdCBpZCA9IHN0cmluZ1RvU2x1ZyhkYXRhKTtcblxuICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBhIGNoYW5nZSB0byB0aGUgbG9hZGVkIGNvbXBvbmVudCdzIGlkXG4gICAgICAgIC8vIGlmIGl0J3MgdXBkYXRlZCwgd2UgZGVzdHJveSBhbmQgcmVoeWRyYXRlIHRoZSBlbnRpcmUgY29udGFpbmVyXG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkICYmIHRoaXMuX2lkICE9IGlkKSB7XG4gICAgICAgICAgICB0aGlzLl9pZCA9IGlkO1xuICAgICAgICAgICAgdGhpcy5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2lkID0gaWQ7XG4gICAgICAgIH1cbiAgICB9O1xuXG5cbiAgICBwcml2YXRlIF9ncm91cCA9IFwiZGVmYXVsdFwiO1xuICAgIEBJbnB1dChcImdyb3VwXCIpIHNldCBncm91cChkYXRhOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSBzdHJpbmdUb1NsdWcoZGF0YSk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBncm91cCAhPSBcInN0cmluZ1wiIHx8ICFncm91cCkgcmV0dXJuO1xuXG4gICAgICAgIC8vIElmIHRoZSBncm91cCB3YXMgdXBkYXRlZCwgcmV0cnkgdG8gYm9vdHN0cmFwIHNvbWV0aGluZyBpbnRvIHRoZSBjb250YWluZXIuXG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkICYmIHRoaXMuX2dyb3VwICE9IGdyb3VwKSB7XG4gICAgICAgICAgICB0aGlzLl9ncm91cCA9IGdyb3VwO1xuXG4gICAgICAgICAgICB0aGlzLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZ3JvdXAgPSBncm91cDtcbiAgICB9XG4gICAgZ2V0IGdyb3VwKCkgeyByZXR1cm4gdGhpcy5fZ3JvdXAgfVxuXG4gICAgcHJpdmF0ZSBfbWF0Y2hHcm91cHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgcHJpdmF0ZSBfaW5wdXRzOiB7IFtrZXk6IHN0cmluZ106IGFueTsgfTtcbiAgICAvKipcbiAgICAgKiBBIG1hcCBvZiBpbnB1dHMgdG8gYmluZCB0byB0aGUgY2hpbGQuXG4gICAgICogU3VwcG9ydHMgY2hhbmdlIGRldGVjdGlvbi4gKE1heSBmYWlsIG9uIGRlZXAgSlNPTiBjaGFuZ2VzKVxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxsYXp5LWxvYWRlciBjb21wb25lbnQ9XCJNeUxhenlDb21wb25lbnRcIlxuICAgICAqICAgICAgIFtpbnB1dHNdPVwie1xuICAgICAqICAgICAgICAgIHByb3AxOiB0cnVlLFxuICAgICAqICAgICAgICAgIHByb3AyOiBmYWxzZSxcbiAgICAgKiAgICAgICAgICBjb21wbGV4OiB7XG4gICAgICogICAgICAgICAgICAgIGE6IHRydWUsXG4gICAgICogICAgICAgICAgICAgIGI6IDBcbiAgICAgKiAgICAgICAgICB9XG4gICAgICogICAgICAgfVwiXG4gICAgICogPlxuICAgICAqIDwvbGF6eS1sb2FkZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KFwiaW5wdXRzXCIpIHNldCBpbnB1dHMoZGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnk7IH0pIHtcbiAgICAgICAgaWYgKGRhdGEgPT0gdW5kZWZpbmVkKSByZXR1cm47XG5cbiAgICAgICAgbGV0IHByZXZpb3VzID0gdGhpcy5faW5wdXRzO1xuICAgICAgICB0aGlzLl9pbnB1dHMgPSBkYXRhO1xuICAgICAgICBpZiAoZGF0YSA9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICBjb25zb2xlLnRyYWNlKGRhdGEpO1xuXG4gICAgICAgIGlmICh0aGlzLnRhcmdldENvbXBvbmVudEZhY3RvcnkpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgaW5wdXRzIH0gPSB0aGlzLnRhcmdldENvbXBvbmVudEZhY3RvcnkuybVjbXA7XG5cbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRLZXlzID0gT2JqZWN0LmtleXMoaW5wdXRzKTtcblxuICAgICAgICAgICAgY29uc3Qgb2xkS2V5cyA9IE9iamVjdC5rZXlzKHByZXZpb3VzKS5maWx0ZXIoa2V5ID0+IGN1cnJlbnRLZXlzLmluY2x1ZGVzKGtleSkpO1xuICAgICAgICAgICAgY29uc3QgbmV3S2V5cyA9IE9iamVjdC5rZXlzKGRhdGEpLmZpbHRlcihrZXkgPT4gY3VycmVudEtleXMuaW5jbHVkZXMoa2V5KSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHJlbW92ZWQgPSBvbGRLZXlzLmZpbHRlcihrZXkgPT4gIW5ld0tleXMuaW5jbHVkZXMoa2V5KSk7XG5cbiAgICAgICAgICAgIC8vID8gcGVyaGFwcyBzZXQgdG8gbnVsbCBvciB1bmRlZmluZWQgaW5zdGVhZFxuICAgICAgICAgICAgcmVtb3ZlZC5mb3JFYWNoKGsgPT4gdGhpcy50YXJnZXRDb21wb25lbnRJbnN0YW5jZVtrXSA9IG51bGwpO1xuXG4gICAgICAgICAgICB0aGlzLmJpbmRJbnB1dHMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgcHJpdmF0ZSBvdXRwdXRTdWJzY3JpcHRpb25zOiB7IFtrZXk6IHN0cmluZ106IFN1YnNjcmlwdGlvbjsgfSA9IHt9O1xuICAgIHByaXZhdGUgX291dHB1dHM6IHsgW2tleTogc3RyaW5nXTogRnVuY3Rpb247IH07XG4gICAgLyoqXG4gICAgICogQSBtYXAgb2Ygb3V0cHV0cyB0byBiaW5kIGZyb20gdGhlIGNoaWxkLlxuICAgICAqIFNob3VsZCBzdXBwb3J0IGNoYW5nZSBkZXRlY3Rpb24uXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxsYXp5LWxvYWRlciBjb21wb25lbnQ9XCJNeUxhenlDb21wb25lbnRcIlxuICAgICAqICAgICAgIFtvdXRwdXRzXT1cIntcbiAgICAgKiAgICAgICAgICAgcHJvcDM6IG9uT3V0cHV0RmlyZVxuICAgICAqICAgICAgIH1cIlxuICAgICAqID5cbiAgICAgKiA8L2xhenktbG9hZGVyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dChcIm91dHB1dHNcIikgc2V0IG91dHB1dHMoZGF0YTogeyBba2V5OiBzdHJpbmddOiBGdW5jdGlvbjsgfSkge1xuICAgICAgICBsZXQgcHJldmlvdXMgPSB0aGlzLl9vdXRwdXRzO1xuICAgICAgICB0aGlzLl9vdXRwdXRzID0gZGF0YTtcblxuICAgICAgICBpZiAodGhpcy50YXJnZXRDb21wb25lbnRGYWN0b3J5KSB7XG4gICAgICAgICAgICBjb25zdCB7IGlucHV0cyB9ID0gdGhpcy50YXJnZXRDb21wb25lbnRGYWN0b3J5Lsm1Y21wO1xuXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50S2V5cyA9IE9iamVjdC5rZXlzKGlucHV0cyk7XG4gICAgICAgICAgICBjb25zdCByZW1vdmVkID0gT2JqZWN0LmtleXMocHJldmlvdXMpLmZpbHRlcihrZXkgPT4gIWN1cnJlbnRLZXlzLmluY2x1ZGVzKGtleSkpO1xuXG4gICAgICAgICAgICByZW1vdmVkLmZvckVhY2goayA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVW5zdWJzY3JpYmUgZnJvbSBvYnNlcnZhYmxlXG4gICAgICAgICAgICAgICAgdGhpcy5vdXRwdXRTdWJzY3JpcHRpb25zW2tdPy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnRhcmdldENvbXBvbmVudEluc3RhbmNlW2tdO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuYmluZE91dHB1dHMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVtaXRzIGVycm9ycyBlbmNvdW50ZXJlZCB3aGVuIGxvYWRpbmcgY29tcG9uZW50c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBjb21wb25lbnRMb2FkRXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyB3aGVuIHRoZSBjb21wb25lbnQgaXMgZnVsbHkgY29uc3RydWN0ZWRcbiAgICAgKiBhbmQgaGFkIGl0J3MgaW5wdXRzIGFuZCBvdXRwdXRzIGJvdW5kXG4gICAgICogPiBiZWZvcmUgYE9uSW5pdGBcbiAgICAgKlxuICAgICAqIFJldHVybnMgdGhlIGFjdGl2ZSBjbGFzcyBpbnN0YW5jZSBvZiB0aGUgbGF6eS1sb2FkZWQgY29tcG9uZW50XG4gICAgICovXG4gICAgQE91dHB1dCgpIGNvbXBvbmVudExvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgY29tcG9uZW50IHRoYXQgaXMgY3VycmVudGx5IGxvYWRlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgaW5zdGFuY2U6IGFueTtcblxuXG4gICAgLyoqXG4gICAgICogQ29udGFpbmVyIHRoYXQgcHJvdmlkZXMgdGhlIGNvbXBvbmVudCBkYXRhXG4gICAgICovXG4gICAgcHJpdmF0ZSB0YXJnZXRNb2R1bGU6IENvbXBpbGVkQnVuZGxlO1xuXG4gICAgLyoqXG4gICAgICogQ29tcG9uZW50IGRlZmluaXRpb25cbiAgICAgKi9cbiAgICBwcml2YXRlIHRhcmdldENvbXBvbmVudEZhY3Rvcnk6IGFueTtcblxuICAgIC8qKlxuICAgICAqIEFjdGl2ZSBjb21wb25lbnQgY29udGFpbmVyIHJlZmVyZW5jZVxuICAgICAqL1xuICAgIHByaXZhdGUgdGFyZ2V0Q29tcG9uZW50Q29udGFpbmVyUmVmOiBDb21wb25lbnRSZWY8YW55PjtcbiAgICBwcml2YXRlIHRhcmdldFJlZjogYW55O1xuICAgIC8qKlxuICAgICAqIFJlZmVyZW5jZSB0byB0aGUgY29tcG9uZW50IGNsYXNzIGluc3RhbmNlXG4gICAgICovXG4gICAgcHJpdmF0ZSB0YXJnZXRDb21wb25lbnRJbnN0YW5jZTogYW55O1xuXG4gICAgLyoqXG4gICAgICogU3Vic2NyaXB0aW9uIHdpdGggdHJ1ZS9mYWxzZSBzdGF0ZSBvbiB3aGV0aGVyIHRoZSBkaXN0cmFjdG9yIHNob3VsZCBiZVxuICAgICAqL1xuICAgIHByaXZhdGUgZGlzdHJhY3RvclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgcHVibGljIGNvbmZpZzogTmd4TGF6eUxvYWRlckNvbmZpZztcbiAgICBwcml2YXRlIGVycjtcbiAgICBwcml2YXRlIHdhcm47XG4gICAgcHJpdmF0ZSBsb2c7XG5cbiAgICAvLyBGb3JjZSA1MDBtcyBkZWxheSBiZWZvcmUgcmV2ZWFsaW5nIHRoZSBzcGlubmVyXG4gICAgcHJpdmF0ZSBjbGVhckVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgcHJpdmF0ZSBjbGVhckxvYWRlciQgPSB0aGlzLmNsZWFyRW1pdHRlci5waXBlKGRlYm91bmNlVGltZSgzMDApKTtcblxuICAgIHByaXZhdGUgc2hvd0VtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgcHJpdmF0ZSBzaG93TG9hZGVyJCA9IHRoaXMuc2hvd0VtaXR0ZXIucGlwZShkZWJvdW5jZVRpbWUoMSkpO1xuXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zID0gW1xuICAgICAgICB0aGlzLmNsZWFyTG9hZGVyJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0NsZWFyaW5nTG9hZGVyID0gdHJ1ZTtcblxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJTcGlubmVyID0gZmFsc2U7XG4gICAgICAgICAgICB9LCAzMDApXG4gICAgICAgIH0pLFxuICAgICAgICB0aGlzLnNob3dMb2FkZXIkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzQ2xlYXJpbmdMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyU3Bpbm5lciA9IHRydWU7XG4gICAgICAgIH0pXG4gICAgXTtcblxuICAgIHB1YmxpYyByZW5kZXJTcGlubmVyID0gdHJ1ZTsgLy8gd2hldGhlciB3ZSByZW5kZXIgdGhlIERPTSBmb3IgdGhlIHNwaW5uZXJcbiAgICBwdWJsaWMgaXNDbGVhcmluZ0xvYWRlciA9IGZhbHNlOyAvLyBzaG91bGQgdGhlIHNwaW5uZXIgc3RhcnQgZmFkaW5nIG91dFxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgc2VydmljZTogTGF6eUxvYWRlclNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHVibGljIGRpYWxvZzogRGlhbG9nUmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRpYWxvZ0FyZ3VtZW50c1xuICAgICkge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IExhenlMb2FkZXJTZXJ2aWNlLmNvbmZpZztcbiAgICAgICAgdGhpcy5lcnIgPSBMYXp5TG9hZGVyU2VydmljZS5jb25maWcubG9nZ2VyLmVycjtcbiAgICAgICAgdGhpcy53YXJuID0gTGF6eUxvYWRlclNlcnZpY2UuY29uZmlnLmxvZ2dlci53YXJuO1xuICAgICAgICB0aGlzLmxvZyA9IExhenlMb2FkZXJTZXJ2aWNlLmNvbmZpZy5sb2dnZXIubG9nO1xuXG4gICAgICAgIC8vIEZpcnN0LCBjaGVjayBmb3IgZGlhbG9nIGFyZ3VtZW50c1xuICAgICAgICBpZiAodGhpcy5kaWFsb2dBcmd1bWVudHMpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRzID0gdGhpcy5kaWFsb2dBcmd1bWVudHMuaW5wdXRzIHx8IHRoaXMuZGlhbG9nQXJndW1lbnRzLmRhdGE7XG4gICAgICAgICAgICB0aGlzLm91dHB1dHMgPSB0aGlzLmRpYWxvZ0FyZ3VtZW50cy5vdXRwdXRzO1xuICAgICAgICAgICAgdGhpcy5pZCA9IHRoaXMuZGlhbG9nQXJndW1lbnRzLmlkO1xuICAgICAgICAgICAgdGhpcy5ncm91cCA9IHRoaXMuZGlhbG9nQXJndW1lbnRzLmdyb3VwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5uZ09uRGVzdHJveShmYWxzZSk7XG4gICAgICAgIHRoaXMuaXNDbGVhcmluZ0xvYWRlciA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlbmRlclNwaW5uZXIgPSB0cnVlO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcblxuICAgICAgICBpZiAoIXRoaXMuX2lkKSB7XG4gICAgICAgICAgICB0aGlzLndhcm4oXCJObyBjb21wb25lbnQgd2FzIHNwZWNpZmllZCFcIik7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkRGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IF9lbnRyeSA9IHRoaXMuc2VydmljZS5yZXNvbHZlUmVnaXN0cmF0aW9uRW50cnkodGhpcy5faWQsIHRoaXMuX2dyb3VwKTtcbiAgICAgICAgICAgIGlmICghX2VudHJ5IHx8ICFfZW50cnkuZW50cnkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVycihgRmFpbGVkIHRvIGZpbmQgQ29tcG9uZW50ICcke3RoaXMuX2lkfScgaW4gZ3JvdXAgJyR7dGhpcy5fZ3JvdXB9JyBpbiByZWdpc3RyeSFgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkRGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB7IGVudHJ5LCBtYXRjaEdyb3VwcyB9ID0gX2VudHJ5O1xuICAgICAgICAgICAgdGhpcy5fbWF0Y2hHcm91cHMgPSBtYXRjaEdyb3VwcztcblxuICAgICAgICAgICAgLy8gRG93bmxvYWQgdGhlIFwibW9kdWxlXCIgKHRoZSBzdGFuZGFsb25lIGNvbXBvbmVudClcbiAgICAgICAgICAgIGNvbnN0IGJ1bmRsZTogQ29tcGlsZWRCdW5kbGUgPSB0aGlzLnRhcmdldE1vZHVsZSA9IGF3YWl0IGVudHJ5LmxvYWQoKTtcblxuXG4gICAgICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBzb21lIGNvcnJ1cHRpb24gb24gdGhlIGJ1bmRsZS5cbiAgICAgICAgICAgIGlmICghYnVuZGxlIHx8IHR5cGVvZiBidW5kbGUgIT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVycihgRmFpbGVkIHRvIGxvYWQgY29tcG9uZW50L21vZHVsZSBmb3IgJyR7dGhpcy5faWR9JyEgUGFyc2VkIHJlc291cmNlIGlzIGludmFsaWQuYCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZEVycm9yKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG1vZHVsZXMgPSBPYmplY3Qua2V5cyhidW5kbGUpXG4gICAgICAgICAgICAgICAgLm1hcChrID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZW50cnkgPSBidW5kbGVba107XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gU3RyaWN0bHkgY2hlY2sgZm9yIGV4cG9ydGVkIG1vZHVsZXMgb3Igc3RhbmRhbG9uZSBjb21wb25lbnRzXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZW50cnkgPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBlbnRyeVtcIsm1ZmFjXCJdID09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGUgPT4gZSAhPSBudWxsKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoZW50cnkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlbnRyeVsnX2lzTW9kdWxlJ10gPSAhIWVudHJ5WyfJtW1vZCddOyAvLyBtb2R1bGVcbiAgICAgICAgICAgICAgICAgICAgZW50cnlbJ19pc0NvbXBvbmVudCddID0gISFlbnRyeVsnybVjbXAnXTsgLy8gY29tcG9uZW50XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChlbnRyeVsnX2lzTW9kdWxlJ10gfHwgZW50cnlbJ19pc0NvbXBvbmVudCddKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKG1vZHVsZXMubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVycihgQ29tcG9uZW50L01vZHVsZSBsb2FkZWQgZm9yICcke3RoaXMuX2lkfScgaGFzIG5vIGV4cG9ydGVkIGNvbXBvbmVudHMgb3IgbW9kdWxlcyFgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkRXJyb3IoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy50YXJnZXRDb21wb25lbnRGYWN0b3J5ID0gdGhpcy5zZXJ2aWNlLnJlc29sdmVDb21wb25lbnQodGhpcy5faWQsIFwiZGVmYXVsdFwiLCBtb2R1bGVzKTtcblxuICAgICAgICAgICAgaWYgKCFjb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVycihgQ29tcG9uZW50ICcke3RoaXMuX2lkfScgaXMgaW52YWxpZCBvciBjb3JydXB0ZWQhYCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZEVycm9yKCk7XG4gICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgLy8gQm9vdHN0cmFwIHRoZSBjb21wb25lbnQgaW50byB0aGUgY29udGFpbmVyXG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLnRhcmdldENvbXBvbmVudENvbnRhaW5lclJlZiA9IHRoaXMudGFyZ2V0Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQgYXMgYW55KTtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0UmVmID0gdGhpcy50YXJnZXRDb250YWluZXIuaW5zZXJ0KHRoaXMudGFyZ2V0Q29tcG9uZW50Q29udGFpbmVyUmVmLmhvc3RWaWV3KTtcblxuICAgICAgICAgICAgY29uc3QgaW5zdGFuY2U6IGFueSA9IHRoaXMudGFyZ2V0Q29tcG9uZW50SW5zdGFuY2UgPSBjb21wb25lbnRSZWZbJ2luc3RhbmNlJ107XG5cbiAgICAgICAgICAgIHRoaXMuYmluZElucHV0cygpO1xuICAgICAgICAgICAgdGhpcy5iaW5kT3V0cHV0cygpO1xuXG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudExvYWRlZC5uZXh0KGluc3RhbmNlKTtcbiAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UgPSBpbnN0YW5jZTtcblxuICAgICAgICAgICAgLy8gTG9vayBmb3IgYW4gb2JzZXJ2YWJsZSBjYWxsZWQgaXNMb2FkaW5nJCB0aGF0IHdpbGwgbWFrZSB1cyBzaG93L2hpZGVcbiAgICAgICAgICAgIC8vIHRoZSBzYW1lIGRpc3RyYWN0b3IgdGhhdCBpcyB1c2VkIG9uIGJhc2ljIGxvYWRpbmdcbiAgICAgICAgICAgIGNvbnN0IGlzTG9hZGluZyQgPSBpbnN0YW5jZVsnbmd4U2hvd0Rpc3RyYWN0b3IkJ10gYXMgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuXG4gICAgICAgICAgICBpZiAoaXNMb2FkaW5nJCAmJiB0eXBlb2YgaXNMb2FkaW5nJC5zdWJzY3JpYmUgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXN0cmFjdG9yU3Vic2NyaXB0aW9uID0gaXNMb2FkaW5nJC5zdWJzY3JpYmUobG9hZGluZyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmcgPyB0aGlzLnNob3dFbWl0dGVyLmVtaXQoKSA6IHRoaXMuY2xlYXJFbWl0dGVyLmVtaXQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJFbWl0dGVyLmVtaXQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbmFtZSA9IE9iamVjdC5rZXlzKGJ1bmRsZSlbMF07XG4gICAgICAgICAgICB0aGlzLmxvZyhgTG9hZGVkICcke25hbWV9J2ApO1xuICAgICAgICAgICAgdGhpcy5jbGVhckVtaXR0ZXIuZW1pdCgpO1xuXG4gICAgICAgICAgICByZXR1cm4gY29tcG9uZW50UmVmO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChleCkge1xuXG4gICAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJDb21wb25lbnQgREREIFwiICsgdGhpcy5faWQgKyBcIiB0aHJldyBhbiBlcnJvciBvbiBtb3VudCFcIik7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVGhpcyB3aWxsIGNhdXNlIHlvdSB0byBzZWUgYSA0MDQgcGFuZWwuXCIpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBOZXR3b3JrIGVycm9ycyB0aHJvdyBhIHRvYXN0IGFuZCByZXR1cm4gYW4gZXJyb3IgY29tcG9uZW50XG4gICAgICAgICAgICBpZiAoZXggJiYgIWlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIlVuY2F1Z2h0IGVycm9yIHdoZW4gbG9hZGluZyBjb21wb25lbnRcIik7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveShjbGVhckFsbCA9IHRydWUpIHtcbiAgICAgICAgLy8gdW5zdWJzY3JpYmUgZnJvbSBhbGwgc3Vic2NyaXB0aW9uc1xuICAgICAgICBPYmplY3QuZW50cmllcyh0aGlzLm91dHB1dFN1YnNjcmlwdGlvbnMpLmZvckVhY2goKFtrZXksIHN1Yl0pID0+IHtcbiAgICAgICAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5vdXRwdXRTdWJzY3JpcHRpb25zID0ge307XG5cbiAgICAgICAgLy8gQ2xlYXIgYWxsIHRoaW5nc1xuICAgICAgICBpZiAoY2xlYXJBbGwpIHtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuc3Vic2NyaXB0aW9ucykuZm9yRWFjaCgoW2tleSwgc3ViXSkgPT4ge1xuICAgICAgICAgICAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRpc3RyYWN0b3JTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgLy8gQ2xlYXIgdGFyZ2V0IGNvbnRhaW5lclxuICAgICAgICB0aGlzLnRhcmdldFJlZj8uZGVzdHJveSgpO1xuICAgICAgICB0aGlzLnRhcmdldENvbXBvbmVudENvbnRhaW5lclJlZj8uZGVzdHJveSgpO1xuICAgICAgICB0aGlzLnRhcmdldENvbnRhaW5lcj8uY2xlYXIoKTtcblxuICAgICAgICAvLyBXaXBlIHRoZSByZXN0IG9mIHRoZSBzdGF0ZSBjbGVhblxuICAgICAgICB0aGlzLnRhcmdldFJlZiA9IG51bGw7XG4gICAgICAgIHRoaXMudGFyZ2V0Q29tcG9uZW50Q29udGFpbmVyUmVmID0gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCaW5kIHRoZSBpbnB1dCB2YWx1ZXMgdG8gdGhlIGNoaWxkIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGJpbmRJbnB1dHMoKSB7XG4gICAgICAgIGlmICghdGhpcy5faW5wdXRzIHx8ICF0aGlzLnRhcmdldENvbXBvbmVudEluc3RhbmNlKSByZXR1cm47XG5cbiAgICAgICAgLy8gTWVyZ2UgbWF0Y2ggZ3JvdXBzXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5fbWF0Y2hHcm91cHMgPT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXModGhpcy5fbWF0Y2hHcm91cHMpLmZvckVhY2goKFtrZXksIHZhbF0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuX2lucHV0c1trZXldID09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbnB1dHNba2V5XSA9IHZhbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZm9yd2FyZC1iaW5kIGlucHV0c1xuICAgICAgICBjb25zdCB7IGlucHV0cyB9ID0gdGhpcy50YXJnZXRDb21wb25lbnRGYWN0b3J5Lsm1Y21wO1xuXG4gICAgICAgIC8vIFJldHVybnMgYSBsaXN0IG9mIGVudHJpZXMgdGhhdCBuZWVkIHRvIGJlIHNldFxuICAgICAgICAvLyBUaGlzIG1ha2VzIGl0IHNvIHRoYXQgdW5uZWNlc3Nhcnkgc2V0dGVycyBhcmUgbm90IGludm9rZWQuXG4gICAgICAgIGNvbnN0IHVwZGF0ZWQgPSBPYmplY3QuZW50cmllcyhpbnB1dHMpLmZpbHRlcigoW3BhcmVudEtleSwgY2hpbGRLZXldOiBbc3RyaW5nLCBzdHJpbmddKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50YXJnZXRDb21wb25lbnRJbnN0YW5jZVtjaGlsZEtleV0gIT0gdGhpcy5faW5wdXRzW3BhcmVudEtleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHVwZGF0ZWQuZm9yRWFjaCgoW3BhcmVudEtleSwgY2hpbGRLZXldOiBbc3RyaW5nLCBzdHJpbmddKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5faW5wdXRzLmhhc093blByb3BlcnR5KHBhcmVudEtleSkpXG4gICAgICAgICAgICAgICAgdGhpcy50YXJnZXRDb21wb25lbnRJbnN0YW5jZVtjaGlsZEtleV0gPSB0aGlzLl9pbnB1dHNbcGFyZW50S2V5XTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQmluZCB0aGUgb3V0cHV0IGhhbmRsZXJzIHRvIHRoZSBsb2FkZWQgY2hpbGQgY29tcG9uZW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBiaW5kT3V0cHV0cygpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9vdXRwdXRzIHx8ICF0aGlzLnRhcmdldENvbXBvbmVudEluc3RhbmNlKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgeyBvdXRwdXRzIH0gPSB0aGlzLnRhcmdldENvbXBvbmVudEZhY3RvcnkuybVjbXA7XG5cbiAgICAgICAgLy8gR2V0IGEgbGlzdCBvZiB1bnJlZ2lzdGVyZWQgb3V0cHV0c1xuICAgICAgICBjb25zdCBuZXdPdXRwdXRzID0gT2JqZWN0LmVudHJpZXMob3V0cHV0cykuZmlsdGVyKChbcGFyZW50S2V5LCBjaGlsZEtleV06IFtzdHJpbmcsIHN0cmluZ10pID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5vdXRwdXRTdWJzY3JpcHRpb25zW3BhcmVudEtleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFJldmVyc2UgYmluZCB2aWEgc3Vic2NyaXB0aW9uXG4gICAgICAgIG5ld091dHB1dHMuZm9yRWFjaCgoW3BhcmVudEtleSwgY2hpbGRLZXldOiBbc3RyaW5nLCBzdHJpbmddKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fb3V0cHV0cy5oYXNPd25Qcm9wZXJ0eShwYXJlbnRLZXkpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0OiBFdmVudEVtaXR0ZXI8dW5rbm93bj4gPSB0aGlzLnRhcmdldENvbXBvbmVudEluc3RhbmNlW2NoaWxkS2V5XTtcbiAgICAgICAgICAgICAgICBjb25zdCBvdXRwdXRzID0gdGhpcy5fb3V0cHV0cztcblxuICAgICAgICAgICAgICAgIC8vIEFuZ3VsYXIgZm9sa3MsIHN0b3AgbWFraW5nIHRoaXMgc28gZGlmZmljdWx0LlxuICAgICAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMudmlld0NvbnRhaW5lclJlZlsnX2hvc3RMVmlldyddWzhdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1YiA9IHRhcmdldC5zdWJzY3JpYmUob3V0cHV0c1twYXJlbnRLZXldLmJpbmQoY3R4KSk7IC8vIFN1YnNjcmlwdGlvblxuXG4gICAgICAgICAgICAgICAgdGhpcy5vdXRwdXRTdWJzY3JpcHRpb25zW3BhcmVudEtleV0gPSBzdWI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExvYWQgdGhlIFwiRGVmYXVsdFwiIGNvbXBvbmVudCAoNDA0KSBzY3JlZW4gbm9ybWFsbHkuXG4gICAgICogVGhpcyBpcyBzaG93biB3aGVuIHRoZSBjb21wb25lbnQgaWQgaXNuJ3QgaW4gdGhlXG4gICAgICogcmVnaXN0cnkgb3Igb3RoZXJ3aXNlIGRvZXNuJ3QgbWF0Y2hcbiAgICAgKlxuICAgICAqIFRoaXNcbiAgICAgKi9cbiAgICBwcml2YXRlIGxvYWREZWZhdWx0KCkge1xuICAgICAgICBpZiAodGhpcy5jb25maWcubm90Rm91bmRDb21wb25lbnQpXG4gICAgICAgICAgICB0aGlzLnRhcmdldENvbnRhaW5lci5jcmVhdGVDb21wb25lbnQodGhpcy5jb25maWcubm90Rm91bmRDb21wb25lbnQpO1xuXG4gICAgICAgIHRoaXMuY2xlYXJFbWl0dGVyLmVtaXQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb2FkIHRoZSBcIkVycm9yXCIgY29tcG9uZW50LlxuICAgICAqIFRoaXMgaXMgc2hvd24gd2hlbiB3ZSBhcmUgYWJsZSB0byByZXNvbHZlIHRoZSBjb21wb25lbnRcbiAgICAgKiBpbiB0aGUgcmVnaXN0cnksIGJ1dCBoYXZlIHNvbWUgaXNzdWUgYm9vc3RyYXBwaW5nIHRoZVxuICAgICAqIGNvbXBvbmVudCBpbnRvIHRoZSB2aWV3Q29udGFpbmVyXG4gICAgICovXG4gICAgcHJpdmF0ZSBsb2FkRXJyb3IoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5lcnJvckNvbXBvbmVudClcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudCh0aGlzLmNvbmZpZy5lcnJvckNvbXBvbmVudCk7XG5cbiAgICAgICAgdGhpcy5jbGVhckVtaXR0ZXIuZW1pdCgpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgI2NvbnRlbnQ+PC9uZy1jb250YWluZXI+XG5cbkBpZiAocmVuZGVyU3Bpbm5lcikge1xuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJuZ3gtbGF6eS1sb2FkZXItZGlzdHJhY3RvclwiXG4gICAgICAgIFtjbGFzcy5kZXN0cm95aW5nXT1cImlzQ2xlYXJpbmdMb2FkZXJcIlxuICAgID5cbiAgICAgICAgQGlmIChjb25maWcubG9hZGVyRGlzdHJhY3RvckNvbXBvbmVudCkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgIFtuZ0NvbXBvbmVudE91dGxldF09XCJjb25maWcubG9hZGVyRGlzdHJhY3RvckNvbXBvbmVudFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoY29uZmlnLmxvYWRlckRpc3RyYWN0b3JUZW1wbGF0ZSkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbmZpZy5sb2FkZXJEaXN0cmFjdG9yVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICckaW1wbGljaXQnOiBpbnB1dHMgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgPC9kaXY+XG59XG4iXX0=
|
|
@@ -13,8 +13,9 @@ export class NavigationService {
|
|
|
13
13
|
}
|
|
14
14
|
loadRootPageFromUrl() {
|
|
15
15
|
const hash = location.hash.split("?")[0];
|
|
16
|
+
const root = hash.replace(/^\/?#\//, '');
|
|
16
17
|
// If the URL is imprecisely set, we restore it to the landing page
|
|
17
|
-
if (!this.lazyLoader.isComponentRegistered(
|
|
18
|
+
if (!this.lazyLoader.isComponentRegistered(root))
|
|
18
19
|
return this.loadRootPage("#/Landing");
|
|
19
20
|
this.loadRootPage(location.hash);
|
|
20
21
|
}
|
|
@@ -31,8 +32,9 @@ export class NavigationService {
|
|
|
31
32
|
return pars;
|
|
32
33
|
}, {}) || {};
|
|
33
34
|
log(`Root page navigate to '${hash}'`, { params, chunks });
|
|
35
|
+
const root = hash.replace(/^\/?#\//, '');
|
|
34
36
|
this.virtualPath$.next({
|
|
35
|
-
root: chunks[0],
|
|
37
|
+
root: root, //chunks[0],
|
|
36
38
|
chunks: chunks,
|
|
37
39
|
args: params
|
|
38
40
|
});
|
|
@@ -46,4 +48,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
46
48
|
providedIn: 'root'
|
|
47
49
|
}]
|
|
48
50
|
}], ctorParameters: () => [{ type: i1.LazyLoaderService }] });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFXLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQUd6QyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxhQUFhLENBQUMsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFhekUsTUFBTSxPQUFPLGlCQUFpQjtJQUcxQixZQUNxQixVQUE2QjtRQUE3QixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUgzQyxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFzQixJQUFJLENBQUMsQ0FBQztRQUtqRSxNQUFNLENBQUMsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTyxtQkFBbUI7UUFDdkIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFekMsbUVBQW1FO1FBQ25FLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQztZQUM1QyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVPLFlBQVksQ0FBQyxHQUFXLEVBQUUsT0FBZSxFQUFFO1FBRS9DLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRS9CLHNEQUFzRDtRQUN0RCxNQUFNLE1BQU0sR0FBRyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUMzQixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDbEIsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUM7WUFDcEIsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUdqQixHQUFHLENBQUMsMEJBQTBCLElBQUksR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDM0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDbkIsSUFBSSxFQUFFLElBQUksRUFBRSxZQUFZO1lBQ3hCLE1BQU0sRUFBRSxNQUFhO1lBQ3JCLElBQUksRUFBRSxNQUFNO1NBQ2YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0E1Q1EsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FGZCxNQUFNOzsyRkFFVCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb25zb2xlTG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgTGF6eUxvYWRlclNlcnZpY2UgfSBmcm9tICcuLi9wdWJsaWMtYXBpJztcblxuY29uc3QgeyBsb2csIHdhcm4sIGVyciB9ID0gQ29uc29sZUxvZ2dlcihcIk5hdmlnYXRpb25TZXJ2aWNlXCIsIFwiI2ZmOTgwMFwiKTtcblxudHlwZSBOYXZpZ2F0aW9uQXJndW1lbnRzID0ge1xuICAgIHJvb3Q6IHN0cmluZyxcbiAgICBjaHVua3M6IFtzdHJpbmcsIC4uLnN0cmluZ1tdXSxcbiAgICBhcmdzOiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICB9XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvblNlcnZpY2Uge1xuICAgIHB1YmxpYyB2aXJ0dWFsUGF0aCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE5hdmlnYXRpb25Bcmd1bWVudHM+KG51bGwpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbGF6eUxvYWRlcjogTGF6eUxvYWRlclNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgd2luZG93Lm9uaGFzaGNoYW5nZSA9ICgpID0+IHRoaXMubG9hZFJvb3RQYWdlRnJvbVVybCgpO1xuICAgICAgICB0aGlzLmxvYWRSb290UGFnZUZyb21VcmwoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRSb290UGFnZUZyb21VcmwoKSB7XG4gICAgICAgIGNvbnN0IGhhc2ggPSBsb2NhdGlvbi5oYXNoLnNwbGl0KFwiP1wiKVswXTtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGhhc2gucmVwbGFjZSgvXlxcLz8jXFwvLywgJycpO1xuXG4gICAgICAgIC8vIElmIHRoZSBVUkwgaXMgaW1wcmVjaXNlbHkgc2V0LCB3ZSByZXN0b3JlIGl0IHRvIHRoZSBsYW5kaW5nIHBhZ2VcbiAgICAgICAgaWYgKCF0aGlzLmxhenlMb2FkZXIuaXNDb21wb25lbnRSZWdpc3RlcmVkKHJvb3QpKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZFJvb3RQYWdlKFwiIy9MYW5kaW5nXCIpO1xuXG4gICAgICAgIHRoaXMubG9hZFJvb3RQYWdlKGxvY2F0aW9uLmhhc2gpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZFJvb3RQYWdlKHVybDogc3RyaW5nLCBkYXRhOiBPYmplY3QgPSB7fSkge1xuXG4gICAgICAgIGNvbnN0IFtwYXRoLCBxdWVyeV0gPSB1cmwuc3BsaXQoJz8nKTtcbiAgICAgICAgY29uc3QgaGFzaCA9IHBhdGgucmVwbGFjZSgvXlxcLz8jXFwvPy8sICcnKTtcbiAgICAgICAgY29uc3QgY2h1bmtzID0gaGFzaC5zcGxpdCgnLycpO1xuXG4gICAgICAgIC8vIEdldCBxdWVyeSBwYXJhbXMgYW5kIHBhc3MgdGhlbSBhcyBASW5wdXQgYXJndW1lbnRzLlxuICAgICAgICBjb25zdCBwYXJhbXMgPSBxdWVyeT8uc3BsaXQoJyYnKVxuICAgICAgICAgICAgLnJlZHVjZSgocGFycywgcGFyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgW2tleSwgdmFsdWVdID0gcGFyLnNwbGl0KFwiPVwiKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkZWNvZGVkID0gZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKTtcbiAgICAgICAgICAgICAgICBwYXJzW2tleV0gPSBkZWNvZGVkO1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzO1xuICAgICAgICAgICAgfSwge30pIHx8IHt9O1xuXG5cbiAgICAgICAgbG9nKGBSb290IHBhZ2UgbmF2aWdhdGUgdG8gJyR7aGFzaH0nYCwgeyBwYXJhbXMsIGNodW5rcyB9KTtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGhhc2gucmVwbGFjZSgvXlxcLz8jXFwvLywgJycpO1xuICAgICAgICB0aGlzLnZpcnR1YWxQYXRoJC5uZXh0KHtcbiAgICAgICAgICAgIHJvb3Q6IHJvb3QsIC8vY2h1bmtzWzBdLFxuICAgICAgICAgICAgY2h1bmtzOiBjaHVua3MgYXMgYW55LFxuICAgICAgICAgICAgYXJnczogcGFyYW1zXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
package/esm2022/utils/index.mjs
CHANGED
|
@@ -153,7 +153,7 @@ export const stringToSlug = (text) => (text || '')
|
|
|
153
153
|
.trim()
|
|
154
154
|
.toLowerCase()
|
|
155
155
|
.replace(/[\-_+ ]/g, '-')
|
|
156
|
-
.replace(/[^a-z0-9
|
|
156
|
+
.replace(/[^a-z0-9\-\/]/g, '');
|
|
157
157
|
/**
|
|
158
158
|
* Helper to update the page URL.
|
|
159
159
|
* @param page component page ID to load.
|
|
@@ -202,4 +202,4 @@ export const getUrlData = (source = window.location.hash) => {
|
|
|
202
202
|
let data = new URLSearchParams(query);
|
|
203
203
|
return [...data.entries()].map(([k, v]) => ({ [k]: v })).reduce((a, b) => ({ ...a, ...b }), {});
|
|
204
204
|
};
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRS9EOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxJQUFZLEVBQUUsSUFBWSxFQUFFLEVBQUU7SUFDM0QsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFDNUUsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7SUFDakIsWUFBb0IsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7SUFBRSxDQUFDO0NBQ3RDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVDRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRztJQUNuQixhQUFhLEVBQUUsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ2pDLFVBQVUsRUFB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c3Qgc2xlZXAgPSBtcyA9PiBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgbXMpKTtcblxuLyoqXG4gKiBQcm9tcHQgdGhlIHVzZXIgdG8gc2F2ZSBhIGpzb24gZmlsZSBvZiB0aGUgZ2l2ZW4gb2JqZWN0LlxuICovXG5leHBvcnQgY29uc3Qgc2F2ZU9iamVjdEFzRmlsZSA9IChuYW1lOiBzdHJpbmcsIGRhdGE6IE9iamVjdCkgPT4ge1xuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcbiAgICBjb25zdCBmaWxlID0gbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KGRhdGEpXSwgeyB0eXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9KTtcbiAgICBhLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpO1xuICAgIGEuZG93bmxvYWQgPSBuYW1lO1xuICAgIGEuY2xpY2soKTtcbiAgICBhLnJlbW92ZSgpO1xufTtcblxuLyoqXG4gKiBDb25zdHJ1Y3QgYW4gZW1vdGljb24gd2l0aCBhbnkgdW5pY29kZSBpY29uIHlvdSBzcGVjaWZ5XG4gKi9cbmV4cG9ydCBjbGFzcyBFbW90aWNvbiB7XG4gICAgY29uc3RydWN0b3IgKHB1YmxpYyBpY29uOiBzdHJpbmcpe31cbn1cblxuLyoqXG4gKiBhdXRob3JpemF0aW9uIPCflJAgXFxcbiAqIG5hdmlnYXRpb24g8J+nrSBcXFxuICogdXNlciDwn6qqIFxcXG4gKiBzZWN1cml0eSDwn5uhIFxcXG4gKiBzeXN0ZW0g8J+WpSBcXFxuICogdG9vbGJveCDwn6ewIFxcXG4gKiBjaG9yZSDimpkgXFxcbiAqIGNvbmZpZyDwn5ugIFxcXG4gKiByZW5kZXJlciDwn5OQIFxcXG4gKiBwYWNrYWdlIPCfk6YgXFxcbiAqIHRpbWUg4o+zIFxcXG4gKiBkb3dubG9hZCDwn5OlIFxcXG4gKiB1cGxvYWQg8J+TpCBcXFxuICogYnVnIPCfpqAgXFxcbiAqIGJvbWIg8J+SoyBcXFxuICogdG50IPCfp6ggXFxcbiAqIHdhcm5pbmcg4pqg77iPIFxcXG4gKiBjaGFydCDwn5OKIFxcXG4gKiBjaGFydF91cCDwn5OIIFxcXG4gKiBjaGFydF9kb3duIPCfk4kgXFxcbiAqIGNpcmNsZV9yZWQg8J+UtCBcXFxuICogY2lyY2xlX29yYW5nZSDwn5+gIFxcXG4gKiBjaXJjbGVfeWVsbG93IPCfn6EgXFxcbiAqIGNpcmNsZV9ncmVlbiDwn5+iIFxcXG4gKiBjaXJjbGVfYmx1ZSDwn5S1IFxcXG4gKiBjaXJjbGVfdmlvbGV0IPCfn6MgXFxcbiAqIGNpcmNsZV9ibGFjayDimqvvuI8gXFxcbiAqIGNpcmNsZV93aGl0ZSDimqrvuI8gXFxcbiAqIGNpcmNsZV9icm93biDwn5+kIFxcXG4gKiBzcXVhcmVfcmVkIPCfn6UgXFxcbiAqIHNxdWFyZV9vcmFuZ2Ug8J+fpyBcXFxuICogc3F1YXJlX3llbGxvdyDwn5+oIFxcXG4gKiBzcXVhcmVfZ3JlZW4g8J+fqSBcXFxuICogc3F1YXJlX2JsdWUg8J+fpiBcXFxuICogc3F1YXJlX3Zpb2xldCDwn5+qIFxcXG4gKiBzcXVhcmVfYmxhY2sg4qyb77iPIFxcXG4gKiBzcXVhcmVfd2hpdGUg4qyc77iPIFxcXG4gKiBzcXVhcmVfYnJvd24g8J+fq1xuICovXG5leHBvcnQgY29uc3QgTG9nSWNvbiA9IHtcbiAgICBhdXRob3JpemF0aW9uOiBuZXcgRW1vdGljb24oXCLwn5SQXCIpLFxuICAgIG5hdmlnYXRpb246IG5ldyBFbW90aWNvbihcIvCfp61cIiksXG4gICAgdXNlcjogbmV3IEVtb3RpY29uKFwi8J+qqlwiKSxcbiAgICBzZWN1cml0eTogbmV3IEVtb3RpY29uKFwi8J+boVwiKSxcbiAgICBzeXN0ZW06IG5ldyBFbW90aWNvbihcIvCflqVcIiksXG4gICAgdG9vbGJveDogbmV3IEVtb3RpY29uKFwi8J+nsFwiKSxcbiAgICBjaG9yZTogbmV3IEVtb3RpY29uKFwi4pqZXCIpLFxuICAgIGNvbmZpZzogbmV3IEVtb3RpY29uKFwi8J+boFwiKSxcbiAgICByZW5kZXJlcjogbmV3IEVtb3RpY29uKFwi8J+TkFwiKSxcbiAgICBwYWNrYWdlOiBuZXcgRW1vdGljb24oXCLwn5OmXCIpLFxuICAgIHRpbWU6IG5ldyBFbW90aWNvbihcIuKPs1wiKSxcbiAgICBkb3dubG9hZDogbmV3IEVtb3RpY29uKFwi8J+TpVwiKSxcbiAgICB1cGxvYWQ6IG5ldyBFbW90aWNvbihcIvCfk6RcIiksXG4gICAgYnVnOiBuZXcgRW1vdGljb24oXCLwn6agXCIpLFxuICAgIGJvbWI6IG5ldyBFbW90aWNvbihcIvCfkqNcIiksXG4gICAgdG50OiBuZXcgRW1vdGljb24oXCLwn6eoXCIpLFxuICAgIHN0b3A6IG5ldyBFbW90aWNvbihcIvCfm5FcIiksXG4gICAgcG9saWNlOiBuZXcgRW1vdGljb24oXCLwn5qoXCIpLFxuICAgIHJvY2tldDogbmV3IEVtb3RpY29uKFwi8J+agFwiKSxcbiAgICB3YXJuaW5nOiBuZXcgRW1vdGljb24oXCLimqDvuI9cIiksXG4gICAgY2hhcnQ6IG5ldyBFbW90aWNvbihcIvCfk4pcIiksXG4gICAgY2hhcnRfdXA6IG5ldyBFbW90aWNvbihcIvCfk4hcIiksXG4gICAgY2hhcnRfZG93bjogbmV3IEVtb3RpY29uKFwi8J+TiVwiKSxcblxuICAgIGNpcmNsZV9yZWQ6IG5ldyBFbW90aWNvbihcIvCflLRcIiksXG4gICAgY2lyY2xlX29yYW5nZTogbmV3IEVtb3RpY29uKFwi8J+foFwiKSxcbiAgICBjaXJjbGVfeWVsbG93OiBuZXcgRW1vdGljb24oXCLwn5+hXCIpLFxuICAgIGNpcmNsZV9ncmVlbjogbmV3IEVtb3RpY29uKFwi8J+folwiKSxcbiAgICBjaXJjbGVfYmx1ZTogbmV3IEVtb3RpY29uKFwi8J+UtVwiKSxcbiAgICBjaXJjbGVfdmlvbGV0OiBuZXcgRW1vdGljb24oXCLwn5+jXCIpLFxuICAgIGNpcmNsZV9ibGFjazogbmV3IEVtb3RpY29uKFwi4pqr77iPXCIpLFxuICAgIGNpcmNsZV93aGl0ZTogbmV3IEVtb3RpY29uKFwi4pqq77iPXCIpLFxuICAgIGNpcmNsZV9icm93bjogbmV3IEVtb3RpY29uKFwi8J+fpFwiKSxcbiAgICBzcXVhcmVfcmVkOiBuZXcgRW1vdGljb24oXCLwn5+lXCIpLFxuICAgIHNxdWFyZV9vcmFuZ2U6IG5ldyBFbW90aWNvbihcIvCfn6dcIiksXG4gICAgc3F1YXJlX3llbGxvdzogbmV3IEVtb3RpY29uKFwi8J+fqFwiKSxcbiAgICBzcXVhcmVfZ3JlZW46IG5ldyBFbW90aWNvbihcIvCfn6lcIiksXG4gICAgc3F1YXJlX2JsdWU6IG5ldyBFbW90aWNvbihcIvCfn6ZcIiksXG4gICAgc3F1YXJlX3Zpb2xldDogbmV3IEVtb3RpY29uKFwi8J+fqlwiKSxcbiAgICBzcXVhcmVfYmxhY2s6IG5ldyBFbW90aWNvbihcIuKsm++4j1wiKSxcbiAgICBzcXVhcmVfd2hpdGU6IG5ldyBFbW90aWNvbihcIuKsnO+4j1wiKSxcbiAgICBzcXVhcmVfYnJvd246IG5ldyBFbW90aWNvbihcIvCfn6tcIilcbn1cblxuY2xhc3MgTG9nIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjb250ZXh0OiBzdHJpbmcsXG4gICAgICAgIHByaXZhdGUgY29udGV4dENvbG9yOiBzdHJpbmcsXG4gICAgICAgIHByaXZhdGUgdGV4dENvbG9yOiBzdHJpbmdcbiAgICApIHtcbiAgICAgICAgLy8gRm9yY2UgdGhlIGJpbmRpbmdzIHRvIHN0YXkgaW50YWN0IHdpdGggb3ZlcmxvYWRzLlxuICAgICAgICB0aGlzLmxvZyA9IHRoaXMubG9nLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMud2FybiA9IHRoaXMud2Fybi5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmVyciA9IHRoaXMuZXJyLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuZXJyb3IgPSB0aGlzLmVycm9yLmJpbmQodGhpcyk7XG4gICAgfVxuXG4gICAgbG9nKGljb246IEVtb3RpY29uLCBtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3MpXG4gICAgbG9nKG1lc3NhZ2U6IHN0cmluZywgLi4uYXJncylcbiAgICBsb2coaWNvbk9yTWVzc2FnZTogRW1vdGljb24gfCBzdHJpbmcsIG1lc3NhZ2VUZXh0OiBzdHJpbmcsIC4uLmFyZ3MpIHtcbiAgICAgICAgaWYgKGljb25Pck1lc3NhZ2UgaW5zdGFuY2VvZiBFbW90aWNvbikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYCR7aWNvbk9yTWVzc2FnZS5pY29ufSAlY1ske3RoaXMuY29udGV4dH1dICVjJHttZXNzYWdlVGV4dH1gLCAnY29sb3I6ICcgKyB0aGlzLmNvbnRleHRDb2xvciwgJ2NvbG9yOiAnICsgdGhpcy50ZXh0Q29sb3IsIC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYCVjWyR7dGhpcy5jb250ZXh0fV0gJWMke2ljb25Pck1lc3NhZ2V9YCwgJ2NvbG9yOiAnICsgdGhpcy5jb250ZXh0Q29sb3IsICdjb2xvcjogJyArIHRoaXMudGV4dENvbG9yLCAuLi5hcmdzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHdhcm4oaWNvbjogRW1vdGljb24sIG1lc3NhZ2U6IHN0cmluZywgLi4uYXJncylcbiAgICB3YXJuKG1lc3NhZ2U6IHN0cmluZywgLi4uYXJncylcbiAgICB3YXJuKGljb25Pck1lc3NhZ2U6IEVtb3RpY29uIHwgc3RyaW5nLCBtZXNzYWdlVGV4dDogc3RyaW5nLCAuLi5hcmdzKSB7XG4gICAgICAgIGlmIChpY29uT3JNZXNzYWdlIGluc3RhbmNlb2YgRW1vdGljb24pIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgJHtpY29uT3JNZXNzYWdlLmljb259ICVjWyR7dGhpcy5jb250ZXh0fV0gJWMke21lc3NhZ2VUZXh0fWAsICdjb2xvcjogJyArIHRoaXMuY29udGV4dENvbG9yLCAnY29sb3I6ICcgKyB0aGlzLnRleHRDb2xvciwgLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYCVjWyR7dGhpcy5jb250ZXh0fV0gJWMke2ljb25Pck1lc3NhZ2V9YCwgJ2NvbG9yOiAnICsgdGhpcy5jb250ZXh0Q29sb3IsICdjb2xvcjogJyArIHRoaXMudGV4dENvbG9yLCAuLi5hcmdzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVycihpY29uOiBFbW90aWNvbiwgbWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzKVxuICAgIGVycihtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3MpXG4gICAgZXJyKGljb25Pck1lc3NhZ2U6IEVtb3RpY29uIHwgc3RyaW5nLCBtZXNzYWdlVGV4dDogc3RyaW5nLCAuLi5hcmdzKSB7XG4gICAgICAgIGlmIChpY29uT3JNZXNzYWdlIGluc3RhbmNlb2YgRW1vdGljb24pIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7aWNvbk9yTWVzc2FnZS5pY29ufSAlY1ske3RoaXMuY29udGV4dH1dICVjJHttZXNzYWdlVGV4dH1gLCAnY29sb3I6ICcgKyB0aGlzLmNvbnRleHRDb2xvciwgJ2NvbG9yOiAnICsgdGhpcy50ZXh0Q29sb3IsIC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgJWNbJHt0aGlzLmNvbnRleHR9XSAlYyR7aWNvbk9yTWVzc2FnZX1gLCAnY29sb3I6ICcgKyB0aGlzLmNvbnRleHRDb2xvciwgJ2NvbG9yOiAnICsgdGhpcy50ZXh0Q29sb3IsIC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXJyb3IoaWNvbjogRW1vdGljb24sIG1lc3NhZ2U6IHN0cmluZywgLi4uYXJncylcbiAgICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3MpXG4gICAgZXJyb3IoaWNvbk9yTWVzc2FnZTogRW1vdGljb24gfCBzdHJpbmcsIG1lc3NhZ2VUZXh0OiBzdHJpbmcsIC4uLmFyZ3MpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB0aGlzLmVycihpY29uT3JNZXNzYWdlLCBtZXNzYWdlVGV4dCwgLi4uYXJncyk7XG4gICAgfVxufVxuXG4vKipcbiAqIEZvcm1hdHRlZCBsb2dnZXIgdGhhdCB3aWxsIHByaW50IGEgYml0IG9mIGNvbnRleHQgYmVmb3JlIHRoZSBtZXNzYWdlLlxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGNvbnN0IENvbnNvbGVMb2dnZXIgPSAoY29udGV4dDogc3RyaW5nLCBjb250ZXh0Q29sb3I6IHN0cmluZywgdGV4dENvbG9yOiBzdHJpbmcgPSBcIiMwM2E5ZjRcIikgPT5cbiAgICBuZXcgTG9nKGNvbnRleHQsIGNvbnRleHRDb2xvciwgdGV4dENvbG9yKTtcblxuLyoqXG4gKiBDb252ZXJ0IGEgc3RyaW5nIGBmb29CQVIgYmF6XzE2MDA1NCcnXCIxXVwiYCBpbnRvIGEgc2x1ZzogYGZvb2Jhci1iYXotMTYwMDU0MWBcbiAqL1xuZXhwb3J0IGNvbnN0IHN0cmluZ1RvU2x1ZyA9ICh0ZXh0OiBzdHJpbmcpID0+XG4gICAgKHRleHQgfHwgJycpXG4gICAgICAgIC50cmltKClcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnJlcGxhY2UoL1tcXC1fKyBdL2csICctJylcbiAgICAgICAgLnJlcGxhY2UoL1teYS16MC05XFwtXS9nLCAnJyk7XG5cblxuLyoqXG4qIEhlbHBlciB0byB1cGRhdGUgdGhlIHBhZ2UgVVJMLlxuKiBAcGFyYW0gcGFnZSBjb21wb25lbnQgcGFnZSBJRCB0byBsb2FkLlxuKiBAcGFyYW0gZGF0YSBzdHJpbmcgb3IgSlNPTiBkYXRhIGZvciBxdWVyeSBwYXJhbXMuXG4qL1xuZXhwb3J0IGNvbnN0IHVwZGF0ZVVybCA9IChwYWdlPzogc3RyaW5nLCBkYXRhOiBzdHJpbmcgfCBzdHJpbmdbXVtdIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPiB8IFVSTFNlYXJjaFBhcmFtcyA9IHt9LCByZXBsYWNlU3RhdGUgPSBmYWxzZSkgPT4ge1xuICAgIGNvbnN0IFtvbGRIYXNoLCBxc3RyaW5nXSA9IGxvY2F0aW9uLmhhc2guc3BsaXQoJz8nKTtcblxuICAgIGlmICghcGFnZSlcbiAgICAgICAgcGFnZSA9IG9sZEhhc2guc3BsaXQoJy8nKVsxXTtcblxuICAgIGNvbnN0IGhhc2ggPSBgIy8ke3BhZ2V9YDtcblxuICAgIC8vIENvbnZlcnQgdGhlIGRhdGEgb2JqZWN0IHRvIEpTT04uXG4gICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXMpIHtcbiAgICAgICAgZGF0YSA9IFsuLi4oZGF0YSBhcyBhbnkpLmVudHJpZXMoKV0ubWFwKChbaywgdl0pID0+ICh7IFtrXTogdiB9KSkucmVkdWNlKChhLCBiKSA9PiAoeyAuLi5hLCAuLi5iIH0pLCB7fSk7XG4gICAgfVxuXG4gICAgY29uc3QgcXVlcnkgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKGRhdGEgYXMgYW55KSBhcyBhbnk7XG4gICAgY29uc3QgcHJldlBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocXN0cmluZykgYXMgYW55O1xuXG4gICAgLy8gSWYgdGhlIGhhc2ggaXMgdGhlIHNhbWUsIHJldGFpbiBwYXJhbXMuXG4gICAgaWYgKGhhc2ggPT0gb2xkSGFzaCkge1xuICAgICAgICByZXBsYWNlU3RhdGUgPSB0cnVlO1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBwcmV2UGFyYW1zLmVudHJpZXMoKSlcbiAgICAgICAgICAgIGlmICghcXVlcnkuaGFzKGtleSkpXG4gICAgICAgICAgICAgICAgcXVlcnkuc2V0KGtleSwgcHJldlBhcmFtcy5nZXQoa2V5KSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWxdIG9mIHF1ZXJ5LmVudHJpZXMoKSkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB2YWwgPT0gbnVsbCB8fFxuICAgICAgICAgICAgdmFsID09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgdmFsID09ICcnIHx8XG4gICAgICAgICAgICB2YWwgPT0gJ251bGwnIHx8XG4gICAgICAgICAgICBOdW1iZXIuaXNOYU4odmFsKSB8fFxuICAgICAgICAgICAgdmFsID09ICdOYU4nXG4gICAgICAgIClcbiAgICAgICAgICAgIHF1ZXJ5LmRlbGV0ZShrZXkpO1xuICAgIH1cblxuICAgIGlmICghKGhhc2gudG9Mb3dlckNhc2UoKSA9PSBcIiMvZnJhbWVcIikgfHwgZGF0YVsnaWQnXSA9PSAtMSlcbiAgICAgICAgcXVlcnkuZGVsZXRlKCdpZCcpO1xuXG5cbiAgICBjb25zdCBzdHJRdWVyeSA9IHF1ZXJ5LnRvU3RyaW5nKCk7XG4gICAgY29uc29sZS5sb2coZGF0YSwgaGFzaCwgc3RyUXVlcnkpO1xuICAgIGlmIChyZXBsYWNlU3RhdGUpIHtcbiAgICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKGRhdGEsICcnLCBoYXNoICsgKHN0clF1ZXJ5ID8gKCc/JyArIHN0clF1ZXJ5KSA6ICcnKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoZGF0YSwgJycsIGhhc2ggKyAoc3RyUXVlcnkgPyAoJz8nICsgc3RyUXVlcnkpIDogJycpKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VXJsRGF0YSA9IChzb3VyY2UgPSB3aW5kb3cubG9jYXRpb24uaGFzaCkgPT4ge1xuICAgIGNvbnN0IFtoYXNoLCBxdWVyeV0gPSBzb3VyY2Uuc3BsaXQoJz8nKTtcbiAgICBsZXQgZGF0YSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocXVlcnkpIGFzIGFueTtcbiAgICByZXR1cm4gWy4uLmRhdGEuZW50cmllcygpXS5tYXAoKFtrLCB2XSkgPT4gKHsgW2tdOiB2IH0pKS5yZWR1Y2UoKGEsIGIpID0+ICh7IC4uLmEsIC4uLmIgfSksIHt9KTtcbn07XG4iXX0=
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRS9EOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxJQUFZLEVBQUUsSUFBWSxFQUFFLEVBQUU7SUFDM0QsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFDNUUsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7SUFDakIsWUFBb0IsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7SUFBRSxDQUFDO0NBQ3RDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVDRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRztJQUNuQixhQUFhLEVBQUUsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ2pDLFVBQVUsRUFB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b25zdCBzbGVlcCA9IG1zID0+IG5ldyBQcm9taXNlKHIgPT4gc2V0VGltZW91dChyLCBtcykpO1xuXG4vKipcbiAqIFByb21wdCB0aGUgdXNlciB0byBzYXZlIGEganNvbiBmaWxlIG9mIHRoZSBnaXZlbiBvYmplY3QuXG4gKi9cbmV4cG9ydCBjb25zdCBzYXZlT2JqZWN0QXNGaWxlID0gKG5hbWU6IHN0cmluZywgZGF0YTogT2JqZWN0KSA9PiB7XG4gICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgIGNvbnN0IGZpbGUgPSBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkoZGF0YSldLCB7IHR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiIH0pO1xuICAgIGEuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XG4gICAgYS5kb3dubG9hZCA9IG5hbWU7XG4gICAgYS5jbGljaygpO1xuICAgIGEucmVtb3ZlKCk7XG59O1xuXG4vKipcbiAqIENvbnN0cnVjdCBhbiBlbW90aWNvbiB3aXRoIGFueSB1bmljb2RlIGljb24geW91IHNwZWNpZnlcbiAqL1xuZXhwb3J0IGNsYXNzIEVtb3RpY29uIHtcbiAgICBjb25zdHJ1Y3RvciAocHVibGljIGljb246IHN0cmluZyl7fVxufVxuXG4vKipcbiAqIGF1dGhvcml6YXRpb24g8J+UkCBcXFxuICogbmF2aWdhdGlvbiDwn6etIFxcXG4gKiB1c2VyIPCfqqogXFxcbiAqIHNlY3VyaXR5IPCfm6EgXFxcbiAqIHN5c3RlbSDwn5alIFxcXG4gKiB0b29sYm94IPCfp7AgXFxcbiAqIGNob3JlIOKamSBcXFxuICogY29uZmlnIPCfm6AgXFxcbiAqIHJlbmRlcmVyIPCfk5AgXFxcbiAqIHBhY2thZ2Ug8J+TpiBcXFxuICogdGltZSDij7MgXFxcbiAqIGRvd25sb2FkIPCfk6UgXFxcbiAqIHVwbG9hZCDwn5OkIFxcXG4gKiBidWcg8J+moCBcXFxuICogYm9tYiDwn5KjIFxcXG4gKiB0bnQg8J+nqCBcXFxuICogd2FybmluZyDimqDvuI8gXFxcbiAqIGNoYXJ0IPCfk4ogXFxcbiAqIGNoYXJ0X3VwIPCfk4ggXFxcbiAqIGNoYXJ0X2Rvd24g8J+TiSBcXFxuICogY2lyY2xlX3JlZCDwn5S0IFxcXG4gKiBjaXJjbGVfb3JhbmdlIPCfn6AgXFxcbiAqIGNpcmNsZV95ZWxsb3cg8J+foSBcXFxuICogY2lyY2xlX2dyZWVuIPCfn6IgXFxcbiAqIGNpcmNsZV9ibHVlIPCflLUgXFxcbiAqIGNpcmNsZV92aW9sZXQg8J+foyBcXFxuICogY2lyY2xlX2JsYWNrIOKaq++4jyBcXFxuICogY2lyY2xlX3doaXRlIOKaqu+4jyBcXFxuICogY2lyY2xlX2Jyb3duIPCfn6QgXFxcbiAqIHNxdWFyZV9yZWQg8J+fpSBcXFxuICogc3F1YXJlX29yYW5nZSDwn5+nIFxcXG4gKiBzcXVhcmVfeWVsbG93IPCfn6ggXFxcbiAqIHNxdWFyZV9ncmVlbiDwn5+pIFxcXG4gKiBzcXVhcmVfYmx1ZSDwn5+mIFxcXG4gKiBzcXVhcmVfdmlvbGV0IPCfn6ogXFxcbiAqIHNxdWFyZV9ibGFjayDirJvvuI8gXFxcbiAqIHNxdWFyZV93aGl0ZSDirJzvuI8gXFxcbiAqIHNxdWFyZV9icm93biDwn5+rXG4gKi9cbmV4cG9ydCBjb25zdCBMb2dJY29uID0ge1xuICAgIGF1dGhvcml6YXRpb246IG5ldyBFbW90aWNvbihcIvCflJBcIiksXG4gICAgbmF2aWdhdGlvbjogbmV3IEVtb3RpY29uKFwi8J+nrVwiKSxcbiAgICB1c2VyOiBuZXcgRW1vdGljb24oXCLwn6qqXCIpLFxuICAgIHNlY3VyaXR5OiBuZXcgRW1vdGljb24oXCLwn5uhXCIpLFxuICAgIHN5c3RlbTogbmV3IEVtb3RpY29uKFwi8J+WpVwiKSxcbiAgICB0b29sYm94OiBuZXcgRW1vdGljb24oXCLwn6ewXCIpLFxuICAgIGNob3JlOiBuZXcgRW1vdGljb24oXCLimplcIiksXG4gICAgY29uZmlnOiBuZXcgRW1vdGljb24oXCLwn5ugXCIpLFxuICAgIHJlbmRlcmVyOiBuZXcgRW1vdGljb24oXCLwn5OQXCIpLFxuICAgIHBhY2thZ2U6IG5ldyBFbW90aWNvbihcIvCfk6ZcIiksXG4gICAgdGltZTogbmV3IEVtb3RpY29uKFwi4o+zXCIpLFxuICAgIGRvd25sb2FkOiBuZXcgRW1vdGljb24oXCLwn5OlXCIpLFxuICAgIHVwbG9hZDogbmV3IEVtb3RpY29uKFwi8J+TpFwiKSxcbiAgICBidWc6IG5ldyBFbW90aWNvbihcIvCfpqBcIiksXG4gICAgYm9tYjogbmV3IEVtb3RpY29uKFwi8J+So1wiKSxcbiAgICB0bnQ6IG5ldyBFbW90aWNvbihcIvCfp6hcIiksXG4gICAgc3RvcDogbmV3IEVtb3RpY29uKFwi8J+bkVwiKSxcbiAgICBwb2xpY2U6IG5ldyBFbW90aWNvbihcIvCfmqhcIiksXG4gICAgcm9ja2V0OiBuZXcgRW1vdGljb24oXCLwn5qAXCIpLFxuICAgIHdhcm5pbmc6IG5ldyBFbW90aWNvbihcIuKaoO+4j1wiKSxcbiAgICBjaGFydDogbmV3IEVtb3RpY29uKFwi8J+TilwiKSxcbiAgICBjaGFydF91cDogbmV3IEVtb3RpY29uKFwi8J+TiFwiKSxcbiAgICBjaGFydF9kb3duOiBuZXcgRW1vdGljb24oXCLwn5OJXCIpLFxuXG4gICAgY2lyY2xlX3JlZDogbmV3IEVtb3RpY29uKFwi8J+UtFwiKSxcbiAgICBjaXJjbGVfb3JhbmdlOiBuZXcgRW1vdGljb24oXCLwn5+gXCIpLFxuICAgIGNpcmNsZV95ZWxsb3c6IG5ldyBFbW90aWNvbihcIvCfn6FcIiksXG4gICAgY2lyY2xlX2dyZWVuOiBuZXcgRW1vdGljb24oXCLwn5+iXCIpLFxuICAgIGNpcmNsZV9ibHVlOiBuZXcgRW1vdGljb24oXCLwn5S1XCIpLFxuICAgIGNpcmNsZV92aW9sZXQ6IG5ldyBFbW90aWNvbihcIvCfn6NcIiksXG4gICAgY2lyY2xlX2JsYWNrOiBuZXcgRW1vdGljb24oXCLimqvvuI9cIiksXG4gICAgY2lyY2xlX3doaXRlOiBuZXcgRW1vdGljb24oXCLimqrvuI9cIiksXG4gICAgY2lyY2xlX2Jyb3duOiBuZXcgRW1vdGljb24oXCLwn5+kXCIpLFxuICAgIHNxdWFyZV9yZWQ6IG5ldyBFbW90aWNvbihcIvCfn6VcIiksXG4gICAgc3F1YXJlX29yYW5nZTogbmV3IEVtb3RpY29uKFwi8J+fp1wiKSxcbiAgICBzcXVhcmVfeWVsbG93OiBuZXcgRW1vdGljb24oXCLwn5+oXCIpLFxuICAgIHNxdWFyZV9ncmVlbjogbmV3IEVtb3RpY29uKFwi8J+fqVwiKSxcbiAgICBzcXVhcmVfYmx1ZTogbmV3IEVtb3RpY29uKFwi8J+fplwiKSxcbiAgICBzcXVhcmVfdmlvbGV0OiBuZXcgRW1vdGljb24oXCLwn5+qXCIpLFxuICAgIHNxdWFyZV9ibGFjazogbmV3IEVtb3RpY29uKFwi4qyb77iPXCIpLFxuICAgIHNxdWFyZV93aGl0ZTogbmV3IEVtb3RpY29uKFwi4qyc77iPXCIpLFxuICAgIHNxdWFyZV9icm93bjogbmV3IEVtb3RpY29uKFwi8J+fq1wiKVxufVxuXG5jbGFzcyBMb2cge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNvbnRleHQ6IHN0cmluZyxcbiAgICAgICAgcHJpdmF0ZSBjb250ZXh0Q29sb3I6IHN0cmluZyxcbiAgICAgICAgcHJpdmF0ZSB0ZXh0Q29sb3I6IHN0cmluZ1xuICAgICkge1xuICAgICAgICAvLyBGb3JjZSB0aGUgYmluZGluZ3MgdG8gc3RheSBpbnRhY3Qgd2l0aCBvdmVybG9hZHMuXG4gICAgICAgIHRoaXMubG9nID0gdGhpcy5sb2cuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy53YXJuID0gdGhpcy53YXJuLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuZXJyID0gdGhpcy5lcnIuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5lcnJvciA9IHRoaXMuZXJyb3IuYmluZCh0aGlzKTtcbiAgICB9XG5cbiAgICBsb2coaWNvbjogRW1vdGljb24sIG1lc3NhZ2U6IHN0cmluZywgLi4uYXJncylcbiAgICBsb2cobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzKVxuICAgIGxvZyhpY29uT3JNZXNzYWdlOiBFbW90aWNvbiB8IHN0cmluZywgbWVzc2FnZVRleHQ6IHN0cmluZywgLi4uYXJncykge1xuICAgICAgICBpZiAoaWNvbk9yTWVzc2FnZSBpbnN0YW5jZW9mIEVtb3RpY29uKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgJHtpY29uT3JNZXNzYWdlLmljb259ICVjWyR7dGhpcy5jb250ZXh0fV0gJWMke21lc3NhZ2VUZXh0fWAsICdjb2xvcjogJyArIHRoaXMuY29udGV4dENvbG9yLCAnY29sb3I6ICcgKyB0aGlzLnRleHRDb2xvciwgLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgJWNbJHt0aGlzLmNvbnRleHR9XSAlYyR7aWNvbk9yTWVzc2FnZX1gLCAnY29sb3I6ICcgKyB0aGlzLmNvbnRleHRDb2xvciwgJ2NvbG9yOiAnICsgdGhpcy50ZXh0Q29sb3IsIC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgd2FybihpY29uOiBFbW90aWNvbiwgbWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzKVxuICAgIHdhcm4obWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzKVxuICAgIHdhcm4oaWNvbk9yTWVzc2FnZTogRW1vdGljb24gfCBzdHJpbmcsIG1lc3NhZ2VUZXh0OiBzdHJpbmcsIC4uLmFyZ3MpIHtcbiAgICAgICAgaWYgKGljb25Pck1lc3NhZ2UgaW5zdGFuY2VvZiBFbW90aWNvbikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGAke2ljb25Pck1lc3NhZ2UuaWNvbn0gJWNbJHt0aGlzLmNvbnRleHR9XSAlYyR7bWVzc2FnZVRleHR9YCwgJ2NvbG9yOiAnICsgdGhpcy5jb250ZXh0Q29sb3IsICdjb2xvcjogJyArIHRoaXMudGV4dENvbG9yLCAuLi5hcmdzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgJWNbJHt0aGlzLmNvbnRleHR9XSAlYyR7aWNvbk9yTWVzc2FnZX1gLCAnY29sb3I6ICcgKyB0aGlzLmNvbnRleHRDb2xvciwgJ2NvbG9yOiAnICsgdGhpcy50ZXh0Q29sb3IsIC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXJyKGljb246IEVtb3RpY29uLCBtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3MpXG4gICAgZXJyKG1lc3NhZ2U6IHN0cmluZywgLi4uYXJncylcbiAgICBlcnIoaWNvbk9yTWVzc2FnZTogRW1vdGljb24gfCBzdHJpbmcsIG1lc3NhZ2VUZXh0OiBzdHJpbmcsIC4uLmFyZ3MpIHtcbiAgICAgICAgaWYgKGljb25Pck1lc3NhZ2UgaW5zdGFuY2VvZiBFbW90aWNvbikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgJHtpY29uT3JNZXNzYWdlLmljb259ICVjWyR7dGhpcy5jb250ZXh0fV0gJWMke21lc3NhZ2VUZXh0fWAsICdjb2xvcjogJyArIHRoaXMuY29udGV4dENvbG9yLCAnY29sb3I6ICcgKyB0aGlzLnRleHRDb2xvciwgLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGAlY1ske3RoaXMuY29udGV4dH1dICVjJHtpY29uT3JNZXNzYWdlfWAsICdjb2xvcjogJyArIHRoaXMuY29udGV4dENvbG9yLCAnY29sb3I6ICcgKyB0aGlzLnRleHRDb2xvciwgLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlcnJvcihpY29uOiBFbW90aWNvbiwgbWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzKVxuICAgIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgLi4uYXJncylcbiAgICBlcnJvcihpY29uT3JNZXNzYWdlOiBFbW90aWNvbiB8IHN0cmluZywgbWVzc2FnZVRleHQ6IHN0cmluZywgLi4uYXJncykge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXMuZXJyKGljb25Pck1lc3NhZ2UsIG1lc3NhZ2VUZXh0LCAuLi5hcmdzKTtcbiAgICB9XG59XG5cbi8qKlxuICogRm9ybWF0dGVkIGxvZ2dlciB0aGF0IHdpbGwgcHJpbnQgYSBiaXQgb2YgY29udGV4dCBiZWZvcmUgdGhlIG1lc3NhZ2UuXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgY29uc3QgQ29uc29sZUxvZ2dlciA9IChjb250ZXh0OiBzdHJpbmcsIGNvbnRleHRDb2xvcjogc3RyaW5nLCB0ZXh0Q29sb3I6IHN0cmluZyA9IFwiIzAzYTlmNFwiKSA9PlxuICAgIG5ldyBMb2coY29udGV4dCwgY29udGV4dENvbG9yLCB0ZXh0Q29sb3IpO1xuXG4vKipcbiAqIENvbnZlcnQgYSBzdHJpbmcgYGZvb0JBUiBiYXpfMTYwMDU0JydcIjFdXCJgIGludG8gYSBzbHVnOiBgZm9vYmFyLWJhei0xNjAwNTQxYFxuICovXG5leHBvcnQgY29uc3Qgc3RyaW5nVG9TbHVnID0gKHRleHQ6IHN0cmluZykgPT5cbiAgICAodGV4dCB8fCAnJylcbiAgICAgICAgLnRyaW0oKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcLV8rIF0vZywgJy0nKVxuICAgICAgICAucmVwbGFjZSgvW15hLXowLTlcXC1cXC9dL2csICcnKTtcblxuXG4vKipcbiogSGVscGVyIHRvIHVwZGF0ZSB0aGUgcGFnZSBVUkwuXG4qIEBwYXJhbSBwYWdlIGNvbXBvbmVudCBwYWdlIElEIHRvIGxvYWQuXG4qIEBwYXJhbSBkYXRhIHN0cmluZyBvciBKU09OIGRhdGEgZm9yIHF1ZXJ5IHBhcmFtcy5cbiovXG5leHBvcnQgY29uc3QgdXBkYXRlVXJsID0gKHBhZ2U/OiBzdHJpbmcsIGRhdGE6IHN0cmluZyB8IHN0cmluZ1tdW10gfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+IHwgVVJMU2VhcmNoUGFyYW1zID0ge30sIHJlcGxhY2VTdGF0ZSA9IGZhbHNlKSA9PiB7XG4gICAgY29uc3QgW29sZEhhc2gsIHFzdHJpbmddID0gbG9jYXRpb24uaGFzaC5zcGxpdCgnPycpO1xuXG4gICAgaWYgKCFwYWdlKVxuICAgICAgICBwYWdlID0gb2xkSGFzaC5zcGxpdCgnLycpWzFdO1xuXG4gICAgY29uc3QgaGFzaCA9IGAjLyR7cGFnZX1gO1xuXG4gICAgLy8gQ29udmVydCB0aGUgZGF0YSBvYmplY3QgdG8gSlNPTi5cbiAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIFVSTFNlYXJjaFBhcmFtcykge1xuICAgICAgICBkYXRhID0gWy4uLihkYXRhIGFzIGFueSkuZW50cmllcygpXS5tYXAoKFtrLCB2XSkgPT4gKHsgW2tdOiB2IH0pKS5yZWR1Y2UoKGEsIGIpID0+ICh7IC4uLmEsIC4uLmIgfSksIHt9KTtcbiAgICB9XG5cbiAgICBjb25zdCBxdWVyeSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoZGF0YSBhcyBhbnkpIGFzIGFueTtcbiAgICBjb25zdCBwcmV2UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxc3RyaW5nKSBhcyBhbnk7XG5cbiAgICAvLyBJZiB0aGUgaGFzaCBpcyB0aGUgc2FtZSwgcmV0YWluIHBhcmFtcy5cbiAgICBpZiAoaGFzaCA9PSBvbGRIYXNoKSB7XG4gICAgICAgIHJlcGxhY2VTdGF0ZSA9IHRydWU7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIHByZXZQYXJhbXMuZW50cmllcygpKVxuICAgICAgICAgICAgaWYgKCFxdWVyeS5oYXMoa2V5KSlcbiAgICAgICAgICAgICAgICBxdWVyeS5zZXQoa2V5LCBwcmV2UGFyYW1zLmdldChrZXkpKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbF0gb2YgcXVlcnkuZW50cmllcygpKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHZhbCA9PSBudWxsIHx8XG4gICAgICAgICAgICB2YWwgPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICB2YWwgPT0gJycgfHxcbiAgICAgICAgICAgIHZhbCA9PSAnbnVsbCcgfHxcbiAgICAgICAgICAgIE51bWJlci5pc05hTih2YWwpIHx8XG4gICAgICAgICAgICB2YWwgPT0gJ05hTidcbiAgICAgICAgKVxuICAgICAgICAgICAgcXVlcnkuZGVsZXRlKGtleSk7XG4gICAgfVxuXG4gICAgaWYgKCEoaGFzaC50b0xvd2VyQ2FzZSgpID09IFwiIy9mcmFtZVwiKSB8fCBkYXRhWydpZCddID09IC0xKVxuICAgICAgICBxdWVyeS5kZWxldGUoJ2lkJyk7XG5cblxuICAgIGNvbnN0IHN0clF1ZXJ5ID0gcXVlcnkudG9TdHJpbmcoKTtcbiAgICBjb25zb2xlLmxvZyhkYXRhLCBoYXNoLCBzdHJRdWVyeSk7XG4gICAgaWYgKHJlcGxhY2VTdGF0ZSkge1xuICAgICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoZGF0YSwgJycsIGhhc2ggKyAoc3RyUXVlcnkgPyAoJz8nICsgc3RyUXVlcnkpIDogJycpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShkYXRhLCAnJywgaGFzaCArIChzdHJRdWVyeSA/ICgnPycgKyBzdHJRdWVyeSkgOiAnJykpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRVcmxEYXRhID0gKHNvdXJjZSA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoKSA9PiB7XG4gICAgY29uc3QgW2hhc2gsIHF1ZXJ5XSA9IHNvdXJjZS5zcGxpdCgnPycpO1xuICAgIGxldCBkYXRhID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeSkgYXMgYW55O1xuICAgIHJldHVybiBbLi4uZGF0YS5lbnRyaWVzKCldLm1hcCgoW2ssIHZdKSA9PiAoeyBba106IHYgfSkpLnJlZHVjZSgoYSwgYikgPT4gKHsgLi4uYSwgLi4uYiB9KSwge30pO1xufTtcbiJdfQ==
|
|
@@ -1453,7 +1453,7 @@ const stringToSlug = (text) => (text || '')
|
|
|
1453
1453
|
.trim()
|
|
1454
1454
|
.toLowerCase()
|
|
1455
1455
|
.replace(/[\-_+ ]/g, '-')
|
|
1456
|
-
.replace(/[^a-z0-9
|
|
1456
|
+
.replace(/[^a-z0-9\-\/]/g, '');
|
|
1457
1457
|
/**
|
|
1458
1458
|
* Helper to update the page URL.
|
|
1459
1459
|
* @param page component page ID to load.
|
|
@@ -2115,11 +2115,11 @@ class LazyLoaderComponent {
|
|
|
2115
2115
|
this.clearEmitter.emit();
|
|
2116
2116
|
}
|
|
2117
2117
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: LazyLoaderComponent, deps: [{ token: LazyLoaderService }, { token: i0.ViewContainerRef, optional: true }, { token: i2.DialogRef, optional: true }, { token: MAT_DIALOG_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2118
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
2118
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: LazyLoaderComponent, isStandalone: true, selector: "ngx-lazy-loader", inputs: { id: ["component", "id"], group: "group", inputs: "inputs", outputs: "outputs" }, outputs: { componentLoadError: "componentLoadError", componentLoaded: "componentLoaded" }, viewQueries: [{ propertyName: "targetContainer", first: true, predicate: ["content"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<ng-container #content></ng-container>\n\n@if (renderSpinner) {\n <div\n class=\"ngx-lazy-loader-distractor\"\n [class.destroying]=\"isClearingLoader\"\n >\n @if (config.loaderDistractorComponent) {\n <ng-container\n [ngComponentOutlet]=\"config.loaderDistractorComponent\"\n />\n }\n @if (config.loaderDistractorTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"config.loaderDistractorTemplate\"\n [ngTemplateOutletContext]=\"{ '$implicit': inputs }\"\n />\n }\n </div>\n}\n", styles: [":host{display:contents;contain:content;z-index:1;position:relative}.ngx-lazy-loader-distractor{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;background-color:var(--background-color, #212121);opacity:1;transition:opacity .3s ease;z-index:999999;animation:fade-in .3s ease}.ngx-lazy-loader-distractor.destroying{opacity:0;pointer-events:none}@keyframes fade-in{0%{opacity:0;pointer-events:none}to{opacity:1;pointer-events:all}}\n"], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
2119
2119
|
}
|
|
2120
2120
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: LazyLoaderComponent, decorators: [{
|
|
2121
2121
|
type: Component,
|
|
2122
|
-
args: [{ selector: 'ngx-lazy-loader', imports: [
|
|
2122
|
+
args: [{ selector: 'ngx-lazy-loader', imports: [NgComponentOutlet, NgTemplateOutlet], standalone: true, template: "<ng-container #content></ng-container>\n\n@if (renderSpinner) {\n <div\n class=\"ngx-lazy-loader-distractor\"\n [class.destroying]=\"isClearingLoader\"\n >\n @if (config.loaderDistractorComponent) {\n <ng-container\n [ngComponentOutlet]=\"config.loaderDistractorComponent\"\n />\n }\n @if (config.loaderDistractorTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"config.loaderDistractorTemplate\"\n [ngTemplateOutletContext]=\"{ '$implicit': inputs }\"\n />\n }\n </div>\n}\n", styles: [":host{display:contents;contain:content;z-index:1;position:relative}.ngx-lazy-loader-distractor{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;background-color:var(--background-color, #212121);opacity:1;transition:opacity .3s ease;z-index:999999;animation:fade-in .3s ease}.ngx-lazy-loader-distractor.destroying{opacity:0;pointer-events:none}@keyframes fade-in{0%{opacity:0;pointer-events:none}to{opacity:1;pointer-events:all}}\n"] }]
|
|
2123
2123
|
}], ctorParameters: () => [{ type: LazyLoaderService }, { type: i0.ViewContainerRef, decorators: [{
|
|
2124
2124
|
type: Optional
|
|
2125
2125
|
}] }, { type: i2.DialogRef, decorators: [{
|
|
@@ -2482,8 +2482,9 @@ class NavigationService {
|
|
|
2482
2482
|
}
|
|
2483
2483
|
loadRootPageFromUrl() {
|
|
2484
2484
|
const hash = location.hash.split("?")[0];
|
|
2485
|
+
const root = hash.replace(/^\/?#\//, '');
|
|
2485
2486
|
// If the URL is imprecisely set, we restore it to the landing page
|
|
2486
|
-
if (!this.lazyLoader.isComponentRegistered(
|
|
2487
|
+
if (!this.lazyLoader.isComponentRegistered(root))
|
|
2487
2488
|
return this.loadRootPage("#/Landing");
|
|
2488
2489
|
this.loadRootPage(location.hash);
|
|
2489
2490
|
}
|
|
@@ -2500,8 +2501,9 @@ class NavigationService {
|
|
|
2500
2501
|
return pars;
|
|
2501
2502
|
}, {}) || {};
|
|
2502
2503
|
log$1(`Root page navigate to '${hash}'`, { params, chunks });
|
|
2504
|
+
const root = hash.replace(/^\/?#\//, '');
|
|
2503
2505
|
this.virtualPath$.next({
|
|
2504
|
-
root: chunks[0],
|
|
2506
|
+
root: root, //chunks[0],
|
|
2505
2507
|
chunks: chunks,
|
|
2506
2508
|
args: params
|
|
2507
2509
|
});
|