@solidev/data 0.0.2 → 0.0.4

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.
@@ -32,6 +32,9 @@ let AuthServiceBase = class AuthServiceBase {
32
32
  }
33
33
  get currentUser$() {
34
34
  // Needs refresh ?
35
+ if (this.isAnonymous) {
36
+ return of(null);
37
+ }
35
38
  if (!this._fetched ||
36
39
  Date.now() - this._fetched >
37
40
  (this._params.userFetchValiditySeconds || 3600) * 1000) {
@@ -208,4 +211,4 @@ AuthServiceBase = __decorate([
208
211
  __param(1, Inject(DATA_AUTH_PARAMS))
209
212
  ], AuthServiceBase);
210
213
  export { AuthServiceBase };
211
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL2F1dGgvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBSUwsR0FBRyxHQUNKLE1BQU0sT0FBTyxDQUFDO0FBRWYsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBYyxFQUFFLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQXdCakU7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FDaEQsa0JBQWtCLENBQ25CLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLGNBQWMsQ0FDdEQsd0JBQXdCLENBQ3pCLENBQUM7QUFFSyxJQUFNLGVBQWUsR0FBckIsTUFBTSxlQUFlO0lBVTFCLFlBQ3lDLFdBQXdCLEVBQzdCLE9BQW1CLEVBQzdDLE9BQWUsRUFDZixLQUFpQixFQUNqQixLQUF5QjtRQUpNLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQzdCLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDN0MsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBb0I7UUFUM0IsV0FBTSxHQUFHLElBQUksYUFBYSxDQUFjLENBQUMsQ0FBQyxDQUFDO1FBV2pELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM3QixD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R0FBRyxDQUFDLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUNILENBQUM7U0FDTDthQUFNO1lBQ0wsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNyQixPQUFPLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0NBQ0YsQ0FBQTtBQXZRWSxlQUFlO0lBV3ZCLFdBQUEsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUE7SUFDOUIsV0FBQSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtHQVpoQixlQUFlLENBdVEzQjtTQXZRWSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgSUp3dEJhc2VEYXRhLFxuICBJSnd0UmVmcmVzaFJlc3BvbnNlSnNvbixcbiAgSUp3dFJlc3BvbnNlSnNvbixcbiAgSnd0LFxufSBmcm9tICcuL2p3dCc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBSZXBsYXlTdWJqZWN0LCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYXRhTW9kZWwgfSBmcm9tICcuLi9kYXRhL2RhdGEtbW9kZWwnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4uL2RhdGEvZGF0YS1jb2xsZWN0aW9uJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBEYXRhTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi9tZXNzYWdlcy9tZXNzYWdlLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhQYXJhbXMge1xuICB0b2tlblVybDogc3RyaW5nO1xuICB0b2tlblJlZnJlc2hVcmw6IHN0cmluZztcbiAgcmVxdWVzdFJlYWN0aXZhdGVVcmw/OiBzdHJpbmc7XG4gIHByb2Nlc3NSZWFjdGl2YXRlVXJsPzogc3RyaW5nO1xuICByZXF1ZXN0UHdSZXNldFVybD86IHN0cmluZztcbiAgcHJvY2Vzc1B3UmVzZXRVcmw/OiBzdHJpbmc7XG4gIGxvZ2luRmllbGQ6IHN0cmluZztcbiAgcGFzc3dvcmRGaWVsZDogc3RyaW5nO1xuICB0b2tlbkZpZWxkOiBzdHJpbmc7XG4gIGxvZ2luUm91dGU6IHN0cmluZ1tdO1xuICBsb2dvdXRSb3V0ZTogc3RyaW5nW107XG4gIHB3cmVzZXRSb3V0ZT86IHN0cmluZ1tdO1xuICByZWFjdGl2YXRlUm91dGU/OiBzdHJpbmdbXTtcbiAgdXNlckZldGNoRmllbGRzPzogc3RyaW5nW107XG4gIHVzZXJGZXRjaFZhbGlkaXR5U2Vjb25kcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBEQVRBX0FQSV9VUkw6IHN0b3JlcyBkYXRhIGFwaSBiYXNlIHVybFxuICovXG5leHBvcnQgY29uc3QgREFUQV9BVVRIX1BBUkFNUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBdXRoUGFyYW1zPihcbiAgJ2RhdGEuYXV0aC5wYXJhbXMnXG4pO1xuZXhwb3J0IGNvbnN0IERBVEFfQVVUSF9VU0VSX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29sbGVjdGlvbjxhbnk+PihcbiAgJ2RhdGEuYXV0aC51c2VyLnNlcnZpY2UnXG4pO1xuXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2VCYXNlPFxuICBVc2VyIGV4dGVuZHMgRGF0YU1vZGVsLFxuICBVc2VyU2VydmljZSBleHRlbmRzIENvbGxlY3Rpb248VXNlcj4sXG4gIFVzZXJEYXRhIGV4dGVuZHMgSUp3dEJhc2VEYXRhXG4+IHtcbiAgcHJpdmF0ZSBfdXNlciE6IFVzZXI7XG4gIHByaXZhdGUgX3VzZXIkID0gbmV3IFJlcGxheVN1YmplY3Q8VXNlciB8IG51bGw+KDEpO1xuICBwcml2YXRlIF90b2tlbiE6IEp3dDxVc2VyRGF0YT47XG4gIHByaXZhdGUgX2ZldGNoZWQ/OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChEQVRBX0FVVEhfVVNFUl9TRVJWSUNFKSBwdWJsaWMgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoREFUQV9BVVRIX1BBUkFNUykgcHJpdmF0ZSBfcGFyYW1zOiBBdXRoUGFyYW1zLFxuICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBfbXNnczogRGF0YU1lc3NhZ2VTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuYXV0b0xvZ2luKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzQW5vbnltb3VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5fdG9rZW4uYWNjZXNzO1xuICB9XG5cbiAgcHVibGljIGdldCBhY2Nlc3NUb2tlbigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW4uYWNjZXNzID8gdGhpcy5fdG9rZW4uYWNjZXNzIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVmcmVzaFRva2VuKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl90b2tlbi5yZWZyZXNoID8gdGhpcy5fdG9rZW4ucmVmcmVzaCA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnRVc2VyKCk6IFVzZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdXNlciAmJiB0aGlzLl91c2VyLmlkID8gdGhpcy5fdXNlciA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnRVc2VyJCgpOiBPYnNlcnZhYmxlPFVzZXIgfCBudWxsPiB7XG4gICAgLy8gTmVlZHMgcmVmcmVzaCA/XG4gICAgaWYgKFxuICAgICAgIXRoaXMuX2ZldGNoZWQgfHxcbiAgICAgIERhdGUubm93KCkgLSB0aGlzLl9mZXRjaGVkID5cbiAgICAgICAgKHRoaXMuX3BhcmFtcy51c2VyRmV0Y2hWYWxpZGl0eVNlY29uZHMgfHwgMzYwMCkgKiAxMDAwXG4gICAgKSB7XG4gICAgICB0aGlzLl9mZXRjaGVkID0gRGF0ZS5ub3coKTtcbiAgICAgIHJldHVybiB0aGlzLl9mZXRjaFVzZXIoKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLl91c2VyJC5hc09ic2VydmFibGUoKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl91c2VyJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVmcmVzaFVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLl9wYXJhbXMudG9rZW5SZWZyZXNoVXJsfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvZ2luVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuX3BhcmFtcy50b2tlblVybH1gO1xuICB9XG5cbiAgcHVibGljIGdldCBsb2dpblJvdXRlKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyYW1zLmxvZ2luUm91dGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvZ291dFJvdXRlKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyYW1zLmxvZ291dFJvdXRlO1xuICB9XG5cbiAgcHVibGljIGdldCBwd3Jlc2V0Um91dGUoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9wYXJhbXMucHdyZXNldFJvdXRlO1xuICB9XG5cbiAgcHVibGljIGdldCByZWFjdGl2YXRlUm91dGUoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9wYXJhbXMucmVhY3RpdmF0ZVJvdXRlO1xuICB9XG5cbiAgcHVibGljIGxvZ291dCgpOiB2b2lkIHtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnYXV0aCcpO1xuICAgIHRoaXMuX3Rva2VuID0gbmV3IEp3dCgpO1xuICAgIHRoaXMuX3VzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmNyZWF0ZSgpO1xuICAgIHRoaXMuX3VzZXIkLm5leHQobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgYXV0b0xvZ2luKCk6IHZvaWQge1xuICAgIGNvbnN0IGxvY2FsQXV0aCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdhdXRoJyk7XG4gICAgaWYgKCFsb2NhbEF1dGgpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvZ291dCgpO1xuICAgIH1cbiAgICBjb25zdCB7IHVzZXIsIGZldGNoZWQsIHRva2VuIH0gPSBKU09OLnBhcnNlKGxvY2FsQXV0aCk7XG4gICAgdGhpcy5fdG9rZW4gPSBuZXcgSnd0KHRva2VuKTtcbiAgICB0aGlzLl91c2VyID0gdGhpcy51c2VyU2VydmljZS5jcmVhdGUodXNlcik7XG4gICAgdGhpcy5fZmV0Y2hlZCA9IGZldGNoZWQ7XG4gICAgdGhpcy5fdXNlciQubmV4dCh0aGlzLl91c2VyKTtcbiAgfVxuXG4gIHB1YmxpYyBsb2dpbihcbiAgICB1c2VybmFtZTogc3RyaW5nLFxuICAgIHBhc3N3b3JkOiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTwnc3VjY2VzcycgfCAnZXJyb3InIHwgJ2ludmFsaWRfdG9rZW4nIHwgc3RyaW5nPiB7XG4gICAgY29uc3QgcGF5bG9hZDogeyBbX2luZGV4OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAgIHBheWxvYWRbdGhpcy5fcGFyYW1zLmxvZ2luRmllbGRdID0gdXNlcm5hbWU7XG4gICAgcGF5bG9hZFt0aGlzLl9wYXJhbXMucGFzc3dvcmRGaWVsZF0gPSBwYXNzd29yZDtcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PElKd3RSZXNwb25zZUpzb24+KHRoaXMubG9naW5VcmwsIHBheWxvYWQpLnBpcGUoXG4gICAgICB0YXAoKHRvaykgPT4ge1xuICAgICAgICB0aGlzLl90b2tlbiA9IG5ldyBKd3QodG9rKTtcbiAgICAgICAgdGhpcy5zYXZlQXV0aCgpO1xuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmV0Y2hVc2VyKCk7XG4gICAgICB9KSxcbiAgICAgIG1hcCgoKSA9PiAnc3VjY2VzcycpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmxvZ291dCgpO1xuICAgICAgICBjb25zdCBjb2RlID0gZXJyb3IuZXJyb3I/LmNvZGUgfHwgZXJyb3I/LmNvZGUgfHwgJ2Vycm9yJztcbiAgICAgICAgY29uc29sZS5lcnJvcihjb2RlLCBlcnJvcik7XG4gICAgICAgIHJldHVybiBvZihjb2RlKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyByZXF1ZXN0UmVhY3RpdmF0ZSh1c2VybmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMuX3BhcmFtcy5yZXF1ZXN0UmVhY3RpdmF0ZVVybCkge1xuICAgICAgY29uc3QgcGF5bG9hZDogeyBbX2luZGV4OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAgICAgcGF5bG9hZFt0aGlzLl9wYXJhbXMubG9naW5GaWVsZF0gPSB1c2VybmFtZTtcbiAgICAgIHJldHVybiB0aGlzLl9odHRwXG4gICAgICAgIC5wb3N0PGFueT4odGhpcy5fcGFyYW1zLnJlcXVlc3RSZWFjdGl2YXRlVXJsLCBwYXlsb2FkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKCkgPT4gdHJ1ZSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihmYWxzZSkpXG4gICAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBvZihmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgcmVxdWVzdFB3UmVzZXQodXNlcm5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLl9wYXJhbXMucmVxdWVzdFB3UmVzZXRVcmwpIHtcbiAgICAgIGNvbnN0IHBheWxvYWQ6IHsgW19pbmRleDogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICAgIHBheWxvYWRbdGhpcy5fcGFyYW1zLmxvZ2luRmllbGRdID0gdXNlcm5hbWU7XG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PGFueT4odGhpcy5fcGFyYW1zLnJlcXVlc3RQd1Jlc2V0VXJsLCBwYXlsb2FkKS5waXBlKFxuICAgICAgICBtYXAoKCkgPT4gdHJ1ZSksXG4gICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoZmFsc2UpKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBwcm9jZXNzUmVhY3RpdmF0ZShcbiAgICB1c2VybmFtZTogc3RyaW5nLFxuICAgIHRva2VuOiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMuX3BhcmFtcy5wcm9jZXNzUmVhY3RpdmF0ZVVybCkge1xuICAgICAgY29uc3QgcGF5bG9hZDogeyBbX2luZGV4OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAgICAgcGF5bG9hZFt0aGlzLl9wYXJhbXMubG9naW5GaWVsZF0gPSB1c2VybmFtZTtcbiAgICAgIHBheWxvYWRbdGhpcy5fcGFyYW1zLnRva2VuRmllbGRdID0gdG9rZW47XG4gICAgICByZXR1cm4gdGhpcy5faHR0cFxuICAgICAgICAucG9zdDxhbnk+KHRoaXMuX3BhcmFtcy5wcm9jZXNzUmVhY3RpdmF0ZVVybCwgcGF5bG9hZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKCgpID0+IHRydWUpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoZmFsc2UpKVxuICAgICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gb2YoZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIHByb2Nlc3NQd1Jlc2V0KFxuICAgIHVzZXJuYW1lOiBzdHJpbmcsXG4gICAgcGFzc3dvcmQ6IHN0cmluZyxcbiAgICB0b2tlbjogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLl9wYXJhbXMucHJvY2Vzc1B3UmVzZXRVcmwpIHtcbiAgICAgIGNvbnN0IHBheWxvYWQ6IHsgW19pbmRleDogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICAgIHBheWxvYWRbdGhpcy5fcGFyYW1zLmxvZ2luRmllbGRdID0gdXNlcm5hbWU7XG4gICAgICBwYXlsb2FkW3RoaXMuX3BhcmFtcy5wYXNzd29yZEZpZWxkXSA9IHBhc3N3b3JkO1xuICAgICAgcGF5bG9hZFt0aGlzLl9wYXJhbXMudG9rZW5GaWVsZF0gPSB0b2tlbjtcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8YW55Pih0aGlzLl9wYXJhbXMucHJvY2Vzc1B3UmVzZXRVcmwsIHBheWxvYWQpLnBpcGUoXG4gICAgICAgIG1hcCgoKSA9PiB0cnVlKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihmYWxzZSkpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gb2YoZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIHNhdmVBdXRoKCkge1xuICAgIGlmICh0aGlzLmlzQW5vbnltb3VzKSB7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnYXV0aCcpO1xuICAgICAgdGhpcy5fdXNlciQubmV4dChudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICAgICdhdXRoJyxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIHVzZXI6IHRoaXMuX3VzZXIudG9Kc29uKCksXG4gICAgICAgICAgZmV0Y2hlZDogRGF0ZS5ub3coKSxcbiAgICAgICAgICB0b2tlbjogdGhpcy5fdG9rZW4udG9Kc29uKCksXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgdGhpcy5fdXNlciQubmV4dCh0aGlzLl91c2VyKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaCgpOiBPYnNlcnZhYmxlPElKd3RSZWZyZXNoUmVzcG9uc2VKc29uIHwgbnVsbD4ge1xuICAgIGlmICghdGhpcy5fdG9rZW4ucmVmcmVzaCkge1xuICAgICAgdGhpcy5sb2dvdXQoKTtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2h0dHBcbiAgICAgIC5wb3N0PElKd3RSZWZyZXNoUmVzcG9uc2VKc29uPih0aGlzLnJlZnJlc2hVcmwsIHtcbiAgICAgICAgcmVmcmVzaDogdGhpcy5fdG9rZW4ucmVmcmVzaCBhcyBzdHJpbmcsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoKGVyciwgY2F1Z2h0KSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignVG9rZW4gcmVmcmVzaCBlcnJvcicsIGVyciwgY2F1Z2h0KTtcbiAgICAgICAgICB0aGlzLmxvZ291dCgpO1xuICAgICAgICAgIHRoaXMuX21zZ3Mud2FybmluZygnVm91cyBkZXZleiB2b3VzIHJlY29ubmVjdGVyJyk7XG4gICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKHRoaXMuX3BhcmFtcy5sb2dpblJvdXRlKTtcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKHRvaykgPT4ge1xuICAgICAgICAgIGlmICh0b2spIHtcbiAgICAgICAgICAgIHRoaXMuX3Rva2VuID0gbmV3IEp3dCh7XG4gICAgICAgICAgICAgIGFjY2VzczogdG9rLmFjY2VzcyxcbiAgICAgICAgICAgICAgcmVmcmVzaDogdGhpcy5fdG9rZW4ucmVmcmVzaCEsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc2F2ZUF1dGgoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfZmV0Y2hVc2VyKCk6IE9ic2VydmFibGU8VXNlcj4ge1xuICAgIGlmICh0aGlzLl90b2tlbi5kYXRhICYmIHRoaXMuX3Rva2VuLmRhdGEudXNlcl9pZCkge1xuICAgICAgLy8gRmV0Y2ggdXNlciBkYXRhIHVzaW5nIHRva2VuXG4gICAgICByZXR1cm4gdGhpcy51c2VyU2VydmljZVxuICAgICAgICAuZmV0Y2godGhpcy5fdG9rZW4uZGF0YSEudXNlcl9pZCwge1xuICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgZmllbGRzOiAoXG4gICAgICAgICAgICAgIHRoaXMuX3BhcmFtcy51c2VyRmV0Y2hGaWVsZHMgfHwgW1xuICAgICAgICAgICAgICAgICdpZCcsXG4gICAgICAgICAgICAgICAgJ3VzZXJuYW1lJyxcbiAgICAgICAgICAgICAgICAnZW1haWwnLFxuICAgICAgICAgICAgICAgICdsYXN0X25hbWUnLFxuICAgICAgICAgICAgICAgICdmaXJzdF9uYW1lJyxcbiAgICAgICAgICAgICAgICAnaXNfc3VwZXJ1c2VyJyxcbiAgICAgICAgICAgICAgICAnaXNfYWN0aXZlJyxcbiAgICAgICAgICAgICAgICAnaXNfc3RhZmYnLFxuICAgICAgICAgICAgICAgICdsYXN0X2xvZ2luJyxcbiAgICAgICAgICAgICAgICAnY3VycmVudF9ncm91cHNfc2x1Z3MnLFxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLmpvaW4oJywnKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YXAoKHUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3VzZXIgPSB1O1xuICAgICAgICAgICAgdGhpcy5zYXZlQXV0aCgpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgY29kZTogJ2ludmFsaWRfdG9rZW4nIH07XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL2F1dGgvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBSUwsR0FBRyxHQUNKLE1BQU0sT0FBTyxDQUFDO0FBRWYsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBYyxFQUFFLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQXdCakU7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FDaEQsa0JBQWtCLENBQ25CLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLGNBQWMsQ0FDdEQsd0JBQXdCLENBQ3pCLENBQUM7QUFFSyxJQUFNLGVBQWUsR0FBckIsTUFBTSxlQUFlO0lBVTFCLFlBQ3lDLFdBQXdCLEVBQzdCLE9BQW1CLEVBQzdDLE9BQWUsRUFDZixLQUFpQixFQUNqQixLQUF5QjtRQUpNLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQzdCLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDN0MsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBb0I7UUFUM0IsV0FBTSxHQUFHLElBQUksYUFBYSxDQUFjLENBQUMsQ0FBQyxDQUFDO1FBV2pELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM3QixD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Q0FBQztpQkFDRCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUNILENBQUM7U0FDTDthQUFNO1lBQ0wsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNyQixPQUFPLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0NBQ0YsQ0FBQTtBQTFRWSxlQUFlO0lBV3ZCLFdBQUEsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUE7SUFDOUIsV0FBQSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtHQVpoQixlQUFlLENBMFEzQjtTQTFRWSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgSUp3dEJhc2VEYXRhLFxuICBJSnd0UmVmcmVzaFJlc3BvbnNlSnNvbixcbiAgSUp3dFJlc3BvbnNlSnNvbixcbiAgSnd0LFxufSBmcm9tICcuL2p3dCc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBSZXBsYXlTdWJqZWN0LCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYXRhTW9kZWwgfSBmcm9tICcuLi9kYXRhL2RhdGEtbW9kZWwnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4uL2RhdGEvZGF0YS1jb2xsZWN0aW9uJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBEYXRhTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi9tZXNzYWdlcy9tZXNzYWdlLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhQYXJhbXMge1xuICB0b2tlblVybDogc3RyaW5nO1xuICB0b2tlblJlZnJlc2hVcmw6IHN0cmluZztcbiAgcmVxdWVzdFJlYWN0aXZhdGVVcmw/OiBzdHJpbmc7XG4gIHByb2Nlc3NSZWFjdGl2YXRlVXJsPzogc3RyaW5nO1xuICByZXF1ZXN0UHdSZXNldFVybD86IHN0cmluZztcbiAgcHJvY2Vzc1B3UmVzZXRVcmw/OiBzdHJpbmc7XG4gIGxvZ2luRmllbGQ6IHN0cmluZztcbiAgcGFzc3dvcmRGaWVsZDogc3RyaW5nO1xuICB0b2tlbkZpZWxkOiBzdHJpbmc7XG4gIGxvZ2luUm91dGU6IHN0cmluZ1tdO1xuICBsb2dvdXRSb3V0ZTogc3RyaW5nW107XG4gIHB3cmVzZXRSb3V0ZT86IHN0cmluZ1tdO1xuICByZWFjdGl2YXRlUm91dGU/OiBzdHJpbmdbXTtcbiAgdXNlckZldGNoRmllbGRzPzogc3RyaW5nW107XG4gIHVzZXJGZXRjaFZhbGlkaXR5U2Vjb25kcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBEQVRBX0FQSV9VUkw6IHN0b3JlcyBkYXRhIGFwaSBiYXNlIHVybFxuICovXG5leHBvcnQgY29uc3QgREFUQV9BVVRIX1BBUkFNUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBdXRoUGFyYW1zPihcbiAgJ2RhdGEuYXV0aC5wYXJhbXMnXG4pO1xuZXhwb3J0IGNvbnN0IERBVEFfQVVUSF9VU0VSX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29sbGVjdGlvbjxhbnk+PihcbiAgJ2RhdGEuYXV0aC51c2VyLnNlcnZpY2UnXG4pO1xuXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2VCYXNlPFxuICBVc2VyIGV4dGVuZHMgRGF0YU1vZGVsLFxuICBVc2VyU2VydmljZSBleHRlbmRzIENvbGxlY3Rpb248VXNlcj4sXG4gIFVzZXJEYXRhIGV4dGVuZHMgSUp3dEJhc2VEYXRhXG4+IHtcbiAgcHJpdmF0ZSBfdXNlciE6IFVzZXI7XG4gIHByaXZhdGUgX3VzZXIkID0gbmV3IFJlcGxheVN1YmplY3Q8VXNlciB8IG51bGw+KDEpO1xuICBwcml2YXRlIF90b2tlbiE6IEp3dDxVc2VyRGF0YT47XG4gIHByaXZhdGUgX2ZldGNoZWQ/OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChEQVRBX0FVVEhfVVNFUl9TRVJWSUNFKSBwdWJsaWMgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoREFUQV9BVVRIX1BBUkFNUykgcHJpdmF0ZSBfcGFyYW1zOiBBdXRoUGFyYW1zLFxuICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBfbXNnczogRGF0YU1lc3NhZ2VTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuYXV0b0xvZ2luKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzQW5vbnltb3VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5fdG9rZW4uYWNjZXNzO1xuICB9XG5cbiAgcHVibGljIGdldCBhY2Nlc3NUb2tlbigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW4uYWNjZXNzID8gdGhpcy5fdG9rZW4uYWNjZXNzIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVmcmVzaFRva2VuKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl90b2tlbi5yZWZyZXNoID8gdGhpcy5fdG9rZW4ucmVmcmVzaCA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnRVc2VyKCk6IFVzZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdXNlciAmJiB0aGlzLl91c2VyLmlkID8gdGhpcy5fdXNlciA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnRVc2VyJCgpOiBPYnNlcnZhYmxlPFVzZXIgfCBudWxsPiB7XG4gICAgLy8gTmVlZHMgcmVmcmVzaCA/XG4gICAgaWYgKHRoaXMuaXNBbm9ueW1vdXMpIHtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgIXRoaXMuX2ZldGNoZWQgfHxcbiAgICAgIERhdGUubm93KCkgLSB0aGlzLl9mZXRjaGVkID5cbiAgICAgICAgKHRoaXMuX3BhcmFtcy51c2VyRmV0Y2hWYWxpZGl0eVNlY29uZHMgfHwgMzYwMCkgKiAxMDAwXG4gICAgKSB7XG4gICAgICB0aGlzLl9mZXRjaGVkID0gRGF0ZS5ub3coKTtcbiAgICAgIHJldHVybiB0aGlzLl9mZXRjaFVzZXIoKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLl91c2VyJC5hc09ic2VydmFibGUoKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl91c2VyJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVmcmVzaFVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLl9wYXJhbXMudG9rZW5SZWZyZXNoVXJsfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvZ2luVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuX3BhcmFtcy50b2tlblVybH1gO1xuICB9XG5cbiAgcHVibGljIGdldCBsb2dpblJvdXRlKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyYW1zLmxvZ2luUm91dGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvZ291dFJvdXRlKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyYW1zLmxvZ291dFJvdXRlO1xuICB9XG5cbiAgcHVibGljIGdldCBwd3Jlc2V0Um91dGUoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9wYXJhbXMucHdyZXNldFJvdXRlO1xuICB9XG5cbiAgcHVibGljIGdldCByZWFjdGl2YXRlUm91dGUoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9wYXJhbXMucmVhY3RpdmF0ZVJvdXRlO1xuICB9XG5cbiAgcHVibGljIGxvZ291dCgpOiB2b2lkIHtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnYXV0aCcpO1xuICAgIHRoaXMuX3Rva2VuID0gbmV3IEp3dCgpO1xuICAgIHRoaXMuX3VzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmNyZWF0ZSgpO1xuICAgIHRoaXMuX3VzZXIkLm5leHQobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgYXV0b0xvZ2luKCk6IHZvaWQge1xuICAgIGNvbnN0IGxvY2FsQXV0aCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdhdXRoJyk7XG4gICAgaWYgKCFsb2NhbEF1dGgpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvZ291dCgpO1xuICAgIH1cbiAgICBjb25zdCB7IHVzZXIsIGZldGNoZWQsIHRva2VuIH0gPSBKU09OLnBhcnNlKGxvY2FsQXV0aCk7XG4gICAgdGhpcy5fdG9rZW4gPSBuZXcgSnd0KHRva2VuKTtcbiAgICB0aGlzLl91c2VyID0gdGhpcy51c2VyU2VydmljZS5jcmVhdGUodXNlcik7XG4gICAgdGhpcy5fZmV0Y2hlZCA9IGZldGNoZWQ7XG4gICAgdGhpcy5fdXNlciQubmV4dCh0aGlzLl91c2VyKTtcbiAgfVxuXG4gIHB1YmxpYyBsb2dpbihcbiAgICB1c2VybmFtZTogc3RyaW5nLFxuICAgIHBhc3N3b3JkOiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTwnc3VjY2VzcycgfCAnZXJyb3InIHwgJ2ludmFsaWRfdG9rZW4nIHwgc3RyaW5nPiB7XG4gICAgY29uc3QgcGF5bG9hZDogeyBbX2luZGV4OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAgIHBheWxvYWRbdGhpcy5fcGFyYW1zLmxvZ2luRmllbGRdID0gdXNlcm5hbWU7XG4gICAgcGF5bG9hZFt0aGlzLl9wYXJhbXMucGFzc3dvcmRGaWVsZF0gPSBwYXNzd29yZDtcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PElKd3RSZXNwb25zZUpzb24+KHRoaXMubG9naW5VcmwsIHBheWxvYWQpLnBpcGUoXG4gICAgICB0YXAoKHRvaykgPT4ge1xuICAgICAgICB0aGlzLl90b2tlbiA9IG5ldyBKd3QodG9rKTtcbiAgICAgICAgdGhpcy5zYXZlQXV0aCgpO1xuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmV0Y2hVc2VyKCk7XG4gICAgICB9KSxcbiAgICAgIG1hcCgoKSA9PiAnc3VjY2VzcycpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmxvZ291dCgpO1xuICAgICAgICBjb25zdCBjb2RlID0gZXJyb3IuZXJyb3I/LmNvZGUgfHwgZXJyb3I/LmNvZGUgfHwgJ2Vycm9yJztcbiAgICAgICAgY29uc29sZS5lcnJvcihjb2RlLCBlcnJvcik7XG4gICAgICAgIHJldHVybiBvZihjb2RlKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyByZXF1ZXN0UmVhY3RpdmF0ZSh1c2VybmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMuX3BhcmFtcy5yZXF1ZXN0UmVhY3RpdmF0ZVVybCkge1xuICAgICAgY29uc3QgcGF5bG9hZDogeyBbX2luZGV4OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAgICAgcGF5bG9hZFt0aGlzLl9wYXJhbXMubG9naW5GaWVsZF0gPSB1c2VybmFtZTtcbiAgICAgIHJldHVybiB0aGlzLl9odHRwXG4gICAgICAgIC5wb3N0PGFueT4odGhpcy5fcGFyYW1zLnJlcXVlc3RSZWFjdGl2YXRlVXJsLCBwYXlsb2FkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKCkgPT4gdHJ1ZSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihmYWxzZSkpXG4gICAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBvZihmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgcmVxdWVzdFB3UmVzZXQodXNlcm5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLl9wYXJhbXMucmVxdWVzdFB3UmVzZXRVcmwpIHtcbiAgICAgIGNvbnN0IHBheWxvYWQ6IHsgW19pbmRleDogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICAgIHBheWxvYWRbdGhpcy5fcGFyYW1zLmxvZ2luRmllbGRdID0gdXNlcm5hbWU7XG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PGFueT4odGhpcy5fcGFyYW1zLnJlcXVlc3RQd1Jlc2V0VXJsLCBwYXlsb2FkKS5waXBlKFxuICAgICAgICBtYXAoKCkgPT4gdHJ1ZSksXG4gICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoZmFsc2UpKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBwcm9jZXNzUmVhY3RpdmF0ZShcbiAgICB1c2VybmFtZTogc3RyaW5nLFxuICAgIHRva2VuOiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMuX3BhcmFtcy5wcm9jZXNzUmVhY3RpdmF0ZVVybCkge1xuICAgICAgY29uc3QgcGF5bG9hZDogeyBbX2luZGV4OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAgICAgcGF5bG9hZFt0aGlzLl9wYXJhbXMubG9naW5GaWVsZF0gPSB1c2VybmFtZTtcbiAgICAgIHBheWxvYWRbdGhpcy5fcGFyYW1zLnRva2VuRmllbGRdID0gdG9rZW47XG4gICAgICByZXR1cm4gdGhpcy5faHR0cFxuICAgICAgICAucG9zdDxhbnk+KHRoaXMuX3BhcmFtcy5wcm9jZXNzUmVhY3RpdmF0ZVVybCwgcGF5bG9hZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKCgpID0+IHRydWUpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoZmFsc2UpKVxuICAgICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gb2YoZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIHByb2Nlc3NQd1Jlc2V0KFxuICAgIHVzZXJuYW1lOiBzdHJpbmcsXG4gICAgcGFzc3dvcmQ6IHN0cmluZyxcbiAgICB0b2tlbjogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLl9wYXJhbXMucHJvY2Vzc1B3UmVzZXRVcmwpIHtcbiAgICAgIGNvbnN0IHBheWxvYWQ6IHsgW19pbmRleDogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICAgIHBheWxvYWRbdGhpcy5fcGFyYW1zLmxvZ2luRmllbGRdID0gdXNlcm5hbWU7XG4gICAgICBwYXlsb2FkW3RoaXMuX3BhcmFtcy5wYXNzd29yZEZpZWxkXSA9IHBhc3N3b3JkO1xuICAgICAgcGF5bG9hZFt0aGlzLl9wYXJhbXMudG9rZW5GaWVsZF0gPSB0b2tlbjtcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8YW55Pih0aGlzLl9wYXJhbXMucHJvY2Vzc1B3UmVzZXRVcmwsIHBheWxvYWQpLnBpcGUoXG4gICAgICAgIG1hcCgoKSA9PiB0cnVlKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihmYWxzZSkpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gb2YoZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIHNhdmVBdXRoKCkge1xuICAgIGlmICh0aGlzLmlzQW5vbnltb3VzKSB7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnYXV0aCcpO1xuICAgICAgdGhpcy5fdXNlciQubmV4dChudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICAgICdhdXRoJyxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIHVzZXI6IHRoaXMuX3VzZXIudG9Kc29uKCksXG4gICAgICAgICAgZmV0Y2hlZDogRGF0ZS5ub3coKSxcbiAgICAgICAgICB0b2tlbjogdGhpcy5fdG9rZW4udG9Kc29uKCksXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgdGhpcy5fdXNlciQubmV4dCh0aGlzLl91c2VyKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaCgpOiBPYnNlcnZhYmxlPElKd3RSZWZyZXNoUmVzcG9uc2VKc29uIHwgbnVsbD4ge1xuICAgIGlmICghdGhpcy5fdG9rZW4ucmVmcmVzaCkge1xuICAgICAgdGhpcy5sb2dvdXQoKTtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2h0dHBcbiAgICAgIC5wb3N0PElKd3RSZWZyZXNoUmVzcG9uc2VKc29uPih0aGlzLnJlZnJlc2hVcmwsIHtcbiAgICAgICAgcmVmcmVzaDogdGhpcy5fdG9rZW4ucmVmcmVzaCBhcyBzdHJpbmcsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoKGVyciwgY2F1Z2h0KSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignVG9rZW4gcmVmcmVzaCBlcnJvcicsIGVyciwgY2F1Z2h0KTtcbiAgICAgICAgICB0aGlzLmxvZ291dCgpO1xuICAgICAgICAgIHRoaXMuX21zZ3Mud2FybmluZygnVm91cyBkZXZleiB2b3VzIHJlY29ubmVjdGVyJyk7XG4gICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKHRoaXMuX3BhcmFtcy5sb2dpblJvdXRlKTtcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKHRvaykgPT4ge1xuICAgICAgICAgIGlmICh0b2spIHtcbiAgICAgICAgICAgIHRoaXMuX3Rva2VuID0gbmV3IEp3dCh7XG4gICAgICAgICAgICAgIGFjY2VzczogdG9rLmFjY2VzcyxcbiAgICAgICAgICAgICAgcmVmcmVzaDogdGhpcy5fdG9rZW4ucmVmcmVzaCEsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc2F2ZUF1dGgoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfZmV0Y2hVc2VyKCk6IE9ic2VydmFibGU8VXNlcj4ge1xuICAgIGlmICh0aGlzLl90b2tlbi5kYXRhICYmIHRoaXMuX3Rva2VuLmRhdGEudXNlcl9pZCkge1xuICAgICAgLy8gRmV0Y2ggdXNlciBkYXRhIHVzaW5nIHRva2VuXG4gICAgICByZXR1cm4gdGhpcy51c2VyU2VydmljZVxuICAgICAgICAuZmV0Y2godGhpcy5fdG9rZW4uZGF0YSEudXNlcl9pZCwge1xuICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgZmllbGRzOiAoXG4gICAgICAgICAgICAgIHRoaXMuX3BhcmFtcy51c2VyRmV0Y2hGaWVsZHMgfHwgW1xuICAgICAgICAgICAgICAgICdpZCcsXG4gICAgICAgICAgICAgICAgJ3VzZXJuYW1lJyxcbiAgICAgICAgICAgICAgICAnZW1haWwnLFxuICAgICAgICAgICAgICAgICdsYXN0X25hbWUnLFxuICAgICAgICAgICAgICAgICdmaXJzdF9uYW1lJyxcbiAgICAgICAgICAgICAgICAnaXNfc3VwZXJ1c2VyJyxcbiAgICAgICAgICAgICAgICAnaXNfYWN0aXZlJyxcbiAgICAgICAgICAgICAgICAnaXNfc3RhZmYnLFxuICAgICAgICAgICAgICAgICdsYXN0X2xvZ2luJyxcbiAgICAgICAgICAgICAgICAnY3VycmVudF9ncm91cHNfc2x1Z3MnLFxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLmpvaW4oJywnKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YXAoKHUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3VzZXIgPSB1O1xuICAgICAgICAgICAgdGhpcy5zYXZlQXV0aCgpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgY29kZTogJ2ludmFsaWRfdG9rZW4nIH07XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmllbGRzL21vZGVsLWxpc3QtZmllbGQtaGVhZGVyL21lc3NhZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElGaWVsZEhlYWRlck1lc3NhZ2Uge1xuICBkZXN0OiAnaGVhZGVyJztcbiAgc2hvdz86IGJvb2xlYW47XG4gIG1lbnU/OiAnaGlkZScgfCAnc2lkZScgfCAnY2xpY2snIHwgJ2RlZmF1bHQnO1xuICBzb3J0PzogJ2hpZGUnIHwgJ3NpZGUnIHwgJ2NsaWNrJyB8ICdkZWZhdWx0Jztcbn1cbiJdfQ==
@@ -1,13 +1,35 @@
1
- import { Component, Input } from '@angular/core';
1
+ import { Component, Input, ViewChild } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';
4
4
  import { ModelListSorterComponent } from '../../model-list-sorter/model-list-sorter/model-list-sorter.component';
5
+ import { filter } from 'rxjs/operators';
6
+ import { Subject, takeUntil } from 'rxjs';
5
7
  import * as i0 from "@angular/core";
6
8
  import * as i1 from "@angular/common";
7
9
  import * as i2 from "@ng-bootstrap/ng-bootstrap";
8
10
  export class ModelListFieldHeaderComponent {
9
11
  constructor() {
10
12
  this.sort = false;
13
+ this.menuMode = 'side';
14
+ this.sortMode = 'side';
15
+ this.dispMenuMode = this.menuMode;
16
+ this.dispSortMode = this.sortMode;
17
+ this._subscriptions$ = new Subject();
18
+ }
19
+ ngOnInit() {
20
+ this.list.messages$
21
+ .pipe(takeUntil(this._subscriptions$), filter((m) => m.dest === 'header'))
22
+ .subscribe((m) => {
23
+ this.dispMenuMode =
24
+ m.menu && m.menu !== 'default' ? m.menu : this.menuMode;
25
+ this.dispSortMode =
26
+ m.sort && m.sort !== 'default' ? m.sort : this.sortMode;
27
+ this.display = m.show !== undefined ? m.show : this.display;
28
+ });
29
+ }
30
+ ngOnDestroy() {
31
+ this._subscriptions$.next();
32
+ this._subscriptions$.complete();
11
33
  }
12
34
  disable() {
13
35
  this.list.fields.disable(this.field);
@@ -18,10 +40,10 @@ export class ModelListFieldHeaderComponent {
18
40
  }
19
41
  }
20
42
  ModelListFieldHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: ModelListFieldHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
- ModelListFieldHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: ModelListFieldHeaderComponent, isStandalone: true, selector: "data-model-list-field-header", inputs: { list: "list", field: "field", sort: "sort", sortField: "sortField" }, ngImport: i0, template: "\n<ng-template #label><span #ref>\n <ng-content></ng-content></span><span *ngIf=\"!ref.children.length\">{{list.fields.get(field)?.label||field}}</span></ng-template>\n<div class=\"d-flex flex-row justify-content-between align-items-end slabel\" [class.active]=\"mnu.isOpen()\">\n <div class=\"flex-grow-1\">\n <data-model-list-sorter [list]=\"list\" [field]=\"sortField||field\" *ngIf=\"sort\">\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </data-model-list-sorter>\n <ng-container *ngIf=\"!sort\">\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </ng-container>\n </div>\n <div class=\"navicons d-flex flex-row\" [attr.aria-label]=\"'Gestion champs'\"><i class=\"bi bi-caret-left-fill\" role=\"button\" (click)=\"list.fields.move(field, 'before')\" aria-label=\"D\u00E9placer vers la gauche\"></i>\n <div ngbDropdown #mnu=\"ngbDropdown\" [container]=\"'body'\"><i class=\"bi bi-record\" ngbDropdownToggle aria-label=\"Ouvrir la boite de dialogue des champs\" role=\"button\"></i>\n <div ngbDropdownMenu>\n <button ngbDropdownItem (click)=\"disable()\"><i class=\"bi bi-trash me-2\"></i>Supprimer</button>\n <h6 class=\"dropdown-header\">Ajouter une colonne apr\u00E8s</h6>\n <ng-container *ngFor=\"let f of list.fields.fields|async\">\n <ng-container *ngIf=\"f.allowed &amp;&amp; !f.enabled\">\n <button ngbDropdownItem (click)=\"enable(f)\" [attr.aria-label]=\"f.label||f.name\"><i class=\"bi bi-plus-circle me-2\"></i>{{f.label||f.name}}</button>\n </ng-container>\n </ng-container>\n </div>\n </div><i class=\"bi bi-caret-right-fill\" role=\"button\" (click)=\"list.fields.move(field, 'after')\" aria-label=\"D\u00E9placer vers la droite\"></i>\n </div>\n</div>", styles: [".slabel .navicons{opacity:0}.slabel:hover .navicons,.slabel.active .navicons{opacity:1!important}.dropdown-toggle:after{display:none!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: NgbDropdownModule }, { kind: "directive", type: i2.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i2.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i2.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i2.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { kind: "component", type: ModelListSorterComponent, selector: "data-model-list-sorter", inputs: ["list", "field"] }] });
43
+ ModelListFieldHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: ModelListFieldHeaderComponent, isStandalone: true, selector: "data-model-list-field-header", inputs: { list: "list", field: "field", sort: "sort", sortField: "sortField", menuMode: "menuMode", sortMode: "sortMode", display: "display" }, viewQueries: [{ propertyName: "mnu", first: true, predicate: ["mnu"], descendants: true }], ngImport: i0, template: "\n<ng-template #label><span #ref>\n <ng-content></ng-content></span><span *ngIf=\"!ref.children.length\">{{list.fields.get(field)?.label||field}}</span></ng-template>\n<div class=\"d-flex flex-row justify-content-between align-items-end slabel\">\n <div class=\"flex-grow-1\">\n <data-model-list-sorter [list]=\"list\" [field]=\"sortField||field\" *ngIf=\"sort &amp;&amp; dispSortMode==='side'\">\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </data-model-list-sorter>\n <ng-container *ngIf=\"!sort || dispSortMode==='hide'\">\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </ng-container>\n </div>\n <div class=\"navicons d-flex flex-row\" [attr.aria-label]=\"'Gestion champs'\" *ngIf=\"dispMenuMode==='side'\"><i class=\"bi bi-caret-left-fill\" role=\"button\" (click)=\"list.fields.move(field, 'before')\" aria-label=\"D\u00E9placer vers la gauche\"></i>\n <div ngbDropdown #mnu=\"ngbDropdown\" [container]=\"'body'\"><i class=\"bi bi-record\" ngbDropdownToggle aria-label=\"Ouvrir la boite de dialogue des champs\" role=\"button\"></i>\n <div ngbDropdownMenu>\n <button ngbDropdownItem (click)=\"disable()\"><i class=\"bi bi-trash me-2\"></i>Supprimer</button>\n <h6 class=\"dropdown-header\">Ajouter une colonne apr\u00E8s</h6>\n <ng-container *ngFor=\"let f of list.fields.fields|async\">\n <ng-container *ngIf=\"f.allowed &amp;&amp; !f.enabled\">\n <button ngbDropdownItem (click)=\"enable(f)\" [attr.aria-label]=\"f.label||f.name\"><i class=\"bi bi-plus-circle me-2\"></i>{{f.label||f.name}}</button>\n </ng-container>\n </ng-container>\n </div>\n </div><i class=\"bi bi-caret-right-fill\" role=\"button\" (click)=\"list.fields.move(field, 'after')\" aria-label=\"D\u00E9placer vers la droite\"></i>\n </div>\n</div>", styles: [".slabel .navicons{opacity:0}.slabel:hover .navicons,.slabel.active .navicons{opacity:1!important}.dropdown-toggle:after{display:none!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: NgbDropdownModule }, { kind: "directive", type: i2.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i2.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i2.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i2.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { kind: "component", type: ModelListSorterComponent, selector: "data-model-list-sorter", inputs: ["list", "field"] }] });
22
44
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: ModelListFieldHeaderComponent, decorators: [{
23
45
  type: Component,
24
- args: [{ selector: 'data-model-list-field-header', standalone: true, imports: [CommonModule, NgbDropdownModule, ModelListSorterComponent], template: "\n<ng-template #label><span #ref>\n <ng-content></ng-content></span><span *ngIf=\"!ref.children.length\">{{list.fields.get(field)?.label||field}}</span></ng-template>\n<div class=\"d-flex flex-row justify-content-between align-items-end slabel\" [class.active]=\"mnu.isOpen()\">\n <div class=\"flex-grow-1\">\n <data-model-list-sorter [list]=\"list\" [field]=\"sortField||field\" *ngIf=\"sort\">\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </data-model-list-sorter>\n <ng-container *ngIf=\"!sort\">\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </ng-container>\n </div>\n <div class=\"navicons d-flex flex-row\" [attr.aria-label]=\"'Gestion champs'\"><i class=\"bi bi-caret-left-fill\" role=\"button\" (click)=\"list.fields.move(field, 'before')\" aria-label=\"D\u00E9placer vers la gauche\"></i>\n <div ngbDropdown #mnu=\"ngbDropdown\" [container]=\"'body'\"><i class=\"bi bi-record\" ngbDropdownToggle aria-label=\"Ouvrir la boite de dialogue des champs\" role=\"button\"></i>\n <div ngbDropdownMenu>\n <button ngbDropdownItem (click)=\"disable()\"><i class=\"bi bi-trash me-2\"></i>Supprimer</button>\n <h6 class=\"dropdown-header\">Ajouter une colonne apr\u00E8s</h6>\n <ng-container *ngFor=\"let f of list.fields.fields|async\">\n <ng-container *ngIf=\"f.allowed &amp;&amp; !f.enabled\">\n <button ngbDropdownItem (click)=\"enable(f)\" [attr.aria-label]=\"f.label||f.name\"><i class=\"bi bi-plus-circle me-2\"></i>{{f.label||f.name}}</button>\n </ng-container>\n </ng-container>\n </div>\n </div><i class=\"bi bi-caret-right-fill\" role=\"button\" (click)=\"list.fields.move(field, 'after')\" aria-label=\"D\u00E9placer vers la droite\"></i>\n </div>\n</div>", styles: [".slabel .navicons{opacity:0}.slabel:hover .navicons,.slabel.active .navicons{opacity:1!important}.dropdown-toggle:after{display:none!important}\n"] }]
46
+ args: [{ selector: 'data-model-list-field-header', standalone: true, imports: [CommonModule, NgbDropdownModule, ModelListSorterComponent], template: "\n<ng-template #label><span #ref>\n <ng-content></ng-content></span><span *ngIf=\"!ref.children.length\">{{list.fields.get(field)?.label||field}}</span></ng-template>\n<div class=\"d-flex flex-row justify-content-between align-items-end slabel\">\n <div class=\"flex-grow-1\">\n <data-model-list-sorter [list]=\"list\" [field]=\"sortField||field\" *ngIf=\"sort &amp;&amp; dispSortMode==='side'\">\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </data-model-list-sorter>\n <ng-container *ngIf=\"!sort || dispSortMode==='hide'\">\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </ng-container>\n </div>\n <div class=\"navicons d-flex flex-row\" [attr.aria-label]=\"'Gestion champs'\" *ngIf=\"dispMenuMode==='side'\"><i class=\"bi bi-caret-left-fill\" role=\"button\" (click)=\"list.fields.move(field, 'before')\" aria-label=\"D\u00E9placer vers la gauche\"></i>\n <div ngbDropdown #mnu=\"ngbDropdown\" [container]=\"'body'\"><i class=\"bi bi-record\" ngbDropdownToggle aria-label=\"Ouvrir la boite de dialogue des champs\" role=\"button\"></i>\n <div ngbDropdownMenu>\n <button ngbDropdownItem (click)=\"disable()\"><i class=\"bi bi-trash me-2\"></i>Supprimer</button>\n <h6 class=\"dropdown-header\">Ajouter une colonne apr\u00E8s</h6>\n <ng-container *ngFor=\"let f of list.fields.fields|async\">\n <ng-container *ngIf=\"f.allowed &amp;&amp; !f.enabled\">\n <button ngbDropdownItem (click)=\"enable(f)\" [attr.aria-label]=\"f.label||f.name\"><i class=\"bi bi-plus-circle me-2\"></i>{{f.label||f.name}}</button>\n </ng-container>\n </ng-container>\n </div>\n </div><i class=\"bi bi-caret-right-fill\" role=\"button\" (click)=\"list.fields.move(field, 'after')\" aria-label=\"D\u00E9placer vers la droite\"></i>\n </div>\n</div>", styles: [".slabel .navicons{opacity:0}.slabel:hover .navicons,.slabel.active .navicons{opacity:1!important}.dropdown-toggle:after{display:none!important}\n"] }]
25
47
  }], ctorParameters: function () { return []; }, propDecorators: { list: [{
26
48
  type: Input
27
49
  }], field: [{
@@ -30,5 +52,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImpor
30
52
  type: Input
31
53
  }], sortField: [{
32
54
  type: Input
55
+ }], menuMode: [{
56
+ type: Input
57
+ }], sortMode: [{
58
+ type: Input
59
+ }], display: [{
60
+ type: Input
61
+ }], mnu: [{
62
+ type: ViewChild,
63
+ args: ['mnu', { static: false }]
33
64
  }] } });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1maWVsZC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL21vZGVsbGlzdC9tb2RlbC1saXN0LWZpZWxkcy9tb2RlbC1saXN0LWZpZWxkLWhlYWRlci9tb2RlbC1saXN0LWZpZWxkLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmllbGRzL21vZGVsLWxpc3QtZmllbGQtaGVhZGVyL21vZGVsLWxpc3QtZmllbGQtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSWpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1RUFBdUUsQ0FBQzs7OztBQVNqSCxNQUFNLE9BQU8sNkJBQTZCO0lBTXhDO1FBSGdCLFNBQUksR0FBYSxLQUFLLENBQUM7SUFHeEIsQ0FBQztJQUVoQixPQUFPO1FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU0sTUFBTSxDQUFDLENBQWlCO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDOzswSEFmVSw2QkFBNkI7OEdBQTdCLDZCQUE2Qix3S0NmMUMseXdEQXlCTSwwTURaTSxZQUFZLDJkQUFFLGlCQUFpQiwyZ0JBQUUsd0JBQXdCOzJGQUV4RCw2QkFBNkI7a0JBUHpDLFNBQVM7K0JBQ0UsOEJBQThCLGNBRzVCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsQ0FBQzswRUFHcEQsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxLQUFLO3NCQUFwQixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vZGVsTGlzdCB9IGZyb20gJy4uLy4uL21vZGVsLWxpc3Quc2VydmljZSc7XG5pbXBvcnQgeyBEYXRhTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9kYXRhL2RhdGEtbW9kZWwnO1xuaW1wb3J0IHsgTW9kZWxMaXN0RmllbGQgfSBmcm9tICcuLi9tb2RlbC1saXN0LWZpZWxkcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdiRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBNb2RlbExpc3RTb3J0ZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2RlbC1saXN0LXNvcnRlci9tb2RlbC1saXN0LXNvcnRlci9tb2RlbC1saXN0LXNvcnRlci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRhLW1vZGVsLWxpc3QtZmllbGQtaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGVsLWxpc3QtZmllbGQtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9kZWwtbGlzdC1maWVsZC1oZWFkZXIuY29tcG9uZW50LnNhc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTmdiRHJvcGRvd25Nb2R1bGUsIE1vZGVsTGlzdFNvcnRlckNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIE1vZGVsTGlzdEZpZWxkSGVhZGVyQ29tcG9uZW50PFQgZXh0ZW5kcyBEYXRhTW9kZWw+IHtcbiAgQElucHV0KCkgcHVibGljIGxpc3QhOiBNb2RlbExpc3Q8VD47XG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZCE6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIHNvcnQ/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBzb3J0RmllbGQ/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIGRpc2FibGUoKSB7XG4gICAgdGhpcy5saXN0LmZpZWxkcy5kaXNhYmxlKHRoaXMuZmllbGQpO1xuICB9XG5cbiAgcHVibGljIGVuYWJsZShmOiBNb2RlbExpc3RGaWVsZCkge1xuICAgIHRoaXMubGlzdC5maWVsZHMubW92ZShmLm5hbWUsICdhZnRlcicsIHRoaXMuZmllbGQpO1xuICAgIHRoaXMubGlzdC5maWVsZHMuZW5hYmxlKGYubmFtZSk7XG4gIH1cbn1cbiIsIlxuPG5nLXRlbXBsYXRlICNsYWJlbD48c3BhbiAjcmVmPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD48L3NwYW4+PHNwYW4gKm5nSWY9XCIhcmVmLmNoaWxkcmVuLmxlbmd0aFwiPnt7bGlzdC5maWVsZHMuZ2V0KGZpZWxkKT8ubGFiZWx8fGZpZWxkfX08L3NwYW4+PC9uZy10ZW1wbGF0ZT5cbjxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtZW5kIHNsYWJlbFwiIFtjbGFzcy5hY3RpdmVdPVwibW51LmlzT3BlbigpXCI+XG4gIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPlxuICAgIDxkYXRhLW1vZGVsLWxpc3Qtc29ydGVyIFtsaXN0XT1cImxpc3RcIiBbZmllbGRdPVwic29ydEZpZWxkfHxmaWVsZFwiICpuZ0lmPVwic29ydFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kYXRhLW1vZGVsLWxpc3Qtc29ydGVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc29ydFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibmF2aWNvbnMgZC1mbGV4IGZsZXgtcm93XCIgW2F0dHIuYXJpYS1sYWJlbF09XCInR2VzdGlvbiBjaGFtcHMnXCI+PGkgY2xhc3M9XCJiaSBiaS1jYXJldC1sZWZ0LWZpbGxcIiByb2xlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImxpc3QuZmllbGRzLm1vdmUoZmllbGQsICdiZWZvcmUnKVwiIGFyaWEtbGFiZWw9XCJEw6lwbGFjZXIgdmVycyBsYSBnYXVjaGVcIj48L2k+XG4gICAgPGRpdiBuZ2JEcm9wZG93biAjbW51PVwibmdiRHJvcGRvd25cIiBbY29udGFpbmVyXT1cIidib2R5J1wiPjxpIGNsYXNzPVwiYmkgYmktcmVjb3JkXCIgbmdiRHJvcGRvd25Ub2dnbGUgYXJpYS1sYWJlbD1cIk91dnJpciBsYSBib2l0ZSBkZSBkaWFsb2d1ZSBkZXMgY2hhbXBzXCIgcm9sZT1cImJ1dHRvblwiPjwvaT5cbiAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51PlxuICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwiZGlzYWJsZSgpXCI+PGkgY2xhc3M9XCJiaSBiaS10cmFzaCBtZS0yXCI+PC9pPlN1cHByaW1lcjwvYnV0dG9uPlxuICAgICAgICA8aDYgY2xhc3M9XCJkcm9wZG93bi1oZWFkZXJcIj5Bam91dGVyIHVuZSBjb2xvbm5lIGFwcsOoczwvaDY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGYgb2YgbGlzdC5maWVsZHMuZmllbGRzfGFzeW5jXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImYuYWxsb3dlZCAmYW1wOyZhbXA7ICFmLmVuYWJsZWRcIj5cbiAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJlbmFibGUoZilcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImYubGFiZWx8fGYubmFtZVwiPjxpIGNsYXNzPVwiYmkgYmktcGx1cy1jaXJjbGUgbWUtMlwiPjwvaT57e2YubGFiZWx8fGYubmFtZX19PC9idXR0b24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+PGkgY2xhc3M9XCJiaSBiaS1jYXJldC1yaWdodC1maWxsXCIgcm9sZT1cImJ1dHRvblwiIChjbGljayk9XCJsaXN0LmZpZWxkcy5tb3ZlKGZpZWxkLCAnYWZ0ZXInKVwiIGFyaWEtbGFiZWw9XCJEw6lwbGFjZXIgdmVycyBsYSBkcm9pdGVcIj48L2k+XG4gIDwvZGl2PlxuPC9kaXY+Il19
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1maWVsZC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL21vZGVsbGlzdC9tb2RlbC1saXN0LWZpZWxkcy9tb2RlbC1saXN0LWZpZWxkLWhlYWRlci9tb2RlbC1saXN0LWZpZWxkLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmllbGRzL21vZGVsLWxpc3QtZmllbGQtaGVhZGVyL21vZGVsLWxpc3QtZmllbGQtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBZSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVFQUF1RSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQVMxQyxNQUFNLE9BQU8sNkJBQTZCO0lBZ0J4QztRQVhnQixTQUFJLEdBQWEsS0FBSyxDQUFDO1FBRXZCLGFBQVEsR0FBOEIsTUFBTSxDQUFDO1FBQzdDLGFBQVEsR0FBOEIsTUFBTSxDQUFDO1FBSXRELGlCQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM3QixpQkFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDNUIsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRS9CLENBQUM7SUFFVCxRQUFRO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO2FBQ2hCLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUMvQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQ25DO2FBQ0EsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDZixJQUFJLENBQUMsWUFBWTtnQkFDZixDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzFELElBQUksQ0FBQyxZQUFZO2dCQUNmLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDMUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxDQUFpQjtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQzs7MEhBN0NVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLG9VQ2pCMUMsbTBEQXlCTSwwTURWTSxZQUFZLDJkQUFFLGlCQUFpQiwyZ0JBQUUsd0JBQXdCOzJGQUV4RCw2QkFBNkI7a0JBUHpDLFNBQVM7K0JBQ0UsOEJBQThCLGNBRzVCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsQ0FBQzswRUFLcEQsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxLQUFLO3NCQUFwQixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFFc0MsR0FBRztzQkFBOUMsU0FBUzt1QkFBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kZWxMaXN0IH0gZnJvbSAnLi4vLi4vbW9kZWwtbGlzdC5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGFNb2RlbCB9IGZyb20gJy4uLy4uLy4uL2RhdGEvZGF0YS1tb2RlbCc7XG5pbXBvcnQgeyBNb2RlbExpc3RGaWVsZCB9IGZyb20gJy4uL21vZGVsLWxpc3QtZmllbGRzJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ2JEcm9wZG93biwgTmdiRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBNb2RlbExpc3RTb3J0ZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2RlbC1saXN0LXNvcnRlci9tb2RlbC1saXN0LXNvcnRlci9tb2RlbC1saXN0LXNvcnRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdGEtbW9kZWwtbGlzdC1maWVsZC1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kZWwtbGlzdC1maWVsZC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2RlbC1saXN0LWZpZWxkLWhlYWRlci5jb21wb25lbnQuc2FzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBOZ2JEcm9wZG93bk1vZHVsZSwgTW9kZWxMaXN0U29ydGVyQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTW9kZWxMaXN0RmllbGRIZWFkZXJDb21wb25lbnQ8VCBleHRlbmRzIERhdGFNb2RlbD5cbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveVxue1xuICBASW5wdXQoKSBwdWJsaWMgbGlzdCE6IE1vZGVsTGlzdDxUPjtcbiAgQElucHV0KCkgcHVibGljIGZpZWxkITogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgc29ydD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHNvcnRGaWVsZD86IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIG1lbnVNb2RlOiAnaGlkZScgfCAnc2lkZScgfCAnY2xpY2snID0gJ3NpZGUnO1xuICBASW5wdXQoKSBwdWJsaWMgc29ydE1vZGU6ICdoaWRlJyB8ICdzaWRlJyB8ICdjbGljaycgPSAnc2lkZSc7XG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNwbGF5PzogYm9vbGVhbjtcblxuICBAVmlld0NoaWxkKCdtbnUnLCB7IHN0YXRpYzogZmFsc2UgfSkgcHVibGljIG1udT86IE5nYkRyb3Bkb3duO1xuICBwdWJsaWMgZGlzcE1lbnVNb2RlID0gdGhpcy5tZW51TW9kZTtcbiAgcHVibGljIGRpc3BTb3J0TW9kZSA9IHRoaXMuc29ydE1vZGU7XG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMubGlzdC5tZXNzYWdlcyRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fc3Vic2NyaXB0aW9ucyQpLFxuICAgICAgICBmaWx0ZXIoKG0pID0+IG0uZGVzdCA9PT0gJ2hlYWRlcicpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChtKSA9PiB7XG4gICAgICAgIHRoaXMuZGlzcE1lbnVNb2RlID1cbiAgICAgICAgICBtLm1lbnUgJiYgbS5tZW51ICE9PSAnZGVmYXVsdCcgPyBtLm1lbnUgOiB0aGlzLm1lbnVNb2RlO1xuICAgICAgICB0aGlzLmRpc3BTb3J0TW9kZSA9XG4gICAgICAgICAgbS5zb3J0ICYmIG0uc29ydCAhPT0gJ2RlZmF1bHQnID8gbS5zb3J0IDogdGhpcy5zb3J0TW9kZTtcbiAgICAgICAgdGhpcy5kaXNwbGF5ID0gbS5zaG93ICE9PSB1bmRlZmluZWQgPyBtLnNob3cgOiB0aGlzLmRpc3BsYXk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zJC5uZXh0KCk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucyQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNhYmxlKCkge1xuICAgIHRoaXMubGlzdC5maWVsZHMuZGlzYWJsZSh0aGlzLmZpZWxkKTtcbiAgfVxuXG4gIHB1YmxpYyBlbmFibGUoZjogTW9kZWxMaXN0RmllbGQpIHtcbiAgICB0aGlzLmxpc3QuZmllbGRzLm1vdmUoZi5uYW1lLCAnYWZ0ZXInLCB0aGlzLmZpZWxkKTtcbiAgICB0aGlzLmxpc3QuZmllbGRzLmVuYWJsZShmLm5hbWUpO1xuICB9XG59XG4iLCJcbjxuZy10ZW1wbGF0ZSAjbGFiZWw+PHNwYW4gI3JlZj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9zcGFuPjxzcGFuICpuZ0lmPVwiIXJlZi5jaGlsZHJlbi5sZW5ndGhcIj57e2xpc3QuZmllbGRzLmdldChmaWVsZCk/LmxhYmVsfHxmaWVsZH19PC9zcGFuPjwvbmctdGVtcGxhdGU+XG48ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWVuZCBzbGFiZWxcIj5cbiAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCI+XG4gICAgPGRhdGEtbW9kZWwtbGlzdC1zb3J0ZXIgW2xpc3RdPVwibGlzdFwiIFtmaWVsZF09XCJzb3J0RmllbGR8fGZpZWxkXCIgKm5nSWY9XCJzb3J0ICZhbXA7JmFtcDsgZGlzcFNvcnRNb2RlPT09J3NpZGUnXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGFiZWxcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2RhdGEtbW9kZWwtbGlzdC1zb3J0ZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzb3J0IHx8IGRpc3BTb3J0TW9kZT09PSdoaWRlJ1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibmF2aWNvbnMgZC1mbGV4IGZsZXgtcm93XCIgW2F0dHIuYXJpYS1sYWJlbF09XCInR2VzdGlvbiBjaGFtcHMnXCIgKm5nSWY9XCJkaXNwTWVudU1vZGU9PT0nc2lkZSdcIj48aSBjbGFzcz1cImJpIGJpLWNhcmV0LWxlZnQtZmlsbFwiIHJvbGU9XCJidXR0b25cIiAoY2xpY2spPVwibGlzdC5maWVsZHMubW92ZShmaWVsZCwgJ2JlZm9yZScpXCIgYXJpYS1sYWJlbD1cIkTDqXBsYWNlciB2ZXJzIGxhIGdhdWNoZVwiPjwvaT5cbiAgICA8ZGl2IG5nYkRyb3Bkb3duICNtbnU9XCJuZ2JEcm9wZG93blwiIFtjb250YWluZXJdPVwiJ2JvZHknXCI+PGkgY2xhc3M9XCJiaSBiaS1yZWNvcmRcIiBuZ2JEcm9wZG93blRvZ2dsZSBhcmlhLWxhYmVsPVwiT3V2cmlyIGxhIGJvaXRlIGRlIGRpYWxvZ3VlIGRlcyBjaGFtcHNcIiByb2xlPVwiYnV0dG9uXCI+PC9pPlxuICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnU+XG4gICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJkaXNhYmxlKClcIj48aSBjbGFzcz1cImJpIGJpLXRyYXNoIG1lLTJcIj48L2k+U3VwcHJpbWVyPC9idXR0b24+XG4gICAgICAgIDxoNiBjbGFzcz1cImRyb3Bkb3duLWhlYWRlclwiPkFqb3V0ZXIgdW5lIGNvbG9ubmUgYXByw6hzPC9oNj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZiBvZiBsaXN0LmZpZWxkcy5maWVsZHN8YXN5bmNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZi5hbGxvd2VkICZhbXA7JmFtcDsgIWYuZW5hYmxlZFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cImVuYWJsZShmKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiZi5sYWJlbHx8Zi5uYW1lXCI+PGkgY2xhc3M9XCJiaSBiaS1wbHVzLWNpcmNsZSBtZS0yXCI+PC9pPnt7Zi5sYWJlbHx8Zi5uYW1lfX08L2J1dHRvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj48aSBjbGFzcz1cImJpIGJpLWNhcmV0LXJpZ2h0LWZpbGxcIiByb2xlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImxpc3QuZmllbGRzLm1vdmUoZmllbGQsICdhZnRlcicpXCIgYXJpYS1sYWJlbD1cIkTDqXBsYWNlciB2ZXJzIGxhIGRyb2l0ZVwiPjwvaT5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
@@ -1,16 +1,169 @@
1
1
  import { Component, Input } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
+ import { FormControl, ReactiveFormsModule } from '@angular/forms';
4
+ import { debounceTime, firstValueFrom, Subject } from 'rxjs';
3
5
  import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "@angular/forms";
8
+ class Level {
9
+ constructor(tree, level, choices) {
10
+ this.tree = tree;
11
+ this.level = level;
12
+ this.fc = new FormControl('');
13
+ this.choices = choices;
14
+ this.subs = this.fc.valueChanges.subscribe((val) => {
15
+ if (this.selected !== val) {
16
+ this.selected = val;
17
+ this.tree.updated(this);
18
+ }
19
+ });
20
+ }
21
+ close() {
22
+ this.subs.unsubscribe();
23
+ }
24
+ }
25
+ class Tree {
26
+ constructor(qs, maxLevel, display, filter) {
27
+ this.qs = qs;
28
+ this.maxLevel = maxLevel;
29
+ this.display = display;
30
+ this.filter = filter;
31
+ this.levels = [];
32
+ this.changed = new Subject();
33
+ }
34
+ /**
35
+ * Conditionnaly add level to current tree.
36
+ *
37
+ * - if previous level have non-empty selected value
38
+ * - if current level choices are non empty
39
+ */
40
+ async addLevel(fparent) {
41
+ let values = [];
42
+ if (this.levels.length === 0) {
43
+ values = await firstValueFrom(this.qs
44
+ .filter({ level: this.levels.length, parent: 'null', ...this.filter })
45
+ .get());
46
+ }
47
+ else {
48
+ const parent = fparent
49
+ ? fparent
50
+ : this.levels[this.levels.length - 1].selected;
51
+ if (parent) {
52
+ values = await firstValueFrom(this.qs
53
+ .filter({
54
+ level: this.levels.length,
55
+ parent: this.levels[this.levels.length - 1].selected || 'null',
56
+ ...this.filter,
57
+ })
58
+ .get());
59
+ }
60
+ }
61
+ if (values.length > 0) {
62
+ const level = new Level(this, this.levels.length, []);
63
+ for (const v of values) {
64
+ level.choices.push({ value: v.id, desc: this.display(v) });
65
+ }
66
+ this.levels.push(level);
67
+ return level;
68
+ }
69
+ return null;
70
+ }
71
+ updated(level) {
72
+ const newLevels = [];
73
+ for (const l of this.levels) {
74
+ if (l.level <= level.level) {
75
+ newLevels.push(l);
76
+ }
77
+ else if (l.level > level.level) {
78
+ l.close();
79
+ }
80
+ }
81
+ this.levels = newLevels;
82
+ this.addLevel();
83
+ if (level.selected) {
84
+ this.changed.next(level.selected);
85
+ }
86
+ else {
87
+ this.changed.next(this.levels[level.level - 1]?.selected || null);
88
+ }
89
+ }
90
+ async prepare(value) {
91
+ // console.log('prepare', value);
92
+ const levels = [];
93
+ let cur = (await firstValueFrom(this.qs.filter({ id: value, ...this.filter }).get()))[0];
94
+ levels.push(cur);
95
+ let nlev = 0;
96
+ while (cur.parent !== null) {
97
+ cur = (await firstValueFrom(this.qs
98
+ .filter({
99
+ id: cur.parent,
100
+ ...this.filter,
101
+ })
102
+ .get()))[0];
103
+ levels.push(cur);
104
+ nlev++;
105
+ if (nlev > this.maxLevel) {
106
+ throw Error('Max level error, could not find root');
107
+ }
108
+ }
109
+ for (let i = levels.length - 1; i >= 0; i--) {
110
+ const lv = await this.addLevel();
111
+ if (lv !== null) {
112
+ lv.selected = levels[i].id;
113
+ lv.fc.setValue(levels[i].id, { emitEvent: false });
114
+ }
115
+ }
116
+ if (this.levels.length <= this.maxLevel) {
117
+ await this.addLevel();
118
+ }
119
+ }
120
+ reset() { }
121
+ }
4
122
  export class ModelListTreeFilterComponent {
5
123
  constructor() {
6
124
  this.classes = '';
7
125
  }
126
+ async ngOnInit() {
127
+ this.tree = new Tree(this.filter.queryset, this.filter.maxLevel, this.filter.display, this.filter.filter);
128
+ if (this.filter.get()) {
129
+ await this.tree.prepare(this.filter.get()?.value);
130
+ }
131
+ else {
132
+ await this.tree.addLevel();
133
+ }
134
+ this.tree.changed.pipe(debounceTime(250)).subscribe((val) => {
135
+ // console.log('changed', val);
136
+ if (val === null) {
137
+ this.filter.clear();
138
+ this.list.filters.update();
139
+ }
140
+ else {
141
+ if (this.filter.set(val, '')) {
142
+ this.list.filters.update();
143
+ }
144
+ }
145
+ });
146
+ // this.tree.changed.subscribe((selected) => {
147
+ // console.log('tree changed', selected);
148
+ // this.filter.set(selected, '');
149
+ // });
150
+ // if (this.filter.getValue()) {
151
+ // console.log('filter value', this.filter.getValue());
152
+ // await this.tree.prepare(this.filter.getValue() as number);
153
+ // } else {
154
+ // await this.tree.addLevel();
155
+ // }
156
+ }
157
+ disable() {
158
+ this.filter.enabled = false;
159
+ this.list.filters.update();
160
+ }
8
161
  }
9
162
  ModelListTreeFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: ModelListTreeFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
- ModelListTreeFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: ModelListTreeFilterComponent, isStandalone: true, selector: "data-model-list-tree-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "<p>model-list-tree-filter works!</p>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
163
+ ModelListTreeFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: ModelListTreeFilterComponent, isStandalone: true, selector: "data-model-list-tree-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <div class=\"levelselect\" *ngFor=\"let l of tree.levels\">\n <select class=\"form-select form-select-sm\" [formControl]=\"l.fc\">\n <option value=\"\">{{filter.help}}</option>\n <option *ngFor=\"let ch of l.choices\" [value]=\"ch.value\">{{ch.desc}}</option>\n </select>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
11
164
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: ModelListTreeFilterComponent, decorators: [{
12
165
  type: Component,
13
- args: [{ selector: 'data-model-list-tree-filter', standalone: true, imports: [CommonModule], template: "<p>model-list-tree-filter works!</p>" }]
166
+ args: [{ selector: 'data-model-list-tree-filter', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <div class=\"levelselect\" *ngFor=\"let l of tree.levels\">\n <select class=\"form-select form-select-sm\" [formControl]=\"l.fc\">\n <option value=\"\">{{filter.help}}</option>\n <option *ngFor=\"let ch of l.choices\" [value]=\"ch.value\">{{ch.desc}}</option>\n </select>\n </div>\n</div>" }]
14
167
  }], ctorParameters: function () { return []; }, propDecorators: { list: [{
15
168
  type: Input
16
169
  }], filter: [{
@@ -18,4 +171,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImpor
18
171
  }], classes: [{
19
172
  type: Input
20
173
  }] } });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC10cmVlLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmlsdGVycy9maWx0ZXJzL21vZGVsLWxpc3QtdHJlZS1maWx0ZXIvbW9kZWwtbGlzdC10cmVlLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmlsdGVycy9maWx0ZXJzL21vZGVsLWxpc3QtdHJlZS1maWx0ZXIvbW9kZWwtbGlzdC10cmVlLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBUy9DLE1BQU0sT0FBTyw0QkFBNEI7SUFLdkM7UUFGZ0IsWUFBTyxHQUFzQixFQUFFLENBQUM7SUFFakMsQ0FBQzs7eUhBTEwsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsdUpDWnpDLHNDQUFvQyx5RERVeEIsWUFBWTsyRkFFWCw0QkFBNEI7a0JBUHhDLFNBQVM7K0JBQ0UsNkJBQTZCLGNBRzNCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQzswRUFHUCxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vZGVsTGlzdCB9IGZyb20gJy4uLy4uLy4uL21vZGVsLWxpc3Quc2VydmljZSc7XG5pbXBvcnQgeyBNb2RlbExpc3RUcmVlRmlsdGVyIH0gZnJvbSAnLi9tb2RlbC1saXN0LXRyZWUtZmlsdGVyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdGEtbW9kZWwtbGlzdC10cmVlLWZpbHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RlbC1saXN0LXRyZWUtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9kZWwtbGlzdC10cmVlLWZpbHRlci5jb21wb25lbnQuc2FzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgTW9kZWxMaXN0VHJlZUZpbHRlckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHB1YmxpYyBsaXN0ITogTW9kZWxMaXN0PGFueT47XG4gIEBJbnB1dCgpIHB1YmxpYyBmaWx0ZXIhOiBNb2RlbExpc3RUcmVlRmlsdGVyO1xuICBASW5wdXQoKSBwdWJsaWMgY2xhc3Nlczogc3RyaW5nW10gfCBzdHJpbmcgPSAnJztcblxuICBjb25zdHJ1Y3RvcigpIHt9XG59XG4iLCI8cD5tb2RlbC1saXN0LXRyZWUtZmlsdGVyIHdvcmtzITwvcD4iXX0=
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC10cmVlLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmlsdGVycy9maWx0ZXJzL21vZGVsLWxpc3QtdHJlZS1maWx0ZXIvbW9kZWwtbGlzdC10cmVlLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmlsdGVycy9maWx0ZXJzL21vZGVsLWxpc3QtdHJlZS1maWx0ZXIvbW9kZWwtbGlzdC10cmVlLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUd6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7Ozs7QUFHM0UsTUFBTSxLQUFLO0lBUVQsWUFDRSxJQUFhLEVBQ2IsS0FBYSxFQUNiLE9BQTBDO1FBRTFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxH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QU0sRUFBRSxDQUFDO0lBQzdCLENBQUM7O3lIQWxEVSw0QkFBNEI7NkdBQTVCLDRCQUE0Qix1SkM1SnpDLGlnQkFVTSx5RERnSk0sWUFBWSx5UEFBRSxtQkFBbUI7MkZBRWhDLDRCQUE0QjtrQkFQeEMsU0FBUzsrQkFDRSw2QkFBNkIsY0FHM0IsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixDQUFDOzBFQUs1QixJQUFJO3NCQUFuQixLQUFLO2dCQUNVLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kZWxMaXN0IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWwtbGlzdC5zZXJ2aWNlJztcbmltcG9ydCB7IE1vZGVsTGlzdFRyZWVGaWx0ZXIgfSBmcm9tICcuL21vZGVsLWxpc3QtdHJlZS1maWx0ZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERhdGFNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL2RhdGEvZGF0YS1tb2RlbCc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlyc3RWYWx1ZUZyb20sIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmlsdGVyRGF0YSwgUXVlcnlzZXQgfSBmcm9tICcuLi8uLi8uLi8uLi9kYXRhL2RhdGEtcXVlcnknO1xuXG5jbGFzcyBMZXZlbDxUIGV4dGVuZHMgRGF0YU1vZGVsPiB7XG4gIHB1YmxpYyBsZXZlbDogbnVtYmVyO1xuICBwdWJsaWMgdHJlZTogVHJlZTxUPjtcbiAgcHVibGljIGNob2ljZXM6IHsgdmFsdWU6IG51bWJlcjsgZGVzYzogc3RyaW5nIH1bXTtcbiAgcHVibGljIGZjOiBGb3JtQ29udHJvbDtcbiAgcHVibGljIHNlbGVjdGVkITogbnVtYmVyO1xuICBwdWJsaWMgc3ViczogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHRyZWU6IFRyZWU8VD4sXG4gICAgbGV2ZWw6IG51bWJlcixcbiAgICBjaG9pY2VzOiB7IHZhbHVlOiBudW1iZXI7IGRlc2M6IHN0cmluZyB9W11cbiAgKSB7XG4gICAgdGhpcy50cmVlID0gdHJlZTtcbiAgICB0aGlzLmxldmVsID0gbGV2ZWw7XG4gICAgdGhpcy5mYyA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gICAgdGhpcy5jaG9pY2VzID0gY2hvaWNlcztcbiAgICB0aGlzLnN1YnMgPSB0aGlzLmZjLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQgIT09IHZhbCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkID0gdmFsO1xuICAgICAgICB0aGlzLnRyZWUudXBkYXRlZCh0aGlzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSgpIHtcbiAgICB0aGlzLnN1YnMudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuXG5jbGFzcyBUcmVlPFQgZXh0ZW5kcyBEYXRhTW9kZWw+IHtcbiAgbGV2ZWxzOiBMZXZlbDxUPltdID0gW107XG4gIGNoYW5nZWQ6IFN1YmplY3Q8bnVtYmVyIHwgbnVsbD4gPSBuZXcgU3ViamVjdDxudW1iZXIgfCBudWxsPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcXM6IFF1ZXJ5c2V0PFQ+LFxuICAgIHByaXZhdGUgbWF4TGV2ZWw6IG51bWJlcixcbiAgICBwcml2YXRlIGRpc3BsYXk6IGFueSxcbiAgICBwcml2YXRlIGZpbHRlcjogRmlsdGVyRGF0YVxuICApIHt9XG5cbiAgLyoqXG4gICAqIENvbmRpdGlvbm5hbHkgYWRkIGxldmVsIHRvIGN1cnJlbnQgdHJlZS5cbiAgICpcbiAgICogLSBpZiBwcmV2aW91cyBsZXZlbCBoYXZlIG5vbi1lbXB0eSBzZWxlY3RlZCB2YWx1ZVxuICAgKiAtIGlmIGN1cnJlbnQgbGV2ZWwgY2hvaWNlcyBhcmUgbm9uIGVtcHR5XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgYWRkTGV2ZWwoZnBhcmVudD86IG51bWJlcik6IFByb21pc2U8TGV2ZWw8VD4gfCBudWxsPiB7XG4gICAgbGV0IHZhbHVlczogVFtdID0gW107XG4gICAgaWYgKHRoaXMubGV2ZWxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdmFsdWVzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMucXNcbiAgICAgICAgICAuZmlsdGVyKHsgbGV2ZWw6IHRoaXMubGV2ZWxzLmxlbmd0aCwgcGFyZW50OiAnbnVsbCcsIC4uLnRoaXMuZmlsdGVyIH0pXG4gICAgICAgICAgLmdldCgpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwYXJlbnQgPSBmcGFyZW50XG4gICAgICAgID8gZnBhcmVudFxuICAgICAgICA6IHRoaXMubGV2ZWxzW3RoaXMubGV2ZWxzLmxlbmd0aCAtIDFdLnNlbGVjdGVkO1xuICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICB2YWx1ZXMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgICB0aGlzLnFzXG4gICAgICAgICAgICAuZmlsdGVyKHtcbiAgICAgICAgICAgICAgbGV2ZWw6IHRoaXMubGV2ZWxzLmxlbmd0aCxcbiAgICAgICAgICAgICAgcGFyZW50OiB0aGlzLmxldmVsc1t0aGlzLmxldmVscy5sZW5ndGggLSAxXS5zZWxlY3RlZCB8fCAnbnVsbCcsXG4gICAgICAgICAgICAgIC4uLnRoaXMuZmlsdGVyLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5nZXQoKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGxldmVsID0gbmV3IExldmVsKHRoaXMsIHRoaXMubGV2ZWxzLmxlbmd0aCwgW10pO1xuICAgICAgZm9yIChjb25zdCB2IG9mIHZhbHVlcykge1xuICAgICAgICBsZXZlbC5jaG9pY2VzLnB1c2goeyB2YWx1ZTogdi5pZCBhcyBudW1iZXIsIGRlc2M6IHRoaXMuZGlzcGxheSh2KSB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMubGV2ZWxzLnB1c2gobGV2ZWwpO1xuICAgICAgcmV0dXJuIGxldmVsO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVkKGxldmVsOiBMZXZlbDxUPikge1xuICAgIGNvbnN0IG5ld0xldmVsczogTGV2ZWw8VD5bXSA9IFtdO1xuICAgIGZvciAoY29uc3QgbCBvZiB0aGlzLmxldmVscykge1xuICAgICAgaWYgKGwubGV2ZWwgPD0gbGV2ZWwubGV2ZWwpIHtcbiAgICAgICAgbmV3TGV2ZWxzLnB1c2gobCk7XG4gICAgICB9IGVsc2UgaWYgKGwubGV2ZWwgPiBsZXZlbC5sZXZlbCkge1xuICAgICAgICBsLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubGV2ZWxzID0gbmV3TGV2ZWxzO1xuICAgIHRoaXMuYWRkTGV2ZWwoKTtcbiAgICBpZiAobGV2ZWwuc2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuY2hhbmdlZC5uZXh0KGxldmVsLnNlbGVjdGVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jaGFuZ2VkLm5leHQodGhpcy5sZXZlbHNbbGV2ZWwubGV2ZWwgLSAxXT8uc2VsZWN0ZWQgfHwgbnVsbCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHByZXBhcmUodmFsdWU6IG51bWJlcikge1xuICAgIC8vIGNvbnNvbGUubG9nKCdwcmVwYXJlJywgdmFsdWUpO1xuICAgIGNvbnN0IGxldmVsczogVFtdID0gW107XG4gICAgbGV0IGN1ciA9IChcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucXMuZmlsdGVyKHsgaWQ6IHZhbHVlLCAuLi50aGlzLmZpbHRlciB9KS5nZXQoKSlcbiAgICApWzBdO1xuICAgIGxldmVscy5wdXNoKGN1cik7XG4gICAgbGV0IG5sZXYgPSAwO1xuICAgIHdoaWxlICgoY3VyIGFzIGFueSkucGFyZW50ICE9PSBudWxsKSB7XG4gICAgICBjdXIgPSAoXG4gICAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICAgIHRoaXMucXNcbiAgICAgICAgICAgIC5maWx0ZXIoe1xuICAgICAgICAgICAgICBpZDogKGN1ciBhcyBhbnkpLnBhcmVudCxcbiAgICAgICAgICAgICAgLi4udGhpcy5maWx0ZXIsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmdldCgpXG4gICAgICAgIClcbiAgICAgIClbMF07XG4gICAgICBsZXZlbHMucHVzaChjdXIpO1xuICAgICAgbmxldisrO1xuICAgICAgaWYgKG5sZXYgPiB0aGlzLm1heExldmVsKSB7XG4gICAgICAgIHRocm93IEVycm9yKCdNYXggbGV2ZWwgZXJyb3IsIGNvdWxkIG5vdCBmaW5kIHJvb3QnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IGxldmVscy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgY29uc3QgbHYgPSBhd2FpdCB0aGlzLmFkZExldmVsKCk7XG4gICAgICBpZiAobHYgIT09IG51bGwpIHtcbiAgICAgICAgbHYuc2VsZWN0ZWQgPSBsZXZlbHNbaV0uaWQgYXMgbnVtYmVyO1xuICAgICAgICBsdi5mYy5zZXRWYWx1ZShsZXZlbHNbaV0uaWQgYXMgbnVtYmVyLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmxldmVscy5sZW5ndGggPD0gdGhpcy5tYXhMZXZlbCkge1xuICAgICAgYXdhaXQgdGhpcy5hZGRMZXZlbCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpIHt9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdGEtbW9kZWwtbGlzdC10cmVlLWZpbHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RlbC1saXN0LXRyZWUtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9kZWwtbGlzdC10cmVlLWZpbHRlci5jb21wb25lbnQuc2FzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgTW9kZWxMaXN0VHJlZUZpbHRlckNvbXBvbmVudDxUIGV4dGVuZHMgRGF0YU1vZGVsPlxuICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICBASW5wdXQoKSBwdWJsaWMgbGlzdCE6IE1vZGVsTGlzdDxhbnk+O1xuICBASW5wdXQoKSBwdWJsaWMgZmlsdGVyITogTW9kZWxMaXN0VHJlZUZpbHRlcjxUPjtcbiAgQElucHV0KCkgcHVibGljIGNsYXNzZXM6IHN0cmluZ1tdIHwgc3RyaW5nID0gJyc7XG4gIHB1YmxpYyB0cmVlITogVHJlZTxUPjtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgcHVibGljIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMudHJlZSA9IG5ldyBUcmVlKFxuICAgICAgdGhpcy5maWx0ZXIucXVlcnlzZXQsXG4gICAgICB0aGlzLmZpbHRlci5tYXhMZXZlbCxcbiAgICAgIHRoaXMuZmlsdGVyLmRpc3BsYXksXG4gICAgICB0aGlzLmZpbHRlci5maWx0ZXJcbiAgICApO1xuICAgIGlmICh0aGlzLmZpbHRlci5nZXQoKSkge1xuICAgICAgYXdhaXQgdGhpcy50cmVlLnByZXBhcmUodGhpcy5maWx0ZXIuZ2V0KCk/LnZhbHVlIGFzIG51bWJlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMudHJlZS5hZGRMZXZlbCgpO1xuICAgIH1cblxuICAgIHRoaXMudHJlZS5jaGFuZ2VkLnBpcGUoZGVib3VuY2VUaW1lKDI1MCkpLnN1YnNjcmliZSgodmFsKSA9PiB7XG4gICAgICAvLyBjb25zb2xlLmxvZygnY2hhbmdlZCcsIHZhbCk7XG4gICAgICBpZiAodmFsID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyLmNsZWFyKCk7XG4gICAgICAgIHRoaXMubGlzdC5maWx0ZXJzLnVwZGF0ZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyLnNldCh2YWwsICcnKSkge1xuICAgICAgICAgIHRoaXMubGlzdC5maWx0ZXJzLnVwZGF0ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyB0aGlzLnRyZWUuY2hhbmdlZC5zdWJzY3JpYmUoKHNlbGVjdGVkKSA9PiB7XG4gICAgLy8gICBjb25zb2xlLmxvZygndHJlZSBjaGFuZ2VkJywgc2VsZWN0ZWQpO1xuICAgIC8vICAgdGhpcy5maWx0ZXIuc2V0KHNlbGVjdGVkLCAnJyk7XG4gICAgLy8gfSk7XG4gICAgLy8gaWYgKHRoaXMuZmlsdGVyLmdldFZhbHVlKCkpIHtcbiAgICAvLyAgIGNvbnNvbGUubG9nKCdmaWx0ZXIgdmFsdWUnLCB0aGlzLmZpbHRlci5nZXRWYWx1ZSgpKTtcbiAgICAvLyAgIGF3YWl0IHRoaXMudHJlZS5wcmVwYXJlKHRoaXMuZmlsdGVyLmdldFZhbHVlKCkgYXMgbnVtYmVyKTtcbiAgICAvLyB9IGVsc2Uge1xuICAgIC8vICAgYXdhaXQgdGhpcy50cmVlLmFkZExldmVsKCk7XG4gICAgLy8gfVxuICB9XG5cbiAgcHVibGljIGRpc2FibGUoKSB7XG4gICAgdGhpcy5maWx0ZXIuZW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMubGlzdC5maWx0ZXJzLnVwZGF0ZSgpO1xuICB9XG59XG4iLCJcbjxkaXYgY2xhc3M9XCJmaWx0ZXJpdGVtXCIgW25nQ2xhc3NdPVwiZmlsdGVyLmRpc3BsYXlDbGFzc2VzIHx8IGNsYXNzZXNcIj5cbiAgPGRpdiBjbGFzcz1cInRyYXNoIGZsb2F0LWVuZFwiIChjbGljayk9XCJkaXNhYmxlKClcIj48aSBjbGFzcz1cImJpIGJpLXRyYXNoXCI+PC9pPjwvZGl2PlxuICA8bGFiZWw+e3tmaWx0ZXIubGFiZWx9fTwvbGFiZWw+XG4gIDxkaXYgY2xhc3M9XCJsZXZlbHNlbGVjdFwiICpuZ0Zvcj1cImxldCBsIG9mIHRyZWUubGV2ZWxzXCI+XG4gICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCIgW2Zvcm1Db250cm9sXT1cImwuZmNcIj5cbiAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj57e2ZpbHRlci5oZWxwfX08L29wdGlvbj5cbiAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGNoIG9mIGwuY2hvaWNlc1wiIFt2YWx1ZV09XCJjaC52YWx1ZVwiPnt7Y2guZGVzY319PC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gIDwvZGl2PlxuPC9kaXY+Il19
@@ -1,14 +1,18 @@
1
- import { ModelListFilter } from "../../model-list-filter";
2
- export class ModelListTreeFilter extends ModelListFilter {
1
+ import { ModelListAutocompleteFilter, } from '../model-list-autocomplete-filter/model-list-autocomplete-filter';
2
+ export class ModelListTreeFilter extends ModelListAutocompleteFilter {
3
3
  constructor(params) {
4
4
  super(params);
5
- this.type = "tree";
6
- if (this.label == "") {
7
- this.label = "Sélectionnez dans la hiérarchie";
5
+ this.maxLevel = 5;
6
+ this.type = 'tree';
7
+ if (this.label == '') {
8
+ this.label = 'Sélectionnez dans la hiérarchie';
8
9
  }
9
- if (this.help == "") {
10
- this.help = "Texte à rechercher";
10
+ if (this.help == '') {
11
+ this.help = 'Texte à rechercher';
12
+ }
13
+ if (params.maxLevel) {
14
+ this.maxLevel = params.maxLevel;
11
15
  }
12
16
  }
13
17
  }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC10cmVlLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9tb2RlbGxpc3QvbW9kZWwtbGlzdC1maWx0ZXJzL2ZpbHRlcnMvbW9kZWwtbGlzdC10cmVlLWZpbHRlci9tb2RlbC1saXN0LXRyZWUtZmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxlQUFlLEVBQXdCLE1BQU0seUJBQXlCLENBQUM7QUFFL0UsTUFBTSxPQUFPLG1CQUFxQixTQUFRLGVBQWU7SUFDdkQsWUFBWSxNQUE2QjtRQUN2QyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztRQUNuQixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsaUNBQWlDLENBQUM7U0FDaEQ7UUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFO1lBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsb0JBQW9CLENBQUM7U0FDbEM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01vZGVsTGlzdEZpbHRlciwgTW9kZWxMaXN0RmlsdGVyUGFyYW1zfSBmcm9tIFwiLi4vLi4vbW9kZWwtbGlzdC1maWx0ZXJcIjtcblxuZXhwb3J0IGNsYXNzIE1vZGVsTGlzdFRyZWVGaWx0ZXIgIGV4dGVuZHMgTW9kZWxMaXN0RmlsdGVyIHtcbiAgY29uc3RydWN0b3IocGFyYW1zOiBNb2RlbExpc3RGaWx0ZXJQYXJhbXMpIHtcbiAgICBzdXBlcihwYXJhbXMpO1xuICAgIHRoaXMudHlwZSA9IFwidHJlZVwiO1xuICAgIGlmICh0aGlzLmxhYmVsID09IFwiXCIpIHtcbiAgICAgIHRoaXMubGFiZWwgPSBcIlPDqWxlY3Rpb25uZXogZGFucyBsYSBoacOpcmFyY2hpZVwiO1xuICAgIH1cbiAgICBpZiAodGhpcy5oZWxwID09IFwiXCIpIHtcbiAgICAgIHRoaXMuaGVscCA9IFwiVGV4dGUgw6AgcmVjaGVyY2hlclwiO1xuICAgIH1cbiAgfVxufVxuIl19
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC10cmVlLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9tb2RlbGxpc3QvbW9kZWwtbGlzdC1maWx0ZXJzL2ZpbHRlcnMvbW9kZWwtbGlzdC10cmVlLWZpbHRlci9tb2RlbC1saXN0LXRyZWUtZmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCwyQkFBMkIsR0FFNUIsTUFBTSxrRUFBa0UsQ0FBQztBQU8xRSxNQUFNLE9BQU8sbUJBQ1gsU0FBUSwyQkFBOEI7SUFLdEMsWUFBWSxNQUE4QjtRQUN4QyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFIVCxhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBSTFCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1FBQ25CLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxpQ0FBaUMsQ0FBQztTQUNoRDtRQUNELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxvQkFBb0IsQ0FBQztTQUNsQztRQUNELElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7U0FDakM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9kYXRhL2RhdGEtbW9kZWwnO1xuaW1wb3J0IHtcbiAgTW9kZWxMaXN0QXV0b2NvbXBsZXRlRmlsdGVyLFxuICBNb2RlbExpc3RBdXRvY29tcGxldGVQYXJhbXMsXG59IGZyb20gJy4uL21vZGVsLWxpc3QtYXV0b2NvbXBsZXRlLWZpbHRlci9tb2RlbC1saXN0LWF1dG9jb21wbGV0ZS1maWx0ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vZGVsTGlzdFRyZWVQYXJhbXM8VCBleHRlbmRzIERhdGFNb2RlbD5cbiAgZXh0ZW5kcyBNb2RlbExpc3RBdXRvY29tcGxldGVQYXJhbXM8VD4ge1xuICBtYXhMZXZlbD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIE1vZGVsTGlzdFRyZWVGaWx0ZXI8VCBleHRlbmRzIERhdGFNb2RlbD5cbiAgZXh0ZW5kcyBNb2RlbExpc3RBdXRvY29tcGxldGVGaWx0ZXI8VD5cbiAgaW1wbGVtZW50cyBNb2RlbExpc3RUcmVlUGFyYW1zPFQ+XG57XG4gIHB1YmxpYyBtYXhMZXZlbDogbnVtYmVyID0gNTtcblxuICBjb25zdHJ1Y3RvcihwYXJhbXM6IE1vZGVsTGlzdFRyZWVQYXJhbXM8VD4pIHtcbiAgICBzdXBlcihwYXJhbXMpO1xuICAgIHRoaXMudHlwZSA9ICd0cmVlJztcbiAgICBpZiAodGhpcy5sYWJlbCA9PSAnJykge1xuICAgICAgdGhpcy5sYWJlbCA9ICdTw6lsZWN0aW9ubmV6IGRhbnMgbGEgaGnDqXJhcmNoaWUnO1xuICAgIH1cbiAgICBpZiAodGhpcy5oZWxwID09ICcnKSB7XG4gICAgICB0aGlzLmhlbHAgPSAnVGV4dGUgw6AgcmVjaGVyY2hlcic7XG4gICAgfVxuICAgIGlmIChwYXJhbXMubWF4TGV2ZWwpIHtcbiAgICAgIHRoaXMubWF4TGV2ZWwgPSBwYXJhbXMubWF4TGV2ZWw7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -75,6 +75,9 @@ export class ModelListFilter {
75
75
  getValue() {
76
76
  return `${this._value?.value}`;
77
77
  }
78
+ get() {
79
+ return this._value;
80
+ }
78
81
  mtoggle(value, desc, notify = true) {
79
82
  if (this._mvalue.has(`${value}`)) {
80
83
  this._mvalue.delete(`${value}`);
@@ -143,4 +146,4 @@ export class ModelListFilter {
143
146
  }
144
147
  }
145
148
  }
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1maWx0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmlsdGVycy9tb2RlbC1saXN0LWZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBZWpELE1BQU0sT0FBTyxlQUFlO0lBdUIxQixZQUFZLE1BQTZCO1FBWmxDLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUVyQiwyQkFBMkI7UUFDakIsV0FBTSxHQUEyQixJQUFJLENBQUM7UUFDaEQsNkJBQTZCO1FBQ25CLFlBQU8sR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUM5QyxzQ0FBc0M7UUFDNUIsYUFBUSxHQUFHLElBQUksYUFBYSxDQUF5QixDQUFDLENBQUMsQ0FBQztRQUNsRSx3Q0FBd0M7UUFDOUIsY0FBUyxHQUFHLElBQUksYUFBYSxDQUFvQixDQUFDLENBQUMsQ0FBQztRQUc1RCxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO1FBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JC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LENBQUMsU0FBUyxDQUFDLElBQUksQ0FDakIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDaEQsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUMvQixDQUFDLENBQUMsQ0FDSCxDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2pDO1NBQ0Y7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWx0ZXJEYXRhIH0gZnJvbSAnLi4vLi4vZGF0YS9kYXRhLXF1ZXJ5JztcbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZJTFRFUl9UWVBFIH0gZnJvbSAnLi9maWx0ZXJzL2ZpbHRlcnR5cGVzJztcbmltcG9ydCB7IElEaXNwRWRpdENob2ljZSB9IGZyb20gJy4uLy4uL2Rpc3BlZGl0L2Rpc3BlZGl0L2Rpc3BlZGl0LmNvbnN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxMaXN0RmlsdGVyUGFyYW1zIHtcbiAgbmFtZTogc3RyaW5nO1xuICBmaWVsZDogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgaGVscD86IHN0cmluZztcbiAgdmFsdWU/OiBhbnk7XG4gIGRlc2M/OiBhbnk7XG4gIGRlZmF1bHQ/OiBhbnk7XG4gIGRpc3BsYXlDbGFzc2VzPzogc3RyaW5nW10gfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBNb2RlbExpc3RGaWx0ZXIgaW1wbGVtZW50cyBNb2RlbExpc3RGaWx0ZXJQYXJhbXMge1xuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgZmllbGQ6IHN0cmluZztcbiAgcHVibGljIGxhYmVsOiBzdHJpbmc7XG4gIHB1YmxpYyBoZWxwOiBzdHJpbmc7XG4gIHB1YmxpYyBkZXNjPzogYW55O1xuICBwdWJsaWMgZGVmYXVsdD86IGFueTtcbiAgcHVibGljIHR5cGU6IEZJTFRFUl9UWVBFO1xuICBwdWJsaWMgYWxsb3dlZDogYm9vbGVhbjtcbiAgcHVibGljIGVuYWJsZWQ6IGJvb2xlYW47XG4gIHB1YmxpYyBkaXNwbGF5Q2xhc3Nlcz86IHN0cmluZ1tdIHwgc3RyaW5nO1xuICBwdWJsaWMgcHJpc3RpbmUgPSB0cnVlO1xuICBwdWJsaWMgbXVsdGkgPSBmYWxzZTtcblxuICAvKiogU2luZ2xlIGN1cnJlbnQgdmFsdWUgKi9cbiAgcHJvdGVjdGVkIF92YWx1ZTogSURpc3BFZGl0Q2hvaWNlIHwgbnVsbCA9IG51bGw7XG4gIC8qKiBNdWx0aXBsZSBjdXJyZW50IHZhbHVlICovXG4gIHByb3RlY3RlZCBfbXZhbHVlID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgLyoqIFNpbmdsZSBjdXJyZW50IHZhbHVlIG9ic2VydmFibGUgKi9cbiAgcHJvdGVjdGVkIF9jdXJyZW50ID0gbmV3IFJlcGxheVN1YmplY3Q8SURpc3BFZGl0Q2hvaWNlIHwgbnVsbD4oMSk7XG4gIC8qKiBNdWx0aXBsZSBjdXJyZW50IHZhbHVlIG9ic2VydmFibGUgKi9cbiAgcHJvdGVjdGVkIF9tY3VycmVudCA9IG5ldyBSZXBsYXlTdWJqZWN0PElEaXNwRWRpdENob2ljZVtdPigxKTtcblxuICBjb25zdHJ1Y3RvcihwYXJhbXM6IE1vZGVsTGlzdEZpbHRlclBhcmFtcykge1xuICAgIHRoaXMubmFtZSA9IHBhcmFtcy5uYW1lO1xuICAgIHRoaXMuZmllbGQgPSBwYXJhbXMuZmllbGQ7XG4gICAgdGhpcy5sYWJlbCA9IHBhcmFtcy5sYWJlbCB8fCAnJztcbiAgICB0aGlzLmhlbHAgPSBwYXJhbXMuaGVscCB8fCAnJztcbiAgICB0aGlzLmRlc2MgPSBwYXJhbXMuZGVzYztcbiAgICB0aGlzLmRpc3BsYXlDbGFzc2VzID0gcGFyYW1zLmRpc3BsYXlDbGFzc2VzO1xuICAgIHRoaXMuYWxsb3dlZCA9IGZhbHNlO1xuICAgIHRoaXMuZW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMudHlwZSA9ICd0ZXh0JztcbiAgICB0aGlzLmRlZmF1bHQgPSBwYXJhbXMuZGVmYXVsdDtcbiAgICAvLyBGSVhNRTogYWRkIHZhbHVlIGluaXRcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWN1cnJlbnQkKCk6IE9ic2VydmFibGU8SURpc3BFZGl0Q2hvaWNlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fbWN1cnJlbnQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnQkKCk6IE9ic2VydmFibGU8SURpc3BFZGl0Q2hvaWNlIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZUNoYW5nZXMoKTogT2JzZXJ2YWJsZTxcbiAgICBJRGlzcEVkaXRDaG9pY2UgfCBJRGlzcEVkaXRDaG9pY2VbXSB8IG51bGxcbiAgPiB7XG4gICAgaWYgKHRoaXMubXVsdGkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9tY3VycmVudC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRmlsdGVyKGZpbHRlcjogRmlsdGVyRGF0YSkge1xuICAgIGlmICh0aGlzLm11bHRpICYmIHRoaXMuX212YWx1ZS5zaXplID4gMCkge1xuICAgICAgZmlsdGVyW3RoaXMuZmllbGRdID0gdGhpcy5nZXRNdWx0aVZhbHVlKCk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICF0aGlzLm11bHRpICYmXG4gICAgICB0aGlzLl92YWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLl92YWx1ZSAhPT0gbnVsbFxuICAgICkge1xuICAgICAgZmlsdGVyW3RoaXMuZmllbGRdID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbGVhcihub3RpZnk6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgaWYgKHRoaXMubXVsdGkpIHtcbiAgICAgIHRoaXMuX212YWx1ZSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5ub3RpZnkobm90aWZ5KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQodmFsdWU6IGFueSwgZGVzYzogc3RyaW5nLCBub3RpZnk6IGJvb2xlYW4gPSB0cnVlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubXVsdGkpIHtcbiAgICAgIHJldHVybiB0aGlzLm1zZXQodmFsdWUsIGRlc2MsIG5vdGlmeSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNzZXQodmFsdWUsIGRlc2MsIG5vdGlmeSk7XG4gIH1cblxuICBwdWJsaWMgdW5zZXQodmFsdWU6IGFueSwgZGVzYzogc3RyaW5nLCBub3RpZnk6IGJvb2xlYW4gPSB0cnVlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubXVsdGkpIHtcbiAgICAgIHJldHVybiB0aGlzLm11bnNldCh2YWx1ZSwgZGVzYywgbm90aWZ5KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3Vuc2V0KHZhbHVlLCBkZXNjLCBub3RpZnkpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZSh2YWx1ZTogYW55LCBkZXNjOiBzdHJpbmcsIG5vdGlmeTogYm9vbGVhbiA9IHRydWUpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5tdWx0aSkge1xuICAgICAgcmV0dXJuIHRoaXMubXRvZ2dsZSh2YWx1ZSwgZGVzYywgbm90aWZ5KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RvZ2dsZSh2YWx1ZSwgZGVzYywgbm90aWZ5KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRWYWx1ZSgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIHJldHVybiBgJHt0aGlzLl92YWx1ZT8udmFsdWV9YDtcbiAgfVxuXG4gIHByaXZhdGUgbXRvZ2dsZSh2YWx1ZTogYW55LCBkZXNjOiBzdHJpbmcsIG5vdGlmeTogYm9vbGVhbiA9IHRydWUpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fbXZhbHVlLmhhcyhgJHt2YWx1ZX1gKSkge1xuICAgICAgdGhpcy5fbXZhbHVlLmRlbGV0ZShgJHt2YWx1ZX1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbXZhbHVlLnNldChgJHt2YWx1ZX1gLCBkZXNjKTtcbiAgICB9XG4gICAgdGhpcy5ub3RpZnkobm90aWZ5KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgbXNldCh2YWx1ZTogYW55LCBkZXNjOiBzdHJpbmcsIG5vdGlmeTogYm9vbGVhbiA9IHRydWUpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuX212YWx1ZS5oYXMoYCR7dmFsdWV9YCkpIHtcbiAgICAgIHRoaXMuX212YWx1ZS5zZXQoYCR7dmFsdWV9YCwgZGVzYyk7XG4gICAgICB0aGlzLm5vdGlmeShub3RpZnkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgbXVuc2V0KHZhbHVlOiBhbnksIGRlc2M6IHN0cmluZywgbm90aWZ5OiBib29sZWFuID0gdHJ1ZSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl9tdmFsdWUuaGFzKGAke3ZhbHVlfWApKSB7XG4gICAgICB0aGlzLl9tdmFsdWUuZGVsZXRlKGAke3ZhbHVlfWApO1xuICAgICAgdGhpcy5ub3RpZnkobm90aWZ5KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHN0b2dnbGUodmFsdWU6IGFueSwgZGVzYzogc3RyaW5nLCBub3RpZnk6IGJvb2xlYW4gPSB0cnVlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX3ZhbHVlICE9PSBudWxsICYmIHRoaXMuX3ZhbHVlLnZhbHVlID09PSB2YWx1ZSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHsgdmFsdWUsIGRlc2MgfTtcbiAgICB9XG4gICAgdGhpcy5ub3RpZnkobm90aWZ5KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3NldCh2YWx1ZTogYW55LCBkZXNjOiBzdHJpbmcsIG5vdGlmeTogYm9vbGVhbiA9IHRydWUpOiBib29sZWFuIHtcbiAgICBpZiAoISh0aGlzLl92YWx1ZSAhPT0gbnVsbCAmJiB0aGlzLl92YWx1ZS52YWx1ZSA9PT0gdmFsdWUpKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHsgdmFsdWUsIGRlc2MgfTtcbiAgICAgIHRoaXMubm90aWZ5KG5vdGlmeSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBzdW5zZXQodmFsdWU6IGFueSwgZGVzYzogc3RyaW5nLCBub3RpZnk6IGJvb2xlYW4gPSB0cnVlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX3ZhbHVlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLm5vdGlmeShub3RpZnkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TXVsdGlWYWx1ZSgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuX212YWx1ZS5rZXlzKCkpLmpvaW4oJywnKTtcbiAgfVxuXG4gIHByaXZhdGUgbm90aWZ5KG5vdGlmeTogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBpZiAobm90aWZ5KSB7XG4gICAgICBpZiAodGhpcy5tdWx0aSkge1xuICAgICAgICB0aGlzLl9tY3VycmVudC5uZXh0KFxuICAgICAgICAgIEFycmF5LmZyb20odGhpcy5fbXZhbHVlLmVudHJpZXMoKSkubWFwKChbaywgdl0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7IGRlc2M6IHYsIHZhbHVlOiBrIH07XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnQubmV4dCh0aGlzLl92YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1maWx0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmlsdGVycy9tb2RlbC1saXN0LWZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBZWpELE1BQU0sT0FBTyxlQUFlO0lBdUIxQixZQUFZLE1BQTZCO1FBWmxDLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUVyQiwyQkFBMkI7UUFDakIsV0FBTSxHQUEyQixJQUFJLENBQUM7UUFDaEQsNkJBQTZCO1FBQ25CLFlBQU8sR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUM5QyxzQ0FBc0M7UUFDNUIsYUFBUSxHQUFHLElBQUksYUFBYSxDQUF5QixDQUFDLENBQUMsQ0FBQztRQUNsRSx3Q0FBd0M7UUFDOUIsY0FBUyxHQUFHLElBQUksYUFBYSxDQUFvQixDQUFDLENBQUMsQ0FBQztRQUc1RCxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO1FBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JC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LE1BQU0sRUFBRTtZQUNWLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDakIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDaEQsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUMvQixDQUFDLENBQUMsQ0FDSCxDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2pDO1NBQ0Y7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWx0ZXJEYXRhIH0gZnJvbSAnLi4vLi4vZGF0YS9kYXRhLXF1ZXJ5JztcbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZJTFRFUl9UWVBFIH0gZnJvbSAnLi9maWx0ZXJzL2ZpbHRlcnR5cGVzJztcbmltcG9ydCB7IElEaXNwRWRpdENob2ljZSB9IGZyb20gJy4uLy4uL2Rpc3BlZGl0L2Rpc3BlZGl0L2Rpc3BlZGl0LmNvbnN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxMaXN0RmlsdGVyUGFyYW1zIHtcbiAgbmFtZTogc3RyaW5nO1xuICBmaWVsZDogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgaGVscD86IHN0cmluZztcbiAgdmFsdWU/OiBhbnk7XG4gIGRlc2M/OiBhbnk7XG4gIGRlZmF1bHQ/OiBhbnk7XG4gIGRpc3BsYXlDbGFzc2VzPzogc3RyaW5nW10gfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBNb2RlbExpc3RGaWx0ZXIgaW1wbGVtZW50cyBNb2RlbExpc3RGaWx0ZXJQYXJhbXMge1xuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgZmllbGQ6IHN0cmluZztcbiAgcHVibGljIGxhYmVsOiBzdHJpbmc7XG4gIHB1YmxpYyBoZWxwOiBzdHJpbmc7XG4gIHB1YmxpYyBkZXNjPzogYW55O1xuICBwdWJsaWMgZGVmYXVsdD86IGFueTtcbiAgcHVibGljIHR5cGU6IEZJTFRFUl9UWVBFO1xuICBwdWJsaWMgYWxsb3dlZDogYm9vbGVhbjtcbiAgcHVibGljIGVuYWJsZWQ6IGJvb2xlYW47XG4gIHB1YmxpYyBkaXNwbGF5Q2xhc3Nlcz86IHN0cmluZ1tdIHwgc3RyaW5nO1xuICBwdWJsaWMgcHJpc3RpbmUgPSB0cnVlO1xuICBwdWJsaWMgbXVsdGkgPSBmYWxzZTtcblxuICAvKiogU2luZ2xlIGN1cnJlbnQgdmFsdWUgKi9cbiAgcHJvdGVjdGVkIF92YWx1ZTogSURpc3BFZGl0Q2hvaWNlIHwgbnVsbCA9IG51bGw7XG4gIC8qKiBNdWx0aXBsZSBjdXJyZW50IHZhbHVlICovXG4gIHByb3RlY3RlZCBfbXZhbHVlID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgLyoqIFNpbmdsZSBjdXJyZW50IHZhbHVlIG9ic2VydmFibGUgKi9cbiAgcHJvdGVjdGVkIF9jdXJyZW50ID0gbmV3IFJlcGxheVN1YmplY3Q8SURpc3BFZGl0Q2hvaWNlIHwgbnVsbD4oMSk7XG4gIC8qKiBNdWx0aXBsZSBjdXJyZW50IHZhbHVlIG9ic2VydmFibGUgKi9cbiAgcHJvdGVjdGVkIF9tY3VycmVudCA9IG5ldyBSZXBsYXlTdWJqZWN0PElEaXNwRWRpdENob2ljZVtdPigxKTtcblxuICBjb25zdHJ1Y3RvcihwYXJhbXM6IE1vZGVsTGlzdEZpbHRlclBhcmFtcykge1xuICAgIHRoaXMubmFtZSA9IHBhcmFtcy5uYW1lO1xuICAgIHRoaXMuZmllbGQgPSBwYXJhbXMuZmllbGQ7XG4gICAgdGhpcy5sYWJlbCA9IHBhcmFtcy5sYWJlbCB8fCAnJztcbiAgICB0aGlzLmhlbHAgPSBwYXJhbXMuaGVscCB8fCAnJztcbiAgICB0aGlzLmRlc2MgPSBwYXJhbXMuZGVzYztcbiAgICB0aGlzLmRpc3BsYXlDbGFzc2VzID0gcGFyYW1zLmRpc3BsYXlDbGFzc2VzO1xuICAgIHRoaXMuYWxsb3dlZCA9IGZhbHNlO1xuICAgIHRoaXMuZW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMudHlwZSA9ICd0ZXh0JztcbiAgICB0aGlzLmRlZmF1bHQgPSBwYXJhbXMuZGVmYXVsdDtcbiAgICAvLyBGSVhNRTogYWRkIHZhbHVlIGluaXRcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWN1cnJlbnQkKCk6IE9ic2VydmFibGU8SURpc3BFZGl0Q2hvaWNlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fbWN1cnJlbnQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnQkKCk6IE9ic2VydmFibGU8SURpc3BFZGl0Q2hvaWNlIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZUNoYW5nZXMoKTogT2JzZXJ2YWJsZTxcbiAgICBJRGlzcEVkaXRDaG9pY2UgfCBJRGlzcEVkaXRDaG9pY2VbXSB8IG51bGxcbiAgPiB7XG4gICAgaWYgKHRoaXMubXVsdGkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9tY3VycmVudC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRmlsdGVyKGZpbHRlcjogRmlsdGVyRGF0YSkge1xuICAgIGlmICh0aGlzLm11bHRpICYmIHRoaXMuX212YWx1ZS5zaXplID4gMCkge1xuICAgICAgZmlsdGVyW3RoaXMuZmllbGRdID0gdGhpcy5nZXRNdWx0aVZhbHVlKCk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICF0aGlzLm11bHRpICYmXG4gICAgICB0aGlzLl92YWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLl92YWx1ZSAhPT0gbnVsbFxuICAgICkge1xuICAgICAgZmlsdGVyW3RoaXMuZmllbGRdID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbGVhcihub3RpZnk6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgaWYgKHRoaXMubXVsdGkpIHtcbiAgICAgIHRoaXMuX212YWx1ZSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5ub3RpZnkobm90aWZ5KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQodmFsdWU6IGFueSwgZGVzYzogc3RyaW5nLCBub3RpZnk6IGJvb2xlYW4gPSB0cnVlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubXVsdGkpIHtcbiAgICAgIHJldHVybiB0aGlzLm1zZXQodmFsdWUsIGRlc2MsIG5vdGlmeSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNzZXQodmFsdWUsIGRlc2MsIG5vdGlmeSk7XG4gIH1cblxuICBwdWJsaWMgdW5zZXQodmFsdWU6IGFueSwgZGVzYzogc3RyaW5nLCBub3RpZnk6IGJvb2xlYW4gPSB0cnVlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubXVsdGkpIHtcbiAgICAgIHJldHVybiB0aGlzLm11bnNldCh2YWx1ZSwgZGVzYywgbm90aWZ5KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3Vuc2V0KHZhbHVlLCBkZXNjLCBub3RpZnkpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZSh2YWx1ZTogYW55LCBkZXNjOiBzdHJpbmcsIG5vdGlmeTogYm9vbGVhbiA9IHRydWUpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5tdWx0aSkge1xuICAgICAgcmV0dXJuIHRoaXMubXRvZ2dsZSh2YWx1ZSwgZGVzYywgbm90aWZ5KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RvZ2dsZSh2YWx1ZSwgZGVzYywgbm90aWZ5KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRWYWx1ZSgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIHJldHVybiBgJHt0aGlzLl92YWx1ZT8udmFsdWV9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQoKTogSURpc3BFZGl0Q2hvaWNlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBtdG9nZ2xlKHZhbHVlOiBhbnksIGRlc2M6IHN0cmluZywgbm90aWZ5OiBib29sZWFuID0gdHJ1ZSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl9tdmFsdWUuaGFzKGAke3ZhbHVlfWApKSB7XG4gICAgICB0aGlzLl9tdmFsdWUuZGVsZXRlKGAke3ZhbHVlfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9tdmFsdWUuc2V0KGAke3ZhbHVlfWAsIGRlc2MpO1xuICAgIH1cbiAgICB0aGlzLm5vdGlmeShub3RpZnkpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBtc2V0KHZhbHVlOiBhbnksIGRlc2M6IHN0cmluZywgbm90aWZ5OiBib29sZWFuID0gdHJ1ZSk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5fbXZhbHVlLmhhcyhgJHt2YWx1ZX1gKSkge1xuICAgICAgdGhpcy5fbXZhbHVlLnNldChgJHt2YWx1ZX1gLCBkZXNjKTtcbiAgICAgIHRoaXMubm90aWZ5KG5vdGlmeSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBtdW5zZXQodmFsdWU6IGFueSwgZGVzYzogc3RyaW5nLCBub3RpZnk6IGJvb2xlYW4gPSB0cnVlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX212YWx1ZS5oYXMoYCR7dmFsdWV9YCkpIHtcbiAgICAgIHRoaXMuX212YWx1ZS5kZWxldGUoYCR7dmFsdWV9YCk7XG4gICAgICB0aGlzLm5vdGlmeShub3RpZnkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvZ2dsZSh2YWx1ZTogYW55LCBkZXNjOiBzdHJpbmcsIG5vdGlmeTogYm9vbGVhbiA9IHRydWUpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fdmFsdWUgIT09IG51bGwgJiYgdGhpcy5fdmFsdWUudmFsdWUgPT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0geyB2YWx1ZSwgZGVzYyB9O1xuICAgIH1cbiAgICB0aGlzLm5vdGlmeShub3RpZnkpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzc2V0KHZhbHVlOiBhbnksIGRlc2M6IHN0cmluZywgbm90aWZ5OiBib29sZWFuID0gdHJ1ZSk6IGJvb2xlYW4ge1xuICAgIGlmICghKHRoaXMuX3ZhbHVlICE9PSBudWxsICYmIHRoaXMuX3ZhbHVlLnZhbHVlID09PSB2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0geyB2YWx1ZSwgZGVzYyB9O1xuICAgICAgdGhpcy5ub3RpZnkobm90aWZ5KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHN1bnNldCh2YWx1ZTogYW55LCBkZXNjOiBzdHJpbmcsIG5vdGlmeTogYm9vbGVhbiA9IHRydWUpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fdmFsdWUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMubm90aWZ5KG5vdGlmeSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNdWx0aVZhbHVlKCk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5fbXZhbHVlLmtleXMoKSkuam9pbignLCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBub3RpZnkobm90aWZ5OiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGlmIChub3RpZnkpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpKSB7XG4gICAgICAgIHRoaXMuX21jdXJyZW50Lm5leHQoXG4gICAgICAgICAgQXJyYXkuZnJvbSh0aGlzLl9tdmFsdWUuZW50cmllcygpKS5tYXAoKFtrLCB2XSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHsgZGVzYzogdiwgdmFsdWU6IGsgfTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fY3VycmVudC5uZXh0KHRoaXMuX3ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==