@elderbyte/ngx-starter 17.11.0-beta4 → 17.11.0-beta6

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.
Files changed (32) hide show
  1. package/esm2022/lib/components/forms/search/domain/input/search-input-state.mjs +6 -6
  2. package/esm2022/lib/components/forms/search/domain/input/search-input.mjs +1 -1
  3. package/esm2022/lib/components/forms/search/elder-search-context.directive.mjs +10 -10
  4. package/esm2022/lib/components/forms/search/elder-search-input.directive.mjs +14 -29
  5. package/esm2022/lib/components/forms/search/search-box/elder-search-box.component.mjs +4 -4
  6. package/esm2022/lib/components/select/elder-select.module.mjs +15 -15
  7. package/esm2022/lib/components/select/filter/elder-chip-filter-style-resolver.mjs +19 -15
  8. package/esm2022/lib/components/select/filter/elder-chips-include-exclude.directive.mjs +144 -0
  9. package/esm2022/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.mjs +24 -31
  10. package/esm2022/lib/components/select/filter/include-exclude-model-filter-adapter.mjs +63 -0
  11. package/esm2022/lib/components/select/filter/include-exclude-selection-model.mjs +76 -20
  12. package/esm2022/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +7 -2
  13. package/esm2022/lib/components/select/multi/elder-search-include-exclude.directive.mjs +117 -43
  14. package/fesm2022/elderbyte-ngx-starter.mjs +741 -649
  15. package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
  16. package/lib/components/forms/search/domain/input/search-input-state.d.ts +3 -3
  17. package/lib/components/forms/search/domain/input/search-input.d.ts +2 -6
  18. package/lib/components/forms/search/elder-search-context.directive.d.ts +3 -3
  19. package/lib/components/forms/search/elder-search-input.directive.d.ts +7 -11
  20. package/lib/components/forms/search/search-box/elder-search-box.component.d.ts +2 -1
  21. package/lib/components/select/elder-select.module.d.ts +4 -4
  22. package/lib/components/select/filter/elder-chip-filter-style-resolver.d.ts +1 -1
  23. package/lib/components/select/filter/{elder-chips-filter.directive.d.ts → elder-chips-include-exclude.directive.d.ts} +20 -9
  24. package/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.d.ts +9 -14
  25. package/lib/components/select/filter/include-exclude-model-filter-adapter.d.ts +29 -0
  26. package/lib/components/select/filter/include-exclude-selection-model.d.ts +25 -7
  27. package/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.d.ts +2 -0
  28. package/lib/components/select/multi/elder-search-include-exclude.directive.d.ts +57 -17
  29. package/package.json +1 -1
  30. package/esm2022/lib/components/forms/search/filter/include-exclude-input-converter.mjs +0 -137
  31. package/esm2022/lib/components/select/filter/elder-chips-filter.directive.mjs +0 -93
  32. package/lib/components/forms/search/filter/include-exclude-input-converter.d.ts +0 -62
@@ -1,14 +1,9 @@
1
- import { Component, ViewChild } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, input, TemplateRef, ViewChild } from '@angular/core';
2
2
  import { BehaviorSubject } from 'rxjs';
3
- import { AsyncPipe } from '@angular/common';
4
3
  import { MatIcon } from '@angular/material/icon';
4
+ import { ElderSelectChipAvatarDirective } from '../../elder-select-chip.directive';
5
5
  import * as i0 from "@angular/core";
6
- export class ElderFilterChipTemplate {
7
- /***************************************************************************
8
- * *
9
- * Constructor *
10
- * *
11
- **************************************************************************/
6
+ export class ElderFilterChipTemplateComponent {
12
7
  constructor() {
13
8
  /***************************************************************************
14
9
  * *
@@ -16,8 +11,7 @@ export class ElderFilterChipTemplate {
16
11
  * *
17
12
  **************************************************************************/
18
13
  this._avatarRef$ = new BehaviorSubject(null);
19
- this._bodyRef$ = new BehaviorSubject(null);
20
- this._resolveAvatar$ = new BehaviorSubject(null);
14
+ this.avatarResolverFn = input.required();
21
15
  }
22
16
  /***************************************************************************
23
17
  * *
@@ -30,29 +24,28 @@ export class ElderFilterChipTemplate {
30
24
  get avatarRef$() {
31
25
  return this._avatarRef$.asObservable();
32
26
  }
33
- set bodyRef(avatarRef) {
34
- this._bodyRef$.next(avatarRef);
35
- }
36
- get bodyRef$() {
37
- return this._bodyRef$.asObservable();
38
- }
39
- set resolveAvatar(fn) {
40
- this._resolveAvatar$.next(fn);
41
- }
42
- get resolveAvatar$() {
43
- return this._resolveAvatar$.asObservable();
27
+ /***************************************************************************
28
+ * *
29
+ * Public API *
30
+ * *
31
+ **************************************************************************/
32
+ currentIcon(id) {
33
+ const fun = this.avatarResolverFn();
34
+ if (id != null || id != undefined) {
35
+ return fun ? fun(id) : 'help_outline';
36
+ }
37
+ else {
38
+ return 'help_outline';
39
+ }
44
40
  }
45
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ElderFilterChipTemplate, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
46
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: ElderFilterChipTemplate, isStandalone: true, selector: "elder-filter-chip-template", viewQueries: [{ propertyName: "avatarRef", first: true, predicate: ["avatar"], descendants: true }, { propertyName: "bodyRef", first: true, predicate: ["body"], descendants: true }], ngImport: i0, template: "<ng-template #avatar let-chipModel>\n @if(resolveAvatar$ | async; as resolveAvatar) {\n <mat-icon class=\"material-icons-outlined\">{{resolveAvatar(chipModel?.value?.id)}}</mat-icon>\n }\n</ng-template>\n", styles: [".elder-chip-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.elder-trailing-icon{color:var(--mdc-chip-with-trailing-icon-trailing-icon-color);opacity:.54}.cdk-drag-preview{box-sizing:border-box;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
41
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ElderFilterChipTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
42
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.11", type: ElderFilterChipTemplateComponent, isStandalone: true, selector: "elder-filter-chip-template", inputs: { avatarResolverFn: { classPropertyName: "avatarResolverFn", publicName: "avatarResolverFn", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "avatarRef", first: true, predicate: ElderSelectChipAvatarDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<mat-icon\n *elderSelectChipAvatar=\"let chipModel\"\n class=\"material-icons-outlined\">\n {{currentIcon(chipModel?.value?.id)}}\n</mat-icon>\n", styles: [".elder-chip-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.elder-trailing-icon{color:var(--mdc-chip-with-trailing-icon-trailing-icon-color);opacity:.54}.cdk-drag-preview{box-sizing:border-box;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: ElderSelectChipAvatarDirective, selector: "[elderSelectChipAvatar]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
47
43
  }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ElderFilterChipTemplate, decorators: [{
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ElderFilterChipTemplateComponent, decorators: [{
49
45
  type: Component,
50
- args: [{ selector: 'elder-filter-chip-template', standalone: true, imports: [AsyncPipe, MatIcon], template: "<ng-template #avatar let-chipModel>\n @if(resolveAvatar$ | async; as resolveAvatar) {\n <mat-icon class=\"material-icons-outlined\">{{resolveAvatar(chipModel?.value?.id)}}</mat-icon>\n }\n</ng-template>\n", styles: [".elder-chip-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.elder-trailing-icon{color:var(--mdc-chip-with-trailing-icon-trailing-icon-color);opacity:.54}.cdk-drag-preview{box-sizing:border-box;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
51
- }], ctorParameters: () => [], propDecorators: { avatarRef: [{
52
- type: ViewChild,
53
- args: ['avatar']
54
- }], bodyRef: [{
46
+ args: [{ selector: 'elder-filter-chip-template', standalone: true, imports: [MatIcon, ElderSelectChipAvatarDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-icon\n *elderSelectChipAvatar=\"let chipModel\"\n class=\"material-icons-outlined\">\n {{currentIcon(chipModel?.value?.id)}}\n</mat-icon>\n", styles: [".elder-chip-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.elder-trailing-icon{color:var(--mdc-chip-with-trailing-icon-trailing-icon-color);opacity:.54}.cdk-drag-preview{box-sizing:border-box;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
47
+ }], propDecorators: { avatarRef: [{
55
48
  type: ViewChild,
56
- args: ['body']
49
+ args: [ElderSelectChipAvatarDirective, { read: TemplateRef, static: true }]
57
50
  }] } });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItZmlsdGVyLWNoaXAtdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3QvZmlsdGVyL2VsZGVyLWZpbHRlci1jaGlwLXRlbXBsYXRlL2VsZGVyLWZpbHRlci1jaGlwLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L2ZpbHRlci9lbGRlci1maWx0ZXItY2hpcC10ZW1wbGF0ZS9lbGRlci1maWx0ZXItY2hpcC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFlLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUMsZUFBZSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7O0FBUy9DLE1BQU0sT0FBTyx1QkFBdUI7SUFZbEM7Ozs7Z0ZBSTRFO0lBRTVFO1FBaEJBOzs7O29GQUk0RTtRQUVwRSxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFtQixJQUFJLENBQUMsQ0FBQztRQUMxRCxjQUFTLEdBQUUsSUFBSSxlQUFlLENBQW1CLElBQUksQ0FBQyxDQUFDO1FBQ3ZELG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQXlCLElBQUksQ0FBQyxDQUFDO0lBUTdELENBQUM7SUFFaEI7Ozs7Z0ZBSTRFO0lBRTVFLElBQ1csU0FBUyxDQUFDLFNBQTJCO1FBQzlDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUNXLE9BQU8sQ0FBQyxTQUEyQjtRQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBVyxhQUFhLENBQUMsRUFBMEI7UUFDakQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0MsQ0FBQzsrR0FsRFUsdUJBQXVCO21HQUF2Qix1QkFBdUIsNlFDWnBDLG1OQUtBLCtiREtZLFNBQVMsOENBQUUsT0FBTzs7NEZBRWpCLHVCQUF1QjtrQkFQbkMsU0FBUzsrQkFDRSw0QkFBNEIsY0FHMUIsSUFBSSxXQUNQLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQzt3REE2QmxCLFNBQVM7c0JBRG5CLFNBQVM7dUJBQUMsUUFBUTtnQkFVUixPQUFPO3NCQURqQixTQUFTO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0FzeW5jUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VsZGVyLWZpbHRlci1jaGlwLXRlbXBsYXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLWZpbHRlci1jaGlwLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWxkZXItZmlsdGVyLWNoaXAtdGVtcGxhdGUuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0FzeW5jUGlwZSwgTWF0SWNvbl1cbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJGaWx0ZXJDaGlwVGVtcGxhdGUge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgX2F2YXRhclJlZiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlbXBsYXRlUmVmPGFueT4+KG51bGwpO1xuICBwcml2YXRlIF9ib2R5UmVmJD0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZW1wbGF0ZVJlZjxhbnk+PihudWxsKTtcbiAgcHJpdmF0ZSBfcmVzb2x2ZUF2YXRhciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PChpZDogc3RyaW5nKSA9PiBzdHJpbmc+KG51bGwpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBAVmlld0NoaWxkKCdhdmF0YXInKVxuICBwdWJsaWMgc2V0IGF2YXRhclJlZihhdmF0YXJSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICB0aGlzLl9hdmF0YXJSZWYkLm5leHQoYXZhdGFyUmVmKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXZhdGFyUmVmJCgpOiBPYnNlcnZhYmxlPFRlbXBsYXRlUmVmPGFueT4+IHtcbiAgICByZXR1cm4gdGhpcy5fYXZhdGFyUmVmJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ2JvZHknKVxuICBwdWJsaWMgc2V0IGJvZHlSZWYoYXZhdGFyUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgdGhpcy5fYm9keVJlZiQubmV4dChhdmF0YXJSZWYpO1xuICB9XG5cbiAgcHVibGljIGdldCBib2R5UmVmJCgpOiBPYnNlcnZhYmxlPFRlbXBsYXRlUmVmPGFueT4+IHtcbiAgICByZXR1cm4gdGhpcy5fYm9keVJlZiQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0IHJlc29sdmVBdmF0YXIoZm46IChpZDogc3RyaW5nKSA9PiBzdHJpbmcpIHtcbiAgICB0aGlzLl9yZXNvbHZlQXZhdGFyJC5uZXh0KGZuKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVzb2x2ZUF2YXRhciQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Jlc29sdmVBdmF0YXIkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI2F2YXRhciBsZXQtY2hpcE1vZGVsPlxuICBAaWYocmVzb2x2ZUF2YXRhciQgfCBhc3luYzsgYXMgcmVzb2x2ZUF2YXRhcikge1xuICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkXCI+e3tyZXNvbHZlQXZhdGFyKGNoaXBNb2RlbD8udmFsdWU/LmlkKX19PC9tYXQtaWNvbj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItZmlsdGVyLWNoaXAtdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3QvZmlsdGVyL2VsZGVyLWZpbHRlci1jaGlwLXRlbXBsYXRlL2VsZGVyLWZpbHRlci1jaGlwLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L2ZpbHRlci9lbGRlci1maWx0ZXItY2hpcC10ZW1wbGF0ZS9lbGRlci1maWx0ZXItY2hpcC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUEwQixLQUFLLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUMsZUFBZSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBRWpELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsOEJBQThCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFVakYsTUFBTSxPQUFPLGdDQUFnQztJQVI3QztRQVVFOzs7O29GQUk0RTtRQUVwRSxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFtQixJQUFJLENBQUMsQ0FBQztRQUMzRCxxQkFBZ0IsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUEwQixDQUFDO0tBK0JwRTtJQTdCQzs7OztnRkFJNEU7SUFFNUUsSUFDVyxTQUFTLENBQUMsU0FBMkI7UUFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUVyRSxXQUFXLENBQUMsRUFBVTtRQUMzQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNwQyxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLFNBQVMsRUFBRTtZQUNqQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7U0FDdkM7YUFBTTtZQUNMLE9BQU8sY0FBYyxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQzsrR0F2Q1UsZ0NBQWdDO21HQUFoQyxnQ0FBZ0MscVNBaUJoQyw4QkFBOEIsMkJBQVMsV0FBVywyQ0MvQi9ELHFKQUtBLG9jRE1ZLE9BQU8sMklBQUUsOEJBQThCOzs0RkFHdEMsZ0NBQWdDO2tCQVI1QyxTQUFTOytCQUNFLDRCQUE0QixjQUcxQixJQUFJLFdBQ1AsQ0FBQyxPQUFPLEVBQUUsOEJBQThCLENBQUMsbUJBQ2pDLHVCQUF1QixDQUFDLE1BQU07OEJBb0JwQyxTQUFTO3NCQURuQixTQUFTO3VCQUFDLDhCQUE4QixFQUFFLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgQ29udGVudENoaWxkLCBpbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0FzeW5jUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQge0VsZGVyU2VsZWN0Q2hpcEF2YXRhckRpcmVjdGl2ZX0gZnJvbSAnLi4vLi4vZWxkZXItc2VsZWN0LWNoaXAuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZWxkZXItZmlsdGVyLWNoaXAtdGVtcGxhdGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZWxkZXItZmlsdGVyLWNoaXAtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbGRlci1maWx0ZXItY2hpcC10ZW1wbGF0ZS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTWF0SWNvbiwgRWxkZXJTZWxlY3RDaGlwQXZhdGFyRGlyZWN0aXZlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJGaWx0ZXJDaGlwVGVtcGxhdGVDb21wb25lbnQge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgX2F2YXRhclJlZiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlbXBsYXRlUmVmPGFueT4+KG51bGwpO1xuICBwdWJsaWMgYXZhdGFyUmVzb2x2ZXJGbiA9IGlucHV0LnJlcXVpcmVkPChpZDogc3RyaW5nKSA9PiBzdHJpbmc+KCk7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQFZpZXdDaGlsZChFbGRlclNlbGVjdENoaXBBdmF0YXJEaXJlY3RpdmUsIHtyZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlfSlcbiAgcHVibGljIHNldCBhdmF0YXJSZWYoYXZhdGFyUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgdGhpcy5fYXZhdGFyUmVmJC5uZXh0KGF2YXRhclJlZik7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGF2YXRhclJlZiQoKTogT2JzZXJ2YWJsZTxUZW1wbGF0ZVJlZjxhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMuX2F2YXRhclJlZiQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgY3VycmVudEljb24oaWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZnVuID0gdGhpcy5hdmF0YXJSZXNvbHZlckZuKCk7XG4gICAgaWYgKGlkICE9IG51bGwgfHwgaWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZnVuID8gZnVuKGlkKSA6ICdoZWxwX291dGxpbmUnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2hlbHBfb3V0bGluZSc7XG4gICAgfVxuICB9XG59XG4iLCI8bWF0LWljb25cbiAgKmVsZGVyU2VsZWN0Q2hpcEF2YXRhcj1cImxldCBjaGlwTW9kZWxcIlxuICBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkXCI+XG4gIHt7Y3VycmVudEljb24oY2hpcE1vZGVsPy52YWx1ZT8uaWQpfX1cbjwvbWF0LWljb24+XG4iXX0=
@@ -0,0 +1,63 @@
1
+ import { Filter } from '../../../common/data/filters/filter';
2
+ import { IncludeExcludeState, IncludeExcludeValue } from './include-exclude-selection-model';
3
+ import FilterCommons from '../../../common/data/filters/filter-commons';
4
+ export class IncludeExcludeModelFilterAdapter {
5
+ /***************************************************************************
6
+ * *
7
+ * Constructors *
8
+ * *
9
+ **************************************************************************/
10
+ constructor(includeExcludeModel, includeQueryKey, excludeQueryKey) {
11
+ this.includeExcludeModel = includeExcludeModel;
12
+ this.includeQueryKey = includeQueryKey;
13
+ this.excludeQueryKey = excludeQueryKey;
14
+ }
15
+ /***************************************************************************
16
+ * *
17
+ * Public API *
18
+ * *
19
+ **************************************************************************/
20
+ applyFilters(filters) {
21
+ const filterMap = this.convertFiltersToMap(filters);
22
+ const includeIds = this.findArrayOrNull(filterMap, this.includeQueryKey);
23
+ const excludeIds = this.findArrayOrNull(filterMap, this.excludeQueryKey);
24
+ this.includeExcludeModel.updateStates([
25
+ ...this.buildStates(includeIds, IncludeExcludeValue.INCLUDE),
26
+ ...this.buildStates(excludeIds, IncludeExcludeValue.EXCLUDE)
27
+ ]);
28
+ }
29
+ toFilters() {
30
+ const includedIds = this.includeExcludeModel.findIncluded();
31
+ const excludedIds = this.includeExcludeModel.findExcluded();
32
+ return [
33
+ new Filter(this.includeQueryKey, this.nonEmptyArrayOrNull(includedIds)),
34
+ new Filter(this.excludeQueryKey, this.nonEmptyArrayOrNull(excludedIds))
35
+ ];
36
+ }
37
+ /***************************************************************************
38
+ * *
39
+ * Private methods *
40
+ * *
41
+ **************************************************************************/
42
+ nonEmptyArrayOrNull(value) {
43
+ if (FilterCommons.isArrayAndNotEmpty(value)) {
44
+ return value;
45
+ }
46
+ return null;
47
+ }
48
+ buildStates(ids, value) {
49
+ return ids
50
+ ? ids.map(id => new IncludeExcludeState(id, value))
51
+ : [];
52
+ }
53
+ convertFiltersToMap(filters) {
54
+ const map = new Map();
55
+ filters.forEach(filter => map.set(filter.key, filter.value));
56
+ return map;
57
+ }
58
+ findArrayOrNull(values, key) {
59
+ const value = this.nonEmptyArrayOrNull(values.get(key));
60
+ return value ? value : null;
61
+ }
62
+ }
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5jbHVkZS1leGNsdWRlLW1vZGVsLWZpbHRlci1hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3QvZmlsdGVyL2luY2x1ZGUtZXhjbHVkZS1tb2RlbC1maWx0ZXItYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDM0QsT0FBTyxFQUErQixtQkFBbUIsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBRXpILE9BQU8sYUFBYSxNQUFNLDZDQUE2QyxDQUFDO0FBR3hFLE1BQU0sT0FBTyxnQ0FBZ0M7SUFFM0M7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ21CLG1CQUFpRCxFQUNqRCxlQUF1QixFQUN2QixlQUF1QjtRQUZ2Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQThCO1FBQ2pELG9CQUFlLEdBQWYsZUFBZSxDQUFRO1FBQ3ZCLG9CQUFlLEdBQWYsZUFBZSxDQUFRO0lBRTFDLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFckUsWUFBWSxDQUNqQixPQUFpQjtRQUVqQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUV6RSxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUNuQztZQUNFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsbUJBQW1CLENBQUMsT0FBTyxDQUFDO1lBQzVELEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsbUJBQW1CLENBQUMsT0FBTyxDQUFDO1NBQzdELENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSxTQUFTO1FBQ2QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM1RCxPQUFPO1lBQ0wsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdkUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDeEUsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFcEUsbUJBQW1CLENBQUMsS0FBa0I7UUFDNUMsSUFBSSxhQUFhLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0MsT0FBTyxLQUFpQixDQUFDO1NBQzFCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sV0FBVyxDQUFDLEdBQW9CLEVBQUUsS0FBMEI7UUFDbEUsT0FBTyxHQUFHO1lBQ1IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNuRCxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1QsQ0FBQztJQUVPLG1CQUFtQixDQUFDLE9BQWlCO1FBQzNDLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUF1QixDQUFDO1FBQzNDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDN0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRU8sZUFBZSxDQUFDLE1BQWdDLEVBQUUsR0FBVztRQUNuRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ZpbHRlcn0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2RhdGEvZmlsdGVycy9maWx0ZXInO1xuaW1wb3J0IHtJbmNsdWRlRXhjbHVkZVNlbGVjdGlvbk1vZGVsLCBJbmNsdWRlRXhjbHVkZVN0YXRlLCBJbmNsdWRlRXhjbHVkZVZhbHVlfSBmcm9tICcuL2luY2x1ZGUtZXhjbHVkZS1zZWxlY3Rpb24tbW9kZWwnO1xuaW1wb3J0IHtGaWx0ZXJWYWx1ZX0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2RhdGEvZmlsdGVycy9maWx0ZXItdmFsdWUnO1xuaW1wb3J0IEZpbHRlckNvbW1vbnMgZnJvbSAnLi4vLi4vLi4vY29tbW9uL2RhdGEvZmlsdGVycy9maWx0ZXItY29tbW9ucyc7XG5cblxuZXhwb3J0IGNsYXNzIEluY2x1ZGVFeGNsdWRlTW9kZWxGaWx0ZXJBZGFwdGVyIHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3JzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmNsdWRlRXhjbHVkZU1vZGVsOiBJbmNsdWRlRXhjbHVkZVNlbGVjdGlvbk1vZGVsLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5jbHVkZVF1ZXJ5S2V5OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBleGNsdWRlUXVlcnlLZXk6IHN0cmluZ1xuICApIHtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBhcHBseUZpbHRlcnMoXG4gICAgZmlsdGVyczogRmlsdGVyW11cbiAgKTogdm9pZCB7XG4gICAgY29uc3QgZmlsdGVyTWFwID0gdGhpcy5jb252ZXJ0RmlsdGVyc1RvTWFwKGZpbHRlcnMpO1xuICAgIGNvbnN0IGluY2x1ZGVJZHMgPSB0aGlzLmZpbmRBcnJheU9yTnVsbChmaWx0ZXJNYXAsIHRoaXMuaW5jbHVkZVF1ZXJ5S2V5KTtcbiAgICBjb25zdCBleGNsdWRlSWRzID0gdGhpcy5maW5kQXJyYXlPck51bGwoZmlsdGVyTWFwLCB0aGlzLmV4Y2x1ZGVRdWVyeUtleSk7XG5cbiAgICB0aGlzLmluY2x1ZGVFeGNsdWRlTW9kZWwudXBkYXRlU3RhdGVzKFxuICAgICAgW1xuICAgICAgICAuLi50aGlzLmJ1aWxkU3RhdGVzKGluY2x1ZGVJZHMsIEluY2x1ZGVFeGNsdWRlVmFsdWUuSU5DTFVERSksXG4gICAgICAgIC4uLnRoaXMuYnVpbGRTdGF0ZXMoZXhjbHVkZUlkcywgSW5jbHVkZUV4Y2x1ZGVWYWx1ZS5FWENMVURFKVxuICAgICAgXVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgdG9GaWx0ZXJzKCk6IEZpbHRlcltdIHtcbiAgICBjb25zdCBpbmNsdWRlZElkcyA9IHRoaXMuaW5jbHVkZUV4Y2x1ZGVNb2RlbC5maW5kSW5jbHVkZWQoKTtcbiAgICBjb25zdCBleGNsdWRlZElkcyA9IHRoaXMuaW5jbHVkZUV4Y2x1ZGVNb2RlbC5maW5kRXhjbHVkZWQoKTtcbiAgICByZXR1cm4gW1xuICAgICAgbmV3IEZpbHRlcih0aGlzLmluY2x1ZGVRdWVyeUtleSwgdGhpcy5ub25FbXB0eUFycmF5T3JOdWxsKGluY2x1ZGVkSWRzKSksXG4gICAgICBuZXcgRmlsdGVyKHRoaXMuZXhjbHVkZVF1ZXJ5S2V5LCB0aGlzLm5vbkVtcHR5QXJyYXlPck51bGwoZXhjbHVkZWRJZHMpKVxuICAgIF07XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIG5vbkVtcHR5QXJyYXlPck51bGwodmFsdWU6IEZpbHRlclZhbHVlKTogc3RyaW5nW10gfCBudWxsIHtcbiAgICBpZiAoRmlsdGVyQ29tbW9ucy5pc0FycmF5QW5kTm90RW1wdHkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWUgYXMgc3RyaW5nW107XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFN0YXRlcyhpZHM6IHN0cmluZ1tdIHwgbnVsbCwgdmFsdWU6IEluY2x1ZGVFeGNsdWRlVmFsdWUpOiBJbmNsdWRlRXhjbHVkZVN0YXRlW10ge1xuICAgIHJldHVybiBpZHNcbiAgICAgID8gaWRzLm1hcChpZCA9PiBuZXcgSW5jbHVkZUV4Y2x1ZGVTdGF0ZShpZCwgdmFsdWUpKVxuICAgICAgOiBbXTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEZpbHRlcnNUb01hcChmaWx0ZXJzOiBGaWx0ZXJbXSk6IE1hcDxzdHJpbmcsIEZpbHRlclZhbHVlPiB7XG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIEZpbHRlclZhbHVlPigpO1xuICAgIGZpbHRlcnMuZm9yRWFjaChmaWx0ZXIgPT4gbWFwLnNldChmaWx0ZXIua2V5LCBmaWx0ZXIudmFsdWUpKTtcbiAgICByZXR1cm4gbWFwO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kQXJyYXlPck51bGwodmFsdWVzOiBNYXA8c3RyaW5nLCBGaWx0ZXJWYWx1ZT4sIGtleTogc3RyaW5nKTogc3RyaW5nW10gfCBudWxsIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMubm9uRW1wdHlBcnJheU9yTnVsbCh2YWx1ZXMuZ2V0KGtleSkpO1xuICAgIHJldHVybiB2YWx1ZSA/IHZhbHVlIDogbnVsbDtcbiAgfVxufVxuIl19
@@ -7,21 +7,30 @@ export class IncludeExcludeState {
7
7
  this.mode = mode;
8
8
  }
9
9
  }
10
- export var IncludeExcludeMode;
11
- (function (IncludeExcludeMode) {
12
- IncludeExcludeMode["NEUTRAL"] = "NEUTRAL";
13
- IncludeExcludeMode["INCLUDE"] = "INCLUDE";
14
- IncludeExcludeMode["EXCLUDE"] = "EXCLUDE";
15
- })(IncludeExcludeMode || (IncludeExcludeMode = {}));
10
+ export var IncludeExcludeValue;
11
+ (function (IncludeExcludeValue) {
12
+ IncludeExcludeValue["NEUTRAL"] = "NEUTRAL";
13
+ IncludeExcludeValue["INCLUDE"] = "INCLUDE";
14
+ IncludeExcludeValue["EXCLUDE"] = "EXCLUDE";
15
+ })(IncludeExcludeValue || (IncludeExcludeValue = {}));
16
16
  export class IncludeExcludeSelectionModel {
17
- constructor() {
17
+ /***************************************************************************
18
+ * *
19
+ * Constructor *
20
+ * *
21
+ **************************************************************************/
22
+ constructor(strategy) {
18
23
  /***************************************************************************
19
24
  * *
20
25
  * Fields *
21
26
  * *
22
27
  **************************************************************************/
23
28
  this.log = LoggerFactory.getLogger(this.constructor.name);
29
+ this._defaultInitialValue = IncludeExcludeValue.INCLUDE;
24
30
  this.stateById$ = new BehaviorSubject(new Map());
31
+ if (!strategy)
32
+ throw new Error('strategy is required!');
33
+ this._strategy = strategy;
25
34
  }
26
35
  /***************************************************************************
27
36
  * *
@@ -34,21 +43,43 @@ export class IncludeExcludeSelectionModel {
34
43
  get selection$() {
35
44
  return this.stateById$.pipe(map(stateMap => Array.from(stateMap.values())));
36
45
  }
46
+ get strategy() {
47
+ return this._strategy;
48
+ }
49
+ set strategy(strategy) {
50
+ this._strategy = strategy;
51
+ }
52
+ get defaultInitialValue() {
53
+ return this._defaultInitialValue;
54
+ }
55
+ set defaultInitialValue(strategy) {
56
+ this._defaultInitialValue = strategy;
57
+ }
37
58
  /***************************************************************************
38
59
  * *
39
60
  * Public API *
40
61
  * *
41
62
  **************************************************************************/
63
+ findIncluded() {
64
+ return this.selection
65
+ .filter(s => s.mode === IncludeExcludeValue.INCLUDE)
66
+ .map(s => s.id);
67
+ }
68
+ findExcluded() {
69
+ return this.selection
70
+ .filter(s => s.mode === IncludeExcludeValue.EXCLUDE)
71
+ .map(s => s.id);
72
+ }
42
73
  cycleExisting(id) {
43
74
  const existingState = this.findStateById(id);
44
75
  if (existingState) {
45
- return this.updateState(id, this.cycleFilterEntitySelection(existingState.mode));
76
+ return this.updateState(id, this.nextValueByStrategy(existingState.mode));
46
77
  }
47
78
  else {
48
79
  return null;
49
80
  }
50
81
  }
51
- initTo(ids, initialMode = IncludeExcludeMode.NEUTRAL) {
82
+ initTo(ids, initialValueOverride) {
52
83
  const current = this.stateById$.getValue();
53
84
  const newStates = new Map();
54
85
  ids.forEach(id => {
@@ -56,11 +87,14 @@ export class IncludeExcludeSelectionModel {
56
87
  newStates.set(id, current.get(id));
57
88
  }
58
89
  else {
59
- newStates.set(id, new IncludeExcludeState(id, initialMode));
90
+ newStates.set(id, new IncludeExcludeState(id, initialValueOverride ?? this.defaultInitialValue));
60
91
  }
61
92
  });
62
93
  this.stateById$.next(newStates);
63
94
  }
95
+ clear() {
96
+ this.replaceSelection([]);
97
+ }
64
98
  replaceSelection(newStates) {
65
99
  this.stateById$.next(this.toStateMap(newStates));
66
100
  }
@@ -89,20 +123,42 @@ export class IncludeExcludeSelectionModel {
89
123
  * Private methods *
90
124
  * *
91
125
  **************************************************************************/
92
- cycleFilterEntitySelection(selection) {
93
- switch (selection) {
94
- case IncludeExcludeMode.NEUTRAL:
95
- return IncludeExcludeMode.INCLUDE;
96
- case IncludeExcludeMode.INCLUDE:
97
- return IncludeExcludeMode.EXCLUDE;
98
- case IncludeExcludeMode.EXCLUDE:
99
- return IncludeExcludeMode.NEUTRAL;
126
+ nextValueByStrategy(current) {
127
+ switch (this._strategy) {
128
+ case 'FULL_CYCLE':
129
+ return this.nextValueFullCycle(current);
130
+ case 'TOGGLE':
131
+ return this.nextValueToggle(current);
132
+ default:
133
+ throw new Error('Unsupported cycle strategy: ' + this._strategy);
134
+ }
135
+ }
136
+ nextValueToggle(current) {
137
+ switch (current) {
138
+ case IncludeExcludeValue.NEUTRAL:
139
+ return IncludeExcludeValue.INCLUDE;
140
+ case IncludeExcludeValue.INCLUDE:
141
+ return IncludeExcludeValue.EXCLUDE;
142
+ case IncludeExcludeValue.EXCLUDE:
143
+ return IncludeExcludeValue.INCLUDE;
144
+ default:
145
+ return IncludeExcludeValue.INCLUDE;
146
+ }
147
+ }
148
+ nextValueFullCycle(current) {
149
+ switch (current) {
150
+ case IncludeExcludeValue.NEUTRAL:
151
+ return IncludeExcludeValue.INCLUDE;
152
+ case IncludeExcludeValue.INCLUDE:
153
+ return IncludeExcludeValue.EXCLUDE;
154
+ case IncludeExcludeValue.EXCLUDE:
155
+ return IncludeExcludeValue.NEUTRAL;
100
156
  default:
101
- return IncludeExcludeMode.NEUTRAL;
157
+ return IncludeExcludeValue.NEUTRAL;
102
158
  }
103
159
  }
104
160
  toStateMap(list) {
105
161
  return new Map(list.map(entity => [entity.id, entity]));
106
162
  }
107
163
  }
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5jbHVkZS1leGNsdWRlLXNlbGVjdGlvbi1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L2ZpbHRlci9pbmNsdWRlLWV4Y2x1ZGUtc2VsZWN0aW9uLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxlQUFlLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQ2tCLEVBQVUsRUFDbkIsSUFBd0I7UUFEZixPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQ25CLFNBQUksR0FBSixJQUFJLENBQW9CO0lBQzdCLENBQUM7Q0FDTjtBQUVELE1BQU0sQ0FBTixJQUFZLGtCQUlYO0FBSkQsV0FBWSxrQkFBa0I7SUFDNUIseUNBQW1CLENBQUE7SUFDbkIseUNBQW1CLENBQUE7SUFDbkIseUNBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUpXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFJN0I7QUFHRCxNQUFNLE9BQU8sNEJBQTRCO0lBQXpDO1FBRUU7Ozs7b0ZBSTRFO1FBRTNELFFBQUcsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckQsZUFBVSxHQUFHLElBQUksZUFBZSxDQUFtQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7SUE4R2pHLENBQUM7SUE1R0M7Ozs7Z0ZBSTRFO0lBRTVFLElBQVcsU0FBUztRQUNsQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxN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QUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRXBFLDBCQUEwQixDQUFDLFNBQTZCO1FBQzlELFFBQVEsU0FBUyxFQUFFO1lBQ2pCLEtBQUssa0JBQWtCLENBQUMsT0FBTztnQkFDN0IsT0FBTyxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7WUFDcEMsS0FBSyxrQkFBa0IsQ0FBQyxPQUFPO2dCQUM3QixPQUFPLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztZQUNwQyxLQUFLLGtCQUFrQixDQUFDLE9BQU87Z0JBQzdCLE9BQU8sa0JBQWtCLENBQUMsT0FBTyxDQUFDO1lBQ3BDO2dCQUNFLE9BQU8sa0JBQWtCLENBQUMsT0FBTyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztJQUVPLFVBQVUsQ0FDaEIsSUFBMkI7UUFFM0IsT0FBTyxJQUFJLEdBQUcsQ0FDWixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQ3hDLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBjbGFzcyBJbmNsdWRlRXhjbHVkZVN0YXRlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGlkOiBzdHJpbmcsXG4gICAgcHVibGljIG1vZGU6IEluY2x1ZGVFeGNsdWRlTW9kZVxuICApIHsgfVxufVxuXG5leHBvcnQgZW51bSBJbmNsdWRlRXhjbHVkZU1vZGUge1xuICBORVVUUkFMID0gJ05FVVRSQUwnLFxuICBJTkNMVURFID0gJ0lOQ0xVREUnLFxuICBFWENMVURFID0gJ0VYQ0xVREUnXG59XG5cblxuZXhwb3J0IGNsYXNzIEluY2x1ZGVFeGNsdWRlU2VsZWN0aW9uTW9kZWwge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHN0YXRlQnlJZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hcDxzdHJpbmcsIEluY2x1ZGVFeGNsdWRlU3RhdGU+PihuZXcgTWFwKCkpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBnZXQgc2VsZWN0aW9uKCk6IEluY2x1ZGVFeGNsdWRlU3RhdGVbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5zdGF0ZUJ5SWQkLmdldFZhbHVlKCkudmFsdWVzKCkpO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3Rpb24kKCk6IE9ic2VydmFibGU8SW5jbHVkZUV4Y2x1ZGVTdGF0ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVCeUlkJC5waXBlKFxuICAgICAgbWFwKHN0YXRlTWFwID0+IEFycmF5LmZyb20oc3RhdGVNYXAudmFsdWVzKCkpKSxcbiAgICApO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGN5Y2xlRXhpc3RpbmcoaWQ6IHN0cmluZyk6IEluY2x1ZGVFeGNsdWRlU3RhdGUgfCBudWxsIHtcbiAgICBjb25zdCBleGlzdGluZ1N0YXRlID0gdGhpcy5maW5kU3RhdGVCeUlkKGlkKTtcbiAgICBpZiAoZXhpc3RpbmdTdGF0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlU3RhdGUoXG4gICAgICAgIGlkLFxuICAgICAgICB0aGlzLmN5Y2xlRmlsdGVyRW50aXR5U2VsZWN0aW9uKGV4aXN0aW5nU3RhdGUubW9kZSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpbml0VG8oXG4gICAgaWRzOiBzdHJpbmdbXSxcbiAgICBpbml0aWFsTW9kZSA9IEluY2x1ZGVFeGNsdWRlTW9kZS5ORVVUUkFMXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLnN0YXRlQnlJZCQuZ2V0VmFsdWUoKTtcbiAgICBjb25zdCBuZXdTdGF0ZXMgPSBuZXcgTWFwPHN0cmluZywgSW5jbHVkZUV4Y2x1ZGVTdGF0ZT4oKTtcbiAgICBpZHMuZm9yRWFjaChpZCA9PiB7XG4gICAgICBpZihjdXJyZW50LmhhcyhpZCkpe1xuICAgICAgICBuZXdTdGF0ZXMuc2V0KGlkLCBjdXJyZW50LmdldChpZCkpO1xuICAgICAgfWVsc2V7XG4gICAgICAgIG5ld1N0YXRlcy5zZXQoaWQsIG5ldyBJbmNsdWRlRXhjbHVkZVN0YXRlKGlkLCBpbml0aWFsTW9kZSkpXG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zdGF0ZUJ5SWQkLm5leHQobmV3U3RhdGVzKTtcbiAgfVxuXG4gIHB1YmxpYyByZXBsYWNlU2VsZWN0aW9uKFxuICAgIG5ld1N0YXRlczogSW5jbHVkZUV4Y2x1ZGVTdGF0ZVtdXG4gICk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVCeUlkJC5uZXh0KHRoaXMudG9TdGF0ZU1hcChuZXdTdGF0ZXMpKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTdGF0ZShpZDogc3RyaW5nLCBtb2RlOiBJbmNsdWRlRXhjbHVkZU1vZGUpOiBJbmNsdWRlRXhjbHVkZVN0YXRlIHtcbiAgICAgY29uc3QgbWFwID0gdGhpcy5zdGF0ZUJ5SWQkLmdldFZhbHVlKCk7XG4gICAgIGNvbnN0IG5ld1N0YXRlID0gbmV3IEluY2x1ZGVFeGNsdWRlU3RhdGUoaWQsIG1vZGUpO1xuICAgICBtYXAuc2V0KGlkLCBuZXdTdGF0ZSk7XG4gICAgIHRoaXMuc3RhdGVCeUlkJC5uZXh0KG1hcCk7XG4gICAgIHJldHVybiBuZXdTdGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTdGF0ZXMoXG4gICAgbmV3U3RhdGVzOiBJbmNsdWRlRXhjbHVkZVN0YXRlW11cbiAgKTogdm9pZHtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5zdGF0ZUJ5SWQkLmdldFZhbHVlKCk7XG4gICAgbmV3U3RhdGVzLmZvckVhY2gobmV3U3RhdGUgPT4ge1xuICAgICAgY3VycmVudC5zZXQobmV3U3RhdGUuaWQsIG5ld1N0YXRlKTtcbiAgICB9KTtcbiAgICB0aGlzLnN0YXRlQnlJZCQubmV4dChjdXJyZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBpc0luTW9kZShpZDogc3RyaW5nLCBtb2RlOiBJbmNsdWRlRXhjbHVkZU1vZGUpOiBib29sZWFue1xuICAgIHJldHVybiB0aGlzLmZpbmRTdGF0ZUJ5SWQoaWQpPy5tb2RlID09IG1vZGU7XG4gIH1cblxuICBwdWJsaWMgZmluZFN0YXRlQnlJZChzZWFyY2hlZElkOiBzdHJpbmcpOiBJbmNsdWRlRXhjbHVkZVN0YXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVCeUlkJC5nZXRWYWx1ZSgpLmdldChzZWFyY2hlZElkKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgY3ljbGVGaWx0ZXJFbnRpdHlTZWxlY3Rpb24oc2VsZWN0aW9uOiBJbmNsdWRlRXhjbHVkZU1vZGUpOiBJbmNsdWRlRXhjbHVkZU1vZGUge1xuICAgIHN3aXRjaCAoc2VsZWN0aW9uKSB7XG4gICAgICBjYXNlIEluY2x1ZGVFeGNsdWRlTW9kZS5ORVVUUkFMOlxuICAgICAgICByZXR1cm4gSW5jbHVkZUV4Y2x1ZGVNb2RlLklOQ0xVREU7XG4gICAgICBjYXNlIEluY2x1ZGVFeGNsdWRlTW9kZS5JTkNMVURFOlxuICAgICAgICByZXR1cm4gSW5jbHVkZUV4Y2x1ZGVNb2RlLkVYQ0xVREU7XG4gICAgICBjYXNlIEluY2x1ZGVFeGNsdWRlTW9kZS5FWENMVURFOlxuICAgICAgICByZXR1cm4gSW5jbHVkZUV4Y2x1ZGVNb2RlLk5FVVRSQUw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gSW5jbHVkZUV4Y2x1ZGVNb2RlLk5FVVRSQUw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0b1N0YXRlTWFwKFxuICAgIGxpc3Q6IEluY2x1ZGVFeGNsdWRlU3RhdGVbXVxuICApOiBNYXA8c3RyaW5nLCBJbmNsdWRlRXhjbHVkZVN0YXRlPiB7XG4gICAgcmV0dXJuIG5ldyBNYXAoXG4gICAgICBsaXN0Lm1hcChlbnRpdHkgPT4gW2VudGl0eS5pZCwgZW50aXR5XSlcbiAgICApO1xuICB9XG59XG4iXX0=
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5jbHVkZS1leGNsdWRlLXNlbGVjdGlvbi1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L2ZpbHRlci9pbmNsdWRlLWV4Y2x1ZGUtc2VsZWN0aW9uLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxlQUFlLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQ2tCLEVBQVUsRUFDbkIsSUFBeUI7UUFEaEIsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFxQjtJQUM5QixDQUFDO0NBQ047QUFFRCxNQUFNLENBQU4sSUFBWSxtQkFJWDtBQUpELFdBQVksbUJBQW1CO0lBQzdCLDBDQUFtQixDQUFBO0lBQ25CLDBDQUFtQixDQUFBO0lBQ25CLDBDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFKVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBSTlCO0FBSUQsTUFBTSxPQUFPLDRCQUE0QjtJQWN2Qzs7OztnRkFJNEU7SUFFNUUsWUFDRSxRQUFxQztRQW5CdkM7Ozs7b0ZBSTRFO1FBRTNELFFBQUcsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFHOUQseUJBQW9CLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxDQUFDO1FBQzFDLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBbUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBVzdGLElBQUcsQ0FBQyxRQUFRO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFNUUsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN6QixHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQy9DLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBVyxRQUFRLENBQUMsUUFBcUM7UUFDdkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcsbUJBQW1CO1FBQzVCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFXLG1CQUFtQixDQUFDLFFBQTZCO1FBQzFELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxRQUFRLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUVyRSxZQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVM7YUFDbEIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxtQkFBbUIsQ0FBQyxPQUFPLENBQUM7YUFDbkQsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFTSxZQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVM7YUFDbEIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxtQkFBbUIsQ0FBQyxPQUFPLENBQUM7YUFDbkQsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFTSxhQUFhLENBQUMsRUFBVTtRQUM3QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLElBQUksYUFBYSxFQUFFO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FDckIsRUFBRSxFQUNGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQzdDLENBQUM7U0FDSDthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7SUFFTSxNQUFNLENBQ1gsR0FBYSxFQUNiLG9CQUEwQztRQUUxQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzNDLE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxFQUErQixDQUFDO1FBQ3pELEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDZixJQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUM7Z0JBQ2pCLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNwQztpQkFBTTtnQkFDTCxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLG1CQUFtQixDQUFDLEVBQUUsRUFBRSxvQkFBb0IsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFBO2FBQ2pHO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU0sZ0JBQWdCLENBQ3JCLFNBQWdDO1FBRWhDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU0sV0FBVyxDQUFDLEVBQVUsRUFBRSxJQUF5QjtRQUNyRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sUUFBUSxHQUFHLElBQUksbUJBQW1CLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25ELEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLE9BQU8sUUFBUSxDQUFDO0lBQ25CLENBQUM7SUFFTSxZQUFZLENBQ2pCLFNBQWdDO1FBRWhDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDM0MsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU0sUUFBUSxDQUFDLEVBQVUsRUFBRSxJQUF5QjtRQUNuRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQztJQUM5QyxDQUFDO0lBRU0sYUFBYSxDQUFDLFVBQWtCO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUlwRSxtQkFBbUIsQ0FBQyxPQUE0QjtRQUN0RCxRQUFRLElBQUksQ0FBQyxTQUFTLEVBQUM7WUFDckIsS0FBSyxZQUFZO2dCQUNmLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzFDLEtBQUssUUFBUTtnQkFDWCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkM7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDcEU7SUFDSCxDQUFDO0lBRU8sZUFBZSxDQUFDLE9BQTRCO1FBQ2xELFFBQVEsT0FBTyxFQUFFO1lBQ2YsS0FBSyxtQkFBbUIsQ0FBQyxPQUFPO2dCQUM5QixPQUFPLG1CQUFtQixDQUFDLE9BQU8sQ0FBQztZQUNyQyxLQUFLLG1CQUFtQixDQUFDLE9BQU87Z0JBQzlCLE9BQU8sbUJBQW1CLENBQUMsT0FBTyxDQUFDO1lBQ3JDLEtBQUssbUJBQW1CLENBQUMsT0FBTztnQkFDOUIsT0FBTyxtQkFBbUIsQ0FBQyxPQUFPLENBQUM7WUFDckM7Z0JBQ0UsT0FBTyxtQkFBbUIsQ0FBQyxPQUFPLENBQUM7U0FDdEM7SUFDSCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsT0FBNEI7UUFDckQsUUFBUSxPQUFPLEVBQUU7WUFDZixLQUFLLG1CQUFtQixDQUFDLE9BQU87Z0JBQzlCLE9BQU8sbUJBQW1CLENBQUMsT0FBTyxDQUFDO1lBQ3JDLEtBQUssbUJBQW1CLENBQUMsT0FBTztnQkFDOUIsT0FBTyxtQkFBbUIsQ0FBQyxPQUFPLENBQUM7WUFDckMsS0FBSyxtQkFBbUIsQ0FBQyxPQUFPO2dCQUM5QixPQUFPLG1CQUFtQixDQUFDLE9BQU8sQ0FBQztZQUNyQztnQkFDRSxPQUFPLG1CQUFtQixDQUFDLE9BQU8sQ0FBQztTQUN0QztJQUNILENBQUM7SUFFTyxVQUFVLENBQ2hCLElBQTJCO1FBRTNCLE9BQU8sSUFBSSxHQUFHLENBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUN4QyxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgY2xhc3MgSW5jbHVkZUV4Y2x1ZGVTdGF0ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBpZDogc3RyaW5nLFxuICAgIHB1YmxpYyBtb2RlOiBJbmNsdWRlRXhjbHVkZVZhbHVlXG4gICkgeyB9XG59XG5cbmV4cG9ydCBlbnVtIEluY2x1ZGVFeGNsdWRlVmFsdWUge1xuICBORVVUUkFMID0gJ05FVVRSQUwnLFxuICBJTkNMVURFID0gJ0lOQ0xVREUnLFxuICBFWENMVURFID0gJ0VYQ0xVREUnXG59XG5cbmV4cG9ydCB0eXBlIEluY2x1ZGVFeGNsdWRlQ3ljbGVTdHJhdGVneSA9ICdUT0dHTEUnIHwgJ0ZVTExfQ1lDTEUnO1xuXG5leHBvcnQgY2xhc3MgSW5jbHVkZUV4Y2x1ZGVTZWxlY3Rpb25Nb2RlbCB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIHByaXZhdGUgX3N0cmF0ZWd5OiBJbmNsdWRlRXhjbHVkZUN5Y2xlU3RyYXRlZ3k7XG4gIHByaXZhdGUgX2RlZmF1bHRJbml0aWFsVmFsdWUgPSBJbmNsdWRlRXhjbHVkZVZhbHVlLklOQ0xVREU7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhdGVCeUlkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFwPHN0cmluZywgSW5jbHVkZUV4Y2x1ZGVTdGF0ZT4+KG5ldyBNYXAoKSk7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgc3RyYXRlZ3k6IEluY2x1ZGVFeGNsdWRlQ3ljbGVTdHJhdGVneVxuICApIHtcbiAgICBpZighc3RyYXRlZ3kpIHRocm93IG5ldyBFcnJvcignc3RyYXRlZ3kgaXMgcmVxdWlyZWQhJyk7XG4gICAgdGhpcy5fc3RyYXRlZ3kgPSBzdHJhdGVneTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBnZXQgc2VsZWN0aW9uKCk6IEluY2x1ZGVFeGNsdWRlU3RhdGVbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5zdGF0ZUJ5SWQkLmdldFZhbHVlKCkudmFsdWVzKCkpO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3Rpb24kKCk6IE9ic2VydmFibGU8SW5jbHVkZUV4Y2x1ZGVTdGF0ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVCeUlkJC5waXBlKFxuICAgICAgbWFwKHN0YXRlTWFwID0+IEFycmF5LmZyb20oc3RhdGVNYXAudmFsdWVzKCkpKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBzdHJhdGVneSgpOiBJbmNsdWRlRXhjbHVkZUN5Y2xlU3RyYXRlZ3kge1xuICAgIHJldHVybiB0aGlzLl9zdHJhdGVneTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgc3RyYXRlZ3koc3RyYXRlZ3k6IEluY2x1ZGVFeGNsdWRlQ3ljbGVTdHJhdGVneSkge1xuICAgIHRoaXMuX3N0cmF0ZWd5ID0gc3RyYXRlZ3k7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRlZmF1bHRJbml0aWFsVmFsdWUoKTogSW5jbHVkZUV4Y2x1ZGVWYWx1ZSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRJbml0aWFsVmFsdWU7XG4gIH1cblxuICBwdWJsaWMgc2V0IGRlZmF1bHRJbml0aWFsVmFsdWUoc3RyYXRlZ3k6IEluY2x1ZGVFeGNsdWRlVmFsdWUpIHtcbiAgICB0aGlzLl9kZWZhdWx0SW5pdGlhbFZhbHVlID0gc3RyYXRlZ3k7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgZmluZEluY2x1ZGVkKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25cbiAgICAgIC5maWx0ZXIocyA9PiBzLm1vZGUgPT09IEluY2x1ZGVFeGNsdWRlVmFsdWUuSU5DTFVERSlcbiAgICAgIC5tYXAocyA9PiBzLmlkKTtcbiAgfVxuXG4gIHB1YmxpYyBmaW5kRXhjbHVkZWQoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvblxuICAgICAgLmZpbHRlcihzID0+IHMubW9kZSA9PT0gSW5jbHVkZUV4Y2x1ZGVWYWx1ZS5FWENMVURFKVxuICAgICAgLm1hcChzID0+IHMuaWQpO1xuICB9XG5cbiAgcHVibGljIGN5Y2xlRXhpc3RpbmcoaWQ6IHN0cmluZyk6IEluY2x1ZGVFeGNsdWRlU3RhdGUgfCBudWxsIHtcbiAgICBjb25zdCBleGlzdGluZ1N0YXRlID0gdGhpcy5maW5kU3RhdGVCeUlkKGlkKTtcbiAgICBpZiAoZXhpc3RpbmdTdGF0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlU3RhdGUoXG4gICAgICAgIGlkLFxuICAgICAgICB0aGlzLm5leHRWYWx1ZUJ5U3RyYXRlZ3koZXhpc3RpbmdTdGF0ZS5tb2RlKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGluaXRUbyhcbiAgICBpZHM6IHN0cmluZ1tdLFxuICAgIGluaXRpYWxWYWx1ZU92ZXJyaWRlPzogSW5jbHVkZUV4Y2x1ZGVWYWx1ZVxuICApOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5zdGF0ZUJ5SWQkLmdldFZhbHVlKCk7XG4gICAgY29uc3QgbmV3U3RhdGVzID0gbmV3IE1hcDxzdHJpbmcsIEluY2x1ZGVFeGNsdWRlU3RhdGU+KCk7XG4gICAgaWRzLmZvckVhY2goaWQgPT4ge1xuICAgICAgaWYoY3VycmVudC5oYXMoaWQpKXtcbiAgICAgICAgbmV3U3RhdGVzLnNldChpZCwgY3VycmVudC5nZXQoaWQpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1N0YXRlcy5zZXQoaWQsIG5ldyBJbmNsdWRlRXhjbHVkZVN0YXRlKGlkLCBpbml0aWFsVmFsdWVPdmVycmlkZSA/PyB0aGlzLmRlZmF1bHRJbml0aWFsVmFsdWUpKVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuc3RhdGVCeUlkJC5uZXh0KG5ld1N0YXRlcyk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5yZXBsYWNlU2VsZWN0aW9uKFtdKTtcbiAgfVxuXG4gIHB1YmxpYyByZXBsYWNlU2VsZWN0aW9uKFxuICAgIG5ld1N0YXRlczogSW5jbHVkZUV4Y2x1ZGVTdGF0ZVtdXG4gICk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVCeUlkJC5uZXh0KHRoaXMudG9TdGF0ZU1hcChuZXdTdGF0ZXMpKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTdGF0ZShpZDogc3RyaW5nLCBtb2RlOiBJbmNsdWRlRXhjbHVkZVZhbHVlKTogSW5jbHVkZUV4Y2x1ZGVTdGF0ZSB7XG4gICAgIGNvbnN0IG1hcCA9IHRoaXMuc3RhdGVCeUlkJC5nZXRWYWx1ZSgpO1xuICAgICBjb25zdCBuZXdTdGF0ZSA9IG5ldyBJbmNsdWRlRXhjbHVkZVN0YXRlKGlkLCBtb2RlKTtcbiAgICAgbWFwLnNldChpZCwgbmV3U3RhdGUpO1xuICAgICB0aGlzLnN0YXRlQnlJZCQubmV4dChtYXApO1xuICAgICByZXR1cm4gbmV3U3RhdGU7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlU3RhdGVzKFxuICAgIG5ld1N0YXRlczogSW5jbHVkZUV4Y2x1ZGVTdGF0ZVtdXG4gICk6IHZvaWR7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuc3RhdGVCeUlkJC5nZXRWYWx1ZSgpO1xuICAgIG5ld1N0YXRlcy5mb3JFYWNoKG5ld1N0YXRlID0+IHtcbiAgICAgIGN1cnJlbnQuc2V0KG5ld1N0YXRlLmlkLCBuZXdTdGF0ZSk7XG4gICAgfSk7XG4gICAgdGhpcy5zdGF0ZUJ5SWQkLm5leHQoY3VycmVudCk7XG4gIH1cblxuICBwdWJsaWMgaXNJbk1vZGUoaWQ6IHN0cmluZywgbW9kZTogSW5jbHVkZUV4Y2x1ZGVWYWx1ZSk6IGJvb2xlYW57XG4gICAgcmV0dXJuIHRoaXMuZmluZFN0YXRlQnlJZChpZCk/Lm1vZGUgPT0gbW9kZTtcbiAgfVxuXG4gIHB1YmxpYyBmaW5kU3RhdGVCeUlkKHNlYXJjaGVkSWQ6IHN0cmluZyk6IEluY2x1ZGVFeGNsdWRlU3RhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZUJ5SWQkLmdldFZhbHVlKCkuZ2V0KHNlYXJjaGVkSWQpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblxuXG4gIHByaXZhdGUgbmV4dFZhbHVlQnlTdHJhdGVneShjdXJyZW50OiBJbmNsdWRlRXhjbHVkZVZhbHVlKTogSW5jbHVkZUV4Y2x1ZGVWYWx1ZSB7XG4gICAgc3dpdGNoICh0aGlzLl9zdHJhdGVneSl7XG4gICAgICBjYXNlICdGVUxMX0NZQ0xFJzpcbiAgICAgICAgcmV0dXJuIHRoaXMubmV4dFZhbHVlRnVsbEN5Y2xlKGN1cnJlbnQpO1xuICAgICAgY2FzZSAnVE9HR0xFJzpcbiAgICAgICAgcmV0dXJuIHRoaXMubmV4dFZhbHVlVG9nZ2xlKGN1cnJlbnQpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBjeWNsZSBzdHJhdGVneTogJyArIHRoaXMuX3N0cmF0ZWd5KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5leHRWYWx1ZVRvZ2dsZShjdXJyZW50OiBJbmNsdWRlRXhjbHVkZVZhbHVlKTogSW5jbHVkZUV4Y2x1ZGVWYWx1ZSB7XG4gICAgc3dpdGNoIChjdXJyZW50KSB7XG4gICAgICBjYXNlIEluY2x1ZGVFeGNsdWRlVmFsdWUuTkVVVFJBTDpcbiAgICAgICAgcmV0dXJuIEluY2x1ZGVFeGNsdWRlVmFsdWUuSU5DTFVERTtcbiAgICAgIGNhc2UgSW5jbHVkZUV4Y2x1ZGVWYWx1ZS5JTkNMVURFOlxuICAgICAgICByZXR1cm4gSW5jbHVkZUV4Y2x1ZGVWYWx1ZS5FWENMVURFO1xuICAgICAgY2FzZSBJbmNsdWRlRXhjbHVkZVZhbHVlLkVYQ0xVREU6XG4gICAgICAgIHJldHVybiBJbmNsdWRlRXhjbHVkZVZhbHVlLklOQ0xVREU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gSW5jbHVkZUV4Y2x1ZGVWYWx1ZS5JTkNMVURFO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbmV4dFZhbHVlRnVsbEN5Y2xlKGN1cnJlbnQ6IEluY2x1ZGVFeGNsdWRlVmFsdWUpOiBJbmNsdWRlRXhjbHVkZVZhbHVlIHtcbiAgICBzd2l0Y2ggKGN1cnJlbnQpIHtcbiAgICAgIGNhc2UgSW5jbHVkZUV4Y2x1ZGVWYWx1ZS5ORVVUUkFMOlxuICAgICAgICByZXR1cm4gSW5jbHVkZUV4Y2x1ZGVWYWx1ZS5JTkNMVURFO1xuICAgICAgY2FzZSBJbmNsdWRlRXhjbHVkZVZhbHVlLklOQ0xVREU6XG4gICAgICAgIHJldHVybiBJbmNsdWRlRXhjbHVkZVZhbHVlLkVYQ0xVREU7XG4gICAgICBjYXNlIEluY2x1ZGVFeGNsdWRlVmFsdWUuRVhDTFVERTpcbiAgICAgICAgcmV0dXJuIEluY2x1ZGVFeGNsdWRlVmFsdWUuTkVVVFJBTDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBJbmNsdWRlRXhjbHVkZVZhbHVlLk5FVVRSQUw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0b1N0YXRlTWFwKFxuICAgIGxpc3Q6IEluY2x1ZGVFeGNsdWRlU3RhdGVbXVxuICApOiBNYXA8c3RyaW5nLCBJbmNsdWRlRXhjbHVkZVN0YXRlPiB7XG4gICAgcmV0dXJuIG5ldyBNYXAoXG4gICAgICBsaXN0Lm1hcChlbnRpdHkgPT4gW2VudGl0eS5pZCwgZW50aXR5XSlcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -54,6 +54,7 @@ export class ElderMultiSelectChipsComponent extends ElderMultiSelectBase {
54
54
  this.chipTemplate$ = new BehaviorSubject(null);
55
55
  this.chipAvatarTemplate$ = new BehaviorSubject(null);
56
56
  this.customInputTemplate$ = new BehaviorSubject(null);
57
+ this.refresh$ = new BehaviorSubject(true);
57
58
  this.log = LoggerFactory.getLogger(this.constructor.name);
58
59
  this.placeholder = '...';
59
60
  this.selectChips$ = combineLatest([
@@ -62,7 +63,8 @@ export class ElderMultiSelectChipsComponent extends ElderMultiSelectBase {
62
63
  this.state$,
63
64
  this.displayPropertyResolver$,
64
65
  this.readonly$,
65
- this.disabled$
66
+ this.disabled$,
67
+ this.refresh$
66
68
  ]).pipe(map(([entities, entityIds, state, dPR]) => this.buildChipModelsOrFallback(entities, entityIds, state, dPR)));
67
69
  this.templates$ = combineLatest([
68
70
  this.chipTemplate$,
@@ -150,6 +152,9 @@ export class ElderMultiSelectChipsComponent extends ElderMultiSelectBase {
150
152
  // TODO this.inputControl?.blur();
151
153
  // this.customInputTemplate.blur()
152
154
  }
155
+ refresh() {
156
+ this.refresh$.next(true);
157
+ }
153
158
  /***************************************************************************
154
159
  * *
155
160
  * Private methods *
@@ -243,4 +248,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
243
248
  }], customInputTemplate: [{
244
249
  type: Input
245
250
  }] } });
246
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItbXVsdGktc2VsZWN0LWNoaXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L211bHRpL2VsZGVyLW11bHRpLXNlbGVjdC1jaGlwcy9lbGRlci1tdWx0aS1zZWxlY3QtY2hpcHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3QvbXVsdGkvZWxkZXItbXVsdGktc2VsZWN0LWNoaXBzL2VsZGVyLW11bHRpLXNlbGVjdC1jaGlwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBRVosVUFBVSxFQUNWLEtBQUssRUFFTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFdBQVcsRUFBRSxTQUFTLEVBQ3ZCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBQ2hFLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUNMLDhCQUE4QixFQUM5Qix3QkFBd0IsRUFDeEIsK0JBQStCLEVBQ2hDLE1BQU0sbUNBQW1DLENBQUM7QUFFM0MsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFDLGlCQUFpQixFQUE0QyxNQUFNLHlCQUF5QixDQUFDO0FBSXJHLE9B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O3NCQUFsRCxZQUFZO3VCQUFDLG1CQUFtQjtnQkFDQSxVQUFVO3NCQUExQyxTQUFTO3VCQUFDLG9CQUFvQjtnQkFpRXBCLGlCQUFpQjtzQkFEM0IsWUFBWTt1QkFBQyx3QkFBd0IsRUFBRSxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBQztnQkFNL0QsWUFBWTtzQkFEdEIsS0FBSztnQkFVSyx1QkFBdUI7c0JBRGpDLFlBQVk7dUJBQUMsOEJBQThCLEVBQUUsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUM7Z0JBUXJFLGtCQUFrQjtzQkFENUIsS0FBSztnQkFVSyx3QkFBd0I7c0JBRGxDLFlBQVk7dUJBQUMsK0JBQStCLEVBQUUsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUM7Z0JBUXRFLG1CQUFtQjtzQkFEN0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT3B0aW9uYWwsXG4gIFNlbGYsXG4gIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0VsZGVyTXVsdGlTZWxlY3RCYXNlfSBmcm9tICcuLi9lbGRlci1tdWx0aS1zZWxlY3QtYmFzZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge1xuICBFbGRlclNlbGVjdENoaXBBdmF0YXJEaXJlY3RpdmUsXG4gIEVsZGVyU2VsZWN0Q2hpcERpcmVjdGl2ZSxcbiAgRWxkZXJTZWxlY3RDdXN0b21JbnB1dERpcmVjdGl2ZVxufSBmcm9tICcuLi8uLi9lbGRlci1zZWxlY3QtY2hpcC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWF0Rm9ybUZpZWxkQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQge0VMREVSX1NFTEVDVF9CQVNFLCBFbGRlclNlbGVjdENvbXBvbmVudFN0YXRlLCBUZXh0UmVzb2x2ZXJGbn0gZnJvbSAnLi4vLi4vZWxkZXItc2VsZWN0LWJhc2UnO1xuaW1wb3J0IHtGb2N1c01vbml0b3J9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7RWxkZXJEaWFsb2dTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9kaWFsb2dzL2VsZGVyLWRpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0VsZGVyU2VsZWN0Q29tcG9uZW50fSBmcm9tICcuLi8uLi9zaW5nbGUvZWxkZXItc2VsZWN0L2VsZGVyLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHtDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5LCBDZGtEcm9wTGlzdCwgQ2RrRHJhZ30gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQge0NoaXBBdmF0YXJTcGVjLCBDaGlwQ29sb3JTcGVjLCBTZWxlY3RDaGlwU3BlYywgU2VsZWN0Q2hpcFNwZWNVdGlsLCBUcmFpbGluZ1NwZWN9IGZyb20gJy4vc2VsZWN0LWNoaXAtc3BlYyc7XG5pbXBvcnQge0VsZGVyVHJ1bmNhdGVQaXBlfSBmcm9tICcuLi8uLi8uLi8uLi9waXBlcy9lbGRlci10cnVuY2F0ZS5waXBlJztcbmltcG9ydCB7RWxkZXJDbGVhclNlbGVjdERpcmVjdGl2ZX0gZnJvbSAnLi4vLi4vc2luZ2xlL2VsZGVyLWNsZWFyLXNlbGVjdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtFbGRlclN0b3BFdmVudFByb3BhZ2F0aW9uRGlyZWN0aXZlfSBmcm9tICcuLi8uLi8uLi9mb3Jtcy9kaXJlY3RpdmVzL2VsZGVyLXN0b3AtZXZlbnQtcHJvcGFnYXRpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7TWF0SWNvbkJ1dHRvbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7RWxkZXJDaGlwTGFiZWxEaXJlY3RpdmV9IGZyb20gJy4uLy4uLy4uL2NoaXBzL2VsZGVyLWNoaXAtbGFiZWwuZGlyZWN0aXZlJztcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQge01hdENoaXBTZXQsIE1hdENoaXBSb3csIE1hdENoaXBBdmF0YXIsIE1hdENoaXBUcmFpbGluZ0ljb24sIE1hdENoaXBSZW1vdmV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcbmltcG9ydCB7TWF0VG9vbHRpcH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQge05nSWYsIE5nRm9yLCBOZ1RlbXBsYXRlT3V0bGV0LCBBc3luY1BpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmNsYXNzIENoaXBNb2RlbDxUPiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSB2YWx1ZTogVCxcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGlzcGxheVRleHQ6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29sb3JTcGVjOiBDaGlwQ29sb3JTcGVjLFxuICAgIHB1YmxpYyByZWFkb25seSByZW1vdmFibGU6IGJvb2xlYW4sXG4gICAgcHVibGljIHJlYWRvbmx5IGF2YXRhclNwZWM6IENoaXBBdmF0YXJTcGVjLFxuICAgIHB1YmxpYyByZWFkb25seSB0cmFpbGluZ1NwZWM6IFRyYWlsaW5nU3BlYyxcbiAgKSB7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFRlbXBsYXRlV3JhcHBlciB7XG4gIGNoaXA6IFRlbXBsYXRlUmVmPGFueT47XG4gIGF2YXRhcjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBpbnB1dDogVGVtcGxhdGVSZWY8YW55Pjtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlbGRlci1tdWx0aS1zZWxlY3QtY2hpcHMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lbGRlci1tdWx0aS1zZWxlY3QtY2hpcHMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2VsZGVyLW11bHRpLXNlbGVjdC1jaGlwcy5jb21wb25lbnQuc2NzcyddLFxuICAgIC8vIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogRWxkZXJNdWx0aVNlbGVjdENoaXBzQ29tcG9uZW50fSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRUxERVJfU0VMRUNUX0JBU0UsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBFbGRlck11bHRpU2VsZWN0Q2hpcHNDb21wb25lbnQpXG4gICAgICAgIH1cbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nSWYsIE1hdFRvb2x0aXAsIE1hdENoaXBTZXQsIENka0Ryb3BMaXN0LCBNYXRJY29uLCBOZ0ZvciwgTWF0Q2hpcFJvdywgRWxkZXJDaGlwTGFiZWxEaXJlY3RpdmUsIENka0RyYWcsIE1hdENoaXBBdmF0YXIsIE5nVGVtcGxhdGVPdXRsZXQsIE1hdENoaXBUcmFpbGluZ0ljb24sIE1hdENoaXBSZW1vdmUsIE1hdEljb25CdXR0b24sIEVsZGVyU3RvcEV2ZW50UHJvcGFnYXRpb25EaXJlY3RpdmUsIEVsZGVyU2VsZWN0Q29tcG9uZW50LCBFbGRlckNsZWFyU2VsZWN0RGlyZWN0aXZlLCBBc3luY1BpcGUsIEVsZGVyVHJ1bmNhdGVQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBFbGRlck11bHRpU2VsZWN0Q2hpcHNDb21wb25lbnQ8VElkID0gYW55LCBURW50aXR5ID0gYW55LCBUVmFsdWUgPSBhbnk+XG4gIGV4dGVuZHMgRWxkZXJNdWx0aVNlbGVjdEJhc2U8VElkLCBURW50aXR5LCBUVmFsdWU+IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0Q2hpcHMkOiBPYnNlcnZhYmxlPENoaXBNb2RlbDxURW50aXR5PltdPjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZGVmYXVsdENoaXBTcGVjOiBTZWxlY3RDaGlwU3BlYyA9IFNlbGVjdENoaXBTcGVjVXRpbC5EZWZhdWx0Q2hpcFNwZWM7XG5cbiAgLyoqXG4gICAqIEFsbG93cyB0byBjdXN0b21pemUgZWFjaCBjaGlwIGluZGl2aWR1YWxseSAoQ29sb3IsIFJlbW92YWJsZSwgQXZhdGFyKS5cbiAgICpcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjaGlwU3BlY0ZuOiAoZTogVEVudGl0eSkgPT4gU2VsZWN0Q2hpcFNwZWMgPSBlID0+IHRoaXMuZGVmYXVsdENoaXBTcGVjO1xuXG4gIHB1YmxpYyBzZWxlY3RhYmxlID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgYWxsb3dSZW1vdmUgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhbGxvd1NvcnRpbmcgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc3RhY2tlZCA9IGZhbHNlO1xuXG4gIEBDb250ZW50Q2hpbGQoTWF0Rm9ybUZpZWxkQ29udHJvbCkgX2N1c3RvbUNoaXBJbnB1dDogTWF0Rm9ybUZpZWxkQ29udHJvbDxhbnk+O1xuICBAVmlld0NoaWxkKEVsZGVyU2VsZWN0Q29tcG9uZW50KSBfY2hpcElucHV0OiBNYXRGb3JtRmllbGRDb250cm9sPGFueT47XG5cbiAgcmVhZG9ubHkgdGVtcGxhdGVzJDogT2JzZXJ2YWJsZTxUZW1wbGF0ZVdyYXBwZXI+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2hpcFRlbXBsYXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGVtcGxhdGVSZWY8YW55Pj4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hpcEF2YXRhclRlbXBsYXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGVtcGxhdGVSZWY8YW55Pj4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3VzdG9tSW5wdXRUZW1wbGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlbXBsYXRlUmVmPGFueT4+KG51bGwpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBob3N0UmVmOiBFbGVtZW50UmVmLFxuICAgIHpvbmU6IE5nWm9uZSxcbiAgICBmb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIGRpYWxvZ1NlcnZpY2U6IEVsZGVyRGlhbG9nU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIG5nQ29udHJvbDogTmdDb250cm9sXG4gICkge1xuICAgIHN1cGVyKHpvbmUsIGhvc3RSZWYsICdtdWx0aS1zZWxlY3QtY2hpcHMnLCBmb2N1c01vbml0b3IsIHRyYW5zbGF0ZVNlcnZpY2UsIGRpYWxvZ1NlcnZpY2UsIG5nQ29udHJvbCk7XG5cbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gJy4uLic7XG5cbiAgICB0aGlzLnNlbGVjdENoaXBzJCA9IGNvbWJpbmVMYXRlc3QoXG4gICAgICBbXG4gICAgICAgIHRoaXMuZW50aXRpZXMkLFxuICAgICAgICB0aGlzLmVudGl0eUlkcyQsXG4gICAgICAgIHRoaXMuc3RhdGUkLFxuICAgICAgICB0aGlzLmRpc3BsYXlQcm9wZXJ0eVJlc29sdmVyJCxcbiAgICAgICAgdGhpcy5yZWFkb25seSQsXG4gICAgICAgIHRoaXMuZGlzYWJsZWQkXG4gICAgICBdXG4gICAgKS5waXBlKFxuICAgICAgbWFwKChbZW50aXRpZXMsIGVudGl0eUlkcywgc3RhdGUsIGRQUl0pID0+XG4gICAgICAgIHRoaXMuYnVpbGRDaGlwTW9kZWxzT3JGYWxsYmFjayhlbnRpdGllcywgZW50aXR5SWRzLCBzdGF0ZSwgZFBSKVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLnRlbXBsYXRlcyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuY2hpcFRlbXBsYXRlJCxcbiAgICAgIHRoaXMuY2hpcEF2YXRhclRlbXBsYXRlJCxcbiAgICAgIHRoaXMuY3VzdG9tSW5wdXRUZW1wbGF0ZSRcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbY2hpcCwgYXZhdGFyLCBpbnB1dF0pID0+IHtcbiAgICAgICAgcmV0dXJuIDxUZW1wbGF0ZVdyYXBwZXI+e1xuICAgICAgICAgIGNoaXAsXG4gICAgICAgICAgYXZhdGFyLFxuICAgICAgICAgIGlucHV0XG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBAQ29udGVudENoaWxkKEVsZGVyU2VsZWN0Q2hpcERpcmVjdGl2ZSwge3JlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IGZhbHNlfSlcbiAgcHVibGljIHNldCBjaGlwVGVtcGxhdGVRdWVyeSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIHRoaXMuY2hpcFRlbXBsYXRlID0gdGVtcGxhdGU7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGNoaXBUZW1wbGF0ZSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIHRoaXMuY2hpcFRlbXBsYXRlJC5uZXh0KHRlbXBsYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hpcFRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmNoaXBUZW1wbGF0ZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIEBDb250ZW50Q2hpbGQoRWxkZXJTZWxlY3RDaGlwQXZhdGFyRGlyZWN0aXZlLCB7cmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogZmFsc2V9KVxuICBwdWJsaWMgc2V0IGNoaXBBdmF0YXJUZW1wbGF0ZVF1ZXJ5KHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgaWYodGVtcGxhdGUpIHtcbiAgICAgIHRoaXMuY2hpcEF2YXRhclRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBjaGlwQXZhdGFyVGVtcGxhdGUodGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICB0aGlzLmNoaXBBdmF0YXJUZW1wbGF0ZSQubmV4dCh0ZW1wbGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNoaXBBdmF0YXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jaGlwQXZhdGFyVGVtcGxhdGUkLmdldFZhbHVlKCk7XG4gIH1cblxuICBAQ29udGVudENoaWxkKEVsZGVyU2VsZWN0Q3VzdG9tSW5wdXREaXJlY3RpdmUsIHtyZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiBmYWxzZX0pXG4gIHB1YmxpYyBzZXQgY3VzdG9tSW5wdXRUZW1wbGF0ZVF1ZXJ5KHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgaWYodGVtcGxhdGUpIHtcbiAgICAgIHRoaXMuY3VzdG9tSW5wdXRUZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgY3VzdG9tSW5wdXRUZW1wbGF0ZSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIHRoaXMuY3VzdG9tSW5wdXRUZW1wbGF0ZSQubmV4dCh0ZW1wbGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1c3RvbUlucHV0VGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuY3VzdG9tSW5wdXRUZW1wbGF0ZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxhbnk+KTogdm9pZCB7XG4gICAgY29uc3QgcmVvcmRlcmVkID0gWy4uLnRoaXMuZW50aXRpZXNdO1xuICAgIG1vdmVJdGVtSW5BcnJheShyZW9yZGVyZWQsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgdGhpcy5lbnRpdGllcyA9IHJlb3JkZXJlZDtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlQ2hpcFZhbHVlKGUxOiBURW50aXR5KTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5nZXRFbnRpdHlJZChlMSk7XG4gIH1cblxuICBwdWJsaWMgb25DaGlwS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgdG9SZW1vdmU6IFRFbnRpdHkpOiB2b2lkIHtcbiAgICB0aGlzLmxvZy53YXJuKCdvbkNoaXBLZXlEb3duJywgZXZlbnQpO1xuICAgIGlmIChldmVudC5rZXkgPT0gJ0JhY2tzcGFjZScgfHwgZXZlbnQua2V5ID09ICdEZWxldGUnKSB7XG4gICAgICB0aGlzLnJlcXVlc3RSZW1vdmVFbnRpdHkodG9SZW1vdmUsIGV2ZW50LnNoaWZ0S2V5KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DbGlja1JlbW92ZUNoaXAoXG4gICAgZXZlbnQ6IE1vdXNlRXZlbnQsXG4gICAgdG9SZW1vdmU6IFRFbnRpdHlcbiAgKTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnJlcXVlc3RSZW1vdmVFbnRpdHkodG9SZW1vdmUsIGV2ZW50LnNoaWZ0S2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1cyhvcHRpb25zPzogRm9jdXNPcHRpb25zKSB7XG5cbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuX2N1c3RvbUNoaXBJbnB1dCA/PyB0aGlzLl9jaGlwSW5wdXQ7XG5cbiAgICBpZiAoaW5wdXQpIHtcbiAgICAgIGlucHV0Lm9uQ29udGFpbmVyQ2xpY2sobmV3IE1vdXNlRXZlbnQoJycpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2cud2FybignQ2FudCBmb2N1cyBzaW5jZSBubyBjaGlwLWlucHV0LWNvbnRyb2wgZm91bmQhJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGJsdXIoKSB7XG4gICAgdGhpcy5sb2cud2FybignYmx1cigpIG5vdCB5ZXQgc3VwcG9ydGVkIScpO1xuICAgIC8vIFRPRE8gdGhpcy5pbnB1dENvbnRyb2w/LmJsdXIoKTtcbiAgICAvLyB0aGlzLmN1c3RvbUlucHV0VGVtcGxhdGUuYmx1cigpXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGJ1aWxkQ2hpcE1vZGVsc09yRmFsbGJhY2soXG4gICAgZW50aXRpZXM6IFRFbnRpdHlbXSxcbiAgICBlbnRpdHlJZHM6IFRJZFtdLFxuICAgIHN0YXRlOiBFbGRlclNlbGVjdENvbXBvbmVudFN0YXRlLFxuICAgIGRQUjogVGV4dFJlc29sdmVyRm5cbiAgKTogQ2hpcE1vZGVsPFRFbnRpdHk+W10ge1xuXG4gICAgaWYgKHN0YXRlLmVycm9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5idWlsZENoaXBGYWxsYmFja01vZGVscyhlbnRpdHlJZHMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5idWlsZENoaXBNb2RlbHMoZW50aXRpZXMsIGRQUik7XG4gIH1cblxuXG4gIHByaXZhdGUgYnVpbGRDaGlwRmFsbGJhY2tNb2RlbHMoZW50aXR5SWRzOiBUSWRbXSk6IENoaXBNb2RlbDxURW50aXR5PltdIHtcbiAgICByZXR1cm4gZW50aXR5SWRzLm1hcChcbiAgICAgIGlkID0+IHRoaXMuYnVpbGRDaGlwQnlTcGVjKFxuICAgICAgICA8YW55PntpZDogaWR9LFxuICAgICAgICAoKSA9PiBTdHJpbmcoaWQpLFxuICAgICAgICB7XG4gICAgICAgICAgY29sb3JTcGVjOiB7XG4gICAgICAgICAgICB0aGVtZUNvbG9yOiAnd2FybidcbiAgICAgICAgICB9LFxuICAgICAgICAgIGF2YXRhclNwZWM6IHtcbiAgICAgICAgICAgIGhpZGU6IGZhbHNlLFxuICAgICAgICAgICAgbGFyZ2U6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQ2hpcE1vZGVscyhcbiAgICBlbnRpdGllczogVEVudGl0eVtdLFxuICAgIGRQUjogVGV4dFJlc29sdmVyRm5cbiAgKTogQ2hpcE1vZGVsPFRFbnRpdHk+W10ge1xuICAgIGlmIChlbnRpdGllcykge1xuICAgICAgcmV0dXJuIGVudGl0aWVzLm1hcChcbiAgICAgICAgZSA9PiB0aGlzLmJ1aWxkQ2hpcEJ5U3BlYyhcbiAgICAgICAgICBlLFxuICAgICAgICAgIGRQUixcbiAgICAgICAgICB0aGlzLmNoaXBTcGVjRm4oZSkgPz8gdGhpcy5kZWZhdWx0Q2hpcFNwZWNcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDxDaGlwTW9kZWw8VEVudGl0eT5bXT5bXTtcbiAgICB9XG4gIH1cblxuXG4gIHByaXZhdGUgYnVpbGRDaGlwQnlTcGVjKFxuICAgIGU6IFRFbnRpdHksXG4gICAgZFBSOiBUZXh0UmVzb2x2ZXJGbixcbiAgICBjaGlwU3BlYzogU2VsZWN0Q2hpcFNwZWNcbiAgKTogQ2hpcE1vZGVsPFRFbnRpdHk+IHtcblxuICAgIGxldCByZW1vdmFibGUgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5hbGxvd1JlbW92ZSAmJiAhdGhpcy5pc0xvY2tlZCkge1xuICAgICAgaWYgKGNoaXBTcGVjLnJlbW92YWJsZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgcmVtb3ZhYmxlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBDaGlwTW9kZWw8VEVudGl0eT4oXG4gICAgICBlLFxuICAgICAgZFBSKGUpLFxuICAgICAgY2hpcFNwZWM/LmNvbG9yU3BlYyxcbiAgICAgIHJlbW92YWJsZSxcbiAgICAgIGNoaXBTcGVjLmF2YXRhclNwZWMsXG4gICAgICBjaGlwU3BlYy50cmFpbGluZ1NwZWNcbiAgICApO1xuICB9XG5cbn1cbiIsIjxkaXYgKm5nSWY9XCIoc2VsZWN0Q2hpcHMkIHwgYXN5bmMpIGFzIGNoaXBWYWx1ZXNcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZWxkZXItZmxleC1jb250cm9sXCJcbiAgICAgW21hdFRvb2x0aXBdPVwiKHN0YXRlJCB8IGFzeW5jKT8uZXJyb3JcIlxuPlxuICA8bWF0LWNoaXAtc2V0ICNjaGlwc1xuICAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtbWRjLWNoaXAtc2V0LXN0YWNrZWRdPVwic3RhY2tlZFwiXG4gICAgICAgICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICAgICAgICBbY2RrRHJvcExpc3RPcmllbnRhdGlvbl09XCJzdGFja2VkID8gJ3ZlcnRpY2FsJyA6ICdob3Jpem9udGFsJ1wiXG4gICAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERpc2FibGVkXT1cIiFhbGxvd1NvcnRpbmdcIlxuICA+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHN0YXRlJCB8IGFzeW5jKSBhcyBzdGF0ZVwiPlxuICAgICAgPGRpdiAqbmdJZj1cImljb25cIlxuICAgICAgICAgICBjbGFzcz1cImVsZGVyLWlucHV0LXByZWZpeC1pY29uLWNvbnRhaW5lciBmbGV4LW5vbmVcIlxuICAgICAgPlxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJpY29uXCIgZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWxkZXItcHJlZml4LWljb24gZWxkZXItbWRjLWNvbnRyb2wtaWNvbiBlbGRlci1pY29uLXNtYWxsIG5vc2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5sb2FkaW5nXT1cInN0YXRlLmxvYWRpbmdcIlxuICAgICAgICA+XG4gICAgICAgICAge3tpY29ufX1cbiAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRlbXBsYXRlcyQgfCBhc3luYyBhcyB0ZW1wbGF0ZXNcIj5cbiAgICAgIDxtYXQtY2hpcC1yb3cgZWxkZXJDaGlwTGFiZWwgKm5nRm9yPVwibGV0IGNoaXBNb2RlbCBvZiBjaGlwVmFsdWVzXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm5vc2VsZWN0IGNsaWNrYWJsZS1jaGlwXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwicmVzb2x2ZUNoaXBWYWx1ZShjaGlwTW9kZWwudmFsdWUpXCJcbiAgICAgICAgICAgICAgICBbY29sb3JdPVwiY2hpcE1vZGVsLmNvbG9yU3BlYz8udGhlbWVDb2xvclwiXG4gICAgICAgICAgICAgICAgW2xldmVsQ29sb3JdPVwiY2hpcE1vZGVsLmNvbG9yU3BlYz8ubGV2ZWxDb2xvclwiXG4gICAgICAgICAgICAgICAgW3N0YXRlQ29sb3JdPVwiY2hpcE1vZGVsLmNvbG9yU3BlYz8uc3RhdGVDb2xvclwiXG4gICAgICAgICAgICAgICAgW3JlbW92YWJsZV09XCJjaGlwTW9kZWwucmVtb3ZhYmxlXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbkNoaXBLZXlEb3duKCRldmVudCwgY2hpcE1vZGVsLnZhbHVlKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ3VycmVudENsaWNrZWQoY2hpcE1vZGVsLnZhbHVlKVwiXG4gICAgICAgICAgICAgICAgY2RrRHJhZyBbY2RrRHJhZ0RhdGFdPVwiY2hpcE1vZGVsLnZhbHVlXCIgW2Nka0RyYWdEaXNhYmxlZF09XCIhYWxsb3dTb3J0aW5nXCJcbiAgICAgID5cbiAgICAgICAgPG1hdC1jaGlwLWF2YXRhclxuICAgICAgICAgICpuZ0lmPVwidGVtcGxhdGVzLmF2YXRhciAmJiAhY2hpcE1vZGVsLmF2YXRhclNwZWM/LmhpZGVcIlxuICAgICAgICAgIFtjbGFzcy5jaGlwLWF2YXRhci14bF09XCJjaGlwTW9kZWwuYXZhdGFyU3BlYz8ubGFyZ2VcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZXMuYXZhdGFyOyBjb250ZXh0OiB7JGltcGxpY2l0OiBjaGlwTW9kZWx9XCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbWF0LWNoaXAtYXZhdGFyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlcy5jaGlwIHx8IHNpbXBsZUNoaXBUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogY2hpcE1vZGVsfVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bWF0LWljb24gbWF0Q2hpcFRyYWlsaW5nSWNvbiBjbGFzcz1cImVsZGVyLXRyYWlsaW5nLWljb25cIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjaGlwTW9kZWwudHJhaWxpbmdTcGVjPy5pY29uXCJcbiAgICAgICAgICAgICAgICAgIFtmb250U2V0XT1cImNoaXBNb2RlbC50cmFpbGluZ1NwZWM/Lmljb25Gb250U2V0XCJcbiAgICAgICAgPnt7Y2hpcE1vZGVsLnRyYWlsaW5nU3BlYz8uaWNvbn19PC9tYXQtaWNvbj5cblxuICAgICAgICA8bWF0LWljb24gbWF0Q2hpcFJlbW92ZVxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjaGlwTW9kZWwucmVtb3ZhYmxlXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrUmVtb3ZlQ2hpcCgkZXZlbnQsIGNoaXBNb2RlbC52YWx1ZSlcIj5cbiAgICAgICAgICBjYW5jZWxcbiAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgIDwvbWF0LWNoaXAtcm93PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBwbGFjZS1zdGFydC1jZW50ZXIgZWxkZXItY2hpcC1pbnB1dFwiPlxuXG4gICAgICAgIDwhLS0gW21hdENoaXBJbnB1dEZvcl09XCJjaGlwc1wiIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZXMuaW5wdXQgfHwgc2VsZWN0SW5wdXQ7XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImVsZGVyLWNvbnRyb2wtaWNvbi1idXR0b24gZWxkZXItYnJvd3NlLWljb25cIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0aW9uUG9wdXBcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0xvY2tlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5TZWxlY3Rpb25Qb3B1cCgkZXZlbnQpXCIgYXJpYS1sYWJlbD1cIlNlYXJjaFwiXG4gICAgICAgICAgICAgICAgZWxkZXJTdG9wRXZlbnRQcm9wYWdhdGlvblxuICAgICAgICAgICAgICAgIHRhYkluZGV4PVwiLTFcIlxuICAgICAgICA+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZWxkZXItbWRjLWNvbnRyb2wtaWNvblwiPnNlYXJjaDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbWF0LWNoaXAtc2V0PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjc2VsZWN0SW5wdXQ+XG4gIDwhLS0gbWF0LW1kYy1jaGlwLWlucHV0IC0tPlxuICA8ZWxkZXItc2VsZWN0IGF1dG9jb21wbGV0ZSBlbGRlckNsZWFyU2VsZWN0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJlbGRlci1jaGlwLWlucHV0LXNlbGVjdCBmbGV4XCJcbiAgICAgICAgICAgICAgICBbZGF0YV09XCJkYXRhQ29udGV4dCQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEhZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCIhIXJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiISFyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAoZW50aXR5VXBkYXRlZCk9XCJhcHBlbmRFbnRpdHkoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW2Rpc3BsYXlQcm9wZXJ0eVJlc29sdmVyXT1cImRpc3BsYXlQcm9wZXJ0eVJlc29sdmVyJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVUZW1wbGF0ZV09XCJ2YWx1ZVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICBbcXVlcnlGaWx0ZXJdPVwicXVlcnlGaWx0ZXJcIiBbZmlsdGVyc109XCJmaWx0ZXJzXCIgW3NvcnRzXT1cInNvcnRzXCJcbiAgICAgICAgICAgICAgICBbaXNPcHRpb25EaXNhYmxlZEZuXT1cImlzT3B0aW9uRGlzYWJsZWRJbnRlcm5hbEZuXCJcbiAgICAgICAgICAgICAgICBbaXNPcHRpb25IaWRkZW5Gbl09XCJpc09wdGlvbkhpZGRlbkludGVybmFsRm5cIlxuICA+PC9lbGRlci1zZWxlY3Q+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NpbXBsZUNoaXBUZW1wbGF0ZSBsZXQtY2hpcE1vZGVsPlxuICA8c3BhbiBjbGFzcz1cImVsZGVyLWNoaXAtdGV4dFwiPnt7Y2hpcE1vZGVsLmRpc3BsYXlUZXh0IHwgZWxkZXJUcnVuY2F0ZToyMH19PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuIl19
251
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItbXVsdGktc2VsZWN0LWNoaXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L211bHRpL2VsZGVyLW11bHRpLXNlbGVjdC1jaGlwcy9lbGRlci1tdWx0aS1zZWxlY3QtY2hpcHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3QvbXVsdGkvZWxkZXItbXVsdGktc2VsZWN0LWNoaXBzL2VsZGVyLW11bHRpLXNlbGVjdC1jaGlwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBRVosVUFBVSxFQUNWLEtBQUssRUFFTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFdBQVcsRUFBRSxTQUFTLEVBQ3ZCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFzQixNQUFNLE1BQU0sQ0FBQztBQUN6RSxPQUFPLEVBQUMsR0FBRyxFQUFZLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFDTCw4QkFBOEIsRUFDOUIsd0JBQXdCLEVBQ3hCLCtCQUErQixFQUNoQyxNQUFNLG1DQUFtQyxDQUFDO0FBRTNDLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxpQkFBaUIsRUFBNEMsTUFBTSx5QkFBeUIsQ0FBQztBQUlyRyxP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QkFBSSxJQUFJO3lDQTdDWixlQUFlO3NCQURyQixLQUFLO2dCQVFDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBTUMsV0FBVztzQkFEakIsS0FBSztnQkFJQyxZQUFZO3NCQURsQixLQUFLO2dCQUlDLE9BQU87c0JBRGIsS0FBSztnQkFHNkIsZ0JBQWdCO3NCQUFsRCxZQUFZO3VCQUFDLG1CQUFtQjtnQkFDQSxVQUFVO3NCQUExQyxTQUFTO3VCQUFDLG9CQUFvQjtnQkFvRXBCLGlCQUFpQjtzQkFEM0IsWUFBWTt1QkFBQyx3QkFBd0IsRUFBRSxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBQztnQkFNL0QsWUFBWTtzQkFEdEIsS0FBSztnQkFVSyx1QkFBdUI7c0JBRGpDLFlBQVk7dUJBQUMsOEJBQThCLEVBQUUsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUM7Z0JBUXJFLGtCQUFrQjtzQkFENUIsS0FBSztnQkFVSyx3QkFBd0I7c0JBRGxDLFlBQVk7dUJBQUMsK0JBQStCLEVBQUUsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUM7Z0JBUXRFLG1CQUFtQjtzQkFEN0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT3B0aW9uYWwsXG4gIFNlbGYsXG4gIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0VsZGVyTXVsdGlTZWxlY3RCYXNlfSBmcm9tICcuLi9lbGRlci1tdWx0aS1zZWxlY3QtYmFzZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcCwgc3RhcnRXaXRofSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcbmltcG9ydCB7XG4gIEVsZGVyU2VsZWN0Q2hpcEF2YXRhckRpcmVjdGl2ZSxcbiAgRWxkZXJTZWxlY3RDaGlwRGlyZWN0aXZlLFxuICBFbGRlclNlbGVjdEN1c3RvbUlucHV0RGlyZWN0aXZlXG59IGZyb20gJy4uLy4uL2VsZGVyLXNlbGVjdC1jaGlwLmRpcmVjdGl2ZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtNYXRGb3JtRmllbGRDb250cm9sfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7RUxERVJfU0VMRUNUX0JBU0UsIEVsZGVyU2VsZWN0Q29tcG9uZW50U3RhdGUsIFRleHRSZXNvbHZlckZufSBmcm9tICcuLi8uLi9lbGRlci1zZWxlY3QtYmFzZSc7XG5pbXBvcnQge0ZvY3VzTW9uaXRvcn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtFbGRlckRpYWxvZ1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2RpYWxvZ3MvZWxkZXItZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7RWxkZXJTZWxlY3RDb21wb25lbnR9IGZyb20gJy4uLy4uL3NpbmdsZS9lbGRlci1zZWxlY3QvZWxkZXItc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQge0Nka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXksIENka0Ryb3BMaXN0LCBDZGtEcmFnfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7Q2hpcEF2YXRhclNwZWMsIENoaXBDb2xvclNwZWMsIFNlbGVjdENoaXBTcGVjLCBTZWxlY3RDaGlwU3BlY1V0aWwsIFRyYWlsaW5nU3BlY30gZnJvbSAnLi9zZWxlY3QtY2hpcC1zcGVjJztcbmltcG9ydCB7RWxkZXJUcnVuY2F0ZVBpcGV9IGZyb20gJy4uLy4uLy4uLy4uL3BpcGVzL2VsZGVyLXRydW5jYXRlLnBpcGUnO1xuaW1wb3J0IHtFbGRlckNsZWFyU2VsZWN0RGlyZWN0aXZlfSBmcm9tICcuLi8uLi9zaW5nbGUvZWxkZXItY2xlYXItc2VsZWN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQge0VsZGVyU3RvcEV2ZW50UHJvcGFnYXRpb25EaXJlY3RpdmV9IGZyb20gJy4uLy4uLy4uL2Zvcm1zL2RpcmVjdGl2ZXMvZWxkZXItc3RvcC1ldmVudC1wcm9wYWdhdGlvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHtNYXRJY29uQnV0dG9ufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHtFbGRlckNoaXBMYWJlbERpcmVjdGl2ZX0gZnJvbSAnLi4vLi4vLi4vY2hpcHMvZWxkZXItY2hpcC1sYWJlbC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtNYXRJY29ufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7TWF0Q2hpcFNldCwgTWF0Q2hpcFJvdywgTWF0Q2hpcEF2YXRhciwgTWF0Q2hpcFRyYWlsaW5nSWNvbiwgTWF0Q2hpcFJlbW92ZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xuaW1wb3J0IHtNYXRUb29sdGlwfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7TmdJZiwgTmdGb3IsIE5nVGVtcGxhdGVPdXRsZXQsIEFzeW5jUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuY2xhc3MgQ2hpcE1vZGVsPFQ+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBULFxuICAgIHB1YmxpYyByZWFkb25seSBkaXNwbGF5VGV4dDogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSBjb2xvclNwZWM6IENoaXBDb2xvclNwZWMsXG4gICAgcHVibGljIHJlYWRvbmx5IHJlbW92YWJsZTogYm9vbGVhbixcbiAgICBwdWJsaWMgcmVhZG9ubHkgYXZhdGFyU3BlYzogQ2hpcEF2YXRhclNwZWMsXG4gICAgcHVibGljIHJlYWRvbmx5IHRyYWlsaW5nU3BlYzogVHJhaWxpbmdTcGVjLFxuICApIHtcbiAgfVxufVxuXG5pbnRlcmZhY2UgVGVtcGxhdGVXcmFwcGVyIHtcbiAgY2hpcDogVGVtcGxhdGVSZWY8YW55PjtcbiAgYXZhdGFyOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGlucHV0OiBUZW1wbGF0ZVJlZjxhbnk+O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VsZGVyLW11bHRpLXNlbGVjdC1jaGlwcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLW11bHRpLXNlbGVjdC1jaGlwcy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZWxkZXItbXVsdGktc2VsZWN0LWNoaXBzLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgLy8gZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge3Byb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBFbGRlck11bHRpU2VsZWN0Q2hpcHNDb21wb25lbnR9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBFTERFUl9TRUxFQ1RfQkFTRSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVsZGVyTXVsdGlTZWxlY3RDaGlwc0NvbXBvbmVudClcbiAgICAgICAgfVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgTWF0VG9vbHRpcCwgTWF0Q2hpcFNldCwgQ2RrRHJvcExpc3QsIE1hdEljb24sIE5nRm9yLCBNYXRDaGlwUm93LCBFbGRlckNoaXBMYWJlbERpcmVjdGl2ZSwgQ2RrRHJhZywgTWF0Q2hpcEF2YXRhciwgTmdUZW1wbGF0ZU91dGxldCwgTWF0Q2hpcFRyYWlsaW5nSWNvbiwgTWF0Q2hpcFJlbW92ZSwgTWF0SWNvbkJ1dHRvbiwgRWxkZXJTdG9wRXZlbnRQcm9wYWdhdGlvbkRpcmVjdGl2ZSwgRWxkZXJTZWxlY3RDb21wb25lbnQsIEVsZGVyQ2xlYXJTZWxlY3REaXJlY3RpdmUsIEFzeW5jUGlwZSwgRWxkZXJUcnVuY2F0ZVBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyTXVsdGlTZWxlY3RDaGlwc0NvbXBvbmVudDxUSWQgPSBhbnksIFRFbnRpdHkgPSBhbnksIFRWYWx1ZSA9IGFueT5cbiAgZXh0ZW5kcyBFbGRlck11bHRpU2VsZWN0QmFzZTxUSWQsIFRFbnRpdHksIFRWYWx1ZT4ge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RDaGlwcyQ6IE9ic2VydmFibGU8Q2hpcE1vZGVsPFRFbnRpdHk+W10+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkZWZhdWx0Q2hpcFNwZWM6IFNlbGVjdENoaXBTcGVjID0gU2VsZWN0Q2hpcFNwZWNVdGlsLkRlZmF1bHRDaGlwU3BlYztcblxuICAvKipcbiAgICogQWxsb3dzIHRvIGN1c3RvbWl6ZSBlYWNoIGNoaXAgaW5kaXZpZHVhbGx5IChDb2xvciwgUmVtb3ZhYmxlLCBBdmF0YXIpLlxuICAgKlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGNoaXBTcGVjRm46IChlOiBURW50aXR5KSA9PiBTZWxlY3RDaGlwU3BlYyA9IGUgPT4gdGhpcy5kZWZhdWx0Q2hpcFNwZWM7XG5cbiAgcHVibGljIHNlbGVjdGFibGUgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhbGxvd1JlbW92ZSA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGFsbG93U29ydGluZyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdGFja2VkID0gZmFsc2U7XG5cbiAgQENvbnRlbnRDaGlsZChNYXRGb3JtRmllbGRDb250cm9sKSBfY3VzdG9tQ2hpcElucHV0OiBNYXRGb3JtRmllbGRDb250cm9sPGFueT47XG4gIEBWaWV3Q2hpbGQoRWxkZXJTZWxlY3RDb21wb25lbnQpIF9jaGlwSW5wdXQ6IE1hdEZvcm1GaWVsZENvbnRyb2w8YW55PjtcblxuICByZWFkb25seSB0ZW1wbGF0ZXMkOiBPYnNlcnZhYmxlPFRlbXBsYXRlV3JhcHBlcj47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjaGlwVGVtcGxhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZW1wbGF0ZVJlZjxhbnk+PihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjaGlwQXZhdGFyVGVtcGxhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZW1wbGF0ZVJlZjxhbnk+PihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjdXN0b21JbnB1dFRlbXBsYXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGVtcGxhdGVSZWY8YW55Pj4obnVsbCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZWZyZXNoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGhvc3RSZWY6IEVsZW1lbnRSZWYsXG4gICAgem9uZTogTmdab25lLFxuICAgIGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgZGlhbG9nU2VydmljZTogRWxkZXJEaWFsb2dTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgbmdDb250cm9sOiBOZ0NvbnRyb2xcbiAgKSB7XG4gICAgc3VwZXIoem9uZSwgaG9zdFJlZiwgJ211bHRpLXNlbGVjdC1jaGlwcycsIGZvY3VzTW9uaXRvciwgdHJhbnNsYXRlU2VydmljZSwgZGlhbG9nU2VydmljZSwgbmdDb250cm9sKTtcblxuICAgIHRoaXMucGxhY2Vob2xkZXIgPSAnLi4uJztcblxuICAgIHRoaXMuc2VsZWN0Q2hpcHMkID0gY29tYmluZUxhdGVzdChcbiAgICAgIFtcbiAgICAgICAgdGhpcy5lbnRpdGllcyQsXG4gICAgICAgIHRoaXMuZW50aXR5SWRzJCxcbiAgICAgICAgdGhpcy5zdGF0ZSQsXG4gICAgICAgIHRoaXMuZGlzcGxheVByb3BlcnR5UmVzb2x2ZXIkLFxuICAgICAgICB0aGlzLnJlYWRvbmx5JCxcbiAgICAgICAgdGhpcy5kaXNhYmxlZCQsXG4gICAgICAgIHRoaXMucmVmcmVzaCRcbiAgICAgIF1cbiAgICApLnBpcGUoXG4gICAgICBtYXAoKFtlbnRpdGllcywgZW50aXR5SWRzLCBzdGF0ZSwgZFBSXSkgPT5cbiAgICAgICAgdGhpcy5idWlsZENoaXBNb2RlbHNPckZhbGxiYWNrKGVudGl0aWVzLCBlbnRpdHlJZHMsIHN0YXRlLCBkUFIpXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMudGVtcGxhdGVzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5jaGlwVGVtcGxhdGUkLFxuICAgICAgdGhpcy5jaGlwQXZhdGFyVGVtcGxhdGUkLFxuICAgICAgdGhpcy5jdXN0b21JbnB1dFRlbXBsYXRlJFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtjaGlwLCBhdmF0YXIsIGlucHV0XSkgPT4ge1xuICAgICAgICByZXR1cm4gPFRlbXBsYXRlV3JhcHBlcj57XG4gICAgICAgICAgY2hpcCxcbiAgICAgICAgICBhdmF0YXIsXG4gICAgICAgICAgaW5wdXRcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIEBDb250ZW50Q2hpbGQoRWxkZXJTZWxlY3RDaGlwRGlyZWN0aXZlLCB7cmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogZmFsc2V9KVxuICBwdWJsaWMgc2V0IGNoaXBUZW1wbGF0ZVF1ZXJ5KHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgdGhpcy5jaGlwVGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgY2hpcFRlbXBsYXRlKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgdGhpcy5jaGlwVGVtcGxhdGUkLm5leHQodGVtcGxhdGUpO1xuICB9XG5cbiAgcHVibGljIGdldCBjaGlwVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuY2hpcFRlbXBsYXRlJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgQENvbnRlbnRDaGlsZChFbGRlclNlbGVjdENoaXBBdmF0YXJEaXJlY3RpdmUsIHtyZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiBmYWxzZX0pXG4gIHB1YmxpYyBzZXQgY2hpcEF2YXRhclRlbXBsYXRlUXVlcnkodGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICBpZih0ZW1wbGF0ZSkge1xuICAgICAgdGhpcy5jaGlwQXZhdGFyVGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGNoaXBBdmF0YXJUZW1wbGF0ZSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIHRoaXMuY2hpcEF2YXRhclRlbXBsYXRlJC5uZXh0KHRlbXBsYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hpcEF2YXRhclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmNoaXBBdmF0YXJUZW1wbGF0ZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIEBDb250ZW50Q2hpbGQoRWxkZXJTZWxlY3RDdXN0b21JbnB1dERpcmVjdGl2ZSwge3JlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IGZhbHNlfSlcbiAgcHVibGljIHNldCBjdXN0b21JbnB1dFRlbXBsYXRlUXVlcnkodGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICBpZih0ZW1wbGF0ZSkge1xuICAgICAgdGhpcy5jdXN0b21JbnB1dFRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBjdXN0b21JbnB1dFRlbXBsYXRlKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgdGhpcy5jdXN0b21JbnB1dFRlbXBsYXRlJC5uZXh0KHRlbXBsYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3VzdG9tSW5wdXRUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jdXN0b21JbnB1dFRlbXBsYXRlJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPGFueT4pOiB2b2lkIHtcbiAgICBjb25zdCByZW9yZGVyZWQgPSBbLi4udGhpcy5lbnRpdGllc107XG4gICAgbW92ZUl0ZW1JbkFycmF5KHJlb3JkZXJlZCwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICB0aGlzLmVudGl0aWVzID0gcmVvcmRlcmVkO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmVDaGlwVmFsdWUoZTE6IFRFbnRpdHkpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmdldEVudGl0eUlkKGUxKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoaXBLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCB0b1JlbW92ZTogVEVudGl0eSk6IHZvaWQge1xuICAgIHRoaXMubG9nLndhcm4oJ29uQ2hpcEtleURvd24nLCBldmVudCk7XG4gICAgaWYgKGV2ZW50LmtleSA9PSAnQmFja3NwYWNlJyB8fCBldmVudC5rZXkgPT0gJ0RlbGV0ZScpIHtcbiAgICAgIHRoaXMucmVxdWVzdFJlbW92ZUVudGl0eSh0b1JlbW92ZSwgZXZlbnQuc2hpZnRLZXkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkNsaWNrUmVtb3ZlQ2hpcChcbiAgICBldmVudDogTW91c2VFdmVudCxcbiAgICB0b1JlbW92ZTogVEVudGl0eVxuICApOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMucmVxdWVzdFJlbW92ZUVudGl0eSh0b1JlbW92ZSwgZXZlbnQuc2hpZnRLZXkpO1xuICB9XG5cbiAgcHVibGljIGZvY3VzKG9wdGlvbnM/OiBGb2N1c09wdGlvbnMpIHtcblxuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5fY3VzdG9tQ2hpcElucHV0ID8/IHRoaXMuX2NoaXBJbnB1dDtcblxuICAgIGlmIChpbnB1dCkge1xuICAgICAgaW5wdXQub25Db250YWluZXJDbGljayhuZXcgTW91c2VFdmVudCgnJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZy53YXJuKCdDYW50IGZvY3VzIHNpbmNlIG5vIGNoaXAtaW5wdXQtY29udHJvbCBmb3VuZCEnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYmx1cigpIHtcbiAgICB0aGlzLmxvZy53YXJuKCdibHVyKCkgbm90IHlldCBzdXBwb3J0ZWQhJyk7XG4gICAgLy8gVE9ETyB0aGlzLmlucHV0Q29udHJvbD8uYmx1cigpO1xuICAgIC8vIHRoaXMuY3VzdG9tSW5wdXRUZW1wbGF0ZS5ibHVyKClcbiAgfVxuXG4gIHB1YmxpYyByZWZyZXNoKCk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgYnVpbGRDaGlwTW9kZWxzT3JGYWxsYmFjayhcbiAgICBlbnRpdGllczogVEVudGl0eVtdLFxuICAgIGVudGl0eUlkczogVElkW10sXG4gICAgc3RhdGU6IEVsZGVyU2VsZWN0Q29tcG9uZW50U3RhdGUsXG4gICAgZFBSOiBUZXh0UmVzb2x2ZXJGblxuICApOiBDaGlwTW9kZWw8VEVudGl0eT5bXSB7XG5cbiAgICBpZiAoc3RhdGUuZXJyb3IpIHtcbiAgICAgIHJldHVybiB0aGlzLmJ1aWxkQ2hpcEZhbGxiYWNrTW9kZWxzKGVudGl0eUlkcyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmJ1aWxkQ2hpcE1vZGVscyhlbnRpdGllcywgZFBSKTtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBidWlsZENoaXBGYWxsYmFja01vZGVscyhlbnRpdHlJZHM6IFRJZFtdKTogQ2hpcE1vZGVsPFRFbnRpdHk+W10ge1xuICAgIHJldHVybiBlbnRpdHlJZHMubWFwKFxuICAgICAgaWQgPT4gdGhpcy5idWlsZENoaXBCeVNwZWMoXG4gICAgICAgIDxhbnk+e2lkOiBpZH0sXG4gICAgICAgICgpID0+IFN0cmluZyhpZCksXG4gICAgICAgIHtcbiAgICAgICAgICBjb2xvclNwZWM6IHtcbiAgICAgICAgICAgIHRoZW1lQ29sb3I6ICd3YXJuJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgYXZhdGFyU3BlYzoge1xuICAgICAgICAgICAgaGlkZTogZmFsc2UsXG4gICAgICAgICAgICBsYXJnZTogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDaGlwTW9kZWxzKFxuICAgIGVudGl0aWVzOiBURW50aXR5W10sXG4gICAgZFBSOiBUZXh0UmVzb2x2ZXJGblxuICApOiBDaGlwTW9kZWw8VEVudGl0eT5bXSB7XG4gICAgaWYgKGVudGl0aWVzKSB7XG4gICAgICByZXR1cm4gZW50aXRpZXMubWFwKFxuICAgICAgICBlID0+IHRoaXMuYnVpbGRDaGlwQnlTcGVjKFxuICAgICAgICAgIGUsXG4gICAgICAgICAgZFBSLFxuICAgICAgICAgIHRoaXMuY2hpcFNwZWNGbihlKSA/PyB0aGlzLmRlZmF1bHRDaGlwU3BlY1xuICAgICAgICApXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gPENoaXBNb2RlbDxURW50aXR5PltdPltdO1xuICAgIH1cbiAgfVxuXG5cbiAgcHJpdmF0ZSBidWlsZENoaXBCeVNwZWMoXG4gICAgZTogVEVudGl0eSxcbiAgICBkUFI6IFRleHRSZXNvbHZlckZuLFxuICAgIGNoaXBTcGVjOiBTZWxlY3RDaGlwU3BlY1xuICApOiBDaGlwTW9kZWw8VEVudGl0eT4ge1xuXG4gICAgbGV0IHJlbW92YWJsZSA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmFsbG93UmVtb3ZlICYmICF0aGlzLmlzTG9ja2VkKSB7XG4gICAgICBpZiAoY2hpcFNwZWMucmVtb3ZhYmxlICE9PSBmYWxzZSkge1xuICAgICAgICByZW1vdmFibGUgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3IENoaXBNb2RlbDxURW50aXR5PihcbiAgICAgIGUsXG4gICAgICBkUFIoZSksXG4gICAgICBjaGlwU3BlYz8uY29sb3JTcGVjLFxuICAgICAgcmVtb3ZhYmxlLFxuICAgICAgY2hpcFNwZWMuYXZhdGFyU3BlYyxcbiAgICAgIGNoaXBTcGVjLnRyYWlsaW5nU3BlY1xuICAgICk7XG4gIH1cblxufVxuIiwiPGRpdiAqbmdJZj1cIihzZWxlY3RDaGlwcyQgfCBhc3luYykgYXMgY2hpcFZhbHVlc1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJlbGRlci1mbGV4LWNvbnRyb2xcIlxuICAgICBbbWF0VG9vbHRpcF09XCIoc3RhdGUkIHwgYXN5bmMpPy5lcnJvclwiXG4+XG4gIDxtYXQtY2hpcC1zZXQgI2NoaXBzXG4gICAgICAgICAgICAgICAgW2NsYXNzLm1hdC1tZGMtY2hpcC1zZXQtc3RhY2tlZF09XCJzdGFja2VkXCJcbiAgICAgICAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgICAgICAgIFtjZGtEcm9wTGlzdE9yaWVudGF0aW9uXT1cInN0YWNrZWQgPyAndmVydGljYWwnIDogJ2hvcml6b250YWwnXCJcbiAgICAgICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGlzYWJsZWRdPVwiIWFsbG93U29ydGluZ1wiXG4gID5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoc3RhdGUkIHwgYXN5bmMpIGFzIHN0YXRlXCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiaWNvblwiXG4gICAgICAgICAgIGNsYXNzPVwiZWxkZXItaW5wdXQtcHJlZml4LWljb24tY29udGFpbmVyIGZsZXgtbm9uZVwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImljb25cIiBkaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlbGRlci1wcmVmaXgtaWNvbiBlbGRlci1tZGMtY29udHJvbC1pY29uIGVsZGVyLWljb24tc21hbGwgbm9zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmxvYWRpbmddPVwic3RhdGUubG9hZGluZ1wiXG4gICAgICAgID5cbiAgICAgICAgICB7e2ljb259fVxuICAgICAgICA8L21hdC1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGVtcGxhdGVzJCB8IGFzeW5jIGFzIHRlbXBsYXRlc1wiPlxuICAgICAgPG1hdC1jaGlwLXJvdyBlbGRlckNoaXBMYWJlbCAqbmdGb3I9XCJsZXQgY2hpcE1vZGVsIG9mIGNoaXBWYWx1ZXNcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibm9zZWxlY3QgY2xpY2thYmxlLWNoaXBcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyZXNvbHZlQ2hpcFZhbHVlKGNoaXBNb2RlbC52YWx1ZSlcIlxuICAgICAgICAgICAgICAgIFtjb2xvcl09XCJjaGlwTW9kZWwuY29sb3JTcGVjPy50aGVtZUNvbG9yXCJcbiAgICAgICAgICAgICAgICBbbGV2ZWxDb2xvcl09XCJjaGlwTW9kZWwuY29sb3JTcGVjPy5sZXZlbENvbG9yXCJcbiAgICAgICAgICAgICAgICBbc3RhdGVDb2xvcl09XCJjaGlwTW9kZWwuY29sb3JTcGVjPy5zdGF0ZUNvbG9yXCJcbiAgICAgICAgICAgICAgICBbcmVtb3ZhYmxlXT1cImNoaXBNb2RlbC5yZW1vdmFibGVcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uQ2hpcEtleURvd24oJGV2ZW50LCBjaGlwTW9kZWwudmFsdWUpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DdXJyZW50Q2xpY2tlZChjaGlwTW9kZWwudmFsdWUpXCJcbiAgICAgICAgICAgICAgICBjZGtEcmFnIFtjZGtEcmFnRGF0YV09XCJjaGlwTW9kZWwudmFsdWVcIiBbY2RrRHJhZ0Rpc2FibGVkXT1cIiFhbGxvd1NvcnRpbmdcIlxuICAgICAgPlxuICAgICAgICA8bWF0LWNoaXAtYXZhdGFyXG4gICAgICAgICAgKm5nSWY9XCJ0ZW1wbGF0ZXMuYXZhdGFyICYmICFjaGlwTW9kZWwuYXZhdGFyU3BlYz8uaGlkZVwiXG4gICAgICAgICAgW2NsYXNzLmNoaXAtYXZhdGFyLXhsXT1cImNoaXBNb2RlbC5hdmF0YXJTcGVjPy5sYXJnZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlcy5hdmF0YXI7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGNoaXBNb2RlbH1cIj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9tYXQtY2hpcC1hdmF0YXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVzLmNoaXAgfHwgc2ltcGxlQ2hpcFRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBjaGlwTW9kZWx9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxtYXQtaWNvbiBtYXRDaGlwVHJhaWxpbmdJY29uIGNsYXNzPVwiZWxkZXItdHJhaWxpbmctaWNvblwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNoaXBNb2RlbC50cmFpbGluZ1NwZWM/Lmljb25cIlxuICAgICAgICAgICAgICAgICAgW2ZvbnRTZXRdPVwiY2hpcE1vZGVsLnRyYWlsaW5nU3BlYz8uaWNvbkZvbnRTZXRcIlxuICAgICAgICA+e3tjaGlwTW9kZWwudHJhaWxpbmdTcGVjPy5pY29ufX08L21hdC1pY29uPlxuXG4gICAgICAgIDxtYXQtaWNvbiBtYXRDaGlwUmVtb3ZlXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNoaXBNb2RlbC5yZW1vdmFibGVcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tSZW1vdmVDaGlwKCRldmVudCwgY2hpcE1vZGVsLnZhbHVlKVwiPlxuICAgICAgICAgIGNhbmNlbFxuICAgICAgICA8L21hdC1pY29uPlxuICAgICAgPC9tYXQtY2hpcC1yb3c+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtcm93IHBsYWNlLXN0YXJ0LWNlbnRlciBlbGRlci1jaGlwLWlucHV0XCI+XG5cbiAgICAgICAgPCEtLSBbbWF0Q2hpcElucHV0Rm9yXT1cImNoaXBzXCIgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlcy5pbnB1dCB8fCBzZWxlY3RJbnB1dDtcIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiZWxkZXItY29udHJvbC1pY29uLWJ1dHRvbiBlbGRlci1icm93c2UtaWNvblwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3Rpb25Qb3B1cFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTG9ja2VkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlblNlbGVjdGlvblBvcHVwKCRldmVudClcIiBhcmlhLWxhYmVsPVwiU2VhcmNoXCJcbiAgICAgICAgICAgICAgICBlbGRlclN0b3BFdmVudFByb3BhZ2F0aW9uXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9XCItMVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJlbGRlci1tZGMtY29udHJvbC1pY29uXCI+c2VhcmNoPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9tYXQtY2hpcC1zZXQ+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNzZWxlY3RJbnB1dD5cbiAgPCEtLSBtYXQtbWRjLWNoaXAtaW5wdXQgLS0+XG4gIDxlbGRlci1zZWxlY3QgYXV0b2NvbXBsZXRlIGVsZGVyQ2xlYXJTZWxlY3RcbiAgICAgICAgICAgICAgICBjbGFzcz1cImVsZGVyLWNoaXAtaW5wdXQtc2VsZWN0IGZsZXhcIlxuICAgICAgICAgICAgICAgIFtkYXRhXT1cImRhdGFDb250ZXh0JCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiISFkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cIiEhcmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIhIXJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgIChlbnRpdHlVcGRhdGVkKT1cImFwcGVuZEVudGl0eSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbZGlzcGxheVByb3BlcnR5UmVzb2x2ZXJdPVwiZGlzcGxheVByb3BlcnR5UmVzb2x2ZXIkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZVRlbXBsYXRlXT1cInZhbHVlVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgIFtxdWVyeUZpbHRlcl09XCJxdWVyeUZpbHRlclwiIFtmaWx0ZXJzXT1cImZpbHRlcnNcIiBbc29ydHNdPVwic29ydHNcIlxuICAgICAgICAgICAgICAgIFtpc09wdGlvbkRpc2FibGVkRm5dPVwiaXNPcHRpb25EaXNhYmxlZEludGVybmFsRm5cIlxuICAgICAgICAgICAgICAgIFtpc09wdGlvbkhpZGRlbkZuXT1cImlzT3B0aW9uSGlkZGVuSW50ZXJuYWxGblwiXG4gID48L2VsZGVyLXNlbGVjdD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2ltcGxlQ2hpcFRlbXBsYXRlIGxldC1jaGlwTW9kZWw+XG4gIDxzcGFuIGNsYXNzPVwiZWxkZXItY2hpcC10ZXh0XCI+e3tjaGlwTW9kZWwuZGlzcGxheVRleHQgfCBlbGRlclRydW5jYXRlOjIwfX08L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG4iXX0=