ts-case-convert 2.2.0 → 2.2.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/lib/caseConvert.d.ts +4 -3
- package/lib/caseConvert.js +13 -1
- package/package.json +1 -1
package/lib/caseConvert.d.ts
CHANGED
|
@@ -6,15 +6,15 @@ export declare function toScreamingSnake<T extends string>(term: T): ToScreaming
|
|
|
6
6
|
export declare function objectToScreamingSnake<T extends object>(obj: T): ObjectToScreamingSnake<T>;
|
|
7
7
|
export declare function toPascal<T extends string>(term: T): ToPascal<T>;
|
|
8
8
|
export declare function objectToPascal<T extends object>(obj: T): ObjectToPascal<T>;
|
|
9
|
-
export type ToCamel<S extends string | number | symbol> = S extends string ? S extends `${infer Head}_${infer Tail}` ? `${ToCamel<Uncapitalize<Head>>}${Capitalize<ToCamel<Tail>>}` : S extends `${infer Head}-${infer Tail}` ? `${ToCamel<Uncapitalize<Head>>}${Capitalize<ToCamel<Tail>>}` : Uncapitalize<S> : never;
|
|
9
|
+
export type ToCamel<S extends string | number | symbol> = S extends string ? S extends NumericKey ? S : S extends `${infer Head}_${infer Tail}` ? `${ToCamel<Uncapitalize<Head>>}${Capitalize<ToCamel<Tail>>}` : S extends `${infer Head}-${infer Tail}` ? `${ToCamel<Uncapitalize<Head>>}${Capitalize<ToCamel<Tail>>}` : Uncapitalize<S> : never;
|
|
10
10
|
export type ObjectToCamel<T extends object | undefined | null> = T extends undefined ? undefined : T extends null ? null : T extends Array<infer ArrayType> ? Array<ConvertArrayItem<ArrayType, 'camel'>> : T extends Uint8Array ? Uint8Array : T extends Date ? Date : {
|
|
11
11
|
[K in keyof T as ToCamel<K>]: ConvertObjectValue<T[K], 'camel'>;
|
|
12
12
|
};
|
|
13
|
-
export type ToPascal<S extends string | number | symbol> = S extends string ? S extends `${infer Head}_${infer Tail}` ? `${Capitalize<ToCamel<Head>>}${Capitalize<ToCamel<Tail>>}` : S extends `${infer Head}-${infer Tail}` ? `${Capitalize<ToCamel<Head>>}${Capitalize<ToCamel<Tail>>}` : Capitalize<S> : never;
|
|
13
|
+
export type ToPascal<S extends string | number | symbol> = S extends string ? S extends NumericKey ? S : S extends `${infer Head}_${infer Tail}` ? `${Capitalize<ToCamel<Head>>}${Capitalize<ToCamel<Tail>>}` : S extends `${infer Head}-${infer Tail}` ? `${Capitalize<ToCamel<Head>>}${Capitalize<ToCamel<Tail>>}` : Capitalize<S> : never;
|
|
14
14
|
export type ObjectToPascal<T extends object | undefined | null> = T extends undefined ? undefined : T extends null ? null : T extends Array<infer ArrayType> ? Array<ConvertArrayItem<ArrayType, 'pascal'>> : T extends Uint8Array ? Uint8Array : T extends Date ? Date : {
|
|
15
15
|
[K in keyof T as ToPascal<K>]: ConvertObjectValue<T[K], 'pascal'>;
|
|
16
16
|
};
|
|
17
|
-
export type ToSnake<S extends string | number | symbol> = S extends string ? S extends `${infer Head}${CapitalChars}${infer Tail}` ? Head extends '' ? Tail extends '' ? Lowercase<S> : S extends `${infer Caps}${Tail}` ? Caps extends CapitalChars ? Tail extends CapitalLetters ? `${Lowercase<Caps>}_${Lowercase<Tail>}` : Tail extends `${CapitalLetters}${string}` ? `${ToSnake<Caps>}_${ToSnake<Tail>}` : `${ToSnake<Caps>}${ToSnake<Tail>}` : never : never : Tail extends '' ? S extends `${Head}${infer Caps}` ? Caps extends CapitalChars ? Head extends Lowercase<Head> ? Caps extends Numbers ? Head extends `${string}${Numbers}` ? never : `${ToSnake<Head>}_${Caps}` : `${ToSnake<Head>}_${ToSnake<Caps>}` : never : never : never : S extends `${Head}${infer Caps}${Tail}` ? Caps extends CapitalChars ? Head extends Lowercase<Head> ? Tail extends CapitalLetters ? `${ToSnake<Head>}_${ToSnake<Caps>}_${Lowercase<Tail>}` : Tail extends `${CapitalLetters}${string}` ? Caps extends Numbers ? `${ToSnake<Head>}${Caps}_${ToSnake<Tail>}` : Head extends Numbers ? never : Head extends `${string}${Numbers}` ? never : `${Head}_${ToSnake<Caps>}_${ToSnake<Tail>}` : Tail extends `${LowercaseLetters}${string}` ? Head extends `${string}${Numbers}` ? `${Head}_${Lowercase<Caps>}${ToSnake<Tail>}` : `${ToSnake<Head>}_${Lowercase<Caps>}${ToSnake<Tail>}` : `${ToSnake<Head>}_${Lowercase<Caps>}${ToSnake<Tail>}` : never : never : never : S : never;
|
|
17
|
+
export type ToSnake<S extends string | number | symbol> = S extends string ? S extends NumericKey ? S : S extends `${infer Head}${CapitalChars}${infer Tail}` ? Head extends '' ? Tail extends '' ? Lowercase<S> : S extends `${infer Caps}${Tail}` ? Caps extends CapitalChars ? Tail extends CapitalLetters ? `${Lowercase<Caps>}_${Lowercase<Tail>}` : Tail extends `${CapitalLetters}${string}` ? `${ToSnake<Caps>}_${ToSnake<Tail>}` : `${ToSnake<Caps>}${ToSnake<Tail>}` : never : never : Tail extends '' ? S extends `${Head}${infer Caps}` ? Caps extends CapitalChars ? Head extends Lowercase<Head> ? Caps extends Numbers ? Head extends `${string}${Numbers}` ? never : `${ToSnake<Head>}_${Caps}` : `${ToSnake<Head>}_${ToSnake<Caps>}` : never : never : never : S extends `${Head}${infer Caps}${Tail}` ? Caps extends CapitalChars ? Head extends Lowercase<Head> ? Tail extends CapitalLetters ? `${ToSnake<Head>}_${ToSnake<Caps>}_${Lowercase<Tail>}` : Tail extends `${CapitalLetters}${string}` ? Caps extends Numbers ? `${ToSnake<Head>}${Caps}_${ToSnake<Tail>}` : Head extends Numbers ? never : Head extends `${string}${Numbers}` ? never : `${Head}_${ToSnake<Caps>}_${ToSnake<Tail>}` : Tail extends `${LowercaseLetters}${string}` ? Head extends `${string}${Numbers}` ? `${Head}_${Lowercase<Caps>}${ToSnake<Tail>}` : `${ToSnake<Head>}_${Lowercase<Caps>}${ToSnake<Tail>}` : `${ToSnake<Head>}_${Lowercase<Caps>}${ToSnake<Tail>}` : never : never : never : S : never;
|
|
18
18
|
export type ObjectToSnake<T extends object | undefined | null> = T extends undefined ? undefined : T extends null ? null : T extends Array<infer ArrayType> ? Array<ConvertArrayItem<ArrayType, 'snake'>> : T extends Uint8Array ? Uint8Array : T extends Date ? Date : {
|
|
19
19
|
[K in keyof T as ToSnake<K>]: ConvertObjectValue<T[K], 'snake'>;
|
|
20
20
|
};
|
|
@@ -23,6 +23,7 @@ export type ObjectToScreamingSnake<T extends object | undefined | null> = T exte
|
|
|
23
23
|
[K in keyof T as ToScreamingSnake<K>]: ConvertObjectValue<T[K], 'screamingSnake'>;
|
|
24
24
|
};
|
|
25
25
|
type CaseMode = 'camel' | 'pascal' | 'snake' | 'screamingSnake';
|
|
26
|
+
type NumericKey = `${number}`;
|
|
26
27
|
type Convert<T extends object | undefined | null, Mode extends CaseMode> = Mode extends 'camel' ? ObjectToCamel<T> : Mode extends 'pascal' ? ObjectToPascal<T> : Mode extends 'snake' ? ObjectToSnake<T> : ObjectToScreamingSnake<T>;
|
|
27
28
|
type ConvertArrayItem<T, Mode extends CaseMode> = T extends object ? Convert<T, Mode> : T;
|
|
28
29
|
type ConvertObjectValue<T, Mode extends CaseMode> = T extends Array<infer ArrayType> ? Array<ConvertArrayItem<ArrayType, Mode>> : T extends object | undefined | null ? Convert<T, Mode> : T;
|
package/lib/caseConvert.js
CHANGED
|
@@ -25,6 +25,9 @@ function convertObject(obj, keyConverter) {
|
|
|
25
25
|
return out;
|
|
26
26
|
}
|
|
27
27
|
function toCamel(term) {
|
|
28
|
+
if (isNumericKey(term)) {
|
|
29
|
+
return term;
|
|
30
|
+
}
|
|
28
31
|
return (term.length === 1
|
|
29
32
|
? term.toLowerCase()
|
|
30
33
|
: term
|
|
@@ -38,6 +41,9 @@ function objectToCamel(obj) {
|
|
|
38
41
|
exports.objectToCamel = objectToCamel;
|
|
39
42
|
function toSnake(term) {
|
|
40
43
|
var _a, _b;
|
|
44
|
+
if (isNumericKey(term)) {
|
|
45
|
+
return term;
|
|
46
|
+
}
|
|
41
47
|
let result = term;
|
|
42
48
|
let circuitBreaker = 0;
|
|
43
49
|
while ((((_a = /([a-z])([0-9])(?![A-Z][a-z])/.exec(result)) === null || _a === void 0 ? void 0 : _a.length) || 0) > 2 &&
|
|
@@ -66,6 +72,9 @@ function objectToScreamingSnake(obj) {
|
|
|
66
72
|
}
|
|
67
73
|
exports.objectToScreamingSnake = objectToScreamingSnake;
|
|
68
74
|
function toPascal(term) {
|
|
75
|
+
if (isNumericKey(term)) {
|
|
76
|
+
return term;
|
|
77
|
+
}
|
|
69
78
|
return toCamel(term).replace(/^([a-z])/, (m) => m[0].toUpperCase());
|
|
70
79
|
}
|
|
71
80
|
exports.toPascal = toPascal;
|
|
@@ -73,4 +82,7 @@ function objectToPascal(obj) {
|
|
|
73
82
|
return convertObject(obj, toPascal);
|
|
74
83
|
}
|
|
75
84
|
exports.objectToPascal = objectToPascal;
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZUNvbnZlcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2FzZUNvbnZlcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsU0FBUyxhQUFhLENBT3BCLEdBQVcsRUFBRSxZQUFxQztJQUNsRCxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksT0FBTyxHQUFHLEtBQUssV0FBVyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtRQUN6RSxPQUFPLEdBQUcsQ0FBQztLQUNaO0lBRUQsTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBWSxDQUFDO0lBQ3RELEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3hDLDJCQUEyQjtRQUMzQixhQUFhO1FBQ2IsbUVBQW1FO1FBQ25FLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNyQyxDQUFDLENBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUEyQixJQUFlLEVBQUUsRUFBRSxDQUNuRCxPQUFPLElBQUksS0FBSyxRQUFRO2dCQUN4QixDQUFDLENBQUMsSUFBSSxZQUFZLFVBQVUsQ0FBQztnQkFDN0IsQ0FBQyxDQUFDLElBQUksWUFBWSxJQUFJLENBQUM7Z0JBQ3JCLENBQUMsQ0FBQyxhQUFhLENBU1gsSUFBSSxFQUFFLFlBQVksQ0FBQztnQkFDdkIsQ0FBQyxDQUFDLElBQUksQ0FDSztZQUNqQixDQUFDLENBQUMsQ0FBQyxZQUFZLFVBQVUsSUFBSSxDQUFDLFlBQVksSUFBSTtnQkFDOUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLFFBQVE7b0JBQ3ZCLENBQUMsQ0FBQyxhQUFhLENBU1gsQ0FBQyxFQUFFLFlBQVksQ0FBQztvQkFDcEIsQ0FBQyxDQUFFLENBQWEsQ0FBQztLQUNwQjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELFNBQWdCLE9BQU8sQ0FBbUIsSUFBTztJQUMvQyxPQUFPLENBQ0wsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDcEIsQ0FBQyxDQUFDLElBQUk7YUFDRCxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDOUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FDL0MsQ0FBQztBQUNsQixDQUFDO0FBUkQsMEJBUUM7QUFFRCxTQUFnQixhQUFhLENBQW1CLEdBQU07SUFDcEQsT0FBTyxhQUFhLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUFGRCxzQ0FFQztBQUVELFNBQWdCLE9BQU8sQ0FBbUIsSUFBTzs7SUFDL0MsSUFBSSxNQUFNLEdBQVcsSUFBSSxDQUFDO0lBQzFCLElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQztJQUV2QixPQUNFLENBQUMsQ0FBQSxNQUFBLDhCQUE4QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsMENBQUUsTUFBTSxLQUFJLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDOUQsY0FBYyxHQUFHLEVBQUUsRUFDbkI7UUFDQSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FDckIsOEJBQThCLEVBQzlCLENBQUMsSUFBSSxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBRSxDQUMvQixHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FDNUMsQ0FBQztRQUVGLGNBQWMsSUFBSSxDQUFDLENBQUM7S0FDckI7SUFFRCxPQUNFLENBQUMsQ0FBQSxNQUFBLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLDBDQUFFLE1BQU0sS0FBSSxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQzlDLGNBQWMsR0FBRyxFQUFFLEVBQ25CO1FBQ0EsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQ3JCLGNBQWMsRUFDZCxDQUFDLElBQUksRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQUUsQ0FDL0IsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQzVDLENBQUM7UUFDRixjQUFjLElBQUksQ0FBQyxDQUFDO0tBQ3JCO0lBRUQsT0FBTyxNQUFNLENBQUMsV0FBVyxFQUFnQixDQUFDO0FBQzVDLENBQUM7QUE5QkQsMEJBOEJDO0FBRUQsU0FBZ0IsYUFBYSxDQUFtQixHQUFNO0lBQ3BELE9BQU8sYUFBYSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBRkQsc0NBRUM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FDOUIsSUFBTztJQUVQLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBeUIsQ0FBQztBQUM1RCxDQUFDO0FBSkQsNENBSUM7QUFFRCxTQUFnQixzQkFBc0IsQ0FDcEMsR0FBTTtJQUVOLE9BQU8sYUFBYSxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFKRCx3REFJQztBQUVELFNBQWdCLFFBQVEsQ0FBbUIsSUFBTztJQUNoRCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDN0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUNKLENBQUM7QUFDbkIsQ0FBQztBQUpELDRCQUlDO0FBRUQsU0FBZ0IsY0FBYyxDQUFtQixHQUFNO0lBQ3JELE9BQU8sYUFBYSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRkQsd0NBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBjb252ZXJ0T2JqZWN0PFxuICBUSW5wdXQgZXh0ZW5kcyBvYmplY3QsXG4gIFRSZXN1bHQgZXh0ZW5kc1xuICAgIHwgT2JqZWN0VG9DYW1lbDxUSW5wdXQ+XG4gICAgfCBPYmplY3RUb1NuYWtlPFRJbnB1dD5cbiAgICB8IE9iamVjdFRvU2NyZWFtaW5nU25ha2U8VElucHV0PlxuICAgIHwgT2JqZWN0VG9QYXNjYWw8VElucHV0Pixcbj4ob2JqOiBUSW5wdXQsIGtleUNvbnZlcnRlcjogKGFyZzogc3RyaW5nKSA9PiBzdHJpbmcpOiBUUmVzdWx0IHtcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBjb25zdCBvdXQgPSAoQXJyYXkuaXNBcnJheShvYmopID8gW10gOiB7fSkgYXMgVFJlc3VsdDtcbiAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG4gICAgb3V0W2tleUNvbnZlcnRlcihrKV0gPSBBcnJheS5pc0FycmF5KHYpXG4gICAgICA/ICh2Lm1hcCg8QXJyYXlJdGVtIGV4dGVuZHMgb2JqZWN0PihpdGVtOiBBcnJheUl0ZW0pID0+XG4gICAgICAgICAgdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgIShpdGVtIGluc3RhbmNlb2YgVWludDhBcnJheSkgJiZcbiAgICAgICAgICAhKGl0ZW0gaW5zdGFuY2VvZiBEYXRlKVxuICAgICAgICAgICAgPyBjb252ZXJ0T2JqZWN0PFxuICAgICAgICAgICAgICAgIEFycmF5SXRlbSxcbiAgICAgICAgICAgICAgICBUUmVzdWx0IGV4dGVuZHMgT2JqZWN0VG9DYW1lbDxUSW5wdXQ+XG4gICAgICAgICAgICAgICAgICA/IE9iamVjdFRvQ2FtZWw8QXJyYXlJdGVtPlxuICAgICAgICAgICAgICAgICAgOiBUUmVzdWx0IGV4dGVuZHMgT2JqZWN0VG9QYXNjYWw8VElucHV0PlxuICAgICAgICAgICAgICAgICAgPyBPYmplY3RUb1Bhc2NhbDxBcnJheUl0ZW0+XG4gICAgICAgICAgICAgICAgICA6IFRSZXN1bHQgZXh0ZW5kcyBPYmplY3RUb1NjcmVhbWluZ1NuYWtlPFRJbnB1dD5cbiAgICAgICAgICAgICAgICAgID8gT2JqZWN0VG9TY3JlYW1pbmdTbmFrZTxBcnJheUl0ZW0+XG4gICAgICAgICAgICAgICAgICA6IE9iamVjdFRvU25ha2U8QXJyYXlJdGVtPlxuICAgICAgICAgICAgICA+KGl0ZW0sIGtleUNvbnZlcnRlcilcbiAgICAgICAgICAgIDogaXRlbSxcbiAgICAgICAgKSBhcyB1bmtub3duW10pXG4gICAgICA6IHYgaW5zdGFuY2VvZiBVaW50OEFycmF5IHx8IHYgaW5zdGFuY2VvZiBEYXRlXG4gICAgICA/IHZcbiAgICAgIDogdHlwZW9mIHYgPT09ICdvYmplY3QnXG4gICAgICA/IGNvbnZlcnRPYmplY3Q8XG4gICAgICAgICAgdHlwZW9mIHYsXG4gICAgICAgICAgVFJlc3VsdCBleHRlbmRzIE9iamVjdFRvQ2FtZWw8VElucHV0PlxuICAgICAgICAgICAgPyBPYmplY3RUb0NhbWVsPHR5cGVvZiB2PlxuICAgICAgICAgICAgOiBUUmVzdWx0IGV4dGVuZHMgT2JqZWN0VG9QYXNjYWw8VElucHV0PlxuICAgICAgICAgICAgPyBPYmplY3RUb1Bhc2NhbDx0eXBlb2Ygdj5cbiAgICAgICAgICAgIDogVFJlc3VsdCBleHRlbmRzIE9iamVjdFRvU2NyZWFtaW5nU25ha2U8VElucHV0PlxuICAgICAgICAgICAgPyBPYmplY3RUb1NjcmVhbWluZ1NuYWtlPHR5cGVvZiB2PlxuICAgICAgICAgICAgOiBPYmplY3RUb1NuYWtlPHR5cGVvZiB2PlxuICAgICAgICA+KHYsIGtleUNvbnZlcnRlcilcbiAgICAgIDogKHYgYXMgdW5rbm93bik7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQ2FtZWw8VCBleHRlbmRzIHN0cmluZz4odGVybTogVCk6IFRvQ2FtZWw8VD4ge1xuICByZXR1cm4gKFxuICAgIHRlcm0ubGVuZ3RoID09PSAxXG4gICAgICA/IHRlcm0udG9Mb3dlckNhc2UoKVxuICAgICAgOiB0ZXJtXG4gICAgICAgICAgLnJlcGxhY2UoL14oW0EtWl0pLywgKG0pID0+IG1bMF0udG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAucmVwbGFjZSgvW18tXShbYS16MC05XSkvZywgKG0pID0+IG1bMV0udG9VcHBlckNhc2UoKSlcbiAgKSBhcyBUb0NhbWVsPFQ+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0VG9DYW1lbDxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQpOiBPYmplY3RUb0NhbWVsPFQ+IHtcbiAgcmV0dXJuIGNvbnZlcnRPYmplY3Qob2JqLCB0b0NhbWVsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvU25ha2U8VCBleHRlbmRzIHN0cmluZz4odGVybTogVCk6IFRvU25ha2U8VD4ge1xuICBsZXQgcmVzdWx0OiBzdHJpbmcgPSB0ZXJtO1xuICBsZXQgY2lyY3VpdEJyZWFrZXIgPSAwO1xuXG4gIHdoaWxlIChcbiAgICAoLyhbYS16XSkoWzAtOV0pKD8hW0EtWl1bYS16XSkvLmV4ZWMocmVzdWx0KT8ubGVuZ3RoIHx8IDApID4gMiAmJlxuICAgIGNpcmN1aXRCcmVha2VyIDwgMTBcbiAgKSB7XG4gICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoXG4gICAgICAvKFthLXpdKShbMC05XSkoPyFbQS1aXVthLXpdKS8sXG4gICAgICAoX2FsbCwgJDE6IHN0cmluZywgJDI6IHN0cmluZykgPT5cbiAgICAgICAgYCR7JDEudG9Mb3dlckNhc2UoKX1fJHskMi50b0xvd2VyQ2FzZSgpfWAsXG4gICAgKTtcblxuICAgIGNpcmN1aXRCcmVha2VyICs9IDE7XG4gIH1cblxuICB3aGlsZSAoXG4gICAgKC8oLis/KShbQS1aXSkvLmV4ZWMocmVzdWx0KT8ubGVuZ3RoIHx8IDApID4gMiAmJlxuICAgIGNpcmN1aXRCcmVha2VyIDwgMTBcbiAgKSB7XG4gICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoXG4gICAgICAvKC4rPykoW0EtWl0pLyxcbiAgICAgIChfYWxsLCAkMTogc3RyaW5nLCAkMjogc3RyaW5nKSA9PlxuICAgICAgICBgJHskMS50b0xvd2VyQ2FzZSgpfV8keyQyLnRvTG93ZXJDYXNlKCl9YCxcbiAgICApO1xuICAgIGNpcmN1aXRCcmVha2VyICs9IDE7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0LnRvTG93ZXJDYXNlKCkgYXMgVG9TbmFrZTxUPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdFRvU25ha2U8VCBleHRlbmRzIG9iamVjdD4ob2JqOiBUKTogT2JqZWN0VG9TbmFrZTxUPiB7XG4gIHJldHVybiBjb252ZXJ0T2JqZWN0KG9iaiwgdG9TbmFrZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1NjcmVhbWluZ1NuYWtlPFQgZXh0ZW5kcyBzdHJpbmc+KFxuICB0ZXJtOiBULFxuKTogVG9TY3JlYW1pbmdTbmFrZTxUPiB7XG4gIHJldHVybiB0b1NuYWtlKHRlcm0pLnRvVXBwZXJDYXNlKCkgYXMgVG9TY3JlYW1pbmdTbmFrZTxUPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdFRvU2NyZWFtaW5nU25ha2U8VCBleHRlbmRzIG9iamVjdD4oXG4gIG9iajogVCxcbik6IE9iamVjdFRvU2NyZWFtaW5nU25ha2U8VD4ge1xuICByZXR1cm4gY29udmVydE9iamVjdChvYmosIHRvU2NyZWFtaW5nU25ha2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9QYXNjYWw8VCBleHRlbmRzIHN0cmluZz4odGVybTogVCk6IFRvUGFzY2FsPFQ+IHtcbiAgcmV0dXJuIHRvQ2FtZWwodGVybSkucmVwbGFjZSgvXihbYS16XSkvLCAobSkgPT5cbiAgICBtWzBdLnRvVXBwZXJDYXNlKCksXG4gICkgYXMgVG9QYXNjYWw8VD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RUb1Bhc2NhbDxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQpOiBPYmplY3RUb1Bhc2NhbDxUPiB7XG4gIHJldHVybiBjb252ZXJ0T2JqZWN0KG9iaiwgdG9QYXNjYWwpO1xufVxuXG5leHBvcnQgdHlwZSBUb0NhbWVsPFMgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2w+ID0gUyBleHRlbmRzIHN0cmluZ1xuICA/IFMgZXh0ZW5kcyBgJHtpbmZlciBIZWFkfV8ke2luZmVyIFRhaWx9YFxuICAgID8gYCR7VG9DYW1lbDxVbmNhcGl0YWxpemU8SGVhZD4+fSR7Q2FwaXRhbGl6ZTxUb0NhbWVsPFRhaWw+Pn1gXG4gICAgOiBTIGV4dGVuZHMgYCR7aW5mZXIgSGVhZH0tJHtpbmZlciBUYWlsfWBcbiAgICA/IGAke1RvQ2FtZWw8VW5jYXBpdGFsaXplPEhlYWQ+Pn0ke0NhcGl0YWxpemU8VG9DYW1lbDxUYWlsPj59YFxuICAgIDogVW5jYXBpdGFsaXplPFM+XG4gIDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIE9iamVjdFRvQ2FtZWw8VCBleHRlbmRzIG9iamVjdCB8IHVuZGVmaW5lZCB8IG51bGw+ID1cbiAgVCBleHRlbmRzIHVuZGVmaW5lZFxuICAgID8gdW5kZWZpbmVkXG4gICAgOiBUIGV4dGVuZHMgbnVsbFxuICAgID8gbnVsbFxuICAgIDogVCBleHRlbmRzIEFycmF5PGluZmVyIEFycmF5VHlwZT5cbiAgICA/IEFycmF5PENvbnZlcnRBcnJheUl0ZW08QXJyYXlUeXBlLCAnY2FtZWwnPj5cbiAgICA6IFQgZXh0ZW5kcyBVaW50OEFycmF5XG4gICAgPyBVaW50OEFycmF5XG4gICAgOiBUIGV4dGVuZHMgRGF0ZVxuICAgID8gRGF0ZVxuICAgIDoge1xuICAgICAgICBbSyBpbiBrZXlvZiBUIGFzIFRvQ2FtZWw8Sz5dOiBDb252ZXJ0T2JqZWN0VmFsdWU8VFtLXSwgJ2NhbWVsJz47XG4gICAgICB9O1xuXG5leHBvcnQgdHlwZSBUb1Bhc2NhbDxTIGV4dGVuZHMgc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sPiA9IFMgZXh0ZW5kcyBzdHJpbmdcbiAgPyBTIGV4dGVuZHMgYCR7aW5mZXIgSGVhZH1fJHtpbmZlciBUYWlsfWBcbiAgICA/IGAke0NhcGl0YWxpemU8VG9DYW1lbDxIZWFkPj59JHtDYXBpdGFsaXplPFRvQ2FtZWw8VGFpbD4+fWBcbiAgICA6IFMgZXh0ZW5kcyBgJHtpbmZlciBIZWFkfS0ke2luZmVyIFRhaWx9YFxuICAgID8gYCR7Q2FwaXRhbGl6ZTxUb0NhbWVsPEhlYWQ+Pn0ke0NhcGl0YWxpemU8VG9DYW1lbDxUYWlsPj59YFxuICAgIDogQ2FwaXRhbGl6ZTxTPlxuICA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBPYmplY3RUb1Bhc2NhbDxUIGV4dGVuZHMgb2JqZWN0IHwgdW5kZWZpbmVkIHwgbnVsbD4gPVxuICBUIGV4dGVuZHMgdW5kZWZpbmVkXG4gICAgPyB1bmRlZmluZWRcbiAgICA6IFQgZXh0ZW5kcyBudWxsXG4gICAgPyBudWxsXG4gICAgOiBUIGV4dGVuZHMgQXJyYXk8aW5mZXIgQXJyYXlUeXBlPlxuICAgID8gQXJyYXk8Q29udmVydEFycmF5SXRlbTxBcnJheVR5cGUsICdwYXNjYWwnPj5cbiAgICA6IFQgZXh0ZW5kcyBVaW50OEFycmF5XG4gICAgPyBVaW50OEFycmF5XG4gICAgOiBUIGV4dGVuZHMgRGF0ZVxuICAgID8gRGF0ZVxuICAgIDoge1xuICAgICAgICBbSyBpbiBrZXlvZiBUIGFzIFRvUGFzY2FsPEs+XTogQ29udmVydE9iamVjdFZhbHVlPFRbS10sICdwYXNjYWwnPjtcbiAgICAgIH07XG5cbmV4cG9ydCB0eXBlIFRvU25ha2U8UyBleHRlbmRzIHN0cmluZyB8IG51bWJlciB8IHN5bWJvbD4gPSBTIGV4dGVuZHMgc3RyaW5nXG4gID8gUyBleHRlbmRzIGAke2luZmVyIEhlYWR9JHtDYXBpdGFsQ2hhcnN9JHtpbmZlciBUYWlsfWAgLy8gc3RyaW5nIGhhcyBhIGNhcGl0YWwgY2hhciBzb21ld2hlcmVcbiAgICA/IEhlYWQgZXh0ZW5kcyAnJyAvLyB0aGVyZSBpcyBhIGNhcGl0YWwgY2hhciBpbiB0aGUgZmlyc3QgcG9zaXRpb25cbiAgICAgID8gVGFpbCBleHRlbmRzICcnXG4gICAgICAgID8gTG93ZXJjYXNlPFM+IC8qICAnQScgKi9cbiAgICAgICAgOiBTIGV4dGVuZHMgYCR7aW5mZXIgQ2Fwc30ke1RhaWx9YCAvLyB0YWlsIGV4aXN0cywgaGFzIGNhcGl0YWwgY2hhcmFjdGVyc1xuICAgICAgICA/IENhcHMgZXh0ZW5kcyBDYXBpdGFsQ2hhcnNcbiAgICAgICAgICA/IFRhaWwgZXh0ZW5kcyBDYXBpdGFsTGV0dGVyc1xuICAgICAgICAgICAgPyBgJHtMb3dlcmNhc2U8Q2Fwcz59XyR7TG93ZXJjYXNlPFRhaWw+fWAgLyogJ0FCJyAqL1xuICAgICAgICAgICAgOiBUYWlsIGV4dGVuZHMgYCR7Q2FwaXRhbExldHRlcnN9JHtzdHJpbmd9YFxuICAgICAgICAgICAgPyBgJHtUb1NuYWtlPENhcHM+fV8ke1RvU25ha2U8VGFpbD59YCAvKiBmaXJzdCB0YWlsIGNoYXIgaXMgdXBwZXI/ICdBQmNkJyAqL1xuICAgICAgICAgICAgOiBgJHtUb1NuYWtlPENhcHM+fSR7VG9TbmFrZTxUYWlsPn1gIC8qICdBYkNEJywnQWJjRCcsICAqLyAvKiBUT0RPOiBpZiB0YWlsIGlzIG9ubHkgbnVtYmVycywgYXBwZW5kIHdpdGhvdXQgdW5kZXJzY29yZSAqL1xuICAgICAgICAgIDogbmV2ZXIgLyogbmV2ZXIgcmVhY2hlZCwgdXNlZCBmb3IgaW5mZXJlbmNlIG9mIGNhcHMgKi9cbiAgICAgICAgOiBuZXZlclxuICAgICAgOiBUYWlsIGV4dGVuZHMgJycgLyogJ2FCJyAnYWJDRCcgJ0FCQ0QnICdBQicgKi9cbiAgICAgID8gUyBleHRlbmRzIGAke0hlYWR9JHtpbmZlciBDYXBzfWBcbiAgICAgICAgPyBDYXBzIGV4dGVuZHMgQ2FwaXRhbENoYXJzXG4gICAgICAgICAgPyBIZWFkIGV4dGVuZHMgTG93ZXJjYXNlPEhlYWQ+IC8qICdhYmNEJyAqL1xuICAgICAgICAgICAgPyBDYXBzIGV4dGVuZHMgTnVtYmVyc1xuICAgICAgICAgICAgICA/IC8vIEhlYWQgZXhpc3RzIGFuZCBpcyBsb3dlcmNhc2UsIHRhaWwgZG9lcyBub3QsIENhcHMgaXMgYSBudW1iZXIsIHdlIG1heSBiZSBpbiBhIHN1Yi1zZWxlY3RcbiAgICAgICAgICAgICAgICAvLyBpZiBoZWFkIGVuZHMgd2l0aCBudW1iZXIsIGRvbid0IHNwbGl0IGhlYWQgYW4gQ2Fwcywga2VlcCBjb250aWd1b3VzIG51bWJlcnMgdG9nZXRoZXJcbiAgICAgICAgICAgICAgICBIZWFkIGV4dGVuZHMgYCR7c3RyaW5nfSR7TnVtYmVyc31gXG4gICAgICAgICAgICAgICAgPyBuZXZlclxuICAgICAgICAgICAgICAgIDogLy8gaGVhZCBkb2VzIG5vdCBlbmQgaW4gbnVtYmVyLCBzYWZlIHRvIHNwbGl0LiAnYWJjMicgLT4gJ2FiY18yJ1xuICAgICAgICAgICAgICAgICAgYCR7VG9TbmFrZTxIZWFkPn1fJHtDYXBzfWBcbiAgICAgICAgICAgICAgOiBgJHtUb1NuYWtlPEhlYWQ+fV8ke1RvU25ha2U8Q2Fwcz59YCAvKiAnYWJjRCcgJ2FiYzI1JyAqL1xuICAgICAgICAgICAgOiBuZXZlciAvKiBzdG9wIHVuaW9uIHR5cGUgZm9ybWluZyAqL1xuICAgICAgICAgIDogbmV2ZXJcbiAgICAgICAgOiBuZXZlciAvKiBuZXZlciByZWFjaGVkLCB1c2VkIGZvciBpbmZlcmVuY2Ugb2YgY2FwcyAqL1xuICAgICAgOiBTIGV4dGVuZHMgYCR7SGVhZH0ke2luZmVyIENhcHN9JHtUYWlsfWAgLyogJ2FiQ2QnICdBQkNEJyAnQWJDZCcgJ0FCY0QnICovXG4gICAgICA/IENhcHMgZXh0ZW5kcyBDYXBpdGFsQ2hhcnNcbiAgICAgICAgPyBIZWFkIGV4dGVuZHMgTG93ZXJjYXNlPEhlYWQ+IC8qIGlzICdhYkNkJyAnYWJDRCcgPyAqL1xuICAgICAgICAgID8gVGFpbCBleHRlbmRzIENhcGl0YWxMZXR0ZXJzIC8qIGlzICdhYkNEJyB3aGVyZSBDYXBzID0gJ0MnICovXG4gICAgICAgICAgICA/IGAke1RvU25ha2U8SGVhZD59XyR7VG9TbmFrZTxDYXBzPn1fJHtMb3dlcmNhc2U8VGFpbD59YCAvKiBhQkNEIFRhaWwgPSAnRCcsIEhlYWQgPSAnYUInICovXG4gICAgICAgICAgICA6IFRhaWwgZXh0ZW5kcyBgJHtDYXBpdGFsTGV0dGVyc30ke3N0cmluZ31gIC8qIGlzICdhQkNkJyB3aGVyZSBDYXBzID0gJ0InICovXG4gICAgICAgICAgICA/IENhcHMgZXh0ZW5kcyBOdW1iZXJzXG4gICAgICAgICAgICAgID8gYCR7VG9TbmFrZTxIZWFkPn0ke0NhcHN9XyR7VG9TbmFrZTxUYWlsPn1gIC8qICdzM0lkJyA9PiAnczNfaWQnICovXG4gICAgICAgICAgICAgIDogSGVhZCBleHRlbmRzIE51bWJlcnNcbiAgICAgICAgICAgICAgPyBuZXZlciAvKiBzdG9wIHVuaW9uIHR5cGUgZm9ybWluZyAqL1xuICAgICAgICAgICAgICA6IEhlYWQgZXh0ZW5kcyBgJHtzdHJpbmd9JHtOdW1iZXJzfWBcbiAgICAgICAgICAgICAgPyBuZXZlciAvKiBzdG9wIHVuaW9uIHR5cGUgZm9ybWluZyAqL1xuICAgICAgICAgICAgICA6IGAke0hlYWR9XyR7VG9TbmFrZTxDYXBzPn1fJHtUb1NuYWtlPFRhaWw+fWAgLyogJ2FCQ2QnID0+IGAkeydhJ31fJHtMb3dlcmNhc2U8J0InPn1fJHtUb1NuYWtlPCdDZCc+fWAgKi9cbiAgICAgICAgICAgIDogVGFpbCBleHRlbmRzIGAke0xvd2VyY2FzZUxldHRlcnN9JHtzdHJpbmd9YFxuICAgICAgICAgICAgPyBIZWFkIGV4dGVuZHMgYCR7c3RyaW5nfSR7TnVtYmVyc31gXG4gICAgICAgICAgICAgID8gYCR7SGVhZH1fJHtMb3dlcmNhc2U8Q2Fwcz59JHtUb1NuYWtlPFRhaWw+fWAgLyogJ3MzSWQnID0+ICdzM19pZCcgKi9cbiAgICAgICAgICAgICAgOiBgJHtUb1NuYWtlPEhlYWQ+fV8ke0xvd2VyY2FzZTxDYXBzPn0ke1RvU25ha2U8VGFpbD59YCAvKiAnYUJjRCcgd2hlcmUgQ2FwcyA9ICdCJyB0YWlsIHN0YXJ0cyBhcyBsb3dlcmNhc2UgKi9cbiAgICAgICAgICAgIDogYCR7VG9TbmFrZTxIZWFkPn1fJHtMb3dlcmNhc2U8Q2Fwcz59JHtUb1NuYWtlPFRhaWw+fWAgLyogJ2FCY0QnIHdoZXJlIENhcHMgPSAnQicgdGFpbCBzdGFydHMgYXMgbG93ZXJjYXNlICovXG4gICAgICAgICAgOiBuZXZlclxuICAgICAgICA6IG5ldmVyXG4gICAgICA6IG5ldmVyXG4gICAgOiBTIC8qICdhYmMnICAqL1xuICA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBPYmplY3RUb1NuYWtlPFQgZXh0ZW5kcyBvYmplY3QgfCB1bmRlZmluZWQgfCBudWxsPiA9XG4gIFQgZXh0ZW5kcyB1bmRlZmluZWRcbiAgICA/IHVuZGVmaW5lZFxuICAgIDogVCBleHRlbmRzIG51bGxcbiAgICA/IG51bGxcbiAgICA6IFQgZXh0ZW5kcyBBcnJheTxpbmZlciBBcnJheVR5cGU+XG4gICAgPyBBcnJheTxDb252ZXJ0QXJyYXlJdGVtPEFycmF5VHlwZSwgJ3NuYWtlJz4+XG4gICAgOiBUIGV4dGVuZHMgVWludDhBcnJheVxuICAgID8gVWludDhBcnJheVxuICAgIDogVCBleHRlbmRzIERhdGVcbiAgICA/IERhdGVcbiAgICA6IHtcbiAgICAgICAgW0sgaW4ga2V5b2YgVCBhcyBUb1NuYWtlPEs+XTogQ29udmVydE9iamVjdFZhbHVlPFRbS10sICdzbmFrZSc+O1xuICAgICAgfTtcblxuZXhwb3J0IHR5cGUgVG9TY3JlYW1pbmdTbmFrZTxTIGV4dGVuZHMgc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sPiA9XG4gIFVwcGVyY2FzZTxUb1NuYWtlPFM+PjtcblxuZXhwb3J0IHR5cGUgT2JqZWN0VG9TY3JlYW1pbmdTbmFrZTxUIGV4dGVuZHMgb2JqZWN0IHwgdW5kZWZpbmVkIHwgbnVsbD4gPVxuICBUIGV4dGVuZHMgdW5kZWZpbmVkXG4gICAgPyB1bmRlZmluZWRcbiAgICA6IFQgZXh0ZW5kcyBudWxsXG4gICAgPyBudWxsXG4gICAgOiBUIGV4dGVuZHMgQXJyYXk8aW5mZXIgQXJyYXlUeXBlPlxuICAgID8gQXJyYXk8Q29udmVydEFycmF5SXRlbTxBcnJheVR5cGUsICdzY3JlYW1pbmdTbmFrZSc+PlxuICAgIDogVCBleHRlbmRzIFVpbnQ4QXJyYXlcbiAgICA/IFVpbnQ4QXJyYXlcbiAgICA6IFQgZXh0ZW5kcyBEYXRlXG4gICAgPyBEYXRlXG4gICAgOiB7XG4gICAgICAgIFtLIGluIGtleW9mIFQgYXMgVG9TY3JlYW1pbmdTbmFrZTxLPl06IENvbnZlcnRPYmplY3RWYWx1ZTxcbiAgICAgICAgICBUW0tdLFxuICAgICAgICAgICdzY3JlYW1pbmdTbmFrZSdcbiAgICAgICAgPjtcbiAgICAgIH07XG5cbnR5cGUgQ2FzZU1vZGUgPSAnY2FtZWwnIHwgJ3Bhc2NhbCcgfCAnc25ha2UnIHwgJ3NjcmVhbWluZ1NuYWtlJztcblxudHlwZSBDb252ZXJ0PFQgZXh0ZW5kcyBvYmplY3QgfCB1bmRlZmluZWQgfCBudWxsLCBNb2RlIGV4dGVuZHMgQ2FzZU1vZGU+ID1cbiAgTW9kZSBleHRlbmRzICdjYW1lbCdcbiAgICA/IE9iamVjdFRvQ2FtZWw8VD5cbiAgICA6IE1vZGUgZXh0ZW5kcyAncGFzY2FsJ1xuICAgID8gT2JqZWN0VG9QYXNjYWw8VD5cbiAgICA6IE1vZGUgZXh0ZW5kcyAnc25ha2UnXG4gICAgPyBPYmplY3RUb1NuYWtlPFQ+XG4gICAgOiBPYmplY3RUb1NjcmVhbWluZ1NuYWtlPFQ+O1xuXG50eXBlIENvbnZlcnRBcnJheUl0ZW08VCwgTW9kZSBleHRlbmRzIENhc2VNb2RlPiA9IFQgZXh0ZW5kcyBvYmplY3RcbiAgPyBDb252ZXJ0PFQsIE1vZGU+XG4gIDogVDtcblxudHlwZSBDb252ZXJ0T2JqZWN0VmFsdWU8VCwgTW9kZSBleHRlbmRzIENhc2VNb2RlPiA9IFQgZXh0ZW5kcyBBcnJheTxcbiAgaW5mZXIgQXJyYXlUeXBlXG4+XG4gID8gQXJyYXk8Q29udmVydEFycmF5SXRlbTxBcnJheVR5cGUsIE1vZGU+PlxuICA6IFQgZXh0ZW5kcyBvYmplY3QgfCB1bmRlZmluZWQgfCBudWxsXG4gID8gQ29udmVydDxULCBNb2RlPlxuICA6IFQ7XG5cbnR5cGUgQ2FwaXRhbExldHRlcnMgPVxuICB8ICdBJ1xuICB8ICdCJ1xuICB8ICdDJ1xuICB8ICdEJ1xuICB8ICdFJ1xuICB8ICdGJ1xuICB8ICdHJ1xuICB8ICdIJ1xuICB8ICdJJ1xuICB8ICdKJ1xuICB8ICdLJ1xuICB8ICdMJ1xuICB8ICdNJ1xuICB8ICdOJ1xuICB8ICdPJ1xuICB8ICdQJ1xuICB8ICdRJ1xuICB8ICdSJ1xuICB8ICdTJ1xuICB8ICdUJ1xuICB8ICdVJ1xuICB8ICdWJ1xuICB8ICdXJ1xuICB8ICdYJ1xuICB8ICdZJ1xuICB8ICdaJztcblxudHlwZSBMb3dlcmNhc2VMZXR0ZXJzID1cbiAgfCAnYSdcbiAgfCAnYidcbiAgfCAnYydcbiAgfCAnZCdcbiAgfCAnZSdcbiAgfCAnZidcbiAgfCAnZydcbiAgfCAnaCdcbiAgfCAnaSdcbiAgfCAnaidcbiAgfCAnaydcbiAgfCAnbCdcbiAgfCAnbSdcbiAgfCAnbidcbiAgfCAnbydcbiAgfCAncCdcbiAgfCAncSdcbiAgfCAncidcbiAgfCAncydcbiAgfCAndCdcbiAgfCAndSdcbiAgfCAndidcbiAgfCAndydcbiAgfCAneCdcbiAgfCAneSdcbiAgfCAneic7XG5cbnR5cGUgTnVtYmVycyA9ICcwJyB8ICcxJyB8ICcyJyB8ICczJyB8ICc0JyB8ICc1JyB8ICc2JyB8ICc3JyB8ICc4JyB8ICc5JztcblxudHlwZSBDYXBpdGFsQ2hhcnMgPSBDYXBpdGFsTGV0dGVycyB8IE51bWJlcnM7XG4iXX0=
|
|
85
|
+
function isNumericKey(term) {
|
|
86
|
+
return /^-?\d+(?:\.\d+)?$/.test(term);
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZUNvbnZlcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2FzZUNvbnZlcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsU0FBUyxhQUFhLENBT3BCLEdBQVcsRUFBRSxZQUFxQztJQUNsRCxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksT0FBTyxHQUFHLEtBQUssV0FBVyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtRQUN6RSxPQUFPLEdBQUcsQ0FBQztLQUNaO0lBRUQsTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBWSxDQUFDO0lBQ3RELEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3hDLDJCQUEyQjtRQUMzQixhQUFhO1FBQ2IsbUVBQW1FO1FBQ25FLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNyQyxDQUFDLENBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUEyQixJQUFlLEVBQUUsRUFBRSxDQUNuRCxPQUFPLElBQUksS0FBSyxRQUFRO2dCQUN4QixDQUFDLENBQUMsSUFBSSxZQUFZLFVBQVUsQ0FBQztnQkFDN0IsQ0FBQyxDQUFDLElBQUksWUFBWSxJQUFJLENBQUM7Z0JBQ3JCLENBQUMsQ0FBQyxhQUFhLENBU1gsSUFBSSxFQUFFLFlBQVksQ0FBQztnQkFDdkIsQ0FBQyxDQUFDLElBQUksQ0FDSztZQUNqQixDQUFDLENBQUMsQ0FBQyxZQUFZLFVBQVUsSUFBSSxDQUFDLFlBQVksSUFBSTtnQkFDOUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLFFBQVE7b0JB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QixPQUFPLElBQW1CLENBQUM7S0FDNUI7SUFFRCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDN0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUNKLENBQUM7QUFDbkIsQ0FBQztBQVJELDRCQVFDO0FBRUQsU0FBZ0IsY0FBYyxDQUFtQixHQUFNO0lBQ3JELE9BQU8sYUFBYSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRkQsd0NBRUM7QUF3S0QsU0FBUyxZQUFZLENBQUMsSUFBWTtJQUNoQyxPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gY29udmVydE9iamVjdDxcbiAgVElucHV0IGV4dGVuZHMgb2JqZWN0LFxuICBUUmVzdWx0IGV4dGVuZHNcbiAgICB8IE9iamVjdFRvQ2FtZWw8VElucHV0PlxuICAgIHwgT2JqZWN0VG9TbmFrZTxUSW5wdXQ+XG4gICAgfCBPYmplY3RUb1NjcmVhbWluZ1NuYWtlPFRJbnB1dD5cbiAgICB8IE9iamVjdFRvUGFzY2FsPFRJbnB1dD4sXG4+KG9iajogVElucHV0LCBrZXlDb252ZXJ0ZXI6IChhcmc6IHN0cmluZykgPT4gc3RyaW5nKTogVFJlc3VsdCB7XG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgY29uc3Qgb3V0ID0gKEFycmF5LmlzQXJyYXkob2JqKSA/IFtdIDoge30pIGFzIFRSZXN1bHQ7XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKG9iaikpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXNzaWdubWVudFxuICAgIG91dFtrZXlDb252ZXJ0ZXIoayldID0gQXJyYXkuaXNBcnJheSh2KVxuICAgICAgPyAodi5tYXAoPEFycmF5SXRlbSBleHRlbmRzIG9iamVjdD4oaXRlbTogQXJyYXlJdGVtKSA9PlxuICAgICAgICAgIHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICEoaXRlbSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpICYmXG4gICAgICAgICAgIShpdGVtIGluc3RhbmNlb2YgRGF0ZSlcbiAgICAgICAgICAgID8gY29udmVydE9iamVjdDxcbiAgICAgICAgICAgICAgICBBcnJheUl0ZW0sXG4gICAgICAgICAgICAgICAgVFJlc3VsdCBleHRlbmRzIE9iamVjdFRvQ2FtZWw8VElucHV0PlxuICAgICAgICAgICAgICAgICAgPyBPYmplY3RUb0NhbWVsPEFycmF5SXRlbT5cbiAgICAgICAgICAgICAgICAgIDogVFJlc3VsdCBleHRlbmRzIE9iamVjdFRvUGFzY2FsPFRJbnB1dD5cbiAgICAgICAgICAgICAgICAgID8gT2JqZWN0VG9QYXNjYWw8QXJyYXlJdGVtPlxuICAgICAgICAgICAgICAgICAgOiBUUmVzdWx0IGV4dGVuZHMgT2JqZWN0VG9TY3JlYW1pbmdTbmFrZTxUSW5wdXQ+XG4gICAgICAgICAgICAgICAgICA/IE9iamVjdFRvU2NyZWFtaW5nU25ha2U8QXJyYXlJdGVtPlxuICAgICAgICAgICAgICAgICAgOiBPYmplY3RUb1NuYWtlPEFycmF5SXRlbT5cbiAgICAgICAgICAgICAgPihpdGVtLCBrZXlDb252ZXJ0ZXIpXG4gICAgICAgICAgICA6IGl0ZW0sXG4gICAgICAgICkgYXMgdW5rbm93bltdKVxuICAgICAgOiB2IGluc3RhbmNlb2YgVWludDhBcnJheSB8fCB2IGluc3RhbmNlb2YgRGF0ZVxuICAgICAgPyB2XG4gICAgICA6IHR5cGVvZiB2ID09PSAnb2JqZWN0J1xuICAgICAgPyBjb252ZXJ0T2JqZWN0PFxuICAgICAgICAgIHR5cGVvZiB2LFxuICAgICAgICAgIFRSZXN1bHQgZXh0ZW5kcyBPYmplY3RUb0NhbWVsPFRJbnB1dD5cbiAgICAgICAgICAgID8gT2JqZWN0VG9DYW1lbDx0eXBlb2Ygdj5cbiAgICAgICAgICAgIDogVFJlc3VsdCBleHRlbmRzIE9iamVjdFRvUGFzY2FsPFRJbnB1dD5cbiAgICAgICAgICAgID8gT2JqZWN0VG9QYXNjYWw8dHlwZW9mIHY+XG4gICAgICAgICAgICA6IFRSZXN1bHQgZXh0ZW5kcyBPYmplY3RUb1NjcmVhbWluZ1NuYWtlPFRJbnB1dD5cbiAgICAgICAgICAgID8gT2JqZWN0VG9TY3JlYW1pbmdTbmFrZTx0eXBlb2Ygdj5cbiAgICAgICAgICAgIDogT2JqZWN0VG9TbmFrZTx0eXBlb2Ygdj5cbiAgICAgICAgPih2LCBrZXlDb252ZXJ0ZXIpXG4gICAgICA6ICh2IGFzIHVua25vd24pO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0NhbWVsPFQgZXh0ZW5kcyBzdHJpbmc+KHRlcm06IFQpOiBUb0NhbWVsPFQ+IHtcbiAgaWYgKGlzTnVtZXJpY0tleSh0ZXJtKSkge1xuICAgIHJldHVybiB0ZXJtIGFzIFRvQ2FtZWw8VD47XG4gIH1cblxuICByZXR1cm4gKFxuICAgIHRlcm0ubGVuZ3RoID09PSAxXG4gICAgICA/IHRlcm0udG9Mb3dlckNhc2UoKVxuICAgICAgOiB0ZXJtXG4gICAgICAgICAgLnJlcGxhY2UoL14oW0EtWl0pLywgKG0pID0+IG1bMF0udG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAucmVwbGFjZSgvW18tXShbYS16MC05XSkvZywgKG0pID0+IG1bMV0udG9VcHBlckNhc2UoKSlcbiAgKSBhcyBUb0NhbWVsPFQ+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0VG9DYW1lbDxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQpOiBPYmplY3RUb0NhbWVsPFQ+IHtcbiAgcmV0dXJuIGNvbnZlcnRPYmplY3Qob2JqLCB0b0NhbWVsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvU25ha2U8VCBleHRlbmRzIHN0cmluZz4odGVybTogVCk6IFRvU25ha2U8VD4ge1xuICBpZiAoaXNOdW1lcmljS2V5KHRlcm0pKSB7XG4gICAgcmV0dXJuIHRlcm0gYXMgVG9TbmFrZTxUPjtcbiAgfVxuXG4gIGxldCByZXN1bHQ6IHN0cmluZyA9IHRlcm07XG4gIGxldCBjaXJjdWl0QnJlYWtlciA9IDA7XG5cbiAgd2hpbGUgKFxuICAgICgvKFthLXpdKShbMC05XSkoPyFbQS1aXVthLXpdKS8uZXhlYyhyZXN1bHQpPy5sZW5ndGggfHwgMCkgPiAyICYmXG4gICAgY2lyY3VpdEJyZWFrZXIgPCAxMFxuICApIHtcbiAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShcbiAgICAgIC8oW2Etel0pKFswLTldKSg/IVtBLVpdW2Etel0pLyxcbiAgICAgIChfYWxsLCAkMTogc3RyaW5nLCAkMjogc3RyaW5nKSA9PlxuICAgICAgICBgJHskMS50b0xvd2VyQ2FzZSgpfV8keyQyLnRvTG93ZXJDYXNlKCl9YCxcbiAgICApO1xuXG4gICAgY2lyY3VpdEJyZWFrZXIgKz0gMTtcbiAgfVxuXG4gIHdoaWxlIChcbiAgICAoLyguKz8pKFtBLVpdKS8uZXhlYyhyZXN1bHQpPy5sZW5ndGggfHwgMCkgPiAyICYmXG4gICAgY2lyY3VpdEJyZWFrZXIgPCAxMFxuICApIHtcbiAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShcbiAgICAgIC8oLis/KShbQS1aXSkvLFxuICAgICAgKF9hbGwsICQxOiBzdHJpbmcsICQyOiBzdHJpbmcpID0+XG4gICAgICAgIGAkeyQxLnRvTG93ZXJDYXNlKCl9XyR7JDIudG9Mb3dlckNhc2UoKX1gLFxuICAgICk7XG4gICAgY2lyY3VpdEJyZWFrZXIgKz0gMTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQudG9Mb3dlckNhc2UoKSBhcyBUb1NuYWtlPFQ+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0VG9TbmFrZTxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQpOiBPYmplY3RUb1NuYWtlPFQ+IHtcbiAgcmV0dXJuIGNvbnZlcnRPYmplY3Qob2JqLCB0b1NuYWtlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvU2NyZWFtaW5nU25ha2U8VCBleHRlbmRzIHN0cmluZz4oXG4gIHRlcm06IFQsXG4pOiBUb1NjcmVhbWluZ1NuYWtlPFQ+IHtcbiAgcmV0dXJuIHRvU25ha2UodGVybSkudG9VcHBlckNhc2UoKSBhcyBUb1NjcmVhbWluZ1NuYWtlPFQ+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0VG9TY3JlYW1pbmdTbmFrZTxUIGV4dGVuZHMgb2JqZWN0PihcbiAgb2JqOiBULFxuKTogT2JqZWN0VG9TY3JlYW1pbmdTbmFrZTxUPiB7XG4gIHJldHVybiBjb252ZXJ0T2JqZWN0KG9iaiwgdG9TY3JlYW1pbmdTbmFrZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1Bhc2NhbDxUIGV4dGVuZHMgc3RyaW5nPih0ZXJtOiBUKTogVG9QYXNjYWw8VD4ge1xuICBpZiAoaXNOdW1lcmljS2V5KHRlcm0pKSB7XG4gICAgcmV0dXJuIHRlcm0gYXMgVG9QYXNjYWw8VD47XG4gIH1cblxuICByZXR1cm4gdG9DYW1lbCh0ZXJtKS5yZXBsYWNlKC9eKFthLXpdKS8sIChtKSA9PlxuICAgIG1bMF0udG9VcHBlckNhc2UoKSxcbiAgKSBhcyBUb1Bhc2NhbDxUPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdFRvUGFzY2FsPFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCk6IE9iamVjdFRvUGFzY2FsPFQ+IHtcbiAgcmV0dXJuIGNvbnZlcnRPYmplY3Qob2JqLCB0b1Bhc2NhbCk7XG59XG5cbmV4cG9ydCB0eXBlIFRvQ2FtZWw8UyBleHRlbmRzIHN0cmluZyB8IG51bWJlciB8IHN5bWJvbD4gPSBTIGV4dGVuZHMgc3RyaW5nXG4gID8gUyBleHRlbmRzIE51bWVyaWNLZXlcbiAgICA/IFNcbiAgICA6IFMgZXh0ZW5kcyBgJHtpbmZlciBIZWFkfV8ke2luZmVyIFRhaWx9YFxuICAgID8gYCR7VG9DYW1lbDxVbmNhcGl0YWxpemU8SGVhZD4+fSR7Q2FwaXRhbGl6ZTxUb0NhbWVsPFRhaWw+Pn1gXG4gICAgOiBTIGV4dGVuZHMgYCR7aW5mZXIgSGVhZH0tJHtpbmZlciBUYWlsfWBcbiAgICA/IGAke1RvQ2FtZWw8VW5jYXBpdGFsaXplPEhlYWQ+Pn0ke0NhcGl0YWxpemU8VG9DYW1lbDxUYWlsPj59YFxuICAgIDogVW5jYXBpdGFsaXplPFM+XG4gIDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIE9iamVjdFRvQ2FtZWw8VCBleHRlbmRzIG9iamVjdCB8IHVuZGVmaW5lZCB8IG51bGw+ID1cbiAgVCBleHRlbmRzIHVuZGVmaW5lZFxuICAgID8gdW5kZWZpbmVkXG4gICAgOiBUIGV4dGVuZHMgbnVsbFxuICAgID8gbnVsbFxuICAgIDogVCBleHRlbmRzIEFycmF5PGluZmVyIEFycmF5VHlwZT5cbiAgICA/IEFycmF5PENvbnZlcnRBcnJheUl0ZW08QXJyYXlUeXBlLCAnY2FtZWwnPj5cbiAgICA6IFQgZXh0ZW5kcyBVaW50OEFycmF5XG4gICAgPyBVaW50OEFycmF5XG4gICAgOiBUIGV4dGVuZHMgRGF0ZVxuICAgID8gRGF0ZVxuICAgIDoge1xuICAgICAgICBbSyBpbiBrZXlvZiBUIGFzIFRvQ2FtZWw8Sz5dOiBDb252ZXJ0T2JqZWN0VmFsdWU8VFtLXSwgJ2NhbWVsJz47XG4gICAgICB9O1xuXG5leHBvcnQgdHlwZSBUb1Bhc2NhbDxTIGV4dGVuZHMgc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sPiA9IFMgZXh0ZW5kcyBzdHJpbmdcbiAgPyBTIGV4dGVuZHMgTnVtZXJpY0tleVxuICAgID8gU1xuICAgIDogUyBleHRlbmRzIGAke2luZmVyIEhlYWR9XyR7aW5mZXIgVGFpbH1gXG4gICAgPyBgJHtDYXBpdGFsaXplPFRvQ2FtZWw8SGVhZD4+fSR7Q2FwaXRhbGl6ZTxUb0NhbWVsPFRhaWw+Pn1gXG4gICAgOiBTIGV4dGVuZHMgYCR7aW5mZXIgSGVhZH0tJHtpbmZlciBUYWlsfWBcbiAgICA/IGAke0NhcGl0YWxpemU8VG9DYW1lbDxIZWFkPj59JHtDYXBpdGFsaXplPFRvQ2FtZWw8VGFpbD4+fWBcbiAgICA6IENhcGl0YWxpemU8Uz5cbiAgOiBuZXZlcjtcblxuZXhwb3J0IHR5cGUgT2JqZWN0VG9QYXNjYWw8VCBleHRlbmRzIG9iamVjdCB8IHVuZGVmaW5lZCB8IG51bGw+ID1cbiAgVCBleHRlbmRzIHVuZGVmaW5lZFxuICAgID8gdW5kZWZpbmVkXG4gICAgOiBUIGV4dGVuZHMgbnVsbFxuICAgID8gbnVsbFxuICAgIDogVCBleHRlbmRzIEFycmF5PGluZmVyIEFycmF5VHlwZT5cbiAgICA/IEFycmF5PENvbnZlcnRBcnJheUl0ZW08QXJyYXlUeXBlLCAncGFzY2FsJz4+XG4gICAgOiBUIGV4dGVuZHMgVWludDhBcnJheVxuICAgID8gVWludDhBcnJheVxuICAgIDogVCBleHRlbmRzIERhdGVcbiAgICA/IERhdGVcbiAgICA6IHtcbiAgICAgICAgW0sgaW4ga2V5b2YgVCBhcyBUb1Bhc2NhbDxLPl06IENvbnZlcnRPYmplY3RWYWx1ZTxUW0tdLCAncGFzY2FsJz47XG4gICAgICB9O1xuXG5leHBvcnQgdHlwZSBUb1NuYWtlPFMgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2w+ID0gUyBleHRlbmRzIHN0cmluZ1xuICA/IFMgZXh0ZW5kcyBOdW1lcmljS2V5XG4gICAgPyBTXG4gICAgOiBTIGV4dGVuZHMgYCR7aW5mZXIgSGVhZH0ke0NhcGl0YWxDaGFyc30ke2luZmVyIFRhaWx9YCAvLyBzdHJpbmcgaGFzIGEgY2FwaXRhbCBjaGFyIHNvbWV3aGVyZVxuICAgID8gSGVhZCBleHRlbmRzICcnIC8vIHRoZXJlIGlzIGEgY2FwaXRhbCBjaGFyIGluIHRoZSBmaXJzdCBwb3NpdGlvblxuICAgICAgPyBUYWlsIGV4dGVuZHMgJydcbiAgICAgICAgPyBMb3dlcmNhc2U8Uz4gLyogICdBJyAqL1xuICAgICAgICA6IFMgZXh0ZW5kcyBgJHtpbmZlciBDYXBzfSR7VGFpbH1gIC8vIHRhaWwgZXhpc3RzLCBoYXMgY2FwaXRhbCBjaGFyYWN0ZXJzXG4gICAgICAgID8gQ2FwcyBleHRlbmRzIENhcGl0YWxDaGFyc1xuICAgICAgICAgID8gVGFpbCBleHRlbmRzIENhcGl0YWxMZXR0ZXJzXG4gICAgICAgICAgICA/IGAke0xvd2VyY2FzZTxDYXBzPn1fJHtMb3dlcmNhc2U8VGFpbD59YCAvKiAnQUInICovXG4gICAgICAgICAgICA6IFRhaWwgZXh0ZW5kcyBgJHtDYXBpdGFsTGV0dGVyc30ke3N0cmluZ31gXG4gICAgICAgICAgICA/IGAke1RvU25ha2U8Q2Fwcz59XyR7VG9TbmFrZTxUYWlsPn1gIC8qIGZpcnN0IHRhaWwgY2hhciBpcyB1cHBlcj8gJ0FCY2QnICovXG4gICAgICAgICAgICA6IGAke1RvU25ha2U8Q2Fwcz59JHtUb1NuYWtlPFRhaWw+fWAgLyogJ0FiQ0QnLCdBYmNEJywgICovIC8qIFRPRE86IGlmIHRhaWwgaXMgb25seSBudW1iZXJzLCBhcHBlbmQgd2l0aG91dCB1bmRlcnNjb3JlICovXG4gICAgICAgICAgOiBuZXZlciAvKiBuZXZlciByZWFjaGVkLCB1c2VkIGZvciBpbmZlcmVuY2Ugb2YgY2FwcyAqL1xuICAgICAgICA6IG5ldmVyXG4gICAgICA6IFRhaWwgZXh0ZW5kcyAnJyAvKiAnYUInICdhYkNEJyAnQUJDRCcgJ0FCJyAqL1xuICAgICAgPyBTIGV4dGVuZHMgYCR7SGVhZH0ke2luZmVyIENhcHN9YFxuICAgICAgICA/IENhcHMgZXh0ZW5kcyBDYXBpdGFsQ2hhcnNcbiAgICAgICAgICA/IEhlYWQgZXh0ZW5kcyBMb3dlcmNhc2U8SGVhZD4gLyogJ2FiY0QnICovXG4gICAgICAgICAgICA/IENhcHMgZXh0ZW5kcyBOdW1iZXJzXG4gICAgICAgICAgICAgID8gLy8gSGVhZCBleGlzdHMgYW5kIGlzIGxvd2VyY2FzZSwgdGFpbCBkb2VzIG5vdCwgQ2FwcyBpcyBhIG51bWJlciwgd2UgbWF5IGJlIGluIGEgc3ViLXNlbGVjdFxuICAgICAgICAgICAgICAgIC8vIGlmIGhlYWQgZW5kcyB3aXRoIG51bWJlciwgZG9uJ3Qgc3BsaXQgaGVhZCBhbiBDYXBzLCBrZWVwIGNvbnRpZ3VvdXMgbnVtYmVycyB0b2dldGhlclxuICAgICAgICAgICAgICAgIEhlYWQgZXh0ZW5kcyBgJHtzdHJpbmd9JHtOdW1iZXJzfWBcbiAgICAgICAgICAgICAgICA/IG5ldmVyXG4gICAgICAgICAgICAgICAgOiAvLyBoZWFkIGRvZXMgbm90IGVuZCBpbiBudW1iZXIsIHNhZmUgdG8gc3BsaXQuICdhYmMyJyAtPiAnYWJjXzInXG4gICAgICAgICAgICAgICAgICBgJHtUb1NuYWtlPEhlYWQ+fV8ke0NhcHN9YFxuICAgICAgICAgICAgICA6IGAke1RvU25ha2U8SGVhZD59XyR7VG9TbmFrZTxDYXBzPn1gIC8qICdhYmNEJyAnYWJjMjUnICovXG4gICAgICAgICAgICA6IG5ldmVyIC8qIHN0b3AgdW5pb24gdHlwZSBmb3JtaW5nICovXG4gICAgICAgICAgOiBuZXZlclxuICAgICAgICA6IG5ldmVyIC8qIG5ldmVyIHJlYWNoZWQsIHVzZWQgZm9yIGluZmVyZW5jZSBvZiBjYXBzICovXG4gICAgICA6IFMgZXh0ZW5kcyBgJHtIZWFkfSR7aW5mZXIgQ2Fwc30ke1RhaWx9YCAvKiAnYWJDZCcgJ0FCQ0QnICdBYkNkJyAnQUJjRCcgKi9cbiAgICAgID8gQ2FwcyBleHRlbmRzIENhcGl0YWxDaGFyc1xuICAgICAgICA/IEhlYWQgZXh0ZW5kcyBMb3dlcmNhc2U8SGVhZD4gLyogaXMgJ2FiQ2QnICdhYkNEJyA/ICovXG4gICAgICAgICAgPyBUYWlsIGV4dGVuZHMgQ2FwaXRhbExldHRlcnMgLyogaXMgJ2FiQ0QnIHdoZXJlIENhcHMgPSAnQycgKi9cbiAgICAgICAgICAgID8gYCR7VG9TbmFrZTxIZWFkPn1fJHtUb1NuYWtlPENhcHM+fV8ke0xvd2VyY2FzZTxUYWlsPn1gIC8qIGFCQ0QgVGFpbCA9ICdEJywgSGVhZCA9ICdhQicgKi9cbiAgICAgICAgICAgIDogVGFpbCBleHRlbmRzIGAke0NhcGl0YWxMZXR0ZXJzfSR7c3RyaW5nfWAgLyogaXMgJ2FCQ2QnIHdoZXJlIENhcHMgPSAnQicgKi9cbiAgICAgICAgICAgID8gQ2FwcyBleHRlbmRzIE51bWJlcnNcbiAgICAgICAgICAgICAgPyBgJHtUb1NuYWtlPEhlYWQ+fSR7Q2Fwc31fJHtUb1NuYWtlPFRhaWw+fWAgLyogJ3MzSWQnID0+ICdzM19pZCcgKi9cbiAgICAgICAgICAgICAgOiBIZWFkIGV4dGVuZHMgTnVtYmVyc1xuICAgICAgICAgICAgICA/IG5ldmVyIC8qIHN0b3AgdW5pb24gdHlwZSBmb3JtaW5nICovXG4gICAgICAgICAgICAgIDogSGVhZCBleHRlbmRzIGAke3N0cmluZ30ke051bWJlcnN9YFxuICAgICAgICAgICAgICA/IG5ldmVyIC8qIHN0b3AgdW5pb24gdHlwZSBmb3JtaW5nICovXG4gICAgICAgICAgICAgIDogYCR7SGVhZH1fJHtUb1NuYWtlPENhcHM+fV8ke1RvU25ha2U8VGFpbD59YCAvKiAnYUJDZCcgPT4gYCR7J2EnfV8ke0xvd2VyY2FzZTwnQic+fV8ke1RvU25ha2U8J0NkJz59YCAqL1xuICAgICAgICAgICAgOiBUYWlsIGV4dGVuZHMgYCR7TG93ZXJjYXNlTGV0dGVyc30ke3N0cmluZ31gXG4gICAgICAgICAgICA/IEhlYWQgZXh0ZW5kcyBgJHtzdHJpbmd9JHtOdW1iZXJzfWBcbiAgICAgICAgICAgICAgPyBgJHtIZWFkfV8ke0xvd2VyY2FzZTxDYXBzPn0ke1RvU25ha2U8VGFpbD59YCAvKiAnczNJZCcgPT4gJ3MzX2lkJyAqL1xuICAgICAgICAgICAgICA6IGAke1RvU25ha2U8SGVhZD59XyR7TG93ZXJjYXNlPENhcHM+fSR7VG9TbmFrZTxUYWlsPn1gIC8qICdhQmNEJyB3aGVyZSBDYXBzID0gJ0InIHRhaWwgc3RhcnRzIGFzIGxvd2VyY2FzZSAqL1xuICAgICAgICAgICAgOiBgJHtUb1NuYWtlPEhlYWQ+fV8ke0xvd2VyY2FzZTxDYXBzPn0ke1RvU25ha2U8VGFpbD59YCAvKiAnYUJjRCcgd2hlcmUgQ2FwcyA9ICdCJyB0YWlsIHN0YXJ0cyBhcyBsb3dlcmNhc2UgKi9cbiAgICAgICAgICA6IG5ldmVyXG4gICAgICAgIDogbmV2ZXJcbiAgICAgIDogbmV2ZXJcbiAgICA6IFMgLyogJ2FiYycgICovXG4gIDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIE9iamVjdFRvU25ha2U8VCBleHRlbmRzIG9iamVjdCB8IHVuZGVmaW5lZCB8IG51bGw+ID1cbiAgVCBleHRlbmRzIHVuZGVmaW5lZFxuICAgID8gdW5kZWZpbmVkXG4gICAgOiBUIGV4dGVuZHMgbnVsbFxuICAgID8gbnVsbFxuICAgIDogVCBleHRlbmRzIEFycmF5PGluZmVyIEFycmF5VHlwZT5cbiAgICA/IEFycmF5PENvbnZlcnRBcnJheUl0ZW08QXJyYXlUeXBlLCAnc25ha2UnPj5cbiAgICA6IFQgZXh0ZW5kcyBVaW50OEFycmF5XG4gICAgPyBVaW50OEFycmF5XG4gICAgOiBUIGV4dGVuZHMgRGF0ZVxuICAgID8gRGF0ZVxuICAgIDoge1xuICAgICAgICBbSyBpbiBrZXlvZiBUIGFzIFRvU25ha2U8Sz5dOiBDb252ZXJ0T2JqZWN0VmFsdWU8VFtLXSwgJ3NuYWtlJz47XG4gICAgICB9O1xuXG5leHBvcnQgdHlwZSBUb1NjcmVhbWluZ1NuYWtlPFMgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2w+ID1cbiAgVXBwZXJjYXNlPFRvU25ha2U8Uz4+O1xuXG5leHBvcnQgdHlwZSBPYmplY3RUb1NjcmVhbWluZ1NuYWtlPFQgZXh0ZW5kcyBvYmplY3QgfCB1bmRlZmluZWQgfCBudWxsPiA9XG4gIFQgZXh0ZW5kcyB1bmRlZmluZWRcbiAgICA/IHVuZGVmaW5lZFxuICAgIDogVCBleHRlbmRzIG51bGxcbiAgICA/IG51bGxcbiAgICA6IFQgZXh0ZW5kcyBBcnJheTxpbmZlciBBcnJheVR5cGU+XG4gICAgPyBBcnJheTxDb252ZXJ0QXJyYXlJdGVtPEFycmF5VHlwZSwgJ3NjcmVhbWluZ1NuYWtlJz4+XG4gICAgOiBUIGV4dGVuZHMgVWludDhBcnJheVxuICAgID8gVWludDhBcnJheVxuICAgIDogVCBleHRlbmRzIERhdGVcbiAgICA/IERhdGVcbiAgICA6IHtcbiAgICAgICAgW0sgaW4ga2V5b2YgVCBhcyBUb1NjcmVhbWluZ1NuYWtlPEs+XTogQ29udmVydE9iamVjdFZhbHVlPFxuICAgICAgICAgIFRbS10sXG4gICAgICAgICAgJ3NjcmVhbWluZ1NuYWtlJ1xuICAgICAgICA+O1xuICAgICAgfTtcblxudHlwZSBDYXNlTW9kZSA9ICdjYW1lbCcgfCAncGFzY2FsJyB8ICdzbmFrZScgfCAnc2NyZWFtaW5nU25ha2UnO1xuXG50eXBlIE51bWVyaWNLZXkgPSBgJHtudW1iZXJ9YDtcblxudHlwZSBDb252ZXJ0PFQgZXh0ZW5kcyBvYmplY3QgfCB1bmRlZmluZWQgfCBudWxsLCBNb2RlIGV4dGVuZHMgQ2FzZU1vZGU+ID1cbiAgTW9kZSBleHRlbmRzICdjYW1lbCdcbiAgICA/IE9iamVjdFRvQ2FtZWw8VD5cbiAgICA6IE1vZGUgZXh0ZW5kcyAncGFzY2FsJ1xuICAgID8gT2JqZWN0VG9QYXNjYWw8VD5cbiAgICA6IE1vZGUgZXh0ZW5kcyAnc25ha2UnXG4gICAgPyBPYmplY3RUb1NuYWtlPFQ+XG4gICAgOiBPYmplY3RUb1NjcmVhbWluZ1NuYWtlPFQ+O1xuXG50eXBlIENvbnZlcnRBcnJheUl0ZW08VCwgTW9kZSBleHRlbmRzIENhc2VNb2RlPiA9IFQgZXh0ZW5kcyBvYmplY3RcbiAgPyBDb252ZXJ0PFQsIE1vZGU+XG4gIDogVDtcblxudHlwZSBDb252ZXJ0T2JqZWN0VmFsdWU8VCwgTW9kZSBleHRlbmRzIENhc2VNb2RlPiA9IFQgZXh0ZW5kcyBBcnJheTxcbiAgaW5mZXIgQXJyYXlUeXBlXG4+XG4gID8gQXJyYXk8Q29udmVydEFycmF5SXRlbTxBcnJheVR5cGUsIE1vZGU+PlxuICA6IFQgZXh0ZW5kcyBvYmplY3QgfCB1bmRlZmluZWQgfCBudWxsXG4gID8gQ29udmVydDxULCBNb2RlPlxuICA6IFQ7XG5cbmZ1bmN0aW9uIGlzTnVtZXJpY0tleSh0ZXJtOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIC9eLT9cXGQrKD86XFwuXFxkKyk/JC8udGVzdCh0ZXJtKTtcbn1cblxudHlwZSBDYXBpdGFsTGV0dGVycyA9XG4gIHwgJ0EnXG4gIHwgJ0InXG4gIHwgJ0MnXG4gIHwgJ0QnXG4gIHwgJ0UnXG4gIHwgJ0YnXG4gIHwgJ0cnXG4gIHwgJ0gnXG4gIHwgJ0knXG4gIHwgJ0onXG4gIHwgJ0snXG4gIHwgJ0wnXG4gIHwgJ00nXG4gIHwgJ04nXG4gIHwgJ08nXG4gIHwgJ1AnXG4gIHwgJ1EnXG4gIHwgJ1InXG4gIHwgJ1MnXG4gIHwgJ1QnXG4gIHwgJ1UnXG4gIHwgJ1YnXG4gIHwgJ1cnXG4gIHwgJ1gnXG4gIHwgJ1knXG4gIHwgJ1onO1xuXG50eXBlIExvd2VyY2FzZUxldHRlcnMgPVxuICB8ICdhJ1xuICB8ICdiJ1xuICB8ICdjJ1xuICB8ICdkJ1xuICB8ICdlJ1xuICB8ICdmJ1xuICB8ICdnJ1xuICB8ICdoJ1xuICB8ICdpJ1xuICB8ICdqJ1xuICB8ICdrJ1xuICB8ICdsJ1xuICB8ICdtJ1xuICB8ICduJ1xuICB8ICdvJ1xuICB8ICdwJ1xuICB8ICdxJ1xuICB8ICdyJ1xuICB8ICdzJ1xuICB8ICd0J1xuICB8ICd1J1xuICB8ICd2J1xuICB8ICd3J1xuICB8ICd4J1xuICB8ICd5J1xuICB8ICd6JztcblxudHlwZSBOdW1iZXJzID0gJzAnIHwgJzEnIHwgJzInIHwgJzMnIHwgJzQnIHwgJzUnIHwgJzYnIHwgJzcnIHwgJzgnIHwgJzknO1xuXG50eXBlIENhcGl0YWxDaGFycyA9IENhcGl0YWxMZXR0ZXJzIHwgTnVtYmVycztcbiJdfQ==
|