@dbx-tools/model 0.9.175 → 0.9.177
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/README.md +0 -1
- package/index.ts +2 -2
- package/lib/index.d.ts +2 -2
- package/lib/index.js +3 -3
- package/lib/src/policy.d.ts +2 -0
- package/lib/src/policy.js +16 -1
- package/package.json +7 -7
- package/src/policy.ts +15 -0
package/README.md
CHANGED
|
@@ -56,7 +56,6 @@ The package:
|
|
|
56
56
|
while committed fallbacks keep refreshes and runtime startup offline-safe.
|
|
57
57
|
- Provides a small static fallback floor for local tools and degraded workspace
|
|
58
58
|
access.
|
|
59
|
-
|
|
60
59
|
## Use with AppKit Model Serving
|
|
61
60
|
|
|
62
61
|
Use native AppKit's Model Serving plugin when you already know the endpoint
|
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/model";
|
|
6
|
-
export const PACKAGE_VERSION = "0.9.
|
|
6
|
+
export const PACKAGE_VERSION = "0.9.177";
|
|
7
7
|
export * as bindings from "./src/bindings.ts";
|
|
8
8
|
export * from "./src/bindings.ts";
|
|
9
9
|
export * as classes from "./src/classes.ts";
|
|
@@ -34,7 +34,7 @@ export { DEFAULT_MODEL_CACHE_TTL_MS, DEFAULT_FUZZY_THRESHOLD, listServingEndpoin
|
|
|
34
34
|
export type { WorkspaceClientLike, ListServingEndpointsOptions } from "./src/model-catalog.ts";
|
|
35
35
|
export { DEFAULT_MODEL_CLIENT_CACHE_TTL_MS, createModelClient, listProfiles, createModelClientWithDatabricksClient, createModelClientWithDependencies } from "./src/model-client.ts";
|
|
36
36
|
export type { ModelAuthOptions, ModelClientOptions, ModelClientStatus, ModelProtocol, ModelRouteInput, ModelRoute, ModelClient } from "./src/model-client.ts";
|
|
37
|
-
export { ModelFamily, modelFamily, modelFamilyRank, modelSearchQuery, inheritsNativeWebSearch, isFoundationModelIdentity, modelServiceName, systemModelService, prefersSystemModelService, isOpenWeightsGpt, modelReasoningEfforts, modelSupportsTools, endpointSupportsTools, modelServingApi, chatToolReasoningEffort, modelServiceNames } from "./src/policy.ts";
|
|
37
|
+
export { ModelFamily, modelFamily, modelFamilyRank, modelSearchQuery, inheritsNativeWebSearch, isFoundationModelIdentity, modelServiceName, systemModelService, prefersSystemModelService, isOpenWeightsGpt, isOpenWeightsModel, modelReasoningEfforts, modelSupportsTools, endpointSupportsTools, modelServingApi, chatToolReasoningEffort, modelServiceNames } from "./src/policy.ts";
|
|
38
38
|
export { ReasoningLevel, REASONING_LEVELS, parseReasoning, parseReasoningLevels, documentedReasoningLevels, defaultReasoningLevels, reasoningLevelsFor, formatReasoning, remapReasoning, adaptRequestReasoning, normalizeReasoningToken, uniqueReasoningLevels } from "./src/reasoning-translation.ts";
|
|
39
39
|
export type { AdaptedRequestReasoning } from "./src/reasoning-translation.ts";
|
|
40
40
|
export { rankModelIdLive, searchModels, selectModel } from "./src/resolve.ts";
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const PACKAGE_IDENTIFIER = "@dbx-tools/model";
|
|
2
|
-
export declare const PACKAGE_VERSION = "0.9.
|
|
2
|
+
export declare const PACKAGE_VERSION = "0.9.177";
|
|
3
3
|
export * as bindings from "./src/bindings.ts";
|
|
4
4
|
export * from "./src/bindings.ts";
|
|
5
5
|
export * as classes from "./src/classes.ts";
|
|
@@ -30,7 +30,7 @@ export { DEFAULT_MODEL_CACHE_TTL_MS, DEFAULT_FUZZY_THRESHOLD, listServingEndpoin
|
|
|
30
30
|
export type { WorkspaceClientLike, ListServingEndpointsOptions } from "./src/model-catalog.ts";
|
|
31
31
|
export { DEFAULT_MODEL_CLIENT_CACHE_TTL_MS, createModelClient, listProfiles, createModelClientWithDatabricksClient, createModelClientWithDependencies } from "./src/model-client.ts";
|
|
32
32
|
export type { ModelAuthOptions, ModelClientOptions, ModelClientStatus, ModelProtocol, ModelRouteInput, ModelRoute, ModelClient } from "./src/model-client.ts";
|
|
33
|
-
export { ModelFamily, modelFamily, modelFamilyRank, modelSearchQuery, inheritsNativeWebSearch, isFoundationModelIdentity, modelServiceName, systemModelService, prefersSystemModelService, isOpenWeightsGpt, modelReasoningEfforts, modelSupportsTools, endpointSupportsTools, modelServingApi, chatToolReasoningEffort, modelServiceNames } from "./src/policy.ts";
|
|
33
|
+
export { ModelFamily, modelFamily, modelFamilyRank, modelSearchQuery, inheritsNativeWebSearch, isFoundationModelIdentity, modelServiceName, systemModelService, prefersSystemModelService, isOpenWeightsGpt, isOpenWeightsModel, modelReasoningEfforts, modelSupportsTools, endpointSupportsTools, modelServingApi, chatToolReasoningEffort, modelServiceNames } from "./src/policy.ts";
|
|
34
34
|
export { ReasoningLevel, REASONING_LEVELS, parseReasoning, parseReasoningLevels, documentedReasoningLevels, defaultReasoningLevels, reasoningLevelsFor, formatReasoning, remapReasoning, adaptRequestReasoning, normalizeReasoningToken, uniqueReasoningLevels } from "./src/reasoning-translation.ts";
|
|
35
35
|
export type { AdaptedRequestReasoning } from "./src/reasoning-translation.ts";
|
|
36
36
|
export { rankModelIdLive, searchModels, selectModel } from "./src/resolve.ts";
|
package/lib/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
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/model";
|
|
5
|
-
export const PACKAGE_VERSION = "0.9.
|
|
5
|
+
export const PACKAGE_VERSION = "0.9.177";
|
|
6
6
|
export * as bindings from "./src/bindings.js";
|
|
7
7
|
export * from "./src/bindings.js";
|
|
8
8
|
export * as classes from "./src/classes.js";
|
|
@@ -28,9 +28,9 @@ export { MODEL_METADATA_TTL_MS, RETIRED_MODELS_URL, OPENAI_RESPONSES_MODELS_URL,
|
|
|
28
28
|
export { refreshModelMetadata, hydrateModelMetadata, reasoningModelCatalogue, learnedReasoningCatalogue, rememberReasoningLevels, learnReasoningLevelsFromError, modelCapabilitiesFor, modelTemperatureSupportFor, modelRateLimitsFor, modelReasoningLevelsFor, modelMetadataFor, modelMetadataGeneratedAt } from "./src/metadata.js";
|
|
29
29
|
export { DEFAULT_MODEL_CACHE_TTL_MS, DEFAULT_FUZZY_THRESHOLD, listServingEndpoints, listServingEndpointsUncached, clearServingEndpointsCache, searchServingEndpoints, resolveModelId } from "./src/model-catalog.js";
|
|
30
30
|
export { DEFAULT_MODEL_CLIENT_CACHE_TTL_MS, createModelClient, listProfiles, createModelClientWithDatabricksClient, createModelClientWithDependencies } from "./src/model-client.js";
|
|
31
|
-
export { ModelFamily, modelFamily, modelFamilyRank, modelSearchQuery, inheritsNativeWebSearch, isFoundationModelIdentity, modelServiceName, systemModelService, prefersSystemModelService, isOpenWeightsGpt, modelReasoningEfforts, modelSupportsTools, endpointSupportsTools, modelServingApi, chatToolReasoningEffort, modelServiceNames } from "./src/policy.js";
|
|
31
|
+
export { ModelFamily, modelFamily, modelFamilyRank, modelSearchQuery, inheritsNativeWebSearch, isFoundationModelIdentity, modelServiceName, systemModelService, prefersSystemModelService, isOpenWeightsGpt, isOpenWeightsModel, modelReasoningEfforts, modelSupportsTools, endpointSupportsTools, modelServingApi, chatToolReasoningEffort, modelServiceNames } from "./src/policy.js";
|
|
32
32
|
export { ReasoningLevel, REASONING_LEVELS, parseReasoning, parseReasoningLevels, documentedReasoningLevels, defaultReasoningLevels, reasoningLevelsFor, formatReasoning, remapReasoning, adaptRequestReasoning, normalizeReasoningToken, uniqueReasoningLevels } from "./src/reasoning-translation.js";
|
|
33
33
|
export { rankModelIdLive, searchModels, selectModel } from "./src/resolve.js";
|
|
34
34
|
export { COMMITTED_RETIRED_MODELS, RETIRED_MODELS_GENERATED_AT, replaceRetiredModelNames, retiredModelNames, modelStatusFor } from "./src/retirement.js";
|
|
35
35
|
export { lookupModels, rankModelId, resolveModel } from "./src/selection.js";
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxhQUFhLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxLQUFLLGdCQUFnQixNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLFlBQVksTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEtBQUssV0FBVyxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLG9CQUFvQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxLQUFLLFVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkgsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pKLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSwrQkFBK0IsRUFBRSxtQkFBbUIsRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLDBCQUEwQixFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXhaLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTVHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSwyQkFBMkIsRUFBRSxxQkFBcUIsRUFBRSxxQkFBcUIsRUFBRSx1QkFBdUIsRUFBRSxrQkFBa0IsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTNPLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSx1QkFBdUIsRUFBRSx5QkFBeUIsRUFBRSx1QkFBdUIsRUFBRSw2QkFBNkIsRUFBRSxvQkFBb0IsRUFBRSwwQkFBMEIsRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBRSxnQkFBZ0IsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RVLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSx1QkFBdUIsRUFBRSxvQkFBb0IsRUFBRSw0QkFBNEIsRUFBRSwwQkFBMEIsRUFBRSxzQkFBc0IsRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVyTixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLHFDQUFxQyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckwsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLHlCQUF5QixFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLGVBQWUsRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BXLE9BQU8sRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLG9CQUFvQixFQUFFLHlCQUF5QixFQUFFLHNCQUFzQixFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUscUJBQXFCLEVBQUUsdUJBQXVCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV2UyxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU5RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsMkJBQTJCLEVBQUUsd0JBQXdCLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekosT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL21vZGVsXCI7XG5leHBvcnQgY29uc3QgUEFDS0FHRV9WRVJTSU9OID0gXCIwLjkuMTc1XCI7XG5leHBvcnQgKiBhcyBiaW5kaW5ncyBmcm9tIFwiLi9zcmMvYmluZGluZ3MudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9iaW5kaW5ncy50c1wiO1xuZXhwb3J0ICogYXMgY2xhc3NlcyBmcm9tIFwiLi9zcmMvY2xhc3Nlcy50c1wiO1xuZXhwb3J0ICogYXMgY2xhc3NpZnkgZnJvbSBcIi4vc3JjL2NsYXNzaWZ5LnRzXCI7XG5leHBvcnQgKiBhcyBmYWxsYmFjayBmcm9tIFwiLi9zcmMvZmFsbGJhY2sudHNcIjtcbmV4cG9ydCAqIGFzIGludm9rZSBmcm9tIFwiLi9zcmMvaW52b2tlLnRzXCI7XG5leHBvcnQgKiBhcyBtZXRhZGF0YUNhY2hlIGZyb20gXCIuL3NyYy9tZXRhZGF0YS1jYWNoZS50c1wiO1xuZXhwb3J0ICogYXMgbWV0YWRhdGFDb250cmFjdCBmcm9tIFwiLi9zcmMvbWV0YWRhdGEtY29udHJhY3QudHNcIjtcbmV4cG9ydCAqIGFzIG1ldGFkYXRhIGZyb20gXCIuL3NyYy9tZXRhZGF0YS50c1wiO1xuZXhwb3J0ICogYXMgbW9kZWxDYXRhbG9nIGZyb20gXCIuL3NyYy9tb2RlbC1jYXRhbG9nLnRzXCI7XG5leHBvcnQgKiBhcyBtb2RlbENsaWVudCBmcm9tIFwiLi9zcmMvbW9kZWwtY2xpZW50LnRzXCI7XG5leHBvcnQgKiBhcyBwb2xpY3kgZnJvbSBcIi4vc3JjL3BvbGljeS50c1wiO1xuZXhwb3J0ICogYXMgcmVhc29uaW5nVHJhbnNsYXRpb24gZnJvbSBcIi4vc3JjL3JlYXNvbmluZy10cmFuc2xhdGlvbi50c1wiO1xuZXhwb3J0ICogYXMgcmVzb2x2ZSBmcm9tIFwiLi9zcmMvcmVzb2x2ZS50c1wiO1xuZXhwb3J0ICogYXMgcmV0aXJlbWVudCBmcm9tIFwiLi9zcmMvcmV0aXJlbWVudC50c1wiO1xuZXhwb3J0ICogYXMgc2VsZWN0aW9uIGZyb20gXCIuL3NyYy9zZWxlY3Rpb24udHNcIjtcbmV4cG9ydCB7IENIQVRfQ0xBU1NfT1JERVIsIE1PREVMX0NMQVNTX09SREVSLCBpc0NoYXRDbGFzcywgcGFyc2VNb2RlbENsYXNzLCBjbGFzc2VzQXRPckJlbG93IH0gZnJvbSBcIi4vc3JjL2NsYXNzZXMudHNcIjtcbmV4cG9ydCB7IHN1cHBvcnRzVG9vbHNCeUZhbWlseSwgZW5kcG9pbnRDYXBhYmlsaXRpZXMsIHZlcnNpb25UdXBsZSwgY29tcGFyZVZlcnNpb25UdXBsZXMsIGNsYXNzaWZ5QnlGYW1pbHksIGNsYXNzaWZ5RW5kcG9pbnRzIH0gZnJvbSBcIi4vc3JjL2NsYXNzaWZ5LnRzXCI7XG5leHBvcnQgeyBtb2RlbHNGb3JDbGFzcywgbW9kZWxGb3JDbGFzcywgRkFMTEJBQ0tfTU9ERUxfSURTIH0gZnJvbSBcIi4vc3JjL2ZhbGxiYWNrLnRzXCI7XG5leHBvcnQgeyBJTlZPQ0FUSU9OU19TVUZGSVgsIFNFUlZJTkdfRU5EUE9JTlRTX1BBVEgsIFJFU1BPTlNFU19QQVRILCBPUEVOX1JFU1BPTlNFU19QQVRILCBDSEFUX0NPTVBMRVRJT05TX1BBVEgsIEFJX0dBVEVXQVlfQ09ERVhfUkVTUE9OU0VTX1BBVEgsIEFOVEhST1BJQ19CQVNFX1BBVEgsIEFOVEhST1BJQ19NRVNTQUdFU19QQVRILCBzZXJ2aW5nRW5kcG9pbnRzVXJsLCBpbnZvY2F0aW9uc1VybCwgcmVzcG9uc2VzVXJsLCBvcGVuUmVzcG9uc2VzVXJsLCBjaGF0Q29tcGxldGlvbnNVcmwsIGFpR2F0ZXdheUNvZGV4UmVzcG9uc2VzVXJsLCBhbnRocm9waWNNZXNzYWdlc1VybCwgYW50aHJvcGljQmFzZVVybCwgcmVzcG9uc2VzVXBzdHJlYW1VcmwsIGF1dGhIZWFkZXJzIH0gZnJvbSBcIi4vc3JjL2ludm9rZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBBdXRoZW50aWNhdGluZ0NsaWVudExpa2UgfSBmcm9tIFwiLi9zcmMvaW52b2tlLnRzXCI7XG5leHBvcnQgeyBjcmVhdGVNZXRhZGF0YUNhY2hlLCBtZXJnZVByZWZlckZyZXNoTGlzdCwgbWVyZ2VQcmVmZXJGcmVzaFJlY29yZCB9IGZyb20gXCIuL3NyYy9tZXRhZGF0YS1jYWNoZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBNZXRhZGF0YUNhY2hlT3B0aW9ucywgTWV0YWRhdGFDYWNoZU1lcmdlSW5wdXQsIE1ldGFkYXRhQ2FjaGUgfSBmcm9tIFwiLi9zcmMvbWV0YWRhdGEtY2FjaGUudHNcIjtcbmV4cG9ydCB7IE1PREVMX01FVEFEQVRBX1RUTF9NUywgUkVUSVJFRF9NT0RFTFNfVVJMLCBPUEVOQUlfUkVTUE9OU0VTX01PREVMU19VUkwsIFdFQl9TRUFSQ0hfTU9ERUxTX1VSTCwgTU9ERUxfUkFURV9MSU1JVFNfVVJMLCBRVUVSWV9SRUFTT05fTU9ERUxTX1VSTCwgTU9ERUxTX0RFVl9BUElfVVJMLCBNT0RFTFBBUkFNU19ERVZfTU9ERUxTX1VSTCB9IGZyb20gXCIuL3NyYy9tZXRhZGF0YS1jb250cmFjdC50c1wiO1xuZXhwb3J0IHR5cGUgeyBSZXRpcmVkTW9kZWxzU25hcHNob3QsIE1vZGVsQ2FwYWJpbGl0eUNhdGFsb2d1ZSwgTW9kZWxDYXBhYmlsaXRpZXNTbmFwc2hvdCwgTW9kZWxSYXRlTGltaXRDYXRhbG9ndWUsIE1vZGVsUmF0ZUxpbWl0c1NuYXBzaG90LCBSZWFzb25pbmdNb2RlbHNTbmFwc2hvdCwgTW9kZWxzRGV2Q2FwYWJpbGl0eUNhdGFsb2d1ZSwgTW9kZWxzRGV2U25hcHNob3QsIE1vZGVsUGFyYW1zQ2F0YWxvZ3VlLCBNb2RlbFBhcmFtc1NuYXBzaG90IH0gZnJvbSBcIi4vc3JjL21ldGFkYXRhLWNvbnRyYWN0LnRzXCI7XG5leHBvcnQgeyByZWZyZXNoTW9kZWxNZXRhZGF0YSwgaHlkcmF0ZU1vZGVsTWV0YWRhdGEsIHJlYXNvbmluZ01vZGVsQ2F0YWxvZ3VlLCBsZWFybmVkUmVhc29uaW5nQ2F0YWxvZ3VlLCByZW1lbWJlclJlYXNvbmluZ0xldmVscywgbGVhcm5SZWFzb25pbmdMZXZlbHNGcm9tRXJyb3IsIG1vZGVsQ2FwYWJpbGl0aWVzRm9yLCBtb2RlbFRlbXBlcmF0dXJlU3VwcG9ydEZvciwgbW9kZWxSYXRlTGltaXRzRm9yLCBtb2RlbFJlYXNvbmluZ0xldmVsc0ZvciwgbW9kZWxNZXRhZGF0YUZvciwgbW9kZWxNZXRhZGF0YUdlbmVyYXRlZEF0IH0gZnJvbSBcIi4vc3JjL21ldGFkYXRhLnRzXCI7XG5leHBvcnQgeyBERUZBVUxUX01PREVMX0NBQ0hFX1RUTF9NUywgREVGQVVMVF9GVVpaWV9USFJFU0hPTEQsIGxpc3RTZXJ2aW5nRW5kcG9pbnRzLCBsaXN0U2VydmluZ0VuZHBvaW50c1VuY2FjaGVkLCBjbGVhclNlcnZpbmdFbmRwb2ludHNDYWNoZSwgc2VhcmNoU2VydmluZ0VuZHBvaW50cywgcmVzb2x2ZU1vZGVsSWQgfSBmcm9tIFwiLi9zcmMvbW9kZWwtY2F0YWxvZy50c1wiO1xuZXhwb3J0IHR5cGUgeyBXb3Jrc3BhY2VDbGllbnRMaWtlLCBMaXN0U2VydmluZ0VuZHBvaW50c09wdGlvbnMgfSBmcm9tIFwiLi9zcmMvbW9kZWwtY2F0YWxvZy50c1wiO1xuZXhwb3J0IHsgREVGQVVMVF9NT0RFTF9DTElFTlRfQ0FDSEVfVFRMX01TLCBjcmVhdGVNb2RlbENsaWVudCwgbGlzdFByb2ZpbGVzLCBjcmVhdGVNb2RlbENsaWVudFdpdGhEYXRhYnJpY2tzQ2xpZW50LCBjcmVhdGVNb2RlbENsaWVudFdpdGhEZXBlbmRlbmNpZXMgfSBmcm9tIFwiLi9zcmMvbW9kZWwtY2xpZW50LnRzXCI7XG5leHBvcnQgdHlwZSB7IE1vZGVsQXV0aE9wdGlvbnMsIE1vZGVsQ2xpZW50T3B0aW9ucywgTW9kZWxDbGllbnRTdGF0dXMsIE1vZGVsUHJvdG9jb2wsIE1vZGVsUm91dGVJbnB1dCwgTW9kZWxSb3V0ZSwgTW9kZWxDbGllbnQgfSBmcm9tIFwiLi9zcmMvbW9kZWwtY2xpZW50LnRzXCI7XG5leHBvcnQgeyBNb2RlbEZhbWlseSwgbW9kZWxGYW1pbHksIG1vZGVsRmFtaWx5UmFuaywgbW9kZWxTZWFyY2hRdWVyeSwgaW5oZXJpdHNOYXRpdmVXZWJTZWFyY2gsIGlzRm91bmRhdGlvbk1vZGVsSWRlbnRpdHksIG1vZGVsU2VydmljZU5hbWUsIHN5c3RlbU1vZGVsU2VydmljZSwgcHJlZmVyc1N5c3RlbU1vZGVsU2VydmljZSwgaXNPcGVuV2VpZ2h0c0dwdCwgbW9kZWxSZWFzb25pbmdFZmZvcnRzLCBtb2RlbFN1cHBvcnRzVG9vbHMsIGVuZHBvaW50U3VwcG9ydHNUb29scywgbW9kZWxTZXJ2aW5nQXBpLCBjaGF0VG9vbFJlYXNvbmluZ0VmZm9ydCwgbW9kZWxTZXJ2aWNlTmFtZXMgfSBmcm9tIFwiLi9zcmMvcG9saWN5LnRzXCI7XG5leHBvcnQgeyBSZWFzb25pbmdMZXZlbCwgUkVBU09OSU5HX0xFVkVMUywgcGFyc2VSZWFzb25pbmcsIHBhcnNlUmVhc29uaW5nTGV2ZWxzLCBkb2N1bWVudGVkUmVhc29uaW5nTGV2ZWxzLCBkZWZhdWx0UmVhc29uaW5nTGV2ZWxzLCByZWFzb25pbmdMZXZlbHNGb3IsIGZvcm1hdFJlYXNvbmluZywgcmVtYXBSZWFzb25pbmcsIGFkYXB0UmVxdWVzdFJlYXNvbmluZywgbm9ybWFsaXplUmVhc29uaW5nVG9rZW4sIHVuaXF1ZVJlYXNvbmluZ0xldmVscyB9IGZyb20gXCIuL3NyYy9yZWFzb25pbmctdHJhbnNsYXRpb24udHNcIjtcbmV4cG9ydCB0eXBlIHsgQWRhcHRlZFJlcXVlc3RSZWFzb25pbmcgfSBmcm9tIFwiLi9zcmMvcmVhc29uaW5nLXRyYW5zbGF0aW9uLnRzXCI7XG5leHBvcnQgeyByYW5rTW9kZWxJZExpdmUsIHNlYXJjaE1vZGVscywgc2VsZWN0TW9kZWwgfSBmcm9tIFwiLi9zcmMvcmVzb2x2ZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBTZWxlY3RNb2RlbElucHV0LCBTZWFyY2hNb2RlbHNJbnB1dCB9IGZyb20gXCIuL3NyYy9yZXNvbHZlLnRzXCI7XG5leHBvcnQgeyBDT01NSVRURURfUkVUSVJFRF9NT0RFTFMsIFJFVElSRURfTU9ERUxTX0dFTkVSQVRFRF9BVCwgcmVwbGFjZVJldGlyZWRNb2RlbE5hbWVzLCByZXRpcmVkTW9kZWxOYW1lcywgbW9kZWxTdGF0dXNGb3IgfSBmcm9tIFwiLi9zcmMvcmV0aXJlbWVudC50c1wiO1xuZXhwb3J0IHsgbG9va3VwTW9kZWxzLCByYW5rTW9kZWxJZCwgcmVzb2x2ZU1vZGVsIH0gZnJvbSBcIi4vc3JjL3NlbGVjdGlvbi50c1wiO1xuZXhwb3J0IHR5cGUgeyBNb2RlbFNlbGVjdGlvblBvbGljeU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvc2VsZWN0aW9uLnRzXCI7XG4iXX0=
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxhQUFhLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxLQUFLLGdCQUFnQixNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLFlBQVksTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEtBQUssV0FBVyxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLG9CQUFvQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxLQUFLLFVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkgsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pKLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSwrQkFBK0IsRUFBRSxtQkFBbUIsRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLDBCQUEwQixFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXhaLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTVHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSwyQkFBMkIsRUFBRSxxQkFBcUIsRUFBRSxxQkFBcUIsRUFBRSx1QkFBdUIsRUFBRSxrQkFBa0IsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTNPLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSx1QkFBdUIsRUFBRSx5QkFBeUIsRUFBRSx1QkFBdUIsRUFBRSw2QkFBNkIsRUFBRSxvQkFBb0IsRUFBRSwwQkFBMEIsRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBRSxnQkFBZ0IsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RVLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSx1QkFBdUIsRUFBRSxvQkFBb0IsRUFBRSw0QkFBNEIsRUFBRSwwQkFBMEIsRUFBRSxzQkFBc0IsRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVyTixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLHFDQUFxQyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckwsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLHlCQUF5QixFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLGVBQWUsRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hYLE9BQU8sRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLG9CQUFvQixFQUFFLHlCQUF5QixFQUFFLHNCQUFzQixFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUscUJBQXFCLEVBQUUsdUJBQXVCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV2UyxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU5RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsMkJBQTJCLEVBQUUsd0JBQXdCLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekosT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL21vZGVsXCI7XG5leHBvcnQgY29uc3QgUEFDS0FHRV9WRVJTSU9OID0gXCIwLjkuMTc3XCI7XG5leHBvcnQgKiBhcyBiaW5kaW5ncyBmcm9tIFwiLi9zcmMvYmluZGluZ3MudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9iaW5kaW5ncy50c1wiO1xuZXhwb3J0ICogYXMgY2xhc3NlcyBmcm9tIFwiLi9zcmMvY2xhc3Nlcy50c1wiO1xuZXhwb3J0ICogYXMgY2xhc3NpZnkgZnJvbSBcIi4vc3JjL2NsYXNzaWZ5LnRzXCI7XG5leHBvcnQgKiBhcyBmYWxsYmFjayBmcm9tIFwiLi9zcmMvZmFsbGJhY2sudHNcIjtcbmV4cG9ydCAqIGFzIGludm9rZSBmcm9tIFwiLi9zcmMvaW52b2tlLnRzXCI7XG5leHBvcnQgKiBhcyBtZXRhZGF0YUNhY2hlIGZyb20gXCIuL3NyYy9tZXRhZGF0YS1jYWNoZS50c1wiO1xuZXhwb3J0ICogYXMgbWV0YWRhdGFDb250cmFjdCBmcm9tIFwiLi9zcmMvbWV0YWRhdGEtY29udHJhY3QudHNcIjtcbmV4cG9ydCAqIGFzIG1ldGFkYXRhIGZyb20gXCIuL3NyYy9tZXRhZGF0YS50c1wiO1xuZXhwb3J0ICogYXMgbW9kZWxDYXRhbG9nIGZyb20gXCIuL3NyYy9tb2RlbC1jYXRhbG9nLnRzXCI7XG5leHBvcnQgKiBhcyBtb2RlbENsaWVudCBmcm9tIFwiLi9zcmMvbW9kZWwtY2xpZW50LnRzXCI7XG5leHBvcnQgKiBhcyBwb2xpY3kgZnJvbSBcIi4vc3JjL3BvbGljeS50c1wiO1xuZXhwb3J0ICogYXMgcmVhc29uaW5nVHJhbnNsYXRpb24gZnJvbSBcIi4vc3JjL3JlYXNvbmluZy10cmFuc2xhdGlvbi50c1wiO1xuZXhwb3J0ICogYXMgcmVzb2x2ZSBmcm9tIFwiLi9zcmMvcmVzb2x2ZS50c1wiO1xuZXhwb3J0ICogYXMgcmV0aXJlbWVudCBmcm9tIFwiLi9zcmMvcmV0aXJlbWVudC50c1wiO1xuZXhwb3J0ICogYXMgc2VsZWN0aW9uIGZyb20gXCIuL3NyYy9zZWxlY3Rpb24udHNcIjtcbmV4cG9ydCB7IENIQVRfQ0xBU1NfT1JERVIsIE1PREVMX0NMQVNTX09SREVSLCBpc0NoYXRDbGFzcywgcGFyc2VNb2RlbENsYXNzLCBjbGFzc2VzQXRPckJlbG93IH0gZnJvbSBcIi4vc3JjL2NsYXNzZXMudHNcIjtcbmV4cG9ydCB7IHN1cHBvcnRzVG9vbHNCeUZhbWlseSwgZW5kcG9pbnRDYXBhYmlsaXRpZXMsIHZlcnNpb25UdXBsZSwgY29tcGFyZVZlcnNpb25UdXBsZXMsIGNsYXNzaWZ5QnlGYW1pbHksIGNsYXNzaWZ5RW5kcG9pbnRzIH0gZnJvbSBcIi4vc3JjL2NsYXNzaWZ5LnRzXCI7XG5leHBvcnQgeyBtb2RlbHNGb3JDbGFzcywgbW9kZWxGb3JDbGFzcywgRkFMTEJBQ0tfTU9ERUxfSURTIH0gZnJvbSBcIi4vc3JjL2ZhbGxiYWNrLnRzXCI7XG5leHBvcnQgeyBJTlZPQ0FUSU9OU19TVUZGSVgsIFNFUlZJTkdfRU5EUE9JTlRTX1BBVEgsIFJFU1BPTlNFU19QQVRILCBPUEVOX1JFU1BPTlNFU19QQVRILCBDSEFUX0NPTVBMRVRJT05TX1BBVEgsIEFJX0dBVEVXQVlfQ09ERVhfUkVTUE9OU0VTX1BBVEgsIEFOVEhST1BJQ19CQVNFX1BBVEgsIEFOVEhST1BJQ19NRVNTQUdFU19QQVRILCBzZXJ2aW5nRW5kcG9pbnRzVXJsLCBpbnZvY2F0aW9uc1VybCwgcmVzcG9uc2VzVXJsLCBvcGVuUmVzcG9uc2VzVXJsLCBjaGF0Q29tcGxldGlvbnNVcmwsIGFpR2F0ZXdheUNvZGV4UmVzcG9uc2VzVXJsLCBhbnRocm9waWNNZXNzYWdlc1VybCwgYW50aHJvcGljQmFzZVVybCwgcmVzcG9uc2VzVXBzdHJlYW1VcmwsIGF1dGhIZWFkZXJzIH0gZnJvbSBcIi4vc3JjL2ludm9rZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBBdXRoZW50aWNhdGluZ0NsaWVudExpa2UgfSBmcm9tIFwiLi9zcmMvaW52b2tlLnRzXCI7XG5leHBvcnQgeyBjcmVhdGVNZXRhZGF0YUNhY2hlLCBtZXJnZVByZWZlckZyZXNoTGlzdCwgbWVyZ2VQcmVmZXJGcmVzaFJlY29yZCB9IGZyb20gXCIuL3NyYy9tZXRhZGF0YS1jYWNoZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBNZXRhZGF0YUNhY2hlT3B0aW9ucywgTWV0YWRhdGFDYWNoZU1lcmdlSW5wdXQsIE1ldGFkYXRhQ2FjaGUgfSBmcm9tIFwiLi9zcmMvbWV0YWRhdGEtY2FjaGUudHNcIjtcbmV4cG9ydCB7IE1PREVMX01FVEFEQVRBX1RUTF9NUywgUkVUSVJFRF9NT0RFTFNfVVJMLCBPUEVOQUlfUkVTUE9OU0VTX01PREVMU19VUkwsIFdFQl9TRUFSQ0hfTU9ERUxTX1VSTCwgTU9ERUxfUkFURV9MSU1JVFNfVVJMLCBRVUVSWV9SRUFTT05fTU9ERUxTX1VSTCwgTU9ERUxTX0RFVl9BUElfVVJMLCBNT0RFTFBBUkFNU19ERVZfTU9ERUxTX1VSTCB9IGZyb20gXCIuL3NyYy9tZXRhZGF0YS1jb250cmFjdC50c1wiO1xuZXhwb3J0IHR5cGUgeyBSZXRpcmVkTW9kZWxzU25hcHNob3QsIE1vZGVsQ2FwYWJpbGl0eUNhdGFsb2d1ZSwgTW9kZWxDYXBhYmlsaXRpZXNTbmFwc2hvdCwgTW9kZWxSYXRlTGltaXRDYXRhbG9ndWUsIE1vZGVsUmF0ZUxpbWl0c1NuYXBzaG90LCBSZWFzb25pbmdNb2RlbHNTbmFwc2hvdCwgTW9kZWxzRGV2Q2FwYWJpbGl0eUNhdGFsb2d1ZSwgTW9kZWxzRGV2U25hcHNob3QsIE1vZGVsUGFyYW1zQ2F0YWxvZ3VlLCBNb2RlbFBhcmFtc1NuYXBzaG90IH0gZnJvbSBcIi4vc3JjL21ldGFkYXRhLWNvbnRyYWN0LnRzXCI7XG5leHBvcnQgeyByZWZyZXNoTW9kZWxNZXRhZGF0YSwgaHlkcmF0ZU1vZGVsTWV0YWRhdGEsIHJlYXNvbmluZ01vZGVsQ2F0YWxvZ3VlLCBsZWFybmVkUmVhc29uaW5nQ2F0YWxvZ3VlLCByZW1lbWJlclJlYXNvbmluZ0xldmVscywgbGVhcm5SZWFzb25pbmdMZXZlbHNGcm9tRXJyb3IsIG1vZGVsQ2FwYWJpbGl0aWVzRm9yLCBtb2RlbFRlbXBlcmF0dXJlU3VwcG9ydEZvciwgbW9kZWxSYXRlTGltaXRzRm9yLCBtb2RlbFJlYXNvbmluZ0xldmVsc0ZvciwgbW9kZWxNZXRhZGF0YUZvciwgbW9kZWxNZXRhZGF0YUdlbmVyYXRlZEF0IH0gZnJvbSBcIi4vc3JjL21ldGFkYXRhLnRzXCI7XG5leHBvcnQgeyBERUZBVUxUX01PREVMX0NBQ0hFX1RUTF9NUywgREVGQVVMVF9GVVpaWV9USFJFU0hPTEQsIGxpc3RTZXJ2aW5nRW5kcG9pbnRzLCBsaXN0U2VydmluZ0VuZHBvaW50c1VuY2FjaGVkLCBjbGVhclNlcnZpbmdFbmRwb2ludHNDYWNoZSwgc2VhcmNoU2VydmluZ0VuZHBvaW50cywgcmVzb2x2ZU1vZGVsSWQgfSBmcm9tIFwiLi9zcmMvbW9kZWwtY2F0YWxvZy50c1wiO1xuZXhwb3J0IHR5cGUgeyBXb3Jrc3BhY2VDbGllbnRMaWtlLCBMaXN0U2VydmluZ0VuZHBvaW50c09wdGlvbnMgfSBmcm9tIFwiLi9zcmMvbW9kZWwtY2F0YWxvZy50c1wiO1xuZXhwb3J0IHsgREVGQVVMVF9NT0RFTF9DTElFTlRfQ0FDSEVfVFRMX01TLCBjcmVhdGVNb2RlbENsaWVudCwgbGlzdFByb2ZpbGVzLCBjcmVhdGVNb2RlbENsaWVudFdpdGhEYXRhYnJpY2tzQ2xpZW50LCBjcmVhdGVNb2RlbENsaWVudFdpdGhEZXBlbmRlbmNpZXMgfSBmcm9tIFwiLi9zcmMvbW9kZWwtY2xpZW50LnRzXCI7XG5leHBvcnQgdHlwZSB7IE1vZGVsQXV0aE9wdGlvbnMsIE1vZGVsQ2xpZW50T3B0aW9ucywgTW9kZWxDbGllbnRTdGF0dXMsIE1vZGVsUHJvdG9jb2wsIE1vZGVsUm91dGVJbnB1dCwgTW9kZWxSb3V0ZSwgTW9kZWxDbGllbnQgfSBmcm9tIFwiLi9zcmMvbW9kZWwtY2xpZW50LnRzXCI7XG5leHBvcnQgeyBNb2RlbEZhbWlseSwgbW9kZWxGYW1pbHksIG1vZGVsRmFtaWx5UmFuaywgbW9kZWxTZWFyY2hRdWVyeSwgaW5oZXJpdHNOYXRpdmVXZWJTZWFyY2gsIGlzRm91bmRhdGlvbk1vZGVsSWRlbnRpdHksIG1vZGVsU2VydmljZU5hbWUsIHN5c3RlbU1vZGVsU2VydmljZSwgcHJlZmVyc1N5c3RlbU1vZGVsU2VydmljZSwgaXNPcGVuV2VpZ2h0c0dwdCwgaXNPcGVuV2VpZ2h0c01vZGVsLCBtb2RlbFJlYXNvbmluZ0VmZm9ydHMsIG1vZGVsU3VwcG9ydHNUb29scywgZW5kcG9pbnRTdXBwb3J0c1Rvb2xzLCBtb2RlbFNlcnZpbmdBcGksIGNoYXRUb29sUmVhc29uaW5nRWZmb3J0LCBtb2RlbFNlcnZpY2VOYW1lcyB9IGZyb20gXCIuL3NyYy9wb2xpY3kudHNcIjtcbmV4cG9ydCB7IFJlYXNvbmluZ0xldmVsLCBSRUFTT05JTkdfTEVWRUxTLCBwYXJzZVJlYXNvbmluZywgcGFyc2VSZWFzb25pbmdMZXZlbHMsIGRvY3VtZW50ZWRSZWFzb25pbmdMZXZlbHMsIGRlZmF1bHRSZWFzb25pbmdMZXZlbHMsIHJlYXNvbmluZ0xldmVsc0ZvciwgZm9ybWF0UmVhc29uaW5nLCByZW1hcFJlYXNvbmluZywgYWRhcHRSZXF1ZXN0UmVhc29uaW5nLCBub3JtYWxpemVSZWFzb25pbmdUb2tlbiwgdW5pcXVlUmVhc29uaW5nTGV2ZWxzIH0gZnJvbSBcIi4vc3JjL3JlYXNvbmluZy10cmFuc2xhdGlvbi50c1wiO1xuZXhwb3J0IHR5cGUgeyBBZGFwdGVkUmVxdWVzdFJlYXNvbmluZyB9IGZyb20gXCIuL3NyYy9yZWFzb25pbmctdHJhbnNsYXRpb24udHNcIjtcbmV4cG9ydCB7IHJhbmtNb2RlbElkTGl2ZSwgc2VhcmNoTW9kZWxzLCBzZWxlY3RNb2RlbCB9IGZyb20gXCIuL3NyYy9yZXNvbHZlLnRzXCI7XG5leHBvcnQgdHlwZSB7IFNlbGVjdE1vZGVsSW5wdXQsIFNlYXJjaE1vZGVsc0lucHV0IH0gZnJvbSBcIi4vc3JjL3Jlc29sdmUudHNcIjtcbmV4cG9ydCB7IENPTU1JVFRFRF9SRVRJUkVEX01PREVMUywgUkVUSVJFRF9NT0RFTFNfR0VORVJBVEVEX0FULCByZXBsYWNlUmV0aXJlZE1vZGVsTmFtZXMsIHJldGlyZWRNb2RlbE5hbWVzLCBtb2RlbFN0YXR1c0ZvciB9IGZyb20gXCIuL3NyYy9yZXRpcmVtZW50LnRzXCI7XG5leHBvcnQgeyBsb29rdXBNb2RlbHMsIHJhbmtNb2RlbElkLCByZXNvbHZlTW9kZWwgfSBmcm9tIFwiLi9zcmMvc2VsZWN0aW9uLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1vZGVsU2VsZWN0aW9uUG9saWN5T3B0aW9ucyB9IGZyb20gXCIuL3NyYy9zZWxlY3Rpb24udHNcIjtcbiJdfQ==
|
package/lib/src/policy.d.ts
CHANGED
|
@@ -50,6 +50,8 @@ export declare function systemModelService(endpoint: Pick<ServingEndpointSummary
|
|
|
50
50
|
export declare function prefersSystemModelService(requested: string | undefined, endpointName: string, serviceName: string, preferSystemModels: boolean): boolean;
|
|
51
51
|
/** Return whether an identity is hosted GPT-OSS rather than a GPT generation. */
|
|
52
52
|
export declare function isOpenWeightsGpt(name: string): boolean;
|
|
53
|
+
/** Return whether policy recognizes a hosted identity as an open-weight model. */
|
|
54
|
+
export declare function isOpenWeightsModel(name: string): boolean;
|
|
53
55
|
/** Return the reasoning efforts accepted by a model family. */
|
|
54
56
|
export declare function modelReasoningEfforts(name: string): ReasoningEffort[];
|
|
55
57
|
/** Return whether policy verifies a complete tool-calling round trip. */
|
package/lib/src/policy.js
CHANGED
|
@@ -18,6 +18,14 @@ export const ModelFamily = {
|
|
|
18
18
|
Gte: "gte",
|
|
19
19
|
};
|
|
20
20
|
const FAMILIES = Object.values(ModelFamily);
|
|
21
|
+
const OPEN_WEIGHT_FAMILIES = new Set([
|
|
22
|
+
ModelFamily.Llama,
|
|
23
|
+
ModelFamily.Deepseek,
|
|
24
|
+
ModelFamily.Qwen,
|
|
25
|
+
ModelFamily.Glm,
|
|
26
|
+
ModelFamily.Kimi,
|
|
27
|
+
ModelFamily.Gemma,
|
|
28
|
+
]);
|
|
21
29
|
const STANDARD = ["low", "medium", "high"];
|
|
22
30
|
const GPT_5_6 = ["none", "low", "medium", "high", "xhigh", "max"];
|
|
23
31
|
const GPT_5_5_PRO = ["medium", "high", "xhigh"];
|
|
@@ -119,6 +127,13 @@ export function prefersSystemModelService(requested, endpointName, serviceName,
|
|
|
119
127
|
export function isOpenWeightsGpt(name) {
|
|
120
128
|
return modelFamily(name) === "gpt" && /(?:^|[-_.])oss(?:[-_.]|$)/i.test(name);
|
|
121
129
|
}
|
|
130
|
+
/** Return whether policy recognizes a hosted identity as an open-weight model. */
|
|
131
|
+
export function isOpenWeightsModel(name) {
|
|
132
|
+
if (isOpenWeightsGpt(name))
|
|
133
|
+
return true;
|
|
134
|
+
const family = modelFamily(name);
|
|
135
|
+
return family !== undefined && OPEN_WEIGHT_FAMILIES.has(family);
|
|
136
|
+
}
|
|
122
137
|
function isZeroVersion(version) {
|
|
123
138
|
return version.every((part) => (part ?? 0) === 0);
|
|
124
139
|
}
|
|
@@ -272,4 +287,4 @@ function parseModelName(name) {
|
|
|
272
287
|
model: [...remainder.slice(0, versionStart), ...remainder.slice(cursor)],
|
|
273
288
|
};
|
|
274
289
|
}
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtRUFBbUU7QUFFbkUsT0FBTyxFQUNMLFVBQVUsR0FHWCxNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUYscUVBQXFFO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QixNQUFNLEVBQUUsUUFBUTtJQUNoQixHQUFHLEVBQUUsS0FBSztJQUNWLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEtBQUssRUFBRSxPQUFPO0lBQ2QsSUFBSSxFQUFFLE1BQU07SUFDWixRQUFRLEVBQUUsVUFBVTtJQUNwQixJQUFJLEVBQUUsTUFBTTtJQUNaLEdBQUcsRUFBRSxLQUFLO0lBQ1YsSUFBSSxFQUFFLE1BQU07SUFDWixLQUFLLEVBQUUsT0FBTztJQUNkLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLEdBQUcsRUFBRSxLQUFLO0lBQ1YsR0FBRyxFQUFFLEtBQUs7Q0FDRixDQUFDO0FBS1gsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUU1QyxNQUFNLFFBQVEsR0FBc0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzlELE1BQU0sT0FBTyxHQUFzQixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDckYsTUFBTSxXQUFXLEdBQXNCLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuRSxNQUFNLE1BQU0sR0FBc0IsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFB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QUFJLE1BQU0sS0FBSyxNQUFNLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFFLENBQUMsRUFBRSxDQUFDO1FBQ2hFLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDakIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUNELElBQUksTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzFCLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN0RSxJQUFJLFFBQVEsSUFBSSxDQUFDO1lBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkUsWUFBWSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUNELElBQUksTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQ3RCLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN0RSxJQUFJLFFBQVEsSUFBSSxDQUFDO1lBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkUsWUFBWSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUNELElBQUksWUFBWSxHQUFHLENBQUM7UUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQ3ZFLE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztJQUM3QixJQUFJLE1BQU0sR0FBRyxZQUFZLENBQUM7SUFDMUIsT0FBTyxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBRSxDQUFDLEVBQUUsQ0FBQztRQUN0RixPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTztRQUNMLE1BQU07UUFDTixPQUFPO1FBQ1AsS0FBSyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDekUsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVHlwZVNjcmlwdC1vd25lZCBtb2RlbC1mYW1pbHkgYW5kIHNlcnZpbmcgY2FwYWJpbGl0eSBwb2xpY3kuICovXG5cbmltcG9ydCB7XG4gIE1vZGVsQ2xhc3MsXG4gIHR5cGUgUmVhc29uaW5nRWZmb3J0LFxuICB0eXBlIFNlcnZpbmdFbmRwb2ludFN1bW1hcnksXG59IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1tb2RlbFwiO1xuXG5pbXBvcnQgeyBjb21wYXJlVmVyc2lvblR1cGxlcywgc3VwcG9ydHNUb29sc0J5RmFtaWx5LCB2ZXJzaW9uVHVwbGUgfSBmcm9tIFwiLi9jbGFzc2lmeS50c1wiO1xuXG4vKiogUmVjb2duaXplZCBtb2RlbCBmYW1pbGllcyB1c2VkIGJ5IHJvdXRpbmcgYW5kIHByb3ZpZGVyIHBvbGljeS4gKi9cbmV4cG9ydCBjb25zdCBNb2RlbEZhbWlseSA9IHtcbiAgQ2xhdWRlOiBcImNsYXVkZVwiLFxuICBHcHQ6IFwiZ3B0XCIsXG4gIEdlbWluaTogXCJnZW1pbmlcIixcbiAgTGxhbWE6IFwibGxhbWFcIixcbiAgR3JvazogXCJncm9rXCIsXG4gIERlZXBzZWVrOiBcImRlZXBzZWVrXCIsXG4gIFF3ZW46IFwicXdlblwiLFxuICBHbG06IFwiZ2xtXCIsXG4gIEtpbWk6IFwia2ltaVwiLFxuICBHZW1tYTogXCJnZW1tYVwiLFxuICBJbmtsaW5nOiBcImlua2xpbmdcIixcbiAgQmdlOiBcImJnZVwiLFxuICBHdGU6IFwiZ3RlXCIsXG59IGFzIGNvbnN0O1xuXG4vKiogUmVjb2duaXplZCBtb2RlbCBmYW1pbHkgdmFsdWUuICovXG5leHBvcnQgdHlwZSBNb2RlbEZhbWlseSA9ICh0eXBlb2YgTW9kZWxGYW1pbHkpW2tleW9mIHR5cGVvZiBNb2RlbEZhbWlseV07XG5cbmNvbnN0IEZBTUlMSUVTID0gT2JqZWN0LnZhbHVlcyhNb2RlbEZhbWlseSk7XG5cbmNvbnN0IFNUQU5EQVJEOiBSZWFzb25pbmdFZmZvcnRbXSA9IFtcImxvd1wiLCBcIm1lZGl1bVwiLCBcImhpZ2hcIl07XG5jb25zdCBHUFRfNV82OiBSZWFzb25pbmdFZmZvcnRbXSA9IFtcIm5vbmVcIiwgXCJsb3dcIiwgXCJtZWRpdW1cIiwgXCJoaWdoXCIsIFwieGhpZ2hcIiwgXCJtYXhcIl07XG5jb25zdCBHUFRfNV81X1BSTzogUmVhc29uaW5nRWZmb3J0W10gPSBbXCJtZWRpdW1cIiwgXCJoaWdoXCIsIFwieGhpZ2hcIl07XG5jb25zdCBDTEFVREU6IFJlYXNvbmluZ0VmZm9ydFtdID0gW1wibm9uZVwiLCBcIm1pbmltYWxcIiwgXCJsb3dcIiwgXCJtZWRpdW1cIiwgXCJoaWdoXCIsIFwieGhpZ2hcIiwgXCJtYXhcIl07XG5jb25zdCBHRU1JTkk6IFJlYXNvbmluZ0VmZm9ydFtdID0gW1wibWluaW1hbFwiLCBcImxvd1wiLCBcIm1lZGl1bVwiLCBcImhpZ2hcIl07XG5cbmludGVyZmFjZSBQYXJzZWRNb2RlbE5hbWUge1xuICBmYW1pbHk6IE1vZGVsRmFtaWx5O1xuICB2ZXJzaW9uOiBudW1iZXJbXTtcbiAgbW9kZWw6IHN0cmluZ1tdO1xufVxuXG4vKiogUmV0dXJuIHRoZSBub3JtYWxpemVkIGZhbWlseSBwYXJzZWQgZnJvbSBhIG1vZGVsIGlkZW50aXR5LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vZGVsRmFtaWx5KG5hbWU6IHN0cmluZyk6IE1vZGVsRmFtaWx5IHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHBhcnNlTW9kZWxOYW1lKG5hbWUpPy5mYW1pbHk7XG59XG5cbi8qKiBSYW5rIGEgZmFtaWx5IGJ5IGhvdyBtYWpvciBpdCBpczsgdW5yZWNvZ25pemVkIGZhbWlsaWVzIHNvcnQgbGFzdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb2RlbEZhbWlseVJhbmsoZmFtaWx5OiBzdHJpbmcpOiBudW1iZXIge1xuICBjb25zdCBpbmRleCA9IEZBTUlMSUVTLmluZGV4T2YoZmFtaWx5IGFzIE1vZGVsRmFtaWx5KTtcbiAgcmV0dXJuIGluZGV4ID49IDAgPyBpbmRleCA6IEZBTUlMSUVTLmxlbmd0aDtcbn1cblxuLyoqIE5vcm1hbGl6ZSBhIHJlY29nbml6ZWQgbW9kZWwgaWRlbnRpdHkgaW50byBmYW1pbHksIHZlcnNpb24sIGFuZCB2YXJpYW50IHRva2Vucy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb2RlbFNlYXJjaFF1ZXJ5KG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHBhcnNlZCA9IHBhcnNlTW9kZWxOYW1lKG5hbWUpO1xuICBpZiAoIXBhcnNlZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIFtwYXJzZWQuZmFtaWx5LCAuLi5wYXJzZWQudmVyc2lvbi5tYXAoU3RyaW5nKSwgLi4ucGFyc2VkLm1vZGVsXS5qb2luKFwiIFwiKTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gd2hldGhlciBgbmFtZWAgaGFzIG5hdGl2ZSB3ZWIgc2VhcmNoOiBhbiBleGFjdCBkb2N1bWVudGVkIGlkZW50aXR5LCBvclxuICogYSBsYXRlciB7QGxpbmsgdmVyc2lvblR1cGxlfSBpbiB0aGUgc2FtZSBmYW1pbHkgYXMgYSBkb2N1bWVudGVkIG5hdGl2ZVxuICogd2ViLXNlYXJjaCBtb2RlbC4gSW50cmEtZmFtaWx5IGZsb29ycyB1c2UgdGhlIG5hbWUgZGlnaXQgcGFyc2VyIHNvIGlkZW50aXRpZXNcbiAqIGxpa2UgYGRhdGFicmlja3MtY2xhdWRlLW9wdXMtNC04YCBhbmQgYHN5c3RlbS5haS5ncHQtNi0xLXNvbGAgY29tcGFyZS5cbiAqIEhvc3RlZCBHUFQtT1NTIHdlaWdodHMgbmV2ZXIgaW5oZXJpdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaGVyaXRzTmF0aXZlV2ViU2VhcmNoKG5hbWU6IHN0cmluZywgZG9jdW1lbnRlZDogSXRlcmFibGU8c3RyaW5nPik6IGJvb2xlYW4ge1xuICBjb25zdCBkb2N1bWVudGVkS2V5cyA9IGRvY3VtZW50ZWQgaW5zdGFuY2VvZiBTZXQgPyBkb2N1bWVudGVkIDogbmV3IFNldChkb2N1bWVudGVkKTtcbiAgY29uc3Qga2V5ID0gbW9kZWxTZWFyY2hRdWVyeShuYW1lKT8ucmVwbGFjZUFsbChcIiBcIiwgXCItXCIpO1xuICBpZiAoa2V5ICYmIGRvY3VtZW50ZWRLZXlzLmhhcyhrZXkpKSByZXR1cm4gdHJ1ZTtcbiAgY29uc3QgZmFtaWx5ID0gbW9kZWxGYW1pbHkobmFtZSk7XG4gIGlmICghZmFtaWx5IHx8IGlzT3BlbldlaWdodHNHcHQobmFtZSkpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgdmVyc2lvbiA9IHZlcnNpb25UdXBsZShuYW1lKTtcbiAgaWYgKGlzWmVyb1ZlcnNpb24odmVyc2lvbikpIHJldHVybiBmYWxzZTtcbiAgbGV0IGZsb29yOiByZWFkb25seSBudW1iZXJbXSB8IHVuZGVmaW5lZDtcbiAgZm9yIChjb25zdCBlbnRyeSBvZiBkb2N1bWVudGVkS2V5cykge1xuICAgIGlmIChtb2RlbEZhbWlseShlbnRyeSkgIT09IGZhbWlseSB8fCBpc09wZW5XZWlnaHRzR3B0KGVudHJ5KSkgY29udGludWU7XG4gICAgY29uc3QgZG9jdW1lbnRlZFZlcnNpb24gPSB2ZXJzaW9uVHVwbGUoZW50cnkpO1xuICAgIGlmIChpc1plcm9WZXJzaW9uKGRvY3VtZW50ZWRWZXJzaW9uKSkgY29udGludWU7XG4gICAgaWYgKCFmbG9vciB8fCBjb21wYXJlVmVyc2lvblR1cGxlcyhkb2N1bWVudGVkVmVyc2lvbiwgZmxvb3IpIDwgMCkge1xuICAgICAgZmxvb3IgPSBkb2N1bWVudGVkVmVyc2lvbjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZsb29yICE9PSB1bmRlZmluZWQgJiYgY29tcGFyZVZlcnNpb25UdXBsZXModmVyc2lvbiwgZmxvb3IpID49IDA7XG59XG5cbi8qKlxuICogUmV0dXJuIHdoZXRoZXIgYW4gaWRlbnRpdHkgbmFtZXMgYSBEYXRhYnJpY2tzLWhvc3RlZCBmb3VuZGF0aW9uIG1vZGVsXG4gKiAoYGRhdGFicmlja3MtKmAgZW5kcG9pbnQgb3IgYHN5c3RlbS5haS4qYCBtb2RlbCBzZXJ2aWNlKS4gQ3VzdG9tIGFuZFxuICogZXh0ZXJuYWwgZW5kcG9pbnRzIHVzZSBhcmJpdHJhcnkgbmFtZXMsIHNvIHRoZWlyIGRpZ2l0cyBhcmUgbm90IHZlcnNpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGb3VuZGF0aW9uTW9kZWxJZGVudGl0eShuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIC9eKD86ZGF0YWJyaWNrcy18c3lzdGVtXFwuYWlcXC4pL2kudGVzdChuYW1lLnRyaW0oKSk7XG59XG5cbi8qKiBOb3JtYWxpemUgYSBzZXJ2ZWQtZW50aXR5IGlkZW50aXR5IHRvIGl0cyBBSSBHYXRld2F5IG1vZGVsLXNlcnZpY2UgbmFtZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb2RlbFNlcnZpY2VOYW1lKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBub3JtYWxpemVkID0gdmFsdWU/LnRyaW0oKS5yZXBsYWNlKC9eZGF0YWJyaWNrc1xcLy8sIFwiXCIpO1xuICBpZiAoIW5vcm1hbGl6ZWQpIHJldHVybiB1bmRlZmluZWQ7XG4gIGlmIChub3JtYWxpemVkLnN0YXJ0c1dpdGgoXCJzeXN0ZW0uYWkuZGF0YWJyaWNrcy1cIikpIHtcbiAgICByZXR1cm4gYHN5c3RlbS5haS4ke25vcm1hbGl6ZWQuc2xpY2UoXCJzeXN0ZW0uYWkuZGF0YWJyaWNrcy1cIi5sZW5ndGgpfWA7XG4gIH1cbiAgaWYgKG5vcm1hbGl6ZWQuc3RhcnRzV2l0aChcImRhdGFicmlja3MtXCIpKSB7XG4gICAgcmV0dXJuIGBzeXN0ZW0uYWkuJHtub3JtYWxpemVkLnNsaWNlKFwiZGF0YWJyaWNrcy1cIi5sZW5ndGgpfWA7XG4gIH1cbiAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG59XG5cbi8qKiBSZXR1cm4gdGhlIGBzeXN0ZW0uYWkuKmAgQUkgR2F0ZXdheSBDb2RleCBzZXJ2aWNlIGJlaGluZCBhbiBlbmRwb2ludCwgd2hlbiBvbmUgZXhpc3RzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN5c3RlbU1vZGVsU2VydmljZShcbiAgZW5kcG9pbnQ6IFBpY2s8U2VydmluZ0VuZHBvaW50U3VtbWFyeSwgXCJuYW1lXCIgfCBcIm1vZGVsU2VydmljZU5hbWVcIj4sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBzZXJ2aWNlID0gbW9kZWxTZXJ2aWNlTmFtZShlbmRwb2ludC5tb2RlbFNlcnZpY2VOYW1lKTtcbiAgaWYgKCFzZXJ2aWNlPy5zdGFydHNXaXRoKFwic3lzdGVtLmFpLlwiKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgZmFtaWx5ID0gbW9kZWxGYW1pbHkoZW5kcG9pbnQubmFtZSk7XG4gIHJldHVybiBmYW1pbHkgPT09IE1vZGVsRmFtaWx5LkNsYXVkZSB8fCBmYW1pbHkgPT09IE1vZGVsRmFtaWx5LkdlbWluaSA/IHVuZGVmaW5lZCA6IHNlcnZpY2U7XG59XG5cbi8qKlxuICogUmV0dXJuIHdoZXRoZXIgYSByZXF1ZXN0IHNob3VsZCB1c2UgdGhlIGBzeXN0ZW0uYWkuKmAgc2VydmljZSBpbnN0ZWFkIG9mIHRoZVxuICogc2VydmluZyBlbmRwb2ludC4gQW4gZXhhY3QgZW5kcG9pbnQgaWQgb3IgZXhhY3Qgc2VydmljZSBuYW1lIGFsd2F5cyB3aW5zO1xuICogb3RoZXJ3aXNlIGBwcmVmZXJTeXN0ZW1Nb2RlbHNgIGRlY2lkZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVmZXJzU3lzdGVtTW9kZWxTZXJ2aWNlKFxuICByZXF1ZXN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgZW5kcG9pbnROYW1lOiBzdHJpbmcsXG4gIHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gIHByZWZlclN5c3RlbU1vZGVsczogYm9vbGVhbixcbik6IGJvb2xlYW4ge1xuICBjb25zdCBuYW1lID0gcmVxdWVzdGVkXG4gICAgPy50cmltKClcbiAgICAucmVwbGFjZSgvXig/OmRieHxkYXRhYnJpY2tzKVxcLy9pLCBcIlwiKVxuICAgIC50b0xvd2VyQ2FzZSgpO1xuICBpZiAobmFtZSA9PT0gZW5kcG9pbnROYW1lLnRvTG93ZXJDYXNlKCkpIHJldHVybiBmYWxzZTtcbiAgaWYgKG5hbWUgPT09IHNlcnZpY2VOYW1lLnRvTG93ZXJDYXNlKCkpIHJldHVybiB0cnVlO1xuICByZXR1cm4gcHJlZmVyU3lzdGVtTW9kZWxzO1xufVxuXG4vKiogUmV0dXJuIHdoZXRoZXIgYW4gaWRlbnRpdHkgaXMgaG9zdGVkIEdQVC1PU1MgcmF0aGVyIHRoYW4gYSBHUFQgZ2VuZXJhdGlvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc09wZW5XZWlnaHRzR3B0KG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gbW9kZWxGYW1pbHkobmFtZSkgPT09IFwiZ3B0XCIgJiYgLyg/Ol58Wy1fLl0pb3NzKD86Wy1fLl18JCkvaS50ZXN0KG5hbWUpO1xufVxuXG5mdW5jdGlvbiBpc1plcm9WZXJzaW9uKHZlcnNpb246IHJlYWRvbmx5IG51bWJlcltdKTogYm9vbGVhbiB7XG4gIHJldHVybiB2ZXJzaW9uLmV2ZXJ5KChwYXJ0KSA9PiAocGFydCA/PyAwKSA9PT0gMCk7XG59XG5cbi8qKiBSZXR1cm4gdGhlIHJlYXNvbmluZyBlZmZvcnRzIGFjY2VwdGVkIGJ5IGEgbW9kZWwgZmFtaWx5LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vZGVsUmVhc29uaW5nRWZmb3J0cyhuYW1lOiBzdHJpbmcpOiBSZWFzb25pbmdFZmZvcnRbXSB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG4gIGNvbnN0IHBhcnNlZCA9IHBhcnNlTW9kZWxOYW1lKG5hbWUpO1xuICBsZXQgZWZmb3J0czogUmVhc29uaW5nRWZmb3J0W10gPSBbXTtcbiAgaWYgKHBhcnNlZD8uZmFtaWx5ID09PSBcImdwdFwiICYmIHBhcnNlZC52ZXJzaW9uLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBbbWFqb3IgPSAwLCBtaW5vciA9IDBdID0gcGFyc2VkLnZlcnNpb247XG4gICAgaWYgKG1ham9yID49IDUpIHtcbiAgICAgIGVmZm9ydHMgPVxuICAgICAgICBtYWpvciA9PT0gNSAmJiBtaW5vciA9PT0gNSAmJiBwYXJzZWQubW9kZWwuaW5jbHVkZXMoXCJwcm9cIilcbiAgICAgICAgICA/IEdQVF81XzVfUFJPXG4gICAgICAgICAgOiBtYWpvciA9PT0gNSAmJiBtaW5vciA9PT0gNlxuICAgICAgICAgICAgPyBHUFRfNV82XG4gICAgICAgICAgICA6IFNUQU5EQVJEO1xuICAgIH1cbiAgfVxuICBpZiAocGFyc2VkPy5mYW1pbHkgPT09IFwiZ3B0XCIgJiYgcGFyc2VkLm1vZGVsLmluY2x1ZGVzKFwib3NzXCIpKSBlZmZvcnRzID0gU1RBTkRBUkQ7XG4gIGlmIChwYXJzZWQ/LmZhbWlseSA9PT0gXCJjbGF1ZGVcIikge1xuICAgIGNvbnN0IFttYWpvciA9IDAsIG1pbm9yID0gMF0gPSBwYXJzZWQudmVyc2lvbjtcbiAgICBpZiAobWFqb3IgPiAzIHx8IChtYWpvciA9PT0gMyAmJiBtaW5vciA+PSA3KSkgZWZmb3J0cyA9IENMQVVERTtcbiAgfVxuICBpZiAocGFyc2VkPy5mYW1pbHkgPT09IFwiZ2VtaW5pXCIpIGVmZm9ydHMgPSBHRU1JTkk7XG4gIGlmIChub3JtYWxpemVkLmluY2x1ZGVzKFwiY29kZXhcIikgfHwgLyg/Ol58Wy1fLi9dKW8oPzoxfDN8NCkoPzpbLV8uL118JCkvaS50ZXN0KG5hbWUpKSB7XG4gICAgZWZmb3J0cyA9IFNUQU5EQVJEO1xuICB9XG4gIHJldHVybiBlZmZvcnRzO1xufVxuXG4vKiogUmV0dXJuIHdoZXRoZXIgcG9saWN5IHZlcmlmaWVzIGEgY29tcGxldGUgdG9vbC1jYWxsaW5nIHJvdW5kIHRyaXAuICovXG5leHBvcnQgZnVuY3Rpb24gbW9kZWxTdXBwb3J0c1Rvb2xzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gc3VwcG9ydHNUb29sc0J5RmFtaWx5KG5hbWUpO1xufVxuXG4vKiogUmV0dXJuIHdoZXRoZXIgYSBkaXNjb3ZlcmVkIGVuZHBvaW50IGNhbiBiZSB1c2VkIGZvciBhIHRvb2wtY2FsbGluZyBjaGF0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuZHBvaW50U3VwcG9ydHNUb29scyhlbmRwb2ludDogU2VydmluZ0VuZHBvaW50U3VtbWFyeSk6IGJvb2xlYW4ge1xuICBjb25zdCBlbWJlZGRpbmcgPVxuICAgIGVuZHBvaW50LnRhc2sgPT09IFwibGxtL3YxL2VtYmVkZGluZ3NcIiB8fCBlbmRwb2ludC5jbGFzcyA9PT0gTW9kZWxDbGFzcy5FbWJlZGRpbmc7XG4gIGNvbnN0IGNoYXQgPSAhZW1iZWRkaW5nICYmIChlbmRwb2ludC50YXNrID09PSBcImxsbS92MS9jaGF0XCIgfHwgZW5kcG9pbnQuY2xhc3MgIT09IHVuZGVmaW5lZCk7XG4gIHJldHVybiBjaGF0ICYmIChlbmRwb2ludC5zdXBwb3J0c1Rvb2xzID8/IG1vZGVsU3VwcG9ydHNUb29scyhlbmRwb2ludC5uYW1lKSk7XG59XG5cbi8qKiBSZXR1cm4gd2hldGhlciBhIG1vZGVsIHJlcXVpcmVzIERhdGFicmlja3MnIG5hdGl2ZSBSZXNwb25zZXMgZW5kcG9pbnQuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSZXNwb25zZXNPbmx5KG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAobmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwiY29kZXhcIikpIHJldHVybiB0cnVlO1xuICBjb25zdCBwYXJzZWQgPSBwYXJzZU1vZGVsTmFtZShuYW1lKTtcbiAgaWYgKCFwYXJzZWQgfHwgcGFyc2VkLmZhbWlseSAhPT0gXCJncHRcIiB8fCBwYXJzZWQubW9kZWwuaW5jbHVkZXMoXCJvc3NcIikpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgW21ham9yID0gMCwgbWlub3IgPSAwXSA9IHBhcnNlZC52ZXJzaW9uO1xuICByZXR1cm4gbWFqb3IgPiA1IHx8IChtYWpvciA9PT0gNSAmJiBtaW5vciA+PSA0KTtcbn1cblxuLyoqIFJldHVybiB0aGUgRGF0YWJyaWNrcyBpbmZlcmVuY2UgcHJvdG9jb2wgcmVxdWlyZWQgYnkgYSBtb2RlbC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb2RlbFNlcnZpbmdBcGkobmFtZTogc3RyaW5nKTogXCJjaGF0XCIgfCBcInJlc3BvbnNlc1wiIHtcbiAgcmV0dXJuIGlzUmVzcG9uc2VzT25seShuYW1lKSA/IFwicmVzcG9uc2VzXCIgOiBcImNoYXRcIjtcbn1cblxuLyoqIFJldHVybiB0aGUgQ2hhdCBDb21wbGV0aW9ucyBlZmZvcnQgcmVxdWlyZWQgd2hlbiBmdW5jdGlvbiB0b29scyBhcmUgcHJlc2VudC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGF0VG9vbFJlYXNvbmluZ0VmZm9ydChuYW1lOiBzdHJpbmcpOiBSZWFzb25pbmdFZmZvcnQgfCB1bmRlZmluZWQge1xuICBjb25zdCBwYXJzZWQgPSBwYXJzZU1vZGVsTmFtZShuYW1lKTtcbiAgaWYgKCFwYXJzZWQgfHwgcGFyc2VkLmZhbWlseSAhPT0gXCJncHRcIikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgW21ham9yID0gMCwgbWlub3IgPSAwXSA9IHBhcnNlZC52ZXJzaW9uO1xuICByZXR1cm4gbWFqb3IgPT09IDUgJiYgbWlub3IgPT09IDYgPyBcIm5vbmVcIiA6IHVuZGVmaW5lZDtcbn1cblxuLyoqIERlcml2ZSBwcm92aWRlci1zcGVjaWZpYyBtb2RlbCBuYW1lcyBmcm9tIGEgRGF0YWJyaWNrcyBtb2RlbCBpZGVudGl0eS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb2RlbFNlcnZpY2VOYW1lcyhuYW1lOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgcGFyc2VkID0gcGFyc2VNb2RlbE5hbWUobmFtZSk7XG4gIGlmICghcGFyc2VkKSByZXR1cm4ge307XG4gIGNvbnN0IHZlcnNpb24gPSBwYXJzZWQudmVyc2lvbi5qb2luKFwiLlwiKTtcbiAgY29uc3Qgc3VmZml4ID0gcGFyc2VkLm1vZGVsLmxlbmd0aCA/IGAtJHtwYXJzZWQubW9kZWwuam9pbihcIi1cIil9YCA6IFwiXCI7XG4gIHN3aXRjaCAocGFyc2VkLmZhbWlseSkge1xuICAgIGNhc2UgXCJncHRcIjpcbiAgICAgIHJldHVybiBwYXJzZWQubW9kZWwuaW5jbHVkZXMoXCJvc3NcIikgPyB7fSA6IHsgb3BlbmFpOiBgZ3B0LSR7dmVyc2lvbn0ke3N1ZmZpeH1gIH07XG4gICAgY2FzZSBcImNsYXVkZVwiOiB7XG4gICAgICBjb25zdCBbdmFyaWFudCwgLi4ucmVzdF0gPSBwYXJzZWQubW9kZWw7XG4gICAgICByZXR1cm4gdmFyaWFudFxuICAgICAgICA/IHsgYW50aHJvcGljOiBgY2xhdWRlLSR7dmFyaWFudH0tJHt2ZXJzaW9ufSR7cmVzdC5sZW5ndGggPyBgLSR7cmVzdC5qb2luKFwiLVwiKX1gIDogXCJcIn1gIH1cbiAgICAgICAgOiB7fTtcbiAgICB9XG4gICAgY2FzZSBcImdlbWluaVwiOlxuICAgIGNhc2UgXCJnZW1tYVwiOlxuICAgICAgcmV0dXJuIHsgZ29vZ2xlOiBgJHtwYXJzZWQuZmFtaWx5fS0ke3ZlcnNpb259JHtzdWZmaXh9YCB9O1xuICAgIGNhc2UgXCJnbG1cIjpcbiAgICAgIHJldHVybiB7IHpoaXB1OiBgZ2xtLSR7dmVyc2lvbn0ke3N1ZmZpeH1gIH07XG4gICAgY2FzZSBcImdyb2tcIjpcbiAgICAgIHJldHVybiB7IHhhaTogYGdyb2stJHt2ZXJzaW9ufSR7c3VmZml4fWAgfTtcbiAgICBjYXNlIFwibGxhbWFcIjpcbiAgICAgIHJldHVybiB7IG1ldGE6IGBsbGFtYS0ke3ZlcnNpb259JHtzdWZmaXh9YCB9O1xuICAgIGNhc2UgXCJxd2VuXCI6XG4gICAgICByZXR1cm4geyBhbGliYWJhOiBgcXdlbiR7dmVyc2lvbn0ke3N1ZmZpeH1gIH07XG4gICAgY2FzZSBcImRlZXBzZWVrXCI6XG4gICAgICByZXR1cm4geyBkZWVwc2VlazogYGRlZXBzZWVrLXYke3BhcnNlZC52ZXJzaW9uWzBdID8/IFwiXCJ9JHtzdWZmaXh9YCB9O1xuICAgIGNhc2UgXCJraW1pXCI6XG4gICAgICByZXR1cm4geyBtb29uc2hvdDogYGtpbWktayR7cGFyc2VkLnZlcnNpb25bMF0gPz8gXCJcIn0ke3N1ZmZpeH1gIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB7fTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZU1vZGVsTmFtZShuYW1lOiBzdHJpbmcpOiBQYXJzZWRNb2RlbE5hbWUgfCB1bmRlZmluZWQge1xuICBjb25zdCB0b2tlbnMgPSBuYW1lLnRvTG93ZXJDYXNlKCkubWF0Y2goL1thLXowLTldKy9nKSA/PyBbXTtcbiAgbGV0IGZhbWlseUluZGV4ID0gLTE7XG4gIGxldCBmYW1pbHk6IFBhcnNlZE1vZGVsTmFtZVtcImZhbWlseVwiXSB8IHVuZGVmaW5lZDtcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRva2Vucy5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBjb25zdCB0b2tlbiA9IHRva2Vuc1tpbmRleF0hO1xuICAgIGNvbnN0IGNvbXBhY3RRd2VuID0gL15xd2VuKFxcZCspJC8uZXhlYyh0b2tlbik7XG4gICAgaWYgKGNvbXBhY3RRd2VuKSB7XG4gICAgICBmYW1pbHlJbmRleCA9IGluZGV4O1xuICAgICAgZmFtaWx5ID0gXCJxd2VuXCI7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKEZBTUlMSUVTLmluY2x1ZGVzKHRva2VuIGFzIE1vZGVsRmFtaWx5KSkge1xuICAgICAgZmFtaWx5SW5kZXggPSBpbmRleDtcbiAgICAgIGZhbWlseSA9IHRva2VuIGFzIFBhcnNlZE1vZGVsTmFtZVtcImZhbWlseVwiXTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoIWZhbWlseSB8fCBmYW1pbHlJbmRleCA8IDApIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHJlbWFpbmRlciA9IHRva2Vucy5zbGljZShmYW1pbHlJbmRleCArIDEpO1xuICBjb25zdCBudW1lcmljID0gKHZhbHVlOiBzdHJpbmcpID0+IC9eXFxkKyQvLnRlc3QodmFsdWUpO1xuICBsZXQgdmVyc2lvblN0YXJ0ID0gcmVtYWluZGVyLmZpbmRJbmRleChudW1lcmljKTtcbiAgaWYgKGZhbWlseSA9PT0gXCJxd2VuXCIgJiYgL15xd2VuXFxkKyQvLnRlc3QodG9rZW5zW2ZhbWlseUluZGV4XSEpKSB7XG4gICAgdmVyc2lvblN0YXJ0ID0gMDtcbiAgICByZW1haW5kZXIudW5zaGlmdCh0b2tlbnNbZmFtaWx5SW5kZXhdIS5zbGljZSg0KSk7XG4gIH1cbiAgaWYgKGZhbWlseSA9PT0gXCJkZWVwc2Vla1wiKSB7XG4gICAgY29uc3QgcHJlZml4ZWQgPSByZW1haW5kZXIuZmluZEluZGV4KCh2YWx1ZSkgPT4gL152XFxkKyQvLnRlc3QodmFsdWUpKTtcbiAgICBpZiAocHJlZml4ZWQgPj0gMCkgcmVtYWluZGVyW3ByZWZpeGVkXSA9IHJlbWFpbmRlcltwcmVmaXhlZF0hLnNsaWNlKDEpO1xuICAgIHZlcnNpb25TdGFydCA9IHJlbWFpbmRlci5maW5kSW5kZXgobnVtZXJpYyk7XG4gIH1cbiAgaWYgKGZhbWlseSA9PT0gXCJraW1pXCIpIHtcbiAgICBjb25zdCBwcmVmaXhlZCA9IHJlbWFpbmRlci5maW5kSW5kZXgoKHZhbHVlKSA9PiAvXmtcXGQrJC8udGVzdCh2YWx1ZSkpO1xuICAgIGlmIChwcmVmaXhlZCA+PSAwKSByZW1haW5kZXJbcHJlZml4ZWRdID0gcmVtYWluZGVyW3ByZWZpeGVkXSEuc2xpY2UoMSk7XG4gICAgdmVyc2lvblN0YXJ0ID0gcmVtYWluZGVyLmZpbmRJbmRleChudW1lcmljKTtcbiAgfVxuICBpZiAodmVyc2lvblN0YXJ0IDwgMCkgcmV0dXJuIHsgZmFtaWx5LCB2ZXJzaW9uOiBbXSwgbW9kZWw6IHJlbWFpbmRlciB9O1xuICBjb25zdCB2ZXJzaW9uOiBudW1iZXJbXSA9IFtdO1xuICBsZXQgY3Vyc29yID0gdmVyc2lvblN0YXJ0O1xuICB3aGlsZSAoY3Vyc29yIDwgcmVtYWluZGVyLmxlbmd0aCAmJiB2ZXJzaW9uLmxlbmd0aCA8IDIgJiYgbnVtZXJpYyhyZW1haW5kZXJbY3Vyc29yXSEpKSB7XG4gICAgdmVyc2lvbi5wdXNoKE51bWJlcihyZW1haW5kZXJbY3Vyc29yXSkpO1xuICAgIGN1cnNvciArPSAxO1xuICB9XG4gIHJldHVybiB7XG4gICAgZmFtaWx5LFxuICAgIHZlcnNpb24sXG4gICAgbW9kZWw6IFsuLi5yZW1haW5kZXIuc2xpY2UoMCwgdmVyc2lvblN0YXJ0KSwgLi4ucmVtYWluZGVyLnNsaWNlKGN1cnNvcildLFxuICB9O1xufVxuIl19
|
|
290
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtRUFBbUU7QUFFbkUsT0FBTyxFQUNMLFVBQVUsR0FHWCxNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUYscUVBQXFFO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QixNQUFNLEVBQUUsUUFBUTtJQUNoQixHQUFHLEVBQUUsS0FBSztJQUNWLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEtBQUssRUFBRSxPQUFPO0lBQ2QsSUFBSSxFQUFFLE1BQU07SUFDWixRQUFRLEVBQUUsVUFBVTtJQUNwQixJQUFJLEVBQUUsTUFBTTtJQUNaLEdBQUcsRUFBRSxLQUFLO0lBQ1YsSUFBSSxFQUFFLE1BQU07SUFDWixLQUFLLEVBQUUsT0FBTztJQUNkLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLEdBQUcsRUFBRSxLQUFLO0lBQ1YsR0FBRyxFQUFFLEtBQUs7Q0FDRixDQUFDO0FBS1gsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUM1QyxNQUFNLG9CQUFvQixHQUFHLElBQUksR0FBRyxDQUFjO0lBQ2hELFdBQVcsQ0FBQyxLQUFLO0lBQ2pCLFdBQVcsQ0FBQyxRQUFRO0lBQ3BCLFdBQVcsQ0FBQyxJQUFJO0lBQ2hCLFdBQVcsQ0FBQyxHQUFHO0lBQ2YsV0FBVyxDQUFDLElBQUk7SUFDaEIsV0FBVyxDQUFDLEtBQUs7Q0FDbEIsQ0FBQyxDQUFDO0FBRUgsTUFBTSxRQUFRLEdBQXNCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM5RCxNQUFNLE9BQU8sR0FBc0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFN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ZGVsLWZhbWlseSBhbmQgc2VydmluZyBjYXBhYmlsaXR5IHBvbGljeS4gKi9cblxuaW1wb3J0IHtcbiAgTW9kZWxDbGFzcyxcbiAgdHlwZSBSZWFzb25pbmdFZmZvcnQsXG4gIHR5cGUgU2VydmluZ0VuZHBvaW50U3VtbWFyeSxcbn0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLW1vZGVsXCI7XG5cbmltcG9ydCB7IGNvbXBhcmVWZXJzaW9uVHVwbGVzLCBzdXBwb3J0c1Rvb2xzQnlGYW1pbHksIHZlcnNpb25UdXBsZSB9IGZyb20gXCIuL2NsYXNzaWZ5LnRzXCI7XG5cbi8qKiBSZWNvZ25pemVkIG1vZGVsIGZhbWlsaWVzIHVzZWQgYnkgcm91dGluZyBhbmQgcHJvdmlkZXIgcG9saWN5LiAqL1xuZXhwb3J0IGNvbnN0IE1vZGVsRmFtaWx5ID0ge1xuICBDbGF1ZGU6IFwiY2xhdWRlXCIsXG4gIEdwdDogXCJncHRcIixcbiAgR2VtaW5pOiBcImdlbWluaVwiLFxuICBMbGFtYTogXCJsbGFtYVwiLFxuICBHcm9rOiBcImdyb2tcIixcbiAgRGVlcHNlZWs6IFwiZGVlcHNlZWtcIixcbiAgUXdlbjogXCJxd2VuXCIsXG4gIEdsbTogXCJnbG1cIixcbiAgS2ltaTogXCJraW1pXCIsXG4gIEdlbW1hOiBcImdlbW1hXCIsXG4gIElua2xpbmc6IFwiaW5rbGluZ1wiLFxuICBCZ2U6IFwiYmdlXCIsXG4gIEd0ZTogXCJndGVcIixcbn0gYXMgY29uc3Q7XG5cbi8qKiBSZWNvZ25pemVkIG1vZGVsIGZhbWlseSB2YWx1ZS4gKi9cbmV4cG9ydCB0eXBlIE1vZGVsRmFtaWx5ID0gKHR5cGVvZiBNb2RlbEZhbWlseSlba2V5b2YgdHlwZW9mIE1vZGVsRmFtaWx5XTtcblxuY29uc3QgRkFNSUxJRVMgPSBPYmplY3QudmFsdWVzKE1vZGVsRmFtaWx5KTtcbmNvbnN0IE9QRU5fV0VJR0hUX0ZBTUlMSUVTID0gbmV3IFNldDxNb2RlbEZhbWlseT4oW1xuICBNb2RlbEZhbWlseS5MbGFtYSxcbiAgTW9kZWxGYW1pbHkuRGVlcHNlZWssXG4gIE1vZGVsRmFtaWx5LlF3ZW4sXG4gIE1vZGVsRmFtaWx5LkdsbSxcbiAgTW9kZWxGYW1pbHkuS2ltaSxcbiAgTW9kZWxGYW1pbHkuR2VtbWEsXG5dKTtcblxuY29uc3QgU1RBTkRBUkQ6IFJlYXNvbmluZ0VmZm9ydFtdID0gW1wibG93XCIsIFwibWVkaXVtXCIsIFwiaGlnaFwiXTtcbmNvbnN0IEdQVF81XzY6IFJlYXNvbmluZ0VmZm9ydFtdID0gW1wibm9uZVwiLCBcImxvd1wiLCBcIm1lZGl1bVwiLCBcImhpZ2hcIiwgXCJ4aGlnaFwiLCBcIm1heFwiXTtcbmNvbnN0IEdQVF81XzVfUFJPOiBSZWFzb25pbmdFZmZvcnRbXSA9IFtcIm1lZGl1bVwiLCBcImhpZ2hcIiwgXCJ4aGlnaFwiXTtcbmNvbnN0IENMQVVERTogUmVhc29uaW5nRWZmb3J0W10gPSBbXCJub25lXCIsIFwibWluaW1hbFwiLCBcImxvd1wiLCBcIm1lZGl1bVwiLCBcImhpZ2hcIiwgXCJ4aGlnaFwiLCBcIm1heFwiXTtcbmNvbnN0IEdFTUlOSTogUmVhc29uaW5nRWZmb3J0W10gPSBbXCJtaW5pbWFsXCIsIFwibG93XCIsIFwibWVkaXVtXCIsIFwiaGlnaFwiXTtcblxuaW50ZXJmYWNlIFBhcnNlZE1vZGVsTmFtZSB7XG4gIGZhbWlseTogTW9kZWxGYW1pbHk7XG4gIHZlcnNpb246IG51bWJlcltdO1xuICBtb2RlbDogc3RyaW5nW107XG59XG5cbi8qKiBSZXR1cm4gdGhlIG5vcm1hbGl6ZWQgZmFtaWx5IHBhcnNlZCBmcm9tIGEgbW9kZWwgaWRlbnRpdHkuICovXG5leHBvcnQgZnVuY3Rpb24gbW9kZWxGYW1pbHkobmFtZTogc3RyaW5nKTogTW9kZWxGYW1pbHkgfCB1bmRlZmluZWQge1xuICByZXR1cm4gcGFyc2VNb2RlbE5hbWUobmFtZSk/LmZhbWlseTtcbn1cblxuLyoqIFJhbmsgYSBmYW1pbHkgYnkgaG93IG1ham9yIGl0IGlzOyB1bnJlY29nbml6ZWQgZmFtaWxpZXMgc29ydCBsYXN0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vZGVsRmFtaWx5UmFuayhmYW1pbHk6IHN0cmluZyk6IG51bWJlciB7XG4gIGNvbnN0IGluZGV4ID0gRkFNSUxJRVMuaW5kZXhPZihmYW1pbHkgYXMgTW9kZWxGYW1pbHkpO1xuICByZXR1cm4gaW5kZXggPj0gMCA/IGluZGV4IDogRkFNSUxJRVMubGVuZ3RoO1xufVxuXG4vKiogTm9ybWFsaXplIGEgcmVjb2duaXplZCBtb2RlbCBpZGVudGl0eSBpbnRvIGZhbWlseSwgdmVyc2lvbiwgYW5kIHZhcmlhbnQgdG9rZW5zLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vZGVsU2VhcmNoUXVlcnkobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcGFyc2VkID0gcGFyc2VNb2RlbE5hbWUobmFtZSk7XG4gIGlmICghcGFyc2VkKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gW3BhcnNlZC5mYW1pbHksIC4uLnBhcnNlZC52ZXJzaW9uLm1hcChTdHJpbmcpLCAuLi5wYXJzZWQubW9kZWxdLmpvaW4oXCIgXCIpO1xufVxuXG4vKipcbiAqIFJldHVybiB3aGV0aGVyIGBuYW1lYCBoYXMgbmF0aXZlIHdlYiBzZWFyY2g6IGFuIGV4YWN0IGRvY3VtZW50ZWQgaWRlbnRpdHksIG9yXG4gKiBhIGxhdGVyIHtAbGluayB2ZXJzaW9uVHVwbGV9IGluIHRoZSBzYW1lIGZhbWlseSBhcyBhIGRvY3VtZW50ZWQgbmF0aXZlXG4gKiB3ZWItc2VhcmNoIG1vZGVsLiBJbnRyYS1mYW1pbHkgZmxvb3JzIHVzZSB0aGUgbmFtZSBkaWdpdCBwYXJzZXIgc28gaWRlbnRpdGllc1xuICogbGlrZSBgZGF0YWJyaWNrcy1jbGF1ZGUtb3B1cy00LThgIGFuZCBgc3lzdGVtLmFpLmdwdC02LTEtc29sYCBjb21wYXJlLlxuICogSG9zdGVkIEdQVC1PU1Mgd2VpZ2h0cyBuZXZlciBpbmhlcml0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5oZXJpdHNOYXRpdmVXZWJTZWFyY2gobmFtZTogc3RyaW5nLCBkb2N1bWVudGVkOiBJdGVyYWJsZTxzdHJpbmc+KTogYm9vbGVhbiB7XG4gIGNvbnN0IGRvY3VtZW50ZWRLZXlzID0gZG9jdW1lbnRlZCBpbnN0YW5jZW9mIFNldCA/IGRvY3VtZW50ZWQgOiBuZXcgU2V0KGRvY3VtZW50ZWQpO1xuICBjb25zdCBrZXkgPSBtb2RlbFNlYXJjaFF1ZXJ5KG5hbWUpPy5yZXBsYWNlQWxsKFwiIFwiLCBcIi1cIik7XG4gIGlmIChrZXkgJiYgZG9jdW1lbnRlZEtleXMuaGFzKGtleSkpIHJldHVybiB0cnVlO1xuICBjb25zdCBmYW1pbHkgPSBtb2RlbEZhbWlseShuYW1lKTtcbiAgaWYgKCFmYW1pbHkgfHwgaXNPcGVuV2VpZ2h0c0dwdChuYW1lKSkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCB2ZXJzaW9uID0gdmVyc2lvblR1cGxlKG5hbWUpO1xuICBpZiAoaXNaZXJvVmVyc2lvbih2ZXJzaW9uKSkgcmV0dXJuIGZhbHNlO1xuICBsZXQgZmxvb3I6IHJlYWRvbmx5IG51bWJlcltdIHwgdW5kZWZpbmVkO1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIGRvY3VtZW50ZWRLZXlzKSB7XG4gICAgaWYgKG1vZGVsRmFtaWx5KGVudHJ5KSAhPT0gZmFtaWx5IHx8IGlzT3BlbldlaWdodHNHcHQoZW50cnkpKSBjb250aW51ZTtcbiAgICBjb25zdCBkb2N1bWVudGVkVmVyc2lvbiA9IHZlcnNpb25UdXBsZShlbnRyeSk7XG4gICAgaWYgKGlzWmVyb1ZlcnNpb24oZG9jdW1lbnRlZFZlcnNpb24pKSBjb250aW51ZTtcbiAgICBpZiAoIWZsb29yIHx8IGNvbXBhcmVWZXJzaW9uVHVwbGVzKGRvY3VtZW50ZWRWZXJzaW9uLCBmbG9vcikgPCAwKSB7XG4gICAgICBmbG9vciA9IGRvY3VtZW50ZWRWZXJzaW9uO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmxvb3IgIT09IHVuZGVmaW5lZCAmJiBjb21wYXJlVmVyc2lvblR1cGxlcyh2ZXJzaW9uLCBmbG9vcikgPj0gMDtcbn1cblxuLyoqXG4gKiBSZXR1cm4gd2hldGhlciBhbiBpZGVudGl0eSBuYW1lcyBhIERhdGFicmlja3MtaG9zdGVkIGZvdW5kYXRpb24gbW9kZWxcbiAqIChgZGF0YWJyaWNrcy0qYCBlbmRwb2ludCBvciBgc3lzdGVtLmFpLipgIG1vZGVsIHNlcnZpY2UpLiBDdXN0b20gYW5kXG4gKiBleHRlcm5hbCBlbmRwb2ludHMgdXNlIGFyYml0cmFyeSBuYW1lcywgc28gdGhlaXIgZGlnaXRzIGFyZSBub3QgdmVyc2lvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0ZvdW5kYXRpb25Nb2RlbElkZW50aXR5KG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gL14oPzpkYXRhYnJpY2tzLXxzeXN0ZW1cXC5haVxcLikvaS50ZXN0KG5hbWUudHJpbSgpKTtcbn1cblxuLyoqIE5vcm1hbGl6ZSBhIHNlcnZlZC1lbnRpdHkgaWRlbnRpdHkgdG8gaXRzIEFJIEdhdGV3YXkgbW9kZWwtc2VydmljZSBuYW1lLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vZGVsU2VydmljZU5hbWUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSB2YWx1ZT8udHJpbSgpLnJlcGxhY2UoL15kYXRhYnJpY2tzXFwvLywgXCJcIik7XG4gIGlmICghbm9ybWFsaXplZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgaWYgKG5vcm1hbGl6ZWQuc3RhcnRzV2l0aChcInN5c3RlbS5haS5kYXRhYnJpY2tzLVwiKSkge1xuICAgIHJldHVybiBgc3lzdGVtLmFpLiR7bm9ybWFsaXplZC5zbGljZShcInN5c3RlbS5haS5kYXRhYnJpY2tzLVwiLmxlbmd0aCl9YDtcbiAgfVxuICBpZiAobm9ybWFsaXplZC5zdGFydHNXaXRoKFwiZGF0YWJyaWNrcy1cIikpIHtcbiAgICByZXR1cm4gYHN5c3RlbS5haS4ke25vcm1hbGl6ZWQuc2xpY2UoXCJkYXRhYnJpY2tzLVwiLmxlbmd0aCl9YDtcbiAgfVxuICByZXR1cm4gbm9ybWFsaXplZDtcbn1cblxuLyoqIFJldHVybiB0aGUgYHN5c3RlbS5haS4qYCBBSSBHYXRld2F5IENvZGV4IHNlcnZpY2UgYmVoaW5kIGFuIGVuZHBvaW50LCB3aGVuIG9uZSBleGlzdHMuICovXG5leHBvcnQgZnVuY3Rpb24gc3lzdGVtTW9kZWxTZXJ2aWNlKFxuICBlbmRwb2ludDogUGljazxTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5LCBcIm5hbWVcIiB8IFwibW9kZWxTZXJ2aWNlTmFtZVwiPixcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHNlcnZpY2UgPSBtb2RlbFNlcnZpY2VOYW1lKGVuZHBvaW50Lm1vZGVsU2VydmljZU5hbWUpO1xuICBpZiAoIXNlcnZpY2U/LnN0YXJ0c1dpdGgoXCJzeXN0ZW0uYWkuXCIpKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBmYW1pbHkgPSBtb2RlbEZhbWlseShlbmRwb2ludC5uYW1lKTtcbiAgcmV0dXJuIGZhbWlseSA9PT0gTW9kZWxGYW1pbHkuQ2xhdWRlIHx8IGZhbWlseSA9PT0gTW9kZWxGYW1pbHkuR2VtaW5pID8gdW5kZWZpbmVkIDogc2VydmljZTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gd2hldGhlciBhIHJlcXVlc3Qgc2hvdWxkIHVzZSB0aGUgYHN5c3RlbS5haS4qYCBzZXJ2aWNlIGluc3RlYWQgb2YgdGhlXG4gKiBzZXJ2aW5nIGVuZHBvaW50LiBBbiBleGFjdCBlbmRwb2ludCBpZCBvciBleGFjdCBzZXJ2aWNlIG5hbWUgYWx3YXlzIHdpbnM7XG4gKiBvdGhlcndpc2UgYHByZWZlclN5c3RlbU1vZGVsc2AgZGVjaWRlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZWZlcnNTeXN0ZW1Nb2RlbFNlcnZpY2UoXG4gIHJlcXVlc3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBlbmRwb2ludE5hbWU6IHN0cmluZyxcbiAgc2VydmljZU5hbWU6IHN0cmluZyxcbiAgcHJlZmVyU3lzdGVtTW9kZWxzOiBib29sZWFuLFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IG5hbWUgPSByZXF1ZXN0ZWRcbiAgICA/LnRyaW0oKVxuICAgIC5yZXBsYWNlKC9eKD86ZGJ4fGRhdGFicmlja3MpXFwvL2ksIFwiXCIpXG4gICAgLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChuYW1lID09PSBlbmRwb2ludE5hbWUudG9Mb3dlckNhc2UoKSkgcmV0dXJuIGZhbHNlO1xuICBpZiAobmFtZSA9PT0gc2VydmljZU5hbWUudG9Mb3dlckNhc2UoKSkgcmV0dXJuIHRydWU7XG4gIHJldHVybiBwcmVmZXJTeXN0ZW1Nb2RlbHM7XG59XG5cbi8qKiBSZXR1cm4gd2hldGhlciBhbiBpZGVudGl0eSBpcyBob3N0ZWQgR1BULU9TUyByYXRoZXIgdGhhbiBhIEdQVCBnZW5lcmF0aW9uLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT3BlbldlaWdodHNHcHQobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBtb2RlbEZhbWlseShuYW1lKSA9PT0gXCJncHRcIiAmJiAvKD86XnxbLV8uXSlvc3MoPzpbLV8uXXwkKS9pLnRlc3QobmFtZSk7XG59XG5cbi8qKiBSZXR1cm4gd2hldGhlciBwb2xpY3kgcmVjb2duaXplcyBhIGhvc3RlZCBpZGVudGl0eSBhcyBhbiBvcGVuLXdlaWdodCBtb2RlbC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc09wZW5XZWlnaHRzTW9kZWwobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmIChpc09wZW5XZWlnaHRzR3B0KG5hbWUpKSByZXR1cm4gdHJ1ZTtcbiAgY29uc3QgZmFtaWx5ID0gbW9kZWxGYW1pbHkobmFtZSk7XG4gIHJldHVybiBmYW1pbHkgIT09IHVuZGVmaW5lZCAmJiBPUEVOX1dFSUdIVF9GQU1JTElFUy5oYXMoZmFtaWx5KTtcbn1cblxuZnVuY3Rpb24gaXNaZXJvVmVyc2lvbih2ZXJzaW9uOiByZWFkb25seSBudW1iZXJbXSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdmVyc2lvbi5ldmVyeSgocGFydCkgPT4gKHBhcnQgPz8gMCkgPT09IDApO1xufVxuXG4vKiogUmV0dXJuIHRoZSByZWFzb25pbmcgZWZmb3J0cyBhY2NlcHRlZCBieSBhIG1vZGVsIGZhbWlseS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb2RlbFJlYXNvbmluZ0VmZm9ydHMobmFtZTogc3RyaW5nKTogUmVhc29uaW5nRWZmb3J0W10ge1xuICBjb25zdCBub3JtYWxpemVkID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCBwYXJzZWQgPSBwYXJzZU1vZGVsTmFtZShuYW1lKTtcbiAgbGV0IGVmZm9ydHM6IFJlYXNvbmluZ0VmZm9ydFtdID0gW107XG4gIGlmIChwYXJzZWQ/LmZhbWlseSA9PT0gXCJncHRcIiAmJiBwYXJzZWQudmVyc2lvbi5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgW21ham9yID0gMCwgbWlub3IgPSAwXSA9IHBhcnNlZC52ZXJzaW9uO1xuICAgIGlmIChtYWpvciA+PSA1KSB7XG4gICAgICBlZmZvcnRzID1cbiAgICAgICAgbWFqb3IgPT09IDUgJiYgbWlub3IgPT09IDUgJiYgcGFyc2VkLm1vZGVsLmluY2x1ZGVzKFwicHJvXCIpXG4gICAgICAgICAgPyBHUFRfNV81X1BST1xuICAgICAgICAgIDogbWFqb3IgPT09IDUgJiYgbWlub3IgPT09IDZcbiAgICAgICAgICAgID8gR1BUXzVfNlxuICAgICAgICAgICAgOiBTVEFOREFSRDtcbiAgICB9XG4gIH1cbiAgaWYgKHBhcnNlZD8uZmFtaWx5ID09PSBcImdwdFwiICYmIHBhcnNlZC5tb2RlbC5pbmNsdWRlcyhcIm9zc1wiKSkgZWZmb3J0cyA9IFNUQU5EQVJEO1xuICBpZiAocGFyc2VkPy5mYW1pbHkgPT09IFwiY2xhdWRlXCIpIHtcbiAgICBjb25zdCBbbWFqb3IgPSAwLCBtaW5vciA9IDBdID0gcGFyc2VkLnZlcnNpb247XG4gICAgaWYgKG1ham9yID4gMyB8fCAobWFqb3IgPT09IDMgJiYgbWlub3IgPj0gNykpIGVmZm9ydHMgPSBDTEFVREU7XG4gIH1cbiAgaWYgKHBhcnNlZD8uZmFtaWx5ID09PSBcImdlbWluaVwiKSBlZmZvcnRzID0gR0VNSU5JO1xuICBpZiAobm9ybWFsaXplZC5pbmNsdWRlcyhcImNvZGV4XCIpIHx8IC8oPzpefFstXy4vXSlvKD86MXwzfDQpKD86Wy1fLi9dfCQpL2kudGVzdChuYW1lKSkge1xuICAgIGVmZm9ydHMgPSBTVEFOREFSRDtcbiAgfVxuICByZXR1cm4gZWZmb3J0cztcbn1cblxuLyoqIFJldHVybiB3aGV0aGVyIHBvbGljeSB2ZXJpZmllcyBhIGNvbXBsZXRlIHRvb2wtY2FsbGluZyByb3VuZCB0cmlwLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vZGVsU3VwcG9ydHNUb29scyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHN1cHBvcnRzVG9vbHNCeUZhbWlseShuYW1lKTtcbn1cblxuLyoqIFJldHVybiB3aGV0aGVyIGEgZGlzY292ZXJlZCBlbmRwb2ludCBjYW4gYmUgdXNlZCBmb3IgYSB0b29sLWNhbGxpbmcgY2hhdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmRwb2ludFN1cHBvcnRzVG9vbHMoZW5kcG9pbnQ6IFNlcnZpbmdFbmRwb2ludFN1bW1hcnkpOiBib29sZWFuIHtcbiAgY29uc3QgZW1iZWRkaW5nID1cbiAgICBlbmRwb2ludC50YXNrID09PSBcImxsbS92MS9lbWJlZGRpbmdzXCIgfHwgZW5kcG9pbnQuY2xhc3MgPT09IE1vZGVsQ2xhc3MuRW1iZWRkaW5nO1xuICBjb25zdCBjaGF0ID0gIWVtYmVkZGluZyAmJiAoZW5kcG9pbnQudGFzayA9PT0gXCJsbG0vdjEvY2hhdFwiIHx8IGVuZHBvaW50LmNsYXNzICE9PSB1bmRlZmluZWQpO1xuICByZXR1cm4gY2hhdCAmJiAoZW5kcG9pbnQuc3VwcG9ydHNUb29scyA/PyBtb2RlbFN1cHBvcnRzVG9vbHMoZW5kcG9pbnQubmFtZSkpO1xufVxuXG4vKiogUmV0dXJuIHdoZXRoZXIgYSBtb2RlbCByZXF1aXJlcyBEYXRhYnJpY2tzJyBuYXRpdmUgUmVzcG9uc2VzIGVuZHBvaW50LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUmVzcG9uc2VzT25seShuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKG5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcImNvZGV4XCIpKSByZXR1cm4gdHJ1ZTtcbiAgY29uc3QgcGFyc2VkID0gcGFyc2VNb2RlbE5hbWUobmFtZSk7XG4gIGlmICghcGFyc2VkIHx8IHBhcnNlZC5mYW1pbHkgIT09IFwiZ3B0XCIgfHwgcGFyc2VkLm1vZGVsLmluY2x1ZGVzKFwib3NzXCIpKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IFttYWpvciA9IDAsIG1pbm9yID0gMF0gPSBwYXJzZWQudmVyc2lvbjtcbiAgcmV0dXJuIG1ham9yID4gNSB8fCAobWFqb3IgPT09IDUgJiYgbWlub3IgPj0gNCk7XG59XG5cbi8qKiBSZXR1cm4gdGhlIERhdGFicmlja3MgaW5mZXJlbmNlIHByb3RvY29sIHJlcXVpcmVkIGJ5IGEgbW9kZWwuICovXG5leHBvcnQgZnVuY3Rpb24gbW9kZWxTZXJ2aW5nQXBpKG5hbWU6IHN0cmluZyk6IFwiY2hhdFwiIHwgXCJyZXNwb25zZXNcIiB7XG4gIHJldHVybiBpc1Jlc3BvbnNlc09ubHkobmFtZSkgPyBcInJlc3BvbnNlc1wiIDogXCJjaGF0XCI7XG59XG5cbi8qKiBSZXR1cm4gdGhlIENoYXQgQ29tcGxldGlvbnMgZWZmb3J0IHJlcXVpcmVkIHdoZW4gZnVuY3Rpb24gdG9vbHMgYXJlIHByZXNlbnQuICovXG5leHBvcnQgZnVuY3Rpb24gY2hhdFRvb2xSZWFzb25pbmdFZmZvcnQobmFtZTogc3RyaW5nKTogUmVhc29uaW5nRWZmb3J0IHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcGFyc2VkID0gcGFyc2VNb2RlbE5hbWUobmFtZSk7XG4gIGlmICghcGFyc2VkIHx8IHBhcnNlZC5mYW1pbHkgIT09IFwiZ3B0XCIpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IFttYWpvciA9IDAsIG1pbm9yID0gMF0gPSBwYXJzZWQudmVyc2lvbjtcbiAgcmV0dXJuIG1ham9yID09PSA1ICYmIG1pbm9yID09PSA2ID8gXCJub25lXCIgOiB1bmRlZmluZWQ7XG59XG5cbi8qKiBEZXJpdmUgcHJvdmlkZXItc3BlY2lmaWMgbW9kZWwgbmFtZXMgZnJvbSBhIERhdGFicmlja3MgbW9kZWwgaWRlbnRpdHkuICovXG5leHBvcnQgZnVuY3Rpb24gbW9kZWxTZXJ2aWNlTmFtZXMobmFtZTogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gIGNvbnN0IHBhcnNlZCA9IHBhcnNlTW9kZWxOYW1lKG5hbWUpO1xuICBpZiAoIXBhcnNlZCkgcmV0dXJuIHt9O1xuICBjb25zdCB2ZXJzaW9uID0gcGFyc2VkLnZlcnNpb24uam9pbihcIi5cIik7XG4gIGNvbnN0IHN1ZmZpeCA9IHBhcnNlZC5tb2RlbC5sZW5ndGggPyBgLSR7cGFyc2VkLm1vZGVsLmpvaW4oXCItXCIpfWAgOiBcIlwiO1xuICBzd2l0Y2ggKHBhcnNlZC5mYW1pbHkpIHtcbiAgICBjYXNlIFwiZ3B0XCI6XG4gICAgICByZXR1cm4gcGFyc2VkLm1vZGVsLmluY2x1ZGVzKFwib3NzXCIpID8ge30gOiB7IG9wZW5haTogYGdwdC0ke3ZlcnNpb259JHtzdWZmaXh9YCB9O1xuICAgIGNhc2UgXCJjbGF1ZGVcIjoge1xuICAgICAgY29uc3QgW3ZhcmlhbnQsIC4uLnJlc3RdID0gcGFyc2VkLm1vZGVsO1xuICAgICAgcmV0dXJuIHZhcmlhbnRcbiAgICAgICAgPyB7IGFudGhyb3BpYzogYGNsYXVkZS0ke3ZhcmlhbnR9LSR7dmVyc2lvbn0ke3Jlc3QubGVuZ3RoID8gYC0ke3Jlc3Quam9pbihcIi1cIil9YCA6IFwiXCJ9YCB9XG4gICAgICAgIDoge307XG4gICAgfVxuICAgIGNhc2UgXCJnZW1pbmlcIjpcbiAgICBjYXNlIFwiZ2VtbWFcIjpcbiAgICAgIHJldHVybiB7IGdvb2dsZTogYCR7cGFyc2VkLmZhbWlseX0tJHt2ZXJzaW9ufSR7c3VmZml4fWAgfTtcbiAgICBjYXNlIFwiZ2xtXCI6XG4gICAgICByZXR1cm4geyB6aGlwdTogYGdsbS0ke3ZlcnNpb259JHtzdWZmaXh9YCB9O1xuICAgIGNhc2UgXCJncm9rXCI6XG4gICAgICByZXR1cm4geyB4YWk6IGBncm9rLSR7dmVyc2lvbn0ke3N1ZmZpeH1gIH07XG4gICAgY2FzZSBcImxsYW1hXCI6XG4gICAgICByZXR1cm4geyBtZXRhOiBgbGxhbWEtJHt2ZXJzaW9ufSR7c3VmZml4fWAgfTtcbiAgICBjYXNlIFwicXdlblwiOlxuICAgICAgcmV0dXJuIHsgYWxpYmFiYTogYHF3ZW4ke3ZlcnNpb259JHtzdWZmaXh9YCB9O1xuICAgIGNhc2UgXCJkZWVwc2Vla1wiOlxuICAgICAgcmV0dXJuIHsgZGVlcHNlZWs6IGBkZWVwc2Vlay12JHtwYXJzZWQudmVyc2lvblswXSA/PyBcIlwifSR7c3VmZml4fWAgfTtcbiAgICBjYXNlIFwia2ltaVwiOlxuICAgICAgcmV0dXJuIHsgbW9vbnNob3Q6IGBraW1pLWske3BhcnNlZC52ZXJzaW9uWzBdID8/IFwiXCJ9JHtzdWZmaXh9YCB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4ge307XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFyc2VNb2RlbE5hbWUobmFtZTogc3RyaW5nKTogUGFyc2VkTW9kZWxOYW1lIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdG9rZW5zID0gbmFtZS50b0xvd2VyQ2FzZSgpLm1hdGNoKC9bYS16MC05XSsvZykgPz8gW107XG4gIGxldCBmYW1pbHlJbmRleCA9IC0xO1xuICBsZXQgZmFtaWx5OiBQYXJzZWRNb2RlbE5hbWVbXCJmYW1pbHlcIl0gfCB1bmRlZmluZWQ7XG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0b2tlbnMubGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgY29uc3QgdG9rZW4gPSB0b2tlbnNbaW5kZXhdITtcbiAgICBjb25zdCBjb21wYWN0UXdlbiA9IC9ecXdlbihcXGQrKSQvLmV4ZWModG9rZW4pO1xuICAgIGlmIChjb21wYWN0UXdlbikge1xuICAgICAgZmFtaWx5SW5kZXggPSBpbmRleDtcbiAgICAgIGZhbWlseSA9IFwicXdlblwiO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmIChGQU1JTElFUy5pbmNsdWRlcyh0b2tlbiBhcyBNb2RlbEZhbWlseSkpIHtcbiAgICAgIGZhbWlseUluZGV4ID0gaW5kZXg7XG4gICAgICBmYW1pbHkgPSB0b2tlbiBhcyBQYXJzZWRNb2RlbE5hbWVbXCJmYW1pbHlcIl07XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKCFmYW1pbHkgfHwgZmFtaWx5SW5kZXggPCAwKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCByZW1haW5kZXIgPSB0b2tlbnMuc2xpY2UoZmFtaWx5SW5kZXggKyAxKTtcbiAgY29uc3QgbnVtZXJpYyA9ICh2YWx1ZTogc3RyaW5nKSA9PiAvXlxcZCskLy50ZXN0KHZhbHVlKTtcbiAgbGV0IHZlcnNpb25TdGFydCA9IHJlbWFpbmRlci5maW5kSW5kZXgobnVtZXJpYyk7XG4gIGlmIChmYW1pbHkgPT09IFwicXdlblwiICYmIC9ecXdlblxcZCskLy50ZXN0KHRva2Vuc1tmYW1pbHlJbmRleF0hKSkge1xuICAgIHZlcnNpb25TdGFydCA9IDA7XG4gICAgcmVtYWluZGVyLnVuc2hpZnQodG9rZW5zW2ZhbWlseUluZGV4XSEuc2xpY2UoNCkpO1xuICB9XG4gIGlmIChmYW1pbHkgPT09IFwiZGVlcHNlZWtcIikge1xuICAgIGNvbnN0IHByZWZpeGVkID0gcmVtYWluZGVyLmZpbmRJbmRleCgodmFsdWUpID0+IC9edlxcZCskLy50ZXN0KHZhbHVlKSk7XG4gICAgaWYgKHByZWZpeGVkID49IDApIHJlbWFpbmRlcltwcmVmaXhlZF0gPSByZW1haW5kZXJbcHJlZml4ZWRdIS5zbGljZSgxKTtcbiAgICB2ZXJzaW9uU3RhcnQgPSByZW1haW5kZXIuZmluZEluZGV4KG51bWVyaWMpO1xuICB9XG4gIGlmIChmYW1pbHkgPT09IFwia2ltaVwiKSB7XG4gICAgY29uc3QgcHJlZml4ZWQgPSByZW1haW5kZXIuZmluZEluZGV4KCh2YWx1ZSkgPT4gL15rXFxkKyQvLnRlc3QodmFsdWUpKTtcbiAgICBpZiAocHJlZml4ZWQgPj0gMCkgcmVtYWluZGVyW3ByZWZpeGVkXSA9IHJlbWFpbmRlcltwcmVmaXhlZF0hLnNsaWNlKDEpO1xuICAgIHZlcnNpb25TdGFydCA9IHJlbWFpbmRlci5maW5kSW5kZXgobnVtZXJpYyk7XG4gIH1cbiAgaWYgKHZlcnNpb25TdGFydCA8IDApIHJldHVybiB7IGZhbWlseSwgdmVyc2lvbjogW10sIG1vZGVsOiByZW1haW5kZXIgfTtcbiAgY29uc3QgdmVyc2lvbjogbnVtYmVyW10gPSBbXTtcbiAgbGV0IGN1cnNvciA9IHZlcnNpb25TdGFydDtcbiAgd2hpbGUgKGN1cnNvciA8IHJlbWFpbmRlci5sZW5ndGggJiYgdmVyc2lvbi5sZW5ndGggPCAyICYmIG51bWVyaWMocmVtYWluZGVyW2N1cnNvcl0hKSkge1xuICAgIHZlcnNpb24ucHVzaChOdW1iZXIocmVtYWluZGVyW2N1cnNvcl0pKTtcbiAgICBjdXJzb3IgKz0gMTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGZhbWlseSxcbiAgICB2ZXJzaW9uLFxuICAgIG1vZGVsOiBbLi4ucmVtYWluZGVyLnNsaWNlKDAsIHZlcnNpb25TdGFydCksIC4uLnJlbWFpbmRlci5zbGljZShjdXJzb3IpXSxcbiAgfTtcbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -25,12 +25,12 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@databricks/appkit": "0.81.0",
|
|
28
|
-
"@dbx-tools/appkit": "^0.9.
|
|
29
|
-
"@dbx-tools/auth": "^0.9.
|
|
30
|
-
"@dbx-tools/cache": "^0.9.
|
|
31
|
-
"@dbx-tools/shared-auth": "^0.9.
|
|
32
|
-
"@dbx-tools/shared-core": "^0.9.
|
|
33
|
-
"@dbx-tools/shared-model": "^0.9.
|
|
28
|
+
"@dbx-tools/appkit": "^0.9.177",
|
|
29
|
+
"@dbx-tools/auth": "^0.9.177",
|
|
30
|
+
"@dbx-tools/cache": "^0.9.177",
|
|
31
|
+
"@dbx-tools/shared-auth": "^0.9.177",
|
|
32
|
+
"@dbx-tools/shared-core": "^0.9.177",
|
|
33
|
+
"@dbx-tools/shared-model": "^0.9.177",
|
|
34
34
|
"cheerio": "^1.2.0",
|
|
35
35
|
"fuse.js": "^7.4.2",
|
|
36
36
|
"zod": "4.3.6"
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"./package.json": "./package.json"
|
|
50
50
|
}
|
|
51
51
|
},
|
|
52
|
-
"version": "0.9.
|
|
52
|
+
"version": "0.9.177",
|
|
53
53
|
"types": "./lib/index.d.ts",
|
|
54
54
|
"dbxToolsConfig": {
|
|
55
55
|
"tags": [
|
package/src/policy.ts
CHANGED
|
@@ -29,6 +29,14 @@ export const ModelFamily = {
|
|
|
29
29
|
export type ModelFamily = (typeof ModelFamily)[keyof typeof ModelFamily];
|
|
30
30
|
|
|
31
31
|
const FAMILIES = Object.values(ModelFamily);
|
|
32
|
+
const OPEN_WEIGHT_FAMILIES = new Set<ModelFamily>([
|
|
33
|
+
ModelFamily.Llama,
|
|
34
|
+
ModelFamily.Deepseek,
|
|
35
|
+
ModelFamily.Qwen,
|
|
36
|
+
ModelFamily.Glm,
|
|
37
|
+
ModelFamily.Kimi,
|
|
38
|
+
ModelFamily.Gemma,
|
|
39
|
+
]);
|
|
32
40
|
|
|
33
41
|
const STANDARD: ReasoningEffort[] = ["low", "medium", "high"];
|
|
34
42
|
const GPT_5_6: ReasoningEffort[] = ["none", "low", "medium", "high", "xhigh", "max"];
|
|
@@ -144,6 +152,13 @@ export function isOpenWeightsGpt(name: string): boolean {
|
|
|
144
152
|
return modelFamily(name) === "gpt" && /(?:^|[-_.])oss(?:[-_.]|$)/i.test(name);
|
|
145
153
|
}
|
|
146
154
|
|
|
155
|
+
/** Return whether policy recognizes a hosted identity as an open-weight model. */
|
|
156
|
+
export function isOpenWeightsModel(name: string): boolean {
|
|
157
|
+
if (isOpenWeightsGpt(name)) return true;
|
|
158
|
+
const family = modelFamily(name);
|
|
159
|
+
return family !== undefined && OPEN_WEIGHT_FAMILIES.has(family);
|
|
160
|
+
}
|
|
161
|
+
|
|
147
162
|
function isZeroVersion(version: readonly number[]): boolean {
|
|
148
163
|
return version.every((part) => (part ?? 0) === 0);
|
|
149
164
|
}
|