@dbx-tools/shared-model 0.9.166 → 0.9.173

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/index.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
 
5
5
  export const PACKAGE_IDENTIFIER = "@dbx-tools/shared-model";
6
- export const PACKAGE_VERSION = "0.9.166";
6
+ export const PACKAGE_VERSION = "0.9.173";
7
7
  export * as contracts from "./src/contracts.ts";
8
8
  export * as display from "./src/display.ts";
9
9
  export * as openaiChat from "./src/openai-chat.ts";
package/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export declare const PACKAGE_IDENTIFIER = "@dbx-tools/shared-model";
2
- export declare const PACKAGE_VERSION = "0.9.166";
2
+ export declare const PACKAGE_VERSION = "0.9.173";
3
3
  export * as contracts from "./src/contracts.ts";
4
4
  export * as display from "./src/display.ts";
5
5
  export * as openaiChat from "./src/openai-chat.ts";
package/lib/index.js CHANGED
@@ -2,11 +2,11 @@
2
2
  // Regenerated from the exporting modules in ./src.
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
  export const PACKAGE_IDENTIFIER = "@dbx-tools/shared-model";
5
- export const PACKAGE_VERSION = "0.9.166";
5
+ export const PACKAGE_VERSION = "0.9.173";
6
6
  export * as contracts from "./src/contracts.js";
7
7
  export * as display from "./src/display.js";
8
8
  export * as openaiChat from "./src/openai-chat.js";
9
9
  export { ModelClassSchema, ModelClass, ReasoningEffortSchema, ReasoningEffort, ReasoningEffortValues, ModelProfileSchema, ModelStatusSchema, ServingEndpointSummarySchema, ModelQuerySchema, RankedModelSchema, EndpointCapabilitiesSchema, FamilyClassSchema, ModelCapabilitiesSchema, ModelRateLimitsSchema, ModelMetadataSchema, ResolvedModelSchema, ResolveModelOptionsSchema, ScoredEndpointSchema, ResolveModelInputSchema, ResolvedModelSelectionSchema } from "./src/contracts.js";
10
10
  export { toModelDisplayName } from "./src/display.js";
11
11
  export { ChatRoleSchema, ChatContentPartSchema, ChatToolCallFunctionSchema, ChatToolCallSchema, ChatMessageSchema, UNSUPPORTED_CHAT_FIELDS, stripUnsupportedChatFields, ChatContentToTextOptionsSchema, chatContentParts, chatContentToText } from "./src/openai-chat.js";
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyx5QkFBeUIsQ0FBQztBQUM1RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxTQUFTLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssVUFBVSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLDRCQUE0QixFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLDBCQUEwQixFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLHlCQUF5QixFQUFFLG9CQUFvQixFQUFFLHVCQUF1QixFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFNWQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSwwQkFBMEIsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSwwQkFBMEIsRUFBRSw4QkFBOEIsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfSURFTlRJRklFUiA9IFwiQGRieC10b29scy9zaGFyZWQtbW9kZWxcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS4xNjZcIjtcbmV4cG9ydCAqIGFzIGNvbnRyYWN0cyBmcm9tIFwiLi9zcmMvY29udHJhY3RzLnRzXCI7XG5leHBvcnQgKiBhcyBkaXNwbGF5IGZyb20gXCIuL3NyYy9kaXNwbGF5LnRzXCI7XG5leHBvcnQgKiBhcyBvcGVuYWlDaGF0IGZyb20gXCIuL3NyYy9vcGVuYWktY2hhdC50c1wiO1xuZXhwb3J0IHsgTW9kZWxDbGFzc1NjaGVtYSwgTW9kZWxDbGFzcywgUmVhc29uaW5nRWZmb3J0U2NoZW1hLCBSZWFzb25pbmdFZmZvcnQsIFJlYXNvbmluZ0VmZm9ydFZhbHVlcywgTW9kZWxQcm9maWxlU2NoZW1hLCBNb2RlbFN0YXR1c1NjaGVtYSwgU2VydmluZ0VuZHBvaW50U3VtbWFyeVNjaGVtYSwgTW9kZWxRdWVyeVNjaGVtYSwgUmFua2VkTW9kZWxTY2hlbWEsIEVuZHBvaW50Q2FwYWJpbGl0aWVzU2NoZW1hLCBGYW1pbHlDbGFzc1NjaGVtYSwgTW9kZWxDYXBhYmlsaXRpZXNTY2hlbWEsIE1vZGVsUmF0ZUxpbWl0c1NjaGVtYSwgTW9kZWxNZXRhZGF0YVNjaGVtYSwgUmVzb2x2ZWRNb2RlbFNjaGVtYSwgUmVzb2x2ZU1vZGVsT3B0aW9uc1NjaGVtYSwgU2NvcmVkRW5kcG9pbnRTY2hlbWEsIFJlc29sdmVNb2RlbElucHV0U2NoZW1hLCBSZXNvbHZlZE1vZGVsU2VsZWN0aW9uU2NoZW1hIH0gZnJvbSBcIi4vc3JjL2NvbnRyYWN0cy50c1wiO1xuZXhwb3J0IHR5cGUgeyBNb2RlbFByb2ZpbGUsIE1vZGVsU3RhdHVzLCBTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5LCBNb2RlbFF1ZXJ5LCBSYW5rZWRNb2RlbCwgRW5kcG9pbnRDYXBhYmlsaXRpZXMsIEZhbWlseUNsYXNzLCBNb2RlbENhcGFiaWxpdGllcywgTW9kZWxSYXRlTGltaXRzLCBNb2RlbE1ldGFkYXRhLCBSZXNvbHZlZE1vZGVsLCBSZXNvbHZlTW9kZWxPcHRpb25zLCBTY29yZWRFbmRwb2ludCwgUmVzb2x2ZU1vZGVsSW5wdXQsIFJlc29sdmVkTW9kZWxTZWxlY3Rpb24gfSBmcm9tIFwiLi9zcmMvY29udHJhY3RzLnRzXCI7XG5leHBvcnQgeyB0b01vZGVsRGlzcGxheU5hbWUgfSBmcm9tIFwiLi9zcmMvZGlzcGxheS50c1wiO1xuZXhwb3J0IHsgQ2hhdFJvbGVTY2hlbWEsIENoYXRDb250ZW50UGFydFNjaGVtYSwgQ2hhdFRvb2xDYWxsRnVuY3Rpb25TY2hlbWEsIENoYXRUb29sQ2FsbFNjaGVtYSwgQ2hhdE1lc3NhZ2VTY2hlbWEsIFVOU1VQUE9SVEVEX0NIQVRfRklFTERTLCBzdHJpcFVuc3VwcG9ydGVkQ2hhdEZpZWxkcywgQ2hhdENvbnRlbnRUb1RleHRPcHRpb25zU2NoZW1hLCBjaGF0Q29udGVudFBhcnRzLCBjaGF0Q29udGVudFRvVGV4dCB9IGZyb20gXCIuL3NyYy9vcGVuYWktY2hhdC50c1wiO1xuZXhwb3J0IHR5cGUgeyBDaGF0Um9sZSwgQ2hhdENvbnRlbnRQYXJ0LCBDaGF0VG9vbENhbGxGdW5jdGlvbiwgQ2hhdFRvb2xDYWxsLCBDaGF0TWVzc2FnZSwgQ2hhdENvbnRlbnRUb1RleHRPcHRpb25zIH0gZnJvbSBcIi4vc3JjL29wZW5haS1jaGF0LnRzXCI7XG4iXX0=
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyx5QkFBeUIsQ0FBQztBQUM1RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxTQUFTLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssVUFBVSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLDRCQUE0QixFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLDBCQUEwQixFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLHlCQUF5QixFQUFFLG9CQUFvQixFQUFFLHVCQUF1QixFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFNWQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSwwQkFBMEIsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSwwQkFBMEIsRUFBRSw4QkFBOEIsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfSURFTlRJRklFUiA9IFwiQGRieC10b29scy9zaGFyZWQtbW9kZWxcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS4xNzNcIjtcbmV4cG9ydCAqIGFzIGNvbnRyYWN0cyBmcm9tIFwiLi9zcmMvY29udHJhY3RzLnRzXCI7XG5leHBvcnQgKiBhcyBkaXNwbGF5IGZyb20gXCIuL3NyYy9kaXNwbGF5LnRzXCI7XG5leHBvcnQgKiBhcyBvcGVuYWlDaGF0IGZyb20gXCIuL3NyYy9vcGVuYWktY2hhdC50c1wiO1xuZXhwb3J0IHsgTW9kZWxDbGFzc1NjaGVtYSwgTW9kZWxDbGFzcywgUmVhc29uaW5nRWZmb3J0U2NoZW1hLCBSZWFzb25pbmdFZmZvcnQsIFJlYXNvbmluZ0VmZm9ydFZhbHVlcywgTW9kZWxQcm9maWxlU2NoZW1hLCBNb2RlbFN0YXR1c1NjaGVtYSwgU2VydmluZ0VuZHBvaW50U3VtbWFyeVNjaGVtYSwgTW9kZWxRdWVyeVNjaGVtYSwgUmFua2VkTW9kZWxTY2hlbWEsIEVuZHBvaW50Q2FwYWJpbGl0aWVzU2NoZW1hLCBGYW1pbHlDbGFzc1NjaGVtYSwgTW9kZWxDYXBhYmlsaXRpZXNTY2hlbWEsIE1vZGVsUmF0ZUxpbWl0c1NjaGVtYSwgTW9kZWxNZXRhZGF0YVNjaGVtYSwgUmVzb2x2ZWRNb2RlbFNjaGVtYSwgUmVzb2x2ZU1vZGVsT3B0aW9uc1NjaGVtYSwgU2NvcmVkRW5kcG9pbnRTY2hlbWEsIFJlc29sdmVNb2RlbElucHV0U2NoZW1hLCBSZXNvbHZlZE1vZGVsU2VsZWN0aW9uU2NoZW1hIH0gZnJvbSBcIi4vc3JjL2NvbnRyYWN0cy50c1wiO1xuZXhwb3J0IHR5cGUgeyBNb2RlbFByb2ZpbGUsIE1vZGVsU3RhdHVzLCBTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5LCBNb2RlbFF1ZXJ5LCBSYW5rZWRNb2RlbCwgRW5kcG9pbnRDYXBhYmlsaXRpZXMsIEZhbWlseUNsYXNzLCBNb2RlbENhcGFiaWxpdGllcywgTW9kZWxSYXRlTGltaXRzLCBNb2RlbE1ldGFkYXRhLCBSZXNvbHZlZE1vZGVsLCBSZXNvbHZlTW9kZWxPcHRpb25zLCBTY29yZWRFbmRwb2ludCwgUmVzb2x2ZU1vZGVsSW5wdXQsIFJlc29sdmVkTW9kZWxTZWxlY3Rpb24gfSBmcm9tIFwiLi9zcmMvY29udHJhY3RzLnRzXCI7XG5leHBvcnQgeyB0b01vZGVsRGlzcGxheU5hbWUgfSBmcm9tIFwiLi9zcmMvZGlzcGxheS50c1wiO1xuZXhwb3J0IHsgQ2hhdFJvbGVTY2hlbWEsIENoYXRDb250ZW50UGFydFNjaGVtYSwgQ2hhdFRvb2xDYWxsRnVuY3Rpb25TY2hlbWEsIENoYXRUb29sQ2FsbFNjaGVtYSwgQ2hhdE1lc3NhZ2VTY2hlbWEsIFVOU1VQUE9SVEVEX0NIQVRfRklFTERTLCBzdHJpcFVuc3VwcG9ydGVkQ2hhdEZpZWxkcywgQ2hhdENvbnRlbnRUb1RleHRPcHRpb25zU2NoZW1hLCBjaGF0Q29udGVudFBhcnRzLCBjaGF0Q29udGVudFRvVGV4dCB9IGZyb20gXCIuL3NyYy9vcGVuYWktY2hhdC50c1wiO1xuZXhwb3J0IHR5cGUgeyBDaGF0Um9sZSwgQ2hhdENvbnRlbnRQYXJ0LCBDaGF0VG9vbENhbGxGdW5jdGlvbiwgQ2hhdFRvb2xDYWxsLCBDaGF0TWVzc2FnZSwgQ2hhdENvbnRlbnRUb1RleHRPcHRpb25zIH0gZnJvbSBcIi4vc3JjL29wZW5haS1jaGF0LnRzXCI7XG4iXX0=
@@ -192,6 +192,10 @@ export declare const ModelCapabilitiesSchema: z.ZodObject<{
192
192
  imageInput: z.ZodBoolean;
193
193
  applyPatch: z.ZodBoolean;
194
194
  webSearch: z.ZodBoolean;
195
+ reasoning: z.ZodBoolean;
196
+ tools: z.ZodBoolean;
197
+ structuredOutput: z.ZodBoolean;
198
+ temperature: z.ZodBoolean;
195
199
  }, z.core.$strip>;
196
200
  export type ModelCapabilities = z.infer<typeof ModelCapabilitiesSchema>;
197
201
  export declare const ModelRateLimitsSchema: z.ZodObject<{
@@ -209,6 +213,10 @@ export declare const ModelMetadataSchema: z.ZodObject<{
209
213
  imageInput: z.ZodBoolean;
210
214
  applyPatch: z.ZodBoolean;
211
215
  webSearch: z.ZodBoolean;
216
+ reasoning: z.ZodBoolean;
217
+ tools: z.ZodBoolean;
218
+ structuredOutput: z.ZodBoolean;
219
+ temperature: z.ZodBoolean;
212
220
  }, z.core.$strip>;
213
221
  rateLimits: z.ZodOptional<z.ZodObject<{
214
222
  inputTokensPerMinute: z.ZodNullable<z.ZodNumber>;
@@ -161,8 +161,12 @@ export const ModelCapabilitiesSchema = z
161
161
  imageInput: z.boolean().describe("True when the model accepts image inputs."),
162
162
  applyPatch: z.boolean().describe("True when the model supports the apply-patch tool."),
163
163
  webSearch: z.boolean().describe("True when the model supports web search."),
164
+ reasoning: z.boolean().describe("True when the model supports explicit reasoning controls."),
165
+ tools: z.boolean().describe("True when the model supports tool calling."),
166
+ structuredOutput: z.boolean().describe("True when the model supports structured output."),
167
+ temperature: z.boolean().describe("True when the model accepts temperature sampling."),
164
168
  })
165
- .describe("Documented capabilities resolved for one model identity.");
169
+ .describe("Published capabilities resolved for one model identity.");
166
170
  export const ModelRateLimitsSchema = z
167
171
  .object({
168
172
  inputTokensPerMinute: z
@@ -188,7 +192,7 @@ export const ModelRateLimitsSchema = z
188
192
  export const ModelMetadataSchema = z
189
193
  .object({
190
194
  status: ModelStatusSchema.describe("Retirement status for this model identity."),
191
- capabilities: ModelCapabilitiesSchema.describe("Documented capabilities for this model identity."),
195
+ capabilities: ModelCapabilitiesSchema.describe("Published capabilities for this model identity."),
192
196
  rateLimits: ModelRateLimitsSchema.optional().describe("Published rate limits when available."),
193
197
  })
194
198
  .describe("Combined retirement, capability, and rate-limit metadata.");
@@ -255,4 +259,4 @@ export const ResolvedModelSelectionSchema = z
255
259
  .describe("Policy branch that selected this model."),
256
260
  })
257
261
  .describe("Selected model identifier and the policy branch that selected it.");
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQztLQUM5QixJQUFJLENBQUMsQ0FBQyxlQUFlLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNsRSxRQUFRLENBQUMsMERBQTBELENBQUMsQ0FBQztBQUl4RSx5REFBeUQ7QUFDekQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLFlBQVksRUFBRSxlQUFlO0lBQzdCLFlBQVksRUFBRSxlQUFlO0lBQzdCLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFNBQVMsRUFBRSxXQUFXO0NBQ3VCLENBQUM7QUFFaEQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQztLQUNuQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztLQUNsRSxRQUFRLENBQUMsZ0VBQWdFLENBQUMsQ0FBQztBQUk5RSw4REFBOEQ7QUFDOUQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzdCLElBQUksRUFBRSxNQUFNO0lBQ1osT0FBTyxFQUFFLFNBQVM7SUFDbEIsR0FBRyxFQUFFLEtBQUs7SUFDVixNQUFNLEVBQUUsUUFBUTtJQUNoQixJQUFJLEVBQUUsTUFBTTtJQUNaLEtBQUssRUFBRSxPQUFPO0lBQ2QsR0FBRyxFQUFFLEtBQUs7Q0FDd0MsQ0FBQztBQUVyRCxnRUFBZ0U7QUFDaEUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsZUFBZSxDQUFDO0FBRXJELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENB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QUFDO0lBQ25FLFFBQVEsRUFBRSxDQUFDO1NBQ1IsT0FBTyxFQUFFO1NBQ1QsUUFBUSxFQUFFO1NBQ1YsUUFBUSxDQUFDLHlEQUF5RCxDQUFDO0NBQ3ZFLENBQUM7S0FDRCxRQUFRLENBQUMsMkRBQTJELENBQUMsQ0FBQztBQUl6RSxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxDQUFDO0tBQzFDLE1BQU0sQ0FBQztJQUNOLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLHVDQUF1QyxDQUFDO0lBQ3JFLE1BQU0sRUFBRSxDQUFDO1NBQ04sSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDdEQsUUFBUSxDQUFDLHlDQUF5QyxDQUFDO0NBQ3ZELENBQUM7S0FDRCxRQUFRLENBQUMsbUVBQW1FLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQnJvd3Nlci1zYWZlIFpvZCBtb2RlbCBjb250cmFjdHMgc2hhcmVkIGFjcm9zcyBkYngtdG9vbHMgcnVudGltZXMuXG4gKlxuICogVGhpcyBtb2R1bGUgaXMgdGhlIHNpbmdsZSBvd25lciBmb3IgbW9kZWwgd2lyZSB2YWxpZGF0aW9uIGFuZCBUeXBlU2NyaXB0XG4gKiB0eXBlcy4gRGVmaW5lIHNjaGVtYXMgaGVyZSBhbmQgZGVyaXZlIGV4cG9ydGVkIHR5cGVzIHdpdGggYHouaW5mZXJgOyBkbyBub3RcbiAqIG1haW50YWluIHBhcmFsbGVsIGludGVyZmFjZXMgb3IgZ2VuZXJhdGVkIHNjaGVtYSBtaXJyb3JzLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5leHBvcnQgY29uc3QgTW9kZWxDbGFzc1NjaGVtYSA9IHpcbiAgLmVudW0oW1wiY2hhdC10aGlua2luZ1wiLCBcImNoYXQtYmFsYW5jZWRcIiwgXCJjaGF0LWZhc3RcIiwgXCJlbWJlZGRpbmdcIl0pXG4gIC5kZXNjcmliZShcIkludGVudC1vcmllbnRlZCBEYXRhYnJpY2tzIE1vZGVsIFNlcnZpbmcgZW5kcG9pbnQgY2xhc3MuXCIpO1xuXG5leHBvcnQgdHlwZSBNb2RlbENsYXNzID0gei5pbmZlcjx0eXBlb2YgTW9kZWxDbGFzc1NjaGVtYT47XG5cbi8qKiBOYW1lZCBydW50aW1lIHZhbHVlcyBmb3IgdGhlIG1vZGVsIGNsYXNzIGNvbnRyYWN0LiAqL1xuZXhwb3J0IGNvbnN0IE1vZGVsQ2xhc3MgPSB7XG4gIENoYXRUaGlua2luZzogXCJjaGF0LXRoaW5raW5nXCIsXG4gIENoYXRCYWxhbmNlZDogXCJjaGF0LWJhbGFuY2VkXCIsXG4gIENoYXRGYXN0OiBcImNoYXQtZmFzdFwiLFxuICBFbWJlZGRpbmc6IFwiZW1iZWRkaW5nXCIsXG59IGFzIGNvbnN0IHNhdGlzZmllcyBSZWNvcmQ8c3RyaW5nLCBNb2RlbENsYXNzPjtcblxuZXhwb3J0IGNvbnN0IFJlYXNvbmluZ0VmZm9ydFNjaGVtYSA9IHpcbiAgLmVudW0oW1wibm9uZVwiLCBcIm1pbmltYWxcIiwgXCJsb3dcIiwgXCJtZWRpdW1cIiwgXCJoaWdoXCIsIFwieGhpZ2hcIiwgXCJtYXhcIl0pXG4gIC5kZXNjcmliZShcIlJlYXNvbmluZyBlZmZvcnQgdmFsdWUgYWNjZXB0ZWQgYnkgY29tcGF0aWJsZSBtb2RlbCBlbmRwb2ludHMuXCIpO1xuXG5leHBvcnQgdHlwZSBSZWFzb25pbmdFZmZvcnQgPSB6LmluZmVyPHR5cGVvZiBSZWFzb25pbmdFZmZvcnRTY2hlbWE+O1xuXG4vKiogTmFtZWQgcnVudGltZSB2YWx1ZXMgZm9yIHRoZSByZWFzb25pbmcgZWZmb3J0IGNvbnRyYWN0LiAqL1xuZXhwb3J0IGNvbnN0IFJlYXNvbmluZ0VmZm9ydCA9IHtcbiAgTm9uZTogXCJub25lXCIsXG4gIE1pbmltYWw6IFwibWluaW1hbFwiLFxuICBMb3c6IFwibG93XCIsXG4gIE1lZGl1bTogXCJtZWRpdW1cIixcbiAgSGlnaDogXCJoaWdoXCIsXG4gIFhoaWdoOiBcInhoaWdoXCIsXG4gIE1heDogXCJtYXhcIixcbn0gYXMgY29uc3Qgc2F0aXNmaWVzIFJlY29yZDxzdHJpbmcsIFJlYXNvbmluZ0VmZm9ydD47XG5cbi8qKiBFeGlzdGluZyBwdWJsaWMgbmFtZSBmb3IgcmVhc29uaW5nIGVmZm9ydCBydW50aW1lIHZhbHVlcy4gKi9cbmV4cG9ydCBjb25zdCBSZWFzb25pbmdFZmZvcnRWYWx1ZXMgPSBSZWFzb25pbmdFZmZvcnQ7XG5cbmV4cG9ydCBjb25zdCBNb2RlbFByb2ZpbGVTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHF1YWxpdHk6IHoubnVtYmVyKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlJlbGF0aXZlIHF1YWxpdHkgc2NvcmUgZm9yIHJhbmtpbmcuXCIpLFxuICAgIHNwZWVkOiB6Lm51bWJlcigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJSZWxhdGl2ZSBzcGVlZCBzY29yZSBmb3IgcmFua2luZy5cIiksXG4gICAgY29zdDogei5udW1iZXIoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUmVsYXRpdmUgY29zdCBzY29yZSBmb3IgcmFua2luZy5cIiksXG4gIH0pXG4gIC5kZXNjcmliZShcIlJlbGF0aXZlIHF1YWxpdHksIHNwZWVkLCBhbmQgY29zdCBzY29yZXMgZm9yIGFuIGVuZHBvaW50LlwiKTtcblxuZXhwb3J0IHR5cGUgTW9kZWxQcm9maWxlID0gei5pbmZlcjx0eXBlb2YgTW9kZWxQcm9maWxlU2NoZW1hPjtcblxuZXhwb3J0IGNvbnN0IE1vZGVsU3RhdHVzU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBkZXByZWNhdGVkOiB6XG4gICAgICAuYm9vbGVhbigpXG4gICAgICAuZGVmYXVsdChmYWxzZSlcbiAgICAgIC5kZXNjcmliZShcIlRydWUgd2hlbiB0aGUgbW9kZWwgc2hvdWxkIG5vIGxvbmdlciBiZSBzZWxlY3RlZCBieSBkZWZhdWx0LlwiKSxcbiAgfSlcbiAgLmRlc2NyaWJlKFwiTW9kZWwgcmV0aXJlbWVudCBzdGF0dXMuXCIpO1xuXG5leHBvcnQgdHlwZSBNb2RlbFN0YXR1cyA9IHouaW5mZXI8dHlwZW9mIE1vZGVsU3RhdHVzU2NoZW1hPjtcblxuZXhwb3J0IGNvbnN0IFNlcnZpbmdFbmRwb2ludFN1bW1hcnlTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIG5hbWU6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJTZXJ2aW5nIGVuZHBvaW50IGludm9rZSBpZC5cIiksXG4gICAgZGlzcGxheU5hbWU6IHpcbiAgICAgIC5zdHJpbmcoKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIkh1bWFuLXJlYWRhYmxlIGxhYmVsIHdoZW4gdGhlIHdvcmtzcGFjZSBwcm92aWRlcyBvbmUuXCIpLFxuICAgIGZhbWlseTogelxuICAgICAgLnN0cmluZygpXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiRGV0ZWN0ZWQgbW9kZWwgZmFtaWx5IHVzZWQgZm9yIGdyb3VwaW5nIGFuZCBzb3J0IG9yZGVyLlwiKSxcbiAgICB0YXNrOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJEYXRhYnJpY2tzIHNlcnZpbmcgdGFzayByZXBvcnRlZCBmb3IgdGhlIGVuZHBvaW50LlwiKSxcbiAgICBzdGF0ZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiU2VydmluZyBlbmRwb2ludCBsaWZlY3ljbGUgc3RhdGUuXCIpLFxuICAgIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJXb3Jrc3BhY2UtcHJvdmlkZWQgZW5kcG9pbnQgZGVzY3JpcHRpb24uXCIpLFxuICAgIHN1cHBvcnRzVG9vbHM6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUcnVlIHdoZW4gdGhlIGVuZHBvaW50IGFjY2VwdHMgdG9vbCBjYWxscy5cIiksXG4gICAgcHJvZmlsZTogTW9kZWxQcm9maWxlU2NoZW1hLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJSZWxhdGl2ZSBxdWFsaXR5LCBzcGVlZCwgYW5kIGNvc3Qgc2NvcmVzLlwiKSxcbiAgICBjbGFzczogTW9kZWxDbGFzc1NjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiSW50ZW50LW9yaWVudGVkIGNsYXNzIGFzc2lnbmVkIHRvIHRoaXMgZW5kcG9pbnQuXCIpLFxuICAgIHNlcnZpY2VOYW1lczogelxuICAgICAgLnJlY29yZCh6LnN0cmluZygpLCB6LnN0cmluZygpKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIlByb3ZpZGVyLXNwZWNpZmljIHNlcnZpY2UgbmFtZSBhbGlhc2VzIGtleWVkIGJ5IHByb3RvY29sLlwiKSxcbiAgICBtb2RlbFNlcnZpY2VOYW1lOiB6XG4gICAgICAuc3RyaW5nKClcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAuZGVzY3JpYmUoXCJDYW5vbmljYWwgbW9kZWwtc2VydmljZSBuYW1lIHVzZWQgZm9yIG1ldGFkYXRhIGxvb2t1cC5cIiksXG4gICAgcmVhc29uaW5nRWZmb3J0czogelxuICAgICAgLmFycmF5KFJlYXNvbmluZ0VmZm9ydFNjaGVtYSlcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAuZGVzY3JpYmUoXCJSZWFzb25pbmcgZWZmb3J0IHZhbHVlcyB0aGlzIGVuZHBvaW50IGFjY2VwdHMuXCIpLFxuICAgIHN0YXR1czogTW9kZWxTdGF0dXNTY2hlbWEub3B0aW9uYWwoKS5kZXNjcmliZShcIlJldGlyZW1lbnQgc3RhdHVzIGZvciB0aGlzIGVuZHBvaW50LlwiKSxcbiAgICBkaW1lbnNpb246IHpcbiAgICAgIC5udW1iZXIoKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIkVtYmVkZGluZyB2ZWN0b3Igc2l6ZSB3aGVuIHRoZSBlbmRwb2ludCBpcyBhbiBlbWJlZGRpbmcgbW9kZWwuXCIpLFxuICB9KVxuICAuZGVzY3JpYmUoXCJCcm93c2VyLXNhZmUgbm9ybWFsaXplZCBNb2RlbCBTZXJ2aW5nIGVuZHBvaW50IG1ldGFkYXRhLlwiKTtcblxuZXhwb3J0IHR5cGUgU2VydmluZ0VuZHBvaW50U3VtbWFyeSA9IHouaW5mZXI8dHlwZW9mIFNlcnZpbmdFbmRwb2ludFN1bW1hcnlTY2hlbWE+O1xuXG5leHBvcnQgY29uc3QgTW9kZWxRdWVyeVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRXhhY3Qgc2VydmluZyBlbmRwb2ludCBuYW1lIHRvIHJldGFpbi5cIiksXG4gICAgc2VhcmNoOiB6XG4gICAgICAuc3RyaW5nKClcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAuZGVzY3JpYmUoXCJGcmVlLXRleHQgcXVlcnkgbWF0Y2hlZCBhZ2FpbnN0IGVuZHBvaW50IG5hbWVzIGFuZCBsYWJlbHMuXCIpLFxuICAgIG1vZGVsQ2xhc3M6IE1vZGVsQ2xhc3NTY2hlbWEub3B0aW9uYWwoKS5kZXNjcmliZShcbiAgICAgIFwiUmVzdHJpY3QgcmVzdWx0cyB0byB0aGlzIGludGVudC1vcmllbnRlZCBjbGFzcy5cIixcbiAgICApLFxuICAgIHJlcXVpcmVzVG9vbHM6IHpcbiAgICAgIC5ib29sZWFuKClcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAuZGVzY3JpYmUoXCJXaGVuIHRydWUsIG9ubHkgZW5kcG9pbnRzIHRoYXQgYWNjZXB0IHRvb2xzIGFyZSByZXR1cm5lZC5cIiksXG4gICAgdGFzazogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRXhhY3QgRGF0YWJyaWNrcyBzZXJ2aW5nIHRhc2sgdG8gcmV0YWluLlwiKSxcbiAgICBkaW1lbnNpb246IHpcbiAgICAgIC5udW1iZXIoKVxuICAgICAgLmludCgpXG4gICAgICAucG9zaXRpdmUoKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIkV4YWN0IGVtYmVkZGluZyB2ZWN0b3IgZGltZW5zaW9uIHRvIHJldGFpbi5cIiksXG4gICAgbWluRGltZW5zaW9uOiB6XG4gICAgICAubnVtYmVyKClcbiAgICAgIC5pbnQoKVxuICAgICAgLnBvc2l0aXZlKClcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAuZGVzY3JpYmUoXCJNaW5pbXVtIGVtYmVkZGluZyB2ZWN0b3IgZGltZW5zaW9uIHRvIHJldGFpbi5cIiksXG4gICAgbWF4RGltZW5zaW9uOiB6XG4gICAgICAubnVtYmVyKClcbiAgICAgIC5pbnQoKVxuICAgICAgLnBvc2l0aXZlKClcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAuZGVzY3JpYmUoXCJNYXhpbXVtIGVtYmVkZGluZyB2ZWN0b3IgZGltZW5zaW9uIHRvIHJldGFpbi5cIiksXG4gICAgcmVhc29uaW5nRWZmb3J0OiBSZWFzb25pbmdFZmZvcnRTY2hlbWEub3B0aW9uYWwoKS5kZXNjcmliZShcbiAgICAgIFwiUmVhc29uaW5nIGVmZm9ydCB0aGF0IGEgcmV0YWluZWQgZW5kcG9pbnQgbXVzdCBhY2NlcHQuXCIsXG4gICAgKSxcbiAgICBpbmNsdWRlRGVwcmVjYXRlZDogelxuICAgICAgLmJvb2xlYW4oKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIldoZW4gdHJ1ZSwgcmV0aXJlZCBlbmRwb2ludHMgcmVtYWluIGluIHRoZSByZXN1bHQgc2V0LlwiKSxcbiAgICBsaW1pdDogelxuICAgICAgLm51bWJlcigpXG4gICAgICAuaW50KClcbiAgICAgIC5taW4oMSlcbiAgICAgIC5tYXgoNTApXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiTWF4aW11bSBudW1iZXIgb2YgcmFua2VkIHJlc3VsdHMgdG8gcmV0dXJuLlwiKSxcbiAgICB0aHJlc2hvbGQ6IHpcbiAgICAgIC5udW1iZXIoKVxuICAgICAgLm1pbigwKVxuICAgICAgLm1heCgxKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIk1pbmltdW0gZnV6enktbWF0Y2ggc2NvcmUgaW4gdGhlIHJhbmdlIDAgdG8gMS5cIiksXG4gIH0pXG4gIC5kZXNjcmliZShcIkJyb3dzZXItc2FmZSBtb2RlbCBjYXRhbG9ndWUgc2VhcmNoIGFuZCByYW5raW5nIGNvbnRyb2xzLlwiKTtcblxuZXhwb3J0IHR5cGUgTW9kZWxRdWVyeSA9IHouaW5mZXI8dHlwZW9mIE1vZGVsUXVlcnlTY2hlbWE+O1xuXG5leHBvcnQgY29uc3QgUmFua2VkTW9kZWxTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGVuZHBvaW50OiBTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5U2NoZW1hLmRlc2NyaWJlKFwiTm9ybWFsaXplZCBlbmRwb2ludCBjaG9zZW4gZm9yIHRoaXMgcmVzdWx0LlwiKSxcbiAgICBtb2RlbENsYXNzOiBNb2RlbENsYXNzU2NoZW1hLmRlc2NyaWJlKFwiQ2xhc3MgdXNlZCB0byByYW5rIHRoaXMgcmVzdWx0LlwiKSxcbiAgICBzY29yZTogei5udW1iZXIoKS5taW4oMCkubWF4KDEpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJGdXp6eS1tYXRjaCBzY29yZSBpbiB0aGUgcmFuZ2UgMCB0byAxLlwiKSxcbiAgfSlcbiAgLmRlc2NyaWJlKFwiT25lIHJhbmtlZCBtb2RlbC1zZWFyY2ggcmVzdWx0LlwiKTtcblxuZXhwb3J0IHR5cGUgUmFua2VkTW9kZWwgPSB6LmluZmVyPHR5cGVvZiBSYW5rZWRNb2RlbFNjaGVtYT47XG5cbmV4cG9ydCBjb25zdCBFbmRwb2ludENhcGFiaWxpdGllc1NjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgY2hhdDogei5ib29sZWFuKCkuZGVzY3JpYmUoXCJUcnVlIHdoZW4gdGhlIGVuZHBvaW50IGNhbiBzZXJ2ZSBjaGF0IGNvbXBsZXRpb25zLlwiKSxcbiAgICBlbWJlZGRpbmc6IHouYm9vbGVhbigpLmRlc2NyaWJlKFwiVHJ1ZSB3aGVuIHRoZSBlbmRwb2ludCBjYW4gc2VydmUgZW1iZWRkaW5ncy5cIiksXG4gICAgdG9vbHM6IHouYm9vbGVhbigpLmRlc2NyaWJlKFwiVHJ1ZSB3aGVuIHRoZSBlbmRwb2ludCBhY2NlcHRzIHRvb2wgY2FsbHMuXCIpLFxuICB9KVxuICAuZGVzY3JpYmUoXCJDYXBhYmlsaXRpZXMgZGVyaXZlZCBmcm9tIG9uZSBub3JtYWxpemVkIHNlcnZpbmcgZW5kcG9pbnQuXCIpO1xuXG5leHBvcnQgdHlwZSBFbmRwb2ludENhcGFiaWxpdGllcyA9IHouaW5mZXI8dHlwZW9mIEVuZHBvaW50Q2FwYWJpbGl0aWVzU2NoZW1hPjtcblxuZXhwb3J0IGNvbnN0IEZhbWlseUNsYXNzU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBjbGFzczogTW9kZWxDbGFzc1NjaGVtYS5kZXNjcmliZShcIkZhbGxiYWNrIGNsYXNzIGZvciBhbiB1bnNjb3JlZCByZWNvZ25pemVkIGZhbWlseS5cIiksXG4gICAgcmFuazogei5udW1iZXIoKS5taW4oMCkuZGVzY3JpYmUoXCJSZWxhdGl2ZSByYW5rIGFtb25nIGZhbWlseSBmYWxsYmFja3MsIHN0YXJ0aW5nIGF0IDAuXCIpLFxuICB9KVxuICAuZGVzY3JpYmUoXCJGYWxsYmFjayBjbGFzcyBhbmQgcmFuayBmb3IgYW4gdW5zY29yZWQgcmVjb2duaXplZCBtb2RlbCBmYW1pbHkuXCIpO1xuXG5leHBvcnQgdHlwZSBGYW1pbHlDbGFzcyA9IHouaW5mZXI8dHlwZW9mIEZhbWlseUNsYXNzU2NoZW1hPjtcblxuZXhwb3J0IGNvbnN0IE1vZGVsQ2FwYWJpbGl0aWVzU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICByZXNwb25zZXM6IHouYm9vbGVhbigpLmRlc2NyaWJlKFwiVHJ1ZSB3aGVuIHRoZSBtb2RlbCBzdXBwb3J0cyB0aGUgUmVzcG9uc2VzIEFQSS5cIiksXG4gICAgaW1hZ2VJbnB1dDogei5ib29sZWFuKCkuZGVzY3JpYmUoXCJUcnVlIHdoZW4gdGhlIG1vZGVsIGFjY2VwdHMgaW1hZ2UgaW5wdXRzLlwiKSxcbiAgICBhcHBseVBhdGNoOiB6LmJvb2xlYW4oKS5kZXNjcmliZShcIlRydWUgd2hlbiB0aGUgbW9kZWwgc3VwcG9ydHMgdGhlIGFwcGx5LXBhdGNoIHRvb2wuXCIpLFxuICAgIHdlYlNlYXJjaDogei5ib29sZWFuKCkuZGVzY3JpYmUoXCJUcnVlIHdoZW4gdGhlIG1vZGVsIHN1cHBvcnRzIHdlYiBzZWFyY2guXCIpLFxuICB9KVxuICAuZGVzY3JpYmUoXCJEb2N1bWVudGVkIGNhcGFiaWxpdGllcyByZXNvbHZlZCBmb3Igb25lIG1vZGVsIGlkZW50aXR5LlwiKTtcblxuZXhwb3J0IHR5cGUgTW9kZWxDYXBhYmlsaXRpZXMgPSB6LmluZmVyPHR5cGVvZiBNb2RlbENhcGFiaWxpdGllc1NjaGVtYT47XG5cbmV4cG9ydCBjb25zdCBNb2RlbFJhdGVMaW1pdHNTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGlucHV0VG9rZW5zUGVyTWludXRlOiB6XG4gICAgICAubnVtYmVyKClcbiAgICAgIC5pbnQoKVxuICAgICAgLm1pbigwKVxuICAgICAgLm51bGxhYmxlKClcbiAgICAgIC5kZXNjcmliZShcIlB1Ymxpc2hlZCBpbnB1dCB0b2tlbnMgcGVyIG1pbnV0ZSwgb3IgbnVsbCB3aGVuIHVucHVibGlzaGVkLlwiKSxcbiAgICBvdXRwdXRUb2tlbnNQZXJNaW51dGU6IHpcbiAgICAgIC5udW1iZXIoKVxuICAgICAgLmludCgpXG4gICAgICAubWluKDApXG4gICAgICAubnVsbGFibGUoKVxuICAgICAgLmRlc2NyaWJlKFwiUHVibGlzaGVkIG91dHB1dCB0b2tlbnMgcGVyIG1pbnV0ZSwgb3IgbnVsbCB3aGVuIHVucHVibGlzaGVkLlwiKSxcbiAgICBxdWVyaWVzUGVySG91cjogelxuICAgICAgLm51bWJlcigpXG4gICAgICAuaW50KClcbiAgICAgIC5taW4oMClcbiAgICAgIC5udWxsYWJsZSgpXG4gICAgICAuZGVzY3JpYmUoXCJQdWJsaXNoZWQgcXVlcmllcyBwZXIgaG91ciwgb3IgbnVsbCB3aGVuIHVucHVibGlzaGVkLlwiKSxcbiAgfSlcbiAgLmRlc2NyaWJlKFwiUHVibGlzaGVkIHBheS1wZXItdG9rZW4gbGltaXRzIGZvciBvbmUgbW9kZWwuXCIpO1xuXG5leHBvcnQgdHlwZSBNb2RlbFJhdGVMaW1pdHMgPSB6LmluZmVyPHR5cGVvZiBNb2RlbFJhdGVMaW1pdHNTY2hlbWE+O1xuXG5leHBvcnQgY29uc3QgTW9kZWxNZXRhZGF0YVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgc3RhdHVzOiBNb2RlbFN0YXR1c1NjaGVtYS5kZXNjcmliZShcIlJldGlyZW1lbnQgc3RhdHVzIGZvciB0aGlzIG1vZGVsIGlkZW50aXR5LlwiKSxcbiAgICBjYXBhYmlsaXRpZXM6IE1vZGVsQ2FwYWJpbGl0aWVzU2NoZW1hLmRlc2NyaWJlKFxuICAgICAgXCJEb2N1bWVudGVkIGNhcGFiaWxpdGllcyBmb3IgdGhpcyBtb2RlbCBpZGVudGl0eS5cIixcbiAgICApLFxuICAgIHJhdGVMaW1pdHM6IE1vZGVsUmF0ZUxpbWl0c1NjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUHVibGlzaGVkIHJhdGUgbGltaXRzIHdoZW4gYXZhaWxhYmxlLlwiKSxcbiAgfSlcbiAgLmRlc2NyaWJlKFwiQ29tYmluZWQgcmV0aXJlbWVudCwgY2FwYWJpbGl0eSwgYW5kIHJhdGUtbGltaXQgbWV0YWRhdGEuXCIpO1xuXG5leHBvcnQgdHlwZSBNb2RlbE1ldGFkYXRhID0gei5pbmZlcjx0eXBlb2YgTW9kZWxNZXRhZGF0YVNjaGVtYT47XG5cbmV4cG9ydCBjb25zdCBSZXNvbHZlZE1vZGVsU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBtb2RlbElkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiUmVzb2x2ZWQgc2VydmluZyBlbmRwb2ludCBvciBtb2RlbCBpZGVudGlmaWVyLlwiKSxcbiAgICBtYXRjaGVkOiB6LmJvb2xlYW4oKS5kZXNjcmliZShcIlRydWUgd2hlbiB0aGUgaWRlbnRpZmllciBtYXRjaGVkIGEgY2F0YWxvZ3VlIGVudHJ5LlwiKSxcbiAgICBzY29yZTogei5udW1iZXIoKS5taW4oMCkubWF4KDEpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJGdXp6eS1tYXRjaCBzY29yZSBpbiB0aGUgcmFuZ2UgMCB0byAxLlwiKSxcbiAgfSlcbiAgLmRlc2NyaWJlKFwiUmVzdWx0IG9mIHJlc29sdmluZyBhIGZ1enp5IG1vZGVsIGlkZW50aWZpZXIuXCIpO1xuXG5leHBvcnQgdHlwZSBSZXNvbHZlZE1vZGVsID0gei5pbmZlcjx0eXBlb2YgUmVzb2x2ZWRNb2RlbFNjaGVtYT47XG5cbmV4cG9ydCBjb25zdCBSZXNvbHZlTW9kZWxPcHRpb25zU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICB0aHJlc2hvbGQ6IHpcbiAgICAgIC5udW1iZXIoKVxuICAgICAgLm1pbigwKVxuICAgICAgLm1heCgxKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIk1pbmltdW0gZnV6enktbWF0Y2ggc2NvcmUgaW4gdGhlIHJhbmdlIDAgdG8gMS5cIiksXG4gICAgcmVxdWlyZXNUb29sczogelxuICAgICAgLmJvb2xlYW4oKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIldoZW4gdHJ1ZSwgb25seSB0b29sLWNhcGFibGUgZW5kcG9pbnRzIG1heSBtYXRjaC5cIiksXG4gIH0pXG4gIC5kZXNjcmliZShcIlB1cmUgY29udHJvbHMgZm9yIGZ1enp5IGVuZHBvaW50IHJlc29sdXRpb24uXCIpO1xuXG5leHBvcnQgdHlwZSBSZXNvbHZlTW9kZWxPcHRpb25zID0gei5pbmZlcjx0eXBlb2YgUmVzb2x2ZU1vZGVsT3B0aW9uc1NjaGVtYT47XG5cbmV4cG9ydCBjb25zdCBTY29yZWRFbmRwb2ludFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgZW5kcG9pbnQ6IFNlcnZpbmdFbmRwb2ludFN1bW1hcnlTY2hlbWEuZGVzY3JpYmUoXCJDYW5kaWRhdGUgc2VydmluZyBlbmRwb2ludC5cIiksXG4gICAgc2NvcmU6IHoubnVtYmVyKCkubWluKDApLm1heCgxKS5kZXNjcmliZShcIkZ1enp5LW1hdGNoIGRpc3RhbmNlIGluIHRoZSByYW5nZSAwIHRvIDEuXCIpLFxuICB9KVxuICAuZGVzY3JpYmUoXCJPbmUgZW5kcG9pbnQgcGFpcmVkIHdpdGggaXRzIGZ1enp5LW1hdGNoIGRpc3RhbmNlLlwiKTtcblxuZXhwb3J0IHR5cGUgU2NvcmVkRW5kcG9pbnQgPSB6LmluZmVyPHR5cGVvZiBTY29yZWRFbmRwb2ludFNjaGVtYT47XG5cbmV4cG9ydCBjb25zdCBSZXNvbHZlTW9kZWxJbnB1dFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgZXhwbGljaXQ6IHpcbiAgICAgIC5zdHJpbmcoKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIkV4YWN0IG1vZGVsIGlkIG9yIGRpc3BsYXkgbmFtZSBzdXBwbGllZCBieSB0aGUgY2FsbGVyLlwiKSxcbiAgICBmdXp6eTogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIldoZW4gdHJ1ZSwgdW5tYXRjaGVkIGV4cGxpY2l0IHZhbHVlcyBtYXkgZnV6enktbWF0Y2guXCIpLFxuICAgIHRocmVzaG9sZDogelxuICAgICAgLm51bWJlcigpXG4gICAgICAubWluKDApXG4gICAgICAubWF4KDEpXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiTWluaW11bSBmdXp6eS1tYXRjaCBzY29yZSBpbiB0aGUgcmFuZ2UgMCB0byAxLlwiKSxcbiAgICByZXF1aXJlc1Rvb2xzOiB6XG4gICAgICAuYm9vbGVhbigpXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiV2hlbiB0cnVlLCBvbmx5IHRvb2wtY2FwYWJsZSBlbmRwb2ludHMgbWF5IGJlIHNlbGVjdGVkLlwiKSxcbiAgICBtb2RlbENsYXNzOiBNb2RlbENsYXNzU2NoZW1hLm9wdGlvbmFsKCkuZGVzY3JpYmUoXG4gICAgICBcIlByZWZlcnJlZCBpbnRlbnQtb3JpZW50ZWQgY2xhc3Mgd2hlbiBubyBleHBsaWNpdCBtb2RlbCBtYXRjaGVzLlwiLFxuICAgICksXG4gICAgZmFsbGJhY2tzOiB6XG4gICAgICAuYXJyYXkoei5zdHJpbmcoKSlcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAuZGVzY3JpYmUoXCJPcmRlcmVkIG1vZGVsIGlkcyB0cmllZCBhZnRlciBjbGFzcyBzZWxlY3Rpb24gZmFpbHMuXCIpLFxuICAgIGxpdmVPbmx5OiB6XG4gICAgICAuYm9vbGVhbigpXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiV2hlbiB0cnVlLCBza2lwIGVuZHBvaW50cyB0aGF0IGFyZSBub3QgY3VycmVudGx5IHJlYWR5LlwiKSxcbiAgfSlcbiAgLmRlc2NyaWJlKFwiQ2FsbGVyIGludGVudCB1c2VkIHRvIHJlc29sdmUgb25lIG1vZGVsIGZyb20gYSBjYXRhbG9ndWUuXCIpO1xuXG5leHBvcnQgdHlwZSBSZXNvbHZlTW9kZWxJbnB1dCA9IHouaW5mZXI8dHlwZW9mIFJlc29sdmVNb2RlbElucHV0U2NoZW1hPjtcblxuZXhwb3J0IGNvbnN0IFJlc29sdmVkTW9kZWxTZWxlY3Rpb25TY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIG1vZGVsSWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJTZWxlY3RlZCBzZXJ2aW5nIGVuZHBvaW50IGlkZW50aWZpZXIuXCIpLFxuICAgIHNvdXJjZTogelxuICAgICAgLmVudW0oW1wiZXhwbGljaXRcIiwgXCJmdXp6eS1tYXRjaFwiLCBcImNsYXNzXCIsIFwiZmFsbGJhY2tcIl0pXG4gICAgICAuZGVzY3JpYmUoXCJQb2xpY3kgYnJhbmNoIHRoYXQgc2VsZWN0ZWQgdGhpcyBtb2RlbC5cIiksXG4gIH0pXG4gIC5kZXNjcmliZShcIlNlbGVjdGVkIG1vZGVsIGlkZW50aWZpZXIgYW5kIHRoZSBwb2xpY3kgYnJhbmNoIHRoYXQgc2VsZWN0ZWQgaXQuXCIpO1xuXG5leHBvcnQgdHlwZSBSZXNvbHZlZE1vZGVsU2VsZWN0aW9uID0gei5pbmZlcjx0eXBlb2YgUmVzb2x2ZWRNb2RlbFNlbGVjdGlvblNjaGVtYT47XG4iXX0=
262
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQztLQUM5QixJQUFJLENBQUMsQ0FBQyxlQUFlLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNsRSxRQUFRLENBQUMsMERBQTBELENBQUMsQ0FBQztBQUl4RSx5REFBeUQ7QUFDekQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLFlBQVksRUFBRSxlQUFlO0lBQzdCLFlBQVksRUFBRSxlQUFlO0lBQzdCLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFNBQVMsRUFBRSxXQUFXO0NBQ3VCLENBQUM7QUFFaEQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQztLQUNuQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztLQUNsRSxRQUFRLENBQUMsZ0VBQWdFLENBQUMsQ0FBQztBQUk5RSw4REFBOEQ7QUFDOUQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzdCLElBQUksRUFBRSxNQUFNO0lBQ1osT0FBTyxFQUFFLFNBQVM7SUFDbEIsR0FBRyxFQUFFLEtBQUs7SUFDVixNQUFNLEVBQUUsUUFBUTtJQUNoQixJQUFJLEVBQUUsTUFBTTtJQUNaLEtBQUssRUFBRSxPQUFPO0lBQ2QsR0FBRyxFQUFFLEtBQUs7Q0FDd0MsQ0FBQztBQUVyRCxnRUFBZ0U7QUFDaEUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsZUFBZSxDQUFDO0FBRXJELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENB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QUFnRCxDQUFDO0lBQzdELGFBQWEsRUFBRSxDQUFDO1NBQ2IsT0FBTyxFQUFFO1NBQ1QsUUFBUSxFQUFFO1NBQ1YsUUFBUSxDQUFDLHlEQUF5RCxDQUFDO0lBQ3RFLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQzlDLGlFQUFpRSxDQUNsRTtJQUNELFNBQVMsRUFBRSxDQUFDO1NBQ1QsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNqQixRQUFRLEVBQUU7U0FDVixRQUFRLENBQUMsc0RBQXNELENBQUM7SUFDbkUsUUFBUSxFQUFFLENBQUM7U0FDUixPQUFPLEVBQUU7U0FDVCxRQUFRLEVBQUU7U0FDVixRQUFRLENBQUMseURBQXlELENBQUM7Q0FDdkUsQ0FBQztLQUNELFFBQVEsQ0FBQywyREFBMkQsQ0FBQyxDQUFDO0FBSXpFLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQUM7S0FDMUMsTUFBTSxDQUFDO0lBQ04sT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsdUNBQXVDLENBQUM7SUFDckUsTUFBTSxFQUFFLENBQUM7U0FDTixJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztTQUN0RCxRQUFRLENBQUMseUNBQXlDLENBQUM7Q0FDdkQsQ0FBQztLQUNELFFBQVEsQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCcm93c2VyLXNhZmUgWm9kIG1vZGVsIGNvbnRyYWN0cyBzaGFyZWQgYWNyb3NzIGRieC10b29scyBydW50aW1lcy5cbiAqXG4gKiBUaGlzIG1vZHVsZSBpcyB0aGUgc2luZ2xlIG93bmVyIGZvciBtb2RlbCB3aXJlIHZhbGlkYXRpb24gYW5kIFR5cGVTY3JpcHRcbiAqIHR5cGVzLiBEZWZpbmUgc2NoZW1hcyBoZXJlIGFuZCBkZXJpdmUgZXhwb3J0ZWQgdHlwZXMgd2l0aCBgei5pbmZlcmA7IGRvIG5vdFxuICogbWFpbnRhaW4gcGFyYWxsZWwgaW50ZXJmYWNlcyBvciBnZW5lcmF0ZWQgc2NoZW1hIG1pcnJvcnMuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmV4cG9ydCBjb25zdCBNb2RlbENsYXNzU2NoZW1hID0gelxuICAuZW51bShbXCJjaGF0LXRoaW5raW5nXCIsIFwiY2hhdC1iYWxhbmNlZFwiLCBcImNoYXQtZmFzdFwiLCBcImVtYmVkZGluZ1wiXSlcbiAgLmRlc2NyaWJlKFwiSW50ZW50LW9yaWVudGVkIERhdGFicmlja3MgTW9kZWwgU2VydmluZyBlbmRwb2ludCBjbGFzcy5cIik7XG5cbmV4cG9ydCB0eXBlIE1vZGVsQ2xhc3MgPSB6LmluZmVyPHR5cGVvZiBNb2RlbENsYXNzU2NoZW1hPjtcblxuLyoqIE5hbWVkIHJ1bnRpbWUgdmFsdWVzIGZvciB0aGUgbW9kZWwgY2xhc3MgY29udHJhY3QuICovXG5leHBvcnQgY29uc3QgTW9kZWxDbGFzcyA9IHtcbiAgQ2hhdFRoaW5raW5nOiBcImNoYXQtdGhpbmtpbmdcIixcbiAgQ2hhdEJhbGFuY2VkOiBcImNoYXQtYmFsYW5jZWRcIixcbiAgQ2hhdEZhc3Q6IFwiY2hhdC1mYXN0XCIsXG4gIEVtYmVkZGluZzogXCJlbWJlZGRpbmdcIixcbn0gYXMgY29uc3Qgc2F0aXNmaWVzIFJlY29yZDxzdHJpbmcsIE1vZGVsQ2xhc3M+O1xuXG5leHBvcnQgY29uc3QgUmVhc29uaW5nRWZmb3J0U2NoZW1hID0gelxuICAuZW51bShbXCJub25lXCIsIFwibWluaW1hbFwiLCBcImxvd1wiLCBcIm1lZGl1bVwiLCBcImhpZ2hcIiwgXCJ4aGlnaFwiLCBcIm1heFwiXSlcbiAgLmRlc2NyaWJlKFwiUmVhc29uaW5nIGVmZm9ydCB2YWx1ZSBhY2NlcHRlZCBieSBjb21wYXRpYmxlIG1vZGVsIGVuZHBvaW50cy5cIik7XG5cbmV4cG9ydCB0eXBlIFJlYXNvbmluZ0VmZm9ydCA9IHouaW5mZXI8dHlwZW9mIFJlYXNvbmluZ0VmZm9ydFNjaGVtYT47XG5cbi8qKiBOYW1lZCBydW50aW1lIHZhbHVlcyBmb3IgdGhlIHJlYXNvbmluZyBlZmZvcnQgY29udHJhY3QuICovXG5leHBvcnQgY29uc3QgUmVhc29uaW5nRWZmb3J0ID0ge1xuICBOb25lOiBcIm5vbmVcIixcbiAgTWluaW1hbDogXCJtaW5pbWFsXCIsXG4gIExvdzogXCJsb3dcIixcbiAgTWVkaXVtOiBcIm1lZGl1bVwiLFxuICBIaWdoOiBcImhpZ2hcIixcbiAgWGhpZ2g6IFwieGhpZ2hcIixcbiAgTWF4OiBcIm1heFwiLFxufSBhcyBjb25zdCBzYXRpc2ZpZXMgUmVjb3JkPHN0cmluZywgUmVhc29uaW5nRWZmb3J0PjtcblxuLyoqIEV4aXN0aW5nIHB1YmxpYyBuYW1lIGZvciByZWFzb25pbmcgZWZmb3J0IHJ1bnRpbWUgdmFsdWVzLiAqL1xuZXhwb3J0IGNvbnN0IFJlYXNvbmluZ0VmZm9ydFZhbHVlcyA9IFJlYXNvbmluZ0VmZm9ydDtcblxuZXhwb3J0IGNvbnN0IE1vZGVsUHJvZmlsZVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgcXVhbGl0eTogei5udW1iZXIoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUmVsYXRpdmUgcXVhbGl0eSBzY29yZSBmb3IgcmFua2luZy5cIiksXG4gICAgc3BlZWQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlJlbGF0aXZlIHNwZWVkIHNjb3JlIGZvciByYW5raW5nLlwiKSxcbiAgICBjb3N0OiB6Lm51bWJlcigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJSZWxhdGl2ZSBjb3N0IHNjb3JlIGZvciByYW5raW5nLlwiKSxcbiAgfSlcbiAgLmRlc2NyaWJlKFwiUmVsYXRpdmUgcXVhbGl0eSwgc3BlZWQsIGFuZCBjb3N0IHNjb3JlcyBmb3IgYW4gZW5kcG9pbnQuXCIpO1xuXG5leHBvcnQgdHlwZSBNb2RlbFByb2ZpbGUgPSB6LmluZmVyPHR5cGVvZiBNb2RlbFByb2ZpbGVTY2hlbWE+O1xuXG5leHBvcnQgY29uc3QgTW9kZWxTdGF0dXNTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGRlcHJlY2F0ZWQ6IHpcbiAgICAgIC5ib29sZWFuKClcbiAgICAgIC5kZWZhdWx0KGZhbHNlKVxuICAgICAgLmRlc2NyaWJlKFwiVHJ1ZSB3aGVuIHRoZSBtb2RlbCBzaG91bGQgbm8gbG9uZ2VyIGJlIHNlbGVjdGVkIGJ5IGRlZmF1bHQuXCIpLFxuICB9KVxuICAuZGVzY3JpYmUoXCJNb2RlbCByZXRpcmVtZW50IHN0YXR1cy5cIik7XG5cbmV4cG9ydCB0eXBlIE1vZGVsU3RhdHVzID0gei5pbmZlcjx0eXBlb2YgTW9kZWxTdGF0dXNTY2hlbWE+O1xuXG5leHBvcnQgY29uc3QgU2VydmluZ0VuZHBvaW50U3VtbWFyeVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgbmFtZTogei5zdHJpbmcoKS5kZXNjcmliZShcIlNlcnZpbmcgZW5kcG9pbnQgaW52b2tlIGlkLlwiKSxcbiAgICBkaXNwbGF5TmFtZTogelxuICAgICAgLnN0cmluZygpXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiSHVtYW4tcmVhZGFibGUgbGFiZWwgd2hlbiB0aGUgd29ya3NwYWNlIHByb3ZpZGVzIG9uZS5cIiksXG4gICAgZmFtaWx5OiB6XG4gICAgICAuc3RyaW5nKClcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAuZGVzY3JpYmUoXCJEZXRlY3RlZCBtb2RlbCBmYW1pbHkgdXNlZCBmb3IgZ3JvdXBpbmcgYW5kIHNvcnQgb3JkZXIuXCIpLFxuICAgIHRhc2s6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkRhdGFicmlja3Mgc2VydmluZyB0YXNrIHJlcG9ydGVkIGZvciB0aGUgZW5kcG9pbnQuXCIpLFxuICAgIHN0YXRlOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJTZXJ2aW5nIGVuZHBvaW50IGxpZmVjeWNsZSBzdGF0ZS5cIiksXG4gICAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIldvcmtzcGFjZS1wcm92aWRlZCBlbmRwb2ludCBkZXNjcmlwdGlvbi5cIiksXG4gICAgc3VwcG9ydHNUb29sczogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRydWUgd2hlbiB0aGUgZW5kcG9pbnQgYWNjZXB0cyB0b29sIGNhbGxzLlwiKSxcbiAgICBwcm9maWxlOiBNb2RlbFByb2ZpbGVTY2hlbWEub3B0aW9uYWwoKS5kZXNjcmliZShcIlJlbGF0aXZlIHF1YWxpdHksIHNwZWVkLCBhbmQgY29zdCBzY29yZXMuXCIpLFxuICAgIGNsYXNzOiBNb2RlbENsYXNzU2NoZW1hLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJJbnRlbnQtb3JpZW50ZWQgY2xhc3MgYXNzaWduZWQgdG8gdGhpcyBlbmRwb2ludC5cIiksXG4gICAgc2VydmljZU5hbWVzOiB6XG4gICAgICAucmVjb3JkKHouc3RyaW5nKCksIHouc3RyaW5nKCkpXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiUHJvdmlkZXItc3BlY2lmaWMgc2VydmljZSBuYW1lIGFsaWFzZXMga2V5ZWQgYnkgcHJvdG9jb2wuXCIpLFxuICAgIG1vZGVsU2VydmljZU5hbWU6IHpcbiAgICAgIC5zdHJpbmcoKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIkNhbm9uaWNhbCBtb2RlbC1zZXJ2aWNlIG5hbWUgdXNlZCBmb3IgbWV0YWRhdGEgbG9va3VwLlwiKSxcbiAgICByZWFzb25pbmdFZmZvcnRzOiB6XG4gICAgICAuYXJyYXkoUmVhc29uaW5nRWZmb3J0U2NoZW1hKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIlJlYXNvbmluZyBlZmZvcnQgdmFsdWVzIHRoaXMgZW5kcG9pbnQgYWNjZXB0cy5cIiksXG4gICAgc3RhdHVzOiBNb2RlbFN0YXR1c1NjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUmV0aXJlbWVudCBzdGF0dXMgZm9yIHRoaXMgZW5kcG9pbnQuXCIpLFxuICAgIGRpbWVuc2lvbjogelxuICAgICAgLm51bWJlcigpXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiRW1iZWRkaW5nIHZlY3RvciBzaXplIHdoZW4gdGhlIGVuZHBvaW50IGlzIGFuIGVtYmVkZGluZyBtb2RlbC5cIiksXG4gIH0pXG4gIC5kZXNjcmliZShcIkJyb3dzZXItc2FmZSBub3JtYWxpemVkIE1vZGVsIFNlcnZpbmcgZW5kcG9pbnQgbWV0YWRhdGEuXCIpO1xuXG5leHBvcnQgdHlwZSBTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5ID0gei5pbmZlcjx0eXBlb2YgU2VydmluZ0VuZHBvaW50U3VtbWFyeVNjaGVtYT47XG5cbmV4cG9ydCBjb25zdCBNb2RlbFF1ZXJ5U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBuYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJFeGFjdCBzZXJ2aW5nIGVuZHBvaW50IG5hbWUgdG8gcmV0YWluLlwiKSxcbiAgICBzZWFyY2g6IHpcbiAgICAgIC5zdHJpbmcoKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIkZyZWUtdGV4dCBxdWVyeSBtYXRjaGVkIGFnYWluc3QgZW5kcG9pbnQgbmFtZXMgYW5kIGxhYmVscy5cIiksXG4gICAgbW9kZWxDbGFzczogTW9kZWxDbGFzc1NjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFxuICAgICAgXCJSZXN0cmljdCByZXN1bHRzIHRvIHRoaXMgaW50ZW50LW9yaWVudGVkIGNsYXNzLlwiLFxuICAgICksXG4gICAgcmVxdWlyZXNUb29sczogelxuICAgICAgLmJvb2xlYW4oKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIldoZW4gdHJ1ZSwgb25seSBlbmRwb2ludHMgdGhhdCBhY2NlcHQgdG9vbHMgYXJlIHJldHVybmVkLlwiKSxcbiAgICB0YXNrOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJFeGFjdCBEYXRhYnJpY2tzIHNlcnZpbmcgdGFzayB0byByZXRhaW4uXCIpLFxuICAgIGRpbWVuc2lvbjogelxuICAgICAgLm51bWJlcigpXG4gICAgICAuaW50KClcbiAgICAgIC5wb3NpdGl2ZSgpXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiRXhhY3QgZW1iZWRkaW5nIHZlY3RvciBkaW1lbnNpb24gdG8gcmV0YWluLlwiKSxcbiAgICBtaW5EaW1lbnNpb246IHpcbiAgICAgIC5udW1iZXIoKVxuICAgICAgLmludCgpXG4gICAgICAucG9zaXRpdmUoKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIk1pbmltdW0gZW1iZWRkaW5nIHZlY3RvciBkaW1lbnNpb24gdG8gcmV0YWluLlwiKSxcbiAgICBtYXhEaW1lbnNpb246IHpcbiAgICAgIC5udW1iZXIoKVxuICAgICAgLmludCgpXG4gICAgICAucG9zaXRpdmUoKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIk1heGltdW0gZW1iZWRkaW5nIHZlY3RvciBkaW1lbnNpb24gdG8gcmV0YWluLlwiKSxcbiAgICByZWFzb25pbmdFZmZvcnQ6IFJlYXNvbmluZ0VmZm9ydFNjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFxuICAgICAgXCJSZWFzb25pbmcgZWZmb3J0IHRoYXQgYSByZXRhaW5lZCBlbmRwb2ludCBtdXN0IGFjY2VwdC5cIixcbiAgICApLFxuICAgIGluY2x1ZGVEZXByZWNhdGVkOiB6XG4gICAgICAuYm9vbGVhbigpXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiV2hlbiB0cnVlLCByZXRpcmVkIGVuZHBvaW50cyByZW1haW4gaW4gdGhlIHJlc3VsdCBzZXQuXCIpLFxuICAgIGxpbWl0OiB6XG4gICAgICAubnVtYmVyKClcbiAgICAgIC5pbnQoKVxuICAgICAgLm1pbigxKVxuICAgICAgLm1heCg1MClcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAuZGVzY3JpYmUoXCJNYXhpbXVtIG51bWJlciBvZiByYW5rZWQgcmVzdWx0cyB0byByZXR1cm4uXCIpLFxuICAgIHRocmVzaG9sZDogelxuICAgICAgLm51bWJlcigpXG4gICAgICAubWluKDApXG4gICAgICAubWF4KDEpXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiTWluaW11bSBmdXp6eS1tYXRjaCBzY29yZSBpbiB0aGUgcmFuZ2UgMCB0byAxLlwiKSxcbiAgfSlcbiAgLmRlc2NyaWJlKFwiQnJvd3Nlci1zYWZlIG1vZGVsIGNhdGFsb2d1ZSBzZWFyY2ggYW5kIHJhbmtpbmcgY29udHJvbHMuXCIpO1xuXG5leHBvcnQgdHlwZSBNb2RlbFF1ZXJ5ID0gei5pbmZlcjx0eXBlb2YgTW9kZWxRdWVyeVNjaGVtYT47XG5cbmV4cG9ydCBjb25zdCBSYW5rZWRNb2RlbFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgZW5kcG9pbnQ6IFNlcnZpbmdFbmRwb2ludFN1bW1hcnlTY2hlbWEuZGVzY3JpYmUoXCJOb3JtYWxpemVkIGVuZHBvaW50IGNob3NlbiBmb3IgdGhpcyByZXN1bHQuXCIpLFxuICAgIG1vZGVsQ2xhc3M6IE1vZGVsQ2xhc3NTY2hlbWEuZGVzY3JpYmUoXCJDbGFzcyB1c2VkIHRvIHJhbmsgdGhpcyByZXN1bHQuXCIpLFxuICAgIHNjb3JlOiB6Lm51bWJlcigpLm1pbigwKS5tYXgoMSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkZ1enp5LW1hdGNoIHNjb3JlIGluIHRoZSByYW5nZSAwIHRvIDEuXCIpLFxuICB9KVxuICAuZGVzY3JpYmUoXCJPbmUgcmFua2VkIG1vZGVsLXNlYXJjaCByZXN1bHQuXCIpO1xuXG5leHBvcnQgdHlwZSBSYW5rZWRNb2RlbCA9IHouaW5mZXI8dHlwZW9mIFJhbmtlZE1vZGVsU2NoZW1hPjtcblxuZXhwb3J0IGNvbnN0IEVuZHBvaW50Q2FwYWJpbGl0aWVzU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBjaGF0OiB6LmJvb2xlYW4oKS5kZXNjcmliZShcIlRydWUgd2hlbiB0aGUgZW5kcG9pbnQgY2FuIHNlcnZlIGNoYXQgY29tcGxldGlvbnMuXCIpLFxuICAgIGVtYmVkZGluZzogei5ib29sZWFuKCkuZGVzY3JpYmUoXCJUcnVlIHdoZW4gdGhlIGVuZHBvaW50IGNhbiBzZXJ2ZSBlbWJlZGRpbmdzLlwiKSxcbiAgICB0b29sczogei5ib29sZWFuKCkuZGVzY3JpYmUoXCJUcnVlIHdoZW4gdGhlIGVuZHBvaW50IGFjY2VwdHMgdG9vbCBjYWxscy5cIiksXG4gIH0pXG4gIC5kZXNjcmliZShcIkNhcGFiaWxpdGllcyBkZXJpdmVkIGZyb20gb25lIG5vcm1hbGl6ZWQgc2VydmluZyBlbmRwb2ludC5cIik7XG5cbmV4cG9ydCB0eXBlIEVuZHBvaW50Q2FwYWJpbGl0aWVzID0gei5pbmZlcjx0eXBlb2YgRW5kcG9pbnRDYXBhYmlsaXRpZXNTY2hlbWE+O1xuXG5leHBvcnQgY29uc3QgRmFtaWx5Q2xhc3NTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGNsYXNzOiBNb2RlbENsYXNzU2NoZW1hLmRlc2NyaWJlKFwiRmFsbGJhY2sgY2xhc3MgZm9yIGFuIHVuc2NvcmVkIHJlY29nbml6ZWQgZmFtaWx5LlwiKSxcbiAgICByYW5rOiB6Lm51bWJlcigpLm1pbigwKS5kZXNjcmliZShcIlJlbGF0aXZlIHJhbmsgYW1vbmcgZmFtaWx5IGZhbGxiYWNrcywgc3RhcnRpbmcgYXQgMC5cIiksXG4gIH0pXG4gIC5kZXNjcmliZShcIkZhbGxiYWNrIGNsYXNzIGFuZCByYW5rIGZvciBhbiB1bnNjb3JlZCByZWNvZ25pemVkIG1vZGVsIGZhbWlseS5cIik7XG5cbmV4cG9ydCB0eXBlIEZhbWlseUNsYXNzID0gei5pbmZlcjx0eXBlb2YgRmFtaWx5Q2xhc3NTY2hlbWE+O1xuXG5leHBvcnQgY29uc3QgTW9kZWxDYXBhYmlsaXRpZXNTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHJlc3BvbnNlczogei5ib29sZWFuKCkuZGVzY3JpYmUoXCJUcnVlIHdoZW4gdGhlIG1vZGVsIHN1cHBvcnRzIHRoZSBSZXNwb25zZXMgQVBJLlwiKSxcbiAgICBpbWFnZUlucHV0OiB6LmJvb2xlYW4oKS5kZXNjcmliZShcIlRydWUgd2hlbiB0aGUgbW9kZWwgYWNjZXB0cyBpbWFnZSBpbnB1dHMuXCIpLFxuICAgIGFwcGx5UGF0Y2g6IHouYm9vbGVhbigpLmRlc2NyaWJlKFwiVHJ1ZSB3aGVuIHRoZSBtb2RlbCBzdXBwb3J0cyB0aGUgYXBwbHktcGF0Y2ggdG9vbC5cIiksXG4gICAgd2ViU2VhcmNoOiB6LmJvb2xlYW4oKS5kZXNjcmliZShcIlRydWUgd2hlbiB0aGUgbW9kZWwgc3VwcG9ydHMgd2ViIHNlYXJjaC5cIiksXG4gICAgcmVhc29uaW5nOiB6LmJvb2xlYW4oKS5kZXNjcmliZShcIlRydWUgd2hlbiB0aGUgbW9kZWwgc3VwcG9ydHMgZXhwbGljaXQgcmVhc29uaW5nIGNvbnRyb2xzLlwiKSxcbiAgICB0b29sczogei5ib29sZWFuKCkuZGVzY3JpYmUoXCJUcnVlIHdoZW4gdGhlIG1vZGVsIHN1cHBvcnRzIHRvb2wgY2FsbGluZy5cIiksXG4gICAgc3RydWN0dXJlZE91dHB1dDogei5ib29sZWFuKCkuZGVzY3JpYmUoXCJUcnVlIHdoZW4gdGhlIG1vZGVsIHN1cHBvcnRzIHN0cnVjdHVyZWQgb3V0cHV0LlwiKSxcbiAgICB0ZW1wZXJhdHVyZTogei5ib29sZWFuKCkuZGVzY3JpYmUoXCJUcnVlIHdoZW4gdGhlIG1vZGVsIGFjY2VwdHMgdGVtcGVyYXR1cmUgc2FtcGxpbmcuXCIpLFxuICB9KVxuICAuZGVzY3JpYmUoXCJQdWJsaXNoZWQgY2FwYWJpbGl0aWVzIHJlc29sdmVkIGZvciBvbmUgbW9kZWwgaWRlbnRpdHkuXCIpO1xuXG5leHBvcnQgdHlwZSBNb2RlbENhcGFiaWxpdGllcyA9IHouaW5mZXI8dHlwZW9mIE1vZGVsQ2FwYWJpbGl0aWVzU2NoZW1hPjtcblxuZXhwb3J0IGNvbnN0IE1vZGVsUmF0ZUxpbWl0c1NjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgaW5wdXRUb2tlbnNQZXJNaW51dGU6IHpcbiAgICAgIC5udW1iZXIoKVxuICAgICAgLmludCgpXG4gICAgICAubWluKDApXG4gICAgICAubnVsbGFibGUoKVxuICAgICAgLmRlc2NyaWJlKFwiUHVibGlzaGVkIGlucHV0IHRva2VucyBwZXIgbWludXRlLCBvciBudWxsIHdoZW4gdW5wdWJsaXNoZWQuXCIpLFxuICAgIG91dHB1dFRva2Vuc1Blck1pbnV0ZTogelxuICAgICAgLm51bWJlcigpXG4gICAgICAuaW50KClcbiAgICAgIC5taW4oMClcbiAgICAgIC5udWxsYWJsZSgpXG4gICAgICAuZGVzY3JpYmUoXCJQdWJsaXNoZWQgb3V0cHV0IHRva2VucyBwZXIgbWludXRlLCBvciBudWxsIHdoZW4gdW5wdWJsaXNoZWQuXCIpLFxuICAgIHF1ZXJpZXNQZXJIb3VyOiB6XG4gICAgICAubnVtYmVyKClcbiAgICAgIC5pbnQoKVxuICAgICAgLm1pbigwKVxuICAgICAgLm51bGxhYmxlKClcbiAgICAgIC5kZXNjcmliZShcIlB1Ymxpc2hlZCBxdWVyaWVzIHBlciBob3VyLCBvciBudWxsIHdoZW4gdW5wdWJsaXNoZWQuXCIpLFxuICB9KVxuICAuZGVzY3JpYmUoXCJQdWJsaXNoZWQgcGF5LXBlci10b2tlbiBsaW1pdHMgZm9yIG9uZSBtb2RlbC5cIik7XG5cbmV4cG9ydCB0eXBlIE1vZGVsUmF0ZUxpbWl0cyA9IHouaW5mZXI8dHlwZW9mIE1vZGVsUmF0ZUxpbWl0c1NjaGVtYT47XG5cbmV4cG9ydCBjb25zdCBNb2RlbE1ldGFkYXRhU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBzdGF0dXM6IE1vZGVsU3RhdHVzU2NoZW1hLmRlc2NyaWJlKFwiUmV0aXJlbWVudCBzdGF0dXMgZm9yIHRoaXMgbW9kZWwgaWRlbnRpdHkuXCIpLFxuICAgIGNhcGFiaWxpdGllczogTW9kZWxDYXBhYmlsaXRpZXNTY2hlbWEuZGVzY3JpYmUoXG4gICAgICBcIlB1Ymxpc2hlZCBjYXBhYmlsaXRpZXMgZm9yIHRoaXMgbW9kZWwgaWRlbnRpdHkuXCIsXG4gICAgKSxcbiAgICByYXRlTGltaXRzOiBNb2RlbFJhdGVMaW1pdHNTY2hlbWEub3B0aW9uYWwoKS5kZXNjcmliZShcIlB1Ymxpc2hlZCByYXRlIGxpbWl0cyB3aGVuIGF2YWlsYWJsZS5cIiksXG4gIH0pXG4gIC5kZXNjcmliZShcIkNvbWJpbmVkIHJldGlyZW1lbnQsIGNhcGFiaWxpdHksIGFuZCByYXRlLWxpbWl0IG1ldGFkYXRhLlwiKTtcblxuZXhwb3J0IHR5cGUgTW9kZWxNZXRhZGF0YSA9IHouaW5mZXI8dHlwZW9mIE1vZGVsTWV0YWRhdGFTY2hlbWE+O1xuXG5leHBvcnQgY29uc3QgUmVzb2x2ZWRNb2RlbFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgbW9kZWxJZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlJlc29sdmVkIHNlcnZpbmcgZW5kcG9pbnQgb3IgbW9kZWwgaWRlbnRpZmllci5cIiksXG4gICAgbWF0Y2hlZDogei5ib29sZWFuKCkuZGVzY3JpYmUoXCJUcnVlIHdoZW4gdGhlIGlkZW50aWZpZXIgbWF0Y2hlZCBhIGNhdGFsb2d1ZSBlbnRyeS5cIiksXG4gICAgc2NvcmU6IHoubnVtYmVyKCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRnV6enktbWF0Y2ggc2NvcmUgaW4gdGhlIHJhbmdlIDAgdG8gMS5cIiksXG4gIH0pXG4gIC5kZXNjcmliZShcIlJlc3VsdCBvZiByZXNvbHZpbmcgYSBmdXp6eSBtb2RlbCBpZGVudGlmaWVyLlwiKTtcblxuZXhwb3J0IHR5cGUgUmVzb2x2ZWRNb2RlbCA9IHouaW5mZXI8dHlwZW9mIFJlc29sdmVkTW9kZWxTY2hlbWE+O1xuXG5leHBvcnQgY29uc3QgUmVzb2x2ZU1vZGVsT3B0aW9uc1NjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgdGhyZXNob2xkOiB6XG4gICAgICAubnVtYmVyKClcbiAgICAgIC5taW4oMClcbiAgICAgIC5tYXgoMSlcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAuZGVzY3JpYmUoXCJNaW5pbXVtIGZ1enp5LW1hdGNoIHNjb3JlIGluIHRoZSByYW5nZSAwIHRvIDEuXCIpLFxuICAgIHJlcXVpcmVzVG9vbHM6IHpcbiAgICAgIC5ib29sZWFuKClcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAuZGVzY3JpYmUoXCJXaGVuIHRydWUsIG9ubHkgdG9vbC1jYXBhYmxlIGVuZHBvaW50cyBtYXkgbWF0Y2guXCIpLFxuICB9KVxuICAuZGVzY3JpYmUoXCJQdXJlIGNvbnRyb2xzIGZvciBmdXp6eSBlbmRwb2ludCByZXNvbHV0aW9uLlwiKTtcblxuZXhwb3J0IHR5cGUgUmVzb2x2ZU1vZGVsT3B0aW9ucyA9IHouaW5mZXI8dHlwZW9mIFJlc29sdmVNb2RlbE9wdGlvbnNTY2hlbWE+O1xuXG5leHBvcnQgY29uc3QgU2NvcmVkRW5kcG9pbnRTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGVuZHBvaW50OiBTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5U2NoZW1hLmRlc2NyaWJlKFwiQ2FuZGlkYXRlIHNlcnZpbmcgZW5kcG9pbnQuXCIpLFxuICAgIHNjb3JlOiB6Lm51bWJlcigpLm1pbigwKS5tYXgoMSkuZGVzY3JpYmUoXCJGdXp6eS1tYXRjaCBkaXN0YW5jZSBpbiB0aGUgcmFuZ2UgMCB0byAxLlwiKSxcbiAgfSlcbiAgLmRlc2NyaWJlKFwiT25lIGVuZHBvaW50IHBhaXJlZCB3aXRoIGl0cyBmdXp6eS1tYXRjaCBkaXN0YW5jZS5cIik7XG5cbmV4cG9ydCB0eXBlIFNjb3JlZEVuZHBvaW50ID0gei5pbmZlcjx0eXBlb2YgU2NvcmVkRW5kcG9pbnRTY2hlbWE+O1xuXG5leHBvcnQgY29uc3QgUmVzb2x2ZU1vZGVsSW5wdXRTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGV4cGxpY2l0OiB6XG4gICAgICAuc3RyaW5nKClcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAuZGVzY3JpYmUoXCJFeGFjdCBtb2RlbCBpZCBvciBkaXNwbGF5IG5hbWUgc3VwcGxpZWQgYnkgdGhlIGNhbGxlci5cIiksXG4gICAgZnV6enk6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJXaGVuIHRydWUsIHVubWF0Y2hlZCBleHBsaWNpdCB2YWx1ZXMgbWF5IGZ1enp5LW1hdGNoLlwiKSxcbiAgICB0aHJlc2hvbGQ6IHpcbiAgICAgIC5udW1iZXIoKVxuICAgICAgLm1pbigwKVxuICAgICAgLm1heCgxKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIk1pbmltdW0gZnV6enktbWF0Y2ggc2NvcmUgaW4gdGhlIHJhbmdlIDAgdG8gMS5cIiksXG4gICAgcmVxdWlyZXNUb29sczogelxuICAgICAgLmJvb2xlYW4oKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIldoZW4gdHJ1ZSwgb25seSB0b29sLWNhcGFibGUgZW5kcG9pbnRzIG1heSBiZSBzZWxlY3RlZC5cIiksXG4gICAgbW9kZWxDbGFzczogTW9kZWxDbGFzc1NjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFxuICAgICAgXCJQcmVmZXJyZWQgaW50ZW50LW9yaWVudGVkIGNsYXNzIHdoZW4gbm8gZXhwbGljaXQgbW9kZWwgbWF0Y2hlcy5cIixcbiAgICApLFxuICAgIGZhbGxiYWNrczogelxuICAgICAgLmFycmF5KHouc3RyaW5nKCkpXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiT3JkZXJlZCBtb2RlbCBpZHMgdHJpZWQgYWZ0ZXIgY2xhc3Mgc2VsZWN0aW9uIGZhaWxzLlwiKSxcbiAgICBsaXZlT25seTogelxuICAgICAgLmJvb2xlYW4oKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIldoZW4gdHJ1ZSwgc2tpcCBlbmRwb2ludHMgdGhhdCBhcmUgbm90IGN1cnJlbnRseSByZWFkeS5cIiksXG4gIH0pXG4gIC5kZXNjcmliZShcIkNhbGxlciBpbnRlbnQgdXNlZCB0byByZXNvbHZlIG9uZSBtb2RlbCBmcm9tIGEgY2F0YWxvZ3VlLlwiKTtcblxuZXhwb3J0IHR5cGUgUmVzb2x2ZU1vZGVsSW5wdXQgPSB6LmluZmVyPHR5cGVvZiBSZXNvbHZlTW9kZWxJbnB1dFNjaGVtYT47XG5cbmV4cG9ydCBjb25zdCBSZXNvbHZlZE1vZGVsU2VsZWN0aW9uU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBtb2RlbElkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiU2VsZWN0ZWQgc2VydmluZyBlbmRwb2ludCBpZGVudGlmaWVyLlwiKSxcbiAgICBzb3VyY2U6IHpcbiAgICAgIC5lbnVtKFtcImV4cGxpY2l0XCIsIFwiZnV6enktbWF0Y2hcIiwgXCJjbGFzc1wiLCBcImZhbGxiYWNrXCJdKVxuICAgICAgLmRlc2NyaWJlKFwiUG9saWN5IGJyYW5jaCB0aGF0IHNlbGVjdGVkIHRoaXMgbW9kZWwuXCIpLFxuICB9KVxuICAuZGVzY3JpYmUoXCJTZWxlY3RlZCBtb2RlbCBpZGVudGlmaWVyIGFuZCB0aGUgcG9saWN5IGJyYW5jaCB0aGF0IHNlbGVjdGVkIGl0LlwiKTtcblxuZXhwb3J0IHR5cGUgUmVzb2x2ZWRNb2RlbFNlbGVjdGlvbiA9IHouaW5mZXI8dHlwZW9mIFJlc29sdmVkTW9kZWxTZWxlY3Rpb25TY2hlbWE+O1xuIl19
package/package.json CHANGED
@@ -22,7 +22,7 @@
22
22
  "typescript": "^5.9.3"
23
23
  },
24
24
  "dependencies": {
25
- "@dbx-tools/shared-core": "^0.9.166",
25
+ "@dbx-tools/shared-core": "^0.9.173",
26
26
  "zod": "4.3.6"
27
27
  },
28
28
  "main": "./lib/index.js",
@@ -39,7 +39,7 @@
39
39
  "./package.json": "./package.json"
40
40
  }
41
41
  },
42
- "version": "0.9.166",
42
+ "version": "0.9.173",
43
43
  "types": "./lib/index.d.ts",
44
44
  "dbxToolsConfig": {
45
45
  "tags": [
package/src/contracts.ts CHANGED
@@ -197,8 +197,12 @@ export const ModelCapabilitiesSchema = z
197
197
  imageInput: z.boolean().describe("True when the model accepts image inputs."),
198
198
  applyPatch: z.boolean().describe("True when the model supports the apply-patch tool."),
199
199
  webSearch: z.boolean().describe("True when the model supports web search."),
200
+ reasoning: z.boolean().describe("True when the model supports explicit reasoning controls."),
201
+ tools: z.boolean().describe("True when the model supports tool calling."),
202
+ structuredOutput: z.boolean().describe("True when the model supports structured output."),
203
+ temperature: z.boolean().describe("True when the model accepts temperature sampling."),
200
204
  })
201
- .describe("Documented capabilities resolved for one model identity.");
205
+ .describe("Published capabilities resolved for one model identity.");
202
206
 
203
207
  export type ModelCapabilities = z.infer<typeof ModelCapabilitiesSchema>;
204
208
 
@@ -231,7 +235,7 @@ export const ModelMetadataSchema = z
231
235
  .object({
232
236
  status: ModelStatusSchema.describe("Retirement status for this model identity."),
233
237
  capabilities: ModelCapabilitiesSchema.describe(
234
- "Documented capabilities for this model identity.",
238
+ "Published capabilities for this model identity.",
235
239
  ),
236
240
  rateLimits: ModelRateLimitsSchema.optional().describe("Published rate limits when available."),
237
241
  })