footprintjs 10.2.0 → 10.2.1

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.
@@ -20,8 +20,10 @@
20
20
  * `TypeError`, an `AbortError` / `TimeoutError` that was not the run's) → network
21
21
  * 9. anything else → unknown
22
22
  *
23
- * A status is a NUMBER (`status` or `statusCode`); a numeric string is not read as one. Total: a value whose
24
- * reads throw (a hostile Proxy) is `'unknown'`, never a second throw from an error path.
23
+ * A status is a NUMBER (`status` or `statusCode`); a numeric string is not read as one. Metadata uses only
24
+ * own/inherited data within 32 prototype objects; a caller accessor shadows farther data without executing.
25
+ * The captured platform DOMException name getter is the sole accessor exception and brand-checks its receiver.
26
+ * Inspection failures (a hostile Proxy) are `'unknown'`, never a second throw from an error path.
25
27
  */
26
28
  import type { AttemptCategory, AttemptOutcome } from './types.js';
27
29
  /**
@@ -20,10 +20,13 @@
20
20
  * `TypeError`, an `AbortError` / `TimeoutError` that was not the run's) → network
21
21
  * 9. anything else → unknown
22
22
  *
23
- * A status is a NUMBER (`status` or `statusCode`); a numeric string is not read as one. Total: a value whose
24
- * reads throw (a hostile Proxy) is `'unknown'`, never a second throw from an error path.
23
+ * A status is a NUMBER (`status` or `statusCode`); a numeric string is not read as one. Metadata uses only
24
+ * own/inherited data within 32 prototype objects; a caller accessor shadows farther data without executing.
25
+ * The captured platform DOMException name getter is the sole accessor exception and brand-checks its receiver.
26
+ * Inspection failures (a hostile Proxy) are `'unknown'`, never a second throw from an error path.
25
27
  */
26
28
  import { InputValidationError } from '../schema/errors.js';
29
+ import { errorField } from './errorField.js';
27
30
  import { AttemptTimeoutError, UnknownEffectError } from './errors.js';
28
31
  /** Socket-level codes a transport failure carries (Node's `errno` names). */
29
32
  const NETWORK_CODES = new Set([
@@ -87,7 +90,7 @@ function categoryOf(error) {
87
90
  return 'unknown';
88
91
  const fields = error;
89
92
  const status = numberField(fields, 'status') ?? numberField(fields, 'statusCode');
90
- const declaresRetryAfter = isWait(fields.retryAfterMs) || isWait(fields.retryAfterSeconds);
93
+ const declaresRetryAfter = isWait(errorField(fields, 'retryAfterMs')) || isWait(errorField(fields, 'retryAfterSeconds'));
91
94
  if (status === 429 || declaresRetryAfter)
92
95
  return 'rate-limited';
93
96
  if (status !== undefined && status >= 500 && status <= 599)
@@ -96,11 +99,12 @@ function categoryOf(error) {
96
99
  return 'auth';
97
100
  if (status !== undefined && status >= 400 && status <= 499)
98
101
  return 'permanent';
99
- if (fields.retryable === false)
102
+ if (errorField(fields, 'retryable') === false)
100
103
  return 'permanent';
101
104
  if (error instanceof InputValidationError)
102
105
  return 'permanent';
103
- const name = typeof fields.name === 'string' ? fields.name : undefined;
106
+ const declaredName = errorField(fields, 'name');
107
+ const name = typeof declaredName === 'string' ? declaredName : undefined;
104
108
  if (name !== undefined && VALIDATION_NAMES.has(name))
105
109
  return 'permanent';
106
110
  if (status === undefined && isTransportFailure(fields, name))
@@ -108,24 +112,27 @@ function categoryOf(error) {
108
112
  return 'unknown';
109
113
  }
110
114
  function isTransportFailure(fields, name) {
111
- if (hasNetworkCode(fields.code))
115
+ if (hasNetworkCode(errorField(fields, 'code')))
112
116
  return true;
113
- const cause = fields.cause;
114
- if (cause !== null && typeof cause === 'object' && hasNetworkCode(cause.code)) {
117
+ const cause = errorField(fields, 'cause');
118
+ if (cause !== null && typeof cause === 'object' && hasNetworkCode(errorField(cause, 'code'))) {
115
119
  return true;
116
120
  }
117
121
  if (name !== undefined && TRANSPORT_ABORT_NAMES.has(name))
118
122
  return true;
119
- return fields instanceof TypeError && typeof fields.message === 'string' && FETCH_FAILURE.test(fields.message);
123
+ if (!(fields instanceof TypeError))
124
+ return false;
125
+ const message = errorField(fields, 'message');
126
+ return typeof message === 'string' && FETCH_FAILURE.test(message);
120
127
  }
121
128
  function hasNetworkCode(code) {
122
129
  return typeof code === 'string' && NETWORK_CODES.has(code);
123
130
  }
124
131
  function numberField(fields, key) {
125
- const value = fields[key];
132
+ const value = errorField(fields, key);
126
133
  return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
127
134
  }
128
135
  function isWait(value) {
129
136
  return typeof value === 'number' && Number.isFinite(value) && value >= 0;
130
137
  }
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2F0dGVtcHQvY2F0ZWdvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRztBQUVILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUd0RSw2RUFBNkU7QUFDN0UsTUFBTSxhQUFhLEdBQXdCLElBQUksR0FBRyxDQUFDO0lBQ2pELFlBQVk7SUFDWixjQUFjO0lBQ2QsV0FBVztJQUNYLFdBQVc7SUFDWCxXQUFXO0lBQ1gsT0FBTztDQUNSLENBQUMsQ0FBQztBQUVILDRHQUE0RztBQUM1RyxNQUFNLGFBQWEsR0FBRyxpR0FBaUcsQ0FBQztBQUV4SCx5RkFBeUY7QUFDekYsTUFBTSxnQkFBZ0IsR0FBd0IsSUFBSSxHQUFHLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO0FBRS9HLHNIQUFzSDtBQUN0SCxNQUFNLHFCQUFxQixHQUF3QixJQUFJLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBRTNGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBYyxFQUFFLFVBQTBCLFFBQVE7SUFDOUUsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzVDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUM1QyxJQUFJLENBQUM7UUFDSCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFFRDs7OztHQUlH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QUM3QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQzNCLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksY0FBYyxDQUFFLEtBQWlDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMzRyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLElBQUksS0FBSyxTQUFTLElBQUkscUJBQXFCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3ZFLE9BQU8sTUFBTSxZQUFZLFNBQVMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxPQUFPLEtBQUssUUFBUSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2pILENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxJQUFhO0lBQ25DLE9BQU8sT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLE1BQStCLEVBQUUsR0FBNEI7SUFDaEYsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ2pGLENBQUM7QUFFRCxTQUFTLE1BQU0sQ0FBQyxLQUFjO0lBQzVCLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztBQUMzRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBhdHRlbXB0L2NhdGVnb3J5LnRzIOKAlCBgZXJyb3JDYXRlZ29yeWAsIHRoZSBPTkUgZmFpbHVyZSBjbGFzc2lmaWVyIChkZXNpZ24gwqczLjkpLlxuICpcbiAqIFNldmVuIGZpeGVkIHZhbHVlcywgc28gZXZlcnkgcmVjb3JkZXIg4oCUIHRoZSBuYXJyYXRpdmUsIHRoZSBtZXRyaWMgbGF5ZXIsIGFuIGFnZW50J3Mgb3duIOKAlCBicmVha3MgZmFpbHVyZXMgZG93blxuICogdGhlIHNhbWUgd2F5OyBhIHJlY29yZGVyIG5ldmVyIGludmVudHMgYSBjYXRlZ29yeSBvZiBpdHMgb3duLiBCb3Jyb3dlZCBmcm9tIGFnZW50Zm9vdHByaW50J3NcbiAqIGBjbGFzc2lmeVJldHJ5UmVhc29uYCBhbmQgd2lkZW5lZCwgc28gaXRzIGRlY29yYXRvcnMgYWRvcHQgdGhpcyBvbmUgcmF0aGVyIHRoYW4ga2VlcCB0aGVpcnMuXG4gKlxuICogQ2F0ZWdvcnkgaXMgRVZJREVOQ0UsIG5ldmVyIHBvbGljeTogdGhlIGRlZmF1bHQgYHJldHJ5T25gIHJldHJpZXMgZXZlcnkgY2F0ZWdvcnkuIEEgY2hhcnQgdGhhdCB3YW50cyBcIm5ldmVyXG4gKiByZXRyeSBhIHBlcm1hbmVudCBmYWlsdXJlXCIgc2F5cyBzbzogYHJldHJ5T246IChlKSA9PiBlcnJvckNhdGVnb3J5KGUpICE9PSAncGVybWFuZW50J2AuXG4gKlxuICogUHJlY2VkZW5jZSDigJQgd2hhdCB0aGUgZmFpbHVyZSBMT09LRUQgbGlrZSB3aW5zIG92ZXIgd2hhdCBpdCBkZWNsYXJlczpcbiAqICAgMS4gdGhlIGF0dGVtcHQncyBvd24gdGltZXIgKG91dGNvbWUgYCd0aW1lb3V0J2AsIG9yIG91ciBgQXR0ZW1wdFRpbWVvdXRFcnJvcmApICDihpIgdGltZW91dFxuICogICAyLiB0aGUgcnVuJ3Mgc2lnbmFsIGVuZGVkIGl0IChvdXRjb21lIGAnYWJvcnRlZCdgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkiB1bmtub3duXG4gKiAgIDMuIHN0YXR1cyA0MjksIG9yIGEgZGVjbGFyZWQgYHJldHJ5QWZ0ZXJNc2AgLyBgcmV0cnlBZnRlclNlY29uZHNgICAgICAgICAgICAgICAg4oaSIHJhdGUtbGltaXRlZFxuICogICA0LiBzdGF0dXMgNXh4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkiBzZXJ2ZXJcbiAqICAgNS4gc3RhdHVzIDQwMSAvIDQwMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpIgYXV0aFxuICogICA2LiBhbnkgb3RoZXIgNHh4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkiBwZXJtYW5lbnRcbiAqICAgNy4gYHJldHJ5YWJsZTogZmFsc2VgLCBvciBhIHZhbGlkYXRpb24gZXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpIgcGVybWFuZW50XG4gKiAgIDguIGEgdHJhbnNwb3J0IGZhaWx1cmUgKGEgc29ja2V0IGNvZGUgb24gdGhlIGVycm9yIG9yIGl0cyBjYXVzZSwgYSBmZXRjaFxuICogICAgICBgVHlwZUVycm9yYCwgYW4gYEFib3J0RXJyb3JgIC8gYFRpbWVvdXRFcnJvcmAgdGhhdCB3YXMgbm90IHRoZSBydW4ncykgICAgICAgIOKGkiBuZXR3b3JrXG4gKiAgIDkuIGFueXRoaW5nIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaSIHVua25vd25cbiAqXG4gKiBBIHN0YXR1cyBpcyBhIE5VTUJFUiAoYHN0YXR1c2Agb3IgYHN0YXR1c0NvZGVgKTsgYSBudW1lcmljIHN0cmluZyBpcyBub3QgcmVhZCBhcyBvbmUuIFRvdGFsOiBhIHZhbHVlIHdob3NlXG4gKiByZWFkcyB0aHJvdyAoYSBob3N0aWxlIFByb3h5KSBpcyBgJ3Vua25vd24nYCwgbmV2ZXIgYSBzZWNvbmQgdGhyb3cgZnJvbSBhbiBlcnJvciBwYXRoLlxuICovXG5cbmltcG9ydCB7IElucHV0VmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi4vc2NoZW1hL2Vycm9ycy5qcyc7XG5pbXBvcnQgeyBBdHRlbXB0VGltZW91dEVycm9yLCBVbmtub3duRWZmZWN0RXJyb3IgfSBmcm9tICcuL2Vycm9ycy5qcyc7XG5pbXBvcnQgdHlwZSB7IEF0dGVtcHRDYXRlZ29yeSwgQXR0ZW1wdE91dGNvbWUgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuLyoqIFNvY2tldC1sZXZlbCBjb2RlcyBhIHRyYW5zcG9ydCBmYWlsdXJlIGNhcnJpZXMgKE5vZGUncyBgZXJybm9gIG5hbWVzKS4gKi9cbmNvbnN0IE5FVFdPUktfQ09ERVM6IFJlYWRvbmx5U2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ0VDT05OUkVTRVQnLFxuICAnRUNPTk5SRUZVU0VEJyxcbiAgJ0VOT1RGT1VORCcsXG4gICdFVElNRURPVVQnLFxuICAnRUFJX0FHQUlOJyxcbiAgJ0VQSVBFJyxcbl0pO1xuXG4vKiogVGhlIG1lc3NhZ2VzIHJ1bnRpbWVzIGdpdmUgYSBgZmV0Y2hgIHRoYXQgbmV2ZXIgcmVhY2hlZCB0aGUgc2VydmVyIChOb2RlLCBDaHJvbWl1bSwgRmlyZWZveCwgU2FmYXJpKS4gKi9cbmNvbnN0IEZFVENIX0ZBSUxVUkUgPSAvXihmZXRjaCBmYWlsZWR8ZmFpbGVkIHRvIGZldGNofG5ldHdvcmtlcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8gZmV0Y2ggcmVzb3VyY2VcXC4/fGxvYWQgZmFpbGVkKSQvaTtcblxuLyoqIEVycm9yIG5hbWVzIHRoYXQgc2F5IGEgdmFsaWRhdGlvbiBmYWlsZWQg4oCUIHJldHJ5aW5nIHRoZSBzYW1lIGlucHV0IGNhbm5vdCBzdWNjZWVkLiAqL1xuY29uc3QgVkFMSURBVElPTl9OQU1FUzogUmVhZG9ubHlTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoWydWYWxpZGF0aW9uRXJyb3InLCAnWm9kRXJyb3InLCAnSW5wdXRWYWxpZGF0aW9uRXJyb3InXSk7XG5cbi8qKiBFcnJvciBuYW1lcyBvZiBhbiBhYm9ydCBvciBhIHRpbWVvdXQgdGhhdCBzb21lIE9USEVSIHNpZ25hbCByYWlzZWQgKHRoZSBydW4ncyBvd24gZW5kcyBhcyBvdXRjb21lIGAnYWJvcnRlZCdgKS4gKi9cbmNvbnN0IFRSQU5TUE9SVF9BQk9SVF9OQU1FUzogUmVhZG9ubHlTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoWydBYm9ydEVycm9yJywgJ1RpbWVvdXRFcnJvciddKTtcblxuLyoqXG4gKiBUaGUgY2F0ZWdvcnkgb2YgYW4gYXR0ZW1wdCdzIGZhaWx1cmUuIGBvdXRjb21lYCBpcyBob3cgdGhlIGF0dGVtcHQgZW5kZWQgKGRlZmF1bHQgYCdmYWlsZWQnYCk6IGl0IGRlY2lkZXNcbiAqIGAndGltZW91dCdgICh0aGUgYXR0ZW1wdCdzIG93biB0aW1lcikgYW5kIGAndW5rbm93bidgICh0aGUgcnVuJ3Mgc2lnbmFsKSBiZWZvcmUgdGhlIGVycm9yIGlzIHJlYWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlcnJvckNhdGVnb3J5KGVycm9yOiB1bmtub3duLCBvdXRjb21lOiBBdHRlbXB0T3V0Y29tZSA9ICdmYWlsZWQnKTogQXR0ZW1wdENhdGVnb3J5IHtcbiAgaWYgKG91dGNvbWUgPT09ICd0aW1lb3V0JykgcmV0dXJuICd0aW1lb3V0JztcbiAgaWYgKG91dGNvbWUgPT09ICdhYm9ydGVkJykgcmV0dXJuICd1bmtub3duJztcbiAgdHJ5IHtcbiAgICByZXR1cm4gY2F0ZWdvcnlPZihlcnJvcik7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiAndW5rbm93bic7XG4gIH1cbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGVybWluYWwgb3duZXJzaGlwIHByZXNlcnZlcyBhIHByb2R1Y2VyJ3Mga25vd24gY2F0ZWdvcnkuIEFuXG4gKiB1bnJlc29sdmVkIGVmZmVjdCBpcyB1bmtub3duLCBuZXZlciB0aGUgY2F0ZWdvcnkgb2YgaXRzIHBoeXNpY2FsIGNhdXNlLlxuICogVGhpcyBkb2VzIG5vdCByZXdyaXRlIGhpc3RvcmljYWwgYXR0ZW1wdCBjYXRlZ29yaWVzIG9yIHJlLXJlYWQgYSBrbm93biBvbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtaW5hbENhdGVnb3J5KGVycm9yOiB1bmtub3duLCBrbm93bj86IEF0dGVtcHRDYXRlZ29yeSk6IEF0dGVtcHRDYXRlZ29yeSB7XG4gIHRyeSB7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgVW5rbm93bkVmZmVjdEVycm9yKSByZXR1cm4gJ3Vua25vd24nO1xuICAgIC8vIENKUyBhbmQgRVNNIGhhdmUgZGlzdGluY3QgY29uc3RydWN0b3JzLiBBIGRlY2xhcmVkIG93biBEQVRBIG5hbWUgbWF5XG4gICAgLy8gb25seSByZWR1Y2UgY2VydGFpbnR5IHRvIHVua25vd247IG5ldmVyIGV4ZWN1dGUgYW4gZXJyb3IncyBuYW1lIGdldHRlclxuICAgIC8vIG9yIHByb21vdGUgaXRzIHBoeXNpY2FsIGNhdXNlIHRvIGEga25vd24gb3V0Y29tZSBhY3Jvc3MgbW9kdWxlIGNvcGllcy5cbiAgICBpZiAoZXJyb3IgIT09IG51bGwgJiYgKHR5cGVvZiBlcnJvciA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIGVycm9yID09PSAnZnVuY3Rpb24nKSkge1xuICAgICAgY29uc3QgbmFtZSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXJyb3IsICduYW1lJyk7XG4gICAgICBpZiAobmFtZSAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobmFtZSwgJ3ZhbHVlJykgJiYgbmFtZS52YWx1ZSA9PT0gJ1Vua25vd25FZmZlY3RFcnJvcicpIHtcbiAgICAgICAgcmV0dXJuICd1bmtub3duJztcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBrbm93biA/PyAndW5rbm93bic7XG4gIH1cbiAgcmV0dXJuIGtub3duID8/IGVycm9yQ2F0ZWdvcnkoZXJyb3IpO1xufVxuXG5mdW5jdGlvbiBjYXRlZ29yeU9mKGVycm9yOiB1bmtub3duKTogQXR0ZW1wdENhdGVnb3J5IHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXR0ZW1wdFRpbWVvdXRFcnJvcikgcmV0dXJuICd0aW1lb3V0JztcbiAgaWYgKGVycm9yID09PSBudWxsIHx8ICh0eXBlb2YgZXJyb3IgIT09ICdvYmplY3QnICYmIHR5cGVvZiBlcnJvciAhPT0gJ2Z1bmN0aW9uJykpIHJldHVybiAndW5rbm93bic7XG4gIGNvbnN0IGZpZWxkcyA9IGVycm9yIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIGNvbnN0IHN0YXR1cyA9IG51bWJlckZpZWxkKGZpZWxkcywgJ3N0YXR1cycpID8/IG51bWJlckZpZWxkKGZpZWxkcywgJ3N0YXR1c0NvZGUnKTtcbiAgY29uc3QgZGVjbGFyZXNSZXRyeUFmdGVyID0gaXNXYWl0KGZpZWxkcy5yZXRyeUFmdGVyTXMpIHx8IGlzV2FpdChmaWVsZHMucmV0cnlBZnRlclNlY29uZHMpO1xuICBpZiAoc3RhdHVzID09PSA0MjkgfHwgZGVjbGFyZXNSZXRyeUFmdGVyKSByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gIGlmIChzdGF0dXMgIT09IHVuZGVmaW5lZCAmJiBzdGF0dXMgPj0gNTAwICYmIHN0YXR1cyA8PSA1OTkpIHJldHVybiAnc2VydmVyJztcbiAgaWYgKHN0YXR1cyA9PT0gNDAxIHx8IHN0YXR1cyA9PT0gNDAzKSByZXR1cm4gJ2F1dGgnO1xuICBpZiAoc3RhdHVzICE9PSB1bmRlZmluZWQgJiYgc3RhdHVzID49IDQwMCAmJiBzdGF0dXMgPD0gNDk5KSByZXR1cm4gJ3Blcm1hbmVudCc7XG5cbiAgaWYgKGZpZWxkcy5yZXRyeWFibGUgPT09IGZhbHNlKSByZXR1cm4gJ3Blcm1hbmVudCc7XG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIElucHV0VmFsaWRhdGlvbkVycm9yKSByZXR1cm4gJ3Blcm1hbmVudCc7XG4gIGNvbnN0IG5hbWUgPSB0eXBlb2YgZmllbGRzLm5hbWUgPT09ICdzdHJpbmcnID8gZmllbGRzLm5hbWUgOiB1bmRlZmluZWQ7XG4gIGlmIChuYW1lICE9PSB1bmRlZmluZWQgJiYgVkFMSURBVElPTl9OQU1FUy5oYXMobmFtZSkpIHJldHVybiAncGVybWFuZW50JztcblxuICBpZiAoc3RhdHVzID09PSB1bmRlZmluZWQgJiYgaXNUcmFuc3BvcnRGYWlsdXJlKGZpZWxkcywgbmFtZSkpIHJldHVybiAnbmV0d29yayc7XG4gIHJldHVybiAndW5rbm93bic7XG59XG5cbmZ1bmN0aW9uIGlzVHJhbnNwb3J0RmFpbHVyZShmaWVsZHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgaWYgKGhhc05ldHdvcmtDb2RlKGZpZWxkcy5jb2RlKSkgcmV0dXJuIHRydWU7XG4gIGNvbnN0IGNhdXNlID0gZmllbGRzLmNhdXNlO1xuICBpZiAoY2F1c2UgIT09IG51bGwgJiYgdHlwZW9mIGNhdXNlID09PSAnb2JqZWN0JyAmJiBoYXNOZXR3b3JrQ29kZSgoY2F1c2UgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pLmNvZGUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKG5hbWUgIT09IHVuZGVmaW5lZCAmJiBUUkFOU1BPUlRfQUJPUlRfTkFNRVMuaGFzKG5hbWUpKSByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIGZpZWxkcyBpbnN0YW5jZW9mIFR5cGVFcnJvciAmJiB0eXBlb2YgZmllbGRzLm1lc3NhZ2UgPT09ICdzdHJpbmcnICYmIEZFVENIX0ZBSUxVUkUudGVzdChmaWVsZHMubWVzc2FnZSk7XG59XG5cbmZ1bmN0aW9uIGhhc05ldHdvcmtDb2RlKGNvZGU6IHVua25vd24pOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiBjb2RlID09PSAnc3RyaW5nJyAmJiBORVRXT1JLX0NPREVTLmhhcyhjb2RlKTtcbn1cblxuZnVuY3Rpb24gbnVtYmVyRmllbGQoZmllbGRzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwga2V5OiAnc3RhdHVzJyB8ICdzdGF0dXNDb2RlJyk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHZhbHVlID0gZmllbGRzW2tleV07XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIE51bWJlci5pc0Zpbml0ZSh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gaXNXYWl0KHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIE51bWJlci5pc0Zpbml0ZSh2YWx1ZSkgJiYgdmFsdWUgPj0gMDtcbn1cbiJdfQ==
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2F0dGVtcHQvY2F0ZWdvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBRUgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUd0RSw2RUFBNkU7QUFDN0UsTUFBTSxhQUFhLEdBQXdCLElBQUksR0FBRyxDQUFDO0lBQ2pELFlBQVk7SUFDWixjQUFjO0lBQ2QsV0FBVztJQUNYLFdBQVc7SUFDWCxXQUFXO0lBQ1gsT0FBTztDQUNSLENBQUMsQ0FBQztBQUVILDRHQUE0RztBQUM1RyxNQUFNLGFBQWEsR0FBRyxpR0FBaUcsQ0FBQztBQUV4SCx5RkFBeUY7QUFDekYsTUFBTSxnQkFBZ0IsR0FBd0IsSUFBSSxHQUFHLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO0FBRS9HLHNIQUFzSDtBQUN0SCxNQUFNLHFCQUFxQixHQUF3QixJQUFJLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBRTNGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBYyxFQUFFLFVBQTBCLFFBQVE7SUFDOUUsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzVDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUM1QyxJQUFJLENBQUM7UUFDSCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FB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LEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ2pGLENBQUM7QUFFRCxTQUFTLE1BQU0sQ0FBQyxLQUFjO0lBQzVCLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztBQUMzRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBhdHRlbXB0L2NhdGVnb3J5LnRzIOKAlCBgZXJyb3JDYXRlZ29yeWAsIHRoZSBPTkUgZmFpbHVyZSBjbGFzc2lmaWVyIChkZXNpZ24gwqczLjkpLlxuICpcbiAqIFNldmVuIGZpeGVkIHZhbHVlcywgc28gZXZlcnkgcmVjb3JkZXIg4oCUIHRoZSBuYXJyYXRpdmUsIHRoZSBtZXRyaWMgbGF5ZXIsIGFuIGFnZW50J3Mgb3duIOKAlCBicmVha3MgZmFpbHVyZXMgZG93blxuICogdGhlIHNhbWUgd2F5OyBhIHJlY29yZGVyIG5ldmVyIGludmVudHMgYSBjYXRlZ29yeSBvZiBpdHMgb3duLiBCb3Jyb3dlZCBmcm9tIGFnZW50Zm9vdHByaW50J3NcbiAqIGBjbGFzc2lmeVJldHJ5UmVhc29uYCBhbmQgd2lkZW5lZCwgc28gaXRzIGRlY29yYXRvcnMgYWRvcHQgdGhpcyBvbmUgcmF0aGVyIHRoYW4ga2VlcCB0aGVpcnMuXG4gKlxuICogQ2F0ZWdvcnkgaXMgRVZJREVOQ0UsIG5ldmVyIHBvbGljeTogdGhlIGRlZmF1bHQgYHJldHJ5T25gIHJldHJpZXMgZXZlcnkgY2F0ZWdvcnkuIEEgY2hhcnQgdGhhdCB3YW50cyBcIm5ldmVyXG4gKiByZXRyeSBhIHBlcm1hbmVudCBmYWlsdXJlXCIgc2F5cyBzbzogYHJldHJ5T246IChlKSA9PiBlcnJvckNhdGVnb3J5KGUpICE9PSAncGVybWFuZW50J2AuXG4gKlxuICogUHJlY2VkZW5jZSDigJQgd2hhdCB0aGUgZmFpbHVyZSBMT09LRUQgbGlrZSB3aW5zIG92ZXIgd2hhdCBpdCBkZWNsYXJlczpcbiAqICAgMS4gdGhlIGF0dGVtcHQncyBvd24gdGltZXIgKG91dGNvbWUgYCd0aW1lb3V0J2AsIG9yIG91ciBgQXR0ZW1wdFRpbWVvdXRFcnJvcmApICDihpIgdGltZW91dFxuICogICAyLiB0aGUgcnVuJ3Mgc2lnbmFsIGVuZGVkIGl0IChvdXRjb21lIGAnYWJvcnRlZCdgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkiB1bmtub3duXG4gKiAgIDMuIHN0YXR1cyA0MjksIG9yIGEgZGVjbGFyZWQgYHJldHJ5QWZ0ZXJNc2AgLyBgcmV0cnlBZnRlclNlY29uZHNgICAgICAgICAgICAgICAg4oaSIHJhdGUtbGltaXRlZFxuICogICA0LiBzdGF0dXMgNXh4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkiBzZXJ2ZXJcbiAqICAgNS4gc3RhdHVzIDQwMSAvIDQwMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpIgYXV0aFxuICogICA2LiBhbnkgb3RoZXIgNHh4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkiBwZXJtYW5lbnRcbiAqICAgNy4gYHJldHJ5YWJsZTogZmFsc2VgLCBvciBhIHZhbGlkYXRpb24gZXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpIgcGVybWFuZW50XG4gKiAgIDguIGEgdHJhbnNwb3J0IGZhaWx1cmUgKGEgc29ja2V0IGNvZGUgb24gdGhlIGVycm9yIG9yIGl0cyBjYXVzZSwgYSBmZXRjaFxuICogICAgICBgVHlwZUVycm9yYCwgYW4gYEFib3J0RXJyb3JgIC8gYFRpbWVvdXRFcnJvcmAgdGhhdCB3YXMgbm90IHRoZSBydW4ncykgICAgICAgIOKGkiBuZXR3b3JrXG4gKiAgIDkuIGFueXRoaW5nIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaSIHVua25vd25cbiAqXG4gKiBBIHN0YXR1cyBpcyBhIE5VTUJFUiAoYHN0YXR1c2Agb3IgYHN0YXR1c0NvZGVgKTsgYSBudW1lcmljIHN0cmluZyBpcyBub3QgcmVhZCBhcyBvbmUuIE1ldGFkYXRhIHVzZXMgb25seVxuICogb3duL2luaGVyaXRlZCBkYXRhIHdpdGhpbiAzMiBwcm90b3R5cGUgb2JqZWN0czsgYSBjYWxsZXIgYWNjZXNzb3Igc2hhZG93cyBmYXJ0aGVyIGRhdGEgd2l0aG91dCBleGVjdXRpbmcuXG4gKiBUaGUgY2FwdHVyZWQgcGxhdGZvcm0gRE9NRXhjZXB0aW9uIG5hbWUgZ2V0dGVyIGlzIHRoZSBzb2xlIGFjY2Vzc29yIGV4Y2VwdGlvbiBhbmQgYnJhbmQtY2hlY2tzIGl0cyByZWNlaXZlci5cbiAqIEluc3BlY3Rpb24gZmFpbHVyZXMgKGEgaG9zdGlsZSBQcm94eSkgYXJlIGAndW5rbm93bidgLCBuZXZlciBhIHNlY29uZCB0aHJvdyBmcm9tIGFuIGVycm9yIHBhdGguXG4gKi9cblxuaW1wb3J0IHsgSW5wdXRWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuLi9zY2hlbWEvZXJyb3JzLmpzJztcbmltcG9ydCB7IGVycm9yRmllbGQgfSBmcm9tICcuL2Vycm9yRmllbGQuanMnO1xuaW1wb3J0IHsgQXR0ZW1wdFRpbWVvdXRFcnJvciwgVW5rbm93bkVmZmVjdEVycm9yIH0gZnJvbSAnLi9lcnJvcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBBdHRlbXB0Q2F0ZWdvcnksIEF0dGVtcHRPdXRjb21lIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKiBTb2NrZXQtbGV2ZWwgY29kZXMgYSB0cmFuc3BvcnQgZmFpbHVyZSBjYXJyaWVzIChOb2RlJ3MgYGVycm5vYCBuYW1lcykuICovXG5jb25zdCBORVRXT1JLX0NPREVTOiBSZWFkb25seVNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdFQ09OTlJFU0VUJyxcbiAgJ0VDT05OUkVGVVNFRCcsXG4gICdFTk9URk9VTkQnLFxuICAnRVRJTUVET1VUJyxcbiAgJ0VBSV9BR0FJTicsXG4gICdFUElQRScsXG5dKTtcblxuLyoqIFRoZSBtZXNzYWdlcyBydW50aW1lcyBnaXZlIGEgYGZldGNoYCB0aGF0IG5ldmVyIHJlYWNoZWQgdGhlIHNlcnZlciAoTm9kZSwgQ2hyb21pdW0sIEZpcmVmb3gsIFNhZmFyaSkuICovXG5jb25zdCBGRVRDSF9GQUlMVVJFID0gL14oZmV0Y2ggZmFpbGVkfGZhaWxlZCB0byBmZXRjaHxuZXR3b3JrZXJyb3Igd2hlbiBhdHRlbXB0aW5nIHRvIGZldGNoIHJlc291cmNlXFwuP3xsb2FkIGZhaWxlZCkkL2k7XG5cbi8qKiBFcnJvciBuYW1lcyB0aGF0IHNheSBhIHZhbGlkYXRpb24gZmFpbGVkIOKAlCByZXRyeWluZyB0aGUgc2FtZSBpbnB1dCBjYW5ub3Qgc3VjY2VlZC4gKi9cbmNvbnN0IFZBTElEQVRJT05fTkFNRVM6IFJlYWRvbmx5U2V0PHN0cmluZz4gPSBuZXcgU2V0KFsnVmFsaWRhdGlvbkVycm9yJywgJ1pvZEVycm9yJywgJ0lucHV0VmFsaWRhdGlvbkVycm9yJ10pO1xuXG4vKiogRXJyb3IgbmFtZXMgb2YgYW4gYWJvcnQgb3IgYSB0aW1lb3V0IHRoYXQgc29tZSBPVEhFUiBzaWduYWwgcmFpc2VkICh0aGUgcnVuJ3Mgb3duIGVuZHMgYXMgb3V0Y29tZSBgJ2Fib3J0ZWQnYCkuICovXG5jb25zdCBUUkFOU1BPUlRfQUJPUlRfTkFNRVM6IFJlYWRvbmx5U2V0PHN0cmluZz4gPSBuZXcgU2V0KFsnQWJvcnRFcnJvcicsICdUaW1lb3V0RXJyb3InXSk7XG5cbi8qKlxuICogVGhlIGNhdGVnb3J5IG9mIGFuIGF0dGVtcHQncyBmYWlsdXJlLiBgb3V0Y29tZWAgaXMgaG93IHRoZSBhdHRlbXB0IGVuZGVkIChkZWZhdWx0IGAnZmFpbGVkJ2ApOiBpdCBkZWNpZGVzXG4gKiBgJ3RpbWVvdXQnYCAodGhlIGF0dGVtcHQncyBvd24gdGltZXIpIGFuZCBgJ3Vua25vd24nYCAodGhlIHJ1bidzIHNpZ25hbCkgYmVmb3JlIHRoZSBlcnJvciBpcyByZWFkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXJyb3JDYXRlZ29yeShlcnJvcjogdW5rbm93biwgb3V0Y29tZTogQXR0ZW1wdE91dGNvbWUgPSAnZmFpbGVkJyk6IEF0dGVtcHRDYXRlZ29yeSB7XG4gIGlmIChvdXRjb21lID09PSAndGltZW91dCcpIHJldHVybiAndGltZW91dCc7XG4gIGlmIChvdXRjb21lID09PSAnYWJvcnRlZCcpIHJldHVybiAndW5rbm93bic7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGNhdGVnb3J5T2YoZXJyb3IpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gJ3Vua25vd24nO1xuICB9XG59XG5cbi8qKlxuICogQGludGVybmFsIFRlcm1pbmFsIG93bmVyc2hpcCBwcmVzZXJ2ZXMgYSBwcm9kdWNlcidzIGtub3duIGNhdGVnb3J5LiBBblxuICogdW5yZXNvbHZlZCBlZmZlY3QgaXMgdW5rbm93biwgbmV2ZXIgdGhlIGNhdGVnb3J5IG9mIGl0cyBwaHlzaWNhbCBjYXVzZS5cbiAqIFRoaXMgZG9lcyBub3QgcmV3cml0ZSBoaXN0b3JpY2FsIGF0dGVtcHQgY2F0ZWdvcmllcyBvciByZS1yZWFkIGEga25vd24gb25lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdGVybWluYWxDYXRlZ29yeShlcnJvcjogdW5rbm93biwga25vd24/OiBBdHRlbXB0Q2F0ZWdvcnkpOiBBdHRlbXB0Q2F0ZWdvcnkge1xuICB0cnkge1xuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFVua25vd25FZmZlY3RFcnJvcikgcmV0dXJuICd1bmtub3duJztcbiAgICAvLyBDSlMgYW5kIEVTTSBoYXZlIGRpc3RpbmN0IGNvbnN0cnVjdG9ycy4gQSBkZWNsYXJlZCBvd24gREFUQSBuYW1lIG1heVxuICAgIC8vIG9ubHkgcmVkdWNlIGNlcnRhaW50eSB0byB1bmtub3duOyBuZXZlciBleGVjdXRlIGFuIGVycm9yJ3MgbmFtZSBnZXR0ZXJcbiAgICAvLyBvciBwcm9tb3RlIGl0cyBwaHlzaWNhbCBjYXVzZSB0byBhIGtub3duIG91dGNvbWUgYWNyb3NzIG1vZHVsZSBjb3BpZXMuXG4gICAgaWYgKGVycm9yICE9PSBudWxsICYmICh0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBlcnJvciA9PT0gJ2Z1bmN0aW9uJykpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGVycm9yLCAnbmFtZScpO1xuICAgICAgaWYgKG5hbWUgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG5hbWUsICd2YWx1ZScpICYmIG5hbWUudmFsdWUgPT09ICdVbmtub3duRWZmZWN0RXJyb3InKSB7XG4gICAgICAgIHJldHVybiAndW5rbm93bic7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ga25vd24gPz8gJ3Vua25vd24nO1xuICB9XG4gIHJldHVybiBrbm93biA/PyBlcnJvckNhdGVnb3J5KGVycm9yKTtcbn1cblxuZnVuY3Rpb24gY2F0ZWdvcnlPZihlcnJvcjogdW5rbm93bik6IEF0dGVtcHRDYXRlZ29yeSB7XG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIEF0dGVtcHRUaW1lb3V0RXJyb3IpIHJldHVybiAndGltZW91dCc7XG4gIGlmIChlcnJvciA9PT0gbnVsbCB8fCAodHlwZW9mIGVycm9yICE9PSAnb2JqZWN0JyAmJiB0eXBlb2YgZXJyb3IgIT09ICdmdW5jdGlvbicpKSByZXR1cm4gJ3Vua25vd24nO1xuICBjb25zdCBmaWVsZHMgPSBlcnJvciBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICBjb25zdCBzdGF0dXMgPSBudW1iZXJGaWVsZChmaWVsZHMsICdzdGF0dXMnKSA/PyBudW1iZXJGaWVsZChmaWVsZHMsICdzdGF0dXNDb2RlJyk7XG4gIGNvbnN0IGRlY2xhcmVzUmV0cnlBZnRlciA9XG4gICAgaXNXYWl0KGVycm9yRmllbGQoZmllbGRzLCAncmV0cnlBZnRlck1zJykpIHx8IGlzV2FpdChlcnJvckZpZWxkKGZpZWxkcywgJ3JldHJ5QWZ0ZXJTZWNvbmRzJykpO1xuICBpZiAoc3RhdHVzID09PSA0MjkgfHwgZGVjbGFyZXNSZXRyeUFmdGVyKSByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gIGlmIChzdGF0dXMgIT09IHVuZGVmaW5lZCAmJiBzdGF0dXMgPj0gNTAwICYmIHN0YXR1cyA8PSA1OTkpIHJldHVybiAnc2VydmVyJztcbiAgaWYgKHN0YXR1cyA9PT0gNDAxIHx8IHN0YXR1cyA9PT0gNDAzKSByZXR1cm4gJ2F1dGgnO1xuICBpZiAoc3RhdHVzICE9PSB1bmRlZmluZWQgJiYgc3RhdHVzID49IDQwMCAmJiBzdGF0dXMgPD0gNDk5KSByZXR1cm4gJ3Blcm1hbmVudCc7XG5cbiAgaWYgKGVycm9yRmllbGQoZmllbGRzLCAncmV0cnlhYmxlJykgPT09IGZhbHNlKSByZXR1cm4gJ3Blcm1hbmVudCc7XG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIElucHV0VmFsaWRhdGlvbkVycm9yKSByZXR1cm4gJ3Blcm1hbmVudCc7XG4gIGNvbnN0IGRlY2xhcmVkTmFtZSA9IGVycm9yRmllbGQoZmllbGRzLCAnbmFtZScpO1xuICBjb25zdCBuYW1lID0gdHlwZW9mIGRlY2xhcmVkTmFtZSA9PT0gJ3N0cmluZycgPyBkZWNsYXJlZE5hbWUgOiB1bmRlZmluZWQ7XG4gIGlmIChuYW1lICE9PSB1bmRlZmluZWQgJiYgVkFMSURBVElPTl9OQU1FUy5oYXMobmFtZSkpIHJldHVybiAncGVybWFuZW50JztcblxuICBpZiAoc3RhdHVzID09PSB1bmRlZmluZWQgJiYgaXNUcmFuc3BvcnRGYWlsdXJlKGZpZWxkcywgbmFtZSkpIHJldHVybiAnbmV0d29yayc7XG4gIHJldHVybiAndW5rbm93bic7XG59XG5cbmZ1bmN0aW9uIGlzVHJhbnNwb3J0RmFpbHVyZShmaWVsZHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgaWYgKGhhc05ldHdvcmtDb2RlKGVycm9yRmllbGQoZmllbGRzLCAnY29kZScpKSkgcmV0dXJuIHRydWU7XG4gIGNvbnN0IGNhdXNlID0gZXJyb3JGaWVsZChmaWVsZHMsICdjYXVzZScpO1xuICBpZiAoY2F1c2UgIT09IG51bGwgJiYgdHlwZW9mIGNhdXNlID09PSAnb2JqZWN0JyAmJiBoYXNOZXR3b3JrQ29kZShlcnJvckZpZWxkKGNhdXNlLCAnY29kZScpKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChuYW1lICE9PSB1bmRlZmluZWQgJiYgVFJBTlNQT1JUX0FCT1JUX05BTUVTLmhhcyhuYW1lKSkgcmV0dXJuIHRydWU7XG4gIGlmICghKGZpZWxkcyBpbnN0YW5jZW9mIFR5cGVFcnJvcikpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgbWVzc2FnZSA9IGVycm9yRmllbGQoZmllbGRzLCAnbWVzc2FnZScpO1xuICByZXR1cm4gdHlwZW9mIG1lc3NhZ2UgPT09ICdzdHJpbmcnICYmIEZFVENIX0ZBSUxVUkUudGVzdChtZXNzYWdlKTtcbn1cblxuZnVuY3Rpb24gaGFzTmV0d29ya0NvZGUoY29kZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZW9mIGNvZGUgPT09ICdzdHJpbmcnICYmIE5FVFdPUktfQ09ERVMuaGFzKGNvZGUpO1xufVxuXG5mdW5jdGlvbiBudW1iZXJGaWVsZChmaWVsZHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXk6ICdzdGF0dXMnIHwgJ3N0YXR1c0NvZGUnKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdmFsdWUgPSBlcnJvckZpZWxkKGZpZWxkcywga2V5KTtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc1dhaXQodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKHZhbHVlKSAmJiB2YWx1ZSA+PSAwO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ /** Caller accessors shadow farther data. Only the captured platform name getter may run. */
2
+ export declare function errorField(value: unknown, key: string): unknown;
@@ -0,0 +1,32 @@
1
+ /** A finite inheritance allowance for ordinary Error subclasses and metadata. */
2
+ const MAX_ERROR_FIELD_DEPTH = 32;
3
+ // Capture the platform intrinsic once; never call a later caller replacement.
4
+ const DOM_EXCEPTION_PROTOTYPE = typeof DOMException === 'function' ? DOMException.prototype : undefined;
5
+ const DOM_EXCEPTION_NAME = DOM_EXCEPTION_PROTOTYPE
6
+ ? Object.getOwnPropertyDescriptor(DOM_EXCEPTION_PROTOTYPE, 'name')?.get
7
+ : undefined;
8
+ const APPLY_INTRINSIC = Reflect.apply;
9
+ /** Caller accessors shadow farther data. Only the captured platform name getter may run. */
10
+ export function errorField(value, key) {
11
+ if (value === null || (typeof value !== 'object' && typeof value !== 'function'))
12
+ return undefined;
13
+ let current = value;
14
+ for (let depth = 0; current !== null && depth < MAX_ERROR_FIELD_DEPTH; depth++) {
15
+ const property = Object.getOwnPropertyDescriptor(current, key);
16
+ if (property) {
17
+ if (Object.prototype.hasOwnProperty.call(property, 'value'))
18
+ return property.value;
19
+ if (key === 'name' &&
20
+ current === DOM_EXCEPTION_PROTOTYPE &&
21
+ DOM_EXCEPTION_NAME &&
22
+ property.get === DOM_EXCEPTION_NAME) {
23
+ // The intrinsic brand-checks its receiver, refusing forged prototypes and proxies.
24
+ return APPLY_INTRINSIC(DOM_EXCEPTION_NAME, value, []);
25
+ }
26
+ return undefined;
27
+ }
28
+ current = Object.getPrototypeOf(current);
29
+ }
30
+ return undefined;
31
+ }
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JGaWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvYXR0ZW1wdC9lcnJvckZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlGQUFpRjtBQUNqRixNQUFNLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztBQUVqQyw4RUFBOEU7QUFDOUUsTUFBTSx1QkFBdUIsR0FBRyxPQUFPLFlBQVksS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUN4RyxNQUFNLGtCQUFrQixHQUFHLHVCQUF1QjtJQUNoRCxDQUFDLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLHVCQUF1QixFQUFFLE1BQU0sQ0FBQyxFQUFFLEdBQUc7SUFDdkUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNkLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFFdEMsNEZBQTRGO0FBQzVGLE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBYyxFQUFFLEdBQVc7SUFDcEQsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ25HLElBQUksT0FBTyxHQUFrQixLQUFLLENBQUM7SUFDbkMsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsT0FBTyxLQUFLLElBQUksSUFBSSxLQUFLLEdBQUcscUJBQXFCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUMvRSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQy9ELElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDO2dCQUFFLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQztZQUNuRixJQUNFLEdBQUcsS0FBSyxNQUFNO2dCQUNkLE9BQU8sS0FBSyx1QkFBdUI7Z0JBQ25DLGtCQUFrQjtnQkFDbEIsUUFBUSxDQUFDLEdBQUcsS0FBSyxrQkFBa0IsRUFDbkMsQ0FBQztnQkFDRCxtRkFBbUY7Z0JBQ25GLE9BQU8sZUFBZSxDQUFDLGtCQUFrQixFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN4RCxDQUFDO1lBQ0QsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE9BQU8sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEEgZmluaXRlIGluaGVyaXRhbmNlIGFsbG93YW5jZSBmb3Igb3JkaW5hcnkgRXJyb3Igc3ViY2xhc3NlcyBhbmQgbWV0YWRhdGEuICovXG5jb25zdCBNQVhfRVJST1JfRklFTERfREVQVEggPSAzMjtcblxuLy8gQ2FwdHVyZSB0aGUgcGxhdGZvcm0gaW50cmluc2ljIG9uY2U7IG5ldmVyIGNhbGwgYSBsYXRlciBjYWxsZXIgcmVwbGFjZW1lbnQuXG5jb25zdCBET01fRVhDRVBUSU9OX1BST1RPVFlQRSA9IHR5cGVvZiBET01FeGNlcHRpb24gPT09ICdmdW5jdGlvbicgPyBET01FeGNlcHRpb24ucHJvdG90eXBlIDogdW5kZWZpbmVkO1xuY29uc3QgRE9NX0VYQ0VQVElPTl9OQU1FID0gRE9NX0VYQ0VQVElPTl9QUk9UT1RZUEVcbiAgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKERPTV9FWENFUFRJT05fUFJPVE9UWVBFLCAnbmFtZScpPy5nZXRcbiAgOiB1bmRlZmluZWQ7XG5jb25zdCBBUFBMWV9JTlRSSU5TSUMgPSBSZWZsZWN0LmFwcGx5O1xuXG4vKiogQ2FsbGVyIGFjY2Vzc29ycyBzaGFkb3cgZmFydGhlciBkYXRhLiBPbmx5IHRoZSBjYXB0dXJlZCBwbGF0Zm9ybSBuYW1lIGdldHRlciBtYXkgcnVuLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVycm9yRmllbGQodmFsdWU6IHVua25vd24sIGtleTogc3RyaW5nKTogdW5rbm93biB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyAmJiB0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicpKSByZXR1cm4gdW5kZWZpbmVkO1xuICBsZXQgY3VycmVudDogb2JqZWN0IHwgbnVsbCA9IHZhbHVlO1xuICBmb3IgKGxldCBkZXB0aCA9IDA7IGN1cnJlbnQgIT09IG51bGwgJiYgZGVwdGggPCBNQVhfRVJST1JfRklFTERfREVQVEg7IGRlcHRoKyspIHtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY3VycmVudCwga2V5KTtcbiAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocHJvcGVydHksICd2YWx1ZScpKSByZXR1cm4gcHJvcGVydHkudmFsdWU7XG4gICAgICBpZiAoXG4gICAgICAgIGtleSA9PT0gJ25hbWUnICYmXG4gICAgICAgIGN1cnJlbnQgPT09IERPTV9FWENFUFRJT05fUFJPVE9UWVBFICYmXG4gICAgICAgIERPTV9FWENFUFRJT05fTkFNRSAmJlxuICAgICAgICBwcm9wZXJ0eS5nZXQgPT09IERPTV9FWENFUFRJT05fTkFNRVxuICAgICAgKSB7XG4gICAgICAgIC8vIFRoZSBpbnRyaW5zaWMgYnJhbmQtY2hlY2tzIGl0cyByZWNlaXZlciwgcmVmdXNpbmcgZm9yZ2VkIHByb3RvdHlwZXMgYW5kIHByb3hpZXMuXG4gICAgICAgIHJldHVybiBBUFBMWV9JTlRSSU5TSUMoRE9NX0VYQ0VQVElPTl9OQU1FLCB2YWx1ZSwgW10pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY3VycmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihjdXJyZW50KTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuIl19
@@ -21,12 +21,15 @@
21
21
  * `TypeError`, an `AbortError` / `TimeoutError` that was not the run's) → network
22
22
  * 9. anything else → unknown
23
23
  *
24
- * A status is a NUMBER (`status` or `statusCode`); a numeric string is not read as one. Total: a value whose
25
- * reads throw (a hostile Proxy) is `'unknown'`, never a second throw from an error path.
24
+ * A status is a NUMBER (`status` or `statusCode`); a numeric string is not read as one. Metadata uses only
25
+ * own/inherited data within 32 prototype objects; a caller accessor shadows farther data without executing.
26
+ * The captured platform DOMException name getter is the sole accessor exception and brand-checks its receiver.
27
+ * Inspection failures (a hostile Proxy) are `'unknown'`, never a second throw from an error path.
26
28
  */
27
29
  Object.defineProperty(exports, "__esModule", { value: true });
28
30
  exports.terminalCategory = exports.errorCategory = void 0;
29
31
  const errors_js_1 = require("../schema/errors.js");
32
+ const errorField_js_1 = require("./errorField.js");
30
33
  const errors_js_2 = require("./errors.js");
31
34
  /** Socket-level codes a transport failure carries (Node's `errno` names). */
32
35
  const NETWORK_CODES = new Set([
@@ -92,7 +95,7 @@ function categoryOf(error) {
92
95
  return 'unknown';
93
96
  const fields = error;
94
97
  const status = numberField(fields, 'status') ?? numberField(fields, 'statusCode');
95
- const declaresRetryAfter = isWait(fields.retryAfterMs) || isWait(fields.retryAfterSeconds);
98
+ const declaresRetryAfter = isWait((0, errorField_js_1.errorField)(fields, 'retryAfterMs')) || isWait((0, errorField_js_1.errorField)(fields, 'retryAfterSeconds'));
96
99
  if (status === 429 || declaresRetryAfter)
97
100
  return 'rate-limited';
98
101
  if (status !== undefined && status >= 500 && status <= 599)
@@ -101,11 +104,12 @@ function categoryOf(error) {
101
104
  return 'auth';
102
105
  if (status !== undefined && status >= 400 && status <= 499)
103
106
  return 'permanent';
104
- if (fields.retryable === false)
107
+ if ((0, errorField_js_1.errorField)(fields, 'retryable') === false)
105
108
  return 'permanent';
106
109
  if (error instanceof errors_js_1.InputValidationError)
107
110
  return 'permanent';
108
- const name = typeof fields.name === 'string' ? fields.name : undefined;
111
+ const declaredName = (0, errorField_js_1.errorField)(fields, 'name');
112
+ const name = typeof declaredName === 'string' ? declaredName : undefined;
109
113
  if (name !== undefined && VALIDATION_NAMES.has(name))
110
114
  return 'permanent';
111
115
  if (status === undefined && isTransportFailure(fields, name))
@@ -113,24 +117,27 @@ function categoryOf(error) {
113
117
  return 'unknown';
114
118
  }
115
119
  function isTransportFailure(fields, name) {
116
- if (hasNetworkCode(fields.code))
120
+ if (hasNetworkCode((0, errorField_js_1.errorField)(fields, 'code')))
117
121
  return true;
118
- const cause = fields.cause;
119
- if (cause !== null && typeof cause === 'object' && hasNetworkCode(cause.code)) {
122
+ const cause = (0, errorField_js_1.errorField)(fields, 'cause');
123
+ if (cause !== null && typeof cause === 'object' && hasNetworkCode((0, errorField_js_1.errorField)(cause, 'code'))) {
120
124
  return true;
121
125
  }
122
126
  if (name !== undefined && TRANSPORT_ABORT_NAMES.has(name))
123
127
  return true;
124
- return fields instanceof TypeError && typeof fields.message === 'string' && FETCH_FAILURE.test(fields.message);
128
+ if (!(fields instanceof TypeError))
129
+ return false;
130
+ const message = (0, errorField_js_1.errorField)(fields, 'message');
131
+ return typeof message === 'string' && FETCH_FAILURE.test(message);
125
132
  }
126
133
  function hasNetworkCode(code) {
127
134
  return typeof code === 'string' && NETWORK_CODES.has(code);
128
135
  }
129
136
  function numberField(fields, key) {
130
- const value = fields[key];
137
+ const value = (0, errorField_js_1.errorField)(fields, key);
131
138
  return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
132
139
  }
133
140
  function isWait(value) {
134
141
  return typeof value === 'number' && Number.isFinite(value) && value >= 0;
135
142
  }
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2F0dGVtcHQvY2F0ZWdvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7OztBQUVILG1EQUEyRDtBQUMzRCwyQ0FBc0U7QUFHdEUsNkVBQTZFO0FBQzdFLE1BQU0sYUFBYSxHQUF3QixJQUFJLEdBQUcsQ0FBQztJQUNqRCxZQUFZO0lBQ1osY0FBYztJQUNkLFdBQVc7SUFDWCxXQUFXO0lBQ1gsV0FBVztJQUNYLE9BQU87Q0FDUixDQUFDLENBQUM7QUFFSCw0R0FBNEc7QUFDNUcsTUFBTSxhQUFhLEdBQUcsaUdBQWlHLENBQUM7QUFFeEgseUZBQXlGO0FBQ3pGLE1BQU0sZ0JBQWdCLEdBQXdCLElBQUksR0FBRyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLHNCQUFzQixDQUFDLENBQUMsQ0FBQztBQUUvRyxzSEFBc0g7QUFDdEgsTUFBTSxxQkFBcUIsR0FBd0IsSUFBSSxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztBQUUzRjs7O0dBR0c7QUFDSCxTQUFnQixhQUFhLENBQUMsS0FBYyxFQUFFLFVBQTBCLFFBQVE7SUFDOUUsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzVDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUM1QyxJQUFJLENBQUM7UUFDSCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFSRCxzQ0FRQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxLQUFjLEVBQUUsS0FBdUI7SUFDdEUsSUFBSSxDQUFDO1FBQ0gsSUFBSSxL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QUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxjQUFjLENBQUUsS0FBaUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzNHLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELElBQUksSUFBSSxLQUFLLFNBQVMsSUFBSSxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDdkUsT0FBTyxNQUFNLFlBQVksU0FBUyxJQUFJLE9BQU8sTUFBTSxDQUFDLE9BQU8sS0FBSyxRQUFRLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDakgsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLElBQWE7SUFDbkMsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsTUFBK0IsRUFBRSxHQUE0QjtJQUNoRixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDakYsQ0FBQztBQUVELFNBQVMsTUFBTSxDQUFDLEtBQWM7SUFDNUIsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO0FBQzNFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGF0dGVtcHQvY2F0ZWdvcnkudHMg4oCUIGBlcnJvckNhdGVnb3J5YCwgdGhlIE9ORSBmYWlsdXJlIGNsYXNzaWZpZXIgKGRlc2lnbiDCpzMuOSkuXG4gKlxuICogU2V2ZW4gZml4ZWQgdmFsdWVzLCBzbyBldmVyeSByZWNvcmRlciDigJQgdGhlIG5hcnJhdGl2ZSwgdGhlIG1ldHJpYyBsYXllciwgYW4gYWdlbnQncyBvd24g4oCUIGJyZWFrcyBmYWlsdXJlcyBkb3duXG4gKiB0aGUgc2FtZSB3YXk7IGEgcmVjb3JkZXIgbmV2ZXIgaW52ZW50cyBhIGNhdGVnb3J5IG9mIGl0cyBvd24uIEJvcnJvd2VkIGZyb20gYWdlbnRmb290cHJpbnQnc1xuICogYGNsYXNzaWZ5UmV0cnlSZWFzb25gIGFuZCB3aWRlbmVkLCBzbyBpdHMgZGVjb3JhdG9ycyBhZG9wdCB0aGlzIG9uZSByYXRoZXIgdGhhbiBrZWVwIHRoZWlycy5cbiAqXG4gKiBDYXRlZ29yeSBpcyBFVklERU5DRSwgbmV2ZXIgcG9saWN5OiB0aGUgZGVmYXVsdCBgcmV0cnlPbmAgcmV0cmllcyBldmVyeSBjYXRlZ29yeS4gQSBjaGFydCB0aGF0IHdhbnRzIFwibmV2ZXJcbiAqIHJldHJ5IGEgcGVybWFuZW50IGZhaWx1cmVcIiBzYXlzIHNvOiBgcmV0cnlPbjogKGUpID0+IGVycm9yQ2F0ZWdvcnkoZSkgIT09ICdwZXJtYW5lbnQnYC5cbiAqXG4gKiBQcmVjZWRlbmNlIOKAlCB3aGF0IHRoZSBmYWlsdXJlIExPT0tFRCBsaWtlIHdpbnMgb3ZlciB3aGF0IGl0IGRlY2xhcmVzOlxuICogICAxLiB0aGUgYXR0ZW1wdCdzIG93biB0aW1lciAob3V0Y29tZSBgJ3RpbWVvdXQnYCwgb3Igb3VyIGBBdHRlbXB0VGltZW91dEVycm9yYCkgIOKGkiB0aW1lb3V0XG4gKiAgIDIuIHRoZSBydW4ncyBzaWduYWwgZW5kZWQgaXQgKG91dGNvbWUgYCdhYm9ydGVkJ2ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaSIHVua25vd25cbiAqICAgMy4gc3RhdHVzIDQyOSwgb3IgYSBkZWNsYXJlZCBgcmV0cnlBZnRlck1zYCAvIGByZXRyeUFmdGVyU2Vjb25kc2AgICAgICAgICAgICAgICDihpIgcmF0ZS1saW1pdGVkXG4gKiAgIDQuIHN0YXR1cyA1eHggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaSIHNlcnZlclxuICogICA1LiBzdGF0dXMgNDAxIC8gNDAzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkiBhdXRoXG4gKiAgIDYuIGFueSBvdGhlciA0eHggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaSIHBlcm1hbmVudFxuICogICA3LiBgcmV0cnlhYmxlOiBmYWxzZWAsIG9yIGEgdmFsaWRhdGlvbiBlcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkiBwZXJtYW5lbnRcbiAqICAgOC4gYSB0cmFuc3BvcnQgZmFpbHVyZSAoYSBzb2NrZXQgY29kZSBvbiB0aGUgZXJyb3Igb3IgaXRzIGNhdXNlLCBhIGZldGNoXG4gKiAgICAgIGBUeXBlRXJyb3JgLCBhbiBgQWJvcnRFcnJvcmAgLyBgVGltZW91dEVycm9yYCB0aGF0IHdhcyBub3QgdGhlIHJ1bidzKSAgICAgICAg4oaSIG5ldHdvcmtcbiAqICAgOS4gYW55dGhpbmcgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpIgdW5rbm93blxuICpcbiAqIEEgc3RhdHVzIGlzIGEgTlVNQkVSIChgc3RhdHVzYCBvciBgc3RhdHVzQ29kZWApOyBhIG51bWVyaWMgc3RyaW5nIGlzIG5vdCByZWFkIGFzIG9uZS4gVG90YWw6IGEgdmFsdWUgd2hvc2VcbiAqIHJlYWRzIHRocm93IChhIGhvc3RpbGUgUHJveHkpIGlzIGAndW5rbm93bidgLCBuZXZlciBhIHNlY29uZCB0aHJvdyBmcm9tIGFuIGVycm9yIHBhdGguXG4gKi9cblxuaW1wb3J0IHsgSW5wdXRWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuLi9zY2hlbWEvZXJyb3JzLmpzJztcbmltcG9ydCB7IEF0dGVtcHRUaW1lb3V0RXJyb3IsIFVua25vd25FZmZlY3RFcnJvciB9IGZyb20gJy4vZXJyb3JzLmpzJztcbmltcG9ydCB0eXBlIHsgQXR0ZW1wdENhdGVnb3J5LCBBdHRlbXB0T3V0Y29tZSB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG4vKiogU29ja2V0LWxldmVsIGNvZGVzIGEgdHJhbnNwb3J0IGZhaWx1cmUgY2FycmllcyAoTm9kZSdzIGBlcnJub2AgbmFtZXMpLiAqL1xuY29uc3QgTkVUV09SS19DT0RFUzogUmVhZG9ubHlTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoW1xuICAnRUNPTk5SRVNFVCcsXG4gICdFQ09OTlJFRlVTRUQnLFxuICAnRU5PVEZPVU5EJyxcbiAgJ0VUSU1FRE9VVCcsXG4gICdFQUlfQUdBSU4nLFxuICAnRVBJUEUnLFxuXSk7XG5cbi8qKiBUaGUgbWVzc2FnZXMgcnVudGltZXMgZ2l2ZSBhIGBmZXRjaGAgdGhhdCBuZXZlciByZWFjaGVkIHRoZSBzZXJ2ZXIgKE5vZGUsIENocm9taXVtLCBGaXJlZm94LCBTYWZhcmkpLiAqL1xuY29uc3QgRkVUQ0hfRkFJTFVSRSA9IC9eKGZldGNoIGZhaWxlZHxmYWlsZWQgdG8gZmV0Y2h8bmV0d29ya2Vycm9yIHdoZW4gYXR0ZW1wdGluZyB0byBmZXRjaCByZXNvdXJjZVxcLj98bG9hZCBmYWlsZWQpJC9pO1xuXG4vKiogRXJyb3IgbmFtZXMgdGhhdCBzYXkgYSB2YWxpZGF0aW9uIGZhaWxlZCDigJQgcmV0cnlpbmcgdGhlIHNhbWUgaW5wdXQgY2Fubm90IHN1Y2NlZWQuICovXG5jb25zdCBWQUxJREFUSU9OX05BTUVTOiBSZWFkb25seVNldDxzdHJpbmc+ID0gbmV3IFNldChbJ1ZhbGlkYXRpb25FcnJvcicsICdab2RFcnJvcicsICdJbnB1dFZhbGlkYXRpb25FcnJvciddKTtcblxuLyoqIEVycm9yIG5hbWVzIG9mIGFuIGFib3J0IG9yIGEgdGltZW91dCB0aGF0IHNvbWUgT1RIRVIgc2lnbmFsIHJhaXNlZCAodGhlIHJ1bidzIG93biBlbmRzIGFzIG91dGNvbWUgYCdhYm9ydGVkJ2ApLiAqL1xuY29uc3QgVFJBTlNQT1JUX0FCT1JUX05BTUVTOiBSZWFkb25seVNldDxzdHJpbmc+ID0gbmV3IFNldChbJ0Fib3J0RXJyb3InLCAnVGltZW91dEVycm9yJ10pO1xuXG4vKipcbiAqIFRoZSBjYXRlZ29yeSBvZiBhbiBhdHRlbXB0J3MgZmFpbHVyZS4gYG91dGNvbWVgIGlzIGhvdyB0aGUgYXR0ZW1wdCBlbmRlZCAoZGVmYXVsdCBgJ2ZhaWxlZCdgKTogaXQgZGVjaWRlc1xuICogYCd0aW1lb3V0J2AgKHRoZSBhdHRlbXB0J3Mgb3duIHRpbWVyKSBhbmQgYCd1bmtub3duJ2AgKHRoZSBydW4ncyBzaWduYWwpIGJlZm9yZSB0aGUgZXJyb3IgaXMgcmVhZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVycm9yQ2F0ZWdvcnkoZXJyb3I6IHVua25vd24sIG91dGNvbWU6IEF0dGVtcHRPdXRjb21lID0gJ2ZhaWxlZCcpOiBBdHRlbXB0Q2F0ZWdvcnkge1xuICBpZiAob3V0Y29tZSA9PT0gJ3RpbWVvdXQnKSByZXR1cm4gJ3RpbWVvdXQnO1xuICBpZiAob3V0Y29tZSA9PT0gJ2Fib3J0ZWQnKSByZXR1cm4gJ3Vua25vd24nO1xuICB0cnkge1xuICAgIHJldHVybiBjYXRlZ29yeU9mKGVycm9yKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuICd1bmtub3duJztcbiAgfVxufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUZXJtaW5hbCBvd25lcnNoaXAgcHJlc2VydmVzIGEgcHJvZHVjZXIncyBrbm93biBjYXRlZ29yeS4gQW5cbiAqIHVucmVzb2x2ZWQgZWZmZWN0IGlzIHVua25vd24sIG5ldmVyIHRoZSBjYXRlZ29yeSBvZiBpdHMgcGh5c2ljYWwgY2F1c2UuXG4gKiBUaGlzIGRvZXMgbm90IHJld3JpdGUgaGlzdG9yaWNhbCBhdHRlbXB0IGNhdGVnb3JpZXMgb3IgcmUtcmVhZCBhIGtub3duIG9uZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRlcm1pbmFsQ2F0ZWdvcnkoZXJyb3I6IHVua25vd24sIGtub3duPzogQXR0ZW1wdENhdGVnb3J5KTogQXR0ZW1wdENhdGVnb3J5IHtcbiAgdHJ5IHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBVbmtub3duRWZmZWN0RXJyb3IpIHJldHVybiAndW5rbm93bic7XG4gICAgLy8gQ0pTIGFuZCBFU00gaGF2ZSBkaXN0aW5jdCBjb25zdHJ1Y3RvcnMuIEEgZGVjbGFyZWQgb3duIERBVEEgbmFtZSBtYXlcbiAgICAvLyBvbmx5IHJlZHVjZSBjZXJ0YWludHkgdG8gdW5rbm93bjsgbmV2ZXIgZXhlY3V0ZSBhbiBlcnJvcidzIG5hbWUgZ2V0dGVyXG4gICAgLy8gb3IgcHJvbW90ZSBpdHMgcGh5c2ljYWwgY2F1c2UgdG8gYSBrbm93biBvdXRjb21lIGFjcm9zcyBtb2R1bGUgY29waWVzLlxuICAgIGlmIChlcnJvciAhPT0gbnVsbCAmJiAodHlwZW9mIGVycm9yID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgZXJyb3IgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgICBjb25zdCBuYW1lID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlcnJvciwgJ25hbWUnKTtcbiAgICAgIGlmIChuYW1lICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuYW1lLCAndmFsdWUnKSAmJiBuYW1lLnZhbHVlID09PSAnVW5rbm93bkVmZmVjdEVycm9yJykge1xuICAgICAgICByZXR1cm4gJ3Vua25vd24nO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGtub3duID8/ICd1bmtub3duJztcbiAgfVxuICByZXR1cm4ga25vd24gPz8gZXJyb3JDYXRlZ29yeShlcnJvcik7XG59XG5cbmZ1bmN0aW9uIGNhdGVnb3J5T2YoZXJyb3I6IHVua25vd24pOiBBdHRlbXB0Q2F0ZWdvcnkge1xuICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBdHRlbXB0VGltZW91dEVycm9yKSByZXR1cm4gJ3RpbWVvdXQnO1xuICBpZiAoZXJyb3IgPT09IG51bGwgfHwgKHR5cGVvZiBlcnJvciAhPT0gJ29iamVjdCcgJiYgdHlwZW9mIGVycm9yICE9PSAnZnVuY3Rpb24nKSkgcmV0dXJuICd1bmtub3duJztcbiAgY29uc3QgZmllbGRzID0gZXJyb3IgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgY29uc3Qgc3RhdHVzID0gbnVtYmVyRmllbGQoZmllbGRzLCAnc3RhdHVzJykgPz8gbnVtYmVyRmllbGQoZmllbGRzLCAnc3RhdHVzQ29kZScpO1xuICBjb25zdCBkZWNsYXJlc1JldHJ5QWZ0ZXIgPSBpc1dhaXQoZmllbGRzLnJldHJ5QWZ0ZXJNcykgfHwgaXNXYWl0KGZpZWxkcy5yZXRyeUFmdGVyU2Vjb25kcyk7XG4gIGlmIChzdGF0dXMgPT09IDQyOSB8fCBkZWNsYXJlc1JldHJ5QWZ0ZXIpIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgaWYgKHN0YXR1cyAhPT0gdW5kZWZpbmVkICYmIHN0YXR1cyA+PSA1MDAgJiYgc3RhdHVzIDw9IDU5OSkgcmV0dXJuICdzZXJ2ZXInO1xuICBpZiAoc3RhdHVzID09PSA0MDEgfHwgc3RhdHVzID09PSA0MDMpIHJldHVybiAnYXV0aCc7XG4gIGlmIChzdGF0dXMgIT09IHVuZGVmaW5lZCAmJiBzdGF0dXMgPj0gNDAwICYmIHN0YXR1cyA8PSA0OTkpIHJldHVybiAncGVybWFuZW50JztcblxuICBpZiAoZmllbGRzLnJldHJ5YWJsZSA9PT0gZmFsc2UpIHJldHVybiAncGVybWFuZW50JztcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgSW5wdXRWYWxpZGF0aW9uRXJyb3IpIHJldHVybiAncGVybWFuZW50JztcbiAgY29uc3QgbmFtZSA9IHR5cGVvZiBmaWVsZHMubmFtZSA9PT0gJ3N0cmluZycgPyBmaWVsZHMubmFtZSA6IHVuZGVmaW5lZDtcbiAgaWYgKG5hbWUgIT09IHVuZGVmaW5lZCAmJiBWQUxJREFUSU9OX05BTUVTLmhhcyhuYW1lKSkgcmV0dXJuICdwZXJtYW5lbnQnO1xuXG4gIGlmIChzdGF0dXMgPT09IHVuZGVmaW5lZCAmJiBpc1RyYW5zcG9ydEZhaWx1cmUoZmllbGRzLCBuYW1lKSkgcmV0dXJuICduZXR3b3JrJztcbiAgcmV0dXJuICd1bmtub3duJztcbn1cblxuZnVuY3Rpb24gaXNUcmFuc3BvcnRGYWlsdXJlKGZpZWxkczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICBpZiAoaGFzTmV0d29ya0NvZGUoZmllbGRzLmNvZGUpKSByZXR1cm4gdHJ1ZTtcbiAgY29uc3QgY2F1c2UgPSBmaWVsZHMuY2F1c2U7XG4gIGlmIChjYXVzZSAhPT0gbnVsbCAmJiB0eXBlb2YgY2F1c2UgPT09ICdvYmplY3QnICYmIGhhc05ldHdvcmtDb2RlKChjYXVzZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikuY29kZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAobmFtZSAhPT0gdW5kZWZpbmVkICYmIFRSQU5TUE9SVF9BQk9SVF9OQU1FUy5oYXMobmFtZSkpIHJldHVybiB0cnVlO1xuICByZXR1cm4gZmllbGRzIGluc3RhbmNlb2YgVHlwZUVycm9yICYmIHR5cGVvZiBmaWVsZHMubWVzc2FnZSA9PT0gJ3N0cmluZycgJiYgRkVUQ0hfRkFJTFVSRS50ZXN0KGZpZWxkcy5tZXNzYWdlKTtcbn1cblxuZnVuY3Rpb24gaGFzTmV0d29ya0NvZGUoY29kZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZW9mIGNvZGUgPT09ICdzdHJpbmcnICYmIE5FVFdPUktfQ09ERVMuaGFzKGNvZGUpO1xufVxuXG5mdW5jdGlvbiBudW1iZXJGaWVsZChmaWVsZHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXk6ICdzdGF0dXMnIHwgJ3N0YXR1c0NvZGUnKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdmFsdWUgPSBmaWVsZHNba2V5XTtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc1dhaXQodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKHZhbHVlKSAmJiB2YWx1ZSA+PSAwO1xufVxuIl19
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2F0dGVtcHQvY2F0ZWdvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRzs7O0FBRUgsbURBQTJEO0FBQzNELG1EQUE2QztBQUM3QywyQ0FBc0U7QUFHdEUsNkVBQTZFO0FBQzdFLE1BQU0sYUFBYSxHQUF3QixJQUFJLEdBQUcsQ0FBQztJQUNqRCxZQUFZO0lBQ1osY0FBYztJQUNkLFdBQVc7SUFDWCxXQUFXO0lBQ1gsV0FBVztJQUNYLE9BQU87Q0FDUixDQUFDLENBQUM7QUFFSCw0R0FBNEc7QUFDNUcsTUFBTSxhQUFhLEdBQUcsaUdBQWlHLENBQUM7QUFFeEgseUZBQXlGO0FBQ3pGLE1BQU0sZ0JBQWdCLEdBQXdCLElBQUksR0FBRyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLHNCQUFzQixDQUFDLENBQUMsQ0FBQztBQUUvRyxzSEFBc0g7QUFDdEgsTUFBTSxxQkFBcUIsR0FBd0IsSUFBSSxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztBQUUzRjs7O0dBR0c7QUFDSCxTQUFnQixhQUFhLENBQUMsS0FBYyxFQUFFLFVBQTBCLFFBQVE7SUFDOUUsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzVDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUM1QyxJQUFJLENBQUM7UUFDSCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFSRCxzQ0FRQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxLQUFjLEVBQUUsS0FBdUI7SUFDdEUsSUFBSSxD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akYsQ0FBQztBQUVELFNBQVMsTUFBTSxDQUFDLEtBQWM7SUFDNUIsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO0FBQzNFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGF0dGVtcHQvY2F0ZWdvcnkudHMg4oCUIGBlcnJvckNhdGVnb3J5YCwgdGhlIE9ORSBmYWlsdXJlIGNsYXNzaWZpZXIgKGRlc2lnbiDCpzMuOSkuXG4gKlxuICogU2V2ZW4gZml4ZWQgdmFsdWVzLCBzbyBldmVyeSByZWNvcmRlciDigJQgdGhlIG5hcnJhdGl2ZSwgdGhlIG1ldHJpYyBsYXllciwgYW4gYWdlbnQncyBvd24g4oCUIGJyZWFrcyBmYWlsdXJlcyBkb3duXG4gKiB0aGUgc2FtZSB3YXk7IGEgcmVjb3JkZXIgbmV2ZXIgaW52ZW50cyBhIGNhdGVnb3J5IG9mIGl0cyBvd24uIEJvcnJvd2VkIGZyb20gYWdlbnRmb290cHJpbnQnc1xuICogYGNsYXNzaWZ5UmV0cnlSZWFzb25gIGFuZCB3aWRlbmVkLCBzbyBpdHMgZGVjb3JhdG9ycyBhZG9wdCB0aGlzIG9uZSByYXRoZXIgdGhhbiBrZWVwIHRoZWlycy5cbiAqXG4gKiBDYXRlZ29yeSBpcyBFVklERU5DRSwgbmV2ZXIgcG9saWN5OiB0aGUgZGVmYXVsdCBgcmV0cnlPbmAgcmV0cmllcyBldmVyeSBjYXRlZ29yeS4gQSBjaGFydCB0aGF0IHdhbnRzIFwibmV2ZXJcbiAqIHJldHJ5IGEgcGVybWFuZW50IGZhaWx1cmVcIiBzYXlzIHNvOiBgcmV0cnlPbjogKGUpID0+IGVycm9yQ2F0ZWdvcnkoZSkgIT09ICdwZXJtYW5lbnQnYC5cbiAqXG4gKiBQcmVjZWRlbmNlIOKAlCB3aGF0IHRoZSBmYWlsdXJlIExPT0tFRCBsaWtlIHdpbnMgb3ZlciB3aGF0IGl0IGRlY2xhcmVzOlxuICogICAxLiB0aGUgYXR0ZW1wdCdzIG93biB0aW1lciAob3V0Y29tZSBgJ3RpbWVvdXQnYCwgb3Igb3VyIGBBdHRlbXB0VGltZW91dEVycm9yYCkgIOKGkiB0aW1lb3V0XG4gKiAgIDIuIHRoZSBydW4ncyBzaWduYWwgZW5kZWQgaXQgKG91dGNvbWUgYCdhYm9ydGVkJ2ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaSIHVua25vd25cbiAqICAgMy4gc3RhdHVzIDQyOSwgb3IgYSBkZWNsYXJlZCBgcmV0cnlBZnRlck1zYCAvIGByZXRyeUFmdGVyU2Vjb25kc2AgICAgICAgICAgICAgICDihpIgcmF0ZS1saW1pdGVkXG4gKiAgIDQuIHN0YXR1cyA1eHggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaSIHNlcnZlclxuICogICA1LiBzdGF0dXMgNDAxIC8gNDAzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkiBhdXRoXG4gKiAgIDYuIGFueSBvdGhlciA0eHggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaSIHBlcm1hbmVudFxuICogICA3LiBgcmV0cnlhYmxlOiBmYWxzZWAsIG9yIGEgdmFsaWRhdGlvbiBlcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkiBwZXJtYW5lbnRcbiAqICAgOC4gYSB0cmFuc3BvcnQgZmFpbHVyZSAoYSBzb2NrZXQgY29kZSBvbiB0aGUgZXJyb3Igb3IgaXRzIGNhdXNlLCBhIGZldGNoXG4gKiAgICAgIGBUeXBlRXJyb3JgLCBhbiBgQWJvcnRFcnJvcmAgLyBgVGltZW91dEVycm9yYCB0aGF0IHdhcyBub3QgdGhlIHJ1bidzKSAgICAgICAg4oaSIG5ldHdvcmtcbiAqICAgOS4gYW55dGhpbmcgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpIgdW5rbm93blxuICpcbiAqIEEgc3RhdHVzIGlzIGEgTlVNQkVSIChgc3RhdHVzYCBvciBgc3RhdHVzQ29kZWApOyBhIG51bWVyaWMgc3RyaW5nIGlzIG5vdCByZWFkIGFzIG9uZS4gTWV0YWRhdGEgdXNlcyBvbmx5XG4gKiBvd24vaW5oZXJpdGVkIGRhdGEgd2l0aGluIDMyIHByb3RvdHlwZSBvYmplY3RzOyBhIGNhbGxlciBhY2Nlc3NvciBzaGFkb3dzIGZhcnRoZXIgZGF0YSB3aXRob3V0IGV4ZWN1dGluZy5cbiAqIFRoZSBjYXB0dXJlZCBwbGF0Zm9ybSBET01FeGNlcHRpb24gbmFtZSBnZXR0ZXIgaXMgdGhlIHNvbGUgYWNjZXNzb3IgZXhjZXB0aW9uIGFuZCBicmFuZC1jaGVja3MgaXRzIHJlY2VpdmVyLlxuICogSW5zcGVjdGlvbiBmYWlsdXJlcyAoYSBob3N0aWxlIFByb3h5KSBhcmUgYCd1bmtub3duJ2AsIG5ldmVyIGEgc2Vjb25kIHRocm93IGZyb20gYW4gZXJyb3IgcGF0aC5cbiAqL1xuXG5pbXBvcnQgeyBJbnB1dFZhbGlkYXRpb25FcnJvciB9IGZyb20gJy4uL3NjaGVtYS9lcnJvcnMuanMnO1xuaW1wb3J0IHsgZXJyb3JGaWVsZCB9IGZyb20gJy4vZXJyb3JGaWVsZC5qcyc7XG5pbXBvcnQgeyBBdHRlbXB0VGltZW91dEVycm9yLCBVbmtub3duRWZmZWN0RXJyb3IgfSBmcm9tICcuL2Vycm9ycy5qcyc7XG5pbXBvcnQgdHlwZSB7IEF0dGVtcHRDYXRlZ29yeSwgQXR0ZW1wdE91dGNvbWUgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuLyoqIFNvY2tldC1sZXZlbCBjb2RlcyBhIHRyYW5zcG9ydCBmYWlsdXJlIGNhcnJpZXMgKE5vZGUncyBgZXJybm9gIG5hbWVzKS4gKi9cbmNvbnN0IE5FVFdPUktfQ09ERVM6IFJlYWRvbmx5U2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ0VDT05OUkVTRVQnLFxuICAnRUNPTk5SRUZVU0VEJyxcbiAgJ0VOT1RGT1VORCcsXG4gICdFVElNRURPVVQnLFxuICAnRUFJX0FHQUlOJyxcbiAgJ0VQSVBFJyxcbl0pO1xuXG4vKiogVGhlIG1lc3NhZ2VzIHJ1bnRpbWVzIGdpdmUgYSBgZmV0Y2hgIHRoYXQgbmV2ZXIgcmVhY2hlZCB0aGUgc2VydmVyIChOb2RlLCBDaHJvbWl1bSwgRmlyZWZveCwgU2FmYXJpKS4gKi9cbmNvbnN0IEZFVENIX0ZBSUxVUkUgPSAvXihmZXRjaCBmYWlsZWR8ZmFpbGVkIHRvIGZldGNofG5ldHdvcmtlcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8gZmV0Y2ggcmVzb3VyY2VcXC4/fGxvYWQgZmFpbGVkKSQvaTtcblxuLyoqIEVycm9yIG5hbWVzIHRoYXQgc2F5IGEgdmFsaWRhdGlvbiBmYWlsZWQg4oCUIHJldHJ5aW5nIHRoZSBzYW1lIGlucHV0IGNhbm5vdCBzdWNjZWVkLiAqL1xuY29uc3QgVkFMSURBVElPTl9OQU1FUzogUmVhZG9ubHlTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoWydWYWxpZGF0aW9uRXJyb3InLCAnWm9kRXJyb3InLCAnSW5wdXRWYWxpZGF0aW9uRXJyb3InXSk7XG5cbi8qKiBFcnJvciBuYW1lcyBvZiBhbiBhYm9ydCBvciBhIHRpbWVvdXQgdGhhdCBzb21lIE9USEVSIHNpZ25hbCByYWlzZWQgKHRoZSBydW4ncyBvd24gZW5kcyBhcyBvdXRjb21lIGAnYWJvcnRlZCdgKS4gKi9cbmNvbnN0IFRSQU5TUE9SVF9BQk9SVF9OQU1FUzogUmVhZG9ubHlTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoWydBYm9ydEVycm9yJywgJ1RpbWVvdXRFcnJvciddKTtcblxuLyoqXG4gKiBUaGUgY2F0ZWdvcnkgb2YgYW4gYXR0ZW1wdCdzIGZhaWx1cmUuIGBvdXRjb21lYCBpcyBob3cgdGhlIGF0dGVtcHQgZW5kZWQgKGRlZmF1bHQgYCdmYWlsZWQnYCk6IGl0IGRlY2lkZXNcbiAqIGAndGltZW91dCdgICh0aGUgYXR0ZW1wdCdzIG93biB0aW1lcikgYW5kIGAndW5rbm93bidgICh0aGUgcnVuJ3Mgc2lnbmFsKSBiZWZvcmUgdGhlIGVycm9yIGlzIHJlYWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlcnJvckNhdGVnb3J5KGVycm9yOiB1bmtub3duLCBvdXRjb21lOiBBdHRlbXB0T3V0Y29tZSA9ICdmYWlsZWQnKTogQXR0ZW1wdENhdGVnb3J5IHtcbiAgaWYgKG91dGNvbWUgPT09ICd0aW1lb3V0JykgcmV0dXJuICd0aW1lb3V0JztcbiAgaWYgKG91dGNvbWUgPT09ICdhYm9ydGVkJykgcmV0dXJuICd1bmtub3duJztcbiAgdHJ5IHtcbiAgICByZXR1cm4gY2F0ZWdvcnlPZihlcnJvcik7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiAndW5rbm93bic7XG4gIH1cbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGVybWluYWwgb3duZXJzaGlwIHByZXNlcnZlcyBhIHByb2R1Y2VyJ3Mga25vd24gY2F0ZWdvcnkuIEFuXG4gKiB1bnJlc29sdmVkIGVmZmVjdCBpcyB1bmtub3duLCBuZXZlciB0aGUgY2F0ZWdvcnkgb2YgaXRzIHBoeXNpY2FsIGNhdXNlLlxuICogVGhpcyBkb2VzIG5vdCByZXdyaXRlIGhpc3RvcmljYWwgYXR0ZW1wdCBjYXRlZ29yaWVzIG9yIHJlLXJlYWQgYSBrbm93biBvbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtaW5hbENhdGVnb3J5KGVycm9yOiB1bmtub3duLCBrbm93bj86IEF0dGVtcHRDYXRlZ29yeSk6IEF0dGVtcHRDYXRlZ29yeSB7XG4gIHRyeSB7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgVW5rbm93bkVmZmVjdEVycm9yKSByZXR1cm4gJ3Vua25vd24nO1xuICAgIC8vIENKUyBhbmQgRVNNIGhhdmUgZGlzdGluY3QgY29uc3RydWN0b3JzLiBBIGRlY2xhcmVkIG93biBEQVRBIG5hbWUgbWF5XG4gICAgLy8gb25seSByZWR1Y2UgY2VydGFpbnR5IHRvIHVua25vd247IG5ldmVyIGV4ZWN1dGUgYW4gZXJyb3IncyBuYW1lIGdldHRlclxuICAgIC8vIG9yIHByb21vdGUgaXRzIHBoeXNpY2FsIGNhdXNlIHRvIGEga25vd24gb3V0Y29tZSBhY3Jvc3MgbW9kdWxlIGNvcGllcy5cbiAgICBpZiAoZXJyb3IgIT09IG51bGwgJiYgKHR5cGVvZiBlcnJvciA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIGVycm9yID09PSAnZnVuY3Rpb24nKSkge1xuICAgICAgY29uc3QgbmFtZSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXJyb3IsICduYW1lJyk7XG4gICAgICBpZiAobmFtZSAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobmFtZSwgJ3ZhbHVlJykgJiYgbmFtZS52YWx1ZSA9PT0gJ1Vua25vd25FZmZlY3RFcnJvcicpIHtcbiAgICAgICAgcmV0dXJuICd1bmtub3duJztcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBrbm93biA/PyAndW5rbm93bic7XG4gIH1cbiAgcmV0dXJuIGtub3duID8/IGVycm9yQ2F0ZWdvcnkoZXJyb3IpO1xufVxuXG5mdW5jdGlvbiBjYXRlZ29yeU9mKGVycm9yOiB1bmtub3duKTogQXR0ZW1wdENhdGVnb3J5IHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXR0ZW1wdFRpbWVvdXRFcnJvcikgcmV0dXJuICd0aW1lb3V0JztcbiAgaWYgKGVycm9yID09PSBudWxsIHx8ICh0eXBlb2YgZXJyb3IgIT09ICdvYmplY3QnICYmIHR5cGVvZiBlcnJvciAhPT0gJ2Z1bmN0aW9uJykpIHJldHVybiAndW5rbm93bic7XG4gIGNvbnN0IGZpZWxkcyA9IGVycm9yIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIGNvbnN0IHN0YXR1cyA9IG51bWJlckZpZWxkKGZpZWxkcywgJ3N0YXR1cycpID8/IG51bWJlckZpZWxkKGZpZWxkcywgJ3N0YXR1c0NvZGUnKTtcbiAgY29uc3QgZGVjbGFyZXNSZXRyeUFmdGVyID1cbiAgICBpc1dhaXQoZXJyb3JGaWVsZChmaWVsZHMsICdyZXRyeUFmdGVyTXMnKSkgfHwgaXNXYWl0KGVycm9yRmllbGQoZmllbGRzLCAncmV0cnlBZnRlclNlY29uZHMnKSk7XG4gIGlmIChzdGF0dXMgPT09IDQyOSB8fCBkZWNsYXJlc1JldHJ5QWZ0ZXIpIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgaWYgKHN0YXR1cyAhPT0gdW5kZWZpbmVkICYmIHN0YXR1cyA+PSA1MDAgJiYgc3RhdHVzIDw9IDU5OSkgcmV0dXJuICdzZXJ2ZXInO1xuICBpZiAoc3RhdHVzID09PSA0MDEgfHwgc3RhdHVzID09PSA0MDMpIHJldHVybiAnYXV0aCc7XG4gIGlmIChzdGF0dXMgIT09IHVuZGVmaW5lZCAmJiBzdGF0dXMgPj0gNDAwICYmIHN0YXR1cyA8PSA0OTkpIHJldHVybiAncGVybWFuZW50JztcblxuICBpZiAoZXJyb3JGaWVsZChmaWVsZHMsICdyZXRyeWFibGUnKSA9PT0gZmFsc2UpIHJldHVybiAncGVybWFuZW50JztcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgSW5wdXRWYWxpZGF0aW9uRXJyb3IpIHJldHVybiAncGVybWFuZW50JztcbiAgY29uc3QgZGVjbGFyZWROYW1lID0gZXJyb3JGaWVsZChmaWVsZHMsICduYW1lJyk7XG4gIGNvbnN0IG5hbWUgPSB0eXBlb2YgZGVjbGFyZWROYW1lID09PSAnc3RyaW5nJyA/IGRlY2xhcmVkTmFtZSA6IHVuZGVmaW5lZDtcbiAgaWYgKG5hbWUgIT09IHVuZGVmaW5lZCAmJiBWQUxJREFUSU9OX05BTUVTLmhhcyhuYW1lKSkgcmV0dXJuICdwZXJtYW5lbnQnO1xuXG4gIGlmIChzdGF0dXMgPT09IHVuZGVmaW5lZCAmJiBpc1RyYW5zcG9ydEZhaWx1cmUoZmllbGRzLCBuYW1lKSkgcmV0dXJuICduZXR3b3JrJztcbiAgcmV0dXJuICd1bmtub3duJztcbn1cblxuZnVuY3Rpb24gaXNUcmFuc3BvcnRGYWlsdXJlKGZpZWxkczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICBpZiAoaGFzTmV0d29ya0NvZGUoZXJyb3JGaWVsZChmaWVsZHMsICdjb2RlJykpKSByZXR1cm4gdHJ1ZTtcbiAgY29uc3QgY2F1c2UgPSBlcnJvckZpZWxkKGZpZWxkcywgJ2NhdXNlJyk7XG4gIGlmIChjYXVzZSAhPT0gbnVsbCAmJiB0eXBlb2YgY2F1c2UgPT09ICdvYmplY3QnICYmIGhhc05ldHdvcmtDb2RlKGVycm9yRmllbGQoY2F1c2UsICdjb2RlJykpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKG5hbWUgIT09IHVuZGVmaW5lZCAmJiBUUkFOU1BPUlRfQUJPUlRfTkFNRVMuaGFzKG5hbWUpKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKCEoZmllbGRzIGluc3RhbmNlb2YgVHlwZUVycm9yKSkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBtZXNzYWdlID0gZXJyb3JGaWVsZChmaWVsZHMsICdtZXNzYWdlJyk7XG4gIHJldHVybiB0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycgJiYgRkVUQ0hfRkFJTFVSRS50ZXN0KG1lc3NhZ2UpO1xufVxuXG5mdW5jdGlvbiBoYXNOZXR3b3JrQ29kZShjb2RlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2YgY29kZSA9PT0gJ3N0cmluZycgJiYgTkVUV09SS19DT0RFUy5oYXMoY29kZSk7XG59XG5cbmZ1bmN0aW9uIG51bWJlckZpZWxkKGZpZWxkczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGtleTogJ3N0YXR1cycgfCAnc3RhdHVzQ29kZScpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCB2YWx1ZSA9IGVycm9yRmllbGQoZmllbGRzLCBrZXkpO1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNGaW5pdGUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGlzV2FpdCh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNGaW5pdGUodmFsdWUpICYmIHZhbHVlID49IDA7XG59XG4iXX0=
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.errorField = void 0;
4
+ /** A finite inheritance allowance for ordinary Error subclasses and metadata. */
5
+ const MAX_ERROR_FIELD_DEPTH = 32;
6
+ // Capture the platform intrinsic once; never call a later caller replacement.
7
+ const DOM_EXCEPTION_PROTOTYPE = typeof DOMException === 'function' ? DOMException.prototype : undefined;
8
+ const DOM_EXCEPTION_NAME = DOM_EXCEPTION_PROTOTYPE
9
+ ? Object.getOwnPropertyDescriptor(DOM_EXCEPTION_PROTOTYPE, 'name')?.get
10
+ : undefined;
11
+ const APPLY_INTRINSIC = Reflect.apply;
12
+ /** Caller accessors shadow farther data. Only the captured platform name getter may run. */
13
+ function errorField(value, key) {
14
+ if (value === null || (typeof value !== 'object' && typeof value !== 'function'))
15
+ return undefined;
16
+ let current = value;
17
+ for (let depth = 0; current !== null && depth < MAX_ERROR_FIELD_DEPTH; depth++) {
18
+ const property = Object.getOwnPropertyDescriptor(current, key);
19
+ if (property) {
20
+ if (Object.prototype.hasOwnProperty.call(property, 'value'))
21
+ return property.value;
22
+ if (key === 'name' &&
23
+ current === DOM_EXCEPTION_PROTOTYPE &&
24
+ DOM_EXCEPTION_NAME &&
25
+ property.get === DOM_EXCEPTION_NAME) {
26
+ // The intrinsic brand-checks its receiver, refusing forged prototypes and proxies.
27
+ return APPLY_INTRINSIC(DOM_EXCEPTION_NAME, value, []);
28
+ }
29
+ return undefined;
30
+ }
31
+ current = Object.getPrototypeOf(current);
32
+ }
33
+ return undefined;
34
+ }
35
+ exports.errorField = errorField;
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JGaWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvYXR0ZW1wdC9lcnJvckZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlGQUFpRjtBQUNqRixNQUFNLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztBQUVqQyw4RUFBOEU7QUFDOUUsTUFBTSx1QkFBdUIsR0FBRyxPQUFPLFlBQVksS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUN4RyxNQUFNLGtCQUFrQixHQUFHLHVCQUF1QjtJQUNoRCxDQUFDLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLHVCQUF1QixFQUFFLE1BQU0sQ0FBQyxFQUFFLEdBQUc7SUFDdkUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNkLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFFdEMsNEZBQTRGO0FBQzVGLFNBQWdCLFVBQVUsQ0FBQyxLQUFjLEVBQUUsR0FBVztJQUNwRCxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssVUFBVSxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDbkcsSUFBSSxPQUFPLEdBQWtCLEtBQUssQ0FBQztJQUNuQyxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxPQUFPLEtBQUssSUFBSSxJQUFJLEtBQUssR0FBRyxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQy9FLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDL0QsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUM7Z0JBQUUsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ25GLElBQ0UsR0FBRyxLQUFLLE1BQU07Z0JBQ2QsT0FBTyxLQUFLLHVCQUF1QjtnQkFDbkMsa0JBQWtCO2dCQUNsQixRQUFRLENBQUMsR0FBRyxLQUFLLGtCQUFrQixFQUNuQyxDQUFDO2dCQUNELG1GQUFtRjtnQkFDbkYsT0FBTyxlQUFlLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELENBQUM7WUFDRCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsT0FBTyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFyQkQsZ0NBcUJDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEEgZmluaXRlIGluaGVyaXRhbmNlIGFsbG93YW5jZSBmb3Igb3JkaW5hcnkgRXJyb3Igc3ViY2xhc3NlcyBhbmQgbWV0YWRhdGEuICovXG5jb25zdCBNQVhfRVJST1JfRklFTERfREVQVEggPSAzMjtcblxuLy8gQ2FwdHVyZSB0aGUgcGxhdGZvcm0gaW50cmluc2ljIG9uY2U7IG5ldmVyIGNhbGwgYSBsYXRlciBjYWxsZXIgcmVwbGFjZW1lbnQuXG5jb25zdCBET01fRVhDRVBUSU9OX1BST1RPVFlQRSA9IHR5cGVvZiBET01FeGNlcHRpb24gPT09ICdmdW5jdGlvbicgPyBET01FeGNlcHRpb24ucHJvdG90eXBlIDogdW5kZWZpbmVkO1xuY29uc3QgRE9NX0VYQ0VQVElPTl9OQU1FID0gRE9NX0VYQ0VQVElPTl9QUk9UT1RZUEVcbiAgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKERPTV9FWENFUFRJT05fUFJPVE9UWVBFLCAnbmFtZScpPy5nZXRcbiAgOiB1bmRlZmluZWQ7XG5jb25zdCBBUFBMWV9JTlRSSU5TSUMgPSBSZWZsZWN0LmFwcGx5O1xuXG4vKiogQ2FsbGVyIGFjY2Vzc29ycyBzaGFkb3cgZmFydGhlciBkYXRhLiBPbmx5IHRoZSBjYXB0dXJlZCBwbGF0Zm9ybSBuYW1lIGdldHRlciBtYXkgcnVuLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVycm9yRmllbGQodmFsdWU6IHVua25vd24sIGtleTogc3RyaW5nKTogdW5rbm93biB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyAmJiB0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicpKSByZXR1cm4gdW5kZWZpbmVkO1xuICBsZXQgY3VycmVudDogb2JqZWN0IHwgbnVsbCA9IHZhbHVlO1xuICBmb3IgKGxldCBkZXB0aCA9IDA7IGN1cnJlbnQgIT09IG51bGwgJiYgZGVwdGggPCBNQVhfRVJST1JfRklFTERfREVQVEg7IGRlcHRoKyspIHtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY3VycmVudCwga2V5KTtcbiAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocHJvcGVydHksICd2YWx1ZScpKSByZXR1cm4gcHJvcGVydHkudmFsdWU7XG4gICAgICBpZiAoXG4gICAgICAgIGtleSA9PT0gJ25hbWUnICYmXG4gICAgICAgIGN1cnJlbnQgPT09IERPTV9FWENFUFRJT05fUFJPVE9UWVBFICYmXG4gICAgICAgIERPTV9FWENFUFRJT05fTkFNRSAmJlxuICAgICAgICBwcm9wZXJ0eS5nZXQgPT09IERPTV9FWENFUFRJT05fTkFNRVxuICAgICAgKSB7XG4gICAgICAgIC8vIFRoZSBpbnRyaW5zaWMgYnJhbmQtY2hlY2tzIGl0cyByZWNlaXZlciwgcmVmdXNpbmcgZm9yZ2VkIHByb3RvdHlwZXMgYW5kIHByb3hpZXMuXG4gICAgICAgIHJldHVybiBBUFBMWV9JTlRSSU5TSUMoRE9NX0VYQ0VQVElPTl9OQU1FLCB2YWx1ZSwgW10pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY3VycmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihjdXJyZW50KTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuIl19
@@ -20,8 +20,10 @@
20
20
  * `TypeError`, an `AbortError` / `TimeoutError` that was not the run's) → network
21
21
  * 9. anything else → unknown
22
22
  *
23
- * A status is a NUMBER (`status` or `statusCode`); a numeric string is not read as one. Total: a value whose
24
- * reads throw (a hostile Proxy) is `'unknown'`, never a second throw from an error path.
23
+ * A status is a NUMBER (`status` or `statusCode`); a numeric string is not read as one. Metadata uses only
24
+ * own/inherited data within 32 prototype objects; a caller accessor shadows farther data without executing.
25
+ * The captured platform DOMException name getter is the sole accessor exception and brand-checks its receiver.
26
+ * Inspection failures (a hostile Proxy) are `'unknown'`, never a second throw from an error path.
25
27
  */
26
28
  import type { AttemptCategory, AttemptOutcome } from './types.js';
27
29
  /**
@@ -0,0 +1,2 @@
1
+ /** Caller accessors shadow farther data. Only the captured platform name getter may run. */
2
+ export declare function errorField(value: unknown, key: string): unknown;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "footprintjs",
3
- "version": "10.2.0",
3
+ "version": "10.2.1",
4
4
  "description": "Explainable backend flows — automatic causal traces, decision evidence, and MCP tool generation for AI agents",
5
5
  "license": "MIT",
6
6
  "author": "Sanjay Krishna Anbalagan",