nuxeo-development-framework 5.0.5 → 5.0.7

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 (23) hide show
  1. package/bundles/nuxeo-development-framework.umd.js +172 -99
  2. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  3. package/esm2015/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.js +1 -1
  4. package/esm2015/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.js +35 -35
  5. package/esm2015/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.component.js +1 -1
  6. package/esm2015/lib/components/filter/filter/filter.component.js +1 -1
  7. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-datepicker.component.js +22 -9
  8. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.js +22 -9
  9. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-gregorian-datepicker.component.js +40 -18
  10. package/esm2015/lib/shared/services/base/cache-base.service.js +36 -18
  11. package/esm2015/lib/shared/services/base/config/default-ttl-config.js +4 -2
  12. package/esm2015/lib/shared/services/base/constants/default-cache-options.js +2 -1
  13. package/esm2015/lib/shared/services/base/models/cache-info-model.js +1 -1
  14. package/fesm2015/nuxeo-development-framework.js +155 -86
  15. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  16. package/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.d.ts +12 -7
  17. package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-datepicker.component.d.ts +2 -1
  18. package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.d.ts +2 -1
  19. package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-gregorian-datepicker.component.d.ts +10 -4
  20. package/lib/shared/services/base/config/default-ttl-config.d.ts +2 -0
  21. package/lib/shared/services/base/constants/default-cache-options.d.ts +1 -0
  22. package/lib/shared/services/base/models/cache-info-model.d.ts +1 -0
  23. package/package.json +1 -1
@@ -1,8 +1,8 @@
1
- var _CacheBaseService_instances, _CacheBaseService_fetchedItems, _CacheBaseService_handleCacheItems, _CacheBaseService_findNode, _CacheBaseService_findLargestDate, _CacheBaseService_handleFetchedItems, _CacheBaseService_addItemsTo, _CacheBaseService_prepareOptions, _CacheBaseService_prepareConfig, _CacheBaseService_add1SecondToModifiedDate, _CacheBaseService_clear, _CacheBaseService_validateTTLForKey, _CacheBaseService_setItemInMap, _CacheBaseService_getItem, _CacheBaseService_setItem;
1
+ var _CacheBaseService_instances, _CacheBaseService_fetchedItems, _CacheBaseService_handleCacheItems, _CacheBaseService_findNode, _CacheBaseService_findLargestDate, _CacheBaseService_handleFetchedItems, _CacheBaseService_addItemsTo, _CacheBaseService_prepareOptions, _CacheBaseService_prepareConfig, _CacheBaseService_add1SecondToModifiedDate, _CacheBaseService_clear, _CacheBaseService_validateTTLForKey, _CacheBaseService_validateQuickRefresh, _CacheBaseService_validateTimeDifference, _CacheBaseService_setItemInMap, _CacheBaseService_getItem, _CacheBaseService_setItem;
2
2
  import { __classPrivateFieldGet } from "tslib";
3
3
  import { Injectable } from '@angular/core';
4
- import { EMPTY, Subject } from 'rxjs';
5
- import { catchError, expand, last, map, retry, take } from 'rxjs/operators';
4
+ import { EMPTY, of, Subject } from 'rxjs';
5
+ import { catchError, expand, last, map, retry, take, delay } from 'rxjs/operators';
6
6
  import * as moment from 'moment';
7
7
  import { DEFAULT_CACHE_OPTIONS } from './constants';
8
8
  import _omit from 'lodash/omit';
@@ -65,12 +65,7 @@ export class CacheBaseService {
65
65
  }
66
66
  }
67
67
  validateTTLForKey(firstFetchingDate) {
68
- if (!firstFetchingDate)
69
- return;
70
- const momentDate1 = moment(new Date(firstFetchingDate));
71
- const momentDate2 = moment(new Date());
72
- const difference = momentDate2.diff(momentDate1, DEFAULT_TTL_CONFIG.UNIT);
73
- return difference >= DEFAULT_TTL_CONFIG.TTL;
68
+ return __classPrivateFieldGet(this, _CacheBaseService_instances, "m", _CacheBaseService_validateTimeDifference).call(this, firstFetchingDate, DEFAULT_TTL_CONFIG.UNIT, DEFAULT_TTL_CONFIG.TTL);
74
69
  }
75
70
  }
76
71
  _CacheBaseService_fetchedItems = new WeakMap(), _CacheBaseService_instances = new WeakSet(), _CacheBaseService_handleCacheItems = function _CacheBaseService_handleCacheItems(options) {
@@ -79,12 +74,24 @@ _CacheBaseService_fetchedItems = new WeakMap(), _CacheBaseService_instances = ne
79
74
  const cachedItem = __classPrivateFieldGet(this, _CacheBaseService_instances, "m", _CacheBaseService_getItem).call(this, options);
80
75
  if (cachedItem) {
81
76
  __classPrivateFieldGet(this, _CacheBaseService_instances, "m", _CacheBaseService_setItemInMap).call(this, options.cacheKey, Object.assign(Object.assign({}, cachedItem), { fetchingItemsFromTheServer: false, onFinishFetching: new Subject(), request: options.request }));
82
- const params = {
83
- [options.pageKey]: 0,
84
- [options.minCompareDateKey]: __classPrivateFieldGet(this, _CacheBaseService_instances, "m", _CacheBaseService_add1SecondToModifiedDate).call(this, new Date(__classPrivateFieldGet(this, _CacheBaseService_fetchedItems, "f")[options.cacheKey].lastModifiedDate)).toISOString()
85
- };
86
- __classPrivateFieldGet(this, _CacheBaseService_fetchedItems, "f")[options.cacheKey].params = params;
87
- observable = options.request(params);
77
+ const shouldRefresh = __classPrivateFieldGet(this, _CacheBaseService_instances, "m", _CacheBaseService_validateQuickRefresh).call(this, __classPrivateFieldGet(this, _CacheBaseService_fetchedItems, "f")[options.cacheKey].firstFetchingDate);
78
+ if (options.enableQuickRefresh || shouldRefresh) {
79
+ __classPrivateFieldGet(this, _CacheBaseService_fetchedItems, "f")[options.cacheKey].firstFetchingDate = new Date().toISOString();
80
+ const params = {
81
+ [options.pageKey]: 0,
82
+ [options.minCompareDateKey]: __classPrivateFieldGet(this, _CacheBaseService_instances, "m", _CacheBaseService_add1SecondToModifiedDate).call(this, new Date(__classPrivateFieldGet(this, _CacheBaseService_fetchedItems, "f")[options.cacheKey].lastModifiedDate)).toISOString()
83
+ };
84
+ __classPrivateFieldGet(this, _CacheBaseService_fetchedItems, "f")[options.cacheKey].params = params;
85
+ observable = options.request(params);
86
+ }
87
+ else {
88
+ const item = __classPrivateFieldGet(this, _CacheBaseService_fetchedItems, "f")[options.cacheKey];
89
+ observable = of(_cloneDeep({
90
+ [options.mappedDataKey]: item.data,
91
+ [options.lastModifiedDateKey]: item.lastModifiedDate,
92
+ [options.resultsCount]: item[options.resultsCount]
93
+ })).pipe(delay(100));
94
+ }
88
95
  }
89
96
  else {
90
97
  __classPrivateFieldGet(this, _CacheBaseService_instances, "m", _CacheBaseService_setItemInMap).call(this, options.cacheKey);
@@ -223,12 +230,15 @@ _CacheBaseService_fetchedItems = new WeakMap(), _CacheBaseService_instances = ne
223
230
  options.excludeKeysWhenUpdate = options.excludeKeysWhenUpdate || DEFAULT_CACHE_OPTIONS.EXCLUDE_KEYS_WHEN_UPDATE;
224
231
  options.childrenPath = options.childrenPath || DEFAULT_CACHE_OPTIONS.CHILDREN_PATH;
225
232
  options.parentKey = options.parentKey || DEFAULT_CACHE_OPTIONS.PARENT_KEY;
233
+ options.enableQuickRefresh = options.enableQuickRefresh || DEFAULT_CACHE_OPTIONS.ENABLE_QUICK_REFRESH;
226
234
  }, _CacheBaseService_prepareConfig = function _CacheBaseService_prepareConfig() {
227
- var _a, _b, _c, _d, _e, _f, _g, _h;
235
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
228
236
  DEFAULT_TTL_CONFIG.TTL = ((_b = (_a = EnvManager.environment) === null || _a === void 0 ? void 0 : _a.cache) === null || _b === void 0 ? void 0 : _b.ttl) || DEFAULT_TTL_CONFIG.TTL;
229
237
  DEFAULT_TTL_CONFIG.UNIT = ((_d = (_c = EnvManager.environment) === null || _c === void 0 ? void 0 : _c.cache) === null || _d === void 0 ? void 0 : _d.ttlUnit) || DEFAULT_TTL_CONFIG.UNIT;
230
238
  DEFAULT_TTL_CONFIG.AUTO_CHECK = ((_f = (_e = EnvManager.environment) === null || _e === void 0 ? void 0 : _e.cache) === null || _f === void 0 ? void 0 : _f.autoCheck) == 'YES';
231
- DEFAULT_TTL_CONFIG.RETRY = ((_h = (_g = EnvManager.environment) === null || _g === void 0 ? void 0 : _g.cache) === null || _h === void 0 ? void 0 : _h.retry) || DEFAULT_TTL_CONFIG.RETRY;
239
+ DEFAULT_TTL_CONFIG.QUICK_REFRESH = ((_h = (_g = EnvManager.environment) === null || _g === void 0 ? void 0 : _g.cache) === null || _h === void 0 ? void 0 : _h.quickRefresh) || DEFAULT_TTL_CONFIG.QUICK_REFRESH;
240
+ DEFAULT_TTL_CONFIG.QUICK_REFRESH_UNIT =
241
+ ((_k = (_j = EnvManager.environment) === null || _j === void 0 ? void 0 : _j.cache) === null || _k === void 0 ? void 0 : _k.quickRefreshUnit) || DEFAULT_TTL_CONFIG.QUICK_REFRESH_UNIT;
232
242
  }, _CacheBaseService_add1SecondToModifiedDate = function _CacheBaseService_add1SecondToModifiedDate(date) {
233
243
  let newDate = new Date(date.getTime());
234
244
  newDate.setSeconds(newDate.getSeconds() + 1);
@@ -243,6 +253,14 @@ _CacheBaseService_fetchedItems = new WeakMap(), _CacheBaseService_instances = ne
243
253
  var _a;
244
254
  if (this.validateTTLForKey((_a = __classPrivateFieldGet(this, _CacheBaseService_instances, "m", _CacheBaseService_getItem).call(this, options)) === null || _a === void 0 ? void 0 : _a.firstFetchingDate))
245
255
  __classPrivateFieldGet(this, _CacheBaseService_instances, "m", _CacheBaseService_clear).call(this, options.userName, options.cacheKey);
256
+ }, _CacheBaseService_validateQuickRefresh = function _CacheBaseService_validateQuickRefresh(date) {
257
+ return __classPrivateFieldGet(this, _CacheBaseService_instances, "m", _CacheBaseService_validateTimeDifference).call(this, date, DEFAULT_TTL_CONFIG.QUICK_REFRESH_UNIT, DEFAULT_TTL_CONFIG.QUICK_REFRESH);
258
+ }, _CacheBaseService_validateTimeDifference = function _CacheBaseService_validateTimeDifference(date, unit, threshold) {
259
+ if (!date)
260
+ return;
261
+ const momentDate1 = moment(new Date(date));
262
+ const momentDate2 = moment();
263
+ return momentDate2.diff(momentDate1, unit) >= threshold;
246
264
  }, _CacheBaseService_setItemInMap = function _CacheBaseService_setItemInMap(key, val) {
247
265
  const empty = {
248
266
  data: [],
@@ -281,4 +299,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
281
299
  providedIn: 'root'
282
300
  }]
283
301
  }], ctorParameters: function () { return [{ type: i1.UserPreferencesService }, { type: i2.UtilityService }]; } });
284
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtYmFzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2Jhc2UvY2FjaGUtYmFzZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFrQixPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUUsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXBELE9BQU8sS0FBSyxNQUFNLGFBQWEsQ0FBQztBQUNoQyxPQUFPLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFDcEMsT0FBTyxVQUFVLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7OztBQUszRCxNQUFNLE9BQU8sZ0JBQWdCO0lBRzVCLFlBQW9CLHNCQUE4QyxFQUFVLGNBQThCO1FBQXRGLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7O1FBRjFHLHlDQUF3QyxJQUFJLEdBQUcsRUFBcUIsRUFBQztRQUdwRSx1QkFBQSxJQUFJLG9FQUFlLE1BQW5CLElBQUksQ0FBaUIsQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTyxDQUFDLFFBQWdCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFD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TUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxHQUFHLHFCQUFxQixDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNwRyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFDbkIsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDekI7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNiLENBQUMsaUVBQ1EsS0FBMEIsRUFBRSxPQUF5QjtJQUM3RCxJQUFJLE9BQU8sQ0FBQyxRQUFRO1FBQUUsT0FBTztTQUN4QjtRQUNKLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztLQUM3RztBQUNGLENBQUM7OEdBdlNXLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBRmhCLE1BQU07NEZBRU4sZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRU1QVFksIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGV4cGFuZCwgbGFzdCwgbWFwLCByZXRyeSwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IERFRkFVTFRfQ0FDSEVfT1BUSU9OUyB9IGZyb20gJy4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQmFzZUNhY2hlT3B0aW9ucywgQ2FjaGVJbmZvIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5pbXBvcnQgX29taXQgZnJvbSAnbG9kYXNoL29taXQnO1xyXG5pbXBvcnQgX2Fzc2lnbiBmcm9tICdsb2Rhc2gvYXNzaWduJztcclxuaW1wb3J0IF9jbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XHJcbmltcG9ydCB7IERFRkFVTFRfVFRMX0NPTkZJRyB9IGZyb20gJy4vY29uZmlnJztcclxuaW1wb3J0IHsgVXNlclByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvdXNlci91c2VyLXByZWZlcmVuY2VzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdXRpbGl0aWVzL3V0aWxpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudk1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2Vudi9lbnYtbWFuYWdlcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYWNoZUJhc2VTZXJ2aWNlIHtcclxuXHQjZmV0Y2hlZEl0ZW1zOiBNYXA8c3RyaW5nLCBDYWNoZUluZm8+ID0gbmV3IE1hcDxzdHJpbmcsIENhY2hlSW5mbz4oKTtcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSB1c2VyUHJlZmVyZW5jZXNTZXJ2aWNlOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlLCBwcml2YXRlIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSkge1xyXG5cdFx0dGhpcy4jcHJlcGFyZUNvbmZpZygpO1xyXG5cdH1cclxuXHJcblx0aGFzSXRlbShjYWNoZUtleTogc3RyaW5nKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlLmhhc0l0ZW0oYCR7REVGQVVMVF9DQUNIRV9PUFRJT05TLlBSRUZJWH0ke2NhY2hlS2V5fWApO1xyXG5cdH1cclxuXHRjbGVhckFsbCh1c2VyTmFtZTogc3RyaW5nKSB7XHJcblx0XHR0aGlzLiNjbGVhcih1c2VyTmFtZSk7XHJcblx0fVxyXG5cdHZhbGlkYXRlVFRMKHVzZXJOYW1lOiBzdHJpbmcpIHtcclxuXHRcdGlmICghREVGQVVMVF9UVExfQ09ORklHLkFVVE9fQ0hFQ0sgfHwgIXVzZXJOYW1lKSByZXR1cm47XHJcblxyXG5cdFx0Y29uc3QgcHJlZml4ID0gYCR7dXNlck5hbWV9X18ke0RFRkFVTFRfQ0FDSEVfT1BUSU9OUy5QUkVGSVh9YDtcclxuXHRcdE9iamVjdC5rZXlzKHdpbmRvdy5sb2NhbFN0b3JhZ2UpXHJcblx0XHRcdC5maWx0ZXIoKHEpID0+IHEuc3RhcnRzV2l0aChwcmVmaXgpKVxyXG5cdFx0XHQuZmlsdGVyKChrZXkpID0+IHtcclxuXHRcdFx0XHRjb25zdCBvcHRpb25zOiBCYXNlQ2FjaGVPcHRpb25zID0ge1xyXG5cdFx0XHRcdFx0Y2FjaGVLZXk6IGtleS5yZXBsYWNlKHByZWZpeCwgJycpLFxyXG5cdFx0XHRcdFx0dXNlck5hbWU6IHVzZXJOYW1lLFxyXG5cdFx0XHRcdFx0cmVxdWVzdDogREVGQVVMVF9DQUNIRV9PUFRJT05TLlJFUVVFU1QsXHJcblx0XHRcdFx0XHRwcmVwYXJlRGF0YUJlZm9yZUNhY2hpbmc6IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5QUkVQQVJFX0RBVEFcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdGNvbnN0IGZpcnN0RmV0Y2hpbmdEYXRlID0gdGhpcy4jZ2V0SXRlbShvcHRpb25zKT8uZmlyc3RGZXRjaGluZ0RhdGU7XHJcblx0XHRcdFx0aWYgKCFmaXJzdEZldGNoaW5nRGF0ZSkgcmV0dXJuO1xyXG5cclxuXHRcdFx0XHRjb25zdCBtb21lbnREYXRlMSA9IG1vbWVudChuZXcgRGF0ZShmaXJzdEZldGNoaW5nRGF0ZSkpO1xyXG5cdFx0XHRcdGNvbnN0IG1vbWVudERhdGUyID0gbW9tZW50KG5ldyBEYXRlKCkpO1xyXG5cdFx0XHRcdGNvbnN0IGRpZmZlcmVuY2UgPSBtb21lbnREYXRlMi5kaWZmKG1vbWVudERhdGUxLCBERUZBVUxUX1RUTF9DT05GSUcuVU5JVCk7XHJcblx0XHRcdFx0cmV0dXJuIGRpZmZlcmVuY2UgPj0gREVGQVVMVF9UVExfQ09ORklHLlRUTDtcclxuXHRcdFx0fSlcclxuXHRcdFx0LmZvckVhY2goKGtleSkgPT4ge1xyXG5cdFx0XHRcdHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xyXG5cdFx0XHR9KTtcclxuXHR9XHJcblx0c3RhcnRGZXRjaGluZ0l0ZW1zKG9wdGlvbnM6IEJhc2VDYWNoZU9wdGlvbnMpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0dGhpcy4jdmFsaWRhdGVUVExGb3JLZXkob3B0aW9ucyk7XHJcblxyXG5cdFx0aWYgKHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XT8uZmV0Y2hpbmdJdGVtc0Zyb21UaGVTZXJ2ZXIpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XS5vbkZpbmlzaEZldGNoaW5nLmFzT2JzZXJ2YWJsZSgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy4jaGFuZGxlQ2FjaGVJdGVtcyhvcHRpb25zKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgpO1xyXG5cdFx0XHRyZXR1cm4gdGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLm9uRmluaXNoRmV0Y2hpbmcuYXNPYnNlcnZhYmxlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdCNoYW5kbGVDYWNoZUl0ZW1zKG9wdGlvbnM6IEJhc2VDYWNoZU9wdGlvbnMpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0bGV0IG9ic2VydmFibGU6IE9ic2VydmFibGU8YW55PjtcclxuXHRcdHRoaXMuI3ByZXBhcmVPcHRpb25zKG9wdGlvbnMpO1xyXG5cclxuXHRcdGNvbnN0IGNhY2hlZEl0ZW0gPSB0aGlzLiNnZXRJdGVtKG9wdGlvbnMpO1xyXG5cclxuXHRcdGlmIChjYWNoZWRJdGVtKSB7XHJcblx0XHRcdHRoaXMuI3NldEl0ZW1Jbk1hcChvcHRpb25zLmNhY2hlS2V5LCB7XHJcblx0XHRcdFx0Li4uY2FjaGVkSXRlbSxcclxuXHRcdFx0XHRmZXRjaGluZ0l0ZW1zRnJvbVRoZVNlcnZlcjogZmFsc2UsXHJcblx0XHRcdFx0b25GaW5pc2hGZXRjaGluZzogbmV3IFN1YmplY3Q8Q2FjaGVJbmZvPigpLFxyXG5cdFx0XHRcdHJlcXVlc3Q6IG9wdGlvbnMucmVxdWVzdFxyXG5cdFx0XHR9KTtcclxuXHJcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHtcclxuXHRcdFx0XHRbb3B0aW9ucy5wYWdlS2V5XTogMCxcclxuXHRcdFx0XHRbb3B0aW9ucy5taW5Db21wYXJlRGF0ZUtleV06IHRoaXMuI2FkZDFTZWNvbmRUb01vZGlmaWVkRGF0ZShcclxuXHRcdFx0XHRcdG5ldyBEYXRlKHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XS5sYXN0TW9kaWZpZWREYXRlKVxyXG5cdFx0XHRcdCkudG9JU09TdHJpbmcoKVxyXG5cdFx0XHR9O1xyXG5cdFx0XHR0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0ucGFyYW1zID0gcGFyYW1zO1xyXG5cdFx0XHRvYnNlcnZhYmxlID0gb3B0aW9ucy5yZXF1ZXN0KHBhcmFtcyk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLiNzZXRJdGVtSW5NYXAob3B0aW9ucy5jYWNoZUtleSk7XHJcblx0XHRcdHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XS5yZXF1ZXN0ID0gb3B0aW9ucy5yZXF1ZXN0O1xyXG5cdFx0XHR0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0uZmlyc3RGZXRjaGluZ0RhdGUgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XHJcblx0XHRcdG9ic2VydmFibGUgPSBvcHRpb25zLnJlcXVlc3QoeyBbb3B0aW9ucy5wYWdlS2V5XTogMCB9KTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0uZmV0Y2hpbmdJdGVtc0Zyb21UaGVTZXJ2ZXIgPSB0cnVlO1xyXG5cdFx0cmV0dXJuIG9ic2VydmFibGUucGlwZShcclxuXHRcdFx0cmV0cnkoREVGQVVMVF9UVExfQ09ORklHLlJFVFJZKSxcclxuXHRcdFx0ZXhwYW5kKChyZXN1bHRzOiBhbnkpID0+IHtcclxuXHRcdFx0XHRsZXQgYW5vdGhlckNhbGw6IE9ic2VydmFibGU8YW55PiB8IG51bGwgPSBudWxsO1xyXG5cdFx0XHRcdGlmIChyZXN1bHRzICYmIHJlc3VsdHNbb3B0aW9ucy5tYXBwZWREYXRhS2V5XT8ubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRhbm90aGVyQ2FsbCA9IHRoaXMuI2hhbmRsZUZldGNoZWRJdGVtcyhvcHRpb25zLCByZXN1bHRzKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmV0dXJuIGFub3RoZXJDYWxsID8gYW5vdGhlckNhbGwgOiBFTVBUWTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGxhc3QoKSxcclxuXHRcdFx0bWFwKChfKSA9PiB7XHJcblx0XHRcdFx0bGV0IF9mZXRjaGVkSXRlbXMgPSB0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0gYXMgQ2FjaGVJbmZvO1xyXG5cdFx0XHRcdF9mZXRjaGVkSXRlbXMuZmV0Y2hpbmdJdGVtc0Zyb21UaGVTZXJ2ZXIgPSBmYWxzZTtcclxuXHRcdFx0XHRpZiAoX2ZldGNoZWRJdGVtcy5kYXRhPy5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdF9mZXRjaGVkSXRlbXMubGFzdE1vZGlmaWVkRGF0ZSA9IHRoaXMuI2ZpbmRMYXJnZXN0RGF0ZShcclxuXHRcdFx0XHRcdFx0X2ZldGNoZWRJdGVtcy5kYXRhLFxyXG5cdFx0XHRcdFx0XHRvcHRpb25zLmNoaWxkcmVuUGF0aCxcclxuXHRcdFx0XHRcdFx0b3B0aW9ucy5sYXN0TW9kaWZpZWREYXRlUGF0aFxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdHRoaXMuI3NldEl0ZW0oXHJcblx0XHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XHRkYXRhOiBfZmV0Y2hlZEl0ZW1zLmRhdGEsXHJcblx0XHRcdFx0XHRcdFx0bGFzdE1vZGlmaWVkRGF0ZTogX2ZldGNoZWRJdGVtcy5sYXN0TW9kaWZpZWREYXRlLFxyXG5cdFx0XHRcdFx0XHRcdGZpcnN0RmV0Y2hpbmdEYXRlOiBfZmV0Y2hlZEl0ZW1zLmZpcnN0RmV0Y2hpbmdEYXRlLFxyXG5cdFx0XHRcdFx0XHRcdHJlc3VsdHNDb3VudDogX2ZldGNoZWRJdGVtc1tvcHRpb25zLnJlc3VsdHNDb3VudF1cclxuXHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0b3B0aW9uc1xyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmV0dXJuIF9mZXRjaGVkSXRlbXM7XHJcblx0XHRcdH0pLFxyXG5cdFx0XHRtYXAoKHJlcykgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IHJlc3VsdCA9IF9jbG9uZURlZXAoe1xyXG5cdFx0XHRcdFx0W29wdGlvbnMubWFwcGVkRGF0YUtleV06IHJlcy5kYXRhLFxyXG5cdFx0XHRcdFx0W29wdGlvbnMubGFzdE1vZGlmaWVkRGF0ZUtleV06IHJlcy5sYXN0TW9kaWZpZWREYXRlLFxyXG5cdFx0XHRcdFx0W29wdGlvbnMucmVzdWx0c0NvdW50XTogcmVzW29wdGlvbnMucmVzdWx0c0NvdW50XVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHJlcy5vbkZpbmlzaEZldGNoaW5nLm5leHQocmVzdWx0KTtcclxuXHRcdFx0XHRyZXMub25GaW5pc2hGZXRjaGluZy5jb21wbGV0ZSgpO1xyXG5cdFx0XHRcdHJldHVybiByZXN1bHQ7XHJcblx0XHRcdH0pLFxyXG5cdFx0XHRjYXRjaEVycm9yKChlcikgPT4ge1xyXG5cdFx0XHRcdHRocm93IGVyO1xyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHR9XHJcblx0I2ZpbmROb2RlKGl0ZW1zOiBhbnlbXSwgdW5pcXVlQ29tcGFyZUtleTogc3RyaW5nLCBjaGlsZHJlblBhdGg6IHN0cmluZywgdmFsdWU6IGFueSkge1xyXG5cdFx0Zm9yIChjb25zdCBub2RlIG9mIGl0ZW1zKSB7XHJcblx0XHRcdGlmIChub2RlW3VuaXF1ZUNvbXBhcmVLZXldID09PSB2YWx1ZSkge1xyXG5cdFx0XHRcdHJldHVybiBub2RlO1xyXG5cdFx0XHR9XHJcblx0XHRcdGNvbnN0IGNoaWxkcmVuID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRWYWx1ZShub2RlLCBjaGlsZHJlblBhdGgpO1xyXG5cdFx0XHRpZiAoY2hpbGRyZW4pIHtcclxuXHRcdFx0XHRjb25zdCByZXN1bHQgPSB0aGlzLiNmaW5kTm9kZShjaGlsZHJlbiwgdW5pcXVlQ29tcGFyZUtleSwgY2hpbGRyZW5QYXRoLCB2YWx1ZSk7XHJcblx0XHRcdFx0aWYgKHJlc3VsdCkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIHJlc3VsdDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBudWxsO1xyXG5cdH1cclxuXHQjZmluZExhcmdlc3REYXRlKG5vZGVMaXN0OiBhbnlbXSwgY2hpbGRyZW5QYXRoOiBzdHJpbmcsIGRhdGVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cdFx0bGV0IGxhcmdlc3REYXRlOiBzdHJpbmcgPSBudWxsO1xyXG5cdFx0Y29uc3QgdHJhdmVyc2UgPSAobm9kZTogYW55KSA9PiB7XHJcblx0XHRcdGlmICghbm9kZSkgcmV0dXJuO1xyXG5cdFx0XHRjb25zdCBjaGlsZHJlbiA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0VmFsdWUobm9kZSwgY2hpbGRyZW5QYXRoKTtcclxuXHRcdFx0Y29uc3Qgbm9kZURhdGUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFZhbHVlKG5vZGUsIGRhdGVQYXRoKTtcclxuXHRcdFx0aWYgKG5vZGVEYXRlICYmICghbGFyZ2VzdERhdGUgfHwgbmV3IERhdGUobm9kZURhdGUpID4gbmV3IERhdGUobGFyZ2VzdERhdGUpKSkge1xyXG5cdFx0XHRcdGxhcmdlc3REYXRlID0gbm9kZURhdGU7XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKGNoaWxkcmVuPy5sZW5ndGgpIHtcclxuXHRcdFx0XHRmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XHJcblx0XHRcdFx0XHR0cmF2ZXJzZShjaGlsZCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9O1xyXG5cdFx0bm9kZUxpc3QuZm9yRWFjaCgobm9kZSkgPT4gdHJhdmVyc2Uobm9kZSkpO1xyXG5cdFx0cmV0dXJuIGxhcmdlc3REYXRlO1xyXG5cdH1cclxuXHQjaGFuZGxlRmV0Y2hlZEl0ZW1zKG9wdGlvbnM6IEJhc2VDYWNoZU9wdGlvbnMsIHJlczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHwgbnVsbCB7XHJcblx0XHRpZiAodGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLmRhdGE/Lmxlbmd0aCkge1xyXG5cdFx0XHRyZXNbb3B0aW9ucy5tYXBwZWREYXRhS2V5XS5zb3J0KChhLCBiKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgZmlyc3QgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFZhbHVlKGEsIG9wdGlvbnMubGFzdE1vZGlmaWVkRGF0ZVBhdGgpO1xyXG5cdFx0XHRcdGNvbnN0IHNlY29uZCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0VmFsdWUoYiwgb3B0aW9ucy5sYXN0TW9kaWZpZWREYXRlUGF0aCk7XHJcblx0XHRcdFx0cmV0dXJuIG5ldyBEYXRlKGZpcnN0KS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShzZWNvbmQpLmdldFRpbWUoKTtcclxuXHRcdFx0fSk7XHJcblx0XHRcdHJlc1tvcHRpb25zLm1hcHBlZERhdGFLZXldLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuXHRcdFx0XHRjb25zdCBpdGVtID0gdGhpcy4jZmluZE5vZGUoXHJcblx0XHRcdFx0XHR0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0uZGF0YSxcclxuXHRcdFx0XHRcdG9wdGlvbnMudW5pcXVlQ29tcGFyZUtleSxcclxuXHRcdFx0XHRcdG9wdGlvbnMuY2hpbGRyZW5QYXRoLFxyXG5cdFx0XHRcdFx0ZWxlbWVudFtvcHRpb25zLnVuaXF1ZUNvbXBhcmVLZXldXHJcblx0XHRcdFx0KTtcclxuXHJcblx0XHRcdFx0Y29uc3QgbWFwcGVkRWxlbWVudCA9IG9wdGlvbnMucHJlcGFyZURhdGFCZWZvcmVDYWNoaW5nKFtlbGVtZW50XSlbMF07XHJcblx0XHRcdFx0aWYgKGl0ZW0pIHtcclxuXHRcdFx0XHRcdC8vIGVkaXQgOiB1cGRhdGUgaXRlbSBpbiBjYWNoZVxyXG5cdFx0XHRcdFx0Y29uc3QgZmlsdGVyZWRTb3VyY2UgPSBfb21pdChtYXBwZWRFbGVtZW50LCBvcHRpb25zLmV4Y2x1ZGVLZXlzV2hlblVwZGF0ZSk7XHJcblx0XHRcdFx0XHRfYXNzaWduKGl0ZW0sIGZpbHRlcmVkU291cmNlKTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0Ly8gYWRkIDogY2hlY2sgZGF0ZSB0byBkZXRlcm1pbmUgd2hlcmUgd2lsbCBpbnNlcnRcclxuXHJcblx0XHRcdFx0XHQvLyBpZiBpdGVtIHBhcmVudCBub3QgZm91bmQgYWRkIGFzIHJvb3QgZWxzZSB3aWxsIGFkZCBsZWF2ZXMgdG8gc3ViUGFyZW50XHJcblx0XHRcdFx0XHRjb25zdCBub2RlID0gdGhpcy4jZmluZE5vZGUoXHJcblx0XHRcdFx0XHRcdHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XS5kYXRhLFxyXG5cdFx0XHRcdFx0XHRvcHRpb25zLnVuaXF1ZUNvbXBhcmVLZXksXHJcblx0XHRcdFx0XHRcdG9wdGlvbnMuY2hpbGRyZW5QYXRoLFxyXG5cdFx0XHRcdFx0XHRlbGVtZW50W29wdGlvbnMucGFyZW50S2V5XVxyXG5cdFx0XHRcdFx0KTtcclxuXHJcblx0XHRcdFx0XHRpZiAobm9kZSkge1xyXG5cdFx0XHRcdFx0XHQvLyB3aWxsIGNvbXBhcmUgd2l0aCBub2RlIGNoaWxkIHRvIGFkZFxyXG5cdFx0XHRcdFx0XHRjb25zdCBjaGlsZHJlbiA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0VmFsdWUobm9kZSwgb3B0aW9ucy5jaGlsZHJlblBhdGgpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLiNhZGRJdGVtc1RvKG9wdGlvbnMsIGNoaWxkcmVuLCBlbGVtZW50KTtcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdC8vIHdpbGwgY29tcGFyZSB3aXRoIHJvb3QgbGV2ZWwgdG8gYWRkXHJcblx0XHRcdFx0XHRcdHRoaXMuI2FkZEl0ZW1zVG8ob3B0aW9ucywgdGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLmRhdGEsIGVsZW1lbnQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRyZXNbb3B0aW9ucy5tYXBwZWREYXRhS2V5XSA9IG9wdGlvbnMucHJlcGFyZURhdGFCZWZvcmVDYWNoaW5nKHJlc1tvcHRpb25zLm1hcHBlZERhdGFLZXldKTtcclxuXHRcdFx0dGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLmRhdGEgPSByZXNbb3B0aW9ucy5tYXBwZWREYXRhS2V5XTtcclxuXHRcdFx0dGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLnJlc3VsdHNDb3VudCA9IHJlc1tvcHRpb25zLnJlc3VsdHNDb3VudF07XHJcblx0XHR9XHJcblx0XHRpZiAocmVzW29wdGlvbnMudG90YWxQYWdlS2V5XSAtIHJlc1tvcHRpb25zLnBhZ2VLZXldID4gMSkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdC4uLih0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0ucGFyYW1zIHx8IHt9KSxcclxuXHRcdFx0XHRbb3B0aW9ucy5wYWdlS2V5XTogcmVzW29wdGlvbnMucGFnZUtleV0gKyAxXHJcblx0XHRcdH0pO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0cmV0dXJuIG51bGw7XHJcblx0XHR9XHJcblx0fVxyXG5cdCNhZGRJdGVtc1RvKG9wdGlvbnM6IEJhc2VDYWNoZU9wdGlvbnMsIGRhdGE6IGFueVtdLCBpdGVtOiBhbnkpIHtcclxuXHRcdGNvbnN0IGZpcnN0Q2FjaGVkTW9kaWZpZWQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFZhbHVlKGRhdGFbMF0sIG9wdGlvbnMubGFzdE1vZGlmaWVkRGF0ZVBhdGgpO1xyXG5cdFx0Y29uc3QgY3VycmVudE1vZGlmaWVkID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRWYWx1ZShpdGVtLCBvcHRpb25zLmxhc3RNb2RpZmllZERhdGVQYXRoKTtcclxuXHRcdGlmIChmaXJzdENhY2hlZE1vZGlmaWVkIDwgY3VycmVudE1vZGlmaWVkKSB7XHJcblx0XHRcdGRhdGEudW5zaGlmdCguLi5vcHRpb25zLnByZXBhcmVEYXRhQmVmb3JlQ2FjaGluZyhbaXRlbV0pKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGRhdGEucHVzaCguLi5vcHRpb25zLnByZXBhcmVEYXRhQmVmb3JlQ2FjaGluZyhbaXRlbV0pKTtcclxuXHRcdH1cclxuXHR9XHJcblx0I3ByZXBhcmVPcHRpb25zKG9wdGlvbnM6IEJhc2VDYWNoZU9wdGlvbnMpIHtcclxuXHRcdG9wdGlvbnMucHJlcGFyZURhdGFCZWZvcmVDYWNoaW5nID0gb3B0aW9ucy5wcmVwYXJlRGF0YUJlZm9yZUNhY2hpbmcgfHwgREVGQVVMVF9DQUNIRV9PUFRJT05TLlBSRVBBUkVfREFUQTtcclxuXHRcdG9wdGlvbnMucGFnZUtleSA9IG9wdGlvbnMucGFnZUtleSB8fCBERUZBVUxUX0NBQ0hFX09QVElPTlMuUEFHRV9LRVk7XHJcblx0XHRvcHRpb25zLnRvdGFsUGFnZUtleSA9IG9wdGlvbnMudG90YWxQYWdlS2V5IHx8IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5UT1RBTF9QQUdFX0tFWTtcclxuXHRcdG9wdGlvbnMucmVzdWx0c0NvdW50ID0gb3B0aW9ucy5yZXN1bHRzQ291bnQgfHwgREVGQVVMVF9DQUNIRV9PUFRJT05TLlJFU1VMVFNfQ09VTlRfS0VZO1xyXG5cdFx0b3B0aW9ucy5tYXBwZWREYXRhS2V5ID0gb3B0aW9ucy5tYXBwZWREYXRhS2V5IHx8IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5NQVBQRURfREFUQV9LRVk7XHJcblx0XHRvcHRpb25zLnVuaXF1ZUNvbXBhcmVLZXkgPSBvcHRpb25zLnVuaXF1ZUNvbXBhcmVLZXkgfHwgREVGQVVMVF9DQUNIRV9PUFRJT05TLlVOSVFVRV9DT01QQVJFX0tFWTtcclxuXHRcdG9wdGlvbnMubWluQ29tcGFyZURhdGVLZXkgPSBvcHRpb25zLm1pbkNvbXBhcmVEYXRlS2V5IHx8IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5NSU5fQ09NUEFSRV9EQVRFX0tFWTtcclxuXHRcdG9wdGlvbnMubGFzdE1vZGlmaWVkRGF0ZUtleSA9IG9wdGlvbnMubGFzdE1vZGlmaWVkRGF0ZUtleSB8fCBERUZBVUxUX0NBQ0hFX09QVElPTlMuTEFTVF9NT0RJRklFRF9LRVk7XHJcblx0XHRvcHRpb25zLmxhc3RNb2RpZmllZERhdGVQYXRoID0gb3B0aW9ucy5sYXN0TW9kaWZpZWREYXRlUGF0aCB8fCBERUZBVUxUX0NBQ0hFX09QVElPTlMuTEFTVF9NT0RJRklFRF9QQVRIO1xyXG5cdFx0b3B0aW9ucy5leGNsdWRlS2V5c1doZW5VcGRhdGUgPSBvcHRpb25zLmV4Y2x1ZGVLZXlzV2hlblVwZGF0ZSB8fCBERUZBVUxUX0NBQ0hFX09QVElPTlMuRVhDTFVERV9LRVlTX1dIRU5fVVBEQVRFO1xyXG5cdFx0b3B0aW9ucy5jaGlsZHJlblBhdGggPSBvcHRpb25zLmNoaWxkcmVuUGF0aCB8fCBERUZBVUxUX0NBQ0hFX09QVElPTlMuQ0hJTERSRU5fUEFUSDtcclxuXHRcdG9wdGlvbnMucGFyZW50S2V5ID0gb3B0aW9ucy5wYXJlbnRLZXkgfHwgREVGQVVMVF9DQUNIRV9PUFRJT05TLlBBUkVOVF9LRVk7XHJcblx0fVxyXG5cdCNwcmVwYXJlQ29uZmlnKCkge1xyXG5cdFx0REVGQVVMVF9UVExfQ09ORklHLlRUTCA9IEVudk1hbmFnZXIuZW52aXJvbm1lbnQ/LmNhY2hlPy50dGwgfHwgREVGQVVMVF9UVExfQ09ORklHLlRUTDtcclxuXHRcdERFRkFVTFRfVFRMX0NPTkZJRy5VTklUID0gRW52TWFuYWdlci5lbnZpcm9ubWVudD8uY2FjaGU/LnR0bFVuaXQgfHwgREVGQVVMVF9UVExfQ09ORklHLlVOSVQ7XHJcblx0XHRERUZBVUxUX1RUTF9DT05GSUcuQVVUT19DSEVDSyA9IEVudk1hbmFnZXIuZW52aXJvbm1lbnQ/LmNhY2hlPy5hdXRvQ2hlY2sgPT0gJ1lFUyc7XHJcblx0XHRERUZBVUxUX1RUTF9DT05GSUcuUkVUUlkgPSBFbnZNYW5hZ2VyLmVudmlyb25tZW50Py5jYWNoZT8ucmV0cnkgfHwgREVGQVVMVF9UVExfQ09ORklHLlJFVFJZO1xyXG5cdH1cclxuXHQjYWRkMVNlY29uZFRvTW9kaWZpZWREYXRlKGRhdGU6IERhdGUpOiBEYXRlIHtcclxuXHRcdGxldCBuZXdEYXRlID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkpO1xyXG5cdFx0bmV3RGF0ZS5zZXRTZWNvbmRzKG5ld0RhdGUuZ2V0U2Vjb25kcygpICsgMSk7XHJcblx0XHRyZXR1cm4gbmV3RGF0ZTtcclxuXHR9XHJcblx0I2NsZWFyKHVzZXJOYW1lOiBzdHJpbmcsIGtleU9yQWxsOiBzdHJpbmcgPSAnJykge1xyXG5cdFx0T2JqZWN0LmtleXMod2luZG93LmxvY2FsU3RvcmFnZSlcclxuXHRcdFx0LmZpbHRlcigocSkgPT4gcS5zdGFydHNXaXRoKGAke3VzZXJOYW1lfV9fJHtERUZBVUxUX0NBQ0hFX09QVElPTlMuUFJFRklYfSR7a2V5T3JBbGx9YCkpXHJcblx0XHRcdC5mb3JFYWNoKChrZXkpID0+IHtcclxuXHRcdFx0XHR3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcclxuXHRcdFx0fSk7XHJcblx0fVxyXG5cdCN2YWxpZGF0ZVRUTEZvcktleShvcHRpb25zOiBCYXNlQ2FjaGVPcHRpb25zKSB7XHJcblx0XHRpZiAodGhpcy52YWxpZGF0ZVRUTEZvcktleSh0aGlzLiNnZXRJdGVtKG9wdGlvbnMpPy5maXJzdEZldGNoaW5nRGF0ZSkpXHJcblx0XHRcdHRoaXMuI2NsZWFyKG9wdGlvbnMudXNlck5hbWUsIG9wdGlvbnMuY2FjaGVLZXkpO1xyXG5cdH1cclxuXHR2YWxpZGF0ZVRUTEZvcktleShmaXJzdEZldGNoaW5nRGF0ZTogc3RyaW5nKSB7XHJcblx0XHRpZiAoIWZpcnN0RmV0Y2hpbmdEYXRlKSByZXR1cm47XHJcblxyXG5cdFx0Y29uc3QgbW9tZW50RGF0ZTEgPSBtb21lbnQobmV3IERhdGUoZmlyc3RGZXRjaGluZ0RhdGUpKTtcclxuXHRcdGNvbnN0IG1vbWVudERhdGUyID0gbW9tZW50KG5ldyBEYXRlKCkpO1xyXG5cclxuXHRcdGNvbnN0IGRpZmZlcmVuY2UgPSBtb21lbnREYXRlMi5kaWZmKG1vbWVudERhdGUxLCBERUZBVUxUX1RUTF9DT05GSUcuVU5JVCk7XHJcblxyXG5cdFx0cmV0dXJuIGRpZmZlcmVuY2UgPj0gREVGQVVMVF9UVExfQ09ORklHLlRUTDtcclxuXHR9XHJcblx0I3NldEl0ZW1Jbk1hcChrZXk6IHN0cmluZywgdmFsPzogQ2FjaGVJbmZvKTogdm9pZCB7XHJcblx0XHRjb25zdCBlbXB0eTogQ2FjaGVJbmZvID0ge1xyXG5cdFx0XHRkYXRhOiBbXSxcclxuXHRcdFx0Zmlyc3RGZXRjaGluZ0RhdGU6ICcnLFxyXG5cdFx0XHRsYXN0TW9kaWZpZWREYXRlOiAnJyxcclxuXHRcdFx0cmVzdWx0c0NvdW50OiAwLFxyXG5cdFx0XHRmZXRjaGluZ0l0ZW1zRnJvbVRoZVNlcnZlcjogZmFsc2UsXHJcblx0XHRcdG9uRmluaXNoRmV0Y2hpbmc6IG5ldyBTdWJqZWN0PENhY2hlSW5mbz4oKVxyXG5cdFx0fTtcclxuXHRcdGxldCB2YWx1ZTogQ2FjaGVJbmZvID0gdmFsID8gdmFsIDogZW1wdHk7XHJcblx0XHR0aGlzLiNmZXRjaGVkSXRlbXNba2V5XSA9IHZhbHVlO1xyXG5cdH1cclxuXHQjZ2V0SXRlbShvcHRpb25zOiBCYXNlQ2FjaGVPcHRpb25zKSB7XHJcblx0XHRsZXQgZGF0YTogQ2FjaGVJbmZvO1xyXG5cdFx0aWYgKG9wdGlvbnMuaW5NZW1vcnkpIHtcclxuXHRcdFx0ZGF0YSA9IHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNvbnN0IHZhbHVlID0gdGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlLmdldChgJHtERUZBVUxUX0NBQ0hFX09QVElPTlMuUFJFRklYfSR7b3B0aW9ucy5jYWNoZUtleX1gKTtcclxuXHRcdFx0aWYgKCF2YWx1ZSkgcmV0dXJuO1xyXG5cdFx0XHRkYXRhID0gSlNPTi5wYXJzZSh2YWx1ZSk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gZGF0YTtcclxuXHR9XHJcblx0I3NldEl0ZW0odmFsdWU6IFJlY29yZDxzdHJpbmcsIGFueT4sIG9wdGlvbnM6IEJhc2VDYWNoZU9wdGlvbnMpIHtcclxuXHRcdGlmIChvcHRpb25zLmluTWVtb3J5KSByZXR1cm47XHJcblx0XHRlbHNlIHtcclxuXHRcdFx0dGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlLnNldChgJHtERUZBVUxUX0NBQ0hFX09QVElPTlMuUFJFRklYfSR7b3B0aW9ucy5jYWNoZUtleX1gLCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iXX0=
302
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtYmFzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2Jhc2UvY2FjaGUtYmFzZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25GLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVwRCxPQUFPLEtBQUssTUFBTSxhQUFhLENBQUM7QUFDaEMsT0FBTyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBQ3BDLE9BQU8sVUFBVSxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUc5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7QUFLM0QsTUFBTSxPQUFPLGdCQUFnQjtJQUc1QixZQUFvQixzQkFBOEMsRUFBVSxjQUE4QjtRQUF0RiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCOztRQUYxRyx5Q0FBd0MsSUFBSSxHQUFHLEVBQXFCLEVBQUM7UUFHcEUsdUJBQUEsSUFBSSxvRUFBZSxNQUFuQixJQUFJLENBQWlCLENBQUM7SUFDdkIsQ0FBQztJQUVELE9BQU8sQ0FBQyxRQUFnQjtR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Q2pDLElBQUksSUFBZSxDQUFDO0lBQ3BCLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtRQUNyQixJQUFJLEdBQUcsdUJBQUEsSUFBSSxzQ0FBYyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUM1QztTQUFNO1FBQ04sTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxHQUFHLHFCQUFxQixDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNwRyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFDbkIsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDekI7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNiLENBQUMsaUVBQ1EsS0FBMEIsRUFBRSxPQUF5QjtJQUM3RCxJQUFJLE9BQU8sQ0FBQyxRQUFRO1FBQUUsT0FBTztTQUN4QjtRQUNKLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztLQUM3RztBQUNGLENBQUM7OEdBOVRXLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBRmhCLE1BQU07NEZBRU4sZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRU1QVFksIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGV4cGFuZCwgbGFzdCwgbWFwLCByZXRyeSwgdGFrZSwgZGVsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQgeyBERUZBVUxUX0NBQ0hFX09QVElPTlMgfSBmcm9tICcuL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IEJhc2VDYWNoZU9wdGlvbnMsIENhY2hlSW5mbywgQ2FjaGluZ0V4cGlyeVVuaXQgfSBmcm9tICcuL21vZGVscyc7XHJcbmltcG9ydCBfb21pdCBmcm9tICdsb2Rhc2gvb21pdCc7XHJcbmltcG9ydCBfYXNzaWduIGZyb20gJ2xvZGFzaC9hc3NpZ24nO1xyXG5pbXBvcnQgX2Nsb25lRGVlcCBmcm9tICdsb2Rhc2gvY2xvbmVEZWVwJztcclxuaW1wb3J0IHsgREVGQVVMVF9UVExfQ09ORklHIH0gZnJvbSAnLi9jb25maWcnO1xyXG5pbXBvcnQgeyBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy91c2VyL3VzZXItcHJlZmVyZW5jZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS91dGlsaXRpZXMvdXRpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW52TWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2NvcmUvZW52L2Vudi1tYW5hZ2VyJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENhY2hlQmFzZVNlcnZpY2Uge1xyXG5cdCNmZXRjaGVkSXRlbXM6IE1hcDxzdHJpbmcsIENhY2hlSW5mbz4gPSBuZXcgTWFwPHN0cmluZywgQ2FjaGVJbmZvPigpO1xyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIHVzZXJQcmVmZXJlbmNlc1NlcnZpY2U6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsIHByaXZhdGUgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlKSB7XHJcblx0XHR0aGlzLiNwcmVwYXJlQ29uZmlnKCk7XHJcblx0fVxyXG5cclxuXHRoYXNJdGVtKGNhY2hlS2V5OiBzdHJpbmcpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLnVzZXJQcmVmZXJlbmNlc1NlcnZpY2UuaGFzSXRlbShgJHtERUZBVUxUX0NBQ0hFX09QVElPTlMuUFJFRklYfSR7Y2FjaGVLZXl9YCk7XHJcblx0fVxyXG5cdGNsZWFyQWxsKHVzZXJOYW1lOiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuI2NsZWFyKHVzZXJOYW1lKTtcclxuXHR9XHJcblx0dmFsaWRhdGVUVEwodXNlck5hbWU6IHN0cmluZykge1xyXG5cdFx0aWYgKCFERUZBVUxUX1RUTF9DT05GSUcuQVVUT19DSEVDSyB8fCAhdXNlck5hbWUpIHJldHVybjtcclxuXHJcblx0XHRjb25zdCBwcmVmaXggPSBgJHt1c2VyTmFtZX1fXyR7REVGQVVMVF9DQUNIRV9PUFRJT05TLlBSRUZJWH1gO1xyXG5cdFx0T2JqZWN0LmtleXMod2luZG93LmxvY2FsU3RvcmFnZSlcclxuXHRcdFx0LmZpbHRlcigocSkgPT4gcS5zdGFydHNXaXRoKHByZWZpeCkpXHJcblx0XHRcdC5maWx0ZXIoKGtleSkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IG9wdGlvbnM6IEJhc2VDYWNoZU9wdGlvbnMgPSB7XHJcblx0XHRcdFx0XHRjYWNoZUtleToga2V5LnJlcGxhY2UocHJlZml4LCAnJyksXHJcblx0XHRcdFx0XHR1c2VyTmFtZTogdXNlck5hbWUsXHJcblx0XHRcdFx0XHRyZXF1ZXN0OiBERUZBVUxUX0NBQ0hFX09QVElPTlMuUkVRVUVTVCxcclxuXHRcdFx0XHRcdHByZXBhcmVEYXRhQmVmb3JlQ2FjaGluZzogREVGQVVMVF9DQUNIRV9PUFRJT05TLlBSRVBBUkVfREFUQVxyXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0Y29uc3QgZmlyc3RGZXRjaGluZ0RhdGUgPSB0aGlzLiNnZXRJdGVtKG9wdGlvbnMpPy5maXJzdEZldGNoaW5nRGF0ZTtcclxuXHRcdFx0XHRpZiAoIWZpcnN0RmV0Y2hpbmdEYXRlKSByZXR1cm47XHJcblxyXG5cdFx0XHRcdGNvbnN0IG1vbWVudERhdGUxID0gbW9tZW50KG5ldyBEYXRlKGZpcnN0RmV0Y2hpbmdEYXRlKSk7XHJcblx0XHRcdFx0Y29uc3QgbW9tZW50RGF0ZTIgPSBtb21lbnQobmV3IERhdGUoKSk7XHJcblx0XHRcdFx0Y29uc3QgZGlmZmVyZW5jZSA9IG1vbWVudERhdGUyLmRpZmYobW9tZW50RGF0ZTEsIERFRkFVTFRfVFRMX0NPTkZJRy5VTklUKTtcclxuXHRcdFx0XHRyZXR1cm4gZGlmZmVyZW5jZSA+PSBERUZBVUxUX1RUTF9DT05GSUcuVFRMO1xyXG5cdFx0XHR9KVxyXG5cdFx0XHQuZm9yRWFjaCgoa2V5KSA9PiB7XHJcblx0XHRcdFx0d2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XHJcblx0XHRcdH0pO1xyXG5cdH1cclxuXHRzdGFydEZldGNoaW5nSXRlbXMob3B0aW9uczogQmFzZUNhY2hlT3B0aW9ucyk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHR0aGlzLiN2YWxpZGF0ZVRUTEZvcktleShvcHRpb25zKTtcclxuXHJcblx0XHRpZiAodGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldPy5mZXRjaGluZ0l0ZW1zRnJvbVRoZVNlcnZlcikge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLm9uRmluaXNoRmV0Y2hpbmcuYXNPYnNlcnZhYmxlKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLiNoYW5kbGVDYWNoZUl0ZW1zKG9wdGlvbnMpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCk7XHJcblx0XHRcdHJldHVybiB0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0ub25GaW5pc2hGZXRjaGluZy5hc09ic2VydmFibGUoKTtcclxuXHRcdH1cclxuXHR9XHJcblx0I2hhbmRsZUNhY2hlSXRlbXMob3B0aW9uczogQmFzZUNhY2hlT3B0aW9ucyk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRsZXQgb2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxhbnk+O1xyXG5cdFx0dGhpcy4jcHJlcGFyZU9wdGlvbnMob3B0aW9ucyk7XHJcblxyXG5cdFx0Y29uc3QgY2FjaGVkSXRlbSA9IHRoaXMuI2dldEl0ZW0ob3B0aW9ucyk7XHJcblxyXG5cdFx0aWYgKGNhY2hlZEl0ZW0pIHtcclxuXHRcdFx0dGhpcy4jc2V0SXRlbUluTWFwKG9wdGlvbnMuY2FjaGVLZXksIHtcclxuXHRcdFx0XHQuLi5jYWNoZWRJdGVtLFxyXG5cdFx0XHRcdGZldGNoaW5nSXRlbXNGcm9tVGhlU2VydmVyOiBmYWxzZSxcclxuXHRcdFx0XHRvbkZpbmlzaEZldGNoaW5nOiBuZXcgU3ViamVjdDxDYWNoZUluZm8+KCksXHJcblx0XHRcdFx0cmVxdWVzdDogb3B0aW9ucy5yZXF1ZXN0XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0Y29uc3Qgc2hvdWxkUmVmcmVzaCA9IHRoaXMuI3ZhbGlkYXRlUXVpY2tSZWZyZXNoKHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XS5maXJzdEZldGNoaW5nRGF0ZSk7XHJcblx0XHRcdGlmIChvcHRpb25zLmVuYWJsZVF1aWNrUmVmcmVzaCB8fCBzaG91bGRSZWZyZXNoKSB7XHJcblx0XHRcdFx0dGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLmZpcnN0RmV0Y2hpbmdEYXRlID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xyXG5cdFx0XHRcdGNvbnN0IHBhcmFtcyA9IHtcclxuXHRcdFx0XHRcdFtvcHRpb25zLnBhZ2VLZXldOiAwLFxyXG5cdFx0XHRcdFx0W29wdGlvbnMubWluQ29tcGFyZURhdGVLZXldOiB0aGlzLiNhZGQxU2Vjb25kVG9Nb2RpZmllZERhdGUoXHJcblx0XHRcdFx0XHRcdG5ldyBEYXRlKHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XS5sYXN0TW9kaWZpZWREYXRlKVxyXG5cdFx0XHRcdFx0KS50b0lTT1N0cmluZygpXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHR0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0ucGFyYW1zID0gcGFyYW1zO1xyXG5cdFx0XHRcdG9ic2VydmFibGUgPSBvcHRpb25zLnJlcXVlc3QocGFyYW1zKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRjb25zdCBpdGVtID0gdGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldO1xyXG5cdFx0XHRcdG9ic2VydmFibGUgPSBvZihcclxuXHRcdFx0XHRcdF9jbG9uZURlZXAoe1xyXG5cdFx0XHRcdFx0XHRbb3B0aW9ucy5tYXBwZWREYXRhS2V5XTogaXRlbS5kYXRhLFxyXG5cdFx0XHRcdFx0XHRbb3B0aW9ucy5sYXN0TW9kaWZpZWREYXRlS2V5XTogaXRlbS5sYXN0TW9kaWZpZWREYXRlLFxyXG5cdFx0XHRcdFx0XHRbb3B0aW9ucy5yZXN1bHRzQ291bnRdOiBpdGVtW29wdGlvbnMucmVzdWx0c0NvdW50XVxyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHQpLnBpcGUoZGVsYXkoMTAwKSk7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuI3NldEl0ZW1Jbk1hcChvcHRpb25zLmNhY2hlS2V5KTtcclxuXHRcdFx0dGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLnJlcXVlc3QgPSBvcHRpb25zLnJlcXVlc3Q7XHJcblx0XHRcdHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XS5maXJzdEZldGNoaW5nRGF0ZSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcclxuXHRcdFx0b2JzZXJ2YWJsZSA9IG9wdGlvbnMucmVxdWVzdCh7IFtvcHRpb25zLnBhZ2VLZXldOiAwIH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XS5mZXRjaGluZ0l0ZW1zRnJvbVRoZVNlcnZlciA9IHRydWU7XHJcblx0XHRyZXR1cm4gb2JzZXJ2YWJsZS5waXBlKFxyXG5cdFx0XHRyZXRyeShERUZBVUxUX1RUTF9DT05GSUcuUkVUUlkpLFxyXG5cdFx0XHRleHBhbmQoKHJlc3VsdHM6IGFueSkgPT4ge1xyXG5cdFx0XHRcdGxldCBhbm90aGVyQ2FsbDogT2JzZXJ2YWJsZTxhbnk+IHwgbnVsbCA9IG51bGw7XHJcblx0XHRcdFx0aWYgKHJlc3VsdHMgJiYgcmVzdWx0c1tvcHRpb25zLm1hcHBlZERhdGFLZXldPy5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdGFub3RoZXJDYWxsID0gdGhpcy4jaGFuZGxlRmV0Y2hlZEl0ZW1zKG9wdGlvbnMsIHJlc3VsdHMpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gYW5vdGhlckNhbGwgPyBhbm90aGVyQ2FsbCA6IEVNUFRZO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0bGFzdCgpLFxyXG5cdFx0XHRtYXAoKF8pID0+IHtcclxuXHRcdFx0XHRsZXQgX2ZldGNoZWRJdGVtcyA9IHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XSBhcyBDYWNoZUluZm87XHJcblx0XHRcdFx0X2ZldGNoZWRJdGVtcy5mZXRjaGluZ0l0ZW1zRnJvbVRoZVNlcnZlciA9IGZhbHNlO1xyXG5cdFx0XHRcdGlmIChfZmV0Y2hlZEl0ZW1zLmRhdGE/Lmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0X2ZldGNoZWRJdGVtcy5sYXN0TW9kaWZpZWREYXRlID0gdGhpcy4jZmluZExhcmdlc3REYXRlKFxyXG5cdFx0XHRcdFx0XHRfZmV0Y2hlZEl0ZW1zLmRhdGEsXHJcblx0XHRcdFx0XHRcdG9wdGlvbnMuY2hpbGRyZW5QYXRoLFxyXG5cdFx0XHRcdFx0XHRvcHRpb25zLmxhc3RNb2RpZmllZERhdGVQYXRoXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0dGhpcy4jc2V0SXRlbShcclxuXHRcdFx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0XHRcdGRhdGE6IF9mZXRjaGVkSXRlbXMuZGF0YSxcclxuXHRcdFx0XHRcdFx0XHRsYXN0TW9kaWZpZWREYXRlOiBfZmV0Y2hlZEl0ZW1zLmxhc3RNb2RpZmllZERhdGUsXHJcblx0XHRcdFx0XHRcdFx0Zmlyc3RGZXRjaGluZ0RhdGU6IF9mZXRjaGVkSXRlbXMuZmlyc3RGZXRjaGluZ0RhdGUsXHJcblx0XHRcdFx0XHRcdFx0cmVzdWx0c0NvdW50OiBfZmV0Y2hlZEl0ZW1zW29wdGlvbnMucmVzdWx0c0NvdW50XVxyXG5cdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRvcHRpb25zXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gX2ZldGNoZWRJdGVtcztcclxuXHRcdFx0fSksXHJcblx0XHRcdG1hcCgocmVzKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gX2Nsb25lRGVlcCh7XHJcblx0XHRcdFx0XHRbb3B0aW9ucy5tYXBwZWREYXRhS2V5XTogcmVzLmRhdGEsXHJcblx0XHRcdFx0XHRbb3B0aW9ucy5sYXN0TW9kaWZpZWREYXRlS2V5XTogcmVzLmxhc3RNb2RpZmllZERhdGUsXHJcblx0XHRcdFx0XHRbb3B0aW9ucy5yZXN1bHRzQ291bnRdOiByZXNbb3B0aW9ucy5yZXN1bHRzQ291bnRdXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0cmVzLm9uRmluaXNoRmV0Y2hpbmcubmV4dChyZXN1bHQpO1xyXG5cdFx0XHRcdHJlcy5vbkZpbmlzaEZldGNoaW5nLmNvbXBsZXRlKCk7XHJcblx0XHRcdFx0cmV0dXJuIHJlc3VsdDtcclxuXHRcdFx0fSksXHJcblx0XHRcdGNhdGNoRXJyb3IoKGVyKSA9PiB7XHJcblx0XHRcdFx0dGhyb3cgZXI7XHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cdH1cclxuXHQjZmluZE5vZGUoaXRlbXM6IGFueVtdLCB1bmlxdWVDb21wYXJlS2V5OiBzdHJpbmcsIGNoaWxkcmVuUGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KSB7XHJcblx0XHRmb3IgKGNvbnN0IG5vZGUgb2YgaXRlbXMpIHtcclxuXHRcdFx0aWYgKG5vZGVbdW5pcXVlQ29tcGFyZUtleV0gPT09IHZhbHVlKSB7XHJcblx0XHRcdFx0cmV0dXJuIG5vZGU7XHJcblx0XHRcdH1cclxuXHRcdFx0Y29uc3QgY2hpbGRyZW4gPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFZhbHVlKG5vZGUsIGNoaWxkcmVuUGF0aCk7XHJcblx0XHRcdGlmIChjaGlsZHJlbikge1xyXG5cdFx0XHRcdGNvbnN0IHJlc3VsdCA9IHRoaXMuI2ZpbmROb2RlKGNoaWxkcmVuLCB1bmlxdWVDb21wYXJlS2V5LCBjaGlsZHJlblBhdGgsIHZhbHVlKTtcclxuXHRcdFx0XHRpZiAocmVzdWx0KSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIG51bGw7XHJcblx0fVxyXG5cdCNmaW5kTGFyZ2VzdERhdGUobm9kZUxpc3Q6IGFueVtdLCBjaGlsZHJlblBhdGg6IHN0cmluZywgZGF0ZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XHJcblx0XHRsZXQgbGFyZ2VzdERhdGU6IHN0cmluZyA9IG51bGw7XHJcblx0XHRjb25zdCB0cmF2ZXJzZSA9IChub2RlOiBhbnkpID0+IHtcclxuXHRcdFx0aWYgKCFub2RlKSByZXR1cm47XHJcblx0XHRcdGNvbnN0IGNoaWxkcmVuID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRWYWx1ZShub2RlLCBjaGlsZHJlblBhdGgpO1xyXG5cdFx0XHRjb25zdCBub2RlRGF0ZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0VmFsdWUobm9kZSwgZGF0ZVBhdGgpO1xyXG5cdFx0XHRpZiAobm9kZURhdGUgJiYgKCFsYXJnZXN0RGF0ZSB8fCBuZXcgRGF0ZShub2RlRGF0ZSkgPiBuZXcgRGF0ZShsYXJnZXN0RGF0ZSkpKSB7XHJcblx0XHRcdFx0bGFyZ2VzdERhdGUgPSBub2RlRGF0ZTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG5cdFx0XHRcdGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcclxuXHRcdFx0XHRcdHRyYXZlcnNlKGNoaWxkKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH07XHJcblx0XHRub2RlTGlzdC5mb3JFYWNoKChub2RlKSA9PiB0cmF2ZXJzZShub2RlKSk7XHJcblx0XHRyZXR1cm4gbGFyZ2VzdERhdGU7XHJcblx0fVxyXG5cdCNoYW5kbGVGZXRjaGVkSXRlbXMob3B0aW9uczogQmFzZUNhY2hlT3B0aW9ucywgcmVzOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4gfCBudWxsIHtcclxuXHRcdGlmICh0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0uZGF0YT8ubGVuZ3RoKSB7XHJcblx0XHRcdHJlc1tvcHRpb25zLm1hcHBlZERhdGFLZXldLnNvcnQoKGEsIGIpID0+IHtcclxuXHRcdFx0XHRjb25zdCBmaXJzdCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0VmFsdWUoYSwgb3B0aW9ucy5sYXN0TW9kaWZpZWREYXRlUGF0aCk7XHJcblx0XHRcdFx0Y29uc3Qgc2Vjb25kID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRWYWx1ZShiLCBvcHRpb25zLmxhc3RNb2RpZmllZERhdGVQYXRoKTtcclxuXHRcdFx0XHRyZXR1cm4gbmV3IERhdGUoZmlyc3QpLmdldFRpbWUoKSAtIG5ldyBEYXRlKHNlY29uZCkuZ2V0VGltZSgpO1xyXG5cdFx0XHR9KTtcclxuXHRcdFx0cmVzW29wdGlvbnMubWFwcGVkRGF0YUtleV0uZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IGl0ZW0gPSB0aGlzLiNmaW5kTm9kZShcclxuXHRcdFx0XHRcdHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XS5kYXRhLFxyXG5cdFx0XHRcdFx0b3B0aW9ucy51bmlxdWVDb21wYXJlS2V5LFxyXG5cdFx0XHRcdFx0b3B0aW9ucy5jaGlsZHJlblBhdGgsXHJcblx0XHRcdFx0XHRlbGVtZW50W29wdGlvbnMudW5pcXVlQ29tcGFyZUtleV1cclxuXHRcdFx0XHQpO1xyXG5cclxuXHRcdFx0XHRjb25zdCBtYXBwZWRFbGVtZW50ID0gb3B0aW9ucy5wcmVwYXJlRGF0YUJlZm9yZUNhY2hpbmcoW2VsZW1lbnRdKVswXTtcclxuXHRcdFx0XHRpZiAoaXRlbSkge1xyXG5cdFx0XHRcdFx0Ly8gZWRpdCA6IHVwZGF0ZSBpdGVtIGluIGNhY2hlXHJcblx0XHRcdFx0XHRjb25zdCBmaWx0ZXJlZFNvdXJjZSA9IF9vbWl0KG1hcHBlZEVsZW1lbnQsIG9wdGlvbnMuZXhjbHVkZUtleXNXaGVuVXBkYXRlKTtcclxuXHRcdFx0XHRcdF9hc3NpZ24oaXRlbSwgZmlsdGVyZWRTb3VyY2UpO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHQvLyBhZGQgOiBjaGVjayBkYXRlIHRvIGRldGVybWluZSB3aGVyZSB3aWxsIGluc2VydFxyXG5cclxuXHRcdFx0XHRcdC8vIGlmIGl0ZW0gcGFyZW50IG5vdCBmb3VuZCBhZGQgYXMgcm9vdCBlbHNlIHdpbGwgYWRkIGxlYXZlcyB0byBzdWJQYXJlbnRcclxuXHRcdFx0XHRcdGNvbnN0IG5vZGUgPSB0aGlzLiNmaW5kTm9kZShcclxuXHRcdFx0XHRcdFx0dGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLmRhdGEsXHJcblx0XHRcdFx0XHRcdG9wdGlvbnMudW5pcXVlQ29tcGFyZUtleSxcclxuXHRcdFx0XHRcdFx0b3B0aW9ucy5jaGlsZHJlblBhdGgsXHJcblx0XHRcdFx0XHRcdGVsZW1lbnRbb3B0aW9ucy5wYXJlbnRLZXldXHJcblx0XHRcdFx0XHQpO1xyXG5cclxuXHRcdFx0XHRcdGlmIChub2RlKSB7XHJcblx0XHRcdFx0XHRcdC8vIHdpbGwgY29tcGFyZSB3aXRoIG5vZGUgY2hpbGQgdG8gYWRkXHJcblx0XHRcdFx0XHRcdGNvbnN0IGNoaWxkcmVuID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRWYWx1ZShub2RlLCBvcHRpb25zLmNoaWxkcmVuUGF0aCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuI2FkZEl0ZW1zVG8ob3B0aW9ucywgY2hpbGRyZW4sIGVsZW1lbnQpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0Ly8gd2lsbCBjb21wYXJlIHdpdGggcm9vdCBsZXZlbCB0byBhZGRcclxuXHRcdFx0XHRcdFx0dGhpcy4jYWRkSXRlbXNUbyhvcHRpb25zLCB0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0uZGF0YSwgZWxlbWVudCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJlc1tvcHRpb25zLm1hcHBlZERhdGFLZXldID0gb3B0aW9ucy5wcmVwYXJlRGF0YUJlZm9yZUNhY2hpbmcocmVzW29wdGlvbnMubWFwcGVkRGF0YUtleV0pO1xyXG5cdFx0XHR0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0uZGF0YSA9IHJlc1tvcHRpb25zLm1hcHBlZERhdGFLZXldO1xyXG5cdFx0XHR0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0ucmVzdWx0c0NvdW50ID0gcmVzW29wdGlvbnMucmVzdWx0c0NvdW50XTtcclxuXHRcdH1cclxuXHRcdGlmIChyZXNbb3B0aW9ucy50b3RhbFBhZ2VLZXldIC0gcmVzW29wdGlvbnMucGFnZUtleV0gPiAxKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0ucmVxdWVzdCh7XHJcblx0XHRcdFx0Li4uKHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XS5wYXJhbXMgfHwge30pLFxyXG5cdFx0XHRcdFtvcHRpb25zLnBhZ2VLZXldOiByZXNbb3B0aW9ucy5wYWdlS2V5XSArIDFcclxuXHRcdFx0fSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRyZXR1cm4gbnVsbDtcclxuXHRcdH1cclxuXHR9XHJcblx0I2FkZEl0ZW1zVG8ob3B0aW9uczogQmFzZUNhY2hlT3B0aW9ucywgZGF0YTogYW55W10sIGl0ZW06IGFueSkge1xyXG5cdFx0Y29uc3QgZmlyc3RDYWNoZWRNb2RpZmllZCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0VmFsdWUoZGF0YVswXSwgb3B0aW9ucy5sYXN0TW9kaWZpZWREYXRlUGF0aCk7XHJcblx0XHRjb25zdCBjdXJyZW50TW9kaWZpZWQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFZhbHVlKGl0ZW0sIG9wdGlvbnMubGFzdE1vZGlmaWVkRGF0ZVBhdGgpO1xyXG5cdFx0aWYgKGZpcnN0Q2FjaGVkTW9kaWZpZWQgPCBjdXJyZW50TW9kaWZpZWQpIHtcclxuXHRcdFx0ZGF0YS51bnNoaWZ0KC4uLm9wdGlvbnMucHJlcGFyZURhdGFCZWZvcmVDYWNoaW5nKFtpdGVtXSkpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0ZGF0YS5wdXNoKC4uLm9wdGlvbnMucHJlcGFyZURhdGFCZWZvcmVDYWNoaW5nKFtpdGVtXSkpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQjcHJlcGFyZU9wdGlvbnMob3B0aW9uczogQmFzZUNhY2hlT3B0aW9ucykge1xyXG5cdFx0b3B0aW9ucy5wcmVwYXJlRGF0YUJlZm9yZUNhY2hpbmcgPSBvcHRpb25zLnByZXBhcmVEYXRhQmVmb3JlQ2FjaGluZyB8fCBERUZBVUxUX0NBQ0hFX09QVElPTlMuUFJFUEFSRV9EQVRBO1xyXG5cdFx0b3B0aW9ucy5wYWdlS2V5ID0gb3B0aW9ucy5wYWdlS2V5IHx8IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5QQUdFX0tFWTtcclxuXHRcdG9wdGlvbnMudG90YWxQYWdlS2V5ID0gb3B0aW9ucy50b3RhbFBhZ2VLZXkgfHwgREVGQVVMVF9DQUNIRV9PUFRJT05TLlRPVEFMX1BBR0VfS0VZO1xyXG5cdFx0b3B0aW9ucy5yZXN1bHRzQ291bnQgPSBvcHRpb25zLnJlc3VsdHNDb3VudCB8fCBERUZBVUxUX0NBQ0hFX09QVElPTlMuUkVTVUxUU19DT1VOVF9LRVk7XHJcblx0XHRvcHRpb25zLm1hcHBlZERhdGFLZXkgPSBvcHRpb25zLm1hcHBlZERhdGFLZXkgfHwgREVGQVVMVF9DQUNIRV9PUFRJT05TLk1BUFBFRF9EQVRBX0tFWTtcclxuXHRcdG9wdGlvbnMudW5pcXVlQ29tcGFyZUtleSA9IG9wdGlvbnMudW5pcXVlQ29tcGFyZUtleSB8fCBERUZBVUxUX0NBQ0hFX09QVElPTlMuVU5JUVVFX0NPTVBBUkVfS0VZO1xyXG5cdFx0b3B0aW9ucy5taW5Db21wYXJlRGF0ZUtleSA9IG9wdGlvbnMubWluQ29tcGFyZURhdGVLZXkgfHwgREVGQVVMVF9DQUNIRV9PUFRJT05TLk1JTl9DT01QQVJFX0RBVEVfS0VZO1xyXG5cdFx0b3B0aW9ucy5sYXN0TW9kaWZpZWREYXRlS2V5ID0gb3B0aW9ucy5sYXN0TW9kaWZpZWREYXRlS2V5IHx8IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5MQVNUX01PRElGSUVEX0tFWTtcclxuXHRcdG9wdGlvbnMubGFzdE1vZGlmaWVkRGF0ZVBhdGggPSBvcHRpb25zLmxhc3RNb2RpZmllZERhdGVQYXRoIHx8IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5MQVNUX01PRElGSUVEX1BBVEg7XHJcblx0XHRvcHRpb25zLmV4Y2x1ZGVLZXlzV2hlblVwZGF0ZSA9IG9wdGlvbnMuZXhjbHVkZUtleXNXaGVuVXBkYXRlIHx8IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5FWENMVURFX0tFWVNfV0hFTl9VUERBVEU7XHJcblx0XHRvcHRpb25zLmNoaWxkcmVuUGF0aCA9IG9wdGlvbnMuY2hpbGRyZW5QYXRoIHx8IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5DSElMRFJFTl9QQVRIO1xyXG5cdFx0b3B0aW9ucy5wYXJlbnRLZXkgPSBvcHRpb25zLnBhcmVudEtleSB8fCBERUZBVUxUX0NBQ0hFX09QVElPTlMuUEFSRU5UX0tFWTtcclxuXHRcdG9wdGlvbnMuZW5hYmxlUXVpY2tSZWZyZXNoID0gb3B0aW9ucy5lbmFibGVRdWlja1JlZnJlc2ggfHwgREVGQVVMVF9DQUNIRV9PUFRJT05TLkVOQUJMRV9RVUlDS19SRUZSRVNIO1xyXG5cdH1cclxuXHQjcHJlcGFyZUNvbmZpZygpIHtcclxuXHRcdERFRkFVTFRfVFRMX0NPTkZJRy5UVEwgPSBFbnZNYW5hZ2VyLmVudmlyb25tZW50Py5jYWNoZT8udHRsIHx8IERFRkFVTFRfVFRMX0NPTkZJRy5UVEw7XHJcblx0XHRERUZBVUxUX1RUTF9DT05GSUcuVU5JVCA9IEVudk1hbmFnZXIuZW52aXJvbm1lbnQ/LmNhY2hlPy50dGxVbml0IHx8IERFRkFVTFRfVFRMX0NPTkZJRy5VTklUO1xyXG5cdFx0REVGQVVMVF9UVExfQ09ORklHLkFVVE9fQ0hFQ0sgPSBFbnZNYW5hZ2VyLmVudmlyb25tZW50Py5jYWNoZT8uYXV0b0NoZWNrID09ICdZRVMnO1xyXG5cdFx0REVGQVVMVF9UVExfQ09ORklHLlFVSUNLX1JFRlJFU0ggPSBFbnZNYW5hZ2VyLmVudmlyb25tZW50Py5jYWNoZT8ucXVpY2tSZWZyZXNoIHx8IERFRkFVTFRfVFRMX0NPTkZJRy5RVUlDS19SRUZSRVNIO1xyXG5cdFx0REVGQVVMVF9UVExfQ09ORklHLlFVSUNLX1JFRlJFU0hfVU5JVCA9XHJcblx0XHRcdEVudk1hbmFnZXIuZW52aXJvbm1lbnQ/LmNhY2hlPy5xdWlja1JlZnJlc2hVbml0IHx8IERFRkFVTFRfVFRMX0NPTkZJRy5RVUlDS19SRUZSRVNIX1VOSVQ7XHJcblx0fVxyXG5cdCNhZGQxU2Vjb25kVG9Nb2RpZmllZERhdGUoZGF0ZTogRGF0ZSk6IERhdGUge1xyXG5cdFx0bGV0IG5ld0RhdGUgPSBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSk7XHJcblx0XHRuZXdEYXRlLnNldFNlY29uZHMobmV3RGF0ZS5nZXRTZWNvbmRzKCkgKyAxKTtcclxuXHRcdHJldHVybiBuZXdEYXRlO1xyXG5cdH1cclxuXHQjY2xlYXIodXNlck5hbWU6IHN0cmluZywga2V5T3JBbGw6IHN0cmluZyA9ICcnKSB7XHJcblx0XHRPYmplY3Qua2V5cyh3aW5kb3cubG9jYWxTdG9yYWdlKVxyXG5cdFx0XHQuZmlsdGVyKChxKSA9PiBxLnN0YXJ0c1dpdGgoYCR7dXNlck5hbWV9X18ke0RFRkFVTFRfQ0FDSEVfT1BUSU9OUy5QUkVGSVh9JHtrZXlPckFsbH1gKSlcclxuXHRcdFx0LmZvckVhY2goKGtleSkgPT4ge1xyXG5cdFx0XHRcdHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xyXG5cdFx0XHR9KTtcclxuXHR9XHJcblx0I3ZhbGlkYXRlVFRMRm9yS2V5KG9wdGlvbnM6IEJhc2VDYWNoZU9wdGlvbnMpIHtcclxuXHRcdGlmICh0aGlzLnZhbGlkYXRlVFRMRm9yS2V5KHRoaXMuI2dldEl0ZW0ob3B0aW9ucyk/LmZpcnN0RmV0Y2hpbmdEYXRlKSlcclxuXHRcdFx0dGhpcy4jY2xlYXIob3B0aW9ucy51c2VyTmFtZSwgb3B0aW9ucy5jYWNoZUtleSk7XHJcblx0fVxyXG5cdHZhbGlkYXRlVFRMRm9yS2V5KGZpcnN0RmV0Y2hpbmdEYXRlOiBzdHJpbmcpIHtcclxuXHRcdHJldHVybiB0aGlzLiN2YWxpZGF0ZVRpbWVEaWZmZXJlbmNlKGZpcnN0RmV0Y2hpbmdEYXRlLCBERUZBVUxUX1RUTF9DT05GSUcuVU5JVCwgREVGQVVMVF9UVExfQ09ORklHLlRUTCk7XHJcblx0fVxyXG5cclxuXHQjdmFsaWRhdGVRdWlja1JlZnJlc2goZGF0ZTogc3RyaW5nKSB7XHJcblx0XHRyZXR1cm4gdGhpcy4jdmFsaWRhdGVUaW1lRGlmZmVyZW5jZShkYXRlLCBERUZBVUxUX1RUTF9DT05GSUcuUVVJQ0tfUkVGUkVTSF9VTklULCBERUZBVUxUX1RUTF9DT05GSUcuUVVJQ0tfUkVGUkVTSCk7XHJcblx0fVxyXG5cclxuXHQjdmFsaWRhdGVUaW1lRGlmZmVyZW5jZShkYXRlOiBzdHJpbmcsIHVuaXQ6IENhY2hpbmdFeHBpcnlVbml0LCB0aHJlc2hvbGQ6IG51bWJlcikge1xyXG5cdFx0aWYgKCFkYXRlKSByZXR1cm47XHJcblxyXG5cdFx0Y29uc3QgbW9tZW50RGF0ZTEgPSBtb21lbnQobmV3IERhdGUoZGF0ZSkpO1xyXG5cdFx0Y29uc3QgbW9tZW50RGF0ZTIgPSBtb21lbnQoKTtcclxuXHJcblx0XHRyZXR1cm4gbW9tZW50RGF0ZTIuZGlmZihtb21lbnREYXRlMSwgdW5pdCkgPj0gdGhyZXNob2xkO1xyXG5cdH1cclxuXHJcblx0I3NldEl0ZW1Jbk1hcChrZXk6IHN0cmluZywgdmFsPzogQ2FjaGVJbmZvKTogdm9pZCB7XHJcblx0XHRjb25zdCBlbXB0eTogQ2FjaGVJbmZvID0ge1xyXG5cdFx0XHRkYXRhOiBbXSxcclxuXHRcdFx0Zmlyc3RGZXRjaGluZ0RhdGU6ICcnLFxyXG5cdFx0XHRsYXN0TW9kaWZpZWREYXRlOiAnJyxcclxuXHRcdFx0cmVzdWx0c0NvdW50OiAwLFxyXG5cdFx0XHRmZXRjaGluZ0l0ZW1zRnJvbVRoZVNlcnZlcjogZmFsc2UsXHJcblx0XHRcdG9uRmluaXNoRmV0Y2hpbmc6IG5ldyBTdWJqZWN0PENhY2hlSW5mbz4oKVxyXG5cdFx0fTtcclxuXHRcdGxldCB2YWx1ZTogQ2FjaGVJbmZvID0gdmFsID8gdmFsIDogZW1wdHk7XHJcblx0XHR0aGlzLiNmZXRjaGVkSXRlbXNba2V5XSA9IHZhbHVlO1xyXG5cdH1cclxuXHQjZ2V0SXRlbShvcHRpb25zOiBCYXNlQ2FjaGVPcHRpb25zKSB7XHJcblx0XHRsZXQgZGF0YTogQ2FjaGVJbmZvO1xyXG5cdFx0aWYgKG9wdGlvbnMuaW5NZW1vcnkpIHtcclxuXHRcdFx0ZGF0YSA9IHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNvbnN0IHZhbHVlID0gdGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlLmdldChgJHtERUZBVUxUX0NBQ0hFX09QVElPTlMuUFJFRklYfSR7b3B0aW9ucy5jYWNoZUtleX1gKTtcclxuXHRcdFx0aWYgKCF2YWx1ZSkgcmV0dXJuO1xyXG5cdFx0XHRkYXRhID0gSlNPTi5wYXJzZSh2YWx1ZSk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gZGF0YTtcclxuXHR9XHJcblx0I3NldEl0ZW0odmFsdWU6IFJlY29yZDxzdHJpbmcsIGFueT4sIG9wdGlvbnM6IEJhc2VDYWNoZU9wdGlvbnMpIHtcclxuXHRcdGlmIChvcHRpb25zLmluTWVtb3J5KSByZXR1cm47XHJcblx0XHRlbHNlIHtcclxuXHRcdFx0dGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlLnNldChgJHtERUZBVUxUX0NBQ0hFX09QVElPTlMuUFJFRklYfSR7b3B0aW9ucy5jYWNoZUtleX1gLCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iXX0=
@@ -4,6 +4,8 @@ export const DEFAULT_TTL_CONFIG = {
4
4
  TTL: 3,
5
5
  UNIT: CachingExpiryUnit.MONTHS,
6
6
  AUTO_CHECK: true,
7
- RETRY: 3
7
+ RETRY: 3,
8
+ QUICK_REFRESH: 1,
9
+ QUICK_REFRESH_UNIT: CachingExpiryUnit.HOURS
8
10
  };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC10dGwtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2Jhc2UvY29uZmlnL2RlZmF1bHQtdHRsLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFOUMscUJBQXFCO0FBQ3JCLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2pDLEdBQUcsRUFBRSxDQUFDO0lBQ04sSUFBSSxFQUFFLGlCQUFpQixDQUFDLE1BQU07SUFDOUIsVUFBVSxFQUFFLElBQUk7SUFDaEIsS0FBSyxFQUFFLENBQUM7Q0FDUixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2FjaGluZ0V4cGlyeVVuaXQgfSBmcm9tICcuLi9tb2RlbHMnO1xyXG5cclxuLy8gVFRMIDogVGltZSBUbyBMaXZlXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX1RUTF9DT05GSUcgPSB7XHJcblx0VFRMOiAzLFxyXG5cdFVOSVQ6IENhY2hpbmdFeHBpcnlVbml0Lk1PTlRIUyxcclxuXHRBVVRPX0NIRUNLOiB0cnVlLFxyXG5cdFJFVFJZOiAzXHJcbn07XHJcbiJdfQ==
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC10dGwtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2Jhc2UvY29uZmlnL2RlZmF1bHQtdHRsLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFOUMscUJBQXFCO0FBQ3JCLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2pDLEdBQUcsRUFBRSxDQUFDO0lBQ04sSUFBSSxFQUFFLGlCQUFpQixDQUFDLE1BQU07SUFDOUIsVUFBVSxFQUFFLElBQUk7SUFDaEIsS0FBSyxFQUFFLENBQUM7SUFDUixhQUFhLEVBQUUsQ0FBQztJQUNoQixrQkFBa0IsRUFBRSxpQkFBaUIsQ0FBQyxLQUFLO0NBQzNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYWNoaW5nRXhwaXJ5VW5pdCB9IGZyb20gJy4uL21vZGVscyc7XHJcblxyXG4vLyBUVEwgOiBUaW1lIFRvIExpdmVcclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVFRMX0NPTkZJRyA9IHtcclxuXHRUVEw6IDMsXHJcblx0VU5JVDogQ2FjaGluZ0V4cGlyeVVuaXQuTU9OVEhTLFxyXG5cdEFVVE9fQ0hFQ0s6IHRydWUsXHJcblx0UkVUUlk6IDMsXHJcblx0UVVJQ0tfUkVGUkVTSDogMSxcclxuXHRRVUlDS19SRUZSRVNIX1VOSVQ6IENhY2hpbmdFeHBpcnlVbml0LkhPVVJTXHJcbn07XHJcbiJdfQ==
@@ -12,6 +12,7 @@ export const DEFAULT_CACHE_OPTIONS = {
12
12
  EXCLUDE_KEYS_WHEN_UPDATE: [`contextParameters`],
13
13
  CHILDREN_PATH: `contextParameters.children.entries`,
14
14
  PARENT_KEY: `parentRef`,
15
+ ENABLE_QUICK_REFRESH: false,
15
16
  REQUEST: () => {
16
17
  return of();
17
18
  },
@@ -25,4 +26,4 @@ export const DEFAULT_CACHE_OPTIONS = {
25
26
  });
26
27
  }
27
28
  };
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1jYWNoZS1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2Jhc2UvY29uc3RhbnRzL2RlZmF1bHQtY2FjaGUtb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFCLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHO0lBQ3BDLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLFFBQVEsRUFBRSxrQkFBa0I7SUFDNUIsY0FBYyxFQUFFLFdBQVc7SUFDM0IsaUJBQWlCLEVBQUUsY0FBYztJQUNqQyxlQUFlLEVBQUUsU0FBUztJQUMxQixrQkFBa0IsRUFBRSxLQUFLO0lBQ3pCLG9CQUFvQixFQUFFLHlCQUF5QjtJQUMvQyxpQkFBaUIsRUFBRSxrQkFBa0I7SUFDckMsa0JBQWtCLEVBQUUsd0JBQXdCO0lBQzVDLHdCQUF3QixFQUFFLENBQUMsbUJBQW1CLENBQUM7SUFDL0MsYUFBYSxFQUFFLG9DQUFvQztJQUNuRCxVQUFVLEVBQUUsV0FBVztJQUN2QixPQUFPLEVBQUUsR0FBRyxFQUFFO1FBQ2IsT0FBTyxFQUFFLEVBQUUsQ0FBQztJQUNiLENBQUM7SUFDRCxZQUFZLEVBQUUsVUFDYixNQUFrQztRQUVsQyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDekIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUN4QixPQUFPLElBQUksQ0FBQztRQUNiLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ0FDSEVfT1BUSU9OUyA9IHtcclxuXHRQUkVGSVg6IGBjYWNoZV9fYCxcclxuXHRQQUdFX0tFWTogYGN1cnJlbnRQYWdlSW5kZXhgLFxyXG5cdFRPVEFMX1BBR0VfS0VZOiBgcGFnZUNvdW50YCxcclxuXHRSRVNVTFRTX0NPVU5UX0tFWTogYHJlc3VsdHNDb3VudGAsXHJcblx0TUFQUEVEX0RBVEFfS0VZOiBgZW50cmllc2AsXHJcblx0VU5JUVVFX0NPTVBBUkVfS0VZOiBgdWlkYCxcclxuXHRNSU5fQ09NUEFSRV9EQVRFX0tFWTogYGR1YmxpbmNvcmVfbW9kaWZpZWRfbWluYCxcclxuXHRMQVNUX01PRElGSUVEX0tFWTogYGxhc3RNb2RpZmllZERhdGVgLFxyXG5cdExBU1RfTU9ESUZJRURfUEFUSDogYHByb3BlcnRpZXMuZGM6bW9kaWZpZWRgLFxyXG5cdEVYQ0xVREVfS0VZU19XSEVOX1VQREFURTogW2Bjb250ZXh0UGFyYW1ldGVyc2BdLFxyXG5cdENISUxEUkVOX1BBVEg6IGBjb250ZXh0UGFyYW1ldGVycy5jaGlsZHJlbi5lbnRyaWVzYCwgLy8gaWYgdHJlZVxyXG5cdFBBUkVOVF9LRVk6IGBwYXJlbnRSZWZgLCAvLyBpZiB0cmVlXHJcblx0UkVRVUVTVDogKCkgPT4ge1xyXG5cdFx0cmV0dXJuIG9mKCk7XHJcblx0fSxcclxuXHRQUkVQQVJFX0RBVEE6IGZ1bmN0aW9uIChcclxuXHRcdHJlc3VsdDogQXJyYXk8UmVjb3JkPHN0cmluZywgYW55Pj5cclxuXHQpOiBBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XHJcblx0XHRyZXR1cm4gcmVzdWx0Lm1hcCgoaXRlbSkgPT4ge1xyXG5cdFx0XHRkZWxldGUgaXRlbS5fYmFzZU9wdGlvbnM7XHJcblx0XHRcdGRlbGV0ZSBpdGVtLl9kaXJ0eVByb3BlcnRpZXM7XHJcblx0XHRcdGRlbGV0ZSBpdGVtLl9udXhlbztcclxuXHRcdFx0ZGVsZXRlIGl0ZW0uX3JlcG9zaXRvcnk7XHJcblx0XHRcdHJldHVybiBpdGVtO1xyXG5cdFx0fSk7XHJcblx0fVxyXG59O1xyXG4iXX0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1jYWNoZS1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2Jhc2UvY29uc3RhbnRzL2RlZmF1bHQtY2FjaGUtb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFCLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHO0lBQ3BDLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLFFBQVEsRUFBRSxrQkFBa0I7SUFDNUIsY0FBYyxFQUFFLFdBQVc7SUFDM0IsaUJBQWlCLEVBQUUsY0FBYztJQUNqQyxlQUFlLEVBQUUsU0FBUztJQUMxQixrQkFBa0IsRUFBRSxLQUFLO0lBQ3pCLG9CQUFvQixFQUFFLHlCQUF5QjtJQUMvQyxpQkFBaUIsRUFBRSxrQkFBa0I7SUFDckMsa0JBQWtCLEVBQUUsd0JBQXdCO0lBQzVDLHdCQUF3QixFQUFFLENBQUMsbUJBQW1CLENBQUM7SUFDL0MsYUFBYSxFQUFFLG9DQUFvQztJQUNuRCxVQUFVLEVBQUUsV0FBVztJQUN2QixvQkFBb0IsRUFBRSxLQUFLO0lBQzNCLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDYixPQUFPLEVBQUUsRUFBRSxDQUFDO0lBQ2IsQ0FBQztJQUNELFlBQVksRUFBRSxVQUFVLE1BQWtDO1FBQ3pELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzFCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztZQUN6QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUM3QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxDQUFDO1FBQ2IsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XHJcblxyXG5leHBvcnQgY29uc3QgREVGQVVMVF9DQUNIRV9PUFRJT05TID0ge1xyXG5cdFBSRUZJWDogYGNhY2hlX19gLFxyXG5cdFBBR0VfS0VZOiBgY3VycmVudFBhZ2VJbmRleGAsXHJcblx0VE9UQUxfUEFHRV9LRVk6IGBwYWdlQ291bnRgLFxyXG5cdFJFU1VMVFNfQ09VTlRfS0VZOiBgcmVzdWx0c0NvdW50YCxcclxuXHRNQVBQRURfREFUQV9LRVk6IGBlbnRyaWVzYCxcclxuXHRVTklRVUVfQ09NUEFSRV9LRVk6IGB1aWRgLFxyXG5cdE1JTl9DT01QQVJFX0RBVEVfS0VZOiBgZHVibGluY29yZV9tb2RpZmllZF9taW5gLFxyXG5cdExBU1RfTU9ESUZJRURfS0VZOiBgbGFzdE1vZGlmaWVkRGF0ZWAsXHJcblx0TEFTVF9NT0RJRklFRF9QQVRIOiBgcHJvcGVydGllcy5kYzptb2RpZmllZGAsXHJcblx0RVhDTFVERV9LRVlTX1dIRU5fVVBEQVRFOiBbYGNvbnRleHRQYXJhbWV0ZXJzYF0sXHJcblx0Q0hJTERSRU5fUEFUSDogYGNvbnRleHRQYXJhbWV0ZXJzLmNoaWxkcmVuLmVudHJpZXNgLCAvLyBpZiB0cmVlXHJcblx0UEFSRU5UX0tFWTogYHBhcmVudFJlZmAsIC8vIGlmIHRyZWVcclxuXHRFTkFCTEVfUVVJQ0tfUkVGUkVTSDogZmFsc2UsXHJcblx0UkVRVUVTVDogKCkgPT4ge1xyXG5cdFx0cmV0dXJuIG9mKCk7XHJcblx0fSxcclxuXHRQUkVQQVJFX0RBVEE6IGZ1bmN0aW9uIChyZXN1bHQ6IEFycmF5PFJlY29yZDxzdHJpbmcsIGFueT4+KTogQXJyYXk8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xyXG5cdFx0cmV0dXJuIHJlc3VsdC5tYXAoKGl0ZW0pID0+IHtcclxuXHRcdFx0ZGVsZXRlIGl0ZW0uX2Jhc2VPcHRpb25zO1xyXG5cdFx0XHRkZWxldGUgaXRlbS5fZGlydHlQcm9wZXJ0aWVzO1xyXG5cdFx0XHRkZWxldGUgaXRlbS5fbnV4ZW87XHJcblx0XHRcdGRlbGV0ZSBpdGVtLl9yZXBvc2l0b3J5O1xyXG5cdFx0XHRyZXR1cm4gaXRlbTtcclxuXHRcdH0pO1xyXG5cdH1cclxufTtcclxuIl19
@@ -9,4 +9,4 @@ export var CachingExpiryUnit;
9
9
  CachingExpiryUnit["SECONDS"] = "seconds";
10
10
  CachingExpiryUnit["MILLI_SECONDS"] = "milliseconds";
11
11
  })(CachingExpiryUnit || (CachingExpiryUnit = {}));
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtaW5mby1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9iYXNlL21vZGVscy9jYWNoZS1pbmZvLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE1BQU0sQ0FBTixJQUFZLGlCQVNYO0FBVEQsV0FBWSxpQkFBaUI7SUFDNUIsb0NBQWUsQ0FBQTtJQUNmLHNDQUFpQixDQUFBO0lBQ2pCLG9DQUFlLENBQUE7SUFDZixrQ0FBYSxDQUFBO0lBQ2Isb0NBQWUsQ0FBQTtJQUNmLHdDQUFtQixDQUFBO0lBQ25CLHdDQUFtQixDQUFBO0lBQ25CLG1EQUE4QixDQUFBO0FBQy9CLENBQUMsRUFUVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBUzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdHRwT3B0aW9ucywgUXVlcnlPcHRpb25zIH0gZnJvbSAnLi4vLi4nO1xyXG5cclxudHlwZSBSZXF1ZXN0RnVuY3Rpb25UeXBlID0gKC4uLnBhcmFtcykgPT4gT2JzZXJ2YWJsZTxhbnk+O1xyXG5cclxudHlwZSBQcmVwYXJlRGF0YUJlZm9yZUNhY2hpbmdUeXBlID0gKFxyXG5cdHJlc3VsdDogQXJyYXk8UmVjb3JkPHN0cmluZywgYW55Pj5cclxuKSA9PiBBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+PjtcclxuXHJcbmV4cG9ydCBlbnVtIENhY2hpbmdFeHBpcnlVbml0IHtcclxuXHRZRUFSUyA9ICd5ZWFycycsXHJcblx0TU9OVEhTID0gJ21vbnRocycsXHJcblx0V0VFS1MgPSAnd2Vla3MnLFxyXG5cdERBWVMgPSAnZGF5cycsXHJcblx0SE9VUlMgPSAnaG91cnMnLFxyXG5cdE1JTlVURVMgPSAnbWludXRlcycsXHJcblx0U0VDT05EUyA9ICdzZWNvbmRzJyxcclxuXHRNSUxMSV9TRUNPTkRTID0gJ21pbGxpc2Vjb25kcydcclxufVxyXG5cclxuaW50ZXJmYWNlIEJhc2VPcHRpb24ge1xyXG5cdGNhY2hlS2V5OiBzdHJpbmc7XHJcblx0cHJlcGFyZURhdGFCZWZvcmVDYWNoaW5nOiBQcmVwYXJlRGF0YUJlZm9yZUNhY2hpbmdUeXBlO1xyXG5cdGluTWVtb3J5PzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQ2FjaGVkUXVlcnlPcHRpb25zID0ge30gJiBCYXNlT3B0aW9uICYgUXVlcnlPcHRpb25zO1xyXG5leHBvcnQgdHlwZSBDYWNoZWRIdHRwT3B0aW9ucyA9IHt9ICYgQmFzZU9wdGlvbiAmIEh0dHBPcHRpb25zO1xyXG5leHBvcnQgdHlwZSBDYWNoZWRGdWxsUXVlcnlPcHRpb25zID0ge30gJiBDYWNoZWRRdWVyeU9wdGlvbnMgJiBCYXNlQ2FjaGVPcHRpb25zO1xyXG5leHBvcnQgdHlwZSBDYWNoZWRGdWxsSHR0cE9wdGlvbnMgPSB7fSAmIENhY2hlZEh0dHBPcHRpb25zICYgQmFzZUNhY2hlT3B0aW9ucztcclxuXHJcbmV4cG9ydCB0eXBlIEJhc2VDYWNoZU9wdGlvbnMgPSB7XHJcblx0dXNlck5hbWU6IHN0cmluZztcclxuXHRyZXF1ZXN0OiBSZXF1ZXN0RnVuY3Rpb25UeXBlO1xyXG5cclxuXHQvLyB3ZSBoYWQgZGVmYXVsdCBmb3IgcHAgd2l0aCBkdWJsaW5jb3JlLiBpZiB5b3UgaGFkIGN1c3RvbSB5b3Ugc2hvdWxkIHJlQ29uZmlndXJlIHRoZXNlIHBhcmFtc1xyXG5cdHBhZ2VLZXk/OiBzdHJpbmc7XHJcblx0dG90YWxQYWdlS2V5Pzogc3RyaW5nO1xyXG5cdHJlc3VsdHNDb3VudD86IHN0cmluZztcclxuXHRtYXBwZWREYXRhS2V5Pzogc3RyaW5nO1xyXG5cdHVuaXF1ZUNvbXBhcmVLZXk/OiBzdHJpbmc7XHJcblx0bWluQ29tcGFyZURhdGVLZXk/OiBzdHJpbmc7XHJcblx0bGFzdE1vZGlmaWVkRGF0ZUtleT86IHN0cmluZztcclxuXHRsYXN0TW9kaWZpZWREYXRlUGF0aD86IHN0cmluZztcclxuXHRleGNsdWRlS2V5c1doZW5VcGRhdGU/OiBzdHJpbmdbXTtcclxuXHRjaGlsZHJlblBhdGg/OiBzdHJpbmc7XHJcblx0cGFyZW50S2V5Pzogc3RyaW5nO1xyXG59ICYgQmFzZU9wdGlvbjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2FjaGVJbmZvIHtcclxuXHQvLyBjYWNoZWQgZGF0YVxyXG5cdGRhdGE6IEFycmF5PFJlY29yZDxzdHJpbmcsIGFueT4+O1xyXG5cdGZpcnN0RmV0Y2hpbmdEYXRlOiBzdHJpbmc7XHJcblx0bGFzdE1vZGlmaWVkRGF0ZTogc3RyaW5nO1xyXG5cdHJlc3VsdHNDb3VudDogbnVtYmVyO1xyXG5cclxuXHQvL25vbiBjYWNoZWQgZGF0YVxyXG5cdGZldGNoaW5nSXRlbXNGcm9tVGhlU2VydmVyOiBib29sZWFuO1xyXG5cdG9uRmluaXNoRmV0Y2hpbmc6IFN1YmplY3Q8YW55PjsgLy8gd2UgY2FuIG5vdCB1c2UgbW9kZWwgZm9yIGR5bmFtaWMga2V5c1xyXG5cdHJlcXVlc3Q/OiBSZXF1ZXN0RnVuY3Rpb25UeXBlO1xyXG5cdHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIGFueT47XHJcbn1cclxuIl19
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtaW5mby1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9iYXNlL21vZGVscy9jYWNoZS1pbmZvLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE1BQU0sQ0FBTixJQUFZLGlCQVNYO0FBVEQsV0FBWSxpQkFBaUI7SUFDNUIsb0NBQWUsQ0FBQTtJQUNmLHNDQUFpQixDQUFBO0lBQ2pCLG9DQUFlLENBQUE7SUFDZixrQ0FBYSxDQUFBO0lBQ2Isb0NBQWUsQ0FBQTtJQUNmLHdDQUFtQixDQUFBO0lBQ25CLHdDQUFtQixDQUFBO0lBQ25CLG1EQUE4QixDQUFBO0FBQy9CLENBQUMsRUFUVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBUzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdHRwT3B0aW9ucywgUXVlcnlPcHRpb25zIH0gZnJvbSAnLi4vLi4nO1xyXG5cclxudHlwZSBSZXF1ZXN0RnVuY3Rpb25UeXBlID0gKC4uLnBhcmFtcykgPT4gT2JzZXJ2YWJsZTxhbnk+O1xyXG5cclxudHlwZSBQcmVwYXJlRGF0YUJlZm9yZUNhY2hpbmdUeXBlID0gKHJlc3VsdDogQXJyYXk8UmVjb3JkPHN0cmluZywgYW55Pj4pID0+IEFycmF5PFJlY29yZDxzdHJpbmcsIGFueT4+O1xyXG5cclxuZXhwb3J0IGVudW0gQ2FjaGluZ0V4cGlyeVVuaXQge1xyXG5cdFlFQVJTID0gJ3llYXJzJyxcclxuXHRNT05USFMgPSAnbW9udGhzJyxcclxuXHRXRUVLUyA9ICd3ZWVrcycsXHJcblx0REFZUyA9ICdkYXlzJyxcclxuXHRIT1VSUyA9ICdob3VycycsXHJcblx0TUlOVVRFUyA9ICdtaW51dGVzJyxcclxuXHRTRUNPTkRTID0gJ3NlY29uZHMnLFxyXG5cdE1JTExJX1NFQ09ORFMgPSAnbWlsbGlzZWNvbmRzJ1xyXG59XHJcblxyXG5pbnRlcmZhY2UgQmFzZU9wdGlvbiB7XHJcblx0Y2FjaGVLZXk6IHN0cmluZztcclxuXHRwcmVwYXJlRGF0YUJlZm9yZUNhY2hpbmc6IFByZXBhcmVEYXRhQmVmb3JlQ2FjaGluZ1R5cGU7XHJcblx0aW5NZW1vcnk/OiBib29sZWFuO1xyXG5cdGVuYWJsZVF1aWNrUmVmcmVzaD86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIENhY2hlZFF1ZXJ5T3B0aW9ucyA9IHt9ICYgQmFzZU9wdGlvbiAmIFF1ZXJ5T3B0aW9ucztcclxuZXhwb3J0IHR5cGUgQ2FjaGVkSHR0cE9wdGlvbnMgPSB7fSAmIEJhc2VPcHRpb24gJiBIdHRwT3B0aW9ucztcclxuZXhwb3J0IHR5cGUgQ2FjaGVkRnVsbFF1ZXJ5T3B0aW9ucyA9IHt9ICYgQ2FjaGVkUXVlcnlPcHRpb25zICYgQmFzZUNhY2hlT3B0aW9ucztcclxuZXhwb3J0IHR5cGUgQ2FjaGVkRnVsbEh0dHBPcHRpb25zID0ge30gJiBDYWNoZWRIdHRwT3B0aW9ucyAmIEJhc2VDYWNoZU9wdGlvbnM7XHJcblxyXG5leHBvcnQgdHlwZSBCYXNlQ2FjaGVPcHRpb25zID0ge1xyXG5cdHVzZXJOYW1lOiBzdHJpbmc7XHJcblx0cmVxdWVzdDogUmVxdWVzdEZ1bmN0aW9uVHlwZTtcclxuXHJcblx0Ly8gd2UgaGFkIGRlZmF1bHQgZm9yIHBwIHdpdGggZHVibGluY29yZS4gaWYgeW91IGhhZCBjdXN0b20geW91IHNob3VsZCByZUNvbmZpZ3VyZSB0aGVzZSBwYXJhbXNcclxuXHRwYWdlS2V5Pzogc3RyaW5nO1xyXG5cdHRvdGFsUGFnZUtleT86IHN0cmluZztcclxuXHRyZXN1bHRzQ291bnQ/OiBzdHJpbmc7XHJcblx0bWFwcGVkRGF0YUtleT86IHN0cmluZztcclxuXHR1bmlxdWVDb21wYXJlS2V5Pzogc3RyaW5nO1xyXG5cdG1pbkNvbXBhcmVEYXRlS2V5Pzogc3RyaW5nO1xyXG5cdGxhc3RNb2RpZmllZERhdGVLZXk/OiBzdHJpbmc7XHJcblx0bGFzdE1vZGlmaWVkRGF0ZVBhdGg/OiBzdHJpbmc7XHJcblx0ZXhjbHVkZUtleXNXaGVuVXBkYXRlPzogc3RyaW5nW107XHJcblx0Y2hpbGRyZW5QYXRoPzogc3RyaW5nO1xyXG5cdHBhcmVudEtleT86IHN0cmluZztcclxufSAmIEJhc2VPcHRpb247XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlSW5mbyB7XHJcblx0Ly8gY2FjaGVkIGRhdGFcclxuXHRkYXRhOiBBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+PjtcclxuXHRmaXJzdEZldGNoaW5nRGF0ZTogc3RyaW5nO1xyXG5cdGxhc3RNb2RpZmllZERhdGU6IHN0cmluZztcclxuXHRyZXN1bHRzQ291bnQ6IG51bWJlcjtcclxuXHJcblx0Ly9ub24gY2FjaGVkIGRhdGFcclxuXHRmZXRjaGluZ0l0ZW1zRnJvbVRoZVNlcnZlcjogYm9vbGVhbjtcclxuXHRvbkZpbmlzaEZldGNoaW5nOiBTdWJqZWN0PGFueT47IC8vIHdlIGNhbiBub3QgdXNlIG1vZGVsIGZvciBkeW5hbWljIGtleXNcclxuXHRyZXF1ZXN0PzogUmVxdWVzdEZ1bmN0aW9uVHlwZTtcclxuXHRwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG59XHJcbiJdfQ==