primeng 18.0.2 → 18.0.4-lts

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 (126) hide show
  1. package/api/licensemanager.d.ts +4 -0
  2. package/api/public_api.d.ts +1 -0
  3. package/datepicker/datepicker.d.ts +22 -88
  4. package/esm2022/api/licensemanager.mjs +114 -0
  5. package/esm2022/api/public_api.mjs +2 -1
  6. package/esm2022/basecomponent/basecomponent.mjs +3 -1
  7. package/esm2022/calendar/calendar.mjs +8 -9
  8. package/esm2022/datepicker/datepicker.mjs +8 -9
  9. package/esm2022/tag/tag.mjs +1 -2
  10. package/esm2022/tree/tree.mjs +3 -5
  11. package/fesm2022/primeng-accordion.mjs +2 -2
  12. package/fesm2022/primeng-animateonscroll.mjs +1 -1
  13. package/fesm2022/primeng-api.mjs +116 -2
  14. package/fesm2022/primeng-api.mjs.map +1 -1
  15. package/fesm2022/primeng-autocomplete.mjs +2 -2
  16. package/fesm2022/primeng-avatar.mjs +1 -1
  17. package/fesm2022/primeng-avatargroup.mjs +1 -1
  18. package/fesm2022/primeng-badge.mjs +2 -2
  19. package/fesm2022/primeng-basecomponent.mjs +2 -0
  20. package/fesm2022/primeng-basecomponent.mjs.map +1 -1
  21. package/fesm2022/primeng-blockui.mjs +2 -2
  22. package/fesm2022/primeng-breadcrumb.mjs +2 -2
  23. package/fesm2022/primeng-button.mjs +2 -2
  24. package/fesm2022/primeng-buttongroup.mjs +1 -1
  25. package/fesm2022/primeng-calendar.mjs +10 -11
  26. package/fesm2022/primeng-calendar.mjs.map +1 -1
  27. package/fesm2022/primeng-card.mjs +2 -2
  28. package/fesm2022/primeng-carousel.mjs +2 -2
  29. package/fesm2022/primeng-cascadeselect.mjs +1 -1
  30. package/fesm2022/primeng-chart.mjs +1 -1
  31. package/fesm2022/primeng-checkbox.mjs +2 -2
  32. package/fesm2022/primeng-chip.mjs +2 -2
  33. package/fesm2022/primeng-colorpicker.mjs +1 -1
  34. package/fesm2022/primeng-confirmdialog.mjs +2 -2
  35. package/fesm2022/primeng-confirmpopup.mjs +3 -3
  36. package/fesm2022/primeng-contextmenu.mjs +1 -1
  37. package/fesm2022/primeng-dataview.mjs +2 -2
  38. package/fesm2022/primeng-datepicker.mjs +10 -11
  39. package/fesm2022/primeng-datepicker.mjs.map +1 -1
  40. package/fesm2022/primeng-defer.mjs +1 -1
  41. package/fesm2022/primeng-dialog.mjs +2 -2
  42. package/fesm2022/primeng-divider.mjs +1 -1
  43. package/fesm2022/primeng-dock.mjs +2 -2
  44. package/fesm2022/primeng-dragdrop.mjs +1 -1
  45. package/fesm2022/primeng-drawer.mjs +2 -2
  46. package/fesm2022/primeng-dropdown.mjs +1 -1
  47. package/fesm2022/primeng-dynamicdialog.mjs +1 -1
  48. package/fesm2022/primeng-editor.mjs +2 -2
  49. package/fesm2022/primeng-fieldset.mjs +3 -3
  50. package/fesm2022/primeng-fileupload.mjs +2 -2
  51. package/fesm2022/primeng-floatlabel.mjs +1 -1
  52. package/fesm2022/primeng-fluid.mjs +1 -1
  53. package/fesm2022/primeng-galleria.mjs +1 -1
  54. package/fesm2022/primeng-iconfield.mjs +1 -1
  55. package/fesm2022/primeng-icons-baseicon.mjs +1 -1
  56. package/fesm2022/primeng-iftalabel.mjs +1 -1
  57. package/fesm2022/primeng-image.mjs +2 -2
  58. package/fesm2022/primeng-imagecompare.mjs +2 -2
  59. package/fesm2022/primeng-inplace.mjs +2 -2
  60. package/fesm2022/primeng-inputgroupaddon.mjs +1 -1
  61. package/fesm2022/primeng-inputicon.mjs +1 -1
  62. package/fesm2022/primeng-inputmask.mjs +2 -2
  63. package/fesm2022/primeng-inputnumber.mjs +2 -2
  64. package/fesm2022/primeng-inputotp.mjs +2 -2
  65. package/fesm2022/primeng-inputswitch.mjs +1 -1
  66. package/fesm2022/primeng-inputtext.mjs +1 -1
  67. package/fesm2022/primeng-inputtextarea.mjs +1 -1
  68. package/fesm2022/primeng-keyfilter.mjs +1 -1
  69. package/fesm2022/primeng-knob.mjs +1 -1
  70. package/fesm2022/primeng-listbox.mjs +2 -2
  71. package/fesm2022/primeng-megamenu.mjs +1 -1
  72. package/fesm2022/primeng-menu.mjs +1 -1
  73. package/fesm2022/primeng-menubar.mjs +1 -1
  74. package/fesm2022/primeng-message.mjs +2 -2
  75. package/fesm2022/primeng-messages.mjs +1 -1
  76. package/fesm2022/primeng-metergroup.mjs +1 -1
  77. package/fesm2022/primeng-multiselect.mjs +1 -1
  78. package/fesm2022/primeng-orderlist.mjs +2 -2
  79. package/fesm2022/primeng-organizationchart.mjs +2 -2
  80. package/fesm2022/primeng-overlay.mjs +2 -2
  81. package/fesm2022/primeng-overlaybadge.mjs +1 -1
  82. package/fesm2022/primeng-overlaypanel.mjs +2 -2
  83. package/fesm2022/primeng-paginator.mjs +2 -2
  84. package/fesm2022/primeng-panel.mjs +3 -3
  85. package/fesm2022/primeng-panelmenu.mjs +2 -2
  86. package/fesm2022/primeng-password.mjs +2 -2
  87. package/fesm2022/primeng-picklist.mjs +2 -2
  88. package/fesm2022/primeng-popover.mjs +3 -3
  89. package/fesm2022/primeng-progressbar.mjs +2 -2
  90. package/fesm2022/primeng-progressspinner.mjs +1 -1
  91. package/fesm2022/primeng-radiobutton.mjs +1 -1
  92. package/fesm2022/primeng-rating.mjs +2 -2
  93. package/fesm2022/primeng-scroller.mjs +2 -2
  94. package/fesm2022/primeng-scrollpanel.mjs +2 -2
  95. package/fesm2022/primeng-scrolltop.mjs +3 -3
  96. package/fesm2022/primeng-select.mjs +1 -1
  97. package/fesm2022/primeng-selectbutton.mjs +2 -2
  98. package/fesm2022/primeng-sidebar.mjs +2 -2
  99. package/fesm2022/primeng-skeleton.mjs +1 -1
  100. package/fesm2022/primeng-slider.mjs +1 -1
  101. package/fesm2022/primeng-speeddial.mjs +2 -2
  102. package/fesm2022/primeng-splitbutton.mjs +2 -2
  103. package/fesm2022/primeng-splitter.mjs +2 -2
  104. package/fesm2022/primeng-stepper.mjs +3 -3
  105. package/fesm2022/primeng-steps.mjs +1 -1
  106. package/fesm2022/primeng-styleclass.mjs +1 -1
  107. package/fesm2022/primeng-table.mjs +1 -1
  108. package/fesm2022/primeng-tabmenu.mjs +2 -2
  109. package/fesm2022/primeng-tabs.mjs +2 -2
  110. package/fesm2022/primeng-tabview.mjs +2 -2
  111. package/fesm2022/primeng-tag.mjs +2 -3
  112. package/fesm2022/primeng-tag.mjs.map +1 -1
  113. package/fesm2022/primeng-terminal.mjs +1 -1
  114. package/fesm2022/primeng-textarea.mjs +1 -1
  115. package/fesm2022/primeng-tieredmenu.mjs +1 -1
  116. package/fesm2022/primeng-timeline.mjs +2 -2
  117. package/fesm2022/primeng-toast.mjs +2 -2
  118. package/fesm2022/primeng-togglebutton.mjs +2 -2
  119. package/fesm2022/primeng-toggleswitch.mjs +2 -2
  120. package/fesm2022/primeng-toolbar.mjs +2 -2
  121. package/fesm2022/primeng-tree.mjs +3 -5
  122. package/fesm2022/primeng-tree.mjs.map +1 -1
  123. package/fesm2022/primeng-treeselect.mjs +2 -2
  124. package/fesm2022/primeng-treetable.mjs +1 -1
  125. package/package.json +170 -170
  126. package/tag/tag.d.ts +0 -1
@@ -0,0 +1,4 @@
1
+ export declare const LicenseManager: Readonly<{
2
+ verify: (licenseKey: string, passKey: string, debug?: boolean) => void;
3
+ check: () => Promise<boolean>;
4
+ }>;
@@ -30,3 +30,4 @@ export * from './treedragdropservice';
30
30
  export * from './treenode';
31
31
  export * from './treenodedragevent';
32
32
  export * from './treetablenode';
33
+ export * from './licensemanager';
@@ -761,99 +761,33 @@ export declare class DatePicker extends BaseComponent implements OnInit, AfterCo
761
761
  ngOnDestroy(): void;
762
762
  static ɵfac: i0.ɵɵFactoryDeclaration<DatePicker, never>;
763
763
  static ɵcmp: i0.ɵɵComponentDeclaration<DatePicker, "p-datePicker, p-datepicker, p-date-picker", never, { "iconDisplay": { "alias": "iconDisplay"; "required": false; }; "style": { "alias": "style"; "required": false; }; "styleClass": { "alias": "styleClass"; "required": false; }; "inputStyle": { "alias": "inputStyle"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "name": { "alias": "name"; "required": false; }; "inputStyleClass": { "alias": "inputStyleClass"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "iconAriaLabel": { "alias": "iconAriaLabel"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "dateFormat": { "alias": "dateFormat"; "required": false; }; "multipleSeparator": { "alias": "multipleSeparator"; "required": false; }; "rangeSeparator": { "alias": "rangeSeparator"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; "showOtherMonths": { "alias": "showOtherMonths"; "required": false; }; "selectOtherMonths": { "alias": "selectOtherMonths"; "required": false; }; "showIcon": { "alias": "showIcon"; "required": false; }; "fluid": { "alias": "fluid"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "appendTo": { "alias": "appendTo"; "required": false; }; "readonlyInput": { "alias": "readonlyInput"; "required": false; }; "shortYearCutoff": { "alias": "shortYearCutoff"; "required": false; }; "monthNavigator": { "alias": "monthNavigator"; "required": false; }; "yearNavigator": { "alias": "yearNavigator"; "required": false; }; "hourFormat": { "alias": "hourFormat"; "required": false; }; "timeOnly": { "alias": "timeOnly"; "required": false; }; "stepHour": { "alias": "stepHour"; "required": false; }; "stepMinute": { "alias": "stepMinute"; "required": false; }; "stepSecond": { "alias": "stepSecond"; "required": false; }; "showSeconds": { "alias": "showSeconds"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showOnFocus": { "alias": "showOnFocus"; "required": false; }; "showWeek": { "alias": "showWeek"; "required": false; }; "startWeekFromFirstDayOfYear": { "alias": "startWeekFromFirstDayOfYear"; "required": false; }; "showClear": { "alias": "showClear"; "required": false; }; "dataType": { "alias": "dataType"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; "maxDateCount": { "alias": "maxDateCount"; "required": false; }; "showButtonBar": { "alias": "showButtonBar"; "required": false; }; "todayButtonStyleClass": { "alias": "todayButtonStyleClass"; "required": false; }; "clearButtonStyleClass": { "alias": "clearButtonStyleClass"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "autoZIndex": { "alias": "autoZIndex"; "required": false; }; "baseZIndex": { "alias": "baseZIndex"; "required": false; }; "panelStyleClass": { "alias": "panelStyleClass"; "required": false; }; "panelStyle": { "alias": "panelStyle"; "required": false; }; "keepInvalid": { "alias": "keepInvalid"; "required": false; }; "hideOnDateTimeSelect": { "alias": "hideOnDateTimeSelect"; "required": false; }; "touchUI": { "alias": "touchUI"; "required": false; }; "timeSeparator": { "alias": "timeSeparator"; "required": false; }; "focusTrap": { "alias": "focusTrap"; "required": false; }; "showTransitionOptions": { "alias": "showTransitionOptions"; "required": false; }; "hideTransitionOptions": { "alias": "hideTransitionOptions"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "disabledDates": { "alias": "disabledDates"; "required": false; }; "disabledDays": { "alias": "disabledDays"; "required": false; }; "yearRange": { "alias": "yearRange"; "required": false; }; "showTime": { "alias": "showTime"; "required": false; }; "responsiveOptions": { "alias": "responsiveOptions"; "required": false; }; "numberOfMonths": { "alias": "numberOfMonths"; "required": false; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "view": { "alias": "view"; "required": false; }; "defaultDate": { "alias": "defaultDate"; "required": false; }; }, { "onFocus": "onFocus"; "onBlur": "onBlur"; "onClose": "onClose"; "onSelect": "onSelect"; "onClear": "onClear"; "onInput": "onInput"; "onTodayClick": "onTodayClick"; "onClearClick": "onClearClick"; "onMonthChange": "onMonthChange"; "onYearChange": "onYearChange"; "onClickOutside": "onClickOutside"; "onShow": "onShow"; }, ["dateTemplate", "headerTemplate", "footerTemplate", "disabledDateTemplate", "decadeTemplate", "previousIconTemplate", "nextIconTemplate", "triggerIconTemplate", "clearIconTemplate", "decrementIconTemplate", "incrementIconTemplate", "inputIconTemplate", "templates"], ["p-header", "p-footer"], true, never>;
764
- static ngAcceptInputType_disabled: unknown /**
765
- * Transition options of the show animation.
766
- * @group Props
767
- */;
768
- static ngAcceptInputType_inline: unknown /**
769
- * Transition options of the show animation.
770
- * @group Props
771
- */;
772
- static ngAcceptInputType_showOtherMonths: unknown /**
773
- * Transition options of the show animation.
774
- * @group Props
775
- */;
776
- static ngAcceptInputType_selectOtherMonths: unknown /**
777
- * Transition options of the show animation.
778
- * @group Props
779
- */;
780
- static ngAcceptInputType_showIcon: unknown /**
781
- * Transition options of the show animation.
782
- * @group Props
783
- */;
784
- static ngAcceptInputType_fluid: unknown /**
785
- * Transition options of the show animation.
786
- * @group Props
787
- */;
788
- static ngAcceptInputType_readonlyInput: unknown /**
789
- * Transition options of the show animation.
790
- * @group Props
791
- */;
792
- static ngAcceptInputType_monthNavigator: unknown /**
793
- * Transition options of the show animation.
794
- * @group Props
795
- */;
796
- static ngAcceptInputType_yearNavigator: unknown /**
797
- * Transition options of the show animation.
798
- * @group Props
799
- */;
800
- static ngAcceptInputType_timeOnly: unknown /**
801
- * Transition options of the show animation.
802
- * @group Props
803
- */;
764
+ static ngAcceptInputType_disabled: unknown;
765
+ static ngAcceptInputType_inline: unknown;
766
+ static ngAcceptInputType_showOtherMonths: unknown;
767
+ static ngAcceptInputType_selectOtherMonths: unknown;
768
+ static ngAcceptInputType_showIcon: unknown;
769
+ static ngAcceptInputType_fluid: unknown;
770
+ static ngAcceptInputType_readonlyInput: unknown;
771
+ static ngAcceptInputType_monthNavigator: unknown;
772
+ static ngAcceptInputType_yearNavigator: unknown;
773
+ static ngAcceptInputType_timeOnly: unknown;
804
774
  static ngAcceptInputType_stepHour: unknown;
805
775
  static ngAcceptInputType_stepMinute: unknown;
806
776
  static ngAcceptInputType_stepSecond: unknown;
807
- static ngAcceptInputType_showSeconds: unknown /**
808
- * Transition options of the show animation.
809
- * @group Props
810
- */;
811
- static ngAcceptInputType_required: unknown /**
812
- * Transition options of the show animation.
813
- * @group Props
814
- */;
815
- static ngAcceptInputType_showOnFocus: unknown /**
816
- * Transition options of the show animation.
817
- * @group Props
818
- */;
819
- static ngAcceptInputType_showWeek: unknown /**
820
- * Transition options of the show animation.
821
- * @group Props
822
- */;
823
- static ngAcceptInputType_showClear: unknown /**
824
- * Transition options of the show animation.
825
- * @group Props
826
- */;
777
+ static ngAcceptInputType_showSeconds: unknown;
778
+ static ngAcceptInputType_required: unknown;
779
+ static ngAcceptInputType_showOnFocus: unknown;
780
+ static ngAcceptInputType_showWeek: unknown;
781
+ static ngAcceptInputType_showClear: unknown;
827
782
  static ngAcceptInputType_maxDateCount: unknown;
828
- static ngAcceptInputType_showButtonBar: unknown /**
829
- * Transition options of the show animation.
830
- * @group Props
831
- */;
832
- static ngAcceptInputType_autofocus: unknown /**
833
- * Transition options of the show animation.
834
- * @group Props
835
- */;
836
- static ngAcceptInputType_autoZIndex: unknown /**
837
- * Transition options of the show animation.
838
- * @group Props
839
- */;
783
+ static ngAcceptInputType_showButtonBar: unknown;
784
+ static ngAcceptInputType_autofocus: unknown;
785
+ static ngAcceptInputType_autoZIndex: unknown;
840
786
  static ngAcceptInputType_baseZIndex: unknown;
841
- static ngAcceptInputType_keepInvalid: unknown /**
842
- * Transition options of the show animation.
843
- * @group Props
844
- */;
845
- static ngAcceptInputType_hideOnDateTimeSelect: unknown /**
846
- * Transition options of the show animation.
847
- * @group Props
848
- */;
849
- static ngAcceptInputType_touchUI: unknown /**
850
- * Transition options of the show animation.
851
- * @group Props
852
- */;
853
- static ngAcceptInputType_focusTrap: unknown /**
854
- * Transition options of the show animation.
855
- * @group Props
856
- */;
787
+ static ngAcceptInputType_keepInvalid: unknown;
788
+ static ngAcceptInputType_hideOnDateTimeSelect: unknown;
789
+ static ngAcceptInputType_touchUI: unknown;
790
+ static ngAcceptInputType_focusTrap: unknown;
857
791
  static ngAcceptInputType_tabindex: unknown;
858
792
  }
859
793
  export declare class DatePickerModule {
@@ -0,0 +1,114 @@
1
+ const LicenseManagerImp = {
2
+ licenseKey: undefined,
3
+ passKey: undefined,
4
+ debug: false,
5
+ valid: false,
6
+ verified: false,
7
+ verify: function (licenseKey, passKey, debug = false) {
8
+ [LicenseManagerImp.licenseKey, LicenseManagerImp.passKey, LicenseManagerImp.debug] = [licenseKey, passKey, debug];
9
+ LicenseManagerImp.valid = LicenseManagerImp.verified = false;
10
+ },
11
+ check: async function () {
12
+ if (!LicenseManagerImp.verified) {
13
+ const isClient = !!(typeof window !== 'undefined' && window.document && window.document.createElement);
14
+ LicenseManagerImp.verified = isClient;
15
+ let debug = LicenseManagerImp.debug;
16
+ let valid = false;
17
+ try {
18
+ const plaintext = await LicenseManagerImp.aesGcmDecrypt(LicenseManagerImp.licenseKey, LicenseManagerImp.passKey);
19
+ const tokens = plaintext.split('_');
20
+ const licenseDate = new Date(parseInt(tokens[2]));
21
+ if (tokens.length !== 8) {
22
+ if (debug)
23
+ console.log('Error code: 1333');
24
+ valid = false;
25
+ }
26
+ else if (tokens[0].length !== 2) {
27
+ if (debug)
28
+ console.log('Error code: 1334');
29
+ valid = false;
30
+ }
31
+ else if (isNaN(parseInt(tokens[1]))) {
32
+ if (debug)
33
+ console.log('Error code: 1335');
34
+ valid = false;
35
+ }
36
+ else if (tokens[3] !== 'PRIMENG') {
37
+ if (debug)
38
+ console.log('Error code: 1336');
39
+ valid = false;
40
+ }
41
+ else if (tokens[5] === 'BASIC' && licenseDate <= new Date()) {
42
+ if (debug)
43
+ console.log('Error code: 1337');
44
+ valid = false;
45
+ }
46
+ else if (tokens[6] !== '18') {
47
+ if (debug)
48
+ console.log('Error code: 1338');
49
+ valid = false;
50
+ }
51
+ else if (tokens[7].length !== 6) {
52
+ if (debug)
53
+ console.log('Error code: 1339');
54
+ valid = false;
55
+ }
56
+ else {
57
+ valid = true;
58
+ }
59
+ }
60
+ catch (e) {
61
+ if (debug)
62
+ console.log('Error:', e.message);
63
+ valid = false;
64
+ }
65
+ if (!valid && isClient) {
66
+ const link = document.createElement('a');
67
+ link.setAttribute('href', 'https://primeng.org/lts');
68
+ link.setAttribute('style', 'background-color: red !important; color: white !important; cursor: pointer !important; font-size: 14px !important; font-weight: bold !important; position: fixed !important; z-index: 9999999999 !important; top: 0 !important; left: 0 !important; display: inline !important; width: 100% !important; padding: 1rem !important; opacity: 1 !important; pointer-events: auto !important; visibility: visible !important;');
69
+ const msg = document.createElement('marquee');
70
+ msg.setAttribute('behavior', 'alternate');
71
+ msg.innerText = 'You are using an LTS version of PrimeNG with an invalid license, you may either switch back to a non-LTS version or purchase a license at PrimeStore.';
72
+ link.appendChild(msg);
73
+ document.body.appendChild(link);
74
+ let linkObserver, documentObserver;
75
+ const observerCallback = () => {
76
+ linkObserver.disconnect();
77
+ documentObserver.disconnect();
78
+ link && link.remove();
79
+ LicenseManagerImp.verified = false;
80
+ LicenseManagerImp.check();
81
+ };
82
+ linkObserver = new MutationObserver(() => observerCallback());
83
+ linkObserver.observe(link, { attributes: true, childList: true });
84
+ documentObserver = new MutationObserver((_) => _.forEach((mutation) => mutation.removedNodes.length > 0 && mutation.removedNodes.forEach((item) => item.isSameNode(link) && observerCallback())));
85
+ documentObserver.observe(document.body, { childList: true });
86
+ }
87
+ LicenseManagerImp.valid = valid;
88
+ }
89
+ return LicenseManagerImp.valid;
90
+ },
91
+ aesGcmDecrypt: async function (ciphertext, password) {
92
+ const pwUtf8 = new TextEncoder().encode(password);
93
+ const pwHash = await crypto.subtle.digest('SHA-256', pwUtf8);
94
+ const ivStr = atob(ciphertext).slice(0, 12);
95
+ const iv = new Uint8Array(Array.from(ivStr).map((ch) => ch.charCodeAt(0)));
96
+ const alg = { name: 'AES-GCM', iv: iv };
97
+ const key = await crypto.subtle.importKey('raw', pwHash, alg, false, ['decrypt']);
98
+ const ctStr = atob(ciphertext).slice(12);
99
+ const ctUint8 = new Uint8Array(Array.from(ctStr).map((ch) => ch.charCodeAt(0)));
100
+ try {
101
+ const plainBuffer = await crypto.subtle.decrypt(alg, key, ctUint8);
102
+ const plaintext = new TextDecoder().decode(plainBuffer);
103
+ return plaintext;
104
+ }
105
+ catch (e) {
106
+ throw new Error('Decrypt failed');
107
+ }
108
+ }
109
+ };
110
+ export const LicenseManager = Object.freeze({
111
+ verify: LicenseManagerImp.verify,
112
+ check: LicenseManagerImp.check
113
+ });
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGljZW5zZW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL2xpY2Vuc2VtYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0saUJBQWlCLEdBQUc7SUFDdEIsVUFBVSxFQUFFLFNBQVM7SUFDckIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsS0FBSyxFQUFFLEtBQUs7SUFDWixLQUFLLEVBQUUsS0FBSztJQUNaLFFBQVEsRUFBRSxLQUFLO0lBQ2YsTUFBTSxFQUFFLFVBQVUsVUFBa0IsRUFBRSxPQUFlLEVBQUUsUUFBaUIsS0FBSztRQUN6RSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2xILGlCQUFpQixDQUFDLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pFLENBQUM7SUFDRCxLQUFLLEVBQUUsS0FBSztRQUNSLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3ZHLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFFdEMsSUFBSSxLQUFLLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDO1lBQ3BDLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNsQixJQUFJLENBQUM7Z0JBQ0QsTUFBTSxTQUFTLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFD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Q0FBQyxDQUFDLENBQUMsQ0FBQztRQUVoRixJQUFJLENBQUM7WUFDRCxNQUFNLFdBQVcsR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDbkUsTUFBTSxTQUFTLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDeEQsT0FBTyxTQUFTLENBQUM7UUFDckIsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdEMsQ0FBQztJQUNMLENBQUM7Q0FDSixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDeEMsTUFBTSxFQUFFLGlCQUFpQixDQUFDLE1BQU07SUFDaEMsS0FBSyxFQUFFLGlCQUFpQixDQUFDLEtBQUs7Q0FDakMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgTGljZW5zZU1hbmFnZXJJbXAgPSB7XG4gICAgbGljZW5zZUtleTogdW5kZWZpbmVkLFxuICAgIHBhc3NLZXk6IHVuZGVmaW5lZCxcbiAgICBkZWJ1ZzogZmFsc2UsXG4gICAgdmFsaWQ6IGZhbHNlLFxuICAgIHZlcmlmaWVkOiBmYWxzZSxcbiAgICB2ZXJpZnk6IGZ1bmN0aW9uIChsaWNlbnNlS2V5OiBzdHJpbmcsIHBhc3NLZXk6IHN0cmluZywgZGVidWc6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICBbTGljZW5zZU1hbmFnZXJJbXAubGljZW5zZUtleSwgTGljZW5zZU1hbmFnZXJJbXAucGFzc0tleSwgTGljZW5zZU1hbmFnZXJJbXAuZGVidWddID0gW2xpY2Vuc2VLZXksIHBhc3NLZXksIGRlYnVnXTtcbiAgICAgICAgTGljZW5zZU1hbmFnZXJJbXAudmFsaWQgPSBMaWNlbnNlTWFuYWdlckltcC52ZXJpZmllZCA9IGZhbHNlO1xuICAgIH0sXG4gICAgY2hlY2s6IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFMaWNlbnNlTWFuYWdlckltcC52ZXJpZmllZCkge1xuICAgICAgICAgICAgY29uc3QgaXNDbGllbnQgPSAhISh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZG9jdW1lbnQgJiYgd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuICAgICAgICAgICAgTGljZW5zZU1hbmFnZXJJbXAudmVyaWZpZWQgPSBpc0NsaWVudDtcblxuICAgICAgICAgICAgbGV0IGRlYnVnID0gTGljZW5zZU1hbmFnZXJJbXAuZGVidWc7XG4gICAgICAgICAgICBsZXQgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGxhaW50ZXh0ID0gYXdhaXQgTGljZW5zZU1hbmFnZXJJbXAuYWVzR2NtRGVjcnlwdChMaWNlbnNlTWFuYWdlckltcC5saWNlbnNlS2V5LCBMaWNlbnNlTWFuYWdlckltcC5wYXNzS2V5KTtcbiAgICAgICAgICAgICAgICBjb25zdCB0b2tlbnMgPSBwbGFpbnRleHQuc3BsaXQoJ18nKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsaWNlbnNlRGF0ZSA9IG5ldyBEYXRlKHBhcnNlSW50KHRva2Vuc1syXSkpO1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbnMubGVuZ3RoICE9PSA4KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWJ1ZykgY29uc29sZS5sb2coJ0Vycm9yIGNvZGU6IDEzMzMnKTtcblxuICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodG9rZW5zWzBdLmxlbmd0aCAhPT0gMikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGVidWcpIGNvbnNvbGUubG9nKCdFcnJvciBjb2RlOiAxMzM0Jyk7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzTmFOKHBhcnNlSW50KHRva2Vuc1sxXSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWJ1ZykgY29uc29sZS5sb2coJ0Vycm9yIGNvZGU6IDEzMzUnKTtcblxuICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodG9rZW5zWzNdICE9PSAnUFJJTUVORycpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlYnVnKSBjb25zb2xlLmxvZygnRXJyb3IgY29kZTogMTMzNicpO1xuXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0b2tlbnNbNV0gPT09ICdCQVNJQycgJiYgbGljZW5zZURhdGUgPD0gbmV3IERhdGUoKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGVidWcpIGNvbnNvbGUubG9nKCdFcnJvciBjb2RlOiAxMzM3Jyk7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRva2Vuc1s2XSAhPT0gJzE4Jykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGVidWcpIGNvbnNvbGUubG9nKCdFcnJvciBjb2RlOiAxMzM4Jyk7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRva2Vuc1s3XS5sZW5ndGggIT09IDYpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlYnVnKSBjb25zb2xlLmxvZygnRXJyb3IgY29kZTogMTMzOScpO1xuXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZGVidWcpIGNvbnNvbGUubG9nKCdFcnJvcjonLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF2YWxpZCAmJiBpc0NsaWVudCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCAnaHR0cHM6Ly9wcmltZW5nLm9yZy9sdHMnKTtcbiAgICAgICAgICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZShcbiAgICAgICAgICAgICAgICAgICAgJ3N0eWxlJyxcbiAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3I6IHJlZCAhaW1wb3J0YW50OyBjb2xvcjogd2hpdGUgIWltcG9ydGFudDsgY3Vyc29yOiBwb2ludGVyICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50OyBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50OyBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDsgei1pbmRleDogOTk5OTk5OTk5OSAhaW1wb3J0YW50OyB0b3A6IDAgIWltcG9ydGFudDsgbGVmdDogMCAhaW1wb3J0YW50OyBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OyBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7IHBvaW50ZXItZXZlbnRzOiBhdXRvICFpbXBvcnRhbnQ7IHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDsnXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG1zZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ21hcnF1ZWUnKTtcbiAgICAgICAgICAgICAgICBtc2cuc2V0QXR0cmlidXRlKCdiZWhhdmlvcicsICdhbHRlcm5hdGUnKTtcbiAgICAgICAgICAgICAgICBtc2cuaW5uZXJUZXh0ID0gJ1lvdSBhcmUgdXNpbmcgYW4gTFRTIHZlcnNpb24gb2YgUHJpbWVORyB3aXRoIGFuIGludmFsaWQgbGljZW5zZSwgeW91IG1heSBlaXRoZXIgc3dpdGNoIGJhY2sgdG8gYSBub24tTFRTIHZlcnNpb24gb3IgcHVyY2hhc2UgYSBsaWNlbnNlIGF0IFByaW1lU3RvcmUuJztcblxuICAgICAgICAgICAgICAgIGxpbmsuYXBwZW5kQ2hpbGQobXNnKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuXG4gICAgICAgICAgICAgICAgbGV0IGxpbmtPYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlciwgZG9jdW1lbnRPYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcbiAgICAgICAgICAgICAgICBjb25zdCBvYnNlcnZlckNhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsaW5rT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudE9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgbGluayAmJiBsaW5rLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICBMaWNlbnNlTWFuYWdlckltcC52ZXJpZmllZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBMaWNlbnNlTWFuYWdlckltcC5jaGVjaygpO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBsaW5rT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiBvYnNlcnZlckNhbGxiYWNrKCkpO1xuICAgICAgICAgICAgICAgIGxpbmtPYnNlcnZlci5vYnNlcnZlKGxpbmssIHsgYXR0cmlidXRlczogdHJ1ZSwgY2hpbGRMaXN0OiB0cnVlIH0pO1xuXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRPYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChfKSA9PiBfLmZvckVhY2goKG11dGF0aW9uKSA9PiBtdXRhdGlvbi5yZW1vdmVkTm9kZXMubGVuZ3RoID4gMCAmJiBtdXRhdGlvbi5yZW1vdmVkTm9kZXMuZm9yRWFjaCgoaXRlbSkgPT4gaXRlbS5pc1NhbWVOb2RlKGxpbmspICYmIG9ic2VydmVyQ2FsbGJhY2soKSkpKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudE9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSwgeyBjaGlsZExpc3Q6IHRydWUgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIExpY2Vuc2VNYW5hZ2VySW1wLnZhbGlkID0gdmFsaWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gTGljZW5zZU1hbmFnZXJJbXAudmFsaWQ7XG4gICAgfSxcbiAgICBhZXNHY21EZWNyeXB0OiBhc3luYyBmdW5jdGlvbiAoY2lwaGVydGV4dDogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHB3VXRmOCA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShwYXNzd29yZCk7XG4gICAgICAgIGNvbnN0IHB3SGFzaCA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KCdTSEEtMjU2JywgcHdVdGY4KTtcblxuICAgICAgICBjb25zdCBpdlN0ciA9IGF0b2IoY2lwaGVydGV4dCkuc2xpY2UoMCwgMTIpO1xuICAgICAgICBjb25zdCBpdiA9IG5ldyBVaW50OEFycmF5KEFycmF5LmZyb20oaXZTdHIpLm1hcCgoY2gpID0+IGNoLmNoYXJDb2RlQXQoMCkpKTtcblxuICAgICAgICBjb25zdCBhbGcgPSB7IG5hbWU6ICdBRVMtR0NNJywgaXY6IGl2IH07XG5cbiAgICAgICAgY29uc3Qga2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoJ3JhdycsIHB3SGFzaCwgYWxnLCBmYWxzZSwgWydkZWNyeXB0J10pO1xuXG4gICAgICAgIGNvbnN0IGN0U3RyID0gYXRvYihjaXBoZXJ0ZXh0KS5zbGljZSgxMik7XG4gICAgICAgIGNvbnN0IGN0VWludDggPSBuZXcgVWludDhBcnJheShBcnJheS5mcm9tKGN0U3RyKS5tYXAoKGNoKSA9PiBjaC5jaGFyQ29kZUF0KDApKSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHBsYWluQnVmZmVyID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5kZWNyeXB0KGFsZywga2V5LCBjdFVpbnQ4KTtcbiAgICAgICAgICAgIGNvbnN0IHBsYWludGV4dCA9IG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShwbGFpbkJ1ZmZlcik7XG4gICAgICAgICAgICByZXR1cm4gcGxhaW50ZXh0O1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RlY3J5cHQgZmFpbGVkJyk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgTGljZW5zZU1hbmFnZXIgPSBPYmplY3QuZnJlZXplKHtcbiAgICB2ZXJpZnk6IExpY2Vuc2VNYW5hZ2VySW1wLnZlcmlmeSxcbiAgICBjaGVjazogTGljZW5zZU1hbmFnZXJJbXAuY2hlY2tcbn0pO1xuIl19
@@ -30,4 +30,5 @@ export * from './treedragdropservice';
30
30
  export * from './treenode';
31
31
  export * from './treenodedragevent';
32
32
  export * from './treetablenode';
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ibG9ja2FibGV1aSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpcm1hZXZlbnR0eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vY29uZmlybWF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vY29uZmlybWF0aW9uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRleHRtZW51c2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlcm1hdGNobW9kZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlcm1ldGFkYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsdGVyb3BlcmF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9maWx0ZXJzZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGF6eWxvYWRldmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xhenlsb2FkbWV0YSc7XG5leHBvcnQgKiBmcm9tICcuL21lZ2FtZW51aXRlbSc7XG5leHBvcnQgKiBmcm9tICcuL21lbnVpdGVtJztcbmV4cG9ydCAqIGZyb20gJy4vbWVzc2FnZXNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9vdmVybGF5b3B0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL292ZXJsYXlzZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcHJpbWVpY29ucyc7XG5leHBvcnQgKiBmcm9tICcuL3Njcm9sbGVyb3B0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdGl0ZW0nO1xuZXhwb3J0ICogZnJvbSAnLi9zZWxlY3RpdGVtZ3JvdXAnO1xuZXhwb3J0ICogZnJvbSAnLi9zaGFyZWQnO1xuZXhwb3J0ICogZnJvbSAnLi9zb3J0ZXZlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zb3J0bWV0YSc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlc3RhdGUnO1xuZXhwb3J0ICogZnJvbSAnLi90b2FzdG1lc3NhZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi90b29sdGlwb3B0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zbGF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNsYXRpb25rZXlzJztcbmV4cG9ydCAqIGZyb20gJy4vdHJlZWRyYWdkcm9wc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3RyZWVub2RlJztcbmV4cG9ydCAqIGZyb20gJy4vdHJlZW5vZGVkcmFnZXZlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90cmVldGFibGVub2RlJztcbiJdfQ==
33
+ export * from './licensemanager';
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Jsb2NrYWJsZXVpJztcbmV4cG9ydCAqIGZyb20gJy4vY29uZmlybWFldmVudHR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25maXJtYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9jb25maXJtYXRpb25zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY29udGV4dG1lbnVzZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsdGVybWF0Y2htb2RlJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsdGVybWV0YWRhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9maWx0ZXJvcGVyYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlcnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9sYXp5bG9hZGV2ZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGF6eWxvYWRtZXRhJztcbmV4cG9ydCAqIGZyb20gJy4vbWVnYW1lbnVpdGVtJztcbmV4cG9ydCAqIGZyb20gJy4vbWVudWl0ZW0nO1xuZXhwb3J0ICogZnJvbSAnLi9tZXNzYWdlc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL292ZXJsYXlvcHRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vb3ZlcmxheXNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wcmltZWljb25zJztcbmV4cG9ydCAqIGZyb20gJy4vc2Nyb2xsZXJvcHRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0aXRlbSc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdGl0ZW1ncm91cCc7XG5leHBvcnQgKiBmcm9tICcuL3NoYXJlZCc7XG5leHBvcnQgKiBmcm9tICcuL3NvcnRldmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NvcnRtZXRhJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGVzdGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL3RvYXN0bWVzc2FnZSc7XG5leHBvcnQgKiBmcm9tICcuL3Rvb2x0aXBvcHRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNsYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2xhdGlvbmtleXMnO1xuZXhwb3J0ICogZnJvbSAnLi90cmVlZHJhZ2Ryb3BzZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdHJlZW5vZGUnO1xuZXhwb3J0ICogZnJvbSAnLi90cmVlbm9kZWRyYWdldmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3RyZWV0YWJsZW5vZGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWNlbnNlbWFuYWdlcic7XG4iXX0=
@@ -5,6 +5,7 @@ import { getKeyValue, uuid } from '@primeuix/utils';
5
5
  import { Base, BaseStyle } from 'primeng/base';
6
6
  import { PrimeNG } from 'primeng/config';
7
7
  import { BaseComponentStyle } from './style/basecomponentstyle';
8
+ import { LicenseManager } from 'primeng/api';
8
9
  import * as i0 from "@angular/core";
9
10
  export class BaseComponent {
10
11
  document = inject(DOCUMENT);
@@ -47,6 +48,7 @@ export class BaseComponent {
47
48
  if (this.rootEl) {
48
49
  this.rootEl?.setAttribute(this.attrSelector, '');
49
50
  }
51
+ LicenseManager.check();
50
52
  }
51
53
  ngOnChanges(changes) {
52
54
  if (this.document && !isPlatformServer(this.platformId)) {
@@ -157,4 +159,4 @@ export class BaseComponent {
157
159
  }], null, { dt: [{
158
160
  type: Input
159
161
  }] }); })();
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYXNlY29tcG9uZW50L2Jhc2Vjb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBbUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQWEsU0FBUyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNySyxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFcEQsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUdoRSxNQUFNLE9BQU8sYUFBYTtJQUNmLFFBQVEsR0FBYSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFdEMsVUFBVSxHQUFRLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUV0QyxFQUFFLEdBQWUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRTNCLFFBQVEsR0FBYSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFdEMsRUFBRSxHQUFzQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUUzRCxRQUFRLEdBQWMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRXhDLE1BQU0sR0FBWSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFbEMsa0JBQWtCLEdBQXVCLE1BQU0sQ0FBQyxrQkFBa0IsQ0FB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SUFFSixJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7dUdBekxRLGFBQWE7NkRBQWIsYUFBYSwyRUFEZ0IsQ0FBQyxrQkFBa0IsRUFBRSxTQUFTLENBQUM7O2lGQUM1RCxhQUFhO2NBRHpCLFNBQVM7ZUFBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsU0FBUyxDQUFDLEVBQUU7Z0JBd0I5RCxFQUFFO2tCQUFWLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybVNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5qZWN0b3IsIElucHV0LCBQTEFURk9STV9JRCwgUXVlcnlMaXN0LCBSZW5kZXJlcjIsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoZW1lLCBUaGVtZVNlcnZpY2UgfSBmcm9tICdAcHJpbWV1aXgvc3R5bGVkJztcbmltcG9ydCB7IGdldEtleVZhbHVlLCB1dWlkIH0gZnJvbSAnQHByaW1ldWl4L3V0aWxzJztcbmltcG9ydCB7IFByaW1lVGVtcGxhdGUgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBCYXNlLCBCYXNlU3R5bGUgfSBmcm9tICdwcmltZW5nL2Jhc2UnO1xuaW1wb3J0IHsgUHJpbWVORyB9IGZyb20gJ3ByaW1lbmcvY29uZmlnJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnRTdHlsZSB9IGZyb20gJy4vc3R5bGUvYmFzZWNvbXBvbmVudHN0eWxlJztcblxuQERpcmVjdGl2ZSh7IHN0YW5kYWxvbmU6IHRydWUsIHByb3ZpZGVyczogW0Jhc2VDb21wb25lbnRTdHlsZSwgQmFzZVN0eWxlXSB9KVxuZXhwb3J0IGNsYXNzIEJhc2VDb21wb25lbnQge1xuICAgIHB1YmxpYyBkb2N1bWVudDogRG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gICAgcHVibGljIHBsYXRmb3JtSWQ6IGFueSA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgICBwdWJsaWMgZWw6IEVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICAgIHB1YmxpYyByZWFkb25seSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuICAgIHB1YmxpYyBjb25maWc6IFByaW1lTkcgPSBpbmplY3QoUHJpbWVORyk7XG5cbiAgICBwdWJsaWMgYmFzZUNvbXBvbmVudFN0eWxlOiBCYXNlQ29tcG9uZW50U3R5bGUgPSBpbmplY3QoQmFzZUNvbXBvbmVudFN0eWxlKTtcblxuICAgIHB1YmxpYyBiYXNlU3R5bGU6IEJhc2VTdHlsZSA9IGluamVjdChCYXNlU3R5bGUpO1xuXG4gICAgcHVibGljIHNjb3BlZFN0eWxlRWw6IGFueTtcblxuICAgIHB1YmxpYyByb290RWw6IGFueTtcblxuICAgIEBJbnB1dCgpIGR0OiBPYmplY3QgfCB1bmRlZmluZWQ7XG5cbiAgICBnZXQgc3R5bGVPcHRpb25zKCkge1xuICAgICAgICByZXR1cm4geyBub25jZTogdGhpcy5jb25maWc/LmNzcCgpLm5vbmNlIH07XG4gICAgfVxuXG4gICAgZ2V0IF9uYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lLnJlcGxhY2UoL15fLywgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXBvbmVudFN0eWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpc1snX2NvbXBvbmVudFN0eWxlJ107XG4gICAgfVxuXG4gICAgYXR0clNlbGVjdG9yID0gdXVpZCgncGMnKTtcblxuICAgIF9nZXRIb3N0SW5zdGFuY2UoaW5zdGFuY2UpIHtcbiAgICAgICAgaWYgKGluc3RhbmNlKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5zdGFuY2UgPyAodGhpc1snaG9zdE5hbWUnXSA/IChpbnN0YW5jZVsnbmFtZSddID09PSB0aGlzWydob3N0TmFtZSddID8gaW5zdGFuY2UgOiB0aGlzLl9nZXRIb3N0SW5zdGFuY2UoaW5zdGFuY2UucGFyZW50SW5zdGFuY2UpKSA6IGluc3RhbmNlLnBhcmVudEluc3RhbmNlKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9nZXRPcHRpb25WYWx1ZShvcHRpb25zLCBrZXkgPSAnJywgcGFyYW1zID0ge30pIHtcbiAgICAgICAgcmV0dXJuIGdldEtleVZhbHVlKG9wdGlvbnMsIGtleSwgcGFyYW1zKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvYWRTdHlsZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5yb290RWwgPSB0aGlzLmVsPy5uYXRpdmVFbGVtZW50O1xuICAgICAgICBpZiAodGhpcy5yb290RWwpIHtcbiAgICAgICAgICAgIHRoaXMucm9vdEVsPy5zZXRBdHRyaWJ1dGUodGhpcy5hdHRyU2VsZWN0b3IsICcnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnQgJiYgIWlzUGxhdGZvcm1TZXJ2ZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgY29uc3QgeyBkdCB9ID0gY2hhbmdlcztcbiAgICAgICAgICAgIGlmIChkdCAmJiBkdC5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2FkU2NvcGVkVGhlbWVTdHlsZXMoZHQuY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl90aGVtZUNoYW5nZUxpc3RlbmVyKCgpID0+IHRoaXMuX2xvYWRTY29wZWRUaGVtZVN0eWxlcyhkdC5jdXJyZW50VmFsdWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLl91bmxvYWRTY29wZWRUaGVtZVN0eWxlcygpO1xuICAgIH1cblxuICAgIF9sb2FkU3R5bGVzKCkge1xuICAgICAgICBjb25zdCBfbG9hZCA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmICghQmFzZS5pc1N0eWxlTmFtZUxvYWRlZCgnYmFzZScpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iYXNlU3R5bGUubG9hZENTUyh0aGlzLnN0eWxlT3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgQmFzZS5zZXRMb2FkZWRTdHlsZU5hbWUoJ2Jhc2UnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fbG9hZFRoZW1lU3R5bGVzKCk7XG4gICAgICAgICAgICAvLyBAdG9kbyB1cGRhdGUgY29uZmlnLnRoZW1lKClcbiAgICAgICAgfTtcblxuICAgICAgICBfbG9hZCgpO1xuICAgICAgICB0aGlzLl90aGVtZUNoYW5nZUxpc3RlbmVyKCgpID0+IF9sb2FkKCkpO1xuICAgIH1cblxuICAgIF9sb2FkQ29yZVN0eWxlcygpIHtcbiAgICAgICAgaWYgKCFCYXNlLmlzU3R5bGVOYW1lTG9hZGVkKCdiYXNlJykgJiYgdGhpcy5fbmFtZSkge1xuICAgICAgICAgICAgdGhpcy5iYXNlQ29tcG9uZW50U3R5bGUubG9hZENTUyh0aGlzLnN0eWxlT3B0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFN0eWxlICYmIHRoaXMuY29tcG9uZW50U3R5bGU/LmxvYWRDU1ModGhpcy5zdHlsZU9wdGlvbnMpO1xuICAgICAgICAgICAgQmFzZS5zZXRMb2FkZWRTdHlsZU5hbWUodGhpcy5jb21wb25lbnRTdHlsZT8ubmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfbG9hZFRoZW1lU3R5bGVzKCkge1xuICAgICAgICAvLyBjb21tb25cbiAgICAgICAgaWYgKCFUaGVtZS5pc1N0eWxlTmFtZUxvYWRlZCgnY29tbW9uJykpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgcHJpbWl0aXZlLCBzZW1hbnRpYywgZ2xvYmFsLCBzdHlsZSB9ID0gdGhpcy5jb21wb25lbnRTdHlsZT8uZ2V0Q29tbW9uVGhlbWU/LigpIHx8IHt9O1xuXG4gICAgICAgICAgICB0aGlzLmJhc2VTdHlsZS5sb2FkKHByaW1pdGl2ZT8uY3NzLCB7IG5hbWU6ICdwcmltaXRpdmUtdmFyaWFibGVzJywgLi4udGhpcy5zdHlsZU9wdGlvbnMgfSk7XG4gICAgICAgICAgICB0aGlzLmJhc2VTdHlsZS5sb2FkKHNlbWFudGljPy5jc3MsIHsgbmFtZTogJ3NlbWFudGljLXZhcmlhYmxlcycsIC4uLnRoaXMuc3R5bGVPcHRpb25zIH0pO1xuICAgICAgICAgICAgdGhpcy5iYXNlU3R5bGUubG9hZChnbG9iYWw/LmNzcywgeyBuYW1lOiAnZ2xvYmFsLXZhcmlhYmxlcycsIC4uLnRoaXMuc3R5bGVPcHRpb25zIH0pO1xuICAgICAgICAgICAgdGhpcy5iYXNlU3R5bGUubG9hZFRoZW1lKHsgbmFtZTogJ2dsb2JhbC1zdHlsZScsIC4uLnRoaXMuc3R5bGVPcHRpb25zIH0sIHN0eWxlKTtcblxuICAgICAgICAgICAgVGhlbWUuc2V0TG9hZGVkU3R5bGVOYW1lKCdjb21tb24nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNvbXBvbmVudFxuICAgICAgICBpZiAoIVRoZW1lLmlzU3R5bGVOYW1lTG9hZGVkKHRoaXMuY29tcG9uZW50U3R5bGU/Lm5hbWUpICYmIHRoaXMuY29tcG9uZW50U3R5bGU/Lm5hbWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgY3NzLCBzdHlsZSB9ID0gdGhpcy5jb21wb25lbnRTdHlsZT8uZ2V0Q29tcG9uZW50VGhlbWU/LigpIHx8IHt9O1xuXG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFN0eWxlPy5sb2FkKGNzcywgeyBuYW1lOiBgJHt0aGlzLmNvbXBvbmVudFN0eWxlPy5uYW1lfS12YXJpYWJsZXNgLCAuLi50aGlzLnN0eWxlT3B0aW9ucyB9KTtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50U3R5bGU/LmxvYWRUaGVtZSh7IG5hbWU6IGAke3RoaXMuY29tcG9uZW50U3R5bGU/Lm5hbWV9LXN0eWxlYCwgLi4udGhpcy5zdHlsZU9wdGlvbnMgfSwgc3R5bGUpO1xuXG4gICAgICAgICAgICBUaGVtZS5zZXRMb2FkZWRTdHlsZU5hbWUodGhpcy5jb21wb25lbnRTdHlsZT8ubmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBsYXllciBvcmRlclxuICAgICAgICBpZiAoIVRoZW1lLmlzU3R5bGVOYW1lTG9hZGVkKCdsYXllci1vcmRlcicpKSB7XG4gICAgICAgICAgICBjb25zdCBsYXllck9yZGVyID0gdGhpcy5jb21wb25lbnRTdHlsZT8uZ2V0TGF5ZXJPcmRlclRoZW1lQ1NTPy4oKTtcblxuICAgICAgICAgICAgdGhpcy5iYXNlU3R5bGUubG9hZChsYXllck9yZGVyLCB7IG5hbWU6ICdsYXllci1vcmRlcicsIGZpcnN0OiB0cnVlLCAuLi50aGlzLnN0eWxlT3B0aW9ucyB9KTtcbiAgICAgICAgICAgIFRoZW1lLnNldExvYWRlZFN0eWxlTmFtZSgnbGF5ZXItb3JkZXInKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmR0KSB7XG4gICAgICAgICAgICB0aGlzLl9sb2FkU2NvcGVkVGhlbWVTdHlsZXModGhpcy5kdCk7XG4gICAgICAgICAgICB0aGlzLl90aGVtZUNoYW5nZUxpc3RlbmVyKCgpID0+IHRoaXMuX2xvYWRTY29wZWRUaGVtZVN0eWxlcyh0aGlzLmR0KSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfbG9hZFNjb3BlZFRoZW1lU3R5bGVzKHByZXNldCkge1xuICAgICAgICBjb25zdCB7IGNzcyB9ID0gdGhpcy5jb21wb25lbnRTdHlsZT8uZ2V0UHJlc2V0VGhlbWU/LihwcmVzZXQsIGBbJHt0aGlzLmF0dHJTZWxlY3Rvcn1dYCkgfHwge307XG4gICAgICAgIGNvbnN0IHNjb3BlZFN0eWxlID0gdGhpcy5jb21wb25lbnRTdHlsZT8ubG9hZChjc3MsIHtcbiAgICAgICAgICAgIG5hbWU6IGAke3RoaXMuYXR0clNlbGVjdG9yfS0ke3RoaXMuY29tcG9uZW50U3R5bGU/Lm5hbWV9YCxcbiAgICAgICAgICAgIC4uLnRoaXMuc3R5bGVPcHRpb25zXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc2NvcGVkU3R5bGVFbCA9IHNjb3BlZFN0eWxlPy5lbDtcbiAgICB9XG5cbiAgICBfdW5sb2FkU2NvcGVkVGhlbWVTdHlsZXMoKSB7XG4gICAgICAgIHRoaXMuc2NvcGVkU3R5bGVFbD8ucmVtb3ZlKCk7XG4gICAgfVxuXG4gICAgX3RoZW1lQ2hhbmdlTGlzdGVuZXIoY2FsbGJhY2sgPSAoKSA9PiB7fSkge1xuICAgICAgICBCYXNlLmNsZWFyTG9hZGVkU3R5bGVOYW1lcygpO1xuICAgICAgICBUaGVtZVNlcnZpY2Uub24oJ3RoZW1lOmNoYW5nZScsIGNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICBjeChhcmc6IHN0cmluZywgcmVzdD86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGNsYXNzZXMgPSB0aGlzLnBhcmVudCA/IHRoaXMucGFyZW50LmNvbXBvbmVudFN0eWxlPy5jbGFzc2VzPy5bYXJnXSA6IHRoaXMuY29tcG9uZW50U3R5bGU/LmNsYXNzZXM/LlthcmddO1xuXG4gICAgICAgIGlmICh0eXBlb2YgY2xhc3NlcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIGNsYXNzZXMoeyBpbnN0YW5jZTogdGhpcyB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0eXBlb2YgY2xhc3NlcyA9PT0gJ3N0cmluZycgPyBjbGFzc2VzIDogYXJnO1xuICAgIH1cblxuICAgIHN4KGFyZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3Qgc3R5bGVzID0gdGhpcy5jb21wb25lbnRTdHlsZT8uaW5saW5lU3R5bGVzPy5bYXJnXTtcbiAgICAgICAgaWYgKHR5cGVvZiBzdHlsZXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHlsZXMoeyBpbnN0YW5jZTogdGhpcyB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2Ygc3R5bGVzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHN0eWxlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLnN0eWxlcyB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gY3goa2V5ID0gJycsIHBhcmFtcyA9IHt9KSB7XG4gICAgLy8gICAgIGNvbnN0IGNsYXNzZXMgPSB0aGlzLnBhcmVudCA/IHRoaXMucGFyZW50LmNvbXBvbmVudFN0eWxlPy5jbGFzc2VzIDogdGhpcy5jb21wb25lbnRTdHlsZT8uY2xhc3NlcztcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvblZhbHVlKGNsYXNzZXMoeyBpbnN0YW5jZTogdGhpcy5fZ2V0SG9zdEluc3RhbmNlKHRoaXMpIH0pLCBrZXksIHsgLi4ucGFyYW1zIH0pO1xuICAgIC8vIH1cblxuICAgIGdldCBwYXJlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzWydwYXJlbnRJbnN0YW5jZSddO1xuICAgIH1cbn1cbiJdfQ==
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYXNlY29tcG9uZW50L2Jhc2Vjb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBbUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQWEsU0FBUyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNySyxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFcEQsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBRzdDLE1BQU0sT0FBTyxhQUFhO0lBQ2YsUUFBUSxHQUFhLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV0QyxVQUFVLEdBQVEsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXRDLEVBQUUsR0FBZSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFM0IsUUFBUSxHQUFhLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV0QyxFQUFFLEdBQXNCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTNELFFBQVEsR0FBYyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFeEMsTUFBTSxHQUFZLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FB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QztRQUN6QixDQUFDO0lBQ0wsQ0FBQztJQUVELDhCQUE4QjtJQUM5Qix3R0FBd0c7SUFDeEcsMkdBQTJHO0lBQzNHLElBQUk7SUFFSixJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7dUdBM0xRLGFBQWE7NkRBQWIsYUFBYSwyRUFEZ0IsQ0FBQyxrQkFBa0IsRUFBRSxTQUFTLENBQUM7O2lGQUM1RCxhQUFhO2NBRHpCLFNBQVM7ZUFBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsU0FBUyxDQUFDLEVBQUU7Z0JBd0I5RCxFQUFFO2tCQUFWLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybVNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5qZWN0b3IsIElucHV0LCBQTEFURk9STV9JRCwgUXVlcnlMaXN0LCBSZW5kZXJlcjIsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoZW1lLCBUaGVtZVNlcnZpY2UgfSBmcm9tICdAcHJpbWV1aXgvc3R5bGVkJztcbmltcG9ydCB7IGdldEtleVZhbHVlLCB1dWlkIH0gZnJvbSAnQHByaW1ldWl4L3V0aWxzJztcbmltcG9ydCB7IFByaW1lVGVtcGxhdGUgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBCYXNlLCBCYXNlU3R5bGUgfSBmcm9tICdwcmltZW5nL2Jhc2UnO1xuaW1wb3J0IHsgUHJpbWVORyB9IGZyb20gJ3ByaW1lbmcvY29uZmlnJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnRTdHlsZSB9IGZyb20gJy4vc3R5bGUvYmFzZWNvbXBvbmVudHN0eWxlJztcbmltcG9ydCB7IExpY2Vuc2VNYW5hZ2VyIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5ARGlyZWN0aXZlKHsgc3RhbmRhbG9uZTogdHJ1ZSwgcHJvdmlkZXJzOiBbQmFzZUNvbXBvbmVudFN0eWxlLCBCYXNlU3R5bGVdIH0pXG5leHBvcnQgY2xhc3MgQmFzZUNvbXBvbmVudCB7XG4gICAgcHVibGljIGRvY3VtZW50OiBEb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cbiAgICBwdWJsaWMgcGxhdGZvcm1JZDogYW55ID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcblxuICAgIHB1YmxpYyBlbDogRWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICAgIHB1YmxpYyByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGNkOiBDaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMiA9IGluamVjdChSZW5kZXJlcjIpO1xuXG4gICAgcHVibGljIGNvbmZpZzogUHJpbWVORyA9IGluamVjdChQcmltZU5HKTtcblxuICAgIHB1YmxpYyBiYXNlQ29tcG9uZW50U3R5bGU6IEJhc2VDb21wb25lbnRTdHlsZSA9IGluamVjdChCYXNlQ29tcG9uZW50U3R5bGUpO1xuXG4gICAgcHVibGljIGJhc2VTdHlsZTogQmFzZVN0eWxlID0gaW5qZWN0KEJhc2VTdHlsZSk7XG5cbiAgICBwdWJsaWMgc2NvcGVkU3R5bGVFbDogYW55O1xuXG4gICAgcHVibGljIHJvb3RFbDogYW55O1xuXG4gICAgQElucHV0KCkgZHQ6IE9iamVjdCB8IHVuZGVmaW5lZDtcblxuICAgIGdldCBzdHlsZU9wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB7IG5vbmNlOiB0aGlzLmNvbmZpZz8uY3NwKCkubm9uY2UgfTtcbiAgICB9XG5cbiAgICBnZXQgX25hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUucmVwbGFjZSgvXl8vLCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICBnZXQgY29tcG9uZW50U3R5bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzWydfY29tcG9uZW50U3R5bGUnXTtcbiAgICB9XG5cbiAgICBhdHRyU2VsZWN0b3IgPSB1dWlkKCdwYycpO1xuXG4gICAgX2dldEhvc3RJbnN0YW5jZShpbnN0YW5jZSkge1xuICAgICAgICBpZiAoaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZSA/ICh0aGlzWydob3N0TmFtZSddID8gKGluc3RhbmNlWyduYW1lJ10gPT09IHRoaXNbJ2hvc3ROYW1lJ10gPyBpbnN0YW5jZSA6IHRoaXMuX2dldEhvc3RJbnN0YW5jZShpbnN0YW5jZS5wYXJlbnRJbnN0YW5jZSkpIDogaW5zdGFuY2UucGFyZW50SW5zdGFuY2UpIDogdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX2dldE9wdGlvblZhbHVlKG9wdGlvbnMsIGtleSA9ICcnLCBwYXJhbXMgPSB7fSkge1xuICAgICAgICByZXR1cm4gZ2V0S2V5VmFsdWUob3B0aW9ucywga2V5LCBwYXJhbXMpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5kb2N1bWVudCkge1xuICAgICAgICAgICAgdGhpcy5fbG9hZFN0eWxlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLnJvb3RFbCA9IHRoaXMuZWw/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmICh0aGlzLnJvb3RFbCkge1xuICAgICAgICAgICAgdGhpcy5yb290RWw/LnNldEF0dHJpYnV0ZSh0aGlzLmF0dHJTZWxlY3RvciwgJycpO1xuICAgICAgICB9XG5cbiAgICAgICAgTGljZW5zZU1hbmFnZXIuY2hlY2soKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50ICYmICFpc1BsYXRmb3JtU2VydmVyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgZHQgfSA9IGNoYW5nZXM7XG4gICAgICAgICAgICBpZiAoZHQgJiYgZHQuY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9hZFNjb3BlZFRoZW1lU3R5bGVzKGR0LmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGhlbWVDaGFuZ2VMaXN0ZW5lcigoKSA9PiB0aGlzLl9sb2FkU2NvcGVkVGhlbWVTdHlsZXMoZHQuY3VycmVudFZhbHVlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5fdW5sb2FkU2NvcGVkVGhlbWVTdHlsZXMoKTtcbiAgICB9XG5cbiAgICBfbG9hZFN0eWxlcygpIHtcbiAgICAgICAgY29uc3QgX2xvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIUJhc2UuaXNTdHlsZU5hbWVMb2FkZWQoJ2Jhc2UnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYmFzZVN0eWxlLmxvYWRDU1ModGhpcy5zdHlsZU9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIEJhc2Uuc2V0TG9hZGVkU3R5bGVOYW1lKCdiYXNlJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2xvYWRUaGVtZVN0eWxlcygpO1xuICAgICAgICAgICAgLy8gQHRvZG8gdXBkYXRlIGNvbmZpZy50aGVtZSgpXG4gICAgICAgIH07XG5cbiAgICAgICAgX2xvYWQoKTtcbiAgICAgICAgdGhpcy5fdGhlbWVDaGFuZ2VMaXN0ZW5lcigoKSA9PiBfbG9hZCgpKTtcbiAgICB9XG5cbiAgICBfbG9hZENvcmVTdHlsZXMoKSB7XG4gICAgICAgIGlmICghQmFzZS5pc1N0eWxlTmFtZUxvYWRlZCgnYmFzZScpICYmIHRoaXMuX25hbWUpIHtcbiAgICAgICAgICAgIHRoaXMuYmFzZUNvbXBvbmVudFN0eWxlLmxvYWRDU1ModGhpcy5zdHlsZU9wdGlvbnMpO1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRTdHlsZSAmJiB0aGlzLmNvbXBvbmVudFN0eWxlPy5sb2FkQ1NTKHRoaXMuc3R5bGVPcHRpb25zKTtcbiAgICAgICAgICAgIEJhc2Uuc2V0TG9hZGVkU3R5bGVOYW1lKHRoaXMuY29tcG9uZW50U3R5bGU/Lm5hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX2xvYWRUaGVtZVN0eWxlcygpIHtcbiAgICAgICAgLy8gY29tbW9uXG4gICAgICAgIGlmICghVGhlbWUuaXNTdHlsZU5hbWVMb2FkZWQoJ2NvbW1vbicpKSB7XG4gICAgICAgICAgICBjb25zdCB7IHByaW1pdGl2ZSwgc2VtYW50aWMsIGdsb2JhbCwgc3R5bGUgfSA9IHRoaXMuY29tcG9uZW50U3R5bGU/LmdldENvbW1vblRoZW1lPy4oKSB8fCB7fTtcblxuICAgICAgICAgICAgdGhpcy5iYXNlU3R5bGUubG9hZChwcmltaXRpdmU/LmNzcywgeyBuYW1lOiAncHJpbWl0aXZlLXZhcmlhYmxlcycsIC4uLnRoaXMuc3R5bGVPcHRpb25zIH0pO1xuICAgICAgICAgICAgdGhpcy5iYXNlU3R5bGUubG9hZChzZW1hbnRpYz8uY3NzLCB7IG5hbWU6ICdzZW1hbnRpYy12YXJpYWJsZXMnLCAuLi50aGlzLnN0eWxlT3B0aW9ucyB9KTtcbiAgICAgICAgICAgIHRoaXMuYmFzZVN0eWxlLmxvYWQoZ2xvYmFsPy5jc3MsIHsgbmFtZTogJ2dsb2JhbC12YXJpYWJsZXMnLCAuLi50aGlzLnN0eWxlT3B0aW9ucyB9KTtcbiAgICAgICAgICAgIHRoaXMuYmFzZVN0eWxlLmxvYWRUaGVtZSh7IG5hbWU6ICdnbG9iYWwtc3R5bGUnLCAuLi50aGlzLnN0eWxlT3B0aW9ucyB9LCBzdHlsZSk7XG5cbiAgICAgICAgICAgIFRoZW1lLnNldExvYWRlZFN0eWxlTmFtZSgnY29tbW9uJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjb21wb25lbnRcbiAgICAgICAgaWYgKCFUaGVtZS5pc1N0eWxlTmFtZUxvYWRlZCh0aGlzLmNvbXBvbmVudFN0eWxlPy5uYW1lKSAmJiB0aGlzLmNvbXBvbmVudFN0eWxlPy5uYW1lKSB7XG4gICAgICAgICAgICBjb25zdCB7IGNzcywgc3R5bGUgfSA9IHRoaXMuY29tcG9uZW50U3R5bGU/LmdldENvbXBvbmVudFRoZW1lPy4oKSB8fCB7fTtcblxuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRTdHlsZT8ubG9hZChjc3MsIHsgbmFtZTogYCR7dGhpcy5jb21wb25lbnRTdHlsZT8ubmFtZX0tdmFyaWFibGVzYCwgLi4udGhpcy5zdHlsZU9wdGlvbnMgfSk7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFN0eWxlPy5sb2FkVGhlbWUoeyBuYW1lOiBgJHt0aGlzLmNvbXBvbmVudFN0eWxlPy5uYW1lfS1zdHlsZWAsIC4uLnRoaXMuc3R5bGVPcHRpb25zIH0sIHN0eWxlKTtcblxuICAgICAgICAgICAgVGhlbWUuc2V0TG9hZGVkU3R5bGVOYW1lKHRoaXMuY29tcG9uZW50U3R5bGU/Lm5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbGF5ZXIgb3JkZXJcbiAgICAgICAgaWYgKCFUaGVtZS5pc1N0eWxlTmFtZUxvYWRlZCgnbGF5ZXItb3JkZXInKSkge1xuICAgICAgICAgICAgY29uc3QgbGF5ZXJPcmRlciA9IHRoaXMuY29tcG9uZW50U3R5bGU/LmdldExheWVyT3JkZXJUaGVtZUNTUz8uKCk7XG5cbiAgICAgICAgICAgIHRoaXMuYmFzZVN0eWxlLmxvYWQobGF5ZXJPcmRlciwgeyBuYW1lOiAnbGF5ZXItb3JkZXInLCBmaXJzdDogdHJ1ZSwgLi4udGhpcy5zdHlsZU9wdGlvbnMgfSk7XG4gICAgICAgICAgICBUaGVtZS5zZXRMb2FkZWRTdHlsZU5hbWUoJ2xheWVyLW9yZGVyJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kdCkge1xuICAgICAgICAgICAgdGhpcy5fbG9hZFNjb3BlZFRoZW1lU3R5bGVzKHRoaXMuZHQpO1xuICAgICAgICAgICAgdGhpcy5fdGhlbWVDaGFuZ2VMaXN0ZW5lcigoKSA9PiB0aGlzLl9sb2FkU2NvcGVkVGhlbWVTdHlsZXModGhpcy5kdCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX2xvYWRTY29wZWRUaGVtZVN0eWxlcyhwcmVzZXQpIHtcbiAgICAgICAgY29uc3QgeyBjc3MgfSA9IHRoaXMuY29tcG9uZW50U3R5bGU/LmdldFByZXNldFRoZW1lPy4ocHJlc2V0LCBgWyR7dGhpcy5hdHRyU2VsZWN0b3J9XWApIHx8IHt9O1xuICAgICAgICBjb25zdCBzY29wZWRTdHlsZSA9IHRoaXMuY29tcG9uZW50U3R5bGU/LmxvYWQoY3NzLCB7XG4gICAgICAgICAgICBuYW1lOiBgJHt0aGlzLmF0dHJTZWxlY3Rvcn0tJHt0aGlzLmNvbXBvbmVudFN0eWxlPy5uYW1lfWAsXG4gICAgICAgICAgICAuLi50aGlzLnN0eWxlT3B0aW9uc1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnNjb3BlZFN0eWxlRWwgPSBzY29wZWRTdHlsZT8uZWw7XG4gICAgfVxuXG4gICAgX3VubG9hZFNjb3BlZFRoZW1lU3R5bGVzKCkge1xuICAgICAgICB0aGlzLnNjb3BlZFN0eWxlRWw/LnJlbW92ZSgpO1xuICAgIH1cblxuICAgIF90aGVtZUNoYW5nZUxpc3RlbmVyKGNhbGxiYWNrID0gKCkgPT4ge30pIHtcbiAgICAgICAgQmFzZS5jbGVhckxvYWRlZFN0eWxlTmFtZXMoKTtcbiAgICAgICAgVGhlbWVTZXJ2aWNlLm9uKCd0aGVtZTpjaGFuZ2UnLCBjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgY3goYXJnOiBzdHJpbmcsIHJlc3Q/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBjbGFzc2VzID0gdGhpcy5wYXJlbnQgPyB0aGlzLnBhcmVudC5jb21wb25lbnRTdHlsZT8uY2xhc3Nlcz8uW2FyZ10gOiB0aGlzLmNvbXBvbmVudFN0eWxlPy5jbGFzc2VzPy5bYXJnXTtcblxuICAgICAgICBpZiAodHlwZW9mIGNsYXNzZXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiBjbGFzc2VzKHsgaW5zdGFuY2U6IHRoaXMgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHlwZW9mIGNsYXNzZXMgPT09ICdzdHJpbmcnID8gY2xhc3NlcyA6IGFyZztcbiAgICB9XG5cbiAgICBzeChhcmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHN0eWxlcyA9IHRoaXMuY29tcG9uZW50U3R5bGU/LmlubGluZVN0eWxlcz8uW2FyZ107XG4gICAgICAgIGlmICh0eXBlb2Ygc3R5bGVzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3R5bGVzKHsgaW5zdGFuY2U6IHRoaXMgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHN0eWxlcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHlsZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5zdHlsZXMgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGN4KGtleSA9ICcnLCBwYXJhbXMgPSB7fSkge1xuICAgIC8vICAgICBjb25zdCBjbGFzc2VzID0gdGhpcy5wYXJlbnQgPyB0aGlzLnBhcmVudC5jb21wb25lbnRTdHlsZT8uY2xhc3NlcyA6IHRoaXMuY29tcG9uZW50U3R5bGU/LmNsYXNzZXM7XG4gICAgLy8gICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb25WYWx1ZShjbGFzc2VzKHsgaW5zdGFuY2U6IHRoaXMuX2dldEhvc3RJbnN0YW5jZSh0aGlzKSB9KSwga2V5LCB7IC4uLnBhcmFtcyB9KTtcbiAgICAvLyB9XG5cbiAgICBnZXQgcGFyZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpc1sncGFyZW50SW5zdGFuY2UnXTtcbiAgICB9XG59XG4iXX0=