@skyux/core 6.16.0 → 7.0.0-alpha.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.
Files changed (104) hide show
  1. package/documentation.json +1049 -899
  2. package/esm2020/lib/modules/adapter-service/adapter.module.mjs +4 -4
  3. package/esm2020/lib/modules/adapter-service/adapter.service.mjs +24 -25
  4. package/esm2020/lib/modules/affix/affix-offset.mjs +1 -1
  5. package/esm2020/lib/modules/affix/affix.directive.mjs +41 -26
  6. package/esm2020/lib/modules/affix/affix.module.mjs +5 -5
  7. package/esm2020/lib/modules/affix/affix.service.mjs +3 -3
  8. package/esm2020/lib/modules/affix/affixer.mjs +266 -260
  9. package/esm2020/lib/modules/affix/dom-utils.mjs +7 -7
  10. package/esm2020/lib/modules/dock/dock-dom-adapter.service.mjs +51 -47
  11. package/esm2020/lib/modules/dock/dock-item.mjs +10 -5
  12. package/esm2020/lib/modules/dock/dock.component.mjs +58 -34
  13. package/esm2020/lib/modules/dock/dock.module.mjs +5 -5
  14. package/esm2020/lib/modules/dock/dock.service.mjs +43 -39
  15. package/esm2020/lib/modules/dynamic-component/dynamic-component.module.mjs +4 -4
  16. package/esm2020/lib/modules/dynamic-component/dynamic-component.service.mjs +40 -25
  17. package/esm2020/lib/modules/format/app-format.mjs +3 -3
  18. package/esm2020/lib/modules/id/id.directive.mjs +3 -3
  19. package/esm2020/lib/modules/id/id.module.mjs +4 -4
  20. package/esm2020/lib/modules/id/id.service.mjs +3 -3
  21. package/esm2020/lib/modules/log/log.module.mjs +4 -4
  22. package/esm2020/lib/modules/log/log.service.mjs +41 -41
  23. package/esm2020/lib/modules/media-query/media-query.module.mjs +4 -4
  24. package/esm2020/lib/modules/media-query/media-query.service.mjs +53 -50
  25. package/esm2020/lib/modules/mutation/mutation-observer-service.mjs +6 -4
  26. package/esm2020/lib/modules/numeric/numeric.module.mjs +5 -5
  27. package/esm2020/lib/modules/numeric/numeric.pipe.mjs +29 -22
  28. package/esm2020/lib/modules/numeric/numeric.service.mjs +87 -102
  29. package/esm2020/lib/modules/overlay/overlay-adapter.service.mjs +26 -20
  30. package/esm2020/lib/modules/overlay/overlay-instance.mjs +18 -9
  31. package/esm2020/lib/modules/overlay/overlay.component.mjs +82 -58
  32. package/esm2020/lib/modules/overlay/overlay.module.mjs +5 -5
  33. package/esm2020/lib/modules/overlay/overlay.service.mjs +58 -52
  34. package/esm2020/lib/modules/percent-pipe/percent-pipe.module.mjs +5 -5
  35. package/esm2020/lib/modules/percent-pipe/percent.pipe.mjs +35 -24
  36. package/esm2020/lib/modules/resize-observer/resize-observer-media-query.service.mjs +41 -49
  37. package/esm2020/lib/modules/resize-observer/resize-observer.service.mjs +3 -3
  38. package/esm2020/lib/modules/scrollable-host/scrollable-host.service.mjs +69 -70
  39. package/esm2020/lib/modules/shared/sky-core-resources.module.mjs +4 -4
  40. package/esm2020/lib/modules/title/title.service.mjs +11 -7
  41. package/esm2020/lib/modules/trim/trim.directive.mjs +13 -14
  42. package/esm2020/lib/modules/trim/trim.module.mjs +4 -4
  43. package/esm2020/lib/modules/ui-config/ui-config.service.mjs +3 -3
  44. package/esm2020/lib/modules/viewkeeper/viewkeeper-boundary-info.mjs +1 -1
  45. package/esm2020/lib/modules/viewkeeper/viewkeeper-host-options.mjs +3 -3
  46. package/esm2020/lib/modules/viewkeeper/viewkeeper.directive.mjs +78 -63
  47. package/esm2020/lib/modules/viewkeeper/viewkeeper.mjs +166 -156
  48. package/esm2020/lib/modules/viewkeeper/viewkeeper.module.mjs +4 -4
  49. package/esm2020/lib/modules/viewkeeper/viewkeeper.service.mjs +10 -6
  50. package/esm2020/lib/modules/window/window-ref.mjs +3 -3
  51. package/esm2020/testing/core-testing.module.mjs +8 -5
  52. package/esm2020/testing/mock-media-query.service.mjs +7 -4
  53. package/esm2020/testing/mock-ui-config.service.mjs +7 -4
  54. package/esm2020/testing/overlay/overlay-harness-filters.mjs +1 -1
  55. package/esm2020/testing/overlay/overlay-harness.mjs +2 -1
  56. package/esm2020/testing/shared/component-harness.mjs +4 -1
  57. package/esm2020/testing/shared/harness-filters.mjs +1 -1
  58. package/fesm2015/skyux-core-testing.mjs +23 -10
  59. package/fesm2015/skyux-core-testing.mjs.map +1 -1
  60. package/fesm2015/skyux-core.mjs +1416 -1291
  61. package/fesm2015/skyux-core.mjs.map +1 -1
  62. package/fesm2020/skyux-core-testing.mjs +23 -10
  63. package/fesm2020/skyux-core-testing.mjs.map +1 -1
  64. package/fesm2020/skyux-core.mjs +1418 -1290
  65. package/fesm2020/skyux-core.mjs.map +1 -1
  66. package/lib/modules/adapter-service/adapter.service.d.ts +3 -5
  67. package/lib/modules/affix/affix-offset.d.ts +1 -1
  68. package/lib/modules/affix/affix.directive.d.ts +13 -14
  69. package/lib/modules/affix/affixer.d.ts +2 -34
  70. package/lib/modules/affix/dom-utils.d.ts +3 -3
  71. package/lib/modules/dock/dock-dom-adapter.service.d.ts +2 -9
  72. package/lib/modules/dock/dock-item.d.ts +1 -1
  73. package/lib/modules/dock/dock.component.d.ts +3 -11
  74. package/lib/modules/dock/dock.service.d.ts +2 -5
  75. package/lib/modules/dynamic-component/dynamic-component.service.d.ts +2 -7
  76. package/lib/modules/id/id.directive.d.ts +1 -1
  77. package/lib/modules/log/log.service.d.ts +2 -6
  78. package/lib/modules/media-query/media-query.service.d.ts +1 -8
  79. package/lib/modules/numeric/numeric.pipe.d.ts +3 -9
  80. package/lib/modules/numeric/numeric.service.d.ts +3 -36
  81. package/lib/modules/overlay/overlay-adapter.service.d.ts +1 -3
  82. package/lib/modules/overlay/overlay-instance.d.ts +1 -2
  83. package/lib/modules/overlay/overlay.component.d.ts +2 -15
  84. package/lib/modules/overlay/overlay.service.d.ts +1 -7
  85. package/lib/modules/percent-pipe/percent.pipe.d.ts +3 -10
  86. package/lib/modules/resize-observer/resize-observer-media-query.service.d.ts +2 -7
  87. package/lib/modules/scrollable-host/scrollable-host.service.d.ts +2 -11
  88. package/lib/modules/title/title.service.d.ts +2 -2
  89. package/lib/modules/trim/trim.directive.d.ts +1 -3
  90. package/lib/modules/viewkeeper/viewkeeper-boundary-info.d.ts +1 -1
  91. package/lib/modules/viewkeeper/viewkeeper.d.ts +2 -24
  92. package/lib/modules/viewkeeper/viewkeeper.directive.d.ts +5 -17
  93. package/lib/modules/viewkeeper/viewkeeper.service.d.ts +1 -1
  94. package/package.json +10 -10
  95. package/testing/core-testing.module.d.ts +3 -0
  96. package/testing/{skyux-core-testing.d.ts → index.d.ts} +0 -0
  97. package/testing/mock-media-query.service.d.ts +3 -0
  98. package/testing/mock-ui-config.service.d.ts +3 -0
  99. package/testing/overlay/overlay-harness-filters.d.ts +1 -0
  100. package/testing/overlay/overlay-harness.d.ts +1 -0
  101. package/testing/shared/component-harness.d.ts +3 -0
  102. package/testing/shared/harness-filters.d.ts +1 -0
  103. package/skyux-core.d.ts +0 -5
  104. package/testing/package.json +0 -10
@@ -1,27 +1,31 @@
1
+ var _SkyNumericService_instances, _SkyNumericService_resourcesSvc, _SkyNumericService_symbolIndex, _SkyNumericService_roundNumber, _SkyNumericService_scaleNumberByPowerOfTen, _SkyNumericService_storeShortenSymbol, _SkyNumericService_replaceShortenSymbol, _SkyNumericService_getSymbol;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
1
3
  import { Injectable } from '@angular/core';
2
4
  import { SkyIntlNumberFormatStyle, SkyLibResourcesService } from '@skyux/i18n';
3
5
  import { SkyNumberFormatUtility } from '../shared/number-format/number-format-utility';
4
6
  import * as i0 from "@angular/core";
5
7
  import * as i1 from "@skyux/i18n";
6
8
  export class SkyNumericService {
7
- constructor(resourcesService) {
8
- this.resourcesService = resourcesService;
9
- this.symbolIndex = [
10
- { value: 1e12, label: this.getSymbol('skyux_numeric_trillions_symbol') },
11
- { value: 1e9, label: this.getSymbol('skyux_numeric_billions_symbol') },
12
- { value: 1e6, label: this.getSymbol('skyux_numeric_millions_symbol') },
13
- { value: 1e3, label: this.getSymbol('skyux_numeric_thousands_symbol') },
14
- ];
15
- }
16
- /**
17
- * The browser's current locale.
18
- * @internal
19
- */
20
- set currentLocale(value) {
21
- this._locale = value;
22
- }
23
- get currentLocale() {
24
- return this._locale || 'en-US';
9
+ constructor(resourcesSvc) {
10
+ _SkyNumericService_instances.add(this);
11
+ /**
12
+ * The browser's current locale.
13
+ * @internal
14
+ */
15
+ this.currentLocale = 'en-US';
16
+ /**
17
+ * @internal
18
+ */
19
+ this.shortSymbol = '';
20
+ _SkyNumericService_resourcesSvc.set(this, void 0);
21
+ _SkyNumericService_symbolIndex.set(this, void 0);
22
+ __classPrivateFieldSet(this, _SkyNumericService_resourcesSvc, resourcesSvc, "f");
23
+ __classPrivateFieldSet(this, _SkyNumericService_symbolIndex, [
24
+ { value: 1e12, label: __classPrivateFieldGet(this, _SkyNumericService_instances, "m", _SkyNumericService_getSymbol).call(this, 'skyux_numeric_trillions_symbol') },
25
+ { value: 1e9, label: __classPrivateFieldGet(this, _SkyNumericService_instances, "m", _SkyNumericService_getSymbol).call(this, 'skyux_numeric_billions_symbol') },
26
+ { value: 1e6, label: __classPrivateFieldGet(this, _SkyNumericService_instances, "m", _SkyNumericService_getSymbol).call(this, 'skyux_numeric_millions_symbol') },
27
+ { value: 1e3, label: __classPrivateFieldGet(this, _SkyNumericService_instances, "m", _SkyNumericService_getSymbol).call(this, 'skyux_numeric_thousands_symbol') },
28
+ ], "f");
25
29
  }
26
30
  /**
27
31
  * Formats a number based on the provided options.
@@ -33,20 +37,23 @@ export class SkyNumericService {
33
37
  return '';
34
38
  }
35
39
  const decimalPlaceRegExp = /\.0+$|(\.[0-9]*[1-9])0+$/;
40
+ const locale = options.locale || this.currentLocale;
41
+ const digits = options.digits || 0;
36
42
  // Get the symbol for the number after rounding, since rounding could push the number
37
43
  // into a different symbol range.
38
- let roundedNumber = this.roundNumber(value, options.digits);
44
+ let roundedNumber = __classPrivateFieldGet(this, _SkyNumericService_instances, "m", _SkyNumericService_roundNumber).call(this, value, digits);
39
45
  const roundedNumberAbs = Math.abs(roundedNumber);
40
46
  let suffix = '';
41
- for (let i = 0; i < this.symbolIndex.length; i++) {
42
- let symbol = this.symbolIndex[i];
47
+ for (let i = 0; i < __classPrivateFieldGet(this, _SkyNumericService_symbolIndex, "f").length; i++) {
48
+ let symbol = __classPrivateFieldGet(this, _SkyNumericService_symbolIndex, "f")[i];
43
49
  if (options.truncate &&
50
+ options.truncateAfter &&
44
51
  roundedNumberAbs >= options.truncateAfter &&
45
52
  roundedNumberAbs >= symbol.value) {
46
- roundedNumber = this.roundNumber(value / symbol.value, options.digits);
53
+ roundedNumber = __classPrivateFieldGet(this, _SkyNumericService_instances, "m", _SkyNumericService_roundNumber).call(this, value / symbol.value, digits);
47
54
  if (Math.abs(roundedNumber) === 1000 && i > 0) {
48
55
  // Rounding caused the number to cross into the range of the next symbol.
49
- symbol = this.symbolIndex[i - 1];
56
+ symbol = __classPrivateFieldGet(this, _SkyNumericService_symbolIndex, "f")[i - 1];
50
57
  roundedNumber /= 1000;
51
58
  }
52
59
  suffix = symbol.label;
@@ -54,10 +61,9 @@ export class SkyNumericService {
54
61
  }
55
62
  }
56
63
  let output = roundedNumber.toString().replace(decimalPlaceRegExp, '$1') + suffix;
57
- this.storeShortenSymbol(output);
58
- const locale = options.locale || this.currentLocale;
59
- let digits;
60
- let isDecimal;
64
+ __classPrivateFieldGet(this, _SkyNumericService_instances, "m", _SkyNumericService_storeShortenSymbol).call(this, output);
65
+ let digitsFormatted;
66
+ let isDecimal = false;
61
67
  // Checks the string entered for format. Using toLowerCase to ignore case.
62
68
  switch (options.format?.toLowerCase()) {
63
69
  // In a case where a decimal value was not shortened and
@@ -68,20 +74,21 @@ export class SkyNumericService {
68
74
  case 'currency':
69
75
  isDecimal = value % 1 !== 0;
70
76
  if (options.minDigits) {
71
- digits = `1.${options.minDigits}-${options.digits}`;
77
+ digitsFormatted = `1.${options.minDigits}-${digits}`;
72
78
  }
73
- else if (isDecimal && options.digits >= 2) {
74
- digits = `1.2-${options.digits}`;
79
+ else if (isDecimal && digits >= 2) {
80
+ digitsFormatted = `1.2-${digits}`;
75
81
  }
76
82
  else {
77
- digits = `1.0-${options.digits}`;
83
+ digitsFormatted = `1.0-${digits}`;
78
84
  }
79
- output = SkyNumberFormatUtility.formatNumber(locale, parseFloat(output), SkyIntlNumberFormatStyle.Currency, digits, options.iso,
85
+ output = SkyNumberFormatUtility.formatNumber(locale, parseFloat(output), SkyIntlNumberFormatStyle.Currency, digitsFormatted, options.iso,
80
86
  // Angular 5+ needs a string for this parameter, but Angular 4 needs a boolean.
81
87
  // To support both versions we can supply 'symbol' which will evaluate truthy for Angular 4
82
88
  // and the appropriate string value for Angular 5+.
83
89
  // See: https://angular.io/api/common/CurrencyPipe#parameters
84
90
  'symbol', options.currencySign);
91
+ // ^^^^^^ Result can't be null since the sanitized input is always a number.
85
92
  break;
86
93
  // The following is a catch-all to ensure that if
87
94
  // anything but currency (or a future option) are entered,
@@ -90,97 +97,75 @@ export class SkyNumericService {
90
97
  // Ensures localization of the number to ensure comma and
91
98
  // decimal separator
92
99
  if (options.minDigits) {
93
- digits = `1.${options.minDigits}-${options.digits}`;
100
+ digitsFormatted = `1.${options.minDigits}-${digits}`;
94
101
  }
95
102
  else if (options.truncate) {
96
- digits = `1.0-${options.digits}`;
103
+ digitsFormatted = `1.0-${digits}`;
97
104
  }
98
105
  else {
99
- digits = `1.${options.digits}-${options.digits}`;
106
+ digitsFormatted = `1.${digits}-${digits}`;
100
107
  }
101
- output = SkyNumberFormatUtility.formatNumber(locale, parseFloat(output), SkyIntlNumberFormatStyle.Decimal, digits);
108
+ output = SkyNumberFormatUtility.formatNumber(locale, parseFloat(output), SkyIntlNumberFormatStyle.Decimal, digitsFormatted);
109
+ // ^^^^^^ Result can't be null since the sanitized input is always a number.
102
110
  break;
103
111
  }
104
112
  if (options.truncate) {
105
- output = this.replaceShortenSymbol(output);
113
+ output = __classPrivateFieldGet(this, _SkyNumericService_instances, "m", _SkyNumericService_replaceShortenSymbol).call(this, output);
106
114
  }
107
115
  return output;
108
116
  }
109
- /**
110
- * Rounds a given number
111
- *
112
- * JS's limitation - numbers bigger than Number.MIN_SAFE_INTEGER or Number.MAX_SAFE_INTEGER
113
- * are not guaranteed to be represented or rounded correctly
114
- * @param value - value to round
115
- * @param precision - what precision to round with, defaults to 0 decimal places
116
- */
117
- roundNumber(value, precision = 0) {
118
- if (precision < 0) {
119
- throw new Error('SkyInvalidArgument: precision must be >= 0');
120
- }
121
- /* Sanity check - ignoring coverage but should not ignore if we make this method public */
122
- /* istanbul ignore next */
123
- if (isNaN(value) || value === null) {
124
- return 0;
125
- }
126
- const scaledValue = this.scaleNumberByPowerOfTen(value, precision, true);
127
- const scaledRoundedValue = Math.round(scaledValue);
128
- const unscaledRoundedValue = this.scaleNumberByPowerOfTen(scaledRoundedValue, precision, false);
129
- return unscaledRoundedValue;
117
+ }
118
+ _SkyNumericService_resourcesSvc = new WeakMap(), _SkyNumericService_symbolIndex = new WeakMap(), _SkyNumericService_instances = new WeakSet(), _SkyNumericService_roundNumber = function _SkyNumericService_roundNumber(value, precision) {
119
+ if (precision < 0) {
120
+ throw new Error('SkyInvalidArgument: precision must be >= 0');
130
121
  }
131
- /**
132
- * Scales a given number by a power of 10
133
- * @param value - value to scale
134
- * @param scalar - 10^scalar
135
- * @param scaleUp - whether to increase or decrease the value
136
- */
137
- scaleNumberByPowerOfTen(value, scalar, scaleUp) {
138
- const valueStr = value.toString().toLowerCase();
139
- const isExponentFormat = valueStr.includes('e');
140
- if (isExponentFormat) {
141
- const [base, exp] = valueStr.split('e');
142
- const newExp = scaleUp ? Number(exp) + scalar : Number(exp) - scalar;
143
- return Number(`${base}e${newExp}`);
144
- }
145
- else {
146
- const e = scaleUp ? 'e' : 'e-';
147
- return Number(`${value}${e}${scalar}`);
148
- }
122
+ /* Sanity check - ignoring coverage but should not ignore if we make this method public */
123
+ /* istanbul ignore next */
124
+ if (isNaN(value) || value === null) {
125
+ return 0;
149
126
  }
150
- /**
151
- * Stores the symbol added from shortening to reapply later.
152
- * @param value The string to derive the shorten symbol from.
153
- */
154
- storeShortenSymbol(value) {
155
- const symbols = this.symbolIndex.map((s) => s.label);
156
- const regexp = new RegExp(symbols.join('|'), 'ig');
157
- const match = value.match(regexp);
158
- this.shortSymbol = match ? match.toString() : '';
127
+ const scaledValue = __classPrivateFieldGet(this, _SkyNumericService_instances, "m", _SkyNumericService_scaleNumberByPowerOfTen).call(this, value, precision, true);
128
+ const scaledRoundedValue = Math.round(scaledValue);
129
+ const unscaledRoundedValue = __classPrivateFieldGet(this, _SkyNumericService_instances, "m", _SkyNumericService_scaleNumberByPowerOfTen).call(this, scaledRoundedValue, precision, false);
130
+ return unscaledRoundedValue;
131
+ }, _SkyNumericService_scaleNumberByPowerOfTen = function _SkyNumericService_scaleNumberByPowerOfTen(value, scalar, scaleUp) {
132
+ const valueStr = value.toString().toLowerCase();
133
+ const isExponentFormat = valueStr.includes('e');
134
+ if (isExponentFormat) {
135
+ const [base, exp] = valueStr.split('e');
136
+ const newExp = scaleUp ? Number(exp) + scalar : Number(exp) - scalar;
137
+ return Number(`${base}e${newExp}`);
159
138
  }
160
- /**
161
- * Must have previously called storeShortenSymbol to have something to replace.
162
- * Finds the last number in the formatted number, gets the index of the position
163
- * after that character and re-inserts the symbol.
164
- * Works regardless of currency symbol position.
165
- * @param value The string to modify.
166
- */
167
- replaceShortenSymbol(value) {
168
- const result = /(\d)(?!.*\d)/g.exec(value);
139
+ else {
140
+ const e = scaleUp ? 'e' : 'e-';
141
+ return Number(`${value}${e}${scalar}`);
142
+ }
143
+ }, _SkyNumericService_storeShortenSymbol = function _SkyNumericService_storeShortenSymbol(value) {
144
+ const symbols = __classPrivateFieldGet(this, _SkyNumericService_symbolIndex, "f").map((s) => s.label);
145
+ const regexp = new RegExp(symbols.join('|'), 'ig');
146
+ const match = value.match(regexp);
147
+ this.shortSymbol = match ? match.toString() : '';
148
+ }, _SkyNumericService_replaceShortenSymbol = function _SkyNumericService_replaceShortenSymbol(value) {
149
+ const result = /(\d)(?!.*\d)/g.exec(value);
150
+ /*istanbul ignore else*/
151
+ if (result) {
169
152
  const pos = result.index + result.length;
170
153
  const output = value.substring(0, pos) + this.shortSymbol + value.substring(pos);
171
154
  return output;
172
155
  }
173
- getSymbol(key) {
174
- // TODO: Need to implement the async `getString` method in a breaking change.
175
- return this.resourcesService.getStringForLocale({ locale: 'en_US' }, key);
156
+ else {
157
+ return value;
176
158
  }
177
- }
178
- SkyNumericService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyNumericService, deps: [{ token: i1.SkyLibResourcesService }], target: i0.ɵɵFactoryTarget.Injectable });
179
- SkyNumericService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyNumericService, providedIn: 'any' });
180
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyNumericService, decorators: [{
159
+ }, _SkyNumericService_getSymbol = function _SkyNumericService_getSymbol(key) {
160
+ // TODO: Need to implement the async `getString` method in a breaking change.
161
+ return __classPrivateFieldGet(this, _SkyNumericService_resourcesSvc, "f").getStringForLocale({ locale: 'en_US' }, key);
162
+ };
163
+ SkyNumericService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyNumericService, deps: [{ token: i1.SkyLibResourcesService }], target: i0.ɵɵFactoryTarget.Injectable });
164
+ SkyNumericService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyNumericService, providedIn: 'any' });
165
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyNumericService, decorators: [{
181
166
  type: Injectable,
182
167
  args: [{
183
168
  providedIn: 'any',
184
169
  }]
185
170
  }], ctorParameters: function () { return [{ type: i1.SkyLibResourcesService }]; } });
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL251bWVyaWMvbnVtZXJpYy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRS9FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDOzs7QUFRdkYsTUFBTSxPQUFPLGlCQUFpQjtJQTJCNUIsWUFBb0IsZ0JBQXdDO1FBQXhDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBd0I7UUFUcEQsZ0JBQVcsR0FBdUI7WUFDeEMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGdDQUFnQyxDQUFDLEVBQUU7WUFDeEUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLCtCQUErQixDQUFDLEVBQUU7WUFDdEUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLCtCQUErQixDQUFDLEVBQUU7WUFDdEUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGdDQUFnQyxDQUFDLEVBQUU7U0FDeEUsQ0FBQztJQUk2RCxDQUFDO0lBMUJoRTs7O09BR0c7SUFDSCxJQUFXLGFBQWEsQ0FBQyxLQUFhO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQztJQUNqQyxD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WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lJbnRsTnVtYmVyRm9ybWF0U3R5bGUsIFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCB7IFNreU51bWJlckZvcm1hdFV0aWxpdHkgfSBmcm9tICcuLi9zaGFyZWQvbnVtYmVyLWZvcm1hdC9udW1iZXItZm9ybWF0LXV0aWxpdHknO1xuXG5pbXBvcnQgeyBTa3lOdW1lcmljU3ltYm9sIH0gZnJvbSAnLi9udW1lcmljLXN5bWJvbCc7XG5pbXBvcnQgeyBTa3lOdW1lcmljT3B0aW9ucyB9IGZyb20gJy4vbnVtZXJpYy5vcHRpb25zJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAnYW55Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5TnVtZXJpY1NlcnZpY2Uge1xuICAvKipcbiAgICogVGhlIGJyb3dzZXIncyBjdXJyZW50IGxvY2FsZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc2V0IGN1cnJlbnRMb2NhbGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2xvY2FsZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBjdXJyZW50TG9jYWxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2xvY2FsZSB8fCAnZW4tVVMnO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHNob3J0U3ltYm9sOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBzeW1ib2xJbmRleDogU2t5TnVtZXJpY1N5bWJvbFtdID0gW1xuICAgIHsgdmFsdWU6IDFlMTIsIGxhYmVsOiB0aGlzLmdldFN5bWJvbCgnc2t5dXhfbnVtZXJpY190cmlsbGlvbnNfc3ltYm9sJykgfSxcbiAgICB7IHZhbHVlOiAxZTksIGxhYmVsOiB0aGlzLmdldFN5bWJvbCgnc2t5dXhfbnVtZXJpY19iaWxsaW9uc19zeW1ib2wnKSB9LFxuICAgIHsgdmFsdWU6IDFlNiwgbGFiZWw6IHRoaXMuZ2V0U3ltYm9sKCdza3l1eF9udW1lcmljX21pbGxpb25zX3N5bWJvbCcpIH0sXG4gICAgeyB2YWx1ZTogMWUzLCBsYWJlbDogdGhpcy5nZXRTeW1ib2woJ3NreXV4X251bWVyaWNfdGhvdXNhbmRzX3N5bWJvbCcpIH0sXG4gIF07XG5cbiAgcHJpdmF0ZSBfbG9jYWxlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXNvdXJjZXNTZXJ2aWNlOiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiBGb3JtYXRzIGEgbnVtYmVyIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBvcHRpb25zLlxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIG51bWJlciB0byBmb3JtYXQuXG4gICAqIEBwYXJhbSBvcHRpb25zIEZvcm1hdCBvcHRpb25zLlxuICAgKi9cbiAgcHVibGljIGZvcm1hdE51bWJlcih2YWx1ZTogbnVtYmVyLCBvcHRpb25zOiBTa3lOdW1lcmljT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgaWYgKGlzTmFOKHZhbHVlKSB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGRlY2ltYWxQbGFjZVJlZ0V4cCA9IC9cXC4wKyR8KFxcLlswLTldKlsxLTldKTArJC87XG5cbiAgICAvLyBHZXQgdGhlIHN5bWJvbCBmb3IgdGhlIG51bWJlciBhZnRlciByb3VuZGluZywgc2luY2Ugcm91bmRpbmcgY291bGQgcHVzaCB0aGUgbnVtYmVyXG4gICAgLy8gaW50byBhIGRpZmZlcmVudCBzeW1ib2wgcmFuZ2UuXG4gICAgbGV0IHJvdW5kZWROdW1iZXIgPSB0aGlzLnJvdW5kTnVtYmVyKHZhbHVlLCBvcHRpb25zLmRpZ2l0cyk7XG4gICAgY29uc3Qgcm91bmRlZE51bWJlckFicyA9IE1hdGguYWJzKHJvdW5kZWROdW1iZXIpO1xuXG4gICAgbGV0IHN1ZmZpeCA9ICcnO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN5bWJvbEluZGV4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgc3ltYm9sID0gdGhpcy5zeW1ib2xJbmRleFtpXTtcblxuICAgICAgaWYgKFxuICAgICAgICBvcHRpb25zLnRydW5jYXRlICYmXG4gICAgICAgIHJvdW5kZWROdW1iZXJBYnMgPj0gb3B0aW9ucy50cnVuY2F0ZUFmdGVyICYmXG4gICAgICAgIHJvdW5kZWROdW1iZXJBYnMgPj0gc3ltYm9sLnZhbHVlXG4gICAgICApIHtcbiAgICAgICAgcm91bmRlZE51bWJlciA9IHRoaXMucm91bmROdW1iZXIodmFsdWUgLyBzeW1ib2wudmFsdWUsIG9wdGlvbnMuZGlnaXRzKTtcblxuICAgICAgICBpZiAoTWF0aC5hYnMocm91bmRlZE51bWJlcikgPT09IDEwMDAgJiYgaSA+IDApIHtcbiAgICAgICAgICAvLyBSb3VuZGluZyBjYXVzZWQgdGhlIG51bWJlciB0byBjcm9zcyBpbnRvIHRoZSByYW5nZSBvZiB0aGUgbmV4dCBzeW1ib2wuXG4gICAgICAgICAgc3ltYm9sID0gdGhpcy5zeW1ib2xJbmRleFtpIC0gMV07XG4gICAgICAgICAgcm91bmRlZE51bWJlciAvPSAxMDAwO1xuICAgICAgICB9XG5cbiAgICAgICAgc3VmZml4ID0gc3ltYm9sLmxhYmVsO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBvdXRwdXQgPVxuICAgICAgcm91bmRlZE51bWJlci50b1N0cmluZygpLnJlcGxhY2UoZGVjaW1hbFBsYWNlUmVnRXhwLCAnJDEnKSArIHN1ZmZpeDtcblxuICAgIHRoaXMuc3RvcmVTaG9ydGVuU3ltYm9sKG91dHB1dCk7XG5cbiAgICBjb25zdCBsb2NhbGUgPSBvcHRpb25zLmxvY2FsZSB8fCB0aGlzLmN1cnJlbnRMb2NhbGU7XG5cbiAgICBsZXQgZGlnaXRzOiBzdHJpbmc7XG4gICAgbGV0IGlzRGVjaW1hbDogYm9vbGVhbjtcblxuICAgIC8vIENoZWNrcyB0aGUgc3RyaW5nIGVudGVyZWQgZm9yIGZvcm1hdC4gVXNpbmcgdG9Mb3dlckNhc2UgdG8gaWdub3JlIGNhc2UuXG4gICAgc3dpdGNoIChvcHRpb25zLmZvcm1hdD8udG9Mb3dlckNhc2UoKSkge1xuICAgICAgLy8gSW4gYSBjYXNlIHdoZXJlIGEgZGVjaW1hbCB2YWx1ZSB3YXMgbm90IHNob3J0ZW5lZCBhbmRcbiAgICAgIC8vIHRoZSBkaWdpdCBpbnB1dCBpcyAyIG9yIGhpZ2hlciwgaXQgZm9yY2VzIDIgZGlnaXRzLlxuICAgICAgLy8gRm9yIGV4YW1wbGUsIHRoaXMgcHJldmVudHMgYSB2YWx1ZSBsaWtlICQxNS41MCBmcm9tIGRpc3BsYXlpbmcgYXMgJDE1LjUuXG4gICAgICAvLyBOb3RlOiBUaGlzIHdpbGwgbmVlZCB0byBiZSByZXZpZXdlZCBpZiB3ZSBzdXBwb3J0IGN1cnJlbmNpZXMgd2l0aFxuICAgICAgLy8gdGhyZWUgZGVjaW1hbCBkaWdpdHMuXG4gICAgICBjYXNlICdjdXJyZW5jeSc6XG4gICAgICAgIGlzRGVjaW1hbCA9IHZhbHVlICUgMSAhPT0gMDtcblxuICAgICAgICBpZiAob3B0aW9ucy5taW5EaWdpdHMpIHtcbiAgICAgICAgICBkaWdpdHMgPSBgMS4ke29wdGlvbnMubWluRGlnaXRzfS0ke29wdGlvbnMuZGlnaXRzfWA7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEZWNpbWFsICYmIG9wdGlvbnMuZGlnaXRzID49IDIpIHtcbiAgICAgICAgICBkaWdpdHMgPSBgMS4yLSR7b3B0aW9ucy5kaWdpdHN9YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkaWdpdHMgPSBgMS4wLSR7b3B0aW9ucy5kaWdpdHN9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIG91dHB1dCA9IFNreU51bWJlckZvcm1hdFV0aWxpdHkuZm9ybWF0TnVtYmVyKFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBwYXJzZUZsb2F0KG91dHB1dCksXG4gICAgICAgICAgU2t5SW50bE51bWJlckZvcm1hdFN0eWxlLkN1cnJlbmN5LFxuICAgICAgICAgIGRpZ2l0cyxcbiAgICAgICAgICBvcHRpb25zLmlzbyxcbiAgICAgICAgICAvLyBBbmd1bGFyIDUrIG5lZWRzIGEgc3RyaW5nIGZvciB0aGlzIHBhcmFtZXRlciwgYnV0IEFuZ3VsYXIgNCBuZWVkcyBhIGJvb2xlYW4uXG4gICAgICAgICAgLy8gVG8gc3VwcG9ydCBib3RoIHZlcnNpb25zIHdlIGNhbiBzdXBwbHkgJ3N5bWJvbCcgd2hpY2ggd2lsbCBldmFsdWF0ZSB0cnV0aHkgZm9yIEFuZ3VsYXIgNFxuICAgICAgICAgIC8vIGFuZCB0aGUgYXBwcm9wcmlhdGUgc3RyaW5nIHZhbHVlIGZvciBBbmd1bGFyIDUrLlxuICAgICAgICAgIC8vIFNlZTogaHR0cHM6Ly9hbmd1bGFyLmlvL2FwaS9jb21tb24vQ3VycmVuY3lQaXBlI3BhcmFtZXRlcnNcbiAgICAgICAgICAnc3ltYm9sJyBhcyBhbnksXG4gICAgICAgICAgb3B0aW9ucy5jdXJyZW5jeVNpZ25cbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIC8vIFRoZSBmb2xsb3dpbmcgaXMgYSBjYXRjaC1hbGwgdG8gZW5zdXJlIHRoYXQgaWZcbiAgICAgIC8vIGFueXRoaW5nIGJ1dCBjdXJyZW5jeSAob3IgYSBmdXR1cmUgb3B0aW9uKSBhcmUgZW50ZXJlZCxcbiAgICAgIC8vIGl0IHdpbGwgYmUgdHJlYXRlZCBsaWtlIGEgbnVtYmVyLlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gRW5zdXJlcyBsb2NhbGl6YXRpb24gb2YgdGhlIG51bWJlciB0byBlbnN1cmUgY29tbWEgYW5kXG4gICAgICAgIC8vIGRlY2ltYWwgc2VwYXJhdG9yXG4gICAgICAgIGlmIChvcHRpb25zLm1pbkRpZ2l0cykge1xuICAgICAgICAgIGRpZ2l0cyA9IGAxLiR7b3B0aW9ucy5taW5EaWdpdHN9LSR7b3B0aW9ucy5kaWdpdHN9YDtcbiAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLnRydW5jYXRlKSB7XG4gICAgICAgICAgZGlnaXRzID0gYDEuMC0ke29wdGlvbnMuZGlnaXRzfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGlnaXRzID0gYDEuJHtvcHRpb25zLmRpZ2l0c30tJHtvcHRpb25zLmRpZ2l0c31gO1xuICAgICAgICB9XG5cbiAgICAgICAgb3V0cHV0ID0gU2t5TnVtYmVyRm9ybWF0VXRpbGl0eS5mb3JtYXROdW1iZXIoXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhcnNlRmxvYXQob3V0cHV0KSxcbiAgICAgICAgICBTa3lJbnRsTnVtYmVyRm9ybWF0U3R5bGUuRGVjaW1hbCxcbiAgICAgICAgICBkaWdpdHNcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMudHJ1bmNhdGUpIHtcbiAgICAgIG91dHB1dCA9IHRoaXMucmVwbGFjZVNob3J0ZW5TeW1ib2wob3V0cHV0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0cHV0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJvdW5kcyBhIGdpdmVuIG51bWJlclxuICAgKlxuICAgKiBKUydzIGxpbWl0YXRpb24gLSBudW1iZXJzIGJpZ2dlciB0aGFuIE51bWJlci5NSU5fU0FGRV9JTlRFR0VSIG9yIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSXG4gICAqIGFyZSBub3QgZ3VhcmFudGVlZCB0byBiZSByZXByZXNlbnRlZCBvciByb3VuZGVkIGNvcnJlY3RseVxuICAgKiBAcGFyYW0gdmFsdWUgLSB2YWx1ZSB0byByb3VuZFxuICAgKiBAcGFyYW0gcHJlY2lzaW9uIC0gd2hhdCBwcmVjaXNpb24gdG8gcm91bmQgd2l0aCwgZGVmYXVsdHMgdG8gMCBkZWNpbWFsIHBsYWNlc1xuICAgKi9cbiAgcHJpdmF0ZSByb3VuZE51bWJlcih2YWx1ZTogbnVtYmVyLCBwcmVjaXNpb246IG51bWJlciA9IDApOiBudW1iZXIge1xuICAgIGlmIChwcmVjaXNpb24gPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NreUludmFsaWRBcmd1bWVudDogcHJlY2lzaW9uIG11c3QgYmUgPj0gMCcpO1xuICAgIH1cblxuICAgIC8qIFNhbml0eSBjaGVjayAtIGlnbm9yaW5nIGNvdmVyYWdlIGJ1dCBzaG91bGQgbm90IGlnbm9yZSBpZiB3ZSBtYWtlIHRoaXMgbWV0aG9kIHB1YmxpYyAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKGlzTmFOKHZhbHVlKSB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3Qgc2NhbGVkVmFsdWU6IG51bWJlciA9IHRoaXMuc2NhbGVOdW1iZXJCeVBvd2VyT2ZUZW4oXG4gICAgICB2YWx1ZSxcbiAgICAgIHByZWNpc2lvbixcbiAgICAgIHRydWVcbiAgICApO1xuICAgIGNvbnN0IHNjYWxlZFJvdW5kZWRWYWx1ZTogbnVtYmVyID0gTWF0aC5yb3VuZChzY2FsZWRWYWx1ZSk7XG4gICAgY29uc3QgdW5zY2FsZWRSb3VuZGVkVmFsdWU6IG51bWJlciA9IHRoaXMuc2NhbGVOdW1iZXJCeVBvd2VyT2ZUZW4oXG4gICAgICBzY2FsZWRSb3VuZGVkVmFsdWUsXG4gICAgICBwcmVjaXNpb24sXG4gICAgICBmYWxzZVxuICAgICk7XG5cbiAgICByZXR1cm4gdW5zY2FsZWRSb3VuZGVkVmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogU2NhbGVzIGEgZ2l2ZW4gbnVtYmVyIGJ5IGEgcG93ZXIgb2YgMTBcbiAgICogQHBhcmFtIHZhbHVlIC0gdmFsdWUgdG8gc2NhbGVcbiAgICogQHBhcmFtIHNjYWxhciAtIDEwXnNjYWxhclxuICAgKiBAcGFyYW0gc2NhbGVVcCAtIHdoZXRoZXIgdG8gaW5jcmVhc2Ugb3IgZGVjcmVhc2UgdGhlIHZhbHVlXG4gICAqL1xuICBwcml2YXRlIHNjYWxlTnVtYmVyQnlQb3dlck9mVGVuKFxuICAgIHZhbHVlOiBudW1iZXIsXG4gICAgc2NhbGFyOiBudW1iZXIsXG4gICAgc2NhbGVVcDogYm9vbGVhblxuICApOiBudW1iZXIge1xuICAgIGNvbnN0IHZhbHVlU3RyOiBzdHJpbmcgPSB2YWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgaXNFeHBvbmVudEZvcm1hdDogYm9vbGVhbiA9IHZhbHVlU3RyLmluY2x1ZGVzKCdlJyk7XG5cbiAgICBpZiAoaXNFeHBvbmVudEZvcm1hdCkge1xuICAgICAgY29uc3QgW2Jhc2UsIGV4cF0gPSB2YWx1ZVN0ci5zcGxpdCgnZScpO1xuICAgICAgY29uc3QgbmV3RXhwID0gc2NhbGVVcCA/IE51bWJlcihleHApICsgc2NhbGFyIDogTnVtYmVyKGV4cCkgLSBzY2FsYXI7XG4gICAgICByZXR1cm4gTnVtYmVyKGAke2Jhc2V9ZSR7bmV3RXhwfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBlID0gc2NhbGVVcCA/ICdlJyA6ICdlLSc7XG4gICAgICByZXR1cm4gTnVtYmVyKGAke3ZhbHVlfSR7ZX0ke3NjYWxhcn1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3RvcmVzIHRoZSBzeW1ib2wgYWRkZWQgZnJvbSBzaG9ydGVuaW5nIHRvIHJlYXBwbHkgbGF0ZXIuXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgc3RyaW5nIHRvIGRlcml2ZSB0aGUgc2hvcnRlbiBzeW1ib2wgZnJvbS5cbiAgICovXG4gIHByaXZhdGUgc3RvcmVTaG9ydGVuU3ltYm9sKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzeW1ib2xzOiBzdHJpbmdbXSA9IHRoaXMuc3ltYm9sSW5kZXgubWFwKChzKSA9PiBzLmxhYmVsKTtcbiAgICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKHN5bWJvbHMuam9pbignfCcpLCAnaWcnKTtcbiAgICBjb25zdCBtYXRjaCA9IHZhbHVlLm1hdGNoKHJlZ2V4cCk7XG4gICAgdGhpcy5zaG9ydFN5bWJvbCA9IG1hdGNoID8gbWF0Y2gudG9TdHJpbmcoKSA6ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIE11c3QgaGF2ZSBwcmV2aW91c2x5IGNhbGxlZCBzdG9yZVNob3J0ZW5TeW1ib2wgdG8gaGF2ZSBzb21ldGhpbmcgdG8gcmVwbGFjZS5cbiAgICogRmluZHMgdGhlIGxhc3QgbnVtYmVyIGluIHRoZSBmb3JtYXR0ZWQgbnVtYmVyLCBnZXRzIHRoZSBpbmRleCBvZiB0aGUgcG9zaXRpb25cbiAgICogYWZ0ZXIgdGhhdCBjaGFyYWN0ZXIgYW5kIHJlLWluc2VydHMgdGhlIHN5bWJvbC5cbiAgICogV29ya3MgcmVnYXJkbGVzcyBvZiBjdXJyZW5jeSBzeW1ib2wgcG9zaXRpb24uXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgc3RyaW5nIHRvIG1vZGlmeS5cbiAgICovXG4gIHByaXZhdGUgcmVwbGFjZVNob3J0ZW5TeW1ib2wodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVzdWx0ID0gLyhcXGQpKD8hLipcXGQpL2cuZXhlYyh2YWx1ZSk7XG4gICAgY29uc3QgcG9zID0gcmVzdWx0LmluZGV4ICsgcmVzdWx0Lmxlbmd0aDtcbiAgICBjb25zdCBvdXRwdXQgPVxuICAgICAgdmFsdWUuc3Vic3RyaW5nKDAsIHBvcykgKyB0aGlzLnNob3J0U3ltYm9sICsgdmFsdWUuc3Vic3RyaW5nKHBvcyk7XG5cbiAgICByZXR1cm4gb3V0cHV0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTeW1ib2woa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIFRPRE86IE5lZWQgdG8gaW1wbGVtZW50IHRoZSBhc3luYyBgZ2V0U3RyaW5nYCBtZXRob2QgaW4gYSBicmVha2luZyBjaGFuZ2UuXG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2VzU2VydmljZS5nZXRTdHJpbmdGb3JMb2NhbGUoeyBsb2NhbGU6ICdlbl9VUycgfSwga2V5KTtcbiAgfVxufVxuIl19
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL251bWVyaWMvbnVtZXJpYy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFL0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0NBQStDLENBQUM7OztBQVF2RixNQUFNLE9BQU8saUJBQWlCO0lBZ0I1QixZQUFZLFlBQW9DOztRQWZoRDs7O1dBR0c7UUFDSSxrQkFBYSxHQUFHLE9BQU8sQ0FBQztRQUUvQjs7V0FFRztRQUNJLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBRXhCLGtEQUFzQztRQUV0QyxpREFBaUM7UUFHL0IsdUJBQUEsSUFBSSxtQ0FBaUIsWUFBWSxNQUFBLENBQUM7UUFFbEMsdUJBQUEsSUFBSSxrQ0FBZ0I7WUFDbEIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSx1QkFBQSxJQUFJLGtFQUFXLE1BQWYsSUFBSSxFQUFZLGdDQUFnQyxDQUFDLEVBQUU7WUFDekUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSx1QkFBQSxJQUFJLGtFQUFXLE1BQWYsSUFBSSxFQUFZLCtCQUErQixDQUFDLEVBQUU7WUFDdkUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSx1QkFBQSxJQUFJLGtFQUFXLE1BQWYsSUFBSSxFQUFZLCtCQUErQixDQUFDLEVBQUU7WUFDdkUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSx1QkFBQSxJQUFJLGtFQUFXLE1BQWYsSUFBSSxFQUFZLGdDQUFnQyxDQUFDLEVBQUU7U0FDekUs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a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5SW50bE51bWJlckZvcm1hdFN0eWxlLCBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQgeyBTa3lOdW1iZXJGb3JtYXRVdGlsaXR5IH0gZnJvbSAnLi4vc2hhcmVkL251bWJlci1mb3JtYXQvbnVtYmVyLWZvcm1hdC11dGlsaXR5JztcblxuaW1wb3J0IHsgU2t5TnVtZXJpY1N5bWJvbCB9IGZyb20gJy4vbnVtZXJpYy1zeW1ib2wnO1xuaW1wb3J0IHsgU2t5TnVtZXJpY09wdGlvbnMgfSBmcm9tICcuL251bWVyaWMub3B0aW9ucyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ2FueScsXG59KVxuZXhwb3J0IGNsYXNzIFNreU51bWVyaWNTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFRoZSBicm93c2VyJ3MgY3VycmVudCBsb2NhbGUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGN1cnJlbnRMb2NhbGUgPSAnZW4tVVMnO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzaG9ydFN5bWJvbCA9ICcnO1xuXG4gICNyZXNvdXJjZXNTdmM6IFNreUxpYlJlc291cmNlc1NlcnZpY2U7XG5cbiAgI3N5bWJvbEluZGV4OiBTa3lOdW1lcmljU3ltYm9sW107XG5cbiAgY29uc3RydWN0b3IocmVzb3VyY2VzU3ZjOiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlKSB7XG4gICAgdGhpcy4jcmVzb3VyY2VzU3ZjID0gcmVzb3VyY2VzU3ZjO1xuXG4gICAgdGhpcy4jc3ltYm9sSW5kZXggPSBbXG4gICAgICB7IHZhbHVlOiAxZTEyLCBsYWJlbDogdGhpcy4jZ2V0U3ltYm9sKCdza3l1eF9udW1lcmljX3RyaWxsaW9uc19zeW1ib2wnKSB9LFxuICAgICAgeyB2YWx1ZTogMWU5LCBsYWJlbDogdGhpcy4jZ2V0U3ltYm9sKCdza3l1eF9udW1lcmljX2JpbGxpb25zX3N5bWJvbCcpIH0sXG4gICAgICB7IHZhbHVlOiAxZTYsIGxhYmVsOiB0aGlzLiNnZXRTeW1ib2woJ3NreXV4X251bWVyaWNfbWlsbGlvbnNfc3ltYm9sJykgfSxcbiAgICAgIHsgdmFsdWU6IDFlMywgbGFiZWw6IHRoaXMuI2dldFN5bWJvbCgnc2t5dXhfbnVtZXJpY190aG91c2FuZHNfc3ltYm9sJykgfSxcbiAgICBdO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdHMgYSBudW1iZXIgYmFzZWQgb24gdGhlIHByb3ZpZGVkIG9wdGlvbnMuXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgbnVtYmVyIHRvIGZvcm1hdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgRm9ybWF0IG9wdGlvbnMuXG4gICAqL1xuICBwdWJsaWMgZm9ybWF0TnVtYmVyKHZhbHVlOiBudW1iZXIsIG9wdGlvbnM6IFNreU51bWVyaWNPcHRpb25zKTogc3RyaW5nIHtcbiAgICBpZiAoaXNOYU4odmFsdWUpIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgZGVjaW1hbFBsYWNlUmVnRXhwID0gL1xcLjArJHwoXFwuWzAtOV0qWzEtOV0pMCskLztcbiAgICBjb25zdCBsb2NhbGUgPSBvcHRpb25zLmxvY2FsZSB8fCB0aGlzLmN1cnJlbnRMb2NhbGU7XG4gICAgY29uc3QgZGlnaXRzID0gb3B0aW9ucy5kaWdpdHMgfHwgMDtcblxuICAgIC8vIEdldCB0aGUgc3ltYm9sIGZvciB0aGUgbnVtYmVyIGFmdGVyIHJvdW5kaW5nLCBzaW5jZSByb3VuZGluZyBjb3VsZCBwdXNoIHRoZSBudW1iZXJcbiAgICAvLyBpbnRvIGEgZGlmZmVyZW50IHN5bWJvbCByYW5nZS5cbiAgICBsZXQgcm91bmRlZE51bWJlciA9IHRoaXMuI3JvdW5kTnVtYmVyKHZhbHVlLCBkaWdpdHMpO1xuICAgIGNvbnN0IHJvdW5kZWROdW1iZXJBYnMgPSBNYXRoLmFicyhyb3VuZGVkTnVtYmVyKTtcblxuICAgIGxldCBzdWZmaXggPSAnJztcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy4jc3ltYm9sSW5kZXgubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBzeW1ib2wgPSB0aGlzLiNzeW1ib2xJbmRleFtpXTtcblxuICAgICAgaWYgKFxuICAgICAgICBvcHRpb25zLnRydW5jYXRlICYmXG4gICAgICAgIG9wdGlvbnMudHJ1bmNhdGVBZnRlciAmJlxuICAgICAgICByb3VuZGVkTnVtYmVyQWJzID49IG9wdGlvbnMudHJ1bmNhdGVBZnRlciAmJlxuICAgICAgICByb3VuZGVkTnVtYmVyQWJzID49IHN5bWJvbC52YWx1ZVxuICAgICAgKSB7XG4gICAgICAgIHJvdW5kZWROdW1iZXIgPSB0aGlzLiNyb3VuZE51bWJlcih2YWx1ZSAvIHN5bWJvbC52YWx1ZSwgZGlnaXRzKTtcblxuICAgICAgICBpZiAoTWF0aC5hYnMocm91bmRlZE51bWJlcikgPT09IDEwMDAgJiYgaSA+IDApIHtcbiAgICAgICAgICAvLyBSb3VuZGluZyBjYXVzZWQgdGhlIG51bWJlciB0byBjcm9zcyBpbnRvIHRoZSByYW5nZSBvZiB0aGUgbmV4dCBzeW1ib2wuXG4gICAgICAgICAgc3ltYm9sID0gdGhpcy4jc3ltYm9sSW5kZXhbaSAtIDFdO1xuICAgICAgICAgIHJvdW5kZWROdW1iZXIgLz0gMTAwMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1ZmZpeCA9IHN5bWJvbC5sYWJlbDtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgb3V0cHV0OiBzdHJpbmcgPVxuICAgICAgcm91bmRlZE51bWJlci50b1N0cmluZygpLnJlcGxhY2UoZGVjaW1hbFBsYWNlUmVnRXhwLCAnJDEnKSArIHN1ZmZpeDtcblxuICAgIHRoaXMuI3N0b3JlU2hvcnRlblN5bWJvbChvdXRwdXQpO1xuXG4gICAgbGV0IGRpZ2l0c0Zvcm1hdHRlZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGxldCBpc0RlY2ltYWwgPSBmYWxzZTtcblxuICAgIC8vIENoZWNrcyB0aGUgc3RyaW5nIGVudGVyZWQgZm9yIGZvcm1hdC4gVXNpbmcgdG9Mb3dlckNhc2UgdG8gaWdub3JlIGNhc2UuXG4gICAgc3dpdGNoIChvcHRpb25zLmZvcm1hdD8udG9Mb3dlckNhc2UoKSkge1xuICAgICAgLy8gSW4gYSBjYXNlIHdoZXJlIGEgZGVjaW1hbCB2YWx1ZSB3YXMgbm90IHNob3J0ZW5lZCBhbmRcbiAgICAgIC8vIHRoZSBkaWdpdCBpbnB1dCBpcyAyIG9yIGhpZ2hlciwgaXQgZm9yY2VzIDIgZGlnaXRzLlxuICAgICAgLy8gRm9yIGV4YW1wbGUsIHRoaXMgcHJldmVudHMgYSB2YWx1ZSBsaWtlICQxNS41MCBmcm9tIGRpc3BsYXlpbmcgYXMgJDE1LjUuXG4gICAgICAvLyBOb3RlOiBUaGlzIHdpbGwgbmVlZCB0byBiZSByZXZpZXdlZCBpZiB3ZSBzdXBwb3J0IGN1cnJlbmNpZXMgd2l0aFxuICAgICAgLy8gdGhyZWUgZGVjaW1hbCBkaWdpdHMuXG4gICAgICBjYXNlICdjdXJyZW5jeSc6XG4gICAgICAgIGlzRGVjaW1hbCA9IHZhbHVlICUgMSAhPT0gMDtcblxuICAgICAgICBpZiAob3B0aW9ucy5taW5EaWdpdHMpIHtcbiAgICAgICAgICBkaWdpdHNGb3JtYXR0ZWQgPSBgMS4ke29wdGlvbnMubWluRGlnaXRzfS0ke2RpZ2l0c31gO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRGVjaW1hbCAmJiBkaWdpdHMgPj0gMikge1xuICAgICAgICAgIGRpZ2l0c0Zvcm1hdHRlZCA9IGAxLjItJHtkaWdpdHN9YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkaWdpdHNGb3JtYXR0ZWQgPSBgMS4wLSR7ZGlnaXRzfWA7XG4gICAgICAgIH1cblxuICAgICAgICBvdXRwdXQgPSBTa3lOdW1iZXJGb3JtYXRVdGlsaXR5LmZvcm1hdE51bWJlcihcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgcGFyc2VGbG9hdChvdXRwdXQpLFxuICAgICAgICAgIFNreUludGxOdW1iZXJGb3JtYXRTdHlsZS5DdXJyZW5jeSxcbiAgICAgICAgICBkaWdpdHNGb3JtYXR0ZWQsXG4gICAgICAgICAgb3B0aW9ucy5pc28sXG4gICAgICAgICAgLy8gQW5ndWxhciA1KyBuZWVkcyBhIHN0cmluZyBmb3IgdGhpcyBwYXJhbWV0ZXIsIGJ1dCBBbmd1bGFyIDQgbmVlZHMgYSBib29sZWFuLlxuICAgICAgICAgIC8vIFRvIHN1cHBvcnQgYm90aCB2ZXJzaW9ucyB3ZSBjYW4gc3VwcGx5ICdzeW1ib2wnIHdoaWNoIHdpbGwgZXZhbHVhdGUgdHJ1dGh5IGZvciBBbmd1bGFyIDRcbiAgICAgICAgICAvLyBhbmQgdGhlIGFwcHJvcHJpYXRlIHN0cmluZyB2YWx1ZSBmb3IgQW5ndWxhciA1Ky5cbiAgICAgICAgICAvLyBTZWU6IGh0dHBzOi8vYW5ndWxhci5pby9hcGkvY29tbW9uL0N1cnJlbmN5UGlwZSNwYXJhbWV0ZXJzXG4gICAgICAgICAgJ3N5bWJvbCcgYXMgYW55LFxuICAgICAgICAgIG9wdGlvbnMuY3VycmVuY3lTaWduXG4gICAgICAgICkgYXMgc3RyaW5nO1xuICAgICAgICAvLyAgIF5eXl5eXiBSZXN1bHQgY2FuJ3QgYmUgbnVsbCBzaW5jZSB0aGUgc2FuaXRpemVkIGlucHV0IGlzIGFsd2F5cyBhIG51bWJlci5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIC8vIFRoZSBmb2xsb3dpbmcgaXMgYSBjYXRjaC1hbGwgdG8gZW5zdXJlIHRoYXQgaWZcbiAgICAgIC8vIGFueXRoaW5nIGJ1dCBjdXJyZW5jeSAob3IgYSBmdXR1cmUgb3B0aW9uKSBhcmUgZW50ZXJlZCxcbiAgICAgIC8vIGl0IHdpbGwgYmUgdHJlYXRlZCBsaWtlIGEgbnVtYmVyLlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gRW5zdXJlcyBsb2NhbGl6YXRpb24gb2YgdGhlIG51bWJlciB0byBlbnN1cmUgY29tbWEgYW5kXG4gICAgICAgIC8vIGRlY2ltYWwgc2VwYXJhdG9yXG4gICAgICAgIGlmIChvcHRpb25zLm1pbkRpZ2l0cykge1xuICAgICAgICAgIGRpZ2l0c0Zvcm1hdHRlZCA9IGAxLiR7b3B0aW9ucy5taW5EaWdpdHN9LSR7ZGlnaXRzfWA7XG4gICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy50cnVuY2F0ZSkge1xuICAgICAgICAgIGRpZ2l0c0Zvcm1hdHRlZCA9IGAxLjAtJHtkaWdpdHN9YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkaWdpdHNGb3JtYXR0ZWQgPSBgMS4ke2RpZ2l0c30tJHtkaWdpdHN9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIG91dHB1dCA9IFNreU51bWJlckZvcm1hdFV0aWxpdHkuZm9ybWF0TnVtYmVyKFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBwYXJzZUZsb2F0KG91dHB1dCksXG4gICAgICAgICAgU2t5SW50bE51bWJlckZvcm1hdFN0eWxlLkRlY2ltYWwsXG4gICAgICAgICAgZGlnaXRzRm9ybWF0dGVkXG4gICAgICAgICkgYXMgc3RyaW5nO1xuICAgICAgICAvLyAgIF5eXl5eXiBSZXN1bHQgY2FuJ3QgYmUgbnVsbCBzaW5jZSB0aGUgc2FuaXRpemVkIGlucHV0IGlzIGFsd2F5cyBhIG51bWJlci5cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMudHJ1bmNhdGUpIHtcbiAgICAgIG91dHB1dCA9IHRoaXMuI3JlcGxhY2VTaG9ydGVuU3ltYm9sKG91dHB1dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSb3VuZHMgYSBnaXZlbiBudW1iZXJcbiAgICpcbiAgICogSlMncyBsaW1pdGF0aW9uIC0gbnVtYmVycyBiaWdnZXIgdGhhbiBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUiBvciBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUlxuICAgKiBhcmUgbm90IGd1YXJhbnRlZWQgdG8gYmUgcmVwcmVzZW50ZWQgb3Igcm91bmRlZCBjb3JyZWN0bHlcbiAgICogQHBhcmFtIHZhbHVlIC0gdmFsdWUgdG8gcm91bmRcbiAgICogQHBhcmFtIHByZWNpc2lvbiAtIHdoYXQgcHJlY2lzaW9uIHRvIHJvdW5kIHdpdGgsIGRlZmF1bHRzIHRvIDAgZGVjaW1hbCBwbGFjZXNcbiAgICovXG4gICNyb3VuZE51bWJlcih2YWx1ZTogbnVtYmVyLCBwcmVjaXNpb246IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKHByZWNpc2lvbiA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2t5SW52YWxpZEFyZ3VtZW50OiBwcmVjaXNpb24gbXVzdCBiZSA+PSAwJyk7XG4gICAgfVxuXG4gICAgLyogU2FuaXR5IGNoZWNrIC0gaWdub3JpbmcgY292ZXJhZ2UgYnV0IHNob3VsZCBub3QgaWdub3JlIGlmIHdlIG1ha2UgdGhpcyBtZXRob2QgcHVibGljICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAoaXNOYU4odmFsdWUpIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCBzY2FsZWRWYWx1ZTogbnVtYmVyID0gdGhpcy4jc2NhbGVOdW1iZXJCeVBvd2VyT2ZUZW4oXG4gICAgICB2YWx1ZSxcbiAgICAgIHByZWNpc2lvbixcbiAgICAgIHRydWVcbiAgICApO1xuICAgIGNvbnN0IHNjYWxlZFJvdW5kZWRWYWx1ZTogbnVtYmVyID0gTWF0aC5yb3VuZChzY2FsZWRWYWx1ZSk7XG4gICAgY29uc3QgdW5zY2FsZWRSb3VuZGVkVmFsdWU6IG51bWJlciA9IHRoaXMuI3NjYWxlTnVtYmVyQnlQb3dlck9mVGVuKFxuICAgICAgc2NhbGVkUm91bmRlZFZhbHVlLFxuICAgICAgcHJlY2lzaW9uLFxuICAgICAgZmFsc2VcbiAgICApO1xuXG4gICAgcmV0dXJuIHVuc2NhbGVkUm91bmRlZFZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNjYWxlcyBhIGdpdmVuIG51bWJlciBieSBhIHBvd2VyIG9mIDEwXG4gICAqIEBwYXJhbSB2YWx1ZSAtIHZhbHVlIHRvIHNjYWxlXG4gICAqIEBwYXJhbSBzY2FsYXIgLSAxMF5zY2FsYXJcbiAgICogQHBhcmFtIHNjYWxlVXAgLSB3aGV0aGVyIHRvIGluY3JlYXNlIG9yIGRlY3JlYXNlIHRoZSB2YWx1ZVxuICAgKi9cbiAgI3NjYWxlTnVtYmVyQnlQb3dlck9mVGVuKFxuICAgIHZhbHVlOiBudW1iZXIsXG4gICAgc2NhbGFyOiBudW1iZXIsXG4gICAgc2NhbGVVcDogYm9vbGVhblxuICApOiBudW1iZXIge1xuICAgIGNvbnN0IHZhbHVlU3RyOiBzdHJpbmcgPSB2YWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgaXNFeHBvbmVudEZvcm1hdDogYm9vbGVhbiA9IHZhbHVlU3RyLmluY2x1ZGVzKCdlJyk7XG5cbiAgICBpZiAoaXNFeHBvbmVudEZvcm1hdCkge1xuICAgICAgY29uc3QgW2Jhc2UsIGV4cF0gPSB2YWx1ZVN0ci5zcGxpdCgnZScpO1xuICAgICAgY29uc3QgbmV3RXhwID0gc2NhbGVVcCA/IE51bWJlcihleHApICsgc2NhbGFyIDogTnVtYmVyKGV4cCkgLSBzY2FsYXI7XG4gICAgICByZXR1cm4gTnVtYmVyKGAke2Jhc2V9ZSR7bmV3RXhwfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBlID0gc2NhbGVVcCA/ICdlJyA6ICdlLSc7XG4gICAgICByZXR1cm4gTnVtYmVyKGAke3ZhbHVlfSR7ZX0ke3NjYWxhcn1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3RvcmVzIHRoZSBzeW1ib2wgYWRkZWQgZnJvbSBzaG9ydGVuaW5nIHRvIHJlYXBwbHkgbGF0ZXIuXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgc3RyaW5nIHRvIGRlcml2ZSB0aGUgc2hvcnRlbiBzeW1ib2wgZnJvbS5cbiAgICovXG4gICNzdG9yZVNob3J0ZW5TeW1ib2wodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHN5bWJvbHM6IHN0cmluZ1tdID0gdGhpcy4jc3ltYm9sSW5kZXgubWFwKChzKSA9PiBzLmxhYmVsKTtcbiAgICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKHN5bWJvbHMuam9pbignfCcpLCAnaWcnKTtcbiAgICBjb25zdCBtYXRjaCA9IHZhbHVlLm1hdGNoKHJlZ2V4cCk7XG4gICAgdGhpcy5zaG9ydFN5bWJvbCA9IG1hdGNoID8gbWF0Y2gudG9TdHJpbmcoKSA6ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIE11c3QgaGF2ZSBwcmV2aW91c2x5IGNhbGxlZCBzdG9yZVNob3J0ZW5TeW1ib2wgdG8gaGF2ZSBzb21ldGhpbmcgdG8gcmVwbGFjZS5cbiAgICogRmluZHMgdGhlIGxhc3QgbnVtYmVyIGluIHRoZSBmb3JtYXR0ZWQgbnVtYmVyLCBnZXRzIHRoZSBpbmRleCBvZiB0aGUgcG9zaXRpb25cbiAgICogYWZ0ZXIgdGhhdCBjaGFyYWN0ZXIgYW5kIHJlLWluc2VydHMgdGhlIHN5bWJvbC5cbiAgICogV29ya3MgcmVnYXJkbGVzcyBvZiBjdXJyZW5jeSBzeW1ib2wgcG9zaXRpb24uXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgc3RyaW5nIHRvIG1vZGlmeS5cbiAgICovXG4gICNyZXBsYWNlU2hvcnRlblN5bWJvbCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCByZXN1bHQgPSAvKFxcZCkoPyEuKlxcZCkvZy5leGVjKHZhbHVlKTtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICBjb25zdCBwb3MgPSByZXN1bHQuaW5kZXggKyByZXN1bHQubGVuZ3RoO1xuICAgICAgY29uc3Qgb3V0cHV0ID1cbiAgICAgICAgdmFsdWUuc3Vic3RyaW5nKDAsIHBvcykgKyB0aGlzLnNob3J0U3ltYm9sICsgdmFsdWUuc3Vic3RyaW5nKHBvcyk7XG5cbiAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICAjZ2V0U3ltYm9sKGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBUT0RPOiBOZWVkIHRvIGltcGxlbWVudCB0aGUgYXN5bmMgYGdldFN0cmluZ2AgbWV0aG9kIGluIGEgYnJlYWtpbmcgY2hhbmdlLlxuICAgIHJldHVybiB0aGlzLiNyZXNvdXJjZXNTdmMuZ2V0U3RyaW5nRm9yTG9jYWxlKHsgbG9jYWxlOiAnZW5fVVMnIH0sIGtleSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,3 +1,5 @@
1
+ var _SkyOverlayAdapterService_instances, _SkyOverlayAdapterService_renderer, _SkyOverlayAdapterService_styleElement, _SkyOverlayAdapterService_destroyStyleElement;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
1
3
  import { Injectable, RendererFactory2 } from '@angular/core';
2
4
  import * as i0 from "@angular/core";
3
5
  /**
@@ -5,37 +7,41 @@ import * as i0 from "@angular/core";
5
7
  */
6
8
  export class SkyOverlayAdapterService {
7
9
  constructor(rendererFactory) {
8
- this.renderer = rendererFactory.createRenderer(undefined, undefined);
10
+ _SkyOverlayAdapterService_instances.add(this);
11
+ _SkyOverlayAdapterService_renderer.set(this, void 0);
12
+ _SkyOverlayAdapterService_styleElement.set(this, void 0);
13
+ __classPrivateFieldSet(this, _SkyOverlayAdapterService_renderer, rendererFactory.createRenderer(undefined, null), "f");
9
14
  }
10
15
  restrictBodyScroll() {
11
16
  // Create a style element to avoid overwriting any existing inline body styles.
12
- const styleElement = this.renderer.createElement('style');
13
- const textNode = this.renderer.createText('body { overflow: hidden }');
17
+ const styleElement = __classPrivateFieldGet(this, _SkyOverlayAdapterService_renderer, "f").createElement('style');
18
+ const textNode = __classPrivateFieldGet(this, _SkyOverlayAdapterService_renderer, "f").createText('body { overflow: hidden }');
14
19
  // Apply a `data-` attribute to make unit testing easier.
15
- this.renderer.setAttribute(styleElement, 'data-test-selector', 'sky-overlay-restrict-scroll-styles');
16
- this.renderer.appendChild(styleElement, textNode);
17
- this.renderer.appendChild(document.head, styleElement);
18
- if (this.styleElement) {
19
- this.destroyStyleElement();
20
+ __classPrivateFieldGet(this, _SkyOverlayAdapterService_renderer, "f").setAttribute(styleElement, 'data-test-selector', 'sky-overlay-restrict-scroll-styles');
21
+ __classPrivateFieldGet(this, _SkyOverlayAdapterService_renderer, "f").appendChild(styleElement, textNode);
22
+ __classPrivateFieldGet(this, _SkyOverlayAdapterService_renderer, "f").appendChild(document.head, styleElement);
23
+ if (__classPrivateFieldGet(this, _SkyOverlayAdapterService_styleElement, "f")) {
24
+ __classPrivateFieldGet(this, _SkyOverlayAdapterService_instances, "m", _SkyOverlayAdapterService_destroyStyleElement).call(this);
20
25
  }
21
- this.styleElement = styleElement;
26
+ __classPrivateFieldSet(this, _SkyOverlayAdapterService_styleElement, styleElement, "f");
22
27
  }
23
28
  releaseBodyScroll() {
24
- this.destroyStyleElement();
25
- }
26
- destroyStyleElement() {
27
- /* istanbul ignore else */
28
- if (this.styleElement.parentElement === document.head) {
29
- this.renderer.removeChild(document.head, this.styleElement);
30
- }
29
+ __classPrivateFieldGet(this, _SkyOverlayAdapterService_instances, "m", _SkyOverlayAdapterService_destroyStyleElement).call(this);
31
30
  }
32
31
  }
33
- SkyOverlayAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyOverlayAdapterService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });
34
- SkyOverlayAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyOverlayAdapterService, providedIn: 'root' });
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyOverlayAdapterService, decorators: [{
32
+ _SkyOverlayAdapterService_renderer = new WeakMap(), _SkyOverlayAdapterService_styleElement = new WeakMap(), _SkyOverlayAdapterService_instances = new WeakSet(), _SkyOverlayAdapterService_destroyStyleElement = function _SkyOverlayAdapterService_destroyStyleElement() {
33
+ /* istanbul ignore else */
34
+ if (__classPrivateFieldGet(this, _SkyOverlayAdapterService_styleElement, "f") &&
35
+ __classPrivateFieldGet(this, _SkyOverlayAdapterService_styleElement, "f").parentElement === document.head) {
36
+ __classPrivateFieldGet(this, _SkyOverlayAdapterService_renderer, "f").removeChild(document.head, __classPrivateFieldGet(this, _SkyOverlayAdapterService_styleElement, "f"));
37
+ }
38
+ };
39
+ SkyOverlayAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyOverlayAdapterService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });
40
+ SkyOverlayAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyOverlayAdapterService, providedIn: 'root' });
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyOverlayAdapterService, decorators: [{
36
42
  type: Injectable,
37
43
  args: [{
38
44
  providedIn: 'root',
39
45
  }]
40
46
  }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }]; } });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1hZGFwdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvb3ZlcmxheS9vdmVybGF5LWFkYXB0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUV4RTs7R0FFRztBQUlILE1BQU0sT0FBTyx3QkFBd0I7SUFLbkMsWUFBWSxlQUFpQztRQUMzQyxJQUFJLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsK0VBQStFO1FBQy9FLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFFdkUseURBQXlEO1FBQ3pELElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUN4QixZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLG9DQUFvQyxDQUNyQyxDQUFDO1FBRUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFdkQsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1NBQzVCO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDbkMsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLDBCQUEwQjtRQUMxQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxLQUFLLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDckQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDN0Q7SUFDSCxDQUFDOztxSEF4Q1Usd0JBQXdCO3lIQUF4Qix3QkFBd0IsY0FGdkIsTUFBTTsyRkFFUCx3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lPdmVybGF5QWRhcHRlclNlcnZpY2Uge1xuICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjI7XG5cbiAgcHJpdmF0ZSBzdHlsZUVsZW1lbnQ6IEhUTUxTdHlsZUVsZW1lbnQ7XG5cbiAgY29uc3RydWN0b3IocmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyKSB7XG4gICAgdGhpcy5yZW5kZXJlciA9IHJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcih1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gIH1cblxuICBwdWJsaWMgcmVzdHJpY3RCb2R5U2Nyb2xsKCk6IHZvaWQge1xuICAgIC8vIENyZWF0ZSBhIHN0eWxlIGVsZW1lbnQgdG8gYXZvaWQgb3ZlcndyaXRpbmcgYW55IGV4aXN0aW5nIGlubGluZSBib2R5IHN0eWxlcy5cbiAgICBjb25zdCBzdHlsZUVsZW1lbnQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgY29uc3QgdGV4dE5vZGUgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZVRleHQoJ2JvZHkgeyBvdmVyZmxvdzogaGlkZGVuIH0nKTtcblxuICAgIC8vIEFwcGx5IGEgYGRhdGEtYCBhdHRyaWJ1dGUgdG8gbWFrZSB1bml0IHRlc3RpbmcgZWFzaWVyLlxuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKFxuICAgICAgc3R5bGVFbGVtZW50LFxuICAgICAgJ2RhdGEtdGVzdC1zZWxlY3RvcicsXG4gICAgICAnc2t5LW92ZXJsYXktcmVzdHJpY3Qtc2Nyb2xsLXN0eWxlcydcbiAgICApO1xuXG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQsIHRleHROb2RlKTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmhlYWQsIHN0eWxlRWxlbWVudCk7XG5cbiAgICBpZiAodGhpcy5zdHlsZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuZGVzdHJveVN0eWxlRWxlbWVudCgpO1xuICAgIH1cblxuICAgIHRoaXMuc3R5bGVFbGVtZW50ID0gc3R5bGVFbGVtZW50O1xuICB9XG5cbiAgcHVibGljIHJlbGVhc2VCb2R5U2Nyb2xsKCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveVN0eWxlRWxlbWVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95U3R5bGVFbGVtZW50KCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuc3R5bGVFbGVtZW50LnBhcmVudEVsZW1lbnQgPT09IGRvY3VtZW50LmhlYWQpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuaGVhZCwgdGhpcy5zdHlsZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxufVxuIl19
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1hZGFwdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvb3ZlcmxheS9vdmVybGF5LWFkYXB0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRXhFOztHQUVHO0FBSUgsTUFBTSxPQUFPLHdCQUF3QjtJQUtuQyxZQUFZLGVBQWlDOztRQUo3QyxxREFBcUI7UUFFckIseURBQTRDO1FBRzFDLHVCQUFBLElBQUksc0NBQWEsZUFBZSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQUEsQ0FBQztJQUNuRSxDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLCtFQUErRTtRQUMvRSxNQUFNLFlBQVksR0FBRyx1QkFBQSxJQUFJLDBDQUFVLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNELE1BQU0sUUFBUSxHQUFHLHVCQUFBLElBQUksMENBQVUsQ0FBQyxVQUFVLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUV4RSx5REFBeUQ7UUFDekQsdUJBQUEsSUFBSSwwQ0FBVSxDQUFDLFlBQVksQ0FDekIsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixvQ0FBb0MsQ0FDckMsQ0FBQztRQUVGLHVCQUFBLElBQUksMENBQVUsQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ25ELHVCQUFBLElBQUksMENBQVUsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztRQUV4RCxJQUFJLHVCQUFBLElBQUksOENBQWMsRUFBRTtZQUN0Qix1QkFBQSxJQUFJLDBGQUFxQixNQUF6QixJQUFJLENBQXVCLENBQUM7U0FDN0I7UUFFRCx1QkFBQSxJQUFJLDBDQUFpQixZQUFZLE1BQUEsQ0FBQztJQUNwQyxDQUFDO0lBRU0saUJBQWlCO1FBQ3RCLHVCQUFBLElBQUksMEZBQXFCLE1BQXpCLElBQUksQ0FBdUIsQ0FBQztJQUM5QixDQUFDOzs7SUFHQywwQkFBMEI7SUFDMUIsSUFDRSx1QkFBQSxJQUFJLDhDQUFjO1FBQ2xCLHVCQUFBLElBQUksOENBQWMsQ0FBQyxhQUFhLEtBQUssUUFBUSxDQUFDLElBQUksRUFDbEQ7UUFDQSx1QkFBQSxJQUFJLDBDQUFVLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsdUJBQUEsSUFBSSw4Q0FBYyxDQUFDLENBQUM7S0FDL0Q7QUFDSCxDQUFDO3FIQTNDVSx3QkFBd0I7eUhBQXhCLHdCQUF3QixjQUZ2QixNQUFNOzJGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreU92ZXJsYXlBZGFwdGVyU2VydmljZSB7XG4gICNyZW5kZXJlcjogUmVuZGVyZXIyO1xuXG4gICNzdHlsZUVsZW1lbnQ6IEhUTUxTdHlsZUVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IocmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyKSB7XG4gICAgdGhpcy4jcmVuZGVyZXIgPSByZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIodW5kZWZpbmVkLCBudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyByZXN0cmljdEJvZHlTY3JvbGwoKTogdm9pZCB7XG4gICAgLy8gQ3JlYXRlIGEgc3R5bGUgZWxlbWVudCB0byBhdm9pZCBvdmVyd3JpdGluZyBhbnkgZXhpc3RpbmcgaW5saW5lIGJvZHkgc3R5bGVzLlxuICAgIGNvbnN0IHN0eWxlRWxlbWVudCA9IHRoaXMuI3JlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgY29uc3QgdGV4dE5vZGUgPSB0aGlzLiNyZW5kZXJlci5jcmVhdGVUZXh0KCdib2R5IHsgb3ZlcmZsb3c6IGhpZGRlbiB9Jyk7XG5cbiAgICAvLyBBcHBseSBhIGBkYXRhLWAgYXR0cmlidXRlIHRvIG1ha2UgdW5pdCB0ZXN0aW5nIGVhc2llci5cbiAgICB0aGlzLiNyZW5kZXJlci5zZXRBdHRyaWJ1dGUoXG4gICAgICBzdHlsZUVsZW1lbnQsXG4gICAgICAnZGF0YS10ZXN0LXNlbGVjdG9yJyxcbiAgICAgICdza3ktb3ZlcmxheS1yZXN0cmljdC1zY3JvbGwtc3R5bGVzJ1xuICAgICk7XG5cbiAgICB0aGlzLiNyZW5kZXJlci5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQsIHRleHROb2RlKTtcbiAgICB0aGlzLiNyZW5kZXJlci5hcHBlbmRDaGlsZChkb2N1bWVudC5oZWFkLCBzdHlsZUVsZW1lbnQpO1xuXG4gICAgaWYgKHRoaXMuI3N0eWxlRWxlbWVudCkge1xuICAgICAgdGhpcy4jZGVzdHJveVN0eWxlRWxlbWVudCgpO1xuICAgIH1cblxuICAgIHRoaXMuI3N0eWxlRWxlbWVudCA9IHN0eWxlRWxlbWVudDtcbiAgfVxuXG4gIHB1YmxpYyByZWxlYXNlQm9keVNjcm9sbCgpOiB2b2lkIHtcbiAgICB0aGlzLiNkZXN0cm95U3R5bGVFbGVtZW50KCk7XG4gIH1cblxuICAjZGVzdHJveVN0eWxlRWxlbWVudCgpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChcbiAgICAgIHRoaXMuI3N0eWxlRWxlbWVudCAmJlxuICAgICAgdGhpcy4jc3R5bGVFbGVtZW50LnBhcmVudEVsZW1lbnQgPT09IGRvY3VtZW50LmhlYWRcbiAgICApIHtcbiAgICAgIHRoaXMuI3JlbmRlcmVyLnJlbW92ZUNoaWxkKGRvY3VtZW50LmhlYWQsIHRoaXMuI3N0eWxlRWxlbWVudCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,3 +1,5 @@
1
+ var _SkyOverlayInstance_backdropClick, _SkyOverlayInstance_backdropClickObs, _SkyOverlayInstance_closed, _SkyOverlayInstance_closedObs;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
1
3
  import { Subject } from 'rxjs';
2
4
  /**
3
5
  * Represents a new overlay instance. It is used to manage the "closed" state of the overlay,
@@ -11,29 +13,35 @@ export class SkyOverlayInstance {
11
13
  config, componentRef) {
12
14
  this.config = config;
13
15
  this.componentRef = componentRef;
14
- this._backdropClick = new Subject();
15
- this._closed = new Subject();
16
+ _SkyOverlayInstance_backdropClick.set(this, void 0);
17
+ _SkyOverlayInstance_backdropClickObs.set(this, void 0);
18
+ _SkyOverlayInstance_closed.set(this, void 0);
19
+ _SkyOverlayInstance_closedObs.set(this, void 0);
16
20
  this.id = this.componentRef.instance.id;
17
21
  this.componentRef.instance.closed.subscribe(() => {
18
- this._closed.next();
19
- this._closed.complete();
20
- this._backdropClick.complete();
22
+ __classPrivateFieldGet(this, _SkyOverlayInstance_closed, "f").next();
23
+ __classPrivateFieldGet(this, _SkyOverlayInstance_closed, "f").complete();
24
+ __classPrivateFieldGet(this, _SkyOverlayInstance_backdropClick, "f").complete();
21
25
  });
22
26
  this.componentRef.instance.backdropClick.subscribe(() => {
23
- this._backdropClick.next();
27
+ __classPrivateFieldGet(this, _SkyOverlayInstance_backdropClick, "f").next();
24
28
  });
29
+ __classPrivateFieldSet(this, _SkyOverlayInstance_backdropClick, new Subject(), "f");
30
+ __classPrivateFieldSet(this, _SkyOverlayInstance_closed, new Subject(), "f");
31
+ __classPrivateFieldSet(this, _SkyOverlayInstance_backdropClickObs, __classPrivateFieldGet(this, _SkyOverlayInstance_backdropClick, "f").asObservable(), "f");
32
+ __classPrivateFieldSet(this, _SkyOverlayInstance_closedObs, __classPrivateFieldGet(this, _SkyOverlayInstance_closed, "f").asObservable(), "f");
25
33
  }
26
34
  /**
27
35
  * Emits when the overlay is clicked (but not its content).
28
36
  */
29
37
  get backdropClick() {
30
- return this._backdropClick.asObservable();
38
+ return __classPrivateFieldGet(this, _SkyOverlayInstance_backdropClickObs, "f");
31
39
  }
32
40
  /**
33
41
  * Emits after the overlay is closed.
34
42
  */
35
43
  get closed() {
36
- return this._closed.asObservable();
44
+ return __classPrivateFieldGet(this, _SkyOverlayInstance_closedObs, "f");
37
45
  }
38
46
  /**
39
47
  * Creates and attaches a component to the overlay.
@@ -53,4 +61,5 @@ export class SkyOverlayInstance {
53
61
  this.componentRef.instance.attachTemplate(templateRef, context);
54
62
  }
55
63
  }
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1pbnN0YW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9vdmVybGF5L292ZXJsYXktaW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUszQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBcUI3QjtJQUNFOztPQUVHO0lBQ2EsTUFBd0IsRUFDeEIsWUFBK0M7UUFEL0MsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQW1DO1FBVHpELG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVyQyxZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVNwQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUV4QyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3RELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBdENEOztPQUVHO0lBQ0gsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQTRCRDs7OztPQUlHO0lBQ0ksZUFBZSxDQUNwQixTQUFrQixFQUNsQixTQUE0QjtRQUU1QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQzdELFNBQVMsRUFDVCxTQUFTLENBQ1YsQ0FBQztRQUNGLE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGNBQWMsQ0FBSSxXQUEyQixFQUFFLE9BQVc7UUFDL0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYsIFN0YXRpY1Byb3ZpZGVyLCBUZW1wbGF0ZVJlZiwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreU92ZXJsYXlDb25maWcgfSBmcm9tICcuL292ZXJsYXktY29uZmlnJztcbmltcG9ydCB7IFNreU92ZXJsYXlDb21wb25lbnQgfSBmcm9tICcuL292ZXJsYXkuY29tcG9uZW50JztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgbmV3IG92ZXJsYXkgaW5zdGFuY2UuIEl0IGlzIHVzZWQgdG8gbWFuYWdlIHRoZSBcImNsb3NlZFwiIHN0YXRlIG9mIHRoZSBvdmVybGF5LFxuICogYW5kIGFjY2VzcyBhbnkgcHVibGljIG1lbWJlcnMgb24gdGhlIGFwcGVuZGVkIGNvbnRlbnQgY29tcG9uZW50IGluc3RhbmNlLlxuICovXG5leHBvcnQgY2xhc3MgU2t5T3ZlcmxheUluc3RhbmNlIHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIG92ZXJsYXkgaXMgY2xpY2tlZCAoYnV0IG5vdCBpdHMgY29udGVudCkuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGJhY2tkcm9wQ2xpY2soKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2JhY2tkcm9wQ2xpY2suYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYWZ0ZXIgdGhlIG92ZXJsYXkgaXMgY2xvc2VkLlxuICAgKi9cbiAgcHVibGljIGdldCBjbG9zZWQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2Nsb3NlZC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuXG4gIHByaXZhdGUgX2JhY2tkcm9wQ2xpY2sgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgX2Nsb3NlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgLyoqXG4gICAgICogVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBvdmVybGF5LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBjb25maWc6IFNreU92ZXJsYXlDb25maWcsXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFNreU92ZXJsYXlDb21wb25lbnQ+XG4gICkge1xuICAgIHRoaXMuaWQgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5pZDtcblxuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmNsb3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fY2xvc2VkLm5leHQoKTtcbiAgICAgIHRoaXMuX2Nsb3NlZC5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5fYmFja2Ryb3BDbGljay5jb21wbGV0ZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuYmFja2Ryb3BDbGljay5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fYmFja2Ryb3BDbGljay5uZXh0KCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbmQgYXR0YWNoZXMgYSBjb21wb25lbnQgdG8gdGhlIG92ZXJsYXkuXG4gICAqIEBwYXJhbSBjb21wb25lbnQgVGhlIGNvbXBvbmVudCB0byBhdHRhY2guXG4gICAqIEBwYXJhbSBwcm92aWRlcnMgQ3VzdG9tIHByb3ZpZGVycyB0byBhcHBseSB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGF0dGFjaENvbXBvbmVudDxDPihcbiAgICBjb21wb25lbnQ6IFR5cGU8Qz4sXG4gICAgcHJvdmlkZXJzPzogU3RhdGljUHJvdmlkZXJbXVxuICApOiBDIHtcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5hdHRhY2hDb21wb25lbnQoXG4gICAgICBjb21wb25lbnQsXG4gICAgICBwcm92aWRlcnNcbiAgICApO1xuICAgIHJldHVybiBjb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gIH1cblxuICAvKipcbiAgICogQXR0YWNoZXMgYSBgVGVtcGxhdGVSZWZgIHRvIHRoZSBvdmVybGF5LlxuICAgKiBAcGFyYW0gdGVtcGxhdGVSZWYgVGhlIGBUZW1wbGF0ZVJlZmAgdG8gYXR0YWNoLlxuICAgKiBAcGFyYW0gY29udGV4dCBUaGUgY29udGV4dCB0byBwcm92aWRlIHRvIHRoZSB0ZW1wbGF0ZS5cbiAgICovXG4gIHB1YmxpYyBhdHRhY2hUZW1wbGF0ZTxUPih0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8VD4sIGNvbnRleHQ/OiBUKTogdm9pZCB7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuYXR0YWNoVGVtcGxhdGUodGVtcGxhdGVSZWYsIGNvbnRleHQpO1xuICB9XG59XG4iXX0=
64
+ _SkyOverlayInstance_backdropClick = new WeakMap(), _SkyOverlayInstance_backdropClickObs = new WeakMap(), _SkyOverlayInstance_closed = new WeakMap(), _SkyOverlayInstance_closedObs = new WeakMap();
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1pbnN0YW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9vdmVybGF5L292ZXJsYXktaW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSzNDOzs7R0FHRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUF5QjdCO0lBQ0U7O09BRUc7SUFDYSxNQUF3QixFQUN4QixZQUErQztRQUQvQyxXQUFNLEdBQU4sTUFBTSxDQUFrQjtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBbUM7UUFiakUsb0RBQThCO1FBRTlCLHVEQUFvQztRQUVwQyw2Q0FBdUI7UUFFdkIsZ0RBQTZCO1FBUzNCLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBRXhDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQy9DLHVCQUFBLElBQUksa0NBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQix1QkFBQSxJQUFJLGtDQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEIsdUJBQUEsSUFBSSx5Q0FBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDdEQsdUJBQUEsSUFBSSx5Q0FBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO1FBRUgsdUJBQUEsSUFBSSxxQ0FBa0IsSUFBSSxPQUFPLEVBQVEsTUFBQSxDQUFDO1FBQzFDLHVCQUFBLElBQUksOEJBQVcsSUFBSSxPQUFPLEVBQVEsTUFBQSxDQUFDO1FBRW5DLHVCQUFBLElBQUksd0NBQXFCLHVCQUFBLElBQUkseUNBQWUsQ0FBQyxZQUFZLEVBQUUsTUFBQSxDQUFDO1FBQzVELHVCQUFBLElBQUksaUNBQWMsdUJBQUEsSUFBSSxrQ0FBUSxDQUFDLFlBQVksRUFBRSxNQUFBLENBQUM7SUFDaEQsQ0FBQztJQWhERDs7T0FFRztJQUNILElBQVcsYUFBYTtRQUN0QixPQUFPLHVCQUFBLElBQUksNENBQWtCLENBQUM7SUFDaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxNQUFNO1FBQ2YsT0FBTyx1QkFBQSxJQUFJLHFDQUFXLENBQUM7SUFDekIsQ0FBQztJQXNDRDs7OztPQUlHO0lBQ0ksZUFBZSxDQUNwQixTQUFrQixFQUNsQixTQUE0QjtRQUU1QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQzdELFNBQVMsRUFDVCxTQUFTLENBQ1YsQ0FBQztRQUNGLE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGNBQWMsQ0FBSSxXQUEyQixFQUFFLE9BQVc7UUFDL0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYsIFN0YXRpY1Byb3ZpZGVyLCBUZW1wbGF0ZVJlZiwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreU92ZXJsYXlDb25maWcgfSBmcm9tICcuL292ZXJsYXktY29uZmlnJztcbmltcG9ydCB7IFNreU92ZXJsYXlDb21wb25lbnQgfSBmcm9tICcuL292ZXJsYXkuY29tcG9uZW50JztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgbmV3IG92ZXJsYXkgaW5zdGFuY2UuIEl0IGlzIHVzZWQgdG8gbWFuYWdlIHRoZSBcImNsb3NlZFwiIHN0YXRlIG9mIHRoZSBvdmVybGF5LFxuICogYW5kIGFjY2VzcyBhbnkgcHVibGljIG1lbWJlcnMgb24gdGhlIGFwcGVuZGVkIGNvbnRlbnQgY29tcG9uZW50IGluc3RhbmNlLlxuICovXG5leHBvcnQgY2xhc3MgU2t5T3ZlcmxheUluc3RhbmNlIHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIG92ZXJsYXkgaXMgY2xpY2tlZCAoYnV0IG5vdCBpdHMgY29udGVudCkuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGJhY2tkcm9wQ2xpY2soKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuI2JhY2tkcm9wQ2xpY2tPYnM7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYWZ0ZXIgdGhlIG92ZXJsYXkgaXMgY2xvc2VkLlxuICAgKi9cbiAgcHVibGljIGdldCBjbG9zZWQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuI2Nsb3NlZE9icztcbiAgfVxuXG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuXG4gICNiYWNrZHJvcENsaWNrOiBTdWJqZWN0PHZvaWQ+O1xuXG4gICNiYWNrZHJvcENsaWNrT2JzOiBPYnNlcnZhYmxlPHZvaWQ+O1xuXG4gICNjbG9zZWQ6IFN1YmplY3Q8dm9pZD47XG5cbiAgI2Nsb3NlZE9iczogT2JzZXJ2YWJsZTx2b2lkPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAvKipcbiAgICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIG92ZXJsYXkuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbmZpZzogU2t5T3ZlcmxheUNvbmZpZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8U2t5T3ZlcmxheUNvbXBvbmVudD5cbiAgKSB7XG4gICAgdGhpcy5pZCA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmlkO1xuXG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuY2xvc2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLiNjbG9zZWQubmV4dCgpO1xuICAgICAgdGhpcy4jY2xvc2VkLmNvbXBsZXRlKCk7XG4gICAgICB0aGlzLiNiYWNrZHJvcENsaWNrLmNvbXBsZXRlKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5iYWNrZHJvcENsaWNrLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLiNiYWNrZHJvcENsaWNrLm5leHQoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuI2JhY2tkcm9wQ2xpY2sgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHRoaXMuI2Nsb3NlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICB0aGlzLiNiYWNrZHJvcENsaWNrT2JzID0gdGhpcy4jYmFja2Ryb3BDbGljay5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLiNjbG9zZWRPYnMgPSB0aGlzLiNjbG9zZWQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbmQgYXR0YWNoZXMgYSBjb21wb25lbnQgdG8gdGhlIG92ZXJsYXkuXG4gICAqIEBwYXJhbSBjb21wb25lbnQgVGhlIGNvbXBvbmVudCB0byBhdHRhY2guXG4gICAqIEBwYXJhbSBwcm92aWRlcnMgQ3VzdG9tIHByb3ZpZGVycyB0byBhcHBseSB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGF0dGFjaENvbXBvbmVudDxDPihcbiAgICBjb21wb25lbnQ6IFR5cGU8Qz4sXG4gICAgcHJvdmlkZXJzPzogU3RhdGljUHJvdmlkZXJbXVxuICApOiBDIHtcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5hdHRhY2hDb21wb25lbnQoXG4gICAgICBjb21wb25lbnQsXG4gICAgICBwcm92aWRlcnNcbiAgICApO1xuICAgIHJldHVybiBjb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gIH1cblxuICAvKipcbiAgICogQXR0YWNoZXMgYSBgVGVtcGxhdGVSZWZgIHRvIHRoZSBvdmVybGF5LlxuICAgKiBAcGFyYW0gdGVtcGxhdGVSZWYgVGhlIGBUZW1wbGF0ZVJlZmAgdG8gYXR0YWNoLlxuICAgKiBAcGFyYW0gY29udGV4dCBUaGUgY29udGV4dCB0byBwcm92aWRlIHRvIHRoZSB0ZW1wbGF0ZS5cbiAgICovXG4gIHB1YmxpYyBhdHRhY2hUZW1wbGF0ZTxUPih0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8VD4sIGNvbnRleHQ/OiBUKTogdm9pZCB7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuYXR0YWNoVGVtcGxhdGUodGVtcGxhdGVSZWYsIGNvbnRleHQpO1xuICB9XG59XG4iXX0=