@churchillliving/se-ui-toolkit 6.54.577 → 6.54.578

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { EGridColumnType } from '../models/grid.model';
2
+ import { EGridColumnType, EGridlink } from '../models/grid.model';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "./request.service";
5
5
  import * as i2 from "@angular/router";
@@ -194,6 +194,24 @@ export class HyperlinkService {
194
194
  window.open(url, '_blank');
195
195
  }
196
196
  }
197
+ navigateWithUserPreference(page, params, overrideUserSetting = false, target) {
198
+ let finalTarget = EGridlink.BLANK;
199
+ if (!overrideUserSetting) {
200
+ const userSetting = localStorage.getItem("UserSetting");
201
+ if (userSetting) {
202
+ const parsedSetting = JSON.parse(userSetting);
203
+ finalTarget = parsedSetting?.value === "openLinkInCurrentTab" ? EGridlink.SELF : EGridlink.BLANK;
204
+ }
205
+ }
206
+ else if (target) {
207
+ finalTarget = target;
208
+ }
209
+ const url = this.router.createUrlTree([page], { queryParams: params?.queryParams }).toString();
210
+ const anchor = document.createElement('a');
211
+ anchor.href = url;
212
+ anchor.target = finalTarget;
213
+ anchor.click();
214
+ }
197
215
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: HyperlinkService, deps: [{ token: i1.RequestService }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable }); }
198
216
  /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: HyperlinkService, providedIn: 'root' }); }
199
217
  }
@@ -203,4 +221,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
203
221
  providedIn: 'root',
204
222
  }]
205
223
  }], ctorParameters: function () { return [{ type: i1.RequestService }, { type: i2.Router }, { type: i2.ActivatedRoute }]; } });
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHlwZXJsaW5rLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvc2VydmljZXMvaHlwZXJsaW5rLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7QUFTdkQsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixZQUFvQixjQUE4QixFQUFVLE1BQWMsRUFBVSxLQUFxQjtRQUFyRixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7SUFBSyxDQUFDO0lBRS9HLFFBQVEsQ0FBQyxPQUFZO1FBQ25CLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQ25IO2dCQUNFLE9BQU8sT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3BCO1lBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNoRCxJQUFJLENBQUMsY0FBYztxQkFDaEIsR0FBRyxDQUFXLGlCQUFpQixFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO3FCQUN0RCxTQUFTLENBQ1IsQ0FBQyxHQUFRLEVB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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVHcmlkQ29sdW1uVHlwZSB9IGZyb20gJy4uL21vZGVscy9ncmlkLm1vZGVsJztcbmltcG9ydCB7IElTaWRlYmFyIH0gZnJvbSAnLi4vbW9kZWxzL3NpZGViYXIubW9kZWwnO1xuaW1wb3J0IHsgUmVxdWVzdFNlcnZpY2UgfSBmcm9tICcuL3JlcXVlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBJRHluYW1pY0Zvcm0gfSBmcm9tICcuLi9tb2RlbHMvZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBJRGljdGlvbmFyeSB9IGZyb20gJy4uL21vZGVscy9jb21tb24ubW9kZWwnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSHlwZXJsaW5rU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVxdWVzdFNlcnZpY2U6IFJlcXVlc3RTZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwpIHsgfVxuXG4gIGJ1aWxkVXJsKGxpbmtJZHM6IGFueSkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoKEFycmF5LmlzQXJyYXkobGlua0lkcykgJiYgbGlua0lkcy5sZW5ndGggPT09IDApIHx8ICgoIUFycmF5LmlzQXJyYXkobGlua0lkcykpICYmICFsaW5rSWRzPy50b1N0cmluZygpPy5sZW5ndGgpKVxuICAgICAge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZSgnJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGxpbmtJZHMpICYmIGxpbmtJZHMubGVuZ3RoID4gMSkge1xuICAgICAgICB0aGlzLnJlcXVlc3RTZXJ2aWNlXG4gICAgICAgICAgLmdldDxhbnksIGFueT4oJy9MaW5rL0J5TGlua0lkcycsIHsgbGlua0lkczogbGlua0lkcyB9KVxuICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgbGV0IGluVmFsaWRMaW5rSWQgPSBsaW5rSWRzLmZpbHRlcihsaW5rSWQgPT4gcmVzPy5ldmVyeShyZXN1bHQgPT4gcmVzdWx0LmxpbmtJZCAhPT0gbGlua0lkKSk7XG4gICAgICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5WYWxpZExpbmtJZD8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coaW5WYWxpZExpbmtJZC50b1N0cmluZygpLCBcIkxpbmtJZCBkb2VzIG5vdCBleGlzdCBpbiBkYlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhpblZhbGlkTGlua0lkLCBcIkxpbmtJZCBkb2VzIG5vdCBleGlzdCBpbiBkYlwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgnJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoeyBlcnJvciB9KSA9PiB7XG4gICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGxpbmtJZCA9IEFycmF5LmlzQXJyYXkobGlua0lkcykgJiYgbGlua0lkcz8ubGVuZ3RoID09PSAxID8gbGlua0lkc1swXSA6IGxpbmtJZHM7XG4gICAgICAgIHRoaXMucmVxdWVzdFNlcnZpY2VcbiAgICAgICAgICAuZ2V0T25lPGFueSwgYW55PignL0xpbmsvQnlMaW5rSWQnLCBsaW5rSWQpXG4gICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5saW5rSWQgIT09IGxpbmtJZCkge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cobGlua0lkLCBcIkxpbmtJZCBkb2VzIG5vdCBleGlzdCBpbiBkYlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoW3Jlc10pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGxpbmtJZCwgXCJMaW5rSWQgZG9lcyBub3QgZXhpc3QgaW4gZGJcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoJycpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKHsgZXJyb3IgfSkgPT4ge1xuICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzZXRVcmwocGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LCByZXNwb25zZTogYW55KSB7XG4gICAgbGV0IHVybDogc3RyaW5nID0gcmVzcG9uc2UgPyByZXNwb25zZS51cmwgOiAnJztcbiAgICBmb3IgKGxldCBwYXJhbUtleSBpbiBwYXJhbXMpIHtcbiAgICAgIGNvbnN0IGxvd2VyS2V5ID0gcGFyYW1LZXk7XG4gICAgICBjb25zdCBwYXJhbVZhbHVlID0gcGFyYW1zW3BhcmFtS2V5XTtcbiAgICAgIGlmIChcbiAgICAgICAgdXJsICYmXG4gICAgICAgIHVybC5zZWFyY2ggJiZcbiAgICAgICAgdXJsLnNlYXJjaChsb3dlcktleSkgPiAwICYmXG4gICAgICAgIHBhcmFtVmFsdWUgJiZcbiAgICAgICAgcGFyYW1WYWx1ZS5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgdXJsID0gdXJsLnJlcGxhY2UoJ3t7Jytsb3dlcktleSsnfX0nLCBwYXJhbXNbcGFyYW1LZXldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIGFzeW5jIGFkZEh5cGVybGlua3MoY29sdW1uczogYW55LCByb3c6IGFueSA9IFtdKSB7XG4gICAgbGV0IGxpbmtJZHM6IGFueVtdID0gW107XG4gICAgaWYgKGNvbHVtbnMgJiYgQXJyYXkuaXNBcnJheShjb2x1bW5zKSkge1xuICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChjb2x1bW4udHlwZSA9PT0gRUdyaWRDb2x1bW5UeXBlLkxJTksgfHxcbiAgICAgICAgICAgIGNvbHVtbi50eXBlID09PSBFR3JpZENvbHVtblR5cGUuSUZSQU1FIHx8XG4gICAgICAgICAgICBjb2x1bW4udHlwZSA9PT0gRUdyaWRDb2x1bW5UeXBlLkxPT0tVUF9JTlBVVCkgJiZcbiAgICAgICAgICBjb2x1bW4ubGlua0lkXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IHNldExpbmtJZCA9IHJvd1swXVtjb2x1bW4uZmllbGQ/LnRvTG93ZXJDYXNlKCkgKyAnX29iaiddPy5saW5rSWQ7XG4gICAgICAgICAgaWYgKHJvdyAmJiByb3cubGVuZ3RoID09PSAxICYmIHNldExpbmtJZCkge1xuICAgICAgICAgICAgbGlua0lkcy5wdXNoKHNldExpbmtJZCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxpbmtJZHMucHVzaChjb2x1bW4ubGlua0lkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYnVpbGRVcmwobGlua0lkcykudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoY29sdW1ucy5saW5rSWQpIHtcbiAgICAgIGxpbmtJZHMucHVzaChjb2x1bW5zLmxpbmtJZCk7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5idWlsZFVybChsaW5rSWRzKS50aGVuKChyZXM6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgc2V0TGlua1BhcmFtVmFsdWVzKFxuICAgIHsgZm9ybVNlY3Rpb25zIH06IElEeW5hbWljRm9ybSxcbiAgICBmaWVsZDogc3RyaW5nLFxuICAgIHBhcmFtczogYW55W11cbiAgKSB7XG4gICAgcmV0dXJuIGZvcm1TZWN0aW9ucz8ubWFwKChzZWN0aW9uOiBhbnkpID0+IHtcbiAgICAgIHJldHVybiBzZWN0aW9uLmZpZWxkcy5tYXAoKGZvcm1GaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgY29uc3QgaXNMYWJlbExpbmsgPVxuICAgICAgICAgIGZvcm1GaWVsZC5sYWJlbCAmJiB0eXBlb2YgZm9ybUZpZWxkLmxhYmVsID09PSAnb2JqZWN0JztcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGZvcm1GaWVsZC5maWVsZD8udG9Mb3dlckNhc2UoKSA9PT0gZmllbGQ/LnRvTG93ZXJDYXNlKCkgfHwgXG4gICAgICAgICAgKGlzTGFiZWxMaW5rICYmIGZvcm1GaWVsZC5sYWJlbD8ubmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gZmllbGQ/LnRvTG93ZXJDYXNlKCkpIHx8XG4gICAgICAgICAgKGZvcm1GaWVsZC5sYWJlbCAmJiB0eXBlb2YgZm9ybUZpZWxkLmxhYmVsID09PSAnc3RyaW5nJyAmJiBmb3JtRmllbGQubGFiZWw/LnRvTG93ZXJDYXNlKCkgPT09IGZpZWxkPy50b0xvd2VyQ2FzZSgpKVxuICAgICAgICApIHtcbiAgICAgICAgICBsZXQgbmV3TGluazogc3RyaW5nID0gaXNMYWJlbExpbmtcbiAgICAgICAgICAgID8gZm9ybUZpZWxkLmxhYmVsPy5sYWJlbENvbnRyb2w/Lm9yaWduYWxMaW5rXG4gICAgICAgICAgICA6IGZvcm1GaWVsZC5vcmlnbmFsTGluayA/IGZvcm1GaWVsZC5vcmlnbmFsTGluayA6IGZvcm1GaWVsZC5oeXBlcmxpbms/Lmxpbms7XG4gIFxuICAgICAgICAgIGlmIChuZXdMaW5rICYmIG5ld0xpbmsubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcmFtcy5tYXAoKHBhcmFtT2JqOiBJRGljdGlvbmFyeSk6IGFueSA9PiB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAodHlwZW9mIHBhcmFtT2JqLnZhbHVlID09PSAnb2JqZWN0JyAmJiBwYXJhbU9iai52YWx1ZSkgfHxcbiAgICAgICAgICAgICAgICAodHlwZW9mIHBhcmFtT2JqLnZhbHVlID09PSAnc3RyaW5nJyAmJiBwYXJhbU9iai52YWx1ZT8ubGVuZ3RoID4gMClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgLy8gcmVtb3ZpbmcgaHR0cHM6Ly8gb3IgaHR0cDovLyBmcm9tIGh5cGVybGluayBwYXJhbSB2YWx1ZVxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgIChwYXJhbU9iai52YWx1ZT8udG9TdHJpbmcoKS5pbmNsdWRlcygnaHR0cHM6Ly8nKSB8fCBwYXJhbU9iai52YWx1ZT8udG9TdHJpbmcoKS5pbmNsdWRlcygnaHR0cDovLycpKSAmJiBcbiAgICAgICAgICAgICAgICAgIChuZXdMaW5rLmluY2x1ZGVzKCdodHRwczovLycpIHx8IG5ld0xpbmsuaW5jbHVkZXMoJ2h0dHA6Ly8nKSkgXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBwYXJhbU9iai52YWx1ZSA9IHBhcmFtT2JqLnZhbHVlLnJlcGxhY2UoJ2h0dHBzOi8vJywgJycpLnJlcGxhY2UoJ2h0dHA6Ly8nLCAnJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtTmFtZTogc3RyaW5nID0gcGFyYW1PYmoubmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtRm9ybWF0OiBzdHJpbmcgPSAhcGFyYW1PYmoudmFsdWVcbiAgICAgICAgICAgICAgICAgID8gJ3t7JyArIHBhcmFtTmFtZSArICd9fSdcbiAgICAgICAgICAgICAgICAgIDogcGFyYW1OYW1lO1xuICBcbiAgICAgICAgICAgICAgICBpZiAobmV3TGluay5sb2NhbGVDb21wYXJlKHBhcmFtRm9ybWF0KSkge1xuICAgICAgICAgICAgICAgICAgbGV0IHNldExpbmsgPVxuICAgICAgICAgICAgICAgICAgICBwYXJhbUZvcm1hdCAhPT0gJ3t7JyArIHBhcmFtRm9ybWF0ICsgJ319J1xuICAgICAgICAgICAgICAgICAgICAgID8gJ3t7JyArIHBhcmFtRm9ybWF0ICsgJ319J1xuICAgICAgICAgICAgICAgICAgICAgIDogcGFyYW1Gb3JtYXQ7XG4gIFxuICAgICAgICAgICAgICAgICAgbmV3TGluayA9IG5ld0xpbmsucmVwbGFjZShcbiAgICAgICAgICAgICAgICAgICAgbmV3IFJlZ0V4cChzZXRMaW5rLCAnaWcnKSxcbiAgICAgICAgICAgICAgICAgICAgKHBhcmFtT2JqLnZhbHVlKT8udHJpbSgpXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgLy8gaWYgKG5ld0xpbmsgJiYgIW5ld0xpbmsuc3RhcnRzV2l0aCgnaHR0cCcpKVxuICAgICAgICAgICAgICAgICAgLy8ge1xuICAgICAgICAgICAgICAgICAgLy8gICAgIG5ld0xpbmsgPSBcImh0dHA6Ly9cIiArIG5ld0xpbms7XG4gICAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBpc0xhYmVsTGlua1xuICAgICAgICAgICAgICAgICAgPyAoZm9ybUZpZWxkLmxhYmVsLmxhYmVsQ29udHJvbC5oeXBlcmxpbmsubGluayA9IG5ld0xpbmspXG4gICAgICAgICAgICAgICAgICA6IChmb3JtRmllbGQuaHlwZXJsaW5rLmxpbmsgPSBuZXdMaW5rKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHNldFNpZGViYXJMaW5rKHJlc3BvbnNlOiBhbnksIHNpZGViYXI6IElTaWRlYmFyW10pIHtcbiAgICByZXNwb25zZS5mb3JFYWNoKChyZXM6IGFueSkgPT4ge1xuICAgICAgc2lkZWJhci5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGlmIChpdGVtLm9uQ2xpY2sgJiYgaXRlbS5saW5rSWQgJiYgaXRlbS5saW5rSWQgPT09IHJlcy5saW5rSWQpIHtcbiAgICAgICAgICBpdGVtLm9uQ2xpY2socmVzLnVybCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgb3BlbkRpYWxvZ0luTmV3VGFiKGNvbXBvbmVudDogYW55LCBkYXRhUGFyYW1zOiBhbnkgPSB7fSwgcm93OiBhbnkgPSB7fSkge1xuICAgIGNvbnN0IGRhdGFQcmFtQ29weSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YVBhcmFtcykpO1xuICAgIGxldCByb3V0ZTogYW55ID0ge31cbiAgICB0aGlzLnJvdXRlci5jb25maWcuZm9yRWFjaCgocGFyZW50Um91dGUpID0+IHtcbiAgICAgIGlmIChwYXJlbnRSb3V0ZS5jb21wb25lbnQgPT09IGNvbXBvbmVudCkge1xuICAgICAgICByb3V0ZSA9IHBhcmVudFJvdXRlO1xuICAgICAgfSBlbHNlIGlmIChwYXJlbnRSb3V0ZS5jaGlsZHJlbikge1xuICAgICAgICBwYXJlbnRSb3V0ZT8uY2hpbGRyZW4/LmZvckVhY2goKGNoaWxkUm91dGUpID0+IHtcbiAgICAgICAgICBpZiAoY2hpbGRSb3V0ZS5jb21wb25lbnQgPT09IGNvbXBvbmVudCkgeyAgICAgICAgICAgIFxuICAgICAgICAgICAgcm91dGUgPSBjaGlsZFJvdXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuICAgIGlmIChPYmplY3Qua2V5cyhyb3cpPy5sZW5ndGggPiAwKSB7XG4gICAgICBsZXQgcm93a2V5ID0gT2JqZWN0LmtleXMocm93KTtcbiAgICAgIGxldCBwYXJhbUtleSA9IE9iamVjdC5rZXlzKGRhdGFQcmFtQ29weSk7XG4gICAgICBwYXJhbUtleS5mb3JFYWNoKChwYXJhbSkgPT4ge1xuICAgICAgICBpZiAocGFyYW0gJiYgZGF0YVByYW1Db3B5W3BhcmFtXSAmJiBkYXRhUHJhbUNvcHlbcGFyYW1dPy5pbmNsdWRlcygneycpKSB7XG4gICAgICAgICAgY29uc3QgcGFyYW1WYWx1ZSA9IGRhdGFQcmFtQ29weVtwYXJhbV0ucmVwbGFjZSgneycsICcnKT8ucmVwbGFjZSgnfScsICcnKTtcbiAgICAgICAgICBjb25zdCBtYXRjaEtleSA9IHJvd2tleS5maW5kKChyb3cpID0+IHJvdz8udG9Mb3dlckNhc2UoKSA9PT0gcGFyYW1WYWx1ZT8udG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgaWYgKG1hdGNoS2V5KSB7XG4gICAgICAgICAgICBkYXRhUHJhbUNvcHlbcGFyYW1dID0gcm93W21hdGNoS2V5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbWF0Y2hQYXJhbUtleSA9IHJvd2tleS5maW5kKChyb3cpID0+IHJvdz8udG9Mb3dlckNhc2UoKSA9PT0gcGFyYW0/LnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgIGlmIChtYXRjaFBhcmFtS2V5KSB7XG4gICAgICAgICAgICBkYXRhUHJhbUNvcHlbcGFyYW1dID0gcm93W21hdGNoUGFyYW1LZXldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHJvdXRlKSB7XG4gICAgICBsZXQgcGFyYW1zID0ge307XG4gICAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW06IGFueSkgPT4ge1xuICAgICAgICBpZiAocGFyYW0gJiYgT2JqZWN0LmtleXMocGFyYW0pPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcGFyYW1zID0gcGFyYW1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMucm91dGVyLnNlcmlhbGl6ZVVybCh0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFtyb3V0ZT8ucGF0aF0sIHsgcXVlcnlQYXJhbXM6IE9iamVjdC5rZXlzKGRhdGFQcmFtQ29weSk/Lmxlbmd0aCA+IDAgPyBkYXRhUHJhbUNvcHkgOiBwYXJhbXMgfSkpO1xuICAgICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHlwZXJsaW5rLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvc2VydmljZXMvaHlwZXJsaW5rLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBU2xFLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsWUFBb0IsY0FBOEIsRUFBVSxNQUFjLEVBQVUsS0FBcUI7UUFBckYsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLFVBQUssR0FBTCxLQUFLLENBQWdCO0lBQUssQ0FBQztJQUUvRyxRQUFRLENBQUMsT0FBWTtRQUNuQixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUNuSDtnQkFDRSxPQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNwQjtZQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDaEQsSUFBSSxDQUFDLGNBQWM7cUJBQ2hCLEdBQUcsQ0FBVyxpQkFBaUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQztxQkFDdEQsU0FBUyxDQUNSLENB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QyxLQUFLLENBQUM7UUFDbEMsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQ3hCLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDeEQsSUFBSSxXQUFXLEVBQUU7Z0JBQ2YsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDOUMsV0FBVyxHQUFHLGFBQWEsRUFBRSxLQUFLLEtBQUssc0JBQXNCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7YUFDbEc7U0FDRjthQUFNLElBQUksTUFBTSxFQUFFO1lBQ2pCLFdBQVcsR0FBRyxNQUFNLENBQUM7U0FDdEI7UUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQy9GLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDbEIsTUFBTSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUM7UUFDNUIsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pCLENBQUM7aUlBMU9VLGdCQUFnQjtxSUFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVHcmlkQ29sdW1uVHlwZSwgRUdyaWRsaW5rIH0gZnJvbSAnLi4vbW9kZWxzL2dyaWQubW9kZWwnO1xuaW1wb3J0IHsgSVNpZGViYXIgfSBmcm9tICcuLi9tb2RlbHMvc2lkZWJhci5tb2RlbCc7XG5pbXBvcnQgeyBSZXF1ZXN0U2VydmljZSB9IGZyb20gJy4vcmVxdWVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IElEeW5hbWljRm9ybSB9IGZyb20gJy4uL21vZGVscy9mb3JtLm1vZGVsJztcbmltcG9ydCB7IElEaWN0aW9uYXJ5IH0gZnJvbSAnLi4vbW9kZWxzL2NvbW1vbi5tb2RlbCc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBIeXBlcmxpbmtTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXF1ZXN0U2VydmljZTogUmVxdWVzdFNlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLCkgeyB9XG5cbiAgYnVpbGRVcmwobGlua0lkczogYW55KSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICgoQXJyYXkuaXNBcnJheShsaW5rSWRzKSAmJiBsaW5rSWRzLmxlbmd0aCA9PT0gMCkgfHwgKCghQXJyYXkuaXNBcnJheShsaW5rSWRzKSkgJiYgIWxpbmtJZHM/LnRvU3RyaW5nKCk/Lmxlbmd0aCkpXG4gICAgICB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKCcnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobGlua0lkcykgJiYgbGlua0lkcy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHRoaXMucmVxdWVzdFNlcnZpY2VcbiAgICAgICAgICAuZ2V0PGFueSwgYW55PignL0xpbmsvQnlMaW5rSWRzJywgeyBsaW5rSWRzOiBsaW5rSWRzIH0pXG4gICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBsZXQgaW5WYWxpZExpbmtJZCA9IGxpbmtJZHMuZmlsdGVyKGxpbmtJZCA9PiByZXM/LmV2ZXJ5KHJlc3VsdCA9PiByZXN1bHQubGlua0lkICE9PSBsaW5rSWQpKTtcbiAgICAgICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgICAgIGlmIChpblZhbGlkTGlua0lkPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhpblZhbGlkTGlua0lkLnRvU3RyaW5nKCksIFwiTGlua0lkIGRvZXMgbm90IGV4aXN0IGluIGRiXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXMpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGluVmFsaWRMaW5rSWQsIFwiTGlua0lkIGRvZXMgbm90IGV4aXN0IGluIGRiXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCcnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICh7IGVycm9yIH0pID0+IHtcbiAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbGlua0lkID0gQXJyYXkuaXNBcnJheShsaW5rSWRzKSAmJiBsaW5rSWRzPy5sZW5ndGggPT09IDEgPyBsaW5rSWRzWzBdIDogbGlua0lkcztcbiAgICAgICAgdGhpcy5yZXF1ZXN0U2VydmljZVxuICAgICAgICAgIC5nZXRPbmU8YW55LCBhbnk+KCcvTGluay9CeUxpbmtJZCcsIGxpbmtJZClcbiAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmxpbmtJZCAhPT0gbGlua0lkKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhsaW5rSWQsIFwiTGlua0lkIGRvZXMgbm90IGV4aXN0IGluIGRiXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShbcmVzXSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2cobGlua0lkLCBcIkxpbmtJZCBkb2VzIG5vdCBleGlzdCBpbiBkYlwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgnJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoeyBlcnJvciB9KSA9PiB7XG4gICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNldFVybChwYXJhbXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sIHJlc3BvbnNlOiBhbnkpIHtcbiAgICBsZXQgdXJsOiBzdHJpbmcgPSByZXNwb25zZSA/IHJlc3BvbnNlLnVybCA6ICcnO1xuICAgIGZvciAobGV0IHBhcmFtS2V5IGluIHBhcmFtcykge1xuICAgICAgY29uc3QgbG93ZXJLZXkgPSBwYXJhbUtleTtcbiAgICAgIGNvbnN0IHBhcmFtVmFsdWUgPSBwYXJhbXNbcGFyYW1LZXldO1xuICAgICAgaWYgKFxuICAgICAgICB1cmwgJiZcbiAgICAgICAgdXJsLnNlYXJjaCAmJlxuICAgICAgICB1cmwuc2VhcmNoKGxvd2VyS2V5KSA+IDAgJiZcbiAgICAgICAgcGFyYW1WYWx1ZSAmJlxuICAgICAgICBwYXJhbVZhbHVlLmxlbmd0aCA+IDBcbiAgICAgICkge1xuICAgICAgICB1cmwgPSB1cmwucmVwbGFjZSgne3snK2xvd2VyS2V5Kyd9fScsIHBhcmFtc1twYXJhbUtleV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdXJsO1xuICB9XG5cbiAgYXN5bmMgYWRkSHlwZXJsaW5rcyhjb2x1bW5zOiBhbnksIHJvdzogYW55ID0gW10pIHtcbiAgICBsZXQgbGlua0lkczogYW55W10gPSBbXTtcbiAgICBpZiAoY29sdW1ucyAmJiBBcnJheS5pc0FycmF5KGNvbHVtbnMpKSB7XG4gICAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKGNvbHVtbi50eXBlID09PSBFR3JpZENvbHVtblR5cGUuTElOSyB8fFxuICAgICAgICAgICAgY29sdW1uLnR5cGUgPT09IEVHcmlkQ29sdW1uVHlwZS5JRlJBTUUgfHxcbiAgICAgICAgICAgIGNvbHVtbi50eXBlID09PSBFR3JpZENvbHVtblR5cGUuTE9PS1VQX0lOUFVUKSAmJlxuICAgICAgICAgIGNvbHVtbi5saW5rSWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3Qgc2V0TGlua0lkID0gcm93WzBdW2NvbHVtbi5maWVsZD8udG9Mb3dlckNhc2UoKSArICdfb2JqJ10/LmxpbmtJZDtcbiAgICAgICAgICBpZiAocm93ICYmIHJvdy5sZW5ndGggPT09IDEgJiYgc2V0TGlua0lkKSB7XG4gICAgICAgICAgICBsaW5rSWRzLnB1c2goc2V0TGlua0lkKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGlua0lkcy5wdXNoKGNvbHVtbi5saW5rSWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5idWlsZFVybChsaW5rSWRzKS50aGVuKChyZXM6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChjb2x1bW5zLmxpbmtJZCkge1xuICAgICAgbGlua0lkcy5wdXNoKGNvbHVtbnMubGlua0lkKTtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJ1aWxkVXJsKGxpbmtJZHMpLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzZXRMaW5rUGFyYW1WYWx1ZXMoXG4gICAgeyBmb3JtU2VjdGlvbnMgfTogSUR5bmFtaWNGb3JtLFxuICAgIGZpZWxkOiBzdHJpbmcsXG4gICAgcGFyYW1zOiBhbnlbXVxuICApIHtcbiAgICByZXR1cm4gZm9ybVNlY3Rpb25zPy5tYXAoKHNlY3Rpb246IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHNlY3Rpb24uZmllbGRzLm1hcCgoZm9ybUZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBjb25zdCBpc0xhYmVsTGluayA9XG4gICAgICAgICAgZm9ybUZpZWxkLmxhYmVsICYmIHR5cGVvZiBmb3JtRmllbGQubGFiZWwgPT09ICdvYmplY3QnO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZm9ybUZpZWxkLmZpZWxkPy50b0xvd2VyQ2FzZSgpID09PSBmaWVsZD8udG9Mb3dlckNhc2UoKSB8fCBcbiAgICAgICAgICAoaXNMYWJlbExpbmsgJiYgZm9ybUZpZWxkLmxhYmVsPy5uYW1lPy50b0xvd2VyQ2FzZSgpID09PSBmaWVsZD8udG9Mb3dlckNhc2UoKSkgfHxcbiAgICAgICAgICAoZm9ybUZpZWxkLmxhYmVsICYmIHR5cGVvZiBmb3JtRmllbGQubGFiZWwgPT09ICdzdHJpbmcnICYmIGZvcm1GaWVsZC5sYWJlbD8udG9Mb3dlckNhc2UoKSA9PT0gZmllbGQ/LnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICkge1xuICAgICAgICAgIGxldCBuZXdMaW5rOiBzdHJpbmcgPSBpc0xhYmVsTGlua1xuICAgICAgICAgICAgPyBmb3JtRmllbGQubGFiZWw/LmxhYmVsQ29udHJvbD8ub3JpZ25hbExpbmtcbiAgICAgICAgICAgIDogZm9ybUZpZWxkLm9yaWduYWxMaW5rID8gZm9ybUZpZWxkLm9yaWduYWxMaW5rIDogZm9ybUZpZWxkLmh5cGVybGluaz8ubGluaztcbiAgXG4gICAgICAgICAgaWYgKG5ld0xpbmsgJiYgbmV3TGluay5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyYW1zLm1hcCgocGFyYW1PYmo6IElEaWN0aW9uYXJ5KTogYW55ID0+IHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICh0eXBlb2YgcGFyYW1PYmoudmFsdWUgPT09ICdvYmplY3QnICYmIHBhcmFtT2JqLnZhbHVlKSB8fFxuICAgICAgICAgICAgICAgICh0eXBlb2YgcGFyYW1PYmoudmFsdWUgPT09ICdzdHJpbmcnICYmIHBhcmFtT2JqLnZhbHVlPy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAvLyByZW1vdmluZyBodHRwczovLyBvciBodHRwOi8vIGZyb20gaHlwZXJsaW5rIHBhcmFtIHZhbHVlXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgKHBhcmFtT2JqLnZhbHVlPy50b1N0cmluZygpLmluY2x1ZGVzKCdodHRwczovLycpIHx8IHBhcmFtT2JqLnZhbHVlPy50b1N0cmluZygpLmluY2x1ZGVzKCdodHRwOi8vJykpICYmIFxuICAgICAgICAgICAgICAgICAgKG5ld0xpbmsuaW5jbHVkZXMoJ2h0dHBzOi8vJykgfHwgbmV3TGluay5pbmNsdWRlcygnaHR0cDovLycpKSBcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIHBhcmFtT2JqLnZhbHVlID0gcGFyYW1PYmoudmFsdWUucmVwbGFjZSgnaHR0cHM6Ly8nLCAnJykucmVwbGFjZSgnaHR0cDovLycsICcnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1OYW1lOiBzdHJpbmcgPSBwYXJhbU9iai5uYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1Gb3JtYXQ6IHN0cmluZyA9ICFwYXJhbU9iai52YWx1ZVxuICAgICAgICAgICAgICAgICAgPyAne3snICsgcGFyYW1OYW1lICsgJ319J1xuICAgICAgICAgICAgICAgICAgOiBwYXJhbU5hbWU7XG4gIFxuICAgICAgICAgICAgICAgIGlmIChuZXdMaW5rLmxvY2FsZUNvbXBhcmUocGFyYW1Gb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgICBsZXQgc2V0TGluayA9XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtRm9ybWF0ICE9PSAne3snICsgcGFyYW1Gb3JtYXQgKyAnfX0nXG4gICAgICAgICAgICAgICAgICAgICAgPyAne3snICsgcGFyYW1Gb3JtYXQgKyAnfX0nXG4gICAgICAgICAgICAgICAgICAgICAgOiBwYXJhbUZvcm1hdDtcbiAgXG4gICAgICAgICAgICAgICAgICBuZXdMaW5rID0gbmV3TGluay5yZXBsYWNlKFxuICAgICAgICAgICAgICAgICAgICBuZXcgUmVnRXhwKHNldExpbmssICdpZycpLFxuICAgICAgICAgICAgICAgICAgICAocGFyYW1PYmoudmFsdWUpPy50cmltKClcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAvLyBpZiAobmV3TGluayAmJiAhbmV3TGluay5zdGFydHNXaXRoKCdodHRwJykpXG4gICAgICAgICAgICAgICAgICAvLyB7XG4gICAgICAgICAgICAgICAgICAvLyAgICAgbmV3TGluayA9IFwiaHR0cDovL1wiICsgbmV3TGluaztcbiAgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTGFiZWxMaW5rXG4gICAgICAgICAgICAgICAgICA/IChmb3JtRmllbGQubGFiZWwubGFiZWxDb250cm9sLmh5cGVybGluay5saW5rID0gbmV3TGluaylcbiAgICAgICAgICAgICAgICAgIDogKGZvcm1GaWVsZC5oeXBlcmxpbmsubGluayA9IG5ld0xpbmspO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0U2lkZWJhckxpbmsocmVzcG9uc2U6IGFueSwgc2lkZWJhcjogSVNpZGViYXJbXSkge1xuICAgIHJlc3BvbnNlLmZvckVhY2goKHJlczogYW55KSA9PiB7XG4gICAgICBzaWRlYmFyLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgaWYgKGl0ZW0ub25DbGljayAmJiBpdGVtLmxpbmtJZCAmJiBpdGVtLmxpbmtJZCA9PT0gcmVzLmxpbmtJZCkge1xuICAgICAgICAgIGl0ZW0ub25DbGljayhyZXMudXJsKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBvcGVuRGlhbG9nSW5OZXdUYWIoY29tcG9uZW50OiBhbnksIGRhdGFQYXJhbXM6IGFueSA9IHt9LCByb3c6IGFueSA9IHt9KSB7XG4gICAgY29uc3QgZGF0YVByYW1Db3B5ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhUGFyYW1zKSk7XG4gICAgbGV0IHJvdXRlOiBhbnkgPSB7fVxuICAgIHRoaXMucm91dGVyLmNvbmZpZy5mb3JFYWNoKChwYXJlbnRSb3V0ZSkgPT4ge1xuICAgICAgaWYgKHBhcmVudFJvdXRlLmNvbXBvbmVudCA9PT0gY29tcG9uZW50KSB7XG4gICAgICAgIHJvdXRlID0gcGFyZW50Um91dGU7XG4gICAgICB9IGVsc2UgaWYgKHBhcmVudFJvdXRlLmNoaWxkcmVuKSB7XG4gICAgICAgIHBhcmVudFJvdXRlPy5jaGlsZHJlbj8uZm9yRWFjaCgoY2hpbGRSb3V0ZSkgPT4ge1xuICAgICAgICAgIGlmIChjaGlsZFJvdXRlLmNvbXBvbmVudCA9PT0gY29tcG9uZW50KSB7ICAgICAgICAgICAgXG4gICAgICAgICAgICByb3V0ZSA9IGNoaWxkUm91dGU7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKE9iamVjdC5rZXlzKHJvdyk/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCByb3drZXkgPSBPYmplY3Qua2V5cyhyb3cpO1xuICAgICAgbGV0IHBhcmFtS2V5ID0gT2JqZWN0LmtleXMoZGF0YVByYW1Db3B5KTtcbiAgICAgIHBhcmFtS2V5LmZvckVhY2goKHBhcmFtKSA9PiB7XG4gICAgICAgIGlmIChwYXJhbSAmJiBkYXRhUHJhbUNvcHlbcGFyYW1dICYmIGRhdGFQcmFtQ29weVtwYXJhbV0/LmluY2x1ZGVzKCd7JykpIHtcbiAgICAgICAgICBjb25zdCBwYXJhbVZhbHVlID0gZGF0YVByYW1Db3B5W3BhcmFtXS5yZXBsYWNlKCd7JywgJycpPy5yZXBsYWNlKCd9JywgJycpO1xuICAgICAgICAgIGNvbnN0IG1hdGNoS2V5ID0gcm93a2V5LmZpbmQoKHJvdykgPT4gcm93Py50b0xvd2VyQ2FzZSgpID09PSBwYXJhbVZhbHVlPy50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICBpZiAobWF0Y2hLZXkpIHtcbiAgICAgICAgICAgIGRhdGFQcmFtQ29weVtwYXJhbV0gPSByb3dbbWF0Y2hLZXldO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBtYXRjaFBhcmFtS2V5ID0gcm93a2V5LmZpbmQoKHJvdykgPT4gcm93Py50b0xvd2VyQ2FzZSgpID09PSBwYXJhbT8udG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgaWYgKG1hdGNoUGFyYW1LZXkpIHtcbiAgICAgICAgICAgIGRhdGFQcmFtQ29weVtwYXJhbV0gPSByb3dbbWF0Y2hQYXJhbUtleV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAocm91dGUpIHtcbiAgICAgIGxldCBwYXJhbXMgPSB7fTtcbiAgICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKChwYXJhbTogYW55KSA9PiB7XG4gICAgICAgIGlmIChwYXJhbSAmJiBPYmplY3Qua2V5cyhwYXJhbSk/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBwYXJhbXMgPSBwYXJhbVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZXIuc2VyaWFsaXplVXJsKHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoW3JvdXRlPy5wYXRoXSwgeyBxdWVyeVBhcmFtczogT2JqZWN0LmtleXMoZGF0YVByYW1Db3B5KT8ubGVuZ3RoID4gMCA/IGRhdGFQcmFtQ29weSA6IHBhcmFtcyB9KSk7XG4gICAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcbiAgICB9XG4gIH1cblxuIG5hdmlnYXRlV2l0aFVzZXJQcmVmZXJlbmNlKHBhZ2U6IHN0cmluZywgcGFyYW1zPzogYW55LCBvdmVycmlkZVVzZXJTZXR0aW5nOiBib29sZWFuID0gZmFsc2UsIHRhcmdldD86IEVHcmlkbGluaykge1xuICAgIGxldCBmaW5hbFRhcmdldCA9IEVHcmlkbGluay5CTEFOSztcbiAgICBpZiAoIW92ZXJyaWRlVXNlclNldHRpbmcpIHtcbiAgICAgIGNvbnN0IHVzZXJTZXR0aW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJVc2VyU2V0dGluZ1wiKTtcbiAgICAgIGlmICh1c2VyU2V0dGluZykge1xuICAgICAgICBjb25zdCBwYXJzZWRTZXR0aW5nID0gSlNPTi5wYXJzZSh1c2VyU2V0dGluZyk7XG4gICAgICAgIGZpbmFsVGFyZ2V0ID0gcGFyc2VkU2V0dGluZz8udmFsdWUgPT09IFwib3BlbkxpbmtJbkN1cnJlbnRUYWJcIiA/IEVHcmlkbGluay5TRUxGIDogRUdyaWRsaW5rLkJMQU5LO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGFyZ2V0KSB7XG4gICAgICBmaW5hbFRhcmdldCA9IHRhcmdldDtcbiAgICB9XG4gIFxuICAgIGNvbnN0IHVybCA9IHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoW3BhZ2VdLCB7IHF1ZXJ5UGFyYW1zOiBwYXJhbXM/LnF1ZXJ5UGFyYW1zIH0pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgYW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGFuY2hvci5ocmVmID0gdXJsO1xuICAgIGFuY2hvci50YXJnZXQgPSBmaW5hbFRhcmdldDtcbiAgICBhbmNob3IuY2xpY2soKTtcbiAgfVxuXG59XG4iXX0=