@trudb/tru-common-lib 0.1.153 → 0.1.154

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.
@@ -85,7 +85,7 @@ export class TruEntityAccessor {
85
85
  query = setupQuery(query);
86
86
  return this._entityManager.executeQueryLocally(query);
87
87
  };
88
- searchCacheOnlyByRefSynchronously = (entity, ref = undefined, expands = null) => {
88
+ searchByRefCacheOnlySynchronously = (entity, ref = undefined, expands = null) => {
89
89
  let query = this._breezeContext.createQuery(this.getQueryServiceName(entity));
90
90
  if (ref)
91
91
  query = query.where(entity.name + 'Ref', '==', ref);
@@ -320,4 +320,4 @@ export class TruEntityAccessor {
320
320
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruEntityAccessor, decorators: [{
321
321
  type: Injectable
322
322
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.TruAppEnvironment }, { type: i3.TruUiNotification }, { type: i4.TruUser }] });
323
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWVudGl0eS1hY2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvc2VydmljZXMvdHJ1LWVudGl0eS1hY2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBc0MsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS2xGLE9BQU8sS0FBSyxDQUFDLE1BQU0sWUFBWSxDQUFDO0FBRWhDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBT25ELE1BQU0sT0FBTyxpQkFBaUI7SUFPbEI7SUFDQTtJQUNBO0lBQ0E7SUFURixjQUFjLENBQW9CO0lBQ2xDLGNBQWMsQ0FBaUI7SUFDL0IsZUFBZSxHQUFXLENBQUMsQ0FBQztJQUM1QixRQUFRLENBQVM7SUFFekIsWUFDVSxJQUFnQixFQUNoQixjQUFpQyxFQUNqQyxjQUFpQyxFQUNqQyxJQUFhO1FBSGIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLFNBQUksR0FBSixJQUFJLENBQVM7UUFDckIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQztRQUMxRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxXQUEyQjtRQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7UUFDaEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDO0lBQ2xELENBQUM7SUFFTyxtQkFB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LENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RyxJQUFJLENBQUMsWUFBWTtZQUNmLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLElBQUksUUFBUSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0QyxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDLENBQUE7dUdBellVLGlCQUFpQjsyR0FBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEVudGl0eSwgRW50aXR5TWFuYWdlciwgRW50aXR5UXVlcnksIEZldGNoU3RyYXRlZ3kgfSBmcm9tIFwiYnJlZXplLWNsaWVudFwiO1xyXG5pbXBvcnQgeyBUcnVFbnRpdHlCYXNlIH0gZnJvbSAnLi4vYmFzZS1jbGFzc2VzL3RydS1lbnRpdHktYmFzZSdcclxuaW1wb3J0IHsgVHJ1VWlOb3RpZmljYXRpb24gfSBmcm9tIFwiLi90cnUtdWktbm90aWZpY2F0aW9uXCI7XHJcbmltcG9ydCB7IFRydURhdGFDb250ZXh0IH0gZnJvbSBcIi4vdHJ1LWRhdGEtY29udGV4dFwiO1xyXG5pbXBvcnQgeyBUcnVCcmVlemVDb250ZXh0IH0gZnJvbSBcIi4vdHJ1LWJyZWV6ZS1jb250ZXh0LWZhY3RvcnlcIjtcclxuaW1wb3J0ICogYXMgXyBmcm9tIFwidW5kZXJzY29yZVwiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IGRlZmVyLCBmcm9tLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUcnVBcHBFbnZpcm9ubWVudCB9IGZyb20gXCIuL3RydS1hcHAtZW52aXJvbm1lbnRcIjtcclxuaW1wb3J0IHsgVHJ1Q2hvaWNlIH0gZnJvbSBcIi4uL2NsYXNzZXMvdHJ1LWNob2ljZVwiO1xyXG5pbXBvcnQgeyBUcnVOYW1lVmFsdWUgfSBmcm9tIFwiLi4vY2xhc3Nlcy90cnUtbmFtZS12YWx1ZVwiO1xyXG5pbXBvcnQgeyBUcnVVc2VyIH0gZnJvbSBcIi4vdHJ1LXVzZXJcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFRydUVudGl0eUFjY2Vzc29yIHtcclxuICBwcml2YXRlIF9icmVlemVDb250ZXh0ITogVHJ1QnJlZXplQ29udGV4dDtcclxuICBwcml2YXRlIF9lbnRpdHlNYW5hZ2VyITogRW50aXR5TWFuYWdlcjtcclxuICBwcml2YXRlIF9tYXhSZWNvcmRDb3VudDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIF9iYXNlVXJsOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBhcHBFbnZpcm9ubWVudDogVHJ1QXBwRW52aXJvbm1lbnQsXHJcbiAgICBwcml2YXRlIHVpTm90aWZpY2F0aW9uOiBUcnVVaU5vdGlmaWNhdGlvbixcclxuICAgIHByaXZhdGUgdXNlcjogVHJ1VXNlcikge1xyXG4gICAgdGhpcy5fbWF4UmVjb3JkQ291bnQgPSB0aGlzLmFwcEVudmlyb25tZW50Lm1heFJlY29yZENvdW50O1xyXG4gICAgdGhpcy5fYmFzZVVybCA9IHRoaXMuYXBwRW52aXJvbm1lbnQuYXBwVXJpO1xyXG4gIH1cclxuXHJcbiAgc2V0IGNvbnRleHQoZGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0KSB7XHJcbiAgICB0aGlzLl9icmVlemVDb250ZXh0ID0gZGF0YUNvbnRleHQuYnJlZXplQ29udGV4dDtcclxuICAgIHRoaXMuX2VudGl0eU1hbmFnZXIgPSBkYXRhQ29udGV4dC5lbnRpdHlNYW5hZ2VyO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRRdWVyeVNlcnZpY2VOYW1lID0gKGVudGl0eTogdHlwZW9mIFRydUVudGl0eUJhc2UpID0+IHtcclxuICAgIHJldHVybiAnUXVlcnknICsgZW50aXR5Lm5hbWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHdhcm5JZk1heFJlY29yZHMgPSAoZW50aXRpZXM6IGFueVtdLCBlbnRpdHlOYW1lOiBzdHJpbmcpID0+IHtcclxuICAgIGlmIChlbnRpdGllcy5sZW5ndGggPj0gdGhpcy5hcHBFbnZpcm9ubWVudC5tYXhSZWNvcmRDb3VudClcclxuICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi53YXJuaW5nKCdbJyArIGVudGl0eU5hbWUgKyAnXSBoYXMgbW9yZSByZWNvcmRzIGF2YWlsYWJsZSB0aGFuIHN1cHBvcnRlZCcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXRRdWVyeUNob2ljZXMgPSAocXVlcnk6IEVudGl0eVF1ZXJ5LCBlbnRpdGllczogQXJyYXk8RW50aXR5PiwgcEtleU5hbWU6IHN0cmluZywgaGlkOiBzdHJpbmcgfCBudWxsID0gbnVsbCk6IEFycmF5PFRydUNob2ljZT4gPT4ge1xyXG4gICAgaWYgKHF1ZXJ5ICYmIHF1ZXJ5Lm9yZGVyQnlDbGF1c2UpXHJcbiAgICAgIHJldHVybiBfLm1hcChlbnRpdGllcywgKGVudGl0eTogYW55KSA9PiB7IHJldHVybiB7IHZhbHVlOiB7ICQ6IGVudGl0eVtwS2V5TmFtZV0gfSwgbGFiZWw6IGhpZCAhPT0gbnVsbCA/IGhpZCA6IGVudGl0eS5ISUQgfTsgfSk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBfLm1hcChlbnRpdGllcywgKGVudGl0eTogYW55KSA9PiB7IHJldHVybiB7IHZhbHVlOiB7ICQ6IGVudGl0eVtwS2V5TmFtZV0gfSwgbGFiZWw6IGhpZCAhPT0gbnVsbCA/IGhpZCA6IGVudGl0eS5ISUQgfTsgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdE5hbWVWYWx1ZXMgPSAocXVlcnk6IEVudGl0eVF1ZXJ5LCBlbnRpdGllczogQXJyYXk8RW50aXR5PiwgcEtleU5hbWU6IHN0cmluZyk6IEFycmF5PFRydU5hbWVWYWx1ZT4gPT4ge1xyXG4gICAgICBpZiAocXVlcnkgJiYgcXVlcnkub3JkZXJCeUNsYXVzZSlcclxuICAgICAgICByZXR1cm4gXy5tYXAoZW50aXRpZXMsIChlbnRpdHk6IGFueSkgPT4geyByZXR1cm4geyBuYW1lOiBlbnRpdHkuTmFtZSwgdmFsdWU6IHsgJDogZW50aXR5LlZhbHVlIH0sIGVudGl0eTogZW50aXR5IH07IH0pO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIF8ubWFwKGVudGl0aWVzLCAoZW50aXR5OiBhbnkpID0+IHsgcmV0dXJuIHsgbmFtZTogZW50aXR5Lk5hbWUsIHZhbHVlOiB7ICQ6IGVudGl0eS5WYWx1ZSB9LCBlbnRpdHk6IGVudGl0eSB9OyB9KTtcclxuICB9XHJcblxyXG4gIGFkZCA9IChlbnRpdHk6IHR5cGVvZiBUcnVFbnRpdHlCYXNlLCBjb250ZXh0RmlsdGVyczogYW55ID0gbnVsbCkgPT4ge1xyXG4gICAgbGV0IG5ld0VudGl0eSA9IHRoaXMuX2VudGl0eU1hbmFnZXIuY3JlYXRlRW50aXR5KGVudGl0eS5wcm90b3R5cGUuZW50aXR5VHlwZSk7XHJcbiAgICByZXR1cm4gbmV3RW50aXR5O1xyXG4gIH07XHJcblxyXG4gIHNlYXJjaCA9IChlbnRpdHk6IHR5cGVvZiBUcnVFbnRpdHlCYXNlLFxyXG4gICAgc2V0dXBRdWVyeTogYW55IHwgbnVsbCA9IG51bGwsXHJcbiAgICBleHBhbmRzOiBbXSB8IG51bGwsXHJcbiAgICBnbG9iYWw6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEVudGl0eVtdPiA9PiB7XHJcblxyXG4gICAgdmFyIHF1ZXJ5OiBhbnk7XHJcbiAgICBpZiAoZXhwYW5kcyAmJiBleHBhbmRzLmxlbmd0aCkge1xyXG4gICAgICBpZiAoZ2xvYmFsKVxyXG4gICAgICAgIHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSh0aGlzLmdldFF1ZXJ5U2VydmljZU5hbWUoZW50aXR5KSkuZXhwYW5kKGV4cGFuZHMuam9pbignLCAnKSk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBxdWVyeSA9IHRoaXMuX2JyZWV6ZUNvbnRleHQuY3JlYXRlUXVlcnkodGhpcy5nZXRRdWVyeVNlcnZpY2VOYW1lKGVudGl0eSkpLmV4cGFuZChleHBhbmRzLmpvaW4oJywgJykpLnRvcCh0aGlzLmFwcEVudmlyb25tZW50Lm1heFJlY29yZENvdW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChnbG9iYWwpXHJcbiAgICAgICAgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KHRoaXMuZ2V0UXVlcnlTZXJ2aWNlTmFtZShlbnRpdHkpKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSh0aGlzLmdldFF1ZXJ5U2VydmljZU5hbWUoZW50aXR5KSkudG9wKHRoaXMuYXBwRW52aXJvbm1lbnQubWF4UmVjb3JkQ291bnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzZXR1cFF1ZXJ5ICE9IG51bGwpXHJcbiAgICAgIHF1ZXJ5ID0gc2V0dXBRdWVyeShxdWVyeSk7XHJcblxyXG4gICAgcmV0dXJuIGRlZmVyKCgpID0+IGZyb20odGhpcy5fZW50aXR5TWFuYWdlci5leGVjdXRlUXVlcnkocXVlcnkpLnRoZW4oKHF1ZXJ5RGF0YTogYW55KSA9PiB7XHJcbiAgICAgIGlmICghZ2xvYmFsKVxyXG4gICAgICAgIHRoaXMud2FybklmTWF4UmVjb3JkcyhxdWVyeURhdGEucmVzdWx0cywgZW50aXR5Lm5hbWUpO1xyXG4gICAgICByZXR1cm4gcXVlcnlEYXRhLnJlc3VsdHM7XHJcbiAgICB9KSkpO1xyXG4gIH07XHJcblxyXG4gIHNlYXJjaENhY2hlT25seSA9IChcclxuICAgIGVudGl0eTogdHlwZW9mIFRydUVudGl0eUJhc2UsXHJcbiAgICBzZXR1cFF1ZXJ5OiBhbnkgfCBudWxsID0gbnVsbCxcclxuICAgIGV4cGFuZHM6IFtdIHwgbnVsbCA9IG51bGwpOiBPYnNlcnZhYmxlPEVudGl0eVtdPiA9PiB7XHJcbiAgICB2YXIgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KHRoaXMuZ2V0UXVlcnlTZXJ2aWNlTmFtZShlbnRpdHkpKTtcclxuICAgIGlmIChzZXR1cFF1ZXJ5KVxyXG4gICAgICBxdWVyeSA9IHNldHVwUXVlcnkocXVlcnkpO1xyXG4gICAgcmV0dXJuIG9mKHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5TG9jYWxseShxdWVyeSkpO1xyXG4gIH07XHJcblxyXG4gIHNlYXJjaENhY2hlT25seVN5bmNocm9ub3VzbHkgPSAoXHJcbiAgICBlbnRpdHk6IHR5cGVvZiBUcnVFbnRpdHlCYXNlLFxyXG4gICAgc2V0dXBRdWVyeTogYW55IHwgbnVsbCA9IG51bGwsXHJcbiAgICBleHBhbmRzOiBbXSB8IG51bGwgPSBudWxsKTogQXJyYXk8YW55PiA9PiB7XHJcbiAgICB2YXIgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KHRoaXMuZ2V0UXVlcnlTZXJ2aWNlTmFtZShlbnRpdHkpKTtcclxuICAgIGlmIChzZXR1cFF1ZXJ5KVxyXG4gICAgICBxdWVyeSA9IHNldHVwUXVlcnkocXVlcnkpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5TG9jYWxseShxdWVyeSk7XHJcbiAgfTtcclxuXHJcbiAgc2VhcmNoQ2FjaGVPbmx5QnlSZWZTeW5jaHJvbm91c2x5ID0gKFxyXG4gICAgZW50aXR5OiB0eXBlb2YgVHJ1RW50aXR5QmFzZSxcclxuICAgIHJlZjogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcclxuICAgIGV4cGFuZHM6IFtdIHwgbnVsbCA9IG51bGwpOiBBcnJheTxhbnk+ID0+IHtcclxuICAgIGxldCBxdWVyeSA9IHRoaXMuX2JyZWV6ZUNvbnRleHQuY3JlYXRlUXVlcnkodGhpcy5nZXRRdWVyeVNlcnZpY2VOYW1lKGVudGl0eSkpO1xyXG4gICAgaWYgKHJlZilcclxuICAgICAgcXVlcnkgPSBxdWVyeS53aGVyZShlbnRpdHkubmFtZSArICdSZWYnLCAnPT0nLCByZWYpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5TG9jYWxseShxdWVyeSk7XHJcbiAgfTtcclxuXHJcbiAgc2VhcmNoUXVlcnlDaG9pY2VzID0gKFxyXG4gICAgZW50aXR5OiB0eXBlb2YgVHJ1RW50aXR5QmFzZSxcclxuICAgIHNldHVwUXVlcnk6IGFueSB8IG51bGwgPSBudWxsLFxyXG4gICAgaGlkOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcclxuICAgIGdvVG9TZXJ2ZXI6IGJvb2xlYW4gPSBmYWxzZSxcclxuICAgIHJlZjogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCk6IE9ic2VydmFibGU8VHJ1Q2hvaWNlW10+ID0+IHtcclxuICAgIHR5cGUgT2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIGVudGl0eTtcclxuICAgIGNvbnN0IHBrZXlOYW1lID0gZW50aXR5Lm5hbWUgKyAnUmVmJyBhcyBPYmplY3RLZXk7XHJcbiAgICBsZXQgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KHRoaXMuZ2V0UXVlcnlTZXJ2aWNlTmFtZShlbnRpdHkpKTtcclxuICAgIGlmIChzZXR1cFF1ZXJ5KVxyXG4gICAgICBxdWVyeSA9IHNldHVwUXVlcnkocXVlcnkpID8/IHF1ZXJ5O1xyXG4gICAgaWYgKHJlZilcclxuICAgICAgcXVlcnkgPSBxdWVyeS53aGVyZShlbnRpdHkubmFtZSArICdSZWYnLCAnPT0nLCByZWYpO1xyXG4gICAgcXVlcnkgPSBxdWVyeS50b3AodGhpcy5hcHBFbnZpcm9ubWVudC5tYXhSZWNvcmRDb3VudCk7XHJcbiAgICBpZiAoZ29Ub1NlcnZlcikge1xyXG4gICAgICByZXR1cm4gZGVmZXIoKCkgPT4gZnJvbSh0aGlzLl9lbnRpdHlNYW5hZ2VyLmV4ZWN1dGVRdWVyeShxdWVyeSkudGhlbigocXVlcnlEYXRhOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRRdWVyeUNob2ljZXMocXVlcnksIHF1ZXJ5RGF0YS5yZXN1bHRzLCBwa2V5TmFtZSwgbnVsbCk7XHJcbiAgICAgIH0pKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb2YodGhpcy5mb3JtYXRRdWVyeUNob2ljZXMocXVlcnksIHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5TG9jYWxseShxdWVyeSksIHBrZXlOYW1lLCBudWxsKSk7XHJcbiAgfTtcclxuXHJcbiAgc2VhcmNoTmFtZVZhbHVlc0NhY2hlT25seSA9IChcclxuICAgIGVudGl0eTogdHlwZW9mIFRydUVudGl0eUJhc2UsXHJcbiAgICBzZXR1cFF1ZXJ5OiBhbnkgfCBudWxsID0gbnVsbCxcclxuICAgIHJlZjogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCk6IE9ic2VydmFibGU8VHJ1TmFtZVZhbHVlW10+ID0+IHtcclxuICAgIHR5cGUgT2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIGVudGl0eTtcclxuICAgIGNvbnN0IHBrZXlOYW1lID0gZW50aXR5Lm5hbWUgKyAnUmVmJyBhcyBPYmplY3RLZXk7XHJcbiAgICBsZXQgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KHRoaXMuZ2V0UXVlcnlTZXJ2aWNlTmFtZShlbnRpdHkpKTtcclxuICAgIGlmIChzZXR1cFF1ZXJ5KVxyXG4gICAgICAgIHF1ZXJ5ID0gc2V0dXBRdWVyeShxdWVyeSkgPz8gcXVlcnk7XHJcbiAgICBpZiAocmVmKVxyXG4gICAgICAgIHF1ZXJ5ID0gcXVlcnkud2hlcmUoZW50aXR5Lm5hbWUgKyAnUmVmJywgJz09JywgcmVmKTtcclxuICAgIHJldHVybiBvZih0aGlzLmZvcm1hdE5hbWVWYWx1ZXMocXVlcnksIHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5TG9jYWxseShxdWVyeSksIHBrZXlOYW1lKSk7XHJcbiAgfTtcclxuXHJcbiAgc2VhcmNoQnlSZWYgPSAoXHJcbiAgICBlbnRpdHk6IHR5cGVvZiBUcnVFbnRpdHlCYXNlLFxyXG4gICAgcmVmOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiB7XHJcbiAgICB0eXBlIE9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBlbnRpdHk7XHJcbiAgICBjb25zdCBwa2V5TmFtZSA9IGVudGl0eS5uYW1lICsgJ1JlZicgYXMgT2JqZWN0S2V5O1xyXG4gICAgdmFyIHF1ZXJ5T3B0aW9ucyA9IHRoaXMuX2VudGl0eU1hbmFnZXIucXVlcnlPcHRpb25zLnVzaW5nKHtcclxuICAgICAgZmV0Y2hTdHJhdGVneTogRmV0Y2hTdHJhdGVneS5Gcm9tU2VydmVyXHJcbiAgICB9KTtcclxuICAgIHZhciBxdWVyeSA9IHRoaXMuX2JyZWV6ZUNvbnRleHQuY3JlYXRlUXVlcnkodGhpcy5nZXRRdWVyeVNlcnZpY2VOYW1lKGVudGl0eSkpLndoZXJlKGVudGl0eS5uYW1lICsgJ1JlZicsICc9PScsIHJlZikudXNpbmcocXVlcnlPcHRpb25zKTtcclxuICAgIHJldHVybiBkZWZlcigoKSA9PiBmcm9tKHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5KHF1ZXJ5KS50aGVuKChxdWVyeURhdGE6IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5mb3JtYXRRdWVyeUNob2ljZXMocXVlcnksIHF1ZXJ5RGF0YS5yZXN1bHRzLCBwa2V5TmFtZSwgbnVsbCk7XHJcbiAgICB9KSkpO1xyXG4gIH07XHJcblxyXG4gIHNlYXJjaEJ5UmVmUHJlZmVyZWRDYWNoZSA9IChcclxuICAgIGVudGl0eTogdHlwZW9mIFRydUVudGl0eUJhc2UsXHJcbiAgICByZWY6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpID0+IHtcclxuICAgIGxldCBjYWNoZWRFbnRpdHkgPSB0aGlzLnNlYXJjaEJ5UmVmQ2FjaGVPbmx5KGVudGl0eSwgcmVmKTtcclxuICAgIGlmIChjYWNoZWRFbnRpdHkpIHtcclxuICAgICAgdmFyIHF1ZXJ5T3B0aW9ucyA9IHRoaXMuX2VudGl0eU1hbmFnZXIucXVlcnlPcHRpb25zLnVzaW5nKHtcclxuICAgICAgICBmZXRjaFN0cmF0ZWd5OiBGZXRjaFN0cmF0ZWd5LkZyb21Mb2NhbENhY2hlXHJcbiAgICAgIH0pO1xyXG4gICAgICB2YXIgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KHRoaXMuZ2V0UXVlcnlTZXJ2aWNlTmFtZShlbnRpdHkpKS53aGVyZShlbnRpdHkubmFtZSArICdSZWYnLCAnPT0nLCByZWYpLnVzaW5nKHF1ZXJ5T3B0aW9ucyk7XHJcbiAgICAgIHJldHVybiBkZWZlcigoKSA9PiBmcm9tKHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5KHF1ZXJ5KS50aGVuKChxdWVyeURhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBxdWVyeURhdGEucmVzdWx0c1swXTtcclxuICAgICAgfSkpKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB2YXIgcXVlcnlPcHRpb25zID0gdGhpcy5fZW50aXR5TWFuYWdlci5xdWVyeU9wdGlvbnMudXNpbmcoe1xyXG4gICAgICAgIGZldGNoU3RyYXRlZ3k6IEZldGNoU3RyYXRlZ3kuRnJvbVNlcnZlclxyXG4gICAgICB9KTtcclxuICAgICAgdmFyIHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSh0aGlzLmdldFF1ZXJ5U2VydmljZU5hbWUoZW50aXR5KSkud2hlcmUoZW50aXR5Lm5hbWUgKyAnUmVmJywgJz09JywgcmVmKS51c2luZyhxdWVyeU9wdGlvbnMpO1xyXG4gICAgICByZXR1cm4gZGVmZXIoKCkgPT4gZnJvbSh0aGlzLl9lbnRpdHlNYW5hZ2VyLmV4ZWN1dGVRdWVyeShxdWVyeSkudGhlbigocXVlcnlEYXRhOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gcXVlcnlEYXRhLnJlc3VsdHNbMF07XHJcbiAgICAgIH0pKSk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgc2VhcmNoQnlSZWZDYWNoZU9ubHkgPSAoXHJcbiAgICBlbnRpdHk6IHR5cGVvZiBUcnVFbnRpdHlCYXNlLFxyXG4gICAgcmVmOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLFxyXG4gICAgaW5jbHVkZURlbGV0ZWQ6IGJvb2xlYW4gPSBmYWxzZSkgPT4ge1xyXG5cclxuICAgIGlmICghaW5jbHVkZURlbGV0ZWQpXHJcbiAgICAgIGluY2x1ZGVEZWxldGVkID0gZmFsc2U7XHJcbiAgICB2YXIgcXVlcnlPcHRpb25zID0gdGhpcy5fZW50aXR5TWFuYWdlci5xdWVyeU9wdGlvbnMudXNpbmcoe1xyXG4gICAgICBpbmNsdWRlRGVsZXRlZDogaW5jbHVkZURlbGV0ZWQsXHJcbiAgICAgIGZldGNoU3RyYXRlZ3k6IEZldGNoU3RyYXRlZ3kuRnJvbUxvY2FsQ2FjaGVcclxuICAgIH0pO1xyXG4gICAgdmFyIHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSh0aGlzLmdldFF1ZXJ5U2VydmljZU5hbWUoZW50aXR5KSkud2hlcmUoZW50aXR5Lm5hbWUgKyAnUmVmJywgJz09JywgcmVmKS51c2luZyhxdWVyeU9wdGlvbnMpO1xyXG4gICAgdmFyIHJlc3VsdCA9IHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5TG9jYWxseShxdWVyeSlbMF07XHJcbiAgICBpZiAocmVzdWx0KVxyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfTtcclxuXHJcbiAgc2VhcmNoQnlSZWZBcnJheUNhY2hlT25seSA9IChcclxuICAgIGVudGl0eTogdHlwZW9mIFRydUVudGl0eUJhc2UsXHJcbiAgICBzZXR1cFF1ZXJ5OiBhbnkgfCBudWxsID0gbnVsbCxcclxuICAgIHJlZnM6IEFycmF5PG51bWJlcj4sXHJcbiAgICBpbmNsdWRlRGVsZXRlZDogYm9vbGVhbiA9IGZhbHNlKSA9PiB7XHJcbiAgXHJcbiAgICBpZiAoIWluY2x1ZGVEZWxldGVkKVxyXG4gICAgICBpbmNsdWRlRGVsZXRlZCA9IGZhbHNlO1xyXG4gICAgdmFyIHF1ZXJ5T3B0aW9ucyA9IHRoaXMuX2VudGl0eU1hbmFnZXIucXVlcnlPcHRpb25zLnVzaW5nKHtcclxuICAgICAgaW5jbHVkZURlbGV0ZWQ6IGluY2x1ZGVEZWxldGVkLFxyXG4gICAgICBmZXRjaFN0cmF0ZWd5OiBGZXRjaFN0cmF0ZWd5LkZyb21Mb2NhbENhY2hlXHJcbiAgICB9KTtcclxuXHJcbiAgICB2YXIgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KHRoaXMuZ2V0UXVlcnlTZXJ2aWNlTmFtZShlbnRpdHkpKS51c2luZyhxdWVyeU9wdGlvbnMpO1xyXG5cclxuICAgIGlmIChzZXR1cFF1ZXJ5KVxyXG4gICAgICBxdWVyeSA9IHNldHVwUXVlcnkocXVlcnkpO1xyXG4gICAgaWYgKHF1ZXJ5ID09PSBudWxsKS8vc2V0dXBRdWVyeSgpIHJldHVybmVkIG51bGwgdG8gc2VsZWN0IG5vIHJvd3NcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgaWYgKHJlZnMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0eXBlIE9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBlbnRpdHk7XHJcbiAgICAgIGNvbnN0IHBrZXlOYW1lID0gZW50aXR5Lm5hbWUgKyAnUmVmJyBhcyBPYmplY3RLZXk7XHJcbiAgICAgIHZhciBwcmVkaWNhdGUgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVByZWRpY2F0ZShwa2V5TmFtZSwgJz09JywgcmVmc1swXSk7XHJcbiAgICAgIF8ucmVzdChyZWZzLCAxKS5mb3JFYWNoKGZ1bmN0aW9uIChyZWYpIHtcclxuICAgICAgICBwcmVkaWNhdGUgPSBwcmVkaWNhdGUub3IocGtleU5hbWUsICc9PScsIHJlZik7XHJcbiAgICAgIH0pO1xyXG4gICAgICBxdWVyeSA9IHF1ZXJ5LndoZXJlKHByZWRpY2F0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIHJlc3VsdHMgPSB0aGlzLl9lbnRpdHlNYW5hZ2VyLmV4ZWN1dGVRdWVyeUxvY2FsbHkocXVlcnkpO1xyXG4gICAgaWYgKHJlc3VsdHMgJiYgcmVzdWx0cy5sZW5ndGgpXHJcbiAgICAgIHJldHVybiByZXN1bHRzO1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBzZWFyY2hCeVJlZldpdGhRdWVyeSA9IChcclxuICAgIGVudGl0eTogdHlwZW9mIFRydUVudGl0eUJhc2UsXHJcbiAgICBzZXR1cFF1ZXJ5OiBhbnksXHJcbiAgICByZWY6IG51bWJlcik6IE9ic2VydmFibGU8RW50aXR5W10+ID0+IHtcclxuICAgIHZhciBxdWVyeSA9IHRoaXMuX2JyZWV6ZUNvbnRleHQuY3JlYXRlUXVlcnkodGhpcy5nZXRRdWVyeVNlcnZpY2VOYW1lKGVudGl0eSkpO1xyXG4gICAgcXVlcnkgPSBzZXR1cFF1ZXJ5KHF1ZXJ5KTtcclxuXHJcbiAgICB0eXBlIE9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBlbnRpdHk7XHJcbiAgICBjb25zdCBwa2V5TmFtZSA9IGVudGl0eS5uYW1lICsgJ1JlZicgYXMgT2JqZWN0S2V5O1xyXG4gICAgdmFyIHByZWRpY2F0ZSA9IHRoaXMuX2JyZWV6ZUNvbnRleHQuY3JlYXRlUHJlZGljYXRlKHBrZXlOYW1lLCAnPT0nLCByZWYpO1xyXG4gICAgcXVlcnkgPSBxdWVyeS53aGVyZShwcmVkaWNhdGUpO1xyXG5cclxuICAgIHZhciBsb2NhbFJlc3VsdHMgPSB0aGlzLl9lbnRpdHlNYW5hZ2VyLmV4ZWN1dGVRdWVyeUxvY2FsbHkocXVlcnkpO1xyXG5cclxuICAgIGlmIChsb2NhbFJlc3VsdHMubGVuZ3RoKVxyXG4gICAgICByZXR1cm4gb2YobG9jYWxSZXN1bHRzKTtcclxuXHJcbiAgICByZXR1cm4gZGVmZXIoKCkgPT4gZnJvbSh0aGlzLl9lbnRpdHlNYW5hZ2VyLmV4ZWN1dGVRdWVyeShxdWVyeSkudGhlbigocXVlcnlEYXRhKSA9PiB7XHJcbiAgICAgIHJldHVybiBxdWVyeURhdGEucmVzdWx0cztcclxuICAgIH0pKSk7XHJcbiAgfTtcclxuXHJcbiAgc2VhcmNoVXNlckJ5UmVmQ2FjaGVPbmx5ID0gKFxyXG4gICAgcmVmOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLFxyXG4gICAgaW5jbHVkZURlbGV0ZWQ6IGJvb2xlYW4gPSBmYWxzZSkgPT4ge1xyXG5cclxuICAgIGlmICghaW5jbHVkZURlbGV0ZWQpXHJcbiAgICAgIGluY2x1ZGVEZWxldGVkID0gZmFsc2U7XHJcbiAgICB2YXIgcXVlcnlPcHRpb25zID0gdGhpcy5fZW50aXR5TWFuYWdlci5xdWVyeU9wdGlvbnMudXNpbmcoe1xyXG4gICAgICBpbmNsdWRlRGVsZXRlZDogaW5jbHVkZURlbGV0ZWQsXHJcbiAgICAgIGZldGNoU3RyYXRlZ3k6IEZldGNoU3RyYXRlZ3kuRnJvbUxvY2FsQ2FjaGVcclxuICAgIH0pO1xyXG4gICAgdmFyIHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSgnUXVlcnlUcnVEYlVzZXInKS53aGVyZSgnVHJ1RGJVc2VyUmVmJywgJz09JywgcmVmKS51c2luZyhxdWVyeU9wdGlvbnMpO1xyXG4gICAgdmFyIHJlc3VsdCA9IHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5TG9jYWxseShxdWVyeSlbMF07XHJcbiAgICBpZiAocmVzdWx0KVxyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfTtcclxuXHJcbiAgZXhwb3J0ID0gKFxyXG4gICAgZW50aXR5OiB0eXBlb2YgVHJ1RW50aXR5QmFzZSxcclxuICAgIGdyaWRTcGVjOiBzdHJpbmcsXHJcbiAgICBzZXR1cFF1ZXJ5OiBhbnkgfCBudWxsLFxyXG4gICAgZW50aXR5UmVmczogc3RyaW5nIHwgbnVsbCxcclxuICAgIG9wdGlvbnM6IGFueSkgPT4ge1xyXG5cclxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xyXG4gICAgdmFyIGFyZ3MgPSB7XHJcbiAgICAgIHJ1bkFzeW5jOiBmYWxzZSxcclxuICAgICAgdXNlTmFtZXM6IGZhbHNlLFxyXG4gICAgICB1c2VFbXB0eVRhZ3M6IGZhbHNlLFxyXG4gICAgICBlbnRpdHlSZWZzOiBudWxsIGFzIHN0cmluZyB8IG51bGwsXHJcbiAgICAgIGVudGl0eVR5cGVOYW1lOiBlbnRpdHkubmFtZSxcclxuICAgICAgZ3JpZFNwZWM6IGdyaWRTcGVjXHJcbiAgICB9O1xyXG4gICAgaWYgKG9wdGlvbnMuYXN5bmMpXHJcbiAgICAgIGFyZ3MucnVuQXN5bmMgPSB0cnVlO1xyXG4gICAgaWYgKG9wdGlvbnMudXNlTmFtZXMpXHJcbiAgICAgIGFyZ3MudXNlTmFtZXMgPSB0cnVlO1xyXG4gICAgaWYgKG9wdGlvbnMudXNlRW1wdHlUYWdzKVxyXG4gICAgICBhcmdzLnVzZUVtcHR5VGFncyA9IHRydWU7XHJcbiAgICB2YXIgcXVlcnlUZXh0O1xyXG4gICAgaWYgKG9wdGlvbnMudXNlR3JpZCkge1xyXG4gICAgICBhcmdzLmVudGl0eVJlZnMgPSBlbnRpdHlSZWZzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSgnbm9uYW1lJyk7XHJcbiAgICAgIGlmIChzZXR1cFF1ZXJ5KVxyXG4gICAgICAgIHF1ZXJ5ID0gc2V0dXBRdWVyeShxdWVyeSk7XHJcbiAgICAgIGlmIChxdWVyeSA9PT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMudWlOb3RpZmljYXRpb24ud2FybmluZygnTm8gcmVjb3JkcyBzZWxlY3RlZCBieSBxdWVyeScpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBxdWVyeVRleHQgPSBxdWVyeS5fdG9VcmkodGhpcy5fZW50aXR5TWFuYWdlcik7XHJcbiAgICAgICAgcXVlcnlUZXh0ID0gcXVlcnlUZXh0LnNwbGl0KCc/JylbMV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnVpTm90aWZpY2F0aW9uLmluZm8oYXJncy5ydW5Bc3luYyA/ICdRdWV1aW5nIGV4cG9ydC4uLicgOiAnRXhwb3J0aW5nLi4uJyk7XHJcblxyXG4gICAgbGV0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xyXG4gICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9ICgpID0+IHtcclxuICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpIHtcclxuICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PSAyMDApIHtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coeGhyLnJlc3BvbnNlVHlwZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgeGhyLm9wZW4oJ1BPU1QnLCB0aGlzLl9iYXNlVXJsICsgJy9hcGkvZXhwb3J0L2V4ZWN1dGUnKTtcclxuICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD1VVEYtOCcpO1xyXG4gICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdhcnJheWJ1ZmZlcic7XHJcbiAgICB4aHIuc2VuZChKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgIHVzZXJSZWY6IHRoaXMudXNlci5hY3RpdmVVc2VyUmVmLFxyXG4gICAgICBydW5Bc3luYzogYXJncy5ydW5Bc3luYyxcclxuICAgICAgdXNlTmFtZXM6IGFyZ3MudXNlTmFtZXMsXHJcbiAgICAgIHVzZUVtcHR5VGFnczogYXJncy51c2VFbXB0eVRhZ3MsXHJcbiAgICAgIGVudGl0eVJlZnM6IGFyZ3MuZW50aXR5UmVmcyxcclxuICAgICAgZW50aXR5VHlwZU5hbWU6IGFyZ3MuZW50aXR5VHlwZU5hbWUsXHJcbiAgICAgIGdyaWRTcGVjOiBhcmdzLmdyaWRTcGVjLFxyXG4gICAgICBxdWVyeTogcXVlcnlUZXh0XHJcbiAgICB9KSlcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGZvcm1hdEFzVXJsUGFyYW1ldGVycyA9IChkYXRhOiBhbnkpID0+IHtcclxuICAgIHZhciBidWZmZXIgPSBbXTtcclxuICAgIGZvciAodmFyIG5hbWUgaW4gZGF0YSkge1xyXG4gICAgICBpZiAoIWRhdGEuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG4gICAgICB2YXIgdmFsdWUgPSBkYXRhW25hbWVdO1xyXG4gICAgICBidWZmZXIucHVzaChcclxuICAgICAgICBlbmNvZGVVUklDb21wb25lbnQobmFtZSkgK1xyXG4gICAgICAgICc9JyArIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZSkpO1xyXG4gICAgfVxyXG4gICAgdmFyIHNvdXJjZSA9IGJ1ZmZlci5qb2luKCcmJylcclxuICAgICAgLnJlcGxhY2UoLyUyMC9nLCAnKycpO1xyXG4gICAgcmV0dXJuIChzb3VyY2UpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkb3dubG9hZEZyb21VcmwgPSAodXJsOiBzdHJpbmcsIGRhdGE6IGFueSkgPT4ge1xyXG4gICAgaWYgKGRhdGEpXHJcbiAgICAgIGRhdGEgPSB0aGlzLmZvcm1hdEFzVXJsUGFyYW1ldGVycyhkYXRhKTtcclxuICAgIGNvbnN0IGJvZHkgPSB7IHRpdGxlOiAnZG93bmxvYWQgcmVxdWVzdCcgfTtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04JyB9O1xyXG5cclxuICAgIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICB0aGlzLl9iYXNlVXJsICsgdXJsLFxyXG4gICAgICBib2R5LFxyXG4gICAgICB7IGhlYWRlcnMgfVxyXG4gICAgKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zYXZlRG93bmxvYWRlZEZpbGUocmVzcG9uc2UpO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBzYXZlRG93bmxvYWRlZEZpbGUgPSAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgdmFyIGhlYWRlcnMgPSByZXNwb25zZS5oZWFkZXJzO1xyXG4gICAgdmFyIGNvbnRlbnREaXNwb3NpdGlvbiA9IGhlYWRlcnMoJ2NvbnRlbnQtZGlzcG9zaXRpb24nKTtcclxuICAgIGlmICghY29udGVudERpc3Bvc2l0aW9uKVxyXG4gICAgICByZXR1cm47IC8vIE5PVEU6IGNhbm5vdCBzYXZlIHdpdGhvdXQgaGVhZGVyIGluZm9cclxuICAgIHZhciBmaWxlbmFtZSA9IHRoaXMuZXh0cmFjdEZpbGVuYW1lRnJvbUNvbnRlbnREaXNwb3NpdGlvbihjb250ZW50RGlzcG9zaXRpb24pO1xyXG4gICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2UuZGF0YV0sIHsgdHlwZTogaGVhZGVycygnY29udGVudC10eXBlJykgfSk7XHJcbiAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGxpbmsuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlbmFtZSk7XHJcbiAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICBsaW5rLnJlbW92ZSgpO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgZXh0cmFjdEZpbGVuYW1lRnJvbUNvbnRlbnREaXNwb3NpdGlvbiA9ICh0ZXh0OiBzdHJpbmcpID0+IHtcclxuICAgIHZhciBwYXJ0cyA9IF8ubWFwKHRleHQuc3BsaXQoJzsnKSwgZnVuY3Rpb24gKHBhcnQpIHsgcmV0dXJuIHBhcnQudHJpbSgpOyB9KTtcclxuICAgIHZhciBwcmVmaXggPSAnZmlsZW5hbWU9JztcclxuICAgIHZhciBmaWxlbmFtZVBhcnQgPSBfLmZpbmQocGFydHMsIGZ1bmN0aW9uIChwYXJ0KSB7IHJldHVybiBwYXJ0LnN1YnN0cmluZygwLCBwcmVmaXgubGVuZ3RoKSA9PT0gcHJlZml4IH0pO1xyXG4gICAgaWYgKCFmaWxlbmFtZVBhcnQpXHJcbiAgICAgIHJldHVybiAnZmlsZSc7XHJcbiAgICB2YXIgZmlsZW5hbWUgPSBmaWxlbmFtZVBhcnQuc3Vic3RyaW5nKHByZWZpeC5sZW5ndGgpO1xyXG4gICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5yZXBsYWNlKC9cIi9nLCAnJyk7XHJcbiAgICByZXR1cm4gZmlsZW5hbWU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
323
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWVudGl0eS1hY2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvc2VydmljZXMvdHJ1LWVudGl0eS1hY2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBc0MsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS2xGLE9BQU8sS0FBSyxDQUFDLE1BQU0sWUFBWSxDQUFDO0FBRWhDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBT25ELE1BQU0sT0FBTyxpQkFBaUI7SUFPbEI7SUFDQTtJQUNBO0lBQ0E7SUFURixjQUFjLENBQW9CO0lBQ2xDLGNBQWMsQ0FBaUI7SUFDL0IsZUFBZSxHQUFXLENBQUMsQ0FBQztJQUM1QixRQUFRLENBQVM7SUFFekIsWUFDVSxJQUFnQixFQUNoQixjQUFpQyxFQUNqQyxjQUFpQyxFQUNqQyxJQUFhO1FBSGIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLFNBQUksR0FBSixJQUFJLENBQVM7UUFDckIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQztRQUMxRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxXQUEyQjtRQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7UUFDaEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDO0lBQ2xELENBQUM7SUFFTyxtQkFB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LENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RyxJQUFJLENBQUMsWUFBWTtZQUNmLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLElBQUksUUFBUSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0QyxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDLENBQUE7dUdBellVLGlCQUFpQjsyR0FBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEVudGl0eSwgRW50aXR5TWFuYWdlciwgRW50aXR5UXVlcnksIEZldGNoU3RyYXRlZ3kgfSBmcm9tIFwiYnJlZXplLWNsaWVudFwiO1xyXG5pbXBvcnQgeyBUcnVFbnRpdHlCYXNlIH0gZnJvbSAnLi4vYmFzZS1jbGFzc2VzL3RydS1lbnRpdHktYmFzZSdcclxuaW1wb3J0IHsgVHJ1VWlOb3RpZmljYXRpb24gfSBmcm9tIFwiLi90cnUtdWktbm90aWZpY2F0aW9uXCI7XHJcbmltcG9ydCB7IFRydURhdGFDb250ZXh0IH0gZnJvbSBcIi4vdHJ1LWRhdGEtY29udGV4dFwiO1xyXG5pbXBvcnQgeyBUcnVCcmVlemVDb250ZXh0IH0gZnJvbSBcIi4vdHJ1LWJyZWV6ZS1jb250ZXh0LWZhY3RvcnlcIjtcclxuaW1wb3J0ICogYXMgXyBmcm9tIFwidW5kZXJzY29yZVwiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IGRlZmVyLCBmcm9tLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUcnVBcHBFbnZpcm9ubWVudCB9IGZyb20gXCIuL3RydS1hcHAtZW52aXJvbm1lbnRcIjtcclxuaW1wb3J0IHsgVHJ1Q2hvaWNlIH0gZnJvbSBcIi4uL2NsYXNzZXMvdHJ1LWNob2ljZVwiO1xyXG5pbXBvcnQgeyBUcnVOYW1lVmFsdWUgfSBmcm9tIFwiLi4vY2xhc3Nlcy90cnUtbmFtZS12YWx1ZVwiO1xyXG5pbXBvcnQgeyBUcnVVc2VyIH0gZnJvbSBcIi4vdHJ1LXVzZXJcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFRydUVudGl0eUFjY2Vzc29yIHtcclxuICBwcml2YXRlIF9icmVlemVDb250ZXh0ITogVHJ1QnJlZXplQ29udGV4dDtcclxuICBwcml2YXRlIF9lbnRpdHlNYW5hZ2VyITogRW50aXR5TWFuYWdlcjtcclxuICBwcml2YXRlIF9tYXhSZWNvcmRDb3VudDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIF9iYXNlVXJsOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBhcHBFbnZpcm9ubWVudDogVHJ1QXBwRW52aXJvbm1lbnQsXHJcbiAgICBwcml2YXRlIHVpTm90aWZpY2F0aW9uOiBUcnVVaU5vdGlmaWNhdGlvbixcclxuICAgIHByaXZhdGUgdXNlcjogVHJ1VXNlcikge1xyXG4gICAgdGhpcy5fbWF4UmVjb3JkQ291bnQgPSB0aGlzLmFwcEVudmlyb25tZW50Lm1heFJlY29yZENvdW50O1xyXG4gICAgdGhpcy5fYmFzZVVybCA9IHRoaXMuYXBwRW52aXJvbm1lbnQuYXBwVXJpO1xyXG4gIH1cclxuXHJcbiAgc2V0IGNvbnRleHQoZGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0KSB7XHJcbiAgICB0aGlzLl9icmVlemVDb250ZXh0ID0gZGF0YUNvbnRleHQuYnJlZXplQ29udGV4dDtcclxuICAgIHRoaXMuX2VudGl0eU1hbmFnZXIgPSBkYXRhQ29udGV4dC5lbnRpdHlNYW5hZ2VyO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRRdWVyeVNlcnZpY2VOYW1lID0gKGVudGl0eTogdHlwZW9mIFRydUVudGl0eUJhc2UpID0+IHtcclxuICAgIHJldHVybiAnUXVlcnknICsgZW50aXR5Lm5hbWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHdhcm5JZk1heFJlY29yZHMgPSAoZW50aXRpZXM6IGFueVtdLCBlbnRpdHlOYW1lOiBzdHJpbmcpID0+IHtcclxuICAgIGlmIChlbnRpdGllcy5sZW5ndGggPj0gdGhpcy5hcHBFbnZpcm9ubWVudC5tYXhSZWNvcmRDb3VudClcclxuICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi53YXJuaW5nKCdbJyArIGVudGl0eU5hbWUgKyAnXSBoYXMgbW9yZSByZWNvcmRzIGF2YWlsYWJsZSB0aGFuIHN1cHBvcnRlZCcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXRRdWVyeUNob2ljZXMgPSAocXVlcnk6IEVudGl0eVF1ZXJ5LCBlbnRpdGllczogQXJyYXk8RW50aXR5PiwgcEtleU5hbWU6IHN0cmluZywgaGlkOiBzdHJpbmcgfCBudWxsID0gbnVsbCk6IEFycmF5PFRydUNob2ljZT4gPT4ge1xyXG4gICAgaWYgKHF1ZXJ5ICYmIHF1ZXJ5Lm9yZGVyQnlDbGF1c2UpXHJcbiAgICAgIHJldHVybiBfLm1hcChlbnRpdGllcywgKGVudGl0eTogYW55KSA9PiB7IHJldHVybiB7IHZhbHVlOiB7ICQ6IGVudGl0eVtwS2V5TmFtZV0gfSwgbGFiZWw6IGhpZCAhPT0gbnVsbCA/IGhpZCA6IGVudGl0eS5ISUQgfTsgfSk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBfLm1hcChlbnRpdGllcywgKGVudGl0eTogYW55KSA9PiB7IHJldHVybiB7IHZhbHVlOiB7ICQ6IGVudGl0eVtwS2V5TmFtZV0gfSwgbGFiZWw6IGhpZCAhPT0gbnVsbCA/IGhpZCA6IGVudGl0eS5ISUQgfTsgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdE5hbWVWYWx1ZXMgPSAocXVlcnk6IEVudGl0eVF1ZXJ5LCBlbnRpdGllczogQXJyYXk8RW50aXR5PiwgcEtleU5hbWU6IHN0cmluZyk6IEFycmF5PFRydU5hbWVWYWx1ZT4gPT4ge1xyXG4gICAgICBpZiAocXVlcnkgJiYgcXVlcnkub3JkZXJCeUNsYXVzZSlcclxuICAgICAgICByZXR1cm4gXy5tYXAoZW50aXRpZXMsIChlbnRpdHk6IGFueSkgPT4geyByZXR1cm4geyBuYW1lOiBlbnRpdHkuTmFtZSwgdmFsdWU6IHsgJDogZW50aXR5LlZhbHVlIH0sIGVudGl0eTogZW50aXR5IH07IH0pO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIF8ubWFwKGVudGl0aWVzLCAoZW50aXR5OiBhbnkpID0+IHsgcmV0dXJuIHsgbmFtZTogZW50aXR5Lk5hbWUsIHZhbHVlOiB7ICQ6IGVudGl0eS5WYWx1ZSB9LCBlbnRpdHk6IGVudGl0eSB9OyB9KTtcclxuICB9XHJcblxyXG4gIGFkZCA9IChlbnRpdHk6IHR5cGVvZiBUcnVFbnRpdHlCYXNlLCBjb250ZXh0RmlsdGVyczogYW55ID0gbnVsbCkgPT4ge1xyXG4gICAgbGV0IG5ld0VudGl0eSA9IHRoaXMuX2VudGl0eU1hbmFnZXIuY3JlYXRlRW50aXR5KGVudGl0eS5wcm90b3R5cGUuZW50aXR5VHlwZSk7XHJcbiAgICByZXR1cm4gbmV3RW50aXR5O1xyXG4gIH07XHJcblxyXG4gIHNlYXJjaCA9IChlbnRpdHk6IHR5cGVvZiBUcnVFbnRpdHlCYXNlLFxyXG4gICAgc2V0dXBRdWVyeTogYW55IHwgbnVsbCA9IG51bGwsXHJcbiAgICBleHBhbmRzOiBbXSB8IG51bGwsXHJcbiAgICBnbG9iYWw6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEVudGl0eVtdPiA9PiB7XHJcblxyXG4gICAgdmFyIHF1ZXJ5OiBhbnk7XHJcbiAgICBpZiAoZXhwYW5kcyAmJiBleHBhbmRzLmxlbmd0aCkge1xyXG4gICAgICBpZiAoZ2xvYmFsKVxyXG4gICAgICAgIHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSh0aGlzLmdldFF1ZXJ5U2VydmljZU5hbWUoZW50aXR5KSkuZXhwYW5kKGV4cGFuZHMuam9pbignLCAnKSk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBxdWVyeSA9IHRoaXMuX2JyZWV6ZUNvbnRleHQuY3JlYXRlUXVlcnkodGhpcy5nZXRRdWVyeVNlcnZpY2VOYW1lKGVudGl0eSkpLmV4cGFuZChleHBhbmRzLmpvaW4oJywgJykpLnRvcCh0aGlzLmFwcEVudmlyb25tZW50Lm1heFJlY29yZENvdW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChnbG9iYWwpXHJcbiAgICAgICAgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KHRoaXMuZ2V0UXVlcnlTZXJ2aWNlTmFtZShlbnRpdHkpKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSh0aGlzLmdldFF1ZXJ5U2VydmljZU5hbWUoZW50aXR5KSkudG9wKHRoaXMuYXBwRW52aXJvbm1lbnQubWF4UmVjb3JkQ291bnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzZXR1cFF1ZXJ5ICE9IG51bGwpXHJcbiAgICAgIHF1ZXJ5ID0gc2V0dXBRdWVyeShxdWVyeSk7XHJcblxyXG4gICAgcmV0dXJuIGRlZmVyKCgpID0+IGZyb20odGhpcy5fZW50aXR5TWFuYWdlci5leGVjdXRlUXVlcnkocXVlcnkpLnRoZW4oKHF1ZXJ5RGF0YTogYW55KSA9PiB7XHJcbiAgICAgIGlmICghZ2xvYmFsKVxyXG4gICAgICAgIHRoaXMud2FybklmTWF4UmVjb3JkcyhxdWVyeURhdGEucmVzdWx0cywgZW50aXR5Lm5hbWUpO1xyXG4gICAgICByZXR1cm4gcXVlcnlEYXRhLnJlc3VsdHM7XHJcbiAgICB9KSkpO1xyXG4gIH07XHJcblxyXG4gIHNlYXJjaENhY2hlT25seSA9IChcclxuICAgIGVudGl0eTogdHlwZW9mIFRydUVudGl0eUJhc2UsXHJcbiAgICBzZXR1cFF1ZXJ5OiBhbnkgfCBudWxsID0gbnVsbCxcclxuICAgIGV4cGFuZHM6IFtdIHwgbnVsbCA9IG51bGwpOiBPYnNlcnZhYmxlPEVudGl0eVtdPiA9PiB7XHJcbiAgICB2YXIgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KHRoaXMuZ2V0UXVlcnlTZXJ2aWNlTmFtZShlbnRpdHkpKTtcclxuICAgIGlmIChzZXR1cFF1ZXJ5KVxyXG4gICAgICBxdWVyeSA9IHNldHVwUXVlcnkocXVlcnkpO1xyXG4gICAgcmV0dXJuIG9mKHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5TG9jYWxseShxdWVyeSkpO1xyXG4gIH07XHJcblxyXG4gIHNlYXJjaENhY2hlT25seVN5bmNocm9ub3VzbHkgPSAoXHJcbiAgICBlbnRpdHk6IHR5cGVvZiBUcnVFbnRpdHlCYXNlLFxyXG4gICAgc2V0dXBRdWVyeTogYW55IHwgbnVsbCA9IG51bGwsXHJcbiAgICBleHBhbmRzOiBbXSB8IG51bGwgPSBudWxsKTogQXJyYXk8YW55PiA9PiB7XHJcbiAgICB2YXIgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KHRoaXMuZ2V0UXVlcnlTZXJ2aWNlTmFtZShlbnRpdHkpKTtcclxuICAgIGlmIChzZXR1cFF1ZXJ5KVxyXG4gICAgICBxdWVyeSA9IHNldHVwUXVlcnkocXVlcnkpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5TG9jYWxseShxdWVyeSk7XHJcbiAgfTtcclxuXHJcbiAgc2VhcmNoQnlSZWZDYWNoZU9ubHlTeW5jaHJvbm91c2x5ID0gKFxyXG4gICAgZW50aXR5OiB0eXBlb2YgVHJ1RW50aXR5QmFzZSxcclxuICAgIHJlZjogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcclxuICAgIGV4cGFuZHM6IFtdIHwgbnVsbCA9IG51bGwpOiBBcnJheTxhbnk+ID0+IHtcclxuICAgIGxldCBxdWVyeSA9IHRoaXMuX2JyZWV6ZUNvbnRleHQuY3JlYXRlUXVlcnkodGhpcy5nZXRRdWVyeVNlcnZpY2VOYW1lKGVudGl0eSkpO1xyXG4gICAgaWYgKHJlZilcclxuICAgICAgcXVlcnkgPSBxdWVyeS53aGVyZShlbnRpdHkubmFtZSArICdSZWYnLCAnPT0nLCByZWYpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5TG9jYWxseShxdWVyeSk7XHJcbiAgfTtcclxuXHJcbiAgc2VhcmNoUXVlcnlDaG9pY2VzID0gKFxyXG4gICAgZW50aXR5OiB0eXBlb2YgVHJ1RW50aXR5QmFzZSxcclxuICAgIHNldHVwUXVlcnk6IGFueSB8IG51bGwgPSBudWxsLFxyXG4gICAgaGlkOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcclxuICAgIGdvVG9TZXJ2ZXI6IGJvb2xlYW4gPSBmYWxzZSxcclxuICAgIHJlZjogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCk6IE9ic2VydmFibGU8VHJ1Q2hvaWNlW10+ID0+IHtcclxuICAgIHR5cGUgT2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIGVudGl0eTtcclxuICAgIGNvbnN0IHBrZXlOYW1lID0gZW50aXR5Lm5hbWUgKyAnUmVmJyBhcyBPYmplY3RLZXk7XHJcbiAgICBsZXQgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KHRoaXMuZ2V0UXVlcnlTZXJ2aWNlTmFtZShlbnRpdHkpKTtcclxuICAgIGlmIChzZXR1cFF1ZXJ5KVxyXG4gICAgICBxdWVyeSA9IHNldHVwUXVlcnkocXVlcnkpID8/IHF1ZXJ5O1xyXG4gICAgaWYgKHJlZilcclxuICAgICAgcXVlcnkgPSBxdWVyeS53aGVyZShlbnRpdHkubmFtZSArICdSZWYnLCAnPT0nLCByZWYpO1xyXG4gICAgcXVlcnkgPSBxdWVyeS50b3AodGhpcy5hcHBFbnZpcm9ubWVudC5tYXhSZWNvcmRDb3VudCk7XHJcbiAgICBpZiAoZ29Ub1NlcnZlcikge1xyXG4gICAgICByZXR1cm4gZGVmZXIoKCkgPT4gZnJvbSh0aGlzLl9lbnRpdHlNYW5hZ2VyLmV4ZWN1dGVRdWVyeShxdWVyeSkudGhlbigocXVlcnlEYXRhOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRRdWVyeUNob2ljZXMocXVlcnksIHF1ZXJ5RGF0YS5yZXN1bHRzLCBwa2V5TmFtZSwgbnVsbCk7XHJcbiAgICAgIH0pKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb2YodGhpcy5mb3JtYXRRdWVyeUNob2ljZXMocXVlcnksIHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5TG9jYWxseShxdWVyeSksIHBrZXlOYW1lLCBudWxsKSk7XHJcbiAgfTtcclxuXHJcbiAgc2VhcmNoTmFtZVZhbHVlc0NhY2hlT25seSA9IChcclxuICAgIGVudGl0eTogdHlwZW9mIFRydUVudGl0eUJhc2UsXHJcbiAgICBzZXR1cFF1ZXJ5OiBhbnkgfCBudWxsID0gbnVsbCxcclxuICAgIHJlZjogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCk6IE9ic2VydmFibGU8VHJ1TmFtZVZhbHVlW10+ID0+IHtcclxuICAgIHR5cGUgT2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIGVudGl0eTtcclxuICAgIGNvbnN0IHBrZXlOYW1lID0gZW50aXR5Lm5hbWUgKyAnUmVmJyBhcyBPYmplY3RLZXk7XHJcbiAgICBsZXQgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KHRoaXMuZ2V0UXVlcnlTZXJ2aWNlTmFtZShlbnRpdHkpKTtcclxuICAgIGlmIChzZXR1cFF1ZXJ5KVxyXG4gICAgICAgIHF1ZXJ5ID0gc2V0dXBRdWVyeShxdWVyeSkgPz8gcXVlcnk7XHJcbiAgICBpZiAocmVmKVxyXG4gICAgICAgIHF1ZXJ5ID0gcXVlcnkud2hlcmUoZW50aXR5Lm5hbWUgKyAnUmVmJywgJz09JywgcmVmKTtcclxuICAgIHJldHVybiBvZih0aGlzLmZvcm1hdE5hbWVWYWx1ZXMocXVlcnksIHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5TG9jYWxseShxdWVyeSksIHBrZXlOYW1lKSk7XHJcbiAgfTtcclxuXHJcbiAgc2VhcmNoQnlSZWYgPSAoXHJcbiAgICBlbnRpdHk6IHR5cGVvZiBUcnVFbnRpdHlCYXNlLFxyXG4gICAgcmVmOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiB7XHJcbiAgICB0eXBlIE9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBlbnRpdHk7XHJcbiAgICBjb25zdCBwa2V5TmFtZSA9IGVudGl0eS5uYW1lICsgJ1JlZicgYXMgT2JqZWN0S2V5O1xyXG4gICAgdmFyIHF1ZXJ5T3B0aW9ucyA9IHRoaXMuX2VudGl0eU1hbmFnZXIucXVlcnlPcHRpb25zLnVzaW5nKHtcclxuICAgICAgZmV0Y2hTdHJhdGVneTogRmV0Y2hTdHJhdGVneS5Gcm9tU2VydmVyXHJcbiAgICB9KTtcclxuICAgIHZhciBxdWVyeSA9IHRoaXMuX2JyZWV6ZUNvbnRleHQuY3JlYXRlUXVlcnkodGhpcy5nZXRRdWVyeVNlcnZpY2VOYW1lKGVudGl0eSkpLndoZXJlKGVudGl0eS5uYW1lICsgJ1JlZicsICc9PScsIHJlZikudXNpbmcocXVlcnlPcHRpb25zKTtcclxuICAgIHJldHVybiBkZWZlcigoKSA9PiBmcm9tKHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5KHF1ZXJ5KS50aGVuKChxdWVyeURhdGE6IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5mb3JtYXRRdWVyeUNob2ljZXMocXVlcnksIHF1ZXJ5RGF0YS5yZXN1bHRzLCBwa2V5TmFtZSwgbnVsbCk7XHJcbiAgICB9KSkpO1xyXG4gIH07XHJcblxyXG4gIHNlYXJjaEJ5UmVmUHJlZmVyZWRDYWNoZSA9IChcclxuICAgIGVudGl0eTogdHlwZW9mIFRydUVudGl0eUJhc2UsXHJcbiAgICByZWY6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpID0+IHtcclxuICAgIGxldCBjYWNoZWRFbnRpdHkgPSB0aGlzLnNlYXJjaEJ5UmVmQ2FjaGVPbmx5KGVudGl0eSwgcmVmKTtcclxuICAgIGlmIChjYWNoZWRFbnRpdHkpIHtcclxuICAgICAgdmFyIHF1ZXJ5T3B0aW9ucyA9IHRoaXMuX2VudGl0eU1hbmFnZXIucXVlcnlPcHRpb25zLnVzaW5nKHtcclxuICAgICAgICBmZXRjaFN0cmF0ZWd5OiBGZXRjaFN0cmF0ZWd5LkZyb21Mb2NhbENhY2hlXHJcbiAgICAgIH0pO1xyXG4gICAgICB2YXIgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KHRoaXMuZ2V0UXVlcnlTZXJ2aWNlTmFtZShlbnRpdHkpKS53aGVyZShlbnRpdHkubmFtZSArICdSZWYnLCAnPT0nLCByZWYpLnVzaW5nKHF1ZXJ5T3B0aW9ucyk7XHJcbiAgICAgIHJldHVybiBkZWZlcigoKSA9PiBmcm9tKHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5KHF1ZXJ5KS50aGVuKChxdWVyeURhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBxdWVyeURhdGEucmVzdWx0c1swXTtcclxuICAgICAgfSkpKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB2YXIgcXVlcnlPcHRpb25zID0gdGhpcy5fZW50aXR5TWFuYWdlci5xdWVyeU9wdGlvbnMudXNpbmcoe1xyXG4gICAgICAgIGZldGNoU3RyYXRlZ3k6IEZldGNoU3RyYXRlZ3kuRnJvbVNlcnZlclxyXG4gICAgICB9KTtcclxuICAgICAgdmFyIHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSh0aGlzLmdldFF1ZXJ5U2VydmljZU5hbWUoZW50aXR5KSkud2hlcmUoZW50aXR5Lm5hbWUgKyAnUmVmJywgJz09JywgcmVmKS51c2luZyhxdWVyeU9wdGlvbnMpO1xyXG4gICAgICByZXR1cm4gZGVmZXIoKCkgPT4gZnJvbSh0aGlzLl9lbnRpdHlNYW5hZ2VyLmV4ZWN1dGVRdWVyeShxdWVyeSkudGhlbigocXVlcnlEYXRhOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gcXVlcnlEYXRhLnJlc3VsdHNbMF07XHJcbiAgICAgIH0pKSk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgc2VhcmNoQnlSZWZDYWNoZU9ubHkgPSAoXHJcbiAgICBlbnRpdHk6IHR5cGVvZiBUcnVFbnRpdHlCYXNlLFxyXG4gICAgcmVmOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLFxyXG4gICAgaW5jbHVkZURlbGV0ZWQ6IGJvb2xlYW4gPSBmYWxzZSkgPT4ge1xyXG5cclxuICAgIGlmICghaW5jbHVkZURlbGV0ZWQpXHJcbiAgICAgIGluY2x1ZGVEZWxldGVkID0gZmFsc2U7XHJcbiAgICB2YXIgcXVlcnlPcHRpb25zID0gdGhpcy5fZW50aXR5TWFuYWdlci5xdWVyeU9wdGlvbnMudXNpbmcoe1xyXG4gICAgICBpbmNsdWRlRGVsZXRlZDogaW5jbHVkZURlbGV0ZWQsXHJcbiAgICAgIGZldGNoU3RyYXRlZ3k6IEZldGNoU3RyYXRlZ3kuRnJvbUxvY2FsQ2FjaGVcclxuICAgIH0pO1xyXG4gICAgdmFyIHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSh0aGlzLmdldFF1ZXJ5U2VydmljZU5hbWUoZW50aXR5KSkud2hlcmUoZW50aXR5Lm5hbWUgKyAnUmVmJywgJz09JywgcmVmKS51c2luZyhxdWVyeU9wdGlvbnMpO1xyXG4gICAgdmFyIHJlc3VsdCA9IHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5TG9jYWxseShxdWVyeSlbMF07XHJcbiAgICBpZiAocmVzdWx0KVxyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfTtcclxuXHJcbiAgc2VhcmNoQnlSZWZBcnJheUNhY2hlT25seSA9IChcclxuICAgIGVudGl0eTogdHlwZW9mIFRydUVudGl0eUJhc2UsXHJcbiAgICBzZXR1cFF1ZXJ5OiBhbnkgfCBudWxsID0gbnVsbCxcclxuICAgIHJlZnM6IEFycmF5PG51bWJlcj4sXHJcbiAgICBpbmNsdWRlRGVsZXRlZDogYm9vbGVhbiA9IGZhbHNlKSA9PiB7XHJcbiAgXHJcbiAgICBpZiAoIWluY2x1ZGVEZWxldGVkKVxyXG4gICAgICBpbmNsdWRlRGVsZXRlZCA9IGZhbHNlO1xyXG4gICAgdmFyIHF1ZXJ5T3B0aW9ucyA9IHRoaXMuX2VudGl0eU1hbmFnZXIucXVlcnlPcHRpb25zLnVzaW5nKHtcclxuICAgICAgaW5jbHVkZURlbGV0ZWQ6IGluY2x1ZGVEZWxldGVkLFxyXG4gICAgICBmZXRjaFN0cmF0ZWd5OiBGZXRjaFN0cmF0ZWd5LkZyb21Mb2NhbENhY2hlXHJcbiAgICB9KTtcclxuXHJcbiAgICB2YXIgcXVlcnkgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVF1ZXJ5KHRoaXMuZ2V0UXVlcnlTZXJ2aWNlTmFtZShlbnRpdHkpKS51c2luZyhxdWVyeU9wdGlvbnMpO1xyXG5cclxuICAgIGlmIChzZXR1cFF1ZXJ5KVxyXG4gICAgICBxdWVyeSA9IHNldHVwUXVlcnkocXVlcnkpO1xyXG4gICAgaWYgKHF1ZXJ5ID09PSBudWxsKS8vc2V0dXBRdWVyeSgpIHJldHVybmVkIG51bGwgdG8gc2VsZWN0IG5vIHJvd3NcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgaWYgKHJlZnMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0eXBlIE9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBlbnRpdHk7XHJcbiAgICAgIGNvbnN0IHBrZXlOYW1lID0gZW50aXR5Lm5hbWUgKyAnUmVmJyBhcyBPYmplY3RLZXk7XHJcbiAgICAgIHZhciBwcmVkaWNhdGUgPSB0aGlzLl9icmVlemVDb250ZXh0LmNyZWF0ZVByZWRpY2F0ZShwa2V5TmFtZSwgJz09JywgcmVmc1swXSk7XHJcbiAgICAgIF8ucmVzdChyZWZzLCAxKS5mb3JFYWNoKGZ1bmN0aW9uIChyZWYpIHtcclxuICAgICAgICBwcmVkaWNhdGUgPSBwcmVkaWNhdGUub3IocGtleU5hbWUsICc9PScsIHJlZik7XHJcbiAgICAgIH0pO1xyXG4gICAgICBxdWVyeSA9IHF1ZXJ5LndoZXJlKHByZWRpY2F0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIHJlc3VsdHMgPSB0aGlzLl9lbnRpdHlNYW5hZ2VyLmV4ZWN1dGVRdWVyeUxvY2FsbHkocXVlcnkpO1xyXG4gICAgaWYgKHJlc3VsdHMgJiYgcmVzdWx0cy5sZW5ndGgpXHJcbiAgICAgIHJldHVybiByZXN1bHRzO1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBzZWFyY2hCeVJlZldpdGhRdWVyeSA9IChcclxuICAgIGVudGl0eTogdHlwZW9mIFRydUVudGl0eUJhc2UsXHJcbiAgICBzZXR1cFF1ZXJ5OiBhbnksXHJcbiAgICByZWY6IG51bWJlcik6IE9ic2VydmFibGU8RW50aXR5W10+ID0+IHtcclxuICAgIHZhciBxdWVyeSA9IHRoaXMuX2JyZWV6ZUNvbnRleHQuY3JlYXRlUXVlcnkodGhpcy5nZXRRdWVyeVNlcnZpY2VOYW1lKGVudGl0eSkpO1xyXG4gICAgcXVlcnkgPSBzZXR1cFF1ZXJ5KHF1ZXJ5KTtcclxuXHJcbiAgICB0eXBlIE9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBlbnRpdHk7XHJcbiAgICBjb25zdCBwa2V5TmFtZSA9IGVudGl0eS5uYW1lICsgJ1JlZicgYXMgT2JqZWN0S2V5O1xyXG4gICAgdmFyIHByZWRpY2F0ZSA9IHRoaXMuX2JyZWV6ZUNvbnRleHQuY3JlYXRlUHJlZGljYXRlKHBrZXlOYW1lLCAnPT0nLCByZWYpO1xyXG4gICAgcXVlcnkgPSBxdWVyeS53aGVyZShwcmVkaWNhdGUpO1xyXG5cclxuICAgIHZhciBsb2NhbFJlc3VsdHMgPSB0aGlzLl9lbnRpdHlNYW5hZ2VyLmV4ZWN1dGVRdWVyeUxvY2FsbHkocXVlcnkpO1xyXG5cclxuICAgIGlmIChsb2NhbFJlc3VsdHMubGVuZ3RoKVxyXG4gICAgICByZXR1cm4gb2YobG9jYWxSZXN1bHRzKTtcclxuXHJcbiAgICByZXR1cm4gZGVmZXIoKCkgPT4gZnJvbSh0aGlzLl9lbnRpdHlNYW5hZ2VyLmV4ZWN1dGVRdWVyeShxdWVyeSkudGhlbigocXVlcnlEYXRhKSA9PiB7XHJcbiAgICAgIHJldHVybiBxdWVyeURhdGEucmVzdWx0cztcclxuICAgIH0pKSk7XHJcbiAgfTtcclxuXHJcbiAgc2VhcmNoVXNlckJ5UmVmQ2FjaGVPbmx5ID0gKFxyXG4gICAgcmVmOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLFxyXG4gICAgaW5jbHVkZURlbGV0ZWQ6IGJvb2xlYW4gPSBmYWxzZSkgPT4ge1xyXG5cclxuICAgIGlmICghaW5jbHVkZURlbGV0ZWQpXHJcbiAgICAgIGluY2x1ZGVEZWxldGVkID0gZmFsc2U7XHJcbiAgICB2YXIgcXVlcnlPcHRpb25zID0gdGhpcy5fZW50aXR5TWFuYWdlci5xdWVyeU9wdGlvbnMudXNpbmcoe1xyXG4gICAgICBpbmNsdWRlRGVsZXRlZDogaW5jbHVkZURlbGV0ZWQsXHJcbiAgICAgIGZldGNoU3RyYXRlZ3k6IEZldGNoU3RyYXRlZ3kuRnJvbUxvY2FsQ2FjaGVcclxuICAgIH0pO1xyXG4gICAgdmFyIHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSgnUXVlcnlUcnVEYlVzZXInKS53aGVyZSgnVHJ1RGJVc2VyUmVmJywgJz09JywgcmVmKS51c2luZyhxdWVyeU9wdGlvbnMpO1xyXG4gICAgdmFyIHJlc3VsdCA9IHRoaXMuX2VudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5TG9jYWxseShxdWVyeSlbMF07XHJcbiAgICBpZiAocmVzdWx0KVxyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfTtcclxuXHJcbiAgZXhwb3J0ID0gKFxyXG4gICAgZW50aXR5OiB0eXBlb2YgVHJ1RW50aXR5QmFzZSxcclxuICAgIGdyaWRTcGVjOiBzdHJpbmcsXHJcbiAgICBzZXR1cFF1ZXJ5OiBhbnkgfCBudWxsLFxyXG4gICAgZW50aXR5UmVmczogc3RyaW5nIHwgbnVsbCxcclxuICAgIG9wdGlvbnM6IGFueSkgPT4ge1xyXG5cclxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xyXG4gICAgdmFyIGFyZ3MgPSB7XHJcbiAgICAgIHJ1bkFzeW5jOiBmYWxzZSxcclxuICAgICAgdXNlTmFtZXM6IGZhbHNlLFxyXG4gICAgICB1c2VFbXB0eVRhZ3M6IGZhbHNlLFxyXG4gICAgICBlbnRpdHlSZWZzOiBudWxsIGFzIHN0cmluZyB8IG51bGwsXHJcbiAgICAgIGVudGl0eVR5cGVOYW1lOiBlbnRpdHkubmFtZSxcclxuICAgICAgZ3JpZFNwZWM6IGdyaWRTcGVjXHJcbiAgICB9O1xyXG4gICAgaWYgKG9wdGlvbnMuYXN5bmMpXHJcbiAgICAgIGFyZ3MucnVuQXN5bmMgPSB0cnVlO1xyXG4gICAgaWYgKG9wdGlvbnMudXNlTmFtZXMpXHJcbiAgICAgIGFyZ3MudXNlTmFtZXMgPSB0cnVlO1xyXG4gICAgaWYgKG9wdGlvbnMudXNlRW1wdHlUYWdzKVxyXG4gICAgICBhcmdzLnVzZUVtcHR5VGFncyA9IHRydWU7XHJcbiAgICB2YXIgcXVlcnlUZXh0O1xyXG4gICAgaWYgKG9wdGlvbnMudXNlR3JpZCkge1xyXG4gICAgICBhcmdzLmVudGl0eVJlZnMgPSBlbnRpdHlSZWZzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIHF1ZXJ5ID0gdGhpcy5fYnJlZXplQ29udGV4dC5jcmVhdGVRdWVyeSgnbm9uYW1lJyk7XHJcbiAgICAgIGlmIChzZXR1cFF1ZXJ5KVxyXG4gICAgICAgIHF1ZXJ5ID0gc2V0dXBRdWVyeShxdWVyeSk7XHJcbiAgICAgIGlmIChxdWVyeSA9PT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMudWlOb3RpZmljYXRpb24ud2FybmluZygnTm8gcmVjb3JkcyBzZWxlY3RlZCBieSBxdWVyeScpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBxdWVyeVRleHQgPSBxdWVyeS5fdG9VcmkodGhpcy5fZW50aXR5TWFuYWdlcik7XHJcbiAgICAgICAgcXVlcnlUZXh0ID0gcXVlcnlUZXh0LnNwbGl0KCc/JylbMV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnVpTm90aWZpY2F0aW9uLmluZm8oYXJncy5ydW5Bc3luYyA/ICdRdWV1aW5nIGV4cG9ydC4uLicgOiAnRXhwb3J0aW5nLi4uJyk7XHJcblxyXG4gICAgbGV0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xyXG4gICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9ICgpID0+IHtcclxuICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpIHtcclxuICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PSAyMDApIHtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coeGhyLnJlc3BvbnNlVHlwZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgeGhyLm9wZW4oJ1BPU1QnLCB0aGlzLl9iYXNlVXJsICsgJy9hcGkvZXhwb3J0L2V4ZWN1dGUnKTtcclxuICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD1VVEYtOCcpO1xyXG4gICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdhcnJheWJ1ZmZlcic7XHJcbiAgICB4aHIuc2VuZChKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgIHVzZXJSZWY6IHRoaXMudXNlci5hY3RpdmVVc2VyUmVmLFxyXG4gICAgICBydW5Bc3luYzogYXJncy5ydW5Bc3luYyxcclxuICAgICAgdXNlTmFtZXM6IGFyZ3MudXNlTmFtZXMsXHJcbiAgICAgIHVzZUVtcHR5VGFnczogYXJncy51c2VFbXB0eVRhZ3MsXHJcbiAgICAgIGVudGl0eVJlZnM6IGFyZ3MuZW50aXR5UmVmcyxcclxuICAgICAgZW50aXR5VHlwZU5hbWU6IGFyZ3MuZW50aXR5VHlwZU5hbWUsXHJcbiAgICAgIGdyaWRTcGVjOiBhcmdzLmdyaWRTcGVjLFxyXG4gICAgICBxdWVyeTogcXVlcnlUZXh0XHJcbiAgICB9KSlcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGZvcm1hdEFzVXJsUGFyYW1ldGVycyA9IChkYXRhOiBhbnkpID0+IHtcclxuICAgIHZhciBidWZmZXIgPSBbXTtcclxuICAgIGZvciAodmFyIG5hbWUgaW4gZGF0YSkge1xyXG4gICAgICBpZiAoIWRhdGEuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG4gICAgICB2YXIgdmFsdWUgPSBkYXRhW25hbWVdO1xyXG4gICAgICBidWZmZXIucHVzaChcclxuICAgICAgICBlbmNvZGVVUklDb21wb25lbnQobmFtZSkgK1xyXG4gICAgICAgICc9JyArIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZSkpO1xyXG4gICAgfVxyXG4gICAgdmFyIHNvdXJjZSA9IGJ1ZmZlci5qb2luKCcmJylcclxuICAgICAgLnJlcGxhY2UoLyUyMC9nLCAnKycpO1xyXG4gICAgcmV0dXJuIChzb3VyY2UpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkb3dubG9hZEZyb21VcmwgPSAodXJsOiBzdHJpbmcsIGRhdGE6IGFueSkgPT4ge1xyXG4gICAgaWYgKGRhdGEpXHJcbiAgICAgIGRhdGEgPSB0aGlzLmZvcm1hdEFzVXJsUGFyYW1ldGVycyhkYXRhKTtcclxuICAgIGNvbnN0IGJvZHkgPSB7IHRpdGxlOiAnZG93bmxvYWQgcmVxdWVzdCcgfTtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04JyB9O1xyXG5cclxuICAgIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICB0aGlzLl9iYXNlVXJsICsgdXJsLFxyXG4gICAgICBib2R5LFxyXG4gICAgICB7IGhlYWRlcnMgfVxyXG4gICAgKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zYXZlRG93bmxvYWRlZEZpbGUocmVzcG9uc2UpO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBzYXZlRG93bmxvYWRlZEZpbGUgPSAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgdmFyIGhlYWRlcnMgPSByZXNwb25zZS5oZWFkZXJzO1xyXG4gICAgdmFyIGNvbnRlbnREaXNwb3NpdGlvbiA9IGhlYWRlcnMoJ2NvbnRlbnQtZGlzcG9zaXRpb24nKTtcclxuICAgIGlmICghY29udGVudERpc3Bvc2l0aW9uKVxyXG4gICAgICByZXR1cm47IC8vIE5PVEU6IGNhbm5vdCBzYXZlIHdpdGhvdXQgaGVhZGVyIGluZm9cclxuICAgIHZhciBmaWxlbmFtZSA9IHRoaXMuZXh0cmFjdEZpbGVuYW1lRnJvbUNvbnRlbnREaXNwb3NpdGlvbihjb250ZW50RGlzcG9zaXRpb24pO1xyXG4gICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2UuZGF0YV0sIHsgdHlwZTogaGVhZGVycygnY29udGVudC10eXBlJykgfSk7XHJcbiAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGxpbmsuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlbmFtZSk7XHJcbiAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICBsaW5rLnJlbW92ZSgpO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgZXh0cmFjdEZpbGVuYW1lRnJvbUNvbnRlbnREaXNwb3NpdGlvbiA9ICh0ZXh0OiBzdHJpbmcpID0+IHtcclxuICAgIHZhciBwYXJ0cyA9IF8ubWFwKHRleHQuc3BsaXQoJzsnKSwgZnVuY3Rpb24gKHBhcnQpIHsgcmV0dXJuIHBhcnQudHJpbSgpOyB9KTtcclxuICAgIHZhciBwcmVmaXggPSAnZmlsZW5hbWU9JztcclxuICAgIHZhciBmaWxlbmFtZVBhcnQgPSBfLmZpbmQocGFydHMsIGZ1bmN0aW9uIChwYXJ0KSB7IHJldHVybiBwYXJ0LnN1YnN0cmluZygwLCBwcmVmaXgubGVuZ3RoKSA9PT0gcHJlZml4IH0pO1xyXG4gICAgaWYgKCFmaWxlbmFtZVBhcnQpXHJcbiAgICAgIHJldHVybiAnZmlsZSc7XHJcbiAgICB2YXIgZmlsZW5hbWUgPSBmaWxlbmFtZVBhcnQuc3Vic3RyaW5nKHByZWZpeC5sZW5ndGgpO1xyXG4gICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5yZXBsYWNlKC9cIi9nLCAnJyk7XHJcbiAgICByZXR1cm4gZmlsZW5hbWU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -921,7 +921,7 @@ class TruEntityAccessor {
921
921
  query = setupQuery(query);
922
922
  return this._entityManager.executeQueryLocally(query);
923
923
  };
924
- searchCacheOnlyByRefSynchronously = (entity, ref = undefined, expands = null) => {
924
+ searchByRefCacheOnlySynchronously = (entity, ref = undefined, expands = null) => {
925
925
  let query = this._breezeContext.createQuery(this.getQueryServiceName(entity));
926
926
  if (ref)
927
927
  query = query.where(entity.name + 'Ref', '==', ref);