zek 17.3.15 → 17.3.22

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 (45) hide show
  1. package/esm2022/lib/components/core-ui.component.mjs +1 -1
  2. package/esm2022/lib/models/filter.model.mjs +1 -1
  3. package/esm2022/lib/models/index.mjs +2 -1
  4. package/esm2022/lib/models/modal-size.mjs +2 -0
  5. package/esm2022/lib/models/pager.model.mjs +4 -14
  6. package/esm2022/lib/models/valid-event-args.model.mjs +1 -1
  7. package/esm2022/lib/modules/alert/alert/alert.mjs +1 -1
  8. package/esm2022/lib/modules/bb/bb-modal-base.mjs +74 -0
  9. package/esm2022/lib/modules/bb/bb-modal-toolbar.mjs +1 -1
  10. package/esm2022/lib/modules/bb/bb.component.mjs +40 -19
  11. package/esm2022/lib/modules/bb/bb.module.mjs +6 -6
  12. package/esm2022/lib/modules/bb/index.mjs +2 -2
  13. package/esm2022/lib/modules/file-viewer/file-viewer.mjs +2 -2
  14. package/esm2022/lib/modules/google-login-button/google-login-button.mjs +1 -1
  15. package/esm2022/lib/modules/grid-toolbar/grid-toolbar/grid-toolbar.mjs +1 -1
  16. package/esm2022/lib/modules/list-toolbar/list-toolbar.mjs +1 -1
  17. package/esm2022/lib/modules/loading/loading.mjs +1 -1
  18. package/esm2022/lib/modules/modal/filter-modal/filter-modal.component.mjs +3 -3
  19. package/esm2022/lib/modules/modal/modal/modal.component.mjs +32 -19
  20. package/esm2022/lib/modules/modal/sum-modal/sum-modal.component.mjs +1 -1
  21. package/esm2022/lib/modules/numeric/numeric.directive.mjs +1 -1
  22. package/esm2022/lib/modules/page-title/page-title.component.mjs +1 -1
  23. package/esm2022/lib/modules/pager/pager/pager.mjs +1 -1
  24. package/esm2022/lib/modules/password/password.mjs +1 -1
  25. package/esm2022/lib/modules/progress/progress.mjs +1 -1
  26. package/esm2022/lib/modules/radio/radio.mjs +1 -1
  27. package/esm2022/lib/modules/recaptcha/recaptcha.service.mjs +1 -1
  28. package/esm2022/lib/modules/sort/sort-button-group/sort-button-group.mjs +1 -1
  29. package/esm2022/lib/modules/sort/sort.mjs +1 -1
  30. package/esm2022/lib/modules/time/timer-service.mjs +2 -2
  31. package/esm2022/lib/services/auth.service.mjs +1 -1
  32. package/esm2022/lib/utils/pager-helper.mjs +3 -3
  33. package/fesm2022/zek.mjs +89 -65
  34. package/fesm2022/zek.mjs.map +1 -1
  35. package/lib/models/index.d.ts +1 -0
  36. package/lib/models/modal-size.d.ts +1 -0
  37. package/lib/models/pager.model.d.ts +3 -7
  38. package/lib/modules/bb/{bb-modal-base.component.d.ts → bb-modal-base.d.ts} +4 -4
  39. package/lib/modules/bb/bb-modal-toolbar.d.ts +1 -1
  40. package/lib/modules/bb/bb.component.d.ts +15 -5
  41. package/lib/modules/bb/bb.module.d.ts +4 -4
  42. package/lib/modules/bb/index.d.ts +1 -1
  43. package/lib/modules/modal/modal/modal.component.d.ts +11 -3
  44. package/package.json +1 -1
  45. package/esm2022/lib/modules/bb/bb-modal-base.component.mjs +0 -74
@@ -10,6 +10,7 @@ export * from './gender.model';
10
10
  export * from './key-pair.model';
11
11
  export * from './list-base.model';
12
12
  export * from './login.model';
13
+ export * from './modal-size';
13
14
  export * from './month.model';
14
15
  export * from './nav.model';
15
16
  export * from './pager.model';
@@ -0,0 +1 @@
1
+ export type ModalSize = '' | 'sm' | 'md' | 'lg' | 'xl';
@@ -1,7 +1,5 @@
1
- export declare class PagerBase {
1
+ export declare class Pager {
2
2
  totalItemCount: number;
3
- }
4
- export declare class Pager extends PagerBase {
5
3
  pageCount: number;
6
4
  pageNumber: number;
7
5
  pageSize: number;
@@ -13,15 +11,13 @@ export declare class Pager extends PagerBase {
13
11
  lastItemOnPage: number;
14
12
  pages: number[];
15
13
  }
16
- export declare class PagedListBase<T = any> {
14
+ export declare class PagedList<T = any> {
17
15
  data: T[];
18
16
  pager: Pager;
19
17
  totalItemCount: number;
18
+ count: number;
20
19
  pageNumber: number;
21
20
  pageSize: number;
22
- count: number;
23
- }
24
- export declare class PagedList<T = any> extends PagedListBase<T> {
25
21
  pageCount: number;
26
22
  hasPreviousPage: boolean;
27
23
  hasNextPage: boolean;
@@ -2,12 +2,12 @@ import { EventEmitter } from "@angular/core";
2
2
  import { BooleanInput, CoreComponent } from "../../components";
3
3
  import { PagedList } from "../../models";
4
4
  import * as i0 from "@angular/core";
5
- export declare class ButtonBrowseModalBaseComponent extends CoreComponent {
5
+ export declare class ZekButtonBrowseModalBase extends CoreComponent {
6
6
  type?: string | null;
7
7
  filter: any;
8
8
  data?: PagedList | null;
9
9
  private _multiSelect;
10
- get multiSelect(): BooleanInput;
10
+ get multiSelect(): boolean;
11
11
  set multiSelect(v: BooleanInput);
12
12
  value: any;
13
13
  onChoose: EventEmitter<any>;
@@ -21,6 +21,6 @@ export declare class ButtonBrowseModalBaseComponent extends CoreComponent {
21
21
  onPageSizeChange(pageSize: number): void;
22
22
  search(): void;
23
23
  reset(): void;
24
- static ɵfac: i0.ɵɵFactoryDeclaration<ButtonBrowseModalBaseComponent, never>;
25
- static ɵdir: i0.ɵɵDirectiveDeclaration<ButtonBrowseModalBaseComponent, never, never, { "type": { "alias": "type"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "data": { "alias": "data"; "required": false; }; "multiSelect": { "alias": "multiSelect"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "onChoose": "onChoose"; "onChooseAll": "onChooseAll"; }, never, never, false, never>;
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<ZekButtonBrowseModalBase, never>;
25
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ZekButtonBrowseModalBase, never, never, { "type": { "alias": "type"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "data": { "alias": "data"; "required": false; }; "multiSelect": { "alias": "multiSelect"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "onChoose": "onChoose"; "onChooseAll": "onChooseAll"; }, never, never, false, never>;
26
26
  }
@@ -7,7 +7,7 @@ export declare class ZekButtonBrowseModalToolbar {
7
7
  onReset: EventEmitter<any>;
8
8
  reset(): void;
9
9
  private _multiSelect;
10
- get multiSelect(): BooleanInput;
10
+ get multiSelect(): boolean;
11
11
  set multiSelect(v: BooleanInput);
12
12
  onChooseAll: EventEmitter<any>;
13
13
  chooseAll(): void;
@@ -1,7 +1,7 @@
1
1
  import { EventEmitter } from '@angular/core';
2
2
  import { BooleanInput } from '../../components';
3
3
  import { CoreUiComponent } from '../../components/core-ui.component';
4
- import { KeyPair, PagedList } from '../../models';
4
+ import { KeyPair, ModalSize, PagedList } from '../../models';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class ZekButtonBrowse extends CoreUiComponent {
7
7
  destroy(): Promise<void>;
@@ -28,7 +28,7 @@ export declare class ZekButtonBrowse extends CoreUiComponent {
28
28
  get showInput(): boolean;
29
29
  set showInput(v: BooleanInput);
30
30
  private _multiSelect;
31
- get multiSelect(): BooleanInput;
31
+ get multiSelect(): boolean;
32
32
  set multiSelect(v: BooleanInput);
33
33
  onShowModal: EventEmitter<any>;
34
34
  onChooseAll: EventEmitter<any>;
@@ -37,8 +37,18 @@ export declare class ZekButtonBrowse extends CoreUiComponent {
37
37
  private _modal;
38
38
  get modal(): any;
39
39
  set modal(v: any);
40
- size?: '' | 'sm' | 'lg' | 'xl' | 'xxl' | null;
41
- get _sizeCss(): "" | "modal-sm" | "modal-lg" | "modal-xl" | "modal-xxl";
40
+ private _size;
41
+ get size(): ModalSize;
42
+ set size(v: ModalSize);
43
+ private _scrollable;
44
+ get scrollable(): boolean;
45
+ set scrollable(v: BooleanInput);
46
+ private _fullscreen;
47
+ get fullscreen(): boolean;
48
+ set fullscreen(v: BooleanInput);
49
+ private _showHeader;
50
+ get showHeader(): boolean;
51
+ set showHeader(v: BooleanInput);
42
52
  showModal(): void;
43
53
  close(): void;
44
54
  choose(value: any): void;
@@ -48,5 +58,5 @@ export declare class ZekButtonBrowse extends CoreUiComponent {
48
58
  onValueChanged(): void;
49
59
  bindText(): void;
50
60
  static ɵfac: i0.ɵɵFactoryDeclaration<ZekButtonBrowse, never>;
51
- static ɵcmp: i0.ɵɵComponentDeclaration<ZekButtonBrowse, "zek-bb", never, { "id": { "alias": "id"; "required": false; }; "type": { "alias": "type"; "required": false; }; "text": { "alias": "text"; "required": false; }; "readOnly": { "alias": "readOnly"; "required": false; }; "hide": { "alias": "hide"; "required": false; }; "showInput": { "alias": "showInput"; "required": false; }; "multiSelect": { "alias": "multiSelect"; "required": false; }; }, { "onShowModal": "onShowModal"; "onChooseAll": "onChooseAll"; "onKeyPairChange": "onKeyPairChange"; "onBindText": "onBindText"; }, never, ["*"], false, never>;
61
+ static ɵcmp: i0.ɵɵComponentDeclaration<ZekButtonBrowse, "zek-bb", never, { "id": { "alias": "id"; "required": false; }; "type": { "alias": "type"; "required": false; }; "text": { "alias": "text"; "required": false; }; "readOnly": { "alias": "readOnly"; "required": false; }; "hide": { "alias": "hide"; "required": false; }; "showInput": { "alias": "showInput"; "required": false; }; "multiSelect": { "alias": "multiSelect"; "required": false; }; "size": { "alias": "size"; "required": false; }; "scrollable": { "alias": "scrollable"; "required": false; }; "fullscreen": { "alias": "fullscreen"; "required": false; }; "showHeader": { "alias": "showHeader"; "required": false; }; }, { "onShowModal": "onShowModal"; "onChooseAll": "onChooseAll"; "onKeyPairChange": "onKeyPairChange"; "onBindText": "onBindText"; }, never, ["*"], false, never>;
52
62
  }
@@ -4,8 +4,8 @@ import * as i2 from "./bb-modal-toolbar";
4
4
  import * as i3 from "@angular/common";
5
5
  import * as i4 from "@angular/forms";
6
6
  import * as i5 from "@ngx-translate/core";
7
- export declare class ButtonBrowseModule {
8
- static ɵfac: i0.ɵɵFactoryDeclaration<ButtonBrowseModule, never>;
9
- static ɵmod: i0.ɵɵNgModuleDeclaration<ButtonBrowseModule, [typeof i1.ZekButtonBrowse, typeof i2.ZekButtonBrowseModalToolbar], [typeof i3.CommonModule, typeof i4.FormsModule, typeof i5.TranslateModule], [typeof i1.ZekButtonBrowse, typeof i2.ZekButtonBrowseModalToolbar]>;
10
- static ɵinj: i0.ɵɵInjectorDeclaration<ButtonBrowseModule>;
7
+ export declare class ZekButtonBrowseModule {
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<ZekButtonBrowseModule, never>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ZekButtonBrowseModule, [typeof i1.ZekButtonBrowse, typeof i2.ZekButtonBrowseModalToolbar], [typeof i3.CommonModule, typeof i4.FormsModule, typeof i5.TranslateModule], [typeof i1.ZekButtonBrowse, typeof i2.ZekButtonBrowseModalToolbar]>;
10
+ static ɵinj: i0.ɵɵInjectorDeclaration<ZekButtonBrowseModule>;
11
11
  }
@@ -1,4 +1,4 @@
1
1
  export * from './bb.module';
2
- export * from './bb-modal-base.component';
2
+ export * from './bb-modal-base';
3
3
  export * from './bb-modal-toolbar';
4
4
  export * from './bb.component';
@@ -3,6 +3,7 @@ import { TranslateService } from '@ngx-translate/core';
3
3
  import { BooleanInput, CoreComponent } from '../../../components';
4
4
  import { ComponentType } from '../../../utils';
5
5
  import { ValidEventArgs } from '../../../models/valid-event-args.model';
6
+ import { ModalSize } from '../../../models';
6
7
  import * as i0 from "@angular/core";
7
8
  export declare class ZekModal extends CoreComponent {
8
9
  private readonly translate;
@@ -40,10 +41,17 @@ export declare class ZekModal extends CoreComponent {
40
41
  onHidden: EventEmitter<any>;
41
42
  onOk: EventEmitter<any>;
42
43
  componentType: ComponentType;
43
- private _large;
44
+ private _size;
45
+ get size(): ModalSize;
46
+ set size(v: ModalSize);
47
+ /**
48
+ * @deprecated Please use size property
49
+ */
44
50
  get large(): boolean;
45
51
  set large(v: BooleanInput);
46
- private _xl;
52
+ /**
53
+ * @deprecated Please use size property
54
+ */
47
55
  get xl(): boolean;
48
56
  set xl(v: BooleanInput);
49
57
  private _scrollable;
@@ -68,7 +76,7 @@ export declare class ZekModal extends CoreComponent {
68
76
  ok(): void;
69
77
  keyDown(e: Event): void;
70
78
  static ɵfac: i0.ɵɵFactoryDeclaration<ZekModal, never>;
71
- static ɵcmp: i0.ɵɵComponentDeclaration<ZekModal, "zek-modal", never, { "id": { "alias": "id"; "required": false; }; "model": { "alias": "model"; "required": false; }; "showOk": { "alias": "showOk"; "required": false; }; "disabledOk": { "alias": "disabledOk"; "required": false; }; "showCancel": { "alias": "showCancel"; "required": false; }; "autoHide": { "alias": "autoHide"; "required": false; }; "title": { "alias": "title"; "required": false; }; "text": { "alias": "text"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "okButtonText": { "alias": "okButtonText"; "required": false; }; "componentType": { "alias": "componentType"; "required": false; }; "large": { "alias": "large"; "required": false; }; "xl": { "alias": "xl"; "required": false; }; "scrollable": { "alias": "scrollable"; "required": false; }; "fullscreen": { "alias": "fullscreen"; "required": false; }; "showHeader": { "alias": "showHeader"; "required": false; }; "showFooter": { "alias": "showFooter"; "required": false; }; }, { "onShown": "onShown"; "onHidden": "onHidden"; "onOk": "onOk"; "onValidating": "onValidating"; }, never, ["header", "*", "footer"], false, never>;
79
+ static ɵcmp: i0.ɵɵComponentDeclaration<ZekModal, "zek-modal", never, { "id": { "alias": "id"; "required": false; }; "model": { "alias": "model"; "required": false; }; "showOk": { "alias": "showOk"; "required": false; }; "disabledOk": { "alias": "disabledOk"; "required": false; }; "showCancel": { "alias": "showCancel"; "required": false; }; "autoHide": { "alias": "autoHide"; "required": false; }; "title": { "alias": "title"; "required": false; }; "text": { "alias": "text"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "okButtonText": { "alias": "okButtonText"; "required": false; }; "componentType": { "alias": "componentType"; "required": false; }; "size": { "alias": "size"; "required": false; }; "large": { "alias": "large"; "required": false; }; "xl": { "alias": "xl"; "required": false; }; "scrollable": { "alias": "scrollable"; "required": false; }; "fullscreen": { "alias": "fullscreen"; "required": false; }; "showHeader": { "alias": "showHeader"; "required": false; }; "showFooter": { "alias": "showFooter"; "required": false; }; }, { "onShown": "onShown"; "onHidden": "onHidden"; "onOk": "onOk"; "onValidating": "onValidating"; }, never, ["header", "*", "footer"], false, never>;
72
80
  }
73
81
  export declare class ZekDeleteModal extends ZekModal {
74
82
  constructor(translate: TranslateService);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zek",
3
- "version": "17.3.15",
3
+ "version": "17.3.22",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.3.0",
6
6
  "@angular/core": "^17.3.0"
@@ -1,74 +0,0 @@
1
- import { Directive, EventEmitter, Input, Output } from "@angular/core";
2
- import { CoreComponent } from "../../components";
3
- import { Convert } from "../../utils";
4
- import * as i0 from "@angular/core";
5
- export class ButtonBrowseModalBaseComponent extends CoreComponent {
6
- constructor() {
7
- super(...arguments);
8
- this.filter = {};
9
- this._multiSelect = false;
10
- this.onChoose = new EventEmitter();
11
- this.onChooseAll = new EventEmitter();
12
- }
13
- get multiSelect() {
14
- return this._multiSelect;
15
- }
16
- set multiSelect(v) {
17
- this._multiSelect = Convert.toBooleanProperty(v);
18
- }
19
- choose(value) {
20
- this.onChoose.emit(value);
21
- }
22
- chooseAll() {
23
- this.onChooseAll.emit(this.filter);
24
- }
25
- onKeydown(e) {
26
- e.preventDefault();
27
- e.stopPropagation();
28
- this.search();
29
- }
30
- bindData() { }
31
- async refresh() {
32
- try {
33
- this.loading = true;
34
- await this.bindData();
35
- }
36
- finally {
37
- this.loading = false;
38
- }
39
- }
40
- onPageChange(page) {
41
- this.filter.page = page;
42
- this.refresh();
43
- }
44
- onPageSizeChange(pageSize) {
45
- this.filter.pageSize = pageSize;
46
- this.onPageChange(1);
47
- }
48
- search() {
49
- this.onPageChange(1);
50
- }
51
- reset() {
52
- this.filter = {};
53
- }
54
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ButtonBrowseModalBaseComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
55
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.4", type: ButtonBrowseModalBaseComponent, inputs: { type: "type", filter: "filter", data: "data", multiSelect: "multiSelect", value: "value" }, outputs: { onChoose: "onChoose", onChooseAll: "onChooseAll" }, usesInheritance: true, ngImport: i0 }); }
56
- }
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ButtonBrowseModalBaseComponent, decorators: [{
58
- type: Directive
59
- }], propDecorators: { type: [{
60
- type: Input
61
- }], filter: [{
62
- type: Input
63
- }], data: [{
64
- type: Input
65
- }], multiSelect: [{
66
- type: Input
67
- }], value: [{
68
- type: Input
69
- }], onChoose: [{
70
- type: Output
71
- }], onChooseAll: [{
72
- type: Output
73
- }] } });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmItbW9kYWwtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9tb2R1bGVzL2JiL2JiLW1vZGFsLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFnQixhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUd0QyxNQUFNLE9BQU8sOEJBQStCLFNBQVEsYUFBYTtJQURqRTs7UUFHYSxXQUFNLEdBQVEsRUFBRSxDQUFDO1FBR2xCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBVW5CLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBSzlCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQXNDOUM7SUFwREcsSUFBYyxXQUFXO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBQ0QsSUFBSSxXQUFXLENBQUMsQ0FBZTtRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBS0QsTUFBTSxDQUFDLEtBQVU7UUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBR0QsU0FBUztRQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsU0FBUyxDQUFDLENBQVE7UUFDZCxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDbkIsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsUUFBUSxLQUFLLENBQUM7SUFDZCxLQUFLLENBQUMsT0FBTztRQUNULElBQUksQ0FBQztZQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFCLENBQUM7Z0JBQ08sQ0FBQztZQUNMLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLENBQUM7SUFFTCxDQUFDO0lBQ0QsWUFBWSxDQUFDLElBQVk7UUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsUUFBZ0I7UUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQzs4R0F6RFEsOEJBQThCO2tHQUE5Qiw4QkFBOEI7OzJGQUE5Qiw4QkFBOEI7a0JBRDFDLFNBQVM7OEJBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBR1EsV0FBVztzQkFBeEIsS0FBSztnQkFPRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTTtnQkFLRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIENvcmVDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50c1wiO1xyXG5pbXBvcnQgeyBQYWdlZExpc3QgfSBmcm9tIFwiLi4vLi4vbW9kZWxzXCI7XHJcbmltcG9ydCB7IENvbnZlcnQgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgY2xhc3MgQnV0dG9uQnJvd3NlTW9kYWxCYXNlQ29tcG9uZW50IGV4dGVuZHMgQ29yZUNvbXBvbmVudCB7XHJcbiAgICBASW5wdXQoKSB0eXBlPzogc3RyaW5nIHwgbnVsbDtcclxuICAgIEBJbnB1dCgpIGZpbHRlcjogYW55ID0ge307XHJcbiAgICBASW5wdXQoKSBkYXRhPzogUGFnZWRMaXN0IHwgbnVsbDtcclxuXHJcbiAgICBwcml2YXRlIF9tdWx0aVNlbGVjdCA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgIGdldCBtdWx0aVNlbGVjdCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbXVsdGlTZWxlY3Q7XHJcbiAgICB9XHJcbiAgICBzZXQgbXVsdGlTZWxlY3QodjogQm9vbGVhbklucHV0KSB7XHJcbiAgICAgICAgdGhpcy5fbXVsdGlTZWxlY3QgPSBDb252ZXJ0LnRvQm9vbGVhblByb3BlcnR5KHYpO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpIHZhbHVlOiBhbnk7XHJcblxyXG4gICAgQE91dHB1dCgpIG9uQ2hvb3NlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgY2hvb3NlKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICB0aGlzLm9uQ2hvb3NlLmVtaXQodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoKSBvbkNob29zZUFsbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIGNob29zZUFsbCgpIHtcclxuICAgICAgICB0aGlzLm9uQ2hvb3NlQWxsLmVtaXQodGhpcy5maWx0ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uS2V5ZG93bihlOiBFdmVudCkge1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYmluZERhdGEoKSB7IH1cclxuICAgIGFzeW5jIHJlZnJlc2goKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5iaW5kRGF0YSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIG9uUGFnZUNoYW5nZShwYWdlOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLmZpbHRlci5wYWdlID0gcGFnZTtcclxuICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgIH1cclxuICAgIG9uUGFnZVNpemVDaGFuZ2UocGFnZVNpemU6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyLnBhZ2VTaXplID0gcGFnZVNpemU7XHJcbiAgICAgICAgdGhpcy5vblBhZ2VDaGFuZ2UoMSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VhcmNoKCkge1xyXG4gICAgICAgIHRoaXMub25QYWdlQ2hhbmdlKDEpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlc2V0KCkge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyID0ge307XHJcbiAgICB9XHJcbn0iXX0=