@tuki-io/tuki-widgets 0.0.165 → 0.0.166

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 (99) hide show
  1. package/esm2020/contact-center/cc-readiness/cc-readiness.module.mjs +1 -1
  2. package/esm2020/contact-center/cc-readiness/cc-readiness.service.mjs +1 -1
  3. package/esm2020/contact-center/cc-readiness/widgets/licences-requirement/licences-requirement.component.mjs +3 -3
  4. package/esm2020/di2mt/shared/services/api.service.mjs +3 -3
  5. package/esm2020/di2mt/widgets/site-upgrade/progress-bar/progress-bar.component.mjs +3 -3
  6. package/esm2020/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.mjs +2 -2
  7. package/esm2020/di2mt/widgets/upgrade-overview/cards/pending-activation-users/pending-activation-users.component.mjs +17 -17
  8. package/esm2020/user-device-manage/src/app.constants.mjs +1 -1
  9. package/esm2020/user-device-manage/src/classes/deviceProfile.mjs +1 -1
  10. package/esm2020/user-device-manage/src/device-associated-line/device-associated-line-extension/device-associated-line-extension.component.mjs +3 -3
  11. package/esm2020/user-device-manage/src/device-info/device-info.component.mjs +3 -3
  12. package/esm2020/user-device-manage/src/device-manage-widget.component.mjs +2 -2
  13. package/esm2020/user-device-manage/src/lazy-loading-select/lazy-loading-select.component.mjs +3 -3
  14. package/esm2020/user-device-manage/src/pipes/mac-address.pipe.mjs +1 -1
  15. package/esm2020/user-device-manage/src/services/api.service.mjs +1 -1
  16. package/esm2020/user-device-manage/src/services/dns.service.mjs +1 -1
  17. package/esm2020/user-device-manage/src/services/line.service.mjs +2 -2
  18. package/esm2020/user-device-manage/src/services/user.service.mjs +1 -1
  19. package/esm2020/user-device-manage/src/shared/tk-page-section/page-section.component.mjs +1 -1
  20. package/esm2020/user-device-manage/src/utils/app-loader/app-loader.mjs +3 -3
  21. package/esm2020/user-manage/src/app.constants.mjs +1 -1
  22. package/esm2020/user-manage/src/classes/line-association-interface.mjs +1 -1
  23. package/esm2020/user-manage/src/classes/line-directory.mjs +1 -1
  24. package/esm2020/user-manage/src/classes/line.mjs +1 -1
  25. package/esm2020/user-manage/src/classes/pagination.mjs +1 -1
  26. package/esm2020/user-manage/src/classes/simplified-user.mjs +1 -1
  27. package/esm2020/user-manage/src/device-list/device-list.component.mjs +3 -3
  28. package/esm2020/user-manage/src/device-list/device-row/device-row.component.mjs +3 -3
  29. package/esm2020/user-manage/src/lazy-loading-select/lazy-loading-select.component.mjs +3 -3
  30. package/esm2020/user-manage/src/services/api.service.mjs +1 -1
  31. package/esm2020/user-manage/src/services/user.service.mjs +1 -1
  32. package/esm2020/user-manage/src/user-info/user-info.component.mjs +3 -3
  33. package/esm2020/user-manage/src/user-manage.module.mjs +1 -1
  34. package/esm2020/user-manage/src/utils/app-loader/app-loader.mjs +3 -3
  35. package/esm2020/users-list/src/app.constants.mjs +1 -1
  36. package/esm2020/users-list/src/classes/move-user.mjs +1 -1
  37. package/esm2020/users-list/src/components/table-toolbar/table-toolbar.component.mjs +3 -9
  38. package/esm2020/users-list/src/services/dns.service.mjs +1 -1
  39. package/esm2020/users-list/src/services/user.service.mjs +1 -1
  40. package/esm2020/users-list/src/users-list.component.mjs +3 -9
  41. package/esm2020/users-list/src/utils/app-loader/app-loader.mjs +3 -3
  42. package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs +2 -2
  43. package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs.map +1 -1
  44. package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs +22 -22
  45. package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
  46. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs +10 -10
  47. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  48. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs +10 -10
  49. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  50. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs +6 -18
  51. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  52. package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs +2 -2
  53. package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs.map +1 -1
  54. package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs +22 -22
  55. package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
  56. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs +10 -10
  57. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  58. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs +10 -10
  59. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  60. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs +6 -18
  61. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  62. package/package.json +1 -9
  63. package/user-device-manage/src/services/line.service.d.ts +1 -1
  64. package/users-list/src/components/table-toolbar/table-toolbar.component.d.ts +1 -3
  65. package/users-list/src/users-list.component.d.ts +1 -3
  66. package/esm2020/user-creation/public-api.mjs +0 -13
  67. package/esm2020/user-creation/src/app.constants.mjs +0 -16
  68. package/esm2020/user-creation/src/classes/site.mjs +0 -53
  69. package/esm2020/user-creation/src/shared/api/api.service.mjs +0 -86
  70. package/esm2020/user-creation/src/shared/material.module.mjs +0 -76
  71. package/esm2020/user-creation/src/shared/services/user-creation-api.service.mjs +0 -112
  72. package/esm2020/user-creation/src/shared/services/utils.mjs +0 -19
  73. package/esm2020/user-creation/src/shared/shared.module.mjs +0 -33
  74. package/esm2020/user-creation/src/user-creation.module.mjs +0 -69
  75. package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-details-step/user-details-step.component.mjs +0 -23
  76. package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-overview-step/user-overview-step.component.mjs +0 -19
  77. package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.mjs +0 -114
  78. package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.mjs +0 -60
  79. package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.service.mjs +0 -273
  80. package/esm2020/user-creation/tuki-io-tuki-widgets-user-creation.mjs +0 -5
  81. package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs +0 -919
  82. package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs.map +0 -1
  83. package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs +0 -915
  84. package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs.map +0 -1
  85. package/user-creation/index.d.ts +0 -5
  86. package/user-creation/public-api.d.ts +0 -2
  87. package/user-creation/src/app.constants.d.ts +0 -15
  88. package/user-creation/src/classes/site.d.ts +0 -203
  89. package/user-creation/src/shared/api/api.service.d.ts +0 -20
  90. package/user-creation/src/shared/material.module.d.ts +0 -15
  91. package/user-creation/src/shared/services/user-creation-api.service.d.ts +0 -24
  92. package/user-creation/src/shared/services/utils.d.ts +0 -1
  93. package/user-creation/src/shared/shared.module.d.ts +0 -10
  94. package/user-creation/src/user-creation.module.d.ts +0 -17
  95. package/user-creation/src/widgets/user-creation-wizard/components/user-details-step/user-details-step.component.d.ts +0 -8
  96. package/user-creation/src/widgets/user-creation-wizard/components/user-overview-step/user-overview-step.component.d.ts +0 -11
  97. package/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.d.ts +0 -37
  98. package/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.d.ts +0 -18
  99. package/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.service.d.ts +0 -87
@@ -1,273 +0,0 @@
1
- import { inject, Injectable } from "@angular/core";
2
- import { UserCreationApiService } from "../../shared/services/user-creation-api.service";
3
- import * as i0 from "@angular/core";
4
- export class UserCreationWizardService {
5
- constructor() {
6
- this.api = inject(UserCreationApiService);
7
- this.ldapTableColumns = ['userId', 'firstName', 'lastName', 'email', 'add'];
8
- this.userCreationTypes = ['CUCM', 'MT'];
9
- this.siteOptions = [];
10
- this.templateOptions = [];
11
- this.lineOptions = [];
12
- this.routePartitionOptions = [];
13
- this.deviceRows = [];
14
- this.ldapUsers = [];
15
- this.overviewUsers = [];
16
- this.overviewLines = [];
17
- this.overviewDevices = [];
18
- this.userDetailsForm = {
19
- userId: '',
20
- firstName: '',
21
- lastName: '',
22
- email: ''
23
- };
24
- this.lineSelections = [];
25
- this.deviceEntries = [];
26
- this.selectedSite = null;
27
- this.selectedTemplate = null;
28
- this.selectedUserCreationType = 'CUCM';
29
- this.loadPlaceholderData();
30
- }
31
- setSelectedSite(site) {
32
- this.selectedSite = site;
33
- }
34
- setSelectedTemplate(template) {
35
- this.selectedTemplate = template;
36
- this.rebuildOverviewUsers();
37
- }
38
- resetTemplateDrivenData() {
39
- this.lineOptions = [];
40
- this.routePartitionOptions = [];
41
- this.lineSelections = [];
42
- this.deviceEntries = [];
43
- this.deviceRows = [];
44
- this.rebuildOverviewLines();
45
- this.rebuildOverviewDevices();
46
- }
47
- applyTemplateTokenPayload(payload) {
48
- const template = this.extractTemplateFromTokenPayload(payload);
49
- const endUser = template?.endUser || {};
50
- const linesFromTemplate = Array.isArray(endUser.lines) ? endUser.lines : [];
51
- const devicesFromTemplate = Array.isArray(endUser.devices) ? endUser.devices : [];
52
- this.userDetailsForm = {
53
- userId: this.valueToString(endUser.userid),
54
- firstName: this.valueToString(endUser.firstName),
55
- lastName: this.valueToString(endUser.lastName),
56
- email: this.valueToString(endUser.email)
57
- };
58
- const mappedLineOptions = linesFromTemplate
59
- .map(line => ({
60
- number: this.valueToString(line?.directoryNumber?.directoryNumber),
61
- did: this.valueToString(line?.didPatterns?.[0]?.pattern || line?.directoryNumber?.directoryNumber),
62
- css: this.valueToString(typeof line?.callingSearchSpace === 'string'
63
- ? line.callingSearchSpace
64
- : line?.callingSearchSpace?.name),
65
- description: this.valueToString(line?.description)
66
- }))
67
- .filter(line => line.number.trim().length > 0);
68
- if (mappedLineOptions.length) {
69
- this.lineOptions = this.uniqueByNumber(mappedLineOptions);
70
- this.lineSelections = this.lineOptions.map(line => ({
71
- lineNumber: line.number,
72
- routePartitionName: linesFromTemplate.find(source => (source?.directoryNumber?.directoryNumber || '') === line.number)?.directoryNumber?.routePartitionName || null
73
- }));
74
- }
75
- else {
76
- const lineAssociations = devicesFromTemplate.flatMap(device => device.lineAssociations || []);
77
- const associatedLineOptions = lineAssociations
78
- .map(association => {
79
- const number = association?.directoryNumber?.directoryNumber || '';
80
- return {
81
- number,
82
- did: number,
83
- css: '',
84
- description: ''
85
- };
86
- })
87
- .filter(line => line.number.trim().length > 0);
88
- this.lineOptions = this.uniqueByNumber(associatedLineOptions);
89
- this.lineSelections = this.lineOptions.map(line => ({
90
- lineNumber: line.number,
91
- routePartitionName: lineAssociations.find(source => (source?.directoryNumber?.directoryNumber || '') === line.number)?.directoryNumber?.routePartitionName || null
92
- }));
93
- }
94
- const routePartitions = this.lineSelections
95
- .map(line => line.routePartitionName)
96
- .filter((value) => !!value && value.trim().length > 0);
97
- this.routePartitionOptions = this.uniqueStrings(routePartitions);
98
- this.deviceEntries = devicesFromTemplate.map(device => ({
99
- deviceType: this.valueToString(device.deviceType),
100
- protocol: this.valueToString(device.protocol),
101
- buttonTemplate: this.valueToString(device.buttonTemplate),
102
- name: this.valueToString(device.name)
103
- }));
104
- this.deviceRows = this.deviceEntries.map((_, index) => index + 1);
105
- this.rebuildOverviewUsers();
106
- this.rebuildOverviewLines();
107
- this.rebuildOverviewDevices();
108
- }
109
- setSelectedUserCreationType(type) {
110
- this.selectedUserCreationType = type;
111
- }
112
- setUserDetailsField(field, value) {
113
- this.userDetailsForm = {
114
- ...this.userDetailsForm,
115
- [field]: value
116
- };
117
- this.rebuildOverviewUsers();
118
- }
119
- setLineSelection(index, lineNumber) {
120
- if (!this.lineSelections[index]) {
121
- return;
122
- }
123
- this.lineSelections[index] = {
124
- ...this.lineSelections[index],
125
- lineNumber
126
- };
127
- this.rebuildOverviewLines();
128
- this.rebuildOverviewDevices();
129
- }
130
- setRoutePartitionSelection(index, routePartitionName) {
131
- if (!this.lineSelections[index]) {
132
- return;
133
- }
134
- this.lineSelections[index] = {
135
- ...this.lineSelections[index],
136
- routePartitionName
137
- };
138
- this.rebuildOverviewLines();
139
- }
140
- setDeviceName(index, name) {
141
- if (!this.deviceEntries[index]) {
142
- return;
143
- }
144
- this.deviceEntries[index] = {
145
- ...this.deviceEntries[index],
146
- name
147
- };
148
- this.rebuildOverviewDevices();
149
- }
150
- // Placeholder bootstrap until backend APIs are connected.
151
- loadPlaceholderData() {
152
- this.siteOptions = ['Site 1', 'Site 2', 'Site 3'];
153
- this.templateOptions = ['User 8851 Office'];
154
- this.lineOptions = [
155
- {
156
- number: '557046',
157
- did: '+13125557046',
158
- css: 'Atlanta_internal_css',
159
- description: ''
160
- }
161
- ];
162
- this.routePartitionOptions = ['Atlanta_internal_PT', 'Beijing_national_PT'];
163
- this.deviceRows = [1, 2];
164
- this.ldapUsers = [
165
- { userId: 'John.Doe', firstName: 'John', lastName: 'Doe', email: 'john.doe@car.west.io' },
166
- { userId: 'Jane.Smith', firstName: 'Jane', lastName: 'Smith', email: 'jane.smith@car.west.io' }
167
- ];
168
- this.lineSelections = [
169
- {
170
- lineNumber: this.lineOptions[0]?.number || null,
171
- routePartitionName: this.routePartitionOptions[0] || null
172
- }
173
- ];
174
- this.deviceEntries = [
175
- {
176
- deviceType: 'Cisco 8851',
177
- protocol: 'SIP',
178
- buttonTemplate: 'Standard 8851 SIP',
179
- name: ''
180
- },
181
- {
182
- deviceType: 'Cisco Unified Client Services Framework',
183
- protocol: 'SIP',
184
- buttonTemplate: 'Standard Client Services Framework',
185
- name: ''
186
- }
187
- ];
188
- this.selectedTemplate = this.selectedTemplate ?? null;
189
- this.rebuildOverviewUsers();
190
- this.rebuildOverviewLines();
191
- this.rebuildOverviewDevices();
192
- }
193
- rebuildOverviewUsers() {
194
- const userTemplate = this.selectedTemplate || '';
195
- const hasUserData = Object.values(this.userDetailsForm).some(value => value.trim().length > 0);
196
- this.overviewUsers = hasUserData
197
- ? [{
198
- userId: this.userDetailsForm.userId,
199
- firstName: this.userDetailsForm.firstName,
200
- lastName: this.userDetailsForm.lastName,
201
- email: this.userDetailsForm.email,
202
- userTemplate
203
- }]
204
- : [];
205
- }
206
- rebuildOverviewLines() {
207
- this.overviewLines = this.lineSelections
208
- .map(selection => {
209
- if (!selection?.lineNumber) {
210
- return null;
211
- }
212
- const selectedLine = this.lineOptions.find(line => line.number === selection.lineNumber);
213
- if (!selectedLine) {
214
- return null;
215
- }
216
- return {
217
- number: selectedLine.number,
218
- did: selectedLine.did,
219
- routePartitionName: selection.routePartitionName || this.routePartitionOptions[0] || '',
220
- css: selectedLine.css,
221
- description: selectedLine.description
222
- };
223
- })
224
- .filter((line) => !!line);
225
- }
226
- rebuildOverviewDevices() {
227
- const selectedLineNumbers = this.overviewLines.map(line => line.number).join(', ');
228
- this.overviewDevices = this.deviceEntries
229
- .filter(device => device.name.trim().length > 0 || device.deviceType.trim().length > 0)
230
- .map(device => ({
231
- name: device.name,
232
- deviceType: device.deviceType,
233
- lines: selectedLineNumbers,
234
- description: `${device.protocol} / ${device.buttonTemplate}`
235
- }));
236
- }
237
- extractTemplateFromTokenPayload(payload) {
238
- if (!payload || typeof payload !== 'object') {
239
- return null;
240
- }
241
- if (Array.isArray(payload)) {
242
- return payload[0] || null;
243
- }
244
- const firstKey = Object.keys(payload)[0];
245
- return firstKey ? payload[firstKey] : null;
246
- }
247
- uniqueByNumber(lines) {
248
- const seen = new Set();
249
- return lines.filter(line => {
250
- if (seen.has(line.number)) {
251
- return false;
252
- }
253
- seen.add(line.number);
254
- return true;
255
- });
256
- }
257
- uniqueStrings(items) {
258
- return Array.from(new Set(items));
259
- }
260
- valueToString(value) {
261
- return typeof value === 'string' ? value : '';
262
- }
263
- // TODO: replace placeholders with real API integration.
264
- loadDataFromApi() {
265
- // this.api.getWizardBootstrapData().subscribe(...)
266
- }
267
- }
268
- UserCreationWizardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserCreationWizardService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
269
- UserCreationWizardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserCreationWizardService });
270
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserCreationWizardService, decorators: [{
271
- type: Injectable
272
- }], ctorParameters: function () { return []; } });
273
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1jcmVhdGlvbi13aXphcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy91c2VyLWNyZWF0aW9uL3NyYy93aWRnZXRzL3VzZXItY3JlYXRpb24td2l6YXJkL3VzZXItY3JlYXRpb24td2l6YXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saURBQWlELENBQUM7O0FBeUZ6RixNQUFNLE9BQU8seUJBQXlCO0lBNEJsQztRQTNCaUIsUUFBRyxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRTdDLHFCQUFnQixHQUFhLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pGLHNCQUFpQixHQUF1QixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVoRSxnQkFBVyxHQUFhLEVBQUUsQ0FBQztRQUMzQixvQkFBZSxHQUFhLEVBQUUsQ0FBQztRQUMvQixnQkFBVyxHQUFpQixFQUFFLENBQUM7UUFDL0IsMEJBQXFCLEdBQWEsRUFBRSxDQUFDO1FBQ3JDLGVBQVUsR0FBYSxFQUFFLENBQUM7UUFDMUIsY0FBUyxHQUFrQixFQUFFLENBQUM7UUFDOUIsa0JBQWEsR0FBc0IsRUFBRSxDQUFDO1FBQ3RDLGtCQUFhLEdBQXNCLEVBQUUsQ0FBQztRQUN0QyxvQkFBZSxHQUF3QixFQUFFLENBQUM7UUFDMUMsb0JBQWUsR0FBb0I7WUFDL0IsTUFBTSxFQUFFLEVBQUU7WUFDVixTQUFTLEVBQUUsRUFBRTtZQUNiLFFBQVEsRUFBRSxFQUFFO1lBQ1osS0FBSyxFQUFFLEVBQUU7U0FDWixDQUFDO1FBQ0YsbUJBQWMsR0FB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QUcsRUFBVSxDQUFDO1FBQy9CLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN2QixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUN2QixPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUNELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUFlO1FBQ2pDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTyxhQUFhLENBQUMsS0FBYztRQUNoQyxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVELHdEQUF3RDtJQUN4RCxlQUFlO1FBQ1gsbURBQW1EO0lBQ3ZELENBQUM7O3VIQXhTUSx5QkFBeUI7MkhBQXpCLHlCQUF5Qjs0RkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgVXNlckNyZWF0aW9uQXBpU2VydmljZSB9IGZyb20gXCIuLi8uLi9zaGFyZWQvc2VydmljZXMvdXNlci1jcmVhdGlvbi1hcGkuc2VydmljZVwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBMZGFwVXNlclJvdyB7XHJcbiAgICB1c2VySWQ6IHN0cmluZztcclxuICAgIGZpcnN0TmFtZTogc3RyaW5nO1xyXG4gICAgbGFzdE5hbWU6IHN0cmluZztcclxuICAgIGVtYWlsOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcnZpZXdVc2VyUm93IGV4dGVuZHMgTGRhcFVzZXJSb3cge1xyXG4gICAgdXNlclRlbXBsYXRlOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcnZpZXdMaW5lUm93IHtcclxuICAgIG51bWJlcjogc3RyaW5nO1xyXG4gICAgZGlkOiBzdHJpbmc7XHJcbiAgICByb3V0ZVBhcnRpdGlvbk5hbWU6IHN0cmluZztcclxuICAgIGNzczogc3RyaW5nO1xyXG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBPdmVydmlld0RldmljZVJvdyB7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBkZXZpY2VUeXBlOiBzdHJpbmc7XHJcbiAgICBsaW5lczogc3RyaW5nO1xyXG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgVXNlckNyZWF0aW9uVHlwZSA9ICdDVUNNJyB8ICdNVCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJEZXRhaWxzRm9ybSB7XHJcbiAgICB1c2VySWQ6IHN0cmluZztcclxuICAgIGZpcnN0TmFtZTogc3RyaW5nO1xyXG4gICAgbGFzdE5hbWU6IHN0cmluZztcclxuICAgIGVtYWlsOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGluZU9wdGlvbiB7XHJcbiAgICBudW1iZXI6IHN0cmluZztcclxuICAgIGRpZDogc3RyaW5nO1xyXG4gICAgY3NzOiBzdHJpbmc7XHJcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdGVkTGluZVJvdyB7XHJcbiAgICBsaW5lTnVtYmVyOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgcm91dGVQYXJ0aXRpb25OYW1lOiBzdHJpbmcgfCBudWxsO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERldmljZUVudHJ5IHtcclxuICAgIGRldmljZVR5cGU6IHN0cmluZztcclxuICAgIHByb3RvY29sOiBzdHJpbmc7XHJcbiAgICBidXR0b25UZW1wbGF0ZTogc3RyaW5nO1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgVGVtcGxhdGVMaW5lTGlrZSB7XHJcbiAgICBkaXJlY3RvcnlOdW1iZXI/OiB7XHJcbiAgICAgICAgZGlyZWN0b3J5TnVtYmVyPzogc3RyaW5nO1xyXG4gICAgICAgIHJvdXRlUGFydGl0aW9uTmFtZT86IHN0cmluZyB8IG51bGw7XHJcbiAgICB9O1xyXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCBudWxsO1xyXG4gICAgY2FsbGluZ1NlYXJjaFNwYWNlPzogc3RyaW5nIHwgeyBuYW1lPzogc3RyaW5nIHwgbnVsbCB9IHwgbnVsbDtcclxuICAgIGRpZFBhdHRlcm5zPzogQXJyYXk8eyBwYXR0ZXJuPzogc3RyaW5nIHwgbnVsbCB9PiB8IG51bGw7XHJcbn1cclxuXHJcbmludGVyZmFjZSBUZW1wbGF0ZURldmljZUxpa2Uge1xyXG4gICAgZGV2aWNlVHlwZT86IHN0cmluZyB8IG51bGw7XHJcbiAgICBwcm90b2NvbD86IHN0cmluZyB8IG51bGw7XHJcbiAgICBidXR0b25UZW1wbGF0ZT86IHN0cmluZyB8IG51bGw7XHJcbiAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcclxuICAgIGxpbmVBc3NvY2lhdGlvbnM/OiBBcnJheTx7XHJcbiAgICAgICAgZGlyZWN0b3J5TnVtYmVyPzoge1xyXG4gICAgICAgICAgICBkaXJlY3RvcnlOdW1iZXI/OiBzdHJpbmc7XHJcbiAgICAgICAgICAgIHJvdXRlUGFydGl0aW9uTmFtZT86IHN0cmluZyB8IG51bGw7XHJcbiAgICAgICAgfTtcclxuICAgIH0+O1xyXG59XHJcblxyXG5pbnRlcmZhY2UgVGVtcGxhdGVFbmRVc2VyTGlrZSB7XHJcbiAgICB1c2VyaWQ/OiBzdHJpbmcgfCBudWxsO1xyXG4gICAgZmlyc3ROYW1lPzogc3RyaW5nIHwgbnVsbDtcclxuICAgIGxhc3ROYW1lPzogc3RyaW5nIHwgbnVsbDtcclxuICAgIGVtYWlsPzogc3RyaW5nIHwgbnVsbDtcclxuICAgIGxpbmVzPzogVGVtcGxhdGVMaW5lTGlrZVtdIHwgbnVsbDtcclxuICAgIGRldmljZXM/OiBUZW1wbGF0ZURldmljZUxpa2VbXSB8IG51bGw7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFVzZXJDcmVhdGlvbldpemFyZFNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhcGkgPSBpbmplY3QoVXNlckNyZWF0aW9uQXBpU2VydmljZSk7XHJcblxyXG4gICAgcmVhZG9ubHkgbGRhcFRhYmxlQ29sdW1uczogc3RyaW5nW10gPSBbJ3VzZXJJZCcsICdmaXJzdE5hbWUnLCAnbGFzdE5hbWUnLCAnZW1haWwnLCAnYWRkJ107XHJcbiAgICByZWFkb25seSB1c2VyQ3JlYXRpb25UeXBlczogVXNlckNyZWF0aW9uVHlwZVtdID0gWydDVUNNJywgJ01UJ107XHJcblxyXG4gICAgc2l0ZU9wdGlvbnM6IHN0cmluZ1tdID0gW107XHJcbiAgICB0ZW1wbGF0ZU9wdGlvbnM6IHN0cmluZ1tdID0gW107XHJcbiAgICBsaW5lT3B0aW9uczogTGluZU9wdGlvbltdID0gW107XHJcbiAgICByb3V0ZVBhcnRpdGlvbk9wdGlvbnM6IHN0cmluZ1tdID0gW107XHJcbiAgICBkZXZpY2VSb3dzOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgbGRhcFVzZXJzOiBMZGFwVXNlclJvd1tdID0gW107XHJcbiAgICBvdmVydmlld1VzZXJzOiBPdmVydmlld1VzZXJSb3dbXSA9IFtdO1xyXG4gICAgb3ZlcnZpZXdMaW5lczogT3ZlcnZpZXdMaW5lUm93W10gPSBbXTtcclxuICAgIG92ZXJ2aWV3RGV2aWNlczogT3ZlcnZpZXdEZXZpY2VSb3dbXSA9IFtdO1xyXG4gICAgdXNlckRldGFpbHNGb3JtOiBVc2VyRGV0YWlsc0Zvcm0gPSB7XHJcbiAgICAgICAgdXNlcklkOiAnJyxcclxuICAgICAgICBmaXJzdE5hbWU6ICcnLFxyXG4gICAgICAgIGxhc3ROYW1lOiAnJyxcclxuICAgICAgICBlbWFpbDogJydcclxuICAgIH07XHJcbiAgICBsaW5lU2VsZWN0aW9uczogU2VsZWN0ZWRMaW5lUm93W10gPSBbXTtcclxuICAgIGRldmljZUVudHJpZXM6IERldmljZUVudHJ5W10gPSBbXTtcclxuXHJcbiAgICBzZWxlY3RlZFNpdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgc2VsZWN0ZWRUZW1wbGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgICBzZWxlY3RlZFVzZXJDcmVhdGlvblR5cGU6IFVzZXJDcmVhdGlvblR5cGUgPSAnQ1VDTSc7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkUGxhY2Vob2xkZXJEYXRhKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0U2VsZWN0ZWRTaXRlKHNpdGU6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkU2l0ZSA9IHNpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0U2VsZWN0ZWRUZW1wbGF0ZSh0ZW1wbGF0ZTogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZSA9IHRlbXBsYXRlO1xyXG4gICAgICAgIHRoaXMucmVidWlsZE92ZXJ2aWV3VXNlcnMoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldFRlbXBsYXRlRHJpdmVuRGF0YSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmxpbmVPcHRpb25zID0gW107XHJcbiAgICAgICAgdGhpcy5yb3V0ZVBhcnRpdGlvbk9wdGlvbnMgPSBbXTtcclxuICAgICAgICB0aGlzLmxpbmVTZWxlY3Rpb25zID0gW107XHJcbiAgICAgICAgdGhpcy5kZXZpY2VFbnRyaWVzID0gW107XHJcbiAgICAgICAgdGhpcy5kZXZpY2VSb3dzID0gW107XHJcbiAgICAgICAgdGhpcy5yZWJ1aWxkT3ZlcnZpZXdMaW5lcygpO1xyXG4gICAgICAgIHRoaXMucmVidWlsZE92ZXJ2aWV3RGV2aWNlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGFwcGx5VGVtcGxhdGVUb2tlblBheWxvYWQocGF5bG9hZDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgdGVtcGxhdGUgPSB0aGlzLmV4dHJhY3RUZW1wbGF0ZUZyb21Ub2tlblBheWxvYWQocGF5bG9hZCk7XHJcbiAgICAgICAgY29uc3QgZW5kVXNlcjogVGVtcGxhdGVFbmRVc2VyTGlrZSA9IHRlbXBsYXRlPy5lbmRVc2VyIHx8IHt9O1xyXG4gICAgICAgIGNvbnN0IGxpbmVzRnJvbVRlbXBsYXRlOiBUZW1wbGF0ZUxpbmVMaWtlW10gPSBBcnJheS5pc0FycmF5KGVuZFVzZXIubGluZXMpID8gZW5kVXNlci5saW5lcyA6IFtdO1xyXG4gICAgICAgIGNvbnN0IGRldmljZXNGcm9tVGVtcGxhdGU6IFRlbXBsYXRlRGV2aWNlTGlrZVtdID0gQXJyYXkuaXNBcnJheShlbmRVc2VyLmRldmljZXMpID8gZW5kVXNlci5kZXZpY2VzIDogW107XHJcblxyXG4gICAgICAgIHRoaXMudXNlckRldGFpbHNGb3JtID0ge1xyXG4gICAgICAgICAgICB1c2VySWQ6IHRoaXMudmFsdWVUb1N0cmluZyhlbmRVc2VyLnVzZXJpZCksXHJcbiAgICAgICAgICAgIGZpcnN0TmFtZTogdGhpcy52YWx1ZVRvU3RyaW5nKGVuZFVzZXIuZmlyc3ROYW1lKSxcclxuICAgICAgICAgICAgbGFzdE5hbWU6IHRoaXMudmFsdWVUb1N0cmluZyhlbmRVc2VyLmxhc3ROYW1lKSxcclxuICAgICAgICAgICAgZW1haWw6IHRoaXMudmFsdWVUb1N0cmluZyhlbmRVc2VyLmVtYWlsKVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbnN0IG1hcHBlZExpbmVPcHRpb25zOiBMaW5lT3B0aW9uW10gPSBsaW5lc0Zyb21UZW1wbGF0ZVxyXG4gICAgICAgICAgICAubWFwKGxpbmUgPT4gKHtcclxuICAgICAgICAgICAgICAgIG51bWJlcjogdGhpcy52YWx1ZVRvU3RyaW5nKGxpbmU/LmRpcmVjdG9yeU51bWJlcj8uZGlyZWN0b3J5TnVtYmVyKSxcclxuICAgICAgICAgICAgICAgIGRpZDogdGhpcy52YWx1ZVRvU3RyaW5nKGxpbmU/LmRpZFBhdHRlcm5zPy5bMF0/LnBhdHRlcm4gfHwgbGluZT8uZGlyZWN0b3J5TnVtYmVyPy5kaXJlY3RvcnlOdW1iZXIpLFxyXG4gICAgICAgICAgICAgICAgY3NzOiB0aGlzLnZhbHVlVG9TdHJpbmcoXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGxpbmU/LmNhbGxpbmdTZWFyY2hTcGFjZSA9PT0gJ3N0cmluZydcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBsaW5lLmNhbGxpbmdTZWFyY2hTcGFjZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGxpbmU/LmNhbGxpbmdTZWFyY2hTcGFjZT8ubmFtZVxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnZhbHVlVG9TdHJpbmcobGluZT8uZGVzY3JpcHRpb24pXHJcbiAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICAuZmlsdGVyKGxpbmUgPT4gbGluZS5udW1iZXIudHJpbSgpLmxlbmd0aCA+IDApO1xyXG5cclxuICAgICAgICBpZiAobWFwcGVkTGluZU9wdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMubGluZU9wdGlvbnMgPSB0aGlzLnVuaXF1ZUJ5TnVtYmVyKG1hcHBlZExpbmVPcHRpb25zKTtcclxuICAgICAgICAgICAgdGhpcy5saW5lU2VsZWN0aW9ucyA9IHRoaXMubGluZU9wdGlvbnMubWFwKGxpbmUgPT4gKHtcclxuICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmUubnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgcm91dGVQYXJ0aXRpb25OYW1lOiBsaW5lc0Zyb21UZW1wbGF0ZS5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9PiAoc291cmNlPy5kaXJlY3RvcnlOdW1iZXI/LmRpcmVjdG9yeU51bWJlciB8fCAnJykgPT09IGxpbmUubnVtYmVyXHJcbiAgICAgICAgICAgICAgICApPy5kaXJlY3RvcnlOdW1iZXI/LnJvdXRlUGFydGl0aW9uTmFtZSB8fCBudWxsXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBsaW5lQXNzb2NpYXRpb25zID0gZGV2aWNlc0Zyb21UZW1wbGF0ZS5mbGF0TWFwKGRldmljZSA9PiBkZXZpY2UubGluZUFzc29jaWF0aW9ucyB8fCBbXSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGFzc29jaWF0ZWRMaW5lT3B0aW9uczogTGluZU9wdGlvbltdID0gbGluZUFzc29jaWF0aW9uc1xyXG4gICAgICAgICAgICAgICAgLm1hcChhc3NvY2lhdGlvbiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbnVtYmVyID0gYXNzb2NpYXRpb24/LmRpcmVjdG9yeU51bWJlcj8uZGlyZWN0b3J5TnVtYmVyIHx8ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlkOiBudW1iZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzczogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJ1xyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLmZpbHRlcihsaW5lID0+IGxpbmUubnVtYmVyLnRyaW0oKS5sZW5ndGggPiAwKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMubGluZU9wdGlvbnMgPSB0aGlzLnVuaXF1ZUJ5TnVtYmVyKGFzc29jaWF0ZWRMaW5lT3B0aW9ucyk7XHJcbiAgICAgICAgICAgIHRoaXMubGluZVNlbGVjdGlvbnMgPSB0aGlzLmxpbmVPcHRpb25zLm1hcChsaW5lID0+ICh7XHJcbiAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lLm51bWJlcixcclxuICAgICAgICAgICAgICAgIHJvdXRlUGFydGl0aW9uTmFtZTogbGluZUFzc29jaWF0aW9ucy5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9PiAoc291cmNlPy5kaXJlY3RvcnlOdW1iZXI/LmRpcmVjdG9yeU51bWJlciB8fCAnJykgPT09IGxpbmUubnVtYmVyXHJcbiAgICAgICAgICAgICAgICApPy5kaXJlY3RvcnlOdW1iZXI/LnJvdXRlUGFydGl0aW9uTmFtZSB8fCBudWxsXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHJvdXRlUGFydGl0aW9ucyA9IHRoaXMubGluZVNlbGVjdGlvbnNcclxuICAgICAgICAgICAgLm1hcChsaW5lID0+IGxpbmUucm91dGVQYXJ0aXRpb25OYW1lKVxyXG4gICAgICAgICAgICAuZmlsdGVyKCh2YWx1ZSk6IHZhbHVlIGlzIHN0cmluZyA9PiAhIXZhbHVlICYmIHZhbHVlLnRyaW0oKS5sZW5ndGggPiAwKTtcclxuICAgICAgICB0aGlzLnJvdXRlUGFydGl0aW9uT3B0aW9ucyA9IHRoaXMudW5pcXVlU3RyaW5ncyhyb3V0ZVBhcnRpdGlvbnMpO1xyXG5cclxuICAgICAgICB0aGlzLmRldmljZUVudHJpZXMgPSBkZXZpY2VzRnJvbVRlbXBsYXRlLm1hcChkZXZpY2UgPT4gKHtcclxuICAgICAgICAgICAgZGV2aWNlVHlwZTogdGhpcy52YWx1ZVRvU3RyaW5nKGRldmljZS5kZXZpY2VUeXBlKSxcclxuICAgICAgICAgICAgcHJvdG9jb2w6IHRoaXMudmFsdWVUb1N0cmluZyhkZXZpY2UucHJvdG9jb2wpLFxyXG4gICAgICAgICAgICBidXR0b25UZW1wbGF0ZTogdGhpcy52YWx1ZVRvU3RyaW5nKGRldmljZS5idXR0b25UZW1wbGF0ZSksXHJcbiAgICAgICAgICAgIG5hbWU6IHRoaXMudmFsdWVUb1N0cmluZyhkZXZpY2UubmFtZSlcclxuICAgICAgICB9KSk7XHJcbiAgICAgICAgdGhpcy5kZXZpY2VSb3dzID0gdGhpcy5kZXZpY2VFbnRyaWVzLm1hcCgoXywgaW5kZXgpID0+IGluZGV4ICsgMSk7XHJcblxyXG4gICAgICAgIHRoaXMucmVidWlsZE92ZXJ2aWV3VXNlcnMoKTtcclxuICAgICAgICB0aGlzLnJlYnVpbGRPdmVydmlld0xpbmVzKCk7XHJcbiAgICAgICAgdGhpcy5yZWJ1aWxkT3ZlcnZpZXdEZXZpY2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0U2VsZWN0ZWRVc2VyQ3JlYXRpb25UeXBlKHR5cGU6IFVzZXJDcmVhdGlvblR5cGUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVXNlckNyZWF0aW9uVHlwZSA9IHR5cGU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VXNlckRldGFpbHNGaWVsZChmaWVsZDoga2V5b2YgVXNlckRldGFpbHNGb3JtLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy51c2VyRGV0YWlsc0Zvcm0gPSB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMudXNlckRldGFpbHNGb3JtLFxyXG4gICAgICAgICAgICBbZmllbGRdOiB2YWx1ZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5yZWJ1aWxkT3ZlcnZpZXdVc2VycygpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldExpbmVTZWxlY3Rpb24oaW5kZXg6IG51bWJlciwgbGluZU51bWJlcjogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5saW5lU2VsZWN0aW9uc1tpbmRleF0pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxpbmVTZWxlY3Rpb25zW2luZGV4XSA9IHtcclxuICAgICAgICAgICAgLi4udGhpcy5saW5lU2VsZWN0aW9uc1tpbmRleF0sXHJcbiAgICAgICAgICAgIGxpbmVOdW1iZXJcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMucmVidWlsZE92ZXJ2aWV3TGluZXMoKTtcclxuICAgICAgICB0aGlzLnJlYnVpbGRPdmVydmlld0RldmljZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRSb3V0ZVBhcnRpdGlvblNlbGVjdGlvbihpbmRleDogbnVtYmVyLCByb3V0ZVBhcnRpdGlvbk5hbWU6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMubGluZVNlbGVjdGlvbnNbaW5kZXhdKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5saW5lU2VsZWN0aW9uc1tpbmRleF0gPSB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMubGluZVNlbGVjdGlvbnNbaW5kZXhdLFxyXG4gICAgICAgICAgICByb3V0ZVBhcnRpdGlvbk5hbWVcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMucmVidWlsZE92ZXJ2aWV3TGluZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXREZXZpY2VOYW1lKGluZGV4OiBudW1iZXIsIG5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5kZXZpY2VFbnRyaWVzW2luZGV4XSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGV2aWNlRW50cmllc1tpbmRleF0gPSB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZGV2aWNlRW50cmllc1tpbmRleF0sXHJcbiAgICAgICAgICAgIG5hbWVcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMucmVidWlsZE92ZXJ2aWV3RGV2aWNlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFBsYWNlaG9sZGVyIGJvb3RzdHJhcCB1bnRpbCBiYWNrZW5kIEFQSXMgYXJlIGNvbm5lY3RlZC5cclxuICAgIGxvYWRQbGFjZWhvbGRlckRhdGEoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zaXRlT3B0aW9ucyA9IFsnU2l0ZSAxJywgJ1NpdGUgMicsICdTaXRlIDMnXTtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlT3B0aW9ucyA9IFsnVXNlciA4ODUxIE9mZmljZSddO1xyXG4gICAgICAgIHRoaXMubGluZU9wdGlvbnMgPSBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG51bWJlcjogJzU1NzA0NicsXHJcbiAgICAgICAgICAgICAgICBkaWQ6ICcrMTMxMjU1NTcwNDYnLFxyXG4gICAgICAgICAgICAgICAgY3NzOiAnQXRsYW50YV9pbnRlcm5hbF9jc3MnLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICcnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMucm91dGVQYXJ0aXRpb25PcHRpb25zID0gWydBdGxhbnRhX2ludGVybmFsX1BUJywgJ0JlaWppbmdfbmF0aW9uYWxfUFQnXTtcclxuICAgICAgICB0aGlzLmRldmljZVJvd3MgPSBbMSwgMl07XHJcbiAgICAgICAgdGhpcy5sZGFwVXNlcnMgPSBbXHJcbiAgICAgICAgICAgIHsgdXNlcklkOiAnSm9obi5Eb2UnLCBmaXJzdE5hbWU6ICdKb2huJywgbGFzdE5hbWU6ICdEb2UnLCBlbWFpbDogJ2pvaG4uZG9lQGNhci53ZXN0LmlvJyB9LFxyXG4gICAgICAgICAgICB7IHVzZXJJZDogJ0phbmUuU21pdGgnLCBmaXJzdE5hbWU6ICdKYW5lJywgbGFzdE5hbWU6ICdTbWl0aCcsIGVtYWlsOiAnamFuZS5zbWl0aEBjYXIud2VzdC5pbycgfVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy5saW5lU2VsZWN0aW9ucyA9IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbGluZU51bWJlcjogdGhpcy5saW5lT3B0aW9uc1swXT8ubnVtYmVyIHx8IG51bGwsXHJcbiAgICAgICAgICAgICAgICByb3V0ZVBhcnRpdGlvbk5hbWU6IHRoaXMucm91dGVQYXJ0aXRpb25PcHRpb25zWzBdIHx8IG51bGxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy5kZXZpY2VFbnRyaWVzID0gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBkZXZpY2VUeXBlOiAnQ2lzY28gODg1MScsXHJcbiAgICAgICAgICAgICAgICBwcm90b2NvbDogJ1NJUCcsXHJcbiAgICAgICAgICAgICAgICBidXR0b25UZW1wbGF0ZTogJ1N0YW5kYXJkIDg4NTEgU0lQJyxcclxuICAgICAgICAgICAgICAgIG5hbWU6ICcnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGRldmljZVR5cGU6ICdDaXNjbyBVbmlmaWVkIENsaWVudCBTZXJ2aWNlcyBGcmFtZXdvcmsnLFxyXG4gICAgICAgICAgICAgICAgcHJvdG9jb2w6ICdTSVAnLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uVGVtcGxhdGU6ICdTdGFuZGFyZCBDbGllbnQgU2VydmljZXMgRnJhbWV3b3JrJyxcclxuICAgICAgICAgICAgICAgIG5hbWU6ICcnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZSA9IHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZSA/PyBudWxsO1xyXG4gICAgICAgIHRoaXMucmVidWlsZE92ZXJ2aWV3VXNlcnMoKTtcclxuICAgICAgICB0aGlzLnJlYnVpbGRPdmVydmlld0xpbmVzKCk7XHJcbiAgICAgICAgdGhpcy5yZWJ1aWxkT3ZlcnZpZXdEZXZpY2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZWJ1aWxkT3ZlcnZpZXdVc2VycygpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB1c2VyVGVtcGxhdGUgPSB0aGlzLnNlbGVjdGVkVGVtcGxhdGUgfHwgJyc7XHJcbiAgICAgICAgY29uc3QgaGFzVXNlckRhdGEgPSBPYmplY3QudmFsdWVzKHRoaXMudXNlckRldGFpbHNGb3JtKS5zb21lKHZhbHVlID0+IHZhbHVlLnRyaW0oKS5sZW5ndGggPiAwKTtcclxuICAgICAgICB0aGlzLm92ZXJ2aWV3VXNlcnMgPSBoYXNVc2VyRGF0YVxyXG4gICAgICAgICAgICA/IFt7XHJcbiAgICAgICAgICAgICAgICB1c2VySWQ6IHRoaXMudXNlckRldGFpbHNGb3JtLnVzZXJJZCxcclxuICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogdGhpcy51c2VyRGV0YWlsc0Zvcm0uZmlyc3ROYW1lLFxyXG4gICAgICAgICAgICAgICAgbGFzdE5hbWU6IHRoaXMudXNlckRldGFpbHNGb3JtLmxhc3ROYW1lLFxyXG4gICAgICAgICAgICAgICAgZW1haWw6IHRoaXMudXNlckRldGFpbHNGb3JtLmVtYWlsLFxyXG4gICAgICAgICAgICAgICAgdXNlclRlbXBsYXRlXHJcbiAgICAgICAgICAgIH1dXHJcbiAgICAgICAgICAgIDogW107XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZWJ1aWxkT3ZlcnZpZXdMaW5lcygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm92ZXJ2aWV3TGluZXMgPSB0aGlzLmxpbmVTZWxlY3Rpb25zXHJcbiAgICAgICAgICAgIC5tYXAoc2VsZWN0aW9uID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghc2VsZWN0aW9uPy5saW5lTnVtYmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZExpbmUgPSB0aGlzLmxpbmVPcHRpb25zLmZpbmQobGluZSA9PiBsaW5lLm51bWJlciA9PT0gc2VsZWN0aW9uLmxpbmVOdW1iZXIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFzZWxlY3RlZExpbmUpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbnVtYmVyOiBzZWxlY3RlZExpbmUubnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgICAgIGRpZDogc2VsZWN0ZWRMaW5lLmRpZCxcclxuICAgICAgICAgICAgICAgICAgICByb3V0ZVBhcnRpdGlvbk5hbWU6IHNlbGVjdGlvbi5yb3V0ZVBhcnRpdGlvbk5hbWUgfHwgdGhpcy5yb3V0ZVBhcnRpdGlvbk9wdGlvbnNbMF0gfHwgJycsXHJcbiAgICAgICAgICAgICAgICAgICAgY3NzOiBzZWxlY3RlZExpbmUuY3NzLFxyXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzZWxlY3RlZExpbmUuZGVzY3JpcHRpb25cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGxpbmUpOiBsaW5lIGlzIE92ZXJ2aWV3TGluZVJvdyA9PiAhIWxpbmUpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVidWlsZE92ZXJ2aWV3RGV2aWNlcygpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZExpbmVOdW1iZXJzID0gdGhpcy5vdmVydmlld0xpbmVzLm1hcChsaW5lID0+IGxpbmUubnVtYmVyKS5qb2luKCcsICcpO1xyXG4gICAgICAgIHRoaXMub3ZlcnZpZXdEZXZpY2VzID0gdGhpcy5kZXZpY2VFbnRyaWVzXHJcbiAgICAgICAgICAgIC5maWx0ZXIoZGV2aWNlID0+IGRldmljZS5uYW1lLnRyaW0oKS5sZW5ndGggPiAwIHx8IGRldmljZS5kZXZpY2VUeXBlLnRyaW0oKS5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICAubWFwKGRldmljZSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgbmFtZTogZGV2aWNlLm5hbWUsXHJcbiAgICAgICAgICAgICAgICBkZXZpY2VUeXBlOiBkZXZpY2UuZGV2aWNlVHlwZSxcclxuICAgICAgICAgICAgICAgIGxpbmVzOiBzZWxlY3RlZExpbmVOdW1iZXJzLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGAke2RldmljZS5wcm90b2NvbH0gLyAke2RldmljZS5idXR0b25UZW1wbGF0ZX1gXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGV4dHJhY3RUZW1wbGF0ZUZyb21Ub2tlblBheWxvYWQocGF5bG9hZDogYW55KTogYW55IHtcclxuICAgICAgICBpZiAoIXBheWxvYWQgfHwgdHlwZW9mIHBheWxvYWQgIT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXlsb2FkKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZFswXSB8fCBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBmaXJzdEtleSA9IE9iamVjdC5rZXlzKHBheWxvYWQpWzBdO1xyXG4gICAgICAgIHJldHVybiBmaXJzdEtleSA/IHBheWxvYWRbZmlyc3RLZXldIDogbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVuaXF1ZUJ5TnVtYmVyKGxpbmVzOiBMaW5lT3B0aW9uW10pOiBMaW5lT3B0aW9uW10ge1xyXG4gICAgICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuICAgICAgICByZXR1cm4gbGluZXMuZmlsdGVyKGxpbmUgPT4ge1xyXG4gICAgICAgICAgICBpZiAoc2Vlbi5oYXMobGluZS5udW1iZXIpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc2Vlbi5hZGQobGluZS5udW1iZXIpO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVuaXF1ZVN0cmluZ3MoaXRlbXM6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKG5ldyBTZXQoaXRlbXMpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHZhbHVlVG9TdHJpbmcodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUgOiAnJztcclxuICAgIH1cclxuXHJcbiAgICAvLyBUT0RPOiByZXBsYWNlIHBsYWNlaG9sZGVycyB3aXRoIHJlYWwgQVBJIGludGVncmF0aW9uLlxyXG4gICAgbG9hZERhdGFGcm9tQXBpKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIHRoaXMuYXBpLmdldFdpemFyZEJvb3RzdHJhcERhdGEoKS5zdWJzY3JpYmUoLi4uKVxyXG4gICAgfVxyXG59Il19
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHVraS1pby10dWtpLXdpZGdldHMtdXNlci1jcmVhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy91c2VyLWNyZWF0aW9uL3R1a2ktaW8tdHVraS13aWRnZXRzLXVzZXItY3JlYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==