nextlove 2.20.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-GZTWRF2R.mjs +239 -0
- package/dist/generators/index.js +424 -159
- package/dist/generators/index.mjs +241 -156
- package/dist/index.d.ts +4 -4
- package/dist/index.js +107 -30
- package/dist/index.mjs +40 -30
- package/package.json +3 -5
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import {
|
|
2
|
+
init_esm_shims
|
|
3
|
+
} from "./chunk-2HL2TLDY.mjs";
|
|
4
|
+
|
|
5
|
+
// src/lib/zod-compat.ts
|
|
6
|
+
init_esm_shims();
|
|
7
|
+
function getDef(schema) {
|
|
8
|
+
if ("_zod" in schema) {
|
|
9
|
+
return schema._zod.def;
|
|
10
|
+
}
|
|
11
|
+
return schema._def;
|
|
12
|
+
}
|
|
13
|
+
function getTypeName(schema) {
|
|
14
|
+
var _a;
|
|
15
|
+
if ("_zod" in schema) {
|
|
16
|
+
const zod = schema._zod;
|
|
17
|
+
const constructorName = schema.constructor.name;
|
|
18
|
+
if (constructorName && constructorName.startsWith("$Zod")) {
|
|
19
|
+
return constructorName.slice(1);
|
|
20
|
+
}
|
|
21
|
+
if (zod.def && zod.def.type) {
|
|
22
|
+
return normalizeZodV4Type(zod.def.type);
|
|
23
|
+
}
|
|
24
|
+
return constructorName || "Unknown";
|
|
25
|
+
}
|
|
26
|
+
return ((_a = schema._def) == null ? void 0 : _a.typeName) || "Unknown";
|
|
27
|
+
}
|
|
28
|
+
function normalizeZodV4Type(type) {
|
|
29
|
+
const typeMap = {
|
|
30
|
+
string: "ZodString",
|
|
31
|
+
number: "ZodNumber",
|
|
32
|
+
bigint: "ZodBigInt",
|
|
33
|
+
boolean: "ZodBoolean",
|
|
34
|
+
date: "ZodDate",
|
|
35
|
+
undefined: "ZodUndefined",
|
|
36
|
+
null: "ZodNull",
|
|
37
|
+
void: "ZodVoid",
|
|
38
|
+
any: "ZodAny",
|
|
39
|
+
unknown: "ZodUnknown",
|
|
40
|
+
never: "ZodNever",
|
|
41
|
+
literal: "ZodLiteral",
|
|
42
|
+
enum: "ZodEnum",
|
|
43
|
+
nativeEnum: "ZodNativeEnum",
|
|
44
|
+
object: "ZodObject",
|
|
45
|
+
array: "ZodArray",
|
|
46
|
+
tuple: "ZodTuple",
|
|
47
|
+
union: "ZodUnion",
|
|
48
|
+
discriminatedUnion: "ZodDiscriminatedUnion",
|
|
49
|
+
intersection: "ZodIntersection",
|
|
50
|
+
record: "ZodRecord",
|
|
51
|
+
map: "ZodMap",
|
|
52
|
+
set: "ZodSet",
|
|
53
|
+
function: "ZodFunction",
|
|
54
|
+
lazy: "ZodLazy",
|
|
55
|
+
promise: "ZodPromise",
|
|
56
|
+
optional: "ZodOptional",
|
|
57
|
+
nullable: "ZodNullable",
|
|
58
|
+
default: "ZodDefault",
|
|
59
|
+
effects: "ZodEffects",
|
|
60
|
+
transformer: "ZodTransformer",
|
|
61
|
+
branded: "ZodBranded",
|
|
62
|
+
pipeline: "ZodPipeline",
|
|
63
|
+
readonly: "ZodReadonly"
|
|
64
|
+
};
|
|
65
|
+
return typeMap[type] || `Zod${type.charAt(0).toUpperCase() + type.slice(1)}`;
|
|
66
|
+
}
|
|
67
|
+
function getEffectsSchema(schema) {
|
|
68
|
+
const def = getDef(schema);
|
|
69
|
+
return def == null ? void 0 : def.schema;
|
|
70
|
+
}
|
|
71
|
+
function getInnerType(schema) {
|
|
72
|
+
const def = getDef(schema);
|
|
73
|
+
return def == null ? void 0 : def.innerType;
|
|
74
|
+
}
|
|
75
|
+
function getShape(schema) {
|
|
76
|
+
const def = getDef(schema);
|
|
77
|
+
if (typeof (def == null ? void 0 : def.shape) === "function") {
|
|
78
|
+
return def.shape();
|
|
79
|
+
}
|
|
80
|
+
return def == null ? void 0 : def.shape;
|
|
81
|
+
}
|
|
82
|
+
function getChecks(schema) {
|
|
83
|
+
const def = getDef(schema);
|
|
84
|
+
const checks = (def == null ? void 0 : def.checks) || [];
|
|
85
|
+
return checks.map((check) => {
|
|
86
|
+
var _a;
|
|
87
|
+
if ((_a = check._zod) == null ? void 0 : _a.def) {
|
|
88
|
+
return { ...check._zod.def };
|
|
89
|
+
}
|
|
90
|
+
return check;
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
function getEnumValues(schema) {
|
|
94
|
+
if ("options" in schema && Array.isArray(schema.options)) {
|
|
95
|
+
return schema.options;
|
|
96
|
+
}
|
|
97
|
+
if ("enum" in schema && schema.enum) {
|
|
98
|
+
return schema.enum;
|
|
99
|
+
}
|
|
100
|
+
const def = getDef(schema);
|
|
101
|
+
return (def == null ? void 0 : def.values) || (def == null ? void 0 : def.entries);
|
|
102
|
+
}
|
|
103
|
+
function getLiteralValue(schema) {
|
|
104
|
+
if ("value" in schema) {
|
|
105
|
+
return schema.value;
|
|
106
|
+
}
|
|
107
|
+
const def = getDef(schema);
|
|
108
|
+
if (Array.isArray(def == null ? void 0 : def.values)) {
|
|
109
|
+
return def.values[0];
|
|
110
|
+
}
|
|
111
|
+
return def == null ? void 0 : def.value;
|
|
112
|
+
}
|
|
113
|
+
function getDefaultValue(schema) {
|
|
114
|
+
const def = getDef(schema);
|
|
115
|
+
if (typeof (def == null ? void 0 : def.defaultValue) === "function") {
|
|
116
|
+
return def.defaultValue();
|
|
117
|
+
}
|
|
118
|
+
return def == null ? void 0 : def.defaultValue;
|
|
119
|
+
}
|
|
120
|
+
function getArrayConstraints(schema) {
|
|
121
|
+
const def = getDef(schema);
|
|
122
|
+
return {
|
|
123
|
+
exactLength: def == null ? void 0 : def.exactLength,
|
|
124
|
+
minLength: def == null ? void 0 : def.minLength,
|
|
125
|
+
maxLength: def == null ? void 0 : def.maxLength
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
function getArrayType(schema) {
|
|
129
|
+
const def = getDef(schema);
|
|
130
|
+
return def == null ? void 0 : def.type;
|
|
131
|
+
}
|
|
132
|
+
function getRecordValueType(schema) {
|
|
133
|
+
const def = getDef(schema);
|
|
134
|
+
return def == null ? void 0 : def.valueType;
|
|
135
|
+
}
|
|
136
|
+
function getCatchall(schema) {
|
|
137
|
+
const def = getDef(schema);
|
|
138
|
+
return def == null ? void 0 : def.catchall;
|
|
139
|
+
}
|
|
140
|
+
function getUnknownKeys(schema) {
|
|
141
|
+
const def = getDef(schema);
|
|
142
|
+
return def == null ? void 0 : def.unknownKeys;
|
|
143
|
+
}
|
|
144
|
+
function getIntersectionParts(schema) {
|
|
145
|
+
const def = getDef(schema);
|
|
146
|
+
return {
|
|
147
|
+
left: def == null ? void 0 : def.left,
|
|
148
|
+
right: def == null ? void 0 : def.right
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
function getUnionOptions(schema) {
|
|
152
|
+
const def = getDef(schema);
|
|
153
|
+
const options = def == null ? void 0 : def.options;
|
|
154
|
+
if (options instanceof Map) {
|
|
155
|
+
return Array.from(options.values());
|
|
156
|
+
}
|
|
157
|
+
if (Array.isArray(options)) {
|
|
158
|
+
return options;
|
|
159
|
+
}
|
|
160
|
+
return [];
|
|
161
|
+
}
|
|
162
|
+
function getDiscriminator(schema) {
|
|
163
|
+
const def = getDef(schema);
|
|
164
|
+
return def == null ? void 0 : def.discriminator;
|
|
165
|
+
}
|
|
166
|
+
function getEffect(schema) {
|
|
167
|
+
const def = getDef(schema);
|
|
168
|
+
return def == null ? void 0 : def.effect;
|
|
169
|
+
}
|
|
170
|
+
function getPipelineParts(schema) {
|
|
171
|
+
const def = getDef(schema);
|
|
172
|
+
return {
|
|
173
|
+
in: def == null ? void 0 : def.in,
|
|
174
|
+
out: def == null ? void 0 : def.out
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
function getBrandedType(schema) {
|
|
178
|
+
const def = getDef(schema);
|
|
179
|
+
return def == null ? void 0 : def.type;
|
|
180
|
+
}
|
|
181
|
+
function getTupleItems(schema) {
|
|
182
|
+
const def = getDef(schema);
|
|
183
|
+
return (def == null ? void 0 : def.items) || [];
|
|
184
|
+
}
|
|
185
|
+
function getFunctionParts(schema) {
|
|
186
|
+
const def = getDef(schema);
|
|
187
|
+
return {
|
|
188
|
+
args: def == null ? void 0 : def.args,
|
|
189
|
+
returns: def == null ? void 0 : def.returns
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
function getMapTypes(schema) {
|
|
193
|
+
const def = getDef(schema);
|
|
194
|
+
return {
|
|
195
|
+
keyType: def == null ? void 0 : def.keyType,
|
|
196
|
+
valueType: def == null ? void 0 : def.valueType
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
function getSetValueType(schema) {
|
|
200
|
+
const def = getDef(schema);
|
|
201
|
+
return def == null ? void 0 : def.valueType;
|
|
202
|
+
}
|
|
203
|
+
function getPromiseType(schema) {
|
|
204
|
+
const def = getDef(schema);
|
|
205
|
+
return def == null ? void 0 : def.type;
|
|
206
|
+
}
|
|
207
|
+
function getCustomTypeGetter(schema) {
|
|
208
|
+
const def = getDef(schema);
|
|
209
|
+
return def == null ? void 0 : def.getType;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
export {
|
|
213
|
+
getTypeName,
|
|
214
|
+
getEffectsSchema,
|
|
215
|
+
getInnerType,
|
|
216
|
+
getShape,
|
|
217
|
+
getChecks,
|
|
218
|
+
getEnumValues,
|
|
219
|
+
getLiteralValue,
|
|
220
|
+
getDefaultValue,
|
|
221
|
+
getArrayConstraints,
|
|
222
|
+
getArrayType,
|
|
223
|
+
getRecordValueType,
|
|
224
|
+
getCatchall,
|
|
225
|
+
getUnknownKeys,
|
|
226
|
+
getIntersectionParts,
|
|
227
|
+
getUnionOptions,
|
|
228
|
+
getDiscriminator,
|
|
229
|
+
getEffect,
|
|
230
|
+
getPipelineParts,
|
|
231
|
+
getBrandedType,
|
|
232
|
+
getTupleItems,
|
|
233
|
+
getFunctionParts,
|
|
234
|
+
getMapTypes,
|
|
235
|
+
getSetValueType,
|
|
236
|
+
getPromiseType,
|
|
237
|
+
getCustomTypeGetter
|
|
238
|
+
};
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2xpYi96b2QtY29tcGF0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIFpvZCBDb21wYXRpYmlsaXR5IExheWVyXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgY29tcGF0aWJpbGl0eSBiZXR3ZWVuIFpvZCB2MyBhbmQgWm9kIHY0LlxuICogSW4gWm9kIHY0LCB0aGUgaW50ZXJuYWwgc3RydWN0dXJlIGNoYW5nZWQ6XG4gKiAtIGAuX2RlZmAgbW92ZWQgdG8gYC5fem9kLmRlZmBcbiAqIC0gYC5fZGVmLnR5cGVOYW1lYCBtb3ZlZCB0byBgLl96b2QuZGVmLnR5cGVgXG4gKlxuICogVGhpcyBtb2R1bGUgYWJzdHJhY3RzIHRoZXNlIGRpZmZlcmVuY2VzIHRvIHN1cHBvcnQgYm90aCB2ZXJzaW9ucy5cbiAqL1xuXG5pbXBvcnQgeyBab2RUeXBlQW55IH0gZnJvbSBcInpvZFwiXG5cbi8qKlxuICogQ2hlY2sgaWYgd2UncmUgdXNpbmcgWm9kIHY0K1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNab2RWNChzY2hlbWE6IFpvZFR5cGVBbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIFwiX3pvZFwiIGluIHNjaGVtYVxufVxuXG4vKipcbiAqIEdldCB0aGUgaW50ZXJuYWwgZGVmaW5pdGlvbiBvYmplY3QgZnJvbSBhIFpvZCBzY2hlbWEuXG4gKiBXb3JrcyB3aXRoIGJvdGggWm9kIHYzICguX2RlZikgYW5kIFpvZCB2NCAoLl96b2QuZGVmKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmKHNjaGVtYTogWm9kVHlwZUFueSk6IGFueSB7XG4gIGlmIChcIl96b2RcIiBpbiBzY2hlbWEpIHtcbiAgICAvLyBab2QgdjRcbiAgICByZXR1cm4gKHNjaGVtYSBhcyBhbnkpLl96b2QuZGVmXG4gIH1cbiAgLy8gWm9kIHYzXG4gIHJldHVybiAoc2NoZW1hIGFzIGFueSkuX2RlZlxufVxuXG4vKipcbiAqIEdldCB0aGUgdHlwZSBuYW1lIG9mIGEgWm9kIHNjaGVtYS5cbiAqIFpvZCB2Mzogc2NoZW1hLl9kZWYudHlwZU5hbWUgKGUuZy4sIFwiWm9kU3RyaW5nXCIpXG4gKiBab2QgdjQ6IHNjaGVtYS5fem9kLmRlZi50eXBlIChlLmcuLCBcInN0cmluZ1wiKSAtIGJ1dCB3ZSBub3JtYWxpemUgdG8gdjMtc3R5bGUgbmFtZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFR5cGVOYW1lKHNjaGVtYTogWm9kVHlwZUFueSk6IHN0cmluZyB7XG4gIGlmIChcIl96b2RcIiBpbiBzY2hlbWEpIHtcbiAgICAvLyBab2QgdjQgLSB0aGUgdHlwZSBpcyBzdG9yZWQgZGlmZmVyZW50bHlcbiAgICBjb25zdCB6b2QgPSAoc2NoZW1hIGFzIGFueSkuX3pvZFxuICAgIC8vIEluIFpvZCB2NCwgdGhlIGNvbnN0cnVjdG9yIG5hbWUgZ2l2ZXMgdXMgdGhlIHR5cGVcbiAgICBjb25zdCBjb25zdHJ1Y3Rvck5hbWUgPSBzY2hlbWEuY29uc3RydWN0b3IubmFtZVxuICAgIGlmIChjb25zdHJ1Y3Rvck5hbWUgJiYgY29uc3RydWN0b3JOYW1lLnN0YXJ0c1dpdGgoXCIkWm9kXCIpKSB7XG4gICAgICAvLyBab2QgdjQgdXNlcyAkWm9kU3RyaW5nLCAkWm9kTnVtYmVyLCBldGMgLSBjb252ZXJ0IHRvIFpvZFN0cmluZywgWm9kTnVtYmVyXG4gICAgICByZXR1cm4gY29uc3RydWN0b3JOYW1lLnNsaWNlKDEpXG4gICAgfVxuICAgIC8vIEZhbGxiYWNrIHRvIGRlZi50eXBlIGlmIGF2YWlsYWJsZVxuICAgIGlmICh6b2QuZGVmICYmIHpvZC5kZWYudHlwZSkge1xuICAgICAgcmV0dXJuIG5vcm1hbGl6ZVpvZFY0VHlwZSh6b2QuZGVmLnR5cGUpXG4gICAgfVxuICAgIHJldHVybiBjb25zdHJ1Y3Rvck5hbWUgfHwgXCJVbmtub3duXCJcbiAgfVxuICAvLyBab2QgdjNcbiAgcmV0dXJuIChzY2hlbWEgYXMgYW55KS5fZGVmPy50eXBlTmFtZSB8fCBcIlVua25vd25cIlxufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSBab2QgdjQgdHlwZSBuYW1lcyB0byB2My1zdHlsZSBuYW1lcyBmb3IgY29uc2lzdGVuY3lcbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplWm9kVjRUeXBlKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHR5cGVNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgc3RyaW5nOiBcIlpvZFN0cmluZ1wiLFxuICAgIG51bWJlcjogXCJab2ROdW1iZXJcIixcbiAgICBiaWdpbnQ6IFwiWm9kQmlnSW50XCIsXG4gICAgYm9vbGVhbjogXCJab2RCb29sZWFuXCIsXG4gICAgZGF0ZTogXCJab2REYXRlXCIsXG4gICAgdW5kZWZpbmVkOiBcIlpvZFVuZGVmaW5lZFwiLFxuICAgIG51bGw6IFwiWm9kTnVsbFwiLFxuICAgIHZvaWQ6IFwiWm9kVm9pZFwiLFxuICAgIGFueTogXCJab2RBbnlcIixcbiAgICB1bmtub3duOiBcIlpvZFVua25vd25cIixcbiAgICBuZXZlcjogXCJab2ROZXZlclwiLFxuICAgIGxpdGVyYWw6IFwiWm9kTGl0ZXJhbFwiLFxuICAgIGVudW06IFwiWm9kRW51bVwiLFxuICAgIG5hdGl2ZUVudW06IFwiWm9kTmF0aXZlRW51bVwiLFxuICAgIG9iamVjdDogXCJab2RPYmplY3RcIixcbiAgICBhcnJheTogXCJab2RBcnJheVwiLFxuICAgIHR1cGxlOiBcIlpvZFR1cGxlXCIsXG4gICAgdW5pb246IFwiWm9kVW5pb25cIixcbiAgICBkaXNjcmltaW5hdGVkVW5pb246IFwiWm9kRGlzY3JpbWluYXRlZFVuaW9uXCIsXG4gICAgaW50ZXJzZWN0aW9uOiBcIlpvZEludGVyc2VjdGlvblwiLFxuICAgIHJlY29yZDogXCJab2RSZWNvcmRcIixcbiAgICBtYXA6IFwiWm9kTWFwXCIsXG4gICAgc2V0OiBcIlpvZFNldFwiLFxuICAgIGZ1bmN0aW9uOiBcIlpvZEZ1bmN0aW9uXCIsXG4gICAgbGF6eTogXCJab2RMYXp5XCIsXG4gICAgcHJvbWlzZTogXCJab2RQcm9taXNlXCIsXG4gICAgb3B0aW9uYWw6IFwiWm9kT3B0aW9uYWxcIixcbiAgICBudWxsYWJsZTogXCJab2ROdWxsYWJsZVwiLFxuICAgIGRlZmF1bHQ6IFwiWm9kRGVmYXVsdFwiLFxuICAgIGVmZmVjdHM6IFwiWm9kRWZmZWN0c1wiLFxuICAgIHRyYW5zZm9ybWVyOiBcIlpvZFRyYW5zZm9ybWVyXCIsXG4gICAgYnJhbmRlZDogXCJab2RCcmFuZGVkXCIsXG4gICAgcGlwZWxpbmU6IFwiWm9kUGlwZWxpbmVcIixcbiAgICByZWFkb25seTogXCJab2RSZWFkb25seVwiLFxuICB9XG4gIHJldHVybiB0eXBlTWFwW3R5cGVdIHx8IGBab2Qke3R5cGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0eXBlLnNsaWNlKDEpfWBcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGlubmVyIHNjaGVtYSBmcm9tIGEgWm9kRWZmZWN0cy9ab2RUcmFuc2Zvcm1lclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWZmZWN0c1NjaGVtYShzY2hlbWE6IFpvZFR5cGVBbnkpOiBab2RUeXBlQW55IHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZGVmID0gZ2V0RGVmKHNjaGVtYSlcbiAgcmV0dXJuIGRlZj8uc2NoZW1hXG59XG5cbi8qKlxuICogR2V0IHRoZSBpbm5lciB0eXBlIGZyb20gWm9kT3B0aW9uYWwsIFpvZE51bGxhYmxlLCBab2REZWZhdWx0LCBldGMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbm5lclR5cGUoc2NoZW1hOiBab2RUeXBlQW55KTogWm9kVHlwZUFueSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGRlZiA9IGdldERlZihzY2hlbWEpXG4gIHJldHVybiBkZWY/LmlubmVyVHlwZVxufVxuXG4vKipcbiAqIEdldCB0aGUgc2hhcGUgb2YgYSBab2RPYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNoYXBlKFxuICBzY2hlbWE6IFpvZFR5cGVBbnlcbik6IFJlY29yZDxzdHJpbmcsIFpvZFR5cGVBbnk+IHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZGVmID0gZ2V0RGVmKHNjaGVtYSlcbiAgaWYgKHR5cGVvZiBkZWY/LnNoYXBlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICByZXR1cm4gZGVmLnNoYXBlKClcbiAgfVxuICByZXR1cm4gZGVmPy5zaGFwZVxufVxuXG4vKipcbiAqIEdldCB0aGUgY2hlY2tzIGFycmF5IGZyb20gYSBzdHJpbmcvbnVtYmVyIHNjaGVtYVxuICogSW4gWm9kIDQsIGNoZWNrcyBhcmUgb2JqZWN0cyB3aXRoIF96b2QuZGVmIGNvbnRhaW5pbmcgdGhlIGNoZWNrIGRldGFpbHNcbiAqIFdlIG5vcm1hbGl6ZSB0aGVtIHRvIGhhdmUgdGhlIHByb3BlcnRpZXMgZGlyZWN0bHkgYWNjZXNzaWJsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hlY2tzKHNjaGVtYTogWm9kVHlwZUFueSk6IGFueVtdIHtcbiAgY29uc3QgZGVmID0gZ2V0RGVmKHNjaGVtYSlcbiAgY29uc3QgY2hlY2tzID0gZGVmPy5jaGVja3MgfHwgW11cblxuICAvLyBOb3JtYWxpemUgWm9kIDQgY2hlY2sgb2JqZWN0c1xuICByZXR1cm4gY2hlY2tzLm1hcCgoY2hlY2s6IGFueSkgPT4ge1xuICAgIGlmIChjaGVjay5fem9kPy5kZWYpIHtcbiAgICAgIC8vIFpvZCA0OiBmbGF0dGVuIF96b2QuZGVmIHByb3BlcnRpZXMgb250byB0aGUgY2hlY2sgb2JqZWN0XG4gICAgICByZXR1cm4geyAuLi5jaGVjay5fem9kLmRlZiB9XG4gICAgfVxuICAgIC8vIFpvZCAzOiBhbHJlYWR5IGhhcyBwcm9wZXJ0aWVzIGRpcmVjdGx5XG4gICAgcmV0dXJuIGNoZWNrXG4gIH0pXG59XG5cbi8qKlxuICogR2V0IHZhbHVlcyBmcm9tIGEgWm9kRW51bSBvciBab2ROYXRpdmVFbnVtXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbnVtVmFsdWVzKFxuICBzY2hlbWE6IFpvZFR5cGVBbnlcbik6IGFueVtdIHwgUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIC8vIFpvZCA0OiB1c2Ugc2NoZW1hLm9wdGlvbnMgKGFycmF5KSBvciBzY2hlbWEuZW51bSAob2JqZWN0KVxuICBpZiAoXCJvcHRpb25zXCIgaW4gc2NoZW1hICYmIEFycmF5LmlzQXJyYXkoKHNjaGVtYSBhcyBhbnkpLm9wdGlvbnMpKSB7XG4gICAgcmV0dXJuIChzY2hlbWEgYXMgYW55KS5vcHRpb25zXG4gIH1cbiAgaWYgKFwiZW51bVwiIGluIHNjaGVtYSAmJiAoc2NoZW1hIGFzIGFueSkuZW51bSkge1xuICAgIHJldHVybiAoc2NoZW1hIGFzIGFueSkuZW51bVxuICB9XG4gIC8vIFpvZCAzIGZhbGxiYWNrXG4gIGNvbnN0IGRlZiA9IGdldERlZihzY2hlbWEpXG4gIC8vIFpvZCA0IGFsc28gaGFzIGVudHJpZXMgaW4gZGVmXG4gIHJldHVybiBkZWY/LnZhbHVlcyB8fCBkZWY/LmVudHJpZXNcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGxpdGVyYWwgdmFsdWUgZnJvbSBhIFpvZExpdGVyYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExpdGVyYWxWYWx1ZShzY2hlbWE6IFpvZFR5cGVBbnkpOiBhbnkge1xuICAvLyBab2QgNDogdHJ5IHNjaGVtYS52YWx1ZSBmaXJzdCAocHVibGljIEFQSSlcbiAgaWYgKFwidmFsdWVcIiBpbiBzY2hlbWEpIHtcbiAgICByZXR1cm4gKHNjaGVtYSBhcyBhbnkpLnZhbHVlXG4gIH1cbiAgY29uc3QgZGVmID0gZ2V0RGVmKHNjaGVtYSlcbiAgLy8gWm9kIDQ6IHZhbHVlcyBpcyBhbiBhcnJheVxuICBpZiAoQXJyYXkuaXNBcnJheShkZWY/LnZhbHVlcykpIHtcbiAgICByZXR1cm4gZGVmLnZhbHVlc1swXVxuICB9XG4gIC8vIFpvZCAzOiB2YWx1ZSBpcyBhIHNpbmdsZSB2YWx1ZVxuICByZXR1cm4gZGVmPy52YWx1ZVxufVxuXG4vKipcbiAqIEdldCB0aGUgZGVmYXVsdCB2YWx1ZSBmcm9tIGEgWm9kRGVmYXVsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdFZhbHVlKHNjaGVtYTogWm9kVHlwZUFueSk6IGFueSB7XG4gIGNvbnN0IGRlZiA9IGdldERlZihzY2hlbWEpXG4gIGlmICh0eXBlb2YgZGVmPy5kZWZhdWx0VmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIHJldHVybiBkZWYuZGVmYXVsdFZhbHVlKClcbiAgfVxuICByZXR1cm4gZGVmPy5kZWZhdWx0VmFsdWVcbn1cblxuLyoqXG4gKiBHZXQgYXJyYXkgY29uc3RyYWludHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFycmF5Q29uc3RyYWludHMoc2NoZW1hOiBab2RUeXBlQW55KToge1xuICBleGFjdExlbmd0aD86IHsgdmFsdWU6IG51bWJlciB9XG4gIG1pbkxlbmd0aD86IHsgdmFsdWU6IG51bWJlciB9XG4gIG1heExlbmd0aD86IHsgdmFsdWU6IG51bWJlciB9XG59IHtcbiAgY29uc3QgZGVmID0gZ2V0RGVmKHNjaGVtYSlcbiAgcmV0dXJuIHtcbiAgICBleGFjdExlbmd0aDogZGVmPy5leGFjdExlbmd0aCxcbiAgICBtaW5MZW5ndGg6IGRlZj8ubWluTGVuZ3RoLFxuICAgIG1heExlbmd0aDogZGVmPy5tYXhMZW5ndGgsXG4gIH1cbn1cblxuLyoqXG4gKiBHZXQgdGhlIGVsZW1lbnQgdHlwZSBmcm9tIGEgWm9kQXJyYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFycmF5VHlwZShzY2hlbWE6IFpvZFR5cGVBbnkpOiBab2RUeXBlQW55IHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZGVmID0gZ2V0RGVmKHNjaGVtYSlcbiAgcmV0dXJuIGRlZj8udHlwZVxufVxuXG4vKipcbiAqIEdldCB0aGUgdmFsdWUgdHlwZSBmcm9tIGEgWm9kUmVjb3JkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWNvcmRWYWx1ZVR5cGUoc2NoZW1hOiBab2RUeXBlQW55KTogWm9kVHlwZUFueSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGRlZiA9IGdldERlZihzY2hlbWEpXG4gIHJldHVybiBkZWY/LnZhbHVlVHlwZVxufVxuXG4vKipcbiAqIEdldCBjYXRjaGFsbCBmcm9tIFpvZE9iamVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2F0Y2hhbGwoc2NoZW1hOiBab2RUeXBlQW55KTogWm9kVHlwZUFueSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGRlZiA9IGdldERlZihzY2hlbWEpXG4gIHJldHVybiBkZWY/LmNhdGNoYWxsXG59XG5cbi8qKlxuICogR2V0IHVua25vd25LZXlzIGZyb20gWm9kT2JqZWN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRVbmtub3duS2V5cyhcbiAgc2NoZW1hOiBab2RUeXBlQW55XG4pOiBcInBhc3N0aHJvdWdoXCIgfCBcInN0cmljdFwiIHwgXCJzdHJpcFwiIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZGVmID0gZ2V0RGVmKHNjaGVtYSlcbiAgcmV0dXJuIGRlZj8udW5rbm93bktleXNcbn1cblxuLyoqXG4gKiBHZXQgbGVmdC9yaWdodCBmcm9tIFpvZEludGVyc2VjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW50ZXJzZWN0aW9uUGFydHMoc2NoZW1hOiBab2RUeXBlQW55KToge1xuICBsZWZ0PzogWm9kVHlwZUFueVxuICByaWdodD86IFpvZFR5cGVBbnlcbn0ge1xuICBjb25zdCBkZWYgPSBnZXREZWYoc2NoZW1hKVxuICByZXR1cm4ge1xuICAgIGxlZnQ6IGRlZj8ubGVmdCxcbiAgICByaWdodDogZGVmPy5yaWdodCxcbiAgfVxufVxuXG4vKipcbiAqIEdldCBvcHRpb25zIGZyb20gWm9kVW5pb24gb3IgWm9kRGlzY3JpbWluYXRlZFVuaW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRVbmlvbk9wdGlvbnMoc2NoZW1hOiBab2RUeXBlQW55KTogWm9kVHlwZUFueVtdIHtcbiAgY29uc3QgZGVmID0gZ2V0RGVmKHNjaGVtYSlcbiAgY29uc3Qgb3B0aW9ucyA9IGRlZj8ub3B0aW9uc1xuICBpZiAob3B0aW9ucyBpbnN0YW5jZW9mIE1hcCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKG9wdGlvbnMudmFsdWVzKCkpXG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICByZXR1cm4gb3B0aW9uc1xuICB9XG4gIHJldHVybiBbXVxufVxuXG4vKipcbiAqIEdldCBkaXNjcmltaW5hdG9yIGZyb20gWm9kRGlzY3JpbWluYXRlZFVuaW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXNjcmltaW5hdG9yKHNjaGVtYTogWm9kVHlwZUFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGRlZiA9IGdldERlZihzY2hlbWEpXG4gIHJldHVybiBkZWY/LmRpc2NyaW1pbmF0b3Jcbn1cblxuLyoqXG4gKiBHZXQgZWZmZWN0IGZyb20gWm9kRWZmZWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWZmZWN0KHNjaGVtYTogWm9kVHlwZUFueSk6IGFueSB7XG4gIGNvbnN0IGRlZiA9IGdldERlZihzY2hlbWEpXG4gIHJldHVybiBkZWY/LmVmZmVjdFxufVxuXG4vKipcbiAqIEdldCBwaXBlbGluZSBpbi9vdXQgZnJvbSBab2RQaXBlbGluZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGlwZWxpbmVQYXJ0cyhzY2hlbWE6IFpvZFR5cGVBbnkpOiB7XG4gIGluPzogWm9kVHlwZUFueVxuICBvdXQ/OiBab2RUeXBlQW55XG59IHtcbiAgY29uc3QgZGVmID0gZ2V0RGVmKHNjaGVtYSlcbiAgcmV0dXJuIHtcbiAgICBpbjogZGVmPy5pbixcbiAgICBvdXQ6IGRlZj8ub3V0LFxuICB9XG59XG5cbi8qKlxuICogR2V0IHRoZSBicmFuZGVkIHR5cGUgZnJvbSBab2RCcmFuZGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCcmFuZGVkVHlwZShzY2hlbWE6IFpvZFR5cGVBbnkpOiBab2RUeXBlQW55IHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZGVmID0gZ2V0RGVmKHNjaGVtYSlcbiAgcmV0dXJuIGRlZj8udHlwZVxufVxuXG4vKipcbiAqIEdldCB0dXBsZSBpdGVtc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHVwbGVJdGVtcyhzY2hlbWE6IFpvZFR5cGVBbnkpOiBab2RUeXBlQW55W10ge1xuICBjb25zdCBkZWYgPSBnZXREZWYoc2NoZW1hKVxuICByZXR1cm4gZGVmPy5pdGVtcyB8fCBbXVxufVxuXG4vKipcbiAqIEdldCBmdW5jdGlvbiBhcmdzIGFuZCByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGdW5jdGlvblBhcnRzKHNjaGVtYTogWm9kVHlwZUFueSk6IHtcbiAgYXJncz86IFpvZFR5cGVBbnlcbiAgcmV0dXJucz86IFpvZFR5cGVBbnlcbn0ge1xuICBjb25zdCBkZWYgPSBnZXREZWYoc2NoZW1hKVxuICByZXR1cm4ge1xuICAgIGFyZ3M6IGRlZj8uYXJncyxcbiAgICByZXR1cm5zOiBkZWY/LnJldHVybnMsXG4gIH1cbn1cblxuLyoqXG4gKiBHZXQgbWFwIGtleSBhbmQgdmFsdWUgdHlwZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcFR5cGVzKHNjaGVtYTogWm9kVHlwZUFueSk6IHtcbiAga2V5VHlwZT86IFpvZFR5cGVBbnlcbiAgdmFsdWVUeXBlPzogWm9kVHlwZUFueVxufSB7XG4gIGNvbnN0IGRlZiA9IGdldERlZihzY2hlbWEpXG4gIHJldHVybiB7XG4gICAga2V5VHlwZTogZGVmPy5rZXlUeXBlLFxuICAgIHZhbHVlVHlwZTogZGVmPy52YWx1ZVR5cGUsXG4gIH1cbn1cblxuLyoqXG4gKiBHZXQgc2V0IHZhbHVlIHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNldFZhbHVlVHlwZShzY2hlbWE6IFpvZFR5cGVBbnkpOiBab2RUeXBlQW55IHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZGVmID0gZ2V0RGVmKHNjaGVtYSlcbiAgcmV0dXJuIGRlZj8udmFsdWVUeXBlXG59XG5cbi8qKlxuICogR2V0IHByb21pc2UgdHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvbWlzZVR5cGUoc2NoZW1hOiBab2RUeXBlQW55KTogWm9kVHlwZUFueSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGRlZiA9IGdldERlZihzY2hlbWEpXG4gIHJldHVybiBkZWY/LnR5cGVcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGN1c3RvbSB0eXBlIGdldHRlciBpZiBhdmFpbGFibGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEN1c3RvbVR5cGVHZXR0ZXIoc2NoZW1hOiBab2RUeXBlQW55KTogYW55IHtcbiAgY29uc3QgZGVmID0gZ2V0RGVmKHNjaGVtYSlcbiAgcmV0dXJuIGRlZj8uZ2V0VHlwZVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7QUFBQTtBQXdCTyxTQUFTLE9BQU8sUUFBeUI7QUFDOUMsTUFBSSxVQUFVLFFBQVE7QUFFcEIsV0FBUSxPQUFlLEtBQUs7QUFBQSxFQUM5QjtBQUVBLFNBQVEsT0FBZTtBQUN6QjtBQU9PLFNBQVMsWUFBWSxRQUE0QjtBQXRDeEQ7QUF1Q0UsTUFBSSxVQUFVLFFBQVE7QUFFcEIsVUFBTSxNQUFPLE9BQWU7QUFFNUIsVUFBTSxrQkFBa0IsT0FBTyxZQUFZO0FBQzNDLFFBQUksbUJBQW1CLGdCQUFnQixXQUFXLE1BQU0sR0FBRztBQUV6RCxhQUFPLGdCQUFnQixNQUFNLENBQUM7QUFBQSxJQUNoQztBQUVBLFFBQUksSUFBSSxPQUFPLElBQUksSUFBSSxNQUFNO0FBQzNCLGFBQU8sbUJBQW1CLElBQUksSUFBSSxJQUFJO0FBQUEsSUFDeEM7QUFDQSxXQUFPLG1CQUFtQjtBQUFBLEVBQzVCO0FBRUEsV0FBUSxZQUFlLFNBQWYsbUJBQXFCLGFBQVk7QUFDM0M7QUFLQSxTQUFTLG1CQUFtQixNQUFzQjtBQUNoRCxRQUFNLFVBQWtDO0FBQUEsSUFDdEMsUUFBUTtBQUFBLElBQ1IsUUFBUTtBQUFBLElBQ1IsUUFBUTtBQUFBLElBQ1IsU0FBUztBQUFBLElBQ1QsTUFBTTtBQUFBLElBQ04sV0FBVztB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
|