keevo-components 2.0.46 → 2.0.48

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 (164) hide show
  1. package/esm2022/keevo-components.mjs +5 -0
  2. package/esm2022/lib/api/base-components/base-component-button.mjs +39 -0
  3. package/esm2022/lib/api/base-components/base-component-chart.mjs +104 -0
  4. package/esm2022/lib/api/base-components/base-component-crud-form.mjs +308 -0
  5. package/esm2022/lib/api/base-components/base-component-crud-list.mjs +91 -0
  6. package/esm2022/lib/api/base-components/base-component-crud.mjs +80 -0
  7. package/esm2022/lib/api/base-components/base-component-dropdown-external.mjs +31 -0
  8. package/esm2022/lib/api/base-components/base-component-dropdown.mjs +238 -0
  9. package/esm2022/lib/api/base-components/base-component-input.mjs +101 -0
  10. package/esm2022/lib/api/base-components/base-component-multi-select.mjs +174 -0
  11. package/esm2022/lib/api/base-components/base-component-table.mjs +354 -0
  12. package/esm2022/lib/api/base-components/base-component.mjs +51 -0
  13. package/esm2022/lib/api/components/chart/chart.config.mjs +2 -0
  14. package/esm2022/lib/api/components/chart/chart.model.mjs +2 -0
  15. package/esm2022/lib/api/components/chart/orchart.config.mjs +2 -0
  16. package/esm2022/lib/api/components/chart/orchartnode.mjs +2 -0
  17. package/esm2022/lib/api/components/dropdown/filtro.combo.mjs +2 -0
  18. package/esm2022/lib/api/components/step/step.model.mjs +2 -0
  19. package/esm2022/lib/api/components/stepper/kv-stepperpanel.mjs +2 -0
  20. package/esm2022/lib/api/components/table/action-item.mjs +2 -0
  21. package/esm2022/lib/api/components/table/kv-menuitem.mjs +46 -0
  22. package/esm2022/lib/api/components/table/table-dropdown-control.mjs +2 -0
  23. package/esm2022/lib/api/components/table/table.config.column.mjs +2 -0
  24. package/esm2022/lib/api/components/table/table.config.mjs +2 -0
  25. package/esm2022/lib/api/components/table/table.paginate.mjs +10 -0
  26. package/esm2022/lib/api/components/table/tabledit.config.mjs +2 -0
  27. package/esm2022/lib/api/components/table/tableedit.config.column.mjs +2 -0
  28. package/esm2022/lib/api/components/tree-table/tree-table-keys.mjs +2 -0
  29. package/esm2022/lib/api/components/tree-table/tree-table.config.mjs +3 -0
  30. package/esm2022/lib/api/directives/directives.module.mjs +30 -0
  31. package/esm2022/lib/api/directives/drag/drag.directive.mjs +52 -0
  32. package/esm2022/lib/api/directives/stepper/dynamicinput.directive.mjs +31 -0
  33. package/esm2022/lib/api/directives/template/template.directive.mjs +24 -0
  34. package/esm2022/lib/api/helpers/component-providers.mjs +16 -0
  35. package/esm2022/lib/api/helpers/keevo-validators.mjs +144 -0
  36. package/esm2022/lib/api/helpers/translate-primeng.mjs +23 -0
  37. package/esm2022/lib/api/modules/primeng.module.mjs +283 -0
  38. package/esm2022/lib/api/pipes/capitalize.pipe.mjs +47 -0
  39. package/esm2022/lib/api/pipes/cpfcnpj.pipe.mjs +25 -0
  40. package/esm2022/lib/api/pipes/mask.pipe.mjs +29 -0
  41. package/esm2022/lib/api/pipes/pipes.module.mjs +39 -0
  42. package/esm2022/lib/api/pipes/telefone.pipe.mjs +45 -0
  43. package/esm2022/lib/api/services/base.api.service.mjs +74 -0
  44. package/esm2022/lib/api/services/breadcrumbs.service.mjs +62 -0
  45. package/esm2022/lib/api/services/chat.service.mjs +37 -0
  46. package/esm2022/lib/api/services/component.service.mjs +37 -0
  47. package/esm2022/lib/api/services/docs.service.mjs +129 -0
  48. package/esm2022/lib/api/services/form.service.mjs +95 -0
  49. package/esm2022/lib/api/services/image.cutter.service.mjs +191 -0
  50. package/esm2022/lib/api/services/imagens.service.mjs +28 -0
  51. package/esm2022/lib/api/services/notification.service.mjs +69 -0
  52. package/esm2022/lib/api/services/object.service.mjs +39 -0
  53. package/esm2022/lib/api/services/orgchart.service.mjs +64 -0
  54. package/esm2022/lib/api/types/breadcrumb.model.mjs +2 -0
  55. package/esm2022/lib/components/keevo-components.module.mjs +214 -0
  56. package/esm2022/lib/components/kv-avatar/kv-avatar.component.mjs +133 -0
  57. package/esm2022/lib/components/kv-avatar/kv-avatar.module.mjs +55 -0
  58. package/esm2022/lib/components/kv-button/kv-button.component.mjs +51 -0
  59. package/esm2022/lib/components/kv-button/kv-button.module.mjs +28 -0
  60. package/esm2022/lib/components/kv-buttons/kv-button-personalize/kv-button-personalize.component.mjs +25 -0
  61. package/esm2022/lib/components/kv-buttons/kv-button-popup/kv-button-popup.component.mjs +39 -0
  62. package/esm2022/lib/components/kv-buttons/kv-button-secondary/kv-button-secondary.component.mjs +17 -0
  63. package/esm2022/lib/components/kv-buttons/kv-button-success/kv-button-success.component.mjs +17 -0
  64. package/esm2022/lib/components/kv-buttons/kv-button.module.mjs +39 -0
  65. package/esm2022/lib/components/kv-card-selection/kv-card-selection.component.mjs +60 -0
  66. package/esm2022/lib/components/kv-card-selection/kv-card-selection.module.mjs +31 -0
  67. package/esm2022/lib/components/kv-carousel/kv-carousel.component.mjs +34 -0
  68. package/esm2022/lib/components/kv-carousel/kv-carousel.module.mjs +28 -0
  69. package/esm2022/lib/components/kv-chart/kv-chart.component.mjs +166 -0
  70. package/esm2022/lib/components/kv-chart/kv-chart.module.mjs +32 -0
  71. package/esm2022/lib/components/kv-content-viewer/kv-content-viewer.component.mjs +185 -0
  72. package/esm2022/lib/components/kv-content-viewer/kv-content-viewer.module.mjs +44 -0
  73. package/esm2022/lib/components/kv-error/kv-error.component.mjs +26 -0
  74. package/esm2022/lib/components/kv-error/kv-error.module.mjs +35 -0
  75. package/esm2022/lib/components/kv-file-upload/kv-file-upload.component.mjs +162 -0
  76. package/esm2022/lib/components/kv-file-upload/kv-file-upload.module.mjs +18 -0
  77. package/esm2022/lib/components/kv-file-viewer/kv-file-viewer.component.mjs +46 -0
  78. package/esm2022/lib/components/kv-file-viewer/kv-file-viewer.module.mjs +20 -0
  79. package/esm2022/lib/components/kv-file-viewer-novo/kv-file-viewer-novo.component.mjs +68 -0
  80. package/esm2022/lib/components/kv-file-viewer-novo/kv-file-viewer-novo.module.mjs +24 -0
  81. package/esm2022/lib/components/kv-filter-card/kv-filter-card.component.mjs +29 -0
  82. package/esm2022/lib/components/kv-filter-card/kv-filter-card.module.mjs +34 -0
  83. package/esm2022/lib/components/kv-filter-fieldset/kv-filter-fieldset.component.mjs +26 -0
  84. package/esm2022/lib/components/kv-filter-fieldset/kv-filter-fieldset.module.mjs +28 -0
  85. package/esm2022/lib/components/kv-g-icon/kv-g-icon.component.mjs +11 -0
  86. package/esm2022/lib/components/kv-g-icon/kv-g-icon.module.mjs +19 -0
  87. package/esm2022/lib/components/kv-home-card/kv-home-card.component.mjs +27 -0
  88. package/esm2022/lib/components/kv-home-card/kv-home-card.module.mjs +32 -0
  89. package/esm2022/lib/components/kv-image-upload/kv-image-upload.component.mjs +135 -0
  90. package/esm2022/lib/components/kv-image-upload/kv-image-upload.module.mjs +18 -0
  91. package/esm2022/lib/components/kv-inputs/kv-check/kv-check.component.mjs +29 -0
  92. package/esm2022/lib/components/kv-inputs/kv-dropdown/kv-dropdown.component.mjs +102 -0
  93. package/esm2022/lib/components/kv-inputs/kv-editor/kv-editor.component.mjs +181 -0
  94. package/esm2022/lib/components/kv-inputs/kv-input-calendar/kv-input-calendar.component.mjs +168 -0
  95. package/esm2022/lib/components/kv-inputs/kv-input-mask/kv-input-mask.component.mjs +30 -0
  96. package/esm2022/lib/components/kv-inputs/kv-input-number/kv-input-number.component.mjs +59 -0
  97. package/esm2022/lib/components/kv-inputs/kv-input-number-addon/kv-input-number-addon.component.mjs +66 -0
  98. package/esm2022/lib/components/kv-inputs/kv-input-password/kv-input-password.component.mjs +33 -0
  99. package/esm2022/lib/components/kv-inputs/kv-input-text/kv-input-text.component.mjs +38 -0
  100. package/esm2022/lib/components/kv-inputs/kv-input-text-addon/kv-input-text-addon.component.mjs +42 -0
  101. package/esm2022/lib/components/kv-inputs/kv-input-text-checkbox/kv-input-text-checkbox.component.mjs +50 -0
  102. package/esm2022/lib/components/kv-inputs/kv-input-textarea/kv-input-textarea.component.mjs +43 -0
  103. package/esm2022/lib/components/kv-inputs/kv-input-time/kv-input-time.component.mjs +24 -0
  104. package/esm2022/lib/components/kv-inputs/kv-inputs.module.mjs +141 -0
  105. package/esm2022/lib/components/kv-inputs/kv-multi-select/kv-multi-select.component.mjs +60 -0
  106. package/esm2022/lib/components/kv-inputs/kv-radio-group/kv-radio-group.component.mjs +60 -0
  107. package/esm2022/lib/components/kv-inputs/kv-select-button/kv-select-button.component.mjs +46 -0
  108. package/esm2022/lib/components/kv-inputs/kv-select-buttons/kv-select-buttons.component.mjs +37 -0
  109. package/esm2022/lib/components/kv-inputs/kv-switch/kv-switch.component.mjs +42 -0
  110. package/esm2022/lib/components/kv-inputs/kv-tree-multi-select/kv-tree-multi-select.component.mjs +58 -0
  111. package/esm2022/lib/components/kv-label/kv-label.component.mjs +15 -0
  112. package/esm2022/lib/components/kv-label/kv-label.module.mjs +24 -0
  113. package/esm2022/lib/components/kv-layout/dropdown-master/dropdown-master.component.mjs +28 -0
  114. package/esm2022/lib/components/kv-layout/kv-layout.module.mjs +72 -0
  115. package/esm2022/lib/components/kv-layout/layout/kv-layout.component.mjs +433 -0
  116. package/esm2022/lib/components/kv-layout/top-icons/top-icons.component.mjs +15 -0
  117. package/esm2022/lib/components/kv-loader/kv-loader.component.mjs +16 -0
  118. package/esm2022/lib/components/kv-loader/kv-loader.module.mjs +28 -0
  119. package/esm2022/lib/components/kv-loader/kv-loader.service.mjs +29 -0
  120. package/esm2022/lib/components/kv-login/kv-login.component.mjs +62 -0
  121. package/esm2022/lib/components/kv-login/kv-login.module.mjs +47 -0
  122. package/esm2022/lib/components/kv-modal/kv-modal.component.mjs +98 -0
  123. package/esm2022/lib/components/kv-modal/kv-modal.module.mjs +20 -0
  124. package/esm2022/lib/components/kv-orgchart/kv-orgchart.component.mjs +225 -0
  125. package/esm2022/lib/components/kv-orgchart/kv-orgchart.module.mjs +59 -0
  126. package/esm2022/lib/components/kv-page-form/kv-page-form.component.mjs +215 -0
  127. package/esm2022/lib/components/kv-page-form/kv-page-form.module.mjs +41 -0
  128. package/esm2022/lib/components/kv-page-stepper/kv-page-stepper.component.mjs +205 -0
  129. package/esm2022/lib/components/kv-page-stepper/kv-page-stepper.module.mjs +51 -0
  130. package/esm2022/lib/components/kv-pick-list/kv-pick-list.component.mjs +375 -0
  131. package/esm2022/lib/components/kv-pick-list/kv-pick-list.module.mjs +39 -0
  132. package/esm2022/lib/components/kv-progress-bar/kv-progress-bar.component.mjs +58 -0
  133. package/esm2022/lib/components/kv-progress-bar/kv-progress-bar.module.mjs +28 -0
  134. package/esm2022/lib/components/kv-progress-bar-alternative/kv-progress-bar-alternative.component.mjs +62 -0
  135. package/esm2022/lib/components/kv-progress-bar-alternative/kv-progress-bar-alternative.module.mjs +28 -0
  136. package/esm2022/lib/components/kv-report/kv-report.component.mjs +44 -0
  137. package/esm2022/lib/components/kv-report/kv-report.module.mjs +24 -0
  138. package/esm2022/lib/components/kv-stepper/kv-stepper.component.mjs +74 -0
  139. package/esm2022/lib/components/kv-stepper/kv-stepper.module.mjs +47 -0
  140. package/esm2022/lib/components/kv-steps/kv-steps.component.mjs +105 -0
  141. package/esm2022/lib/components/kv-table/kv-table.component.mjs +673 -0
  142. package/esm2022/lib/components/kv-table/kv-table.module.mjs +40 -0
  143. package/esm2022/lib/components/kv-table-edit/kv-table-edit.component.mjs +323 -0
  144. package/esm2022/lib/components/kv-table-edit/kv-table-edit.module.mjs +45 -0
  145. package/esm2022/lib/components/kv-table-expandable/kv-table-expandable.component.mjs +516 -0
  146. package/esm2022/lib/components/kv-table-expandable/kv-table-expandable.module.mjs +40 -0
  147. package/esm2022/lib/components/kv-tag/kv-tag.component.mjs +18 -0
  148. package/esm2022/lib/components/kv-tag/kv-tag.module.mjs +24 -0
  149. package/esm2022/lib/components/kv-tree-table/kv-tree-table.component.mjs +331 -0
  150. package/esm2022/lib/components/kv-tree-table/kv-tree-table.module.mjs +39 -0
  151. package/esm2022/lib/components/kv-tree-view/kv-tree-view.component.mjs +70 -0
  152. package/esm2022/lib/components/kv-tree-view/kv-tree-view.module.mjs +28 -0
  153. package/esm2022/lib/components/kv-workspace/empresa/kv-workspace-empresa.component.mjs +40 -0
  154. package/esm2022/lib/components/kv-workspace/kv-workspace.module.mjs +68 -0
  155. package/esm2022/lib/components/kv-workspace/logo/kv-workspace-logo.component.mjs +22 -0
  156. package/esm2022/lib/components/kv-workspace/master/kv-workspace-master.component.mjs +78 -0
  157. package/esm2022/lib/components/kv-workspace/workspace/kv-workspace.component.mjs +87 -0
  158. package/esm2022/public-api.mjs +269 -0
  159. package/fesm2022/keevo-components.mjs +250 -19
  160. package/fesm2022/keevo-components.mjs.map +1 -1
  161. package/lib/components/kv-button/kv-button.component.d.ts +1 -1
  162. package/lib/components/kv-pick-list/kv-pick-list.component.d.ts +21 -1
  163. package/lib/components/kv-tag/kv-tag.component.d.ts +1 -1
  164. package/package.json +3 -1
@@ -0,0 +1,375 @@
1
+ import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
+ import { PickList } from 'primeng/picklist';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/forms";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "primeng/api";
7
+ import * as i4 from "primeng/picklist";
8
+ import * as i5 from "../kv-inputs/kv-check/kv-check.component";
9
+ export class KvPickListComponent {
10
+ constructor(fb) {
11
+ this.fb = fb;
12
+ this.itemIdField = 'id';
13
+ this.breakpoint = "1400px";
14
+ this.dragdrop = true;
15
+ this.responsive = true;
16
+ this.sourceHeader = 'Título da lista de origem';
17
+ this.stripedRows = false;
18
+ this.targetHeader = 'Título de lista de destino';
19
+ this.showSourceControls = true;
20
+ this.showTargetControls = true;
21
+ this.showCheckBox = false;
22
+ this.onMoveToSource = new EventEmitter();
23
+ this.onMoveToTarget = new EventEmitter();
24
+ this.onMoveAllToSource = new EventEmitter();
25
+ this.onMoveAllToTarget = new EventEmitter();
26
+ this.onSourceSelect = new EventEmitter();
27
+ this.onTargetSelect = new EventEmitter();
28
+ this.ngModel = false;
29
+ this.selectedItems = {};
30
+ this.ultimoItemSelecionado = [];
31
+ this.lastDraggedItems = [];
32
+ this.draggedIds = [];
33
+ this.mouseX = 0;
34
+ this.mouseY = 0;
35
+ this.previewClones = [];
36
+ document.addEventListener('keydown', (event) => this.onKeyDown(event));
37
+ }
38
+ ngOnInit() {
39
+ document.addEventListener('mousemove', (event) => {
40
+ this.mouseX = event.clientX;
41
+ this.mouseY = event.clientY;
42
+ });
43
+ }
44
+ ngAfterViewInit() {
45
+ this.createDropOverlay();
46
+ }
47
+ createDropOverlay() {
48
+ this.dropOverlay = document.createElement('div');
49
+ this.dropOverlay.innerText = 'Soltar';
50
+ this.dropOverlay.style.position = 'fixed';
51
+ this.dropOverlay.style.background = '#BFDBFE'; // Azul claro visível
52
+ this.dropOverlay.style.color = '#1E3A8A'; // Azul escuro pro texto
53
+ this.dropOverlay.style.border = '9px #1E40AF'; // Borda azul escuro
54
+ this.dropOverlay.style.boxShadow = '0 2px 6px rgba(30, 58, 138, 0.2)'; // Shadow reduzida
55
+ this.dropOverlay.style.display = 'none';
56
+ this.dropOverlay.style.justifyContent = 'center';
57
+ this.dropOverlay.style.alignItems = 'center';
58
+ this.dropOverlay.style.zIndex = '9999';
59
+ this.dropOverlay.style.fontSize = '1.5rem';
60
+ this.dropOverlay.style.fontWeight = 'bold';
61
+ this.dropOverlay.style.pointerEvents = 'all';
62
+ this.dropOverlay.style.transition = 'all 0.2s ease';
63
+ // Encaixar no mesmo lugar do target
64
+ const targetListEl = document.querySelector('.p-picklist-target');
65
+ if (targetListEl) {
66
+ const rect = targetListEl.getBoundingClientRect();
67
+ this.dropOverlay.style.top = rect.top + 'px';
68
+ this.dropOverlay.style.left = rect.left + 'px';
69
+ this.dropOverlay.style.width = rect.width + 'px';
70
+ this.dropOverlay.style.height = rect.height + 'px';
71
+ }
72
+ this.dropOverlay.addEventListener('click', () => {
73
+ const selectedInSource = this.source.some(item => this.selectedItems[item[this.itemIdField]]);
74
+ const selectedInTarget = this.target.some(item => this.selectedItems[item[this.itemIdField]]);
75
+ if (selectedInSource) {
76
+ this.OnMoveToTarget({});
77
+ }
78
+ else if (selectedInTarget) {
79
+ this.OnMoveToSource({});
80
+ }
81
+ this.hideDropOverlay();
82
+ });
83
+ this.dropOverlay.addEventListener('mouseenter', () => {
84
+ this.dropOverlay.style.background = '#93C5FD'; // Azul um pouco mais escuro no hover
85
+ });
86
+ this.dropOverlay.addEventListener('mouseleave', () => {
87
+ this.dropOverlay.style.background = '#BFDBFE';
88
+ });
89
+ document.body.appendChild(this.dropOverlay);
90
+ }
91
+ handleMouseMove(event) {
92
+ this.mouseX = event.clientX;
93
+ this.mouseY = event.clientY;
94
+ }
95
+ clearPreviewClones() {
96
+ this.previewClones.forEach(clone => clone.remove());
97
+ this.previewClones = [];
98
+ }
99
+ OnMoveToSource(event) {
100
+ this.clearPreviewClones();
101
+ this.picklist.moveLeft();
102
+ this.onMoveToSource.emit(event);
103
+ this.selectedItems = {};
104
+ this.hideDropOverlay();
105
+ this.clearPreviewClones();
106
+ }
107
+ OnMoveToTarget(event) {
108
+ this.clearPreviewClones();
109
+ this.picklist.moveRight();
110
+ this.onMoveToTarget.emit(event);
111
+ this.selectedItems = {};
112
+ this.hideDropOverlay();
113
+ this.clearPreviewClones();
114
+ }
115
+ getSelectedItems() {
116
+ // Filtra os itens da lista de origem (source) com base nos itens selecionados
117
+ return this.source.filter(item => {
118
+ const itemId = item[this.itemIdField]; // Obtém o ID do item
119
+ return this.selectedItems[itemId] === true; // Verifica se está marcado como true
120
+ });
121
+ }
122
+ OnMoveAllToSource(event) {
123
+ this.onMoveToSource.emit(event);
124
+ this.selectedItems = {};
125
+ this.hideDropOverlay();
126
+ this.clearPreviewClones();
127
+ }
128
+ OnMoveAllToTarget(event) {
129
+ this.onMoveToTarget.emit(event);
130
+ this.selectedItems = {};
131
+ this.hideDropOverlay();
132
+ this.clearPreviewClones();
133
+ }
134
+ OnSourceSelect(event) {
135
+ const selectedItems = this.getSelectedItems();
136
+ // Primeiro remove todos os previews antigos
137
+ this.clearPreviewClones();
138
+ if (selectedItems.length === 0) {
139
+ this.hideDropOverlay();
140
+ this.onSourceSelect.emit(event);
141
+ return;
142
+ }
143
+ selectedItems.forEach((item, index) => {
144
+ const itemId = item[this.itemIdField];
145
+ // Se já existe um clone para esse item, não cria novamente
146
+ if (!document.getElementById('preview_' + itemId)) {
147
+ const original = document.getElementById('id_pick_list' + itemId);
148
+ if (original) {
149
+ const rect = original.getBoundingClientRect();
150
+ const clone = original.cloneNode(true);
151
+ clone.classList.add('drag-preview-clone');
152
+ clone.classList.add(`level-${index + 1}`);
153
+ clone.id = 'preview_' + itemId;
154
+ document.body.appendChild(clone);
155
+ this.previewClones.push(clone);
156
+ this.animateCloneToCursor(clone, rect);
157
+ }
158
+ }
159
+ });
160
+ this.showDropOverlay();
161
+ this.onSourceSelect.emit(event);
162
+ }
163
+ getItemId(item) {
164
+ return item?.[this.itemIdField];
165
+ }
166
+ showDropOverlay() {
167
+ const selectedInSource = this.source.some(item => this.selectedItems[item[this.itemIdField]]);
168
+ const selectedInTarget = this.target.some(item => this.selectedItems[item[this.itemIdField]]);
169
+ let targetListEl = null;
170
+ if (selectedInSource) {
171
+ // Itens selecionados na lista da esquerda → overlay no lado direito
172
+ targetListEl = document.querySelector('.p-picklist-target');
173
+ this.dropOverlay.innerText = 'Soltar aqui para mover';
174
+ }
175
+ else if (selectedInTarget) {
176
+ // Itens selecionados na lista da direita → overlay no lado esquerdo
177
+ targetListEl = document.querySelector('.p-picklist-source');
178
+ this.dropOverlay.innerText = 'Soltar aqui para retornar';
179
+ }
180
+ if (targetListEl) {
181
+ const rect = targetListEl.getBoundingClientRect();
182
+ this.dropOverlay.style.top = rect.top + 'px';
183
+ this.dropOverlay.style.left = rect.left + 'px';
184
+ this.dropOverlay.style.width = rect.width + 'px';
185
+ this.dropOverlay.style.height = rect.height + 'px';
186
+ this.dropOverlay.style.display = 'flex';
187
+ }
188
+ }
189
+ hideDropOverlay() {
190
+ if (this.dropOverlay) {
191
+ this.dropOverlay.style.display = 'none';
192
+ }
193
+ }
194
+ animateCloneToCursor(clone, originRect) {
195
+ // Começa exatamente da posição do original
196
+ let posX = originRect.left;
197
+ let posY = originRect.top;
198
+ clone.style.position = 'fixed';
199
+ clone.style.left = `${posX}px`;
200
+ clone.style.top = `${posY}px`;
201
+ clone.style.width = `${originRect.width}px`;
202
+ clone.style.height = `${originRect.height}px`;
203
+ clone.style.pointerEvents = 'none';
204
+ const animate = () => {
205
+ const dx = this.mouseX - posX;
206
+ const dy = this.mouseY - posY;
207
+ posX += dx * 0.15;
208
+ posY += dy * 0.15;
209
+ clone.style.left = `${posX}px`;
210
+ clone.style.top = `${posY}px`;
211
+ if (document.body.contains(clone)) {
212
+ requestAnimationFrame(animate);
213
+ }
214
+ };
215
+ animate();
216
+ }
217
+ OnTargetSelect(event) {
218
+ const selectedItems = this.target.filter(item => {
219
+ const itemId = item[this.itemIdField];
220
+ return this.selectedItems[itemId] === true;
221
+ });
222
+ // Limpa clones antigos
223
+ this.clearPreviewClones();
224
+ if (selectedItems.length === 0) {
225
+ this.hideDropOverlay();
226
+ this.onTargetSelect.emit(event);
227
+ return;
228
+ }
229
+ selectedItems.forEach((item, index) => {
230
+ const itemId = item[this.itemIdField];
231
+ if (!document.getElementById('preview_' + itemId)) {
232
+ const original = document.getElementById('id_pick_list' + itemId);
233
+ if (original) {
234
+ const rect = original.getBoundingClientRect();
235
+ const clone = original.cloneNode(true);
236
+ clone.classList.add('drag-preview-clone');
237
+ clone.classList.add(`level-${index + 1}`);
238
+ clone.id = 'preview_' + itemId;
239
+ document.body.appendChild(clone);
240
+ this.previewClones.push(clone);
241
+ this.animateCloneToCursor(clone, rect);
242
+ }
243
+ }
244
+ });
245
+ this.showDropOverlay();
246
+ this.onTargetSelect.emit(event);
247
+ }
248
+ onSelectAll() {
249
+ this.selectAllItems(true);
250
+ }
251
+ selectAllItems(isSelected) {
252
+ this.source.forEach(item => {
253
+ const itemId = item[this.itemIdField];
254
+ this.selectedItems[itemId] = isSelected;
255
+ });
256
+ this.target.forEach(item => {
257
+ const itemId = item[this.itemIdField];
258
+ this.selectedItems[itemId] = isSelected;
259
+ });
260
+ }
261
+ onKeyDown(event) {
262
+ if (event.ctrlKey && event.key === 'a') {
263
+ event.preventDefault();
264
+ this.onSelectAll();
265
+ }
266
+ else if (event.key === 'Enter') {
267
+ const sourceSelected = this.picklist.selectedItemsSource;
268
+ const selectedItemsIds = Object.entries(this.selectedItems)
269
+ .filter(([_, value]) => value === true)
270
+ .map(([key, _]) => Number(key));
271
+ const notInSelected = sourceSelected.find((item) => !selectedItemsIds.includes(item[this.itemIdField]));
272
+ const indexInSource = this.source.findIndex((item) => item[this.itemIdField] === notInSelected?.[this.itemIdField]);
273
+ const ultimoItemArray = {
274
+ item: notInSelected,
275
+ index: indexInSource,
276
+ };
277
+ const selectedIndexInSource = this.source.findIndex((sourceItem) => selectedItemsIds.includes(sourceItem[this.itemIdField]));
278
+ if (notInSelected === undefined) {
279
+ const beforeIds = this.ultimoItemSelecionado.map(i => i.item[this.itemIdField]);
280
+ const afterIds = this.picklist.selectedItemsSource.map(i => i[this.itemIdField]);
281
+ const removedId = beforeIds.find(id => !afterIds.includes(id));
282
+ if (removedId != null) {
283
+ const removedItem = this.source.find(item => item[this.itemIdField] === removedId);
284
+ if (removedItem) {
285
+ this.selectCheckBox(removedItem);
286
+ this.ultimoItemSelecionado = this.ultimoItemSelecionado.filter((i) => i.item[this.itemIdField] !== removedId);
287
+ }
288
+ }
289
+ else {
290
+ const enterIds = this.ultimoItemSelecionado.map(i => i.item[this.itemIdField]);
291
+ const selectedItemsIds = Object.entries(this.selectedItems)
292
+ .filter(([_, value]) => value === true)
293
+ .map(([key, _]) => Number(key));
294
+ const clickedIds = selectedItemsIds.filter(id => !enterIds.includes(id));
295
+ if (clickedIds.length > 0) {
296
+ const clickedItem = this.source.find(item => item[this.itemIdField] === clickedIds[0]);
297
+ if (clickedItem) {
298
+ this.selectCheckBox(clickedItem);
299
+ this.ultimoItemSelecionado = this.ultimoItemSelecionado.filter((i) => i.item[this.itemIdField] !== clickedIds[0]);
300
+ }
301
+ }
302
+ }
303
+ return;
304
+ }
305
+ this.selectCheckBox(notInSelected);
306
+ this.ultimoItemSelecionado = this.ultimoItemSelecionado.filter((item) => item.index !== indexInSource);
307
+ this.ultimoItemSelecionado.push(ultimoItemArray);
308
+ }
309
+ }
310
+ selectCheckBox(item) {
311
+ const itemId = item[this.itemIdField];
312
+ this.selectedPreview = item;
313
+ this.selectedItems[itemId] = this.selectedItems[itemId] !== undefined
314
+ ? !this.selectedItems[itemId]
315
+ : true;
316
+ this.ngModel = this.selectedItems[itemId];
317
+ }
318
+ isItemSelected(item) {
319
+ return this.selectedPreview === item;
320
+ }
321
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvPickListComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
322
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvPickListComponent, selector: "kv-picklist", inputs: { itemIdField: "itemIdField", breakpoint: "breakpoint", dragdrop: "dragdrop", filterBy: "filterBy", itemTemplate: "itemTemplate", responsive: "responsive", source: "source", sourceHeader: "sourceHeader", sourceStyle: "sourceStyle", stripedRows: "stripedRows", target: "target", targetHeader: "targetHeader", targetStyle: "targetStyle", showSourceControls: "showSourceControls", showTargetControls: "showTargetControls", showCheckBox: "showCheckBox" }, outputs: { onMoveToSource: "onMoveToSource", onMoveToTarget: "onMoveToTarget", onMoveAllToSource: "onMoveAllToSource", onMoveAllToTarget: "onMoveAllToTarget", onSourceSelect: "onSourceSelect", onTargetSelect: "onTargetSelect" }, viewQueries: [{ propertyName: "picklist", first: true, predicate: PickList, descendants: true }], ngImport: i0, template: "<p-pickList\r\n [source]=\"source\"\r\n [sourceHeader]=\"sourceHeader\"\r\n [sourceStyle]=\"sourceStyle\"\r\n [target]=\"target\" \r\n [targetHeader]=\"targetHeader\"\r\n [targetStyle]=\"targetStyle\"\r\n [dragdrop]=\"dragdrop\"\r\n [responsive]=\"responsive\"\r\n [filterBy]=\"filterBy\"\r\n [breakpoint]=\"breakpoint\"\r\n [stripedRows]=\"stripedRows\"\r\n [showSourceControls]=\"showSourceControls\"\r\n [showTargetControls]=\"showTargetControls\"\r\n (onMoveToSource)=\"OnMoveToSource($event)\"\r\n (onMoveToTarget)=\"OnMoveToTarget($event)\"\r\n (onMoveAllToSource)=\"OnMoveAllToSource($event)\"\r\n (onMoveAllToTarget)=\"OnMoveAllToTarget($event)\"\r\n (onSourceSelect)=\"OnSourceSelect($event)\"\r\n (onTargetSelect)=\"OnTargetSelect($event)\"\r\n>\r\n <ng-template let-item pTemplate=\"item\" *ngIf=\"itemTemplate\" >\r\n <div (click)=\"selectCheckBox(item)\" class=\"flex mr-5\" [id]=\"'id_pick_list' + getItemId(item)\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{ $implicit: item }\">\r\n @if(showCheckBox) {\r\n <kv-check (onCheckChange)=\"selectCheckBox(item)\" [(ngModel)]=\"selectedItems[item[itemIdField]]\" class=\"mr-1\"></kv-check>\r\n }\r\n </ng-container>\r\n </div> \r\n </ng-template>\r\n</p-pickList>\r\n", styles: ["@charset \"UTF-8\";:host ::ng-deep .p-picklist .p-picklist-filter-container{position:sticky!important;top:0!important;z-index:99!important}:host ::ng-deep .p-picklist .p-picklist-filter-container{border-left:0px;border-right:0px}.item-with-checkbox{display:flex;align-items:center}.item-with-checkbox kv-check{margin-right:8px}@keyframes shake-base{0%{transform:translate(0)}25%{transform:translate(1px,-1px)}50%{transform:translate(-1px,1px)}75%{transform:translate(1px,1px)}to{transform:translate(-1px,-1px)}}.drag-preview-clone{animation-name:shake-base;animation-duration:.25s;animation-iteration-count:infinite;animation-timing-function:ease-in-out;position:fixed;z-index:9999;opacity:.85;pointer-events:none;transition:transform .1s ease;box-shadow:0 10px 20px #0003;border-radius:6px;padding:8px;background-color:#fff}.drag-preview-clone.level-1{margin-top:.5rem}.drag-preview-clone.level-2{margin-bottom:1rem}.drag-preview-clone.level-3{margin-left:.5rem}\n", "@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0\";::ng-deep :root{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255;--kv-primary-color: 41, 185, 45;--kv-secondary-color: 0, 37, 66;--kv-tertiary-color: 165, 165, 165}::ng-deep .padrao{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-keevocenter{--kv-color-system: 88,25,153;--kv-color-system-cta: 0, 116, 217;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-holos{--kv-color-system: 241,90,36;--kv-color-system-cta: 224, 168, 35;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 240,240,240;--kv-background-card: 2255,255,255}.system-color{color:rgb(var(--kv-color-system),1)}.bg-system-100{background:rgb(var(--kv-color-system),1)}.bg-system-75{background:rgb(var(--kv-color-system),.75)}.bg-system-50{background:rgb(var(--kv-color-system),.5)}.bg-system-25{background:rgb(var(--kv-color-system),.25)}.material-symbols-outlined{font-family:Material Symbols Outlined!important}*{font-family:Inter,Inter var,sans-serif!important}::ng-deep .p-accordion,::ng-deep .p-accordion-header,::ng-deep .p-accordion-content,::ng-deep .p-badge,::ng-deep .p-overlay-badge,::ng-deep .p-breadcrumb,::ng-deep .p-breadcrumb-item,::ng-deep .p-breadcrumb-link,::ng-deep .p-button,::ng-deep .p-calendar,::ng-deep .p-card,::ng-deep .p-card-title,::ng-deep .p-card-subtitle,::ng-deep .p-card-content,::ng-deep .p-checkbox,::ng-deep .p-chip,::ng-deep .p-confirm-dialog,::ng-deep .p-confirm-dialog-message,::ng-deep .p-contextmenu,::ng-deep .p-contextmenu-item,::ng-deep .p-dataview,::ng-deep .p-dataview-content,::ng-deep .p-dialog,::ng-deep .p-dialog-title,::ng-deep .p-dialog-content,::ng-deep .p-dropdown,::ng-deep .p-dropdown-label,::ng-deep .p-dropdown-item,::ng-deep .p-dynamic-dialog,::ng-deep .p-dynamic-dialog-title,::ng-deep .p-dynamic-dialog-content,::ng-deep .p-editor,::ng-deep .p-fieldset,::ng-deep .p-fieldset-legend,::ng-deep .p-fieldset-content,::ng-deep .p-fileupload,::ng-deep .p-inputmask,::ng-deep .p-inputnumber,::ng-deep .p-inputtextarea,::ng-deep .p-inputtext,::ng-deep .p-menu,::ng-deep .p-menuitem,::ng-deep .p-menuitem-text,::ng-deep .p-message,::ng-deep .p-messages,::ng-deep .p-multiselect,::ng-deep .p-multiselect-label,::ng-deep .p-multiselect-item,::ng-deep .p-panelmenu,::ng-deep .p-panelmenu-header,::ng-deep .p-panelmenu-content,::ng-deep .p-panel,::ng-deep .p-panel-header,::ng-deep .p-panel-content,::ng-deep .p-password,::ng-deep .p-picklist,::ng-deep .p-progressbar,::ng-deep .p-radiobutton,::ng-deep .p-rating,::ng-deep .p-sidebar,::ng-deep .p-splitbutton,::ng-deep .p-steps,::ng-deep .p-step,::ng-deep .p-table,::ng-deep .p-datatable,::ng-deep .p-tabview,::ng-deep .p-tabpanel,::ng-deep .p-tag,::ng-deep .p-toast,::ng-deep .p-toolbar,::ng-deep .p-tooltip,::ng-deep .p-tree,::ng-deep .p-treetable,::ng-deep .p-selectbutton,::ng-deep .p-stepper,::ng-deep .p-inputgroup,::ng-deep .p-inputgroup-addon,::ng-deep .p-text{font-family:Inter,Inter var,sans-serif!important}::ng-deep .p-icon,svg{height:.6rem}:host ::ng-deep .inputs{height:1.875rem}:host ::ng-deep .inputs,.p-inputtext,.p-inputtextarea{font-size:.875rem}::ng-deep .p-dialog .p-dialog-header{color:rgb(var(--kv-color-text))!important;background:linear-gradient(0deg,#00000005 .44%,#0000 49.5%),#fff!important;display:flex!important;flex-wrap:wrap;word-wrap:break-word;border-bottom:1px solid rgb(var(--kv-color-text),.15)}::ng-deep .p-dialog .p-dialog-content{padding-top:1rem}::ng-deep .p-dialog{min-width:320px}::ng-deep .p-dialog-content{overflow-x:hidden}::ng-deep .p-dialog-content::-webkit-scrollbar{width:8px}::ng-deep .p-dialog-content::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .p-dialog-content::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .p-dialog-content:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .p-dialog-content::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}::ng-deep .p-dialog-footer{display:flex;justify-content:flex-end;padding:10px;gap:10px}::ng-deep .p-dialog .p-dialog-header .p-dialog-header-icon{display:none}::ng-deep .p-tooltip{font-size:.825rem!important}::ng-deep svg.p-icon{width:.65rem;height:.65rem}::ng-deep .p-checkbox .p-checkbox-box.p-highlight{border-color:#004172;background:#004172}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:hover{background-color:#002542}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:active{background-color:#002542}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:disabled{background-color:#002542;opacity:.4;cursor:auto}input{height:1.75rem}::ng-deep .p-checkbox .p-checkbox-box{width:1.125rem;height:1.125rem;border:1.5px solid #d1d5db}::ng-deep p-tablecheckbox p-tableheadercheckbox .p-checkbox{display:flex!important;align-items:center!important;justify-content:right}::ng-deep .p-checkbox{display:flex!important;align-items:center!important;justify-content:center}::ng-deep .p-checkbox-label{font-size:.875rem}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i4.PickList, selector: "p-pickList", inputs: ["source", "target", "sourceHeader", "tabindex", "rightButtonAriaLabel", "leftButtonAriaLabel", "allRightButtonAriaLabel", "allLeftButtonAriaLabel", "upButtonAriaLabel", "downButtonAriaLabel", "topButtonAriaLabel", "bottomButtonAriaLabel", "targetHeader", "responsive", "filterBy", "filterLocale", "trackBy", "sourceTrackBy", "targetTrackBy", "showSourceFilter", "showTargetFilter", "metaKeySelection", "dragdrop", "style", "styleClass", "sourceStyle", "targetStyle", "showSourceControls", "showTargetControls", "sourceFilterPlaceholder", "targetFilterPlaceholder", "disabled", "ariaSourceFilterLabel", "ariaTargetFilterLabel", "filterMatchMode", "stripedRows", "keepSelection", "breakpoint"], outputs: ["onMoveToSource", "onMoveAllToSource", "onMoveAllToTarget", "onMoveToTarget", "onSourceReorder", "onTargetReorder", "onSourceSelect", "onTargetSelect", "onSourceFilter", "onTargetFilter", "onFocus", "onBlur"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.KvCheckComponent, selector: "kv-check", outputs: ["onCheckChange"] }] }); }
323
+ }
324
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvPickListComponent, decorators: [{
325
+ type: Component,
326
+ args: [{ selector: 'kv-picklist', template: "<p-pickList\r\n [source]=\"source\"\r\n [sourceHeader]=\"sourceHeader\"\r\n [sourceStyle]=\"sourceStyle\"\r\n [target]=\"target\" \r\n [targetHeader]=\"targetHeader\"\r\n [targetStyle]=\"targetStyle\"\r\n [dragdrop]=\"dragdrop\"\r\n [responsive]=\"responsive\"\r\n [filterBy]=\"filterBy\"\r\n [breakpoint]=\"breakpoint\"\r\n [stripedRows]=\"stripedRows\"\r\n [showSourceControls]=\"showSourceControls\"\r\n [showTargetControls]=\"showTargetControls\"\r\n (onMoveToSource)=\"OnMoveToSource($event)\"\r\n (onMoveToTarget)=\"OnMoveToTarget($event)\"\r\n (onMoveAllToSource)=\"OnMoveAllToSource($event)\"\r\n (onMoveAllToTarget)=\"OnMoveAllToTarget($event)\"\r\n (onSourceSelect)=\"OnSourceSelect($event)\"\r\n (onTargetSelect)=\"OnTargetSelect($event)\"\r\n>\r\n <ng-template let-item pTemplate=\"item\" *ngIf=\"itemTemplate\" >\r\n <div (click)=\"selectCheckBox(item)\" class=\"flex mr-5\" [id]=\"'id_pick_list' + getItemId(item)\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{ $implicit: item }\">\r\n @if(showCheckBox) {\r\n <kv-check (onCheckChange)=\"selectCheckBox(item)\" [(ngModel)]=\"selectedItems[item[itemIdField]]\" class=\"mr-1\"></kv-check>\r\n }\r\n </ng-container>\r\n </div> \r\n </ng-template>\r\n</p-pickList>\r\n", styles: ["@charset \"UTF-8\";:host ::ng-deep .p-picklist .p-picklist-filter-container{position:sticky!important;top:0!important;z-index:99!important}:host ::ng-deep .p-picklist .p-picklist-filter-container{border-left:0px;border-right:0px}.item-with-checkbox{display:flex;align-items:center}.item-with-checkbox kv-check{margin-right:8px}@keyframes shake-base{0%{transform:translate(0)}25%{transform:translate(1px,-1px)}50%{transform:translate(-1px,1px)}75%{transform:translate(1px,1px)}to{transform:translate(-1px,-1px)}}.drag-preview-clone{animation-name:shake-base;animation-duration:.25s;animation-iteration-count:infinite;animation-timing-function:ease-in-out;position:fixed;z-index:9999;opacity:.85;pointer-events:none;transition:transform .1s ease;box-shadow:0 10px 20px #0003;border-radius:6px;padding:8px;background-color:#fff}.drag-preview-clone.level-1{margin-top:.5rem}.drag-preview-clone.level-2{margin-bottom:1rem}.drag-preview-clone.level-3{margin-left:.5rem}\n", "@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0\";::ng-deep :root{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255;--kv-primary-color: 41, 185, 45;--kv-secondary-color: 0, 37, 66;--kv-tertiary-color: 165, 165, 165}::ng-deep .padrao{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-keevocenter{--kv-color-system: 88,25,153;--kv-color-system-cta: 0, 116, 217;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-holos{--kv-color-system: 241,90,36;--kv-color-system-cta: 224, 168, 35;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 240,240,240;--kv-background-card: 2255,255,255}.system-color{color:rgb(var(--kv-color-system),1)}.bg-system-100{background:rgb(var(--kv-color-system),1)}.bg-system-75{background:rgb(var(--kv-color-system),.75)}.bg-system-50{background:rgb(var(--kv-color-system),.5)}.bg-system-25{background:rgb(var(--kv-color-system),.25)}.material-symbols-outlined{font-family:Material Symbols Outlined!important}*{font-family:Inter,Inter var,sans-serif!important}::ng-deep .p-accordion,::ng-deep .p-accordion-header,::ng-deep .p-accordion-content,::ng-deep .p-badge,::ng-deep .p-overlay-badge,::ng-deep .p-breadcrumb,::ng-deep .p-breadcrumb-item,::ng-deep .p-breadcrumb-link,::ng-deep .p-button,::ng-deep .p-calendar,::ng-deep .p-card,::ng-deep .p-card-title,::ng-deep .p-card-subtitle,::ng-deep .p-card-content,::ng-deep .p-checkbox,::ng-deep .p-chip,::ng-deep .p-confirm-dialog,::ng-deep .p-confirm-dialog-message,::ng-deep .p-contextmenu,::ng-deep .p-contextmenu-item,::ng-deep .p-dataview,::ng-deep .p-dataview-content,::ng-deep .p-dialog,::ng-deep .p-dialog-title,::ng-deep .p-dialog-content,::ng-deep .p-dropdown,::ng-deep .p-dropdown-label,::ng-deep .p-dropdown-item,::ng-deep .p-dynamic-dialog,::ng-deep .p-dynamic-dialog-title,::ng-deep .p-dynamic-dialog-content,::ng-deep .p-editor,::ng-deep .p-fieldset,::ng-deep .p-fieldset-legend,::ng-deep .p-fieldset-content,::ng-deep .p-fileupload,::ng-deep .p-inputmask,::ng-deep .p-inputnumber,::ng-deep .p-inputtextarea,::ng-deep .p-inputtext,::ng-deep .p-menu,::ng-deep .p-menuitem,::ng-deep .p-menuitem-text,::ng-deep .p-message,::ng-deep .p-messages,::ng-deep .p-multiselect,::ng-deep .p-multiselect-label,::ng-deep .p-multiselect-item,::ng-deep .p-panelmenu,::ng-deep .p-panelmenu-header,::ng-deep .p-panelmenu-content,::ng-deep .p-panel,::ng-deep .p-panel-header,::ng-deep .p-panel-content,::ng-deep .p-password,::ng-deep .p-picklist,::ng-deep .p-progressbar,::ng-deep .p-radiobutton,::ng-deep .p-rating,::ng-deep .p-sidebar,::ng-deep .p-splitbutton,::ng-deep .p-steps,::ng-deep .p-step,::ng-deep .p-table,::ng-deep .p-datatable,::ng-deep .p-tabview,::ng-deep .p-tabpanel,::ng-deep .p-tag,::ng-deep .p-toast,::ng-deep .p-toolbar,::ng-deep .p-tooltip,::ng-deep .p-tree,::ng-deep .p-treetable,::ng-deep .p-selectbutton,::ng-deep .p-stepper,::ng-deep .p-inputgroup,::ng-deep .p-inputgroup-addon,::ng-deep .p-text{font-family:Inter,Inter var,sans-serif!important}::ng-deep .p-icon,svg{height:.6rem}:host ::ng-deep .inputs{height:1.875rem}:host ::ng-deep .inputs,.p-inputtext,.p-inputtextarea{font-size:.875rem}::ng-deep .p-dialog .p-dialog-header{color:rgb(var(--kv-color-text))!important;background:linear-gradient(0deg,#00000005 .44%,#0000 49.5%),#fff!important;display:flex!important;flex-wrap:wrap;word-wrap:break-word;border-bottom:1px solid rgb(var(--kv-color-text),.15)}::ng-deep .p-dialog .p-dialog-content{padding-top:1rem}::ng-deep .p-dialog{min-width:320px}::ng-deep .p-dialog-content{overflow-x:hidden}::ng-deep .p-dialog-content::-webkit-scrollbar{width:8px}::ng-deep .p-dialog-content::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .p-dialog-content::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .p-dialog-content:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .p-dialog-content::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}::ng-deep .p-dialog-footer{display:flex;justify-content:flex-end;padding:10px;gap:10px}::ng-deep .p-dialog .p-dialog-header .p-dialog-header-icon{display:none}::ng-deep .p-tooltip{font-size:.825rem!important}::ng-deep svg.p-icon{width:.65rem;height:.65rem}::ng-deep .p-checkbox .p-checkbox-box.p-highlight{border-color:#004172;background:#004172}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:hover{background-color:#002542}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:active{background-color:#002542}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:disabled{background-color:#002542;opacity:.4;cursor:auto}input{height:1.75rem}::ng-deep .p-checkbox .p-checkbox-box{width:1.125rem;height:1.125rem;border:1.5px solid #d1d5db}::ng-deep p-tablecheckbox p-tableheadercheckbox .p-checkbox{display:flex!important;align-items:center!important;justify-content:right}::ng-deep .p-checkbox{display:flex!important;align-items:center!important;justify-content:center}::ng-deep .p-checkbox-label{font-size:.875rem}\n"] }]
327
+ }], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { picklist: [{
328
+ type: ViewChild,
329
+ args: [PickList]
330
+ }], itemIdField: [{
331
+ type: Input
332
+ }], breakpoint: [{
333
+ type: Input
334
+ }], dragdrop: [{
335
+ type: Input
336
+ }], filterBy: [{
337
+ type: Input
338
+ }], itemTemplate: [{
339
+ type: Input
340
+ }], responsive: [{
341
+ type: Input
342
+ }], source: [{
343
+ type: Input
344
+ }], sourceHeader: [{
345
+ type: Input
346
+ }], sourceStyle: [{
347
+ type: Input
348
+ }], stripedRows: [{
349
+ type: Input
350
+ }], target: [{
351
+ type: Input
352
+ }], targetHeader: [{
353
+ type: Input
354
+ }], targetStyle: [{
355
+ type: Input
356
+ }], showSourceControls: [{
357
+ type: Input
358
+ }], showTargetControls: [{
359
+ type: Input
360
+ }], showCheckBox: [{
361
+ type: Input
362
+ }], onMoveToSource: [{
363
+ type: Output
364
+ }], onMoveToTarget: [{
365
+ type: Output
366
+ }], onMoveAllToSource: [{
367
+ type: Output
368
+ }], onMoveAllToTarget: [{
369
+ type: Output
370
+ }], onSourceSelect: [{
371
+ type: Output
372
+ }], onTargetSelect: [{
373
+ type: Output
374
+ }] } });
375
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtcGljay1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LXBpY2stbGlzdC9rdi1waWNrLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtcGljay1saXN0L2t2LXBpY2stbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7QUFVNUMsTUFBTSxPQUFPLG1CQUFtQjtJQU05QixZQUFvQixFQUFlO1FBQWYsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUkxQixnQkFBVyxHQUFXLElBQUksQ0FBQztRQUMzQixlQUFVLEdBQVcsUUFBUSxDQUFDO1FBQzlCLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFHekIsZUFBVSxHQUFZLElBQUksQ0FBQztRQUUzQixpQkFBWSxHQUFXLDJCQUEyQixDQUFDO1FBRW5ELGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRTdCLGlCQUFZLEdBQVcsNEJBQTRCLENBQUM7UUFFcEQsdUJBQWtCLEdBQVksSUFBSSxDQUFDO1FBQ25DLHVCQUFrQixHQUFZLElBQUksQ0FBQztRQUNuQyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUU3QixtQkFBYyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3ZELG1CQUFjLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkQsc0JBQWlCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUQsc0JBQWlCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUQsbUJBQWMsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN2RCxtQkFBYyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBR2pFLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsa0JBQWEsR0FBK0IsRUFBRSxDQUFDO1FBQy9DLDBCQUFxQixHQUFtQyxFQUFFLENBQUM7UUFDM0QscUJBQWdCLEdBQVUsRUFBRSxDQUFDO1FBQzdCLGVBQVUsR0FBYSxFQUFFLENBQUM7UUFFMUIsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUNYLFdBQU0sR0FBRyxDQUFDLENBQUM7UUFDWCxrQkFBYSxHQUFrQixFQUFFLENBQUM7UUFwQ2hDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBcUNILFFBQVE7UUFDTixRQUFRLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBaUIsRUFBRSxFQUFFO1lBQzNELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUM1QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFJQyxpQkFBaUI7UUFDZixJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxDQUFDLHFCQUFxQjtRQUNwRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsd0JBQXdCO1FBQ2xFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsQ0FBQyxvQkFBb0I7UUFDbkUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLGtDQUFrQyxDQUFDLENBQUMsa0JBQWtCO1FBQ3pGLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztRQUNqRCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO1FBQzdDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO1FBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDN0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQztRQUdwRCxvQ0FBb0M7UUFDcEMsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBZ0IsQ0FBQztRQUNqRixJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztZQUM3QyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDL0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNyRCxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQzlDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlGLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTlGLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxQixDQUFDO2lCQUFNLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxQixDQUFDO1lBRUQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBR0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFO1lBQ25ELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsQ0FBQyxxQ0FBcUM7UUFDdEYsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7WUFDbkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztRQUdILFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBR0QsZUFBZSxDQUFDLEtBQWlCO1FBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDOUIsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQTtRQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUE7UUFDdEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUdELGdCQUFnQjtRQUNkLDhFQUE4RTtRQUM5RSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQy9CLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxxQkFBcUI7WUFDNUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLHFDQUFxQztRQUNuRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFVO1FBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQTtRQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBVTtRQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUE7UUFDdEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFVO1FBQ3ZCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRTlDLDRDQUE0QztRQUM1QyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUUxQixJQUFJLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLE9BQU87UUFDVCxDQUFDO1FBRUQsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxLQUFhLEVBQUUsRUFBRTtZQUNqRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRXRDLDJEQUEyRDtZQUMzRCxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDbEQsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLENBQUM7Z0JBQ2xFLElBQUksUUFBUSxFQUFFLENBQUM7b0JBQ2IsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLHFCQUFxQixFQUFFLENBQUM7b0JBQzlDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFnQixDQUFDO29CQUN0RCxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO29CQUMxQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUMxQyxLQUFLLENBQUMsRUFBRSxHQUFHLFVBQVUsR0FBRyxNQUFNLENBQUM7b0JBQy9CLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDL0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDekMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQVM7UUFDakIsT0FBTyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUdELGVBQWU7UUFDYixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU5RixJQUFJLFlBQVksR0FBdUIsSUFBSSxDQUFDO1FBRTVDLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUNyQixvRUFBb0U7WUFDcEUsWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQWdCLENBQUM7WUFDM0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsd0JBQXdCLENBQUM7UUFDeEQsQ0FBQzthQUFNLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUM1QixvRUFBb0U7WUFDcEUsWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQWdCLENBQUM7WUFDM0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsMkJBQTJCLENBQUM7UUFDM0QsQ0FBQztRQUVELElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1lBQzdDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUMvQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ25ELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFHRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUdELG9CQUFvQixDQUFDLEtBQWtCLEVBQUUsVUFBbUI7UUFDMUQsMkNBQTJDO1FBQzNDLElBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUUxQixLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDL0IsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQztRQUMvQixLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDO1FBQzlCLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEdBQUcsVUFBVSxDQUFDLEtBQUssSUFBSSxDQUFDO1FBQzVDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDO1FBQzlDLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQztRQUVuQyxNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUU7WUFDbkIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDOUIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFFOUIsSUFBSSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDbEIsSUFBSSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFFbEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQztZQUMvQixLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDO1lBRTlCLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakMsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUlELGNBQWMsQ0FBQyxLQUFVO1FBQ3ZCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzlDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdEMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztRQUVILHVCQUF1QjtRQUN2QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUUxQixJQUFJLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLE9BQU87UUFDVCxDQUFDO1FBRUQsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxLQUFhLEVBQUUsRUFBRTtZQUNqRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRXRDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUNsRCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsQ0FBQztnQkFDbEUsSUFBSSxRQUFRLEVBQUUsQ0FBQztvQkFDYixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQztvQkFDOUMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQWdCLENBQUM7b0JBQ3RELEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7b0JBQzFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsVUFBVSxHQUFHLE1BQU0sQ0FBQztvQkFDL0IsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMvQixJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUN6QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFHRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsY0FBYyxDQUFDLFVBQW1CO1FBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxVQUFVLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFvQjtRQUM1QixJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUN2QyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssT0FBTyxFQUFFLENBQUM7WUFFakMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQztZQUV6RCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztpQkFDeEQsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUM7aUJBQ3RDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUVsQyxNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUN2QyxDQUFDLElBQTRCLEVBQUUsRUFBRSxDQUMvQixDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQ3JELENBQUM7WUFFRixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FDekMsQ0FBQyxJQUE0QixFQUFFLEVBQUUsQ0FDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQy9ELENBQUM7WUFFRixNQUFNLGVBQWUsR0FBRztnQkFDdEIsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLEtBQUssRUFBRSxhQUFhO2FBQ3JCLENBQUM7WUFFRixNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBZSxFQUFFLEVBQUUsQ0FDdEUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FDeEQsQ0FBQztZQUVGLElBQUksYUFBYSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNoQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDaEYsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBRWpGLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFHL0QsSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ3RCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQztvQkFDbkYsSUFBSSxXQUFXLEVBQUUsQ0FBQzt3QkFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQzt3QkFDakMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQzVELENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxTQUFTLENBQzlDLENBQUM7b0JBQ0osQ0FBQztnQkFDSCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7b0JBRS9FLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO3lCQUN4RCxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQzt5QkFDdEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUVsQyxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFFekUsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUMxQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3ZGLElBQUksV0FBVyxFQUFFLENBQUM7NEJBQ2hCLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7NEJBQ2pDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUM1RCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUNsRCxDQUFDO3dCQUNKLENBQUM7b0JBQ0gsQ0FBQztnQkFFSCxDQUFDO2dCQUVELE9BQU87WUFDVCxDQUFDO1lBSUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUVuQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FDNUQsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssYUFBYSxDQUN2QyxDQUFDO1lBRUYsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUVuRCxDQUFDO0lBQ0gsQ0FBQztJQUdELGNBQWMsQ0FBQyxJQUFTO1FBQ3RCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFHdEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFFNUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLFNBQVM7WUFDbkUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7WUFDN0IsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUdULElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUU1QyxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVM7UUFDdEIsT0FBTyxJQUFJLENBQUMsZUFBZSxLQUFLLElBQUksQ0FBQztJQUN2QyxDQUFDOzhHQXhhVSxtQkFBbUI7a0dBQW5CLG1CQUFtQiw4d0JBRW5CLFFBQVEsZ0RDdEJyQixtMENBZ0NBOzsyRkRaYSxtQkFBbUI7a0JBUi9CLFNBQVM7K0JBQ0UsYUFBYTtnRkFTRixRQUFRO3NCQUE1QixTQUFTO3VCQUFDLFFBQVE7Z0JBUVYsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBQaWNrTGlzdCB9IGZyb20gJ3ByaW1lbmcvcGlja2xpc3QnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdrdi1waWNrbGlzdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2t2LXBpY2stbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbXHJcbiAgICAnLi9rdi1waWNrLWxpc3QuY29tcG9uZW50LnNjc3MnLFxyXG4gICAgJy4uL2tlZXZvLWNvbXBvbmVudHMtc3R5bGVzLnNjc3MnXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgS3ZQaWNrTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoUGlja0xpc3QpIHBpY2tsaXN0ITogUGlja0xpc3Q7XHJcblxyXG4gIGZvcm0hOiBGb3JtR3JvdXA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2ZW50KSA9PiB0aGlzLm9uS2V5RG93bihldmVudCkpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgaXRlbUlkRmllbGQ6IHN0cmluZyA9ICdpZCc7XHJcbiAgQElucHV0KCkgYnJlYWtwb2ludDogc3RyaW5nID0gXCIxNDAwcHhcIjtcclxuICBASW5wdXQoKSBkcmFnZHJvcDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgZmlsdGVyQnkhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaXRlbVRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSByZXNwb25zaXZlOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzb3VyY2UhOiBhbnlbXTtcclxuICBASW5wdXQoKSBzb3VyY2VIZWFkZXI6IHN0cmluZyA9ICdUw610dWxvIGRhIGxpc3RhIGRlIG9yaWdlbSc7XHJcbiAgQElucHV0KCkgc291cmNlU3R5bGUhOiBhbnk7XHJcbiAgQElucHV0KCkgc3RyaXBlZFJvd3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB0YXJnZXQhOiBhbnlbXTtcclxuICBASW5wdXQoKSB0YXJnZXRIZWFkZXI6IHN0cmluZyA9ICdUw610dWxvIGRlIGxpc3RhIGRlIGRlc3Rpbm8nO1xyXG4gIEBJbnB1dCgpIHRhcmdldFN0eWxlITogYW55O1xyXG4gIEBJbnB1dCgpIHNob3dTb3VyY2VDb250cm9sczogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd1RhcmdldENvbnRyb2xzOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93Q2hlY2tCb3g6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIG9uTW92ZVRvU291cmNlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25Nb3ZlVG9UYXJnZXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbk1vdmVBbGxUb1NvdXJjZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uTW92ZUFsbFRvVGFyZ2V0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25Tb3VyY2VTZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblRhcmdldFNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIHNlbGVjdGVkUHJldmlldyE6IGFueTtcclxuICBuZ01vZGVsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VsZWN0ZWRJdGVtczogeyBba2V5OiBudW1iZXJdOiBib29sZWFuIH0gPSB7fTtcclxuICB1bHRpbW9JdGVtU2VsZWNpb25hZG86IHsgaXRlbTogYW55LCBpbmRleDogbnVtYmVyIH1bXSA9IFtdO1xyXG4gIGxhc3REcmFnZ2VkSXRlbXM6IGFueVtdID0gW107XHJcbiAgZHJhZ2dlZElkczogbnVtYmVyW10gPSBbXTtcclxuXHJcbiAgbW91c2VYID0gMDtcclxuICBtb3VzZVkgPSAwO1xyXG4gIHByZXZpZXdDbG9uZXM6IEhUTUxFbGVtZW50W10gPSBbXTtcclxuXHJcbm5nT25Jbml0KCkge1xyXG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIChldmVudDogTW91c2VFdmVudCkgPT4ge1xyXG4gICAgdGhpcy5tb3VzZVggPSBldmVudC5jbGllbnRYO1xyXG4gICAgdGhpcy5tb3VzZVkgPSBldmVudC5jbGllbnRZO1xyXG4gIH0pO1xyXG59XHJcblxyXG5uZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgdGhpcy5jcmVhdGVEcm9wT3ZlcmxheSgpO1xyXG59XHJcblxyXG4gIGRyb3BPdmVybGF5ITogSFRNTERpdkVsZW1lbnQ7XHJcblxyXG4gIGNyZWF0ZURyb3BPdmVybGF5KCkge1xyXG4gICAgdGhpcy5kcm9wT3ZlcmxheSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgdGhpcy5kcm9wT3ZlcmxheS5pbm5lclRleHQgPSAnU29sdGFyJztcclxuICAgIHRoaXMuZHJvcE92ZXJsYXkuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xyXG4gICAgdGhpcy5kcm9wT3ZlcmxheS5zdHlsZS5iYWNrZ3JvdW5kID0gJyNCRkRCRkUnOyAvLyBBenVsIGNsYXJvIHZpc8OtdmVsXHJcbiAgICB0aGlzLmRyb3BPdmVybGF5LnN0eWxlLmNvbG9yID0gJyMxRTNBOEEnOyAvLyBBenVsIGVzY3VybyBwcm8gdGV4dG9cclxuICAgIHRoaXMuZHJvcE92ZXJsYXkuc3R5bGUuYm9yZGVyID0gJzlweCAjMUU0MEFGJzsgLy8gQm9yZGEgYXp1bCBlc2N1cm9cclxuICAgIHRoaXMuZHJvcE92ZXJsYXkuc3R5bGUuYm94U2hhZG93ID0gJzAgMnB4IDZweCByZ2JhKDMwLCA1OCwgMTM4LCAwLjIpJzsgLy8gU2hhZG93IHJlZHV6aWRhXHJcbiAgICB0aGlzLmRyb3BPdmVybGF5LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICB0aGlzLmRyb3BPdmVybGF5LnN0eWxlLmp1c3RpZnlDb250ZW50ID0gJ2NlbnRlcic7XHJcbiAgICB0aGlzLmRyb3BPdmVybGF5LnN0eWxlLmFsaWduSXRlbXMgPSAnY2VudGVyJztcclxuICAgIHRoaXMuZHJvcE92ZXJsYXkuc3R5bGUuekluZGV4ID0gJzk5OTknO1xyXG4gICAgdGhpcy5kcm9wT3ZlcmxheS5zdHlsZS5mb250U2l6ZSA9ICcxLjVyZW0nO1xyXG4gICAgdGhpcy5kcm9wT3ZlcmxheS5zdHlsZS5mb250V2VpZ2h0ID0gJ2JvbGQnO1xyXG4gICAgdGhpcy5kcm9wT3ZlcmxheS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ2FsbCc7XHJcbiAgICB0aGlzLmRyb3BPdmVybGF5LnN0eWxlLnRyYW5zaXRpb24gPSAnYWxsIDAuMnMgZWFzZSc7XHJcblxyXG5cclxuICAgIC8vIEVuY2FpeGFyIG5vIG1lc21vIGx1Z2FyIGRvIHRhcmdldFxyXG4gICAgY29uc3QgdGFyZ2V0TGlzdEVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnAtcGlja2xpc3QtdGFyZ2V0JykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAodGFyZ2V0TGlzdEVsKSB7XHJcbiAgICAgIGNvbnN0IHJlY3QgPSB0YXJnZXRMaXN0RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgIHRoaXMuZHJvcE92ZXJsYXkuc3R5bGUudG9wID0gcmVjdC50b3AgKyAncHgnO1xyXG4gICAgICB0aGlzLmRyb3BPdmVybGF5LnN0eWxlLmxlZnQgPSByZWN0LmxlZnQgKyAncHgnO1xyXG4gICAgICB0aGlzLmRyb3BPdmVybGF5LnN0eWxlLndpZHRoID0gcmVjdC53aWR0aCArICdweCc7XHJcbiAgICAgIHRoaXMuZHJvcE92ZXJsYXkuc3R5bGUuaGVpZ2h0ID0gcmVjdC5oZWlnaHQgKyAncHgnO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZHJvcE92ZXJsYXkuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkSW5Tb3VyY2UgPSB0aGlzLnNvdXJjZS5zb21lKGl0ZW0gPT4gdGhpcy5zZWxlY3RlZEl0ZW1zW2l0ZW1bdGhpcy5pdGVtSWRGaWVsZF1dKTtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRJblRhcmdldCA9IHRoaXMudGFyZ2V0LnNvbWUoaXRlbSA9PiB0aGlzLnNlbGVjdGVkSXRlbXNbaXRlbVt0aGlzLml0ZW1JZEZpZWxkXV0pO1xyXG4gICAgXHJcbiAgICAgIGlmIChzZWxlY3RlZEluU291cmNlKSB7XHJcbiAgICAgICAgdGhpcy5Pbk1vdmVUb1RhcmdldCh7fSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRJblRhcmdldCkge1xyXG4gICAgICAgIHRoaXMuT25Nb3ZlVG9Tb3VyY2Uoe30pO1xyXG4gICAgICB9XHJcbiAgICBcclxuICAgICAgdGhpcy5oaWRlRHJvcE92ZXJsYXkoKTtcclxuICAgIH0pO1xyXG4gICAgXHJcblxyXG4gICAgdGhpcy5kcm9wT3ZlcmxheS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgKCkgPT4ge1xyXG4gICAgICB0aGlzLmRyb3BPdmVybGF5LnN0eWxlLmJhY2tncm91bmQgPSAnIzkzQzVGRCc7IC8vIEF6dWwgdW0gcG91Y28gbWFpcyBlc2N1cm8gbm8gaG92ZXJcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kcm9wT3ZlcmxheS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgKCkgPT4ge1xyXG4gICAgICB0aGlzLmRyb3BPdmVybGF5LnN0eWxlLmJhY2tncm91bmQgPSAnI0JGREJGRSc7XHJcbiAgICB9KTtcclxuICAgIFxyXG5cclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5kcm9wT3ZlcmxheSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgaGFuZGxlTW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICB0aGlzLm1vdXNlWCA9IGV2ZW50LmNsaWVudFg7XHJcbiAgICB0aGlzLm1vdXNlWSA9IGV2ZW50LmNsaWVudFk7XHJcbiAgfVxyXG5cclxuICBjbGVhclByZXZpZXdDbG9uZXMoKSB7XHJcbiAgICB0aGlzLnByZXZpZXdDbG9uZXMuZm9yRWFjaChjbG9uZSA9PiBjbG9uZS5yZW1vdmUoKSk7XHJcbiAgICB0aGlzLnByZXZpZXdDbG9uZXMgPSBbXTtcclxuICB9XHJcbiAgXHJcbiAgT25Nb3ZlVG9Tb3VyY2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5jbGVhclByZXZpZXdDbG9uZXMoKTtcclxuICAgIHRoaXMucGlja2xpc3QubW92ZUxlZnQoKTtcclxuICAgIHRoaXMub25Nb3ZlVG9Tb3VyY2UuZW1pdChldmVudCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB7fTtcclxuICAgIHRoaXMuaGlkZURyb3BPdmVybGF5KClcclxuICAgIHRoaXMuY2xlYXJQcmV2aWV3Q2xvbmVzKCk7XHJcbiAgfVxyXG4gIFxyXG4gIE9uTW92ZVRvVGFyZ2V0KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuY2xlYXJQcmV2aWV3Q2xvbmVzKCk7XHJcbiAgICB0aGlzLnBpY2tsaXN0Lm1vdmVSaWdodCgpO1xyXG4gICAgdGhpcy5vbk1vdmVUb1RhcmdldC5lbWl0KGV2ZW50KTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHt9O1xyXG4gICAgdGhpcy5oaWRlRHJvcE92ZXJsYXkoKVxyXG4gICAgdGhpcy5jbGVhclByZXZpZXdDbG9uZXMoKTtcclxuICB9XHJcbiAgXHJcblxyXG4gIGdldFNlbGVjdGVkSXRlbXMoKTogYW55W10ge1xyXG4gICAgLy8gRmlsdHJhIG9zIGl0ZW5zIGRhIGxpc3RhIGRlIG9yaWdlbSAoc291cmNlKSBjb20gYmFzZSBub3MgaXRlbnMgc2VsZWNpb25hZG9zXHJcbiAgICByZXR1cm4gdGhpcy5zb3VyY2UuZmlsdGVyKGl0ZW0gPT4ge1xyXG4gICAgICBjb25zdCBpdGVtSWQgPSBpdGVtW3RoaXMuaXRlbUlkRmllbGRdOyAvLyBPYnTDqW0gbyBJRCBkbyBpdGVtXHJcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXNbaXRlbUlkXSA9PT0gdHJ1ZTsgLy8gVmVyaWZpY2Egc2UgZXN0w6EgbWFyY2FkbyBjb21vIHRydWVcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgT25Nb3ZlQWxsVG9Tb3VyY2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5vbk1vdmVUb1NvdXJjZS5lbWl0KGV2ZW50KTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHt9O1xyXG4gICAgdGhpcy5oaWRlRHJvcE92ZXJsYXkoKVxyXG4gICAgdGhpcy5jbGVhclByZXZpZXdDbG9uZXMoKTtcclxuICB9XHJcblxyXG4gIE9uTW92ZUFsbFRvVGFyZ2V0KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMub25Nb3ZlVG9UYXJnZXQuZW1pdChldmVudCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB7fTtcclxuICAgIHRoaXMuaGlkZURyb3BPdmVybGF5KClcclxuICAgIHRoaXMuY2xlYXJQcmV2aWV3Q2xvbmVzKCk7XHJcbiAgfVxyXG5cclxuICBPblNvdXJjZVNlbGVjdChldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5nZXRTZWxlY3RlZEl0ZW1zKCk7XHJcbiAgXHJcbiAgICAvLyBQcmltZWlybyByZW1vdmUgdG9kb3Mgb3MgcHJldmlld3MgYW50aWdvc1xyXG4gICAgdGhpcy5jbGVhclByZXZpZXdDbG9uZXMoKTtcclxuICBcclxuICAgIGlmIChzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmhpZGVEcm9wT3ZlcmxheSgpO1xyXG4gICAgICB0aGlzLm9uU291cmNlU2VsZWN0LmVtaXQoZXZlbnQpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgXHJcbiAgICBzZWxlY3RlZEl0ZW1zLmZvckVhY2goKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICBjb25zdCBpdGVtSWQgPSBpdGVtW3RoaXMuaXRlbUlkRmllbGRdO1xyXG4gIFxyXG4gICAgICAvLyBTZSBqw6EgZXhpc3RlIHVtIGNsb25lIHBhcmEgZXNzZSBpdGVtLCBuw6NvIGNyaWEgbm92YW1lbnRlXHJcbiAgICAgIGlmICghZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByZXZpZXdfJyArIGl0ZW1JZCkpIHtcclxuICAgICAgICBjb25zdCBvcmlnaW5hbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZF9waWNrX2xpc3QnICsgaXRlbUlkKTtcclxuICAgICAgICBpZiAob3JpZ2luYWwpIHtcclxuICAgICAgICAgIGNvbnN0IHJlY3QgPSBvcmlnaW5hbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICAgIGNvbnN0IGNsb25lID0gb3JpZ2luYWwuY2xvbmVOb2RlKHRydWUpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgICAgY2xvbmUuY2xhc3NMaXN0LmFkZCgnZHJhZy1wcmV2aWV3LWNsb25lJyk7XHJcbiAgICAgICAgICBjbG9uZS5jbGFzc0xpc3QuYWRkKGBsZXZlbC0ke2luZGV4ICsgMX1gKTtcclxuICAgICAgICAgIGNsb25lLmlkID0gJ3ByZXZpZXdfJyArIGl0ZW1JZDtcclxuICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY2xvbmUpO1xyXG4gICAgICAgICAgdGhpcy5wcmV2aWV3Q2xvbmVzLnB1c2goY2xvbmUpO1xyXG4gICAgICAgICAgdGhpcy5hbmltYXRlQ2xvbmVUb0N1cnNvcihjbG9uZSwgcmVjdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICBcclxuICAgIHRoaXMuc2hvd0Ryb3BPdmVybGF5KCk7XHJcbiAgICB0aGlzLm9uU291cmNlU2VsZWN0LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuICBcclxuICBnZXRJdGVtSWQoaXRlbTogYW55KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBpdGVtPy5bdGhpcy5pdGVtSWRGaWVsZF07XHJcbiAgfVxyXG4gIFxyXG5cclxuICBzaG93RHJvcE92ZXJsYXkoKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZEluU291cmNlID0gdGhpcy5zb3VyY2Uuc29tZShpdGVtID0+IHRoaXMuc2VsZWN0ZWRJdGVtc1tpdGVtW3RoaXMuaXRlbUlkRmllbGRdXSk7XHJcbiAgICBjb25zdCBzZWxlY3RlZEluVGFyZ2V0ID0gdGhpcy50YXJnZXQuc29tZShpdGVtID0+IHRoaXMuc2VsZWN0ZWRJdGVtc1tpdGVtW3RoaXMuaXRlbUlkRmllbGRdXSk7XHJcbiAgXHJcbiAgICBsZXQgdGFyZ2V0TGlzdEVsOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG4gIFxyXG4gICAgaWYgKHNlbGVjdGVkSW5Tb3VyY2UpIHtcclxuICAgICAgLy8gSXRlbnMgc2VsZWNpb25hZG9zIG5hIGxpc3RhIGRhIGVzcXVlcmRhIOKGkiBvdmVybGF5IG5vIGxhZG8gZGlyZWl0b1xyXG4gICAgICB0YXJnZXRMaXN0RWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucC1waWNrbGlzdC10YXJnZXQnKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgdGhpcy5kcm9wT3ZlcmxheS5pbm5lclRleHQgPSAnU29sdGFyIGFxdWkgcGFyYSBtb3Zlcic7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkSW5UYXJnZXQpIHtcclxuICAgICAgLy8gSXRlbnMgc2VsZWNpb25hZG9zIG5hIGxpc3RhIGRhIGRpcmVpdGEg4oaSIG92ZXJsYXkgbm8gbGFkbyBlc3F1ZXJkb1xyXG4gICAgICB0YXJnZXRMaXN0RWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucC1waWNrbGlzdC1zb3VyY2UnKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgdGhpcy5kcm9wT3ZlcmxheS5pbm5lclRleHQgPSAnU29sdGFyIGFxdWkgcGFyYSByZXRvcm5hcic7XHJcbiAgICB9XHJcbiAgXHJcbiAgICBpZiAodGFyZ2V0TGlzdEVsKSB7XHJcbiAgICAgIGNvbnN0IHJlY3QgPSB0YXJnZXRMaXN0RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgIHRoaXMuZHJvcE92ZXJsYXkuc3R5bGUudG9wID0gcmVjdC50b3AgKyAncHgnO1xyXG4gICAgICB0aGlzLmRyb3BPdmVybGF5LnN0eWxlLmxlZnQgPSByZWN0LmxlZnQgKyAncHgnO1xyXG4gICAgICB0aGlzLmRyb3BPdmVybGF5LnN0eWxlLndpZHRoID0gcmVjdC53aWR0aCArICdweCc7XHJcbiAgICAgIHRoaXMuZHJvcE92ZXJsYXkuc3R5bGUuaGVpZ2h0ID0gcmVjdC5oZWlnaHQgKyAncHgnO1xyXG4gICAgICB0aGlzLmRyb3BPdmVybGF5LnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIFxyXG4gIGhpZGVEcm9wT3ZlcmxheSgpIHtcclxuICAgIGlmICh0aGlzLmRyb3BPdmVybGF5KSB7XHJcbiAgICAgIHRoaXMuZHJvcE92ZXJsYXkuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgXHJcbiAgYW5pbWF0ZUNsb25lVG9DdXJzb3IoY2xvbmU6IEhUTUxFbGVtZW50LCBvcmlnaW5SZWN0OiBET01SZWN0KSB7XHJcbiAgICAvLyBDb21lw6dhIGV4YXRhbWVudGUgZGEgcG9zacOnw6NvIGRvIG9yaWdpbmFsXHJcbiAgICBsZXQgcG9zWCA9IG9yaWdpblJlY3QubGVmdDtcclxuICAgIGxldCBwb3NZID0gb3JpZ2luUmVjdC50b3A7XHJcbiAgXHJcbiAgICBjbG9uZS5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7XHJcbiAgICBjbG9uZS5zdHlsZS5sZWZ0ID0gYCR7cG9zWH1weGA7XHJcbiAgICBjbG9uZS5zdHlsZS50b3AgPSBgJHtwb3NZfXB4YDtcclxuICAgIGNsb25lLnN0eWxlLndpZHRoID0gYCR7b3JpZ2luUmVjdC53aWR0aH1weGA7XHJcbiAgICBjbG9uZS5zdHlsZS5oZWlnaHQgPSBgJHtvcmlnaW5SZWN0LmhlaWdodH1weGA7XHJcbiAgICBjbG9uZS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xyXG4gIFxyXG4gICAgY29uc3QgYW5pbWF0ZSA9ICgpID0+IHtcclxuICAgICAgY29uc3QgZHggPSB0aGlzLm1vdXNlWCAtIHBvc1g7XHJcbiAgICAgIGNvbnN0IGR5ID0gdGhpcy5tb3VzZVkgLSBwb3NZO1xyXG4gIFxyXG4gICAgICBwb3NYICs9IGR4ICogMC4xNTtcclxuICAgICAgcG9zWSArPSBkeSAqIDAuMTU7XHJcbiAgXHJcbiAgICAgIGNsb25lLnN0eWxlLmxlZnQgPSBgJHtwb3NYfXB4YDtcclxuICAgICAgY2xvbmUuc3R5bGUudG9wID0gYCR7cG9zWX1weGA7XHJcbiAgXHJcbiAgICAgIGlmIChkb2N1bWVudC5ib2R5LmNvbnRhaW5zKGNsb25lKSkge1xyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICBcclxuICAgIGFuaW1hdGUoKTtcclxuICB9XHJcbiAgXHJcbiAgXHJcblxyXG4gIE9uVGFyZ2V0U2VsZWN0KGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLnRhcmdldC5maWx0ZXIoaXRlbSA9PiB7XHJcbiAgICAgIGNvbnN0IGl0ZW1JZCA9IGl0ZW1bdGhpcy5pdGVtSWRGaWVsZF07XHJcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXNbaXRlbUlkXSA9PT0gdHJ1ZTtcclxuICAgIH0pO1xyXG4gIFxyXG4gICAgLy8gTGltcGEgY2xvbmVzIGFudGlnb3NcclxuICAgIHRoaXMuY2xlYXJQcmV2aWV3Q2xvbmVzKCk7XHJcbiAgXHJcbiAgICBpZiAoc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5oaWRlRHJvcE92ZXJsYXkoKTtcclxuICAgICAgdGhpcy5vblRhcmdldFNlbGVjdC5lbWl0KGV2ZW50KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgY29uc3QgaXRlbUlkID0gaXRlbVt0aGlzLml0ZW1JZEZpZWxkXTtcclxuICBcclxuICAgICAgaWYgKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJldmlld18nICsgaXRlbUlkKSkge1xyXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lkX3BpY2tfbGlzdCcgKyBpdGVtSWQpO1xyXG4gICAgICAgIGlmIChvcmlnaW5hbCkge1xyXG4gICAgICAgICAgY29uc3QgcmVjdCA9IG9yaWdpbmFsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgICAgY29uc3QgY2xvbmUgPSBvcmlnaW5hbC5jbG9uZU5vZGUodHJ1ZSkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgICBjbG9uZS5jbGFzc0xpc3QuYWRkKCdkcmFnLXByZXZpZXctY2xvbmUnKTtcclxuICAgICAgICAgIGNsb25lLmNsYXNzTGlzdC5hZGQoYGxldmVsLSR7aW5kZXggKyAxfWApO1xyXG4gICAgICAgICAgY2xvbmUuaWQgPSAncHJldmlld18nICsgaXRlbUlkO1xyXG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjbG9uZSk7XHJcbiAgICAgICAgICB0aGlzLnByZXZpZXdDbG9uZXMucHVzaChjbG9uZSk7XHJcbiAgICAgICAgICB0aGlzLmFuaW1hdGVDbG9uZVRvQ3Vyc29yKGNsb25lLCByZWN0KTsgXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICBcclxuICAgIHRoaXMuc2hvd0Ryb3BPdmVybGF5KCk7XHJcbiAgICB0aGlzLm9uVGFyZ2V0U2VsZWN0LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuICBcclxuXHJcbiAgb25TZWxlY3RBbGwoKSB7XHJcbiAgICB0aGlzLnNlbGVjdEFsbEl0ZW1zKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0QWxsSXRlbXMoaXNTZWxlY3RlZDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zb3VyY2UuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgY29uc3QgaXRlbUlkID0gaXRlbVt0aGlzLml0ZW1JZEZpZWxkXTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zW2l0ZW1JZF0gPSBpc1NlbGVjdGVkO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy50YXJnZXQuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgY29uc3QgaXRlbUlkID0gaXRlbVt0aGlzLml0ZW1JZEZpZWxkXTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zW2l0ZW1JZF0gPSBpc1NlbGVjdGVkO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmIChldmVudC5jdHJsS2V5ICYmIGV2ZW50LmtleSA9PT0gJ2EnKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMub25TZWxlY3RBbGwoKTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XHJcbiAgXHJcbiAgICAgIGNvbnN0IHNvdXJjZVNlbGVjdGVkID0gdGhpcy5waWNrbGlzdC5zZWxlY3RlZEl0ZW1zU291cmNlO1xyXG4gIFxyXG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zSWRzID0gT2JqZWN0LmVudHJpZXModGhpcy5zZWxlY3RlZEl0ZW1zKVxyXG4gICAgICAgIC5maWx0ZXIoKFtfLCB2YWx1ZV0pID0+IHZhbHVlID09PSB0cnVlKVxyXG4gICAgICAgIC5tYXAoKFtrZXksIF9dKSA9PiBOdW1iZXIoa2V5KSk7XHJcbiAgXHJcbiAgICAgIGNvbnN0IG5vdEluU2VsZWN0ZWQgPSBzb3VyY2VTZWxlY3RlZC5maW5kKFxyXG4gICAgICAgIChpdGVtOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSA9PlxyXG4gICAgICAgICAgIXNlbGVjdGVkSXRlbXNJZHMuaW5jbHVkZXMoaXRlbVt0aGlzLml0ZW1JZEZpZWxkXSlcclxuICAgICAgKTtcclxuICBcclxuICAgICAgY29uc3QgaW5kZXhJblNvdXJjZSA9IHRoaXMuc291cmNlLmZpbmRJbmRleChcclxuICAgICAgICAoaXRlbTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkgPT5cclxuICAgICAgICAgIGl0ZW1bdGhpcy5pdGVtSWRGaWVsZF0gPT09IG5vdEluU2VsZWN0ZWQ/Llt0aGlzLml0ZW1JZEZpZWxkXVxyXG4gICAgICApO1xyXG4gIFxyXG4gICAgICBjb25zdCB1bHRpbW9JdGVtQXJyYXkgPSB7XHJcbiAgICAgICAgaXRlbTogbm90SW5TZWxlY3RlZCxcclxuICAgICAgICBpbmRleDogaW5kZXhJblNvdXJjZSxcclxuICAgICAgfTtcclxuICBcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleEluU291cmNlID0gdGhpcy5zb3VyY2UuZmluZEluZGV4KChzb3VyY2VJdGVtOiBhbnkpID0+XHJcbiAgICAgICAgc2VsZWN0ZWRJdGVtc0lkcy5pbmNsdWRlcyhzb3VyY2VJdGVtW3RoaXMuaXRlbUlkRmllbGRdKVxyXG4gICAgICApO1xyXG4gIFxyXG4gICAgICBpZiAobm90SW5TZWxlY3RlZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgY29uc3QgYmVmb3JlSWRzID0gdGhpcy51bHRpbW9JdGVtU2VsZWNpb25hZG8ubWFwKGkgPT4gaS5pdGVtW3RoaXMuaXRlbUlkRmllbGRdKTtcclxuICAgICAgICBjb25zdCBhZnRlcklkcyA9IHRoaXMucGlja2xpc3Quc2VsZWN0ZWRJdGVtc1NvdXJjZS5tYXAoaSA9PiBpW3RoaXMuaXRlbUlkRmllbGRdKTtcclxuICAgICAgXHJcbiAgICAgICAgY29uc3QgcmVtb3ZlZElkID0gYmVmb3JlSWRzLmZpbmQoaWQgPT4gIWFmdGVySWRzLmluY2x1ZGVzKGlkKSk7XHJcbiAgICAgIFxyXG4gICAgICBcclxuICAgICAgICBpZiAocmVtb3ZlZElkICE9IG51bGwpIHtcclxuICAgICAgICAgIGNvbnN0IHJlbW92ZWRJdGVtID0gdGhpcy5zb3VyY2UuZmluZChpdGVtID0+IGl0ZW1bdGhpcy5pdGVtSWRGaWVsZF0gPT09IHJlbW92ZWRJZCk7XHJcbiAgICAgICAgICBpZiAocmVtb3ZlZEl0ZW0pIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RDaGVja0JveChyZW1vdmVkSXRlbSk7XHJcbiAgICAgICAgICAgIHRoaXMudWx0aW1vSXRlbVNlbGVjaW9uYWRvID0gdGhpcy51bHRpbW9JdGVtU2VsZWNpb25hZG8uZmlsdGVyKFxyXG4gICAgICAgICAgICAgIChpKSA9PiBpLml0ZW1bdGhpcy5pdGVtSWRGaWVsZF0gIT09IHJlbW92ZWRJZFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBlbnRlcklkcyA9IHRoaXMudWx0aW1vSXRlbVNlbGVjaW9uYWRvLm1hcChpID0+IGkuaXRlbVt0aGlzLml0ZW1JZEZpZWxkXSk7XHJcblxyXG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtc0lkcyA9IE9iamVjdC5lbnRyaWVzKHRoaXMuc2VsZWN0ZWRJdGVtcylcclxuICAgICAgICAgICAgLmZpbHRlcigoW18sIHZhbHVlXSkgPT4gdmFsdWUgPT09IHRydWUpXHJcbiAgICAgICAgICAgIC5tYXAoKFtrZXksIF9dKSA9PiBOdW1iZXIoa2V5KSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGNvbnN0IGNsaWNrZWRJZHMgPSBzZWxlY3RlZEl0ZW1zSWRzLmZpbHRlcihpZCA9PiAhZW50ZXJJZHMuaW5jbHVkZXMoaWQpKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYgKGNsaWNrZWRJZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBjbGlja2VkSXRlbSA9IHRoaXMuc291cmNlLmZpbmQoaXRlbSA9PiBpdGVtW3RoaXMuaXRlbUlkRmllbGRdID09PSBjbGlja2VkSWRzWzBdKTtcclxuICAgICAgICAgICAgaWYgKGNsaWNrZWRJdGVtKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RDaGVja0JveChjbGlja2VkSXRlbSk7XHJcbiAgICAgICAgICAgICAgdGhpcy51bHRpbW9JdGVtU2VsZWNpb25hZG8gPSB0aGlzLnVsdGltb0l0ZW1TZWxlY2lvbmFkby5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAoaSkgPT4gaS5pdGVtW3RoaXMuaXRlbUlkRmllbGRdICE9PSBjbGlja2VkSWRzWzBdXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICBcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIFxyXG4gIFxyXG4gICAgICB0aGlzLnNlbGVjdENoZWNrQm94KG5vdEluU2VsZWN0ZWQpO1xyXG4gIFxyXG4gICAgICB0aGlzLnVsdGltb0l0ZW1TZWxlY2lvbmFkbyA9IHRoaXMudWx0aW1vSXRlbVNlbGVjaW9uYWRvLmZpbHRlcihcclxuICAgICAgICAoaXRlbSkgPT4gaXRlbS5pbmRleCAhPT0gaW5kZXhJblNvdXJjZVxyXG4gICAgICApO1xyXG4gIFxyXG4gICAgICB0aGlzLnVsdGltb0l0ZW1TZWxlY2lvbmFkby5wdXNoKHVsdGltb0l0ZW1BcnJheSk7XHJcbiAgXHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG5cclxuICBzZWxlY3RDaGVja0JveChpdGVtOiBhbnkpIHtcclxuICAgIGNvbnN0IGl0ZW1JZCA9IGl0ZW1bdGhpcy5pdGVtSWRGaWVsZF07XHJcblxyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRQcmV2aWV3ID0gaXRlbTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXNbaXRlbUlkXSA9IHRoaXMuc2VsZWN0ZWRJdGVtc1tpdGVtSWRdICE9PSB1bmRlZmluZWRcclxuICAgICAgPyAhdGhpcy5zZWxlY3RlZEl0ZW1zW2l0ZW1JZF1cclxuICAgICAgOiB0cnVlO1xyXG5cclxuXHJcbiAgICB0aGlzLm5nTW9kZWwgPSB0aGlzLnNlbGVjdGVkSXRlbXNbaXRlbUlkXTtcclxuXHJcbiAgfVxyXG5cclxuICBpc0l0ZW1TZWxlY3RlZChpdGVtOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkUHJldmlldyA9PT0gaXRlbTtcclxuICB9XHJcbn1cclxuIiwiPHAtcGlja0xpc3RcclxuICBbc291cmNlXT1cInNvdXJjZVwiXHJcbiAgW3NvdXJjZUhlYWRlcl09XCJzb3VyY2VIZWFkZXJcIlxyXG4gIFtzb3VyY2VTdHlsZV09XCJzb3VyY2VTdHlsZVwiXHJcbiAgW3RhcmdldF09XCJ0YXJnZXRcIiBcclxuICBbdGFyZ2V0SGVhZGVyXT1cInRhcmdldEhlYWRlclwiXHJcbiAgW3RhcmdldFN0eWxlXT1cInRhcmdldFN0eWxlXCJcclxuICBbZHJhZ2Ryb3BdPVwiZHJhZ2Ryb3BcIlxyXG4gIFtyZXNwb25zaXZlXT1cInJlc3BvbnNpdmVcIlxyXG4gIFtmaWx0ZXJCeV09XCJmaWx0ZXJCeVwiXHJcbiAgW2JyZWFrcG9pbnRdPVwiYnJlYWtwb2ludFwiXHJcbiAgW3N0cmlwZWRSb3dzXT1cInN0cmlwZWRSb3dzXCJcclxuICBbc2hvd1NvdXJjZUNvbnRyb2xzXT1cInNob3dTb3VyY2VDb250cm9sc1wiXHJcbiAgW3Nob3dUYXJnZXRDb250cm9sc109XCJzaG93VGFyZ2V0Q29udHJvbHNcIlxyXG4gIChvbk1vdmVUb1NvdXJjZSk9XCJPbk1vdmVUb1NvdXJjZSgkZXZlbnQpXCJcclxuICAob25Nb3ZlVG9UYXJnZXQpPVwiT25Nb3ZlVG9UYXJnZXQoJGV2ZW50KVwiXHJcbiAgKG9uTW92ZUFsbFRvU291cmNlKT1cIk9uTW92ZUFsbFRvU291cmNlKCRldmVudClcIlxyXG4gIChvbk1vdmVBbGxUb1RhcmdldCk9XCJPbk1vdmVBbGxUb1RhcmdldCgkZXZlbnQpXCJcclxuICAob25Tb3VyY2VTZWxlY3QpPVwiT25Tb3VyY2VTZWxlY3QoJGV2ZW50KVwiXHJcbiAgKG9uVGFyZ2V0U2VsZWN0KT1cIk9uVGFyZ2V0U2VsZWN0KCRldmVudClcIlxyXG4+XHJcbiAgPG5nLXRlbXBsYXRlICBsZXQtaXRlbSBwVGVtcGxhdGU9XCJpdGVtXCIgKm5nSWY9XCJpdGVtVGVtcGxhdGVcIiA+XHJcbiAgICAgIDxkaXYgKGNsaWNrKT1cInNlbGVjdENoZWNrQm94KGl0ZW0pXCIgY2xhc3M9XCJmbGV4IG1yLTVcIiBbaWRdPVwiJ2lkX3BpY2tfbGlzdCcgKyBnZXRJdGVtSWQoaXRlbSlcIlxyXG4gICAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIj5cclxuICAgICAgICBAaWYoc2hvd0NoZWNrQm94KSB7XHJcbiAgICAgICAgICAgIDxrdi1jaGVjayAob25DaGVja0NoYW5nZSk9XCJzZWxlY3RDaGVja0JveChpdGVtKVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRJdGVtc1tpdGVtW2l0ZW1JZEZpZWxkXV1cIiBjbGFzcz1cIm1yLTFcIj48L2t2LWNoZWNrPlxyXG4gICAgICAgIH1cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PiBcclxuICA8L25nLXRlbXBsYXRlPlxyXG48L3AtcGlja0xpc3Q+XHJcbiJdfQ==
@@ -0,0 +1,39 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
3
+ import { NgModule } from "@angular/core";
4
+ import { KvPickListComponent } from './kv-pick-list.component';
5
+ import { PrimeNgModule } from '../../api/modules/primeng.module';
6
+ import { KvInputsModule } from "../kv-inputs/kv-inputs.module";
7
+ import * as i0 from "@angular/core";
8
+ export class KvPickListModule {
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvPickListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.8", ngImport: i0, type: KvPickListModule, declarations: [KvPickListComponent], imports: [CommonModule,
11
+ PrimeNgModule,
12
+ FormsModule,
13
+ KvInputsModule,
14
+ ReactiveFormsModule], exports: [KvPickListComponent] }); }
15
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvPickListModule, imports: [CommonModule,
16
+ PrimeNgModule,
17
+ FormsModule,
18
+ KvInputsModule,
19
+ ReactiveFormsModule] }); }
20
+ }
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvPickListModule, decorators: [{
22
+ type: NgModule,
23
+ args: [{
24
+ declarations: [
25
+ KvPickListComponent
26
+ ],
27
+ imports: [
28
+ CommonModule,
29
+ PrimeNgModule,
30
+ FormsModule,
31
+ KvInputsModule,
32
+ ReactiveFormsModule
33
+ ],
34
+ exports: [
35
+ KvPickListComponent
36
+ ]
37
+ }]
38
+ }] });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtcGljay1saXN0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LXBpY2stbGlzdC9rdi1waWNrLWxpc3QubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQWlCL0QsTUFBTSxPQUFPLGdCQUFnQjs4R0FBaEIsZ0JBQWdCOytHQUFoQixnQkFBZ0IsaUJBYnpCLG1CQUFtQixhQUduQixZQUFZO1lBQ1osYUFBYTtZQUNiLFdBQVc7WUFDWCxjQUFjO1lBQ2QsbUJBQW1CLGFBR25CLG1CQUFtQjsrR0FHVixnQkFBZ0IsWUFWekIsWUFBWTtZQUNaLGFBQWE7WUFDYixXQUFXO1lBQ1gsY0FBYztZQUNkLG1CQUFtQjs7MkZBTVYsZ0JBQWdCO2tCQWY1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixtQkFBbUI7cUJBQ3BCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsV0FBVzt3QkFDWCxjQUFjO3dCQUNkLG1CQUFtQjtxQkFDdEI7b0JBQ0MsT0FBTyxFQUFFO3dCQUNQLG1CQUFtQjtxQkFDcEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuaW1wb3J0IHsgS3ZQaWNrTGlzdENvbXBvbmVudCB9IGZyb20gJy4va3YtcGljay1saXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFByaW1lTmdNb2R1bGUgfSBmcm9tICcuLi8uLi9hcGkvbW9kdWxlcy9wcmltZW5nLm1vZHVsZSc7XHJcbmltcG9ydCB7IEt2SW5wdXRzTW9kdWxlIH0gZnJvbSBcIi4uL2t2LWlucHV0cy9rdi1pbnB1dHMubW9kdWxlXCI7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgS3ZQaWNrTGlzdENvbXBvbmVudFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgUHJpbWVOZ01vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgS3ZJbnB1dHNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlXHJcbl0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgS3ZQaWNrTGlzdENvbXBvbmVudFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEt2UGlja0xpc3RNb2R1bGUgeyB9XHJcbiJdfQ==
@@ -0,0 +1,58 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class ProgressBarComponent {
5
+ constructor() {
6
+ /**
7
+ * Whether to display the progress bar value.
8
+ * @group Props
9
+ */
10
+ this.showValue = true;
11
+ /**
12
+ * Whether to display the progress bar value.
13
+ * @group Props
14
+ */
15
+ this.showLabel = true;
16
+ /**
17
+ * Unit sign appended to the value.
18
+ * @group Props
19
+ */
20
+ this.unit = '%';
21
+ /**
22
+ * Defines the mode of the progress
23
+ * @group Props
24
+ */
25
+ this.mode = 'determinate';
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: ProgressBarComponent, selector: "kv-progress-bar", inputs: { value: "value", maxValue: "maxValue", label: "label", showValue: "showValue", showLabel: "showLabel", styleClass: "styleClass", labelStyleClass: "labelStyleClass", barStyleClass: "barStyleClass", style: "style", unit: "unit", mode: "mode", color: "color" }, ngImport: i0, template: "<div\r\n role=\"progressbar\"\r\n [class]=\"styleClass ? styleClass : ''\"\r\n [ngStyle]=\"style\"\r\n [attr.aria-valuemin]=\"0\"\r\n [attr.aria-valuenow]=\"value\"\r\n [attr.aria-valuemax]=\"100\"\r\n [attr.data-pc-name]=\"'progressbar'\"\r\n [attr.data-pc-section]=\"'root'\"\r\n [ngClass]=\"{'p-progressbar p-component': true, 'p-progressbar-determinate': mode === 'determinate', 'p-progressbar-indeterminate': mode === 'indeterminate'}\"\r\n>\r\n @if(mode === 'determinate') {\r\n <div class=\"p-progressbar-value p-progressbar-value-animate {{ barStyleClass }} font-semibold\"\r\n [style.width]=\"maxValue && value ? (value / maxValue) * 100 + '%' : value + '%'\"\r\n [attr.data-pc-section]=\"'value'\"\r\n ></div>\r\n\r\n <div\r\n class=\"p-progressbar-label {{ labelStyleClass }} w-full\"\r\n [attr.data-pc-section]=\"'label'\"\r\n >\r\n <label *ngIf=\"showValue && maxValue\">{{ value }}/{{ maxValue }}</label>\r\n <label *ngIf=\"showValue && !maxValue\">{{ value }}%</label>\r\n <label *ngIf=\"showLabel\">{{ label }}</label>\r\n </div>\r\n } @if(mode === 'indeterminate') {\r\n <div\r\n class=\"p-progressbar-indeterminate-container\"\r\n [attr.data-pc-section]=\"'container'\"\r\n >\r\n <div\r\n class=\"p-progressbar-value p-progressbar-value-animate\"\r\n [style.background]=\"color\"\r\n [attr.data-pc-section]=\"'value'\"\r\n ></div>\r\n </div>\r\n }\r\n</div>\r\n", styles: ["@layer primeng{.p-progressbar{background-color:#adadad!important;position:relative;overflow:hidden;height:.875rem}.p-progressbar-determinate .p-progressbar-value{height:100%;width:0%;position:absolute;display:none;border:0 none;display:flex;align-items:center;justify-content:center;overflow:hidden}.p-progressbar-determinate .p-progressbar-label{font-size:.75rem;color:#fff!important;font-weight:400;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;justify-content:center;align-items:center}.p-progressbar-determinate .p-progressbar-value-animate{background-color:#004172!important;transition:width 1s ease-in-out}.p-progressbar-indeterminate .p-progressbar-value:before{background-color:#004172!important;content:\"\";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right;-webkit-animation:p-progressbar-indeterminate-anim 2.1s cubic-bezier(.65,.815,.735,.395) infinite;animation:p-progressbar-indeterminate-anim 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.p-progressbar-indeterminate .p-progressbar-value:after{background-color:#004172!important;content:\"\";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right;-webkit-animation:p-progressbar-indeterminate-anim-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;animation:p-progressbar-indeterminate-anim-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;-webkit-animation-delay:1.15s;animation-delay:1.15s}}@-webkit-keyframes p-progressbar-indeterminate-anim{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@keyframes p-progressbar-indeterminate-anim{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@-webkit-keyframes p-progressbar-indeterminate-anim-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}@keyframes p-progressbar-indeterminate-anim-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ProgressBarComponent, decorators: [{
31
+ type: Component,
32
+ args: [{ selector: 'kv-progress-bar', template: "<div\r\n role=\"progressbar\"\r\n [class]=\"styleClass ? styleClass : ''\"\r\n [ngStyle]=\"style\"\r\n [attr.aria-valuemin]=\"0\"\r\n [attr.aria-valuenow]=\"value\"\r\n [attr.aria-valuemax]=\"100\"\r\n [attr.data-pc-name]=\"'progressbar'\"\r\n [attr.data-pc-section]=\"'root'\"\r\n [ngClass]=\"{'p-progressbar p-component': true, 'p-progressbar-determinate': mode === 'determinate', 'p-progressbar-indeterminate': mode === 'indeterminate'}\"\r\n>\r\n @if(mode === 'determinate') {\r\n <div class=\"p-progressbar-value p-progressbar-value-animate {{ barStyleClass }} font-semibold\"\r\n [style.width]=\"maxValue && value ? (value / maxValue) * 100 + '%' : value + '%'\"\r\n [attr.data-pc-section]=\"'value'\"\r\n ></div>\r\n\r\n <div\r\n class=\"p-progressbar-label {{ labelStyleClass }} w-full\"\r\n [attr.data-pc-section]=\"'label'\"\r\n >\r\n <label *ngIf=\"showValue && maxValue\">{{ value }}/{{ maxValue }}</label>\r\n <label *ngIf=\"showValue && !maxValue\">{{ value }}%</label>\r\n <label *ngIf=\"showLabel\">{{ label }}</label>\r\n </div>\r\n } @if(mode === 'indeterminate') {\r\n <div\r\n class=\"p-progressbar-indeterminate-container\"\r\n [attr.data-pc-section]=\"'container'\"\r\n >\r\n <div\r\n class=\"p-progressbar-value p-progressbar-value-animate\"\r\n [style.background]=\"color\"\r\n [attr.data-pc-section]=\"'value'\"\r\n ></div>\r\n </div>\r\n }\r\n</div>\r\n", styles: ["@layer primeng{.p-progressbar{background-color:#adadad!important;position:relative;overflow:hidden;height:.875rem}.p-progressbar-determinate .p-progressbar-value{height:100%;width:0%;position:absolute;display:none;border:0 none;display:flex;align-items:center;justify-content:center;overflow:hidden}.p-progressbar-determinate .p-progressbar-label{font-size:.75rem;color:#fff!important;font-weight:400;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;justify-content:center;align-items:center}.p-progressbar-determinate .p-progressbar-value-animate{background-color:#004172!important;transition:width 1s ease-in-out}.p-progressbar-indeterminate .p-progressbar-value:before{background-color:#004172!important;content:\"\";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right;-webkit-animation:p-progressbar-indeterminate-anim 2.1s cubic-bezier(.65,.815,.735,.395) infinite;animation:p-progressbar-indeterminate-anim 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.p-progressbar-indeterminate .p-progressbar-value:after{background-color:#004172!important;content:\"\";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right;-webkit-animation:p-progressbar-indeterminate-anim-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;animation:p-progressbar-indeterminate-anim-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;-webkit-animation-delay:1.15s;animation-delay:1.15s}}@-webkit-keyframes p-progressbar-indeterminate-anim{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@keyframes p-progressbar-indeterminate-anim{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@-webkit-keyframes p-progressbar-indeterminate-anim-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}@keyframes p-progressbar-indeterminate-anim-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}\n"] }]
33
+ }], propDecorators: { value: [{
34
+ type: Input
35
+ }], maxValue: [{
36
+ type: Input
37
+ }], label: [{
38
+ type: Input
39
+ }], showValue: [{
40
+ type: Input
41
+ }], showLabel: [{
42
+ type: Input
43
+ }], styleClass: [{
44
+ type: Input
45
+ }], labelStyleClass: [{
46
+ type: Input
47
+ }], barStyleClass: [{
48
+ type: Input
49
+ }], style: [{
50
+ type: Input
51
+ }], unit: [{
52
+ type: Input
53
+ }], mode: [{
54
+ type: Input
55
+ }], color: [{
56
+ type: Input
57
+ }] } });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LXByb2dyZXNzLWJhci9rdi1wcm9ncmVzcy1iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtcHJvZ3Jlc3MtYmFyL2t2LXByb2dyZXNzLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBT2pELE1BQU0sT0FBTyxvQkFBb0I7SUFMakM7UUF3QkU7OztXQUdHO1FBQ00sY0FBUyxHQUFZLElBQUksQ0FBQztRQUNuQzs7O1dBR0c7UUFDTSxjQUFTLEdBQVksSUFBSSxDQUFDO1FBd0JuQzs7O1dBR0c7UUFDTSxTQUFJLEdBQVcsR0FBRyxDQUFDO1FBQzVCOzs7V0FHRztRQUNNLFNBQUksR0FBb0MsYUFBYSxDQUFDO0tBTWhFOzhHQW5FWSxvQkFBb0I7a0dBQXBCLG9CQUFvQixtVUNQakMseTZDQXNDQTs7MkZEL0JhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxpQkFBaUI7OEJBU2xCLEtBQUs7c0JBQWIsS0FBSztnQkFNRyxRQUFRO3NCQUFoQixLQUFLO2dCQU1HLEtBQUs7c0JBQWIsS0FBSztnQkFNRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0csVUFBVTtzQkFBbEIsS0FBSztnQkFNRyxlQUFlO3NCQUF2QixLQUFLO2dCQU1HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBTUcsS0FBSztzQkFBYixLQUFLO2dCQUtHLElBQUk7c0JBQVosS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdrdi1wcm9ncmVzcy1iYXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9rdi1wcm9ncmVzcy1iYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2t2LXByb2dyZXNzLWJhci5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3NCYXJDb21wb25lbnQge1xyXG4gIC8qKlxyXG4gICAqIEN1cnJlbnQgdmFsdWUgb2YgdGhlIHByb2dyZXNzLlxyXG4gICAqIEBncm91cCBQcm9wc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1heCB2YWx1ZSBvZiB0aGUgcHJvZ3Jlc3MuXHJcbiAgICogQGdyb3VwIFByb3BzXHJcbiAgICovXHJcbiAgQElucHV0KCkgbWF4VmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLyoqXHJcbiAgICogTGFiZWwgdmFsdWUgb2YgdGhlIHByb2dyZXNzLlxyXG4gICAqIEBncm91cCBQcm9wc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdG8gZGlzcGxheSB0aGUgcHJvZ3Jlc3MgYmFyIHZhbHVlLlxyXG4gICAqIEBncm91cCBQcm9wc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNob3dWYWx1ZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0byBkaXNwbGF5IHRoZSBwcm9ncmVzcyBiYXIgdmFsdWUuXHJcbiAgICogQGdyb3VwIFByb3BzXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2hvd0xhYmVsOiBib29sZWFuID0gdHJ1ZTtcclxuICAvKipcclxuICAgKiBDbGFzcyBvZiB0aGUgZWxlbWVudC5cclxuICAgKiBAZ3JvdXAgUHJvcHNcclxuICAgKi9cclxuICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIENsYXNzIG9mIHRoZSBlbGVtZW50LlxyXG4gICAqIEBncm91cCBQcm9wc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGxhYmVsU3R5bGVDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBDbGFzcyBvZiB0aGUgZWxlbWVudC5cclxuICAgKiBAZ3JvdXAgUHJvcHNcclxuICAgKi9cclxuICBASW5wdXQoKSBiYXJTdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIElubGluZSBzdHlsZSBvZiB0aGUgZWxlbWVudC5cclxuICAgKiBAZ3JvdXAgUHJvcHNcclxuICAgKi9cclxuICBASW5wdXQoKSBzdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuICAvKipcclxuICAgKiBVbml0IHNpZ24gYXBwZW5kZWQgdG8gdGhlIHZhbHVlLlxyXG4gICAqIEBncm91cCBQcm9wc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHVuaXQ6IHN0cmluZyA9ICclJztcclxuICAvKipcclxuICAgKiBEZWZpbmVzIHRoZSBtb2RlIG9mIHRoZSBwcm9ncmVzc1xyXG4gICAqIEBncm91cCBQcm9wc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG1vZGU6ICdkZXRlcm1pbmF0ZScgfCAnaW5kZXRlcm1pbmF0ZScgPSAnZGV0ZXJtaW5hdGUnO1xyXG4gIC8qKlxyXG4gICAqIENvbG9yIGZvciB0aGUgYmFja2dyb3VuZCBvZiB0aGUgcHJvZ3Jlc3MuXHJcbiAgICogQGdyb3VwIFByb3BzXHJcbiAgICovXHJcbiAgQElucHV0KCkgY29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxufVxyXG4iLCI8ZGl2XHJcbiAgcm9sZT1cInByb2dyZXNzYmFyXCJcclxuICBbY2xhc3NdPVwic3R5bGVDbGFzcyA/IHN0eWxlQ2xhc3MgOiAnJ1wiXHJcbiAgW25nU3R5bGVdPVwic3R5bGVcIlxyXG4gIFthdHRyLmFyaWEtdmFsdWVtaW5dPVwiMFwiXHJcbiAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJ2YWx1ZVwiXHJcbiAgW2F0dHIuYXJpYS12YWx1ZW1heF09XCIxMDBcIlxyXG4gIFthdHRyLmRhdGEtcGMtbmFtZV09XCIncHJvZ3Jlc3NiYXInXCJcclxuICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3Jvb3QnXCJcclxuICBbbmdDbGFzc109XCJ7J3AtcHJvZ3Jlc3NiYXIgcC1jb21wb25lbnQnOiB0cnVlLCAncC1wcm9ncmVzc2Jhci1kZXRlcm1pbmF0ZSc6IG1vZGUgPT09ICdkZXRlcm1pbmF0ZScsICdwLXByb2dyZXNzYmFyLWluZGV0ZXJtaW5hdGUnOiBtb2RlID09PSAnaW5kZXRlcm1pbmF0ZSd9XCJcclxuPlxyXG4gIEBpZihtb2RlID09PSAnZGV0ZXJtaW5hdGUnKSB7XHJcbiAgPGRpdiBjbGFzcz1cInAtcHJvZ3Jlc3NiYXItdmFsdWUgcC1wcm9ncmVzc2Jhci12YWx1ZS1hbmltYXRlIHt7IGJhclN0eWxlQ2xhc3MgfX0gZm9udC1zZW1pYm9sZFwiXHJcbiAgICBbc3R5bGUud2lkdGhdPVwibWF4VmFsdWUgJiYgdmFsdWUgPyAodmFsdWUgLyBtYXhWYWx1ZSkgKiAxMDAgKyAnJScgOiB2YWx1ZSArICclJ1wiXHJcbiAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3ZhbHVlJ1wiXHJcbiAgPjwvZGl2PlxyXG5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cInAtcHJvZ3Jlc3NiYXItbGFiZWwge3sgbGFiZWxTdHlsZUNsYXNzIH19IHctZnVsbFwiXHJcbiAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2xhYmVsJ1wiXHJcbiAgPlxyXG4gICAgPGxhYmVsICpuZ0lmPVwic2hvd1ZhbHVlICYmIG1heFZhbHVlXCI+e3sgdmFsdWUgfX0ve3sgbWF4VmFsdWUgfX08L2xhYmVsPlxyXG4gICAgPGxhYmVsICpuZ0lmPVwic2hvd1ZhbHVlICYmICFtYXhWYWx1ZVwiPnt7IHZhbHVlIH19JTwvbGFiZWw+XHJcbiAgICA8bGFiZWwgKm5nSWY9XCJzaG93TGFiZWxcIj57eyBsYWJlbCB9fTwvbGFiZWw+XHJcbiAgPC9kaXY+XHJcbiAgfSBAaWYobW9kZSA9PT0gJ2luZGV0ZXJtaW5hdGUnKSB7XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJwLXByb2dyZXNzYmFyLWluZGV0ZXJtaW5hdGUtY29udGFpbmVyXCJcclxuICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInY29udGFpbmVyJ1wiXHJcbiAgPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cInAtcHJvZ3Jlc3NiYXItdmFsdWUgcC1wcm9ncmVzc2Jhci12YWx1ZS1hbmltYXRlXCJcclxuICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwiY29sb3JcIlxyXG4gICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3ZhbHVlJ1wiXHJcbiAgICA+PC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgfVxyXG48L2Rpdj5cclxuIl19