@dbx-tools/shared-core 0.9.153 → 0.9.157
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 +19 -6
- package/lib/index.d.ts +19 -6
- package/lib/index.js +20 -7
- package/lib/src/options.d.ts +0 -1
- package/lib/src/options.js +1 -2
- package/package.json +2 -154
- package/src/options.ts +0 -2
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-core";
|
|
6
|
-
export const PACKAGE_VERSION = "0.9.
|
|
6
|
+
export const PACKAGE_VERSION = "0.9.157";
|
|
7
7
|
export * as asyncUtils from "./src/async-utils.ts";
|
|
8
8
|
export * as bindings from "./src/bindings.ts";
|
|
9
9
|
export * as brandUtils from "./src/brand-utils.ts";
|
|
@@ -22,21 +22,34 @@ export * as pattern from "./src/pattern.ts";
|
|
|
22
22
|
export * as predicate from "./src/predicate.ts";
|
|
23
23
|
export * as stringUtils from "./src/string-utils.ts";
|
|
24
24
|
export * as token from "./src/token.ts";
|
|
25
|
+
export { mapConcurrent, boundedRetryDelay, poll, tieAbortSignal, combineAbortSignals, sleep } from "./src/async-utils.ts";
|
|
25
26
|
export type { ConcurrentErrorMode, MapConcurrentOptions, PollContext, PollProducer, PollOptions } from "./src/async-utils.ts";
|
|
26
|
-
export {
|
|
27
|
+
export { logActiveLevel, logLevelEnabled } from "./src/bindings.ts";
|
|
28
|
+
export { DEFAULT_BRAND_ASSETS, BrandAssetSetSchema, BrandColorsSchema, BrandVoiceSchema, BrandContextSchema, parseBrandContext, defaultBrandContext, brandContextJsonSchema, brandContextPrompt } from "./src/brand-utils.ts";
|
|
27
29
|
export type { BrandContext, BrandContextInput, BrandAssetSet } from "./src/brand-utils.ts";
|
|
28
|
-
export { DATABRICKS_APP_SOURCE_ROOT } from "./src/environment-utils.ts";
|
|
30
|
+
export { DATABRICKS_APP_SOURCE_ROOT, isDatabricksAppEnv } from "./src/environment-utils.ts";
|
|
31
|
+
export { toError, errorMessage, errorMessages, errorNodes, errorContext } from "./src/error-utils.ts";
|
|
29
32
|
export type { ErrorContext } from "./src/error-utils.ts";
|
|
33
|
+
export { directExecutor, run } from "./src/execution.ts";
|
|
30
34
|
export type { ExecutionResult, Executor, ExecutionFailure, RunOptions } from "./src/execution.ts";
|
|
35
|
+
export { memoize } from "./src/function-utils.ts";
|
|
31
36
|
export type { MemoizeOptions } from "./src/function-utils.ts";
|
|
37
|
+
export { id, fnvHash, fnvHashWithOptions, toBase32 } from "./src/hash.ts";
|
|
38
|
+
export { forEachHeaderValue, parseCookies, createFetchError } from "./src/http.ts";
|
|
32
39
|
export type { HeaderLike } from "./src/http.ts";
|
|
40
|
+
export { parse, parseRecord } from "./src/json.ts";
|
|
41
|
+
export { activeLevel, isLevelEnabled, logger } from "./src/log.ts";
|
|
33
42
|
export type { LogLevel, Logger } from "./src/log.ts";
|
|
34
|
-
export { MAX_TCP_PORT } from "./src/net.ts";
|
|
43
|
+
export { MAX_TCP_PORT, urlBuilder, parseEmails, isEmail, parseIp, parseCidr, ipInCidr, findContainingCidr, isLoopbackHost } from "./src/net.ts";
|
|
35
44
|
export type { UrlLike, IpVersion, ParsedIp, Cidr, UrlBuilder, ParseEmailsOptions } from "./src/net.ts";
|
|
45
|
+
export { isOneOrMany, isCollection, isEmpty, values, isContainer, map, filter, nonNull, flatMap, flat, distinct, concat, take, group, find, findLast, findIndex, findLastIndex, some, every, forEach, at, toOneOrMany, toArray, sequence, isRecord, isSerializableValue, toStableKey, optional, toNumber, toBoolean, toDuration, toDate, deepEqual } from "./src/object.ts";
|
|
36
46
|
export type { Sequence, Container, Collection, OneOrMany, NameLike, NonFunctionKeys, SerializablePrimitive, SerializableValue, ToNumberOptions, ToDateOptions, ToDurationOptions, DeepEqualComparator } from "./src/object.ts";
|
|
37
|
-
export { DatabricksEnvironmentNamesSchema, databricksEnvironmentNames, PostgresEnvironmentNamesSchema, postgresEnvironmentNames, postgresRoleSchema, PostgresOptionsSchema, PostgresConfigOptionsSchema, tcpPortSchema, tcpPortOrZeroSchema, normalizedUrlSchema, DatabricksOptionsSchema, LakebaseOptionsSchema, TcpListenAddressSchema, UnixListenAddressSchema } from "./src/options.ts";
|
|
47
|
+
export { DatabricksEnvironmentNamesSchema, databricksEnvironmentNames, PostgresEnvironmentNamesSchema, postgresEnvironmentNames, postgresRoleSchema, PostgresOptionsSchema, PostgresConfigOptionsSchema, tcpPortSchema, tcpPortOrZeroSchema, normalizedUrlSchema, DatabricksOptionsSchema, serializeOptsEnvironment, LakebaseOptionsSchema, parseOpts, TcpListenAddressSchema, UnixListenAddressSchema, listenAddressSchema, formatListenAddress } from "./src/options.ts";
|
|
38
48
|
export type { DatabricksEnvironmentNames, PostgresEnvironmentNames, PostgresOptions, DatabricksOptions, OptionSerializationFormat, LakebaseOptions, OptionValueMap, ListenScheme, TcpListenAddress, UnixListenAddress, ListenAddress, ListenAddressOptions, ListenAddressInput } from "./src/options.ts";
|
|
49
|
+
export { escapeRegExp, toPattern, toPatternMatcher } from "./src/pattern.ts";
|
|
39
50
|
export type { PatternOptions } from "./src/pattern.ts";
|
|
51
|
+
export { create } from "./src/predicate.ts";
|
|
40
52
|
export type { PredicateFunction, TypePredicateFunction, PredicateInput, Predicate } from "./src/predicate.ts";
|
|
53
|
+
export { tokenizeWithOptions, tokenize, toIdentifierWithOptions, toIdentifier, toSlugWithOptions, toSlug, trimToNull, trimToUndefined, parseList, trimToEmpty, firstNonEmpty, escapeHtml, toUniqueSlug, toDescription, dedentLines, dedent, pluralize, toLabel, capitalize } from "./src/string-utils.ts";
|
|
41
54
|
export type { TokenizeOptions, KeyOptions, IdentifierOptions, DedentOptions, Description } from "./src/string-utils.ts";
|
|
42
|
-
export { ACCESS_TOKEN_HEADER, USER_ID_HEADER, USER_EMAIL_HEADER } from "./src/token.ts";
|
|
55
|
+
export { ACCESS_TOKEN_HEADER, USER_ID_HEADER, USER_EMAIL_HEADER, getAccessTokenPayload, getAccessTokenScopes, includesAccessTokenScope } from "./src/token.ts";
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const PACKAGE_IDENTIFIER = "@dbx-tools/shared-core";
|
|
2
|
-
export declare const PACKAGE_VERSION = "0.9.
|
|
2
|
+
export declare const PACKAGE_VERSION = "0.9.157";
|
|
3
3
|
export * as asyncUtils from "./src/async-utils.ts";
|
|
4
4
|
export * as bindings from "./src/bindings.ts";
|
|
5
5
|
export * as brandUtils from "./src/brand-utils.ts";
|
|
@@ -18,21 +18,34 @@ export * as pattern from "./src/pattern.ts";
|
|
|
18
18
|
export * as predicate from "./src/predicate.ts";
|
|
19
19
|
export * as stringUtils from "./src/string-utils.ts";
|
|
20
20
|
export * as token from "./src/token.ts";
|
|
21
|
+
export { mapConcurrent, boundedRetryDelay, poll, tieAbortSignal, combineAbortSignals, sleep } from "./src/async-utils.ts";
|
|
21
22
|
export type { ConcurrentErrorMode, MapConcurrentOptions, PollContext, PollProducer, PollOptions } from "./src/async-utils.ts";
|
|
22
|
-
export {
|
|
23
|
+
export { logActiveLevel, logLevelEnabled } from "./src/bindings.ts";
|
|
24
|
+
export { DEFAULT_BRAND_ASSETS, BrandAssetSetSchema, BrandColorsSchema, BrandVoiceSchema, BrandContextSchema, parseBrandContext, defaultBrandContext, brandContextJsonSchema, brandContextPrompt } from "./src/brand-utils.ts";
|
|
23
25
|
export type { BrandContext, BrandContextInput, BrandAssetSet } from "./src/brand-utils.ts";
|
|
24
|
-
export { DATABRICKS_APP_SOURCE_ROOT } from "./src/environment-utils.ts";
|
|
26
|
+
export { DATABRICKS_APP_SOURCE_ROOT, isDatabricksAppEnv } from "./src/environment-utils.ts";
|
|
27
|
+
export { toError, errorMessage, errorMessages, errorNodes, errorContext } from "./src/error-utils.ts";
|
|
25
28
|
export type { ErrorContext } from "./src/error-utils.ts";
|
|
29
|
+
export { directExecutor, run } from "./src/execution.ts";
|
|
26
30
|
export type { ExecutionResult, Executor, ExecutionFailure, RunOptions } from "./src/execution.ts";
|
|
31
|
+
export { memoize } from "./src/function-utils.ts";
|
|
27
32
|
export type { MemoizeOptions } from "./src/function-utils.ts";
|
|
33
|
+
export { id, fnvHash, fnvHashWithOptions, toBase32 } from "./src/hash.ts";
|
|
34
|
+
export { forEachHeaderValue, parseCookies, createFetchError } from "./src/http.ts";
|
|
28
35
|
export type { HeaderLike } from "./src/http.ts";
|
|
36
|
+
export { parse, parseRecord } from "./src/json.ts";
|
|
37
|
+
export { activeLevel, isLevelEnabled, logger } from "./src/log.ts";
|
|
29
38
|
export type { LogLevel, Logger } from "./src/log.ts";
|
|
30
|
-
export { MAX_TCP_PORT } from "./src/net.ts";
|
|
39
|
+
export { MAX_TCP_PORT, urlBuilder, parseEmails, isEmail, parseIp, parseCidr, ipInCidr, findContainingCidr, isLoopbackHost } from "./src/net.ts";
|
|
31
40
|
export type { UrlLike, IpVersion, ParsedIp, Cidr, UrlBuilder, ParseEmailsOptions } from "./src/net.ts";
|
|
41
|
+
export { isOneOrMany, isCollection, isEmpty, values, isContainer, map, filter, nonNull, flatMap, flat, distinct, concat, take, group, find, findLast, findIndex, findLastIndex, some, every, forEach, at, toOneOrMany, toArray, sequence, isRecord, isSerializableValue, toStableKey, optional, toNumber, toBoolean, toDuration, toDate, deepEqual } from "./src/object.ts";
|
|
32
42
|
export type { Sequence, Container, Collection, OneOrMany, NameLike, NonFunctionKeys, SerializablePrimitive, SerializableValue, ToNumberOptions, ToDateOptions, ToDurationOptions, DeepEqualComparator } from "./src/object.ts";
|
|
33
|
-
export { DatabricksEnvironmentNamesSchema, databricksEnvironmentNames, PostgresEnvironmentNamesSchema, postgresEnvironmentNames, postgresRoleSchema, PostgresOptionsSchema, PostgresConfigOptionsSchema, tcpPortSchema, tcpPortOrZeroSchema, normalizedUrlSchema, DatabricksOptionsSchema, LakebaseOptionsSchema, TcpListenAddressSchema, UnixListenAddressSchema } from "./src/options.ts";
|
|
43
|
+
export { DatabricksEnvironmentNamesSchema, databricksEnvironmentNames, PostgresEnvironmentNamesSchema, postgresEnvironmentNames, postgresRoleSchema, PostgresOptionsSchema, PostgresConfigOptionsSchema, tcpPortSchema, tcpPortOrZeroSchema, normalizedUrlSchema, DatabricksOptionsSchema, serializeOptsEnvironment, LakebaseOptionsSchema, parseOpts, TcpListenAddressSchema, UnixListenAddressSchema, listenAddressSchema, formatListenAddress } from "./src/options.ts";
|
|
34
44
|
export type { DatabricksEnvironmentNames, PostgresEnvironmentNames, PostgresOptions, DatabricksOptions, OptionSerializationFormat, LakebaseOptions, OptionValueMap, ListenScheme, TcpListenAddress, UnixListenAddress, ListenAddress, ListenAddressOptions, ListenAddressInput } from "./src/options.ts";
|
|
45
|
+
export { escapeRegExp, toPattern, toPatternMatcher } from "./src/pattern.ts";
|
|
35
46
|
export type { PatternOptions } from "./src/pattern.ts";
|
|
47
|
+
export { create } from "./src/predicate.ts";
|
|
36
48
|
export type { PredicateFunction, TypePredicateFunction, PredicateInput, Predicate } from "./src/predicate.ts";
|
|
49
|
+
export { tokenizeWithOptions, tokenize, toIdentifierWithOptions, toIdentifier, toSlugWithOptions, toSlug, trimToNull, trimToUndefined, parseList, trimToEmpty, firstNonEmpty, escapeHtml, toUniqueSlug, toDescription, dedentLines, dedent, pluralize, toLabel, capitalize } from "./src/string-utils.ts";
|
|
37
50
|
export type { TokenizeOptions, KeyOptions, IdentifierOptions, DedentOptions, Description } from "./src/string-utils.ts";
|
|
38
|
-
export { ACCESS_TOKEN_HEADER, USER_ID_HEADER, USER_EMAIL_HEADER } from "./src/token.ts";
|
|
51
|
+
export { ACCESS_TOKEN_HEADER, USER_ID_HEADER, USER_EMAIL_HEADER, getAccessTokenPayload, getAccessTokenScopes, includesAccessTokenScope } from "./src/token.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/shared-core";
|
|
5
|
-
export const PACKAGE_VERSION = "0.9.
|
|
5
|
+
export const PACKAGE_VERSION = "0.9.157";
|
|
6
6
|
export * as asyncUtils from "./src/async-utils.js";
|
|
7
7
|
export * as bindings from "./src/bindings.js";
|
|
8
8
|
export * as brandUtils from "./src/brand-utils.js";
|
|
@@ -21,9 +21,22 @@ export * as pattern from "./src/pattern.js";
|
|
|
21
21
|
export * as predicate from "./src/predicate.js";
|
|
22
22
|
export * as stringUtils from "./src/string-utils.js";
|
|
23
23
|
export * as token from "./src/token.js";
|
|
24
|
-
export {
|
|
25
|
-
export {
|
|
26
|
-
export {
|
|
27
|
-
export {
|
|
28
|
-
export {
|
|
29
|
-
|
|
24
|
+
export { mapConcurrent, boundedRetryDelay, poll, tieAbortSignal, combineAbortSignals, sleep } from "./src/async-utils.js";
|
|
25
|
+
export { logActiveLevel, logLevelEnabled } from "./src/bindings.js";
|
|
26
|
+
export { DEFAULT_BRAND_ASSETS, BrandAssetSetSchema, BrandColorsSchema, BrandVoiceSchema, BrandContextSchema, parseBrandContext, defaultBrandContext, brandContextJsonSchema, brandContextPrompt } from "./src/brand-utils.js";
|
|
27
|
+
export { DATABRICKS_APP_SOURCE_ROOT, isDatabricksAppEnv } from "./src/environment-utils.js";
|
|
28
|
+
export { toError, errorMessage, errorMessages, errorNodes, errorContext } from "./src/error-utils.js";
|
|
29
|
+
export { directExecutor, run } from "./src/execution.js";
|
|
30
|
+
export { memoize } from "./src/function-utils.js";
|
|
31
|
+
export { id, fnvHash, fnvHashWithOptions, toBase32 } from "./src/hash.js";
|
|
32
|
+
export { forEachHeaderValue, parseCookies, createFetchError } from "./src/http.js";
|
|
33
|
+
export { parse, parseRecord } from "./src/json.js";
|
|
34
|
+
export { activeLevel, isLevelEnabled, logger } from "./src/log.js";
|
|
35
|
+
export { MAX_TCP_PORT, urlBuilder, parseEmails, isEmail, parseIp, parseCidr, ipInCidr, findContainingCidr, isLoopbackHost } from "./src/net.js";
|
|
36
|
+
export { isOneOrMany, isCollection, isEmpty, values, isContainer, map, filter, nonNull, flatMap, flat, distinct, concat, take, group, find, findLast, findIndex, findLastIndex, some, every, forEach, at, toOneOrMany, toArray, sequence, isRecord, isSerializableValue, toStableKey, optional, toNumber, toBoolean, toDuration, toDate, deepEqual } from "./src/object.js";
|
|
37
|
+
export { DatabricksEnvironmentNamesSchema, databricksEnvironmentNames, PostgresEnvironmentNamesSchema, postgresEnvironmentNames, postgresRoleSchema, PostgresOptionsSchema, PostgresConfigOptionsSchema, tcpPortSchema, tcpPortOrZeroSchema, normalizedUrlSchema, DatabricksOptionsSchema, serializeOptsEnvironment, LakebaseOptionsSchema, parseOpts, TcpListenAddressSchema, UnixListenAddressSchema, listenAddressSchema, formatListenAddress } from "./src/options.js";
|
|
38
|
+
export { escapeRegExp, toPattern, toPatternMatcher } from "./src/pattern.js";
|
|
39
|
+
export { create } from "./src/predicate.js";
|
|
40
|
+
export { tokenizeWithOptions, tokenize, toIdentifierWithOptions, toIdentifier, toSlugWithOptions, toSlug, trimToNull, trimToUndefined, parseList, trimToEmpty, firstNonEmpty, escapeHtml, toUniqueSlug, toDescription, dedentLines, dedent, pluralize, toLabel, capitalize } from "./src/string-utils.js";
|
|
41
|
+
export { ACCESS_TOKEN_HEADER, USER_ID_HEADER, USER_EMAIL_HEADER, getAccessTokenPayload, getAccessTokenScopes, includesAccessTokenScope } from "./src/token.js";
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyx3QkFBd0IsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxVQUFVLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxLQUFLLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEtBQUssVUFBVSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxnQkFBZ0IsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEtBQUssVUFBVSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxTQUFTLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxLQUFLLGFBQWEsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxXQUFXLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxLQUFLLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQztBQUN4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LEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxUyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5leHBvcnQgY29uc3QgUEFDS0FHRV9WRVJTSU9OID0gXCIwLjkuMTU3XCI7XG5leHBvcnQgKiBhcyBhc3luY1V0aWxzIGZyb20gXCIuL3NyYy9hc3luYy11dGlscy50c1wiO1xuZXhwb3J0ICogYXMgYmluZGluZ3MgZnJvbSBcIi4vc3JjL2JpbmRpbmdzLnRzXCI7XG5leHBvcnQgKiBhcyBicmFuZFV0aWxzIGZyb20gXCIuL3NyYy9icmFuZC11dGlscy50c1wiO1xuZXhwb3J0ICogYXMgZW52aXJvbm1lbnRVdGlscyBmcm9tIFwiLi9zcmMvZW52aXJvbm1lbnQtdXRpbHMudHNcIjtcbmV4cG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSBcIi4vc3JjL2Vycm9yLXV0aWxzLnRzXCI7XG5leHBvcnQgKiBhcyBleGVjdXRpb24gZnJvbSBcIi4vc3JjL2V4ZWN1dGlvbi50c1wiO1xuZXhwb3J0ICogYXMgZnVuY3Rpb25VdGlscyBmcm9tIFwiLi9zcmMvZnVuY3Rpb24tdXRpbHMudHNcIjtcbmV4cG9ydCAqIGFzIGhhc2ggZnJvbSBcIi4vc3JjL2hhc2gudHNcIjtcbmV4cG9ydCAqIGFzIGh0dHAgZnJvbSBcIi4vc3JjL2h0dHAudHNcIjtcbmV4cG9ydCAqIGFzIGpzb24gZnJvbSBcIi4vc3JjL2pzb24udHNcIjtcbmV4cG9ydCAqIGFzIGxvZyBmcm9tIFwiLi9zcmMvbG9nLnRzXCI7XG5leHBvcnQgKiBhcyBuZXQgZnJvbSBcIi4vc3JjL25ldC50c1wiO1xuZXhwb3J0ICogYXMgb2JqZWN0IGZyb20gXCIuL3NyYy9vYmplY3QudHNcIjtcbmV4cG9ydCAqIGFzIG9wdGlvbnMgZnJvbSBcIi4vc3JjL29wdGlvbnMudHNcIjtcbmV4cG9ydCAqIGFzIHBhdHRlcm4gZnJvbSBcIi4vc3JjL3BhdHRlcm4udHNcIjtcbmV4cG9ydCAqIGFzIHByZWRpY2F0ZSBmcm9tIFwiLi9zcmMvcHJlZGljYXRlLnRzXCI7XG5leHBvcnQgKiBhcyBzdHJpbmdVdGlscyBmcm9tIFwiLi9zcmMvc3RyaW5nLXV0aWxzLnRzXCI7XG5leHBvcnQgKiBhcyB0b2tlbiBmcm9tIFwiLi9zcmMvdG9rZW4udHNcIjtcbmV4cG9ydCB7IG1hcENvbmN1cnJlbnQsIGJvdW5kZWRSZXRyeURlbGF5LCBwb2xsLCB0aWVBYm9ydFNpZ25hbCwgY29tYmluZUFib3J0U2lnbmFscywgc2xlZXAgfSBmcm9tIFwiLi9zcmMvYXN5bmMtdXRpbHMudHNcIjtcbmV4cG9ydCB0eXBlIHsgQ29uY3VycmVudEVycm9yTW9kZSwgTWFwQ29uY3VycmVudE9wdGlvbnMsIFBvbGxDb250ZXh0LCBQb2xsUHJvZHVjZXIsIFBvbGxPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2FzeW5jLXV0aWxzLnRzXCI7XG5leHBvcnQgeyBsb2dBY3RpdmVMZXZlbCwgbG9nTGV2ZWxFbmFibGVkIH0gZnJvbSBcIi4vc3JjL2JpbmRpbmdzLnRzXCI7XG5leHBvcnQgeyBERUZBVUxUX0JSQU5EX0FTU0VUUywgQnJhbmRBc3NldFNldFNjaGVtYSwgQnJhbmRDb2xvcnNTY2hlbWEsIEJyYW5kVm9pY2VTY2hlbWEsIEJyYW5kQ29udGV4dFNjaGVtYSwgcGFyc2VCcmFuZENvbnRleHQsIGRlZmF1bHRCcmFuZENvbnRleHQsIGJyYW5kQ29udGV4dEpzb25TY2hlbWEsIGJyYW5kQ29udGV4dFByb21wdCB9IGZyb20gXCIuL3NyYy9icmFuZC11dGlscy50c1wiO1xuZXhwb3J0IHR5cGUgeyBCcmFuZENvbnRleHQsIEJyYW5kQ29udGV4dElucHV0LCBCcmFuZEFzc2V0U2V0IH0gZnJvbSBcIi4vc3JjL2JyYW5kLXV0aWxzLnRzXCI7XG5leHBvcnQgeyBEQVRBQlJJQ0tTX0FQUF9TT1VSQ0VfUk9PVCwgaXNEYXRhYnJpY2tzQXBwRW52IH0gZnJvbSBcIi4vc3JjL2Vudmlyb25tZW50LXV0aWxzLnRzXCI7XG5leHBvcnQgeyB0b0Vycm9yLCBlcnJvck1lc3NhZ2UsIGVycm9yTWVzc2FnZXMsIGVycm9yTm9kZXMsIGVycm9yQ29udGV4dCB9IGZyb20gXCIuL3NyYy9lcnJvci11dGlscy50c1wiO1xuZXhwb3J0IHR5cGUgeyBFcnJvckNvbnRleHQgfSBmcm9tIFwiLi9zcmMvZXJyb3ItdXRpbHMudHNcIjtcbmV4cG9ydCB7IGRpcmVjdEV4ZWN1dG9yLCBydW4gfSBmcm9tIFwiLi9zcmMvZXhlY3V0aW9uLnRzXCI7XG5leHBvcnQgdHlwZSB7IEV4ZWN1dGlvblJlc3VsdCwgRXhlY3V0b3IsIEV4ZWN1dGlvbkZhaWx1cmUsIFJ1bk9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvZXhlY3V0aW9uLnRzXCI7XG5leHBvcnQgeyBtZW1vaXplIH0gZnJvbSBcIi4vc3JjL2Z1bmN0aW9uLXV0aWxzLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1lbW9pemVPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2Z1bmN0aW9uLXV0aWxzLnRzXCI7XG5leHBvcnQgeyBpZCwgZm52SGFzaCwgZm52SGFzaFdpdGhPcHRpb25zLCB0b0Jhc2UzMiB9IGZyb20gXCIuL3NyYy9oYXNoLnRzXCI7XG5leHBvcnQgeyBmb3JFYWNoSGVhZGVyVmFsdWUsIHBhcnNlQ29va2llcywgY3JlYXRlRmV0Y2hFcnJvciB9IGZyb20gXCIuL3NyYy9odHRwLnRzXCI7XG5leHBvcnQgdHlwZSB7IEhlYWRlckxpa2UgfSBmcm9tIFwiLi9zcmMvaHR0cC50c1wiO1xuZXhwb3J0IHsgcGFyc2UsIHBhcnNlUmVjb3JkIH0gZnJvbSBcIi4vc3JjL2pzb24udHNcIjtcbmV4cG9ydCB7IGFjdGl2ZUxldmVsLCBpc0xldmVsRW5hYmxlZCwgbG9nZ2VyIH0gZnJvbSBcIi4vc3JjL2xvZy50c1wiO1xuZXhwb3J0IHR5cGUgeyBMb2dMZXZlbCwgTG9nZ2VyIH0gZnJvbSBcIi4vc3JjL2xvZy50c1wiO1xuZXhwb3J0IHsgTUFYX1RDUF9QT1JULCB1cmxCdWlsZGVyLCBwYXJzZUVtYWlscywgaXNFbWFpbCwgcGFyc2VJcCwgcGFyc2VDaWRyLCBpcEluQ2lkciwgZmluZENvbnRhaW5pbmdDaWRyLCBpc0xvb3BiYWNrSG9zdCB9IGZyb20gXCIuL3NyYy9uZXQudHNcIjtcbmV4cG9ydCB0eXBlIHsgVXJsTGlrZSwgSXBWZXJzaW9uLCBQYXJzZWRJcCwgQ2lkciwgVXJsQnVpbGRlciwgUGFyc2VFbWFpbHNPcHRpb25zIH0gZnJvbSBcIi4vc3JjL25ldC50c1wiO1xuZXhwb3J0IHsgaXNPbmVPck1hbnksIGlzQ29sbGVjdGlvbiwgaXNFbXB0eSwgdmFsdWVzLCBpc0NvbnRhaW5lciwgbWFwLCBmaWx0ZXIsIG5vbk51bGwsIGZsYXRNYXAsIGZsYXQsIGRpc3RpbmN0LCBjb25jYXQsIHRha2UsIGdyb3VwLCBmaW5kLCBmaW5kTGFzdCwgZmluZEluZGV4LCBmaW5kTGFzdEluZGV4LCBzb21lLCBldmVyeSwgZm9yRWFjaCwgYXQsIHRvT25lT3JNYW55LCB0b0FycmF5LCBzZXF1ZW5jZSwgaXNSZWNvcmQsIGlzU2VyaWFsaXphYmxlVmFsdWUsIHRvU3RhYmxlS2V5LCBvcHRpb25hbCwgdG9OdW1iZXIsIHRvQm9vbGVhbiwgdG9EdXJhdGlvbiwgdG9EYXRlLCBkZWVwRXF1YWwgfSBmcm9tIFwiLi9zcmMvb2JqZWN0LnRzXCI7XG5leHBvcnQgdHlwZSB7IFNlcXVlbmNlLCBDb250YWluZXIsIENvbGxlY3Rpb24sIE9uZU9yTWFueSwgTmFtZUxpa2UsIE5vbkZ1bmN0aW9uS2V5cywgU2VyaWFsaXphYmxlUHJpbWl0aXZlLCBTZXJpYWxpemFibGVWYWx1ZSwgVG9OdW1iZXJPcHRpb25zLCBUb0RhdGVPcHRpb25zLCBUb0R1cmF0aW9uT3B0aW9ucywgRGVlcEVxdWFsQ29tcGFyYXRvciB9IGZyb20gXCIuL3NyYy9vYmplY3QudHNcIjtcbmV4cG9ydCB7IERhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzU2NoZW1hLCBkYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lcywgUG9zdGdyZXNFbnZpcm9ubWVudE5hbWVzU2NoZW1hLCBwb3N0Z3Jlc0Vudmlyb25tZW50TmFtZXMsIHBvc3RncmVzUm9sZVNjaGVtYSwgUG9zdGdyZXNPcHRpb25zU2NoZW1hLCBQb3N0Z3Jlc0NvbmZpZ09wdGlvbnNTY2hlbWEsIHRjcFBvcnRTY2hlbWEsIHRjcFBvcnRPclplcm9TY2hlbWEsIG5vcm1hbGl6ZWRVcmxTY2hlbWEsIERhdGFicmlja3NPcHRpb25zU2NoZW1hLCBzZXJpYWxpemVPcHRzRW52aXJvbm1lbnQsIExha2ViYXNlT3B0aW9uc1NjaGVtYSwgcGFyc2VPcHRzLCBUY3BMaXN0ZW5BZGRyZXNzU2NoZW1hLCBVbml4TGlzdGVuQWRkcmVzc1NjaGVtYSwgbGlzdGVuQWRkcmVzc1NjaGVtYSwgZm9ybWF0TGlzdGVuQWRkcmVzcyB9IGZyb20gXCIuL3NyYy9vcHRpb25zLnRzXCI7XG5leHBvcnQgdHlwZSB7IERhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzLCBQb3N0Z3Jlc0Vudmlyb25tZW50TmFtZXMsIFBvc3RncmVzT3B0aW9ucywgRGF0YWJyaWNrc09wdGlvbnMsIE9wdGlvblNlcmlhbGl6YXRpb25Gb3JtYXQsIExha2ViYXNlT3B0aW9ucywgT3B0aW9uVmFsdWVNYXAsIExpc3RlblNjaGVtZSwgVGNwTGlzdGVuQWRkcmVzcywgVW5peExpc3RlbkFkZHJlc3MsIExpc3RlbkFkZHJlc3MsIExpc3RlbkFkZHJlc3NPcHRpb25zLCBMaXN0ZW5BZGRyZXNzSW5wdXQgfSBmcm9tIFwiLi9zcmMvb3B0aW9ucy50c1wiO1xuZXhwb3J0IHsgZXNjYXBlUmVnRXhwLCB0b1BhdHRlcm4sIHRvUGF0dGVybk1hdGNoZXIgfSBmcm9tIFwiLi9zcmMvcGF0dGVybi50c1wiO1xuZXhwb3J0IHR5cGUgeyBQYXR0ZXJuT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9wYXR0ZXJuLnRzXCI7XG5leHBvcnQgeyBjcmVhdGUgfSBmcm9tIFwiLi9zcmMvcHJlZGljYXRlLnRzXCI7XG5leHBvcnQgdHlwZSB7IFByZWRpY2F0ZUZ1bmN0aW9uLCBUeXBlUHJlZGljYXRlRnVuY3Rpb24sIFByZWRpY2F0ZUlucHV0LCBQcmVkaWNhdGUgfSBmcm9tIFwiLi9zcmMvcHJlZGljYXRlLnRzXCI7XG5leHBvcnQgeyB0b2tlbml6ZVdpdGhPcHRpb25zLCB0b2tlbml6ZSwgdG9JZGVudGlmaWVyV2l0aE9wdGlvbnMsIHRvSWRlbnRpZmllciwgdG9TbHVnV2l0aE9wdGlvbnMsIHRvU2x1ZywgdHJpbVRvTnVsbCwgdHJpbVRvVW5kZWZpbmVkLCBwYXJzZUxpc3QsIHRyaW1Ub0VtcHR5LCBmaXJzdE5vbkVtcHR5LCBlc2NhcGVIdG1sLCB0b1VuaXF1ZVNsdWcsIHRvRGVzY3JpcHRpb24sIGRlZGVudExpbmVzLCBkZWRlbnQsIHBsdXJhbGl6ZSwgdG9MYWJlbCwgY2FwaXRhbGl6ZSB9IGZyb20gXCIuL3NyYy9zdHJpbmctdXRpbHMudHNcIjtcbmV4cG9ydCB0eXBlIHsgVG9rZW5pemVPcHRpb25zLCBLZXlPcHRpb25zLCBJZGVudGlmaWVyT3B0aW9ucywgRGVkZW50T3B0aW9ucywgRGVzY3JpcHRpb24gfSBmcm9tIFwiLi9zcmMvc3RyaW5nLXV0aWxzLnRzXCI7XG5leHBvcnQgeyBBQ0NFU1NfVE9LRU5fSEVBREVSLCBVU0VSX0lEX0hFQURFUiwgVVNFUl9FTUFJTF9IRUFERVIsIGdldEFjY2Vzc1Rva2VuUGF5bG9hZCwgZ2V0QWNjZXNzVG9rZW5TY29wZXMsIGluY2x1ZGVzQWNjZXNzVG9rZW5TY29wZSB9IGZyb20gXCIuL3NyYy90b2tlbi50c1wiO1xuIl19
|
package/lib/src/options.d.ts
CHANGED
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
6
|
import { z } from "zod";
|
|
7
|
-
export { MAX_TCP_PORT } from "./net.ts";
|
|
8
7
|
export declare const DatabricksEnvironmentNamesSchema: z.ZodObject<{
|
|
9
8
|
profile: z.ZodDefault<z.ZodLiteral<"DATABRICKS_CONFIG_PROFILE">>;
|
|
10
9
|
host: z.ZodDefault<z.ZodLiteral<"DATABRICKS_HOST">>;
|
package/lib/src/options.js
CHANGED
|
@@ -7,7 +7,6 @@ import { z } from "zod";
|
|
|
7
7
|
import { isLoopbackHost, MAX_TCP_PORT, urlBuilder } from "./net.js";
|
|
8
8
|
import { isRecord, toBoolean } from "./object.js";
|
|
9
9
|
import { parseList, toIdentifierWithOptions, toSlug } from "./string-utils.js";
|
|
10
|
-
export { MAX_TCP_PORT } from "./net.js";
|
|
11
10
|
const environmentName = (name, description) => z.literal(name).default(name).describe(description);
|
|
12
11
|
export const DatabricksEnvironmentNamesSchema = z
|
|
13
12
|
.object({
|
|
@@ -322,4 +321,4 @@ function normalizeUrl(value) {
|
|
|
322
321
|
const normalized = url.toString();
|
|
323
322
|
return url.pathname === "/" && !url.search && !url.hash ? normalized.slice(0, -1) : normalized;
|
|
324
323
|
}
|
|
325
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRS9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFeEMsTUFBTSxlQUFlLEdBQUcsQ0FBbUIsSUFBTyxFQUFFLFdBQW1CLEVBQUUsRUFBRSxDQUN6RSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFdEQsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsQ0FBQztLQUM5QyxNQUFNLENBQUM7SUFDTixPQUFPLEVBQUUsZUFBZSxDQUFDLDJCQUEyQixFQUFFLHFDQUFxQyxDQUFDO0lBQzVGLElBQUksRUFBRSxlQUFlLENBQUMsaUJBQWlCLEVBQUUsOEJBQThCLENBQUM7SUFDeEUsU0FBUyxFQUFFLGVBQWUsQ0FBQyx1QkFBdUIsRUFBRSxvQ0FBb0MsQ0FBQztJQUN6RixXQUFXLEVBQUUsZUFBZSxDQUFDLHlCQUF5QixFQUFFLHNDQUFzQyxDQUFDO0lBQy9GLFVBQVUsRUFBRSxlQUFlLENBQ3pCLHdCQUF3QixFQUN4Qix5Q0FBeUMsQ0FDMUM7SUFDRCxRQUFRLEVBQUUsZUFBZSxDQUFDLHNCQUFzQixFQUFFLHlDQUF5QyxDQUFDO0lBQzVGLFlBQVksRUFBRSxlQUFlLENB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Q0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFDRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUM1QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDL0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQzVFLENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzNFLElBQUksYUFBYSxLQUFLLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUMzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDaEYsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFF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QWM7SUFDM0QsSUFBSSxJQUFJLEtBQUssU0FBUztRQUFFLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUN6RCxJQUFJLElBQUksS0FBSyxPQUFPLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtRQUFFLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNFLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUMsTUFBc0IsRUFBRSxJQUF1QjtJQUN2RSxJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzlCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFO1lBQUUsT0FBTyxLQUFLLENBQUM7SUFDMUUsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxLQUFhO0lBQ2pDLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3ZCLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQyxPQUFPLEdBQUcsQ0FBQyxRQUFRLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztBQUNqRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCcm93c2VyLXNhZmUgb3B0aW9uIHByaW1pdGl2ZXMgc2hhcmVkIGFjcm9zcyBkYngtdG9vbHMgcGFja2FnZXMuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgeyBpc0xvb3BiYWNrSG9zdCwgTUFYX1RDUF9QT1JULCB1cmxCdWlsZGVyIH0gZnJvbSBcIi4vbmV0LnRzXCI7XG5pbXBvcnQgeyBpc1JlY29yZCwgdG9Cb29sZWFuIH0gZnJvbSBcIi4vb2JqZWN0LnRzXCI7XG5pbXBvcnQgeyBwYXJzZUxpc3QsIHRvSWRlbnRpZmllcldpdGhPcHRpb25zLCB0b1NsdWcgfSBmcm9tIFwiLi9zdHJpbmctdXRpbHMudHNcIjtcblxuZXhwb3J0IHsgTUFYX1RDUF9QT1JUIH0gZnJvbSBcIi4vbmV0LnRzXCI7XG5cbmNvbnN0IGVudmlyb25tZW50TmFtZSA9IDxUIGV4dGVuZHMgc3RyaW5nPihuYW1lOiBULCBkZXNjcmlwdGlvbjogc3RyaW5nKSA9PlxuICB6LmxpdGVyYWwobmFtZSkuZGVmYXVsdChuYW1lKS5kZXNjcmliZShkZXNjcmlwdGlvbik7XG5cbmV4cG9ydCBjb25zdCBEYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lc1NjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgcHJvZmlsZTogZW52aXJvbm1lbnROYW1lKFwiREFUQUJSSUNLU19DT05GSUdfUFJPRklMRVwiLCBcIkRhdGFicmlja3MgQ0xJIHByb2ZpbGUgZW52aXJvbm1lbnQuXCIpLFxuICAgIGhvc3Q6IGVudmlyb25tZW50TmFtZShcIkRBVEFCUklDS1NfSE9TVFwiLCBcIkRhdGFicmlja3MgaG9zdCBlbnZpcm9ubWVudC5cIiksXG4gICAgYWNjb3VudElkOiBlbnZpcm9ubWVudE5hbWUoXCJEQVRBQlJJQ0tTX0FDQ09VTlRfSURcIiwgXCJEYXRhYnJpY2tzIGFjY291bnQgSUQgZW52aXJvbm1lbnQuXCIpLFxuICAgIHdvcmtzcGFjZUlkOiBlbnZpcm9ubWVudE5hbWUoXCJEQVRBQlJJQ0tTX1dPUktTUEFDRV9JRFwiLCBcIkRhdGFicmlja3Mgd29ya3NwYWNlIElEIGVudmlyb25tZW50LlwiKSxcbiAgICBjb25maWdGaWxlOiBlbnZpcm9ubWVudE5hbWUoXG4gICAgICBcIkRBVEFCUklDS1NfQ09ORklHX0ZJTEVcIixcbiAgICAgIFwiRGF0YWJyaWNrcyBDTEkgY29uZmlnIGZpbGUgZW52aXJvbm1lbnQuXCIsXG4gICAgKSxcbiAgICBjbGllbnRJZDogZW52aXJvbm1lbnROYW1lKFwiREFUQUJSSUNLU19DTElFTlRfSURcIiwgXCJEYXRhYnJpY2tzIE9BdXRoIGNsaWVudCBJRCBlbnZpcm9ubWVudC5cIiksXG4gICAgY2xpZW50U2VjcmV0OiBlbnZpcm9ubWVudE5hbWUoXG4gICAgICBcIkRBVEFCUklDS1NfQ0xJRU5UX1NFQ1JFVFwiLFxuICAgICAgXCJEYXRhYnJpY2tzIE9BdXRoIGNsaWVudCBzZWNyZXQgZW52aXJvbm1lbnQuXCIsXG4gICAgKSxcbiAgICBhY2Nlc3NUb2tlbjogZW52aXJvbm1lbnROYW1lKFwiREFUQUJSSUNLU19UT0tFTlwiLCBcIkRhdGFicmlja3MgYWNjZXNzIHRva2VuIGVudmlyb25tZW50LlwiKSxcbiAgICBncm91cElkOiBlbnZpcm9ubWVudE5hbWUoXCJEQVRBQlJJQ0tTX0dST1VQX0lEXCIsIFwiRGF0YWJyaWNrcyBncm91cCBJRCBlbnZpcm9ubWVudC5cIiksXG4gICAgYXV0aFR5cGU6IGVudmlyb25tZW50TmFtZShcIkRBVEFCUklDS1NfQVVUSF9UWVBFXCIsIFwiRGF0YWJyaWNrcyBhdXRoIHR5cGUgZW52aXJvbm1lbnQuXCIpLFxuICAgIGFwcE5hbWU6IGVudmlyb25tZW50TmFtZShcIkRBVEFCUklDS1NfQVBQX05BTUVcIiwgXCJEYXRhYnJpY2tzIEFwcCBuYW1lIGVudmlyb25tZW50LlwiKSxcbiAgICBhcHBQb3J0OiBlbnZpcm9ubWVudE5hbWUoXCJEQVRBQlJJQ0tTX0FQUF9QT1JUXCIsIFwiRGF0YWJyaWNrcyBBcHAgcG9ydCBlbnZpcm9ubWVudC5cIiksXG4gICAgbGFrZWJhc2VFbmRwb2ludDogZW52aXJvbm1lbnROYW1lKFwiTEFLRUJBU0VfRU5EUE9JTlRcIiwgXCJMYWtlYmFzZSBlbmRwb2ludCBlbnZpcm9ubWVudC5cIiksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJDYW5vbmljYWwgRGF0YWJyaWNrcyBDTEksIFNESywgQXBwcywgYW5kIExha2ViYXNlIGVudmlyb25tZW50IG5hbWVzLlwiKTtcblxuZXhwb3J0IHR5cGUgRGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXMgPSB6Lm91dHB1dDx0eXBlb2YgRGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXNTY2hlbWE+O1xuXG4vKiogQ2Fub25pY2FsIERhdGFicmlja3MgZW52aXJvbm1lbnQgbmFtZXMgZGVyaXZlZCBmcm9tIHRoZSBvd25pbmcgc2NoZW1hLiAqL1xuZXhwb3J0IGNvbnN0IGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzID0gT2JqZWN0LmZyZWV6ZShEYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lc1NjaGVtYS5wYXJzZSh7fSkpO1xuXG5leHBvcnQgY29uc3QgUG9zdGdyZXNFbnZpcm9ubWVudE5hbWVzU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBwb3N0Z3Jlc1JvbGU6IGVudmlyb25tZW50TmFtZShcbiAgICAgIFwiREJYX1RPT0xTX1BPU1RHUkVTX1JPTEVcIixcbiAgICAgIFwiUG9zdGdyZVNRTCBhc3N1bWVkLXJvbGUgZW52aXJvbm1lbnQuXCIsXG4gICAgKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIkNhbm9uaWNhbCBkYngtdG9vbHMgUG9zdGdyZVNRTCBlbnZpcm9ubWVudCBuYW1lcy5cIik7XG5cbmV4cG9ydCB0eXBlIFBvc3RncmVzRW52aXJvbm1lbnROYW1lcyA9IHoub3V0cHV0PHR5cGVvZiBQb3N0Z3Jlc0Vudmlyb25tZW50TmFtZXNTY2hlbWE+O1xuXG4vKiogQ2Fub25pY2FsIFBvc3RncmVTUUwgZW52aXJvbm1lbnQgbmFtZXMgZGVyaXZlZCBmcm9tIHRoZSBvd25pbmcgc2NoZW1hLiAqL1xuZXhwb3J0IGNvbnN0IHBvc3RncmVzRW52aXJvbm1lbnROYW1lcyA9IE9iamVjdC5mcmVlemUoUG9zdGdyZXNFbnZpcm9ubWVudE5hbWVzU2NoZW1hLnBhcnNlKHt9KSk7XG5cbmV4cG9ydCBjb25zdCBwb3N0Z3Jlc1JvbGVTY2hlbWEgPSB6XG4gIC5zdHJpbmcoKVxuICAudHJpbSgpXG4gIC5taW4oMSlcbiAgLnJlZ2V4KFxuICAgIC9eW0EtWmEtejAtOS5fQCstXXsxLDI1NX0kLyxcbiAgICBcIlBvc3RncmVTUUwgcm9sZSBtdXN0IGNvbnRhaW4gb25seSBsZXR0ZXJzLCBudW1iZXJzLCBkb3QsIHVuZGVyc2NvcmUsIGF0LCBwbHVzLCBvciBoeXBoZW4uXCIsXG4gIClcbiAgLmRlc2NyaWJlKFwiUG9zdGdyZVNRTCByb2xlIGFzc3VtZWQgYWZ0ZXIgYXV0aGVudGljYXRpb24uXCIpO1xuXG5leHBvcnQgY29uc3QgUG9zdGdyZXNPcHRpb25zU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBwb3N0Z3Jlc1JvbGU6IHBvc3RncmVzUm9sZVNjaGVtYVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIlBvc3RncmVTUUwgcm9sZSBhc3N1bWVkIGFmdGVyIGF1dGhlbnRpY2F0aW9uLlwiKVxuICAgICAgLm1ldGEoeyBlbnY6IHBvc3RncmVzRW52aXJvbm1lbnROYW1lcy5wb3N0Z3Jlc1JvbGUgfSksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJTaGFyZWQgUG9zdGdyZVNRTCBzZXNzaW9uIG9wdGlvbnMuXCIpO1xuXG5leHBvcnQgY29uc3QgUG9zdGdyZXNDb25maWdPcHRpb25zU2NoZW1hID0gUG9zdGdyZXNPcHRpb25zU2NoZW1hLnNhZmVFeHRlbmQoe1xuICBwb3N0Z3Jlc1JvbGU6IFBvc3RncmVzT3B0aW9uc1NjaGVtYS5zaGFwZS5wb3N0Z3Jlc1JvbGUubWV0YSh7IGVudjogXCJQT1NUR1JFU19ST0xFXCIgfSksXG59KS5kZXNjcmliZShcIlBvc3RncmVTUUwgb3B0aW9ucyByZXNvbHZlZCB0aHJvdWdoIHNjb3BlZCBjb25maWd1cmF0aW9uLlwiKTtcblxuZXhwb3J0IHR5cGUgUG9zdGdyZXNPcHRpb25zID0gei5pbnB1dDx0eXBlb2YgUG9zdGdyZXNPcHRpb25zU2NoZW1hPjtcblxuZXhwb3J0IGNvbnN0IHRjcFBvcnRTY2hlbWEgPSB6LmNvZXJjZVxuICAubnVtYmVyPG51bWJlcj4oKVxuICAuaW50KClcbiAgLm1pbigxKVxuICAubWF4KE1BWF9UQ1BfUE9SVClcbiAgLmRlc2NyaWJlKFwiVENQIHBvcnQgZnJvbSAxIHRocm91Z2ggNjU1MzUuXCIpO1xuXG5leHBvcnQgY29uc3QgdGNwUG9ydE9yWmVyb1NjaGVtYSA9IHouY29lcmNlXG4gIC5udW1iZXI8bnVtYmVyPigpXG4gIC5pbnQoKVxuICAubWluKDApXG4gIC5tYXgoTUFYX1RDUF9QT1JUKVxuICAuZGVzY3JpYmUoXCJUQ1AgcG9ydCBmcm9tIDAgdGhyb3VnaCA2NTUzNSwgd2hlcmUgemVybyByZXF1ZXN0cyBhdXRvbWF0aWMgYWxsb2NhdGlvbi5cIik7XG5cbmV4cG9ydCBjb25zdCBub3JtYWxpemVkVXJsU2NoZW1hID0gelxuICAuc3RyaW5nKClcbiAgLnRyaW0oKVxuICAubWluKDEpXG4gIC5yZWZpbmUoKHZhbHVlKSA9PiB1cmxCdWlsZGVyKHZhbHVlKSAhPT0gdW5kZWZpbmVkLCB7XG4gICAgbWVzc2FnZTogXCJFeHBlY3RlZCBhIHZhbGlkIFVSTCBvciBob3N0LlwiLFxuICB9KVxuICAub3ZlcndyaXRlKG5vcm1hbGl6ZVVybClcbiAgLmRlc2NyaWJlKFwiVVJMIG5vcm1hbGl6ZWQgdGhyb3VnaCB0aGUgc2hhcmVkIFVSTCBidWlsZGVyLlwiKTtcblxuY29uc3QgZGF0YWJyaWNrc1RleHQgPSAoZGVzY3JpcHRpb246IHN0cmluZykgPT5cbiAgei5zdHJpbmcoKS50cmltKCkubWluKDEpLm9wdGlvbmFsKCkuZGVzY3JpYmUoZGVzY3JpcHRpb24pO1xuY29uc3QgZGF0YWJyaWNrc09wdGlvbk1ldGEgPSAoZW52OiBzdHJpbmcsIGZsYWcgPSB0cnVlKSA9PiAoe1xuICBlbnYsXG4gIGZsYWcsXG4gIGhlbHBEZWZhdWx0OiBmYWxzZSxcbn0pO1xuXG5leHBvcnQgY29uc3QgRGF0YWJyaWNrc09wdGlvbnNTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHByb2ZpbGU6IGRhdGFicmlja3NUZXh0KFwiRGF0YWJyaWNrcyBDTEkgcHJvZmlsZS5cIikubWV0YShcbiAgICAgIGRhdGFicmlja3NPcHRpb25NZXRhKGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzLnByb2ZpbGUpLFxuICAgICksXG4gICAgaG9zdDogbm9ybWFsaXplZFVybFNjaGVtYVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIkRhdGFicmlja3MgaG9zdC5cIilcbiAgICAgIC5tZXRhKGRhdGFicmlja3NPcHRpb25NZXRhKGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzLmhvc3QsIGZhbHNlKSksXG4gICAgYWNjb3VudElkOiBkYXRhYnJpY2tzVGV4dChcIkRhdGFicmlja3MgYWNjb3VudCBJRC5cIikubWV0YShcbiAgICAgIGRhdGFicmlja3NPcHRpb25NZXRhKGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzLmFjY291bnRJZCwgZmFsc2UpLFxuICAgICksXG4gICAgd29ya3NwYWNlSWQ6IGRhdGFicmlja3NUZXh0KFwiRGF0YWJyaWNrcyB3b3Jrc3BhY2UgSUQuXCIpLm1ldGEoXG4gICAgICBkYXRhYnJpY2tzT3B0aW9uTWV0YShkYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lcy53b3Jrc3BhY2VJZCwgZmFsc2UpLFxuICAgICksXG4gICAgY29uZmlnRmlsZTogZGF0YWJyaWNrc1RleHQoXCJEYXRhYnJpY2tzIENMSSBjb25maWcgZmlsZS5cIikubWV0YShcbiAgICAgIGRhdGFicmlja3NPcHRpb25NZXRhKGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzLmNvbmZpZ0ZpbGUsIGZhbHNlKSxcbiAgICApLFxuICAgIGNsaWVudElkOiBkYXRhYnJpY2tzVGV4dChcIkRhdGFicmlja3MgT0F1dGggY2xpZW50IElELlwiKS5tZXRhKFxuICAgICAgZGF0YWJyaWNrc09wdGlvbk1ldGEoZGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXMuY2xpZW50SWQsIGZhbHNlKSxcbiAgICApLFxuICAgIGNsaWVudFNlY3JldDogZGF0YWJyaWNrc1RleHQoXCJEYXRhYnJpY2tzIE9BdXRoIGNsaWVudCBzZWNyZXQuXCIpLm1ldGEoXG4gICAgICBkYXRhYnJpY2tzT3B0aW9uTWV0YShkYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lcy5jbGllbnRTZWNyZXQsIGZhbHNlKSxcbiAgICApLFxuICAgIGFjY2Vzc1Rva2VuOiBkYXRhYnJpY2tzVGV4dChcIkRhdGFicmlja3MgYWNjZXNzIHRva2VuLlwiKS5tZXRhKFxuICAgICAgZGF0YWJyaWNrc09wdGlvbk1ldGEoZGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXMuYWNjZXNzVG9rZW4sIGZhbHNlKSxcbiAgICApLFxuICAgIGdyb3VwSWQ6IGRhdGFicmlja3NUZXh0KFwiRGF0YWJyaWNrcyBncm91cCBJRC5cIikubWV0YShcbiAgICAgIGRhdGFicmlja3NPcHRpb25NZXRhKGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzLmdyb3VwSWQsIGZhbHNlKSxcbiAgICApLFxuICAgIGF1dGhUeXBlOiBkYXRhYnJpY2tzVGV4dChcIkRhdGFicmlja3MgYXV0aGVudGljYXRpb24gdHlwZS5cIikubWV0YShcbiAgICAgIGRhdGFicmlja3NPcHRpb25NZXRhKGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzLmF1dGhUeXBlLCBmYWxzZSksXG4gICAgKSxcbiAgICBhcHBOYW1lOiBkYXRhYnJpY2tzVGV4dChcIkRhdGFicmlja3MgQXBwIG5hbWUuXCIpLm1ldGEoXG4gICAgICBkYXRhYnJpY2tzT3B0aW9uTWV0YShkYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lcy5hcHBOYW1lLCBmYWxzZSksXG4gICAgKSxcbiAgICBhcHBQb3J0OiB0Y3BQb3J0U2NoZW1hXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiRGF0YWJyaWNrcyBBcHAgcG9ydC5cIilcbiAgICAgIC5tZXRhKGRhdGFicmlja3NPcHRpb25NZXRhKGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzLmFwcFBvcnQsIGZhbHNlKSksXG4gICAgbGFrZWJhc2VFbmRwb2ludDogZGF0YWJyaWNrc1RleHQoXCJMYWtlYmFzZSBlbmRwb2ludC5cIikubWV0YShcbiAgICAgIGRhdGFicmlja3NPcHRpb25NZXRhKGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzLmxha2ViYXNlRW5kcG9pbnQsIGZhbHNlKSxcbiAgICApLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLmRlc2NyaWJlKFwiQ29tbW9uIERhdGFicmlja3MgQ0xJLCBTREssIEFwcHMsIGFuZCBMYWtlYmFzZSBvcHRpb25zLlwiKTtcblxuZXhwb3J0IHR5cGUgRGF0YWJyaWNrc09wdGlvbnMgPSB6LmlucHV0PHR5cGVvZiBEYXRhYnJpY2tzT3B0aW9uc1NjaGVtYT47XG5cbi8qKiBLZXkgZm9ybWF0IHVzZWQgd2hlbiBzZXJpYWxpemluZyBwYXJzZWQgb3B0aW9ucy4gKi9cbmV4cG9ydCB0eXBlIE9wdGlvblNlcmlhbGl6YXRpb25Gb3JtYXQgPSBcImZsYWdcIiB8IFwiZW52XCI7XG5cbmludGVyZmFjZSBPcHRpb25Qcm9wZXJ0eSB7XG4gIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuICByZWFkb25seSB0eXBlPzogc3RyaW5nO1xuICByZWFkb25seSBlbnY/OiBzdHJpbmcgfCByZWFkb25seSBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgZmxhZz86IGJvb2xlYW47XG59XG5cbi8qKiBTZXJpYWxpemUgY29tcGxldGUgcGFyc2VkIG9wdGlvbnMgYXMgYSBwcm9jZXNzIGVudmlyb25tZW50IG1hcC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVPcHRzRW52aXJvbm1lbnQ8VCBleHRlbmRzIHouWm9kUmF3U2hhcGU+KFxuICBzY2hlbWE6IHouWm9kT2JqZWN0PFQ+LFxuICB2YWx1ZXM6IHouaW5wdXQ8ei5ab2RPYmplY3Q8VD4+LFxuKTogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIE9iamVjdC5lbnRyaWVzKHNlcmlhbGl6ZWRPcHRzKHNjaGVtYSwgdmFsdWVzLCBcImVudlwiKSkubWFwKChba2V5LCB2YWx1ZV0pID0+IFtcbiAgICAgIGtleSxcbiAgICAgIGVudmlyb25tZW50T3B0aW9uVmFsdWUodmFsdWUpLFxuICAgIF0pLFxuICApO1xufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVkT3B0czxUIGV4dGVuZHMgei5ab2RSYXdTaGFwZT4oXG4gIHNjaGVtYTogei5ab2RPYmplY3Q8VD4sXG4gIHZhbHVlczogei5pbnB1dDx6LlpvZE9iamVjdDxUPj4sXG4gIGZvcm1hdDogT3B0aW9uU2VyaWFsaXphdGlvbkZvcm1hdCxcbik6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIGNvbnN0IHBhcnNlZCA9IHNjaGVtYS5wYXJzZSh2YWx1ZXMpIGFzIFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgY29uc3QgZW50cmllcyA9IG9wdGlvblByb3BlcnRpZXMoc2NoZW1hKS5mbGF0TWFwKChwcm9wZXJ0eSkgPT4ge1xuICAgIGlmIChmb3JtYXQgPT09IFwiZmxhZ1wiICYmIHByb3BlcnR5LmZsYWcgPT09IGZhbHNlKSByZXR1cm4gW107XG4gICAgY29uc3Qga2V5ID1cbiAgICAgIGZvcm1hdCA9PT0gXCJmbGFnXCJcbiAgICAgICAgPyBgLS0ke3RvU2x1Zyhwcm9wZXJ0eS5rZXkpfWBcbiAgICAgICAgOiAob3B0aW9uRW52aXJvbm1lbnROYW1lcyhwcm9wZXJ0eS5rZXksIHByb3BlcnR5LmVudilbMF0gPz8gXCJcIik7XG4gICAgaWYgKCFrZXkpIHJldHVybiBbXTtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcnNlZFtwcm9wZXJ0eS5rZXldO1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gW10gOiBbW2tleSwgc2VyaWFsaXplZE9wdGlvblZhbHVlKHZhbHVlKV0gYXMgY29uc3RdO1xuICB9KTtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhlbnRyaWVzKTtcbn1cblxuY29uc3Qgb3B0aW9uYWxUZXh0ID0gKGRlc2NyaXB0aW9uOiBzdHJpbmcsIGVudjogc3RyaW5nKSA9PlxuICB6LnN0cmluZygpLnRyaW0oKS5taW4oMSkub3B0aW9uYWwoKS5kZXNjcmliZShkZXNjcmlwdGlvbikubWV0YSh7IGVudiwgZmxhZzogZmFsc2UgfSk7XG5cbmV4cG9ydCBjb25zdCBMYWtlYmFzZU9wdGlvbnNTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGxha2ViYXNlRW5kcG9pbnQ6IG9wdGlvbmFsVGV4dChcbiAgICAgIFwiTGFrZWJhc2UgcHJvamVjdCwgcmVzb3VyY2UgcGF0aCwgaG9zdCwgb3IgVVJMLlwiLFxuICAgICAgZGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXMubGFrZWJhc2VFbmRwb2ludCxcbiAgICApLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLmRlc2NyaWJlKFwiQ29tbW9uIExha2ViYXNlIG9wdGlvbnMuXCIpO1xuXG5leHBvcnQgdHlwZSBMYWtlYmFzZU9wdGlvbnMgPSB6LmlucHV0PHR5cGVvZiBMYWtlYmFzZU9wdGlvbnNTY2hlbWE+O1xuXG4vKiogRXhwbGljaXQgb3B0aW9uIHZhbHVlcyBvciBlbnZpcm9ubWVudCBlbnRyaWVzIGNvbnN1bWVkIGJ5IG9wdGlvbiBwYXJzaW5nIGhlbHBlcnMuICovXG5leHBvcnQgdHlwZSBPcHRpb25WYWx1ZU1hcCA9IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB8IG51bGw7XG5cbi8qKiBQYXJzZSBvbmx5IHN1cHBsaWVkIGZsYWcgYW5kIGVudmlyb25tZW50IHZhbHVlcyB0aHJvdWdoIGFuIG93bmluZyBab2Qgb2JqZWN0IHNjaGVtYS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU9wdHM8VCBleHRlbmRzIHouWm9kUmF3U2hhcGU+KFxuICBzY2hlbWE6IHouWm9kT2JqZWN0PFQ+LFxuICBmbGFnczogT3B0aW9uVmFsdWVNYXAgPSBudWxsLFxuICBlbnZpcm9ubWVudDogT3B0aW9uVmFsdWVNYXAgPSBudWxsLFxuKTogUGFydGlhbDx6Lm91dHB1dDx6LlpvZE9iamVjdDxUPj4+IHtcbiAgY29uc3QgY29uZmlndXJlZCA9IG9wdGlvblZhbHVlcyhzY2hlbWEsIGZsYWdzLCBlbnZpcm9ubWVudCk7XG4gIGNvbnN0IHBhcnNlZCA9IHNjaGVtYS5wYXJzZShjb25maWd1cmVkKTtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3Qua2V5cyhjb25maWd1cmVkKS5tYXAoKGtleSkgPT4gW2tleSwgcGFyc2VkW2tleSBhcyBrZXlvZiB0eXBlb2YgcGFyc2VkXV0pLFxuICApIGFzIFBhcnRpYWw8ei5vdXRwdXQ8ei5ab2RPYmplY3Q8VD4+Pjtcbn1cblxuLyoqIFN1cHBvcnRlZCBsaXN0ZW5lciB0cmFuc3BvcnQgc2NoZW1lcy4gKi9cbmV4cG9ydCB0eXBlIExpc3RlblNjaGVtZSA9IFwidGNwXCIgfCBcInVuaXhcIjtcblxuZXhwb3J0IGNvbnN0IFRjcExpc3RlbkFkZHJlc3NTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHNjaGVtZTogei5saXRlcmFsKFwidGNwXCIpLFxuICAgIGhvc3Q6IHouc3RyaW5nKCkudHJpbSgpLnRvTG93ZXJDYXNlKCkubWluKDEpLFxuICAgIHBvcnQ6IHRjcFBvcnRPclplcm9TY2hlbWEsXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJUQ1AgbGlzdGVuZXIgYWRkcmVzcy5cIik7XG5cbmV4cG9ydCBjb25zdCBVbml4TGlzdGVuQWRkcmVzc1NjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgc2NoZW1lOiB6LmxpdGVyYWwoXCJ1bml4XCIpLFxuICAgIHBhdGg6IHouc3RyaW5nKCkudHJpbSgpLm1pbigxKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIlVuaXgtZG9tYWluIGxpc3RlbmVyIGFkZHJlc3MuXCIpO1xuXG4vKiogVENQIGxpc3RlbmVyIHJldHVybmVkIGJ5IHtAbGluayBsaXN0ZW5BZGRyZXNzU2NoZW1hfS4gKi9cbmV4cG9ydCB0eXBlIFRjcExpc3RlbkFkZHJlc3MgPSB6Lm91dHB1dDx0eXBlb2YgVGNwTGlzdGVuQWRkcmVzc1NjaGVtYT47XG4vKiogVW5peC1kb21haW4gbGlzdGVuZXIgcmV0dXJuZWQgYnkge0BsaW5rIGxpc3RlbkFkZHJlc3NTY2hlbWF9LiAqL1xuZXhwb3J0IHR5cGUgVW5peExpc3RlbkFkZHJlc3MgPSB6Lm91dHB1dDx0eXBlb2YgVW5peExpc3RlbkFkZHJlc3NTY2hlbWE+O1xuLyoqIFRyYW5zcG9ydC1hd2FyZSBsaXN0ZW5lciBhZGRyZXNzLiAqL1xuZXhwb3J0IHR5cGUgTGlzdGVuQWRkcmVzcyA9IFRjcExpc3RlbkFkZHJlc3MgfCBVbml4TGlzdGVuQWRkcmVzcztcblxuLyoqIERlZmF1bHRzIGFuZCB2YWxpZGF0aW9uIHBvbGljeSBmb3Ige0BsaW5rIGxpc3RlbkFkZHJlc3NTY2hlbWF9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaXN0ZW5BZGRyZXNzT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHBvcnQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgaG9zdD86IHN0cmluZztcbiAgcmVhZG9ubHkgbG9vcGJhY2s/OiBib29sZWFuO1xuICByZWFkb25seSBzY2hlbWU/OiBMaXN0ZW5TY2hlbWU7XG4gIHJlYWRvbmx5IHNjaGVtZXM/OiByZWFkb25seSBMaXN0ZW5TY2hlbWVbXTtcbiAgcmVhZG9ubHkgd2l0aERlZmF1bHQ/OiBib29sZWFuO1xufVxuXG4vKiogUmF3IGxpc3RlbmVyIGlucHV0IGFjY2VwdGVkIGJlZm9yZSB0cmFuc3BvcnQtYXdhcmUgbm9ybWFsaXphdGlvbi4gKi9cbmV4cG9ydCB0eXBlIExpc3RlbkFkZHJlc3NJbnB1dCA9IExpc3RlbkFkZHJlc3MgfCBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBsaXN0ZW5BZGRyZXNzU2NoZW1hKFxuICBvcHRpb25zOiBMaXN0ZW5BZGRyZXNzT3B0aW9ucyAmIHtcbiAgICByZWFkb25seSBzY2hlbWVzOiByZWFkb25seSBbXCJ0Y3BcIiwgXCJ1bml4XCJdO1xuICAgIHJlYWRvbmx5IHdpdGhEZWZhdWx0OiBmYWxzZTtcbiAgfSxcbik6IHouWm9kVHlwZTxMaXN0ZW5BZGRyZXNzLCB1bmtub3duPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGxpc3RlbkFkZHJlc3NTY2hlbWEoXG4gIG9wdGlvbnM6IExpc3RlbkFkZHJlc3NPcHRpb25zICYgeyByZWFkb25seSBzY2hlbWVzOiByZWFkb25seSBbXCJ0Y3BcIiwgXCJ1bml4XCJdIH0sXG4pOiB6LlpvZERlZmF1bHQ8ei5ab2RUeXBlPExpc3RlbkFkZHJlc3MsIHVua25vd24+PjtcblxuZXhwb3J0IGZ1bmN0aW9uIGxpc3RlbkFkZHJlc3NTY2hlbWEoXG4gIG9wdGlvbnM6IExpc3RlbkFkZHJlc3NPcHRpb25zICYgeyByZWFkb25seSB3aXRoRGVmYXVsdDogZmFsc2UgfSxcbik6IHouWm9kVHlwZTxUY3BMaXN0ZW5BZGRyZXNzLCB1bmtub3duPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGxpc3RlbkFkZHJlc3NTY2hlbWEoXG4gIG9wdGlvbnM6IExpc3RlbkFkZHJlc3NPcHRpb25zLFxuKTogei5ab2REZWZhdWx0PHouWm9kVHlwZTxUY3BMaXN0ZW5BZGRyZXNzLCB1bmtub3duPj47XG5cbi8qKiBCdWlsZCBhIHRyYW5zcG9ydC1hd2FyZSBsaXN0ZW5lciBzY2hlbWEuIEJhcmUgYWRkcmVzc2VzIHVzZSB0aGUgY29uZmlndXJlZCBkZWZhdWx0IHNjaGVtZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaXN0ZW5BZGRyZXNzU2NoZW1hKFxuICBvcHRpb25zOiBMaXN0ZW5BZGRyZXNzT3B0aW9ucyxcbik6IHouWm9kVHlwZTxMaXN0ZW5BZGRyZXNzLCB1bmtub3duPiB8IHouWm9kRGVmYXVsdDx6LlpvZFR5cGU8TGlzdGVuQWRkcmVzcywgdW5rbm93bj4+IHtcbiAgY29uc3QgZGVmYXVsdHM6IFRjcExpc3RlbkFkZHJlc3MgPSB7XG4gICAgc2NoZW1lOiBcInRjcFwiLFxuICAgIGhvc3Q6IG9wdGlvbnMuaG9zdCA/PyBcImxvY2FsaG9zdFwiLFxuICAgIHBvcnQ6IG9wdGlvbnMucG9ydCxcbiAgfTtcbiAgY29uc3QgYWxsb3dlZCA9IG5ldyBTZXQ8TGlzdGVuU2NoZW1lPihvcHRpb25zLnNjaGVtZXMgPz8gW1widGNwXCJdKTtcbiAgY29uc3Qgc2NoZW1hID0gelxuICAgIC5wcmVwcm9jZXNzKFxuICAgICAgKHZhbHVlKSA9PiBwYXJzZUxpc3RlbkFkZHJlc3ModmFsdWUsIGRlZmF1bHRzLCBvcHRpb25zLnNjaGVtZSA/PyBcInRjcFwiKSxcbiAgICAgIHouZGlzY3JpbWluYXRlZFVuaW9uKFwic2NoZW1lXCIsIFtcbiAgICAgICAgVGNwTGlzdGVuQWRkcmVzc1NjaGVtYS5leHRlbmQoe1xuICAgICAgICAgIGhvc3Q6IFRjcExpc3RlbkFkZHJlc3NTY2hlbWEuc2hhcGUuaG9zdC5kZWZhdWx0KGRlZmF1bHRzLmhvc3QpLFxuICAgICAgICAgIHBvcnQ6IFRjcExpc3RlbkFkZHJlc3NTY2hlbWEuc2hhcGUucG9ydC5kZWZhdWx0KGRlZmF1bHRzLnBvcnQpLFxuICAgICAgICB9KSxcbiAgICAgICAgVW5peExpc3RlbkFkZHJlc3NTY2hlbWEsXG4gICAgICBdKSxcbiAgICApXG4gICAgLnJlZmluZSgoYWRkcmVzcykgPT4gYWxsb3dlZC5oYXMoYWRkcmVzcy5zY2hlbWUpLCBcIkxpc3RlbmVyIHNjaGVtZSBpcyBub3QgYWxsb3dlZC5cIilcbiAgICAucmVmaW5lKFxuICAgICAgKGFkZHJlc3MpID0+IGFkZHJlc3Muc2NoZW1lICE9PSBcInRjcFwiIHx8ICFvcHRpb25zLmxvb3BiYWNrIHx8IGlzTG9vcGJhY2tIb3N0KGFkZHJlc3MuaG9zdCksXG4gICAgICBcIkxpc3RlbmVyIGhvc3QgbXVzdCBiZSBsb29wYmFjay5cIixcbiAgICApXG4gICAgLmRlc2NyaWJlKFwiVENQIG9yIFVuaXgtZG9tYWluIGxpc3RlbmVyIGFkZHJlc3MuXCIpIGFzIHouWm9kVHlwZTxMaXN0ZW5BZGRyZXNzLCB1bmtub3duPjtcbiAgcmV0dXJuIG9wdGlvbnMud2l0aERlZmF1bHQgPT09IGZhbHNlID8gc2NoZW1hIDogc2NoZW1hLmRlZmF1bHQoZGVmYXVsdHMpO1xufVxuXG4vKiogUmVuZGVyIGEgbGlzdGVuZXIgYWRkcmVzcyBhcyBhIGB0Y3A6Ly9gIG9yIGB1bml4Oi8vYCBVUkwuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TGlzdGVuQWRkcmVzcyhhZGRyZXNzOiBMaXN0ZW5BZGRyZXNzKTogc3RyaW5nIHtcbiAgaWYgKGFkZHJlc3Muc2NoZW1lID09PSBcInVuaXhcIikge1xuICAgIHJldHVybiBgdW5peDovLyR7YWRkcmVzcy5wYXRoLnN0YXJ0c1dpdGgoXCIvXCIpID8gXCJcIiA6IFwiL1wifSR7YWRkcmVzcy5wYXRofWA7XG4gIH1cbiAgY29uc3QgaG9zdCA9IGFkZHJlc3MuaG9zdC5pbmNsdWRlcyhcIjpcIikgPyBgWyR7YWRkcmVzcy5ob3N0fV1gIDogYWRkcmVzcy5ob3N0O1xuICByZXR1cm4gYHRjcDovLyR7aG9zdH06JHthZGRyZXNzLnBvcnR9YDtcbn1cblxuZnVuY3Rpb24gcGFyc2VMaXN0ZW5BZGRyZXNzKFxuICB2YWx1ZTogdW5rbm93bixcbiAgZGVmYXVsdHM6IFRjcExpc3RlbkFkZHJlc3MsXG4gIGRlZmF1bHRTY2hlbWU6IExpc3RlblNjaGVtZSxcbik6IHVua25vd24ge1xuICBpZiAoaXNSZWNvcmQodmFsdWUpICYmIHZhbHVlLnNjaGVtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZS5ob3N0ID09PSBcInN0cmluZ1wiICYmIHZhbHVlLnBvcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHsgLi4udmFsdWUsIHNjaGVtZTogXCJ0Y3BcIiB9O1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlLnBhdGggPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHJldHVybiB7IC4uLnZhbHVlLCBzY2hlbWU6IFwidW5peFwiIH07XG4gICAgfVxuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICByZXR1cm4gZGVmYXVsdFNjaGVtZSA9PT0gXCJ0Y3BcIlxuICAgICAgPyB7IHNjaGVtZTogXCJ0Y3BcIiwgaG9zdDogZGVmYXVsdHMuaG9zdCwgcG9ydDogdmFsdWUgfVxuICAgICAgOiB7IHNjaGVtZTogXCJ1bml4XCIsIHBhdGg6IFN0cmluZyh2YWx1ZSkgfTtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiKSByZXR1cm4gdmFsdWU7XG4gIGNvbnN0IHRleHQgPSB2YWx1ZS50cmltKCk7XG4gIGlmICh0ZXh0LnN0YXJ0c1dpdGgoXCJ1bml4Oi8vXCIpKSB7XG4gICAgY29uc3QgcGF0aCA9IHRleHQuc2xpY2UoXCJ1bml4Oi8vXCIubGVuZ3RoKTtcbiAgICByZXR1cm4geyBzY2hlbWU6IFwidW5peFwiLCBwYXRoOiBwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpID8gcGF0aCA6IGAvJHtwYXRofWAgfTtcbiAgfVxuICBjb25zdCB0Y3AgPSB0ZXh0LnN0YXJ0c1dpdGgoXCJ0Y3A6Ly9cIikgPyB0ZXh0LnNsaWNlKFwidGNwOi8vXCIubGVuZ3RoKSA6IHRleHQ7XG4gIGlmIChkZWZhdWx0U2NoZW1lID09PSBcInVuaXhcIiAmJiAhdGV4dC5zdGFydHNXaXRoKFwidGNwOi8vXCIpKSB7XG4gICAgcmV0dXJuIHsgc2NoZW1lOiBcInVuaXhcIiwgcGF0aDogdGV4dCB9O1xuICB9XG4gIGlmICgvXlxcZCskLy50ZXN0KHRjcCkpIHJldHVybiB7IHNjaGVtZTogXCJ0Y3BcIiwgaG9zdDogZGVmYXVsdHMuaG9zdCwgcG9ydDogdGNwIH07XG4gIGlmICgvXjpcXGQrJC8udGVzdCh0Y3ApKSB7XG4gICAgcmV0dXJuIHsgc2NoZW1lOiBcInRjcFwiLCBob3N0OiBkZWZhdWx0cy5ob3N0LCBwb3J0OiB0Y3Auc2xpY2UoMSkgfTtcbiAgfVxuICBjb25zdCBicmFja2V0ZWQgPSB0Y3AubWF0Y2goL15cXFsoW15cXF1dKylcXF0oPzo6KFxcZCspKT8kLyk7XG4gIGlmIChicmFja2V0ZWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2NoZW1lOiBcInRjcFwiLFxuICAgICAgaG9zdDogYnJhY2tldGVkWzFdLFxuICAgICAgcG9ydDogYnJhY2tldGVkWzJdID8/IGRlZmF1bHRzLnBvcnQsXG4gICAgfTtcbiAgfVxuICBjb25zdCBzZXBhcmF0b3IgPSB0Y3AubGFzdEluZGV4T2YoXCI6XCIpO1xuICBpZiAoc2VwYXJhdG9yID4gMCAmJiAhdGNwLnNsaWNlKDAsIHNlcGFyYXRvcikuaW5jbHVkZXMoXCI6XCIpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjaGVtZTogXCJ0Y3BcIixcbiAgICAgIGhvc3Q6IHRjcC5zbGljZSgwLCBzZXBhcmF0b3IpLFxuICAgICAgcG9ydDogdGNwLnNsaWNlKHNlcGFyYXRvciArIDEpLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHsgc2NoZW1lOiBcInRjcFwiLCBob3N0OiB0Y3AgfHwgZGVmYXVsdHMuaG9zdCwgcG9ydDogZGVmYXVsdHMucG9ydCB9O1xufVxuXG5mdW5jdGlvbiBvcHRpb25Qcm9wZXJ0aWVzKHNjaGVtYTogei5ab2RPYmplY3Q8ei5ab2RSYXdTaGFwZT4pOiBPcHRpb25Qcm9wZXJ0eVtdIHtcbiAgY29uc3QgZG9jdW1lbnQgPSB6LnRvSlNPTlNjaGVtYShzY2hlbWEpO1xuICBpZiAoIWlzUmVjb3JkKGRvY3VtZW50LnByb3BlcnRpZXMpKSByZXR1cm4gW107XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhkb2N1bWVudC5wcm9wZXJ0aWVzKS5mbGF0TWFwKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICBpZiAoIWlzUmVjb3JkKHZhbHVlKSkgcmV0dXJuIFtdO1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIGtleSxcbiAgICAgICAgdHlwZTogdHlwZW9mIHZhbHVlLnR5cGUgPT09IFwic3RyaW5nXCIgPyB2YWx1ZS50eXBlIDogdW5kZWZpbmVkLFxuICAgICAgICBlbnY6XG4gICAgICAgICAgdHlwZW9mIHZhbHVlLmVudiA9PT0gXCJzdHJpbmdcIiB8fCBBcnJheS5pc0FycmF5KHZhbHVlLmVudilcbiAgICAgICAgICAgID8gKHZhbHVlLmVudiBhcyBzdHJpbmcgfCByZWFkb25seSBzdHJpbmdbXSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICBmbGFnOiB0eXBlb2YgdmFsdWUuZmxhZyA9PT0gXCJib29sZWFuXCIgPyB2YWx1ZS5mbGFnIDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICBdO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplZE9wdGlvblZhbHVlKHZhbHVlOiB1bmtub3duKTogdW5rbm93biB7XG4gIGlmIChpc1JlY29yZCh2YWx1ZSkgJiYgdmFsdWUuc2NoZW1lID09PSBcInRjcFwiKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZS5ob3N0ID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiB2YWx1ZS5wb3J0ID09PSBcIm51bWJlclwiKSB7XG4gICAgICByZXR1cm4gZm9ybWF0TGlzdGVuQWRkcmVzcyh7IHNjaGVtZTogXCJ0Y3BcIiwgaG9zdDogdmFsdWUuaG9zdCwgcG9ydDogdmFsdWUucG9ydCB9KTtcbiAgICB9XG4gIH1cbiAgaWYgKGlzUmVjb3JkKHZhbHVlKSAmJiB2YWx1ZS5zY2hlbWUgPT09IFwidW5peFwiICYmIHR5cGVvZiB2YWx1ZS5wYXRoID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIGZvcm1hdExpc3RlbkFkZHJlc3MoeyBzY2hlbWU6IFwidW5peFwiLCBwYXRoOiB2YWx1ZS5wYXRoIH0pO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gZW52aXJvbm1lbnRPcHRpb25WYWx1ZSh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlLm1hcChTdHJpbmcpLmpvaW4oXCIsXCIpO1xuICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9PSBudWxsKSByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gb3B0aW9uVmFsdWVzPFQgZXh0ZW5kcyB6LlpvZFJhd1NoYXBlPihcbiAgc2NoZW1hOiB6LlpvZE9iamVjdDxUPixcbiAgdmFsdWVzOiBPcHRpb25WYWx1ZU1hcCxcbiAgZW52aXJvbm1lbnQ6IE9wdGlvblZhbHVlTWFwLFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBjb25zdCBkb2N1bWVudCA9IHoudG9KU09OU2NoZW1hKHNjaGVtYSk7XG4gIGNvbnN0IHByb3BlcnRpZXMgPSBpc1JlY29yZChkb2N1bWVudC5wcm9wZXJ0aWVzKSA/IGRvY3VtZW50LnByb3BlcnRpZXMgOiB7fTtcbiAgY29uc3QgY29uZmlndXJlZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCBwcm9wZXJ0eV0gb2YgT2JqZWN0LmVudHJpZXMocHJvcGVydGllcykpIHtcbiAgICBpZiAoIWlzUmVjb3JkKHByb3BlcnR5KSkgY29udGludWU7XG4gICAgY29uc3QgZXhwbGljaXQgPSBmaXJzdE9wdGlvblZhbHVlKHZhbHVlcywgW2tleSwgYC0tJHt0b1NsdWcoa2V5KX1gXSk7XG4gICAgaWYgKGV4cGxpY2l0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbmZpZ3VyZWRba2V5XSA9IG9wdGlvbkVudmlyb25tZW50VmFsdWUocHJvcGVydHkudHlwZSwgZXhwbGljaXQpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IG5hbWVzID0gb3B0aW9uRW52aXJvbm1lbnROYW1lcyhrZXksIHByb3BlcnR5LmVudik7XG4gICAgY29uc3Qgc291cmNlZCA9IGZpcnN0T3B0aW9uVmFsdWUoZW52aXJvbm1lbnQsIG5hbWVzKTtcbiAgICBpZiAoc291cmNlZCA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcbiAgICBjb25maWd1cmVkW2tleV0gPSBvcHRpb25FbnZpcm9ubWVudFZhbHVlKHByb3BlcnR5LnR5cGUsIHNvdXJjZWQpO1xuICB9XG4gIHJldHVybiBjb25maWd1cmVkO1xufVxuXG5mdW5jdGlvbiBvcHRpb25FbnZpcm9ubWVudE5hbWVzKGtleTogc3RyaW5nLCBjb25maWd1cmVkOiB1bmtub3duKTogc3RyaW5nW10ge1xuICBpZiAodHlwZW9mIGNvbmZpZ3VyZWQgPT09IFwic3RyaW5nXCIpIHJldHVybiBbY29uZmlndXJlZF07XG4gIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZ3VyZWQpKSB7XG4gICAgcmV0dXJuIGNvbmZpZ3VyZWQuZmlsdGVyKCh2YWx1ZSk6IHZhbHVlIGlzIHN0cmluZyA9PiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpO1xuICB9XG4gIHJldHVybiBbdG9JZGVudGlmaWVyV2l0aE9wdGlvbnMoeyBkZWxpbWl0ZXI6IFwiX1wiIH0sIGtleSkudG9VcHBlckNhc2UoKV07XG59XG5cbmZ1bmN0aW9uIG9wdGlvbkVudmlyb25tZW50VmFsdWUodHlwZTogdW5rbm93biwgdmFsdWU6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKHR5cGUgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gdG9Cb29sZWFuKHZhbHVlKSA/PyB2YWx1ZTtcbiAgaWYgKHR5cGUgPT09IFwiYXJyYXlcIiAmJiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHJldHVybiBwYXJzZUxpc3QodmFsdWUpO1xuICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIGZpcnN0T3B0aW9uVmFsdWUoc291cmNlOiBPcHRpb25WYWx1ZU1hcCwga2V5czogcmVhZG9ubHkgc3RyaW5nW10pOiB1bmtub3duIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFzb3VyY2UpIHJldHVybiB1bmRlZmluZWQ7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHNvdXJjZVtrZXldO1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSBcIlwiKSByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVXJsKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCB1cmwgPSB1cmxCdWlsZGVyKHZhbHVlKTtcbiAgaWYgKCF1cmwpIHJldHVybiB2YWx1ZTtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IHVybC50b1N0cmluZygpO1xuICByZXR1cm4gdXJsLnBhdGhuYW1lID09PSBcIi9cIiAmJiAhdXJsLnNlYXJjaCAmJiAhdXJsLmhhc2ggPyBub3JtYWxpemVkLnNsaWNlKDAsIC0xKSA6IG5vcm1hbGl6ZWQ7XG59XG4iXX0=
|
|
324
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRS9FLE1BQU0sZUFBZSxHQUFHLENBQW1CLElBQU8sRUFBRSxXQUFtQixFQUFFLEVBQUUsQ0FDekUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLENBQUM7S0FDOUMsTUFBTSxDQUFDO0lBQ04sT0FBTyxFQUFFLGVBQWUsQ0FBQywyQkFBMkIsRUFBRSxxQ0FBcUMsQ0FBQztJQUM1RixJQUFJLEVBQUUsZUFBZSxDQUFDLGlCQUFpQixFQUFFLDhCQUE4QixDQUFDO0lBQ3hFLFNBQVMsRUFBRSxlQUFlLENBQUMsdUJBQXVCLEVBQUUsb0NBQW9DLENBQUM7SUFDekYsV0FBVyxFQUFFLGVBQWUsQ0FBQyx5QkFBeUIsRUFBRSxzQ0FBc0MsQ0FBQztJQUMvRixVQUFVLEVBQUUsZUFBZSxDQUN6Qix3QkFBd0IsRUFDeEIseUNBQXlDLENBQzFDO0lBQ0QsUUFBUSxFQUFFLGVBQWUsQ0FBQyxzQkFBc0IsRUFBRSx5Q0FBeUMsQ0FBQztJQUM1RixZQUFZLEVBQUUsZUFBZSxDQUMzQiwwQkFBMEIsRUFDMUIsNkNBQTZDLENBQzlDO0lBQ0QsV0FBVyxF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SUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDNUMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQy9CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUM1RSxDQUFDO0lBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMzRSxJQUFJLGFBQWEsS0FBSyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ2hGLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMs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QVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUM7SUFDekQsSUFBSSxJQUFJLEtBQUssT0FBTyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFBRSxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzRSxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLE1BQXNCLEVBQUUsSUFBdUI7SUFDdkUsSUFBSSxDQUFDLE1BQU07UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUM5QixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRTtZQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzFFLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsS0FBYTtJQUNqQyxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsSUFBSSxDQUFDLEdBQUc7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUN2QixNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEMsT0FBTyxHQUFHLENBQUMsUUFBUSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7QUFDakcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQnJvd3Nlci1zYWZlIG9wdGlvbiBwcmltaXRpdmVzIHNoYXJlZCBhY3Jvc3MgZGJ4LXRvb2xzIHBhY2thZ2VzLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHsgaXNMb29wYmFja0hvc3QsIE1BWF9UQ1BfUE9SVCwgdXJsQnVpbGRlciB9IGZyb20gXCIuL25ldC50c1wiO1xuaW1wb3J0IHsgaXNSZWNvcmQsIHRvQm9vbGVhbiB9IGZyb20gXCIuL29iamVjdC50c1wiO1xuaW1wb3J0IHsgcGFyc2VMaXN0LCB0b0lkZW50aWZpZXJXaXRoT3B0aW9ucywgdG9TbHVnIH0gZnJvbSBcIi4vc3RyaW5nLXV0aWxzLnRzXCI7XG5cbmNvbnN0IGVudmlyb25tZW50TmFtZSA9IDxUIGV4dGVuZHMgc3RyaW5nPihuYW1lOiBULCBkZXNjcmlwdGlvbjogc3RyaW5nKSA9PlxuICB6LmxpdGVyYWwobmFtZSkuZGVmYXVsdChuYW1lKS5kZXNjcmliZShkZXNjcmlwdGlvbik7XG5cbmV4cG9ydCBjb25zdCBEYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lc1NjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgcHJvZmlsZTogZW52aXJvbm1lbnROYW1lKFwiREFUQUJSSUNLU19DT05GSUdfUFJPRklMRVwiLCBcIkRhdGFicmlja3MgQ0xJIHByb2ZpbGUgZW52aXJvbm1lbnQuXCIpLFxuICAgIGhvc3Q6IGVudmlyb25tZW50TmFtZShcIkRBVEFCUklDS1NfSE9TVFwiLCBcIkRhdGFicmlja3MgaG9zdCBlbnZpcm9ubWVudC5cIiksXG4gICAgYWNjb3VudElkOiBlbnZpcm9ubWVudE5hbWUoXCJEQVRBQlJJQ0tTX0FDQ09VTlRfSURcIiwgXCJEYXRhYnJpY2tzIGFjY291bnQgSUQgZW52aXJvbm1lbnQuXCIpLFxuICAgIHdvcmtzcGFjZUlkOiBlbnZpcm9ubWVudE5hbWUoXCJEQVRBQlJJQ0tTX1dPUktTUEFDRV9JRFwiLCBcIkRhdGFicmlja3Mgd29ya3NwYWNlIElEIGVudmlyb25tZW50LlwiKSxcbiAgICBjb25maWdGaWxlOiBlbnZpcm9ubWVudE5hbWUoXG4gICAgICBcIkRBVEFCUklDS1NfQ09ORklHX0ZJTEVcIixcbiAgICAgIFwiRGF0YWJyaWNrcyBDTEkgY29uZmlnIGZpbGUgZW52aXJvbm1lbnQuXCIsXG4gICAgKSxcbiAgICBjbGllbnRJZDogZW52aXJvbm1lbnROYW1lKFwiREFUQUJSSUNLU19DTElFTlRfSURcIiwgXCJEYXRhYnJpY2tzIE9BdXRoIGNsaWVudCBJRCBlbnZpcm9ubWVudC5cIiksXG4gICAgY2xpZW50U2VjcmV0OiBlbnZpcm9ubWVudE5hbWUoXG4gICAgICBcIkRBVEFCUklDS1NfQ0xJRU5UX1NFQ1JFVFwiLFxuICAgICAgXCJEYXRhYnJpY2tzIE9BdXRoIGNsaWVudCBzZWNyZXQgZW52aXJvbm1lbnQuXCIsXG4gICAgKSxcbiAgICBhY2Nlc3NUb2tlbjogZW52aXJvbm1lbnROYW1lKFwiREFUQUJSSUNLU19UT0tFTlwiLCBcIkRhdGFicmlja3MgYWNjZXNzIHRva2VuIGVudmlyb25tZW50LlwiKSxcbiAgICBncm91cElkOiBlbnZpcm9ubWVudE5hbWUoXCJEQVRBQlJJQ0tTX0dST1VQX0lEXCIsIFwiRGF0YWJyaWNrcyBncm91cCBJRCBlbnZpcm9ubWVudC5cIiksXG4gICAgYXV0aFR5cGU6IGVudmlyb25tZW50TmFtZShcIkRBVEFCUklDS1NfQVVUSF9UWVBFXCIsIFwiRGF0YWJyaWNrcyBhdXRoIHR5cGUgZW52aXJvbm1lbnQuXCIpLFxuICAgIGFwcE5hbWU6IGVudmlyb25tZW50TmFtZShcIkRBVEFCUklDS1NfQVBQX05BTUVcIiwgXCJEYXRhYnJpY2tzIEFwcCBuYW1lIGVudmlyb25tZW50LlwiKSxcbiAgICBhcHBQb3J0OiBlbnZpcm9ubWVudE5hbWUoXCJEQVRBQlJJQ0tTX0FQUF9QT1JUXCIsIFwiRGF0YWJyaWNrcyBBcHAgcG9ydCBlbnZpcm9ubWVudC5cIiksXG4gICAgbGFrZWJhc2VFbmRwb2ludDogZW52aXJvbm1lbnROYW1lKFwiTEFLRUJBU0VfRU5EUE9JTlRcIiwgXCJMYWtlYmFzZSBlbmRwb2ludCBlbnZpcm9ubWVudC5cIiksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJDYW5vbmljYWwgRGF0YWJyaWNrcyBDTEksIFNESywgQXBwcywgYW5kIExha2ViYXNlIGVudmlyb25tZW50IG5hbWVzLlwiKTtcblxuZXhwb3J0IHR5cGUgRGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXMgPSB6Lm91dHB1dDx0eXBlb2YgRGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXNTY2hlbWE+O1xuXG4vKiogQ2Fub25pY2FsIERhdGFicmlja3MgZW52aXJvbm1lbnQgbmFtZXMgZGVyaXZlZCBmcm9tIHRoZSBvd25pbmcgc2NoZW1hLiAqL1xuZXhwb3J0IGNvbnN0IGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzID0gT2JqZWN0LmZyZWV6ZShEYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lc1NjaGVtYS5wYXJzZSh7fSkpO1xuXG5leHBvcnQgY29uc3QgUG9zdGdyZXNFbnZpcm9ubWVudE5hbWVzU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBwb3N0Z3Jlc1JvbGU6IGVudmlyb25tZW50TmFtZShcbiAgICAgIFwiREJYX1RPT0xTX1BPU1RHUkVTX1JPTEVcIixcbiAgICAgIFwiUG9zdGdyZVNRTCBhc3N1bWVkLXJvbGUgZW52aXJvbm1lbnQuXCIsXG4gICAgKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIkNhbm9uaWNhbCBkYngtdG9vbHMgUG9zdGdyZVNRTCBlbnZpcm9ubWVudCBuYW1lcy5cIik7XG5cbmV4cG9ydCB0eXBlIFBvc3RncmVzRW52aXJvbm1lbnROYW1lcyA9IHoub3V0cHV0PHR5cGVvZiBQb3N0Z3Jlc0Vudmlyb25tZW50TmFtZXNTY2hlbWE+O1xuXG4vKiogQ2Fub25pY2FsIFBvc3RncmVTUUwgZW52aXJvbm1lbnQgbmFtZXMgZGVyaXZlZCBmcm9tIHRoZSBvd25pbmcgc2NoZW1hLiAqL1xuZXhwb3J0IGNvbnN0IHBvc3RncmVzRW52aXJvbm1lbnROYW1lcyA9IE9iamVjdC5mcmVlemUoUG9zdGdyZXNFbnZpcm9ubWVudE5hbWVzU2NoZW1hLnBhcnNlKHt9KSk7XG5cbmV4cG9ydCBjb25zdCBwb3N0Z3Jlc1JvbGVTY2hlbWEgPSB6XG4gIC5zdHJpbmcoKVxuICAudHJpbSgpXG4gIC5taW4oMSlcbiAgLnJlZ2V4KFxuICAgIC9eW0EtWmEtejAtOS5fQCstXXsxLDI1NX0kLyxcbiAgICBcIlBvc3RncmVTUUwgcm9sZSBtdXN0IGNvbnRhaW4gb25seSBsZXR0ZXJzLCBudW1iZXJzLCBkb3QsIHVuZGVyc2NvcmUsIGF0LCBwbHVzLCBvciBoeXBoZW4uXCIsXG4gIClcbiAgLmRlc2NyaWJlKFwiUG9zdGdyZVNRTCByb2xlIGFzc3VtZWQgYWZ0ZXIgYXV0aGVudGljYXRpb24uXCIpO1xuXG5leHBvcnQgY29uc3QgUG9zdGdyZXNPcHRpb25zU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBwb3N0Z3Jlc1JvbGU6IHBvc3RncmVzUm9sZVNjaGVtYVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIlBvc3RncmVTUUwgcm9sZSBhc3N1bWVkIGFmdGVyIGF1dGhlbnRpY2F0aW9uLlwiKVxuICAgICAgLm1ldGEoeyBlbnY6IHBvc3RncmVzRW52aXJvbm1lbnROYW1lcy5wb3N0Z3Jlc1JvbGUgfSksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJTaGFyZWQgUG9zdGdyZVNRTCBzZXNzaW9uIG9wdGlvbnMuXCIpO1xuXG5leHBvcnQgY29uc3QgUG9zdGdyZXNDb25maWdPcHRpb25zU2NoZW1hID0gUG9zdGdyZXNPcHRpb25zU2NoZW1hLnNhZmVFeHRlbmQoe1xuICBwb3N0Z3Jlc1JvbGU6IFBvc3RncmVzT3B0aW9uc1NjaGVtYS5zaGFwZS5wb3N0Z3Jlc1JvbGUubWV0YSh7IGVudjogXCJQT1NUR1JFU19ST0xFXCIgfSksXG59KS5kZXNjcmliZShcIlBvc3RncmVTUUwgb3B0aW9ucyByZXNvbHZlZCB0aHJvdWdoIHNjb3BlZCBjb25maWd1cmF0aW9uLlwiKTtcblxuZXhwb3J0IHR5cGUgUG9zdGdyZXNPcHRpb25zID0gei5pbnB1dDx0eXBlb2YgUG9zdGdyZXNPcHRpb25zU2NoZW1hPjtcblxuZXhwb3J0IGNvbnN0IHRjcFBvcnRTY2hlbWEgPSB6LmNvZXJjZVxuICAubnVtYmVyPG51bWJlcj4oKVxuICAuaW50KClcbiAgLm1pbigxKVxuICAubWF4KE1BWF9UQ1BfUE9SVClcbiAgLmRlc2NyaWJlKFwiVENQIHBvcnQgZnJvbSAxIHRocm91Z2ggNjU1MzUuXCIpO1xuXG5leHBvcnQgY29uc3QgdGNwUG9ydE9yWmVyb1NjaGVtYSA9IHouY29lcmNlXG4gIC5udW1iZXI8bnVtYmVyPigpXG4gIC5pbnQoKVxuICAubWluKDApXG4gIC5tYXgoTUFYX1RDUF9QT1JUKVxuICAuZGVzY3JpYmUoXCJUQ1AgcG9ydCBmcm9tIDAgdGhyb3VnaCA2NTUzNSwgd2hlcmUgemVybyByZXF1ZXN0cyBhdXRvbWF0aWMgYWxsb2NhdGlvbi5cIik7XG5cbmV4cG9ydCBjb25zdCBub3JtYWxpemVkVXJsU2NoZW1hID0gelxuICAuc3RyaW5nKClcbiAgLnRyaW0oKVxuICAubWluKDEpXG4gIC5yZWZpbmUoKHZhbHVlKSA9PiB1cmxCdWlsZGVyKHZhbHVlKSAhPT0gdW5kZWZpbmVkLCB7XG4gICAgbWVzc2FnZTogXCJFeHBlY3RlZCBhIHZhbGlkIFVSTCBvciBob3N0LlwiLFxuICB9KVxuICAub3ZlcndyaXRlKG5vcm1hbGl6ZVVybClcbiAgLmRlc2NyaWJlKFwiVVJMIG5vcm1hbGl6ZWQgdGhyb3VnaCB0aGUgc2hhcmVkIFVSTCBidWlsZGVyLlwiKTtcblxuY29uc3QgZGF0YWJyaWNrc1RleHQgPSAoZGVzY3JpcHRpb246IHN0cmluZykgPT5cbiAgei5zdHJpbmcoKS50cmltKCkubWluKDEpLm9wdGlvbmFsKCkuZGVzY3JpYmUoZGVzY3JpcHRpb24pO1xuY29uc3QgZGF0YWJyaWNrc09wdGlvbk1ldGEgPSAoZW52OiBzdHJpbmcsIGZsYWcgPSB0cnVlKSA9PiAoe1xuICBlbnYsXG4gIGZsYWcsXG4gIGhlbHBEZWZhdWx0OiBmYWxzZSxcbn0pO1xuXG5leHBvcnQgY29uc3QgRGF0YWJyaWNrc09wdGlvbnNTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHByb2ZpbGU6IGRhdGFicmlja3NUZXh0KFwiRGF0YWJyaWNrcyBDTEkgcHJvZmlsZS5cIikubWV0YShcbiAgICAgIGRhdGFicmlja3NPcHRpb25NZXRhKGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzLnByb2ZpbGUpLFxuICAgICksXG4gICAgaG9zdDogbm9ybWFsaXplZFVybFNjaGVtYVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIkRhdGFicmlja3MgaG9zdC5cIilcbiAgICAgIC5tZXRhKGRhdGFicmlja3NPcHRpb25NZXRhKGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzLmhvc3QsIGZhbHNlKSksXG4gICAgYWNjb3VudElkOiBkYXRhYnJpY2tzVGV4dChcIkRhdGFicmlja3MgYWNjb3VudCBJRC5cIikubWV0YShcbiAgICAgIGRhdGFicmlja3NPcHRpb25NZXRhKGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzLmFjY291bnRJZCwgZmFsc2UpLFxuICAgICksXG4gICAgd29ya3NwYWNlSWQ6IGRhdGFicmlja3NUZXh0KFwiRGF0YWJyaWNrcyB3b3Jrc3BhY2UgSUQuXCIpLm1ldGEoXG4gICAgICBkYXRhYnJpY2tzT3B0aW9uTWV0YShkYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lcy53b3Jrc3BhY2VJZCwgZmFsc2UpLFxuICAgICksXG4gICAgY29uZmlnRmlsZTogZGF0YWJyaWNrc1RleHQoXCJEYXRhYnJpY2tzIENMSSBjb25maWcgZmlsZS5cIikubWV0YShcbiAgICAgIGRhdGFicmlja3NPcHRpb25NZXRhKGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzLmNvbmZpZ0ZpbGUsIGZhbHNlKSxcbiAgICApLFxuICAgIGNsaWVudElkOiBkYXRhYnJpY2tzVGV4dChcIkRhdGFicmlja3MgT0F1dGggY2xpZW50IElELlwiKS5tZXRhKFxuICAgICAgZGF0YWJyaWNrc09wdGlvbk1ldGEoZGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXMuY2xpZW50SWQsIGZhbHNlKSxcbiAgICApLFxuICAgIGNsaWVudFNlY3JldDogZGF0YWJyaWNrc1RleHQoXCJEYXRhYnJpY2tzIE9BdXRoIGNsaWVudCBzZWNyZXQuXCIpLm1ldGEoXG4gICAgICBkYXRhYnJpY2tzT3B0aW9uTWV0YShkYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lcy5jbGllbnRTZWNyZXQsIGZhbHNlKSxcbiAgICApLFxuICAgIGFjY2Vzc1Rva2VuOiBkYXRhYnJpY2tzVGV4dChcIkRhdGFicmlja3MgYWNjZXNzIHRva2VuLlwiKS5tZXRhKFxuICAgICAgZGF0YWJyaWNrc09wdGlvbk1ldGEoZGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXMuYWNjZXNzVG9rZW4sIGZhbHNlKSxcbiAgICApLFxuICAgIGdyb3VwSWQ6IGRhdGFicmlja3NUZXh0KFwiRGF0YWJyaWNrcyBncm91cCBJRC5cIikubWV0YShcbiAgICAgIGRhdGFicmlja3NPcHRpb25NZXRhKGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzLmdyb3VwSWQsIGZhbHNlKSxcbiAgICApLFxuICAgIGF1dGhUeXBlOiBkYXRhYnJpY2tzVGV4dChcIkRhdGFicmlja3MgYXV0aGVudGljYXRpb24gdHlwZS5cIikubWV0YShcbiAgICAgIGRhdGFicmlja3NPcHRpb25NZXRhKGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzLmF1dGhUeXBlLCBmYWxzZSksXG4gICAgKSxcbiAgICBhcHBOYW1lOiBkYXRhYnJpY2tzVGV4dChcIkRhdGFicmlja3MgQXBwIG5hbWUuXCIpLm1ldGEoXG4gICAgICBkYXRhYnJpY2tzT3B0aW9uTWV0YShkYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lcy5hcHBOYW1lLCBmYWxzZSksXG4gICAgKSxcbiAgICBhcHBQb3J0OiB0Y3BQb3J0U2NoZW1hXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiRGF0YWJyaWNrcyBBcHAgcG9ydC5cIilcbiAgICAgIC5tZXRhKGRhdGFicmlja3NPcHRpb25NZXRhKGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzLmFwcFBvcnQsIGZhbHNlKSksXG4gICAgbGFrZWJhc2VFbmRwb2ludDogZGF0YWJyaWNrc1RleHQoXCJMYWtlYmFzZSBlbmRwb2ludC5cIikubWV0YShcbiAgICAgIGRhdGFicmlja3NPcHRpb25NZXRhKGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzLmxha2ViYXNlRW5kcG9pbnQsIGZhbHNlKSxcbiAgICApLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLmRlc2NyaWJlKFwiQ29tbW9uIERhdGFicmlja3MgQ0xJLCBTREssIEFwcHMsIGFuZCBMYWtlYmFzZSBvcHRpb25zLlwiKTtcblxuZXhwb3J0IHR5cGUgRGF0YWJyaWNrc09wdGlvbnMgPSB6LmlucHV0PHR5cGVvZiBEYXRhYnJpY2tzT3B0aW9uc1NjaGVtYT47XG5cbi8qKiBLZXkgZm9ybWF0IHVzZWQgd2hlbiBzZXJpYWxpemluZyBwYXJzZWQgb3B0aW9ucy4gKi9cbmV4cG9ydCB0eXBlIE9wdGlvblNlcmlhbGl6YXRpb25Gb3JtYXQgPSBcImZsYWdcIiB8IFwiZW52XCI7XG5cbmludGVyZmFjZSBPcHRpb25Qcm9wZXJ0eSB7XG4gIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuICByZWFkb25seSB0eXBlPzogc3RyaW5nO1xuICByZWFkb25seSBlbnY/OiBzdHJpbmcgfCByZWFkb25seSBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgZmxhZz86IGJvb2xlYW47XG59XG5cbi8qKiBTZXJpYWxpemUgY29tcGxldGUgcGFyc2VkIG9wdGlvbnMgYXMgYSBwcm9jZXNzIGVudmlyb25tZW50IG1hcC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVPcHRzRW52aXJvbm1lbnQ8VCBleHRlbmRzIHouWm9kUmF3U2hhcGU+KFxuICBzY2hlbWE6IHouWm9kT2JqZWN0PFQ+LFxuICB2YWx1ZXM6IHouaW5wdXQ8ei5ab2RPYmplY3Q8VD4+LFxuKTogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIE9iamVjdC5lbnRyaWVzKHNlcmlhbGl6ZWRPcHRzKHNjaGVtYSwgdmFsdWVzLCBcImVudlwiKSkubWFwKChba2V5LCB2YWx1ZV0pID0+IFtcbiAgICAgIGtleSxcbiAgICAgIGVudmlyb25tZW50T3B0aW9uVmFsdWUodmFsdWUpLFxuICAgIF0pLFxuICApO1xufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVkT3B0czxUIGV4dGVuZHMgei5ab2RSYXdTaGFwZT4oXG4gIHNjaGVtYTogei5ab2RPYmplY3Q8VD4sXG4gIHZhbHVlczogei5pbnB1dDx6LlpvZE9iamVjdDxUPj4sXG4gIGZvcm1hdDogT3B0aW9uU2VyaWFsaXphdGlvbkZvcm1hdCxcbik6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIGNvbnN0IHBhcnNlZCA9IHNjaGVtYS5wYXJzZSh2YWx1ZXMpIGFzIFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgY29uc3QgZW50cmllcyA9IG9wdGlvblByb3BlcnRpZXMoc2NoZW1hKS5mbGF0TWFwKChwcm9wZXJ0eSkgPT4ge1xuICAgIGlmIChmb3JtYXQgPT09IFwiZmxhZ1wiICYmIHByb3BlcnR5LmZsYWcgPT09IGZhbHNlKSByZXR1cm4gW107XG4gICAgY29uc3Qga2V5ID1cbiAgICAgIGZvcm1hdCA9PT0gXCJmbGFnXCJcbiAgICAgICAgPyBgLS0ke3RvU2x1Zyhwcm9wZXJ0eS5rZXkpfWBcbiAgICAgICAgOiAob3B0aW9uRW52aXJvbm1lbnROYW1lcyhwcm9wZXJ0eS5rZXksIHByb3BlcnR5LmVudilbMF0gPz8gXCJcIik7XG4gICAgaWYgKCFrZXkpIHJldHVybiBbXTtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcnNlZFtwcm9wZXJ0eS5rZXldO1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gW10gOiBbW2tleSwgc2VyaWFsaXplZE9wdGlvblZhbHVlKHZhbHVlKV0gYXMgY29uc3RdO1xuICB9KTtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhlbnRyaWVzKTtcbn1cblxuY29uc3Qgb3B0aW9uYWxUZXh0ID0gKGRlc2NyaXB0aW9uOiBzdHJpbmcsIGVudjogc3RyaW5nKSA9PlxuICB6LnN0cmluZygpLnRyaW0oKS5taW4oMSkub3B0aW9uYWwoKS5kZXNjcmliZShkZXNjcmlwdGlvbikubWV0YSh7IGVudiwgZmxhZzogZmFsc2UgfSk7XG5cbmV4cG9ydCBjb25zdCBMYWtlYmFzZU9wdGlvbnNTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGxha2ViYXNlRW5kcG9pbnQ6IG9wdGlvbmFsVGV4dChcbiAgICAgIFwiTGFrZWJhc2UgcHJvamVjdCwgcmVzb3VyY2UgcGF0aCwgaG9zdCwgb3IgVVJMLlwiLFxuICAgICAgZGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXMubGFrZWJhc2VFbmRwb2ludCxcbiAgICApLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLmRlc2NyaWJlKFwiQ29tbW9uIExha2ViYXNlIG9wdGlvbnMuXCIpO1xuXG5leHBvcnQgdHlwZSBMYWtlYmFzZU9wdGlvbnMgPSB6LmlucHV0PHR5cGVvZiBMYWtlYmFzZU9wdGlvbnNTY2hlbWE+O1xuXG4vKiogRXhwbGljaXQgb3B0aW9uIHZhbHVlcyBvciBlbnZpcm9ubWVudCBlbnRyaWVzIGNvbnN1bWVkIGJ5IG9wdGlvbiBwYXJzaW5nIGhlbHBlcnMuICovXG5leHBvcnQgdHlwZSBPcHRpb25WYWx1ZU1hcCA9IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB8IG51bGw7XG5cbi8qKiBQYXJzZSBvbmx5IHN1cHBsaWVkIGZsYWcgYW5kIGVudmlyb25tZW50IHZhbHVlcyB0aHJvdWdoIGFuIG93bmluZyBab2Qgb2JqZWN0IHNjaGVtYS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU9wdHM8VCBleHRlbmRzIHouWm9kUmF3U2hhcGU+KFxuICBzY2hlbWE6IHouWm9kT2JqZWN0PFQ+LFxuICBmbGFnczogT3B0aW9uVmFsdWVNYXAgPSBudWxsLFxuICBlbnZpcm9ubWVudDogT3B0aW9uVmFsdWVNYXAgPSBudWxsLFxuKTogUGFydGlhbDx6Lm91dHB1dDx6LlpvZE9iamVjdDxUPj4+IHtcbiAgY29uc3QgY29uZmlndXJlZCA9IG9wdGlvblZhbHVlcyhzY2hlbWEsIGZsYWdzLCBlbnZpcm9ubWVudCk7XG4gIGNvbnN0IHBhcnNlZCA9IHNjaGVtYS5wYXJzZShjb25maWd1cmVkKTtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3Qua2V5cyhjb25maWd1cmVkKS5tYXAoKGtleSkgPT4gW2tleSwgcGFyc2VkW2tleSBhcyBrZXlvZiB0eXBlb2YgcGFyc2VkXV0pLFxuICApIGFzIFBhcnRpYWw8ei5vdXRwdXQ8ei5ab2RPYmplY3Q8VD4+Pjtcbn1cblxuLyoqIFN1cHBvcnRlZCBsaXN0ZW5lciB0cmFuc3BvcnQgc2NoZW1lcy4gKi9cbmV4cG9ydCB0eXBlIExpc3RlblNjaGVtZSA9IFwidGNwXCIgfCBcInVuaXhcIjtcblxuZXhwb3J0IGNvbnN0IFRjcExpc3RlbkFkZHJlc3NTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHNjaGVtZTogei5saXRlcmFsKFwidGNwXCIpLFxuICAgIGhvc3Q6IHouc3RyaW5nKCkudHJpbSgpLnRvTG93ZXJDYXNlKCkubWluKDEpLFxuICAgIHBvcnQ6IHRjcFBvcnRPclplcm9TY2hlbWEsXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJUQ1AgbGlzdGVuZXIgYWRkcmVzcy5cIik7XG5cbmV4cG9ydCBjb25zdCBVbml4TGlzdGVuQWRkcmVzc1NjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgc2NoZW1lOiB6LmxpdGVyYWwoXCJ1bml4XCIpLFxuICAgIHBhdGg6IHouc3RyaW5nKCkudHJpbSgpLm1pbigxKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIlVuaXgtZG9tYWluIGxpc3RlbmVyIGFkZHJlc3MuXCIpO1xuXG4vKiogVENQIGxpc3RlbmVyIHJldHVybmVkIGJ5IHtAbGluayBsaXN0ZW5BZGRyZXNzU2NoZW1hfS4gKi9cbmV4cG9ydCB0eXBlIFRjcExpc3RlbkFkZHJlc3MgPSB6Lm91dHB1dDx0eXBlb2YgVGNwTGlzdGVuQWRkcmVzc1NjaGVtYT47XG4vKiogVW5peC1kb21haW4gbGlzdGVuZXIgcmV0dXJuZWQgYnkge0BsaW5rIGxpc3RlbkFkZHJlc3NTY2hlbWF9LiAqL1xuZXhwb3J0IHR5cGUgVW5peExpc3RlbkFkZHJlc3MgPSB6Lm91dHB1dDx0eXBlb2YgVW5peExpc3RlbkFkZHJlc3NTY2hlbWE+O1xuLyoqIFRyYW5zcG9ydC1hd2FyZSBsaXN0ZW5lciBhZGRyZXNzLiAqL1xuZXhwb3J0IHR5cGUgTGlzdGVuQWRkcmVzcyA9IFRjcExpc3RlbkFkZHJlc3MgfCBVbml4TGlzdGVuQWRkcmVzcztcblxuLyoqIERlZmF1bHRzIGFuZCB2YWxpZGF0aW9uIHBvbGljeSBmb3Ige0BsaW5rIGxpc3RlbkFkZHJlc3NTY2hlbWF9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaXN0ZW5BZGRyZXNzT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHBvcnQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgaG9zdD86IHN0cmluZztcbiAgcmVhZG9ubHkgbG9vcGJhY2s/OiBib29sZWFuO1xuICByZWFkb25seSBzY2hlbWU/OiBMaXN0ZW5TY2hlbWU7XG4gIHJlYWRvbmx5IHNjaGVtZXM/OiByZWFkb25seSBMaXN0ZW5TY2hlbWVbXTtcbiAgcmVhZG9ubHkgd2l0aERlZmF1bHQ/OiBib29sZWFuO1xufVxuXG4vKiogUmF3IGxpc3RlbmVyIGlucHV0IGFjY2VwdGVkIGJlZm9yZSB0cmFuc3BvcnQtYXdhcmUgbm9ybWFsaXphdGlvbi4gKi9cbmV4cG9ydCB0eXBlIExpc3RlbkFkZHJlc3NJbnB1dCA9IExpc3RlbkFkZHJlc3MgfCBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBsaXN0ZW5BZGRyZXNzU2NoZW1hKFxuICBvcHRpb25zOiBMaXN0ZW5BZGRyZXNzT3B0aW9ucyAmIHtcbiAgICByZWFkb25seSBzY2hlbWVzOiByZWFkb25seSBbXCJ0Y3BcIiwgXCJ1bml4XCJdO1xuICAgIHJlYWRvbmx5IHdpdGhEZWZhdWx0OiBmYWxzZTtcbiAgfSxcbik6IHouWm9kVHlwZTxMaXN0ZW5BZGRyZXNzLCB1bmtub3duPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGxpc3RlbkFkZHJlc3NTY2hlbWEoXG4gIG9wdGlvbnM6IExpc3RlbkFkZHJlc3NPcHRpb25zICYgeyByZWFkb25seSBzY2hlbWVzOiByZWFkb25seSBbXCJ0Y3BcIiwgXCJ1bml4XCJdIH0sXG4pOiB6LlpvZERlZmF1bHQ8ei5ab2RUeXBlPExpc3RlbkFkZHJlc3MsIHVua25vd24+PjtcblxuZXhwb3J0IGZ1bmN0aW9uIGxpc3RlbkFkZHJlc3NTY2hlbWEoXG4gIG9wdGlvbnM6IExpc3RlbkFkZHJlc3NPcHRpb25zICYgeyByZWFkb25seSB3aXRoRGVmYXVsdDogZmFsc2UgfSxcbik6IHouWm9kVHlwZTxUY3BMaXN0ZW5BZGRyZXNzLCB1bmtub3duPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGxpc3RlbkFkZHJlc3NTY2hlbWEoXG4gIG9wdGlvbnM6IExpc3RlbkFkZHJlc3NPcHRpb25zLFxuKTogei5ab2REZWZhdWx0PHouWm9kVHlwZTxUY3BMaXN0ZW5BZGRyZXNzLCB1bmtub3duPj47XG5cbi8qKiBCdWlsZCBhIHRyYW5zcG9ydC1hd2FyZSBsaXN0ZW5lciBzY2hlbWEuIEJhcmUgYWRkcmVzc2VzIHVzZSB0aGUgY29uZmlndXJlZCBkZWZhdWx0IHNjaGVtZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaXN0ZW5BZGRyZXNzU2NoZW1hKFxuICBvcHRpb25zOiBMaXN0ZW5BZGRyZXNzT3B0aW9ucyxcbik6IHouWm9kVHlwZTxMaXN0ZW5BZGRyZXNzLCB1bmtub3duPiB8IHouWm9kRGVmYXVsdDx6LlpvZFR5cGU8TGlzdGVuQWRkcmVzcywgdW5rbm93bj4+IHtcbiAgY29uc3QgZGVmYXVsdHM6IFRjcExpc3RlbkFkZHJlc3MgPSB7XG4gICAgc2NoZW1lOiBcInRjcFwiLFxuICAgIGhvc3Q6IG9wdGlvbnMuaG9zdCA/PyBcImxvY2FsaG9zdFwiLFxuICAgIHBvcnQ6IG9wdGlvbnMucG9ydCxcbiAgfTtcbiAgY29uc3QgYWxsb3dlZCA9IG5ldyBTZXQ8TGlzdGVuU2NoZW1lPihvcHRpb25zLnNjaGVtZXMgPz8gW1widGNwXCJdKTtcbiAgY29uc3Qgc2NoZW1hID0gelxuICAgIC5wcmVwcm9jZXNzKFxuICAgICAgKHZhbHVlKSA9PiBwYXJzZUxpc3RlbkFkZHJlc3ModmFsdWUsIGRlZmF1bHRzLCBvcHRpb25zLnNjaGVtZSA/PyBcInRjcFwiKSxcbiAgICAgIHouZGlzY3JpbWluYXRlZFVuaW9uKFwic2NoZW1lXCIsIFtcbiAgICAgICAgVGNwTGlzdGVuQWRkcmVzc1NjaGVtYS5leHRlbmQoe1xuICAgICAgICAgIGhvc3Q6IFRjcExpc3RlbkFkZHJlc3NTY2hlbWEuc2hhcGUuaG9zdC5kZWZhdWx0KGRlZmF1bHRzLmhvc3QpLFxuICAgICAgICAgIHBvcnQ6IFRjcExpc3RlbkFkZHJlc3NTY2hlbWEuc2hhcGUucG9ydC5kZWZhdWx0KGRlZmF1bHRzLnBvcnQpLFxuICAgICAgICB9KSxcbiAgICAgICAgVW5peExpc3RlbkFkZHJlc3NTY2hlbWEsXG4gICAgICBdKSxcbiAgICApXG4gICAgLnJlZmluZSgoYWRkcmVzcykgPT4gYWxsb3dlZC5oYXMoYWRkcmVzcy5zY2hlbWUpLCBcIkxpc3RlbmVyIHNjaGVtZSBpcyBub3QgYWxsb3dlZC5cIilcbiAgICAucmVmaW5lKFxuICAgICAgKGFkZHJlc3MpID0+IGFkZHJlc3Muc2NoZW1lICE9PSBcInRjcFwiIHx8ICFvcHRpb25zLmxvb3BiYWNrIHx8IGlzTG9vcGJhY2tIb3N0KGFkZHJlc3MuaG9zdCksXG4gICAgICBcIkxpc3RlbmVyIGhvc3QgbXVzdCBiZSBsb29wYmFjay5cIixcbiAgICApXG4gICAgLmRlc2NyaWJlKFwiVENQIG9yIFVuaXgtZG9tYWluIGxpc3RlbmVyIGFkZHJlc3MuXCIpIGFzIHouWm9kVHlwZTxMaXN0ZW5BZGRyZXNzLCB1bmtub3duPjtcbiAgcmV0dXJuIG9wdGlvbnMud2l0aERlZmF1bHQgPT09IGZhbHNlID8gc2NoZW1hIDogc2NoZW1hLmRlZmF1bHQoZGVmYXVsdHMpO1xufVxuXG4vKiogUmVuZGVyIGEgbGlzdGVuZXIgYWRkcmVzcyBhcyBhIGB0Y3A6Ly9gIG9yIGB1bml4Oi8vYCBVUkwuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TGlzdGVuQWRkcmVzcyhhZGRyZXNzOiBMaXN0ZW5BZGRyZXNzKTogc3RyaW5nIHtcbiAgaWYgKGFkZHJlc3Muc2NoZW1lID09PSBcInVuaXhcIikge1xuICAgIHJldHVybiBgdW5peDovLyR7YWRkcmVzcy5wYXRoLnN0YXJ0c1dpdGgoXCIvXCIpID8gXCJcIiA6IFwiL1wifSR7YWRkcmVzcy5wYXRofWA7XG4gIH1cbiAgY29uc3QgaG9zdCA9IGFkZHJlc3MuaG9zdC5pbmNsdWRlcyhcIjpcIikgPyBgWyR7YWRkcmVzcy5ob3N0fV1gIDogYWRkcmVzcy5ob3N0O1xuICByZXR1cm4gYHRjcDovLyR7aG9zdH06JHthZGRyZXNzLnBvcnR9YDtcbn1cblxuZnVuY3Rpb24gcGFyc2VMaXN0ZW5BZGRyZXNzKFxuICB2YWx1ZTogdW5rbm93bixcbiAgZGVmYXVsdHM6IFRjcExpc3RlbkFkZHJlc3MsXG4gIGRlZmF1bHRTY2hlbWU6IExpc3RlblNjaGVtZSxcbik6IHVua25vd24ge1xuICBpZiAoaXNSZWNvcmQodmFsdWUpICYmIHZhbHVlLnNjaGVtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZS5ob3N0ID09PSBcInN0cmluZ1wiICYmIHZhbHVlLnBvcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHsgLi4udmFsdWUsIHNjaGVtZTogXCJ0Y3BcIiB9O1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlLnBhdGggPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHJldHVybiB7IC4uLnZhbHVlLCBzY2hlbWU6IFwidW5peFwiIH07XG4gICAgfVxuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICByZXR1cm4gZGVmYXVsdFNjaGVtZSA9PT0gXCJ0Y3BcIlxuICAgICAgPyB7IHNjaGVtZTogXCJ0Y3BcIiwgaG9zdDogZGVmYXVsdHMuaG9zdCwgcG9ydDogdmFsdWUgfVxuICAgICAgOiB7IHNjaGVtZTogXCJ1bml4XCIsIHBhdGg6IFN0cmluZyh2YWx1ZSkgfTtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiKSByZXR1cm4gdmFsdWU7XG4gIGNvbnN0IHRleHQgPSB2YWx1ZS50cmltKCk7XG4gIGlmICh0ZXh0LnN0YXJ0c1dpdGgoXCJ1bml4Oi8vXCIpKSB7XG4gICAgY29uc3QgcGF0aCA9IHRleHQuc2xpY2UoXCJ1bml4Oi8vXCIubGVuZ3RoKTtcbiAgICByZXR1cm4geyBzY2hlbWU6IFwidW5peFwiLCBwYXRoOiBwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpID8gcGF0aCA6IGAvJHtwYXRofWAgfTtcbiAgfVxuICBjb25zdCB0Y3AgPSB0ZXh0LnN0YXJ0c1dpdGgoXCJ0Y3A6Ly9cIikgPyB0ZXh0LnNsaWNlKFwidGNwOi8vXCIubGVuZ3RoKSA6IHRleHQ7XG4gIGlmIChkZWZhdWx0U2NoZW1lID09PSBcInVuaXhcIiAmJiAhdGV4dC5zdGFydHNXaXRoKFwidGNwOi8vXCIpKSB7XG4gICAgcmV0dXJuIHsgc2NoZW1lOiBcInVuaXhcIiwgcGF0aDogdGV4dCB9O1xuICB9XG4gIGlmICgvXlxcZCskLy50ZXN0KHRjcCkpIHJldHVybiB7IHNjaGVtZTogXCJ0Y3BcIiwgaG9zdDogZGVmYXVsdHMuaG9zdCwgcG9ydDogdGNwIH07XG4gIGlmICgvXjpcXGQrJC8udGVzdCh0Y3ApKSB7XG4gICAgcmV0dXJuIHsgc2NoZW1lOiBcInRjcFwiLCBob3N0OiBkZWZhdWx0cy5ob3N0LCBwb3J0OiB0Y3Auc2xpY2UoMSkgfTtcbiAgfVxuICBjb25zdCBicmFja2V0ZWQgPSB0Y3AubWF0Y2goL15cXFsoW15cXF1dKylcXF0oPzo6KFxcZCspKT8kLyk7XG4gIGlmIChicmFja2V0ZWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2NoZW1lOiBcInRjcFwiLFxuICAgICAgaG9zdDogYnJhY2tldGVkWzFdLFxuICAgICAgcG9ydDogYnJhY2tldGVkWzJdID8/IGRlZmF1bHRzLnBvcnQsXG4gICAgfTtcbiAgfVxuICBjb25zdCBzZXBhcmF0b3IgPSB0Y3AubGFzdEluZGV4T2YoXCI6XCIpO1xuICBpZiAoc2VwYXJhdG9yID4gMCAmJiAhdGNwLnNsaWNlKDAsIHNlcGFyYXRvcikuaW5jbHVkZXMoXCI6XCIpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjaGVtZTogXCJ0Y3BcIixcbiAgICAgIGhvc3Q6IHRjcC5zbGljZSgwLCBzZXBhcmF0b3IpLFxuICAgICAgcG9ydDogdGNwLnNsaWNlKHNlcGFyYXRvciArIDEpLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHsgc2NoZW1lOiBcInRjcFwiLCBob3N0OiB0Y3AgfHwgZGVmYXVsdHMuaG9zdCwgcG9ydDogZGVmYXVsdHMucG9ydCB9O1xufVxuXG5mdW5jdGlvbiBvcHRpb25Qcm9wZXJ0aWVzKHNjaGVtYTogei5ab2RPYmplY3Q8ei5ab2RSYXdTaGFwZT4pOiBPcHRpb25Qcm9wZXJ0eVtdIHtcbiAgY29uc3QgZG9jdW1lbnQgPSB6LnRvSlNPTlNjaGVtYShzY2hlbWEpO1xuICBpZiAoIWlzUmVjb3JkKGRvY3VtZW50LnByb3BlcnRpZXMpKSByZXR1cm4gW107XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhkb2N1bWVudC5wcm9wZXJ0aWVzKS5mbGF0TWFwKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICBpZiAoIWlzUmVjb3JkKHZhbHVlKSkgcmV0dXJuIFtdO1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIGtleSxcbiAgICAgICAgdHlwZTogdHlwZW9mIHZhbHVlLnR5cGUgPT09IFwic3RyaW5nXCIgPyB2YWx1ZS50eXBlIDogdW5kZWZpbmVkLFxuICAgICAgICBlbnY6XG4gICAgICAgICAgdHlwZW9mIHZhbHVlLmVudiA9PT0gXCJzdHJpbmdcIiB8fCBBcnJheS5pc0FycmF5KHZhbHVlLmVudilcbiAgICAgICAgICAgID8gKHZhbHVlLmVudiBhcyBzdHJpbmcgfCByZWFkb25seSBzdHJpbmdbXSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICBmbGFnOiB0eXBlb2YgdmFsdWUuZmxhZyA9PT0gXCJib29sZWFuXCIgPyB2YWx1ZS5mbGFnIDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICBdO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplZE9wdGlvblZhbHVlKHZhbHVlOiB1bmtub3duKTogdW5rbm93biB7XG4gIGlmIChpc1JlY29yZCh2YWx1ZSkgJiYgdmFsdWUuc2NoZW1lID09PSBcInRjcFwiKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZS5ob3N0ID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiB2YWx1ZS5wb3J0ID09PSBcIm51bWJlclwiKSB7XG4gICAgICByZXR1cm4gZm9ybWF0TGlzdGVuQWRkcmVzcyh7IHNjaGVtZTogXCJ0Y3BcIiwgaG9zdDogdmFsdWUuaG9zdCwgcG9ydDogdmFsdWUucG9ydCB9KTtcbiAgICB9XG4gIH1cbiAgaWYgKGlzUmVjb3JkKHZhbHVlKSAmJiB2YWx1ZS5zY2hlbWUgPT09IFwidW5peFwiICYmIHR5cGVvZiB2YWx1ZS5wYXRoID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIGZvcm1hdExpc3RlbkFkZHJlc3MoeyBzY2hlbWU6IFwidW5peFwiLCBwYXRoOiB2YWx1ZS5wYXRoIH0pO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gZW52aXJvbm1lbnRPcHRpb25WYWx1ZSh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlLm1hcChTdHJpbmcpLmpvaW4oXCIsXCIpO1xuICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9PSBudWxsKSByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gb3B0aW9uVmFsdWVzPFQgZXh0ZW5kcyB6LlpvZFJhd1NoYXBlPihcbiAgc2NoZW1hOiB6LlpvZE9iamVjdDxUPixcbiAgdmFsdWVzOiBPcHRpb25WYWx1ZU1hcCxcbiAgZW52aXJvbm1lbnQ6IE9wdGlvblZhbHVlTWFwLFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBjb25zdCBkb2N1bWVudCA9IHoudG9KU09OU2NoZW1hKHNjaGVtYSk7XG4gIGNvbnN0IHByb3BlcnRpZXMgPSBpc1JlY29yZChkb2N1bWVudC5wcm9wZXJ0aWVzKSA/IGRvY3VtZW50LnByb3BlcnRpZXMgOiB7fTtcbiAgY29uc3QgY29uZmlndXJlZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCBwcm9wZXJ0eV0gb2YgT2JqZWN0LmVudHJpZXMocHJvcGVydGllcykpIHtcbiAgICBpZiAoIWlzUmVjb3JkKHByb3BlcnR5KSkgY29udGludWU7XG4gICAgY29uc3QgZXhwbGljaXQgPSBmaXJzdE9wdGlvblZhbHVlKHZhbHVlcywgW2tleSwgYC0tJHt0b1NsdWcoa2V5KX1gXSk7XG4gICAgaWYgKGV4cGxpY2l0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbmZpZ3VyZWRba2V5XSA9IG9wdGlvbkVudmlyb25tZW50VmFsdWUocHJvcGVydHkudHlwZSwgZXhwbGljaXQpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IG5hbWVzID0gb3B0aW9uRW52aXJvbm1lbnROYW1lcyhrZXksIHByb3BlcnR5LmVudik7XG4gICAgY29uc3Qgc291cmNlZCA9IGZpcnN0T3B0aW9uVmFsdWUoZW52aXJvbm1lbnQsIG5hbWVzKTtcbiAgICBpZiAoc291cmNlZCA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcbiAgICBjb25maWd1cmVkW2tleV0gPSBvcHRpb25FbnZpcm9ubWVudFZhbHVlKHByb3BlcnR5LnR5cGUsIHNvdXJjZWQpO1xuICB9XG4gIHJldHVybiBjb25maWd1cmVkO1xufVxuXG5mdW5jdGlvbiBvcHRpb25FbnZpcm9ubWVudE5hbWVzKGtleTogc3RyaW5nLCBjb25maWd1cmVkOiB1bmtub3duKTogc3RyaW5nW10ge1xuICBpZiAodHlwZW9mIGNvbmZpZ3VyZWQgPT09IFwic3RyaW5nXCIpIHJldHVybiBbY29uZmlndXJlZF07XG4gIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZ3VyZWQpKSB7XG4gICAgcmV0dXJuIGNvbmZpZ3VyZWQuZmlsdGVyKCh2YWx1ZSk6IHZhbHVlIGlzIHN0cmluZyA9PiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpO1xuICB9XG4gIHJldHVybiBbdG9JZGVudGlmaWVyV2l0aE9wdGlvbnMoeyBkZWxpbWl0ZXI6IFwiX1wiIH0sIGtleSkudG9VcHBlckNhc2UoKV07XG59XG5cbmZ1bmN0aW9uIG9wdGlvbkVudmlyb25tZW50VmFsdWUodHlwZTogdW5rbm93biwgdmFsdWU6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKHR5cGUgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gdG9Cb29sZWFuKHZhbHVlKSA/PyB2YWx1ZTtcbiAgaWYgKHR5cGUgPT09IFwiYXJyYXlcIiAmJiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHJldHVybiBwYXJzZUxpc3QodmFsdWUpO1xuICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIGZpcnN0T3B0aW9uVmFsdWUoc291cmNlOiBPcHRpb25WYWx1ZU1hcCwga2V5czogcmVhZG9ubHkgc3RyaW5nW10pOiB1bmtub3duIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFzb3VyY2UpIHJldHVybiB1bmRlZmluZWQ7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHNvdXJjZVtrZXldO1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSBcIlwiKSByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVXJsKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCB1cmwgPSB1cmxCdWlsZGVyKHZhbHVlKTtcbiAgaWYgKCF1cmwpIHJldHVybiB2YWx1ZTtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IHVybC50b1N0cmluZygpO1xuICByZXR1cm4gdXJsLnBhdGhuYW1lID09PSBcIi9cIiAmJiAhdXJsLnNlYXJjaCAmJiAhdXJsLmhhc2ggPyBub3JtYWxpemVkLnNsaWNlKDAsIC0xKSA6IG5vcm1hbGl6ZWQ7XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -35,86 +35,10 @@
|
|
|
35
35
|
"types": "./lib/index.d.ts",
|
|
36
36
|
"default": "./lib/index.js"
|
|
37
37
|
},
|
|
38
|
-
"./async-utils": {
|
|
39
|
-
"types": "./lib/src/async-utils.d.ts",
|
|
40
|
-
"default": "./lib/src/async-utils.js"
|
|
41
|
-
},
|
|
42
|
-
"./bindings": {
|
|
43
|
-
"types": "./lib/src/bindings.d.ts",
|
|
44
|
-
"default": "./lib/src/bindings.js"
|
|
45
|
-
},
|
|
46
|
-
"./brand-utils": {
|
|
47
|
-
"types": "./lib/src/brand-utils.d.ts",
|
|
48
|
-
"default": "./lib/src/brand-utils.js"
|
|
49
|
-
},
|
|
50
|
-
"./environment-utils": {
|
|
51
|
-
"types": "./lib/src/environment-utils.d.ts",
|
|
52
|
-
"default": "./lib/src/environment-utils.js"
|
|
53
|
-
},
|
|
54
|
-
"./error-utils": {
|
|
55
|
-
"types": "./lib/src/error-utils.d.ts",
|
|
56
|
-
"default": "./lib/src/error-utils.js"
|
|
57
|
-
},
|
|
58
|
-
"./execution": {
|
|
59
|
-
"types": "./lib/src/execution.d.ts",
|
|
60
|
-
"default": "./lib/src/execution.js"
|
|
61
|
-
},
|
|
62
|
-
"./function-utils": {
|
|
63
|
-
"types": "./lib/src/function-utils.d.ts",
|
|
64
|
-
"default": "./lib/src/function-utils.js"
|
|
65
|
-
},
|
|
66
|
-
"./hash": {
|
|
67
|
-
"types": "./lib/src/hash.d.ts",
|
|
68
|
-
"default": "./lib/src/hash.js"
|
|
69
|
-
},
|
|
70
|
-
"./http": {
|
|
71
|
-
"types": "./lib/src/http.d.ts",
|
|
72
|
-
"default": "./lib/src/http.js"
|
|
73
|
-
},
|
|
74
|
-
"./json": {
|
|
75
|
-
"types": "./lib/src/json.d.ts",
|
|
76
|
-
"default": "./lib/src/json.js"
|
|
77
|
-
},
|
|
78
|
-
"./log": {
|
|
79
|
-
"types": "./lib/src/log.d.ts",
|
|
80
|
-
"default": "./lib/src/log.js"
|
|
81
|
-
},
|
|
82
|
-
"./net": {
|
|
83
|
-
"types": "./lib/src/net.d.ts",
|
|
84
|
-
"default": "./lib/src/net.js"
|
|
85
|
-
},
|
|
86
|
-
"./object": {
|
|
87
|
-
"types": "./lib/src/object.d.ts",
|
|
88
|
-
"default": "./lib/src/object.js"
|
|
89
|
-
},
|
|
90
|
-
"./options": {
|
|
91
|
-
"types": "./lib/src/options.d.ts",
|
|
92
|
-
"default": "./lib/src/options.js"
|
|
93
|
-
},
|
|
94
|
-
"./pattern": {
|
|
95
|
-
"types": "./lib/src/pattern.d.ts",
|
|
96
|
-
"default": "./lib/src/pattern.js"
|
|
97
|
-
},
|
|
98
|
-
"./predicate": {
|
|
99
|
-
"types": "./lib/src/predicate.d.ts",
|
|
100
|
-
"default": "./lib/src/predicate.js"
|
|
101
|
-
},
|
|
102
|
-
"./string-utils": {
|
|
103
|
-
"types": "./lib/src/string-utils.d.ts",
|
|
104
|
-
"default": "./lib/src/string-utils.js"
|
|
105
|
-
},
|
|
106
|
-
"./token": {
|
|
107
|
-
"types": "./lib/src/token.d.ts",
|
|
108
|
-
"default": "./lib/src/token.js"
|
|
109
|
-
},
|
|
110
|
-
"./*": {
|
|
111
|
-
"types": "./lib/src/*/index.d.ts",
|
|
112
|
-
"default": "./lib/src/*/index.js"
|
|
113
|
-
},
|
|
114
38
|
"./package.json": "./package.json"
|
|
115
39
|
}
|
|
116
40
|
},
|
|
117
|
-
"version": "0.9.
|
|
41
|
+
"version": "0.9.157",
|
|
118
42
|
"types": "./lib/index.d.ts",
|
|
119
43
|
"dbxToolsConfig": {
|
|
120
44
|
"tags": [
|
|
@@ -127,86 +51,10 @@
|
|
|
127
51
|
"types": "./lib/index.d.ts",
|
|
128
52
|
"default": "./lib/index.js"
|
|
129
53
|
},
|
|
130
|
-
"./async-utils": {
|
|
131
|
-
"types": "./lib/src/async-utils.d.ts",
|
|
132
|
-
"default": "./lib/src/async-utils.js"
|
|
133
|
-
},
|
|
134
|
-
"./bindings": {
|
|
135
|
-
"types": "./lib/src/bindings.d.ts",
|
|
136
|
-
"default": "./lib/src/bindings.js"
|
|
137
|
-
},
|
|
138
|
-
"./brand-utils": {
|
|
139
|
-
"types": "./lib/src/brand-utils.d.ts",
|
|
140
|
-
"default": "./lib/src/brand-utils.js"
|
|
141
|
-
},
|
|
142
|
-
"./environment-utils": {
|
|
143
|
-
"types": "./lib/src/environment-utils.d.ts",
|
|
144
|
-
"default": "./lib/src/environment-utils.js"
|
|
145
|
-
},
|
|
146
|
-
"./error-utils": {
|
|
147
|
-
"types": "./lib/src/error-utils.d.ts",
|
|
148
|
-
"default": "./lib/src/error-utils.js"
|
|
149
|
-
},
|
|
150
|
-
"./execution": {
|
|
151
|
-
"types": "./lib/src/execution.d.ts",
|
|
152
|
-
"default": "./lib/src/execution.js"
|
|
153
|
-
},
|
|
154
|
-
"./function-utils": {
|
|
155
|
-
"types": "./lib/src/function-utils.d.ts",
|
|
156
|
-
"default": "./lib/src/function-utils.js"
|
|
157
|
-
},
|
|
158
|
-
"./hash": {
|
|
159
|
-
"types": "./lib/src/hash.d.ts",
|
|
160
|
-
"default": "./lib/src/hash.js"
|
|
161
|
-
},
|
|
162
|
-
"./http": {
|
|
163
|
-
"types": "./lib/src/http.d.ts",
|
|
164
|
-
"default": "./lib/src/http.js"
|
|
165
|
-
},
|
|
166
|
-
"./json": {
|
|
167
|
-
"types": "./lib/src/json.d.ts",
|
|
168
|
-
"default": "./lib/src/json.js"
|
|
169
|
-
},
|
|
170
|
-
"./log": {
|
|
171
|
-
"types": "./lib/src/log.d.ts",
|
|
172
|
-
"default": "./lib/src/log.js"
|
|
173
|
-
},
|
|
174
|
-
"./net": {
|
|
175
|
-
"types": "./lib/src/net.d.ts",
|
|
176
|
-
"default": "./lib/src/net.js"
|
|
177
|
-
},
|
|
178
|
-
"./object": {
|
|
179
|
-
"types": "./lib/src/object.d.ts",
|
|
180
|
-
"default": "./lib/src/object.js"
|
|
181
|
-
},
|
|
182
|
-
"./options": {
|
|
183
|
-
"types": "./lib/src/options.d.ts",
|
|
184
|
-
"default": "./lib/src/options.js"
|
|
185
|
-
},
|
|
186
|
-
"./pattern": {
|
|
187
|
-
"types": "./lib/src/pattern.d.ts",
|
|
188
|
-
"default": "./lib/src/pattern.js"
|
|
189
|
-
},
|
|
190
|
-
"./predicate": {
|
|
191
|
-
"types": "./lib/src/predicate.d.ts",
|
|
192
|
-
"default": "./lib/src/predicate.js"
|
|
193
|
-
},
|
|
194
|
-
"./string-utils": {
|
|
195
|
-
"types": "./lib/src/string-utils.d.ts",
|
|
196
|
-
"default": "./lib/src/string-utils.js"
|
|
197
|
-
},
|
|
198
|
-
"./token": {
|
|
199
|
-
"types": "./lib/src/token.d.ts",
|
|
200
|
-
"default": "./lib/src/token.js"
|
|
201
|
-
},
|
|
202
|
-
"./*": {
|
|
203
|
-
"types": "./lib/src/*/index.d.ts",
|
|
204
|
-
"default": "./lib/src/*/index.js"
|
|
205
|
-
},
|
|
206
54
|
"./package.json": "./package.json"
|
|
207
55
|
},
|
|
208
56
|
"files": [
|
|
209
|
-
"index
|
|
57
|
+
"index*.ts",
|
|
210
58
|
"src",
|
|
211
59
|
"lib"
|
|
212
60
|
],
|
package/src/options.ts
CHANGED
|
@@ -9,8 +9,6 @@ import { isLoopbackHost, MAX_TCP_PORT, urlBuilder } from "./net.ts";
|
|
|
9
9
|
import { isRecord, toBoolean } from "./object.ts";
|
|
10
10
|
import { parseList, toIdentifierWithOptions, toSlug } from "./string-utils.ts";
|
|
11
11
|
|
|
12
|
-
export { MAX_TCP_PORT } from "./net.ts";
|
|
13
|
-
|
|
14
12
|
const environmentName = <T extends string>(name: T, description: string) =>
|
|
15
13
|
z.literal(name).default(name).describe(description);
|
|
16
14
|
|