@wireio/shared 1.0.70 → 1.0.72
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/errors/NestedError.d.ts +110 -6
- package/lib/cjs/errors/NestedError.d.ts.map +1 -1
- package/lib/cjs/errors/NestedError.js +139 -9
- package/lib/cjs/logging/appenders/aws-firehose/AWSFirehoseAppender.d.ts.map +1 -1
- package/lib/cjs/logging/appenders/aws-firehose/AWSFirehoseAppender.js +1 -1
- package/lib/cjs/logging/appenders/push/PushLogRecordsAppender.d.ts.map +1 -1
- package/lib/cjs/logging/appenders/push/PushLogRecordsAppender.js +1 -2
- package/lib/esm/errors/NestedError.d.ts +110 -6
- package/lib/esm/errors/NestedError.d.ts.map +1 -1
- package/lib/esm/errors/NestedError.js +139 -9
- package/lib/esm/logging/appenders/aws-firehose/AWSFirehoseAppender.d.ts.map +1 -1
- package/lib/esm/logging/appenders/aws-firehose/AWSFirehoseAppender.js +1 -1
- package/lib/esm/logging/appenders/push/PushLogRecordsAppender.d.ts.map +1 -1
- package/lib/esm/logging/appenders/push/PushLogRecordsAppender.js +1 -2
- package/lib/test-cjs/errors/NestedError.test.js +81 -34
- package/lib/test-cjs/errors/NestedError.test.js.map +1 -1
- package/lib/tsconfig.cjs.jest.tsbuildinfo +1 -1
- package/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1,10 +1,114 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Structured, machine-readable diagnostic context captured at a {@link NestedError}
|
|
3
|
+
* throw site — the values that make a failure diagnosable (the `text` that failed to
|
|
4
|
+
* parse, a schema / type name, an id, …). Heterogeneous by nature, so the values are
|
|
5
|
+
* `unknown` (a documented type-erased bag, not a shortcut).
|
|
6
|
+
*/
|
|
7
|
+
export type NestedErrorContext = Record<string, unknown>;
|
|
8
|
+
/**
|
|
9
|
+
* Options for {@link NestedError} — what it preserves about the failure it wraps.
|
|
10
|
+
*/
|
|
11
|
+
export interface NestedErrorOptions<Context extends NestedErrorContext = NestedErrorContext> {
|
|
12
|
+
/**
|
|
13
|
+
* The originating error(s) — the root-cause chain that must NOT be swallowed. A
|
|
14
|
+
* non-Error thrown value is coerced to an Error; the first becomes the native
|
|
15
|
+
* ES2022 `Error.cause`.
|
|
16
|
+
*/
|
|
17
|
+
cause?: unknown;
|
|
18
|
+
/** Diagnostic context captured at the throw site. */
|
|
19
|
+
context?: Context;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* An Error that PRESERVES what it wraps instead of restringing it. Given a new
|
|
23
|
+
* message string, it ALSO retains the full cause chain: the originating error(s)
|
|
24
|
+
* survive as {@link NestedError.causes} (and the native `Error.cause`) — the real
|
|
25
|
+
* Error objects, so **each cause keeps its own stack trace and message** — and a
|
|
26
|
+
* nested-exception `Caused by:` section per cause is appended to this error's
|
|
27
|
+
* {@link NestedError.stack}, so the whole chain (each cause's stack + message) is
|
|
28
|
+
* visible wherever the error is printed, not only via the programmatic accessors.
|
|
29
|
+
* The diagnostic {@link NestedError.context} (the `text`, the schema / type name, …)
|
|
30
|
+
* is BOTH a structured property AND folded into the message.
|
|
31
|
+
*
|
|
32
|
+
* Never rewrite a caught error into a bare ``new Error(`… ${err.message}`)`` — that
|
|
33
|
+
* SWALLOWS the cause and the context. Wrap it:
|
|
34
|
+
* `new NestedError("…", { cause: err, context: { … } })`.
|
|
35
|
+
*/
|
|
36
|
+
export declare class NestedError<Context extends NestedErrorContext = NestedErrorContext> extends Error {
|
|
37
|
+
/** The originating error chain (flattened + coerced to Error); `causes[0]` is the native `.cause`. */
|
|
38
|
+
readonly causes: Error[];
|
|
39
|
+
/** The diagnostic context captured at the throw site. */
|
|
40
|
+
readonly context: Context;
|
|
41
|
+
/**
|
|
42
|
+
* @param message - The high-level failure description.
|
|
43
|
+
* @param options - The {@link NestedErrorOptions.cause} to preserve + the {@link NestedErrorOptions.context} to capture.
|
|
44
|
+
*/
|
|
45
|
+
constructor(message: string, options?: NestedErrorOptions<Context>);
|
|
4
46
|
}
|
|
5
47
|
export declare namespace NestedError {
|
|
6
|
-
|
|
7
|
-
|
|
48
|
+
/** Max characters of any single context value folded into the message — long `text` is truncated. */
|
|
49
|
+
const ContextPreviewMaxChars = 200;
|
|
50
|
+
/** The marker appended when a folded context value is truncated. */
|
|
51
|
+
const TruncationSuffix = "\u2026";
|
|
52
|
+
/** Prefix marking each retained cause in the composed stack (nested-exception style). */
|
|
53
|
+
const CausedByPrefix = "Caused by: ";
|
|
54
|
+
/**
|
|
55
|
+
* Append a `Caused by:` section per cause to `stack`, so every cause's stack trace
|
|
56
|
+
* AND message stay visible in `.stack` (and any logger that prints it) — not only
|
|
57
|
+
* via the programmatic {@link NestedError.causes} / native `Error.cause`. Each
|
|
58
|
+
* cause's own `.stack` already begins with its `name: message`, so both are kept.
|
|
59
|
+
*
|
|
60
|
+
* @param stack - The wrapping error's own stack (may be undefined in exotic runtimes).
|
|
61
|
+
* @param causes - The retained cause chain.
|
|
62
|
+
* @returns The wrapping stack with one appended `Caused by:` section per cause.
|
|
63
|
+
*/
|
|
64
|
+
function composeStack(stack: string | undefined, causes: Error[]): string;
|
|
65
|
+
/**
|
|
66
|
+
* Create a {@link NestedError}.
|
|
67
|
+
*
|
|
68
|
+
* @param message - The high-level failure description.
|
|
69
|
+
* @param options - The cause to preserve + the context to capture.
|
|
70
|
+
* @returns The constructed error.
|
|
71
|
+
*/
|
|
72
|
+
function create<Context extends NestedErrorContext = NestedErrorContext>(message: string, options?: NestedErrorOptions<Context>): NestedError<Context>;
|
|
73
|
+
/**
|
|
74
|
+
* Create + throw a {@link NestedError}.
|
|
75
|
+
*
|
|
76
|
+
* @param message - The high-level failure description.
|
|
77
|
+
* @param options - The cause to preserve + the context to capture.
|
|
78
|
+
*/
|
|
79
|
+
function throwError<Context extends NestedErrorContext = NestedErrorContext>(message: string, options?: NestedErrorOptions<Context>): never;
|
|
80
|
+
/**
|
|
81
|
+
* Coerce a thrown value (an Error, an array of them, or any value) into a flat
|
|
82
|
+
* `Error[]`, so a caught `unknown` can be preserved as a cause without loss.
|
|
83
|
+
*
|
|
84
|
+
* @param cause - The caught / rejected value.
|
|
85
|
+
* @returns The coerced error chain (empty when `cause` is nullish).
|
|
86
|
+
*/
|
|
87
|
+
function toErrors(cause: unknown): Error[];
|
|
88
|
+
/**
|
|
89
|
+
* Coerce a single thrown value into an Error (Errors pass through unchanged).
|
|
90
|
+
*
|
|
91
|
+
* @param value - The caught value.
|
|
92
|
+
* @returns `value` when it is an Error, else a new Error wrapping its string form.
|
|
93
|
+
*/
|
|
94
|
+
function toError(value: unknown): Error;
|
|
95
|
+
/**
|
|
96
|
+
* Fold a compact, truncated {@link NestedErrorContext} summary into the message so
|
|
97
|
+
* it is visible wherever the message is (logs, stack traces), not only on the
|
|
98
|
+
* `.context` property.
|
|
99
|
+
*
|
|
100
|
+
* @param message - The base message.
|
|
101
|
+
* @param context - The context to summarize, if any.
|
|
102
|
+
* @returns `message` with a ` (key=value, …)` suffix when context is non-empty.
|
|
103
|
+
*/
|
|
104
|
+
function composeMessage(message: string, context?: NestedErrorContext): string;
|
|
105
|
+
/**
|
|
106
|
+
* Render one context value for the message suffix — strings verbatim, everything
|
|
107
|
+
* else via a bigint-/cycle-safe form, truncated to {@link ContextPreviewMaxChars}.
|
|
108
|
+
*
|
|
109
|
+
* @param value - The context value.
|
|
110
|
+
* @returns The truncated preview string.
|
|
111
|
+
*/
|
|
112
|
+
function previewValue(value: unknown): string;
|
|
8
113
|
}
|
|
9
|
-
export default NestedError;
|
|
10
114
|
//# sourceMappingURL=NestedError.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NestedError.d.ts","sourceRoot":"","sources":["../../../src/errors/NestedError.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"NestedError.d.ts","sourceRoot":"","sources":["../../../src/errors/NestedError.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAExD;;GAEG;AACH,MAAM,WAAW,kBAAkB,CACjC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB;IAEvD;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,WAAW,CACtB,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,CACvD,SAAQ,KAAK;IACb,sGAAsG;IACtG,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,CAAA;IAExB,yDAAyD;IACzD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IAEzB;;;OAGG;gBACS,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAkB,CAAC,OAAO,CAAM;CAcvE;AAED,yBAAiB,WAAW,CAAC;IAC3B,qGAAqG;IAC9F,MAAM,sBAAsB,MAAM,CAAA;IAEzC,oEAAoE;IAC7D,MAAM,gBAAgB,WAAM,CAAA;IAEnC,yFAAyF;IAClF,MAAM,cAAc,gBAAgB,CAAA;IAE3C;;;;;;;;;OASG;IACH,SAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAM/E;IAED;;;;;;OAMG;IACH,SAAgB,MAAM,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,EAC5E,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,kBAAkB,CAAC,OAAO,CAAM,GACxC,WAAW,CAAC,OAAO,CAAC,CAEtB;IAED;;;;;OAKG;IACH,SAAgB,UAAU,CACxB,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,EACvD,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAkB,CAAC,OAAO,CAAM,GAAG,KAAK,CAEnE;IAED;;;;;;OAMG;IACH,SAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,CAIhD;IAED;;;;;OAKG;IACH,SAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAE7C;IAED;;;;;;;;OAQG;IACH,SAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,kBAAkB,GAC3B,MAAM,CAOR;IAED;;;;;;OAMG;IACH,SAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKnD;CACF"}
|
|
@@ -1,24 +1,154 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.NestedError = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* An Error that PRESERVES what it wraps instead of restringing it. Given a new
|
|
6
|
+
* message string, it ALSO retains the full cause chain: the originating error(s)
|
|
7
|
+
* survive as {@link NestedError.causes} (and the native `Error.cause`) — the real
|
|
8
|
+
* Error objects, so **each cause keeps its own stack trace and message** — and a
|
|
9
|
+
* nested-exception `Caused by:` section per cause is appended to this error's
|
|
10
|
+
* {@link NestedError.stack}, so the whole chain (each cause's stack + message) is
|
|
11
|
+
* visible wherever the error is printed, not only via the programmatic accessors.
|
|
12
|
+
* The diagnostic {@link NestedError.context} (the `text`, the schema / type name, …)
|
|
13
|
+
* is BOTH a structured property AND folded into the message.
|
|
14
|
+
*
|
|
15
|
+
* Never rewrite a caught error into a bare ``new Error(`… ${err.message}`)`` — that
|
|
16
|
+
* SWALLOWS the cause and the context. Wrap it:
|
|
17
|
+
* `new NestedError("…", { cause: err, context: { … } })`.
|
|
18
|
+
*/
|
|
4
19
|
class NestedError extends Error {
|
|
20
|
+
/** The originating error chain (flattened + coerced to Error); `causes[0]` is the native `.cause`. */
|
|
5
21
|
causes;
|
|
6
|
-
|
|
7
|
-
|
|
22
|
+
/** The diagnostic context captured at the throw site. */
|
|
23
|
+
context;
|
|
24
|
+
/**
|
|
25
|
+
* @param message - The high-level failure description.
|
|
26
|
+
* @param options - The {@link NestedErrorOptions.cause} to preserve + the {@link NestedErrorOptions.context} to capture.
|
|
27
|
+
*/
|
|
28
|
+
constructor(message, options = {}) {
|
|
29
|
+
const causes = NestedError.toErrors(options.cause);
|
|
30
|
+
super(NestedError.composeMessage(message, options.context), causes.length > 0 ? { cause: causes[0] } : undefined);
|
|
8
31
|
this.name = "NestedError";
|
|
9
|
-
this.causes = causes
|
|
32
|
+
this.causes = causes;
|
|
33
|
+
this.context = options.context ?? {};
|
|
34
|
+
// Retain each cause's stack + message VISIBLY: append a `Caused by:` section
|
|
35
|
+
// per cause so the full chain shows in `.stack` (and any logger that prints it),
|
|
36
|
+
// not only via the programmatic `.causes` / native `.cause`.
|
|
37
|
+
this.stack = NestedError.composeStack(this.stack, causes);
|
|
10
38
|
}
|
|
11
39
|
}
|
|
12
40
|
exports.NestedError = NestedError;
|
|
13
41
|
(function (NestedError) {
|
|
14
|
-
|
|
15
|
-
|
|
42
|
+
/** Max characters of any single context value folded into the message — long `text` is truncated. */
|
|
43
|
+
NestedError.ContextPreviewMaxChars = 200;
|
|
44
|
+
/** The marker appended when a folded context value is truncated. */
|
|
45
|
+
NestedError.TruncationSuffix = "…";
|
|
46
|
+
/** Prefix marking each retained cause in the composed stack (nested-exception style). */
|
|
47
|
+
NestedError.CausedByPrefix = "Caused by: ";
|
|
48
|
+
/**
|
|
49
|
+
* Append a `Caused by:` section per cause to `stack`, so every cause's stack trace
|
|
50
|
+
* AND message stay visible in `.stack` (and any logger that prints it) — not only
|
|
51
|
+
* via the programmatic {@link NestedError.causes} / native `Error.cause`. Each
|
|
52
|
+
* cause's own `.stack` already begins with its `name: message`, so both are kept.
|
|
53
|
+
*
|
|
54
|
+
* @param stack - The wrapping error's own stack (may be undefined in exotic runtimes).
|
|
55
|
+
* @param causes - The retained cause chain.
|
|
56
|
+
* @returns The wrapping stack with one appended `Caused by:` section per cause.
|
|
57
|
+
*/
|
|
58
|
+
function composeStack(stack, causes) {
|
|
59
|
+
return causes.reduce((composed, cause) => `${composed}\n${NestedError.CausedByPrefix}${cause.stack ?? `${cause.name}: ${cause.message}`}`, stack ?? "");
|
|
60
|
+
}
|
|
61
|
+
NestedError.composeStack = composeStack;
|
|
62
|
+
/**
|
|
63
|
+
* Create a {@link NestedError}.
|
|
64
|
+
*
|
|
65
|
+
* @param message - The high-level failure description.
|
|
66
|
+
* @param options - The cause to preserve + the context to capture.
|
|
67
|
+
* @returns The constructed error.
|
|
68
|
+
*/
|
|
69
|
+
function create(message, options = {}) {
|
|
70
|
+
return new NestedError(message, options);
|
|
16
71
|
}
|
|
17
72
|
NestedError.create = create;
|
|
18
|
-
|
|
19
|
-
|
|
73
|
+
/**
|
|
74
|
+
* Create + throw a {@link NestedError}.
|
|
75
|
+
*
|
|
76
|
+
* @param message - The high-level failure description.
|
|
77
|
+
* @param options - The cause to preserve + the context to capture.
|
|
78
|
+
*/
|
|
79
|
+
function throwError(message, options = {}) {
|
|
80
|
+
throw create(message, options);
|
|
20
81
|
}
|
|
21
82
|
NestedError.throwError = throwError;
|
|
83
|
+
/**
|
|
84
|
+
* Coerce a thrown value (an Error, an array of them, or any value) into a flat
|
|
85
|
+
* `Error[]`, so a caught `unknown` can be preserved as a cause without loss.
|
|
86
|
+
*
|
|
87
|
+
* @param cause - The caught / rejected value.
|
|
88
|
+
* @returns The coerced error chain (empty when `cause` is nullish).
|
|
89
|
+
*/
|
|
90
|
+
function toErrors(cause) {
|
|
91
|
+
return (Array.isArray(cause) ? cause : cause == null ? [] : [cause]).map(toError);
|
|
92
|
+
}
|
|
93
|
+
NestedError.toErrors = toErrors;
|
|
94
|
+
/**
|
|
95
|
+
* Coerce a single thrown value into an Error (Errors pass through unchanged).
|
|
96
|
+
*
|
|
97
|
+
* @param value - The caught value.
|
|
98
|
+
* @returns `value` when it is an Error, else a new Error wrapping its string form.
|
|
99
|
+
*/
|
|
100
|
+
function toError(value) {
|
|
101
|
+
return value instanceof Error ? value : new Error(String(value));
|
|
102
|
+
}
|
|
103
|
+
NestedError.toError = toError;
|
|
104
|
+
/**
|
|
105
|
+
* Fold a compact, truncated {@link NestedErrorContext} summary into the message so
|
|
106
|
+
* it is visible wherever the message is (logs, stack traces), not only on the
|
|
107
|
+
* `.context` property.
|
|
108
|
+
*
|
|
109
|
+
* @param message - The base message.
|
|
110
|
+
* @param context - The context to summarize, if any.
|
|
111
|
+
* @returns `message` with a ` (key=value, …)` suffix when context is non-empty.
|
|
112
|
+
*/
|
|
113
|
+
function composeMessage(message, context) {
|
|
114
|
+
const entries = context == null ? [] : Object.entries(context);
|
|
115
|
+
return entries.length === 0
|
|
116
|
+
? message
|
|
117
|
+
: `${message} (${entries
|
|
118
|
+
.map(([key, value]) => `${key}=${previewValue(value)}`)
|
|
119
|
+
.join(", ")})`;
|
|
120
|
+
}
|
|
121
|
+
NestedError.composeMessage = composeMessage;
|
|
122
|
+
/**
|
|
123
|
+
* Render one context value for the message suffix — strings verbatim, everything
|
|
124
|
+
* else via a bigint-/cycle-safe form, truncated to {@link ContextPreviewMaxChars}.
|
|
125
|
+
*
|
|
126
|
+
* @param value - The context value.
|
|
127
|
+
* @returns The truncated preview string.
|
|
128
|
+
*/
|
|
129
|
+
function previewValue(value) {
|
|
130
|
+
const rendered = typeof value === "string" ? value : safeStringify(value);
|
|
131
|
+
return rendered.length > NestedError.ContextPreviewMaxChars
|
|
132
|
+
? `${rendered.slice(0, NestedError.ContextPreviewMaxChars)}${NestedError.TruncationSuffix}`
|
|
133
|
+
: rendered;
|
|
134
|
+
}
|
|
135
|
+
NestedError.previewValue = previewValue;
|
|
22
136
|
})(NestedError || (exports.NestedError = NestedError = {}));
|
|
23
|
-
|
|
24
|
-
|
|
137
|
+
/**
|
|
138
|
+
* A best-effort rendering of `value` for a message preview: JSON when serializable,
|
|
139
|
+
* else `String(value)`. Pure display fallback — a BigInt or a circular object makes
|
|
140
|
+
* `JSON.stringify` throw — NOT error handling, so the catch is a deliberate render
|
|
141
|
+
* fallback rather than a swallow.
|
|
142
|
+
*
|
|
143
|
+
* @param value - The value to render.
|
|
144
|
+
* @returns A single-line string form of `value`.
|
|
145
|
+
*/
|
|
146
|
+
function safeStringify(value) {
|
|
147
|
+
try {
|
|
148
|
+
return JSON.stringify(value) ?? String(value);
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
return String(value);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmVzdGVkRXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZXJyb3JzL05lc3RlZEVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXdCQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQWEsV0FFWCxTQUFRLEtBQUs7SUFDYixzR0FBc0c7SUFDN0YsTUFBTSxDQUFTO0lBRXhCLHlEQUF5RDtJQUNoRCxPQUFPLENBQVM7SUFFekI7OztPQUdHO0lBQ0gsWUFBWSxPQUFlLEVBQUUsVUFBdUMsRUFBRTtRQUNwRSxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNsRCxLQUFLLENBQ0gsV0FBVyxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUNwRCxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FDckQsQ0FBQTtRQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFBO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSyxFQUFjLENBQUE7UUFDakQsNkVBQTZFO1FBQzdFLGlGQUFpRjtRQUNqRiw2REFBNkQ7UUFDN0QsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDM0QsQ0FBQztDQUNGO0FBM0JELGtDQTJCQztBQUVELFdBQWlCLFdBQVc7SUFDMUIscUdBQXFHO0lBQ3hGLGtDQUFzQixHQUFHLEdBQUcsQ0FBQTtJQUV6QyxvRUFBb0U7SUFDdkQsNEJBQWdCLEdBQUcsR0FBRyxDQUFB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QUFBO0FBQ0gsQ0FBQyxFQS9HZ0IsV0FBVywyQkFBWCxXQUFXLFFBK0czQjtBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxhQUFhLENBQUMsS0FBYztJQUNuQyxJQUFJLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQy9DLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN0QixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3RydWN0dXJlZCwgbWFjaGluZS1yZWFkYWJsZSBkaWFnbm9zdGljIGNvbnRleHQgY2FwdHVyZWQgYXQgYSB7QGxpbmsgTmVzdGVkRXJyb3J9XG4gKiB0aHJvdyBzaXRlIOKAlCB0aGUgdmFsdWVzIHRoYXQgbWFrZSBhIGZhaWx1cmUgZGlhZ25vc2FibGUgKHRoZSBgdGV4dGAgdGhhdCBmYWlsZWQgdG9cbiAqIHBhcnNlLCBhIHNjaGVtYSAvIHR5cGUgbmFtZSwgYW4gaWQsIOKApikuIEhldGVyb2dlbmVvdXMgYnkgbmF0dXJlLCBzbyB0aGUgdmFsdWVzIGFyZVxuICogYHVua25vd25gIChhIGRvY3VtZW50ZWQgdHlwZS1lcmFzZWQgYmFnLCBub3QgYSBzaG9ydGN1dCkuXG4gKi9cbmV4cG9ydCB0eXBlIE5lc3RlZEVycm9yQ29udGV4dCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIE5lc3RlZEVycm9yfSDigJQgd2hhdCBpdCBwcmVzZXJ2ZXMgYWJvdXQgdGhlIGZhaWx1cmUgaXQgd3JhcHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmVzdGVkRXJyb3JPcHRpb25zPFxuICBDb250ZXh0IGV4dGVuZHMgTmVzdGVkRXJyb3JDb250ZXh0ID0gTmVzdGVkRXJyb3JDb250ZXh0XG4+IHtcbiAgLyoqXG4gICAqIFRoZSBvcmlnaW5hdGluZyBlcnJvcihzKSDigJQgdGhlIHJvb3QtY2F1c2UgY2hhaW4gdGhhdCBtdXN0IE5PVCBiZSBzd2FsbG93ZWQuIEFcbiAgICogbm9uLUVycm9yIHRocm93biB2YWx1ZSBpcyBjb2VyY2VkIHRvIGFuIEVycm9yOyB0aGUgZmlyc3QgYmVjb21lcyB0aGUgbmF0aXZlXG4gICAqIEVTMjAyMiBgRXJyb3IuY2F1c2VgLlxuICAgKi9cbiAgY2F1c2U/OiB1bmtub3duXG4gIC8qKiBEaWFnbm9zdGljIGNvbnRleHQgY2FwdHVyZWQgYXQgdGhlIHRocm93IHNpdGUuICovXG4gIGNvbnRleHQ/OiBDb250ZXh0XG59XG5cbi8qKlxuICogQW4gRXJyb3IgdGhhdCBQUkVTRVJWRVMgd2hhdCBpdCB3cmFwcyBpbnN0ZWFkIG9mIHJlc3RyaW5naW5nIGl0LiBHaXZlbiBhIG5ld1xuICogbWVzc2FnZSBzdHJpbmcsIGl0IEFMU08gcmV0YWlucyB0aGUgZnVsbCBjYXVzZSBjaGFpbjogdGhlIG9yaWdpbmF0aW5nIGVycm9yKHMpXG4gKiBzdXJ2aXZlIGFzIHtAbGluayBOZXN0ZWRFcnJvci5jYXVzZXN9IChhbmQgdGhlIG5hdGl2ZSBgRXJyb3IuY2F1c2VgKSDigJQgdGhlIHJlYWxcbiAqIEVycm9yIG9iamVjdHMsIHNvICoqZWFjaCBjYXVzZSBrZWVwcyBpdHMgb3duIHN0YWNrIHRyYWNlIGFuZCBtZXNzYWdlKiog4oCUIGFuZCBhXG4gKiBuZXN0ZWQtZXhjZXB0aW9uIGBDYXVzZWQgYnk6YCBzZWN0aW9uIHBlciBjYXVzZSBpcyBhcHBlbmRlZCB0byB0aGlzIGVycm9yJ3NcbiAqIHtAbGluayBOZXN0ZWRFcnJvci5zdGFja30sIHNvIHRoZSB3aG9sZSBjaGFpbiAoZWFjaCBjYXVzZSdzIHN0YWNrICsgbWVzc2FnZSkgaXNcbiAqIHZpc2libGUgd2hlcmV2ZXIgdGhlIGVycm9yIGlzIHByaW50ZWQsIG5vdCBvbmx5IHZpYSB0aGUgcHJvZ3JhbW1hdGljIGFjY2Vzc29ycy5cbiAqIFRoZSBkaWFnbm9zdGljIHtAbGluayBOZXN0ZWRFcnJvci5jb250ZXh0fSAodGhlIGB0ZXh0YCwgdGhlIHNjaGVtYSAvIHR5cGUgbmFtZSwg4oCmKVxuICogaXMgQk9USCBhIHN0cnVjdHVyZWQgcHJvcGVydHkgQU5EIGZvbGRlZCBpbnRvIHRoZSBtZXNzYWdlLlxuICpcbiAqIE5ldmVyIHJld3JpdGUgYSBjYXVnaHQgZXJyb3IgaW50byBhIGJhcmUgYGBuZXcgRXJyb3IoYOKApiAke2Vyci5tZXNzYWdlfWApYGAg4oCUIHRoYXRcbiAqIFNXQUxMT1dTIHRoZSBjYXVzZSBhbmQgdGhlIGNvbnRleHQuIFdyYXAgaXQ6XG4gKiBgbmV3IE5lc3RlZEVycm9yKFwi4oCmXCIsIHsgY2F1c2U6IGVyciwgY29udGV4dDogeyDigKYgfSB9KWAuXG4gKi9cbmV4cG9ydCBjbGFzcyBOZXN0ZWRFcnJvcjxcbiAgQ29udGV4dCBleHRlbmRzIE5lc3RlZEVycm9yQ29udGV4dCA9IE5lc3RlZEVycm9yQ29udGV4dFxuPiBleHRlbmRzIEVycm9yIHtcbiAgLyoqIFRoZSBvcmlnaW5hdGluZyBlcnJvciBjaGFpbiAoZmxhdHRlbmVkICsgY29lcmNlZCB0byBFcnJvcik7IGBjYXVzZXNbMF1gIGlzIHRoZSBuYXRpdmUgYC5jYXVzZWAuICovXG4gIHJlYWRvbmx5IGNhdXNlczogRXJyb3JbXVxuXG4gIC8qKiBUaGUgZGlhZ25vc3RpYyBjb250ZXh0IGNhcHR1cmVkIGF0IHRoZSB0aHJvdyBzaXRlLiAqL1xuICByZWFkb25seSBjb250ZXh0OiBDb250ZXh0XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIGhpZ2gtbGV2ZWwgZmFpbHVyZSBkZXNjcmlwdGlvbi5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIE5lc3RlZEVycm9yT3B0aW9ucy5jYXVzZX0gdG8gcHJlc2VydmUgKyB0aGUge0BsaW5rIE5lc3RlZEVycm9yT3B0aW9ucy5jb250ZXh0fSB0byBjYXB0dXJlLlxuICAgKi9cbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBvcHRpb25zOiBOZXN0ZWRFcnJvck9wdGlvbnM8Q29udGV4dD4gPSB7fSkge1xuICAgIGNvbnN0IGNhdXNlcyA9IE5lc3RlZEVycm9yLnRvRXJyb3JzKG9wdGlvbnMuY2F1c2UpXG4gICAgc3VwZXIoXG4gICAgICBOZXN0ZWRFcnJvci5jb21wb3NlTWVzc2FnZShtZXNzYWdlLCBvcHRpb25zLmNvbnRleHQpLFxuICAgICAgY2F1c2VzLmxlbmd0aCA+IDAgPyB7IGNhdXNlOiBjYXVzZXNbMF0gfSA6IHVuZGVmaW5lZFxuICAgIClcbiAgICB0aGlzLm5hbWUgPSBcIk5lc3RlZEVycm9yXCJcbiAgICB0aGlzLmNhdXNlcyA9IGNhdXNlc1xuICAgIHRoaXMuY29udGV4dCA9IG9wdGlvbnMuY29udGV4dCA/PyAoe30gYXMgQ29udGV4dClcbiAgICAvLyBSZXRhaW4gZWFjaCBjYXVzZSdzIHN0YWNrICsgbWVzc2FnZSBWSVNJQkxZOiBhcHBlbmQgYSBgQ2F1c2VkIGJ5OmAgc2VjdGlvblxuICAgIC8vIHBlciBjYXVzZSBzbyB0aGUgZnVsbCBjaGFpbiBzaG93cyBpbiBgLnN0YWNrYCAoYW5kIGFueSBsb2dnZXIgdGhhdCBwcmludHMgaXQpLFxuICAgIC8vIG5vdCBvbmx5IHZpYSB0aGUgcHJvZ3JhbW1hdGljIGAuY2F1c2VzYCAvIG5hdGl2ZSBgLmNhdXNlYC5cbiAgICB0aGlzLnN0YWNrID0gTmVzdGVkRXJyb3IuY29tcG9zZVN0YWNrKHRoaXMuc3RhY2ssIGNhdXNlcylcbiAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIE5lc3RlZEVycm9yIHtcbiAgLyoqIE1heCBjaGFyYWN0ZXJzIG9mIGFueSBzaW5nbGUgY29udGV4dCB2YWx1ZSBmb2xkZWQgaW50byB0aGUgbWVzc2FnZSDigJQgbG9uZyBgdGV4dGAgaXMgdHJ1bmNhdGVkLiAqL1xuICBleHBvcnQgY29uc3QgQ29udGV4dFByZXZpZXdNYXhDaGFycyA9IDIwMFxuXG4gIC8qKiBUaGUgbWFya2VyIGFwcGVuZGVkIHdoZW4gYSBmb2xkZWQgY29udGV4dCB2YWx1ZSBpcyB0cnVuY2F0ZWQuICovXG4gIGV4cG9ydCBjb25zdCBUcnVuY2F0aW9uU3VmZml4ID0gXCLigKZcIlxuXG4gIC8qKiBQcmVmaXggbWFya2luZyBlYWNoIHJldGFpbmVkIGNhdXNlIGluIHRoZSBjb21wb3NlZCBzdGFjayAobmVzdGVkLWV4Y2VwdGlvbiBzdHlsZSkuICovXG4gIGV4cG9ydCBjb25zdCBDYXVzZWRCeVByZWZpeCA9IFwiQ2F1c2VkIGJ5OiBcIlxuXG4gIC8qKlxuICAgKiBBcHBlbmQgYSBgQ2F1c2VkIGJ5OmAgc2VjdGlvbiBwZXIgY2F1c2UgdG8gYHN0YWNrYCwgc28gZXZlcnkgY2F1c2UncyBzdGFjayB0cmFjZVxuICAgKiBBTkQgbWVzc2FnZSBzdGF5IHZpc2libGUgaW4gYC5zdGFja2AgKGFuZCBhbnkgbG9nZ2VyIHRoYXQgcHJpbnRzIGl0KSDigJQgbm90IG9ubHlcbiAgICogdmlhIHRoZSBwcm9ncmFtbWF0aWMge0BsaW5rIE5lc3RlZEVycm9yLmNhdXNlc30gLyBuYXRpdmUgYEVycm9yLmNhdXNlYC4gRWFjaFxuICAgKiBjYXVzZSdzIG93biBgLnN0YWNrYCBhbHJlYWR5IGJlZ2lucyB3aXRoIGl0cyBgbmFtZTogbWVzc2FnZWAsIHNvIGJvdGggYXJlIGtlcHQuXG4gICAqXG4gICAqIEBwYXJhbSBzdGFjayAtIFRoZSB3cmFwcGluZyBlcnJvcidzIG93biBzdGFjayAobWF5IGJlIHVuZGVmaW5lZCBpbiBleG90aWMgcnVudGltZXMpLlxuICAgKiBAcGFyYW0gY2F1c2VzIC0gVGhlIHJldGFpbmVkIGNhdXNlIGNoYWluLlxuICAgKiBAcmV0dXJucyBUaGUgd3JhcHBpbmcgc3RhY2sgd2l0aCBvbmUgYXBwZW5kZWQgYENhdXNlZCBieTpgIHNlY3Rpb24gcGVyIGNhdXNlLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIGNvbXBvc2VTdGFjayhzdGFjazogc3RyaW5nIHwgdW5kZWZpbmVkLCBjYXVzZXM6IEVycm9yW10pOiBzdHJpbmcge1xuICAgIHJldHVybiBjYXVzZXMucmVkdWNlKFxuICAgICAgKGNvbXBvc2VkLCBjYXVzZSkgPT5cbiAgICAgICAgYCR7Y29tcG9zZWR9XFxuJHtDYXVzZWRCeVByZWZpeH0ke2NhdXNlLnN0YWNrID8/IGAke2NhdXNlLm5hbWV9OiAke2NhdXNlLm1lc3NhZ2V9YH1gLFxuICAgICAgc3RhY2sgPz8gXCJcIlxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSB7QGxpbmsgTmVzdGVkRXJyb3J9LlxuICAgKlxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBoaWdoLWxldmVsIGZhaWx1cmUgZGVzY3JpcHRpb24uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGNhdXNlIHRvIHByZXNlcnZlICsgdGhlIGNvbnRleHQgdG8gY2FwdHVyZS5cbiAgICogQHJldHVybnMgVGhlIGNvbnN0cnVjdGVkIGVycm9yLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZTxDb250ZXh0IGV4dGVuZHMgTmVzdGVkRXJyb3JDb250ZXh0ID0gTmVzdGVkRXJyb3JDb250ZXh0PihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgb3B0aW9uczogTmVzdGVkRXJyb3JPcHRpb25zPENvbnRleHQ+ID0ge31cbiAgKTogTmVzdGVkRXJyb3I8Q29udGV4dD4ge1xuICAgIHJldHVybiBuZXcgTmVzdGVkRXJyb3IobWVzc2FnZSwgb3B0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgKyB0aHJvdyBhIHtAbGluayBOZXN0ZWRFcnJvcn0uXG4gICAqXG4gICAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIGhpZ2gtbGV2ZWwgZmFpbHVyZSBkZXNjcmlwdGlvbi5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgY2F1c2UgdG8gcHJlc2VydmUgKyB0aGUgY29udGV4dCB0byBjYXB0dXJlLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIHRocm93RXJyb3I8XG4gICAgQ29udGV4dCBleHRlbmRzIE5lc3RlZEVycm9yQ29udGV4dCA9IE5lc3RlZEVycm9yQ29udGV4dFxuICA+KG1lc3NhZ2U6IHN0cmluZywgb3B0aW9uczogTmVzdGVkRXJyb3JPcHRpb25zPENvbnRleHQ+ID0ge30pOiBuZXZlciB7XG4gICAgdGhyb3cgY3JlYXRlKG1lc3NhZ2UsIG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogQ29lcmNlIGEgdGhyb3duIHZhbHVlIChhbiBFcnJvciwgYW4gYXJyYXkgb2YgdGhlbSwgb3IgYW55IHZhbHVlKSBpbnRvIGEgZmxhdFxuICAgKiBgRXJyb3JbXWAsIHNvIGEgY2F1Z2h0IGB1bmtub3duYCBjYW4gYmUgcHJlc2VydmVkIGFzIGEgY2F1c2Ugd2l0aG91dCBsb3NzLlxuICAgKlxuICAgKiBAcGFyYW0gY2F1c2UgLSBUaGUgY2F1Z2h0IC8gcmVqZWN0ZWQgdmFsdWUuXG4gICAqIEByZXR1cm5zIFRoZSBjb2VyY2VkIGVycm9yIGNoYWluIChlbXB0eSB3aGVuIGBjYXVzZWAgaXMgbnVsbGlzaCkuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gdG9FcnJvcnMoY2F1c2U6IHVua25vd24pOiBFcnJvcltdIHtcbiAgICByZXR1cm4gKEFycmF5LmlzQXJyYXkoY2F1c2UpID8gY2F1c2UgOiBjYXVzZSA9PSBudWxsID8gW10gOiBbY2F1c2VdKS5tYXAoXG4gICAgICB0b0Vycm9yXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIENvZXJjZSBhIHNpbmdsZSB0aHJvd24gdmFsdWUgaW50byBhbiBFcnJvciAoRXJyb3JzIHBhc3MgdGhyb3VnaCB1bmNoYW5nZWQpLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgY2F1Z2h0IHZhbHVlLlxuICAgKiBAcmV0dXJucyBgdmFsdWVgIHdoZW4gaXQgaXMgYW4gRXJyb3IsIGVsc2UgYSBuZXcgRXJyb3Igd3JhcHBpbmcgaXRzIHN0cmluZyBmb3JtLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIHRvRXJyb3IodmFsdWU6IHVua25vd24pOiBFcnJvciB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgRXJyb3IgPyB2YWx1ZSA6IG5ldyBFcnJvcihTdHJpbmcodmFsdWUpKVxuICB9XG5cbiAgLyoqXG4gICAqIEZvbGQgYSBjb21wYWN0LCB0cnVuY2F0ZWQge0BsaW5rIE5lc3RlZEVycm9yQ29udGV4dH0gc3VtbWFyeSBpbnRvIHRoZSBtZXNzYWdlIHNvXG4gICAqIGl0IGlzIHZpc2libGUgd2hlcmV2ZXIgdGhlIG1lc3NhZ2UgaXMgKGxvZ3MsIHN0YWNrIHRyYWNlcyksIG5vdCBvbmx5IG9uIHRoZVxuICAgKiBgLmNvbnRleHRgIHByb3BlcnR5LlxuICAgKlxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBiYXNlIG1lc3NhZ2UuXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIGNvbnRleHQgdG8gc3VtbWFyaXplLCBpZiBhbnkuXG4gICAqIEByZXR1cm5zIGBtZXNzYWdlYCB3aXRoIGEgYCAoa2V5PXZhbHVlLCDigKYpYCBzdWZmaXggd2hlbiBjb250ZXh0IGlzIG5vbi1lbXB0eS5cbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBjb21wb3NlTWVzc2FnZShcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgY29udGV4dD86IE5lc3RlZEVycm9yQ29udGV4dFxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGVudHJpZXMgPSBjb250ZXh0ID09IG51bGwgPyBbXSA6IE9iamVjdC5lbnRyaWVzKGNvbnRleHQpXG4gICAgcmV0dXJuIGVudHJpZXMubGVuZ3RoID09PSAwXG4gICAgICA/IG1lc3NhZ2VcbiAgICAgIDogYCR7bWVzc2FnZX0gKCR7ZW50cmllc1xuICAgICAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fT0ke3ByZXZpZXdWYWx1ZSh2YWx1ZSl9YClcbiAgICAgICAgICAuam9pbihcIiwgXCIpfSlgXG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIG9uZSBjb250ZXh0IHZhbHVlIGZvciB0aGUgbWVzc2FnZSBzdWZmaXgg4oCUIHN0cmluZ3MgdmVyYmF0aW0sIGV2ZXJ5dGhpbmdcbiAgICogZWxzZSB2aWEgYSBiaWdpbnQtL2N5Y2xlLXNhZmUgZm9ybSwgdHJ1bmNhdGVkIHRvIHtAbGluayBDb250ZXh0UHJldmlld01heENoYXJzfS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGNvbnRleHQgdmFsdWUuXG4gICAqIEByZXR1cm5zIFRoZSB0cnVuY2F0ZWQgcHJldmlldyBzdHJpbmcuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gcHJldmlld1ZhbHVlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBjb25zdCByZW5kZXJlZCA9IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IHZhbHVlIDogc2FmZVN0cmluZ2lmeSh2YWx1ZSlcbiAgICByZXR1cm4gcmVuZGVyZWQubGVuZ3RoID4gQ29udGV4dFByZXZpZXdNYXhDaGFyc1xuICAgICAgPyBgJHtyZW5kZXJlZC5zbGljZSgwLCBDb250ZXh0UHJldmlld01heENoYXJzKX0ke1RydW5jYXRpb25TdWZmaXh9YFxuICAgICAgOiByZW5kZXJlZFxuICB9XG59XG5cbi8qKlxuICogQSBiZXN0LWVmZm9ydCByZW5kZXJpbmcgb2YgYHZhbHVlYCBmb3IgYSBtZXNzYWdlIHByZXZpZXc6IEpTT04gd2hlbiBzZXJpYWxpemFibGUsXG4gKiBlbHNlIGBTdHJpbmcodmFsdWUpYC4gUHVyZSBkaXNwbGF5IGZhbGxiYWNrIOKAlCBhIEJpZ0ludCBvciBhIGNpcmN1bGFyIG9iamVjdCBtYWtlc1xuICogYEpTT04uc3RyaW5naWZ5YCB0aHJvdyDigJQgTk9UIGVycm9yIGhhbmRsaW5nLCBzbyB0aGUgY2F0Y2ggaXMgYSBkZWxpYmVyYXRlIHJlbmRlclxuICogZmFsbGJhY2sgcmF0aGVyIHRoYW4gYSBzd2FsbG93LlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byByZW5kZXIuXG4gKiBAcmV0dXJucyBBIHNpbmdsZS1saW5lIHN0cmluZyBmb3JtIG9mIGB2YWx1ZWAuXG4gKi9cbmZ1bmN0aW9uIHNhZmVTdHJpbmdpZnkodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgPz8gU3RyaW5nKHZhbHVlKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKVxuICB9XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AWSFirehoseAppender.d.ts","sourceRoot":"","sources":["../../../../../src/logging/appenders/aws-firehose/AWSFirehoseAppender.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AWSFirehoseAppender.d.ts","sourceRoot":"","sources":["../../../../../src/logging/appenders/aws-firehose/AWSFirehoseAppender.ts"],"names":[],"mappings":"AAMA,OAAO,4BAEN,MAAM,mCAAmC,CAAA;AAI1C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAmB5C,qBAAa,mBAAmB,CAC9B,MAAM,SAAS,SAAS,GAAG,SAAS,CACpC,YAAW,QAAQ,CAAC,MAAM,CAAC;aAOC,qBAAqB,EAAE,MAAM;IANzD,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,eAAe,CAAO;IAE9B,SAAgB,iBAAiB,EAAE,4BAA4B,CAAA;gBAEnC,qBAAqB,EAAE,MAAM;IAoBzD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAmB5B;;;;OAIG;YACW,WAAW;IAgBzB;;;;OAIG;YACW,KAAK;CA0EpB;AAED,eAAe,mBAAmB,CAAA"}
|
|
@@ -174,4 +174,4 @@ class AWSFirehoseAppender {
|
|
|
174
174
|
}
|
|
175
175
|
exports.AWSFirehoseAppender = AWSFirehoseAppender;
|
|
176
176
|
exports.default = AWSFirehoseAppender;
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQVdTRmlyZWhvc2VBcHBlbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9sb2dnaW5nL2FwcGVuZGVycy9hd3MtZmlyZWhvc2UvQVdTRmlyZWhvc2VBcHBlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPQSx3R0FFMEM7QUFDMUMsK0RBQTJEO0FBQzNELG1DQUE2QjtBQUM3Qix3REFBb0Q7QUFJcEQsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUE7QUFDaEMsTUFBTSx5QkFBeUIsR0FBRyx1QkFBdUIsQ0FBQTtBQUV6RCxNQUFNLEdBQUcsR0FBRyxJQUFBLHFDQUFpQixHQUFFLENBQUE7QUFDL0IsSUFBSSxjQUFjLEdBQXVELElBQUksQ0FBQTtBQUU3RSxTQUFTLGlCQUFpQjtJQUN4QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEIsY0FBYyxHQUFHLGtEQUFPLDBCQUEwQixJQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM5RCxjQUFjLEdBQUcsSUFBSSxDQUFBO1lBQ3JCLE1BQU0sR0FBRyxDQUFBO1FBQ1gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsT0FBTyxjQUFjLENBQUE7QUFDdkIsQ0FBQztBQUVELE1BQWEsbUJBQW1CO0lBU0Y7SUFOcEIsY0FBYyxHQUFHLEtBQUssRUFBYSxDQUFBO0lBQ25DLGFBQWEsQ0FBZ0I7SUFDN0IsZUFBZSxHQUFHLElBQUksQ0FBQTtJQUVkLGlCQUFpQixDQUE4QjtJQUUvRCxZQUE0QixxQkFBNkI7UUFBN0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFRO1FBQ3ZELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLHlDQUE0QixDQUN2RCxxQkFBcUIsQ0FDdEIsQ0FBQTtRQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcs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WUFDckMsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLHlCQUF5QixFQUFFLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO1lBQ2pELENBQUM7WUFDRCxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3RCLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO1lBRXpCLGtDQUFrQztZQUNsQyxpQkFBaUI7UUFDbkIsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQTtJQUN6QixDQUFDO0NBQ0Y7QUFwSkQsa0RBb0pDO0FBRUQsa0JBQWUsbUJBQW1CLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgdHlwZSB7XG4gIEZpcmVob3NlQ2xpZW50LFxuICBQdXRSZWNvcmRCYXRjaElucHV0XG59IGZyb20gXCJAYXdzLXNkay9jbGllbnQtZmlyZWhvc2VcIlxuaW1wb3J0IHsgTGV2ZWwgfSBmcm9tIFwiLi4vLi4vTGV2ZWwuanNcIlxuXG5pbXBvcnQgQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlciwge1xuICB0eXBlIEFXU0NyZWRlbnRpYWxzXG59IGZyb20gXCIuL0FXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXIuanNcIlxuaW1wb3J0IHsgZ2V0SW50ZXJuYWxMb2dnZXIgfSBmcm9tIFwiLi4vLi4vSW50ZXJuYWxMb2dnZXIuanNcIlxuaW1wb3J0IHsgcGljayB9IGZyb20gXCJsb2Rhc2hcIlxuaW1wb3J0IHsgRGVmZXJyZWQgfSBmcm9tIFwiLi4vLi4vLi4vaGVscGVycy9pbmRleC5qc1wiXG5pbXBvcnQgeyBMb2dSZWNvcmQgfSBmcm9tIFwiLi4vLi4vTG9nUmVjb3JkLmpzXCJcbmltcG9ydCB7IEFwcGVuZGVyIH0gZnJvbSBcIi4uLy4uL0FwcGVuZGVyLmpzXCJcblxuY29uc3QgTG9nUXVldWVNYXhSZWNvcmRzID0gMTAwMDBcbmNvbnN0IEV4cGlyZWRUb2tlbkV4Y2VwdGlvbkNvZGUgPSBcIkV4cGlyZWRUb2tlbkV4Y2VwdGlvblwiXG5cbmNvbnN0IGxvZyA9IGdldEludGVybmFsTG9nZ2VyKClcbmxldCBmaXJlaG9zZU1vZHVsZTogUHJvbWlzZTx0eXBlb2YgaW1wb3J0KFwiQGF3cy1zZGsvY2xpZW50LWZpcmVob3NlXCIpPiA9IG51bGxcblxuZnVuY3Rpb24gZ2V0RmlyZWhvc2VNb2R1bGUoKSB7XG4gIGlmICghZmlyZWhvc2VNb2R1bGUpIHtcbiAgICBmaXJlaG9zZU1vZHVsZSA9IGltcG9ydChcIkBhd3Mtc2RrL2NsaWVudC1maXJlaG9zZVwiKS5jYXRjaChlcnIgPT4ge1xuICAgICAgZmlyZWhvc2VNb2R1bGUgPSBudWxsXG4gICAgICB0aHJvdyBlcnJcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGZpcmVob3NlTW9kdWxlXG59XG5cbmV4cG9ydCBjbGFzcyBBV1NGaXJlaG9zZUFwcGVuZGVyPFxuICBSZWNvcmQgZXh0ZW5kcyBMb2dSZWNvcmQgPSBMb2dSZWNvcmRcbj4gaW1wbGVtZW50cyBBcHBlbmRlcjxSZWNvcmQ+IHtcbiAgcHJpdmF0ZSBwZW5kaW5nUmVjb3JkcyA9IEFycmF5PExvZ1JlY29yZD4oKVxuICBwcml2YXRlIGZsdXNoRGVmZXJyZWQ6IERlZmVycmVkPHZvaWQ+XG4gIHByaXZhdGUgZmx1c2hJbnRlcnZhbE1zID0gMTAwMFxuXG4gIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsTWFuYWdlcjogQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlclxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsRW5kcG9pbnRVcmw6IHN0cmluZykge1xuICAgIHRoaXMuY3JlZGVudGlhbE1hbmFnZXIgPSBuZXcgQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlcihcbiAgICAgIGNyZWRlbnRpYWxFbmRwb2ludFVybFxuICAgIClcbiAgICB0aGlzLmNyZWRlbnRpYWxNYW5hZ2VyLm9uKFwicmVjZWl2ZWRcIiwgKCkgPT4ge1xuICAgICAgbG9nLmluZm8oXCJDcmVkZW50aWFscyByZWNlaXZlZCwgaW5pdGlhbGl6aW5nIGZpcmVob3NlIGNsaWVudFwiKVxuICAgICAgaWYgKCF0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCB8fCAhIXRoaXMuZmx1c2hEZWZlcnJlZCkge1xuICAgICAgICBsb2cuZGVidWcoXG4gICAgICAgICAgXCJOb3RoaW5nIHRvIGZsdXNoIHVwb24gY3JlZGVudGlhbCByZWNlaXB0IE9SIGZsdXNoIGFscmVhZHkgaW4gcHJvZ3Jlc3NcIlxuICAgICAgICApXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdGhpcy5mbHVzaCgpLmNhdGNoKChlOiBFcnJvcikgPT4ge1xuICAgICAgICBsb2cuZXJyb3IoXG4gICAgICAgICAgYEVycm9yIGZsdXNoaW5nIGxvZ3MgYWZ0ZXIgY3JlZGVudGlhbCByZWNlaXB0OiAke2UubWVzc2FnZX1gLFxuICAgICAgICAgIGVcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICB9KVxuICB9XG4gIGFwcGVuZChyZWNvcmQ6IFJlY29yZCk6IHZvaWQge1xuICAgIGNvbnN0IHBlbmRpbmdDb3VudCA9IHRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoICsgMSxcbiAgICAgIHJlbW92ZUNvdW50ID0gTG9nUXVldWVNYXhSZWNvcmRzIC0gcGVuZGluZ0NvdW50XG5cbiAgICBpZiAocmVtb3ZlQ291bnQgPCAwKSB7XG4gICAgICB0aGlzLnBlbmRpbmdSZWNvcmRzLnNwbGljZSgwLCBNYXRoLmFicyhyZW1vdmVDb3VudCkpXG4gICAgfVxuXG4gICAgdGhpcy5wZW5kaW5nUmVjb3Jkcy5wdXNoKHtcbiAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSxcbiAgICAgIC4uLnJlY29yZCxcbiAgICAgIGFwcDogcmVjb3JkLmFwcD8ubGVuZ3RoID4gMCA/IHJlY29yZC5hcHAgOiBcIlVOS05PV05cIixcbiAgICAgIGVudjogcmVjb3JkLmVudj8ubGVuZ3RoID4gMCA/IHJlY29yZC5lbnYgOiBcIlVOS05PV05cIixcbiAgICAgIHVybDogdHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIiA/IFwibG9jYWw6Ly9cIiA6IHdpbmRvdy5sb2NhdGlvbi5ocmVmXG4gICAgfSlcblxuICAgIHRoaXMuZmx1c2goKVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0aGUgRmlyZWhvc2UgY2xpZW50IGZvciBhIGxvYWRlZCBjcmVkZW50aWFsIHNldC5cbiAgICogQHBhcmFtIGNyZWRzIExvYWRlZCBGaXJlaG9zZSBjcmVkZW50aWFscy5cbiAgICogQHJldHVybnMgRmlyZWhvc2UgY2xpZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBnZXRGaXJlaG9zZShjcmVkczogQVdTQ3JlZGVudGlhbHMpOiBQcm9taXNlPEZpcmVob3NlQ2xpZW50PiB7XG4gICAgY29uc3QgeyByZWdpb24sIHN0cmVhbU5hbWUgfSA9IGNyZWRzXG5cbiAgICBpZiAoIXJlZ2lvbiB8fCAhc3RyZWFtTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUmVnaW9uIG9yIHN0cmVhbSBuYW1lIG5vdCBhdmFpbGFibGVcIilcbiAgICB9XG5cbiAgICBjb25zdCB7IEZpcmVob3NlQ2xpZW50IH0gPSBhd2FpdCBnZXRGaXJlaG9zZU1vZHVsZSgpXG4gICAgY29uc3QgY2xpZW50ID0gbmV3IEZpcmVob3NlQ2xpZW50KHtcbiAgICAgIHJlZ2lvbjogY3JlZHMucmVnaW9uLFxuICAgICAgY3JlZGVudGlhbHM6IHBpY2soY3JlZHMsIFwiYWNjZXNzS2V5SWRcIiwgXCJzZWNyZXRBY2Nlc3NLZXlcIiwgXCJzZXNzaW9uVG9rZW5cIilcbiAgICB9KVxuXG4gICAgcmV0dXJuIGNsaWVudFxuICB9XG5cbiAgLyoqXG4gICAqIEZsdXNoIHBlbmRpbmcgcmVjb3Jkc1xuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmx1c2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCEhdGhpcy5mbHVzaERlZmVycmVkKSB7XG4gICAgICBsb2cuZGVidWcoXCJGbHVzaCBhbHJlYWR5IGluIHByb2dyZXNzLCBza2lwcGluZ1wiKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCkge1xuICAgICAgbG9nLmRlYnVnKFwiTm8gcGVuZGluZyByZWNvcmRzIHRvIGZsdXNoXCIpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3QgY3JlZHMgPSB0aGlzLmNyZWRlbnRpYWxNYW5hZ2VyLmdldENyZWRlbnRpYWxzKClcbiAgICBpZiAoIWNyZWRzKSB7XG4gICAgICBsb2cud2FybihcIk5vIGNyZWRlbnRpYWxzIGF2YWlsYWJsZSBmb3IgZmx1c2hcIilcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGRlZmVycmVkID0gKHRoaXMuZmx1c2hEZWZlcnJlZCA9IG5ldyBEZWZlcnJlZDx2b2lkPigpKVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IHN0cmVhbU5hbWUgfSA9IGNyZWRzLFxuICAgICAgICBjbGllbnQgPSBhd2FpdCB0aGlzLmdldEZpcmVob3NlKGNyZWRzKSxcbiAgICAgICAgeyBQdXRSZWNvcmRCYXRjaENvbW1hbmQgfSA9IGF3YWl0IGdldEZpcmVob3NlTW9kdWxlKClcblxuICAgICAgd2hpbGUgKHRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGNodW5rU2l6ZSA9IE1hdGgubWluKHRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoLCAxMCksXG4gICAgICAgICAgcmVjb3JkcyA9IHRoaXMucGVuZGluZ1JlY29yZHMuc3BsaWNlKDAsIGNodW5rU2l6ZSksXG4gICAgICAgICAgcmVjb3JkSnNvbnMgPSByZWNvcmRzLm1hcChyZWNvcmQgPT4gSlNPTi5zdHJpbmdpZnkocmVjb3JkKSlcblxuICAgICAgICBpZiAobG9nLmlzRGVidWdFbmFibGVkKCkpIGxvZy5kZWJ1ZyhcIlJlY29yZHNcIiwgcmVjb3JkcylcblxuICAgICAgICBjb25zdCB0ZXh0RW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpLFxuICAgICAgICAgIGJhdGNoOiBQdXRSZWNvcmRCYXRjaElucHV0W1wiUmVjb3Jkc1wiXSA9IHJlY29yZEpzb25zLm1hcChqc29uU3RyID0+ICh7XG4gICAgICAgICAgICBEYXRhOiB0ZXh0RW5jb2Rlci5lbmNvZGUoanNvblN0cilcbiAgICAgICAgICB9KSlcblxuICAgICAgICBsb2cuaW5mbyhgUHVzaGluZyAke3JlY29yZHMubGVuZ3RofSByZWNvcmRzIHRvIGZpcmVob3NlYClcblxuICAgICAgICBjb25zdCBjbWQgPSBuZXcgUHV0UmVjb3JkQmF0Y2hDb21tYW5kKHtcbiAgICAgICAgICBEZWxpdmVyeVN0cmVhbU5hbWU6IHN0cmVhbU5hbWUsXG4gICAgICAgICAgUmVjb3JkczogYmF0Y2hcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCByZXNwID0gYXdhaXQgY2xpZW50LnNlbmQoY21kKVxuICAgICAgICBjb25zdCBmYWlsZWQgPSByZXNwLkZhaWxlZFB1dENvdW50IHx8IDBcbiAgICAgICAgaWYgKGZhaWxlZCkge1xuICAgICAgICAgIGNvbnN0IHJyID0gcmVzcC5SZXF1ZXN0UmVzcG9uc2VzIHx8IFtdXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHJyW2ldLkVycm9yQ29kZSkge1xuICAgICAgICAgICAgICBsb2cud2FybihcbiAgICAgICAgICAgICAgICBgUmVjb3JkIGZhaWxlZDogJHtycltpXS5FcnJvckNvZGV9ICR7cnJbaV0uRXJyb3JNZXNzYWdlfWBcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAvL3RoaXMucGVuZGluZ1JlY29yZHMudW5zaGlmdChyZWNvcmRzW2ldKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBsb2cuaW5mbyhgUHV0UmVjb3JkQmF0Y2ggZmFpbGVkPSR7ZmFpbGVkfTsgcmVxdWV1ZWQgZmFpbGVkIHJlY29yZHNgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZy5pbmZvKGBQdXRSZWNvcmRCYXRjaCBvayBjb3VudD0ke3JlY29yZHMubGVuZ3RofWApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGRlZmVycmVkLnJlc29sdmUoKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLmVycm9yKFwiRmFpbGVkIHRvIHB1c2ggbG9nc1wiLCBlcnIpXG4gICAgICBpZiAoZXJyLm5hbWUgPT09IEV4cGlyZWRUb2tlbkV4Y2VwdGlvbkNvZGUpIHtcbiAgICAgICAgdGhpcy5jcmVkZW50aWFsTWFuYWdlci5mb3JjZVVwZGF0ZUNyZWRlbnRpYWxzKClcbiAgICAgIH1cbiAgICAgIGRlZmVycmVkLnJlamVjdChlcnIpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuZmx1c2hEZWZlcnJlZCA9IG51bGxcblxuICAgICAgLy8gaWYgKHRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoKVxuICAgICAgLy8gICB0aGlzLmZsdXNoKClcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEFXU0ZpcmVob3NlQXBwZW5kZXJcbiJdfQ==
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQVdTRmlyZWhvc2VBcHBlbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9sb2dnaW5nL2FwcGVuZGVycy9hd3MtZmlyZWhvc2UvQVdTRmlyZWhvc2VBcHBlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNQSx3R0FFMEM7QUFDMUMsK0RBQTJEO0FBQzNELG1DQUE2QjtBQUM3Qix3REFBb0Q7QUFJcEQsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUE7QUFDaEMsTUFBTSx5QkFBeUIsR0FBRyx1QkFBdUIsQ0FBQTtBQUV6RCxNQUFNLEdBQUcsR0FBRyxJQUFBLHFDQUFpQixHQUFFLENBQUE7QUFDL0IsSUFBSSxjQUFjLEdBQXVELElBQUksQ0FBQTtBQUU3RSxTQUFTLGlCQUFpQjtJQUN4QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEIsY0FBYyxHQUFHLGtEQUFPLDBCQUEwQixJQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM5RCxjQUFjLEdBQUcsSUFBSSxDQUFBO1lBQ3JCLE1BQU0sR0FBRyxDQUFBO1FBQ1gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsT0FBTyxjQUFjLENBQUE7QUFDdkIsQ0FBQztBQUVELE1BQWEsbUJBQW1CO0lBU0Y7SUFOcEIsY0FBYyxHQUFHLEtBQUssRUFBYSxDQUFBO0lBQ25DLGFBQWEsQ0FBZ0I7SUFDN0IsZUFBZSxHQUFHLElBQUksQ0FBQTtJQUVkLGlCQUFpQixDQUE4QjtJQUUvRCxZQUE0QixxQkFBNkI7UUFBN0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFRO1FBQ3ZELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLHlDQUE0QixDQUN2RCxxQkFBcUIsQ0FDdEIsQ0FBQTtRQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcs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WUFDckMsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLHlCQUF5QixFQUFFLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO1lBQ2pELENBQUM7WUFDRCxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3RCLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO1lBRXpCLGtDQUFrQztZQUNsQyxpQkFBaUI7UUFDbkIsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQTtJQUN6QixDQUFDO0NBQ0Y7QUFwSkQsa0RBb0pDO0FBRUQsa0JBQWUsbUJBQW1CLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIEZpcmVob3NlQ2xpZW50LFxuICBQdXRSZWNvcmRCYXRjaElucHV0XG59IGZyb20gXCJAYXdzLXNkay9jbGllbnQtZmlyZWhvc2VcIlxuaW1wb3J0IHsgTGV2ZWwgfSBmcm9tIFwiLi4vLi4vTGV2ZWwuanNcIlxuXG5pbXBvcnQgQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlciwge1xuICB0eXBlIEFXU0NyZWRlbnRpYWxzXG59IGZyb20gXCIuL0FXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXIuanNcIlxuaW1wb3J0IHsgZ2V0SW50ZXJuYWxMb2dnZXIgfSBmcm9tIFwiLi4vLi4vSW50ZXJuYWxMb2dnZXIuanNcIlxuaW1wb3J0IHsgcGljayB9IGZyb20gXCJsb2Rhc2hcIlxuaW1wb3J0IHsgRGVmZXJyZWQgfSBmcm9tIFwiLi4vLi4vLi4vaGVscGVycy9pbmRleC5qc1wiXG5pbXBvcnQgeyBMb2dSZWNvcmQgfSBmcm9tIFwiLi4vLi4vTG9nUmVjb3JkLmpzXCJcbmltcG9ydCB7IEFwcGVuZGVyIH0gZnJvbSBcIi4uLy4uL0FwcGVuZGVyLmpzXCJcblxuY29uc3QgTG9nUXVldWVNYXhSZWNvcmRzID0gMTAwMDBcbmNvbnN0IEV4cGlyZWRUb2tlbkV4Y2VwdGlvbkNvZGUgPSBcIkV4cGlyZWRUb2tlbkV4Y2VwdGlvblwiXG5cbmNvbnN0IGxvZyA9IGdldEludGVybmFsTG9nZ2VyKClcbmxldCBmaXJlaG9zZU1vZHVsZTogUHJvbWlzZTx0eXBlb2YgaW1wb3J0KFwiQGF3cy1zZGsvY2xpZW50LWZpcmVob3NlXCIpPiA9IG51bGxcblxuZnVuY3Rpb24gZ2V0RmlyZWhvc2VNb2R1bGUoKSB7XG4gIGlmICghZmlyZWhvc2VNb2R1bGUpIHtcbiAgICBmaXJlaG9zZU1vZHVsZSA9IGltcG9ydChcIkBhd3Mtc2RrL2NsaWVudC1maXJlaG9zZVwiKS5jYXRjaChlcnIgPT4ge1xuICAgICAgZmlyZWhvc2VNb2R1bGUgPSBudWxsXG4gICAgICB0aHJvdyBlcnJcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGZpcmVob3NlTW9kdWxlXG59XG5cbmV4cG9ydCBjbGFzcyBBV1NGaXJlaG9zZUFwcGVuZGVyPFxuICBSZWNvcmQgZXh0ZW5kcyBMb2dSZWNvcmQgPSBMb2dSZWNvcmRcbj4gaW1wbGVtZW50cyBBcHBlbmRlcjxSZWNvcmQ+IHtcbiAgcHJpdmF0ZSBwZW5kaW5nUmVjb3JkcyA9IEFycmF5PExvZ1JlY29yZD4oKVxuICBwcml2YXRlIGZsdXNoRGVmZXJyZWQ6IERlZmVycmVkPHZvaWQ+XG4gIHByaXZhdGUgZmx1c2hJbnRlcnZhbE1zID0gMTAwMFxuXG4gIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsTWFuYWdlcjogQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlclxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsRW5kcG9pbnRVcmw6IHN0cmluZykge1xuICAgIHRoaXMuY3JlZGVudGlhbE1hbmFnZXIgPSBuZXcgQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlcihcbiAgICAgIGNyZWRlbnRpYWxFbmRwb2ludFVybFxuICAgIClcbiAgICB0aGlzLmNyZWRlbnRpYWxNYW5hZ2VyLm9uKFwicmVjZWl2ZWRcIiwgKCkgPT4ge1xuICAgICAgbG9nLmluZm8oXCJDcmVkZW50aWFscyByZWNlaXZlZCwgaW5pdGlhbGl6aW5nIGZpcmVob3NlIGNsaWVudFwiKVxuICAgICAgaWYgKCF0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCB8fCAhIXRoaXMuZmx1c2hEZWZlcnJlZCkge1xuICAgICAgICBsb2cuZGVidWcoXG4gICAgICAgICAgXCJOb3RoaW5nIHRvIGZsdXNoIHVwb24gY3JlZGVudGlhbCByZWNlaXB0IE9SIGZsdXNoIGFscmVhZHkgaW4gcHJvZ3Jlc3NcIlxuICAgICAgICApXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdGhpcy5mbHVzaCgpLmNhdGNoKChlOiBFcnJvcikgPT4ge1xuICAgICAgICBsb2cuZXJyb3IoXG4gICAgICAgICAgYEVycm9yIGZsdXNoaW5nIGxvZ3MgYWZ0ZXIgY3JlZGVudGlhbCByZWNlaXB0OiAke2UubWVzc2FnZX1gLFxuICAgICAgICAgIGVcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICB9KVxuICB9XG4gIGFwcGVuZChyZWNvcmQ6IFJlY29yZCk6IHZvaWQge1xuICAgIGNvbnN0IHBlbmRpbmdDb3VudCA9IHRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoICsgMSxcbiAgICAgIHJlbW92ZUNvdW50ID0gTG9nUXVldWVNYXhSZWNvcmRzIC0gcGVuZGluZ0NvdW50XG5cbiAgICBpZiAocmVtb3ZlQ291bnQgPCAwKSB7XG4gICAgICB0aGlzLnBlbmRpbmdSZWNvcmRzLnNwbGljZSgwLCBNYXRoLmFicyhyZW1vdmVDb3VudCkpXG4gICAgfVxuXG4gICAgdGhpcy5wZW5kaW5nUmVjb3Jkcy5wdXNoKHtcbiAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSxcbiAgICAgIC4uLnJlY29yZCxcbiAgICAgIGFwcDogcmVjb3JkLmFwcD8ubGVuZ3RoID4gMCA/IHJlY29yZC5hcHAgOiBcIlVOS05PV05cIixcbiAgICAgIGVudjogcmVjb3JkLmVudj8ubGVuZ3RoID4gMCA/IHJlY29yZC5lbnYgOiBcIlVOS05PV05cIixcbiAgICAgIHVybDogdHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIiA/IFwibG9jYWw6Ly9cIiA6IHdpbmRvdy5sb2NhdGlvbi5ocmVmXG4gICAgfSlcblxuICAgIHRoaXMuZmx1c2goKVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0aGUgRmlyZWhvc2UgY2xpZW50IGZvciBhIGxvYWRlZCBjcmVkZW50aWFsIHNldC5cbiAgICogQHBhcmFtIGNyZWRzIExvYWRlZCBGaXJlaG9zZSBjcmVkZW50aWFscy5cbiAgICogQHJldHVybnMgRmlyZWhvc2UgY2xpZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBnZXRGaXJlaG9zZShjcmVkczogQVdTQ3JlZGVudGlhbHMpOiBQcm9taXNlPEZpcmVob3NlQ2xpZW50PiB7XG4gICAgY29uc3QgeyByZWdpb24sIHN0cmVhbU5hbWUgfSA9IGNyZWRzXG5cbiAgICBpZiAoIXJlZ2lvbiB8fCAhc3RyZWFtTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUmVnaW9uIG9yIHN0cmVhbSBuYW1lIG5vdCBhdmFpbGFibGVcIilcbiAgICB9XG5cbiAgICBjb25zdCB7IEZpcmVob3NlQ2xpZW50IH0gPSBhd2FpdCBnZXRGaXJlaG9zZU1vZHVsZSgpXG4gICAgY29uc3QgY2xpZW50ID0gbmV3IEZpcmVob3NlQ2xpZW50KHtcbiAgICAgIHJlZ2lvbjogY3JlZHMucmVnaW9uLFxuICAgICAgY3JlZGVudGlhbHM6IHBpY2soY3JlZHMsIFwiYWNjZXNzS2V5SWRcIiwgXCJzZWNyZXRBY2Nlc3NLZXlcIiwgXCJzZXNzaW9uVG9rZW5cIilcbiAgICB9KVxuXG4gICAgcmV0dXJuIGNsaWVudFxuICB9XG5cbiAgLyoqXG4gICAqIEZsdXNoIHBlbmRpbmcgcmVjb3Jkc1xuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmx1c2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCEhdGhpcy5mbHVzaERlZmVycmVkKSB7XG4gICAgICBsb2cuZGVidWcoXCJGbHVzaCBhbHJlYWR5IGluIHByb2dyZXNzLCBza2lwcGluZ1wiKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCkge1xuICAgICAgbG9nLmRlYnVnKFwiTm8gcGVuZGluZyByZWNvcmRzIHRvIGZsdXNoXCIpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3QgY3JlZHMgPSB0aGlzLmNyZWRlbnRpYWxNYW5hZ2VyLmdldENyZWRlbnRpYWxzKClcbiAgICBpZiAoIWNyZWRzKSB7XG4gICAgICBsb2cud2FybihcIk5vIGNyZWRlbnRpYWxzIGF2YWlsYWJsZSBmb3IgZmx1c2hcIilcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGRlZmVycmVkID0gKHRoaXMuZmx1c2hEZWZlcnJlZCA9IG5ldyBEZWZlcnJlZDx2b2lkPigpKVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IHN0cmVhbU5hbWUgfSA9IGNyZWRzLFxuICAgICAgICBjbGllbnQgPSBhd2FpdCB0aGlzLmdldEZpcmVob3NlKGNyZWRzKSxcbiAgICAgICAgeyBQdXRSZWNvcmRCYXRjaENvbW1hbmQgfSA9IGF3YWl0IGdldEZpcmVob3NlTW9kdWxlKClcblxuICAgICAgd2hpbGUgKHRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGNodW5rU2l6ZSA9IE1hdGgubWluKHRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoLCAxMCksXG4gICAgICAgICAgcmVjb3JkcyA9IHRoaXMucGVuZGluZ1JlY29yZHMuc3BsaWNlKDAsIGNodW5rU2l6ZSksXG4gICAgICAgICAgcmVjb3JkSnNvbnMgPSByZWNvcmRzLm1hcChyZWNvcmQgPT4gSlNPTi5zdHJpbmdpZnkocmVjb3JkKSlcblxuICAgICAgICBpZiAobG9nLmlzRGVidWdFbmFibGVkKCkpIGxvZy5kZWJ1ZyhcIlJlY29yZHNcIiwgcmVjb3JkcylcblxuICAgICAgICBjb25zdCB0ZXh0RW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpLFxuICAgICAgICAgIGJhdGNoOiBQdXRSZWNvcmRCYXRjaElucHV0W1wiUmVjb3Jkc1wiXSA9IHJlY29yZEpzb25zLm1hcChqc29uU3RyID0+ICh7XG4gICAgICAgICAgICBEYXRhOiB0ZXh0RW5jb2Rlci5lbmNvZGUoanNvblN0cilcbiAgICAgICAgICB9KSlcblxuICAgICAgICBsb2cuaW5mbyhgUHVzaGluZyAke3JlY29yZHMubGVuZ3RofSByZWNvcmRzIHRvIGZpcmVob3NlYClcblxuICAgICAgICBjb25zdCBjbWQgPSBuZXcgUHV0UmVjb3JkQmF0Y2hDb21tYW5kKHtcbiAgICAgICAgICBEZWxpdmVyeVN0cmVhbU5hbWU6IHN0cmVhbU5hbWUsXG4gICAgICAgICAgUmVjb3JkczogYmF0Y2hcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCByZXNwID0gYXdhaXQgY2xpZW50LnNlbmQoY21kKVxuICAgICAgICBjb25zdCBmYWlsZWQgPSByZXNwLkZhaWxlZFB1dENvdW50IHx8IDBcbiAgICAgICAgaWYgKGZhaWxlZCkge1xuICAgICAgICAgIGNvbnN0IHJyID0gcmVzcC5SZXF1ZXN0UmVzcG9uc2VzIHx8IFtdXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHJyW2ldLkVycm9yQ29kZSkge1xuICAgICAgICAgICAgICBsb2cud2FybihcbiAgICAgICAgICAgICAgICBgUmVjb3JkIGZhaWxlZDogJHtycltpXS5FcnJvckNvZGV9ICR7cnJbaV0uRXJyb3JNZXNzYWdlfWBcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAvL3RoaXMucGVuZGluZ1JlY29yZHMudW5zaGlmdChyZWNvcmRzW2ldKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBsb2cuaW5mbyhgUHV0UmVjb3JkQmF0Y2ggZmFpbGVkPSR7ZmFpbGVkfTsgcmVxdWV1ZWQgZmFpbGVkIHJlY29yZHNgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZy5pbmZvKGBQdXRSZWNvcmRCYXRjaCBvayBjb3VudD0ke3JlY29yZHMubGVuZ3RofWApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGRlZmVycmVkLnJlc29sdmUoKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLmVycm9yKFwiRmFpbGVkIHRvIHB1c2ggbG9nc1wiLCBlcnIpXG4gICAgICBpZiAoZXJyLm5hbWUgPT09IEV4cGlyZWRUb2tlbkV4Y2VwdGlvbkNvZGUpIHtcbiAgICAgICAgdGhpcy5jcmVkZW50aWFsTWFuYWdlci5mb3JjZVVwZGF0ZUNyZWRlbnRpYWxzKClcbiAgICAgIH1cbiAgICAgIGRlZmVycmVkLnJlamVjdChlcnIpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuZmx1c2hEZWZlcnJlZCA9IG51bGxcblxuICAgICAgLy8gaWYgKHRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoKVxuICAgICAgLy8gICB0aGlzLmZsdXNoKClcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEFXU0ZpcmVob3NlQXBwZW5kZXJcbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PushLogRecordsAppender.d.ts","sourceRoot":"","sources":["../../../../../src/logging/appenders/push/PushLogRecordsAppender.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PushLogRecordsAppender.d.ts","sourceRoot":"","sources":["../../../../../src/logging/appenders/push/PushLogRecordsAppender.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,eAAe,CAAA;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAa5C,UAAU,uCAAuC;IAC/C,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED;;;GAGG;AACH,qBAAa,+BAAgC,SAAQ,aAAa,CAAC,uCAAuC,CAAC;aAK7E,WAAW,EAAE,MAAM;IAJ/C,OAAO,CAAC,YAAY,CAA6C;IACjE,OAAO,CAAC,kBAAkB,CAA8B;IACxD,OAAO,CAAC,oBAAoB,CAAsB;gBAEtB,WAAW,EAAE,MAAM;IAI/C;;OAEG;IACH,cAAc,IAAI,OAAO;IAczB;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAoB3C;;OAEG;IACH,YAAY,IAAI,IAAI;IAkBpB;;OAEG;YACW,gBAAgB;IAsC9B;;OAEG;IACH,OAAO,CAAC,eAAe;IAevB;;OAEG;IACH,OAAO,IAAI,IAAI;CAahB;AAED;;;GAGG;AACH,qBAAa,sBAAsB,CACjC,MAAM,SAAS,SAAS,GAAG,SAAS,CACpC,YAAW,QAAQ,CAAC,MAAM,CAAC;aAOC,WAAW,EAAE,MAAM;IAN/C,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,UAAU,CAA6C;IAE/D,SAAgB,iBAAiB,EAAE,+BAA+B,CAAA;gBAEtC,WAAW,EAAE,MAAM;IAa/C;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAsB5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB;;OAEG;YACW,KAAK;IA0DnB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IASjC;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAQpC;;OAEG;IACH,OAAO,IAAI,IAAI;CAehB;AAED,eAAe,sBAAsB,CAAA"}
|
|
@@ -4,7 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.PushLogRecordsAppender = exports.PushLogRecordsCredentialManager = void 0;
|
|
7
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
8
7
|
const eventemitter3_1 = __importDefault(require("eventemitter3"));
|
|
9
8
|
const index_js_1 = require("../../../helpers/index.js");
|
|
10
9
|
const InternalLogger_js_1 = require("../../InternalLogger.js");
|
|
@@ -296,4 +295,4 @@ class PushLogRecordsAppender {
|
|
|
296
295
|
}
|
|
297
296
|
exports.PushLogRecordsAppender = PushLogRecordsAppender;
|
|
298
297
|
exports.default = PushLogRecordsAppender;
|
|
299
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHVzaExvZ1JlY29yZHNBcHBlbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9sb2dnaW5nL2FwcGVuZGVycy9wdXNoL1B1c2hMb2dSZWNvcmRzQXBwZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsdURBQXVEO0FBQ3ZELGtFQUF5QztBQUN6Qyx3REFBb0Q7QUFHcEQsK0RBQTJEO0FBRTNELG1EQUFtRDtBQUNuRCxNQUFNLG9CQUFvQixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFBLENBQUMsYUFBYTtBQUN4RCxNQUFNLHdCQUF3QixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFBLENBQUMsc0NBQXNDO0FBQ3JGLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFBO0FBQzlCLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQSxDQUFDLGFBQWE7QUFDaEQsTUFBTSxxQkFBcUIsR0FBRyxLQUFLLENBQUE7QUFDbkMsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFBO0FBRWxDLE1BQU0sR0FBRyxHQUFHLElBQUEscUNBQWlCLEdBQUUsQ0FBQTtBQU8vQjs7O0dBR0c7QUFDSCxNQUFhLCtCQUFnQyxTQUFRLHVCQUFzRDtJQUs3RTtJQUpwQixZQUFZLEdBQXlDLElBQUksQ0FBQTtJQUN6RCxrQkFBa0IsR0FBMEIsSUFBSSxDQUFBO0lBQ2hELG9CQUFvQixHQUFrQixJQUFJLENBQUE7SUFFbEQsWUFBNEIsV0FBbUI7UUFDN0MsS0FBSyxFQUFFLENBQUE7UUFEbUIsZ0JBQVcsR0FBWCxXQUFXLENBQVE7SUFFL0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsY0FBYztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUMvQixPQUFPLEtBQUssQ0FBQTtRQUNkLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxJ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QztJQUVEOztPQUVHO0lBQ0gsT0FBTztRQUNMLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUE7UUFDeEIsQ0FBQztRQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUVoQyxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFBO1FBQzVELENBQUM7UUFFRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQTtRQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0NBQ0Y7QUFyS0Qsd0RBcUtDO0FBRUQsa0JBQWUsc0JBQXNCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgRXZlbnRFbWl0dGVyMyBmcm9tIFwiZXZlbnRlbWl0dGVyM1wiXG5pbXBvcnQgeyBEZWZlcnJlZCB9IGZyb20gXCIuLi8uLi8uLi9oZWxwZXJzL2luZGV4LmpzXCJcbmltcG9ydCB7IExvZ1JlY29yZCB9IGZyb20gXCIuLi8uLi9Mb2dSZWNvcmQuanNcIlxuaW1wb3J0IHsgQXBwZW5kZXIgfSBmcm9tIFwiLi4vLi4vQXBwZW5kZXIuanNcIlxuaW1wb3J0IHsgZ2V0SW50ZXJuYWxMb2dnZXIgfSBmcm9tIFwiLi4vLi4vSW50ZXJuYWxMb2dnZXIuanNcIlxuXG4vLyBDb25zdGFudHMgZm9yIHR1bmluZyAoYWRqdXN0YWJsZSBpbiBkZXZlbG9wbWVudClcbmNvbnN0IENPT0tJRV9FWFBJUkFUSU9OX01TID0gNSAqIDYwICogMTAwMCAvLyAzMCBtaW51dGVzXG5jb25zdCBDT09LSUVfUkVGUkVTSF9CVUZGRVJfTVMgPSAyICogNjAgKiAxMDAwIC8vIFJlZnJlc2ggMiBtaW51dGVzIGJlZm9yZSBleHBpcmF0aW9uXG5jb25zdCBGTFVTSF9RVUVVRV9ERVBUSCA9IDEwMDBcbmNvbnN0IEZMVVNIX0lOVEVSVkFMX01TID0gNSAqIDEwMDAgLy8gMTAgc2Vjb25kc1xuY29uc3QgTE9HX1FVRVVFX01BWF9SRUNPUkRTID0gMTAwMDBcbmNvbnN0IENPT0tJRV9OQU1FID0gXCJ3aXJlX2xvZ3NfaWRcIlxuXG5jb25zdCBsb2cgPSBnZXRJbnRlcm5hbExvZ2dlcigpXG5cbmludGVyZmFjZSBQdXNoTG9nUmVjb3Jkc0NyZWRlbnRpYWxNYW5hZ2VyRXZlbnRNYXAge1xuICByZWNlaXZlZDogKCkgPT4gdm9pZFxuICBleHBpcmVkOiAoKSA9PiB2b2lkXG59XG5cbi8qKlxuICogTWFuYWdlcyBjcmVkZW50aWFsIGNvb2tpZSBmb3IgUHVzaExvZ1JlY29yZHNBcHBlbmRlci5cbiAqIEludm9rZXMgdGhlIGVuZHBvaW50IHZpYSBQT1NUIHRvIG9idGFpbiBhIHNlc3Npb24gY29va2llLlxuICovXG5leHBvcnQgY2xhc3MgUHVzaExvZ1JlY29yZHNDcmVkZW50aWFsTWFuYWdlciBleHRlbmRzIEV2ZW50RW1pdHRlcjM8UHVzaExvZ1JlY29yZHNDcmVkZW50aWFsTWFuYWdlckV2ZW50TWFwPiB7XG4gIHByaXZhdGUgcmVmcmVzaFRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsXG4gIHByaXZhdGUgY3JlZGVudGlhbERlZmVycmVkOiBEZWZlcnJlZDx2b2lkPiB8IG51bGwgPSBudWxsXG4gIHByaXZhdGUgY29va2llRXhwaXJhdGlvblRpbWU6IG51bWJlciB8IG51bGwgPSBudWxsXG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGVuZHBvaW50VXJsOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpXG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdmFsaWQgY3JlZGVudGlhbHMgZXhpc3RcbiAgICovXG4gIGhhc0NyZWRlbnRpYWxzKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5jb29raWVFeHBpcmF0aW9uVGltZSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKERhdGUubm93KCkgPj0gdGhpcy5jb29raWVFeHBpcmF0aW9uVGltZSkge1xuICAgICAgdGhpcy5jb29raWVFeHBpcmF0aW9uVGltZSA9IG51bGxcbiAgICAgIHRoaXMuZW1pdChcImV4cGlyZWRcIilcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvKipcbiAgICogR2V0IGNyZWRlbnRpYWxzLCBmZXRjaGluZyB0aGVtIGlmIG5lY2Vzc2FyeVxuICAgKi9cbiAgYXN5bmMgZW5zdXJlQ3JlZGVudGlhbHMoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgLy8gSWYgd2UgaGF2ZSB2YWxpZCBjcmVkZW50aWFscywgcmV0dXJuIGltbWVkaWF0ZWx5XG4gICAgaWYgKHRoaXMuaGFzQ3JlZGVudGlhbHMoKSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICAvLyBJZiBhIGZldGNoIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MsIHdhaXQgZm9yIGl0XG4gICAgaWYgKHRoaXMuY3JlZGVudGlhbERlZmVycmVkICYmICF0aGlzLmNyZWRlbnRpYWxEZWZlcnJlZC5pc1NldHRsZWQoKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5jcmVkZW50aWFsRGVmZXJyZWQucHJvbWlzZVxuICAgICAgICByZXR1cm4gdGhpcy5oYXNDcmVkZW50aWFscygpXG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmV0Y2ggbmV3IGNyZWRlbnRpYWxzXG4gICAgcmV0dXJuIHRoaXMuZmV0Y2hDcmVkZW50aWFscygpXG4gIH1cblxuICAvKipcbiAgICogRm9yY2UgcmVmcmVzaCBvZiBjcmVkZW50aWFsc1xuICAgKi9cbiAgZm9yY2VSZWZyZXNoKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlZnJlc2hUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVmcmVzaFRpbWVyKVxuICAgICAgdGhpcy5yZWZyZXNoVGltZXIgPSBudWxsXG4gICAgfVxuXG4gICAgdGhpcy5jb29raWVFeHBpcmF0aW9uVGltZSA9IG51bGxcblxuICAgIGlmICh0aGlzLmNyZWRlbnRpYWxEZWZlcnJlZCAmJiAhdGhpcy5jcmVkZW50aWFsRGVmZXJyZWQuaXNTZXR0bGVkKCkpIHtcbiAgICAgIHRoaXMuY3JlZGVudGlhbERlZmVycmVkLnJlamVjdChuZXcgRXJyb3IoXCJGb3JjZSByZWZyZXNoIHJlcXVlc3RlZFwiKSlcbiAgICB9XG4gICAgdGhpcy5jcmVkZW50aWFsRGVmZXJyZWQgPSBudWxsXG5cbiAgICB0aGlzLmZldGNoQ3JlZGVudGlhbHMoKS5jYXRjaCgoKSA9PiB7XG4gICAgICAvLyBJZ25vcmUgZXJyb3JzIGR1cmluZyBmb3JjZSByZWZyZXNoLCB0aGV5J2xsIGJlIGhhbmRsZWQgb24gbmV4dCByZXF1ZXN0XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBjcmVkZW50aWFscyBmcm9tIHRoZSBlbmRwb2ludFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaENyZWRlbnRpYWxzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGRlZmVycmVkID0gKHRoaXMuY3JlZGVudGlhbERlZmVycmVkID0gbmV3IERlZmVycmVkPHZvaWQ+KCkpXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh0aGlzLmVuZHBvaW50VXJsLCB7XG4gICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgIG1vZGU6IFwiY29yc1wiLFxuICAgICAgICBjcmVkZW50aWFsczogXCJpbmNsdWRlXCIsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIlxuICAgICAgICB9LFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7fSlcbiAgICAgIH0pXG5cbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBDcmVkZW50aWFsIHJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzICR7cmVzcG9uc2Uuc3RhdHVzfWBcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICAvLyBDb29raWUgaXMgc2V0IGJ5IFNldC1Db29raWUgaGVhZGVyLCB3ZSBqdXN0IG5lZWQgdG8gdHJhY2sgZXhwaXJhdGlvblxuICAgICAgdGhpcy5jb29raWVFeHBpcmF0aW9uVGltZSA9IERhdGUubm93KCkgKyBDT09LSUVfRVhQSVJBVElPTl9NU1xuXG4gICAgICAvLyBTY2hlZHVsZSByZWZyZXNoIGJlZm9yZSBleHBpcmF0aW9uXG4gICAgICB0aGlzLnNjaGVkdWxlUmVmcmVzaCgpXG5cbiAgICAgIGRlZmVycmVkLnJlc29sdmUoKVxuICAgICAgdGhpcy5lbWl0KFwicmVjZWl2ZWRcIilcblxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZy53YXJuKFwiRmFpbGVkIHRvIGZldGNoIHB1c2ggbG9nIGNyZWRlbnRpYWxzXCIsIGVycilcbiAgICAgIGRlZmVycmVkLnJlamVjdChlcnIpXG4gICAgICB0aGlzLmNyZWRlbnRpYWxEZWZlcnJlZCA9IG51bGxcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTY2hlZHVsZSBhIGNyZWRlbnRpYWwgcmVmcmVzaCBiZWZvcmUgZXhwaXJhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBzY2hlZHVsZVJlZnJlc2goKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVmcmVzaFRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5yZWZyZXNoVGltZXIpXG4gICAgfVxuXG4gICAgY29uc3QgcmVmcmVzaEluID0gQ09PS0lFX0VYUElSQVRJT05fTVMgLSBDT09LSUVfUkVGUkVTSF9CVUZGRVJfTVNcbiAgICB0aGlzLnJlZnJlc2hUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jcmVkZW50aWFsRGVmZXJyZWQgPSBudWxsXG4gICAgICB0aGlzLmZldGNoQ3JlZGVudGlhbHMoKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgIC8vIExvZyBidXQgZG9uJ3QgdGhyb3cgLSB3aWxsIHJldHJ5IG9uIG5leHQgcmVxdWVzdFxuICAgICAgICBsb2cuZGVidWcoXCJTY2hlZHVsZWQgY3JlZGVudGlhbCByZWZyZXNoIGZhaWxlZFwiKVxuICAgICAgfSlcbiAgICB9LCByZWZyZXNoSW4pXG4gIH1cblxuICAvKipcbiAgICogQ2xlYW4gdXAgcmVzb3VyY2VzXG4gICAqL1xuICBkZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlZnJlc2hUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVmcmVzaFRpbWVyKVxuICAgICAgdGhpcy5yZWZyZXNoVGltZXIgPSBudWxsXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3JlZGVudGlhbERlZmVycmVkICYmICF0aGlzLmNyZWRlbnRpYWxEZWZlcnJlZC5pc1NldHRsZWQoKSkge1xuICAgICAgdGhpcy5jcmVkZW50aWFsRGVmZXJyZWQucmVqZWN0KG5ldyBFcnJvcihcIkNyZWRlbnRpYWwgbWFuYWdlciBkZXN0cm95ZWRcIikpXG4gICAgfVxuXG4gICAgdGhpcy5jcmVkZW50aWFsRGVmZXJyZWQgPSBudWxsXG4gICAgdGhpcy5jb29raWVFeHBpcmF0aW9uVGltZSA9IG51bGxcbiAgfVxufVxuXG4vKipcbiAqIEFwcGVuZGVyIHRoYXQgcHVzaGVzIGxvZyByZWNvcmRzIHRvIGEgcmVtb3RlIGVuZHBvaW50IHZpYSBIVFRQIFBVVC5cbiAqIEJhdGNoZXMgcmVjb3JkcyBhbmQgc2VuZHMgd2hlbiBxdWV1ZSByZWFjaGVzIEZMVVNIX1FVRVVFX0RFUFRIIG9yIEZMVVNIX0lOVEVSVkFMX01TIGhhcyBlbGFwc2VkLlxuICovXG5leHBvcnQgY2xhc3MgUHVzaExvZ1JlY29yZHNBcHBlbmRlcjxcbiAgUmVjb3JkIGV4dGVuZHMgTG9nUmVjb3JkID0gTG9nUmVjb3JkXG4+IGltcGxlbWVudHMgQXBwZW5kZXI8UmVjb3JkPiB7XG4gIHByaXZhdGUgcGVuZGluZ1JlY29yZHM6IExvZ1JlY29yZFtdID0gW11cbiAgcHJpdmF0ZSBmbHVzaERlZmVycmVkOiBEZWZlcnJlZDx2b2lkPiB8IG51bGwgPSBudWxsXG4gIHByaXZhdGUgZmx1c2hUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbFxuXG4gIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsTWFuYWdlcjogUHVzaExvZ1JlY29yZHNDcmVkZW50aWFsTWFuYWdlclxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBlbmRwb2ludFVybDogc3RyaW5nKSB7XG4gICAgdGhpcy5jcmVkZW50aWFsTWFuYWdlciA9IG5ldyBQdXNoTG9nUmVjb3Jkc0NyZWRlbnRpYWxNYW5hZ2VyKGVuZHBvaW50VXJsKVxuXG4gICAgdGhpcy5jcmVkZW50aWFsTWFuYWdlci5vbihcInJlY2VpdmVkXCIsICgpID0+IHtcbiAgICAgIGlmICghdGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGggfHwgdGhpcy5mbHVzaERlZmVycmVkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdGhpcy5mbHVzaCgpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgLy8gRXJyb3JzIGhhbmRsZWQgaW4gZmx1c2hcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBlbmQgYSBsb2cgcmVjb3JkIHRvIHRoZSBxdWV1ZVxuICAgKi9cbiAgYXBwZW5kKHJlY29yZDogUmVjb3JkKTogdm9pZCB7XG4gICAgLy8gQWRkIHRoZSByZWNvcmQgd2l0aCBlbnJpY2hlZCBtZXRhZGF0YVxuICAgIHRoaXMucGVuZGluZ1JlY29yZHMucHVzaCh7XG4gICAgICB0aW1lc3RhbXA6IERhdGUubm93KCksXG4gICAgICAuLi5yZWNvcmQsXG4gICAgICBhcHA6IHJlY29yZC5hcHAgJiYgcmVjb3JkLmFwcC5sZW5ndGggPiAwID8gcmVjb3JkLmFwcCA6IFwiVU5LTk9XTlwiLFxuICAgICAgZW52OiByZWNvcmQuZW52ICYmIHJlY29yZC5lbnYubGVuZ3RoID4gMCA/IHJlY29yZC5lbnYgOiBcIlVOS05PV05cIixcbiAgICAgIHVybDogdHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIiA/IFwibG9jYWw6Ly9cIiA6IHdpbmRvdy5sb2NhdGlvbi5ocmVmXG4gICAgfSlcbiAgICB0aGlzLnRyaW1QZW5kaW5nUmVjb3Jkc1RvUXVldWVDYXAoKVxuXG4gICAgLy8gQ2hlY2sgaWYgd2Ugc2hvdWxkIGZsdXNoIGltbWVkaWF0ZWx5IGR1ZSB0byBxdWV1ZSBkZXB0aFxuICAgIGlmICh0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCA+PSBGTFVTSF9RVUVVRV9ERVBUSCkge1xuICAgICAgdGhpcy5mbHVzaCgpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgLy8gRXJyb3JzIGhhbmRsZWQgaW4gZmx1c2hcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFNjaGVkdWxlIGEgZmx1c2ggaWYgbm90IGFscmVhZHkgc2NoZWR1bGVkXG4gICAgICB0aGlzLnNjaGVkdWxlRmx1c2goKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTY2hlZHVsZSBhIGZsdXNoIGFmdGVyIHRoZSBpbnRlcnZhbFxuICAgKi9cbiAgcHJpdmF0ZSBzY2hlZHVsZUZsdXNoKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZsdXNoVGltZXIpIHtcbiAgICAgIHJldHVybiAvLyBBbHJlYWR5IHNjaGVkdWxlZFxuICAgIH1cblxuICAgIHRoaXMuZmx1c2hUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5mbHVzaFRpbWVyID0gbnVsbFxuICAgICAgdGhpcy5mbHVzaCgpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgLy8gRXJyb3JzIGhhbmRsZWQgaW4gZmx1c2hcbiAgICAgIH0pXG4gICAgfSwgRkxVU0hfSU5URVJWQUxfTVMpXG4gIH1cblxuICAvKipcbiAgICogRmx1c2ggcGVuZGluZyByZWNvcmRzIHRvIHRoZSBlbmRwb2ludFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBmbHVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBQcmV2ZW50IGNvbmN1cnJlbnQgZmx1c2hlc1xuICAgIGlmICh0aGlzLmZsdXNoRGVmZXJyZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmZsdXNoRGVmZXJyZWQucHJvbWlzZVxuICAgIH1cblxuICAgIC8vIE5vdGhpbmcgdG8gZmx1c2hcbiAgICBpZiAoIXRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBFbnN1cmUgd2UgaGF2ZSB2YWxpZCBjcmVkZW50aWFsc1xuICAgIGNvbnN0IGhhc0NyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5jcmVkZW50aWFsTWFuYWdlci5lbnN1cmVDcmVkZW50aWFscygpXG4gICAgaWYgKCFoYXNDcmVkZW50aWFscykge1xuICAgICAgbG9nLmRlYnVnKFwiRmFpbGVkIHRvIHB1c2ggbG9nIHJlY29yZHNcIiwgXCJObyB2YWxpZCBjcmVkZW50aWFscyBhdmFpbGFibGVcIilcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGRlZmVycmVkID0gKHRoaXMuZmx1c2hEZWZlcnJlZCA9IG5ldyBEZWZlcnJlZDx2b2lkPigpKVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFRha2UgYWxsIHBlbmRpbmcgcmVjb3JkcyBmb3IgdGhpcyBmbHVzaFxuICAgICAgY29uc3QgcmVjb3JkcyA9IHRoaXMucGVuZGluZ1JlY29yZHMuc3BsaWNlKDAsIHRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoKVxuICAgICAgY29uc3QgcGF5bG9hZCA9IHsgcmVjb3JkczogcmVjb3Jkcy5tYXAocmVjb3JkID0+IEpTT04uc3RyaW5naWZ5KHJlY29yZCkpIH1cblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh0aGlzLmVuZHBvaW50VXJsLCB7XG4gICAgICAgIG1ldGhvZDogXCJQVVRcIixcbiAgICAgICAgbW9kZTogXCJjb3JzXCIsXG4gICAgICAgIGNyZWRlbnRpYWxzOiBcImluY2x1ZGVcIixcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiXG4gICAgICAgIH0sXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHBheWxvYWQpXG4gICAgICB9KVxuXG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIC8vIFJlLXF1ZXVlIHJlY29yZHMgb24gZmFpbHVyZVxuICAgICAgICB0aGlzLnBlbmRpbmdSZWNvcmRzLnVuc2hpZnQoLi4ucmVjb3JkcylcbiAgICAgICAgdGhpcy50cmltUGVuZGluZ1JlY29yZHNUb1F1ZXVlQ2FwKClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQdXNoIGZhaWxlZCB3aXRoIHN0YXR1cyAke3Jlc3BvbnNlLnN0YXR1c31gKVxuICAgICAgfVxuXG4gICAgICBkZWZlcnJlZC5yZXNvbHZlKClcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZy5kZWJ1ZyhcIkZhaWxlZCB0byBwdXNoIGxvZyByZWNvcmRzXCIsIGVycilcbiAgICAgIGRlZmVycmVkLnJlamVjdChlcnIpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuZmx1c2hEZWZlcnJlZCA9IG51bGxcblxuICAgICAgLy8gSWYgbW9yZSByZWNvcmRzIGFjY3VtdWxhdGVkIGR1cmluZyBmbHVzaCwgc2NoZWR1bGUgYW5vdGhlclxuICAgICAgaWYgKHRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnNjaGVkdWxlRmx1c2goKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlXG4gIH1cblxuICAvKipcbiAgICogRm9yY2UgYW4gaW1tZWRpYXRlIGZsdXNoXG4gICAqL1xuICBhc3luYyBmb3JjZUZsdXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmZsdXNoVGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmZsdXNoVGltZXIpXG4gICAgICB0aGlzLmZsdXNoVGltZXIgPSBudWxsXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZmx1c2goKVxuICB9XG5cbiAgLyoqXG4gICAqIEVuZm9yY2UgdGhlIHBlbmRpbmcgcXVldWUgY2FwIGJ5IGRyb3BwaW5nIHRoZSBvbGRlc3QgcmVjb3Jkcy5cbiAgICovXG4gIHByaXZhdGUgdHJpbVBlbmRpbmdSZWNvcmRzVG9RdWV1ZUNhcCgpOiB2b2lkIHtcbiAgICBjb25zdCByZW1vdmVDb3VudCA9IHRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoIC0gTE9HX1FVRVVFX01BWF9SRUNPUkRTXG5cbiAgICBpZiAocmVtb3ZlQ291bnQgPiAwKSB7XG4gICAgICB0aGlzLnBlbmRpbmdSZWNvcmRzLnNwbGljZSgwLCByZW1vdmVDb3VudClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xlYW4gdXAgcmVzb3VyY2VzXG4gICAqL1xuICBkZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZsdXNoVGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmZsdXNoVGltZXIpXG4gICAgICB0aGlzLmZsdXNoVGltZXIgPSBudWxsXG4gICAgfVxuXG4gICAgdGhpcy5jcmVkZW50aWFsTWFuYWdlci5kZXN0cm95KClcblxuICAgIGlmICh0aGlzLmZsdXNoRGVmZXJyZWQgJiYgIXRoaXMuZmx1c2hEZWZlcnJlZC5pc1NldHRsZWQoKSkge1xuICAgICAgdGhpcy5mbHVzaERlZmVycmVkLnJlamVjdChuZXcgRXJyb3IoXCJBcHBlbmRlciBkZXN0cm95ZWRcIikpXG4gICAgfVxuXG4gICAgdGhpcy5mbHVzaERlZmVycmVkID0gbnVsbFxuICAgIHRoaXMucGVuZGluZ1JlY29yZHMgPSBbXVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFB1c2hMb2dSZWNvcmRzQXBwZW5kZXJcbiJdfQ==
|
|
298
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHVzaExvZ1JlY29yZHNBcHBlbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9sb2dnaW5nL2FwcGVuZGVycy9wdXNoL1B1c2hMb2dSZWNvcmRzQXBwZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsa0VBQXlDO0FBQ3pDLHdEQUFvRDtBQUdwRCwrREFBMkQ7QUFFM0QsbURBQW1EO0FBQ25ELE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUEsQ0FBQyxhQUFhO0FBQ3hELE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUEsQ0FBQyxzQ0FBc0M7QUFDckYsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUE7QUFDOUIsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFBLENBQUMsYUFBYTtBQUNoRCxNQUFNLHFCQUFxQixHQUFHLEtBQUssQ0FBQTtBQUNuQyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUE7QUFFbEMsTUFBTSxHQUFHLEdBQUcsSUFBQSxxQ0FBaUIsR0FBRSxDQUFBO0FBTy9COzs7R0FHRztBQUNILE1BQWEsK0JBQWdDLFNBQVEsdUJBQXNEO0lBSzdFO0lBSnBCLFlBQVksR0FBeUMsSUFBSSxDQUFBO0lBQ3pELGtCQUFrQixHQUEwQixJQUFJLENBQUE7SUFDaEQsb0JBQW9CLEdBQWtCLElBQUksQ0FBQTtJQUVsRCxZQUE0QixXQUFtQjtRQUM3QyxLQUFLLEVBQUUsQ0FBQTtRQURtQixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtJQUUvQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQy9CLE9BQU8sS0FBSyxDQUFBO1FBQ2QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUE7WUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtZQUNwQixPQUFPLEtBQUssQ0FBQTtRQUNkLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxpQkFBaUI7UUFDckIsbURBQW1EO1FBQ25ELElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDO1FBRUQsaURBQWlEO1FBQ2pELElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDcEUsSUFBSSxDQUFDO2dCQUNILE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQTtnQkFDckMsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUE7WUFDOUIsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxPQUFPLEtBQUssQ0FBQTtZQUNkLENBQUM7UUFDSCxDQUFDO1FBRUQsd0JBQXdCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUE7SUFDaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUE7UUFDMUIsQ0FBQztRQUVELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUE7UUFFaEMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNwRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQTtRQUN0RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQTtRQUU5QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ2pDLHlFQUF5RTtRQUMzRSxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNLLEtBQUssQ0FBQyxnQkFBZ0I7UUFDNUIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxtQkFBUSxFQUFRLENBQUMsQ0FBQTtRQUVqRSxJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsTUFBTTtnQkFDZCxJQUFJLEVBQUUsTUFBTTtnQkFDWixXQUFXLEVBQUUsU0FBUztnQkFDdEIsT0FBTyxFQUFFO29CQUNQLGNBQWMsRUFBRSxrQkFBa0I7aUJBQ25DO2dCQUNELElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQzthQUN6QixDQUFDLENBQUE7WUFFRixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNqQixNQUFNLElBQUksS0FBSyxDQUNiLHlDQUF5QyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQzNELENBQUE7WUFDSCxDQUFDO1lBRUQsdUVBQXVFO1lBQ3ZFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsb0JBQW9CLENBQUE7WUFFN0QscUNBQXFDO1lBQ3JDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQTtZQUV0QixRQUFRLENBQUMsT0FBTyxFQUFFLENBQUE7WUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUVyQixPQUFPLElBQUksQ0FBQTtRQUNiLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsR0FBRyxDQUFDLElBQUksQ0FBQyxzQ0FBc0MsRUFBRSxHQUFHLENBQUMsQ0FBQTtZQUNyRCxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ3BCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUE7WUFDOUIsT0FBTyxLQUFLLENBQUE7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZUFBZTtRQUNyQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQ2pDLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxvQkFBb0IsR0FBRyx3QkFBd0IsQ0FBQTtRQUNqRSxJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQTtZQUM5QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUNqQyxtREFBbUQ7Z0JBQ25ELEdBQUcsQ0FBQyxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQTtZQUNsRCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUNmLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU87UUFDTCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO1lBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFBO1FBQzFCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ3BFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUFBO1FBQzNFLENBQUM7UUFFRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFBO1FBQzlCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUE7SUFDbEMsQ0FBQztDQUNGO0FBakpELDBFQWlKQztBQUVEOzs7R0FHRztBQUNILE1BQWEsc0JBQXNCO0lBU0w7SUFOcEIsY0FBYyxHQUFnQixFQUFFLENBQUE7SUFDaEMsYUFBYSxHQUEwQixJQUFJLENBQUE7SUFDM0MsVUFBVSxHQUF5QyxJQUFJLENBQUE7SUFFL0MsaUJBQWlCLENBQWlDO0lBRWxFLFlBQTRCLFdBQW1CO1FBQW5CLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQzdDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLCtCQUErQixDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBRXpFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRTtZQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN0RCxPQUFNO1lBQ1IsQ0FBQztZQUNELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUN0QiwwQkFBMEI7WUFDNUIsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxNQUFjO1FBQ25CLHdDQUF3QztRQUN4QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztZQUN2QixTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNyQixHQUFHLE1BQU07WUFDVCxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDakUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ2pFLEdBQUcsRUFBRSxPQUFPLE1BQU0sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJO1NBQ3ZFLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFBO1FBRW5DLDBEQUEwRDtRQUMxRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0JBQ3RCLDBCQUEwQjtZQUM1QixDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sNENBQTRDO1lBQzVDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssYUFBYTtRQUNuQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixPQUFNLENBQUMsb0JBQW9CO1FBQzdCLENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUE7WUFDdEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0JBQ3RCLDBCQUEwQjtZQUM1QixDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFBO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUNLLEtBQUssQ0FBQyxLQUFLO1FBQ2pCLDZCQUE2QjtRQUM3QixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFBO1FBQ25DLENBQUM7UUFFRCxtQkFBbUI7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEMsT0FBTTtRQUNSLENBQUM7UUFFRCxtQ0FBbUM7UUFDbkMsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtRQUN2RSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDcEIsR0FBRyxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsRUFBRSxnQ0FBZ0MsQ0FBQyxDQUFBO1lBQ3pFLE9BQU07UUFDUixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksbUJBQVEsRUFBUSxDQUFDLENBQUE7UUFFNUQsSUFBSSxDQUFDO1lBQ0gsMENBQTBDO1lBQzFDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ3pFLE1BQU0sT0FBTyxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQTtZQUUxRSxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsS0FBSztnQkFDYixJQUFJLEVBQUUsTUFBTTtnQkFDWixXQUFXLEVBQUUsU0FBUztnQkFDdEIsT0FBTyxFQUFFO29CQUNQLGNBQWMsRUFBRSxrQkFBa0I7aUJBQ25DO2dCQUNELElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQzthQUM5QixDQUFDLENBQUE7WUFFRixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNqQiw4QkFBOEI7Z0JBQzlCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUE7Z0JBQ3ZDLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFBO2dCQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtZQUMvRCxDQUFDO1lBRUQsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQ3BCLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsR0FBRyxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsRUFBRSxHQUFHLENBQUMsQ0FBQTtZQUM1QyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3RCLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO1lBRXpCLDZEQUE2RDtZQUM3RCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7WUFDdEIsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUE7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLFVBQVU7UUFDZCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFBO1FBQ3hCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSyw0QkFBNEI7UUFDbEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcscUJBQXFCLENBQUE7UUFFdEUsSUFBSSxXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFBO1FBQzVDLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPO1FBQ0wsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQTtRQUN4QixDQUFDO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFBO1FBRWhDLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUMxRCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUE7UUFDNUQsQ0FBQztRQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO1FBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFBO0lBQzFCLENBQUM7Q0FDRjtBQXJLRCx3REFxS0M7QUFFRCxrQkFBZSxzQkFBc0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFdmVudEVtaXR0ZXIzIGZyb20gXCJldmVudGVtaXR0ZXIzXCJcbmltcG9ydCB7IERlZmVycmVkIH0gZnJvbSBcIi4uLy4uLy4uL2hlbHBlcnMvaW5kZXguanNcIlxuaW1wb3J0IHsgTG9nUmVjb3JkIH0gZnJvbSBcIi4uLy4uL0xvZ1JlY29yZC5qc1wiXG5pbXBvcnQgeyBBcHBlbmRlciB9IGZyb20gXCIuLi8uLi9BcHBlbmRlci5qc1wiXG5pbXBvcnQgeyBnZXRJbnRlcm5hbExvZ2dlciB9IGZyb20gXCIuLi8uLi9JbnRlcm5hbExvZ2dlci5qc1wiXG5cbi8vIENvbnN0YW50cyBmb3IgdHVuaW5nIChhZGp1c3RhYmxlIGluIGRldmVsb3BtZW50KVxuY29uc3QgQ09PS0lFX0VYUElSQVRJT05fTVMgPSA1ICogNjAgKiAxMDAwIC8vIDMwIG1pbnV0ZXNcbmNvbnN0IENPT0tJRV9SRUZSRVNIX0JVRkZFUl9NUyA9IDIgKiA2MCAqIDEwMDAgLy8gUmVmcmVzaCAyIG1pbnV0ZXMgYmVmb3JlIGV4cGlyYXRpb25cbmNvbnN0IEZMVVNIX1FVRVVFX0RFUFRIID0gMTAwMFxuY29uc3QgRkxVU0hfSU5URVJWQUxfTVMgPSA1ICogMTAwMCAvLyAxMCBzZWNvbmRzXG5jb25zdCBMT0dfUVVFVUVfTUFYX1JFQ09SRFMgPSAxMDAwMFxuY29uc3QgQ09PS0lFX05BTUUgPSBcIndpcmVfbG9nc19pZFwiXG5cbmNvbnN0IGxvZyA9IGdldEludGVybmFsTG9nZ2VyKClcblxuaW50ZXJmYWNlIFB1c2hMb2dSZWNvcmRzQ3JlZGVudGlhbE1hbmFnZXJFdmVudE1hcCB7XG4gIHJlY2VpdmVkOiAoKSA9PiB2b2lkXG4gIGV4cGlyZWQ6ICgpID0+IHZvaWRcbn1cblxuLyoqXG4gKiBNYW5hZ2VzIGNyZWRlbnRpYWwgY29va2llIGZvciBQdXNoTG9nUmVjb3Jkc0FwcGVuZGVyLlxuICogSW52b2tlcyB0aGUgZW5kcG9pbnQgdmlhIFBPU1QgdG8gb2J0YWluIGEgc2Vzc2lvbiBjb29raWUuXG4gKi9cbmV4cG9ydCBjbGFzcyBQdXNoTG9nUmVjb3Jkc0NyZWRlbnRpYWxNYW5hZ2VyIGV4dGVuZHMgRXZlbnRFbWl0dGVyMzxQdXNoTG9nUmVjb3Jkc0NyZWRlbnRpYWxNYW5hZ2VyRXZlbnRNYXA+IHtcbiAgcHJpdmF0ZSByZWZyZXNoVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGxcbiAgcHJpdmF0ZSBjcmVkZW50aWFsRGVmZXJyZWQ6IERlZmVycmVkPHZvaWQ+IHwgbnVsbCA9IG51bGxcbiAgcHJpdmF0ZSBjb29raWVFeHBpcmF0aW9uVGltZTogbnVtYmVyIHwgbnVsbCA9IG51bGxcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgZW5kcG9pbnRVcmw6IHN0cmluZykge1xuICAgIHN1cGVyKClcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB2YWxpZCBjcmVkZW50aWFscyBleGlzdFxuICAgKi9cbiAgaGFzQ3JlZGVudGlhbHMoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNvb2tpZUV4cGlyYXRpb25UaW1lKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoRGF0ZS5ub3coKSA+PSB0aGlzLmNvb2tpZUV4cGlyYXRpb25UaW1lKSB7XG4gICAgICB0aGlzLmNvb2tpZUV4cGlyYXRpb25UaW1lID0gbnVsbFxuICAgICAgdGhpcy5lbWl0KFwiZXhwaXJlZFwiKVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY3JlZGVudGlhbHMsIGZldGNoaW5nIHRoZW0gaWYgbmVjZXNzYXJ5XG4gICAqL1xuICBhc3luYyBlbnN1cmVDcmVkZW50aWFscygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAvLyBJZiB3ZSBoYXZlIHZhbGlkIGNyZWRlbnRpYWxzLCByZXR1cm4gaW1tZWRpYXRlbHlcbiAgICBpZiAodGhpcy5oYXNDcmVkZW50aWFscygpKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIC8vIElmIGEgZmV0Y2ggaXMgYWxyZWFkeSBpbiBwcm9ncmVzcywgd2FpdCBmb3IgaXRcbiAgICBpZiAodGhpcy5jcmVkZW50aWFsRGVmZXJyZWQgJiYgIXRoaXMuY3JlZGVudGlhbERlZmVycmVkLmlzU2V0dGxlZCgpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLmNyZWRlbnRpYWxEZWZlcnJlZC5wcm9taXNlXG4gICAgICAgIHJldHVybiB0aGlzLmhhc0NyZWRlbnRpYWxzKClcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGZXRjaCBuZXcgY3JlZGVudGlhbHNcbiAgICByZXR1cm4gdGhpcy5mZXRjaENyZWRlbnRpYWxzKClcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JjZSByZWZyZXNoIG9mIGNyZWRlbnRpYWxzXG4gICAqL1xuICBmb3JjZVJlZnJlc2goKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVmcmVzaFRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5yZWZyZXNoVGltZXIpXG4gICAgICB0aGlzLnJlZnJlc2hUaW1lciA9IG51bGxcbiAgICB9XG5cbiAgICB0aGlzLmNvb2tpZUV4cGlyYXRpb25UaW1lID0gbnVsbFxuXG4gICAgaWYgKHRoaXMuY3JlZGVudGlhbERlZmVycmVkICYmICF0aGlzLmNyZWRlbnRpYWxEZWZlcnJlZC5pc1NldHRsZWQoKSkge1xuICAgICAgdGhpcy5jcmVkZW50aWFsRGVmZXJyZWQucmVqZWN0KG5ldyBFcnJvcihcIkZvcmNlIHJlZnJlc2ggcmVxdWVzdGVkXCIpKVxuICAgIH1cbiAgICB0aGlzLmNyZWRlbnRpYWxEZWZlcnJlZCA9IG51bGxcblxuICAgIHRoaXMuZmV0Y2hDcmVkZW50aWFscygpLmNhdGNoKCgpID0+IHtcbiAgICAgIC8vIElnbm9yZSBlcnJvcnMgZHVyaW5nIGZvcmNlIHJlZnJlc2gsIHRoZXknbGwgYmUgaGFuZGxlZCBvbiBuZXh0IHJlcXVlc3RcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIGNyZWRlbnRpYWxzIGZyb20gdGhlIGVuZHBvaW50XG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGZldGNoQ3JlZGVudGlhbHMoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgZGVmZXJyZWQgPSAodGhpcy5jcmVkZW50aWFsRGVmZXJyZWQgPSBuZXcgRGVmZXJyZWQ8dm9pZD4oKSlcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHRoaXMuZW5kcG9pbnRVcmwsIHtcbiAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgbW9kZTogXCJjb3JzXCIsXG4gICAgICAgIGNyZWRlbnRpYWxzOiBcImluY2x1ZGVcIixcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiXG4gICAgICAgIH0sXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHt9KVxuICAgICAgfSlcblxuICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYENyZWRlbnRpYWwgcmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgJHtyZXNwb25zZS5zdGF0dXN9YFxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIC8vIENvb2tpZSBpcyBzZXQgYnkgU2V0LUNvb2tpZSBoZWFkZXIsIHdlIGp1c3QgbmVlZCB0byB0cmFjayBleHBpcmF0aW9uXG4gICAgICB0aGlzLmNvb2tpZUV4cGlyYXRpb25UaW1lID0gRGF0ZS5ub3coKSArIENPT0tJRV9FWFBJUkFUSU9OX01TXG5cbiAgICAgIC8vIFNjaGVkdWxlIHJlZnJlc2ggYmVmb3JlIGV4cGlyYXRpb25cbiAgICAgIHRoaXMuc2NoZWR1bGVSZWZyZXNoKClcblxuICAgICAgZGVmZXJyZWQucmVzb2x2ZSgpXG4gICAgICB0aGlzLmVtaXQoXCJyZWNlaXZlZFwiKVxuXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLndhcm4oXCJGYWlsZWQgdG8gZmV0Y2ggcHVzaCBsb2cgY3JlZGVudGlhbHNcIiwgZXJyKVxuICAgICAgZGVmZXJyZWQucmVqZWN0KGVycilcbiAgICAgIHRoaXMuY3JlZGVudGlhbERlZmVycmVkID0gbnVsbFxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNjaGVkdWxlIGEgY3JlZGVudGlhbCByZWZyZXNoIGJlZm9yZSBleHBpcmF0aW9uXG4gICAqL1xuICBwcml2YXRlIHNjaGVkdWxlUmVmcmVzaCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWZyZXNoVGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlZnJlc2hUaW1lcilcbiAgICB9XG5cbiAgICBjb25zdCByZWZyZXNoSW4gPSBDT09LSUVfRVhQSVJBVElPTl9NUyAtIENPT0tJRV9SRUZSRVNIX0JVRkZFUl9NU1xuICAgIHRoaXMucmVmcmVzaFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNyZWRlbnRpYWxEZWZlcnJlZCA9IG51bGxcbiAgICAgIHRoaXMuZmV0Y2hDcmVkZW50aWFscygpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgLy8gTG9nIGJ1dCBkb24ndCB0aHJvdyAtIHdpbGwgcmV0cnkgb24gbmV4dCByZXF1ZXN0XG4gICAgICAgIGxvZy5kZWJ1ZyhcIlNjaGVkdWxlZCBjcmVkZW50aWFsIHJlZnJlc2ggZmFpbGVkXCIpXG4gICAgICB9KVxuICAgIH0sIHJlZnJlc2hJbilcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhbiB1cCByZXNvdXJjZXNcbiAgICovXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVmcmVzaFRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5yZWZyZXNoVGltZXIpXG4gICAgICB0aGlzLnJlZnJlc2hUaW1lciA9IG51bGxcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jcmVkZW50aWFsRGVmZXJyZWQgJiYgIXRoaXMuY3JlZGVudGlhbERlZmVycmVkLmlzU2V0dGxlZCgpKSB7XG4gICAgICB0aGlzLmNyZWRlbnRpYWxEZWZlcnJlZC5yZWplY3QobmV3IEVycm9yKFwiQ3JlZGVudGlhbCBtYW5hZ2VyIGRlc3Ryb3llZFwiKSlcbiAgICB9XG5cbiAgICB0aGlzLmNyZWRlbnRpYWxEZWZlcnJlZCA9IG51bGxcbiAgICB0aGlzLmNvb2tpZUV4cGlyYXRpb25UaW1lID0gbnVsbFxuICB9XG59XG5cbi8qKlxuICogQXBwZW5kZXIgdGhhdCBwdXNoZXMgbG9nIHJlY29yZHMgdG8gYSByZW1vdGUgZW5kcG9pbnQgdmlhIEhUVFAgUFVULlxuICogQmF0Y2hlcyByZWNvcmRzIGFuZCBzZW5kcyB3aGVuIHF1ZXVlIHJlYWNoZXMgRkxVU0hfUVVFVUVfREVQVEggb3IgRkxVU0hfSU5URVJWQUxfTVMgaGFzIGVsYXBzZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBQdXNoTG9nUmVjb3Jkc0FwcGVuZGVyPFxuICBSZWNvcmQgZXh0ZW5kcyBMb2dSZWNvcmQgPSBMb2dSZWNvcmRcbj4gaW1wbGVtZW50cyBBcHBlbmRlcjxSZWNvcmQ+IHtcbiAgcHJpdmF0ZSBwZW5kaW5nUmVjb3JkczogTG9nUmVjb3JkW10gPSBbXVxuICBwcml2YXRlIGZsdXNoRGVmZXJyZWQ6IERlZmVycmVkPHZvaWQ+IHwgbnVsbCA9IG51bGxcbiAgcHJpdmF0ZSBmbHVzaFRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsXG5cbiAgcHVibGljIHJlYWRvbmx5IGNyZWRlbnRpYWxNYW5hZ2VyOiBQdXNoTG9nUmVjb3Jkc0NyZWRlbnRpYWxNYW5hZ2VyXG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGVuZHBvaW50VXJsOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNyZWRlbnRpYWxNYW5hZ2VyID0gbmV3IFB1c2hMb2dSZWNvcmRzQ3JlZGVudGlhbE1hbmFnZXIoZW5kcG9pbnRVcmwpXG5cbiAgICB0aGlzLmNyZWRlbnRpYWxNYW5hZ2VyLm9uKFwicmVjZWl2ZWRcIiwgKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCB8fCB0aGlzLmZsdXNoRGVmZXJyZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICB0aGlzLmZsdXNoKCkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAvLyBFcnJvcnMgaGFuZGxlZCBpbiBmbHVzaFxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEFwcGVuZCBhIGxvZyByZWNvcmQgdG8gdGhlIHF1ZXVlXG4gICAqL1xuICBhcHBlbmQocmVjb3JkOiBSZWNvcmQpOiB2b2lkIHtcbiAgICAvLyBBZGQgdGhlIHJlY29yZCB3aXRoIGVucmljaGVkIG1ldGFkYXRhXG4gICAgdGhpcy5wZW5kaW5nUmVjb3Jkcy5wdXNoKHtcbiAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSxcbiAgICAgIC4uLnJlY29yZCxcbiAgICAgIGFwcDogcmVjb3JkLmFwcCAmJiByZWNvcmQuYXBwLmxlbmd0aCA+IDAgPyByZWNvcmQuYXBwIDogXCJVTktOT1dOXCIsXG4gICAgICBlbnY6IHJlY29yZC5lbnYgJiYgcmVjb3JkLmVudi5sZW5ndGggPiAwID8gcmVjb3JkLmVudiA6IFwiVU5LTk9XTlwiLFxuICAgICAgdXJsOiB0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiID8gXCJsb2NhbDovL1wiIDogd2luZG93LmxvY2F0aW9uLmhyZWZcbiAgICB9KVxuICAgIHRoaXMudHJpbVBlbmRpbmdSZWNvcmRzVG9RdWV1ZUNhcCgpXG5cbiAgICAvLyBDaGVjayBpZiB3ZSBzaG91bGQgZmx1c2ggaW1tZWRpYXRlbHkgZHVlIHRvIHF1ZXVlIGRlcHRoXG4gICAgaWYgKHRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoID49IEZMVVNIX1FVRVVFX0RFUFRIKSB7XG4gICAgICB0aGlzLmZsdXNoKCkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAvLyBFcnJvcnMgaGFuZGxlZCBpbiBmbHVzaFxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU2NoZWR1bGUgYSBmbHVzaCBpZiBub3QgYWxyZWFkeSBzY2hlZHVsZWRcbiAgICAgIHRoaXMuc2NoZWR1bGVGbHVzaCgpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNjaGVkdWxlIGEgZmx1c2ggYWZ0ZXIgdGhlIGludGVydmFsXG4gICAqL1xuICBwcml2YXRlIHNjaGVkdWxlRmx1c2goKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmx1c2hUaW1lcikge1xuICAgICAgcmV0dXJuIC8vIEFscmVhZHkgc2NoZWR1bGVkXG4gICAgfVxuXG4gICAgdGhpcy5mbHVzaFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmZsdXNoVGltZXIgPSBudWxsXG4gICAgICB0aGlzLmZsdXNoKCkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAvLyBFcnJvcnMgaGFuZGxlZCBpbiBmbHVzaFxuICAgICAgfSlcbiAgICB9LCBGTFVTSF9JTlRFUlZBTF9NUylcbiAgfVxuXG4gIC8qKlxuICAgKiBGbHVzaCBwZW5kaW5nIHJlY29yZHMgdG8gdGhlIGVuZHBvaW50XG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGZsdXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIFByZXZlbnQgY29uY3VycmVudCBmbHVzaGVzXG4gICAgaWYgKHRoaXMuZmx1c2hEZWZlcnJlZCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmx1c2hEZWZlcnJlZC5wcm9taXNlXG4gICAgfVxuXG4gICAgLy8gTm90aGluZyB0byBmbHVzaFxuICAgIGlmICghdGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGgpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIEVuc3VyZSB3ZSBoYXZlIHZhbGlkIGNyZWRlbnRpYWxzXG4gICAgY29uc3QgaGFzQ3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLmNyZWRlbnRpYWxNYW5hZ2VyLmVuc3VyZUNyZWRlbnRpYWxzKClcbiAgICBpZiAoIWhhc0NyZWRlbnRpYWxzKSB7XG4gICAgICBsb2cuZGVidWcoXCJGYWlsZWQgdG8gcHVzaCBsb2cgcmVjb3Jkc1wiLCBcIk5vIHZhbGlkIGNyZWRlbnRpYWxzIGF2YWlsYWJsZVwiKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgZGVmZXJyZWQgPSAodGhpcy5mbHVzaERlZmVycmVkID0gbmV3IERlZmVycmVkPHZvaWQ+KCkpXG5cbiAgICB0cnkge1xuICAgICAgLy8gVGFrZSBhbGwgcGVuZGluZyByZWNvcmRzIGZvciB0aGlzIGZsdXNoXG4gICAgICBjb25zdCByZWNvcmRzID0gdGhpcy5wZW5kaW5nUmVjb3Jkcy5zcGxpY2UoMCwgdGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGgpXG4gICAgICBjb25zdCBwYXlsb2FkID0geyByZWNvcmRzOiByZWNvcmRzLm1hcChyZWNvcmQgPT4gSlNPTi5zdHJpbmdpZnkocmVjb3JkKSkgfVxuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHRoaXMuZW5kcG9pbnRVcmwsIHtcbiAgICAgICAgbWV0aG9kOiBcIlBVVFwiLFxuICAgICAgICBtb2RlOiBcImNvcnNcIixcbiAgICAgICAgY3JlZGVudGlhbHM6IFwiaW5jbHVkZVwiLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCJcbiAgICAgICAgfSxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkocGF5bG9hZClcbiAgICAgIH0pXG5cbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgLy8gUmUtcXVldWUgcmVjb3JkcyBvbiBmYWlsdXJlXG4gICAgICAgIHRoaXMucGVuZGluZ1JlY29yZHMudW5zaGlmdCguLi5yZWNvcmRzKVxuICAgICAgICB0aGlzLnRyaW1QZW5kaW5nUmVjb3Jkc1RvUXVldWVDYXAoKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFB1c2ggZmFpbGVkIHdpdGggc3RhdHVzICR7cmVzcG9uc2Uuc3RhdHVzfWApXG4gICAgICB9XG5cbiAgICAgIGRlZmVycmVkLnJlc29sdmUoKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLmRlYnVnKFwiRmFpbGVkIHRvIHB1c2ggbG9nIHJlY29yZHNcIiwgZXJyKVxuICAgICAgZGVmZXJyZWQucmVqZWN0KGVycilcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5mbHVzaERlZmVycmVkID0gbnVsbFxuXG4gICAgICAvLyBJZiBtb3JlIHJlY29yZHMgYWNjdW11bGF0ZWQgZHVyaW5nIGZsdXNoLCBzY2hlZHVsZSBhbm90aGVyXG4gICAgICBpZiAodGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVGbHVzaCgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JjZSBhbiBpbW1lZGlhdGUgZmx1c2hcbiAgICovXG4gIGFzeW5jIGZvcmNlRmx1c2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuZmx1c2hUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZmx1c2hUaW1lcilcbiAgICAgIHRoaXMuZmx1c2hUaW1lciA9IG51bGxcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5mbHVzaCgpXG4gIH1cblxuICAvKipcbiAgICogRW5mb3JjZSB0aGUgcGVuZGluZyBxdWV1ZSBjYXAgYnkgZHJvcHBpbmcgdGhlIG9sZGVzdCByZWNvcmRzLlxuICAgKi9cbiAgcHJpdmF0ZSB0cmltUGVuZGluZ1JlY29yZHNUb1F1ZXVlQ2FwKCk6IHZvaWQge1xuICAgIGNvbnN0IHJlbW92ZUNvdW50ID0gdGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGggLSBMT0dfUVVFVUVfTUFYX1JFQ09SRFNcblxuICAgIGlmIChyZW1vdmVDb3VudCA+IDApIHtcbiAgICAgIHRoaXMucGVuZGluZ1JlY29yZHMuc3BsaWNlKDAsIHJlbW92ZUNvdW50KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhbiB1cCByZXNvdXJjZXNcbiAgICovXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmx1c2hUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZmx1c2hUaW1lcilcbiAgICAgIHRoaXMuZmx1c2hUaW1lciA9IG51bGxcbiAgICB9XG5cbiAgICB0aGlzLmNyZWRlbnRpYWxNYW5hZ2VyLmRlc3Ryb3koKVxuXG4gICAgaWYgKHRoaXMuZmx1c2hEZWZlcnJlZCAmJiAhdGhpcy5mbHVzaERlZmVycmVkLmlzU2V0dGxlZCgpKSB7XG4gICAgICB0aGlzLmZsdXNoRGVmZXJyZWQucmVqZWN0KG5ldyBFcnJvcihcIkFwcGVuZGVyIGRlc3Ryb3llZFwiKSlcbiAgICB9XG5cbiAgICB0aGlzLmZsdXNoRGVmZXJyZWQgPSBudWxsXG4gICAgdGhpcy5wZW5kaW5nUmVjb3JkcyA9IFtdXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUHVzaExvZ1JlY29yZHNBcHBlbmRlclxuIl19
|