wacom 18.2.7 → 18.2.8

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.
@@ -54,6 +54,11 @@ export class CrudService extends BaseService {
54
54
  this._filterDocuments();
55
55
  }
56
56
  });
57
+ this._core.on('wipe').subscribe(() => {
58
+ this._docs.splice(0, this._docs.length);
59
+ this._filterDocuments();
60
+ this.setDocs();
61
+ });
57
62
  }
58
63
  /**
59
64
  * Saves the current set of documents to local storage.
@@ -466,4 +471,4 @@ export class CrudService extends BaseService {
466
471
  }
467
472
  }
468
473
  }
469
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2Fjb20vc3JjL2xpYi9zZXJ2aWNlcy9jcnVkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBb0I3Qzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sT0FBZ0IsV0FFcEIsU0FBUSxXQUFXO0lBK0JYO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFsQ1Q7O09BRUc7SUFDSyxJQUFJLEdBQUcsT0FBTyxDQUFDO0lBRXZCOztPQUVHO0lBQ0ssS0FBSyxHQUFlLEVBQUUsQ0FBQztJQUUvQjs7T0FFRztJQUNLLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFFdEI7O09BRUc7SUFDSywyQkFBMkIsR0FBbUIsRUFBRSxDQUFDO0lBRXpEOzs7Ozs7OztPQVFHO0lBQ0gsWUFDUyxPQUE2QixFQUM3QixLQUFrQixFQUNsQixNQUFvQixFQUNwQixNQUFvQixFQUNwQixLQUFrQjtRQUUxQixLQUFLLEVBQUUsQ0FBQztRQU5BLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBQzdCLFVBQUssR0FBTCxLQUFLLENBQWE7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUNwQixXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQ3BCLFVBQUssR0FBTCxLQUFLLENBQWE7UUFJMUIsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUUvQixxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDekQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMs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SyxHQUFHLENBQUMsR0FBRyxDQUN4QixFQUNBLENBQUM7d0JBQ0YsV0FBVyxDQUFFLEdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDN0MsQ0FBQztnQkFDRixDQUFDO1lBQ0YsQ0FBQztZQUVELHNCQUFzQjtZQUN0QixLQUFLLE1BQU0sUUFBUSxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNwQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xDLENBQUM7UUFDRixDQUFDLENBQUM7UUFFRixJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWhELE9BQU8sUUFBUSxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLEdBQUcsQ0FBQyxHQUFhO1FBQ3hCLE9BQVEsR0FBMEMsQ0FDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksS0FBSyxDQUN6QixFQUFFLFFBQVEsRUFBWSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNLLGdCQUFnQjtRQUN2QixLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1lBQ3pELFFBQVEsRUFBRSxDQUFDO1FBQ1osQ0FBQztJQUNGLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuL2h0dHAuc2VydmljZSc7XHJcbmltcG9ydCB7IFN0b3JlU2VydmljZSB9IGZyb20gJy4vc3RvcmUuc2VydmljZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4vYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvcmVTZXJ2aWNlIH0gZnJvbSAnLi9jb3JlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDcnVkRG9jdW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NydWQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICcuL2Jhc2Uuc2VydmljZSc7XHJcblxyXG5pbnRlcmZhY2UgQ3J1ZE9wdGlvbnM8RG9jdW1lbnQ+IHtcclxuXHRuYW1lPzogc3RyaW5nO1xyXG5cdGFsZXJ0Pzogc3RyaW5nO1xyXG5cdGNhbGxiYWNrPzogKHJlc3A6IERvY3VtZW50IHwgRG9jdW1lbnRbXSkgPT4gdm9pZDtcclxuXHRlcnJDYWxsYmFjaz86IChyZXNwOiB1bmtub3duKSA9PiB2b2lkO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgQ3J1ZENvbmZpZzxEb2N1bWVudD4ge1xyXG5cdG5hbWU6IHN0cmluZztcclxuXHRfaWQ/OiBzdHJpbmc7XHJcblx0cmVwbGFjZT86IChkb2M6IERvY3VtZW50KSA9PiB2b2lkO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgR2V0Q29uZmlnIHtcclxuXHRwYWdlPzogbnVtYmVyO1xyXG5cdHBlclBhZ2U/OiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBYnN0cmFjdCBjbGFzcyByZXByZXNlbnRpbmcgYSBDUlVEIChDcmVhdGUsIFJlYWQsIFVwZGF0ZSwgRGVsZXRlKSBzZXJ2aWNlLlxyXG4gKlxyXG4gKiBUaGlzIGNsYXNzIHByb3ZpZGVzIG1ldGhvZHMgZm9yIG1hbmFnaW5nIGRvY3VtZW50cywgaW50ZXJhY3Rpbmcgd2l0aCBhbiBBUEksXHJcbiAqIGFuZCBzdG9yaW5nL3JldHJpZXZpbmcgZGF0YSBmcm9tIGxvY2FsIHN0b3JhZ2UuIEl0IGlzIGRlc2lnbmVkIHRvIGJlIGV4dGVuZGVkXHJcbiAqIGZvciBzcGVjaWZpYyBkb2N1bWVudCB0eXBlcy5cclxuICpcclxuICogQHRlbXBsYXRlIERvY3VtZW50IC0gVGhlIHR5cGUgb2YgdGhlIGRvY3VtZW50IHRoZSBzZXJ2aWNlIGhhbmRsZXMuXHJcbiAqL1xyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ3J1ZFNlcnZpY2U8XHJcblx0RG9jdW1lbnQgZXh0ZW5kcyBDcnVkRG9jdW1lbnRcclxuPiBleHRlbmRzIEJhc2VTZXJ2aWNlIHtcclxuXHQvKipcclxuXHQgKiBVUkwgZm9yIHRoZSBBUEkuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfdXJsID0gJy9hcGkvJztcclxuXHJcblx0LyoqXHJcblx0ICogQXJyYXkgb2YgZG9jdW1lbnRzIG1hbmFnZWQgYnkgdGhpcyBzZXJ2aWNlLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX2RvY3M6IERvY3VtZW50W10gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogTnVtYmVyIG9mIGRvY3VtZW50cyBwZXIgcGFnZS5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9wZXJQYWdlID0gMjA7XHJcblxyXG5cdC8qKlxyXG5cdCAqIENhbGxiYWNrcyBmb3IgZmlsdGVyaW5nIGRvY3VtZW50cy5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9maWx0ZXJlZERvY3VtZW50c0NhbGxiYWNrczogKCgpID0+IHZvaWQpW10gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0cyBhIENSVUQgc2VydmljZSBpbnN0YW5jZS5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBfY29uZmlnIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgQ1JVRCBzZXJ2aWNlLlxyXG5cdCAqIEBwYXJhbSBfaHR0cCAtIFNlcnZpY2UgdG8gaGFuZGxlIEhUVFAgcmVxdWVzdHMuXHJcblx0ICogQHBhcmFtIF9zdG9yZSAtIFNlcnZpY2UgdG8gbWFuYWdlIGxvY2FsIHN0b3JhZ2Ugb2YgZG9jdW1lbnRzLlxyXG5cdCAqIEBwYXJhbSBfYWxlcnQgLSBTZXJ2aWNlIHRvIGRpc3BsYXkgYWxlcnRzLlxyXG5cdCAqIEBwYXJhbSBfY29yZSAtIENvcmUgc2VydmljZSBmb3IgdXRpbGl0eSBmdW5jdGlvbnMuXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIF9jb25maWc6IENydWRDb25maWc8RG9jdW1lbnQ+LFxyXG5cdFx0cHJpdmF0ZSBfaHR0cDogSHR0cFNlcnZpY2UsXHJcblx0XHRwcml2YXRlIF9zdG9yZTogU3RvcmVTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfYWxlcnQ6IEFsZXJ0U2VydmljZSxcclxuXHRcdHByaXZhdGUgX2NvcmU6IENvcmVTZXJ2aWNlXHJcblx0KSB7XHJcblx0XHRzdXBlcigpO1xyXG5cclxuXHRcdHRoaXMuX3VybCArPSB0aGlzLl9jb25maWcubmFtZTtcclxuXHJcblx0XHQvLyBMb2FkIGRvY3VtZW50cyBmcm9tIGxvY2FsIHN0b3JhZ2UuXHJcblx0XHR0aGlzLl9zdG9yZS5nZXRKc29uKCdkb2NzXycgKyB0aGlzLl9jb25maWcubmFtZSwgKGRvY3MpID0+IHtcclxuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoZG9jcykpIHtcclxuXHRcdFx0XHR0aGlzLl9kb2NzLnB1c2goLi4uZG9jcyk7XHJcblxyXG5cdFx0XHRcdHRoaXMuX2ZpbHRlckRvY3VtZW50cygpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNhdmVzIHRoZSBjdXJyZW50IHNldCBvZiBkb2N1bWVudHMgdG8gbG9jYWwgc3RvcmFnZS5cclxuXHQgKi9cclxuXHRzZXREb2NzKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5fc3RvcmUuc2V0SnNvbignZG9jc18nICsgdGhpcy5fY29uZmlnLm5hbWUsIHRoaXMuX2RvY3MpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmV0cmlldmVzIHRoZSBjdXJyZW50IGxpc3Qgb2YgZG9jdW1lbnRzLlxyXG5cdCAqXHJcblx0ICogQHJldHVybnMgVGhlIGxpc3Qgb2YgZG9jdW1lbnRzLlxyXG5cdCAqL1xyXG5cdGdldERvY3MoKTogRG9jdW1lbnRbXSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fZG9jcztcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFkZHMgbXVsdGlwbGUgZG9jdW1lbnRzIHRvIHRoZSBzZXJ2aWNlIGFuZCBzYXZlcyB0aGVtIHRvIGxvY2FsIHN0b3JhZ2UuXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gZG9jcyAtIEFuIGFycmF5IG9mIGRvY3VtZW50cyB0byBhZGQuXHJcblx0ICovXHJcblx0YWRkRG9jcyhkb2NzOiBEb2N1bWVudFtdKTogdm9pZCB7XHJcblx0XHRpZiAoQXJyYXkuaXNBcnJheShkb2NzKSkge1xyXG5cdFx0XHRmb3IgKGNvbnN0IGRvYyBvZiBkb2NzKSB7XHJcblx0XHRcdFx0dGhpcy5hZGREb2MoZG9jKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQWRkcyBhIHNpbmdsZSBkb2N1bWVudCB0byB0aGUgc2VydmljZS4gSWYgaXQgYWxyZWFkeSBleGlzdHMsIGl0IHdpbGwgYmUgdXBkYXRlZC5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBkb2MgLSBUaGUgZG9jdW1lbnQgdG8gYWRkLlxyXG5cdCAqL1xyXG5cdGFkZERvYyhkb2M6IERvY3VtZW50KTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5fY29uZmlnLnJlcGxhY2UpIHtcclxuXHRcdFx0dGhpcy5fY29uZmlnLnJlcGxhY2UoZG9jKTtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBleGlzdGluZ0RvYyA9IHRoaXMuX2RvY3MuZmluZChcclxuXHRcdFx0KGQpID0+IHRoaXMuX2lkKGQpID09PSB0aGlzLl9pZChkb2MpXHJcblx0XHQpO1xyXG5cclxuXHRcdGlmIChleGlzdGluZ0RvYykge1xyXG5cdFx0XHQvLyBVcGRhdGUgdGhlIGV4aXN0aW5nIGRvY3VtZW50XHJcblx0XHRcdHRoaXMuX2NvcmUuY29weShkb2MsIGV4aXN0aW5nRG9jKTtcclxuXHRcdFx0dGhpcy5fY29yZS5jb3B5KGV4aXN0aW5nRG9jLCBkb2MpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Ly8gQWRkIG5ldyBkb2N1bWVudFxyXG5cdFx0XHR0aGlzLl9kb2NzLnB1c2goZG9jKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLnNldERvY3MoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENyZWF0ZXMgYSBuZXcgZG9jdW1lbnQgd2l0aCBhIHRlbXBvcmFyeSBJRCBhbmQgc3RhdHVzIGZsYWdzLlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIGRvYyAtIE9wdGlvbmFsIGJhc2UgZG9jdW1lbnQgdG8gdXNlIGZvciB0aGUgbmV3IGRvY3VtZW50LlxyXG5cdCAqIEByZXR1cm5zIEEgbmV3IGRvY3VtZW50IGluc3RhbmNlIHdpdGggZGVmYXVsdCBwcm9wZXJ0aWVzLlxyXG5cdCAqL1xyXG5cdG5ldyhkb2M6IERvY3VtZW50ID0ge30gYXMgRG9jdW1lbnQpOiBEb2N1bWVudCB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHQuLi5kb2MsXHJcblx0XHRcdF9pZDogRGF0ZS5ub3coKS50b1N0cmluZygpLFxyXG5cdFx0XHRfX2NyZWF0ZWQ6IGZhbHNlLFxyXG5cdFx0XHRfX21vZGlmaWVkOiBmYWxzZSxcclxuXHRcdH0gYXMgRG9jdW1lbnQ7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXRyaWV2ZXMgYSBkb2N1bWVudCBieSBpdHMgdW5pcXVlIElEIG9yIGNyZWF0ZXMgYSBuZXcgb25lIGlmIGl0IGRvZXNuJ3QgZXhpc3QuXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gX2lkIC0gVGhlIGRvY3VtZW50IElEIHRvIHNlYXJjaCBmb3IuXHJcblx0ICogQHJldHVybnMgVGhlIGZvdW5kIGRvY3VtZW50IG9yIGEgbmV3IGRvY3VtZW50IGlmIG5vdCBmb3VuZC5cclxuXHQgKi9cclxuXHRkb2MoX2lkOiBzdHJpbmcpOiBEb2N1bWVudCB7XHJcblx0XHRyZXR1cm4gdGhpcy5fZG9jcy5maW5kKChkKSA9PiB0aGlzLl9pZChkKSA9PT0gX2lkKSB8fCB0aGlzLm5ldygpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0cyB0aGUgbnVtYmVyIG9mIGRvY3VtZW50cyB0byBkaXNwbGF5IHBlciBwYWdlLlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIF9wZXJQYWdlIC0gTnVtYmVyIG9mIGRvY3VtZW50cyBwZXIgcGFnZS5cclxuXHQgKi9cclxuXHRzZXRQZXJQYWdlKF9wZXJQYWdlOiBudW1iZXIpOiB2b2lkIHtcclxuXHRcdHRoaXMuX3BlclBhZ2UgPSBfcGVyUGFnZTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEZldGNoZXMgYSBsaXN0IG9mIGRvY3VtZW50cyBmcm9tIHRoZSBBUEkgd2l0aCBvcHRpb25hbCBwYWdpbmF0aW9uLlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIGNvbmZpZyAtIE9wdGlvbmFsIHBhZ2luYXRpb24gY29uZmlndXJhdGlvbi5cclxuXHQgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIGNhbGxiYWNrIGFuZCBlcnJvciBoYW5kbGluZyBjb25maWd1cmF0aW9uLlxyXG5cdCAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBsaXN0IG9mIGRvY3VtZW50cy5cclxuXHQgKi9cclxuXHRnZXQoXHJcblx0XHRjb25maWc6IEdldENvbmZpZyA9IHt9LFxyXG5cdFx0b3B0aW9uczogQ3J1ZE9wdGlvbnM8RG9jdW1lbnQ+ID0ge31cclxuXHQpOiBPYnNlcnZhYmxlPERvY3VtZW50W10+IHtcclxuXHRcdGNvbnN0IHVybCA9IGAke3RoaXMuX3VybH0vZ2V0JHtvcHRpb25zLm5hbWUgfHwgJyd9YDtcclxuXHJcblx0XHRjb25zdCBwYXJhbXMgPVxyXG5cdFx0XHR0eXBlb2YgY29uZmlnLnBhZ2UgPT09ICdudW1iZXInXHJcblx0XHRcdFx0PyBgP3NraXA9JHt0aGlzLl9wZXJQYWdlICogKGNvbmZpZy5wYWdlIC0gMSl9JmxpbWl0PSR7XHJcblx0XHRcdFx0XHRcdHRoaXMuX3BlclBhZ2VcclxuXHRcdFx0XHQgIH1gXHJcblx0XHRcdFx0OiAnJztcclxuXHJcblx0XHRjb25zdCBvYnMgPSB0aGlzLl9odHRwLmdldChgJHt1cmx9JHtwYXJhbXN9YCk7XHJcblxyXG5cdFx0b2JzLnN1YnNjcmliZSh7XHJcblx0XHRcdG5leHQ6IChyZXNwOiB1bmtub3duKTogdm9pZCA9PiB7XHJcblx0XHRcdFx0KHJlc3AgYXMgRG9jdW1lbnRbXSkuZm9yRWFjaCgoZG9jKSA9PiB0aGlzLmFkZERvYyhkb2MpKTtcclxuXHJcblx0XHRcdFx0aWYgKG9wdGlvbnMuY2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdG9wdGlvbnMuY2FsbGJhY2socmVzcCBhcyBEb2N1bWVudFtdKTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdGlmICh0eXBlb2YgY29uZmlnLnBhZ2UgIT09ICdudW1iZXInKSB7XHJcblx0XHRcdFx0XHR0aGlzLl9maWx0ZXJEb2N1bWVudHMoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdGVycm9yOiAoZXJyOiB1bmtub3duKTogdm9pZCA9PiB7XHJcblx0XHRcdFx0aWYgKG9wdGlvbnMuZXJyQ2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdG9wdGlvbnMuZXJyQ2FsbGJhY2soZXJyKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHR9KTtcclxuXHJcblx0XHRyZXR1cm4gb2JzIGFzIE9ic2VydmFibGU8RG9jdW1lbnRbXT47XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTZW5kcyBhIHJlcXVlc3QgdG8gdGhlIEFQSSB0byBjcmVhdGUgYSBuZXcgZG9jdW1lbnQuXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gZG9jIC0gVGhlIGRvY3VtZW50IHRvIGNyZWF0ZS5cclxuXHQgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIGNhbGxiYWNrIGFuZCBlcnJvciBoYW5kbGluZyBjb25maWd1cmF0aW9uLlxyXG5cdCAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBjcmVhdGVkIGRvY3VtZW50LCBvciB2b2lkIGlmIGFscmVhZHkgY3JlYXRlZC5cclxuXHQgKi9cclxuXHRjcmVhdGUoXHJcblx0XHRkb2M6IERvY3VtZW50LFxyXG5cdFx0b3B0aW9uczogQ3J1ZE9wdGlvbnM8RG9jdW1lbnQ+ID0ge31cclxuXHQpOiBPYnNlcnZhYmxlPERvY3VtZW50PiB8IHZvaWQge1xyXG5cdFx0aWYgKGRvYy5fX2NyZWF0ZWQpIHJldHVybjtcclxuXHJcblx0XHRkb2MuX19jcmVhdGVkID0gdHJ1ZTtcclxuXHJcblx0XHRjb25zdCBvYnMgPSB0aGlzLl9odHRwLnBvc3QoXHJcblx0XHRcdGAke3RoaXMuX3VybH0vY3JlYXRlJHtvcHRpb25zLm5hbWUgfHwgJyd9YCxcclxuXHRcdFx0ZG9jXHJcblx0XHQpO1xyXG5cclxuXHRcdG9icy5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAocmVzcDogdW5rbm93bikgPT4ge1xyXG5cdFx0XHRcdGlmIChyZXNwKSB7XHJcblx0XHRcdFx0XHR0aGlzLl9jb3JlLmNvcHkocmVzcCwgZG9jKTtcclxuXHJcblx0XHRcdFx0XHR0aGlzLmFkZERvYyhkb2MpO1xyXG5cclxuXHRcdFx0XHRcdHRoaXMuX2ZpbHRlckRvY3VtZW50cygpO1xyXG5cclxuXHRcdFx0XHRcdGlmIChvcHRpb25zLmNhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRcdG9wdGlvbnMuY2FsbGJhY2soZG9jKTtcclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRpZiAob3B0aW9ucy5hbGVydCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLl9hbGVydC5zaG93KHtcclxuXHRcdFx0XHRcdFx0XHR1bmlxdWU6IGAke3RoaXMuX2NvbmZpZy5uYW1lfWNyZWF0ZWAsXHJcblx0XHRcdFx0XHRcdFx0dGV4dDogb3B0aW9ucy5hbGVydCxcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGRvYy5fX2NyZWF0ZWQgPSBmYWxzZTtcclxuXHJcblx0XHRcdFx0XHRpZiAob3B0aW9ucy5lcnJDYWxsYmFjaykge1xyXG5cdFx0XHRcdFx0XHRvcHRpb25zLmVyckNhbGxiYWNrKHJlc3ApO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0dGhpcy5fY29yZS5lbWl0KGAke3RoaXMuX2NvbmZpZy5uYW1lfV9jcmVhdGVgLCBkb2MpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKGVycjogdW5rbm93bikgPT4ge1xyXG5cdFx0XHRcdGRvYy5fX2NyZWF0ZWQgPSBmYWxzZTtcclxuXHJcblx0XHRcdFx0aWYgKG9wdGlvbnMuZXJyQ2FsbGJhY2spIG9wdGlvbnMuZXJyQ2FsbGJhY2soZXJyKTtcclxuXHRcdFx0fSxcclxuXHRcdH0pO1xyXG5cdFx0cmV0dXJuIG9icyBhcyBPYnNlcnZhYmxlPERvY3VtZW50PjtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEZldGNoZXMgYSBkb2N1bWVudCBmcm9tIHRoZSBBUEkgYmFzZWQgb24gYSBxdWVyeS5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBxdWVyeSAtIFRoZSBxdWVyeSBvYmplY3QgdXNlZCB0byBmaWx0ZXIgZG9jdW1lbnRzLlxyXG5cdCAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgY2FsbGJhY2sgYW5kIGVycm9yIGhhbmRsaW5nIGNvbmZpZ3VyYXRpb24uXHJcblx0ICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGZldGNoZWQgZG9jdW1lbnQuXHJcblx0ICovXHJcblx0ZmV0Y2goXHJcblx0XHRxdWVyeTogb2JqZWN0ID0ge30sXHJcblx0XHRvcHRpb25zOiBDcnVkT3B0aW9uczxEb2N1bWVudD4gPSB7fVxyXG5cdCk6IE9ic2VydmFibGU8RG9jdW1lbnQ+IHtcclxuXHRcdGNvbnN0IG9icyA9IHRoaXMuX2h0dHAucG9zdChcclxuXHRcdFx0YCR7dGhpcy5fdXJsfS9mZXRjaCR7b3B0aW9ucy5uYW1lIHx8ICcnfWAsXHJcblx0XHRcdHF1ZXJ5XHJcblx0XHQpO1xyXG5cclxuXHRcdG9icy5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAocmVzcDogdW5rbm93bikgPT4ge1xyXG5cdFx0XHRcdGlmIChyZXNwKSB7XHJcblx0XHRcdFx0XHR0aGlzLmFkZERvYyhyZXNwIGFzIERvY3VtZW50KTtcclxuXHJcblx0XHRcdFx0XHR0aGlzLl9maWx0ZXJEb2N1bWVudHMoKTtcclxuXHJcblx0XHRcdFx0XHRpZiAob3B0aW9ucy5jYWxsYmFjaykgb3B0aW9ucy5jYWxsYmFjayhyZXNwIGFzIERvY3VtZW50KTtcclxuXHJcblx0XHRcdFx0XHRpZiAob3B0aW9ucy5hbGVydCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLl9hbGVydC5zaG93KHtcclxuXHRcdFx0XHRcdFx0XHR1bmlxdWU6IGAke3RoaXMuX2NvbmZpZy5uYW1lfWNyZWF0ZWAsXHJcblx0XHRcdFx0XHRcdFx0dGV4dDogb3B0aW9ucy5hbGVydCxcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGlmIChvcHRpb25zLmVyckNhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRcdG9wdGlvbnMuZXJyQ2FsbGJhY2socmVzcCBhcyBEb2N1bWVudCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKGVycjogdW5rbm93bikgPT4ge1xyXG5cdFx0XHRcdGlmIChvcHRpb25zLmVyckNhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRvcHRpb25zLmVyckNhbGxiYWNrKGVycik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0fSk7XHJcblx0XHRyZXR1cm4gb2JzIGFzIE9ic2VydmFibGU8RG9jdW1lbnQ+O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVXBkYXRlcyBhIGRvY3VtZW50IGFmdGVyIGEgc3BlY2lmaWVkIGRlbGF5LlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIGRvYyAtIFRoZSBkb2N1bWVudCB0byB1cGRhdGUuXHJcblx0ICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBjYWxsYmFjayBhbmQgZXJyb3IgaGFuZGxpbmcgY29uZmlndXJhdGlvbi5cclxuXHQgKi9cclxuXHR1cGRhdGVBZnRlcldoaWxlKGRvYzogRG9jdW1lbnQsIG9wdGlvbnM6IENydWRPcHRpb25zPERvY3VtZW50PiA9IHt9KTogdm9pZCB7XHJcblx0XHRkb2MuX19tb2RpZmllZCA9IHRydWU7XHJcblxyXG5cdFx0dGhpcy5fY29yZS5hZnRlcldoaWxlKHRoaXMuX2lkKGRvYyksICgpID0+IHtcclxuXHRcdFx0dGhpcy51cGRhdGUoZG9jLCBvcHRpb25zKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVXBkYXRlcyBhIGRvY3VtZW50IGluIHRoZSBBUEkuXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gZG9jIC0gVGhlIGRvY3VtZW50IHRvIHVwZGF0ZS5cclxuXHQgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIGNhbGxiYWNrIGFuZCBlcnJvciBoYW5kbGluZyBjb25maWd1cmF0aW9uLlxyXG5cdCAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB1cGRhdGVkIGRvY3VtZW50LlxyXG5cdCAqL1xyXG5cdHVwZGF0ZShcclxuXHRcdGRvYzogRG9jdW1lbnQsXHJcblx0XHRvcHRpb25zOiBDcnVkT3B0aW9uczxEb2N1bWVudD4gPSB7fVxyXG5cdCk6IE9ic2VydmFibGU8RG9jdW1lbnQ+IHtcclxuXHRcdGRvYy5fX21vZGlmaWVkID0gdHJ1ZTtcclxuXHJcblx0XHRjb25zdCBvYnMgPSB0aGlzLl9odHRwLnBvc3QoXHJcblx0XHRcdGAke3RoaXMuX3VybH0vdXBkYXRlJHtvcHRpb25zLm5hbWUgfHwgJyd9YCxcclxuXHRcdFx0ZG9jXHJcblx0XHQpO1xyXG5cclxuXHRcdG9icy5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAocmVzcDogdW5rbm93bikgPT4ge1xyXG5cdFx0XHRcdGlmIChyZXNwKSB7XHJcblx0XHRcdFx0XHRkb2MuX19tb2RpZmllZCA9IGZhbHNlO1xyXG5cclxuXHRcdFx0XHRcdHRoaXMuX2NvcmUuY29weShyZXNwLCBkb2MpO1xyXG5cclxuXHRcdFx0XHRcdGlmIChvcHRpb25zLmNhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRcdG9wdGlvbnMuY2FsbGJhY2soZG9jKTtcclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRpZiAob3B0aW9ucy5hbGVydCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLl9hbGVydC5zaG93KHtcclxuXHRcdFx0XHRcdFx0XHR1bmlxdWU6IGAke3RoaXMuX2NvbmZpZy5uYW1lfXVwZGF0ZWAsXHJcblx0XHRcdFx0XHRcdFx0dGV4dDogb3B0aW9ucy5hbGVydCxcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGlmIChvcHRpb25zLmVyckNhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRcdG9wdGlvbnMuZXJyQ2FsbGJhY2socmVzcCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHR0aGlzLl9jb3JlLmVtaXQoYCR7dGhpcy5fY29uZmlnLm5hbWV9X3VwZGF0ZWAsIGRvYyk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGVycm9yOiAoZXJyOiB1bmtub3duKSA9PiB7XHJcblx0XHRcdFx0aWYgKG9wdGlvbnMuZXJyQ2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdG9wdGlvbnMuZXJyQ2FsbGJhY2soZXJyKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHR9KTtcclxuXHJcblx0XHRyZXR1cm4gb2JzIGFzIE9ic2VydmFibGU8RG9jdW1lbnQ+O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVW5pcXVlIHVwZGF0ZSBhIGRvY3VtZW50IGZpZWxkIGluIHRoZSBBUEkuXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gZG9jIC0gVGhlIGRvY3VtZW50IHRvIHVwZGF0ZS5cclxuXHQgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIGNhbGxiYWNrIGFuZCBlcnJvciBoYW5kbGluZyBjb25maWd1cmF0aW9uLlxyXG5cdCAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB1cGRhdGVkIGRvY3VtZW50LlxyXG5cdCAqL1xyXG5cdHVuaXF1ZShcclxuXHRcdGRvYzogRG9jdW1lbnQsXHJcblx0XHRvcHRpb25zOiBDcnVkT3B0aW9uczxEb2N1bWVudD4gPSB7fVxyXG5cdCk6IE9ic2VydmFibGU8RG9jdW1lbnQ+IHtcclxuXHRcdGRvYy5fX21vZGlmaWVkID0gdHJ1ZTtcclxuXHJcblx0XHRjb25zdCBvYnMgPSB0aGlzLl9odHRwLnBvc3QoXHJcblx0XHRcdGAke3RoaXMuX3VybH0vdW5pcXVlJHtvcHRpb25zLm5hbWUgfHwgJyd9YCxcclxuXHRcdFx0ZG9jXHJcblx0XHQpO1xyXG5cclxuXHRcdG9icy5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAocmVzcDogdW5rbm93bikgPT4ge1xyXG5cdFx0XHRcdGlmIChyZXNwKSB7XHJcblx0XHRcdFx0XHRkb2MuX19tb2RpZmllZCA9IGZhbHNlO1xyXG5cclxuXHRcdFx0XHRcdChkb2MgYXMgYW55KVtvcHRpb25zLm5hbWUgYXMgc3RyaW5nXSA9IHJlc3A7XHJcblxyXG5cdFx0XHRcdFx0aWYgKG9wdGlvbnMuY2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdFx0b3B0aW9ucy5jYWxsYmFjayhkb2MpO1xyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdGlmIChvcHRpb25zLmFsZXJ0KSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuX2FsZXJ0LnNob3coe1xyXG5cdFx0XHRcdFx0XHRcdHVuaXF1ZTogYCR7dGhpcy5fY29uZmlnLm5hbWV9dW5pcXVlYCxcclxuXHRcdFx0XHRcdFx0XHR0ZXh0OiBvcHRpb25zLmFsZXJ0LFxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0aWYgKG9wdGlvbnMuZXJyQ2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdFx0b3B0aW9ucy5lcnJDYWxsYmFjayhyZXNwKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdHRoaXMuX2NvcmUuZW1pdChgJHt0aGlzLl9jb25maWcubmFtZX1fdW5pcXVlYCwgZG9jKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0ZXJyb3I6IChlcnI6IHVua25vd24pID0+IHtcclxuXHRcdFx0XHRpZiAob3B0aW9ucy5lcnJDYWxsYmFjaykge1xyXG5cdFx0XHRcdFx0b3B0aW9ucy5lcnJDYWxsYmFjayhlcnIpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdH0pO1xyXG5cclxuXHRcdHJldHVybiBvYnMgYXMgT2JzZXJ2YWJsZTxEb2N1bWVudD47XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEZWxldGVzIGEgZG9jdW1lbnQgZnJvbSB0aGUgQVBJLlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIGRvYyAtIFRoZSBkb2N1bWVudCB0byBkZWxldGUuXHJcblx0ICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBjYWxsYmFjayBhbmQgZXJyb3IgaGFuZGxpbmcgY29uZmlndXJhdGlvbi5cclxuXHQgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgZGVsZXRlZCBkb2N1bWVudC5cclxuXHQgKi9cclxuXHRkZWxldGUoXHJcblx0XHRkb2M6IERvY3VtZW50LFxyXG5cdFx0b3B0aW9uczogQ3J1ZE9wdGlvbnM8RG9jdW1lbnQ+ID0ge31cclxuXHQpOiBPYnNlcnZhYmxlPERvY3VtZW50PiB7XHJcblx0XHRjb25zdCBvYnMgPSB0aGlzLl9odHRwLnBvc3QoXHJcblx0XHRcdGAke3RoaXMuX3VybH0vZGVsZXRlJHtvcHRpb25zLm5hbWUgfHwgJyd9YCxcclxuXHRcdFx0ZG9jXHJcblx0XHQpO1xyXG5cclxuXHRcdG9icy5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAocmVzcDogdW5rbm93bikgPT4ge1xyXG5cdFx0XHRcdGlmIChyZXNwKSB7XHJcblx0XHRcdFx0XHR0aGlzLl9kb2NzLnNwbGljZShcclxuXHRcdFx0XHRcdFx0dGhpcy5fZG9jcy5maW5kSW5kZXgoXHJcblx0XHRcdFx0XHRcdFx0KGQpID0+IHRoaXMuX2lkKGQpICE9PSB0aGlzLl9pZChkb2MpXHJcblx0XHRcdFx0XHRcdCksXHJcblx0XHRcdFx0XHRcdDFcclxuXHRcdFx0XHRcdCk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5zZXREb2NzKCk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5fZmlsdGVyRG9jdW1lbnRzKCk7XHJcblxyXG5cdFx0XHRcdFx0aWYgKG9wdGlvbnMuY2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdFx0b3B0aW9ucy5jYWxsYmFjayhkb2MpO1xyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdGlmIChvcHRpb25zLmFsZXJ0KSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuX2FsZXJ0LnNob3coe1xyXG5cdFx0XHRcdFx0XHRcdHVuaXF1ZTogYCR7dGhpcy5fY29uZmlnLm5hbWV9ZGVsZXRlYCxcclxuXHRcdFx0XHRcdFx0XHR0ZXh0OiBvcHRpb25zLmFsZXJ0LFxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0aWYgKG9wdGlvbnMuZXJyQ2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdFx0b3B0aW9ucy5lcnJDYWxsYmFjayhyZXNwKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdHRoaXMuX2NvcmUuZW1pdChgJHt0aGlzLl9jb25maWcubmFtZX1fZGVsZXRlYCwgZG9jKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0ZXJyb3I6IChlcnI6IHVua25vd24pID0+IHtcclxuXHRcdFx0XHRpZiAob3B0aW9ucy5lcnJDYWxsYmFjaykge1xyXG5cdFx0XHRcdFx0b3B0aW9ucy5lcnJDYWxsYmFjayhlcnIpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdH0pO1xyXG5cclxuXHRcdHJldHVybiBvYnMgYXMgT2JzZXJ2YWJsZTxEb2N1bWVudD47XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBGaWx0ZXJzIGRvY3VtZW50cyBiYXNlZCBvbiBzcGVjaWZpYyBjb25kaXRpb25zIGFuZCBzdG9yZXMgdGhlIHJlc3VsdCBpbiBhIHByb3ZpZGVkIG9iamVjdC5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBzdG9yZU9iamVjdCAtIE9iamVjdCB0byBzdG9yZSBmaWx0ZXJlZCBkb2N1bWVudHMuXHJcblx0ICogQHBhcmFtIGZpZWxkIC0gVGhlIGZpZWxkIHRvIGZpbHRlciBieSBvciBhIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlIGZpZWxkLlxyXG5cdCAqIEBwYXJhbSB2YWxpZCAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRvIGNoZWNrIHRoZSB2YWxpZGl0eSBvZiBhIGRvY3VtZW50LlxyXG5cdCAqIEBwYXJhbSBzb3J0IC0gRnVuY3Rpb24gdG8gc29ydCB0aGUgZmlsdGVyZWQgZG9jdW1lbnRzLlxyXG5cdCAqIEByZXR1cm5zIEEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCB0cmlnZ2VycyB0aGUgZmlsdGVyaW5nIHByb2Nlc3MuXHJcblx0ICovXHJcblx0ZmlsdGVyZWREb2N1bWVudHMoXHJcblx0XHRzdG9yZU9iamVjdDogUmVjb3JkPHN0cmluZywgRG9jdW1lbnRbXT4sXHJcblx0XHRmaWVsZDogc3RyaW5nIHwgKChkb2M6IERvY3VtZW50KSA9PiBzdHJpbmcpID0gJ2F1dGhvcicsXHJcblx0XHR2YWxpZD86IChkb2M6IERvY3VtZW50KSA9PiBib29sZWFuLFxyXG5cdFx0c29ydDogKGE6IERvY3VtZW50LCBiOiBEb2N1bWVudCkgPT4gbnVtYmVyID0gKFxyXG5cdFx0XHRhOiBEb2N1bWVudCxcclxuXHRcdFx0YjogRG9jdW1lbnRcclxuXHRcdCkgPT4ge1xyXG5cdFx0XHRpZiAoKGEgYXMgYW55KVt0aGlzLl9pZChhKV0gPCAoYiBhcyBhbnkpW3RoaXMuX2lkKGIpXSkgcmV0dXJuIC0xO1xyXG5cclxuXHRcdFx0aWYgKChhIGFzIGFueSlbdGhpcy5faWQoYSldID4gKGIgYXMgYW55KVt0aGlzLl9pZChiKV0pIHJldHVybiAxO1xyXG5cclxuXHRcdFx0cmV0dXJuIDA7XHJcblx0XHR9XHJcblx0KTogKCkgPT4gdm9pZCB7XHJcblx0XHRjb25zdCBjYWxsYmFjayA9ICgpOiB2b2lkID0+IHtcclxuXHRcdFx0LyogcmVtb3ZlIGRvY3MgaWYgdGhleSB3ZXJlIHJlbW92ZWQgKi9cclxuXHRcdFx0Zm9yIChjb25zdCBwYXJlbnRJZCBpbiBzdG9yZU9iamVjdCkge1xyXG5cdFx0XHRcdGZvciAobGV0IGkgPSBzdG9yZU9iamVjdFtwYXJlbnRJZF0ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuXHRcdFx0XHRcdGNvbnN0IF9maWVsZCA9XHJcblx0XHRcdFx0XHRcdHR5cGVvZiBmaWVsZCA9PT0gJ2Z1bmN0aW9uJ1xyXG5cdFx0XHRcdFx0XHRcdD8gZmllbGQoc3RvcmVPYmplY3RbcGFyZW50SWRdW2ldKVxyXG5cdFx0XHRcdFx0XHRcdDogZmllbGQ7XHJcblx0XHRcdFx0XHRjb25zdCBfZG9jOiBhbnkgPSBzdG9yZU9iamVjdFtwYXJlbnRJZF1baV07XHJcblxyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHQhdGhpcy5fZG9jcy5maW5kKChkb2M6IGFueSkgPT5cclxuXHRcdFx0XHRcdFx0XHRBcnJheS5pc0FycmF5KGRvY1tfZmllbGRdKVxyXG5cdFx0XHRcdFx0XHRcdFx0PyBkb2NbX2ZpZWxkXS5pbmNsdWRlcyhfZG9jW3RoaXMuX2lkKGRvYyldKVxyXG5cdFx0XHRcdFx0XHRcdFx0OiBkb2NbX2ZpZWxkXSA9PT0gX2RvY1t0aGlzLl9pZChkb2MpXVxyXG5cdFx0XHRcdFx0XHQpXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0c3RvcmVPYmplY3RbcGFyZW50SWRdLnNwbGljZShpLCAxKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIGFkZCBkb2NzIGlmIHRoZXkgYXJlIG5vdCBhZGRlZCAqL1xyXG5cdFx0XHRmb3IgKGNvbnN0IGRvYyBvZiB0aGlzLl9kb2NzKSB7XHJcblx0XHRcdFx0Y29uc3QgX2ZpZWxkID0gdHlwZW9mIGZpZWxkID09PSAnZnVuY3Rpb24nID8gZmllbGQoZG9jKSA6IGZpZWxkO1xyXG5cclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHR0eXBlb2YgdmFsaWQgPT09ICdmdW5jdGlvbidcclxuXHRcdFx0XHRcdFx0PyAhdmFsaWQoZG9jKVxyXG5cdFx0XHRcdFx0XHQ6IEFycmF5LmlzQXJyYXkoKGRvYyBhcyBhbnkpW19maWVsZF0pXHJcblx0XHRcdFx0XHRcdD8gIShkb2MgYXMgYW55KVtfZmllbGRdPy5sZW5ndGhcclxuXHRcdFx0XHRcdFx0OiAhKGRvYyBhcyBhbnkpW19maWVsZF1cclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdGNvbnRpbnVlO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0aWYgKHR5cGVvZiBmaWVsZCA9PT0gJ2Z1bmN0aW9uJykge1xyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRmaWVsZChkb2MpICYmXHJcblx0XHRcdFx0XHRcdCFzdG9yZU9iamVjdFsoZG9jIGFzIGFueSlbX2ZpZWxkXV0uZmluZChcclxuXHRcdFx0XHRcdFx0XHQoYykgPT4gYy5faWQgPT09IGRvYy5faWRcclxuXHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdHN0b3JlT2JqZWN0Wyhkb2MgYXMgYW55KVtfZmllbGRdXS5wdXNoKGRvYyk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KChkb2MgYXMgYW55KVtfZmllbGRdKSkge1xyXG5cdFx0XHRcdFx0KGRvYyBhcyBhbnkpW19maWVsZF0uZm9yRWFjaCgoX2ZpZWxkOiBzdHJpbmcpID0+IHtcclxuXHRcdFx0XHRcdFx0c3RvcmVPYmplY3RbX2ZpZWxkXSA9IHN0b3JlT2JqZWN0W19maWVsZF0gfHwgW107XHJcblxyXG5cdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0IXN0b3JlT2JqZWN0W19maWVsZF0uZmluZCgoYykgPT4gYy5faWQgPT09IGRvYy5faWQpXHJcblx0XHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRcdHN0b3JlT2JqZWN0W19maWVsZF0ucHVzaChkb2MpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0c3RvcmVPYmplY3RbKGRvYyBhcyBhbnkpW19maWVsZF1dID1cclxuXHRcdFx0XHRcdFx0c3RvcmVPYmplY3RbKGRvYyBhcyBhbnkpW19maWVsZF1dIHx8IFtdO1xyXG5cclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0IXN0b3JlT2JqZWN0Wyhkb2MgYXMgYW55KVtfZmllbGRdXS5maW5kKFxyXG5cdFx0XHRcdFx0XHRcdChjKSA9PiBjLl9pZCA9PT0gZG9jLl9pZFxyXG5cdFx0XHRcdFx0XHQpXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0c3RvcmVPYmplY3RbKGRvYyBhcyBhbnkpW19maWVsZF1dLnB1c2goZG9jKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIHNvcnQgdGhlIGFycmF5J3MgKi9cclxuXHRcdFx0Zm9yIChjb25zdCBwYXJlbnRJZCBpbiBzdG9yZU9iamVjdCkge1xyXG5cdFx0XHRcdHN0b3JlT2JqZWN0W3BhcmVudElkXS5zb3J0KHNvcnQpO1xyXG5cdFx0XHR9XHJcblx0XHR9O1xyXG5cclxuXHRcdHRoaXMuX2ZpbHRlcmVkRG9jdW1lbnRzQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xyXG5cclxuXHRcdHJldHVybiBjYWxsYmFjaztcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdlbmVyYXRlcyBhIHVuaXF1ZSBJRCBmb3IgYSBkb2N1bWVudC5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBkb2MgLSBUaGUgZG9jdW1lbnQgZm9yIHdoaWNoIHRvIGdlbmVyYXRlIHRoZSBJRC5cclxuXHQgKiBAcmV0dXJucyBUaGUgdW5pcXVlIElEIGFzIGEgc3RyaW5nLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX2lkKGRvYzogRG9jdW1lbnQpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIChkb2MgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbXHJcblx0XHRcdHRoaXMuX2NvbmZpZy5faWQgfHwgJ19pZCdcclxuXHRcdF0/LnRvU3RyaW5nKCkgYXMgc3RyaW5nO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRXhlY3V0ZXMgYWxsIHJlZ2lzdGVyZWQgZmlsdGVyIGRvY3VtZW50IGNhbGxiYWNrcy5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9maWx0ZXJEb2N1bWVudHMoKTogdm9pZCB7XHJcblx0XHRmb3IgKGNvbnN0IGNhbGxiYWNrIG9mIHRoaXMuX2ZpbHRlcmVkRG9jdW1lbnRzQ2FsbGJhY2tzKSB7XHJcblx0XHRcdGNhbGxiYWNrKCk7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiJdfQ==
474
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2Fjb20vc3JjL2xpYi9zZXJ2aWNlcy9jcnVkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBb0I3Qzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sT0FBZ0IsV0FFcEIsU0FBUSxXQUFXO0lBK0JYO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFsQ1Q7O09BRUc7SUFDSyxJQUFJLEdBQUcsT0FBTyxDQUFDO0lBRXZCOztPQUVHO0lBQ0ssS0FBSyxHQUFlLEVBQUUsQ0FBQztJQUUvQjs7T0FFRztJQUNLLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFFdEI7O09BRUc7SUFDSywyQkFBMkIsR0FBbUIsRUFBRSxDQUFDO0lBRXpEOzs7Ozs7OztPQVFHO0lBQ0gsWUFDUyxPQUE2QixFQUM3QixLQUFrQixFQUNsQixNQUFvQixFQUNwQixNQUFvQixFQUNwQixLQUFrQjtRQUUxQixLQUFLLEVBQUUsQ0FBQztRQU5BLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBQzdCLFVBQUssR0FBTCxLQUFLLENBQWE7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUNwQixXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQ3BCLFVBQUssR0FBTCxLQUFLLENBQWE7UUFJMUIsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUUvQixxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDekQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMs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XG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4vaHR0cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi9hbGVydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29yZVNlcnZpY2UgfSBmcm9tICcuL2NvcmUuc2VydmljZSc7XHJcbmltcG9ydCB7IENydWREb2N1bWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvY3J1ZC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4vYmFzZS5zZXJ2aWNlJztcclxuXHJcbmludGVyZmFjZSBDcnVkT3B0aW9uczxEb2N1bWVudD4ge1xyXG5cdG5hbWU/OiBzdHJpbmc7XHJcblx0YWxlcnQ/OiBzdHJpbmc7XHJcblx0Y2FsbGJhY2s/OiAocmVzcDogRG9jdW1lbnQgfCBEb2N1bWVudFtdKSA9PiB2b2lkO1xyXG5cdGVyckNhbGxiYWNrPzogKHJlc3A6IHVua25vd24pID0+IHZvaWQ7XHJcbn1cclxuXHJcbmludGVyZmFjZSBDcnVkQ29uZmlnPERvY3VtZW50PiB7XHJcblx0bmFtZTogc3RyaW5nO1xyXG5cdF9pZD86IHN0cmluZztcclxuXHRyZXBsYWNlPzogKGRvYzogRG9jdW1lbnQpID0+IHZvaWQ7XHJcbn1cclxuXHJcbmludGVyZmFjZSBHZXRDb25maWcge1xyXG5cdHBhZ2U/OiBudW1iZXI7XHJcblx0cGVyUGFnZT86IG51bWJlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIEFic3RyYWN0IGNsYXNzIHJlcHJlc2VudGluZyBhIENSVUQgKENyZWF0ZSwgUmVhZCwgVXBkYXRlLCBEZWxldGUpIHNlcnZpY2UuXHJcbiAqXHJcbiAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgbWV0aG9kcyBmb3IgbWFuYWdpbmcgZG9jdW1lbnRzLCBpbnRlcmFjdGluZyB3aXRoIGFuIEFQSSxcclxuICogYW5kIHN0b3JpbmcvcmV0cmlldmluZyBkYXRhIGZyb20gbG9jYWwgc3RvcmFnZS4gSXQgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5kZWRcclxuICogZm9yIHNwZWNpZmljIGRvY3VtZW50IHR5cGVzLlxyXG4gKlxyXG4gKiBAdGVtcGxhdGUgRG9jdW1lbnQgLSBUaGUgdHlwZSBvZiB0aGUgZG9jdW1lbnQgdGhlIHNlcnZpY2UgaGFuZGxlcy5cclxuICovXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDcnVkU2VydmljZTxcclxuXHREb2N1bWVudCBleHRlbmRzIENydWREb2N1bWVudFxyXG4+IGV4dGVuZHMgQmFzZVNlcnZpY2Uge1xyXG5cdC8qKlxyXG5cdCAqIFVSTCBmb3IgdGhlIEFQSS5cclxuXHQgKi9cclxuXHRwcml2YXRlIF91cmwgPSAnL2FwaS8nO1xyXG5cclxuXHQvKipcclxuXHQgKiBBcnJheSBvZiBkb2N1bWVudHMgbWFuYWdlZCBieSB0aGlzIHNlcnZpY2UuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfZG9jczogRG9jdW1lbnRbXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBOdW1iZXIgb2YgZG9jdW1lbnRzIHBlciBwYWdlLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX3BlclBhZ2UgPSAyMDtcclxuXHJcblx0LyoqXHJcblx0ICogQ2FsbGJhY2tzIGZvciBmaWx0ZXJpbmcgZG9jdW1lbnRzLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX2ZpbHRlcmVkRG9jdW1lbnRzQ2FsbGJhY2tzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RzIGEgQ1JVRCBzZXJ2aWNlIGluc3RhbmNlLlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIF9jb25maWcgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBDUlVEIHNlcnZpY2UuXHJcblx0ICogQHBhcmFtIF9odHRwIC0gU2VydmljZSB0byBoYW5kbGUgSFRUUCByZXF1ZXN0cy5cclxuXHQgKiBAcGFyYW0gX3N0b3JlIC0gU2VydmljZSB0byBtYW5hZ2UgbG9jYWwgc3RvcmFnZSBvZiBkb2N1bWVudHMuXHJcblx0ICogQHBhcmFtIF9hbGVydCAtIFNlcnZpY2UgdG8gZGlzcGxheSBhbGVydHMuXHJcblx0ICogQHBhcmFtIF9jb3JlIC0gQ29yZSBzZXJ2aWNlIGZvciB1dGlsaXR5IGZ1bmN0aW9ucy5cclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgX2NvbmZpZzogQ3J1ZENvbmZpZzxEb2N1bWVudD4sXHJcblx0XHRwcml2YXRlIF9odHRwOiBIdHRwU2VydmljZSxcclxuXHRcdHByaXZhdGUgX3N0b3JlOiBTdG9yZVNlcnZpY2UsXHJcblx0XHRwcml2YXRlIF9hbGVydDogQWxlcnRTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfY29yZTogQ29yZVNlcnZpY2VcclxuXHQpIHtcclxuXHRcdHN1cGVyKCk7XHJcblxyXG5cdFx0dGhpcy5fdXJsICs9IHRoaXMuX2NvbmZpZy5uYW1lO1xyXG5cclxuXHRcdC8vIExvYWQgZG9jdW1lbnRzIGZyb20gbG9jYWwgc3RvcmFnZS5cclxuXHRcdHRoaXMuX3N0b3JlLmdldEpzb24oJ2RvY3NfJyArIHRoaXMuX2NvbmZpZy5uYW1lLCAoZG9jcykgPT4ge1xyXG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShkb2NzKSkge1xyXG5cdFx0XHRcdHRoaXMuX2RvY3MucHVzaCguLi5kb2NzKTtcclxuXHJcblx0XHRcdFx0dGhpcy5fZmlsdGVyRG9jdW1lbnRzKCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdHRoaXMuX2NvcmUub24oJ3dpcGUnKS5zdWJzY3JpYmUoKCk6IHZvaWQgPT4ge1xyXG5cdFx0XHR0aGlzLl9kb2NzLnNwbGljZSgwLCB0aGlzLl9kb2NzLmxlbmd0aCk7XHJcblxyXG5cdFx0XHR0aGlzLl9maWx0ZXJEb2N1bWVudHMoKTtcclxuXHJcblx0XHRcdHRoaXMuc2V0RG9jcygpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTYXZlcyB0aGUgY3VycmVudCBzZXQgb2YgZG9jdW1lbnRzIHRvIGxvY2FsIHN0b3JhZ2UuXHJcblx0ICovXHJcblx0c2V0RG9jcygpOiB2b2lkIHtcclxuXHRcdHRoaXMuX3N0b3JlLnNldEpzb24oJ2RvY3NfJyArIHRoaXMuX2NvbmZpZy5uYW1lLCB0aGlzLl9kb2NzKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBsaXN0IG9mIGRvY3VtZW50cy5cclxuXHQgKlxyXG5cdCAqIEByZXR1cm5zIFRoZSBsaXN0IG9mIGRvY3VtZW50cy5cclxuXHQgKi9cclxuXHRnZXREb2NzKCk6IERvY3VtZW50W10ge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2RvY3M7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBZGRzIG11bHRpcGxlIGRvY3VtZW50cyB0byB0aGUgc2VydmljZSBhbmQgc2F2ZXMgdGhlbSB0byBsb2NhbCBzdG9yYWdlLlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIGRvY3MgLSBBbiBhcnJheSBvZiBkb2N1bWVudHMgdG8gYWRkLlxyXG5cdCAqL1xyXG5cdGFkZERvY3MoZG9jczogRG9jdW1lbnRbXSk6IHZvaWQge1xyXG5cdFx0aWYgKEFycmF5LmlzQXJyYXkoZG9jcykpIHtcclxuXHRcdFx0Zm9yIChjb25zdCBkb2Mgb2YgZG9jcykge1xyXG5cdFx0XHRcdHRoaXMuYWRkRG9jKGRvYyk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFkZHMgYSBzaW5nbGUgZG9jdW1lbnQgdG8gdGhlIHNlcnZpY2UuIElmIGl0IGFscmVhZHkgZXhpc3RzLCBpdCB3aWxsIGJlIHVwZGF0ZWQuXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gZG9jIC0gVGhlIGRvY3VtZW50IHRvIGFkZC5cclxuXHQgKi9cclxuXHRhZGREb2MoZG9jOiBEb2N1bWVudCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuX2NvbmZpZy5yZXBsYWNlKSB7XHJcblx0XHRcdHRoaXMuX2NvbmZpZy5yZXBsYWNlKGRvYyk7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgZXhpc3RpbmdEb2MgPSB0aGlzLl9kb2NzLmZpbmQoXHJcblx0XHRcdChkKSA9PiB0aGlzLl9pZChkKSA9PT0gdGhpcy5faWQoZG9jKVxyXG5cdFx0KTtcclxuXHJcblx0XHRpZiAoZXhpc3RpbmdEb2MpIHtcclxuXHRcdFx0Ly8gVXBkYXRlIHRoZSBleGlzdGluZyBkb2N1bWVudFxyXG5cdFx0XHR0aGlzLl9jb3JlLmNvcHkoZG9jLCBleGlzdGluZ0RvYyk7XHJcblx0XHRcdHRoaXMuX2NvcmUuY29weShleGlzdGluZ0RvYywgZG9jKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdC8vIEFkZCBuZXcgZG9jdW1lbnRcclxuXHRcdFx0dGhpcy5fZG9jcy5wdXNoKGRvYyk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5zZXREb2NzKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDcmVhdGVzIGEgbmV3IGRvY3VtZW50IHdpdGggYSB0ZW1wb3JhcnkgSUQgYW5kIHN0YXR1cyBmbGFncy5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBkb2MgLSBPcHRpb25hbCBiYXNlIGRvY3VtZW50IHRvIHVzZSBmb3IgdGhlIG5ldyBkb2N1bWVudC5cclxuXHQgKiBAcmV0dXJucyBBIG5ldyBkb2N1bWVudCBpbnN0YW5jZSB3aXRoIGRlZmF1bHQgcHJvcGVydGllcy5cclxuXHQgKi9cclxuXHRuZXcoZG9jOiBEb2N1bWVudCA9IHt9IGFzIERvY3VtZW50KTogRG9jdW1lbnQge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0Li4uZG9jLFxyXG5cdFx0XHRfaWQ6IERhdGUubm93KCkudG9TdHJpbmcoKSxcclxuXHRcdFx0X19jcmVhdGVkOiBmYWxzZSxcclxuXHRcdFx0X19tb2RpZmllZDogZmFsc2UsXHJcblx0XHR9IGFzIERvY3VtZW50O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmV0cmlldmVzIGEgZG9jdW1lbnQgYnkgaXRzIHVuaXF1ZSBJRCBvciBjcmVhdGVzIGEgbmV3IG9uZSBpZiBpdCBkb2Vzbid0IGV4aXN0LlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIF9pZCAtIFRoZSBkb2N1bWVudCBJRCB0byBzZWFyY2ggZm9yLlxyXG5cdCAqIEByZXR1cm5zIFRoZSBmb3VuZCBkb2N1bWVudCBvciBhIG5ldyBkb2N1bWVudCBpZiBub3QgZm91bmQuXHJcblx0ICovXHJcblx0ZG9jKF9pZDogc3RyaW5nKTogRG9jdW1lbnQge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2RvY3MuZmluZCgoZCkgPT4gdGhpcy5faWQoZCkgPT09IF9pZCkgfHwgdGhpcy5uZXcoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldHMgdGhlIG51bWJlciBvZiBkb2N1bWVudHMgdG8gZGlzcGxheSBwZXIgcGFnZS5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBfcGVyUGFnZSAtIE51bWJlciBvZiBkb2N1bWVudHMgcGVyIHBhZ2UuXHJcblx0ICovXHJcblx0c2V0UGVyUGFnZShfcGVyUGFnZTogbnVtYmVyKTogdm9pZCB7XHJcblx0XHR0aGlzLl9wZXJQYWdlID0gX3BlclBhZ2U7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBGZXRjaGVzIGEgbGlzdCBvZiBkb2N1bWVudHMgZnJvbSB0aGUgQVBJIHdpdGggb3B0aW9uYWwgcGFnaW5hdGlvbi5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBjb25maWcgLSBPcHRpb25hbCBwYWdpbmF0aW9uIGNvbmZpZ3VyYXRpb24uXHJcblx0ICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBjYWxsYmFjayBhbmQgZXJyb3IgaGFuZGxpbmcgY29uZmlndXJhdGlvbi5cclxuXHQgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgbGlzdCBvZiBkb2N1bWVudHMuXHJcblx0ICovXHJcblx0Z2V0KFxyXG5cdFx0Y29uZmlnOiBHZXRDb25maWcgPSB7fSxcclxuXHRcdG9wdGlvbnM6IENydWRPcHRpb25zPERvY3VtZW50PiA9IHt9XHJcblx0KTogT2JzZXJ2YWJsZTxEb2N1bWVudFtdPiB7XHJcblx0XHRjb25zdCB1cmwgPSBgJHt0aGlzLl91cmx9L2dldCR7b3B0aW9ucy5uYW1lIHx8ICcnfWA7XHJcblxyXG5cdFx0Y29uc3QgcGFyYW1zID1cclxuXHRcdFx0dHlwZW9mIGNvbmZpZy5wYWdlID09PSAnbnVtYmVyJ1xyXG5cdFx0XHRcdD8gYD9za2lwPSR7dGhpcy5fcGVyUGFnZSAqIChjb25maWcucGFnZSAtIDEpfSZsaW1pdD0ke1xyXG5cdFx0XHRcdFx0XHR0aGlzLl9wZXJQYWdlXHJcblx0XHRcdFx0ICB9YFxyXG5cdFx0XHRcdDogJyc7XHJcblxyXG5cdFx0Y29uc3Qgb2JzID0gdGhpcy5faHR0cC5nZXQoYCR7dXJsfSR7cGFyYW1zfWApO1xyXG5cclxuXHRcdG9icy5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAocmVzcDogdW5rbm93bik6IHZvaWQgPT4ge1xyXG5cdFx0XHRcdChyZXNwIGFzIERvY3VtZW50W10pLmZvckVhY2goKGRvYykgPT4gdGhpcy5hZGREb2MoZG9jKSk7XHJcblxyXG5cdFx0XHRcdGlmIChvcHRpb25zLmNhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRvcHRpb25zLmNhbGxiYWNrKHJlc3AgYXMgRG9jdW1lbnRbXSk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRpZiAodHlwZW9mIGNvbmZpZy5wYWdlICE9PSAnbnVtYmVyJykge1xyXG5cdFx0XHRcdFx0dGhpcy5fZmlsdGVyRG9jdW1lbnRzKCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKGVycjogdW5rbm93bik6IHZvaWQgPT4ge1xyXG5cdFx0XHRcdGlmIChvcHRpb25zLmVyckNhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRvcHRpb25zLmVyckNhbGxiYWNrKGVycik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0fSk7XHJcblxyXG5cdFx0cmV0dXJuIG9icyBhcyBPYnNlcnZhYmxlPERvY3VtZW50W10+O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2VuZHMgYSByZXF1ZXN0IHRvIHRoZSBBUEkgdG8gY3JlYXRlIGEgbmV3IGRvY3VtZW50LlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIGRvYyAtIFRoZSBkb2N1bWVudCB0byBjcmVhdGUuXHJcblx0ICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBjYWxsYmFjayBhbmQgZXJyb3IgaGFuZGxpbmcgY29uZmlndXJhdGlvbi5cclxuXHQgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgY3JlYXRlZCBkb2N1bWVudCwgb3Igdm9pZCBpZiBhbHJlYWR5IGNyZWF0ZWQuXHJcblx0ICovXHJcblx0Y3JlYXRlKFxyXG5cdFx0ZG9jOiBEb2N1bWVudCxcclxuXHRcdG9wdGlvbnM6IENydWRPcHRpb25zPERvY3VtZW50PiA9IHt9XHJcblx0KTogT2JzZXJ2YWJsZTxEb2N1bWVudD4gfCB2b2lkIHtcclxuXHRcdGlmIChkb2MuX19jcmVhdGVkKSByZXR1cm47XHJcblxyXG5cdFx0ZG9jLl9fY3JlYXRlZCA9IHRydWU7XHJcblxyXG5cdFx0Y29uc3Qgb2JzID0gdGhpcy5faHR0cC5wb3N0KFxyXG5cdFx0XHRgJHt0aGlzLl91cmx9L2NyZWF0ZSR7b3B0aW9ucy5uYW1lIHx8ICcnfWAsXHJcblx0XHRcdGRvY1xyXG5cdFx0KTtcclxuXHJcblx0XHRvYnMuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3A6IHVua25vd24pID0+IHtcclxuXHRcdFx0XHRpZiAocmVzcCkge1xyXG5cdFx0XHRcdFx0dGhpcy5fY29yZS5jb3B5KHJlc3AsIGRvYyk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5hZGREb2MoZG9jKTtcclxuXHJcblx0XHRcdFx0XHR0aGlzLl9maWx0ZXJEb2N1bWVudHMoKTtcclxuXHJcblx0XHRcdFx0XHRpZiAob3B0aW9ucy5jYWxsYmFjaykge1xyXG5cdFx0XHRcdFx0XHRvcHRpb25zLmNhbGxiYWNrKGRvYyk7XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0aWYgKG9wdGlvbnMuYWxlcnQpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5fYWxlcnQuc2hvdyh7XHJcblx0XHRcdFx0XHRcdFx0dW5pcXVlOiBgJHt0aGlzLl9jb25maWcubmFtZX1jcmVhdGVgLFxyXG5cdFx0XHRcdFx0XHRcdHRleHQ6IG9wdGlvbnMuYWxlcnQsXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRkb2MuX19jcmVhdGVkID0gZmFsc2U7XHJcblxyXG5cdFx0XHRcdFx0aWYgKG9wdGlvbnMuZXJyQ2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdFx0b3B0aW9ucy5lcnJDYWxsYmFjayhyZXNwKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdHRoaXMuX2NvcmUuZW1pdChgJHt0aGlzLl9jb25maWcubmFtZX1fY3JlYXRlYCwgZG9jKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0ZXJyb3I6IChlcnI6IHVua25vd24pID0+IHtcclxuXHRcdFx0XHRkb2MuX19jcmVhdGVkID0gZmFsc2U7XHJcblxyXG5cdFx0XHRcdGlmIChvcHRpb25zLmVyckNhbGxiYWNrKSBvcHRpb25zLmVyckNhbGxiYWNrKGVycik7XHJcblx0XHRcdH0sXHJcblx0XHR9KTtcclxuXHRcdHJldHVybiBvYnMgYXMgT2JzZXJ2YWJsZTxEb2N1bWVudD47XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBGZXRjaGVzIGEgZG9jdW1lbnQgZnJvbSB0aGUgQVBJIGJhc2VkIG9uIGEgcXVlcnkuXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gcXVlcnkgLSBUaGUgcXVlcnkgb2JqZWN0IHVzZWQgdG8gZmlsdGVyIGRvY3VtZW50cy5cclxuXHQgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIGNhbGxiYWNrIGFuZCBlcnJvciBoYW5kbGluZyBjb25maWd1cmF0aW9uLlxyXG5cdCAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBmZXRjaGVkIGRvY3VtZW50LlxyXG5cdCAqL1xyXG5cdGZldGNoKFxyXG5cdFx0cXVlcnk6IG9iamVjdCA9IHt9LFxyXG5cdFx0b3B0aW9uczogQ3J1ZE9wdGlvbnM8RG9jdW1lbnQ+ID0ge31cclxuXHQpOiBPYnNlcnZhYmxlPERvY3VtZW50PiB7XHJcblx0XHRjb25zdCBvYnMgPSB0aGlzLl9odHRwLnBvc3QoXHJcblx0XHRcdGAke3RoaXMuX3VybH0vZmV0Y2gke29wdGlvbnMubmFtZSB8fCAnJ31gLFxyXG5cdFx0XHRxdWVyeVxyXG5cdFx0KTtcclxuXHJcblx0XHRvYnMuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3A6IHVua25vd24pID0+IHtcclxuXHRcdFx0XHRpZiAocmVzcCkge1xyXG5cdFx0XHRcdFx0dGhpcy5hZGREb2MocmVzcCBhcyBEb2N1bWVudCk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5fZmlsdGVyRG9jdW1lbnRzKCk7XHJcblxyXG5cdFx0XHRcdFx0aWYgKG9wdGlvbnMuY2FsbGJhY2spIG9wdGlvbnMuY2FsbGJhY2socmVzcCBhcyBEb2N1bWVudCk7XHJcblxyXG5cdFx0XHRcdFx0aWYgKG9wdGlvbnMuYWxlcnQpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5fYWxlcnQuc2hvdyh7XHJcblx0XHRcdFx0XHRcdFx0dW5pcXVlOiBgJHt0aGlzLl9jb25maWcubmFtZX1jcmVhdGVgLFxyXG5cdFx0XHRcdFx0XHRcdHRleHQ6IG9wdGlvbnMuYWxlcnQsXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRpZiAob3B0aW9ucy5lcnJDYWxsYmFjaykge1xyXG5cdFx0XHRcdFx0XHRvcHRpb25zLmVyckNhbGxiYWNrKHJlc3AgYXMgRG9jdW1lbnQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0ZXJyb3I6IChlcnI6IHVua25vd24pID0+IHtcclxuXHRcdFx0XHRpZiAob3B0aW9ucy5lcnJDYWxsYmFjaykge1xyXG5cdFx0XHRcdFx0b3B0aW9ucy5lcnJDYWxsYmFjayhlcnIpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdH0pO1xyXG5cdFx0cmV0dXJuIG9icyBhcyBPYnNlcnZhYmxlPERvY3VtZW50PjtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVwZGF0ZXMgYSBkb2N1bWVudCBhZnRlciBhIHNwZWNpZmllZCBkZWxheS5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBkb2MgLSBUaGUgZG9jdW1lbnQgdG8gdXBkYXRlLlxyXG5cdCAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgY2FsbGJhY2sgYW5kIGVycm9yIGhhbmRsaW5nIGNvbmZpZ3VyYXRpb24uXHJcblx0ICovXHJcblx0dXBkYXRlQWZ0ZXJXaGlsZShkb2M6IERvY3VtZW50LCBvcHRpb25zOiBDcnVkT3B0aW9uczxEb2N1bWVudD4gPSB7fSk6IHZvaWQge1xyXG5cdFx0ZG9jLl9fbW9kaWZpZWQgPSB0cnVlO1xyXG5cclxuXHRcdHRoaXMuX2NvcmUuYWZ0ZXJXaGlsZSh0aGlzLl9pZChkb2MpLCAoKSA9PiB7XHJcblx0XHRcdHRoaXMudXBkYXRlKGRvYywgb3B0aW9ucyk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVwZGF0ZXMgYSBkb2N1bWVudCBpbiB0aGUgQVBJLlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIGRvYyAtIFRoZSBkb2N1bWVudCB0byB1cGRhdGUuXHJcblx0ICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBjYWxsYmFjayBhbmQgZXJyb3IgaGFuZGxpbmcgY29uZmlndXJhdGlvbi5cclxuXHQgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgdXBkYXRlZCBkb2N1bWVudC5cclxuXHQgKi9cclxuXHR1cGRhdGUoXHJcblx0XHRkb2M6IERvY3VtZW50LFxyXG5cdFx0b3B0aW9uczogQ3J1ZE9wdGlvbnM8RG9jdW1lbnQ+ID0ge31cclxuXHQpOiBPYnNlcnZhYmxlPERvY3VtZW50PiB7XHJcblx0XHRkb2MuX19tb2RpZmllZCA9IHRydWU7XHJcblxyXG5cdFx0Y29uc3Qgb2JzID0gdGhpcy5faHR0cC5wb3N0KFxyXG5cdFx0XHRgJHt0aGlzLl91cmx9L3VwZGF0ZSR7b3B0aW9ucy5uYW1lIHx8ICcnfWAsXHJcblx0XHRcdGRvY1xyXG5cdFx0KTtcclxuXHJcblx0XHRvYnMuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3A6IHVua25vd24pID0+IHtcclxuXHRcdFx0XHRpZiAocmVzcCkge1xyXG5cdFx0XHRcdFx0ZG9jLl9fbW9kaWZpZWQgPSBmYWxzZTtcclxuXHJcblx0XHRcdFx0XHR0aGlzLl9jb3JlLmNvcHkocmVzcCwgZG9jKTtcclxuXHJcblx0XHRcdFx0XHRpZiAob3B0aW9ucy5jYWxsYmFjaykge1xyXG5cdFx0XHRcdFx0XHRvcHRpb25zLmNhbGxiYWNrKGRvYyk7XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0aWYgKG9wdGlvbnMuYWxlcnQpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5fYWxlcnQuc2hvdyh7XHJcblx0XHRcdFx0XHRcdFx0dW5pcXVlOiBgJHt0aGlzLl9jb25maWcubmFtZX11cGRhdGVgLFxyXG5cdFx0XHRcdFx0XHRcdHRleHQ6IG9wdGlvbnMuYWxlcnQsXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRpZiAob3B0aW9ucy5lcnJDYWxsYmFjaykge1xyXG5cdFx0XHRcdFx0XHRvcHRpb25zLmVyckNhbGxiYWNrKHJlc3ApO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0dGhpcy5fY29yZS5lbWl0KGAke3RoaXMuX2NvbmZpZy5uYW1lfV91cGRhdGVgLCBkb2MpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKGVycjogdW5rbm93bikgPT4ge1xyXG5cdFx0XHRcdGlmIChvcHRpb25zLmVyckNhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRvcHRpb25zLmVyckNhbGxiYWNrKGVycik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0fSk7XHJcblxyXG5cdFx0cmV0dXJuIG9icyBhcyBPYnNlcnZhYmxlPERvY3VtZW50PjtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVuaXF1ZSB1cGRhdGUgYSBkb2N1bWVudCBmaWVsZCBpbiB0aGUgQVBJLlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIGRvYyAtIFRoZSBkb2N1bWVudCB0byB1cGRhdGUuXHJcblx0ICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBjYWxsYmFjayBhbmQgZXJyb3IgaGFuZGxpbmcgY29uZmlndXJhdGlvbi5cclxuXHQgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgdXBkYXRlZCBkb2N1bWVudC5cclxuXHQgKi9cclxuXHR1bmlxdWUoXHJcblx0XHRkb2M6IERvY3VtZW50LFxyXG5cdFx0b3B0aW9uczogQ3J1ZE9wdGlvbnM8RG9jdW1lbnQ+ID0ge31cclxuXHQpOiBPYnNlcnZhYmxlPERvY3VtZW50PiB7XHJcblx0XHRkb2MuX19tb2RpZmllZCA9IHRydWU7XHJcblxyXG5cdFx0Y29uc3Qgb2JzID0gdGhpcy5faHR0cC5wb3N0KFxyXG5cdFx0XHRgJHt0aGlzLl91cmx9L3VuaXF1ZSR7b3B0aW9ucy5uYW1lIHx8ICcnfWAsXHJcblx0XHRcdGRvY1xyXG5cdFx0KTtcclxuXHJcblx0XHRvYnMuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3A6IHVua25vd24pID0+IHtcclxuXHRcdFx0XHRpZiAocmVzcCkge1xyXG5cdFx0XHRcdFx0ZG9jLl9fbW9kaWZpZWQgPSBmYWxzZTtcclxuXHJcblx0XHRcdFx0XHQoZG9jIGFzIGFueSlbb3B0aW9ucy5uYW1lIGFzIHN0cmluZ10gPSByZXNwO1xyXG5cclxuXHRcdFx0XHRcdGlmIChvcHRpb25zLmNhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRcdG9wdGlvbnMuY2FsbGJhY2soZG9jKTtcclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRpZiAob3B0aW9ucy5hbGVydCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLl9hbGVydC5zaG93KHtcclxuXHRcdFx0XHRcdFx0XHR1bmlxdWU6IGAke3RoaXMuX2NvbmZpZy5uYW1lfXVuaXF1ZWAsXHJcblx0XHRcdFx0XHRcdFx0dGV4dDogb3B0aW9ucy5hbGVydCxcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGlmIChvcHRpb25zLmVyckNhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRcdG9wdGlvbnMuZXJyQ2FsbGJhY2socmVzcCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHR0aGlzLl9jb3JlLmVtaXQoYCR7dGhpcy5fY29uZmlnLm5hbWV9X3VuaXF1ZWAsIGRvYyk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGVycm9yOiAoZXJyOiB1bmtub3duKSA9PiB7XHJcblx0XHRcdFx0aWYgKG9wdGlvbnMuZXJyQ2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdG9wdGlvbnMuZXJyQ2FsbGJhY2soZXJyKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHR9KTtcclxuXHJcblx0XHRyZXR1cm4gb2JzIGFzIE9ic2VydmFibGU8RG9jdW1lbnQ+O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRGVsZXRlcyBhIGRvY3VtZW50IGZyb20gdGhlIEFQSS5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBkb2MgLSBUaGUgZG9jdW1lbnQgdG8gZGVsZXRlLlxyXG5cdCAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgY2FsbGJhY2sgYW5kIGVycm9yIGhhbmRsaW5nIGNvbmZpZ3VyYXRpb24uXHJcblx0ICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGRlbGV0ZWQgZG9jdW1lbnQuXHJcblx0ICovXHJcblx0ZGVsZXRlKFxyXG5cdFx0ZG9jOiBEb2N1bWVudCxcclxuXHRcdG9wdGlvbnM6IENydWRPcHRpb25zPERvY3VtZW50PiA9IHt9XHJcblx0KTogT2JzZXJ2YWJsZTxEb2N1bWVudD4ge1xyXG5cdFx0Y29uc3Qgb2JzID0gdGhpcy5faHR0cC5wb3N0KFxyXG5cdFx0XHRgJHt0aGlzLl91cmx9L2RlbGV0ZSR7b3B0aW9ucy5uYW1lIHx8ICcnfWAsXHJcblx0XHRcdGRvY1xyXG5cdFx0KTtcclxuXHJcblx0XHRvYnMuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3A6IHVua25vd24pID0+IHtcclxuXHRcdFx0XHRpZiAocmVzcCkge1xyXG5cdFx0XHRcdFx0dGhpcy5fZG9jcy5zcGxpY2UoXHJcblx0XHRcdFx0XHRcdHRoaXMuX2RvY3MuZmluZEluZGV4KFxyXG5cdFx0XHRcdFx0XHRcdChkKSA9PiB0aGlzLl9pZChkKSAhPT0gdGhpcy5faWQoZG9jKVxyXG5cdFx0XHRcdFx0XHQpLFxyXG5cdFx0XHRcdFx0XHQxXHJcblx0XHRcdFx0XHQpO1xyXG5cclxuXHRcdFx0XHRcdHRoaXMuc2V0RG9jcygpO1xyXG5cclxuXHRcdFx0XHRcdHRoaXMuX2ZpbHRlckRvY3VtZW50cygpO1xyXG5cclxuXHRcdFx0XHRcdGlmIChvcHRpb25zLmNhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRcdG9wdGlvbnMuY2FsbGJhY2soZG9jKTtcclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRpZiAob3B0aW9ucy5hbGVydCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLl9hbGVydC5zaG93KHtcclxuXHRcdFx0XHRcdFx0XHR1bmlxdWU6IGAke3RoaXMuX2NvbmZpZy5uYW1lfWRlbGV0ZWAsXHJcblx0XHRcdFx0XHRcdFx0dGV4dDogb3B0aW9ucy5hbGVydCxcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGlmIChvcHRpb25zLmVyckNhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRcdG9wdGlvbnMuZXJyQ2FsbGJhY2socmVzcCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHR0aGlzLl9jb3JlLmVtaXQoYCR7dGhpcy5fY29uZmlnLm5hbWV9X2RlbGV0ZWAsIGRvYyk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGVycm9yOiAoZXJyOiB1bmtub3duKSA9PiB7XHJcblx0XHRcdFx0aWYgKG9wdGlvbnMuZXJyQ2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdG9wdGlvbnMuZXJyQ2FsbGJhY2soZXJyKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHR9KTtcclxuXHJcblx0XHRyZXR1cm4gb2JzIGFzIE9ic2VydmFibGU8RG9jdW1lbnQ+O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRmlsdGVycyBkb2N1bWVudHMgYmFzZWQgb24gc3BlY2lmaWMgY29uZGl0aW9ucyBhbmQgc3RvcmVzIHRoZSByZXN1bHQgaW4gYSBwcm92aWRlZCBvYmplY3QuXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gc3RvcmVPYmplY3QgLSBPYmplY3QgdG8gc3RvcmUgZmlsdGVyZWQgZG9jdW1lbnRzLlxyXG5cdCAqIEBwYXJhbSBmaWVsZCAtIFRoZSBmaWVsZCB0byBmaWx0ZXIgYnkgb3IgYSBmdW5jdGlvbiB0byBleHRyYWN0IHRoZSBmaWVsZC5cclxuXHQgKiBAcGFyYW0gdmFsaWQgLSBPcHRpb25hbCBmdW5jdGlvbiB0byBjaGVjayB0aGUgdmFsaWRpdHkgb2YgYSBkb2N1bWVudC5cclxuXHQgKiBAcGFyYW0gc29ydCAtIEZ1bmN0aW9uIHRvIHNvcnQgdGhlIGZpbHRlcmVkIGRvY3VtZW50cy5cclxuXHQgKiBAcmV0dXJucyBBIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgdHJpZ2dlcnMgdGhlIGZpbHRlcmluZyBwcm9jZXNzLlxyXG5cdCAqL1xyXG5cdGZpbHRlcmVkRG9jdW1lbnRzKFxyXG5cdFx0c3RvcmVPYmplY3Q6IFJlY29yZDxzdHJpbmcsIERvY3VtZW50W10+LFxyXG5cdFx0ZmllbGQ6IHN0cmluZyB8ICgoZG9jOiBEb2N1bWVudCkgPT4gc3RyaW5nKSA9ICdhdXRob3InLFxyXG5cdFx0dmFsaWQ/OiAoZG9jOiBEb2N1bWVudCkgPT4gYm9vbGVhbixcclxuXHRcdHNvcnQ6IChhOiBEb2N1bWVudCwgYjogRG9jdW1lbnQpID0+IG51bWJlciA9IChcclxuXHRcdFx0YTogRG9jdW1lbnQsXHJcblx0XHRcdGI6IERvY3VtZW50XHJcblx0XHQpID0+IHtcclxuXHRcdFx0aWYgKChhIGFzIGFueSlbdGhpcy5faWQoYSldIDwgKGIgYXMgYW55KVt0aGlzLl9pZChiKV0pIHJldHVybiAtMTtcclxuXHJcblx0XHRcdGlmICgoYSBhcyBhbnkpW3RoaXMuX2lkKGEpXSA+IChiIGFzIGFueSlbdGhpcy5faWQoYildKSByZXR1cm4gMTtcclxuXHJcblx0XHRcdHJldHVybiAwO1xyXG5cdFx0fVxyXG5cdCk6ICgpID0+IHZvaWQge1xyXG5cdFx0Y29uc3QgY2FsbGJhY2sgPSAoKTogdm9pZCA9PiB7XHJcblx0XHRcdC8qIHJlbW92ZSBkb2NzIGlmIHRoZXkgd2VyZSByZW1vdmVkICovXHJcblx0XHRcdGZvciAoY29uc3QgcGFyZW50SWQgaW4gc3RvcmVPYmplY3QpIHtcclxuXHRcdFx0XHRmb3IgKGxldCBpID0gc3RvcmVPYmplY3RbcGFyZW50SWRdLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcblx0XHRcdFx0XHRjb25zdCBfZmllbGQgPVxyXG5cdFx0XHRcdFx0XHR0eXBlb2YgZmllbGQgPT09ICdmdW5jdGlvbidcclxuXHRcdFx0XHRcdFx0XHQ/IGZpZWxkKHN0b3JlT2JqZWN0W3BhcmVudElkXVtpXSlcclxuXHRcdFx0XHRcdFx0XHQ6IGZpZWxkO1xyXG5cdFx0XHRcdFx0Y29uc3QgX2RvYzogYW55ID0gc3RvcmVPYmplY3RbcGFyZW50SWRdW2ldO1xyXG5cclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0IXRoaXMuX2RvY3MuZmluZCgoZG9jOiBhbnkpID0+XHJcblx0XHRcdFx0XHRcdFx0QXJyYXkuaXNBcnJheShkb2NbX2ZpZWxkXSlcclxuXHRcdFx0XHRcdFx0XHRcdD8gZG9jW19maWVsZF0uaW5jbHVkZXMoX2RvY1t0aGlzLl9pZChkb2MpXSlcclxuXHRcdFx0XHRcdFx0XHRcdDogZG9jW19maWVsZF0gPT09IF9kb2NbdGhpcy5faWQoZG9jKV1cclxuXHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdHN0b3JlT2JqZWN0W3BhcmVudElkXS5zcGxpY2UoaSwgMSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBhZGQgZG9jcyBpZiB0aGV5IGFyZSBub3QgYWRkZWQgKi9cclxuXHRcdFx0Zm9yIChjb25zdCBkb2Mgb2YgdGhpcy5fZG9jcykge1xyXG5cdFx0XHRcdGNvbnN0IF9maWVsZCA9IHR5cGVvZiBmaWVsZCA9PT0gJ2Z1bmN0aW9uJyA/IGZpZWxkKGRvYykgOiBmaWVsZDtcclxuXHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0dHlwZW9mIHZhbGlkID09PSAnZnVuY3Rpb24nXHJcblx0XHRcdFx0XHRcdD8gIXZhbGlkKGRvYylcclxuXHRcdFx0XHRcdFx0OiBBcnJheS5pc0FycmF5KChkb2MgYXMgYW55KVtfZmllbGRdKVxyXG5cdFx0XHRcdFx0XHQ/ICEoZG9jIGFzIGFueSlbX2ZpZWxkXT8ubGVuZ3RoXHJcblx0XHRcdFx0XHRcdDogIShkb2MgYXMgYW55KVtfZmllbGRdXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRjb250aW51ZTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdGlmICh0eXBlb2YgZmllbGQgPT09ICdmdW5jdGlvbicpIHtcclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0ZmllbGQoZG9jKSAmJlxyXG5cdFx0XHRcdFx0XHQhc3RvcmVPYmplY3RbKGRvYyBhcyBhbnkpW19maWVsZF1dLmZpbmQoXHJcblx0XHRcdFx0XHRcdFx0KGMpID0+IGMuX2lkID09PSBkb2MuX2lkXHJcblx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRzdG9yZU9iamVjdFsoZG9jIGFzIGFueSlbX2ZpZWxkXV0ucHVzaChkb2MpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSgoZG9jIGFzIGFueSlbX2ZpZWxkXSkpIHtcclxuXHRcdFx0XHRcdChkb2MgYXMgYW55KVtfZmllbGRdLmZvckVhY2goKF9maWVsZDogc3RyaW5nKSA9PiB7XHJcblx0XHRcdFx0XHRcdHN0b3JlT2JqZWN0W19maWVsZF0gPSBzdG9yZU9iamVjdFtfZmllbGRdIHx8IFtdO1xyXG5cclxuXHRcdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRcdCFzdG9yZU9iamVjdFtfZmllbGRdLmZpbmQoKGMpID0+IGMuX2lkID09PSBkb2MuX2lkKVxyXG5cdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRzdG9yZU9iamVjdFtfZmllbGRdLnB1c2goZG9jKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHN0b3JlT2JqZWN0Wyhkb2MgYXMgYW55KVtfZmllbGRdXSA9XHJcblx0XHRcdFx0XHRcdHN0b3JlT2JqZWN0Wyhkb2MgYXMgYW55KVtfZmllbGRdXSB8fCBbXTtcclxuXHJcblx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdCFzdG9yZU9iamVjdFsoZG9jIGFzIGFueSlbX2ZpZWxkXV0uZmluZChcclxuXHRcdFx0XHRcdFx0XHQoYykgPT4gYy5faWQgPT09IGRvYy5faWRcclxuXHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdHN0b3JlT2JqZWN0Wyhkb2MgYXMgYW55KVtfZmllbGRdXS5wdXNoKGRvYyk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBzb3J0IHRoZSBhcnJheSdzICovXHJcblx0XHRcdGZvciAoY29uc3QgcGFyZW50SWQgaW4gc3RvcmVPYmplY3QpIHtcclxuXHRcdFx0XHRzdG9yZU9iamVjdFtwYXJlbnRJZF0uc29ydChzb3J0KTtcclxuXHRcdFx0fVxyXG5cdFx0fTtcclxuXHJcblx0XHR0aGlzLl9maWx0ZXJlZERvY3VtZW50c0NhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcclxuXHJcblx0XHRyZXR1cm4gY2FsbGJhY2s7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZW5lcmF0ZXMgYSB1bmlxdWUgSUQgZm9yIGEgZG9jdW1lbnQuXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gZG9jIC0gVGhlIGRvY3VtZW50IGZvciB3aGljaCB0byBnZW5lcmF0ZSB0aGUgSUQuXHJcblx0ICogQHJldHVybnMgVGhlIHVuaXF1ZSBJRCBhcyBhIHN0cmluZy5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9pZChkb2M6IERvY3VtZW50KTogc3RyaW5nIHtcclxuXHRcdHJldHVybiAoZG9jIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW1xyXG5cdFx0XHR0aGlzLl9jb25maWcuX2lkIHx8ICdfaWQnXHJcblx0XHRdPy50b1N0cmluZygpIGFzIHN0cmluZztcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEV4ZWN1dGVzIGFsbCByZWdpc3RlcmVkIGZpbHRlciBkb2N1bWVudCBjYWxsYmFja3MuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfZmlsdGVyRG9jdW1lbnRzKCk6IHZvaWQge1xyXG5cdFx0Zm9yIChjb25zdCBjYWxsYmFjayBvZiB0aGlzLl9maWx0ZXJlZERvY3VtZW50c0NhbGxiYWNrcykge1xyXG5cdFx0XHRjYWxsYmFjaygpO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iXX0=
@@ -1138,6 +1138,11 @@ class CrudService extends BaseService {
1138
1138
  this._filterDocuments();
1139
1139
  }
1140
1140
  });
1141
+ this._core.on('wipe').subscribe(() => {
1142
+ this._docs.splice(0, this._docs.length);
1143
+ this._filterDocuments();
1144
+ this.setDocs();
1145
+ });
1141
1146
  }
1142
1147
  /**
1143
1148
  * Saves the current set of documents to local storage.