@gravitee/ui-particles-angular 7.32.0 → 7.33.0
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.
- package/esm2020/lib/gio-form-cron/gio-form-cron.adapter.mjs +44 -38
- package/esm2020/lib/gio-form-cron/gio-form-cron.component.mjs +121 -53
- package/esm2020/lib/gio-form-cron/gio-form-cron.harness.mjs +36 -6
- package/esm2020/lib/gio-form-cron/gio-form-cron.module.mjs +35 -4
- package/fesm2015/gravitee-ui-particles-angular.mjs +285 -143
- package/fesm2015/gravitee-ui-particles-angular.mjs.map +1 -1
- package/fesm2020/gravitee-ui-particles-angular.mjs +268 -141
- package/fesm2020/gravitee-ui-particles-angular.mjs.map +1 -1
- package/lib/gio-form-cron/gio-form-cron.adapter.d.ts +1 -1
- package/lib/gio-form-cron/gio-form-cron.component.d.ts +15 -8
- package/lib/gio-form-cron/gio-form-cron.harness.d.ts +8 -1
- package/lib/gio-form-cron/gio-form-cron.module.d.ts +4 -1
- package/package.json +1 -1
- package/src/lib/gio-button-toggle-group/gio-button-toggle-group.scss +6 -1
|
@@ -14,35 +14,36 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import Cronstrue from 'cronstrue/i18n';
|
|
17
|
-
|
|
17
|
+
import { isEmpty } from 'lodash';
|
|
18
|
+
export const CRON_DISPLAY_MODES = ['secondly', 'minutely', 'hourly', 'daily', 'weekly', 'monthly', 'custom'];
|
|
18
19
|
const DISPLAY_MODE_LIST = [
|
|
19
20
|
{
|
|
20
|
-
mode: '
|
|
21
|
-
default: '*/
|
|
21
|
+
mode: 'secondly',
|
|
22
|
+
default: '*/1 * * * * *',
|
|
22
23
|
regex: /^(\*\/\d+\s)(\*\s){4}\*/,
|
|
23
24
|
},
|
|
24
25
|
{
|
|
25
|
-
mode: '
|
|
26
|
-
default: '0 */
|
|
26
|
+
mode: 'minutely',
|
|
27
|
+
default: '0 */1 * * * *',
|
|
27
28
|
regex: /^0\s\*\/\d+\s(\*\s){3}\*$/,
|
|
28
29
|
},
|
|
29
30
|
{
|
|
30
|
-
mode: '
|
|
31
|
-
default: '0 0 */
|
|
31
|
+
mode: 'hourly',
|
|
32
|
+
default: '0 0 */1 * * *',
|
|
32
33
|
regex: /^0\s\d+\s\*\/\d+\s(\*\s){2}\*$/,
|
|
33
34
|
},
|
|
34
35
|
{
|
|
35
|
-
mode: '
|
|
36
|
+
mode: 'daily',
|
|
36
37
|
default: '0 0 0 */1 * *',
|
|
37
38
|
regex: /^0\s\d+\s\d+\s\*\/\d+\s\*\s\*$/,
|
|
38
39
|
},
|
|
39
40
|
{
|
|
40
|
-
mode: '
|
|
41
|
+
mode: 'weekly',
|
|
41
42
|
default: '0 0 0 * * 0',
|
|
42
43
|
regex: /^(\d{1,2}\s){2,3}(\*\s){2}\d{1,2}$/,
|
|
43
44
|
},
|
|
44
45
|
{
|
|
45
|
-
mode: '
|
|
46
|
+
mode: 'monthly',
|
|
46
47
|
default: '0 0 0 1 * *',
|
|
47
48
|
regex: /^(\d+\s){3,4}\*\s\*$/,
|
|
48
49
|
},
|
|
@@ -60,9 +61,7 @@ export const getDefaultCronDisplay = (mode) => {
|
|
|
60
61
|
return parseCronExpression(modeFound.default);
|
|
61
62
|
};
|
|
62
63
|
export const parseCronExpression = (cronExpression) => {
|
|
63
|
-
|
|
64
|
-
throw new Error('Invalid cron expression.');
|
|
65
|
-
}
|
|
64
|
+
throwIfInvalid(cronExpression);
|
|
66
65
|
const parts = cronExpression.split(' ');
|
|
67
66
|
// Normalize cron so that second segment is included.
|
|
68
67
|
if (cronExpression && cronExpression.split(' ').length === 6) {
|
|
@@ -78,39 +77,39 @@ export const parseCronExpression = (cronExpression) => {
|
|
|
78
77
|
const minutes = getMinutes(parts);
|
|
79
78
|
const displayMode = getDisplayMode(cronExpression);
|
|
80
79
|
switch (displayMode.mode) {
|
|
81
|
-
case '
|
|
80
|
+
case 'secondly':
|
|
82
81
|
return {
|
|
83
|
-
mode: '
|
|
82
|
+
mode: 'secondly',
|
|
84
83
|
secondInterval,
|
|
85
84
|
};
|
|
86
|
-
case '
|
|
85
|
+
case 'minutely':
|
|
87
86
|
return {
|
|
88
|
-
mode: '
|
|
87
|
+
mode: 'minutely',
|
|
89
88
|
minuteInterval,
|
|
90
89
|
};
|
|
91
|
-
case '
|
|
90
|
+
case 'hourly':
|
|
92
91
|
return {
|
|
93
|
-
mode: '
|
|
92
|
+
mode: 'hourly',
|
|
94
93
|
hourInterval,
|
|
95
94
|
minutes,
|
|
96
95
|
};
|
|
97
|
-
case '
|
|
96
|
+
case 'daily':
|
|
98
97
|
return {
|
|
99
|
-
mode: '
|
|
98
|
+
mode: 'daily',
|
|
100
99
|
dayInterval,
|
|
101
100
|
hours,
|
|
102
101
|
minutes,
|
|
103
102
|
};
|
|
104
|
-
case '
|
|
103
|
+
case 'weekly':
|
|
105
104
|
return {
|
|
106
|
-
mode: '
|
|
105
|
+
mode: 'weekly',
|
|
107
106
|
dayOfWeek,
|
|
108
107
|
hours,
|
|
109
108
|
minutes,
|
|
110
109
|
};
|
|
111
|
-
case '
|
|
110
|
+
case 'monthly':
|
|
112
111
|
return {
|
|
113
|
-
mode: '
|
|
112
|
+
mode: 'monthly',
|
|
114
113
|
dayOfMonth,
|
|
115
114
|
hours,
|
|
116
115
|
minutes,
|
|
@@ -124,31 +123,38 @@ export const parseCronExpression = (cronExpression) => {
|
|
|
124
123
|
};
|
|
125
124
|
export const toCronExpression = (cronDisplay) => {
|
|
126
125
|
switch (cronDisplay.mode) {
|
|
127
|
-
case '
|
|
126
|
+
case 'secondly':
|
|
128
127
|
return `*/${cronDisplay.secondInterval} * * * * *`;
|
|
129
|
-
case '
|
|
128
|
+
case 'minutely':
|
|
130
129
|
return `0 */${cronDisplay.minuteInterval} * * * *`;
|
|
131
|
-
case '
|
|
130
|
+
case 'hourly':
|
|
132
131
|
return `0 ${cronDisplay.minutes} */${cronDisplay.hourInterval} * * *`;
|
|
133
|
-
case '
|
|
132
|
+
case 'daily':
|
|
134
133
|
return `0 ${cronDisplay.minutes} ${cronDisplay.hours} */${cronDisplay.dayInterval} * *`;
|
|
135
|
-
case '
|
|
134
|
+
case 'weekly':
|
|
136
135
|
return `0 ${cronDisplay.minutes} ${cronDisplay.hours} * * ${cronDisplay.dayOfWeek}`;
|
|
137
|
-
case '
|
|
136
|
+
case 'monthly':
|
|
138
137
|
return `0 ${cronDisplay.minutes} ${cronDisplay.hours} ${cronDisplay.dayOfMonth} * *`;
|
|
139
138
|
case 'custom':
|
|
140
139
|
return `${cronDisplay.customExpression}`;
|
|
141
140
|
}
|
|
142
141
|
};
|
|
143
142
|
export const toCronDescription = (cronExpression) => {
|
|
144
|
-
|
|
143
|
+
throwIfInvalid(cronExpression);
|
|
144
|
+
if (!isEmpty(cronExpression)) {
|
|
145
|
+
return Cronstrue.toString(cronExpression);
|
|
146
|
+
}
|
|
147
|
+
return '';
|
|
145
148
|
};
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
149
|
+
/**
|
|
150
|
+
* Simple validation to ensure that the cron expression has 6 parts.
|
|
151
|
+
* Note : The full cron expression validation is done by the backend.
|
|
152
|
+
*/
|
|
153
|
+
const throwIfInvalid = (cronExpression) => {
|
|
154
|
+
const parts = cronExpression.trim().split(/\s+/);
|
|
155
|
+
if (parts.length != 6) {
|
|
156
|
+
throw new Error('Cron expression must have 6 parts.');
|
|
150
157
|
}
|
|
151
|
-
return true;
|
|
152
158
|
};
|
|
153
159
|
const getDisplayMode = (cronExpression) => {
|
|
154
160
|
const modeFound = DISPLAY_MODE_LIST.find(mf => {
|
|
@@ -209,4 +215,4 @@ const getSegment = (value) => {
|
|
|
209
215
|
});
|
|
210
216
|
});
|
|
211
217
|
};
|
|
212
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLWZvcm0tY3Jvbi5hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcGFydGljbGVzLWFuZ3VsYXIvc3JjL2xpYi9naW8tZm9ybS1jcm9uL2dpby1mb3JtLWNyb24uYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sU0FBUyxNQUFNLGdCQUFnQixDQUFDO0FBZ0J2QyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBVSxDQUFDO0FBRzFHLE1BQU0saUJBQWlCLEdBSWpCO0lBQ0o7UUFDRSxJQUFJLEVBQUUsUUFBUTtRQUNkLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLEtBQUssRUFBRSx5QkFBeUI7S0FDakM7SUFDRDtRQUNFLElBQUksRUFBRSxRQUFRO1FBQ2QsT0FBTyxFQUFFLGVBQWU7UUFDeEIsS0FBSyxFQUFFLDJCQUEyQjtLQUNuQztJQUNEO1FBQ0UsSUFBSSxFQUFFLE1BQU07UUFDWixPQUFPLEVBQUUsZUFBZTtRQUN4QixLQUFLLEVBQUUsZ0NBQWdDO0tBQ3hDO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsS0FBSztRQUNYLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLEtBQUssRUFBRSxnQ0FBZ0M7S0FDeEM7SUFDRDtRQUNFLElBQUksRUFBRSxNQUFNO1FBQ1osT0FBTyxFQUFFLGFBQWE7UUFDdEIsS0FBSyxFQUFFLG9DQUFvQztLQUM1QztJQUNEO1FBQ0UsSUFBSSxFQUFFLE9BQU87UUFDYixPQUFPLEVBQUUsYUFBYTtRQUN0QixLQUFLLEVBQUUsc0JBQXNCO0tBQzlCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsUUFBUTtRQUNkLE9BQU8sRUFBRSxhQUFhO1FBQ3RCLEtBQUssRUFBRSxNQUFNO0tBQ2Q7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QUMsQ0FBQztJQUMvQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDL0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxjQUFjLEdBQUcsQ0FBQyxlQUF5QixFQUFzQixFQUFFO0lBQ3ZFLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDL0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxZQUFZLEdBQUcsQ0FBQyxlQUF5QixFQUFzQixFQUFFO0lBQ3JFLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDL0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxhQUFhLEdBQUcsQ0FBQyxlQUF5QixFQUFzQixFQUFFO0lBQ3RFLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDL0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxlQUF5QixFQUFzQixFQUFFO0lBQ25FLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDL0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxlQUF5QixFQUFzQixFQUFFO0lBQ2pFLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDL0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFhLEVBQWlDLEVBQUU7SUFDbEUsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1FBQ3ZCLEtBQUssR0FBRyxHQUFHLENBQUM7S0FDYjtJQUNELE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDOUIsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFO1lBQ25CLENBQUMsR0FBRyxHQUFHLENBQUM7U0FDVDtRQUNELE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDMUIsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMxQixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjMgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgQ3JvbnN0cnVlIGZyb20gJ2Nyb25zdHJ1ZS9pMThuJztcblxuZXhwb3J0IGludGVyZmFjZSBDcm9uRGlzcGxheSB7XG4gIG1vZGU6IENyb25EaXNwbGF5TW9kZTtcblxuICBzZWNvbmRJbnRlcnZhbD86IG51bWJlcjtcbiAgbWludXRlSW50ZXJ2YWw/OiBudW1iZXI7XG4gIGhvdXJJbnRlcnZhbD86IG51bWJlcjtcbiAgZGF5SW50ZXJ2YWw/OiBudW1iZXI7XG4gIGRheU9mV2Vlaz86IG51bWJlcjtcbiAgZGF5T2ZNb250aD86IG51bWJlcjtcbiAgY3VzdG9tRXhwcmVzc2lvbj86IHN0cmluZztcblxuICBob3Vycz86IG51bWJlcjtcbiAgbWludXRlcz86IG51bWJlcjtcbn1cbmV4cG9ydCBjb25zdCBDUk9OX0RJU1BMQVlfTU9ERVMgPSBbJ3NlY29uZCcsICdtaW51dGUnLCAnaG91cicsICdkYXknLCAnd2VlaycsICdtb250aCcsICdjdXN0b20nXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIENyb25EaXNwbGF5TW9kZSA9ICh0eXBlb2YgQ1JPTl9ESVNQTEFZX01PREVTKVtudW1iZXJdO1xuXG5jb25zdCBESVNQTEFZX01PREVfTElTVDoge1xuICBtb2RlOiBDcm9uRGlzcGxheU1vZGU7XG4gIGRlZmF1bHQ6IHN0cmluZztcbiAgcmVnZXg6IFJlZ0V4cDtcbn1bXSA9IFtcbiAge1xuICAgIG1vZGU6ICdzZWNvbmQnLFxuICAgIGRlZmF1bHQ6ICcqLzAgKiAqICogKiAqJyxcbiAgICByZWdleDogL14oXFwqXFwvXFxkK1xccykoXFwqXFxzKXs0fVxcKi8sXG4gIH0sXG4gIHtcbiAgICBtb2RlOiAnbWludXRlJyxcbiAgICBkZWZhdWx0OiAnMCAqLzAgKiAqICogKicsXG4gICAgcmVnZXg6IC9eMFxcc1xcKlxcL1xcZCtcXHMoXFwqXFxzKXszfVxcKiQvLFxuICB9LFxuICB7XG4gICAgbW9kZTogJ2hvdXInLFxuICAgIGRlZmF1bHQ6ICcwIDAgKi8wICogKiAqJyxcbiAgICByZWdleDogL14wXFxzXFxkK1xcc1xcKlxcL1xcZCtcXHMoXFwqXFxzKXsyfVxcKiQvLFxuICB9LFxuICB7XG4gICAgbW9kZTogJ2RheScsXG4gICAgZGVmYXVsdDogJzAgMCAwICovMSAqIConLFxuICAgIHJlZ2V4OiAvXjBcXHNcXGQrXFxzXFxkK1xcc1xcKlxcL1xcZCtcXHNcXCpcXHNcXCokLyxcbiAgfSxcbiAge1xuICAgIG1vZGU6ICd3ZWVrJyxcbiAgICBkZWZhdWx0OiAnMCAwIDAgKiAqIDAnLFxuICAgIHJlZ2V4OiAvXihcXGR7MSwyfVxccyl7MiwzfShcXCpcXHMpezJ9XFxkezEsMn0kLyxcbiAgfSxcbiAge1xuICAgIG1vZGU6ICdtb250aCcsXG4gICAgZGVmYXVsdDogJzAgMCAwIDEgKiAqJyxcbiAgICByZWdleDogL14oXFxkK1xccyl7Myw0fVxcKlxcc1xcKiQvLFxuICB9LFxuICB7XG4gICAgbW9kZTogJ2N1c3RvbScsXG4gICAgZGVmYXVsdDogJyogKiAqICogKiAqJyxcbiAgICByZWdleDogL14uKiQvLFxuICB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRDcm9uRGlzcGxheSA9IChtb2RlOiBDcm9uRGlzcGxheU1vZGUpOiBDcm9uRGlzcGxheSA9PiB7XG4gIGNvbnN0IG1vZGVGb3VuZCA9IERJU1BMQVlfTU9ERV9MSVNULmZpbmQobWYgPT4gbWYubW9kZSA9PT0gbW9kZSk7XG4gIGlmICghbW9kZUZvdW5kKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNyb24gbW9kZS4nKTtcbiAgfVxuXG4gIHJldHVybiBwYXJzZUNyb25FeHByZXNzaW9uKG1vZGVGb3VuZC5kZWZhdWx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZUNyb25FeHByZXNzaW9uID0gKGNyb25FeHByZXNzaW9uOiBzdHJpbmcpOiBDcm9uRGlzcGxheSA9PiB7XG4gIGlmICghY3JvbklzVmFsaWQoY3JvbkV4cHJlc3Npb24pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNyb24gZXhwcmVzc2lvbi4nKTtcbiAgfVxuXG4gIGNvbnN0IHBhcnRzID0gY3JvbkV4cHJlc3Npb24uc3BsaXQoJyAnKTtcblxuICAvLyBOb3JtYWxpemUgY3JvbiBzbyB0aGF0IHNlY29uZCBzZWdtZW50IGlzIGluY2x1ZGVkLlxuICBpZiAoY3JvbkV4cHJlc3Npb24gJiYgY3JvbkV4cHJlc3Npb24uc3BsaXQoJyAnKS5sZW5ndGggPT09IDYpIHtcbiAgICBwYXJ0cy5wdXNoKCcnKTtcbiAgfVxuXG4gIGNvbnN0IGhvdXJJbnRlcnZhbCA9IGdldEhvdXJJbnRlcnZhbChwYXJ0cyk7XG4gIGNvbnN0IG1pbnV0ZUludGVydmFsID0gZ2V0TWludXRlSW50ZXJ2YWwocGFydHMpO1xuICBjb25zdCBzZWNvbmRJbnRlcnZhbCA9IGdldFNlY29uZEludGVydmFsKHBhcnRzKTtcbiAgY29uc3QgZGF5SW50ZXJ2YWwgPSBnZXREYXlJbnRlcnZhbChwYXJ0cyk7XG4gIGNvbnN0IGRheU9mV2VlayA9IGdldERheU9mV2VlayhwYXJ0cyk7XG4gIGNvbnN0IGRheU9mTW9udGggPSBnZXREYXlPZk1vbnRoKHBhcnRzKTtcblxuICBjb25zdCBob3VycyA9IGdldEhvdXJzKHBhcnRzKTtcbiAgY29uc3QgbWludXRlcyA9IGdldE1pbnV0ZXMocGFydHMpO1xuXG4gIGNvbnN0IGRpc3BsYXlNb2RlID0gZ2V0RGlzcGxheU1vZGUoY3JvbkV4cHJlc3Npb24pO1xuXG4gIHN3aXRjaCAoZGlzcGxheU1vZGUubW9kZSkge1xuICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtb2RlOiAnc2Vjb25kJyxcbiAgICAgICAgc2Vjb25kSW50ZXJ2YWwsXG4gICAgICB9O1xuICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtb2RlOiAnbWludXRlJyxcbiAgICAgICAgbWludXRlSW50ZXJ2YWwsXG4gICAgICB9O1xuICAgIGNhc2UgJ2hvdXInOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbW9kZTogJ2hvdXInLFxuICAgICAgICBob3VySW50ZXJ2YWwsXG4gICAgICAgIG1pbnV0ZXMsXG4gICAgICB9O1xuICAgIGNhc2UgJ2RheSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtb2RlOiAnZGF5JyxcbiAgICAgICAgZGF5SW50ZXJ2YWwsXG4gICAgICAgIGhvdXJzLFxuICAgICAgICBtaW51dGVzLFxuICAgICAgfTtcbiAgICBjYXNlICd3ZWVrJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1vZGU6ICd3ZWVrJyxcbiAgICAgICAgZGF5T2ZXZWVrLFxuICAgICAgICBob3VycyxcbiAgICAgICAgbWludXRlcyxcbiAgICAgIH07XG4gICAgY2FzZSAnbW9udGgnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbW9kZTogJ21vbnRoJyxcbiAgICAgICAgZGF5T2ZNb250aCxcbiAgICAgICAgaG91cnMsXG4gICAgICAgIG1pbnV0ZXMsXG4gICAgICB9O1xuICAgIGNhc2UgJ2N1c3RvbSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtb2RlOiAnY3VzdG9tJyxcbiAgICAgICAgY3VzdG9tRXhwcmVzc2lvbjogY3JvbkV4cHJlc3Npb24sXG4gICAgICB9O1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdG9Dcm9uRXhwcmVzc2lvbiA9IChjcm9uRGlzcGxheTogT21pdDxDcm9uRGlzcGxheSwgJ2Nyb25EZXNjcmlwdGlvbic+KTogc3RyaW5nID0+IHtcbiAgc3dpdGNoIChjcm9uRGlzcGxheS5tb2RlKSB7XG4gICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgIHJldHVybiBgKi8ke2Nyb25EaXNwbGF5LnNlY29uZEludGVydmFsfSAqICogKiAqICpgO1xuICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgICByZXR1cm4gYDAgKi8ke2Nyb25EaXNwbGF5Lm1pbnV0ZUludGVydmFsfSAqICogKiAqYDtcbiAgICBjYXNlICdob3VyJzpcbiAgICAgIHJldHVybiBgMCAke2Nyb25EaXNwbGF5Lm1pbnV0ZXN9ICovJHtjcm9uRGlzcGxheS5ob3VySW50ZXJ2YWx9ICogKiAqYDtcbiAgICBjYXNlICdkYXknOlxuICAgICAgcmV0dXJuIGAwICR7Y3JvbkRpc3BsYXkubWludXRlc30gJHtjcm9uRGlzcGxheS5ob3Vyc30gKi8ke2Nyb25EaXNwbGF5LmRheUludGVydmFsfSAqICpgO1xuICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgcmV0dXJuIGAwICR7Y3JvbkRpc3BsYXkubWludXRlc30gJHtjcm9uRGlzcGxheS5ob3Vyc30gKiAqICR7Y3JvbkRpc3BsYXkuZGF5T2ZXZWVrfWA7XG4gICAgY2FzZSAnbW9udGgnOlxuICAgICAgcmV0dXJuIGAwICR7Y3JvbkRpc3BsYXkubWludXRlc30gJHtjcm9uRGlzcGxheS5ob3Vyc30gJHtjcm9uRGlzcGxheS5kYXlPZk1vbnRofSAqICpgO1xuICAgIGNhc2UgJ2N1c3RvbSc6XG4gICAgICByZXR1cm4gYCR7Y3JvbkRpc3BsYXkuY3VzdG9tRXhwcmVzc2lvbn1gO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdG9Dcm9uRGVzY3JpcHRpb24gPSAoY3JvbkV4cHJlc3Npb246IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBDcm9uc3RydWUudG9TdHJpbmcoY3JvbkV4cHJlc3Npb24pO1xufTtcblxuY29uc3QgY3JvbklzVmFsaWQgPSAoY3JvbkV4cHJlc3Npb246IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBwYXJ0cyA9IGNyb25FeHByZXNzaW9uLnNwbGl0KCcgJyk7XG5cbiAgaWYgKHBhcnRzLmxlbmd0aCA8IDUgfHwgcGFydHMubGVuZ3RoID4gNikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxuY29uc3QgZ2V0RGlzcGxheU1vZGUgPSAoXG4gIGNyb25FeHByZXNzaW9uOiBzdHJpbmcsXG4pOiB7XG4gIG1vZGU6IENyb25EaXNwbGF5TW9kZTtcbiAgZGVmYXVsdDogc3RyaW5nO1xufSA9PiB7XG4gIGNvbnN0IG1vZGVGb3VuZCA9IERJU1BMQVlfTU9ERV9MSVNULmZpbmQobWYgPT4ge1xuICAgIGNvbnN0IHJlZ2V4ID0gbWYucmVnZXg7XG4gICAgcmV0dXJuIHJlZ2V4LnRlc3QoY3JvbkV4cHJlc3Npb24pO1xuICB9KTtcblxuICBpZiAoIW1vZGVGb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjcm9uIGV4cHJlc3Npb24uJyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1vZGU6IG1vZGVGb3VuZC5tb2RlLFxuICAgIGRlZmF1bHQ6IG1vZGVGb3VuZC5kZWZhdWx0LFxuICB9O1xufTtcblxuY29uc3QgZ2V0U2Vjb25kSW50ZXJ2YWwgPSAoZXhwcmVzc2lvblBhcnRzOiBzdHJpbmdbXSk6IG51bWJlciB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IHYgPSBnZXRTZWdtZW50KGV4cHJlc3Npb25QYXJ0c1swXSlbMF1bMV07XG4gIHJldHVybiB0eXBlb2YgdiA9PT0gJ251bWJlcicgPyB2IDogdW5kZWZpbmVkO1xufTtcblxuY29uc3QgZ2V0TWludXRlSW50ZXJ2YWwgPSAoZXhwcmVzc2lvblBhcnRzOiBzdHJpbmdbXSk6IG51bWJlciB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IHYgPSBnZXRTZWdtZW50KGV4cHJlc3Npb25QYXJ0c1sxXSlbMF1bMV07XG4gIHJldHVybiB0eXBlb2YgdiA9PT0gJ251bWJlcicgPyB2IDogdW5kZWZpbmVkO1xufTtcblxuY29uc3QgZ2V0SG91ckludGVydmFsID0gKGV4cHJlc3Npb25QYXJ0czogc3RyaW5nW10pOiBudW1iZXIgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCB2ID0gZ2V0U2VnbWVudChleHByZXNzaW9uUGFydHNbMl0pWzBdWzFdO1xuICByZXR1cm4gdHlwZW9mIHYgPT09ICdudW1iZXInID8gdiA6IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IGdldERheUludGVydmFsID0gKGV4cHJlc3Npb25QYXJ0czogc3RyaW5nW10pOiBudW1iZXIgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCB2ID0gZ2V0U2VnbWVudChleHByZXNzaW9uUGFydHNbM10pWzBdWzFdO1xuICByZXR1cm4gdHlwZW9mIHYgPT09ICdudW1iZXInID8gdiA6IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IGdldERheU9mV2VlayA9IChleHByZXNzaW9uUGFydHM6IHN0cmluZ1tdKTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgdiA9IGdldFNlZ21lbnQoZXhwcmVzc2lvblBhcnRzWzVdKVswXVswXTtcbiAgcmV0dXJuIHR5cGVvZiB2ID09PSAnbnVtYmVyJyA/IHYgOiB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBnZXREYXlPZk1vbnRoID0gKGV4cHJlc3Npb25QYXJ0czogc3RyaW5nW10pOiBudW1iZXIgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCB2ID0gZ2V0U2VnbWVudChleHByZXNzaW9uUGFydHNbM10pWzBdWzBdO1xuICByZXR1cm4gdHlwZW9mIHYgPT09ICdudW1iZXInID8gdiA6IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IGdldE1pbnV0ZXMgPSAoZXhwcmVzc2lvblBhcnRzOiBzdHJpbmdbXSk6IG51bWJlciB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IHYgPSBnZXRTZWdtZW50KGV4cHJlc3Npb25QYXJ0c1sxXSlbMF1bMF07XG4gIHJldHVybiB0eXBlb2YgdiA9PT0gJ251bWJlcicgPyB2IDogdW5kZWZpbmVkO1xufTtcblxuY29uc3QgZ2V0SG91cnMgPSAoZXhwcmVzc2lvblBhcnRzOiBzdHJpbmdbXSk6IG51bWJlciB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IHYgPSBnZXRTZWdtZW50KGV4cHJlc3Npb25QYXJ0c1syXSlbMF1bMF07XG4gIHJldHVybiB0eXBlb2YgdiA9PT0gJ251bWJlcicgPyB2IDogdW5kZWZpbmVkO1xufTtcblxuY29uc3QgZ2V0U2VnbWVudCA9ICh2YWx1ZTogc3RyaW5nKTogQXJyYXk8QXJyYXk8c3RyaW5nIHwgbnVtYmVyPj4gPT4ge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHZhbHVlID0gJyonO1xuICB9XG4gIHJldHVybiB2YWx1ZS5zcGxpdCgnLCcpLm1hcChzID0+IHtcbiAgICBpZiAocyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBzID0gJyonO1xuICAgIH1cbiAgICByZXR1cm4gcy5zcGxpdCgnLycpLm1hcChwID0+IHtcbiAgICAgIGNvbnN0IHYgPSBwYXJzZUludChwLCAxMCk7XG4gICAgICByZXR1cm4gaXNOYU4odikgPyBwIDogdjtcbiAgICB9KTtcbiAgfSk7XG59O1xuIl19
|
|
218
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLWZvcm0tY3Jvbi5hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcGFydGljbGVzLWFuZ3VsYXIvc3JjL2xpYi9naW8tZm9ybS1jcm9uL2dpby1mb3JtLWNyb24uYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sU0FBUyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFnQmpDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFVLENBQUM7QUFHdEgsTUFBTSxpQkFBaUIsR0FJakI7SUFDSjtRQUNFLElBQUksRUFBRSxVQUFVO1FBQ2hCLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLEtBQUssRUFBRSx5QkFBeUI7S0FDakM7SUFDRDtRQUNFLElBQUksRUFBRSxVQUFVO1FBQ2hCLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLEtBQUssRUFBRSwyQkFBMkI7S0FDbkM7SUFDRDtRQUNFLElBQUksRUFBRSxRQUFRO1FBQ2QsT0FBTyxFQUFFLGVBQWU7UUFDeEIsS0FBSyxFQUFFLGdDQUFnQztLQUN4QztJQUNEO1FBQ0UsSUFBSSxFQUFFLE9BQU87UUFDYixPQUFPLEVBQUUsZUFBZTtRQUN4QixLQUFLLEVBQUUsZ0NBQWdDO0tBQ3hDO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsUUFBUTtRQUNkLE9BQU8sRUFBRSxhQUFhO1FBQ3RCLEtBQUssRUFBRSxvQ0FBb0M7S0FDNUM7SUFDRDtRQUNFLElBQUksRUFBRSxTQUFTO1FBQ2YsT0FBTyxFQUFFLGFBQWE7UUFDdEIsS0FBSyxFQUFFLHNCQUFzQjtLQUM5QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxPQUFPLEVBQUUsYUFBYTtRQUN0QixLQUFLLEVBQUUsTUFBTTtLQUNkO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsSUFBcUIsRUFBZSxFQUFFO0lBQzFFLE1BQU0sU0FBUyxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDakUsSUFBSSxDQUFDLFNBQVMsRUFBRTtRQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztLQUN2QztJQUVELE9BQU8sbUJBQW1CLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2hELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsY0FBc0IsRUFBZSxFQUFFO0lBQ3pFLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUUvQixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXhDLHFEQUFxRDtJQUNyRCxJQUFJLGNBQWMsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDNUQsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUNoQjtJQUVELE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxNQUFNLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxNQUFNLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUV4QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWxDLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUVuRCxRQUFRLFdBQVcsQ0FBQyxJQUFJLEVBQUU7UUFDeEIsS0FBSyxVQUFVO1lBQ2IsT0FBTztnQkFDTCxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsY0FBYzthQUNmLENBQUM7UUFDSixLQUFLLFVBQVU7WUFDYixPQUFPO2dCQUNMLElBQUksRUFBRSxVQUFVO2dCQUNoQixjQUFjO2FBQ2YsQ0FBQztRQUNKLEtBQUssUUFBUTtZQUNYLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsWUFBWTtnQkFDWixPQUFPO2FBQ1IsQ0FBQztRQUNKLEtBQUssT0FBTztZQUNWLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsV0FBVztnQkFDWCxLQUFLO2dCQUNMLE9BQU87YUFDUixDQUFDO1FBQ0osS0FBSyxRQUFRO1lBQ1gsT0FBTztnQkFDTCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxTQUFTO2dCQUNULEtBQUs7Z0JBQ0wsT0FBTzthQUNSLENBQUM7UUFDSixLQUFLLFNBQVM7WUFDWixPQUFPO2dCQUNMLElBQUksRUFBRSxTQUFTO2dCQUNmLFVBQVU7Z0JBQ1YsS0FBSztnQkFDTCxPQUFPO2FBQ1IsQ0FBQztRQUNKLEtBQUssUUFBUTtZQUNYLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsZ0JBQWdCLEVBQUUsY0FBYzthQUNqQyxDQUFDO0tBQ0w7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFdBQWlELEVBQVUsRUFBRTtJQUM1RixRQUFRLFdBQVcsQ0FBQyxJQUFJLEVBQUU7UUFDeEIsS0FBSyxVQUFVO1lBQ2IsT0FBTyxLQUFLLFdBQVcsQ0FBQyxjQUFjLFlBQVksQ0FBQztRQUNyRCxLQUFLLFVBQVU7WUFDYixPQUFPLE9BQU8sV0FBVyxDQUFDLGNBQWMsVUFBVSxDQUFDO1FBQ3JELEtBQUssUUFBUTtZQUNYLE9BQU8sS0FBSyxXQUFXLENBQUMsT0FBTyxNQUFNLFdBQVcsQ0FBQyxZQUFZLFFBQVEsQ0FBQztRQUN4RSxLQUFLLE9BQU87WUFDVixPQUFPLEtBQUssV0FBVyxDQUFDLE9BQU8sSUFBSSxXQUFXLENBQUMsS0FBSyxNQUFNLFdBQVcsQ0FBQyxXQUFXLE1BQU0sQ0FBQztRQUMxRixLQUFLLFFBQVE7WUFDWCxPQUFPLEtBQUssV0FBVyxDQUFDLE9BQU8sSUFBSSxXQUFXLENBQUMsS0FBSyxRQUFRLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN0RixLQUFLLFNBQVM7WUFDWixPQUFPLEtBQUssV0FBVyxDQUFDLE9BQU8sSUFBSSxXQUFXLENBQUMsS0FBSyxJQUFJLFdBQVcsQ0FBQyxVQUFVLE1BQU0sQ0FBQztRQUN2RixLQUFLLFFBQVE7WUFDWCxPQUFPLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixFQUFFLENBQUM7S0FDNUM7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLGNBQXNCLEVBQVUsRUFBRTtJQUNsRSxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRTtRQUM1QixPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDM0M7SUFFRCxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUMsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sY0FBYyxHQUFHLENBQUMsY0FBc0IsRUFBUSxFQUFFO0lBQ3RELE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFakQsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtRQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7S0FDdkQ7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLGNBQWMsR0FBRyxDQUNyQixjQUFzQixFQUl0QixFQUFFO0lBQ0YsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1FBQzVDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDdkIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFNBQVMsRUFBRTtRQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztLQUM3QztJQUVELE9BQU87UUFDTCxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7UUFDcEIsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPO0tBQzNCLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLGlCQUFpQixHQUFHLENBQUMsZUFBeUIsRUFBc0IsRUFBRTtJQUMxRSxNQUFNLENBQUMsR0FBRyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsT0FBTyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQy9DLENBQUMsQ0FBQztBQUVGLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxlQUF5QixFQUFzQixFQUFFO0lBQzFFLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDL0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQUcsQ0FBQyxlQUF5QixFQUFzQixFQUFFO0lBQ3hFLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDL0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxjQUFjLEdBQUcsQ0FBQyxlQUF5QixFQUFzQixFQUFFO0lBQ3ZFLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDL0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxZQUFZLEdBQUcsQ0FBQyxlQUF5QixFQUFzQixFQUFFO0lBQ3JFLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDL0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxhQUFhLEdBQUcsQ0FBQyxlQUF5QixFQUFzQixFQUFFO0lBQ3RFLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDL0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxlQUF5QixFQUFzQixFQUFFO0lBQ25FLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDL0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxlQUF5QixFQUFzQixFQUFFO0lBQ2pFLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDL0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFhLEVBQWlDLEVBQUU7SUFDbEUsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1FBQ3ZCLEtBQUssR0FBRyxHQUFHLENBQUM7S0FDYjtJQUNELE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDOUIsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFO1lBQ25CLENBQUMsR0FBRyxHQUFHLENBQUM7U0FDVDtRQUNELE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDMUIsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMxQixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjMgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgQ3JvbnN0cnVlIGZyb20gJ2Nyb25zdHJ1ZS9pMThuJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyb25EaXNwbGF5IHtcbiAgbW9kZTogQ3JvbkRpc3BsYXlNb2RlO1xuXG4gIHNlY29uZEludGVydmFsPzogbnVtYmVyO1xuICBtaW51dGVJbnRlcnZhbD86IG51bWJlcjtcbiAgaG91ckludGVydmFsPzogbnVtYmVyO1xuICBkYXlJbnRlcnZhbD86IG51bWJlcjtcbiAgZGF5T2ZXZWVrPzogbnVtYmVyO1xuICBkYXlPZk1vbnRoPzogbnVtYmVyO1xuICBjdXN0b21FeHByZXNzaW9uPzogc3RyaW5nO1xuXG4gIGhvdXJzPzogbnVtYmVyO1xuICBtaW51dGVzPzogbnVtYmVyO1xufVxuZXhwb3J0IGNvbnN0IENST05fRElTUExBWV9NT0RFUyA9IFsnc2Vjb25kbHknLCAnbWludXRlbHknLCAnaG91cmx5JywgJ2RhaWx5JywgJ3dlZWtseScsICdtb250aGx5JywgJ2N1c3RvbSddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgQ3JvbkRpc3BsYXlNb2RlID0gKHR5cGVvZiBDUk9OX0RJU1BMQVlfTU9ERVMpW251bWJlcl07XG5cbmNvbnN0IERJU1BMQVlfTU9ERV9MSVNUOiB7XG4gIG1vZGU6IENyb25EaXNwbGF5TW9kZTtcbiAgZGVmYXVsdDogc3RyaW5nO1xuICByZWdleDogUmVnRXhwO1xufVtdID0gW1xuICB7XG4gICAgbW9kZTogJ3NlY29uZGx5JyxcbiAgICBkZWZhdWx0OiAnKi8xICogKiAqICogKicsXG4gICAgcmVnZXg6IC9eKFxcKlxcL1xcZCtcXHMpKFxcKlxccyl7NH1cXCovLFxuICB9LFxuICB7XG4gICAgbW9kZTogJ21pbnV0ZWx5JyxcbiAgICBkZWZhdWx0OiAnMCAqLzEgKiAqICogKicsXG4gICAgcmVnZXg6IC9eMFxcc1xcKlxcL1xcZCtcXHMoXFwqXFxzKXszfVxcKiQvLFxuICB9LFxuICB7XG4gICAgbW9kZTogJ2hvdXJseScsXG4gICAgZGVmYXVsdDogJzAgMCAqLzEgKiAqIConLFxuICAgIHJlZ2V4OiAvXjBcXHNcXGQrXFxzXFwqXFwvXFxkK1xccyhcXCpcXHMpezJ9XFwqJC8sXG4gIH0sXG4gIHtcbiAgICBtb2RlOiAnZGFpbHknLFxuICAgIGRlZmF1bHQ6ICcwIDAgMCAqLzEgKiAqJyxcbiAgICByZWdleDogL14wXFxzXFxkK1xcc1xcZCtcXHNcXCpcXC9cXGQrXFxzXFwqXFxzXFwqJC8sXG4gIH0sXG4gIHtcbiAgICBtb2RlOiAnd2Vla2x5JyxcbiAgICBkZWZhdWx0OiAnMCAwIDAgKiAqIDAnLFxuICAgIHJlZ2V4OiAvXihcXGR7MSwyfVxccyl7MiwzfShcXCpcXHMpezJ9XFxkezEsMn0kLyxcbiAgfSxcbiAge1xuICAgIG1vZGU6ICdtb250aGx5JyxcbiAgICBkZWZhdWx0OiAnMCAwIDAgMSAqIConLFxuICAgIHJlZ2V4OiAvXihcXGQrXFxzKXszLDR9XFwqXFxzXFwqJC8sXG4gIH0sXG4gIHtcbiAgICBtb2RlOiAnY3VzdG9tJyxcbiAgICBkZWZhdWx0OiAnKiAqICogKiAqIConLFxuICAgIHJlZ2V4OiAvXi4qJC8sXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdENyb25EaXNwbGF5ID0gKG1vZGU6IENyb25EaXNwbGF5TW9kZSk6IENyb25EaXNwbGF5ID0+IHtcbiAgY29uc3QgbW9kZUZvdW5kID0gRElTUExBWV9NT0RFX0xJU1QuZmluZChtZiA9PiBtZi5tb2RlID09PSBtb2RlKTtcbiAgaWYgKCFtb2RlRm91bmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY3JvbiBtb2RlLicpO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlQ3JvbkV4cHJlc3Npb24obW9kZUZvdW5kLmRlZmF1bHQpO1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlQ3JvbkV4cHJlc3Npb24gPSAoY3JvbkV4cHJlc3Npb246IHN0cmluZyk6IENyb25EaXNwbGF5ID0+IHtcbiAgdGhyb3dJZkludmFsaWQoY3JvbkV4cHJlc3Npb24pO1xuXG4gIGNvbnN0IHBhcnRzID0gY3JvbkV4cHJlc3Npb24uc3BsaXQoJyAnKTtcblxuICAvLyBOb3JtYWxpemUgY3JvbiBzbyB0aGF0IHNlY29uZCBzZWdtZW50IGlzIGluY2x1ZGVkLlxuICBpZiAoY3JvbkV4cHJlc3Npb24gJiYgY3JvbkV4cHJlc3Npb24uc3BsaXQoJyAnKS5sZW5ndGggPT09IDYpIHtcbiAgICBwYXJ0cy5wdXNoKCcnKTtcbiAgfVxuXG4gIGNvbnN0IGhvdXJJbnRlcnZhbCA9IGdldEhvdXJJbnRlcnZhbChwYXJ0cyk7XG4gIGNvbnN0IG1pbnV0ZUludGVydmFsID0gZ2V0TWludXRlSW50ZXJ2YWwocGFydHMpO1xuICBjb25zdCBzZWNvbmRJbnRlcnZhbCA9IGdldFNlY29uZEludGVydmFsKHBhcnRzKTtcbiAgY29uc3QgZGF5SW50ZXJ2YWwgPSBnZXREYXlJbnRlcnZhbChwYXJ0cyk7XG4gIGNvbnN0IGRheU9mV2VlayA9IGdldERheU9mV2VlayhwYXJ0cyk7XG4gIGNvbnN0IGRheU9mTW9udGggPSBnZXREYXlPZk1vbnRoKHBhcnRzKTtcblxuICBjb25zdCBob3VycyA9IGdldEhvdXJzKHBhcnRzKTtcbiAgY29uc3QgbWludXRlcyA9IGdldE1pbnV0ZXMocGFydHMpO1xuXG4gIGNvbnN0IGRpc3BsYXlNb2RlID0gZ2V0RGlzcGxheU1vZGUoY3JvbkV4cHJlc3Npb24pO1xuXG4gIHN3aXRjaCAoZGlzcGxheU1vZGUubW9kZSkge1xuICAgIGNhc2UgJ3NlY29uZGx5JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1vZGU6ICdzZWNvbmRseScsXG4gICAgICAgIHNlY29uZEludGVydmFsLFxuICAgICAgfTtcbiAgICBjYXNlICdtaW51dGVseSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtb2RlOiAnbWludXRlbHknLFxuICAgICAgICBtaW51dGVJbnRlcnZhbCxcbiAgICAgIH07XG4gICAgY2FzZSAnaG91cmx5JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1vZGU6ICdob3VybHknLFxuICAgICAgICBob3VySW50ZXJ2YWwsXG4gICAgICAgIG1pbnV0ZXMsXG4gICAgICB9O1xuICAgIGNhc2UgJ2RhaWx5JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1vZGU6ICdkYWlseScsXG4gICAgICAgIGRheUludGVydmFsLFxuICAgICAgICBob3VycyxcbiAgICAgICAgbWludXRlcyxcbiAgICAgIH07XG4gICAgY2FzZSAnd2Vla2x5JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1vZGU6ICd3ZWVrbHknLFxuICAgICAgICBkYXlPZldlZWssXG4gICAgICAgIGhvdXJzLFxuICAgICAgICBtaW51dGVzLFxuICAgICAgfTtcbiAgICBjYXNlICdtb250aGx5JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1vZGU6ICdtb250aGx5JyxcbiAgICAgICAgZGF5T2ZNb250aCxcbiAgICAgICAgaG91cnMsXG4gICAgICAgIG1pbnV0ZXMsXG4gICAgICB9O1xuICAgIGNhc2UgJ2N1c3RvbSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtb2RlOiAnY3VzdG9tJyxcbiAgICAgICAgY3VzdG9tRXhwcmVzc2lvbjogY3JvbkV4cHJlc3Npb24sXG4gICAgICB9O1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdG9Dcm9uRXhwcmVzc2lvbiA9IChjcm9uRGlzcGxheTogT21pdDxDcm9uRGlzcGxheSwgJ2Nyb25EZXNjcmlwdGlvbic+KTogc3RyaW5nID0+IHtcbiAgc3dpdGNoIChjcm9uRGlzcGxheS5tb2RlKSB7XG4gICAgY2FzZSAnc2Vjb25kbHknOlxuICAgICAgcmV0dXJuIGAqLyR7Y3JvbkRpc3BsYXkuc2Vjb25kSW50ZXJ2YWx9ICogKiAqICogKmA7XG4gICAgY2FzZSAnbWludXRlbHknOlxuICAgICAgcmV0dXJuIGAwICovJHtjcm9uRGlzcGxheS5taW51dGVJbnRlcnZhbH0gKiAqICogKmA7XG4gICAgY2FzZSAnaG91cmx5JzpcbiAgICAgIHJldHVybiBgMCAke2Nyb25EaXNwbGF5Lm1pbnV0ZXN9ICovJHtjcm9uRGlzcGxheS5ob3VySW50ZXJ2YWx9ICogKiAqYDtcbiAgICBjYXNlICdkYWlseSc6XG4gICAgICByZXR1cm4gYDAgJHtjcm9uRGlzcGxheS5taW51dGVzfSAke2Nyb25EaXNwbGF5LmhvdXJzfSAqLyR7Y3JvbkRpc3BsYXkuZGF5SW50ZXJ2YWx9ICogKmA7XG4gICAgY2FzZSAnd2Vla2x5JzpcbiAgICAgIHJldHVybiBgMCAke2Nyb25EaXNwbGF5Lm1pbnV0ZXN9ICR7Y3JvbkRpc3BsYXkuaG91cnN9ICogKiAke2Nyb25EaXNwbGF5LmRheU9mV2Vla31gO1xuICAgIGNhc2UgJ21vbnRobHknOlxuICAgICAgcmV0dXJuIGAwICR7Y3JvbkRpc3BsYXkubWludXRlc30gJHtjcm9uRGlzcGxheS5ob3Vyc30gJHtjcm9uRGlzcGxheS5kYXlPZk1vbnRofSAqICpgO1xuICAgIGNhc2UgJ2N1c3RvbSc6XG4gICAgICByZXR1cm4gYCR7Y3JvbkRpc3BsYXkuY3VzdG9tRXhwcmVzc2lvbn1gO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdG9Dcm9uRGVzY3JpcHRpb24gPSAoY3JvbkV4cHJlc3Npb246IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHRocm93SWZJbnZhbGlkKGNyb25FeHByZXNzaW9uKTtcblxuICBpZiAoIWlzRW1wdHkoY3JvbkV4cHJlc3Npb24pKSB7XG4gICAgcmV0dXJuIENyb25zdHJ1ZS50b1N0cmluZyhjcm9uRXhwcmVzc2lvbik7XG4gIH1cblxuICByZXR1cm4gJyc7XG59O1xuXG4vKipcbiAqIFNpbXBsZSB2YWxpZGF0aW9uIHRvIGVuc3VyZSB0aGF0IHRoZSBjcm9uIGV4cHJlc3Npb24gaGFzIDYgcGFydHMuXG4gKiBOb3RlIDogVGhlIGZ1bGwgY3JvbiBleHByZXNzaW9uIHZhbGlkYXRpb24gaXMgZG9uZSBieSB0aGUgYmFja2VuZC5cbiAqL1xuY29uc3QgdGhyb3dJZkludmFsaWQgPSAoY3JvbkV4cHJlc3Npb246IHN0cmluZyk6IHZvaWQgPT4ge1xuICBjb25zdCBwYXJ0cyA9IGNyb25FeHByZXNzaW9uLnRyaW0oKS5zcGxpdCgvXFxzKy8pO1xuXG4gIGlmIChwYXJ0cy5sZW5ndGggIT0gNikge1xuICAgIHRocm93IG5ldyBFcnJvcignQ3JvbiBleHByZXNzaW9uIG11c3QgaGF2ZSA2IHBhcnRzLicpO1xuICB9XG59O1xuXG5jb25zdCBnZXREaXNwbGF5TW9kZSA9IChcbiAgY3JvbkV4cHJlc3Npb246IHN0cmluZyxcbik6IHtcbiAgbW9kZTogQ3JvbkRpc3BsYXlNb2RlO1xuICBkZWZhdWx0OiBzdHJpbmc7XG59ID0+IHtcbiAgY29uc3QgbW9kZUZvdW5kID0gRElTUExBWV9NT0RFX0xJU1QuZmluZChtZiA9PiB7XG4gICAgY29uc3QgcmVnZXggPSBtZi5yZWdleDtcbiAgICByZXR1cm4gcmVnZXgudGVzdChjcm9uRXhwcmVzc2lvbik7XG4gIH0pO1xuXG4gIGlmICghbW9kZUZvdW5kKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNyb24gZXhwcmVzc2lvbi4nKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW9kZTogbW9kZUZvdW5kLm1vZGUsXG4gICAgZGVmYXVsdDogbW9kZUZvdW5kLmRlZmF1bHQsXG4gIH07XG59O1xuXG5jb25zdCBnZXRTZWNvbmRJbnRlcnZhbCA9IChleHByZXNzaW9uUGFydHM6IHN0cmluZ1tdKTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgdiA9IGdldFNlZ21lbnQoZXhwcmVzc2lvblBhcnRzWzBdKVswXVsxXTtcbiAgcmV0dXJuIHR5cGVvZiB2ID09PSAnbnVtYmVyJyA/IHYgOiB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBnZXRNaW51dGVJbnRlcnZhbCA9IChleHByZXNzaW9uUGFydHM6IHN0cmluZ1tdKTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgdiA9IGdldFNlZ21lbnQoZXhwcmVzc2lvblBhcnRzWzFdKVswXVsxXTtcbiAgcmV0dXJuIHR5cGVvZiB2ID09PSAnbnVtYmVyJyA/IHYgOiB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBnZXRIb3VySW50ZXJ2YWwgPSAoZXhwcmVzc2lvblBhcnRzOiBzdHJpbmdbXSk6IG51bWJlciB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IHYgPSBnZXRTZWdtZW50KGV4cHJlc3Npb25QYXJ0c1syXSlbMF1bMV07XG4gIHJldHVybiB0eXBlb2YgdiA9PT0gJ251bWJlcicgPyB2IDogdW5kZWZpbmVkO1xufTtcblxuY29uc3QgZ2V0RGF5SW50ZXJ2YWwgPSAoZXhwcmVzc2lvblBhcnRzOiBzdHJpbmdbXSk6IG51bWJlciB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IHYgPSBnZXRTZWdtZW50KGV4cHJlc3Npb25QYXJ0c1szXSlbMF1bMV07XG4gIHJldHVybiB0eXBlb2YgdiA9PT0gJ251bWJlcicgPyB2IDogdW5kZWZpbmVkO1xufTtcblxuY29uc3QgZ2V0RGF5T2ZXZWVrID0gKGV4cHJlc3Npb25QYXJ0czogc3RyaW5nW10pOiBudW1iZXIgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCB2ID0gZ2V0U2VnbWVudChleHByZXNzaW9uUGFydHNbNV0pWzBdWzBdO1xuICByZXR1cm4gdHlwZW9mIHYgPT09ICdudW1iZXInID8gdiA6IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IGdldERheU9mTW9udGggPSAoZXhwcmVzc2lvblBhcnRzOiBzdHJpbmdbXSk6IG51bWJlciB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IHYgPSBnZXRTZWdtZW50KGV4cHJlc3Npb25QYXJ0c1szXSlbMF1bMF07XG4gIHJldHVybiB0eXBlb2YgdiA9PT0gJ251bWJlcicgPyB2IDogdW5kZWZpbmVkO1xufTtcblxuY29uc3QgZ2V0TWludXRlcyA9IChleHByZXNzaW9uUGFydHM6IHN0cmluZ1tdKTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgdiA9IGdldFNlZ21lbnQoZXhwcmVzc2lvblBhcnRzWzFdKVswXVswXTtcbiAgcmV0dXJuIHR5cGVvZiB2ID09PSAnbnVtYmVyJyA/IHYgOiB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBnZXRIb3VycyA9IChleHByZXNzaW9uUGFydHM6IHN0cmluZ1tdKTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgdiA9IGdldFNlZ21lbnQoZXhwcmVzc2lvblBhcnRzWzJdKVswXVswXTtcbiAgcmV0dXJuIHR5cGVvZiB2ID09PSAnbnVtYmVyJyA/IHYgOiB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBnZXRTZWdtZW50ID0gKHZhbHVlOiBzdHJpbmcpOiBBcnJheTxBcnJheTxzdHJpbmcgfCBudW1iZXI+PiA9PiB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmFsdWUgPSAnKic7XG4gIH1cbiAgcmV0dXJuIHZhbHVlLnNwbGl0KCcsJykubWFwKHMgPT4ge1xuICAgIGlmIChzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHMgPSAnKic7XG4gICAgfVxuICAgIHJldHVybiBzLnNwbGl0KCcvJykubWFwKHAgPT4ge1xuICAgICAgY29uc3QgdiA9IHBhcnNlSW50KHAsIDEwKTtcbiAgICAgIHJldHVybiBpc05hTih2KSA/IHAgOiB2O1xuICAgIH0pO1xuICB9KTtcbn07XG4iXX0=
|