ps-toolkit-ui 1.3.19 → 1.3.23

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.
@@ -490,3 +490,157 @@ form{
490
490
  .m-r-1400-0{margin-right: 0;}.m-l-1400-0{margin-left: 0;}
491
491
  }
492
492
  .f-r{float:right!important}.f-l{float:left!important}.f-u{float:unset!important}
493
+
494
+ /* Positioning and visibility settings of the tooltip */
495
+ [data-tooltip]:before,
496
+ [data-tooltip]:after {
497
+ position: absolute;
498
+ visibility: hidden;
499
+ opacity: 0;
500
+ left: 50%;
501
+ bottom: calc(100% + 5px);
502
+ pointer-events: none;
503
+ transition: 0.2s;
504
+ will-change: transform;
505
+ }
506
+
507
+ /* The actual tooltip with a dynamic width */
508
+ [data-tooltip]:before {
509
+ content: attr(data-tooltip);
510
+ padding: 0 10px;
511
+ line-height: 30px;
512
+ min-width: 50px;
513
+ max-width: 300px;
514
+ width: max-content;
515
+ width: -moz-max-content;
516
+ border-radius: var(--border-radius-base);
517
+ font-size: 13px;
518
+ background-color: var(--black);
519
+ color: #fff;
520
+ text-align: center;
521
+ white-space: pre-wrap;
522
+ z-index: 6;
523
+ transform: translate(-50%, -5px) scale(0.5);
524
+ }
525
+
526
+ /* Tooltip arrow */
527
+ [data-tooltip]:after {
528
+ content: '';
529
+ border-style: solid;
530
+ border-width: 5px 5px 0px 5px;
531
+ border-color: var(--black);
532
+ transition-duration: 0s; /* If the mouse leaves the element,
533
+ the transition effects for the
534
+ tooltip arrow are "turned off" */
535
+ transform-origin: top; /* Orientation setting for the
536
+ slide-down effect */
537
+ transform: translateX(-50%) scaleY(0);
538
+ }
539
+
540
+ /* Tooltip becomes visible at hover */
541
+ [data-tooltip]:hover:before,
542
+ [data-tooltip]:hover:after {
543
+ visibility: visible;
544
+ opacity: 1;
545
+ }
546
+ /* Scales from 0.5 to 1 -> grow effect */
547
+ [data-tooltip]:hover:before {
548
+ transition-delay: 0.3s;
549
+ transform: translate(-50%, -5px) scale(1);
550
+ }
551
+ /* Slide down effect only on mouseenter (NOT on mouseleave) */
552
+ [data-tooltip]:hover:after {
553
+ transition-delay: 0.5s; /* Starting after the grow effect */
554
+ transition-duration: 0.2s;
555
+ transform: translateX(-50%) scaleY(1);
556
+ }
557
+ /*
558
+ That's it.
559
+ */
560
+
561
+
562
+
563
+
564
+
565
+
566
+ /*
567
+ If you want some adjustability
568
+ here are some orientation settings you can use:
569
+ */
570
+
571
+ /* LEFT */
572
+ /* Tooltip + arrow */
573
+ [data-tooltip-location="left"]:before,
574
+ [data-tooltip-location="left"]:after {
575
+ left: auto;
576
+ right: calc(100% + 5px);
577
+ bottom: 50%;
578
+ }
579
+
580
+ /* Tooltip */
581
+ [data-tooltip-location="left"]:before {
582
+ transform: translate(-5px, 50%) scale(0.5);
583
+ }
584
+ [data-tooltip-location="left"]:hover:before {
585
+ transform: translate(-5px, 50%) scale(1);
586
+ }
587
+
588
+ /* Arrow */
589
+ [data-tooltip-location="left"]:after {
590
+ border-width: 5px 0px 5px 5px;
591
+ border-color: transparent transparent transparent rgba(55, 64, 70, 0.9);
592
+ transform-origin: left;
593
+ transform: translateY(50%) scaleX(0);
594
+ }
595
+ [data-tooltip-location="left"]:hover:after {
596
+ transform: translateY(50%) scaleX(1);
597
+ }
598
+
599
+
600
+
601
+ /* RIGHT */
602
+ [data-tooltip-location="right"]:before,
603
+ [data-tooltip-location="right"]:after {
604
+ left: calc(100% + 5px);
605
+ bottom: 50%;
606
+ }
607
+
608
+ [data-tooltip-location="right"]:before {
609
+ transform: translate(5px, 50%) scale(0.5);
610
+ }
611
+ [data-tooltip-location="right"]:hover:before {
612
+ transform: translate(5px, 50%) scale(1);
613
+ }
614
+
615
+ [data-tooltip-location="right"]:after {
616
+ border-width: 5px 5px 5px 0px;
617
+ border-color: transparent rgba(55, 64, 70, 0.9) transparent transparent;
618
+ transform-origin: right;
619
+ transform: translateY(50%) scaleX(0);
620
+ }
621
+ [data-tooltip-location="right"]:hover:after {
622
+ transform: translateY(50%) scaleX(1);
623
+ }
624
+
625
+
626
+
627
+ /* BOTTOM */
628
+ [data-tooltip-location="bottom"]:before,
629
+ [data-tooltip-location="bottom"]:after {
630
+ top: calc(100% + 5px);
631
+ bottom: auto;
632
+ }
633
+
634
+ [data-tooltip-location="bottom"]:before {
635
+ transform: translate(-50%, 5px) scale(0.5);
636
+ }
637
+ [data-tooltip-location="bottom"]:hover:before {
638
+ transform: translate(-50%, 5px) scale(1);
639
+ }
640
+
641
+ [data-tooltip-location="bottom"]:after {
642
+ border-width: 0px 5px 5px 5px;
643
+ border-color: transparent transparent rgba(55, 64, 70, 0.9) transparent;
644
+ transform-origin: bottom;
645
+ }
646
+
@@ -1,17 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- export class TableOldLoadingComponent {
3
- constructor() {
4
- }
5
- }
6
- TableOldLoadingComponent.decorators = [
7
- { type: Component, args: [{
8
- selector: 'lib-table-old-loading',
9
- template: "<div *ngIf=\"table.loading\" class=\"loading\">\r\n <div class=\"text\" [innerHTML]=\"table.l('LoadingTable', 'Processing')\"></div>\r\n</div>\r\n<div *ngIf=\"!table.permission\" class=\"loading\">\r\n <div class=\"text\"><i class=\"fas fa-shield-alt icon\"></i>{{ table.l(\"PermissionDenied\") }}</div>\r\n</div>\r\n<div *ngIf=\"!table.loading && table.permission && table.rows.length == 0\" class=\"loading\">\r\n <div class=\"text\"><i class=\"fas fa-exclamation icon\"></i>{{ table.l(\"NotfoundTitle\") }}</div>\r\n</div>\r\n",
10
- styles: [".loading{background-color:#fff;border-radius:var(--border-radius-base);bottom:0;height:100%;right:0;z-index:101}.loading,.loading .text{position:absolute;text-align:center;width:100%}.loading .text{font-family:VazirBold;height:35px;line-height:35px;top:calc(50% - 20px)}::ng-deep .loading .text .icon{font-size:20px!important;line-height:30px;margin-left:5px;position:relative;top:5px}"]
11
- },] }
12
- ];
13
- TableOldLoadingComponent.ctorParameters = () => [];
14
- TableOldLoadingComponent.propDecorators = {
15
- table: [{ type: Input }]
16
- };
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtb2xkLmxvYWRpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkQ6L1Byb2plY3RzL1BzVG9vbGtpdC9VSS9wcm9qZWN0cy9wcy10b29sa2l0LXVpL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3RhYmxlLW9sZC9sb2FkaW5nL3RhYmxlLW9sZC5sb2FkaW5nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQVF2RCxNQUFNLE9BQU8sd0JBQXdCO0lBR25DO0lBQ0EsQ0FBQzs7O1lBVEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSx1QkFBdUI7Z0JBQ2pDLGdpQkFBaUQ7O2FBRWxEOzs7O29CQUVFLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7VGFibGVDbGFzc30gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy90YWJsZS5jbGFzcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi10YWJsZS1vbGQtbG9hZGluZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLW9sZC5sb2FkaW5nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWJsZS1vbGQubG9hZGluZy5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlT2xkTG9hZGluZ0NvbXBvbmVudCB7XHJcbiAgQElucHV0KClcclxuICB0YWJsZTogVGFibGVDbGFzcztcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcbn1cclxuIl19
@@ -1,84 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { InputClass, OptionClass } from '../../../classes/form.class';
3
- import { InputType } from '../../../classes/enum.class';
4
- export class TableOldPaginationComponent {
5
- get type() { return InputType; }
6
- getButtons() {
7
- this.size = parseInt((this.table.count / this.table.perPage).toString(), 10) + (this.table.count % this.table.perPage > 0 ? 1 : 0);
8
- if (this.size <= 1) {
9
- return [];
10
- }
11
- const previous = new InputClass(this.table.environment, this.table.l, null, 'fa-duotone fa-angle-right', InputType.Button, 'h-25', this.table.page - 1);
12
- previous.onClick = (btn) => this.changePage(btn);
13
- const next = new InputClass(this.table.environment, this.table.l, null, 'fa-duotone fa-angle-left', InputType.Button, 'h-25', this.table.page + 1);
14
- next.onClick = (btn) => this.changePage(btn);
15
- const last = new InputClass(this.table.environment, this.table.l, this.size.toString(), null, InputType.Button, 'h-25 last', this.size);
16
- last.onClick = (btn) => this.changePage(btn);
17
- const first = new InputClass(this.table.environment, this.table.l, '1', null, InputType.Button, 'h-25 first', 1);
18
- first.onClick = (btn) => this.changePage(btn);
19
- const dots = new InputClass(this.table.environment, this.table.l, 'dots', '', InputType.Icon);
20
- let buttons = [];
21
- buttons.push(previous);
22
- if (this.table.page === 1) {
23
- previous.onClick = null;
24
- }
25
- if (this.size < 6) {
26
- buttons = buttons.concat(this.add(1, this.size + 1));
27
- }
28
- else if (this.table.page < 4) {
29
- buttons = buttons.concat(this.add(1, 5), [dots, last]);
30
- }
31
- else if (this.table.page > this.size - 3) {
32
- buttons = buttons.concat([first, dots], this.add(this.size - 3, this.size + 1));
33
- }
34
- else {
35
- buttons = buttons.concat([first, dots], this.add(this.table.page - 1, this.table.page + 2), [dots, last]);
36
- }
37
- buttons.push(next);
38
- if (this.table.page === this.size) {
39
- next.onClick = null;
40
- }
41
- return buttons;
42
- }
43
- add(s, f) {
44
- const l = [];
45
- for (let i = s; i < f; i++) {
46
- const b = new InputClass(this.table.environment, this.table.l, i.toString(), null, InputType.Button, 'h-25' + (this.table.page === i ? ' active' : ' extra'), i);
47
- b.onClick = (btn) => this.changePage(btn);
48
- l.push(b);
49
- }
50
- return l;
51
- }
52
- changePage(btn) {
53
- this.table.page = btn.value;
54
- this.table.load(btn);
55
- }
56
- ngOnInit() {
57
- this.perPageSelect = new InputClass(this.table.environment, this.table.l, 'PerPage', '', InputType.Select, 'h-25 w-80-p f-l');
58
- this.perPageSelect.value = this.table.perPage.toString();
59
- this.perPageSelect.options = [
60
- new OptionClass('5', '5'),
61
- new OptionClass('10', '10'),
62
- new OptionClass('50', '50'),
63
- new OptionClass('100', '100'),
64
- ];
65
- this.perPageSelect.value = this.perPageSelect.search = this.table.perPage.toString();
66
- this.perPageSelect.displayLabel = false;
67
- this.perPageSelect.onChange = (v) => {
68
- this.table.page = 1;
69
- this.table.perPage = parseInt(v.value, 10);
70
- this.table.load();
71
- };
72
- }
73
- }
74
- TableOldPaginationComponent.decorators = [
75
- { type: Component, args: [{
76
- selector: 'lib-table-old-pagination',
77
- template: "<div class=\"pagination\">\r\n <div class=\"items\">\r\n <span *ngFor=\"let btn of getButtons()\">\r\n <lib-form-button *ngIf=\"btn.type === type.Button\" [inp]=\"btn\"></lib-form-button>\r\n <div class=\"dots\" *ngIf=\"btn.type === type.Icon\"><div class=\"w-100\"><i class=\"fas fa-ellipsis-h icon\"></i></div></div>\r\n </span>\r\n </div>\r\n <lib-form-select [inp]=\"perPageSelect\"></lib-form-select>\r\n</div>\r\n",
78
- styles: [".pagination{float:right;margin-top:10px;text-align:center;width:100%}.pagination .items{display:inline-block;position:relative}::ng-deep .table-con .pagination .form-input-con.button{display:inline-block;float:unset;margin:0 2px;min-width:25px;padding:0 5px;vertical-align:middle;width:unset}::ng-deep .table-con .pagination .items .dots{display:inline-block;height:25px;line-height:25px;margin:0 5px;min-width:25px}::ng-deep .table-con .pagination .form-input-con.select{display:inline-block;float:left;margin:0 5px;min-width:25px;padding:0 5px;width:unset}@media (max-width:399.98px){::ng-deep .table-con .pagination .form-input-con.button.extra,::ng-deep .table-con .pagination .form-input-con.button.first,::ng-deep .table-con .pagination .form-input-con.button.last{display:none}::ng-deep .table-con .pagination .form-input-con.button{margin:0 3px;padding:0 3px}::ng-deep .table-con .pagination .items .dots{display:none}}@media (min-width:400px) and (max-width:499.98px){::ng-deep .table-con .pagination .form-input-con.button.extra,::ng-deep .table-con .pagination .form-input-con.button.first,::ng-deep .table-con .pagination .form-input-con.button.last{display:none}::ng-deep .table-con .pagination .form-input-con.button{margin:0 3px;padding:0 3px}::ng-deep .table-con .pagination .items .dots{display:none}}@media (min-width:500px) and (max-width:599.98px){::ng-deep .table-con .pagination .form-input-con.button.extra{display:none}::ng-deep .table-con .pagination .form-input-con.button{margin:0 3px;padding:0 3px}::ng-deep .table-con .pagination .items .dots{font-size:10px;margin:0}}@media (min-width:600px) and (max-width:699.98px){::ng-deep .table-con .pagination .form-input-con.button{margin:0 3px;padding:0 3px}::ng-deep .table-con .pagination .items .dots{font-size:10px;margin:0}}@media (min-width:700px) and (max-width:799.98px){::ng-deep .table-con .pagination .form-input-con.button{margin:0 3px;padding:0 3px}::ng-deep .table-con .pagination .items .dots{font-size:10px;margin:0}}@media (min-width:800px) and (max-width:899.98px){::ng-deep .table-con .pagination .form-input-con.button{margin:0 3px;padding:0 3px}::ng-deep .table-con .pagination .items .dots{font-size:10px;margin:0}}@media (min-width:900px) and (max-width:999.98px){::ng-deep .table-con .pagination .form-input-con.button{margin:0 3px;padding:0 3px}::ng-deep .table-con .pagination .items .dots{font-size:10px;margin:0}}"]
79
- },] }
80
- ];
81
- TableOldPaginationComponent.propDecorators = {
82
- table: [{ type: Input }]
83
- };
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtb2xkLnBhZ2luYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkQ6L1Byb2plY3RzL1BzVG9vbGtpdC9VSS9wcm9qZWN0cy9wcy10b29sa2l0LXVpL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3RhYmxlLW9sZC9wYWdpbmF0aW9uL3RhYmxlLW9sZC5wYWdpbmF0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQU90RCxNQUFNLE9BQU8sMkJBQTJCO0lBTXRDLElBQUksSUFBSSxLQUF1QixPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFFbEQsVUFBVTtRQUNSLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuSSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFO1lBQ2xCLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQ3hFLDJCQUEyQixFQUFFLFNB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QUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQztJQUNKLENBQUM7OztZQWxGRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDBCQUEwQjtnQkFDcEMsa2NBQW9EOzthQUVyRDs7O29CQUVFLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7VGFibGVDbGFzc30gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy90YWJsZS5jbGFzcyc7XHJcbmltcG9ydCB7SW5wdXRDbGFzcywgT3B0aW9uQ2xhc3N9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZm9ybS5jbGFzcyc7XHJcbmltcG9ydCB7SW5wdXRUeXBlfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2VudW0uY2xhc3MnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItdGFibGUtb2xkLXBhZ2luYXRpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1vbGQucGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtb2xkLnBhZ2luYXRpb24uY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZU9sZFBhZ2luYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpXHJcbiAgdGFibGU6IFRhYmxlQ2xhc3M7XHJcbiAgc2l6ZTogbnVtYmVyO1xyXG4gIHBlclBhZ2VTZWxlY3Q6IElucHV0Q2xhc3M7XHJcbiAgbmV4dDogSW5wdXRDbGFzcztcclxuICBnZXQgdHlwZSgpOiB0eXBlb2YgSW5wdXRUeXBlIHsgcmV0dXJuIElucHV0VHlwZTsgfVxyXG5cclxuICBnZXRCdXR0b25zKCk6IElucHV0Q2xhc3NbXXtcclxuICAgIHRoaXMuc2l6ZSA9IHBhcnNlSW50KCh0aGlzLnRhYmxlLmNvdW50IC8gdGhpcy50YWJsZS5wZXJQYWdlKS50b1N0cmluZygpLCAxMCkgKyAodGhpcy50YWJsZS5jb3VudCAlIHRoaXMudGFibGUucGVyUGFnZSA+IDAgPyAxIDogMCk7XHJcbiAgICBpZiAodGhpcy5zaXplIDw9IDEpIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcHJldmlvdXMgPSBuZXcgSW5wdXRDbGFzcyh0aGlzLnRhYmxlLmVudmlyb25tZW50LCB0aGlzLnRhYmxlLmwsIG51bGwsXHJcbiAgICAgICdmYS1kdW90b25lIGZhLWFuZ2xlLXJpZ2h0JywgSW5wdXRUeXBlLkJ1dHRvbiwgJ2gtMjUnLCB0aGlzLnRhYmxlLnBhZ2UgLSAxKTtcclxuICAgIHByZXZpb3VzLm9uQ2xpY2sgPSAoYnRuKSA9PiB0aGlzLmNoYW5nZVBhZ2UoYnRuKTtcclxuICAgIGNvbnN0IG5leHQgPSBuZXcgSW5wdXRDbGFzcyh0aGlzLnRhYmxlLmVudmlyb25tZW50LCB0aGlzLnRhYmxlLmwsIG51bGwsXHJcbiAgICAgICdmYS1kdW90b25lIGZhLWFuZ2xlLWxlZnQnLCBJbnB1dFR5cGUuQnV0dG9uLCAnaC0yNScsIHRoaXMudGFibGUucGFnZSArIDEpO1xyXG4gICAgbmV4dC5vbkNsaWNrID0gKGJ0bikgPT4gdGhpcy5jaGFuZ2VQYWdlKGJ0bik7XHJcbiAgICBjb25zdCBsYXN0ID0gbmV3IElucHV0Q2xhc3ModGhpcy50YWJsZS5lbnZpcm9ubWVudCwgdGhpcy50YWJsZS5sLCB0aGlzLnNpemUudG9TdHJpbmcoKSwgbnVsbCxcclxuICAgICAgSW5wdXRUeXBlLkJ1dHRvbiwgJ2gtMjUgbGFzdCcsIHRoaXMuc2l6ZSk7XHJcbiAgICBsYXN0Lm9uQ2xpY2sgPSAoYnRuKSA9PiB0aGlzLmNoYW5nZVBhZ2UoYnRuKTtcclxuICAgIGNvbnN0IGZpcnN0ID0gbmV3IElucHV0Q2xhc3ModGhpcy50YWJsZS5lbnZpcm9ubWVudCwgdGhpcy50YWJsZS5sLCAnMScsIG51bGwsIElucHV0VHlwZS5CdXR0b24sICdoLTI1IGZpcnN0JywgMSk7XHJcbiAgICBmaXJzdC5vbkNsaWNrID0gKGJ0bikgPT4gdGhpcy5jaGFuZ2VQYWdlKGJ0bik7XHJcbiAgICBjb25zdCBkb3RzID0gbmV3IElucHV0Q2xhc3ModGhpcy50YWJsZS5lbnZpcm9ubWVudCwgdGhpcy50YWJsZS5sLCAnZG90cycsICcnLCBJbnB1dFR5cGUuSWNvbik7XHJcbiAgICBsZXQgYnV0dG9uczogSW5wdXRDbGFzc1tdID0gW107XHJcbiAgICBidXR0b25zLnB1c2gocHJldmlvdXMpO1xyXG4gICAgaWYgKHRoaXMudGFibGUucGFnZSA9PT0gMSl7XHJcbiAgICAgIHByZXZpb3VzLm9uQ2xpY2sgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2l6ZSA8IDYpIHtcclxuICAgICAgYnV0dG9ucyA9IGJ1dHRvbnMuY29uY2F0KHRoaXMuYWRkKDEsIHRoaXMuc2l6ZSArIDEpKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy50YWJsZS5wYWdlIDwgNCkge1xyXG4gICAgICBidXR0b25zID0gYnV0dG9ucy5jb25jYXQodGhpcy5hZGQoMSwgNSksIFtkb3RzLCBsYXN0XSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudGFibGUucGFnZSA+IHRoaXMuc2l6ZSAtIDMpIHtcclxuICAgICAgYnV0dG9ucyA9IGJ1dHRvbnMuY29uY2F0KFtmaXJzdCwgZG90c10sIHRoaXMuYWRkKHRoaXMuc2l6ZSAtIDMsIHRoaXMuc2l6ZSArIDEpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGJ1dHRvbnMgPSBidXR0b25zLmNvbmNhdChbZmlyc3QsIGRvdHNdLCB0aGlzLmFkZCh0aGlzLnRhYmxlLnBhZ2UgLSAxLCB0aGlzLnRhYmxlLnBhZ2UgKyAyKSwgW2RvdHMsIGxhc3RdKTtcclxuICAgIH1cclxuICAgIGJ1dHRvbnMucHVzaChuZXh0KTtcclxuICAgIGlmICh0aGlzLnRhYmxlLnBhZ2UgPT09IHRoaXMuc2l6ZSl7XHJcbiAgICAgIG5leHQub25DbGljayA9IG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYnV0dG9ucztcclxuICB9XHJcblxyXG4gIGFkZChzOiBudW1iZXIsIGY6IG51bWJlcik6IElucHV0Q2xhc3NbXSB7XHJcbiAgICBjb25zdCBsOiBJbnB1dENsYXNzW10gPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSBzOyBpIDwgZjsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGIgPSBuZXcgSW5wdXRDbGFzcyh0aGlzLnRhYmxlLmVudmlyb25tZW50LCB0aGlzLnRhYmxlLmwsIGkudG9TdHJpbmcoKSxcclxuICAgICAgICBudWxsLCBJbnB1dFR5cGUuQnV0dG9uLCAnaC0yNScgKyAodGhpcy50YWJsZS5wYWdlID09PSBpID8gJyBhY3RpdmUnIDogJyBleHRyYScpLCBpKTtcclxuICAgICAgYi5vbkNsaWNrID0gKGJ0bikgPT4gdGhpcy5jaGFuZ2VQYWdlKGJ0bik7XHJcbiAgICAgIGwucHVzaChiKTtcclxuICAgIH1cclxuICAgIHJldHVybiBsO1xyXG4gIH1cclxuICBjaGFuZ2VQYWdlKGJ0bik6IHZvaWR7XHJcbiAgICB0aGlzLnRhYmxlLnBhZ2UgPSBidG4udmFsdWU7XHJcbiAgICB0aGlzLnRhYmxlLmxvYWQoYnRuKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWR7XHJcbiAgICB0aGlzLnBlclBhZ2VTZWxlY3QgPSBuZXcgSW5wdXRDbGFzcyh0aGlzLnRhYmxlLmVudmlyb25tZW50LCB0aGlzLnRhYmxlLmwsICdQZXJQYWdlJywgJycsIElucHV0VHlwZS5TZWxlY3QsICdoLTI1IHctODAtcCBmLWwnKTtcclxuICAgIHRoaXMucGVyUGFnZVNlbGVjdC52YWx1ZSA9IHRoaXMudGFibGUucGVyUGFnZS50b1N0cmluZygpO1xyXG4gICAgdGhpcy5wZXJQYWdlU2VsZWN0Lm9wdGlvbnMgPSBbXHJcbiAgICAgIG5ldyBPcHRpb25DbGFzcygnNScsICc1JyksXHJcbiAgICAgIG5ldyBPcHRpb25DbGFzcygnMTAnLCAnMTAnKSxcclxuICAgICAgbmV3IE9wdGlvbkNsYXNzKCc1MCcsICc1MCcpLFxyXG4gICAgICBuZXcgT3B0aW9uQ2xhc3MoJzEwMCcsICcxMDAnKSxcclxuICAgIF07XHJcbiAgICB0aGlzLnBlclBhZ2VTZWxlY3QudmFsdWUgPSB0aGlzLnBlclBhZ2VTZWxlY3Quc2VhcmNoID0gdGhpcy50YWJsZS5wZXJQYWdlLnRvU3RyaW5nKCk7XHJcbiAgICB0aGlzLnBlclBhZ2VTZWxlY3QuZGlzcGxheUxhYmVsID0gZmFsc2U7XHJcbiAgICB0aGlzLnBlclBhZ2VTZWxlY3Qub25DaGFuZ2UgPSAodikgPT4ge1xyXG4gICAgICB0aGlzLnRhYmxlLnBhZ2UgPSAxO1xyXG4gICAgICB0aGlzLnRhYmxlLnBlclBhZ2UgPSBwYXJzZUludCh2LnZhbHVlLCAxMCk7XHJcbiAgICAgIHRoaXMudGFibGUubG9hZCgpO1xyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19