@pipeline-builder/api-core 3.2.5 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,23 +1,18 @@
1
1
  import type { Request, Response } from 'express';
2
2
  /**
3
- * Apply access control to a filter object.
3
+ * Apply access control to a read-filter.
4
4
  *
5
- * Non-system-admins are restricted to 'private' (org-scoped) resources.
6
- * System admins see all access modifiers.
5
+ * Pass-through: forwards the caller's filter unchanged. Multi-tenant access
6
+ * scoping is handled in the query builder (`AccessControlQueryBuilder`),
7
+ * which combines the caller's `orgId` with `accessModifier` to return:
8
+ * caller's org rows + system-org public rows by default.
7
9
  *
8
- * @param filter - Query filter to modify
9
- * @param req - Express request (used to check admin status)
10
- * @returns Filter with accessModifier applied for non-admins
11
- *
12
- * @example
13
- * ```typescript
14
- * const effectiveFilter = applyAccessControl(filter, req);
15
- * const results = await service.find(effectiveFilter, orgId);
16
- * ```
10
+ * Kept as a stable wrapper so route handlers retain a single, named hook
11
+ * for future per-route policy adjustments.
17
12
  */
18
13
  export declare function applyAccessControl<T extends {
19
14
  accessModifier?: string;
20
- }>(filter: T, req: Request): T;
15
+ }>(filter: T, _req: Request): T;
21
16
  /**
22
17
  * Check whether a non-admin user may modify a public resource.
23
18
  *
@@ -9,25 +9,18 @@ const error_codes_1 = require("../types/error-codes");
9
9
  const pipeline_1 = require("../types/pipeline");
10
10
  const response_1 = require("../utils/response");
11
11
  /**
12
- * Apply access control to a filter object.
12
+ * Apply access control to a read-filter.
13
13
  *
14
- * Non-system-admins are restricted to 'private' (org-scoped) resources.
15
- * System admins see all access modifiers.
14
+ * Pass-through: forwards the caller's filter unchanged. Multi-tenant access
15
+ * scoping is handled in the query builder (`AccessControlQueryBuilder`),
16
+ * which combines the caller's `orgId` with `accessModifier` to return:
17
+ * caller's org rows + system-org public rows by default.
16
18
  *
17
- * @param filter - Query filter to modify
18
- * @param req - Express request (used to check admin status)
19
- * @returns Filter with accessModifier applied for non-admins
20
- *
21
- * @example
22
- * ```typescript
23
- * const effectiveFilter = applyAccessControl(filter, req);
24
- * const results = await service.find(effectiveFilter, orgId);
25
- * ```
19
+ * Kept as a stable wrapper so route handlers retain a single, named hook
20
+ * for future per-route policy adjustments.
26
21
  */
27
- function applyAccessControl(filter, req) {
28
- return !(0, auth_1.isSystemAdmin)(req)
29
- ? { ...filter, accessModifier: pipeline_1.AccessModifier.PRIVATE }
30
- : filter;
22
+ function applyAccessControl(filter, _req) {
23
+ return filter;
31
24
  }
32
25
  /**
33
26
  * Check whether a non-admin user may modify a public resource.
@@ -53,4 +46,4 @@ function requirePublicAccess(req, res, resource) {
53
46
  }
54
47
  return true;
55
48
  }
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaGVscGVycy9hY2Nlc3MtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHNDQUFzQzs7QUF3QnRDLGdEQU9DO0FBbUJELGtEQWVDO0FBOURELDZDQUFtRDtBQUNuRCxzREFBaUQ7QUFDakQsZ0RBQW1EO0FBQ25ELGdEQUE4QztBQUU5Qzs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxTQUFnQixrQkFBa0IsQ0FDaEMsTUFBUyxFQUNULEdBQVk7SUFFWixPQUFPLENBQUMsSUFBQSxvQkFBYSxFQUFDLEdBQUcsQ0FBQztRQUN4QixDQUFDLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxjQUFjLEVBQUUseUJBQWMsQ0FBQyxPQUFPLEVBQUU7UUFDdkQsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNiLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILFNBQWdCLG1CQUFtQixDQUNqQyxHQUFZLEVBQ1osR0FBYSxFQUNiLFFBQXFDO0lBRXJDLElBQUksQ0FBQyxJQUFBLG9CQUFhLEVBQUMsR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDLGNBQWMsS0FBSyx5QkFBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlFLElBQUEsb0JBQVMsRUFDUCxHQUFHLEVBQ0gsR0FBRyxFQUNILGlEQUFpRCxFQUNqRCx1QkFBUyxDQUFDLHdCQUF3QixDQUNuQyxDQUFDO1FBQ0YsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB0eXBlIHsgUmVxdWVzdCwgUmVzcG9uc2UgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IGlzU3lzdGVtQWRtaW4gfSBmcm9tICcuLi9taWRkbGV3YXJlL2F1dGgnO1xuaW1wb3J0IHsgRXJyb3JDb2RlIH0gZnJvbSAnLi4vdHlwZXMvZXJyb3ItY29kZXMnO1xuaW1wb3J0IHsgQWNjZXNzTW9kaWZpZXIgfSBmcm9tICcuLi90eXBlcy9waXBlbGluZSc7XG5pbXBvcnQgeyBzZW5kRXJyb3IgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZSc7XG5cbi8qKlxuICogQXBwbHkgYWNjZXNzIGNvbnRyb2wgdG8gYSBmaWx0ZXIgb2JqZWN0LlxuICpcbiAqIE5vbi1zeXN0ZW0tYWRtaW5zIGFyZSByZXN0cmljdGVkIHRvICdwcml2YXRlJyAob3JnLXNjb3BlZCkgcmVzb3VyY2VzLlxuICogU3lzdGVtIGFkbWlucyBzZWUgYWxsIGFjY2VzcyBtb2RpZmllcnMuXG4gKlxuICogQHBhcmFtIGZpbHRlciAtIFF1ZXJ5IGZpbHRlciB0byBtb2RpZnlcbiAqIEBwYXJhbSByZXEgLSBFeHByZXNzIHJlcXVlc3QgKHVzZWQgdG8gY2hlY2sgYWRtaW4gc3RhdHVzKVxuICogQHJldHVybnMgRmlsdGVyIHdpdGggYWNjZXNzTW9kaWZpZXIgYXBwbGllZCBmb3Igbm9uLWFkbWluc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBlZmZlY3RpdmVGaWx0ZXIgPSBhcHBseUFjY2Vzc0NvbnRyb2woZmlsdGVyLCByZXEpO1xuICogY29uc3QgcmVzdWx0cyA9IGF3YWl0IHNlcnZpY2UuZmluZChlZmZlY3RpdmVGaWx0ZXIsIG9yZ0lkKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlBY2Nlc3NDb250cm9sPFQgZXh0ZW5kcyB7IGFjY2Vzc01vZGlmaWVyPzogc3RyaW5nIH0+KFxuICBmaWx0ZXI6IFQsXG4gIHJlcTogUmVxdWVzdCxcbik6IFQge1xuICByZXR1cm4gIWlzU3lzdGVtQWRtaW4ocmVxKVxuICAgID8geyAuLi5maWx0ZXIsIGFjY2Vzc01vZGlmaWVyOiBBY2Nlc3NNb2RpZmllci5QUklWQVRFIH1cbiAgICA6IGZpbHRlcjtcbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIGEgbm9uLWFkbWluIHVzZXIgbWF5IG1vZGlmeSBhIHB1YmxpYyByZXNvdXJjZS5cbiAqXG4gKiBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgcmVxdWVzdCBtYXkgcHJvY2VlZC4gUmV0dXJucyBgZmFsc2VgIGFuZCBzZW5kc1xuICogYSA0MDMgcmVzcG9uc2UgaWYgdGhlIHVzZXIgbGFja3MgcGVybWlzc2lvbi5cbiAqXG4gKiBAcGFyYW0gcmVxIC0gRXhwcmVzcyByZXF1ZXN0XG4gKiBAcGFyYW0gcmVzIC0gRXhwcmVzcyByZXNwb25zZVxuICogQHBhcmFtIHJlc291cmNlIC0gUmVzb3VyY2Ugd2l0aCBhbiBhY2Nlc3NNb2RpZmllciBmaWVsZFxuICogQHJldHVybnMgYHRydWVgIGlmIGFjY2VzcyBpcyBhbGxvd2VkLCBgZmFsc2VgIGlmIGJsb2NrZWQgKHJlc3BvbnNlIGFscmVhZHkgc2VudClcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaWYgKCFyZXF1aXJlUHVibGljQWNjZXNzKHJlcSwgcmVzLCBwaXBlbGluZSkpIHJldHVybjtcbiAqIGF3YWl0IHBpcGVsaW5lU2VydmljZS5kZWxldGUoaWQsIG9yZ0lkLCB1c2VySWQpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlUHVibGljQWNjZXNzKFxuICByZXE6IFJlcXVlc3QsXG4gIHJlczogUmVzcG9uc2UsXG4gIHJlc291cmNlOiB7IGFjY2Vzc01vZGlmaWVyPzogc3RyaW5nIH0sXG4pOiBib29sZWFuIHtcbiAgaWYgKCFpc1N5c3RlbUFkbWluKHJlcSkgJiYgcmVzb3VyY2UuYWNjZXNzTW9kaWZpZXIgIT09IEFjY2Vzc01vZGlmaWVyLlBSSVZBVEUpIHtcbiAgICBzZW5kRXJyb3IoXG4gICAgICByZXMsXG4gICAgICA0MDMsXG4gICAgICAnT25seSBzeXN0ZW0gYWRtaW5zIGNhbiBtb2RpZnkgcHVibGljIHJlc291cmNlcy4nLFxuICAgICAgRXJyb3JDb2RlLklOU1VGRklDSUVOVF9QRVJNSVNTSU9OUyxcbiAgICApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbiJdfQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaGVscGVycy9hY2Nlc3MtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHNDQUFzQzs7QUFtQnRDLGdEQUtDO0FBbUJELGtEQWVDO0FBdkRELDZDQUFtRDtBQUNuRCxzREFBaUQ7QUFDakQsZ0RBQW1EO0FBQ25ELGdEQUE4QztBQUU5Qzs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQ2hDLE1BQVMsRUFDVCxJQUFhO0lBRWIsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQ2pDLEdBQVksRUFDWixHQUFhLEVBQ2IsUUFBcUM7SUFFckMsSUFBSSxDQUFDLElBQUEsb0JBQWEsRUFBQyxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsY0FBYyxLQUFLLHlCQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDOUUsSUFBQSxvQkFBUyxFQUNQLEdBQUcsRUFDSCxHQUFHLEVBQ0gsaURBQWlELEVBQ2pELHVCQUFTLENBQUMsd0JBQXdCLENBQ25DLENBQUM7UUFDRixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBSZXF1ZXN0LCBSZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgaXNTeXN0ZW1BZG1pbiB9IGZyb20gJy4uL21pZGRsZXdhcmUvYXV0aCc7XG5pbXBvcnQgeyBFcnJvckNvZGUgfSBmcm9tICcuLi90eXBlcy9lcnJvci1jb2Rlcyc7XG5pbXBvcnQgeyBBY2Nlc3NNb2RpZmllciB9IGZyb20gJy4uL3R5cGVzL3BpcGVsaW5lJztcbmltcG9ydCB7IHNlbmRFcnJvciB9IGZyb20gJy4uL3V0aWxzL3Jlc3BvbnNlJztcblxuLyoqXG4gKiBBcHBseSBhY2Nlc3MgY29udHJvbCB0byBhIHJlYWQtZmlsdGVyLlxuICpcbiAqIFBhc3MtdGhyb3VnaDogZm9yd2FyZHMgdGhlIGNhbGxlcidzIGZpbHRlciB1bmNoYW5nZWQuIE11bHRpLXRlbmFudCBhY2Nlc3NcbiAqIHNjb3BpbmcgaXMgaGFuZGxlZCBpbiB0aGUgcXVlcnkgYnVpbGRlciAoYEFjY2Vzc0NvbnRyb2xRdWVyeUJ1aWxkZXJgKSxcbiAqIHdoaWNoIGNvbWJpbmVzIHRoZSBjYWxsZXIncyBgb3JnSWRgIHdpdGggYGFjY2Vzc01vZGlmaWVyYCB0byByZXR1cm46XG4gKiBjYWxsZXIncyBvcmcgcm93cyArIHN5c3RlbS1vcmcgcHVibGljIHJvd3MgYnkgZGVmYXVsdC5cbiAqXG4gKiBLZXB0IGFzIGEgc3RhYmxlIHdyYXBwZXIgc28gcm91dGUgaGFuZGxlcnMgcmV0YWluIGEgc2luZ2xlLCBuYW1lZCBob29rXG4gKiBmb3IgZnV0dXJlIHBlci1yb3V0ZSBwb2xpY3kgYWRqdXN0bWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUFjY2Vzc0NvbnRyb2w8VCBleHRlbmRzIHsgYWNjZXNzTW9kaWZpZXI/OiBzdHJpbmcgfT4oXG4gIGZpbHRlcjogVCxcbiAgX3JlcTogUmVxdWVzdCxcbik6IFQge1xuICByZXR1cm4gZmlsdGVyO1xufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgYSBub24tYWRtaW4gdXNlciBtYXkgbW9kaWZ5IGEgcHVibGljIHJlc291cmNlLlxuICpcbiAqIFJldHVybnMgYHRydWVgIGlmIHRoZSByZXF1ZXN0IG1heSBwcm9jZWVkLiBSZXR1cm5zIGBmYWxzZWAgYW5kIHNlbmRzXG4gKiBhIDQwMyByZXNwb25zZSBpZiB0aGUgdXNlciBsYWNrcyBwZXJtaXNzaW9uLlxuICpcbiAqIEBwYXJhbSByZXEgLSBFeHByZXNzIHJlcXVlc3RcbiAqIEBwYXJhbSByZXMgLSBFeHByZXNzIHJlc3BvbnNlXG4gKiBAcGFyYW0gcmVzb3VyY2UgLSBSZXNvdXJjZSB3aXRoIGFuIGFjY2Vzc01vZGlmaWVyIGZpZWxkXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgYWNjZXNzIGlzIGFsbG93ZWQsIGBmYWxzZWAgaWYgYmxvY2tlZCAocmVzcG9uc2UgYWxyZWFkeSBzZW50KVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpZiAoIXJlcXVpcmVQdWJsaWNBY2Nlc3MocmVxLCByZXMsIHBpcGVsaW5lKSkgcmV0dXJuO1xuICogYXdhaXQgcGlwZWxpbmVTZXJ2aWNlLmRlbGV0ZShpZCwgb3JnSWQsIHVzZXJJZCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVQdWJsaWNBY2Nlc3MoXG4gIHJlcTogUmVxdWVzdCxcbiAgcmVzOiBSZXNwb25zZSxcbiAgcmVzb3VyY2U6IHsgYWNjZXNzTW9kaWZpZXI/OiBzdHJpbmcgfSxcbik6IGJvb2xlYW4ge1xuICBpZiAoIWlzU3lzdGVtQWRtaW4ocmVxKSAmJiByZXNvdXJjZS5hY2Nlc3NNb2RpZmllciAhPT0gQWNjZXNzTW9kaWZpZXIuUFJJVkFURSkge1xuICAgIHNlbmRFcnJvcihcbiAgICAgIHJlcyxcbiAgICAgIDQwMyxcbiAgICAgICdPbmx5IHN5c3RlbSBhZG1pbnMgY2FuIG1vZGlmeSBwdWJsaWMgcmVzb3VyY2VzLicsXG4gICAgICBFcnJvckNvZGUuSU5TVUZGSUNJRU5UX1BFUk1JU1NJT05TLFxuICAgICk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuIl19
@@ -1,14 +1,3 @@
1
- /**
2
- * Mask the middle digits of a sensitive identifier.
3
- * Preserves the first and last `visible` characters, replacing the rest with asterisks.
4
- *
5
- * @param value - The string to mask
6
- * @param visible - Number of characters to keep visible on each side (default: 4)
7
- * @returns Masked string, or '****' if the input is too short
8
- *
9
- * @example maskId('123456789012') → '1234****9012'
10
- */
11
- export declare function maskId(value: string, visible?: number): string;
12
1
  /**
13
2
  * One-way hash of a sensitive identifier using SHA-256.
14
3
  * Returns a deterministic, fixed-length hex string that cannot be reversed.
@@ -2,25 +2,9 @@
2
2
  // Copyright 2026 Pipeline Builder Contributors
3
3
  // SPDX-License-Identifier: Apache-2.0
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.maskId = maskId;
6
5
  exports.hashId = hashId;
7
6
  exports.hashAccountInArn = hashAccountInArn;
8
7
  const crypto_1 = require("crypto");
9
- /**
10
- * Mask the middle digits of a sensitive identifier.
11
- * Preserves the first and last `visible` characters, replacing the rest with asterisks.
12
- *
13
- * @param value - The string to mask
14
- * @param visible - Number of characters to keep visible on each side (default: 4)
15
- * @returns Masked string, or '****' if the input is too short
16
- *
17
- * @example maskId('123456789012') → '1234****9012'
18
- */
19
- function maskId(value, visible = 4) {
20
- if (!value || value.length <= visible * 2)
21
- return '****';
22
- return value.slice(0, visible) + '*'.repeat(value.length - visible * 2) + value.slice(-visible);
23
- }
24
8
  /**
25
9
  * One-way hash of a sensitive identifier using SHA-256.
26
10
  * Returns a deterministic, fixed-length hex string that cannot be reversed.
@@ -51,4 +35,4 @@ function hashAccountInArn(arn) {
51
35
  parts[4] = hashId(parts[4]);
52
36
  return parts.join(':');
53
37
  }
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzay1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hlbHBlcnMvbWFzay1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDOztBQWN0Qyx3QkFHQztBQVlELHdCQUVDO0FBWUQsNENBS0M7QUE5Q0QsbUNBQW9DO0FBRXBDOzs7Ozs7Ozs7R0FTRztBQUNILFNBQWdCLE1BQU0sQ0FBQyxLQUFhLEVBQUUsT0FBTyxHQUFHLENBQUM7SUFDL0MsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLE9BQU8sR0FBRyxDQUFDO1FBQUUsT0FBTyxNQUFNLENBQUM7SUFDekQsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNsRyxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBZ0IsTUFBTSxDQUFDLEtBQWEsRUFBRSxNQUFNLEdBQUcsRUFBRTtJQUMvQyxPQUFPLElBQUEsbUJBQVUsRUFBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDM0UsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLEdBQVc7SUFDMUMsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUFFLE9BQU8sR0FBRyxDQUFDO0lBQzlDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ2NyeXB0byc7XG5cbi8qKlxuICogTWFzayB0aGUgbWlkZGxlIGRpZ2l0cyBvZiBhIHNlbnNpdGl2ZSBpZGVudGlmaWVyLlxuICogUHJlc2VydmVzIHRoZSBmaXJzdCBhbmQgbGFzdCBgdmlzaWJsZWAgY2hhcmFjdGVycywgcmVwbGFjaW5nIHRoZSByZXN0IHdpdGggYXN0ZXJpc2tzLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBzdHJpbmcgdG8gbWFza1xuICogQHBhcmFtIHZpc2libGUgLSBOdW1iZXIgb2YgY2hhcmFjdGVycyB0byBrZWVwIHZpc2libGUgb24gZWFjaCBzaWRlIChkZWZhdWx0OiA0KVxuICogQHJldHVybnMgTWFza2VkIHN0cmluZywgb3IgJyoqKionIGlmIHRoZSBpbnB1dCBpcyB0b28gc2hvcnRcbiAqXG4gKiBAZXhhbXBsZSBtYXNrSWQoJzEyMzQ1Njc4OTAxMicpIOKGkiAnMTIzNCoqKio5MDEyJ1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWFza0lkKHZhbHVlOiBzdHJpbmcsIHZpc2libGUgPSA0KTogc3RyaW5nIHtcbiAgaWYgKCF2YWx1ZSB8fCB2YWx1ZS5sZW5ndGggPD0gdmlzaWJsZSAqIDIpIHJldHVybiAnKioqKic7XG4gIHJldHVybiB2YWx1ZS5zbGljZSgwLCB2aXNpYmxlKSArICcqJy5yZXBlYXQodmFsdWUubGVuZ3RoIC0gdmlzaWJsZSAqIDIpICsgdmFsdWUuc2xpY2UoLXZpc2libGUpO1xufVxuXG4vKipcbiAqIE9uZS13YXkgaGFzaCBvZiBhIHNlbnNpdGl2ZSBpZGVudGlmaWVyIHVzaW5nIFNIQS0yNTYuXG4gKiBSZXR1cm5zIGEgZGV0ZXJtaW5pc3RpYywgZml4ZWQtbGVuZ3RoIGhleCBzdHJpbmcgdGhhdCBjYW5ub3QgYmUgcmV2ZXJzZWQuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHNlbnNpdGl2ZSB2YWx1ZSB0byBoYXNoIChlLmcuIEFXUyBhY2NvdW50IG51bWJlcilcbiAqIEBwYXJhbSBsZW5ndGggLSBOdW1iZXIgb2YgaGV4IGNoYXJhY3RlcnMgdG8gcmV0dXJuIChkZWZhdWx0OiAxMiwgbWF0Y2hpbmcgQVdTIGFjY291bnQgbGVuZ3RoKVxuICogQHJldHVybnMgVHJ1bmNhdGVkIFNIQS0yNTYgaGV4IGRpZ2VzdFxuICpcbiAqIEBleGFtcGxlIGhhc2hJZCgnMTIzNDU2Nzg5MDEyJykg4oaSICdhMWIyYzNkNGU1ZjYnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNoSWQodmFsdWU6IHN0cmluZywgbGVuZ3RoID0gMTIpOiBzdHJpbmcge1xuICByZXR1cm4gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHZhbHVlKS5kaWdlc3QoJ2hleCcpLnNsaWNlKDAsIGxlbmd0aCk7XG59XG5cbi8qKlxuICogUmVwbGFjZSB0aGUgQVdTIGFjY291bnQgbnVtYmVyIGluIGFuIEFSTiB3aXRoIGl0cyBTSEEtMjU2IGhhc2guXG4gKiBCb3RoIHRoZSBkZXBsb3kgcmVnaXN0cmF0aW9uIGFuZCBldmVudCBpbmdlc3Rpb24gc2lkZXMgY2FsbCB0aGlzIGZ1bmN0aW9uLFxuICogc28gcmVnaXN0cnkgbG9va3VwcyBzdGlsbCBtYXRjaCDigJQgdGhlIHJlYWwgYWNjb3VudCBuZXZlciByZWFjaGVzIHRoZSBkYXRhYmFzZS5cbiAqXG4gKiBBUk4gZm9ybWF0OiBgYXJuOnBhcnRpdGlvbjpzZXJ2aWNlOnJlZ2lvbjphY2NvdW50OnJlc291cmNlYFxuICpcbiAqIEBleGFtcGxlIGhhc2hBY2NvdW50SW5Bcm4oJ2Fybjphd3M6Y29kZXBpcGVsaW5lOnVzLWVhc3QtMToxMjM0NTY3ODkwMTI6bXktcGlwZWxpbmUnKVxuICogICDihpIgJ2Fybjphd3M6Y29kZXBpcGVsaW5lOnVzLWVhc3QtMTphMWIyYzNkNGU1ZjY6bXktcGlwZWxpbmUnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNoQWNjb3VudEluQXJuKGFybjogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgcGFydHMgPSBhcm4uc3BsaXQoJzonKTtcbiAgaWYgKHBhcnRzLmxlbmd0aCA8IDUgfHwgIXBhcnRzWzRdKSByZXR1cm4gYXJuO1xuICBwYXJ0c1s0XSA9IGhhc2hJZChwYXJ0c1s0XSk7XG4gIHJldHVybiBwYXJ0cy5qb2luKCc6Jyk7XG59XG4iXX0=
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzay1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hlbHBlcnMvbWFzay1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDOztBQWN0Qyx3QkFFQztBQVlELDRDQUtDO0FBL0JELG1DQUFvQztBQUVwQzs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixNQUFNLENBQUMsS0FBYSxFQUFFLE1BQU0sR0FBRyxFQUFFO0lBQy9DLE9BQU8sSUFBQSxtQkFBVSxFQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMzRSxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsR0FBVztJQUMxQyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFDOUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSAnY3J5cHRvJztcblxuLyoqXG4gKiBPbmUtd2F5IGhhc2ggb2YgYSBzZW5zaXRpdmUgaWRlbnRpZmllciB1c2luZyBTSEEtMjU2LlxuICogUmV0dXJucyBhIGRldGVybWluaXN0aWMsIGZpeGVkLWxlbmd0aCBoZXggc3RyaW5nIHRoYXQgY2Fubm90IGJlIHJldmVyc2VkLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBzZW5zaXRpdmUgdmFsdWUgdG8gaGFzaCAoZS5nLiBBV1MgYWNjb3VudCBudW1iZXIpXG4gKiBAcGFyYW0gbGVuZ3RoIC0gTnVtYmVyIG9mIGhleCBjaGFyYWN0ZXJzIHRvIHJldHVybiAoZGVmYXVsdDogMTIsIG1hdGNoaW5nIEFXUyBhY2NvdW50IGxlbmd0aClcbiAqIEByZXR1cm5zIFRydW5jYXRlZCBTSEEtMjU2IGhleCBkaWdlc3RcbiAqXG4gKiBAZXhhbXBsZSBoYXNoSWQoJzEyMzQ1Njc4OTAxMicpIOKGkiAnYTFiMmMzZDRlNWY2J1xuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzaElkKHZhbHVlOiBzdHJpbmcsIGxlbmd0aCA9IDEyKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZSh2YWx1ZSkuZGlnZXN0KCdoZXgnKS5zbGljZSgwLCBsZW5ndGgpO1xufVxuXG4vKipcbiAqIFJlcGxhY2UgdGhlIEFXUyBhY2NvdW50IG51bWJlciBpbiBhbiBBUk4gd2l0aCBpdHMgU0hBLTI1NiBoYXNoLlxuICogQm90aCB0aGUgZGVwbG95IHJlZ2lzdHJhdGlvbiBhbmQgZXZlbnQgaW5nZXN0aW9uIHNpZGVzIGNhbGwgdGhpcyBmdW5jdGlvbixcbiAqIHNvIHJlZ2lzdHJ5IGxvb2t1cHMgc3RpbGwgbWF0Y2gg4oCUIHRoZSByZWFsIGFjY291bnQgbmV2ZXIgcmVhY2hlcyB0aGUgZGF0YWJhc2UuXG4gKlxuICogQVJOIGZvcm1hdDogYGFybjpwYXJ0aXRpb246c2VydmljZTpyZWdpb246YWNjb3VudDpyZXNvdXJjZWBcbiAqXG4gKiBAZXhhbXBsZSBoYXNoQWNjb3VudEluQXJuKCdhcm46YXdzOmNvZGVwaXBlbGluZTp1cy1lYXN0LTE6MTIzNDU2Nzg5MDEyOm15LXBpcGVsaW5lJylcbiAqICAg4oaSICdhcm46YXdzOmNvZGVwaXBlbGluZTp1cy1lYXN0LTE6YTFiMmMzZDRlNWY2Om15LXBpcGVsaW5lJ1xuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzaEFjY291bnRJbkFybihhcm46IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHBhcnRzID0gYXJuLnNwbGl0KCc6Jyk7XG4gIGlmIChwYXJ0cy5sZW5ndGggPCA1IHx8ICFwYXJ0c1s0XSkgcmV0dXJuIGFybjtcbiAgcGFydHNbNF0gPSBoYXNoSWQocGFydHNbNF0pO1xuICByZXR1cm4gcGFydHMuam9pbignOicpO1xufVxuIl19
@@ -1,6 +1,5 @@
1
1
  import * as http from 'http';
2
2
  import { ServiceConfig } from '../types/common';
3
- export { parseRetryAfter, addJitter } from './retry-strategy';
4
3
  /**
5
4
  * HTTP request options.
6
5
  */
@@ -35,16 +35,12 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  };
36
36
  })();
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
- exports.InternalHttpClient = exports.addJitter = exports.parseRetryAfter = void 0;
38
+ exports.InternalHttpClient = void 0;
39
39
  exports.createSafeClient = createSafeClient;
40
40
  const http = __importStar(require("http"));
41
41
  const retry_strategy_1 = require("./retry-strategy");
42
42
  const http_status_1 = require("../constants/http-status");
43
43
  const logger_1 = require("../utils/logger");
44
- // Re-export retry utilities for backward compatibility
45
- var retry_strategy_2 = require("./retry-strategy");
46
- Object.defineProperty(exports, "parseRetryAfter", { enumerable: true, get: function () { return retry_strategy_2.parseRetryAfter; } });
47
- Object.defineProperty(exports, "addJitter", { enumerable: true, get: function () { return retry_strategy_2.addJitter; } });
48
44
  const logger = (0, logger_1.createLogger)('http-client');
49
45
  /**
50
46
  * Default request timeout in milliseconds (env: `HTTP_CLIENT_TIMEOUT`).
@@ -282,4 +278,4 @@ function createSafeClient(config) {
282
278
  },
283
279
  };
284
280
  }
285
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvaHR0cC1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdTdEMsNENBZ0RDO0FBOVVELDJDQUE2QjtBQUM3QixxREFPMEI7QUFDMUIsMERBQXNEO0FBRXRELDRDQUErQztBQUUvQyx1REFBdUQ7QUFDdkQsbURBQThEO0FBQXJELGlIQUFBLGVBQWUsT0FBQTtBQUFFLDJHQUFBLFNBQVMsT0FBQTtBQUVuQyxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEVBQUMsYUFBYSxDQUFDLENBQUM7QUFFM0M7O0dBRUc7QUFDSCxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsSUFBSSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFnQ2hGOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBYSxrQkFBa0I7SUFDckIsTUFBTSxDQUEwQjtJQUNoQyxLQUFLLENBQWE7SUFFMUI7Ozs7T0FJRztJQUNILFlBQVksTUFBcUI7UUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNqQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7WUFDakIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLElBQUksZUFBZTtTQUMzQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsR0FBRyxDQUFjLElBQVksRUFBRSxPQUF3QjtRQUMzRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBSSxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUNSLElBQVksRUFDWixJQUFjLEVBQ2QsT0FBd0I7UUFFeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUksTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLEdBQUcsQ0FDUCxJQUFZLEVBQ1osSUFBYyxFQUNkLE9BQXdCO1FBRXhCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFJLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQWMsSUFBWSxFQUFFLE9BQXdCO1FBQzlELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFJLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNLLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDNUIsTUFBYyxFQUNkLElBQVksRUFDWixJQUFjLEVBQ2QsT0FBd0I7UUFFeEIsTUFBTSxXQUFXLEdBQWdCO1lBQy9CLFVBQVUsRUFBRSxPQUFPLEVBQUUsVUFBVSxJQUFJLG9DQUFtQjtZQUN0RCxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLElBQUksK0NBQThCO1lBQ25GLFlBQVksRUFBRSxPQUFPLEVBQUUsWUFBWSxJQUFJLHVDQUFzQjtTQUM5RCxDQUFDO1FBQ0YsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFM0YsSUFBSSxTQUE0QixDQUFDO1FBRWpDLEtBQUssSUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFFLE9BQU8sSUFBSSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQzdELElBQUksQ0FBQztnQkFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUksTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBRXBFLE1BQU0sUUFBUSxHQUFHLElBQUEsaUNBQWdCLEVBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFDL0YsSUFBSSxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3pCLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztvQkFDaEgsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDbkMsU0FBUztnQkFDWCxDQUFDO2dCQUVELE9BQU8sUUFBUSxDQUFDO1lBQ2xCLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLFNBQVMsR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUV0RSxNQUFNLFFBQVEsR0FBRyxJQUFBLHNDQUFxQixFQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3pCLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDdkcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDbkMsU0FBUztnQkFDWCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLFNBQVUsQ0FBQztJQUNuQixDQUFDO0lBRU8sS0FBSyxDQUFDLEVBQVU7UUFDdEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxPQUFPLENBQ2IsTUFBYyxFQUNkLElBQVksRUFDWixJQUFjLEVBQ2QsT0FBd0I7UUFFeEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUV4RCxNQUFNLE9BQU8sR0FBNkI7Z0JBQ3hDLGNBQWMsRUFBRSxrQkFBa0I7Z0JBQ2xDLEdBQUcsT0FBTyxFQUFFLE9BQU87YUFDcEIsQ0FBQztZQUVGLCtDQUErQztZQUMvQyxJQUFJLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQztnQkFDdkIsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7WUFDOUMsQ0FBQztZQUVELElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osT0FBTyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6RCxDQUFDO1lBRUQsa0VBQWtFO1lBQ2xFLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDM0UsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNuRCxDQUFDO1lBRUQsTUFBTSxjQUFjLEdBQXdCO2dCQUMxQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJO2dCQUMxQixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJO2dCQUN0QixJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDOUMsTUFBTTtnQkFDTixPQUFPO2dCQUNQLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztnQkFDaEQsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2FBQ2xCLENBQUM7WUFFRixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUMvQyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBRWQsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDdkIsSUFBSSxJQUFJLEtBQUssQ0FBQztnQkFDaEIsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFO29CQUNqQixJQUFJLENBQUM7d0JBQ0gsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQ2hELE9BQU8sQ0FBQzs0QkFDTixVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVUsSUFBSSx3QkFBVSxDQUFDLHFCQUFxQjs0QkFDOUQsSUFBSSxFQUFFLFVBQWU7NEJBQ3JCLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTzt5QkFDckIsQ0FBQyxDQUFDO29CQUNMLENBQUM7b0JBQUMsT0FBTyxVQUFVLEVBQUUsQ0FBQzt3QkFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQywrQkFBK0IsRUFBRTs0QkFDM0MsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSTs0QkFDdEIsSUFBSTs0QkFDSixLQUFLLEVBQUUsVUFBVSxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQzt5QkFDN0UsQ0FBQyxDQUFDO3dCQUNILE9BQU8sQ0FBQzs0QkFDTixVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVUsSUFBSSx3QkFBVSxDQUFDLHFCQUFxQjs0QkFDOUQsSUFBSSxFQUFFLEVBQU87NEJBQ2IsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO3lCQUNyQixDQUFDLENBQUM7b0JBQ0wsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBRUgsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDeEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRTtvQkFDbEMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSTtvQkFDdEIsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSTtvQkFDdEIsSUFBSTtvQkFDSixNQUFNO29CQUNOLEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTztpQkFDckIsQ0FBQyxDQUFDO2dCQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQixDQUFDLENBQUMsQ0FBQztZQUVILEdBQUcsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtnQkFDckIsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNkLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLHlCQUF5QixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUM7Z0JBQzFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7b0JBQ2xDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7b0JBQ3RCLElBQUk7b0JBQ0osT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztpQkFDN0IsQ0FBQyxDQUFDO2dCQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQixDQUFDLENBQUMsQ0FBQztZQUVILElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyQixDQUFDO1lBRUQsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFqTkQsZ0RBaU5DO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsTUFBcUI7SUFDcEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUU5QyxPQUFPO1FBQ0w7O1dBRUc7UUFDSCxLQUFLLENBQUMsR0FBRyxDQUFJLElBQVksRUFBRSxPQUF3QjtZQUNqRCxJQUFJLENBQUM7Z0JBQ0gsT0FBTyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUksSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzVDLENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNiLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ25ILE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFFRDs7V0FFRztRQUNILEtBQUssQ0FBQyxJQUFJLENBQ1IsSUFBWSxFQUNaLElBQWMsRUFDZCxPQUF3QjtZQUV4QixJQUFJLENBQUM7Z0JBQ0gsT0FBTyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUksSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNuRCxDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDYixNQUFNLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNwSCxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBRUQ7O1dBRUc7UUFDSCxLQUFLLENBQUMsR0FBRyxDQUNQLElBQVksRUFDWixJQUFjLEVBQ2QsT0FBd0I7WUFFeEIsSUFBSSxDQUFDO2dCQUNILE9BQU8sTUFBTSxNQUFNLENBQUMsR0FBRyxDQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDbEQsQ0FBQztZQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDbkgsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCAqIGFzIGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQge1xuICBERUZBVUxUX01BWF9SRVRSSUVTLFxuICBERUZBVUxUX1JFVFJZX0RFTEFZX01TLFxuICBERUZBVUxUX01BWF9SQVRFX0xJTUlUX1JFVFJJRVMsXG4gIGdldFJldHJ5RGVjaXNpb24sXG4gIGdldEVycm9yUmV0cnlEZWNpc2lvbixcbiAgUmV0cnlDb25maWcsXG59IGZyb20gJy4vcmV0cnktc3RyYXRlZ3knO1xuaW1wb3J0IHsgSHR0cFN0YXR1cyB9IGZyb20gJy4uL2NvbnN0YW50cy9odHRwLXN0YXR1cyc7XG5pbXBvcnQgeyBTZXJ2aWNlQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMvY29tbW9uJztcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlcic7XG5cbi8vIFJlLWV4cG9ydCByZXRyeSB1dGlsaXRpZXMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbmV4cG9ydCB7IHBhcnNlUmV0cnlBZnRlciwgYWRkSml0dGVyIH0gZnJvbSAnLi9yZXRyeS1zdHJhdGVneSc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignaHR0cC1jbGllbnQnKTtcblxuLyoqXG4gKiBEZWZhdWx0IHJlcXVlc3QgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgKGVudjogYEhUVFBfQ0xJRU5UX1RJTUVPVVRgKS5cbiAqL1xuY29uc3QgREVGQVVMVF9USU1FT1VUID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuSFRUUF9DTElFTlRfVElNRU9VVCB8fCAnNTAwMCcsIDEwKTtcblxuLyoqXG4gKiBIVFRQIHJlcXVlc3Qgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0T3B0aW9ucyB7XG4gIC8qKiBSZXF1ZXN0IGhlYWRlcnMgKi9cbiAgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKiBSZXF1ZXN0IHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzICovXG4gIHRpbWVvdXQ/OiBudW1iZXI7XG4gIC8qKiBNYXhpbXVtIHJldHJ5IGF0dGVtcHRzIGZvciB0cmFuc2llbnQgZmFpbHVyZXMgKGRlZmF1bHQ6IDIpICovXG4gIG1heFJldHJpZXM/OiBudW1iZXI7XG4gIC8qKiBCYXNlIGRlbGF5IGJldHdlZW4gcmV0cmllcyBpbiBtcyDigJQgZG91YmxlcyBlYWNoIGF0dGVtcHQgKGRlZmF1bHQ6IDIwMCkgKi9cbiAgcmV0cnlEZWxheU1zPzogbnVtYmVyO1xuICAvKiogTWF4aW11bSByZXRyeSBhdHRlbXB0cyBzcGVjaWZpY2FsbHkgZm9yIDQyOSByYXRlIGxpbWl0aW5nIChkZWZhdWx0OiA0KSAqL1xuICBtYXhSYXRlTGltaXRSZXRyaWVzPzogbnVtYmVyO1xuICAvKiogT3B0aW9uYWwgcmVxdWVzdCBJRCBmb3IgZGlzdHJpYnV0ZWQgdHJhY2luZyAoYWRkZWQgYXMgWC1SZXF1ZXN0LUlkIGhlYWRlcikgKi9cbiAgcmVxdWVzdElkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEhUVFAgY2xpZW50IHJlc3BvbnNlIHdyYXBwZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cENsaWVudFJlc3BvbnNlPFQgPSB1bmtub3duPiB7XG4gIC8qKiBIVFRQIHN0YXR1cyBjb2RlICovXG4gIHN0YXR1c0NvZGU6IG51bWJlcjtcbiAgLyoqIFJlc3BvbnNlIGJvZHkgKHBhcnNlZCBKU09OKSAqL1xuICBib2R5OiBUO1xuICAvKiogUmVzcG9uc2UgaGVhZGVycyAqL1xuICBoZWFkZXJzOiBodHRwLkluY29taW5nSHR0cEhlYWRlcnM7XG59XG5cbi8qKlxuICogSW50ZXJuYWwgSFRUUCBjbGllbnQgZm9yIHNlcnZpY2UtdG8tc2VydmljZSBjb21tdW5pY2F0aW9uLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjbGllbnQgPSBuZXcgSW50ZXJuYWxIdHRwQ2xpZW50KHtcbiAqICAgaG9zdDogJ3F1b3RhJyxcbiAqICAgcG9ydDogMzAwMCxcbiAqICAgdGltZW91dDogNTAwMCxcbiAqIH0pO1xuICpcbiAqIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldCgnL29yZzEyMy9hcGlDYWxscycpO1xuICogY29uc3QgcmVzdWx0ID0gYXdhaXQgY2xpZW50LnBvc3QoJy9vcmcxMjMvaW5jcmVtZW50JywgeyBxdW90YVR5cGU6ICdhcGlDYWxscycgfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIEludGVybmFsSHR0cENsaWVudCB7XG4gIHByaXZhdGUgY29uZmlnOiBSZXF1aXJlZDxTZXJ2aWNlQ29uZmlnPjtcbiAgcHJpdmF0ZSBhZ2VudDogaHR0cC5BZ2VudDtcblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IEhUVFAgY2xpZW50IGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0gY29uZmlnIC0gU2VydmljZSBjb25maWd1cmF0aW9uXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25maWc6IFNlcnZpY2VDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIGhvc3Q6IGNvbmZpZy5ob3N0LFxuICAgICAgcG9ydDogY29uZmlnLnBvcnQsXG4gICAgICB0aW1lb3V0OiBjb25maWcudGltZW91dCA/PyBERUZBVUxUX1RJTUVPVVQsXG4gICAgfTtcbiAgICB0aGlzLmFnZW50ID0gbmV3IGh0dHAuQWdlbnQoeyBrZWVwQWxpdmU6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSBhIEdFVCByZXF1ZXN0LlxuICAgKi9cbiAgYXN5bmMgZ2V0PFQgPSB1bmtub3duPihwYXRoOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8SHR0cENsaWVudFJlc3BvbnNlPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdFdpdGhSZXRyeTxUPignR0VUJywgcGF0aCwgdW5kZWZpbmVkLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGEgUE9TVCByZXF1ZXN0LlxuICAgKi9cbiAgYXN5bmMgcG9zdDxUID0gdW5rbm93bj4oXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGJvZHk/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyxcbiAgKTogUHJvbWlzZTxIdHRwQ2xpZW50UmVzcG9uc2U8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0V2l0aFJldHJ5PFQ+KCdQT1NUJywgcGF0aCwgYm9keSwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSBhIFBVVCByZXF1ZXN0LlxuICAgKi9cbiAgYXN5bmMgcHV0PFQgPSB1bmtub3duPihcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgYm9keT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zLFxuICApOiBQcm9taXNlPEh0dHBDbGllbnRSZXNwb25zZTxUPj4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3RXaXRoUmV0cnk8VD4oJ1BVVCcsIHBhdGgsIGJvZHksIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgYSBERUxFVEUgcmVxdWVzdC5cbiAgICovXG4gIGFzeW5jIGRlbGV0ZTxUID0gdW5rbm93bj4ocGF0aDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPEh0dHBDbGllbnRSZXNwb25zZTxUPj4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3RXaXRoUmV0cnk8VD4oJ0RFTEVURScsIHBhdGgsIHVuZGVmaW5lZCwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdCB3aXRoIHJldHJ5IGxvZ2ljIGZvciB0cmFuc2llbnQgZmFpbHVyZXMuXG4gICAqXG4gICAqIC0gNDI5IChyYXRlIGxpbWl0KTogcmVzcGVjdHMgYFJldHJ5LUFmdGVyYCBoZWFkZXIsIHVzZXMgbG9uZ2VyIGJhc2UgZGVsYXkgKDR4KSxcbiAgICogICByZXRyaWVzIHVwIHRvIGBtYXhSYXRlTGltaXRSZXRyaWVzYCB0aW1lcyAoZGVmYXVsdCA0KS5cbiAgICogLSA1MDIvNTAzLzUwNCAoc2VydmVyIGVycm9ycyk6IHN0YW5kYXJkIGV4cG9uZW50aWFsIGJhY2tvZmYsIHVwIHRvIGBtYXhSZXRyaWVzYCAoZGVmYXVsdCAyKS5cbiAgICogLSBDb25uZWN0aW9uIGVycm9ycyAvIHRpbWVvdXRzOiByZXRyaWVzIHVwIHRvIGBtYXhSZXRyaWVzYC5cbiAgICogLSBBbGwgZGVsYXlzIGluY2x1ZGUgwrEyNSUgaml0dGVyIHRvIHByZXZlbnQgdGh1bmRlcmluZyBoZXJkLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyByZXF1ZXN0V2l0aFJldHJ5PFQ+KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBib2R5PzogdW5rbm93bixcbiAgICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMsXG4gICk6IFByb21pc2U8SHR0cENsaWVudFJlc3BvbnNlPFQ+PiB7XG4gICAgY29uc3QgcmV0cnlDb25maWc6IFJldHJ5Q29uZmlnID0ge1xuICAgICAgbWF4UmV0cmllczogb3B0aW9ucz8ubWF4UmV0cmllcyA/PyBERUZBVUxUX01BWF9SRVRSSUVTLFxuICAgICAgbWF4UmF0ZUxpbWl0UmV0cmllczogb3B0aW9ucz8ubWF4UmF0ZUxpbWl0UmV0cmllcyA/PyBERUZBVUxUX01BWF9SQVRFX0xJTUlUX1JFVFJJRVMsXG4gICAgICByZXRyeURlbGF5TXM6IG9wdGlvbnM/LnJldHJ5RGVsYXlNcyA/PyBERUZBVUxUX1JFVFJZX0RFTEFZX01TLFxuICAgIH07XG4gICAgY29uc3QgdG90YWxNYXhBdHRlbXB0cyA9IE1hdGgubWF4KHJldHJ5Q29uZmlnLm1heFJldHJpZXMsIHJldHJ5Q29uZmlnLm1heFJhdGVMaW1pdFJldHJpZXMpO1xuXG4gICAgbGV0IGxhc3RFcnJvcjogRXJyb3IgfCB1bmRlZmluZWQ7XG5cbiAgICBmb3IgKGxldCBhdHRlbXB0ID0gMDsgYXR0ZW1wdCA8PSB0b3RhbE1heEF0dGVtcHRzOyBhdHRlbXB0KyspIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5yZXF1ZXN0PFQ+KG1ldGhvZCwgcGF0aCwgYm9keSwgb3B0aW9ucyk7XG5cbiAgICAgICAgY29uc3QgZGVjaXNpb24gPSBnZXRSZXRyeURlY2lzaW9uKHJlc3BvbnNlLnN0YXR1c0NvZGUsIHJlc3BvbnNlLmhlYWRlcnMsIGF0dGVtcHQsIHJldHJ5Q29uZmlnKTtcbiAgICAgICAgaWYgKGRlY2lzaW9uLnNob3VsZFJldHJ5KSB7XG4gICAgICAgICAgbG9nZ2VyLmRlYnVnKGRlY2lzaW9uLnJlYXNvbiArICcsIHJldHJ5aW5nJywgeyBtZXRob2QsIHBhdGgsIGF0dGVtcHQ6IGF0dGVtcHQgKyAxLCBkZWxheU1zOiBkZWNpc2lvbi5kZWxheU1zIH0pO1xuICAgICAgICAgIGF3YWl0IHRoaXMuc2xlZXAoZGVjaXNpb24uZGVsYXlNcyk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsYXN0RXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSk7XG5cbiAgICAgICAgY29uc3QgZGVjaXNpb24gPSBnZXRFcnJvclJldHJ5RGVjaXNpb24oYXR0ZW1wdCwgcmV0cnlDb25maWcpO1xuICAgICAgICBpZiAoZGVjaXNpb24uc2hvdWxkUmV0cnkpIHtcbiAgICAgICAgICBsb2dnZXIuZGVidWcoJ1JldHJ5aW5nIGFmdGVyIGVycm9yJywgeyBtZXRob2QsIHBhdGgsIGVycm9yOiBsYXN0RXJyb3IubWVzc2FnZSwgYXR0ZW1wdDogYXR0ZW1wdCArIDEgfSk7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zbGVlcChkZWNpc2lvbi5kZWxheU1zKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IGxhc3RFcnJvciE7XG4gIH1cblxuICBwcml2YXRlIHNsZWVwKG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJuYWwgcmVxdWVzdCBtZXRob2QuXG4gICAqL1xuICBwcml2YXRlIHJlcXVlc3Q8VD4oXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGJvZHk/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyxcbiAgKTogUHJvbWlzZTxIdHRwQ2xpZW50UmVzcG9uc2U8VD4+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgYm9keVN0ciA9IGJvZHkgPyBKU09OLnN0cmluZ2lmeShib2R5KSA6IHVuZGVmaW5lZDtcblxuICAgICAgY29uc3QgaGVhZGVyczogaHR0cC5PdXRnb2luZ0h0dHBIZWFkZXJzID0ge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAuLi5vcHRpb25zPy5oZWFkZXJzLFxuICAgICAgfTtcblxuICAgICAgLy8gUHJvcGFnYXRlIHJlcXVlc3QgSUQgZm9yIGRpc3RyaWJ1dGVkIHRyYWNpbmdcbiAgICAgIGlmIChvcHRpb25zPy5yZXF1ZXN0SWQpIHtcbiAgICAgICAgaGVhZGVyc1snWC1SZXF1ZXN0LUlkJ10gPSBvcHRpb25zLnJlcXVlc3RJZDtcbiAgICAgIH1cblxuICAgICAgaWYgKGJvZHlTdHIpIHtcbiAgICAgICAgaGVhZGVyc1snQ29udGVudC1MZW5ndGgnXSA9IEJ1ZmZlci5ieXRlTGVuZ3RoKGJvZHlTdHIpO1xuICAgICAgfVxuXG4gICAgICAvLyBWYWxpZGF0ZSBwYXRoIHRvIHByZXZlbnQgcHJvdG9jb2wgaW5qZWN0aW9uIC8gcmVxdWVzdCBzbXVnZ2xpbmdcbiAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCc6Ly8nKSB8fCBwYXRoLnN0YXJ0c1dpdGgoJy8vJykgfHwgL1tcXHJcXG5cXDBdLy50ZXN0KHBhdGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCByZXF1ZXN0IHBhdGg6ICR7cGF0aH1gKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVxdWVzdE9wdGlvbnM6IGh0dHAuUmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgICAgIGhvc3RuYW1lOiB0aGlzLmNvbmZpZy5ob3N0LFxuICAgICAgICBwb3J0OiB0aGlzLmNvbmZpZy5wb3J0LFxuICAgICAgICBwYXRoOiBwYXRoLnN0YXJ0c1dpdGgoJy8nKSA/IHBhdGggOiBgLyR7cGF0aH1gLFxuICAgICAgICBtZXRob2QsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICAgIHRpbWVvdXQ6IG9wdGlvbnM/LnRpbWVvdXQgPz8gdGhpcy5jb25maWcudGltZW91dCxcbiAgICAgICAgYWdlbnQ6IHRoaXMuYWdlbnQsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXEgPSBodHRwLnJlcXVlc3QocmVxdWVzdE9wdGlvbnMsIChyZXMpID0+IHtcbiAgICAgICAgbGV0IGRhdGEgPSAnJztcblxuICAgICAgICByZXMub24oJ2RhdGEnLCAoY2h1bmspID0+IHtcbiAgICAgICAgICBkYXRhICs9IGNodW5rO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXMub24oJ2VuZCcsICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VkQm9keSA9IGRhdGEgPyBKU09OLnBhcnNlKGRhdGEpIDoge307XG4gICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgc3RhdHVzQ29kZTogcmVzLnN0YXR1c0NvZGUgfHwgSHR0cFN0YXR1cy5JTlRFUk5BTF9TRVJWRVJfRVJST1IsXG4gICAgICAgICAgICAgIGJvZHk6IHBhcnNlZEJvZHkgYXMgVCxcbiAgICAgICAgICAgICAgaGVhZGVyczogcmVzLmhlYWRlcnMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIChwYXJzZUVycm9yKSB7XG4gICAgICAgICAgICBsb2dnZXIud2FybignRmFpbGVkIHRvIHBhcnNlIHJlc3BvbnNlIGJvZHknLCB7XG4gICAgICAgICAgICAgIGhvc3Q6IHRoaXMuY29uZmlnLmhvc3QsXG4gICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgIGVycm9yOiBwYXJzZUVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBwYXJzZUVycm9yLm1lc3NhZ2UgOiBTdHJpbmcocGFyc2VFcnJvciksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgICBzdGF0dXNDb2RlOiByZXMuc3RhdHVzQ29kZSB8fCBIdHRwU3RhdHVzLklOVEVSTkFMX1NFUlZFUl9FUlJPUixcbiAgICAgICAgICAgICAgYm9keToge30gYXMgVCxcbiAgICAgICAgICAgICAgaGVhZGVyczogcmVzLmhlYWRlcnMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHJlcS5vbignZXJyb3InLCAoZXJyb3IpID0+IHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdIVFRQIHJlcXVlc3QgZmFpbGVkJywge1xuICAgICAgICAgIGhvc3Q6IHRoaXMuY29uZmlnLmhvc3QsXG4gICAgICAgICAgcG9ydDogdGhpcy5jb25maWcucG9ydCxcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICBlcnJvcjogZXJyb3IubWVzc2FnZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9KTtcblxuICAgICAgcmVxLm9uKCd0aW1lb3V0JywgKCkgPT4ge1xuICAgICAgICByZXEuZGVzdHJveSgpO1xuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihgUmVxdWVzdCB0aW1lb3V0IGFmdGVyICR7dGhpcy5jb25maWcudGltZW91dH1tc2ApO1xuICAgICAgICBsb2dnZXIud2FybignSFRUUCByZXF1ZXN0IHRpbWVvdXQnLCB7XG4gICAgICAgICAgaG9zdDogdGhpcy5jb25maWcuaG9zdCxcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIHRpbWVvdXQ6IHRoaXMuY29uZmlnLnRpbWVvdXQsXG4gICAgICAgIH0pO1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChib2R5U3RyKSB7XG4gICAgICAgIHJlcS53cml0ZShib2R5U3RyKTtcbiAgICAgIH1cblxuICAgICAgcmVxLmVuZCgpO1xuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuIEhUVFAgY2xpZW50IHdpdGggZXJyb3IgaGFuZGxpbmcgdGhhdCByZXR1cm5zIG51bGwgb24gZmFpbHVyZS5cbiAqIFVzZWZ1bCBmb3IgZmFpbC1vcGVuIHNjZW5hcmlvcy5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gU2VydmljZSBjb25maWd1cmF0aW9uXG4gKiBAcmV0dXJucyBDbGllbnQgd3JhcHBlciB3aXRoIHNhZmUgbWV0aG9kc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2FmZUNsaWVudChjb25maWc6IFNlcnZpY2VDb25maWcpIHtcbiAgY29uc3QgY2xpZW50ID0gbmV3IEludGVybmFsSHR0cENsaWVudChjb25maWcpO1xuXG4gIHJldHVybiB7XG4gICAgLyoqXG4gICAgICogU2FmZSBHRVQgcmVxdWVzdCAtIHJldHVybnMgbnVsbCBvbiBlcnJvci5cbiAgICAgKi9cbiAgICBhc3luYyBnZXQ8VD4ocGF0aDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPEh0dHBDbGllbnRSZXNwb25zZTxUPiB8IG51bGw+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBjbGllbnQuZ2V0PFQ+KHBhdGgsIG9wdGlvbnMpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZygnU2FmZSBHRVQgZmFpbGVkLCByZXR1cm5pbmcgbnVsbCcsIHsgcGF0aCwgZXJyb3I6IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKSB9KTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFNhZmUgUE9TVCByZXF1ZXN0IC0gcmV0dXJucyBudWxsIG9uIGVycm9yLlxuICAgICAqL1xuICAgIGFzeW5jIHBvc3Q8VD4oXG4gICAgICBwYXRoOiBzdHJpbmcsXG4gICAgICBib2R5PzogdW5rbm93bixcbiAgICAgIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyxcbiAgICApOiBQcm9taXNlPEh0dHBDbGllbnRSZXNwb25zZTxUPiB8IG51bGw+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBjbGllbnQucG9zdDxUPihwYXRoLCBib2R5LCBvcHRpb25zKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBsb2dnZXIuZGVidWcoJ1NhZmUgUE9TVCBmYWlsZWQsIHJldHVybmluZyBudWxsJywgeyBwYXRoLCBlcnJvcjogZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpIH0pO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogU2FmZSBQVVQgcmVxdWVzdCAtIHJldHVybnMgbnVsbCBvbiBlcnJvci5cbiAgICAgKi9cbiAgICBhc3luYyBwdXQ8VD4oXG4gICAgICBwYXRoOiBzdHJpbmcsXG4gICAgICBib2R5PzogdW5rbm93bixcbiAgICAgIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyxcbiAgICApOiBQcm9taXNlPEh0dHBDbGllbnRSZXNwb25zZTxUPiB8IG51bGw+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBjbGllbnQucHV0PFQ+KHBhdGgsIGJvZHksIG9wdGlvbnMpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZygnU2FmZSBQVVQgZmFpbGVkLCByZXR1cm5pbmcgbnVsbCcsIHsgcGF0aCwgZXJyb3I6IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKSB9KTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
281
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvaHR0cC1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTZSdEMsNENBZ0RDO0FBM1VELDJDQUE2QjtBQUM3QixxREFPMEI7QUFDMUIsMERBQXNEO0FBRXRELDRDQUErQztBQUUvQyxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEVBQUMsYUFBYSxDQUFDLENBQUM7QUFFM0M7O0dBRUc7QUFDSCxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsSUFBSSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFnQ2hGOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBYSxrQkFBa0I7SUFDckIsTUFBTSxDQUEwQjtJQUNoQyxLQUFLLENBQWE7SUFFMUI7Ozs7T0FJRztJQUNILFlBQVksTUFBcUI7UUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNqQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7WUFDakIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLElBQUksZUFBZTtTQUMzQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsR0FBRyxDQUFjLElBQVksRUFBRSxPQUF3QjtRQUMzRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBSSxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxL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RSxPQUFPLENBQUMsQ0FBQztZQUNuRCxDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDYixNQUFNLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNwSCxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBRUQ7O1dBRUc7UUFDSCxLQUFLLENBQUMsR0FBRyxDQUNQLElBQVksRUFDWixJQUFjLEVBQ2QsT0FBd0I7WUFFeEIsSUFBSSxDQUFDO2dCQUNILE9BQU8sTUFBTSxNQUFNLENBQUMsR0FBRyxDQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDbEQsQ0FBQztZQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDbkgsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCAqIGFzIGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQge1xuICBERUZBVUxUX01BWF9SRVRSSUVTLFxuICBERUZBVUxUX1JFVFJZX0RFTEFZX01TLFxuICBERUZBVUxUX01BWF9SQVRFX0xJTUlUX1JFVFJJRVMsXG4gIGdldFJldHJ5RGVjaXNpb24sXG4gIGdldEVycm9yUmV0cnlEZWNpc2lvbixcbiAgUmV0cnlDb25maWcsXG59IGZyb20gJy4vcmV0cnktc3RyYXRlZ3knO1xuaW1wb3J0IHsgSHR0cFN0YXR1cyB9IGZyb20gJy4uL2NvbnN0YW50cy9odHRwLXN0YXR1cyc7XG5pbXBvcnQgeyBTZXJ2aWNlQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMvY29tbW9uJztcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlcic7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignaHR0cC1jbGllbnQnKTtcblxuLyoqXG4gKiBEZWZhdWx0IHJlcXVlc3QgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgKGVudjogYEhUVFBfQ0xJRU5UX1RJTUVPVVRgKS5cbiAqL1xuY29uc3QgREVGQVVMVF9USU1FT1VUID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuSFRUUF9DTElFTlRfVElNRU9VVCB8fCAnNTAwMCcsIDEwKTtcblxuLyoqXG4gKiBIVFRQIHJlcXVlc3Qgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0T3B0aW9ucyB7XG4gIC8qKiBSZXF1ZXN0IGhlYWRlcnMgKi9cbiAgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKiBSZXF1ZXN0IHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzICovXG4gIHRpbWVvdXQ/OiBudW1iZXI7XG4gIC8qKiBNYXhpbXVtIHJldHJ5IGF0dGVtcHRzIGZvciB0cmFuc2llbnQgZmFpbHVyZXMgKGRlZmF1bHQ6IDIpICovXG4gIG1heFJldHJpZXM/OiBudW1iZXI7XG4gIC8qKiBCYXNlIGRlbGF5IGJldHdlZW4gcmV0cmllcyBpbiBtcyDigJQgZG91YmxlcyBlYWNoIGF0dGVtcHQgKGRlZmF1bHQ6IDIwMCkgKi9cbiAgcmV0cnlEZWxheU1zPzogbnVtYmVyO1xuICAvKiogTWF4aW11bSByZXRyeSBhdHRlbXB0cyBzcGVjaWZpY2FsbHkgZm9yIDQyOSByYXRlIGxpbWl0aW5nIChkZWZhdWx0OiA0KSAqL1xuICBtYXhSYXRlTGltaXRSZXRyaWVzPzogbnVtYmVyO1xuICAvKiogT3B0aW9uYWwgcmVxdWVzdCBJRCBmb3IgZGlzdHJpYnV0ZWQgdHJhY2luZyAoYWRkZWQgYXMgWC1SZXF1ZXN0LUlkIGhlYWRlcikgKi9cbiAgcmVxdWVzdElkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEhUVFAgY2xpZW50IHJlc3BvbnNlIHdyYXBwZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cENsaWVudFJlc3BvbnNlPFQgPSB1bmtub3duPiB7XG4gIC8qKiBIVFRQIHN0YXR1cyBjb2RlICovXG4gIHN0YXR1c0NvZGU6IG51bWJlcjtcbiAgLyoqIFJlc3BvbnNlIGJvZHkgKHBhcnNlZCBKU09OKSAqL1xuICBib2R5OiBUO1xuICAvKiogUmVzcG9uc2UgaGVhZGVycyAqL1xuICBoZWFkZXJzOiBodHRwLkluY29taW5nSHR0cEhlYWRlcnM7XG59XG5cbi8qKlxuICogSW50ZXJuYWwgSFRUUCBjbGllbnQgZm9yIHNlcnZpY2UtdG8tc2VydmljZSBjb21tdW5pY2F0aW9uLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjbGllbnQgPSBuZXcgSW50ZXJuYWxIdHRwQ2xpZW50KHtcbiAqICAgaG9zdDogJ3F1b3RhJyxcbiAqICAgcG9ydDogMzAwMCxcbiAqICAgdGltZW91dDogNTAwMCxcbiAqIH0pO1xuICpcbiAqIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldCgnL29yZzEyMy9hcGlDYWxscycpO1xuICogY29uc3QgcmVzdWx0ID0gYXdhaXQgY2xpZW50LnBvc3QoJy9vcmcxMjMvaW5jcmVtZW50JywgeyBxdW90YVR5cGU6ICdhcGlDYWxscycgfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIEludGVybmFsSHR0cENsaWVudCB7XG4gIHByaXZhdGUgY29uZmlnOiBSZXF1aXJlZDxTZXJ2aWNlQ29uZmlnPjtcbiAgcHJpdmF0ZSBhZ2VudDogaHR0cC5BZ2VudDtcblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IEhUVFAgY2xpZW50IGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0gY29uZmlnIC0gU2VydmljZSBjb25maWd1cmF0aW9uXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25maWc6IFNlcnZpY2VDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIGhvc3Q6IGNvbmZpZy5ob3N0LFxuICAgICAgcG9ydDogY29uZmlnLnBvcnQsXG4gICAgICB0aW1lb3V0OiBjb25maWcudGltZW91dCA/PyBERUZBVUxUX1RJTUVPVVQsXG4gICAgfTtcbiAgICB0aGlzLmFnZW50ID0gbmV3IGh0dHAuQWdlbnQoeyBrZWVwQWxpdmU6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSBhIEdFVCByZXF1ZXN0LlxuICAgKi9cbiAgYXN5bmMgZ2V0PFQgPSB1bmtub3duPihwYXRoOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8SHR0cENsaWVudFJlc3BvbnNlPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdFdpdGhSZXRyeTxUPignR0VUJywgcGF0aCwgdW5kZWZpbmVkLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGEgUE9TVCByZXF1ZXN0LlxuICAgKi9cbiAgYXN5bmMgcG9zdDxUID0gdW5rbm93bj4oXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGJvZHk/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyxcbiAgKTogUHJvbWlzZTxIdHRwQ2xpZW50UmVzcG9uc2U8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0V2l0aFJldHJ5PFQ+KCdQT1NUJywgcGF0aCwgYm9keSwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSBhIFBVVCByZXF1ZXN0LlxuICAgKi9cbiAgYXN5bmMgcHV0PFQgPSB1bmtub3duPihcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgYm9keT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zLFxuICApOiBQcm9taXNlPEh0dHBDbGllbnRSZXNwb25zZTxUPj4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3RXaXRoUmV0cnk8VD4oJ1BVVCcsIHBhdGgsIGJvZHksIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgYSBERUxFVEUgcmVxdWVzdC5cbiAgICovXG4gIGFzeW5jIGRlbGV0ZTxUID0gdW5rbm93bj4ocGF0aDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPEh0dHBDbGllbnRSZXNwb25zZTxUPj4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3RXaXRoUmV0cnk8VD4oJ0RFTEVURScsIHBhdGgsIHVuZGVmaW5lZCwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdCB3aXRoIHJldHJ5IGxvZ2ljIGZvciB0cmFuc2llbnQgZmFpbHVyZXMuXG4gICAqXG4gICAqIC0gNDI5IChyYXRlIGxpbWl0KTogcmVzcGVjdHMgYFJldHJ5LUFmdGVyYCBoZWFkZXIsIHVzZXMgbG9uZ2VyIGJhc2UgZGVsYXkgKDR4KSxcbiAgICogICByZXRyaWVzIHVwIHRvIGBtYXhSYXRlTGltaXRSZXRyaWVzYCB0aW1lcyAoZGVmYXVsdCA0KS5cbiAgICogLSA1MDIvNTAzLzUwNCAoc2VydmVyIGVycm9ycyk6IHN0YW5kYXJkIGV4cG9uZW50aWFsIGJhY2tvZmYsIHVwIHRvIGBtYXhSZXRyaWVzYCAoZGVmYXVsdCAyKS5cbiAgICogLSBDb25uZWN0aW9uIGVycm9ycyAvIHRpbWVvdXRzOiByZXRyaWVzIHVwIHRvIGBtYXhSZXRyaWVzYC5cbiAgICogLSBBbGwgZGVsYXlzIGluY2x1ZGUgwrEyNSUgaml0dGVyIHRvIHByZXZlbnQgdGh1bmRlcmluZyBoZXJkLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyByZXF1ZXN0V2l0aFJldHJ5PFQ+KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBib2R5PzogdW5rbm93bixcbiAgICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMsXG4gICk6IFByb21pc2U8SHR0cENsaWVudFJlc3BvbnNlPFQ+PiB7XG4gICAgY29uc3QgcmV0cnlDb25maWc6IFJldHJ5Q29uZmlnID0ge1xuICAgICAgbWF4UmV0cmllczogb3B0aW9ucz8ubWF4UmV0cmllcyA/PyBERUZBVUxUX01BWF9SRVRSSUVTLFxuICAgICAgbWF4UmF0ZUxpbWl0UmV0cmllczogb3B0aW9ucz8ubWF4UmF0ZUxpbWl0UmV0cmllcyA/PyBERUZBVUxUX01BWF9SQVRFX0xJTUlUX1JFVFJJRVMsXG4gICAgICByZXRyeURlbGF5TXM6IG9wdGlvbnM/LnJldHJ5RGVsYXlNcyA/PyBERUZBVUxUX1JFVFJZX0RFTEFZX01TLFxuICAgIH07XG4gICAgY29uc3QgdG90YWxNYXhBdHRlbXB0cyA9IE1hdGgubWF4KHJldHJ5Q29uZmlnLm1heFJldHJpZXMsIHJldHJ5Q29uZmlnLm1heFJhdGVMaW1pdFJldHJpZXMpO1xuXG4gICAgbGV0IGxhc3RFcnJvcjogRXJyb3IgfCB1bmRlZmluZWQ7XG5cbiAgICBmb3IgKGxldCBhdHRlbXB0ID0gMDsgYXR0ZW1wdCA8PSB0b3RhbE1heEF0dGVtcHRzOyBhdHRlbXB0KyspIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5yZXF1ZXN0PFQ+KG1ldGhvZCwgcGF0aCwgYm9keSwgb3B0aW9ucyk7XG5cbiAgICAgICAgY29uc3QgZGVjaXNpb24gPSBnZXRSZXRyeURlY2lzaW9uKHJlc3BvbnNlLnN0YXR1c0NvZGUsIHJlc3BvbnNlLmhlYWRlcnMsIGF0dGVtcHQsIHJldHJ5Q29uZmlnKTtcbiAgICAgICAgaWYgKGRlY2lzaW9uLnNob3VsZFJldHJ5KSB7XG4gICAgICAgICAgbG9nZ2VyLmRlYnVnKGRlY2lzaW9uLnJlYXNvbiArICcsIHJldHJ5aW5nJywgeyBtZXRob2QsIHBhdGgsIGF0dGVtcHQ6IGF0dGVtcHQgKyAxLCBkZWxheU1zOiBkZWNpc2lvbi5kZWxheU1zIH0pO1xuICAgICAgICAgIGF3YWl0IHRoaXMuc2xlZXAoZGVjaXNpb24uZGVsYXlNcyk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsYXN0RXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSk7XG5cbiAgICAgICAgY29uc3QgZGVjaXNpb24gPSBnZXRFcnJvclJldHJ5RGVjaXNpb24oYXR0ZW1wdCwgcmV0cnlDb25maWcpO1xuICAgICAgICBpZiAoZGVjaXNpb24uc2hvdWxkUmV0cnkpIHtcbiAgICAgICAgICBsb2dnZXIuZGVidWcoJ1JldHJ5aW5nIGFmdGVyIGVycm9yJywgeyBtZXRob2QsIHBhdGgsIGVycm9yOiBsYXN0RXJyb3IubWVzc2FnZSwgYXR0ZW1wdDogYXR0ZW1wdCArIDEgfSk7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zbGVlcChkZWNpc2lvbi5kZWxheU1zKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IGxhc3RFcnJvciE7XG4gIH1cblxuICBwcml2YXRlIHNsZWVwKG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJuYWwgcmVxdWVzdCBtZXRob2QuXG4gICAqL1xuICBwcml2YXRlIHJlcXVlc3Q8VD4oXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGJvZHk/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyxcbiAgKTogUHJvbWlzZTxIdHRwQ2xpZW50UmVzcG9uc2U8VD4+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgYm9keVN0ciA9IGJvZHkgPyBKU09OLnN0cmluZ2lmeShib2R5KSA6IHVuZGVmaW5lZDtcblxuICAgICAgY29uc3QgaGVhZGVyczogaHR0cC5PdXRnb2luZ0h0dHBIZWFkZXJzID0ge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAuLi5vcHRpb25zPy5oZWFkZXJzLFxuICAgICAgfTtcblxuICAgICAgLy8gUHJvcGFnYXRlIHJlcXVlc3QgSUQgZm9yIGRpc3RyaWJ1dGVkIHRyYWNpbmdcbiAgICAgIGlmIChvcHRpb25zPy5yZXF1ZXN0SWQpIHtcbiAgICAgICAgaGVhZGVyc1snWC1SZXF1ZXN0LUlkJ10gPSBvcHRpb25zLnJlcXVlc3RJZDtcbiAgICAgIH1cblxuICAgICAgaWYgKGJvZHlTdHIpIHtcbiAgICAgICAgaGVhZGVyc1snQ29udGVudC1MZW5ndGgnXSA9IEJ1ZmZlci5ieXRlTGVuZ3RoKGJvZHlTdHIpO1xuICAgICAgfVxuXG4gICAgICAvLyBWYWxpZGF0ZSBwYXRoIHRvIHByZXZlbnQgcHJvdG9jb2wgaW5qZWN0aW9uIC8gcmVxdWVzdCBzbXVnZ2xpbmdcbiAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCc6Ly8nKSB8fCBwYXRoLnN0YXJ0c1dpdGgoJy8vJykgfHwgL1tcXHJcXG5cXDBdLy50ZXN0KHBhdGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCByZXF1ZXN0IHBhdGg6ICR7cGF0aH1gKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVxdWVzdE9wdGlvbnM6IGh0dHAuUmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgICAgIGhvc3RuYW1lOiB0aGlzLmNvbmZpZy5ob3N0LFxuICAgICAgICBwb3J0OiB0aGlzLmNvbmZpZy5wb3J0LFxuICAgICAgICBwYXRoOiBwYXRoLnN0YXJ0c1dpdGgoJy8nKSA/IHBhdGggOiBgLyR7cGF0aH1gLFxuICAgICAgICBtZXRob2QsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICAgIHRpbWVvdXQ6IG9wdGlvbnM/LnRpbWVvdXQgPz8gdGhpcy5jb25maWcudGltZW91dCxcbiAgICAgICAgYWdlbnQ6IHRoaXMuYWdlbnQsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXEgPSBodHRwLnJlcXVlc3QocmVxdWVzdE9wdGlvbnMsIChyZXMpID0+IHtcbiAgICAgICAgbGV0IGRhdGEgPSAnJztcblxuICAgICAgICByZXMub24oJ2RhdGEnLCAoY2h1bmspID0+IHtcbiAgICAgICAgICBkYXRhICs9IGNodW5rO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXMub24oJ2VuZCcsICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VkQm9keSA9IGRhdGEgPyBKU09OLnBhcnNlKGRhdGEpIDoge307XG4gICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgc3RhdHVzQ29kZTogcmVzLnN0YXR1c0NvZGUgfHwgSHR0cFN0YXR1cy5JTlRFUk5BTF9TRVJWRVJfRVJST1IsXG4gICAgICAgICAgICAgIGJvZHk6IHBhcnNlZEJvZHkgYXMgVCxcbiAgICAgICAgICAgICAgaGVhZGVyczogcmVzLmhlYWRlcnMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIChwYXJzZUVycm9yKSB7XG4gICAgICAgICAgICBsb2dnZXIud2FybignRmFpbGVkIHRvIHBhcnNlIHJlc3BvbnNlIGJvZHknLCB7XG4gICAgICAgICAgICAgIGhvc3Q6IHRoaXMuY29uZmlnLmhvc3QsXG4gICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgIGVycm9yOiBwYXJzZUVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBwYXJzZUVycm9yLm1lc3NhZ2UgOiBTdHJpbmcocGFyc2VFcnJvciksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgICBzdGF0dXNDb2RlOiByZXMuc3RhdHVzQ29kZSB8fCBIdHRwU3RhdHVzLklOVEVSTkFMX1NFUlZFUl9FUlJPUixcbiAgICAgICAgICAgICAgYm9keToge30gYXMgVCxcbiAgICAgICAgICAgICAgaGVhZGVyczogcmVzLmhlYWRlcnMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHJlcS5vbignZXJyb3InLCAoZXJyb3IpID0+IHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdIVFRQIHJlcXVlc3QgZmFpbGVkJywge1xuICAgICAgICAgIGhvc3Q6IHRoaXMuY29uZmlnLmhvc3QsXG4gICAgICAgICAgcG9ydDogdGhpcy5jb25maWcucG9ydCxcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICBlcnJvcjogZXJyb3IubWVzc2FnZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9KTtcblxuICAgICAgcmVxLm9uKCd0aW1lb3V0JywgKCkgPT4ge1xuICAgICAgICByZXEuZGVzdHJveSgpO1xuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihgUmVxdWVzdCB0aW1lb3V0IGFmdGVyICR7dGhpcy5jb25maWcudGltZW91dH1tc2ApO1xuICAgICAgICBsb2dnZXIud2FybignSFRUUCByZXF1ZXN0IHRpbWVvdXQnLCB7XG4gICAgICAgICAgaG9zdDogdGhpcy5jb25maWcuaG9zdCxcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIHRpbWVvdXQ6IHRoaXMuY29uZmlnLnRpbWVvdXQsXG4gICAgICAgIH0pO1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChib2R5U3RyKSB7XG4gICAgICAgIHJlcS53cml0ZShib2R5U3RyKTtcbiAgICAgIH1cblxuICAgICAgcmVxLmVuZCgpO1xuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuIEhUVFAgY2xpZW50IHdpdGggZXJyb3IgaGFuZGxpbmcgdGhhdCByZXR1cm5zIG51bGwgb24gZmFpbHVyZS5cbiAqIFVzZWZ1bCBmb3IgZmFpbC1vcGVuIHNjZW5hcmlvcy5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gU2VydmljZSBjb25maWd1cmF0aW9uXG4gKiBAcmV0dXJucyBDbGllbnQgd3JhcHBlciB3aXRoIHNhZmUgbWV0aG9kc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2FmZUNsaWVudChjb25maWc6IFNlcnZpY2VDb25maWcpIHtcbiAgY29uc3QgY2xpZW50ID0gbmV3IEludGVybmFsSHR0cENsaWVudChjb25maWcpO1xuXG4gIHJldHVybiB7XG4gICAgLyoqXG4gICAgICogU2FmZSBHRVQgcmVxdWVzdCAtIHJldHVybnMgbnVsbCBvbiBlcnJvci5cbiAgICAgKi9cbiAgICBhc3luYyBnZXQ8VD4ocGF0aDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPEh0dHBDbGllbnRSZXNwb25zZTxUPiB8IG51bGw+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBjbGllbnQuZ2V0PFQ+KHBhdGgsIG9wdGlvbnMpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZygnU2FmZSBHRVQgZmFpbGVkLCByZXR1cm5pbmcgbnVsbCcsIHsgcGF0aCwgZXJyb3I6IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKSB9KTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFNhZmUgUE9TVCByZXF1ZXN0IC0gcmV0dXJucyBudWxsIG9uIGVycm9yLlxuICAgICAqL1xuICAgIGFzeW5jIHBvc3Q8VD4oXG4gICAgICBwYXRoOiBzdHJpbmcsXG4gICAgICBib2R5PzogdW5rbm93bixcbiAgICAgIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyxcbiAgICApOiBQcm9taXNlPEh0dHBDbGllbnRSZXNwb25zZTxUPiB8IG51bGw+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBjbGllbnQucG9zdDxUPihwYXRoLCBib2R5LCBvcHRpb25zKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBsb2dnZXIuZGVidWcoJ1NhZmUgUE9TVCBmYWlsZWQsIHJldHVybmluZyBudWxsJywgeyBwYXRoLCBlcnJvcjogZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpIH0pO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogU2FmZSBQVVQgcmVxdWVzdCAtIHJldHVybnMgbnVsbCBvbiBlcnJvci5cbiAgICAgKi9cbiAgICBhc3luYyBwdXQ8VD4oXG4gICAgICBwYXRoOiBzdHJpbmcsXG4gICAgICBib2R5PzogdW5rbm93bixcbiAgICAgIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyxcbiAgICApOiBQcm9taXNlPEh0dHBDbGllbnRSZXNwb25zZTxUPiB8IG51bGw+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBjbGllbnQucHV0PFQ+KHBhdGgsIGJvZHksIG9wdGlvbnMpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZygnU2FmZSBQVVQgZmFpbGVkLCByZXR1cm5pbmcgbnVsbCcsIHsgcGF0aCwgZXJyb3I6IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKSB9KTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
package/package.json CHANGED
@@ -59,7 +59,7 @@
59
59
  "main": "lib/index.js",
60
60
  "license": "Apache-2.0",
61
61
  "homepage": "https://mwashburn160.github.io/pipeline-builder/",
62
- "version": "3.2.5",
62
+ "version": "3.3.0",
63
63
  "bugs": {
64
64
  "url": "https://github.com/mwashburn160/pipeline-builder/issues"
65
65
  },