@plumile/router 0.1.12 → 0.1.13

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 (68) hide show
  1. package/README.md +426 -13
  2. package/lib/esm/index.d.ts +4 -0
  3. package/lib/esm/index.d.ts.map +1 -1
  4. package/lib/esm/index.js +5 -1
  5. package/lib/esm/routing/createRouter.d.ts +1 -0
  6. package/lib/esm/routing/createRouter.d.ts.map +1 -1
  7. package/lib/esm/routing/createRouter.js +399 -359
  8. package/lib/esm/routing/devtools.d.ts +20 -0
  9. package/lib/esm/routing/devtools.d.ts.map +1 -0
  10. package/lib/esm/routing/devtools.js +678 -0
  11. package/lib/esm/routing/filters.d.ts +97 -0
  12. package/lib/esm/routing/filters.d.ts.map +1 -0
  13. package/lib/esm/routing/filters.js +557 -0
  14. package/lib/esm/routing/index.d.ts +6 -0
  15. package/lib/esm/routing/index.d.ts.map +1 -1
  16. package/lib/esm/routing/index.js +7 -1
  17. package/lib/esm/routing/useActiveFilters.d.ts +9 -0
  18. package/lib/esm/routing/useActiveFilters.d.ts.map +1 -0
  19. package/lib/esm/routing/useActiveFilters.js +38 -0
  20. package/lib/esm/routing/useFilterState.d.ts +10 -0
  21. package/lib/esm/routing/useFilterState.d.ts.map +1 -0
  22. package/lib/esm/routing/useFilterState.js +14 -0
  23. package/lib/esm/routing/useNavigate.d.ts +7 -0
  24. package/lib/esm/routing/useNavigate.d.ts.map +1 -1
  25. package/lib/esm/routing/useNavigate.js +1 -1
  26. package/lib/esm/routing/useNavigateWithQuery.d.ts +15 -0
  27. package/lib/esm/routing/useNavigateWithQuery.d.ts.map +1 -0
  28. package/lib/esm/routing/useNavigateWithQuery.js +95 -0
  29. package/lib/esm/routing/useQueryObject.d.ts +18 -0
  30. package/lib/esm/routing/useQueryObject.d.ts.map +1 -0
  31. package/lib/esm/routing/useQueryObject.js +107 -0
  32. package/lib/esm/routing/useStableRefEquality.d.ts +5 -0
  33. package/lib/esm/routing/useStableRefEquality.d.ts.map +1 -0
  34. package/lib/esm/routing/useStableRefEquality.js +47 -0
  35. package/lib/esm/tools/buildSearch.d.ts +8 -2
  36. package/lib/esm/tools/buildSearch.d.ts.map +1 -1
  37. package/lib/esm/tools/buildSearch.js +216 -12
  38. package/lib/esm/types.d.ts +19 -0
  39. package/lib/esm/types.d.ts.map +1 -1
  40. package/lib/esm/types.js +1 -1
  41. package/lib/tsconfig.esm.tsbuildinfo +1 -1
  42. package/lib/types/index.d.ts +4 -0
  43. package/lib/types/index.d.ts.map +1 -1
  44. package/lib/types/routing/createRouter.d.ts +1 -0
  45. package/lib/types/routing/createRouter.d.ts.map +1 -1
  46. package/lib/types/routing/devtools.d.ts +20 -0
  47. package/lib/types/routing/devtools.d.ts.map +1 -0
  48. package/lib/types/routing/filters.d.ts +97 -0
  49. package/lib/types/routing/filters.d.ts.map +1 -0
  50. package/lib/types/routing/index.d.ts +6 -0
  51. package/lib/types/routing/index.d.ts.map +1 -1
  52. package/lib/types/routing/useActiveFilters.d.ts +9 -0
  53. package/lib/types/routing/useActiveFilters.d.ts.map +1 -0
  54. package/lib/types/routing/useFilterState.d.ts +10 -0
  55. package/lib/types/routing/useFilterState.d.ts.map +1 -0
  56. package/lib/types/routing/useNavigate.d.ts +7 -0
  57. package/lib/types/routing/useNavigate.d.ts.map +1 -1
  58. package/lib/types/routing/useNavigateWithQuery.d.ts +15 -0
  59. package/lib/types/routing/useNavigateWithQuery.d.ts.map +1 -0
  60. package/lib/types/routing/useQueryObject.d.ts +18 -0
  61. package/lib/types/routing/useQueryObject.d.ts.map +1 -0
  62. package/lib/types/routing/useStableRefEquality.d.ts +5 -0
  63. package/lib/types/routing/useStableRefEquality.d.ts.map +1 -0
  64. package/lib/types/tools/buildSearch.d.ts +8 -2
  65. package/lib/types/tools/buildSearch.d.ts.map +1 -1
  66. package/lib/types/types.d.ts +19 -0
  67. package/lib/types/types.d.ts.map +1 -1
  68. package/package.json +3 -3
@@ -1,26 +1,230 @@
1
+ import { buildFiltersQuery, OPERATOR_PRIORITY, } from '../routing/filters.js';
1
2
  function serializeValue(descriptor, value) {
2
3
  return descriptor.serialize(value);
3
4
  }
4
5
  export function buildSearch(query, schema, opts) {
5
- if (query == null)
6
+ const hasFilters = opts !== undefined &&
7
+ opts.filters !== undefined &&
8
+ opts.filterSchema !== undefined;
9
+ if (query == null && !hasFilters) {
6
10
  return '';
7
- const { omitDefaults = false, sortKeys = true } = opts ?? {};
8
- let keys = Object.keys(query);
11
+ }
12
+ const { omitDefaults = false, sortKeys = true, filters, filterSchema, omitEmptyFilters = true, pruneEmptyFilterOperators = true, } = opts ?? {};
13
+ let workingQuery = {};
14
+ if (query != null) {
15
+ workingQuery = { ...query };
16
+ }
17
+ if (hasFilters && filterSchema !== undefined && filters !== undefined) {
18
+ let emptySchema = false;
19
+ if (filterSchema !== undefined && filterSchema !== null) {
20
+ const inner = filterSchema
21
+ .schema;
22
+ let keys = [];
23
+ if (inner !== undefined) {
24
+ keys = Object.keys(inner);
25
+ }
26
+ if (keys.length === 0) {
27
+ emptySchema = true;
28
+ }
29
+ }
30
+ let effectiveFilters = filters;
31
+ if (pruneEmptyFilterOperators) {
32
+ const pruned = {};
33
+ for (const [field, ops] of Object.entries(filters)) {
34
+ if (ops != null && typeof ops === 'object') {
35
+ const nextOps = {};
36
+ for (const [op, value] of Object.entries(ops)) {
37
+ if (value == null) {
38
+ }
39
+ else if (op === 'between') {
40
+ if (Array.isArray(value)) {
41
+ const clean = [];
42
+ for (const t of value) {
43
+ if (Array.isArray(t) && t.length === 2) {
44
+ clean.push(t);
45
+ }
46
+ }
47
+ if (clean.length > 0)
48
+ nextOps[op] = clean;
49
+ }
50
+ }
51
+ else if (Array.isArray(value)) {
52
+ if (value.length > 0)
53
+ nextOps[op] = value.slice();
54
+ }
55
+ else if (typeof value === 'boolean') {
56
+ nextOps[op] = value;
57
+ }
58
+ }
59
+ if (Object.keys(nextOps).length > 0) {
60
+ pruned[field] = nextOps;
61
+ }
62
+ }
63
+ }
64
+ effectiveFilters = pruned;
65
+ }
66
+ if (!emptySchema) {
67
+ workingQuery = buildFiltersQuery(filterSchema, workingQuery, effectiveFilters);
68
+ }
69
+ else {
70
+ const flat = {};
71
+ for (const [field, ops] of Object.entries(effectiveFilters)) {
72
+ if (ops !== undefined && ops !== null && typeof ops === 'object') {
73
+ for (const [op, value] of Object.entries(ops)) {
74
+ if (value === undefined || value === null) {
75
+ }
76
+ else {
77
+ const key = `${field}.${op}`;
78
+ if (op === 'exists' && typeof value === 'boolean') {
79
+ if (value) {
80
+ flat[key] = 'true';
81
+ }
82
+ else {
83
+ flat[key] = 'false';
84
+ }
85
+ }
86
+ else if (op === 'between') {
87
+ const ranges = value;
88
+ for (const r of ranges) {
89
+ if (Array.isArray(r) && r.length === 2) {
90
+ const a = r[0];
91
+ const b = r[1];
92
+ const pair = [String(a), String(b)];
93
+ const existing = flat[key];
94
+ if (existing === undefined) {
95
+ flat[key] = pair;
96
+ }
97
+ else if (Array.isArray(existing)) {
98
+ flat[key] = [...existing, ...pair];
99
+ }
100
+ else {
101
+ flat[key] = [existing, ...pair];
102
+ }
103
+ }
104
+ }
105
+ }
106
+ else if (Array.isArray(value)) {
107
+ for (const v of value) {
108
+ const sv = String(v);
109
+ const existing = flat[key];
110
+ if (existing === undefined) {
111
+ flat[key] = sv;
112
+ }
113
+ else if (Array.isArray(existing)) {
114
+ existing.push(sv);
115
+ }
116
+ else {
117
+ flat[key] = [existing, sv];
118
+ }
119
+ }
120
+ }
121
+ }
122
+ }
123
+ }
124
+ }
125
+ workingQuery = { ...workingQuery, ...flat };
126
+ }
127
+ if (omitEmptyFilters) {
128
+ const next = {};
129
+ for (const [k, v] of Object.entries(workingQuery)) {
130
+ if (Array.isArray(v) && v.length === 0) {
131
+ }
132
+ else {
133
+ next[k] = v;
134
+ }
135
+ }
136
+ workingQuery = next;
137
+ }
138
+ }
139
+ if (Object.keys(workingQuery).length === 0) {
140
+ return '';
141
+ }
142
+ let keys = Object.keys(workingQuery);
9
143
  if (sortKeys) {
10
144
  if (schema != null) {
11
145
  const schemaKeys = Object.keys(schema);
12
- const ordered = [];
146
+ const schemaOrdered = [];
13
147
  for (const sk of schemaKeys) {
14
- if (Object.prototype.hasOwnProperty.call(query, sk)) {
15
- ordered.push(sk);
148
+ if (Object.prototype.hasOwnProperty.call(workingQuery, sk)) {
149
+ schemaOrdered.push(sk);
150
+ }
151
+ }
152
+ const filterKeys = [];
153
+ const otherKeys = [];
154
+ if (filterSchema != null) {
155
+ const fsSchema = filterSchema.schema;
156
+ const fieldSet = new Set(Object.keys(fsSchema));
157
+ for (const k of keys) {
158
+ if (!schemaKeys.includes(k)) {
159
+ const dot = k.indexOf('.');
160
+ if (dot > 0) {
161
+ const field = k.slice(0, dot);
162
+ if (fieldSet.has(field)) {
163
+ filterKeys.push(k);
164
+ }
165
+ else {
166
+ otherKeys.push(k);
167
+ }
168
+ }
169
+ else {
170
+ otherKeys.push(k);
171
+ }
172
+ }
16
173
  }
17
174
  }
18
- for (const k of keys) {
19
- if (!schemaKeys.includes(k)) {
20
- ordered.push(k);
175
+ else {
176
+ for (const k of keys) {
177
+ if (!schemaKeys.includes(k))
178
+ otherKeys.push(k);
179
+ }
180
+ }
181
+ otherKeys.sort();
182
+ const grouped = {};
183
+ for (const fk of filterKeys) {
184
+ const dot = fk.indexOf('.');
185
+ let field = fk;
186
+ if (dot > 0) {
187
+ field = fk.slice(0, dot);
188
+ }
189
+ grouped[field] ??= [];
190
+ {
191
+ const existing = grouped[field];
192
+ if (Array.isArray(existing)) {
193
+ existing.push(fk);
194
+ }
195
+ }
196
+ }
197
+ const orderedFields = Object.keys(grouped).sort();
198
+ const orderedFilterKeys = [];
199
+ for (const field of orderedFields) {
200
+ const ops = grouped[field];
201
+ if (ops !== undefined) {
202
+ ops.sort((a, b) => {
203
+ const opA = a.slice(a.indexOf('.') + 1);
204
+ const opB = b.slice(b.indexOf('.') + 1);
205
+ const ia = OPERATOR_PRIORITY.indexOf(opA);
206
+ const ib = OPERATOR_PRIORITY.indexOf(opB);
207
+ let sa = ia;
208
+ if (sa === -1)
209
+ sa = 999;
210
+ let sb = ib;
211
+ if (sb === -1)
212
+ sb = 999;
213
+ if (sa < sb)
214
+ return -1;
215
+ if (sa > sb)
216
+ return 1;
217
+ if (opA < opB)
218
+ return -1;
219
+ if (opA > opB)
220
+ return 1;
221
+ return 0;
222
+ });
223
+ for (const ok of ops)
224
+ orderedFilterKeys.push(ok);
21
225
  }
22
226
  }
23
- keys = ordered;
227
+ keys = [...schemaOrdered, ...otherKeys, ...orderedFilterKeys];
24
228
  }
25
229
  else {
26
230
  keys.sort();
@@ -28,7 +232,7 @@ export function buildSearch(query, schema, opts) {
28
232
  }
29
233
  const parts = [];
30
234
  for (const key of keys) {
31
- const value = query[key];
235
+ const value = workingQuery[key];
32
236
  if (value == null) {
33
237
  }
34
238
  else {
@@ -57,4 +261,4 @@ export function buildSearch(query, schema, opts) {
57
261
  return '';
58
262
  return `?${parts.join('&')}`;
59
263
  }
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRTZWFyY2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbHMvYnVpbGRTZWFyY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsU0FBUyxjQUFjLENBQ3JCLFVBQWdDLEVBQ2hDLEtBQWM7SUFFZCxPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBWSxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUdELE1BQU0sVUFBVSxXQUFXLENBQ3pCLEtBQXNDLEVBQ3RDLE1BQStCLEVBQy9CLElBQXFEO0lBRXJELElBQUksS0FBSyxJQUFJLElBQUk7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUM3QixNQUFNLEVBQUUsWUFBWSxHQUFHLEtBQUssRUFBRSxRQUFRLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUM3RCxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLElBQUksUUFBUSxFQUFFLENBQUM7UUFDYixJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUVuQixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztZQUM3QixLQUFLLE1BQU0sRUFBRSxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUM1QixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDcEQsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDbkIsQ0FBQztZQUNILENBQUM7WUFDRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUM1QixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsQixDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksR0FBRyxPQUFPLENBQUM7UUFDakIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUNELE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztJQUMzQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUVwQixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sVUFBVSxHQUFHLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pDLElBQUksVUFBVSxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUN2QixNQUFNLFNBQVMsR0FDYixVQUFVLENBQUMsVUFBVSxJQUFJLEtBQUssS0FBSyxVQUFVLENBQUMsWUFBWSxDQUFDO2dCQUM3RCxNQUFNLFdBQVcsR0FBRyxZQUFZLElBQUksU0FBUyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ2pCLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ2pELE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTt3QkFDbkIsS0FBSyxDQUFDLElBQUksQ0FDUixHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzlELENBQUM7b0JBQ0osQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUM7aUJBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDbEIsS0FBSyxDQUFDLElBQUksQ0FDUixHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzlELENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sS0FBSyxDQUFDLElBQUksQ0FDUixHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQ2xFLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ2xDLE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUXVlcnlTY2hlbWEsIFF1ZXJ5RGVzY3JpcHRvciB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuLyoqIFNlcmlhbGl6ZSBhIHNpbmdsZSB2YWx1ZSB3aXRoIGl0cyBkZXNjcmlwdG9yICovXG5mdW5jdGlvbiBzZXJpYWxpemVWYWx1ZShcbiAgZGVzY3JpcHRvcjogUXVlcnlEZXNjcmlwdG9yPGFueT4sXG4gIHZhbHVlOiB1bmtub3duLFxuKTogc3RyaW5nW10ge1xuICByZXR1cm4gZGVzY3JpcHRvci5zZXJpYWxpemUodmFsdWUgYXMgYW55KTtcbn1cblxuLyoqIFNlcmlhbGl6ZSBhIHF1ZXJ5IG9iamVjdCB1c2luZyBhbiBvcHRpb25hbCBzY2hlbWEgKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFNlYXJjaChcbiAgcXVlcnk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQsXG4gIHNjaGVtYTogUXVlcnlTY2hlbWEgfCB1bmRlZmluZWQsXG4gIG9wdHM/OiB7IG9taXREZWZhdWx0cz86IGJvb2xlYW47IHNvcnRLZXlzPzogYm9vbGVhbiB9LFxuKTogc3RyaW5nIHtcbiAgaWYgKHF1ZXJ5ID09IG51bGwpIHJldHVybiAnJztcbiAgY29uc3QgeyBvbWl0RGVmYXVsdHMgPSBmYWxzZSwgc29ydEtleXMgPSB0cnVlIH0gPSBvcHRzID8/IHt9O1xuICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKHF1ZXJ5KTtcbiAgaWYgKHNvcnRLZXlzKSB7XG4gICAgaWYgKHNjaGVtYSAhPSBudWxsKSB7XG4gICAgICAvLyBPcmRlciBrZXlzIGJhc2VkIG9uIHNjaGVtYSBkZWNsYXJhdGlvbiBvcmRlciwgdGhlbiBhcHBlbmQgYW55IGV4dHJhIGtleXNcbiAgICAgIGNvbnN0IHNjaGVtYUtleXMgPSBPYmplY3Qua2V5cyhzY2hlbWEpO1xuICAgICAgY29uc3Qgb3JkZXJlZDogc3RyaW5nW10gPSBbXTtcbiAgICAgIGZvciAoY29uc3Qgc2sgb2Ygc2NoZW1hS2V5cykge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHF1ZXJ5LCBzaykpIHtcbiAgICAgICAgICBvcmRlcmVkLnB1c2goc2spO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGsgb2Yga2V5cykge1xuICAgICAgICBpZiAoIXNjaGVtYUtleXMuaW5jbHVkZXMoaykpIHtcbiAgICAgICAgICBvcmRlcmVkLnB1c2goayk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGtleXMgPSBvcmRlcmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICBrZXlzLnNvcnQoKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHF1ZXJ5W2tleV07XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIC8vIHNraXAgbnVsbGlzaCB2YWx1ZXNcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZGVzY3JpcHRvciA9IHNjaGVtYT8uW2tleV07XG4gICAgICBpZiAoZGVzY3JpcHRvciAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGlzRGVmYXVsdCA9XG4gICAgICAgICAgZGVzY3JpcHRvci5oYXNEZWZhdWx0ICYmIHZhbHVlID09PSBkZXNjcmlwdG9yLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgY29uc3Qgc2tpcERlZmF1bHQgPSBvbWl0RGVmYXVsdHMgJiYgaXNEZWZhdWx0O1xuICAgICAgICBpZiAoIXNraXBEZWZhdWx0KSB7XG4gICAgICAgICAgY29uc3QgdmFsdWVzID0gc2VyaWFsaXplVmFsdWUoZGVzY3JpcHRvciwgdmFsdWUpO1xuICAgICAgICAgIHZhbHVlcy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKFxuICAgICAgICAgICAgICBgJHtlbmNvZGVVUklDb21wb25lbnQoa2V5KX09JHtlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKHYpKX1gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgcGFydHMucHVzaChcbiAgICAgICAgICAgIGAke2VuY29kZVVSSUNvbXBvbmVudChrZXkpfT0ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcodikpfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0cy5wdXNoKFxuICAgICAgICAgIGAke2VuY29kZVVSSUNvbXBvbmVudChrZXkpfT0ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcodmFsdWUpKX1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAocGFydHMubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gIHJldHVybiBgPyR7cGFydHMuam9pbignJicpfWA7XG59XG4iXX0=
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRTZWFyY2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbHMvYnVpbGRTZWFyY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixpQkFBaUIsR0FHbEIsTUFBTSx1QkFBdUIsQ0FBQztBQUcvQixTQUFTLGNBQWMsQ0FDckIsVUFBZ0MsRUFDaEMsS0FBYztJQUVkLE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFZLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBMEJELE1BQU0sVUFBVSxXQUFXLENBQ3pCLEtBQXNDLEVBQ3RDLE1BQStCLEVBQy9CLElBQXlCO0lBRXpCLE1BQU0sVUFBVSxHQUNkLElBQUksS0FBSyxTQUFTO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUztRQUMxQixJQUFJLENBQUMsWUFBWSxLQUFLLFNBQVMsQ0FBQztJQUNsQyxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNqQyxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxNQUFNLEVBQ0osWUFBWSxHQUFHLEtBQUssRUFDcEIsUUFBUSxHQUFHLElBQUksRUFDZixPQUFPLEVBQ1AsWUFBWSxFQUNaLGdCQUFnQixHQUFHLElBQUksRUFDdkIseUJBQXlCLEdBQUcsSUFBSSxHQUNqQyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDZixJQUFJLFlBQVksR0FBd0IsRUFBRSxDQUFDO0lBQzNDLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2xCLFlBQVksR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUNELElBQUksVUFBVSxJQUFJLFlBQVksS0FBSyxTQUFTLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3RFLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLFlBQVksS0FB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QUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssQ0FBQyxJQUFJLENBQ1IsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUNsRSxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUNsQyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFF1ZXJ5U2NoZW1hLCBRdWVyeURlc2NyaXB0b3IgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5pbXBvcnQge1xuICBidWlsZEZpbHRlcnNRdWVyeSxcbiAgT1BFUkFUT1JfUFJJT1JJVFksXG4gIHR5cGUgRGVmaW5lZEZpbHRlclNjaGVtYSxcbiAgdHlwZSBJbmZlckZpbHRlcnMsXG59IGZyb20gJy4uL3JvdXRpbmcvZmlsdGVycy5qcyc7XG5cbi8qKiBTZXJpYWxpemUgYSBzaW5nbGUgdmFsdWUgd2l0aCBpdHMgZGVzY3JpcHRvciAqL1xuZnVuY3Rpb24gc2VyaWFsaXplVmFsdWUoXG4gIGRlc2NyaXB0b3I6IFF1ZXJ5RGVzY3JpcHRvcjxhbnk+LFxuICB2YWx1ZTogdW5rbm93bixcbik6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIGRlc2NyaXB0b3Iuc2VyaWFsaXplKHZhbHVlIGFzIGFueSk7XG59XG5cbi8qKiBTZXJpYWxpemUgYSBxdWVyeSBvYmplY3QgdXNpbmcgYW4gb3B0aW9uYWwgc2NoZW1hICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkU2VhcmNoT3B0aW9uczxcbiAgRiBleHRlbmRzIERlZmluZWRGaWx0ZXJTY2hlbWE8YW55PiB8IHVuZGVmaW5lZCA9IGFueSxcbj4ge1xuICBvbWl0RGVmYXVsdHM/OiBib29sZWFuO1xuICBzb3J0S2V5cz86IGJvb2xlYW47XG4gIC8qKiBTdHJ1Y3R1cmVkIGZpbHRlcnMgb2JqZWN0IChhbHJlYWR5IHBhcnNlZCkgdG8gbWVyZ2UgKi9cbiAgZmlsdGVycz86IEYgZXh0ZW5kcyBEZWZpbmVkRmlsdGVyU2NoZW1hPGFueT5cbiAgICA/IEluZmVyRmlsdGVyczxGWydzY2hlbWEnXT5cbiAgICA6IGFueTtcbiAgLyoqIEZpbHRlciBzY2hlbWEgd3JhcHBlciAocmVxdWlyZWQgaWYgZmlsdGVycyBwcm92aWRlZCkgKi9cbiAgZmlsdGVyU2NoZW1hPzogRjtcbiAgLyoqIFdoZW4gdHJ1ZSwgb21pdCBlbXB0eSBmaWx0ZXIgb3BlcmF0b3Igc2V0cyBlbnRpcmVseSAqL1xuICBvbWl0RW1wdHlGaWx0ZXJzPzogYm9vbGVhbjtcbiAgLyoqIFBydW5lIGVtcHR5IG9wZXJhdG9yIGFycmF5cyAvIGludmFsaWQgdHVwbGVzIHJlY3Vyc2l2ZWx5IGJlZm9yZSBzZXJpYWxpemF0aW9uIChkZWZhdWx0cyB0cnVlKSAqL1xuICBwcnVuZUVtcHR5RmlsdGVyT3BlcmF0b3JzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIHNlYXJjaCBzdHJpbmcgZnJvbSAodHlwZWQpIHF1ZXJ5ICsgb3B0aW9uYWwgc3RydWN0dXJlZCBmaWx0ZXJzLlxuICogLSBBcHBsaWVzIG9taXREZWZhdWx0cyBmb3Igc2NoZW1hLWJhY2tlZCBxdWVyeSBrZXlzLlxuICogLSBTZXJpYWxpemVzIGZpbHRlcnMgdmlhIGJ1aWxkRmlsdGVyc1F1ZXJ5IHRoZW4gbWVyZ2VzLlxuICogLSBEZXRlcm1pbmlzdGljIGtleSBvcmRlcmluZyAoc2NoZW1hIG9yZGVyIHRoZW4gZXh0cmFzKSB3aGVuIHNvcnRLZXlzIGVuYWJsZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFNlYXJjaChcbiAgcXVlcnk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQsXG4gIHNjaGVtYTogUXVlcnlTY2hlbWEgfCB1bmRlZmluZWQsXG4gIG9wdHM/OiBCdWlsZFNlYXJjaE9wdGlvbnMsXG4pOiBzdHJpbmcge1xuICBjb25zdCBoYXNGaWx0ZXJzID1cbiAgICBvcHRzICE9PSB1bmRlZmluZWQgJiZcbiAgICBvcHRzLmZpbHRlcnMgIT09IHVuZGVmaW5lZCAmJlxuICAgIG9wdHMuZmlsdGVyU2NoZW1hICE9PSB1bmRlZmluZWQ7XG4gIGlmIChxdWVyeSA9PSBudWxsICYmICFoYXNGaWx0ZXJzKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGNvbnN0IHtcbiAgICBvbWl0RGVmYXVsdHMgPSBmYWxzZSxcbiAgICBzb3J0S2V5cyA9IHRydWUsXG4gICAgZmlsdGVycyxcbiAgICBmaWx0ZXJTY2hlbWEsXG4gICAgb21pdEVtcHR5RmlsdGVycyA9IHRydWUsXG4gICAgcHJ1bmVFbXB0eUZpbHRlck9wZXJhdG9ycyA9IHRydWUsXG4gIH0gPSBvcHRzID8/IHt9O1xuICBsZXQgd29ya2luZ1F1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIGlmIChxdWVyeSAhPSBudWxsKSB7XG4gICAgd29ya2luZ1F1ZXJ5ID0geyAuLi5xdWVyeSB9O1xuICB9XG4gIGlmIChoYXNGaWx0ZXJzICYmIGZpbHRlclNjaGVtYSAhPT0gdW5kZWZpbmVkICYmIGZpbHRlcnMgIT09IHVuZGVmaW5lZCkge1xuICAgIGxldCBlbXB0eVNjaGVtYSA9IGZhbHNlO1xuICAgIGlmIChmaWx0ZXJTY2hlbWEgIT09IHVuZGVmaW5lZCAmJiBmaWx0ZXJTY2hlbWEgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGlubmVyID0gKGZpbHRlclNjaGVtYSBhcyB7IHNjaGVtYT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0pXG4gICAgICAgIC5zY2hlbWE7XG4gICAgICBsZXQga2V5czogc3RyaW5nW10gPSBbXTtcbiAgICAgIGlmIChpbm5lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGtleXMgPSBPYmplY3Qua2V5cyhpbm5lcik7XG4gICAgICB9XG4gICAgICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZW1wdHlTY2hlbWEgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgZWZmZWN0aXZlRmlsdGVyczogYW55ID0gZmlsdGVycztcbiAgICBpZiAocHJ1bmVFbXB0eUZpbHRlck9wZXJhdG9ycykge1xuICAgICAgLy8gRGVlcCBjbG9uZSAmIHBydW5lIGVtcHR5IGFycmF5cyAvIGJldHdlZW4gdHVwbGVzIGxlbmd0aCE9MiAvIGV4aXN0cyB1bmRlZmluZWRcbiAgICAgIGNvbnN0IHBydW5lZDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgZm9yIChjb25zdCBbZmllbGQsIG9wc10gb2YgT2JqZWN0LmVudHJpZXMoXG4gICAgICAgIGZpbHRlcnMgYXMgUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAgICkpIHtcbiAgICAgICAgaWYgKG9wcyAhPSBudWxsICYmIHR5cGVvZiBvcHMgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgY29uc3QgbmV4dE9wczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICAgIGZvciAoY29uc3QgW29wLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob3BzKSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgLy8gc2tpcCBudWxsaXNoXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG9wID09PSAnYmV0d2VlbicpIHtcbiAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xlYW46IFthbnksIGFueV1bXSA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdCBvZiB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodCkgJiYgdC5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYW4ucHVzaCh0IGFzIFthbnksIGFueV0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY2xlYW4ubGVuZ3RoID4gMCkgbmV4dE9wc1tvcF0gPSBjbGVhbjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID4gMCkgbmV4dE9wc1tvcF0gPSB2YWx1ZS5zbGljZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICBuZXh0T3BzW29wXSA9IHZhbHVlOyAvLyBleGlzdHNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKE9iamVjdC5rZXlzKG5leHRPcHMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHBydW5lZFtmaWVsZF0gPSBuZXh0T3BzO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWZmZWN0aXZlRmlsdGVycyA9IHBydW5lZDtcbiAgICB9XG4gICAgaWYgKCFlbXB0eVNjaGVtYSkge1xuICAgICAgd29ya2luZ1F1ZXJ5ID0gYnVpbGRGaWx0ZXJzUXVlcnkoXG4gICAgICAgIGZpbHRlclNjaGVtYSxcbiAgICAgICAgd29ya2luZ1F1ZXJ5LFxuICAgICAgICBlZmZlY3RpdmVGaWx0ZXJzIGFzIHVua25vd24gYXMgYW55LFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRmFsbGJhY2s6IGRpcmVjdCBmbGF0dGVuIGZpZWxkLm9wIGZvciBwcm92aWRlZCBvcGVyYXRvcnNcbiAgICAgIGNvbnN0IGZsYXQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICAgIGZvciAoY29uc3QgW2ZpZWxkLCBvcHNdIG9mIE9iamVjdC5lbnRyaWVzKFxuICAgICAgICBlZmZlY3RpdmVGaWx0ZXJzIGFzIFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgICApKSB7XG4gICAgICAgIGlmIChvcHMgIT09IHVuZGVmaW5lZCAmJiBvcHMgIT09IG51bGwgJiYgdHlwZW9mIG9wcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IFtvcCwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKFxuICAgICAgICAgICAgb3BzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICAgICkpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIC8vIHNraXAgbnVsbGlzaFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYCR7ZmllbGR9LiR7b3B9YDtcbiAgICAgICAgICAgICAgaWYgKG9wID09PSAnZXhpc3RzJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgZmxhdFtrZXldID0gJ3RydWUnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBmbGF0W2tleV0gPSAnZmFsc2UnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChvcCA9PT0gJ2JldHdlZW4nKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmFuZ2VzID0gdmFsdWUgYXMgdW5rbm93bltdO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgciBvZiByYW5nZXMpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHIpICYmIHIubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSByWzBdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiID0gclsxXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFpciA9IFtTdHJpbmcoYSksIFN0cmluZyhiKV07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gZmxhdFtrZXldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgIGZsYXRba2V5XSA9IHBhaXI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShleGlzdGluZykpIHtcbiAgICAgICAgICAgICAgICAgICAgICBmbGF0W2tleV0gPSBbLi4uZXhpc3RpbmcsIC4uLnBhaXJdO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIGZsYXRba2V5XSA9IFtleGlzdGluZywgLi4ucGFpcl07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHYgb2YgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHN2ID0gU3RyaW5nKHYpO1xuICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBmbGF0W2tleV07XG4gICAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBmbGF0W2tleV0gPSBzdjtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShleGlzdGluZykpIHtcbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcucHVzaChzdik7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmbGF0W2tleV0gPSBbZXhpc3RpbmcsIHN2XTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHdvcmtpbmdRdWVyeSA9IHsgLi4ud29ya2luZ1F1ZXJ5LCAuLi5mbGF0IH07XG4gICAgfVxuICAgIGlmIChvbWl0RW1wdHlGaWx0ZXJzKSB7XG4gICAgICBjb25zdCBuZXh0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyh3b3JraW5nUXVlcnkpKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHYpICYmIHYubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgLy8gc2tpcCBlbXB0eSBhcnJheSBmaWx0ZXIga2V5XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV4dFtrXSA9IHY7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHdvcmtpbmdRdWVyeSA9IG5leHQ7XG4gICAgfVxuICB9XG4gIGlmIChPYmplY3Qua2V5cyh3b3JraW5nUXVlcnkpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKHdvcmtpbmdRdWVyeSk7XG4gIGlmIChzb3J0S2V5cykge1xuICAgIGlmIChzY2hlbWEgIT0gbnVsbCkge1xuICAgICAgY29uc3Qgc2NoZW1hS2V5cyA9IE9iamVjdC5rZXlzKHNjaGVtYSk7XG4gICAgICBjb25zdCBzY2hlbWFPcmRlcmVkOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBzayBvZiBzY2hlbWFLZXlzKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwod29ya2luZ1F1ZXJ5LCBzaykpIHtcbiAgICAgICAgICBzY2hlbWFPcmRlcmVkLnB1c2goc2spO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBmaWx0ZXJLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgY29uc3Qgb3RoZXJLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgaWYgKGZpbHRlclNjaGVtYSAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGZzU2NoZW1hOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IChcbiAgICAgICAgICBmaWx0ZXJTY2hlbWEgYXMge1xuICAgICAgICAgICAgc2NoZW1hOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgICB9XG4gICAgICAgICkuc2NoZW1hO1xuICAgICAgICBjb25zdCBmaWVsZFNldCA9IG5ldyBTZXQoT2JqZWN0LmtleXMoZnNTY2hlbWEpKTtcbiAgICAgICAgZm9yIChjb25zdCBrIG9mIGtleXMpIHtcbiAgICAgICAgICBpZiAoIXNjaGVtYUtleXMuaW5jbHVkZXMoaykpIHtcbiAgICAgICAgICAgIGNvbnN0IGRvdCA9IGsuaW5kZXhPZignLicpO1xuICAgICAgICAgICAgaWYgKGRvdCA+IDApIHtcbiAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBrLnNsaWNlKDAsIGRvdCk7XG4gICAgICAgICAgICAgIGlmIChmaWVsZFNldC5oYXMoZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyS2V5cy5wdXNoKGspO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG90aGVyS2V5cy5wdXNoKGspO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvdGhlcktleXMucHVzaChrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAoY29uc3QgayBvZiBrZXlzKSB7XG4gICAgICAgICAgaWYgKCFzY2hlbWFLZXlzLmluY2x1ZGVzKGspKSBvdGhlcktleXMucHVzaChrKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gRGVkdXBsaWNhdGUgYWxyZWFkeSBhY2NvdW50ZWQgc2NoZW1hIGtleXMgZnJvbSBvdGhlcnNcbiAgICAgIC8vIE9yZGVyIG5vbi1maWx0ZXIgZXh0cmFzIGFscGhhYmV0aWNhbGx5XG4gICAgICBvdGhlcktleXMuc29ydCgpO1xuICAgICAgLy8gT25seSBpbXBsZW1lbnRlZCBvcmRlcmluZzogYWZ0ZXItcXVlcnlcbiAgICAgIGNvbnN0IGdyb3VwZWQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9O1xuICAgICAgZm9yIChjb25zdCBmayBvZiBmaWx0ZXJLZXlzKSB7XG4gICAgICAgIGNvbnN0IGRvdCA9IGZrLmluZGV4T2YoJy4nKTtcbiAgICAgICAgbGV0IGZpZWxkID0gZms7XG4gICAgICAgIGlmIChkb3QgPiAwKSB7XG4gICAgICAgICAgZmllbGQgPSBmay5zbGljZSgwLCBkb3QpO1xuICAgICAgICB9XG4gICAgICAgIGdyb3VwZWRbZmllbGRdID8/PSBbXTtcbiAgICAgICAge1xuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gZ3JvdXBlZFtmaWVsZF07XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZXhpc3RpbmcpKSB7XG4gICAgICAgICAgICBleGlzdGluZy5wdXNoKGZrKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IG9yZGVyZWRGaWVsZHMgPSBPYmplY3Qua2V5cyhncm91cGVkKS5zb3J0KCk7XG4gICAgICBjb25zdCBvcmRlcmVkRmlsdGVyS2V5czogc3RyaW5nW10gPSBbXTtcbiAgICAgIGZvciAoY29uc3QgZmllbGQgb2Ygb3JkZXJlZEZpZWxkcykge1xuICAgICAgICBjb25zdCBvcHMgPSBncm91cGVkW2ZpZWxkXTtcbiAgICAgICAgaWYgKG9wcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgb3BzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9wQSA9IGEuc2xpY2UoYS5pbmRleE9mKCcuJykgKyAxKTtcbiAgICAgICAgICAgIGNvbnN0IG9wQiA9IGIuc2xpY2UoYi5pbmRleE9mKCcuJykgKyAxKTtcbiAgICAgICAgICAgIGNvbnN0IGlhID0gT1BFUkFUT1JfUFJJT1JJVFkuaW5kZXhPZihvcEEgYXMgYW55KTtcbiAgICAgICAgICAgIGNvbnN0IGliID0gT1BFUkFUT1JfUFJJT1JJVFkuaW5kZXhPZihvcEIgYXMgYW55KTtcbiAgICAgICAgICAgIGxldCBzYSA9IGlhO1xuICAgICAgICAgICAgaWYgKHNhID09PSAtMSkgc2EgPSA5OTk7XG4gICAgICAgICAgICBsZXQgc2IgPSBpYjtcbiAgICAgICAgICAgIGlmIChzYiA9PT0gLTEpIHNiID0gOTk5O1xuICAgICAgICAgICAgaWYgKHNhIDwgc2IpIHJldHVybiAtMTtcbiAgICAgICAgICAgIGlmIChzYSA+IHNiKSByZXR1cm4gMTtcbiAgICAgICAgICAgIGlmIChvcEEgPCBvcEIpIHJldHVybiAtMTtcbiAgICAgICAgICAgIGlmIChvcEEgPiBvcEIpIHJldHVybiAxO1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZm9yIChjb25zdCBvayBvZiBvcHMpIG9yZGVyZWRGaWx0ZXJLZXlzLnB1c2gob2spO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBrZXlzID0gWy4uLnNjaGVtYU9yZGVyZWQsIC4uLm90aGVyS2V5cywgLi4ub3JkZXJlZEZpbHRlcktleXNdO1xuICAgIH0gZWxzZSB7XG4gICAgICBrZXlzLnNvcnQoKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHdvcmtpbmdRdWVyeVtrZXldO1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAvLyBza2lwIG51bGxpc2ggdmFsdWVzXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBzY2hlbWE/LltrZXldO1xuICAgICAgaWYgKGRlc2NyaXB0b3IgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBpc0RlZmF1bHQgPVxuICAgICAgICAgIGRlc2NyaXB0b3IuaGFzRGVmYXVsdCAmJiB2YWx1ZSA9PT0gZGVzY3JpcHRvci5kZWZhdWx0VmFsdWU7XG4gICAgICAgIGNvbnN0IHNraXBEZWZhdWx0ID0gb21pdERlZmF1bHRzICYmIGlzRGVmYXVsdDtcbiAgICAgICAgaWYgKCFza2lwRGVmYXVsdCkge1xuICAgICAgICAgIGNvbnN0IHZhbHVlcyA9IHNlcmlhbGl6ZVZhbHVlKGRlc2NyaXB0b3IsIHZhbHVlKTtcbiAgICAgICAgICB2YWx1ZXMuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICAgICAgcGFydHMucHVzaChcbiAgICAgICAgICAgICAgYCR7ZW5jb2RlVVJJQ29tcG9uZW50KGtleSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyh2KSl9YCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICAgIHBhcnRzLnB1c2goXG4gICAgICAgICAgICBgJHtlbmNvZGVVUklDb21wb25lbnQoa2V5KX09JHtlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKHYpKX1gLFxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFydHMucHVzaChcbiAgICAgICAgICBgJHtlbmNvZGVVUklDb21wb25lbnQoa2V5KX09JHtlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKHZhbHVlKSl9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuICByZXR1cm4gYD8ke3BhcnRzLmpvaW4oJyYnKX1gO1xufVxuIl19
@@ -84,6 +84,10 @@ export type Route<TPrepared extends PrepareResult, TVariables extends ParamData
84
84
  prepare?: RoutePrepare<TPrepared, TVariables, TQuery>;
85
85
  render?: RouteRender<TPrepared, TVariables>;
86
86
  query?: QuerySchema;
87
+ filterSchema?: {
88
+ __defined: true;
89
+ schema: Record<string, any>;
90
+ };
87
91
  };
88
92
  export type RouteComponentProps<TVariables extends ParamData> = {
89
93
  children: ReactElement<any>;
@@ -101,7 +105,22 @@ export type RoutingContextType<TVariables extends ParamData> = {
101
105
  pathname?: string;
102
106
  query?: Record<string, any>;
103
107
  replace?: boolean;
108
+ filters?: Record<string, any>;
109
+ filterSchema?: {
110
+ __defined: true;
111
+ schema: Record<string, any>;
112
+ };
113
+ batch?: boolean;
114
+ immediate?: boolean;
104
115
  }) => void;
116
+ resolveFilterSchema: (pathname: string) => {
117
+ __defined: true;
118
+ schema: Record<string, any>;
119
+ } | undefined;
120
+ currentMergedFilterSchema: () => {
121
+ __defined: true;
122
+ schema: Record<string, any>;
123
+ } | undefined;
105
124
  };
106
125
  export type ResourcePageReturn = {
107
126
  default: ComponentType<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
package/lib/esm/types.js CHANGED
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29tcG9uZW50VHlwZSwgUmVhY3RFbGVtZW50LCBSZWFjdE5vZGUsIEpTWCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgTWF0Y2gsIE1hdGNoRnVuY3Rpb24sIFBhcmFtRGF0YSB9IGZyb20gJ3BhdGgtdG8tcmVnZXhwJztcblxuaW1wb3J0IHR5cGUgeyBGbGF0Um91dGUgfSBmcm9tICcuL2J1aWxkZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBSZXNvdXJjZVBhZ2UgfSBmcm9tICcuL1Jlc291cmNlUGFnZS5qcyc7XG5pbXBvcnQgdHlwZSB7IEJyb3dzZXJIaXN0b3J5IH0gZnJvbSAnLi9oaXN0b3J5L2luZGV4LmpzJztcblxuLyoqXG4gKiBJbnB1dCB0eXBlIGZvciBjcmVhdGluZyBhIEZsYXRSb3V0ZSBpbnN0YW5jZS5cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBGbGF0Um91dGVJbnB1dDxUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhPiA9IHtcbiAgLyoqIFRoZSBVUkwgcGF0aCBwYXR0ZXJuIGZvciB0aGlzIHJvdXRlICovXG4gIHBhdGg6IHN0cmluZztcbiAgLyoqIE9wdGlvbmFsIHJlZGlyZWN0IGRlc3RpbmF0aW9uIGlmIHRoaXMgcm91dGUgc2hvdWxkIHJlZGlyZWN0ICovXG4gIHJlZGlyZWN0VG8/OiBzdHJpbmc7XG4gIC8qKiBGdW5jdGlvbiB0byBtYXRjaCBVUkwgcGF0aHMgYWdhaW5zdCB0aGlzIHJvdXRlIHBhdHRlcm4gKi9cbiAgbWF0Y2hGdW5jdGlvbjogTWF0Y2hGdW5jdGlvbjxUVmFyaWFibGVzPjtcbiAgLyoqIE5lc3RlZCByb3V0ZXMgdGhhdCBzaG91bGQgYmUgcmVuZGVyZWQgd2l0aGluIHRoaXMgcm91dGUgKi9cbiAgcm91dGVzOiBSb3V0ZTxhbnksIGFueT5bXTtcbn07XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIG1hdGNoZWQgcm91dGUgd2l0aCBleHRyYWN0ZWQgcGFyYW1ldGVycyBhbmQgbWV0YWRhdGEuXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVyTWF0Y2hlZFJvdXRlPFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGE+ID0ge1xuICAvKiogVGhlIG1hdGNoIHJlc3VsdCBmcm9tIHBhdGgtdG8tcmVnZXhwICovXG4gIG1hdGNoOiBNYXRjaDxUVmFyaWFibGVzPjtcbiAgLyoqIEV4dHJhY3RlZCBwYXJhbWV0ZXJzIGZyb20gdGhlIFVSTCBwYXRoICovXG4gIHBhcmFtczogVFZhcmlhYmxlcztcbiAgLyoqIFRoZSBtYXRjaGVkIHBhdGggc3RyaW5nICovXG4gIHBhdGg6IHN0cmluZztcbiAgLyoqIFRoZSBmbGF0IHJvdXRlIHRoYXQgd2FzIG1hdGNoZWQgKi9cbiAgcm91dGU6IEZsYXRSb3V0ZTxUVmFyaWFibGVzPjtcbn07XG5cbi8qKlxuICogQSBSZWFjdCBjb21wb25lbnQgdGhhdCBjYW4gYmUgdXNlZCBhcyBhIHJvdXRlIGNvbXBvbmVudC5cbiAqIEB0ZW1wbGF0ZSBUUHJvcHMgLSBUaGUgcHJvcHMgdHlwZSBmb3IgdGhlIGNvbXBvbmVudFxuICovXG5leHBvcnQgdHlwZSBSb3V0ZVJlYWN0Q29tcG9uZW50PFRQcm9wcyA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9IChcbiAgcHJvcHM6IFRQcm9wcyxcbikgPT4gSlNYLkVsZW1lbnQgfCBudWxsO1xuXG4vKipcbiAqIE9wdGlvbnMgcGFzc2VkIHRvIGEgcm91dGUgcmVuZGVyIGZ1bmN0aW9uLlxuICogQHRlbXBsYXRlIFRQcmVwYXJlZCAtIFRoZSB0eXBlIG9mIHByZXBhcmVkIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHJvdXRlJ3MgcHJlcGFyZSBmdW5jdGlvblxuICogQHRlbXBsYXRlIFRWYXJpYWJsZXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIFJvdXRlUmVuZGVyT3B0czxcbiAgVFByZXBhcmVkIGV4dGVuZHMgUHJlcGFyZVJlc3VsdCxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSA9IFBhcmFtRGF0YSxcbj4gPSB7XG4gIC8qKiBDaGlsZCBjb21wb25lbnRzIHRvIHJlbmRlciB3aXRoaW4gdGhpcyByb3V0ZSAqL1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICAvKiogT3B0aW9uYWwgY29tcG9uZW50IHRvIHJlbmRlciAoZnJvbSBSZXNvdXJjZVBhZ2UpICovXG4gIENvbXBvbmVudD86IFJvdXRlUmVhY3RDb21wb25lbnQ7XG4gIC8qKiBEYXRhIHByZXBhcmVkIGJ5IHRoZSByb3V0ZSdzIHByZXBhcmUgZnVuY3Rpb24gKi9cbiAgcHJlcGFyZWQ6IFRQcmVwYXJlZCB8IHVuZGVmaW5lZDtcbiAgLyoqIFRoZSBwcmVwYXJlZCByb3V0ZSB0aGF0IGlzIGJlaW5nIHJlbmRlcmVkICovXG4gIHByZXBhcmVkUm91dGU6IFByZXBhcmVkTWF0Y2hSb3V0ZTtcbiAgLyoqIFRoZSBtYXRjaGVkIHJvdXRlIG9yIG51bGwgaWYgbm8gbWF0Y2ggKi9cbiAgcm91dGU6IEZsYXRSb3V0ZTxUVmFyaWFibGVzPiB8IG51bGw7XG4gIC8qKiBSYXcgcXVlcnkgb2JqZWN0IChQaGFzZSAyIGdlbmVyaWMgcGFyc2luZykgKi9cbiAgcmF3UXVlcnk6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdPjtcbiAgLyoqIFR5cGVkIHF1ZXJ5IG9iamVjdCAoUGhhc2UgMykuIEZhbGxzIGJhY2sgdG8gcmF3UXVlcnkgaWYgbm8gc2NoZW1hICovXG4gIHF1ZXJ5OiBhbnk7XG59O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIHJlbmRlciBhIHJvdXRlIHdpdGggY3VzdG9tIGxvZ2ljLlxuICogQHRlbXBsYXRlIFRQcmVwYXJlZCAtIFRoZSB0eXBlIG9mIHByZXBhcmVkIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHJvdXRlJ3MgcHJlcGFyZSBmdW5jdGlvblxuICogQHRlbXBsYXRlIFRWYXJpYWJsZXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIFJvdXRlUmVuZGVyPFxuICBUUHJlcGFyZWQgZXh0ZW5kcyBQcmVwYXJlUmVzdWx0LFxuICBUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhID0gUGFyYW1EYXRhLFxuPiA9IChvcHRzOiBSb3V0ZVJlbmRlck9wdHM8VFByZXBhcmVkLCBUVmFyaWFibGVzPikgPT4gUmVhY3RFbGVtZW50PGFueT4gfCBudWxsO1xuXG4vKipcbiAqIEEgcm91dGUgdGhhdCBoYXMgYmVlbiBwcmVwYXJlZCBmb3IgcmVuZGVyaW5nIHdpdGggbG9hZGVkIGRhdGEgYW5kIGNvbXBvbmVudHMuXG4gKi9cbmV4cG9ydCB0eXBlIFByZXBhcmVkTWF0Y2hSb3V0ZSA9IHtcbiAgLyoqIFRoZSBwYXRoIHRoYXQgd2FzIG1hdGNoZWQgKi9cbiAgcGF0aD86IHN0cmluZztcbiAgLyoqIERhdGEgcHJlcGFyZWQgYnkgdGhlIHJvdXRlJ3MgcHJlcGFyZSBmdW5jdGlvbiAqL1xuICBwcmVwYXJlZDogUHJlcGFyZVJlc3VsdCB8IHVuZGVmaW5lZDtcbiAgLyoqIEN1c3RvbSByZW5kZXIgZnVuY3Rpb24gZm9yIHRoaXMgcm91dGUgKi9cbiAgcmVuZGVyPzogUm91dGVSZW5kZXI8YW55LCBhbnk+O1xuICAvKiogUmVkaXJlY3QgZGVzdGluYXRpb24gaWYgdGhpcyByb3V0ZSBzaG91bGQgcmVkaXJlY3QgKi9cbiAgcmVkaXJlY3RUbzogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFJlc291cmNlIHBhZ2UgZm9yIGxhenktbG9hZGVkIGNvbXBvbmVudHMgKi9cbiAgcmVzb3VyY2VQYWdlPzogUmVzb3VyY2VQYWdlIHwgbnVsbDtcbn07XG5cbi8qKlxuICogUmVzdWx0IG9mIHByZXBhcmluZyBhIG1hdGNoZWQgcm91dGUsIGluY2x1ZGluZyBhbGwgbmVzdGVkIHJvdXRlcy5cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBQcmVwYXJlZE1hdGNoPFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGE+ID0ge1xuICAvKiogVGhlIG1hdGNoZWQgcm91dGUgb3IgbnVsbCBpZiBubyBtYXRjaCAqL1xuICBtYXRjaDogUm91dGVyTWF0Y2hlZFJvdXRlPFRWYXJpYWJsZXM+IHwgbnVsbDtcbiAgLyoqIEFycmF5IG9mIHByZXBhcmVkIHJvdXRlcyBmb3IgcmVuZGVyaW5nICovXG4gIHJvdXRlczogUHJlcGFyZWRNYXRjaFJvdXRlW107XG59O1xuXG4vKipcbiAqIENvbXBsZXRlIHJvdXRlIGVudHJ5IHJlcHJlc2VudGluZyB0aGUgY3VycmVudCByb3V0ZXIgc3RhdGUuXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVFbnRyeTxUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhPiA9IHtcbiAgLyoqIFRoZSBwcmVwYXJlZCBtYXRjaCB3aXRoIGxvYWRlZCBkYXRhIGFuZCBjb21wb25lbnRzICovXG4gIHByZXBhcmVkTWF0Y2g6IFByZXBhcmVkTWF0Y2g8VFZhcmlhYmxlcz47XG4gIC8qKiBDdXJyZW50IGJyb3dzZXIgbG9jYXRpb24gKi9cbiAgbG9jYXRpb246IExvY2F0aW9uO1xuICAvKiogVGhlIG1hdGNoZWQgcm91dGUgb3IgbnVsbCBpZiBubyBtYXRjaCAqL1xuICByb3V0ZTogUm91dGVyTWF0Y2hlZFJvdXRlPFRWYXJpYWJsZXM+IHwgbnVsbDtcbiAgLyoqIFdoZXRoZXIgdG8gZm9yY2UgYSByZS1yZW5kZXIgZXZlbiBpZiB0aGUgcGF0aCBoYXNuJ3QgY2hhbmdlZCAqL1xuICBmb3JjZVJlcmVuZGVyOiBib29sZWFuO1xuICAvKiogUmF3IHNlYXJjaCBzdHJpbmcgKHF1ZXJ5IHBhcnQpIG9mIHRoZSBsb2NhdGlvbiBmb3IgY2hhbmdlIGRldGVjdGlvbiAqL1xuICByYXdTZWFyY2g/OiBzdHJpbmc7XG4gIC8qKiBQYXJzZWQgcmF3IHF1ZXJ5IHBhcmFtZXRlcnMgKHZhbHVlcyBhZ2dyZWdhdGVkOyBkdXBsaWNhdGVzID0+IGFycmF5KSAqL1xuICBxdWVyeTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10+O1xuICAvKiogVHlwZWQgcXVlcnkgZGVyaXZlZCBmcm9tIHNjaGVtYSBmb3IgdGhlIG1hdGNoZWQgcm91dGUgKFBoYXNlIDMpICovXG4gIHR5cGVkUXVlcnk/OiBhbnk7XG59O1xuXG4vKiogUXVlcnkgZGVzY3JpcHRvciBiYXNlIHNoYXBlICovXG5leHBvcnQgdHlwZSBRdWVyeURlc2NyaXB0b3I8VD4gPSB7XG4gIC8qKiBpbnRlcm5hbCBtYXJrZXIgZm9yIGluZmVyZW5jZSAqL1xuICBfX3R5cGU6IFQ7XG4gIC8qKiBwYXJzZSBhbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzIGludG8gVCB8IHVuZGVmaW5lZCAqL1xuICBwYXJzZTogKHZhbHVlczogc3RyaW5nW10pID0+IFQgfCB1bmRlZmluZWQ7XG4gIC8qKiBzZXJpYWxpemUgYSB2YWx1ZSBpbnRvIHN0cmluZyB2YWx1ZXMgKi9cbiAgc2VyaWFsaXplOiAodmFsdWU6IFQpID0+IHN0cmluZ1tdO1xuICBvcHRpb25hbD86IGJvb2xlYW47XG4gIGhhc0RlZmF1bHQ/OiBib29sZWFuO1xuICBkZWZhdWx0VmFsdWU/OiBUO1xufTtcblxuZXhwb3J0IHR5cGUgUXVlcnlTY2hlbWEgPSBSZWNvcmQ8c3RyaW5nLCBRdWVyeURlc2NyaXB0b3I8YW55Pj47XG5cbi8qKiBJbmZlciB0aGUgb3V0cHV0IHR5cGUgb2YgYSBzY2hlbWEgKi9cbmV4cG9ydCB0eXBlIEluZmVyUXVlcnk8UyBleHRlbmRzIFF1ZXJ5U2NoZW1hPiA9IHtcbiAgW0sgaW4ga2V5b2YgU106IFNbS10gZXh0ZW5kcyBRdWVyeURlc2NyaXB0b3I8aW5mZXIgTz5cbiAgICA/IFNbS11bJ29wdGlvbmFsJ10gZXh0ZW5kcyB0cnVlXG4gICAgICA/IFNbS11bJ2hhc0RlZmF1bHQnXSBleHRlbmRzIHRydWVcbiAgICAgICAgPyBPXG4gICAgICAgIDogTyB8IHVuZGVmaW5lZFxuICAgICAgOiBPXG4gICAgOiBuZXZlcjtcbn07XG5cbi8qKlxuICogSFRUUCBzdGF0dXMgY29kZXMgZm9yIHJlZGlyZWN0cy5cbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVyUmVkaXJlY3RTdGF0dXMgPSAzMDEgfCAzMDI7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIG1hdGNoZWQgcm91dGUgd2l0aCByZWdleCBtYXRjaCByZXN1bHQuXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgTWF0Y2hlZFJvdXRlPFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGE+ID0ge1xuICAvKiogVGhlIHJlZ2V4IG1hdGNoIHJlc3VsdCAqL1xuICBtYXRjaDogUmVnRXhwRXhlY0FycmF5O1xuICAvKiogVGhlIGZsYXQgcm91dGUgdGhhdCB3YXMgbWF0Y2hlZCAqL1xuICByb3V0ZTogRmxhdFJvdXRlPFRWYXJpYWJsZXM+O1xufTtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBhIHJvdXRlIHJlZGlyZWN0LlxuICovXG5leHBvcnQgdHlwZSBSZWRpcmVjdCA9IHtcbiAgLyoqIE9wdGlvbmFsIHNvdXJjZSBwYXRoIHBhdHRlcm4gKi9cbiAgcGF0aD86IHN0cmluZztcbiAgLyoqIERlc3RpbmF0aW9uIHBhdGggZm9yIHRoZSByZWRpcmVjdCAqL1xuICB0bzogc3RyaW5nO1xuICAvKiogSFRUUCBzdGF0dXMgY29kZSBmb3IgdGhlIHJlZGlyZWN0ICovXG4gIHN0YXR1cz86IFJvdXRlclJlZGlyZWN0U3RhdHVzO1xufTtcblxuLyoqXG4gKiBCYXNlIHR5cGUgZm9yIGRhdGEgcHJlcGFyZWQgYnkgcm91dGUgcHJlcGFyZSBmdW5jdGlvbnMuXG4gKi9cbmV4cG9ydCB0eXBlIFByZXBhcmVSZXN1bHQgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgcGFzc2VkIHRvIGEgcm91dGUncyBwcmVwYXJlIGZ1bmN0aW9uLlxuICogQHRlbXBsYXRlIFRWYXJpYWJsZXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIFByZXBhcmVQYXJhbXM8VFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSwgVFF1ZXJ5ID0gYW55PiA9IHtcbiAgLyoqIFRoZSBtYXRjaGVkIHJvdXRlIHdpdGggZXh0cmFjdGVkIHBhcmFtZXRlcnMgKi9cbiAgbWF0Y2g6IFJvdXRlck1hdGNoZWRSb3V0ZTxUVmFyaWFibGVzPjtcbiAgLyoqIFRoZSBmbGF0IHJvdXRlIHRoYXQgd2FzIG1hdGNoZWQgKi9cbiAgbWF0Y2hlZFJvdXRlOiBGbGF0Um91dGU8VFZhcmlhYmxlcz47XG4gIC8qKiBSZXNvdXJjZSBwYWdlIGZvciBsYXp5LWxvYWRlZCBjb21wb25lbnRzICovXG4gIHJlc291cmNlUGFnZT86IFJlc291cmNlUGFnZSB8IG51bGw7XG4gIC8qKiBFeHRyYWN0ZWQgVVJMIHBhcmFtZXRlcnMgKi9cbiAgdmFyaWFibGVzOiBUVmFyaWFibGVzO1xuICAvKiogVHlwZWQgcXVlcnkgb2JqZWN0ICovXG4gIHF1ZXJ5OiBUUXVlcnk7XG59O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIHByZXBhcmUgZGF0YSBmb3IgYSByb3V0ZSBiZWZvcmUgcmVuZGVyaW5nLlxuICogQHRlbXBsYXRlIFRQcmVwYXJlZCAtIFRoZSB0eXBlIG9mIGRhdGEgdGhpcyBmdW5jdGlvbiByZXR1cm5zXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVQcmVwYXJlPFxuICBUUHJlcGFyZWQgZXh0ZW5kcyBQcmVwYXJlUmVzdWx0LFxuICBUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhID0gUGFyYW1EYXRhLFxuICBUUXVlcnkgPSBhbnksXG4+ID0gKHBhcmFtczogUHJlcGFyZVBhcmFtczxUVmFyaWFibGVzLCBUUXVlcnk+KSA9PiBUUHJlcGFyZWQ7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgYSBzaW5nbGUgcm91dGUgaW4gdGhlIHJvdXRlci5cbiAqIEB0ZW1wbGF0ZSBUUHJlcGFyZWQgLSBUaGUgdHlwZSBvZiBwcmVwYXJlZCBkYXRhIHJldHVybmVkIGJ5IHRoZSByb3V0ZSdzIHByZXBhcmUgZnVuY3Rpb25cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBSb3V0ZTxcbiAgVFByZXBhcmVkIGV4dGVuZHMgUHJlcGFyZVJlc3VsdCxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSA9IFBhcmFtRGF0YSxcbiAgVFF1ZXJ5ID0gYW55LFxuPiA9IHtcbiAgLyoqIE5lc3RlZCBjaGlsZCByb3V0ZXMgb3IgcmVkaXJlY3RzICovXG4gIGNoaWxkcmVuPzogKFJvdXRlPGFueSwgYW55PiB8IFJlZGlyZWN0KVtdO1xuICAvKiogUmVzb3VyY2UgcGFnZSBmb3IgbGF6eS1sb2FkZWQgY29tcG9uZW50cyAqL1xuICByZXNvdXJjZVBhZ2U/OiBSZXNvdXJjZVBhZ2UgfCBudWxsO1xuICAvKiogVVJMIHBhdGggcGF0dGVybiBmb3IgdGhpcyByb3V0ZSAqL1xuICBwYXRoPzogc3RyaW5nO1xuICAvKiogRnVuY3Rpb24gdG8gcHJlcGFyZSBkYXRhIGJlZm9yZSByZW5kZXJpbmcgKi9cbiAgcHJlcGFyZT86IFJvdXRlUHJlcGFyZTxUUHJlcGFyZWQsIFRWYXJpYWJsZXMsIFRRdWVyeT47XG4gIC8qKiBDdXN0b20gcmVuZGVyIGZ1bmN0aW9uIGZvciB0aGlzIHJvdXRlICovXG4gIHJlbmRlcj86IFJvdXRlUmVuZGVyPFRQcmVwYXJlZCwgVFZhcmlhYmxlcz47XG4gIC8qKiBPcHRpb25hbCBxdWVyeSBzY2hlbWEgZm9yIHR5cGVkIHBhcnNpbmcgKFBoYXNlIDMgYXR0YWNobWVudCkgKi9cbiAgcXVlcnk/OiBRdWVyeVNjaGVtYTtcbn07XG5cbi8qKlxuICogUHJvcHMgcGFzc2VkIHRvIFJvdXRlQ29tcG9uZW50IGluc3RhbmNlcy5cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBSb3V0ZUNvbXBvbmVudFByb3BzPFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGE+ID0ge1xuICAvKiogQ2hpbGQgY29tcG9uZW50cyB0byByZW5kZXIgKi9cbiAgY2hpbGRyZW46IFJlYWN0RWxlbWVudDxhbnk+O1xuICAvKiogUm91dGVyIGNvbnRleHQgY29udGFpbmluZyBuYXZpZ2F0aW9uIGFuZCBzdGF0ZSAqL1xuICByb3V0ZXJDb250ZXh0OiBSb3V0aW5nQ29udGV4dFR5cGU8VFZhcmlhYmxlcz47XG4gIC8qKiBUaGUgcm91dGUgY29uZmlndXJhdGlvbiAqL1xuICByb3V0ZTogUm91dGU8YW55LCBhbnk+O1xufTtcblxuLyoqXG4gKiBDYWxsYmFjayBmdW5jdGlvbiBmb3Igcm91dGUgY2hhbmdlcy5cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBTdWJzY3JpYmVDYWxsYmFjazxUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhPiA9IChcbiAgbmV4dEVudHJ5OiBSb3V0ZUVudHJ5PFRWYXJpYWJsZXM+LFxuKSA9PiB2b2lkO1xuXG4vKipcbiAqIFJvdXRlciBjb250ZXh0IHR5cGUgdGhhdCBwcm92aWRlcyBuYXZpZ2F0aW9uIGFuZCBzdGF0ZSBtYW5hZ2VtZW50LlxuICogQHRlbXBsYXRlIFRWYXJpYWJsZXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIFJvdXRpbmdDb250ZXh0VHlwZTxUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhPiA9IHtcbiAgLyoqIEJyb3dzZXIgaGlzdG9yeSBpbnN0YW5jZSBmb3IgbmF2aWdhdGlvbiAqL1xuICBoaXN0b3J5OiBCcm93c2VySGlzdG9yeTtcbiAgLyoqIEdldCB0aGUgY3VycmVudCByb3V0ZSBlbnRyeSAqL1xuICBnZXQ6ICgpID0+IFJvdXRlRW50cnk8VFZhcmlhYmxlcz47XG4gIC8qKiBQcmVsb2FkIGNvZGUgZm9yIGEgcm91dGUgd2l0aG91dCBzdG9yaW5nIHRoZSByZXN1bHQgKi9cbiAgcHJlbG9hZENvZGU6IChwYXRobmFtZTogc3RyaW5nKSA9PiB2b2lkO1xuICAvKiogUHJlbG9hZCBjb2RlIGFuZCBkYXRhIGZvciBhIHJvdXRlIHdpdGhvdXQgc3RvcmluZyB0aGUgcmVzdWx0ICovXG4gIHByZWxvYWQ6IChwYXRobmFtZTogc3RyaW5nKSA9PiB2b2lkO1xuICAvKiogU3Vic2NyaWJlIHRvIHJvdXRlIGNoYW5nZXMgKi9cbiAgc3Vic2NyaWJlOiAoY2FsbGJhY2s6IFN1YnNjcmliZUNhbGxiYWNrPFRWYXJpYWJsZXM+KSA9PiAoKSA9PiB2b2lkO1xuICAvKiogTmF2aWdhdGUgd2l0aCBvcHRpb25hbCBwYXRobmFtZSBhbmQgdHlwZWQvcmF3IHF1ZXJ5IG9iamVjdCAqL1xuICBuYXZpZ2F0ZTogKG9wdHM6IHtcbiAgICBwYXRobmFtZT86IHN0cmluZztcbiAgICBxdWVyeT86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgcmVwbGFjZT86IGJvb2xlYW47XG4gIH0pID0+IHZvaWQ7XG59O1xuXG4vKipcbiAqIFJldHVybiB0eXBlIGZvciByZXNvdXJjZSBwYWdlIGxvYWRlcnMuXG4gKi9cbmV4cG9ydCB0eXBlIFJlc291cmNlUGFnZVJldHVybiA9XG4gIHwgeyBkZWZhdWx0OiBDb21wb25lbnRUeXBlPGFueT4gfVxuICB8IENvbXBvbmVudFR5cGU8YW55PjtcblxuLyoqXG4gKiBGdW5jdGlvbiB0aGF0IGxvYWRzIGEgcmVzb3VyY2UgcGFnZSBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCB0eXBlIFJlc291cmNlUGFnZUxvYWRlciA9ICgpID0+IFByb21pc2U8UmVzb3VyY2VQYWdlUmV0dXJuPjtcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29tcG9uZW50VHlwZSwgUmVhY3RFbGVtZW50LCBSZWFjdE5vZGUsIEpTWCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgTWF0Y2gsIE1hdGNoRnVuY3Rpb24sIFBhcmFtRGF0YSB9IGZyb20gJ3BhdGgtdG8tcmVnZXhwJztcblxuaW1wb3J0IHR5cGUgeyBGbGF0Um91dGUgfSBmcm9tICcuL2J1aWxkZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBSZXNvdXJjZVBhZ2UgfSBmcm9tICcuL1Jlc291cmNlUGFnZS5qcyc7XG5pbXBvcnQgdHlwZSB7IEJyb3dzZXJIaXN0b3J5IH0gZnJvbSAnLi9oaXN0b3J5L2luZGV4LmpzJztcblxuLyoqXG4gKiBJbnB1dCB0eXBlIGZvciBjcmVhdGluZyBhIEZsYXRSb3V0ZSBpbnN0YW5jZS5cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBGbGF0Um91dGVJbnB1dDxUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhPiA9IHtcbiAgLyoqIFRoZSBVUkwgcGF0aCBwYXR0ZXJuIGZvciB0aGlzIHJvdXRlICovXG4gIHBhdGg6IHN0cmluZztcbiAgLyoqIE9wdGlvbmFsIHJlZGlyZWN0IGRlc3RpbmF0aW9uIGlmIHRoaXMgcm91dGUgc2hvdWxkIHJlZGlyZWN0ICovXG4gIHJlZGlyZWN0VG8/OiBzdHJpbmc7XG4gIC8qKiBGdW5jdGlvbiB0byBtYXRjaCBVUkwgcGF0aHMgYWdhaW5zdCB0aGlzIHJvdXRlIHBhdHRlcm4gKi9cbiAgbWF0Y2hGdW5jdGlvbjogTWF0Y2hGdW5jdGlvbjxUVmFyaWFibGVzPjtcbiAgLyoqIE5lc3RlZCByb3V0ZXMgdGhhdCBzaG91bGQgYmUgcmVuZGVyZWQgd2l0aGluIHRoaXMgcm91dGUgKi9cbiAgcm91dGVzOiBSb3V0ZTxhbnksIGFueT5bXTtcbn07XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIG1hdGNoZWQgcm91dGUgd2l0aCBleHRyYWN0ZWQgcGFyYW1ldGVycyBhbmQgbWV0YWRhdGEuXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVyTWF0Y2hlZFJvdXRlPFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGE+ID0ge1xuICAvKiogVGhlIG1hdGNoIHJlc3VsdCBmcm9tIHBhdGgtdG8tcmVnZXhwICovXG4gIG1hdGNoOiBNYXRjaDxUVmFyaWFibGVzPjtcbiAgLyoqIEV4dHJhY3RlZCBwYXJhbWV0ZXJzIGZyb20gdGhlIFVSTCBwYXRoICovXG4gIHBhcmFtczogVFZhcmlhYmxlcztcbiAgLyoqIFRoZSBtYXRjaGVkIHBhdGggc3RyaW5nICovXG4gIHBhdGg6IHN0cmluZztcbiAgLyoqIFRoZSBmbGF0IHJvdXRlIHRoYXQgd2FzIG1hdGNoZWQgKi9cbiAgcm91dGU6IEZsYXRSb3V0ZTxUVmFyaWFibGVzPjtcbn07XG5cbi8qKlxuICogQSBSZWFjdCBjb21wb25lbnQgdGhhdCBjYW4gYmUgdXNlZCBhcyBhIHJvdXRlIGNvbXBvbmVudC5cbiAqIEB0ZW1wbGF0ZSBUUHJvcHMgLSBUaGUgcHJvcHMgdHlwZSBmb3IgdGhlIGNvbXBvbmVudFxuICovXG5leHBvcnQgdHlwZSBSb3V0ZVJlYWN0Q29tcG9uZW50PFRQcm9wcyA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9IChcbiAgcHJvcHM6IFRQcm9wcyxcbikgPT4gSlNYLkVsZW1lbnQgfCBudWxsO1xuXG4vKipcbiAqIE9wdGlvbnMgcGFzc2VkIHRvIGEgcm91dGUgcmVuZGVyIGZ1bmN0aW9uLlxuICogQHRlbXBsYXRlIFRQcmVwYXJlZCAtIFRoZSB0eXBlIG9mIHByZXBhcmVkIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHJvdXRlJ3MgcHJlcGFyZSBmdW5jdGlvblxuICogQHRlbXBsYXRlIFRWYXJpYWJsZXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIFJvdXRlUmVuZGVyT3B0czxcbiAgVFByZXBhcmVkIGV4dGVuZHMgUHJlcGFyZVJlc3VsdCxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSA9IFBhcmFtRGF0YSxcbj4gPSB7XG4gIC8qKiBDaGlsZCBjb21wb25lbnRzIHRvIHJlbmRlciB3aXRoaW4gdGhpcyByb3V0ZSAqL1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICAvKiogT3B0aW9uYWwgY29tcG9uZW50IHRvIHJlbmRlciAoZnJvbSBSZXNvdXJjZVBhZ2UpICovXG4gIENvbXBvbmVudD86IFJvdXRlUmVhY3RDb21wb25lbnQ7XG4gIC8qKiBEYXRhIHByZXBhcmVkIGJ5IHRoZSByb3V0ZSdzIHByZXBhcmUgZnVuY3Rpb24gKi9cbiAgcHJlcGFyZWQ6IFRQcmVwYXJlZCB8IHVuZGVmaW5lZDtcbiAgLyoqIFRoZSBwcmVwYXJlZCByb3V0ZSB0aGF0IGlzIGJlaW5nIHJlbmRlcmVkICovXG4gIHByZXBhcmVkUm91dGU6IFByZXBhcmVkTWF0Y2hSb3V0ZTtcbiAgLyoqIFRoZSBtYXRjaGVkIHJvdXRlIG9yIG51bGwgaWYgbm8gbWF0Y2ggKi9cbiAgcm91dGU6IEZsYXRSb3V0ZTxUVmFyaWFibGVzPiB8IG51bGw7XG4gIC8qKiBSYXcgcXVlcnkgb2JqZWN0IChQaGFzZSAyIGdlbmVyaWMgcGFyc2luZykgKi9cbiAgcmF3UXVlcnk6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdPjtcbiAgLyoqIFR5cGVkIHF1ZXJ5IG9iamVjdCAoUGhhc2UgMykuIEZhbGxzIGJhY2sgdG8gcmF3UXVlcnkgaWYgbm8gc2NoZW1hICovXG4gIHF1ZXJ5OiBhbnk7XG59O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIHJlbmRlciBhIHJvdXRlIHdpdGggY3VzdG9tIGxvZ2ljLlxuICogQHRlbXBsYXRlIFRQcmVwYXJlZCAtIFRoZSB0eXBlIG9mIHByZXBhcmVkIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHJvdXRlJ3MgcHJlcGFyZSBmdW5jdGlvblxuICogQHRlbXBsYXRlIFRWYXJpYWJsZXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIFJvdXRlUmVuZGVyPFxuICBUUHJlcGFyZWQgZXh0ZW5kcyBQcmVwYXJlUmVzdWx0LFxuICBUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhID0gUGFyYW1EYXRhLFxuPiA9IChvcHRzOiBSb3V0ZVJlbmRlck9wdHM8VFByZXBhcmVkLCBUVmFyaWFibGVzPikgPT4gUmVhY3RFbGVtZW50PGFueT4gfCBudWxsO1xuXG4vKipcbiAqIEEgcm91dGUgdGhhdCBoYXMgYmVlbiBwcmVwYXJlZCBmb3IgcmVuZGVyaW5nIHdpdGggbG9hZGVkIGRhdGEgYW5kIGNvbXBvbmVudHMuXG4gKi9cbmV4cG9ydCB0eXBlIFByZXBhcmVkTWF0Y2hSb3V0ZSA9IHtcbiAgLyoqIFRoZSBwYXRoIHRoYXQgd2FzIG1hdGNoZWQgKi9cbiAgcGF0aD86IHN0cmluZztcbiAgLyoqIERhdGEgcHJlcGFyZWQgYnkgdGhlIHJvdXRlJ3MgcHJlcGFyZSBmdW5jdGlvbiAqL1xuICBwcmVwYXJlZDogUHJlcGFyZVJlc3VsdCB8IHVuZGVmaW5lZDtcbiAgLyoqIEN1c3RvbSByZW5kZXIgZnVuY3Rpb24gZm9yIHRoaXMgcm91dGUgKi9cbiAgcmVuZGVyPzogUm91dGVSZW5kZXI8YW55LCBhbnk+O1xuICAvKiogUmVkaXJlY3QgZGVzdGluYXRpb24gaWYgdGhpcyByb3V0ZSBzaG91bGQgcmVkaXJlY3QgKi9cbiAgcmVkaXJlY3RUbzogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFJlc291cmNlIHBhZ2UgZm9yIGxhenktbG9hZGVkIGNvbXBvbmVudHMgKi9cbiAgcmVzb3VyY2VQYWdlPzogUmVzb3VyY2VQYWdlIHwgbnVsbDtcbn07XG5cbi8qKlxuICogUmVzdWx0IG9mIHByZXBhcmluZyBhIG1hdGNoZWQgcm91dGUsIGluY2x1ZGluZyBhbGwgbmVzdGVkIHJvdXRlcy5cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBQcmVwYXJlZE1hdGNoPFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGE+ID0ge1xuICAvKiogVGhlIG1hdGNoZWQgcm91dGUgb3IgbnVsbCBpZiBubyBtYXRjaCAqL1xuICBtYXRjaDogUm91dGVyTWF0Y2hlZFJvdXRlPFRWYXJpYWJsZXM+IHwgbnVsbDtcbiAgLyoqIEFycmF5IG9mIHByZXBhcmVkIHJvdXRlcyBmb3IgcmVuZGVyaW5nICovXG4gIHJvdXRlczogUHJlcGFyZWRNYXRjaFJvdXRlW107XG59O1xuXG4vKipcbiAqIENvbXBsZXRlIHJvdXRlIGVudHJ5IHJlcHJlc2VudGluZyB0aGUgY3VycmVudCByb3V0ZXIgc3RhdGUuXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVFbnRyeTxUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhPiA9IHtcbiAgLyoqIFRoZSBwcmVwYXJlZCBtYXRjaCB3aXRoIGxvYWRlZCBkYXRhIGFuZCBjb21wb25lbnRzICovXG4gIHByZXBhcmVkTWF0Y2g6IFByZXBhcmVkTWF0Y2g8VFZhcmlhYmxlcz47XG4gIC8qKiBDdXJyZW50IGJyb3dzZXIgbG9jYXRpb24gKi9cbiAgbG9jYXRpb246IExvY2F0aW9uO1xuICAvKiogVGhlIG1hdGNoZWQgcm91dGUgb3IgbnVsbCBpZiBubyBtYXRjaCAqL1xuICByb3V0ZTogUm91dGVyTWF0Y2hlZFJvdXRlPFRWYXJpYWJsZXM+IHwgbnVsbDtcbiAgLyoqIFdoZXRoZXIgdG8gZm9yY2UgYSByZS1yZW5kZXIgZXZlbiBpZiB0aGUgcGF0aCBoYXNuJ3QgY2hhbmdlZCAqL1xuICBmb3JjZVJlcmVuZGVyOiBib29sZWFuO1xuICAvKiogUmF3IHNlYXJjaCBzdHJpbmcgKHF1ZXJ5IHBhcnQpIG9mIHRoZSBsb2NhdGlvbiBmb3IgY2hhbmdlIGRldGVjdGlvbiAqL1xuICByYXdTZWFyY2g/OiBzdHJpbmc7XG4gIC8qKiBQYXJzZWQgcmF3IHF1ZXJ5IHBhcmFtZXRlcnMgKHZhbHVlcyBhZ2dyZWdhdGVkOyBkdXBsaWNhdGVzID0+IGFycmF5KSAqL1xuICBxdWVyeTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10+O1xuICAvKiogVHlwZWQgcXVlcnkgZGVyaXZlZCBmcm9tIHNjaGVtYSBmb3IgdGhlIG1hdGNoZWQgcm91dGUgKFBoYXNlIDMpICovXG4gIHR5cGVkUXVlcnk/OiBhbnk7XG59O1xuXG4vKiogUXVlcnkgZGVzY3JpcHRvciBiYXNlIHNoYXBlICovXG5leHBvcnQgdHlwZSBRdWVyeURlc2NyaXB0b3I8VD4gPSB7XG4gIC8qKiBpbnRlcm5hbCBtYXJrZXIgZm9yIGluZmVyZW5jZSAqL1xuICBfX3R5cGU6IFQ7XG4gIC8qKiBwYXJzZSBhbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzIGludG8gVCB8IHVuZGVmaW5lZCAqL1xuICBwYXJzZTogKHZhbHVlczogc3RyaW5nW10pID0+IFQgfCB1bmRlZmluZWQ7XG4gIC8qKiBzZXJpYWxpemUgYSB2YWx1ZSBpbnRvIHN0cmluZyB2YWx1ZXMgKi9cbiAgc2VyaWFsaXplOiAodmFsdWU6IFQpID0+IHN0cmluZ1tdO1xuICBvcHRpb25hbD86IGJvb2xlYW47XG4gIGhhc0RlZmF1bHQ/OiBib29sZWFuO1xuICBkZWZhdWx0VmFsdWU/OiBUO1xufTtcblxuZXhwb3J0IHR5cGUgUXVlcnlTY2hlbWEgPSBSZWNvcmQ8c3RyaW5nLCBRdWVyeURlc2NyaXB0b3I8YW55Pj47XG5cbi8qKiBJbmZlciB0aGUgb3V0cHV0IHR5cGUgb2YgYSBzY2hlbWEgKi9cbmV4cG9ydCB0eXBlIEluZmVyUXVlcnk8UyBleHRlbmRzIFF1ZXJ5U2NoZW1hPiA9IHtcbiAgW0sgaW4ga2V5b2YgU106IFNbS10gZXh0ZW5kcyBRdWVyeURlc2NyaXB0b3I8aW5mZXIgTz5cbiAgICA/IFNbS11bJ29wdGlvbmFsJ10gZXh0ZW5kcyB0cnVlXG4gICAgICA/IFNbS11bJ2hhc0RlZmF1bHQnXSBleHRlbmRzIHRydWVcbiAgICAgICAgPyBPXG4gICAgICAgIDogTyB8IHVuZGVmaW5lZFxuICAgICAgOiBPXG4gICAgOiBuZXZlcjtcbn07XG5cbi8qKlxuICogSFRUUCBzdGF0dXMgY29kZXMgZm9yIHJlZGlyZWN0cy5cbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVyUmVkaXJlY3RTdGF0dXMgPSAzMDEgfCAzMDI7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIG1hdGNoZWQgcm91dGUgd2l0aCByZWdleCBtYXRjaCByZXN1bHQuXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgTWF0Y2hlZFJvdXRlPFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGE+ID0ge1xuICAvKiogVGhlIHJlZ2V4IG1hdGNoIHJlc3VsdCAqL1xuICBtYXRjaDogUmVnRXhwRXhlY0FycmF5O1xuICAvKiogVGhlIGZsYXQgcm91dGUgdGhhdCB3YXMgbWF0Y2hlZCAqL1xuICByb3V0ZTogRmxhdFJvdXRlPFRWYXJpYWJsZXM+O1xufTtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBhIHJvdXRlIHJlZGlyZWN0LlxuICovXG5leHBvcnQgdHlwZSBSZWRpcmVjdCA9IHtcbiAgLyoqIE9wdGlvbmFsIHNvdXJjZSBwYXRoIHBhdHRlcm4gKi9cbiAgcGF0aD86IHN0cmluZztcbiAgLyoqIERlc3RpbmF0aW9uIHBhdGggZm9yIHRoZSByZWRpcmVjdCAqL1xuICB0bzogc3RyaW5nO1xuICAvKiogSFRUUCBzdGF0dXMgY29kZSBmb3IgdGhlIHJlZGlyZWN0ICovXG4gIHN0YXR1cz86IFJvdXRlclJlZGlyZWN0U3RhdHVzO1xufTtcblxuLyoqXG4gKiBCYXNlIHR5cGUgZm9yIGRhdGEgcHJlcGFyZWQgYnkgcm91dGUgcHJlcGFyZSBmdW5jdGlvbnMuXG4gKi9cbmV4cG9ydCB0eXBlIFByZXBhcmVSZXN1bHQgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgcGFzc2VkIHRvIGEgcm91dGUncyBwcmVwYXJlIGZ1bmN0aW9uLlxuICogQHRlbXBsYXRlIFRWYXJpYWJsZXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIFByZXBhcmVQYXJhbXM8VFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSwgVFF1ZXJ5ID0gYW55PiA9IHtcbiAgLyoqIFRoZSBtYXRjaGVkIHJvdXRlIHdpdGggZXh0cmFjdGVkIHBhcmFtZXRlcnMgKi9cbiAgbWF0Y2g6IFJvdXRlck1hdGNoZWRSb3V0ZTxUVmFyaWFibGVzPjtcbiAgLyoqIFRoZSBmbGF0IHJvdXRlIHRoYXQgd2FzIG1hdGNoZWQgKi9cbiAgbWF0Y2hlZFJvdXRlOiBGbGF0Um91dGU8VFZhcmlhYmxlcz47XG4gIC8qKiBSZXNvdXJjZSBwYWdlIGZvciBsYXp5LWxvYWRlZCBjb21wb25lbnRzICovXG4gIHJlc291cmNlUGFnZT86IFJlc291cmNlUGFnZSB8IG51bGw7XG4gIC8qKiBFeHRyYWN0ZWQgVVJMIHBhcmFtZXRlcnMgKi9cbiAgdmFyaWFibGVzOiBUVmFyaWFibGVzO1xuICAvKiogVHlwZWQgcXVlcnkgb2JqZWN0ICovXG4gIHF1ZXJ5OiBUUXVlcnk7XG59O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIHByZXBhcmUgZGF0YSBmb3IgYSByb3V0ZSBiZWZvcmUgcmVuZGVyaW5nLlxuICogQHRlbXBsYXRlIFRQcmVwYXJlZCAtIFRoZSB0eXBlIG9mIGRhdGEgdGhpcyBmdW5jdGlvbiByZXR1cm5zXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVQcmVwYXJlPFxuICBUUHJlcGFyZWQgZXh0ZW5kcyBQcmVwYXJlUmVzdWx0LFxuICBUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhID0gUGFyYW1EYXRhLFxuICBUUXVlcnkgPSBhbnksXG4+ID0gKHBhcmFtczogUHJlcGFyZVBhcmFtczxUVmFyaWFibGVzLCBUUXVlcnk+KSA9PiBUUHJlcGFyZWQ7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgYSBzaW5nbGUgcm91dGUgaW4gdGhlIHJvdXRlci5cbiAqIEB0ZW1wbGF0ZSBUUHJlcGFyZWQgLSBUaGUgdHlwZSBvZiBwcmVwYXJlZCBkYXRhIHJldHVybmVkIGJ5IHRoZSByb3V0ZSdzIHByZXBhcmUgZnVuY3Rpb25cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBSb3V0ZTxcbiAgVFByZXBhcmVkIGV4dGVuZHMgUHJlcGFyZVJlc3VsdCxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSA9IFBhcmFtRGF0YSxcbiAgVFF1ZXJ5ID0gYW55LFxuPiA9IHtcbiAgLyoqIE5lc3RlZCBjaGlsZCByb3V0ZXMgb3IgcmVkaXJlY3RzICovXG4gIGNoaWxkcmVuPzogKFJvdXRlPGFueSwgYW55PiB8IFJlZGlyZWN0KVtdO1xuICAvKiogUmVzb3VyY2UgcGFnZSBmb3IgbGF6eS1sb2FkZWQgY29tcG9uZW50cyAqL1xuICByZXNvdXJjZVBhZ2U/OiBSZXNvdXJjZVBhZ2UgfCBudWxsO1xuICAvKiogVVJMIHBhdGggcGF0dGVybiBmb3IgdGhpcyByb3V0ZSAqL1xuICBwYXRoPzogc3RyaW5nO1xuICAvKiogRnVuY3Rpb24gdG8gcHJlcGFyZSBkYXRhIGJlZm9yZSByZW5kZXJpbmcgKi9cbiAgcHJlcGFyZT86IFJvdXRlUHJlcGFyZTxUUHJlcGFyZWQsIFRWYXJpYWJsZXMsIFRRdWVyeT47XG4gIC8qKiBDdXN0b20gcmVuZGVyIGZ1bmN0aW9uIGZvciB0aGlzIHJvdXRlICovXG4gIHJlbmRlcj86IFJvdXRlUmVuZGVyPFRQcmVwYXJlZCwgVFZhcmlhYmxlcz47XG4gIC8qKiBPcHRpb25hbCBxdWVyeSBzY2hlbWEgZm9yIHR5cGVkIHBhcnNpbmcgKFBoYXNlIDMgYXR0YWNobWVudCkgKi9cbiAgcXVlcnk/OiBRdWVyeVNjaGVtYTtcbiAgLyoqIE9wdGlvbmFsIHJvdXRlLWxldmVsIGZpbHRlciBzY2hlbWEgKG1lcmdlZCB3aXRoIGFuY2VzdG9yczsgZGVlcGVzdCBvdmVycmlkZSBwZXIgZmllbGQpICovXG4gIGZpbHRlclNjaGVtYT86IHsgX19kZWZpbmVkOiB0cnVlOyBzY2hlbWE6IFJlY29yZDxzdHJpbmcsIGFueT4gfTtcbn07XG5cbi8qKlxuICogUHJvcHMgcGFzc2VkIHRvIFJvdXRlQ29tcG9uZW50IGluc3RhbmNlcy5cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBSb3V0ZUNvbXBvbmVudFByb3BzPFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGE+ID0ge1xuICAvKiogQ2hpbGQgY29tcG9uZW50cyB0byByZW5kZXIgKi9cbiAgY2hpbGRyZW46IFJlYWN0RWxlbWVudDxhbnk+O1xuICAvKiogUm91dGVyIGNvbnRleHQgY29udGFpbmluZyBuYXZpZ2F0aW9uIGFuZCBzdGF0ZSAqL1xuICByb3V0ZXJDb250ZXh0OiBSb3V0aW5nQ29udGV4dFR5cGU8VFZhcmlhYmxlcz47XG4gIC8qKiBUaGUgcm91dGUgY29uZmlndXJhdGlvbiAqL1xuICByb3V0ZTogUm91dGU8YW55LCBhbnk+O1xufTtcblxuLyoqXG4gKiBDYWxsYmFjayBmdW5jdGlvbiBmb3Igcm91dGUgY2hhbmdlcy5cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBTdWJzY3JpYmVDYWxsYmFjazxUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhPiA9IChcbiAgbmV4dEVudHJ5OiBSb3V0ZUVudHJ5PFRWYXJpYWJsZXM+LFxuKSA9PiB2b2lkO1xuXG4vKipcbiAqIFJvdXRlciBjb250ZXh0IHR5cGUgdGhhdCBwcm92aWRlcyBuYXZpZ2F0aW9uIGFuZCBzdGF0ZSBtYW5hZ2VtZW50LlxuICogQHRlbXBsYXRlIFRWYXJpYWJsZXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIFJvdXRpbmdDb250ZXh0VHlwZTxUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhPiA9IHtcbiAgLyoqIEJyb3dzZXIgaGlzdG9yeSBpbnN0YW5jZSBmb3IgbmF2aWdhdGlvbiAqL1xuICBoaXN0b3J5OiBCcm93c2VySGlzdG9yeTtcbiAgLyoqIEdldCB0aGUgY3VycmVudCByb3V0ZSBlbnRyeSAqL1xuICBnZXQ6ICgpID0+IFJvdXRlRW50cnk8VFZhcmlhYmxlcz47XG4gIC8qKiBQcmVsb2FkIGNvZGUgZm9yIGEgcm91dGUgd2l0aG91dCBzdG9yaW5nIHRoZSByZXN1bHQgKi9cbiAgcHJlbG9hZENvZGU6IChwYXRobmFtZTogc3RyaW5nKSA9PiB2b2lkO1xuICAvKiogUHJlbG9hZCBjb2RlIGFuZCBkYXRhIGZvciBhIHJvdXRlIHdpdGhvdXQgc3RvcmluZyB0aGUgcmVzdWx0ICovXG4gIHByZWxvYWQ6IChwYXRobmFtZTogc3RyaW5nKSA9PiB2b2lkO1xuICAvKiogU3Vic2NyaWJlIHRvIHJvdXRlIGNoYW5nZXMgKi9cbiAgc3Vic2NyaWJlOiAoY2FsbGJhY2s6IFN1YnNjcmliZUNhbGxiYWNrPFRWYXJpYWJsZXM+KSA9PiAoKSA9PiB2b2lkO1xuICAvKiogTmF2aWdhdGUgd2l0aCBvcHRpb25hbCBwYXRobmFtZSBhbmQgdHlwZWQvcmF3IHF1ZXJ5IG9iamVjdCAqL1xuICBuYXZpZ2F0ZTogKG9wdHM6IHtcbiAgICBwYXRobmFtZT86IHN0cmluZztcbiAgICBxdWVyeT86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgcmVwbGFjZT86IGJvb2xlYW47XG4gICAgLyoqIFN0cnVjdHVyZWQgZmlsdGVycyBzdGF0ZSB0byBtZXJnZSAobXVzdCBwcm92aWRlIGZpbHRlclNjaGVtYSB0b28pICovXG4gICAgZmlsdGVycz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgLyoqIERlZmluZWQgZmlsdGVyIHNjaGVtYSB3cmFwcGVyIHVzZWQgdG8gc2VyaWFsaXplIHByb3ZpZGVkIGZpbHRlcnMgKi9cbiAgICBmaWx0ZXJTY2hlbWE/OiB7IF9fZGVmaW5lZDogdHJ1ZTsgc2NoZW1hOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IH07XG4gICAgLyoqIEVuYWJsZSBjb2FsZXNjaW5nIHdpdGggb3RoZXIgbmF2aWdhdGlvbnMgaW4gdGhlIHNhbWUgbWljcm90YXNrIChtYW51YWwgb3B04oCRaW4pICovXG4gICAgYmF0Y2g/OiBib29sZWFuO1xuICAgIC8qKiBGb3JjZSBpbW1lZGlhdGUgbmF2aWdhdGlvbiBldmVuIGlmIGF1dG9CYXRjaCBpcyBlbmFibGVkIGdsb2JhbGx5ICovXG4gICAgaW1tZWRpYXRlPzogYm9vbGVhbjtcbiAgfSkgPT4gdm9pZDtcbiAgLyoqIFJlc29sdmUgbWVyZ2VkIHJvdXRlLWxldmVsIGZpbHRlciBzY2hlbWEgZm9yIGEgKHBvc3NpYmx5IGN1cnJlbnQpIHBhdGhuYW1lICovXG4gIHJlc29sdmVGaWx0ZXJTY2hlbWE6IChcbiAgICBwYXRobmFtZTogc3RyaW5nLFxuICApID0+IHsgX19kZWZpbmVkOiB0cnVlOyBzY2hlbWE6IFJlY29yZDxzdHJpbmcsIGFueT4gfSB8IHVuZGVmaW5lZDtcbiAgLyoqIEdldCBtZXJnZWQgZmlsdGVyIHNjaGVtYSBmb3IgY3VycmVudCByb3V0ZSAodW5kZWZpbmVkIGlmIG5vbmUpICovXG4gIGN1cnJlbnRNZXJnZWRGaWx0ZXJTY2hlbWE6ICgpID0+XG4gICAgfCB7IF9fZGVmaW5lZDogdHJ1ZTsgc2NoZW1hOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IH1cbiAgICB8IHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogUmV0dXJuIHR5cGUgZm9yIHJlc291cmNlIHBhZ2UgbG9hZGVycy5cbiAqL1xuZXhwb3J0IHR5cGUgUmVzb3VyY2VQYWdlUmV0dXJuID1cbiAgfCB7IGRlZmF1bHQ6IENvbXBvbmVudFR5cGU8YW55PiB9XG4gIHwgQ29tcG9uZW50VHlwZTxhbnk+O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHRoYXQgbG9hZHMgYSByZXNvdXJjZSBwYWdlIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IHR5cGUgUmVzb3VyY2VQYWdlTG9hZGVyID0gKCkgPT4gUHJvbWlzZTxSZXNvdXJjZVBhZ2VSZXR1cm4+O1xuIl19