@gnwebsoft/ui 3.0.9 → 4.0.1
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/dist/chunk-246MYJX6.js +479 -0
- package/dist/chunk-CE4CSA36.cjs +2262 -0
- package/dist/chunk-DJSMLHFO.js +140 -0
- package/dist/chunk-GHW77WIM.cjs +72 -0
- package/dist/chunk-L3QQX3BK.js +1596 -0
- package/dist/chunk-MULSVYFT.js +72 -0
- package/dist/chunk-MVPLBJRK.cjs +1 -1
- package/dist/chunk-NC3JINIM.cjs +1596 -0
- package/dist/chunk-R45OPW5A.js +2262 -0
- package/dist/chunk-UEBN47RB.cjs +140 -0
- package/dist/chunk-YUVXLOSA.cjs +479 -0
- package/dist/core/index.cjs +121 -0
- package/dist/core/index.js +121 -0
- package/dist/hooks/index.cjs +3 -3
- package/dist/hooks/index.js +1 -1
- package/dist/index.cjs +81 -7
- package/dist/index.js +126 -52
- package/dist/types/index.cjs +3 -3
- package/dist/types/index.js +1 -1
- package/dist/utils/index.cjs +3 -25
- package/dist/utils/index.js +3 -25
- package/dist/wrappers/index.cjs +4 -4
- package/dist/wrappers/index.js +16 -16
- package/package.json +22 -17
- package/dist/AsyncSelectPayload-B9-6l33R.d.cts +0 -10
- package/dist/AsyncSelectPayload-B9-6l33R.d.ts +0 -10
- package/dist/chunk-3OPVOWQK.js +0 -140
- package/dist/chunk-AEOF2TUF.cjs +0 -2273
- package/dist/chunk-ALHC7RLK.js +0 -575
- package/dist/chunk-BRRLB22L.js +0 -72
- package/dist/chunk-CHZU4PZB.js +0 -2273
- package/dist/chunk-EBRUE2WR.cjs +0 -493
- package/dist/chunk-HEHPKM4B.cjs +0 -140
- package/dist/chunk-K2EJ4YKO.cjs +0 -72
- package/dist/chunk-U6SDYCWF.js +0 -493
- package/dist/chunk-XY4U6A77.cjs +0 -575
- package/dist/components/index.cjs +0 -25
- package/dist/components/index.d.cts +0 -752
- package/dist/components/index.d.ts +0 -752
- package/dist/components/index.js +0 -25
- package/dist/enhanced-CDTkKUlj.d.ts +0 -134
- package/dist/enhanced-ZQoS03Cd.d.cts +0 -134
- package/dist/events-BcHVCLBz.d.cts +0 -77
- package/dist/events-BcHVCLBz.d.ts +0 -77
- package/dist/hooks/index.d.cts +0 -96
- package/dist/hooks/index.d.ts +0 -96
- package/dist/index.d.cts +0 -16
- package/dist/index.d.ts +0 -16
- package/dist/types/index.d.cts +0 -820
- package/dist/types/index.d.ts +0 -820
- package/dist/utils/index.d.cts +0 -683
- package/dist/utils/index.d.ts +0 -683
- package/dist/wrappers/index.d.cts +0 -1753
- package/dist/wrappers/index.d.ts +0 -1753
package/dist/chunk-HEHPKM4B.cjs
DELETED
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/hooks/useTransform/index.ts
|
|
2
|
-
function useTransform(options) {
|
|
3
|
-
const value = typeof _optionalChain([options, 'access', _ => _.transform, 'optionalAccess', _2 => _2.input]) === "function" ? options.transform.input(options.value) : options.value;
|
|
4
|
-
const onChange = (eventOrValue, value2) => {
|
|
5
|
-
if (typeof _optionalChain([options, 'access', _3 => _3.transform, 'optionalAccess', _4 => _4.output]) === "function") {
|
|
6
|
-
options.onChange(options.transform.output(eventOrValue, value2));
|
|
7
|
-
} else {
|
|
8
|
-
options.onChange(eventOrValue);
|
|
9
|
-
}
|
|
10
|
-
};
|
|
11
|
-
return {
|
|
12
|
-
value,
|
|
13
|
-
onChange
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
// src/hooks/useTransform/enhanced.ts
|
|
18
|
-
var _react = require('react');
|
|
19
|
-
var transformFactories = {
|
|
20
|
-
number: () => ({
|
|
21
|
-
input: (value) => {
|
|
22
|
-
if (value == null) return "";
|
|
23
|
-
return String(value);
|
|
24
|
-
},
|
|
25
|
-
output: (eventOrValue, _value) => {
|
|
26
|
-
let rawValue;
|
|
27
|
-
if (typeof eventOrValue === "object" && eventOrValue !== null && "target" in eventOrValue && typeof eventOrValue.target === "object" && eventOrValue.target !== null && "value" in eventOrValue.target) {
|
|
28
|
-
rawValue = String(eventOrValue.target.value);
|
|
29
|
-
} else {
|
|
30
|
-
rawValue = String(eventOrValue);
|
|
31
|
-
}
|
|
32
|
-
if (rawValue === "") return null;
|
|
33
|
-
const numValue = Number(rawValue);
|
|
34
|
-
return isNaN(numValue) ? null : numValue;
|
|
35
|
-
}
|
|
36
|
-
}),
|
|
37
|
-
text: () => ({
|
|
38
|
-
input: (value) => {
|
|
39
|
-
return _nullishCoalesce(value, () => ( ""));
|
|
40
|
-
},
|
|
41
|
-
output: (eventOrValue, _value) => {
|
|
42
|
-
if (typeof eventOrValue === "object" && eventOrValue !== null && "target" in eventOrValue && typeof eventOrValue.target === "object" && eventOrValue.target !== null && "value" in eventOrValue.target) {
|
|
43
|
-
return eventOrValue.target.value;
|
|
44
|
-
}
|
|
45
|
-
return eventOrValue;
|
|
46
|
-
}
|
|
47
|
-
}),
|
|
48
|
-
select: () => ({
|
|
49
|
-
input: (value) => {
|
|
50
|
-
return _nullishCoalesce(value, () => ( ""));
|
|
51
|
-
},
|
|
52
|
-
output: (eventOrValue, value) => {
|
|
53
|
-
if (value !== void 0) {
|
|
54
|
-
return value;
|
|
55
|
-
}
|
|
56
|
-
if (typeof eventOrValue === "object" && eventOrValue !== null && "target" in eventOrValue && typeof eventOrValue.target === "object" && eventOrValue.target !== null && "value" in eventOrValue.target) {
|
|
57
|
-
return eventOrValue.target.value;
|
|
58
|
-
}
|
|
59
|
-
return eventOrValue;
|
|
60
|
-
}
|
|
61
|
-
})
|
|
62
|
-
};
|
|
63
|
-
function getBuiltInTransform(fieldType) {
|
|
64
|
-
switch (fieldType) {
|
|
65
|
-
case "number":
|
|
66
|
-
return transformFactories.number();
|
|
67
|
-
case "text":
|
|
68
|
-
return transformFactories.text();
|
|
69
|
-
case "select":
|
|
70
|
-
case "radio":
|
|
71
|
-
return transformFactories.select();
|
|
72
|
-
default:
|
|
73
|
-
return void 0;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
function useEnhancedTransform(options) {
|
|
77
|
-
const {
|
|
78
|
-
value: fieldValue,
|
|
79
|
-
onChange: fieldOnChange,
|
|
80
|
-
transform,
|
|
81
|
-
fieldType,
|
|
82
|
-
defaultValue,
|
|
83
|
-
enableWarnings
|
|
84
|
-
} = options;
|
|
85
|
-
const builtInTransform = _react.useMemo.call(void 0,
|
|
86
|
-
() => fieldType ? getBuiltInTransform(fieldType) : void 0,
|
|
87
|
-
[fieldType]
|
|
88
|
-
);
|
|
89
|
-
if (enableWarnings && process.env.NODE_ENV === "development") {
|
|
90
|
-
if (transform && fieldType) {
|
|
91
|
-
console.warn(
|
|
92
|
-
"useEnhancedTransform: Both custom transform and fieldType provided. Custom transform will take precedence."
|
|
93
|
-
);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
const transformedValue = _react.useMemo.call(void 0, () => {
|
|
97
|
-
const inputTransform = _optionalChain([transform, 'optionalAccess', _5 => _5.input]) || _optionalChain([builtInTransform, 'optionalAccess', _6 => _6.input]);
|
|
98
|
-
if (typeof inputTransform === "function") {
|
|
99
|
-
return inputTransform(fieldValue);
|
|
100
|
-
}
|
|
101
|
-
if (fieldValue == null && defaultValue !== void 0) {
|
|
102
|
-
return defaultValue;
|
|
103
|
-
}
|
|
104
|
-
return fieldValue;
|
|
105
|
-
}, [fieldValue, _optionalChain([transform, 'optionalAccess', _7 => _7.input]), _optionalChain([builtInTransform, 'optionalAccess', _8 => _8.input]), defaultValue]);
|
|
106
|
-
const enhancedOnChange = _react.useCallback.call(void 0,
|
|
107
|
-
(eventOrValue, value) => {
|
|
108
|
-
const outputTransform = _optionalChain([transform, 'optionalAccess', _9 => _9.output]) || _optionalChain([builtInTransform, 'optionalAccess', _10 => _10.output]);
|
|
109
|
-
if (typeof outputTransform === "function") {
|
|
110
|
-
try {
|
|
111
|
-
const transformedValue2 = outputTransform(eventOrValue, value);
|
|
112
|
-
fieldOnChange(transformedValue2);
|
|
113
|
-
} catch (error) {
|
|
114
|
-
if (enableWarnings && process.env.NODE_ENV === "development") {
|
|
115
|
-
console.error("useEnhancedTransform: Error in output transformation:", error);
|
|
116
|
-
}
|
|
117
|
-
fieldOnChange(
|
|
118
|
-
value !== void 0 ? value : eventOrValue
|
|
119
|
-
);
|
|
120
|
-
}
|
|
121
|
-
} else {
|
|
122
|
-
fieldOnChange(
|
|
123
|
-
value !== void 0 ? value : eventOrValue
|
|
124
|
-
);
|
|
125
|
-
}
|
|
126
|
-
},
|
|
127
|
-
[fieldOnChange, _optionalChain([transform, 'optionalAccess', _11 => _11.output]), _optionalChain([builtInTransform, 'optionalAccess', _12 => _12.output]), enableWarnings]
|
|
128
|
-
);
|
|
129
|
-
return {
|
|
130
|
-
value: transformedValue,
|
|
131
|
-
onChange: enhancedOnChange
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
exports.useTransform = useTransform; exports.transformFactories = transformFactories; exports.useEnhancedTransform = useEnhancedTransform;
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9idWlsZHMvbGlicy9HTldlYlNvZnQuVUkvcGFja2FnZXMvdWkvZGlzdC9jaHVuay1IRUhQS000Qi5janMiLCIuLi9zcmMvaG9va3MvdXNlVHJhbnNmb3JtL2luZGV4LnRzIiwiLi4vc3JjL2hvb2tzL3VzZVRyYW5zZm9ybS9lbmhhbmNlZC50cyJdLCJuYW1lcyI6WyJ2YWx1ZSIsInRyYW5zZm9ybWVkVmFsdWUiXSwibWFwcGluZ3MiOiJBQUFBO0FDNkdPLFNBQVMsWUFBQSxDQUtkLE9BQUEsRUFDaUQ7QUFDakQsRUFBQSxNQUFNLE1BQUEsRUFDSix1QkFBTyxPQUFBLG1CQUFRLFNBQUEsNkJBQVcsUUFBQSxJQUFVLFdBQUEsRUFDaEMsT0FBQSxDQUFRLFNBQUEsQ0FBVSxLQUFBLENBQU0sT0FBQSxDQUFRLEtBQUssRUFBQSxFQUNyQyxPQUFBLENBQVEsS0FBQTtBQUVkLEVBQUEsTUFBTSxTQUFBLEVBQVcsQ0FDZixZQUFBLEVBQ0FBLE1BQUFBLEVBQUFBLEdBQ1M7QUFDVCxJQUFBLEdBQUEsQ0FBSSx1QkFBTyxPQUFBLHFCQUFRLFNBQUEsNkJBQVcsU0FBQSxJQUFXLFVBQUEsRUFBWTtBQUNuRCxNQUFBLE9BQUEsQ0FBUSxRQUFBLENBQVMsT0FBQSxDQUFRLFNBQUEsQ0FBVSxNQUFBLENBQU8sWUFBQSxFQUFjQSxNQUFLLENBQUMsQ0FBQTtBQUFBLElBQ2hFLEVBQUEsS0FBTztBQUVMLE1BQUEsT0FBQSxDQUFRLFFBQUEsQ0FBUyxZQUE4QyxDQUFBO0FBQUEsSUFDakU7QUFBQSxFQUNGLENBQUE7QUFFQSxFQUFBLE9BQU87QUFBQSxJQUNMLEtBQUE7QUFBQSxJQUNBO0FBQUEsRUFDRixDQUFBO0FBQ0Y7QUQxSEE7QUFDQTtBRWhCQSw4QkFBcUM7QUFtRjlCLElBQU0sbUJBQUEsRUFBcUI7QUFBQSxFQUNoQyxNQUFBLEVBQVEsQ0FBQSxFQUFBLEdBQUEsQ0FBZ0Y7QUFBQSxJQUN0RixLQUFBLEVBQU8sQ0FBQyxLQUFBLEVBQUEsR0FBMEM7QUFDaEQsTUFB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QUEsTUFDRjtBQUFBLElBQ0YsQ0FBQTtBQUFBLElBQ0EsQ0FBQyxhQUFBLGtCQUFlLFNBQUEsK0JBQVcsUUFBQSxrQkFBUSxnQkFBQSwrQkFBa0IsUUFBQSxFQUFRLGNBQWM7QUFBQSxFQUM3RSxDQUFBO0FBRUEsRUFBQSxPQUFPO0FBQUEsSUFDTCxLQUFBLEVBQU8sZ0JBQUE7QUFBQSxJQUNQLFFBQUEsRUFBVTtBQUFBLEVBQ1osQ0FBQTtBQUNGO0FGM01BO0FBQ0E7QUFDRTtBQUNBO0FBQ0E7QUFDRiwwSUFBQyIsImZpbGUiOiIvYnVpbGRzL2xpYnMvR05XZWJTb2Z0LlVJL3BhY2thZ2VzL3VpL2Rpc3QvY2h1bmstSEVIUEtNNEIuY2pzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgdHlwZSB7XG4gIEZpZWxkUGF0aCxcbiAgRmllbGRWYWx1ZXMsXG4gIFBhdGhWYWx1ZSxcbiAgVXNlQ29udHJvbGxlclJldHVybixcbn0gZnJvbSBcInJlYWN0LWhvb2stZm9ybVwiO1xuaW1wb3J0IHR5cGUgeyBFdmVudE9yVmFsdWUgfSBmcm9tIFwiLi4vLi4vdHlwZXMvZXZlbnRzXCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIHVzZVRyYW5zZm9ybSBob29rLlxuICpcbiAqIEB0ZW1wbGF0ZSBURmllbGRWYWx1ZXMgLSBUaGUgZm9ybSB2YWx1ZXMgdHlwZVxuICogQHRlbXBsYXRlIFROYW1lIC0gVGhlIGZpZWxkIG5hbWUgdHlwZVxuICogQHRlbXBsYXRlIFRWYWx1ZSAtIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSB0eXBlXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFVzZVRyYW5zZm9ybU9wdGlvbnM8XG4gIFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzID0gRmllbGRWYWx1ZXMsXG4gIFROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4gPSBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPixcbiAgVFZhbHVlID0gdW5rbm93bixcbj4ge1xuICAvKiogVGhlIGN1cnJlbnQgZmllbGQgdmFsdWUgZnJvbSByZWFjdC1ob29rLWZvcm0gKi9cbiAgdmFsdWU6IFVzZUNvbnRyb2xsZXJSZXR1cm48VEZpZWxkVmFsdWVzLCBUTmFtZT5bXCJmaWVsZFwiXVtcInZhbHVlXCJdO1xuICAvKiogVGhlIG9uQ2hhbmdlIGhhbmRsZXIgZnJvbSByZWFjdC1ob29rLWZvcm0gKi9cbiAgb25DaGFuZ2U6IFVzZUNvbnRyb2xsZXJSZXR1cm48VEZpZWxkVmFsdWVzLCBUTmFtZT5bXCJmaWVsZFwiXVtcIm9uQ2hhbmdlXCJdO1xuICAvKiogT3B0aW9uYWwgdHJhbnNmb3JtYXRpb24gZnVuY3Rpb25zICovXG4gIHRyYW5zZm9ybT86IHtcbiAgICAvKipcbiAgICAgKiBUcmFuc2Zvcm0gdGhlIGZpZWxkIHZhbHVlIGZvciBkaXNwbGF5IGluIHRoZSBpbnB1dFxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBjdXJyZW50IGZpZWxkIHZhbHVlXG4gICAgICogQHJldHVybnMgVGhlIHRyYW5zZm9ybWVkIHZhbHVlIHRvIGRpc3BsYXlcbiAgICAgKi9cbiAgICBpbnB1dD86ICh2YWx1ZTogUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+KSA9PiBUVmFsdWU7XG4gICAgLyoqXG4gICAgICogVHJhbnNmb3JtIHRoZSBpbnB1dCBldmVudCBiYWNrIHRvIHRoZSBmaWVsZCB2YWx1ZVxuICAgICAqIEBwYXJhbSBldmVudCAtIFRoZSBpbnB1dCBldmVudCBwYXJhbWV0ZXJzXG4gICAgICogQHJldHVybnMgVGhlIHRyYW5zZm9ybWVkIHZhbHVlIHRvIHN0b3JlIGluIHRoZSBmb3JtXG4gICAgICovXG4gICAgb3V0cHV0PzogKFxuICAgICAgZXZlbnRPclZhbHVlOiBFdmVudE9yVmFsdWU8UGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+PixcbiAgICAgIHZhbHVlPzogUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+XG4gICAgKSA9PiBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT47XG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJuIHR5cGUgZm9yIHRoZSB1c2VUcmFuc2Zvcm0gaG9vay5cbiAqXG4gKiBAdGVtcGxhdGUgVEZpZWxkVmFsdWVzIC0gVGhlIGZvcm0gdmFsdWVzIHR5cGVcbiAqIEB0ZW1wbGF0ZSBUTmFtZSAtIFRoZSBmaWVsZCBuYW1lIHR5cGVcbiAqIEB0ZW1wbGF0ZSBUVmFsdWUgLSBUaGUgdHJhbnNmb3JtZWQgdmFsdWUgdHlwZVxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VUcmFuc2Zvcm1SZXR1cm48XG4gIFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzID0gRmllbGRWYWx1ZXMsXG4gIFROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4gPSBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPixcbiAgVFZhbHVlID0gdW5rbm93bixcbj4ge1xuICAvKiogVGhlIHRyYW5zZm9ybWVkIHZhbHVlIHRvIGRpc3BsYXkgaW4gdGhlIGlucHV0ICovXG4gIHZhbHVlOiBUVmFsdWU7XG4gIC8qKiBUaGUgZW5oYW5jZWQgb25DaGFuZ2UgaGFuZGxlciB3aXRoIHRyYW5zZm9ybWF0aW9uIGFwcGxpZWQgKi9cbiAgb25DaGFuZ2U6IFVzZUNvbnRyb2xsZXJSZXR1cm48VEZpZWxkVmFsdWVzLCBUTmFtZT5bXCJmaWVsZFwiXVtcIm9uQ2hhbmdlXCJdO1xufVxuXG4vKipcbiAqIEEgaG9vayBmb3IgdHJhbnNmb3JtaW5nIGZvcm0gZmllbGQgdmFsdWVzIGJldHdlZW4gZGlzcGxheSBhbmQgc3RvcmFnZSBmb3JtYXRzLlxuICpcbiAqIFRoaXMgaG9vayBwcm92aWRlcyBhIHdheSB0byB0cmFuc2Zvcm0gdmFsdWVzIGFzIHRoZXkgZmxvdyBiZXR3ZWVuIHRoZSBmb3JtIGZpZWxkXG4gKiBhbmQgdGhlIGRpc3BsYXkgY29tcG9uZW50LiBJdCdzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGZvcm1hdHRpbmcgZGF0YSBmb3IgZGlzcGxheVxuICogKGxpa2UgZGF0ZXMsIG51bWJlcnMsIG9yIGNvbXBsZXggb2JqZWN0cykgd2hpbGUgbWFpbnRhaW5pbmcgYSBkaWZmZXJlbnQgaW50ZXJuYWxcbiAqIHJlcHJlc2VudGF0aW9uIGluIHRoZSBmb3JtIHN0YXRlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBUcmFuc2Zvcm0gYSBkYXRlIGZvciBkaXNwbGF5OlxuICogYGBgdHN4XG4gKiBjb25zdCB7IHZhbHVlLCBvbkNoYW5nZSB9ID0gdXNlVHJhbnNmb3JtKHtcbiAqICAgdmFsdWU6IGZpZWxkLnZhbHVlLFxuICogICBvbkNoYW5nZTogZmllbGQub25DaGFuZ2UsXG4gKiAgIHRyYW5zZm9ybToge1xuICogICAgIGlucHV0OiAoZGF0ZSkgPT4gZGF0ZSA/IGZvcm1hdChkYXRlLCAneXl5eS1NTS1kZCcpIDogJycsXG4gKiAgICAgb3V0cHV0OiAoZXZlbnQpID0+IG5ldyBEYXRlKGV2ZW50LnRhcmdldC52YWx1ZSlcbiAqICAgfVxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZVxuICogVHJhbnNmb3JtIG51bWJlcnMgd2l0aCBmb3JtYXR0aW5nOlxuICogYGBgdHN4XG4gKiBjb25zdCB7IHZhbHVlLCBvbkNoYW5nZSB9ID0gdXNlVHJhbnNmb3JtKHtcbiAqICAgdmFsdWU6IGZpZWxkLnZhbHVlLFxuICogICBvbkNoYW5nZTogZmllbGQub25DaGFuZ2UsXG4gKiAgIHRyYW5zZm9ybToge1xuICogICAgIGlucHV0OiAobnVtKSA9PiBudW0gPyBudW0udG9Mb2NhbGVTdHJpbmcoKSA6ICcnLFxuICogICAgIG91dHB1dDogKGV2ZW50KSA9PiBwYXJzZUZsb2F0KGV2ZW50LnRhcmdldC52YWx1ZS5yZXBsYWNlKC8sL2csICcnKSlcbiAqICAgfVxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAdGVtcGxhdGUgVEZpZWxkVmFsdWVzIC0gVGhlIGZvcm0gdmFsdWVzIHR5cGVcbiAqIEB0ZW1wbGF0ZSBUTmFtZSAtIFRoZSBmaWVsZCBuYW1lIHR5cGVcbiAqIEB0ZW1wbGF0ZSBUVmFsdWUgLSBUaGUgdHJhbnNmb3JtZWQgdmFsdWUgdHlwZVxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGluY2x1ZGluZyB2YWx1ZSwgb25DaGFuZ2UsIGFuZCB0cmFuc2Zvcm0gZnVuY3Rpb25zXG4gKiBAcmV0dXJucyBPYmplY3Qgd2l0aCB0cmFuc2Zvcm1lZCB2YWx1ZSBhbmQgZW5oYW5jZWQgb25DaGFuZ2UgaGFuZGxlclxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVRyYW5zZm9ybTxcbiAgVEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXMgPSBGaWVsZFZhbHVlcyxcbiAgVE5hbWUgZXh0ZW5kcyBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPiA9IEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+LFxuICBUVmFsdWUgPSB1bmtub3duLFxuPihcbiAgb3B0aW9uczogVXNlVHJhbnNmb3JtT3B0aW9uczxURmllbGRWYWx1ZXMsIFROYW1lLCBUVmFsdWU+XG4pOiBVc2VUcmFuc2Zvcm1SZXR1cm48VEZpZWxkVmFsdWVzLCBUTmFtZSwgVFZhbHVlPiB7XG4gIGNvbnN0IHZhbHVlID1cbiAgICB0eXBlb2Ygb3B0aW9ucy50cmFuc2Zvcm0/LmlucHV0ID09PSBcImZ1bmN0aW9uXCJcbiAgICAgID8gb3B0aW9ucy50cmFuc2Zvcm0uaW5wdXQob3B0aW9ucy52YWx1ZSlcbiAgICAgIDogb3B0aW9ucy52YWx1ZTtcblxuICBjb25zdCBvbkNoYW5nZSA9IChcbiAgICBldmVudE9yVmFsdWU6IEV2ZW50T3JWYWx1ZTxQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4+LFxuICAgIHZhbHVlPzogUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+XG4gICk6IHZvaWQgPT4ge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy50cmFuc2Zvcm0/Lm91dHB1dCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBvcHRpb25zLm9uQ2hhbmdlKG9wdGlvbnMudHJhbnNmb3JtLm91dHB1dChldmVudE9yVmFsdWUsIHZhbHVlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFBhc3MgdGhyb3VnaCB0aGUgZXZlbnQgb3IgdmFsdWUgZGlyZWN0bHlcbiAgICAgIG9wdGlvbnMub25DaGFuZ2UoZXZlbnRPclZhbHVlIGFzIFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPik7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgdmFsdWUsXG4gICAgb25DaGFuZ2UsXG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZVRyYW5zZm9ybTtcbiIsImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IENoYW5nZUV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7XG4gIEZpZWxkUGF0aCxcbiAgRmllbGRWYWx1ZXMsXG4gIFBhdGhWYWx1ZSxcbiAgVXNlQ29udHJvbGxlclJldHVybixcbn0gZnJvbSBcInJlYWN0LWhvb2stZm9ybVwiO1xuaW1wb3J0IHR5cGUgeyBFdmVudE9yVmFsdWUsIElucHV0RWxlbWVudCB9IGZyb20gXCIuLi8uLi90eXBlcy9ldmVudHNcIjtcblxuLyoqXG4gKiBGaWVsZCB0eXBlcyBmb3IgYnVpbHQtaW4gdHJhbnNmb3JtYXRpb24gcGF0dGVybnNcbiAqL1xuZXhwb3J0IHR5cGUgRmllbGRUeXBlID0gJ3RleHQnIHwgJ251bWJlcicgfCAnZGF0ZScgfCAndGltZScgfCAnc2VsZWN0JyB8ICdyYWRpbyc7XG5cbi8qKlxuICogRW5oYW5jZWQgb3B0aW9ucyBmb3IgdGhlIHVzZVRyYW5zZm9ybSBob29rIHdpdGggcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uc1xuICogYW5kIGJ1aWx0LWluIGZpZWxkIHR5cGUgaGFuZGxpbmcuXG4gKlxuICogQHRlbXBsYXRlIFRGaWVsZFZhbHVlcyAtIFRoZSBmb3JtIHZhbHVlcyB0eXBlXG4gKiBAdGVtcGxhdGUgVE5hbWUgLSBUaGUgZmllbGQgbmFtZSB0eXBlXG4gKiBAdGVtcGxhdGUgVFZhbHVlIC0gVGhlIHRyYW5zZm9ybWVkIHZhbHVlIHR5cGVcbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5oYW5jZWRVc2VUcmFuc2Zvcm1PcHRpb25zPFxuICBURmllbGRWYWx1ZXMgZXh0ZW5kcyBGaWVsZFZhbHVlcyA9IEZpZWxkVmFsdWVzLFxuICBUTmFtZSBleHRlbmRzIEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+ID0gRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4sXG4gIFRWYWx1ZSA9IFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPixcbj4ge1xuICAvKiogVGhlIGN1cnJlbnQgZmllbGQgdmFsdWUgZnJvbSByZWFjdC1ob29rLWZvcm0gKi9cbiAgdmFsdWU6IFVzZUNvbnRyb2xsZXJSZXR1cm48VEZpZWxkVmFsdWVzLCBUTmFtZT5bXCJmaWVsZFwiXVtcInZhbHVlXCJdO1xuICAvKiogVGhlIG9uQ2hhbmdlIGhhbmRsZXIgZnJvbSByZWFjdC1ob29rLWZvcm0gKi9cbiAgb25DaGFuZ2U6IFVzZUNvbnRyb2xsZXJSZXR1cm48VEZpZWxkVmFsdWVzLCBUTmFtZT5bXCJmaWVsZFwiXVtcIm9uQ2hhbmdlXCJdO1xuICAvKiogT3B0aW9uYWwgdHJhbnNmb3JtYXRpb24gZnVuY3Rpb25zICovXG4gIHRyYW5zZm9ybT86IHtcbiAgICAvKipcbiAgICAgKiBUcmFuc2Zvcm0gdGhlIGZpZWxkIHZhbHVlIGZvciBkaXNwbGF5IGluIHRoZSBpbnB1dFxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBjdXJyZW50IGZpZWxkIHZhbHVlXG4gICAgICogQHJldHVybnMgVGhlIHRyYW5zZm9ybWVkIHZhbHVlIHRvIGRpc3BsYXlcbiAgICAgKi9cbiAgICBpbnB1dD86ICh2YWx1ZTogUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+KSA9PiBUVmFsdWU7XG4gICAgLyoqXG4gICAgICogVHJhbnNmb3JtIHRoZSBpbnB1dCBldmVudCBiYWNrIHRvIHRoZSBmaWVsZCB2YWx1ZVxuICAgICAqIEBwYXJhbSBldmVudCAtIFRoZSBpbnB1dCBldmVudCBvciB2YWx1ZVxuICAgICAqIEByZXR1cm5zIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSB0byBzdG9yZSBpbiB0aGUgZm9ybVxuICAgICAqL1xuICAgIG91dHB1dD86IChcbiAgICAgIGV2ZW50T3JWYWx1ZTogRXZlbnRPclZhbHVlPFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPj4sXG4gICAgICB2YWx1ZT86IFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPlxuICAgICkgPT4gUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+O1xuICB9O1xuICAvKiogQnVpbHQtaW4gZmllbGQgdHlwZSBmb3IgYXV0b21hdGljIHRyYW5zZm9ybWF0aW9uICovXG4gIGZpZWxkVHlwZT86IEZpZWxkVHlwZTtcbiAgLyoqIERlZmF1bHQgdmFsdWUgdG8gdXNlIHdoZW4gZmllbGQgdmFsdWUgaXMgbnVsbC91bmRlZmluZWQgKi9cbiAgZGVmYXVsdFZhbHVlPzogVFZhbHVlO1xuICAvKiogRW5hYmxlIGRldmVsb3BtZW50IHdhcm5pbmdzIGZvciBkZWJ1Z2dpbmcgKi9cbiAgZW5hYmxlV2FybmluZ3M/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEVuaGFuY2VkIHJldHVybiB0eXBlIGZvciB0aGUgdXNlVHJhbnNmb3JtIGhvb2sgd2l0aCBzdGFibGUgcmVmZXJlbmNlc1xuICpcbiAqIEB0ZW1wbGF0ZSBURmllbGRWYWx1ZXMgLSBUaGUgZm9ybSB2YWx1ZXMgdHlwZVxuICogQHRlbXBsYXRlIFROYW1lIC0gVGhlIGZpZWxkIG5hbWUgdHlwZSAgXG4gKiBAdGVtcGxhdGUgVFZhbHVlIC0gVGhlIHRyYW5zZm9ybWVkIHZhbHVlIHR5cGVcbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5oYW5jZWRVc2VUcmFuc2Zvcm1SZXR1cm48XG4gIFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzID0gRmllbGRWYWx1ZXMsXG4gIFROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4gPSBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPixcbiAgVFZhbHVlID0gUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+LFxuPiB7XG4gIC8qKiBUaGUgdHJhbnNmb3JtZWQgdmFsdWUgdG8gZGlzcGxheSBpbiB0aGUgaW5wdXQgKG1lbW9pemVkKSAqL1xuICB2YWx1ZTogVFZhbHVlO1xuICAvKiogVGhlIGVuaGFuY2VkIG9uQ2hhbmdlIGhhbmRsZXIgd2l0aCB0cmFuc2Zvcm1hdGlvbiBhcHBsaWVkIChtZW1vaXplZCkgKi9cbiAgb25DaGFuZ2U6IFVzZUNvbnRyb2xsZXJSZXR1cm48VEZpZWxkVmFsdWVzLCBUTmFtZT5bXCJmaWVsZFwiXVtcIm9uQ2hhbmdlXCJdO1xufVxuXG4vKipcbiAqIFRyYW5zZm9ybSBmYWN0b3JpZXMgZm9yIGNvbW1vbiBmaWVsZCB0eXBlc1xuICovXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtRmFjdG9yaWVzID0ge1xuICBudW1iZXI6IDxURmllbGRWYWx1ZXMgZXh0ZW5kcyBGaWVsZFZhbHVlcywgVE5hbWUgZXh0ZW5kcyBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPj4oKSA9PiAoe1xuICAgIGlucHV0OiAodmFsdWU6IFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPikgPT4ge1xuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiBcIlwiIGFzIHN0cmluZztcblxuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgfSxcbiAgICBvdXRwdXQ6IChcbiAgICAgIGV2ZW50T3JWYWx1ZTogRXZlbnRPclZhbHVlPFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPj4sXG4gICAgICBfdmFsdWU/OiBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT5cbiAgICApID0+IHtcbiAgICAgIGxldCByYXdWYWx1ZTogc3RyaW5nO1xuICAgICAgXG4gICAgICAvLyBFeHRyYWN0IHN0cmluZyB2YWx1ZSBmcm9tIGV2ZW50IG9yIGRpcmVjdCB2YWx1ZVxuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgZXZlbnRPclZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgICBldmVudE9yVmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgJ3RhcmdldCcgaW4gZXZlbnRPclZhbHVlICYmXG4gICAgICAgIHR5cGVvZiBldmVudE9yVmFsdWUudGFyZ2V0ID09PSAnb2JqZWN0JyAmJlxuICAgICAgICBldmVudE9yVmFsdWUudGFyZ2V0ICE9PSBudWxsICYmXG4gICAgICAgICd2YWx1ZScgaW4gZXZlbnRPclZhbHVlLnRhcmdldFxuICAgICAgKSB7XG4gICAgICAgIHJhd1ZhbHVlID0gU3RyaW5nKChldmVudE9yVmFsdWUudGFyZ2V0IGFzIHVua25vd24gYXMgeyB2YWx1ZTogdW5rbm93biB9KS52YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByYXdWYWx1ZSA9IFN0cmluZyhldmVudE9yVmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAocmF3VmFsdWUgPT09IFwiXCIpIHJldHVybiBudWxsIGFzIFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPjtcbiAgICAgIGNvbnN0IG51bVZhbHVlID0gTnVtYmVyKHJhd1ZhbHVlKTtcblxuICAgICAgcmV0dXJuIChpc05hTihudW1WYWx1ZSkgPyBudWxsIDogbnVtVmFsdWUpIGFzIFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPjtcbiAgICB9LFxuICB9KSxcblxuICB0ZXh0OiA8VEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXMsIFROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4+KCkgPT4gKHtcbiAgICBpbnB1dDogKHZhbHVlOiBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4pID0+IHtcbiAgICAgIHJldHVybiAodmFsdWUgPz8gXCJcIikgYXMgc3RyaW5nO1xuICAgIH0sXG4gICAgb3V0cHV0OiAoXG4gICAgICBldmVudE9yVmFsdWU6IEV2ZW50T3JWYWx1ZTxQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4+LFxuICAgICAgX3ZhbHVlPzogUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+XG4gICAgKSA9PiB7XG4gICAgICAvLyBFeHRyYWN0IHN0cmluZyB2YWx1ZSBmcm9tIGV2ZW50IG9yIGRpcmVjdCB2YWx1ZVxuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgZXZlbnRPclZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgICBldmVudE9yVmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgJ3RhcmdldCcgaW4gZXZlbnRPclZhbHVlICYmXG4gICAgICAgIHR5cGVvZiBldmVudE9yVmFsdWUudGFyZ2V0ID09PSAnb2JqZWN0JyAmJlxuICAgICAgICBldmVudE9yVmFsdWUudGFyZ2V0ICE9PSBudWxsICYmXG4gICAgICAgICd2YWx1ZScgaW4gZXZlbnRPclZhbHVlLnRhcmdldFxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiAoZXZlbnRPclZhbHVlLnRhcmdldCBhcyB1bmtub3duIGFzIHsgdmFsdWU6IFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPiB9KS52YWx1ZTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgcmV0dXJuIGV2ZW50T3JWYWx1ZSBhcyBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT47XG4gICAgfSxcbiAgfSksXG5cbiAgc2VsZWN0OiA8VEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXMsIFROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4+KCkgPT4gKHtcbiAgICBpbnB1dDogKHZhbHVlOiBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4pID0+IHtcbiAgICAgIHJldHVybiB2YWx1ZSA/PyAoXCJcIiBhcyBzdHJpbmcpO1xuICAgIH0sXG4gICAgb3V0cHV0OiAoXG4gICAgICBldmVudE9yVmFsdWU6IEV2ZW50T3JWYWx1ZTxQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4+LFxuICAgICAgdmFsdWU/OiBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT5cbiAgICApID0+IHtcbiAgICAgIC8vIE1VSSBwYXR0ZXJuOiAoZXZlbnQsIHZhbHVlKSB3aGVyZSB2YWx1ZSBpcyB0aGUgYWN0dWFsIHNlbGVjdGVkIHZhbHVlXG4gICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdmFsdWUgYXMgUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+O1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBTdGFuZGFyZCBldmVudCBwYXR0ZXJuOiBleHRyYWN0IGZyb20gZXZlbnQudGFyZ2V0LnZhbHVlXG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBldmVudE9yVmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICAgIGV2ZW50T3JWYWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICAndGFyZ2V0JyBpbiBldmVudE9yVmFsdWUgJiZcbiAgICAgICAgdHlwZW9mIGV2ZW50T3JWYWx1ZS50YXJnZXQgPT09ICdvYmplY3QnICYmXG4gICAgICAgIGV2ZW50T3JWYWx1ZS50YXJnZXQgIT09IG51bGwgJiZcbiAgICAgICAgJ3ZhbHVlJyBpbiBldmVudE9yVmFsdWUudGFyZ2V0XG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIChldmVudE9yVmFsdWUudGFyZ2V0IGFzIHVua25vd24gYXMgeyB2YWx1ZTogUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+IH0pLnZhbHVlO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBEaXJlY3QgdmFsdWVcbiAgICAgIHJldHVybiBldmVudE9yVmFsdWUgYXMgUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+O1xuICAgIH0sXG4gIH0pLFxufSBhcyBjb25zdDs7XG5cbi8qKlxuICogR2V0IGJ1aWx0LWluIHRyYW5zZm9ybWF0aW9uIGZvciBhIGZpZWxkIHR5cGVcbiAqL1xuZnVuY3Rpb24gZ2V0QnVpbHRJblRyYW5zZm9ybTxcbiAgVEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXMsXG4gIFROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4sXG4+KGZpZWxkVHlwZT86IEZpZWxkVHlwZSkge1xuICBzd2l0Y2ggKGZpZWxkVHlwZSkge1xuICAgIGNhc2UgJ251bWJlcic6XG4gICAgICByZXR1cm4gdHJhbnNmb3JtRmFjdG9yaWVzLm51bWJlcjxURmllbGRWYWx1ZXMsIFROYW1lPigpO1xuICAgIGNhc2UgJ3RleHQnOlxuICAgICAgcmV0dXJuIHRyYW5zZm9ybUZhY3Rvcmllcy50ZXh0PFRGaWVsZFZhbHVlcywgVE5hbWU+KCk7XG4gICAgY2FzZSAnc2VsZWN0JzpcbiAgICBjYXNlICdyYWRpbyc6XG4gICAgICByZXR1cm4gdHJhbnNmb3JtRmFjdG9yaWVzLnNlbGVjdDxURmllbGRWYWx1ZXMsIFROYW1lPigpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogQW4gZW5oYW5jZWQgaG9vayBmb3IgdHJhbnNmb3JtaW5nIGZvcm0gZmllbGQgdmFsdWVzIHdpdGggcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uc1xuICogYW5kIGJ1aWx0LWluIGZpZWxkIHR5cGUgaGFuZGxpbmcuXG4gKlxuICogVGhpcyBlbmhhbmNlZCB2ZXJzaW9uIHByb3ZpZGVzOlxuICogLSBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zIHdpdGggdXNlTWVtbyBhbmQgdXNlQ2FsbGJhY2tcbiAqIC0gQnVpbHQtaW4gdHJhbnNmb3JtYXRpb25zIGZvciBjb21tb24gZmllbGQgdHlwZXNcbiAqIC0gQmV0dGVyIFR5cGVTY3JpcHQgaW5mZXJlbmNlXG4gKiAtIERldmVsb3BtZW50IHdhcm5pbmdzXG4gKiAtIFN0YWJsZSByZWZlcmVuY2VzIHRvIHByZXZlbnQgdW5uZWNlc3NhcnkgcmUtcmVuZGVyc1xuICpcbiAqIEBleGFtcGxlXG4gKiBCYXNpYyB1c2FnZSB3aXRoIGJ1aWx0LWluIG51bWJlciBoYW5kbGluZzpcbiAqIGBgYHRzeFxuICogY29uc3QgeyB2YWx1ZSwgb25DaGFuZ2UgfSA9IHVzZUVuaGFuY2VkVHJhbnNmb3JtKHtcbiAqICAgdmFsdWU6IGZpZWxkLnZhbHVlLFxuICogICBvbkNoYW5nZTogZmllbGQub25DaGFuZ2UsXG4gKiAgIGZpZWxkVHlwZTogJ251bWJlcidcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQGV4YW1wbGVcbiAqIEN1c3RvbSB0cmFuc2Zvcm1hdGlvbnMgKHNhbWUgYXMgb3JpZ2luYWwpOlxuICogYGBgdHN4XG4gKiBjb25zdCB7IHZhbHVlLCBvbkNoYW5nZSB9ID0gdXNlRW5oYW5jZWRUcmFuc2Zvcm0oe1xuICogICB2YWx1ZTogZmllbGQudmFsdWUsXG4gKiAgIG9uQ2hhbmdlOiBmaWVsZC5vbkNoYW5nZSxcbiAqICAgdHJhbnNmb3JtOiB7XG4gKiAgICAgaW5wdXQ6ICh2YWx1ZSkgPT4gdmFsdWU/LnRvU3RyaW5nKCkgfHwgJycsXG4gKiAgICAgb3V0cHV0OiAoZXZlbnQpID0+IHBhcnNlSW50KGV2ZW50LnRhcmdldC52YWx1ZSkgfHwgbnVsbFxuICogICB9XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKiBXaXRoIGRlZmF1bHQgdmFsdWUgYW5kIHdhcm5pbmdzOlxuICogYGBgdHN4XG4gKiBjb25zdCB7IHZhbHVlLCBvbkNoYW5nZSB9ID0gdXNlRW5oYW5jZWRUcmFuc2Zvcm0oe1xuICogICB2YWx1ZTogZmllbGQudmFsdWUsXG4gKiAgIG9uQ2hhbmdlOiBmaWVsZC5vbkNoYW5nZSxcbiAqICAgZmllbGRUeXBlOiAndGV4dCcsXG4gKiAgIGRlZmF1bHRWYWx1ZTogJycsXG4gKiAgIGVuYWJsZVdhcm5pbmdzOiBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50J1xuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAdGVtcGxhdGUgVEZpZWxkVmFsdWVzIC0gVGhlIGZvcm0gdmFsdWVzIHR5cGVcbiAqIEB0ZW1wbGF0ZSBUTmFtZSAtIFRoZSBmaWVsZCBuYW1lIHR5cGVcbiAqIEB0ZW1wbGF0ZSBUVmFsdWUgLSBUaGUgdHJhbnNmb3JtZWQgdmFsdWUgdHlwZVxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGluY2x1ZGluZyB2YWx1ZSwgb25DaGFuZ2UsIGFuZCB0cmFuc2Zvcm0gZnVuY3Rpb25zXG4gKiBAcmV0dXJucyBPYmplY3Qgd2l0aCB0cmFuc2Zvcm1lZCB2YWx1ZSBhbmQgZW5oYW5jZWQgb25DaGFuZ2UgaGFuZGxlciAoYm90aCBtZW1vaXplZClcbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VFbmhhbmNlZFRyYW5zZm9ybTxcbiAgVEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXMgPSBGaWVsZFZhbHVlcyxcbiAgVE5hbWUgZXh0ZW5kcyBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPiA9IEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+LFxuICBUVmFsdWUgPSBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4sXG4+KFxuICBvcHRpb25zOiBFbmhhbmNlZFVzZVRyYW5zZm9ybU9wdGlvbnM8VEZpZWxkVmFsdWVzLCBUTmFtZSwgVFZhbHVlPlxuKTogRW5oYW5jZWRVc2VUcmFuc2Zvcm1SZXR1cm48VEZpZWxkVmFsdWVzLCBUTmFtZSwgVFZhbHVlPiB7XG4gIGNvbnN0IHsgXG4gICAgdmFsdWU6IGZpZWxkVmFsdWUsIFxuICAgIG9uQ2hhbmdlOiBmaWVsZE9uQ2hhbmdlLCBcbiAgICB0cmFuc2Zvcm0sIFxuICAgIGZpZWxkVHlwZSwgXG4gICAgZGVmYXVsdFZhbHVlLFxuICAgIGVuYWJsZVdhcm5pbmdzIFxuICB9ID0gb3B0aW9ucztcblxuICAvLyBHZXQgYnVpbHQtaW4gdHJhbnNmb3JtIGlmIGZpZWxkVHlwZSBpcyBzcGVjaWZpZWRcbiAgY29uc3QgYnVpbHRJblRyYW5zZm9ybSA9IHVzZU1lbW8oKCkgPT4gXG4gICAgZmllbGRUeXBlID8gZ2V0QnVpbHRJblRyYW5zZm9ybTxURmllbGRWYWx1ZXMsIFROYW1lPihmaWVsZFR5cGUpIDogdW5kZWZpbmVkLCBcbiAgICBbZmllbGRUeXBlXVxuICApO1xuXG4gIC8vIERldmVsb3BtZW50IHdhcm5pbmdzXG4gIGlmIChlbmFibGVXYXJuaW5ncyAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgIGlmICh0cmFuc2Zvcm0gJiYgZmllbGRUeXBlKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICd1c2VFbmhhbmNlZFRyYW5zZm9ybTogQm90aCBjdXN0b20gdHJhbnNmb3JtIGFuZCBmaWVsZFR5cGUgcHJvdmlkZWQuIEN1c3RvbSB0cmFuc2Zvcm0gd2lsbCB0YWtlIHByZWNlZGVuY2UuJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBNZW1vaXplIHRoZSB0cmFuc2Zvcm1lZCBkaXNwbGF5IHZhbHVlXG4gIGNvbnN0IHRyYW5zZm9ybWVkVmFsdWUgPSB1c2VNZW1vKCgpOiBUVmFsdWUgPT4ge1xuICAgIGNvbnN0IGlucHV0VHJhbnNmb3JtID0gdHJhbnNmb3JtPy5pbnB1dCB8fCBidWlsdEluVHJhbnNmb3JtPy5pbnB1dDtcbiAgICBcbiAgICBpZiAodHlwZW9mIGlucHV0VHJhbnNmb3JtID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiBpbnB1dFRyYW5zZm9ybShmaWVsZFZhbHVlKSBhcyBUVmFsdWU7XG4gICAgfVxuICAgIFxuICAgIC8vIEZhbGxiYWNrIHdpdGggZGVmYXVsdCB2YWx1ZSBzdXBwb3J0XG4gICAgaWYgKGZpZWxkVmFsdWUgPT0gbnVsbCAmJiBkZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGZpZWxkVmFsdWUgYXMgVFZhbHVlO1xuICB9LCBbZmllbGRWYWx1ZSwgdHJhbnNmb3JtPy5pbnB1dCwgYnVpbHRJblRyYW5zZm9ybT8uaW5wdXQsIGRlZmF1bHRWYWx1ZV0pO1xuXG4gIC8vIE1lbW9pemUgdGhlIGVuaGFuY2VkIG9uQ2hhbmdlIGhhbmRsZXJcbiAgY29uc3QgZW5oYW5jZWRPbkNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIGV2ZW50T3JWYWx1ZTogRXZlbnRPclZhbHVlPFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPj4sXG4gICAgICB2YWx1ZT86IFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPlxuICAgICkgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0VHJhbnNmb3JtID0gdHJhbnNmb3JtPy5vdXRwdXQgfHwgYnVpbHRJblRyYW5zZm9ybT8ub3V0cHV0O1xuICAgICAgXG4gICAgICBpZiAodHlwZW9mIG91dHB1dFRyYW5zZm9ybSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gSGFuZGxlIGJvdGggc2lnbmF0dXJlczogb2xkIChldmVudCBvbmx5KSBhbmQgbmV3IChldmVudCwgdmFsdWUpXG4gICAgICAgICAgY29uc3QgdHJhbnNmb3JtZWRWYWx1ZSA9IChvdXRwdXRUcmFuc2Zvcm0gYXMgKGU6IEV2ZW50T3JWYWx1ZTxQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4+LCB2PzogUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+KSA9PiBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4pKGV2ZW50T3JWYWx1ZSwgdmFsdWUpO1xuXG4gICAgICAgICAgZmllbGRPbkNoYW5nZSh0cmFuc2Zvcm1lZFZhbHVlKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBpZiAoZW5hYmxlV2FybmluZ3MgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3VzZUVuaGFuY2VkVHJhbnNmb3JtOiBFcnJvciBpbiBvdXRwdXQgdHJhbnNmb3JtYXRpb246JywgZXJyb3IpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEZhbGxiYWNrIHRvIGRpcmVjdCB2YWx1ZSBvciBmaXJzdCBhcmd1bWVudFxuICAgICAgICAgIGZpZWxkT25DaGFuZ2UoXG4gICAgICAgICAgICB2YWx1ZSAhPT0gdW5kZWZpbmVkIFxuICAgICAgICAgICAgICA/IHZhbHVlIFxuICAgICAgICAgICAgICA6IGV2ZW50T3JWYWx1ZSBhcyBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBObyB0cmFuc2Zvcm0sIHBhc3MgdGhyb3VnaCB0aGUgdmFsdWUgb3IgZXZlbnRcbiAgICAgICAgZmllbGRPbkNoYW5nZShcbiAgICAgICAgICB2YWx1ZSAhPT0gdW5kZWZpbmVkIFxuICAgICAgICAgICAgPyB2YWx1ZSBcbiAgICAgICAgICAgIDogZXZlbnRPclZhbHVlIGFzIFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPlxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2ZpZWxkT25DaGFuZ2UsIHRyYW5zZm9ybT8ub3V0cHV0LCBidWlsdEluVHJhbnNmb3JtPy5vdXRwdXQsIGVuYWJsZVdhcm5pbmdzXVxuICApO1xuXG4gIHJldHVybiB7XG4gICAgdmFsdWU6IHRyYW5zZm9ybWVkVmFsdWUsXG4gICAgb25DaGFuZ2U6IGVuaGFuY2VkT25DaGFuZ2UsXG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZUVuaGFuY2VkVHJhbnNmb3JtOyJdfQ==
|
package/dist/chunk-K2EJ4YKO.cjs
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }// src/types/api.ts
|
|
2
|
-
function isJsonObject(value) {
|
|
3
|
-
return typeof value === "object" && value !== null && !Array.isArray(value) && !(value instanceof FormData);
|
|
4
|
-
}
|
|
5
|
-
function isJsonArray(value) {
|
|
6
|
-
return Array.isArray(value);
|
|
7
|
-
}
|
|
8
|
-
function isFormData(value) {
|
|
9
|
-
return value instanceof FormData;
|
|
10
|
-
}
|
|
11
|
-
function isRequestBody(value) {
|
|
12
|
-
return isJsonObject(value) || isJsonArray(value) || isFormData(value);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
// src/types/events.ts
|
|
16
|
-
function isInputChangeEvent(value) {
|
|
17
|
-
return typeof value === "object" && value !== null && "target" in value && typeof value.target === "object" && value.target !== null && "value" in value.target;
|
|
18
|
-
}
|
|
19
|
-
function isSelectChangeEvent(value) {
|
|
20
|
-
return isInputChangeEvent(value);
|
|
21
|
-
}
|
|
22
|
-
function isFormChangeEvent(value) {
|
|
23
|
-
return isInputChangeEvent(value) || isSelectChangeEvent(value);
|
|
24
|
-
}
|
|
25
|
-
function extractEventValue(eventOrValue, fallbackValue) {
|
|
26
|
-
if (isFormChangeEvent(eventOrValue)) {
|
|
27
|
-
return eventOrValue.target.value;
|
|
28
|
-
}
|
|
29
|
-
if (typeof eventOrValue === "object" && eventOrValue !== null && "target" in eventOrValue && typeof eventOrValue.target === "object" && eventOrValue.target !== null && "value" in eventOrValue.target) {
|
|
30
|
-
return eventOrValue.target.value;
|
|
31
|
-
}
|
|
32
|
-
return _nullishCoalesce(eventOrValue, () => ( fallbackValue));
|
|
33
|
-
}
|
|
34
|
-
function createEventValueExtractor() {
|
|
35
|
-
return (eventOrValue, directValue) => {
|
|
36
|
-
if (directValue !== void 0) {
|
|
37
|
-
return directValue;
|
|
38
|
-
}
|
|
39
|
-
return extractEventValue(eventOrValue);
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// src/types/utilities.ts
|
|
44
|
-
function brand(value) {
|
|
45
|
-
return value;
|
|
46
|
-
}
|
|
47
|
-
function typedKeys(obj) {
|
|
48
|
-
return Object.keys(obj);
|
|
49
|
-
}
|
|
50
|
-
function typedEntries(obj) {
|
|
51
|
-
return Object.entries(obj);
|
|
52
|
-
}
|
|
53
|
-
function typedValues(obj) {
|
|
54
|
-
return Object.values(obj);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
exports.isJsonObject = isJsonObject; exports.isJsonArray = isJsonArray; exports.isFormData = isFormData; exports.isRequestBody = isRequestBody; exports.isInputChangeEvent = isInputChangeEvent; exports.isSelectChangeEvent = isSelectChangeEvent; exports.isFormChangeEvent = isFormChangeEvent; exports.extractEventValue = extractEventValue; exports.createEventValueExtractor = createEventValueExtractor; exports.brand = brand; exports.typedKeys = typedKeys; exports.typedEntries = typedEntries; exports.typedValues = typedValues;
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9idWlsZHMvbGlicy9HTldlYlNvZnQuVUkvcGFja2FnZXMvdWkvZGlzdC9jaHVuay1LMkVKNFlLTy5janMiLCIuLi9zcmMvdHlwZXMvYXBpLnRzIiwiLi4vc3JjL3R5cGVzL2V2ZW50cy50cyIsIi4uL3NyYy90eXBlcy91dGlsaXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUMrSE8sU0FBUyxZQUFBLENBQWEsS0FBQSxFQUFxQztBQUNoRSxFQUFBLE9BQ0UsT0FBTyxNQUFBLElBQVUsU0FBQSxHQUNqQixNQUFBLElBQVUsS0FBQSxHQUNWLENBQUMsS0FBQSxDQUFNLE9BQUEsQ0FBUSxLQUFLLEVBQUEsR0FDcEIsQ0FBQSxDQUFFLE1BQUEsV0FBaUIsUUFBQSxDQUFBO0FBRXZCO0FBS08sU0FBUyxXQUFBLENBQVksS0FBQSxFQUFvQztBQUM5RCxFQUFBLE9BQU8sS0FBQSxDQUFNLE9BQUEsQ0FBUSxLQUFLLENBQUE7QUFDNUI7QUFLTyxTQUFTLFVBQUEsQ0FBVyxLQUFBLEVBQW1DO0FBQzVELEVBQUEsT0FBTyxNQUFBLFdBQWlCLFFBQUE7QUFDMUI7QUFLTyxTQUFTLGFBQUEsQ0FBYyxLQUFBLEVBQXNDO0FBQ2xFLEVBQUEsT0FBTyxZQUFBLENBQWEsS0FBSyxFQUFBLEdBQUssV0FBQSxDQUFZLEtBQUssRUFBQSxHQUFLLFVBQUEsQ0FBVyxLQUFLLENBQUE7QUFDdEU7QUQ5SUE7QUFDQTtBRTZETyxTQUFTLGtCQUFBLENBQW1CLEtBQUEsRUFBMkM7QUFDNUUsRUFBQSxPQUNFLE9BQU8sTUFBQSxJQUFVLFNBQUEsR0FDakIsTUFBQSxJQUFVLEtBQUEsR0FDVixTQUFBLEdBQVksTUFBQSxHQUNaLE9BQVEsS0FBQSxDQUE4QixPQUFBLElBQVcsU0FBQSxHQUNoRCxLQUFBLENBQThCLE9BQUEsSUFBVyxLQUFBLEdBQzFDLFFBQUEsR0FBWSxLQUFBLENBQTBDLE1BQUE7QUFFMUQ7QUFLTyxTQUFTLG1CQUFBLENBQW9CLEtBQUEsRUFBNEM7QUFDOUUsRUFBQSxPQUFPLGtCQUFBLENBQW1CLEtBQUssQ0FBQTtBQUNqQztBQUtPLFNBQVMsaUJBQUEsQ0FBa0IsS0FBQSxFQUEwQztBQUMxRSxFQUFBLE9BQU8sa0JBQUEsQ0FBbUIsS0FBSyxFQUFBLEdBQUssbUJBQUEsQ0FBb0IsS0FBSyxDQUFBO0FBQy9EO0FBTU8sU0FBUyxpQkFBQSxDQUNkLFlBQUEsRUFDQSxhQUFBLEVBQ1E7QUFFUixFQUFBLEdBQUEsQ0FBSSxpQkFBQSxDQUFrQixZQUFZLENBQUEsRUFBRztBQUNuQyxJQUFBLE9BQU8sWUFBQSxDQUFhLE1BQUEsQ0FBTyxLQUFBO0FBQUEsRUFDN0I7QUFHQSxFQUFBLEdBQUEsQ0FDRSxPQUFPLGFBQUEsSUFBaUIsU0FBQSxHQUN4QixhQUFBLElBQWlCLEtBQUEsR0FDakIsU0FBQSxHQUFZLGFBQUEsR0FDWixPQUFPLFlBQUEsQ0FBYSxPQUFBLElBQVcsU0FBQSxHQUMvQixZQUFBLENBQWEsT0FBQSxJQUFXLEtBQUEsR0FDeEIsUUFBQSxHQUFXLFlBQUEsQ0FBYSxNQUFBLEVBQ3hCO0FBQ0EsSUFBQSxPQUFRLFlBQUEsQ0FBYSxNQUFBLENBQTZCLEtBQUE7QUFBQSxFQUNwRDtBQUdBLEVBQUEsd0JBQVEsWUFBQSxVQUFnQixlQUFBO0FBQzFCO0FBTU8sU0FBUyx5QkFBQSxDQUFBLEVBQThDO0FBQzVELEVBQUEsT0FBTyxDQUFDLFlBQUEsRUFBb0MsV0FBQSxFQUFBLEdBQWlDO0FBRTNFLElBQUEsR0FBQSxDQUFJLFlBQUEsSUFBZ0IsS0FBQSxDQUFBLEVBQVc7QUFDN0IsTUFBQSxPQUFPLFdBQUE7QUFBQSxJQUNUO0FBRUEsSUFBQSxPQUFPLGlCQUFBLENBQWtCLFlBQVksQ0FBQTtBQUFBLEVBQ3ZDLENBQUE7QUFDRjtBRnJHQTtBQUNBO0FHNFlPLFNBQVMsS0FBQSxDQUFnQyxLQUFBLEVBQTRCO0FBQzFFLEVBQUEsT0FBTyxLQUFBO0FBQ1Q7QUErQk8sU0FBUyxTQUFBLENBQ2QsR0FBQSxFQUNnQjtBQUNoQixFQUFBLE9BQU8sTUFBQSxDQUFPLElBQUEsQ0FBSyxHQUFHLENBQUE7QUFDeEI7QUFpQk8sU0FBUyxZQUFBLENBQ2QsR0FBQSxFQUM4QjtBQUM5QixFQUFBLE9BQU8sTUFBQSxDQUFPLE9BQUEsQ0FBUSxHQUFHLENBQUE7QUFDM0I7QUFpQk8sU0FBUyxXQUFBLENBQ2QsR0FBQSxFQUNtQjtBQUNuQixFQUFBLE9BQU8sTUFBQSxDQUFPLE1BQUEsQ0FBTyxHQUFHLENBQUE7QUFDMUI7QUg5Y0E7QUFDQTtBQUNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0YsOGdCQUFDIiwiZmlsZSI6Ii9idWlsZHMvbGlicy9HTldlYlNvZnQuVUkvcGFja2FnZXMvdWkvZGlzdC9jaHVuay1LMkVKNFlLTy5janMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsIi8qKlxuICogVHlwZS1zYWZlIEFQSSByZXF1ZXN0IGFuZCByZXNwb25zZSB1dGlsaXRpZXNcbiAqIEBtb2R1bGUgdHlwZXMvYXBpXG4gKi9cblxuLyoqXG4gKiBIVFRQIG1ldGhvZHMgc3VwcG9ydGVkIGJ5IHRoZSBBUElcbiAqL1xuZXhwb3J0IHR5cGUgSHR0cE1ldGhvZCA9ICdHRVQnIHwgJ1BPU1QnIHwgJ1BVVCcgfCAnREVMRVRFJyB8ICdQQVRDSCc7XG5cbi8qKlxuICogVmFsaWQgSlNPTiBwcmltaXRpdmUgdHlwZXMgdGhhdCBjYW4gYmUgc2VudCBpbiByZXF1ZXN0IGJvZGllc1xuICovXG5leHBvcnQgdHlwZSBKc29uUHJpbWl0aXZlID0gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGw7XG5cbi8qKlxuICogVmFsaWQgSlNPTiB2YWx1ZXMgKHByaW1pdGl2ZXMsIG9iamVjdHMsIGFycmF5cylcbiAqL1xuZXhwb3J0IHR5cGUgSnNvblZhbHVlID1cbiAgfCBKc29uUHJpbWl0aXZlXG4gIHwgSnNvbk9iamVjdFxuICB8IEpzb25BcnJheTtcblxuLyoqXG4gKiBKU09OIG9iamVjdCB3aXRoIHN0cmluZyBrZXlzIGFuZCBKU09OIHZhbHVlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEpzb25PYmplY3Qge1xuICBba2V5OiBzdHJpbmddOiBKc29uVmFsdWU7XG59XG5cbi8qKlxuICogSlNPTiBhcnJheSBjb250YWluaW5nIEpTT04gdmFsdWVzXG4gKi9cbmV4cG9ydCB0eXBlIEpzb25BcnJheSA9IEpzb25WYWx1ZVtdO1xuXG4vKipcbiAqIFR5cGUtc2FmZSByZXF1ZXN0IGJvZHkgLSBtdXN0IGJlIEpTT04tc2VyaWFsaXphYmxlXG4gKi9cbmV4cG9ydCB0eXBlIFJlcXVlc3RCb2R5ID0gSnNvbk9iamVjdCB8IEpzb25BcnJheSB8IEZvcm1EYXRhO1xuXG4vKipcbiAqIFN0YW5kYXJkIEhUVFAgaGVhZGVycyB3aXRoIGtub3duIGhlYWRlciBuYW1lc1xuICovXG5leHBvcnQgdHlwZSBIdHRwSGVhZGVycyA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgbWFraW5nIEhUVFAgcmVxdWVzdHMgKGJhc2VkIG9uIGZldGNoIEFQSSlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBIVFRQIG1ldGhvZCBmb3IgdGhlIHJlcXVlc3RcbiAgICovXG4gIG1ldGhvZDogSHR0cE1ldGhvZDtcbiAgLyoqXG4gICAqIFJlcXVlc3QgaGVhZGVyc1xuICAgKi9cbiAgaGVhZGVycz86IEh0dHBIZWFkZXJzO1xuICAvKipcbiAgICogUmVxdWVzdCBib2R5IChzdHJpbmcgZm9yIEpTT04sIEZvcm1EYXRhIGZvciBmaWxlIHVwbG9hZHMpXG4gICAqL1xuICBib2R5Pzogc3RyaW5nIHwgRm9ybURhdGE7XG4gIC8qKlxuICAgKiBSZXF1ZXN0IGNyZWRlbnRpYWxzIG1vZGVcbiAgICovXG4gIGNyZWRlbnRpYWxzPzogUmVxdWVzdENyZWRlbnRpYWxzO1xuICAvKipcbiAgICogUmVxdWVzdCBtb2RlIChjb3JzLCBuby1jb3JzLCBzYW1lLW9yaWdpbilcbiAgICovXG4gIG1vZGU/OiBSZXF1ZXN0TW9kZTtcbiAgLyoqXG4gICAqIENhY2hlIG1vZGUgZm9yIHRoZSByZXF1ZXN0XG4gICAqL1xuICBjYWNoZT86IFJlcXVlc3RDYWNoZTtcbiAgLyoqXG4gICAqIFJlZGlyZWN0IG1vZGUgZm9yIHRoZSByZXF1ZXN0XG4gICAqL1xuICByZWRpcmVjdD86IFJlcXVlc3RSZWRpcmVjdDtcbiAgLyoqXG4gICAqIFJlZmVycmVyIHBvbGljeSBmb3IgdGhlIHJlcXVlc3RcbiAgICovXG4gIHJlZmVycmVyUG9saWN5PzogUmVmZXJyZXJQb2xpY3k7XG4gIC8qKlxuICAgKiBBYm9ydFNpZ25hbCBmb3IgcmVxdWVzdCBjYW5jZWxsYXRpb25cbiAgICovXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgQVBJIGNhbGxzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpQ2FsbE9wdGlvbnMge1xuICAvKipcbiAgICogQ3VzdG9tIGhlYWRlcnMgdG8gaW5jbHVkZSBpbiB0aGUgcmVxdWVzdFxuICAgKi9cbiAgaGVhZGVycz86IEh0dHBIZWFkZXJzO1xuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIGF1dGhlbnRpY2F0aW9uIHRva2VuXG4gICAqIEBkZWZhdWx0VmFsdWUgdHJ1ZVxuICAgKi9cbiAgaW5jbHVkZUF1dGg/OiBib29sZWFuO1xuICAvKipcbiAgICogQWJvcnRTaWduYWwgZm9yIHJlcXVlc3QgY2FuY2VsbGF0aW9uXG4gICAqL1xuICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbiAgLyoqXG4gICAqIEN1c3RvbSBiYXNlIFVSTCAob3ZlcnJpZGVzIGRlZmF1bHQpXG4gICAqL1xuICBiYXNlVXJsPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGZldGNoIG9wZXJhdGlvbnMgd2l0aCBhbnkgYWRkaXRpb25hbCBwYXJhbWV0ZXJzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmV0Y2hPcHRpb25zIGV4dGVuZHMgT21pdDxSZXF1ZXN0SW5pdCwgJ2JvZHknIHwgJ2hlYWRlcnMnPiB7XG4gIC8qKlxuICAgKiBSZXF1ZXN0IGhlYWRlcnNcbiAgICovXG4gIGhlYWRlcnM/OiBIdHRwSGVhZGVycztcbiAgLyoqXG4gICAqIFJlcXVlc3QgYm9keVxuICAgKi9cbiAgYm9keT86IFJlcXVlc3RCb2R5O1xufVxuXG4vKipcbiAqIFR5cGUgZ3VhcmQgdG8gY2hlY2sgaWYgYSB2YWx1ZSBpcyBhIHZhbGlkIEpTT04gb2JqZWN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0pzb25PYmplY3QodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBKc29uT2JqZWN0IHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAhQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiZcbiAgICAhKHZhbHVlIGluc3RhbmNlb2YgRm9ybURhdGEpXG4gICk7XG59XG5cbi8qKlxuICogVHlwZSBndWFyZCB0byBjaGVjayBpZiBhIHZhbHVlIGlzIGEgdmFsaWQgSlNPTiBhcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNKc29uQXJyYXkodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBKc29uQXJyYXkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG59XG5cbi8qKlxuICogVHlwZSBndWFyZCB0byBjaGVjayBpZiBhIHZhbHVlIGlzIEZvcm1EYXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Zvcm1EYXRhKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgRm9ybURhdGEge1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBGb3JtRGF0YTtcbn1cblxuLyoqXG4gKiBUeXBlIGd1YXJkIHRvIGNoZWNrIGlmIGEgdmFsdWUgaXMgYSB2YWxpZCByZXF1ZXN0IGJvZHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUmVxdWVzdEJvZHkodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBSZXF1ZXN0Qm9keSB7XG4gIHJldHVybiBpc0pzb25PYmplY3QodmFsdWUpIHx8IGlzSnNvbkFycmF5KHZhbHVlKSB8fCBpc0Zvcm1EYXRhKHZhbHVlKTtcbn1cbiIsIi8qKlxuICogVHlwZS1zYWZlIERPTSBldmVudCBhbmQgaGFuZGxlciB1dGlsaXRpZXMgZm9yIGZvcm0gdHJhbnNmb3JtYXRpb25zXG4gKiBAbW9kdWxlIHR5cGVzL2V2ZW50c1xuICovXG5cbmltcG9ydCB0eXBlIHsgQ2hhbmdlRXZlbnQsIFN5bnRoZXRpY0V2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5cbi8qKlxuICogSFRNTCBpbnB1dCBlbGVtZW50cyB0aGF0IHN1cHBvcnQgdGhlIG9uQ2hhbmdlIGV2ZW50IHdpdGggYSB2YWx1ZVxuICovXG5leHBvcnQgdHlwZSBJbnB1dEVsZW1lbnQgPSBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudDtcblxuLyoqXG4gKiBIVE1MIHNlbGVjdCBlbGVtZW50XG4gKi9cbmV4cG9ydCB0eXBlIEh0bWxTZWxlY3RFbGVtZW50ID0gSFRNTFNlbGVjdEVsZW1lbnQ7XG5cbi8qKlxuICogU3RhbmRhcmQgUmVhY3QgY2hhbmdlIGV2ZW50IGZvciBpbnB1dC90ZXh0YXJlYSBlbGVtZW50c1xuICovXG5leHBvcnQgdHlwZSBJbnB1dENoYW5nZUV2ZW50ID0gQ2hhbmdlRXZlbnQ8SW5wdXRFbGVtZW50PjtcblxuLyoqXG4gKiBTdGFuZGFyZCBSZWFjdCBjaGFuZ2UgZXZlbnQgZm9yIHNlbGVjdCBlbGVtZW50c1xuICovXG5leHBvcnQgdHlwZSBTZWxlY3RDaGFuZ2VFdmVudCA9IENoYW5nZUV2ZW50PEh0bWxTZWxlY3RFbGVtZW50PjtcblxuLyoqXG4gKiBVbmlvbiBvZiBhbGwgc3RhbmRhcmQgZm9ybSBjaGFuZ2UgZXZlbnRzXG4gKi9cbmV4cG9ydCB0eXBlIEZvcm1DaGFuZ2VFdmVudCA9IElucHV0Q2hhbmdlRXZlbnQgfCBTZWxlY3RDaGFuZ2VFdmVudDtcblxuLyoqXG4gKiBHZW5lcmljIHN5bnRoZXRpYyBldmVudCBmcm9tIFJlYWN0XG4gKi9cbmV4cG9ydCB0eXBlIEdlbmVyaWNTeW50aGV0aWNFdmVudCA9IFN5bnRoZXRpY0V2ZW50PEVsZW1lbnQ+O1xuXG4vKipcbiAqIFZhbHVlIGV4dHJhY3RlZCBmcm9tIGFuIGV2ZW50IG9yIHBhc3NlZCBkaXJlY3RseVxuICogVGhpcyBjb3ZlcnMgTVVJJ3MgcGF0dGVybiBvZiAoZXZlbnQsIHZhbHVlKSBjYWxsYmFja3NcbiAqL1xuZXhwb3J0IHR5cGUgRXZlbnRPclZhbHVlPFRWYWx1ZSA9IHVua25vd24+ID0gXG4gIHwgVFZhbHVlIFxuICB8IElucHV0Q2hhbmdlRXZlbnQgXG4gIHwgU2VsZWN0Q2hhbmdlRXZlbnRcbiAgfCBHZW5lcmljU3ludGhldGljRXZlbnQ7XG5cbi8qKlxuICogVHJhbnNmb3JtIG91dHB1dCBoYW5kbGVyIHRoYXQgYWNjZXB0cyB2YXJpb3VzIGV2ZW50IHBhdHRlcm5zXG4gKiBTdXBwb3J0czpcbiAqIC0gU3RhbmRhcmQgb25DaGFuZ2U6IChldmVudDogQ2hhbmdlRXZlbnQpID0+IHZvaWRcbiAqIC0gTVVJIG9uQ2hhbmdlOiAoZXZlbnQ6IENoYW5nZUV2ZW50LCB2YWx1ZTogVCkgPT4gdm9pZFxuICogLSBEaXJlY3QgdmFsdWU6ICh2YWx1ZTogVCkgPT4gdm9pZFxuICovXG5leHBvcnQgdHlwZSBUcmFuc2Zvcm1PdXRwdXRIYW5kbGVyPFRWYWx1ZSA9IHVua25vd24+ID0gKFxuICBldmVudE9yVmFsdWU6IEV2ZW50T3JWYWx1ZTxUVmFsdWU+LFxuICB2YWx1ZT86IFRWYWx1ZVxuKSA9PiBUVmFsdWU7XG5cbi8qKlxuICogVHJhbnNmb3JtIGlucHV0IGhhbmRsZXIgdGhhdCBjb252ZXJ0cyBhIHZhbHVlIHRvIGRpc3BsYXkgZm9ybWF0XG4gKi9cbmV4cG9ydCB0eXBlIFRyYW5zZm9ybUlucHV0SGFuZGxlcjxUSW5wdXQgPSB1bmtub3duLCBUT3V0cHV0ID0gdW5rbm93bj4gPSAoXG4gIHZhbHVlOiBUSW5wdXRcbikgPT4gVE91dHB1dDtcblxuLyoqXG4gKiBHZW5lcmljIGV2ZW50IGhhbmRsZXIgdGhhdCBhY2NlcHRzIHJlc3QgcGFyYW1ldGVyc1xuICogVXNlZCBmb3IgZmxleGliaWxpdHkgaW4gZXZlbnQgaGFuZGxpbmdcbiAqL1xuZXhwb3J0IHR5cGUgR2VuZXJpY0V2ZW50SGFuZGxlcjxUUmV0dXJuID0gdm9pZD4gPSAoLi4uYXJnczogdW5rbm93bltdKSA9PiBUUmV0dXJuO1xuXG4vKipcbiAqIFR5cGUgZ3VhcmQgdG8gY2hlY2sgaWYgYSB2YWx1ZSBpcyBhbiBJbnB1dENoYW5nZUV2ZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0lucHV0Q2hhbmdlRXZlbnQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBJbnB1dENoYW5nZUV2ZW50IHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAndGFyZ2V0JyBpbiB2YWx1ZSAmJlxuICAgIHR5cGVvZiAodmFsdWUgYXMgeyB0YXJnZXQ6IHVua25vd24gfSkudGFyZ2V0ID09PSAnb2JqZWN0JyAmJlxuICAgICh2YWx1ZSBhcyB7IHRhcmdldDogdW5rbm93biB9KS50YXJnZXQgIT09IG51bGwgJiZcbiAgICAndmFsdWUnIGluICh2YWx1ZSBhcyB7IHRhcmdldDogeyB2YWx1ZT86IHVua25vd24gfSB9KS50YXJnZXRcbiAgKTtcbn1cblxuLyoqXG4gKiBUeXBlIGd1YXJkIHRvIGNoZWNrIGlmIGEgdmFsdWUgaXMgYSBTZWxlY3RDaGFuZ2VFdmVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTZWxlY3RDaGFuZ2VFdmVudCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFNlbGVjdENoYW5nZUV2ZW50IHtcbiAgcmV0dXJuIGlzSW5wdXRDaGFuZ2VFdmVudCh2YWx1ZSk7IC8vIFNhbWUgc3RydWN0dXJlLCBkaWZmZXJlbnQgZWxlbWVudCB0eXBlXG59XG5cbi8qKlxuICogVHlwZSBndWFyZCB0byBjaGVjayBpZiBhIHZhbHVlIGlzIGFueSBmb3JtIGNoYW5nZSBldmVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGb3JtQ2hhbmdlRXZlbnQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBGb3JtQ2hhbmdlRXZlbnQge1xuICByZXR1cm4gaXNJbnB1dENoYW5nZUV2ZW50KHZhbHVlKSB8fCBpc1NlbGVjdENoYW5nZUV2ZW50KHZhbHVlKTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IHZhbHVlIGZyb20gZXZlbnQgb3IgcmV0dXJuIHRoZSB2YWx1ZSBkaXJlY3RseVxuICogSGFuZGxlcyB0aGUgY29tbW9uIHBhdHRlcm46IHZhbHVlID8/IGV2ZW50Py50YXJnZXQ/LnZhbHVlID8/IGV2ZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0RXZlbnRWYWx1ZTxUVmFsdWUgPSB1bmtub3duPihcbiAgZXZlbnRPclZhbHVlOiBFdmVudE9yVmFsdWU8VFZhbHVlPixcbiAgZmFsbGJhY2tWYWx1ZT86IFRWYWx1ZVxuKTogVFZhbHVlIHtcbiAgLy8gSWYgaXQncyBhIGZvcm0gY2hhbmdlIGV2ZW50LCBleHRyYWN0IHRoZSB0YXJnZXQgdmFsdWVcbiAgaWYgKGlzRm9ybUNoYW5nZUV2ZW50KGV2ZW50T3JWYWx1ZSkpIHtcbiAgICByZXR1cm4gZXZlbnRPclZhbHVlLnRhcmdldC52YWx1ZSBhcyBUVmFsdWU7XG4gIH1cbiAgXG4gIC8vIElmIGl0IGhhcyBhIHRhcmdldC52YWx1ZSAoYnV0IGRpZG4ndCBtYXRjaCBhYm92ZSBndWFyZHMpLCB0cnkgdG8gZXh0cmFjdCBpdFxuICBpZiAoXG4gICAgdHlwZW9mIGV2ZW50T3JWYWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICBldmVudE9yVmFsdWUgIT09IG51bGwgJiZcbiAgICAndGFyZ2V0JyBpbiBldmVudE9yVmFsdWUgJiZcbiAgICB0eXBlb2YgZXZlbnRPclZhbHVlLnRhcmdldCA9PT0gJ29iamVjdCcgJiZcbiAgICBldmVudE9yVmFsdWUudGFyZ2V0ICE9PSBudWxsICYmXG4gICAgJ3ZhbHVlJyBpbiBldmVudE9yVmFsdWUudGFyZ2V0XG4gICkge1xuICAgIHJldHVybiAoZXZlbnRPclZhbHVlLnRhcmdldCBhcyB7IHZhbHVlOiBUVmFsdWUgfSkudmFsdWU7XG4gIH1cbiAgXG4gIC8vIE90aGVyd2lzZSwgdHJlYXQgaXQgYXMgdGhlIHZhbHVlIGl0c2VsZlxuICByZXR1cm4gKGV2ZW50T3JWYWx1ZSA/PyBmYWxsYmFja1ZhbHVlKSBhcyBUVmFsdWU7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgc2FmZSBldmVudCB2YWx1ZSBleHRyYWN0b3Igd2l0aCB0eXBlIG5hcnJvd2luZ1xuICogVXNlZnVsIGZvciBNVUkgY29tcG9uZW50cyB0aGF0IHBhc3MgKGV2ZW50LCB2YWx1ZSkgcGF0dGVyblxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRXZlbnRWYWx1ZUV4dHJhY3RvcjxUVmFsdWUgPSB1bmtub3duPigpIHtcbiAgcmV0dXJuIChldmVudE9yVmFsdWU6IEV2ZW50T3JWYWx1ZTxUVmFsdWU+LCBkaXJlY3RWYWx1ZT86IFRWYWx1ZSk6IFRWYWx1ZSA9PiB7XG4gICAgLy8gSWYgYSBkaXJlY3QgdmFsdWUgaXMgcHJvdmlkZWQgKE1VSSBwYXR0ZXJuKSwgdXNlIGl0XG4gICAgaWYgKGRpcmVjdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBkaXJlY3RWYWx1ZTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGV4dHJhY3RFdmVudFZhbHVlKGV2ZW50T3JWYWx1ZSk7XG4gIH07XG59XG4iLCIvKipcbiAqIFV0aWxpdHkgdHlwZXMgYW5kIHR5cGUgaGVscGVycyBmb3IgZW5oYW5jZWQgdHlwZSBzYWZldHlcbiAqIFxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKi9cblxuLyoqXG4gKiBNYWtlcyBhbGwgcHJvcGVydGllcyBvZiBUIHJlcXVpcmVkIGFuZCBub24tbnVsbGFibGVcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGludGVyZmFjZSBVc2VyIHtcbiAqICAgaWQ/OiBzdHJpbmc7XG4gKiAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICogfVxuICogXG4gKiB0eXBlIFJlcXVpcmVkVXNlciA9IERlZXBSZXF1aXJlZDxVc2VyPjtcbiAqIC8vIHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH1cbiAqIGBgYFxuICogXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIERlZXBSZXF1aXJlZDxUPiA9IHtcbiAgW1AgaW4ga2V5b2YgVF0tPzogTm9uTnVsbGFibGU8VFtQXT47XG59O1xuXG4vKipcbiAqIE1ha2VzIGFsbCBwcm9wZXJ0aWVzIG9mIFQgb3B0aW9uYWxcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGludGVyZmFjZSBVc2VyIHtcbiAqICAgaWQ6IHN0cmluZztcbiAqICAgbmFtZTogc3RyaW5nO1xuICogfVxuICogXG4gKiB0eXBlIFBhcnRpYWxVc2VyID0gRGVlcFBhcnRpYWw8VXNlcj47XG4gKiAvLyB7IGlkPzogc3RyaW5nOyBuYW1lPzogc3RyaW5nIH1cbiAqIGBgYFxuICogXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIERlZXBQYXJ0aWFsPFQ+ID0ge1xuICBbUCBpbiBrZXlvZiBUXT86IFRbUF0gZXh0ZW5kcyBvYmplY3RcbiAgICA/IERlZXBQYXJ0aWFsPFRbUF0+XG4gICAgOiBUW1BdO1xufTtcblxuLyoqXG4gKiBNYWtlcyBhbGwgcHJvcGVydGllcyBvZiBUIHJlYWRvbmx5IGRlZXBseVxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW50ZXJmYWNlIFVzZXIge1xuICogICBpZDogc3RyaW5nO1xuICogICBwcm9maWxlOiB7XG4gKiAgICAgbmFtZTogc3RyaW5nO1xuICogICB9O1xuICogfVxuICogXG4gKiB0eXBlIFJlYWRvbmx5VXNlciA9IERlZXBSZWFkb25seTxVc2VyPjtcbiAqIC8vIHsgcmVhZG9ubHkgaWQ6IHN0cmluZzsgcmVhZG9ubHkgcHJvZmlsZTogeyByZWFkb25seSBuYW1lOiBzdHJpbmcgfSB9XG4gKiBgYGBcbiAqIFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBEZWVwUmVhZG9ubHk8VD4gPSB7XG4gIHJlYWRvbmx5IFtQIGluIGtleW9mIFRdOiBUW1BdIGV4dGVuZHMgb2JqZWN0XG4gICAgPyBEZWVwUmVhZG9ubHk8VFtQXT5cbiAgICA6IFRbUF07XG59O1xuXG4vKipcbiAqIEV4dHJhY3RzIGtleXMgZnJvbSBUIHRoYXQgYXJlIG5vdCB1bmRlZmluZWRcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGludGVyZmFjZSBVc2VyIHtcbiAqICAgaWQ6IHN0cmluZztcbiAqICAgbmFtZT86IHN0cmluZztcbiAqICAgZW1haWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAqIH1cbiAqIFxuICogdHlwZSBSZXF1aXJlZEtleXMgPSBSZXF1aXJlZEtleXM8VXNlcj47XG4gKiAvLyAnaWQnXG4gKiBgYGBcbiAqIFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBSZXF1aXJlZEtleXM8VD4gPSB7XG4gIFtLIGluIGtleW9mIFRdLT86IHVuZGVmaW5lZCBleHRlbmRzIFRbS10gPyBuZXZlciA6IEs7XG59W2tleW9mIFRdO1xuXG4vKipcbiAqIEV4dHJhY3RzIGtleXMgZnJvbSBUIHRoYXQgY2FuIGJlIHVuZGVmaW5lZFxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW50ZXJmYWNlIFVzZXIge1xuICogICBpZDogc3RyaW5nO1xuICogICBuYW1lPzogc3RyaW5nO1xuICogICBlbWFpbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICogfVxuICogXG4gKiB0eXBlIE9wdEtleXMgPSBPcHRpb25hbEtleXM8VXNlcj47XG4gKiAvLyAnbmFtZScgfCAnZW1haWwnXG4gKiBgYGBcbiAqIFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBPcHRpb25hbEtleXM8VD4gPSB7XG4gIFtLIGluIGtleW9mIFRdLT86IHVuZGVmaW5lZCBleHRlbmRzIFRbS10gPyBLIDogbmV2ZXI7XG59W2tleW9mIFRdO1xuXG4vKipcbiAqIE1ha2VzIHNwZWNpZmllZCBrZXlzIEsgb2YgdHlwZSBUIHJlcXVpcmVkXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbnRlcmZhY2UgVXNlciB7XG4gKiAgIGlkPzogc3RyaW5nO1xuICogICBuYW1lPzogc3RyaW5nO1xuICogICBlbWFpbD86IHN0cmluZztcbiAqIH1cbiAqIFxuICogdHlwZSBVc2VyV2l0aElkID0gUmVxdWlyZUtleXM8VXNlciwgJ2lkJyB8ICdlbWFpbCc+O1xuICogLy8geyBpZDogc3RyaW5nOyBuYW1lPzogc3RyaW5nOyBlbWFpbDogc3RyaW5nIH1cbiAqIGBgYFxuICogXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIFJlcXVpcmVLZXlzPFQsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9IE9taXQ8VCwgSz4gJlxuICBSZXF1aXJlZDxQaWNrPFQsIEs+PjtcblxuLyoqXG4gKiBNYWtlcyBzcGVjaWZpZWQga2V5cyBLIG9mIHR5cGUgVCBvcHRpb25hbFxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW50ZXJmYWNlIFVzZXIge1xuICogICBpZDogc3RyaW5nO1xuICogICBuYW1lOiBzdHJpbmc7XG4gKiAgIGVtYWlsOiBzdHJpbmc7XG4gKiB9XG4gKiBcbiAqIHR5cGUgVXNlclVwZGF0ZSA9IFBhcnRpYWxLZXlzPFVzZXIsICduYW1lJyB8ICdlbWFpbCc+O1xuICogLy8geyBpZDogc3RyaW5nOyBuYW1lPzogc3RyaW5nOyBlbWFpbD86IHN0cmluZyB9XG4gKiBgYGBcbiAqIFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBQYXJ0aWFsS2V5czxULCBLIGV4dGVuZHMga2V5b2YgVD4gPSBPbWl0PFQsIEs+ICZcbiAgUGFydGlhbDxQaWNrPFQsIEs+PjtcblxuLyoqXG4gKiBFeGNsdWRlcyBrZXlzIEsgZnJvbSB0eXBlIFRcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGludGVyZmFjZSBVc2VyIHtcbiAqICAgaWQ6IHN0cmluZztcbiAqICAgcGFzc3dvcmQ6IHN0cmluZztcbiAqICAgZW1haWw6IHN0cmluZztcbiAqIH1cbiAqIFxuICogdHlwZSBQdWJsaWNVc2VyID0gRXhjbHVkZUtleXM8VXNlciwgJ3Bhc3N3b3JkJz47XG4gKiAvLyB7IGlkOiBzdHJpbmc7IGVtYWlsOiBzdHJpbmcgfVxuICogYGBgXG4gKiBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHR5cGUgRXhjbHVkZUtleXM8VCwgSyBleHRlbmRzIGtleW9mIFQ+ID0gT21pdDxULCBLPjtcblxuLyoqXG4gKiBQaWNrcyBvbmx5IGtleXMgSyBmcm9tIHR5cGUgVFxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW50ZXJmYWNlIFVzZXIge1xuICogICBpZDogc3RyaW5nO1xuICogICBuYW1lOiBzdHJpbmc7XG4gKiAgIGVtYWlsOiBzdHJpbmc7XG4gKiB9XG4gKiBcbiAqIHR5cGUgVXNlckNyZWRlbnRpYWxzID0gUGlja0tleXM8VXNlciwgJ2VtYWlsJz47XG4gKiAvLyB7IGVtYWlsOiBzdHJpbmcgfVxuICogYGBgXG4gKiBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHR5cGUgUGlja0tleXM8VCwgSyBleHRlbmRzIGtleW9mIFQ+ID0gUGljazxULCBLPjtcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgdmFsdWUgdHlwZSBmcm9tIGFuIGFycmF5IHR5cGVcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHR5cGUgU3RyaW5nQXJyYXkgPSBzdHJpbmdbXTtcbiAqIHR5cGUgSXRlbSA9IEFycmF5RWxlbWVudDxTdHJpbmdBcnJheT47XG4gKiAvLyBzdHJpbmdcbiAqIGBgYFxuICogXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIEFycmF5RWxlbWVudDxUPiA9IFQgZXh0ZW5kcyByZWFkb25seSAoaW5mZXIgRSlbXSA/IEUgOiBuZXZlcjtcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgcmV0dXJuIHR5cGUgb2YgYW4gYXN5bmMgZnVuY3Rpb25cbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGFzeW5jIGZ1bmN0aW9uIGdldFVzZXIoKTogUHJvbWlzZTxVc2VyPiB7XG4gKiAgIHJldHVybiB7IGlkOiAnMScsIG5hbWU6ICdKb2huJyB9O1xuICogfVxuICogXG4gKiB0eXBlIFVzZXIgPSBBc3luY1JldHVyblR5cGU8dHlwZW9mIGdldFVzZXI+O1xuICogLy8gVXNlclxuICogYGBgXG4gKiBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHR5cGUgQXN5bmNSZXR1cm5UeXBlPFQgZXh0ZW5kcyAoLi4uYXJnczogcmVhZG9ubHkgdW5rbm93bltdKSA9PiBQcm9taXNlPHVua25vd24+PiA9XG4gIFQgZXh0ZW5kcyAoLi4uYXJnczogcmVhZG9ubHkgdW5rbm93bltdKSA9PiBQcm9taXNlPGluZmVyIFI+ID8gUiA6IG5ldmVyO1xuXG4vKipcbiAqIE1ha2VzIGEgdHlwZSBudWxsYWJsZSAoYWRkcyBudWxsKVxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogdHlwZSBVc2VybmFtZSA9IHN0cmluZztcbiAqIHR5cGUgTnVsbGFibGVVc2VybmFtZSA9IE51bGxhYmxlPFVzZXJuYW1lPjtcbiAqIC8vIHN0cmluZyB8IG51bGxcbiAqIGBgYFxuICogXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIE51bGxhYmxlPFQ+ID0gVCB8IG51bGw7XG5cbi8qKlxuICogTWFrZXMgYSB0eXBlIG9wdGlvbmFsIChhZGRzIHVuZGVmaW5lZClcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHR5cGUgVXNlcm5hbWUgPSBzdHJpbmc7XG4gKiB0eXBlIE9wdGlvbmFsVXNlcm5hbWUgPSBNYXliZTxVc2VybmFtZT47XG4gKiAvLyBzdHJpbmcgfCB1bmRlZmluZWRcbiAqIGBgYFxuICogXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIE1heWJlPFQ+ID0gVCB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBNYWtlcyBhIHR5cGUgbnVsbGlzaCAoYWRkcyBudWxsIGFuZCB1bmRlZmluZWQpXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiB0eXBlIFVzZXJuYW1lID0gc3RyaW5nO1xuICogdHlwZSBOdWxsaXNoVXNlcm5hbWUgPSBOdWxsaXNoPFVzZXJuYW1lPjtcbiAqIC8vIHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAqIGBgYFxuICogXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIE51bGxpc2g8VD4gPSBUIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgdW5pb24gb2YgYWxsIHBvc3NpYmxlIHBhdGhzIHRocm91Z2ggYW4gb2JqZWN0IHR5cGVcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGludGVyZmFjZSBVc2VyIHtcbiAqICAgcHJvZmlsZToge1xuICogICAgIG5hbWU6IHN0cmluZztcbiAqICAgICBhZGRyZXNzOiB7XG4gKiAgICAgICBjaXR5OiBzdHJpbmc7XG4gKiAgICAgfTtcbiAqICAgfTtcbiAqIH1cbiAqIFxuICogdHlwZSBQYXRocyA9IE9iamVjdFBhdGhzPFVzZXI+O1xuICogLy8gJ3Byb2ZpbGUnIHwgJ3Byb2ZpbGUubmFtZScgfCAncHJvZmlsZS5hZGRyZXNzJyB8ICdwcm9maWxlLmFkZHJlc3MuY2l0eSdcbiAqIGBgYFxuICogXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIE9iamVjdFBhdGhzPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUICYgc3RyaW5nXTogVFtLXSBleHRlbmRzIG9iamVjdFxuICAgID8gSyB8IGAke0t9LiR7T2JqZWN0UGF0aHM8VFtLXT59YFxuICAgIDogSztcbn1ba2V5b2YgVCAmIHN0cmluZ107XG5cbi8qKlxuICogTWVyZ2VzIHR3byB0eXBlcywgd2l0aCBwcm9wZXJ0aWVzIGZyb20gQiBvdmVycmlkaW5nIHRob3NlIGluIEFcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGludGVyZmFjZSBBIHtcbiAqICAgaWQ6IG51bWJlcjtcbiAqICAgbmFtZTogc3RyaW5nO1xuICogfVxuICogXG4gKiBpbnRlcmZhY2UgQiB7XG4gKiAgIGlkOiBzdHJpbmc7XG4gKiAgIGVtYWlsOiBzdHJpbmc7XG4gKiB9XG4gKiBcbiAqIHR5cGUgTWVyZ2VkID0gTWVyZ2U8QSwgQj47XG4gKiAvLyB7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgZW1haWw6IHN0cmluZyB9XG4gKiBgYGBcbiAqIFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBNZXJnZTxBLCBCPiA9IE9taXQ8QSwga2V5b2YgQj4gJiBCO1xuXG4vKipcbiAqIEVuc3VyZXMgYSB0eXBlIGlzIHNlcmlhbGl6YWJsZSAobm8gZnVuY3Rpb25zLCBzeW1ib2xzLCB1bmRlZmluZWQpXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbnRlcmZhY2UgRGF0YSB7XG4gKiAgIGlkOiBzdHJpbmc7XG4gKiAgIGNhbGxiYWNrOiAoKSA9PiB2b2lkO1xuICogICB2YWx1ZTogbnVtYmVyO1xuICogfVxuICogXG4gKiB0eXBlIFNlcmlhbGl6YWJsZURhdGEgPSBTZXJpYWxpemFibGU8RGF0YT47XG4gKiAvLyB7IGlkOiBzdHJpbmc7IHZhbHVlOiBudW1iZXIgfVxuICogYGBgXG4gKiBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHR5cGUgU2VyaWFsaXphYmxlPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUIGFzIFRbS10gZXh0ZW5kcyAoLi4uYXJnczogcmVhZG9ubHkgdW5rbm93bltdKSA9PiB1bmtub3duXG4gICAgPyBuZXZlclxuICAgIDogVFtLXSBleHRlbmRzIHN5bWJvbFxuICAgID8gbmV2ZXJcbiAgICA6IFRbS10gZXh0ZW5kcyB1bmRlZmluZWRcbiAgICA/IG5ldmVyXG4gICAgOiBLXTogVFtLXSBleHRlbmRzIG9iamVjdCA/IFNlcmlhbGl6YWJsZTxUW0tdPiA6IFRbS107XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgdW5pb24gdHlwZSB0byBhbiBpbnRlcnNlY3Rpb24gdHlwZVxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogdHlwZSBVbmlvbiA9IHsgYTogc3RyaW5nIH0gfCB7IGI6IG51bWJlciB9O1xuICogdHlwZSBJbnRlcnNlY3Rpb24gPSBVbmlvblRvSW50ZXJzZWN0aW9uPFVuaW9uPjtcbiAqIC8vIHsgYTogc3RyaW5nIH0gJiB7IGI6IG51bWJlciB9XG4gKiBgYGBcbiAqIFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBVbmlvblRvSW50ZXJzZWN0aW9uPFU+ID0gKFxuICBVIGV4dGVuZHMgdW5rbm93biA/IChrOiBVKSA9PiB2b2lkIDogbmV2ZXJcbikgZXh0ZW5kcyAoazogaW5mZXIgSSkgPT4gdm9pZFxuICA/IElcbiAgOiBuZXZlcjtcblxuLyoqXG4gKiBHZXRzIGFsbCBrZXlzIG9mIFQgd2hvc2UgdmFsdWVzIGV4dGVuZCBWXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbnRlcmZhY2UgVXNlciB7XG4gKiAgIGlkOiBzdHJpbmc7XG4gKiAgIGFnZTogbnVtYmVyO1xuICogICBuYW1lOiBzdHJpbmc7XG4gKiAgIGFjdGl2ZTogYm9vbGVhbjtcbiAqIH1cbiAqIFxuICogdHlwZSBTdHJpbmdLZXlzID0gS2V5c09mVHlwZTxVc2VyLCBzdHJpbmc+O1xuICogLy8gJ2lkJyB8ICduYW1lJ1xuICogYGBgXG4gKiBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHR5cGUgS2V5c09mVHlwZTxULCBWPiA9IHtcbiAgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBWID8gSyA6IG5ldmVyO1xufVtrZXlvZiBUXTtcblxuLyoqXG4gKiBFbnN1cmVzIGEgdmFsdWUgaXMgZXhhY3RseSB0aGUgdHlwZSBUIChubyB3aWRlciB0eXBlcyBhbGxvd2VkKVxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgY29uZmlnOiBFeGFjdDx7IGRlYnVnOiBib29sZWFuIH0+ID0ge1xuICogICBkZWJ1ZzogdHJ1ZSxcbiAqICAgLy8gZXh0cmE6ICd2YWx1ZScgIC8vIOKdjCBFcnJvcjogZXh0cmEgcHJvcGVydHkgbm90IGFsbG93ZWRcbiAqIH07XG4gKiBgYGBcbiAqIFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBFeGFjdDxULCBTaGFwZSA9IFQ+ID0gVCBleHRlbmRzIFNoYXBlXG4gID8gRXhjbHVkZTxrZXlvZiBULCBrZXlvZiBTaGFwZT4gZXh0ZW5kcyBuZXZlclxuICAgID8gVFxuICAgIDogbmV2ZXJcbiAgOiBuZXZlcjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgYnJhbmRlZCB0eXBlIGZvciBub21pbmFsIHR5cGluZ1xuICogVGhpcyBwcmV2ZW50cyBtaXhpbmcgdmFsdWVzIG9mIHRoZSBzYW1lIHByaW1pdGl2ZSB0eXBlXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiB0eXBlIFVzZXJJZCA9IEJyYW5kPHN0cmluZywgJ1VzZXJJZCc+O1xuICogdHlwZSBQcm9kdWN0SWQgPSBCcmFuZDxzdHJpbmcsICdQcm9kdWN0SWQnPjtcbiAqIFxuICogY29uc3QgdXNlcklkOiBVc2VySWQgPSAnMTIzJyBhcyBVc2VySWQ7XG4gKiBjb25zdCBwcm9kdWN0SWQ6IFByb2R1Y3RJZCA9ICc0NTYnIGFzIFByb2R1Y3RJZDtcbiAqIFxuICogLy8g4p2MIFR5cGUgZXJyb3I6IFVzZXJJZCBpcyBub3QgYXNzaWduYWJsZSB0byBQcm9kdWN0SWRcbiAqIGNvbnN0IHRlc3Q6IFByb2R1Y3RJZCA9IHVzZXJJZDtcbiAqIGBgYFxuICogXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIEJyYW5kPFQsIFRCcmFuZCBleHRlbmRzIHN0cmluZz4gPSBUICYge1xuICByZWFkb25seSBfX2JyYW5kOiBUQnJhbmQ7XG59O1xuXG4vKipcbiAqIEhlbHBlciB0byBjcmVhdGUgYSBicmFuZGVkIHZhbHVlXG4gKiBcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBicmFuZFxuICogQHJldHVybnMgVGhlIHZhbHVlIGFzIGEgYnJhbmRlZCB0eXBlXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiB0eXBlIFVzZXJJZCA9IEJyYW5kPHN0cmluZywgJ1VzZXJJZCc+O1xuICogY29uc3QgaWQgPSBicmFuZDxzdHJpbmcsICdVc2VySWQnPigndXNlci0xMjMnKTtcbiAqIC8vIGlkIGhhcyB0eXBlIFVzZXJJZFxuICogYGBgXG4gKiBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJyYW5kPFQsIFRCcmFuZCBleHRlbmRzIHN0cmluZz4odmFsdWU6IFQpOiBCcmFuZDxULCBUQnJhbmQ+IHtcbiAgcmV0dXJuIHZhbHVlIGFzIEJyYW5kPFQsIFRCcmFuZD47XG59XG5cbi8qKlxuICogUmVtb3ZlcyBicmFuZGluZyBmcm9tIGEgYnJhbmRlZCB0eXBlXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiB0eXBlIFVzZXJJZCA9IEJyYW5kPHN0cmluZywgJ1VzZXJJZCc+O1xuICogdHlwZSBQbGFpbklkID0gVW5icmFuZDxVc2VySWQ+O1xuICogLy8gc3RyaW5nXG4gKiBgYGBcbiAqIFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBVbmJyYW5kPFQ+ID0gVCBleHRlbmRzIGluZmVyIFUgJiB7IHJlYWRvbmx5IF9fYnJhbmQ6IHN0cmluZyB9ID8gVSA6IFQ7XG5cbi8qKlxuICogVHlwZS1zYWZlIE9iamVjdC5rZXlzIHRoYXQgcHJlc2VydmVzIGtleSB0eXBlc1xuICogXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBnZXQga2V5cyBmcm9tXG4gKiBAcmV0dXJucyBBcnJheSBvZiBrZXlzIHdpdGggcHJvcGVyIHR5cGVcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHVzZXIgPSB7IGlkOiAnMScsIG5hbWU6ICdKb2huJyB9IGFzIGNvbnN0O1xuICogY29uc3Qga2V5cyA9IHR5cGVkS2V5cyh1c2VyKTtcbiAqIC8vIGtleXMgaGFzIHR5cGU6ICgnaWQnIHwgJ25hbWUnKVtdXG4gKiBgYGBcbiAqIFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gdHlwZWRLZXlzPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gIG9iajogVFxuKTogQXJyYXk8a2V5b2YgVD4ge1xuICByZXR1cm4gT2JqZWN0LmtleXMob2JqKSBhcyBBcnJheTxrZXlvZiBUPjtcbn1cblxuLyoqXG4gKiBUeXBlLXNhZmUgT2JqZWN0LmVudHJpZXMgdGhhdCBwcmVzZXJ2ZXMga2V5IGFuZCB2YWx1ZSB0eXBlc1xuICogXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBnZXQgZW50cmllcyBmcm9tXG4gKiBAcmV0dXJucyBBcnJheSBvZiBba2V5LCB2YWx1ZV0gdHVwbGVzIHdpdGggcHJvcGVyIHR5cGVzXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCB1c2VyID0geyBpZDogJzEnLCBhZ2U6IDMwIH0gYXMgY29uc3Q7XG4gKiBjb25zdCBlbnRyaWVzID0gdHlwZWRFbnRyaWVzKHVzZXIpO1xuICogLy8gZW50cmllcyBoYXMgdHlwZTogWydpZCcsICcxJ10gfCBbJ2FnZScsIDMwXVxuICogYGBgXG4gKiBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHR5cGVkRW50cmllczxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICBvYmo6IFRcbik6IEFycmF5PFtrZXlvZiBULCBUW2tleW9mIFRdXT4ge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqKSBhcyBBcnJheTxba2V5b2YgVCwgVFtrZXlvZiBUXV0+O1xufVxuXG4vKipcbiAqIFR5cGUtc2FmZSBPYmplY3QudmFsdWVzIHRoYXQgcHJlc2VydmVzIHZhbHVlIHR5cGVzXG4gKiBcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGdldCB2YWx1ZXMgZnJvbVxuICogQHJldHVybnMgQXJyYXkgb2YgdmFsdWVzIHdpdGggcHJvcGVyIHR5cGVcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHVzZXIgPSB7IGlkOiAnMScsIGFnZTogMzAgfTtcbiAqIGNvbnN0IHZhbHVlcyA9IHR5cGVkVmFsdWVzKHVzZXIpO1xuICogLy8gdmFsdWVzIGhhcyB0eXBlOiAoc3RyaW5nIHwgbnVtYmVyKVtdXG4gKiBgYGBcbiAqIFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gdHlwZWRWYWx1ZXM8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgb2JqOiBUXG4pOiBBcnJheTxUW2tleW9mIFRdPiB7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKG9iaikgYXMgQXJyYXk8VFtrZXlvZiBUXT47XG59XG4iXX0=
|