@acorex/components 18.14.1-next.4 → 18.14.1-next.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. package/drawer/lib/drawer/drawer-item/drawer.component.d.ts +2 -6
  2. package/esm2022/cron-job/lib/cron-job-container/cron-job-container.component.mjs +2 -2
  3. package/esm2022/cron-job/lib/day/day.component.mjs +7 -6
  4. package/esm2022/cron-job/lib/hours/hours.component.mjs +7 -6
  5. package/esm2022/cron-job/lib/minutes/minutes.component.mjs +7 -6
  6. package/esm2022/cron-job/lib/month/month.component.mjs +7 -6
  7. package/esm2022/cron-job/lib/seconds/seconds.component.mjs +7 -6
  8. package/esm2022/cron-job/lib/year/year.component.mjs +7 -6
  9. package/esm2022/drawer/lib/drawer/drawer-item/drawer.component.mjs +6 -9
  10. package/esm2022/password-box/index.mjs +2 -1
  11. package/esm2022/password-box/lib/password-box.component.mjs +8 -8
  12. package/esm2022/password-box/lib/password-box.module.mjs +6 -4
  13. package/esm2022/password-box/lib/password-strength-validation/password-strength-validation.component.mjs +41 -0
  14. package/esm2022/phone-box/lib/phone-box.component.mjs +17 -5
  15. package/esm2022/select-box/lib/select-box.component.mjs +7 -24
  16. package/esm2022/selection-list/lib/selection-list.component.mjs +2 -2
  17. package/esm2022/side-menu/index.mjs +2 -2
  18. package/esm2022/side-menu/lib/side-menu-item/side-menu-item.component.mjs +81 -0
  19. package/esm2022/side-menu/lib/side-menu.module.mjs +2 -2
  20. package/esm2022/step-wizard/lib/step-wizard-item/step-wizard-item.component.mjs +5 -4
  21. package/esm2022/step-wizard/lib/step-wizard.class.mjs +1 -1
  22. package/esm2022/step-wizard/lib/step-wizard.component.mjs +21 -32
  23. package/fesm2022/acorex-components-cron-job.mjs +19 -18
  24. package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
  25. package/fesm2022/acorex-components-drawer.mjs +6 -9
  26. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  27. package/fesm2022/acorex-components-password-box.mjs +50 -11
  28. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  29. package/fesm2022/acorex-components-phone-box.mjs +16 -4
  30. package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
  31. package/fesm2022/acorex-components-select-box.mjs +6 -23
  32. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  33. package/fesm2022/acorex-components-selection-list.mjs +2 -2
  34. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  35. package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
  36. package/fesm2022/acorex-components-step-wizard.mjs +24 -34
  37. package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
  38. package/package.json +1 -1
  39. package/password-box/index.d.ts +1 -0
  40. package/password-box/lib/password-box.component.d.ts +7 -7
  41. package/password-box/lib/password-box.module.d.ts +7 -5
  42. package/password-box/lib/password-strength-validation/password-strength-validation.component.d.ts +12 -0
  43. package/phone-box/lib/phone-box.component.d.ts +4 -2
  44. package/select-box/lib/select-box.component.d.ts +0 -8
  45. package/side-menu/index.d.ts +1 -1
  46. package/side-menu/lib/side-menu.module.d.ts +1 -1
  47. package/step-wizard/lib/step-wizard-item/step-wizard-item.component.d.ts +10 -9
  48. package/step-wizard/lib/step-wizard.class.d.ts +1 -1
  49. package/step-wizard/lib/step-wizard.component.d.ts +7 -13
  50. package/esm2022/side-menu/lib/side-menu-item/side-menu-item.compoent.mjs +0 -81
  51. /package/side-menu/lib/side-menu-item/{side-menu-item.compoent.d.ts → side-menu-item.component.d.ts} +0 -0
@@ -1,15 +1,16 @@
1
1
  import { MXBaseComponent } from '@acorex/components/common';
2
- import { Signal, TemplateRef, WritableSignal } from '@angular/core';
2
+ import { TemplateRef } from '@angular/core';
3
3
  import { AXStepWizardLook } from '../step-wizard.class';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class AXStepWizardItemComponent extends MXBaseComponent {
6
- protected stepLabel: WritableSignal<string>;
7
- protected stepDescription: WritableSignal<string>;
8
- protected stepId: WritableSignal<string>;
9
- protected activeSignal: WritableSignal<boolean>;
10
- protected passedSignal: WritableSignal<boolean>;
11
- protected activeLook: WritableSignal<AXStepWizardLook>;
12
- protected className: Signal<string>;
6
+ protected stepLabel: import("@angular/core").WritableSignal<string>;
7
+ protected stepDescription: import("@angular/core").WritableSignal<string>;
8
+ protected stepId: import("@angular/core").WritableSignal<string>;
9
+ protected activeSignal: import("@angular/core").WritableSignal<boolean>;
10
+ protected passedSignal: import("@angular/core").WritableSignal<boolean>;
11
+ protected activeLook: import("@angular/core").WritableSignal<AXStepWizardLook>;
12
+ protected className: import("@angular/core").Signal<string>;
13
+ step: import("@angular/core").InputSignal<number>;
13
14
  customTemplate: TemplateRef<unknown>;
14
15
  template: TemplateRef<unknown>;
15
16
  set look(v: AXStepWizardLook);
@@ -20,5 +21,5 @@ export declare class AXStepWizardItemComponent extends MXBaseComponent {
20
21
  set id(v: string);
21
22
  private get __hostClass();
22
23
  static ɵfac: i0.ɵɵFactoryDeclaration<AXStepWizardItemComponent, never>;
23
- static ɵcmp: i0.ɵɵComponentDeclaration<AXStepWizardItemComponent, "ax-step-wizard-item", never, { "disabled": { "alias": "disabled"; "required": false; }; "color": { "alias": "color"; "required": false; }; "customTemplate": { "alias": "customTemplate"; "required": false; }; "look": { "alias": "look"; "required": false; }; "active": { "alias": "active"; "required": false; }; "passed": { "alias": "passed"; "required": false; }; "label": { "alias": "label"; "required": false; }; "description": { "alias": "description"; "required": false; }; "id": { "alias": "id"; "required": false; }; }, {}, never, ["ax-content", "ax-icon"], false, never>;
24
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXStepWizardItemComponent, "ax-step-wizard-item", never, { "disabled": { "alias": "disabled"; "required": false; }; "color": { "alias": "color"; "required": false; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "customTemplate": { "alias": "customTemplate"; "required": false; }; "look": { "alias": "look"; "required": false; }; "active": { "alias": "active"; "required": false; }; "passed": { "alias": "passed"; "required": false; }; "label": { "alias": "label"; "required": false; }; "description": { "alias": "description"; "required": false; }; "id": { "alias": "id"; "required": false; }; }, {}, never, ["ax-content", "ax-icon"], false, never>;
24
25
  }
@@ -2,4 +2,4 @@ export interface AXStepWizardItem {
2
2
  id: string;
3
3
  title: string;
4
4
  }
5
- export type AXStepWizardLook = 'classic-rounded' | 'classic-circular' | 'with-line' | 'custom';
5
+ export type AXStepWizardLook = 'classic-rounded' | 'classic-circular' | 'with-line' | 'with-line-number' | 'custom';
@@ -1,5 +1,5 @@
1
1
  import { AXOrientation, MXBaseComponent } from '@acorex/components/common';
2
- import { OnInit, Signal, WritableSignal } from '@angular/core';
2
+ import { OnInit } from '@angular/core';
3
3
  import { AXStepWizardItemComponent } from './step-wizard-item/step-wizard-item.component';
4
4
  import { AXStepWizardLook } from './step-wizard.class';
5
5
  import { AXStepWizardContentDirective } from './step-wizard.directive';
@@ -9,7 +9,7 @@ import * as i0 from "@angular/core";
9
9
  * A component for creating a step-by-step wizard interface.
10
10
  */
11
11
  export declare class AXStepWizardComponent extends MXBaseComponent implements OnInit {
12
- constructor();
12
+ #private;
13
13
  /**
14
14
  * Sets the visual style of the step wizard.
15
15
  *
@@ -17,23 +17,17 @@ export declare class AXStepWizardComponent extends MXBaseComponent implements On
17
17
  */
18
18
  look: import("@angular/core").ModelSignal<AXStepWizardLook>;
19
19
  /** @ignore */
20
- protected activeStepIndex: WritableSignal<number>;
20
+ protected activeStepIndex: import("@angular/core").WritableSignal<number>;
21
21
  /** @ignore */
22
- protected activeLook: WritableSignal<AXStepWizardLook>;
23
- /** @ignore */
24
- protected activeOrientation: WritableSignal<AXOrientation>;
25
- isFirst: Signal<boolean>;
26
- isLast: Signal<boolean>;
27
- /** @ignore */
28
- protected className: Signal<string[]>;
22
+ protected activeOrientation: import("@angular/core").WritableSignal<AXOrientation>;
23
+ isFirst: import("@angular/core").Signal<boolean>;
24
+ isLast: import("@angular/core").Signal<boolean>;
29
25
  /** @ignore */
30
26
  private changeStepContent;
31
27
  /** @ignore */
32
- private stepChangeEffect;
33
- /** @ignore */
34
28
  ngOnInit(): void;
35
29
  /** @ignore */
36
- steps: Signal<readonly AXStepWizardItemComponent[]>;
30
+ steps: import("@angular/core").Signal<readonly AXStepWizardItemComponent[]>;
37
31
  /**
38
32
  * Sets the orientation of the component.
39
33
  *
@@ -1,81 +0,0 @@
1
- import { AXClickEvent, MXColorComponent, MXInteractiveComponent } from '@acorex/components/common';
2
- import { AUTO_STYLE, animate, state, style, transition, trigger } from '@angular/animations';
3
- import { ChangeDetectionStrategy, Component, ElementRef, HostBinding, ViewEncapsulation, afterNextRender, model, output, signal, } from '@angular/core';
4
- import { classes } from 'polytype';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@acorex/components/common";
7
- import * as i2 from "@acorex/components/loading";
8
- import * as i3 from "@angular/common";
9
- import * as i4 from "@acorex/core/translation";
10
- export class AXSideMenuItemClickEvent extends AXClickEvent {
11
- constructor() {
12
- super(...arguments);
13
- this.handled = false;
14
- }
15
- }
16
- export class AXSideMenuItemComponent extends classes(MXInteractiveComponent, MXColorComponent) {
17
- constructor(elem) {
18
- super();
19
- this.elem = elem;
20
- this.isLoading = model(false);
21
- this.text = model('');
22
- this.isCollapsed = model(true);
23
- this.active = model(false);
24
- this.onClick = output();
25
- this.hasChild = signal(false);
26
- afterNextRender(() => {
27
- this.hasChild.set(this.elem.nativeElement.getElementsByTagName('ax-side-menu-item').length > 0);
28
- });
29
- }
30
- _handleClickEvent(e) {
31
- if (this.disabled || this.isLoading())
32
- return;
33
- const event = {
34
- component: this,
35
- htmlElement: this.getHostElement(),
36
- nativeEvent: e,
37
- handled: false,
38
- };
39
- this.onClick.emit(event);
40
- if (!event.handled) {
41
- this.toggle();
42
- }
43
- e.stopPropagation();
44
- }
45
- toggle() {
46
- this.isCollapsed.update((prev) => !prev);
47
- }
48
- open() {
49
- this.isCollapsed.set(true);
50
- }
51
- close() {
52
- this.isCollapsed.set(false);
53
- }
54
- get __hostClass() {
55
- return [`ax-${this.color}-solid`];
56
- }
57
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXSideMenuItemComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
58
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXSideMenuItemComponent, selector: "ax-side-menu-item", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: false, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, isCollapsed: { classPropertyName: "isCollapsed", publicName: "isCollapsed", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isLoading: "isLoadingChange", text: "textChange", isCollapsed: "isCollapsedChange", active: "activeChange", onClick: "onClick" }, host: { attributes: { "ngSkipHydration": "true" }, properties: { "class": "this.__hostClass" } }, usesInheritance: true, ngImport: i0, template: "<ng-content select=\"ax-title\"></ng-content>\n<div\n [axRipple]\n class=\"ax-side-item\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-active]=\"active()\"\n (click)=\"_handleClickEvent($event)\"\n>\n <div class=\"ax-start-side\">\n <ng-content select=\"ax-prefix\"></ng-content>\n @if(text()){\n <span>{{text()}}</span>\n }\n <ng-content></ng-content>\n </div>\n <div class=\"ax-end-side\">\n <ng-content select=\"ax-suffix\"></ng-content>\n @if(hasChild() && !isLoading()){\n <span class=\"ax-icon ax-icon-chevron-right arrow-icon\" [class.arrow-icon-expand]=\"!isCollapsed()\"></span>\n } @if(isLoading()){\n <ax-loading></ax-loading>\n }\n </div>\n</div>\n\n<div class=\"ax-side-children\" [@collapse]=\"isCollapsed()\">\n @if(isLoading()){\n <p>{{'loading' | translate | async }}</p>\n } @else {\n\n <ng-content select=\"ax-side-menu-item, ng-container\"></ng-content>\n }\n</div>\n\n<ng-content select=\"ax-divider\"></ng-content>\n", dependencies: [{ kind: "directive", type: i1.AXRippleDirective, selector: "[axRipple]", inputs: ["axRipple", "axRippleColor"] }, { kind: "component", type: i2.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], animations: [
59
- trigger('collapse', [
60
- state('false', style({ height: AUTO_STYLE, visibility: AUTO_STYLE })),
61
- state('true', style({ height: '0', visibility: 'hidden' })),
62
- transition('false => true', animate(150 + 'ms ease-in')),
63
- transition('true => false', animate(150 + 'ms ease-out')),
64
- ]),
65
- ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
66
- }
67
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXSideMenuItemComponent, decorators: [{
68
- type: Component,
69
- args: [{ selector: 'ax-side-menu-item', inputs: ['disabled', 'color'], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [
70
- trigger('collapse', [
71
- state('false', style({ height: AUTO_STYLE, visibility: AUTO_STYLE })),
72
- state('true', style({ height: '0', visibility: 'hidden' })),
73
- transition('false => true', animate(150 + 'ms ease-in')),
74
- transition('true => false', animate(150 + 'ms ease-out')),
75
- ]),
76
- ], host: { ngSkipHydration: 'true' }, template: "<ng-content select=\"ax-title\"></ng-content>\n<div\n [axRipple]\n class=\"ax-side-item\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-active]=\"active()\"\n (click)=\"_handleClickEvent($event)\"\n>\n <div class=\"ax-start-side\">\n <ng-content select=\"ax-prefix\"></ng-content>\n @if(text()){\n <span>{{text()}}</span>\n }\n <ng-content></ng-content>\n </div>\n <div class=\"ax-end-side\">\n <ng-content select=\"ax-suffix\"></ng-content>\n @if(hasChild() && !isLoading()){\n <span class=\"ax-icon ax-icon-chevron-right arrow-icon\" [class.arrow-icon-expand]=\"!isCollapsed()\"></span>\n } @if(isLoading()){\n <ax-loading></ax-loading>\n }\n </div>\n</div>\n\n<div class=\"ax-side-children\" [@collapse]=\"isCollapsed()\">\n @if(isLoading()){\n <p>{{'loading' | translate | async }}</p>\n } @else {\n\n <ng-content select=\"ax-side-menu-item, ng-container\"></ng-content>\n }\n</div>\n\n<ng-content select=\"ax-divider\"></ng-content>\n" }]
77
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { __hostClass: [{
78
- type: HostBinding,
79
- args: ['class']
80
- }] } });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1tZW51LWl0ZW0uY29tcG9lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc2lkZS1tZW51L3NyYy9saWIvc2lkZS1tZW51LWl0ZW0vc2lkZS1tZW51LWl0ZW0uY29tcG9lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc2lkZS1tZW51L3NyYy9saWIvc2lkZS1tZW51LWl0ZW0vc2lkZS1tZW51LWl0ZW0uY29tcG9lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkcsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0YsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsZUFBZSxFQUNmLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7OztBQUVuQyxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsWUFBWTtJQUExRDs7UUFDRSxZQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLENBQUM7Q0FBQTtBQWtCRCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsT0FBTyxDQUFDLHNCQUFzQixFQUFFLGdCQUFnQixDQUFDO0lBYTVGLFlBQW9CLElBQWdCO1FBQ2xDLEtBQUssRUFBRSxDQUFDO1FBRFUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQVpwQyxjQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpCLFNBQUksR0FBRyxLQUFL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QUFVLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDLENBQUM7NEJBQ3hELFVBQVUsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLEdBQUcsR0FBRyxhQUFhLENBQUMsQ0FBQzt5QkFDMUQsQ0FBQztxQkFDSCxRQUNLLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRTsrRUFrRHJCLFdBQVc7c0JBRHRCLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ2xpY2tFdmVudCwgTVhDb2xvckNvbXBvbmVudCwgTVhJbnRlcmFjdGl2ZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHsgQVVUT19TVFlMRSwgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGFmdGVyTmV4dFJlbmRlcixcbiAgbW9kZWwsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsYXNzZXMgfSBmcm9tICdwb2x5dHlwZSc7XG5cbmV4cG9ydCBjbGFzcyBBWFNpZGVNZW51SXRlbUNsaWNrRXZlbnQgZXh0ZW5kcyBBWENsaWNrRXZlbnQge1xuICBoYW5kbGVkID0gZmFsc2U7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LXNpZGUtbWVudS1pdGVtJyxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2NvbG9yJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9zaWRlLW1lbnUtaXRlbS5jb21wb2VudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdjb2xsYXBzZScsIFtcbiAgICAgIHN0YXRlKCdmYWxzZScsIHN0eWxlKHsgaGVpZ2h0OiBBVVRPX1NUWUxFLCB2aXNpYmlsaXR5OiBBVVRPX1NUWUxFIH0pKSxcbiAgICAgIHN0YXRlKCd0cnVlJywgc3R5bGUoeyBoZWlnaHQ6ICcwJywgdmlzaWJpbGl0eTogJ2hpZGRlbicgfSkpLFxuICAgICAgdHJhbnNpdGlvbignZmFsc2UgPT4gdHJ1ZScsIGFuaW1hdGUoMTUwICsgJ21zIGVhc2UtaW4nKSksXG4gICAgICB0cmFuc2l0aW9uKCd0cnVlID0+IGZhbHNlJywgYW5pbWF0ZSgxNTAgKyAnbXMgZWFzZS1vdXQnKSksXG4gICAgXSksXG4gIF0sXG4gIGhvc3Q6IHsgbmdTa2lwSHlkcmF0aW9uOiAndHJ1ZScgfSxcbn0pXG5leHBvcnQgY2xhc3MgQVhTaWRlTWVudUl0ZW1Db21wb25lbnQgZXh0ZW5kcyBjbGFzc2VzKE1YSW50ZXJhY3RpdmVDb21wb25lbnQsIE1YQ29sb3JDb21wb25lbnQpIHtcbiAgaXNMb2FkaW5nID0gbW9kZWwoZmFsc2UpO1xuXG4gIHRleHQgPSBtb2RlbCgnJyk7XG5cbiAgaXNDb2xsYXBzZWQgPSBtb2RlbCh0cnVlKTtcblxuICBhY3RpdmUgPSBtb2RlbChmYWxzZSk7XG5cbiAgb25DbGljayA9IG91dHB1dDxBWFNpZGVNZW51SXRlbUNsaWNrRXZlbnQ+KCk7XG5cbiAgcHJvdGVjdGVkIGhhc0NoaWxkID0gc2lnbmFsKGZhbHNlKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW06IEVsZW1lbnRSZWYpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICAgIHRoaXMuaGFzQ2hpbGQuc2V0KHRoaXMuZWxlbS5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdheC1zaWRlLW1lbnUtaXRlbScpLmxlbmd0aCA+IDApO1xuICAgIH0pO1xuICB9XG5cbiAgX2hhbmRsZUNsaWNrRXZlbnQoZTogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMuaXNMb2FkaW5nKCkpIHJldHVybjtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGh0bWxFbGVtZW50OiB0aGlzLmdldEhvc3RFbGVtZW50KCksXG4gICAgICBuYXRpdmVFdmVudDogZSxcbiAgICAgIGhhbmRsZWQ6IGZhbHNlLFxuICAgIH07XG4gICAgdGhpcy5vbkNsaWNrLmVtaXQoZXZlbnQpO1xuICAgIGlmICghZXZlbnQuaGFuZGxlZCkge1xuICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICB9XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHRvZ2dsZSgpIHtcbiAgICB0aGlzLmlzQ29sbGFwc2VkLnVwZGF0ZSgocHJldikgPT4gIXByZXYpO1xuICB9XG5cbiAgb3BlbigpIHtcbiAgICB0aGlzLmlzQ29sbGFwc2VkLnNldCh0cnVlKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMuaXNDb2xsYXBzZWQuc2V0KGZhbHNlKTtcbiAgfVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgcHJpdmF0ZSBnZXQgX19ob3N0Q2xhc3MoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbYGF4LSR7dGhpcy5jb2xvcn0tc29saWRgXTtcbiAgfVxufVxuIiwiPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtdGl0bGVcIj48L25nLWNvbnRlbnQ+XG48ZGl2XG4gIFtheFJpcHBsZV1cbiAgY2xhc3M9XCJheC1zaWRlLWl0ZW1cIlxuICBbY2xhc3MuYXgtc3RhdGUtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbY2xhc3MuYXgtc3RhdGUtYWN0aXZlXT1cImFjdGl2ZSgpXCJcbiAgKGNsaWNrKT1cIl9oYW5kbGVDbGlja0V2ZW50KCRldmVudClcIlxuPlxuICA8ZGl2IGNsYXNzPVwiYXgtc3RhcnQtc2lkZVwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LXByZWZpeFwiPjwvbmctY29udGVudD5cbiAgICBAaWYodGV4dCgpKXtcbiAgICA8c3Bhbj57e3RleHQoKX19PC9zcGFuPlxuICAgIH1cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYXgtZW5kLXNpZGVcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1zdWZmaXhcIj48L25nLWNvbnRlbnQ+XG4gICAgQGlmKGhhc0NoaWxkKCkgJiYgIWlzTG9hZGluZygpKXtcbiAgICA8c3BhbiBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jaGV2cm9uLXJpZ2h0IGFycm93LWljb25cIiBbY2xhc3MuYXJyb3ctaWNvbi1leHBhbmRdPVwiIWlzQ29sbGFwc2VkKClcIj48L3NwYW4+XG4gICAgfSBAaWYoaXNMb2FkaW5nKCkpe1xuICAgIDxheC1sb2FkaW5nPjwvYXgtbG9hZGluZz5cbiAgICB9XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJheC1zaWRlLWNoaWxkcmVuXCIgW0Bjb2xsYXBzZV09XCJpc0NvbGxhcHNlZCgpXCI+XG4gIEBpZihpc0xvYWRpbmcoKSl7XG4gIDxwPnt7J2xvYWRpbmcnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L3A+XG4gIH0gQGVsc2Uge1xuXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LXNpZGUtbWVudS1pdGVtLCBuZy1jb250YWluZXJcIj48L25nLWNvbnRlbnQ+XG4gIH1cbjwvZGl2PlxuXG48bmctY29udGVudCBzZWxlY3Q9XCJheC1kaXZpZGVyXCI+PC9uZy1jb250ZW50PlxuIl19