UNPKG

cocori-ng

Version:

Cocori-ng is an Angular full of great components & utilites based on Material

124 lines 21.7 kB
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { map } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common/http"; export var SkipHeaders; (function (SkipHeaders) { SkipHeaders["TRUE"] = "true"; SkipHeaders["FALSE"] = "false"; })(SkipHeaders || (SkipHeaders = {})); export class HttpService { constructor(http, httpBackend) { this.http = http; this.httpBackend = httpBackend; this.withCredentialsOption = false; this.skip = SkipHeaders.FALSE; this.httpWithoutInterceptor = new HttpClient(httpBackend); } set withCredentials(value) { this.withCredentialsOption = value; } get withCredentials() { return this.withCredentialsOption; } /** TODO: à tester car pas sûr que cela fonctionne... */ delete(path, params, skip = SkipHeaders.FALSE) { let options = { params: this.buildUrlParams(params), withCredentials: this.withCredentialsOption }; if (skip === SkipHeaders.FALSE) { options['headers'] = { skip: skip }; return this.http.delete(`${path}`, options) .pipe(map(this.extractData.bind(this))); } else { return this.httpWithoutInterceptor.delete(`${path}`, options) .pipe(map(this.extractData.bind(this))); } } get(path, params, skip = SkipHeaders.FALSE) { let options = { params: this.buildUrlParams(params), withCredentials: this.withCredentialsOption }; if (skip === SkipHeaders.FALSE) { options['headers'] = { skip: skip }; return this.http.get(`${path}`, options) .pipe(map(this.extractData.bind(this))); } else { return this.httpWithoutInterceptor.get(`${path}`, options) .pipe(map(this.extractData.bind(this))); } } post(path, body = {}, skip = SkipHeaders.FALSE) { let options = { withCredentials: this.withCredentialsOption }; if (skip === SkipHeaders.FALSE) { options['headers'] = new HttpHeaders().set('skip', skip); return this.http.post(`${path}`, JSON.stringify(body), options).pipe(map(this.extractData.bind(this))); } else { options['headers'] = new HttpHeaders() .set('Content-Type', 'application/json; charset=utf-8'); return this.httpWithoutInterceptor.post(`${path}`, JSON.stringify(body), options).pipe(map(this.extractData.bind(this))); } } put(path, body = {}, skip = SkipHeaders.FALSE) { let options = { withCredentials: this.withCredentialsOption }; if (skip === SkipHeaders.FALSE) { options['headers'] = { skip: skip }; return this.http.put(`${path}`, JSON.stringify(body), options).pipe(map(this.extractData.bind(this))); } else { return this.httpWithoutInterceptor.put(`${path}`, JSON.stringify(body)) .pipe(map(this.extractData.bind(this))); } } patch(path, body = {}, skip = SkipHeaders.FALSE) { let options = { withCredentials: this.withCredentialsOption }; if (skip === SkipHeaders.FALSE) { options['headers'] = new HttpHeaders().set('skip', skip); return this.http.patch(`${path}`, JSON.stringify(body), options).pipe(map(this.extractData.bind(this))); } else { options['headers'] = new HttpHeaders() .set('Content-Type', 'application/json; charset=utf-8'); return this.httpWithoutInterceptor.patch(`${path}`, JSON.stringify(body), options).pipe(map(this.extractData.bind(this))); } } file(path, params) { return this.http.get(`${path}`, { params: this.buildUrlParams(params), withCredentials: this.withCredentialsOption, responseType: 'blob' }) .pipe(map(this.extractData.bind(this))); } upload(path, body = {}, options = { withCredentials: this.withCredentialsOption }) { options['headers'] = new HttpHeaders().set('Content-Type', 'application/json; charset=utf-8'); options['reportProgress'] = true; options['observe'] = "events"; return this.http.post(`${path}`, JSON.stringify(body), options); } extractData(res) { if (!res) return res; const body = res.body; if (res.status === 204) return res.body; if (body) { return typeof res.body === 'string' ? JSON.parse(res.body) : res.body; } return res; } buildUrlParams(parameters) { let params = new HttpParams(); for (const property in parameters) { if (parameters.hasOwnProperty(property)) { params = params.append(property, parameters[property]); } } return params; } } HttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: HttpService, deps: [{ token: i1.HttpClient }, { token: i1.HttpBackend }], target: i0.ɵɵFactoryTarget.Injectable }); HttpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: HttpService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: HttpService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i1.HttpBackend }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29jb3JpLW5nL3NyYy9mZWF0dXJlLWNvcmUvc2VydmljZS9odHRwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLFVBQVUsRUFBYSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUVyQyxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ25CLDRCQUFhLENBQUE7SUFDYiw4QkFBZSxDQUFBO0FBQ25CLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QjtBQUtELE1BQU0sT0FBTyxXQUFXO0lBTXBCLFlBQ1ksSUFBZ0IsRUFDaEIsV0FBd0I7UUFEeEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQVAxQiwwQkFBcUIsR0FBWSxLQUFLLENBQUM7UUFHekMsU0FBSSxHQUFnQixXQUFXLENBQUMsS0FBSyxDQUFDO1FBTTFDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsSUFBVyxlQUFlLENBQUMsS0FBYztRQUNyQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDdEIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDdEMsQ0FBQztJQUVELHdEQUF3RDtJQUN4RCxNQUFNLENBQUksSUFBWSxFQUFFLE1BQWUsRUFBRSxPQUFlLFdBQVcsQ0FBQyxLQUFLO1FBQ3JFLElBQUksT0FBTyxHQUFHLEVBQUUsTUFBTSxFQUFFLElB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Qzs7d0dBL0pRLFdBQVc7NEdBQVgsV0FBVyxjQUZSLE1BQU07MkZBRVQsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQmFja2VuZCwgSHR0cENsaWVudCwgSHR0cEV2ZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmV4cG9ydCBlbnVtIFNraXBIZWFkZXJzIHtcclxuICAgIFRSVUUgPSAndHJ1ZScsXHJcbiAgICBGQUxTRSA9ICdmYWxzZScsXHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEh0dHBTZXJ2aWNlIHtcclxuICAgIHByb3RlY3RlZCB3aXRoQ3JlZGVudGlhbHNPcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGh0dHBXaXRob3V0SW50ZXJjZXB0b3I6IEh0dHBDbGllbnQ7XHJcblxyXG4gICAgcHJpdmF0ZSBza2lwOiBTa2lwSGVhZGVycyA9IFNraXBIZWFkZXJzLkZBTFNFO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgICAgICBwcml2YXRlIGh0dHBCYWNrZW5kOiBIdHRwQmFja2VuZFxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5odHRwV2l0aG91dEludGVyY2VwdG9yID0gbmV3IEh0dHBDbGllbnQoaHR0cEJhY2tlbmQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXQgd2l0aENyZWRlbnRpYWxzKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy53aXRoQ3JlZGVudGlhbHNPcHRpb24gPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHdpdGhDcmVkZW50aWFscygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy53aXRoQ3JlZGVudGlhbHNPcHRpb247XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFRPRE86IMOgIHRlc3RlciBjYXIgcGFzIHPDu3IgcXVlIGNlbGEgZm9uY3Rpb25uZS4uLiAqL1xyXG4gICAgZGVsZXRlPFQ+KHBhdGg6IHN0cmluZywgcGFyYW1zPzogT2JqZWN0LCBza2lwOiBzdHJpbmcgPSBTa2lwSGVhZGVycy5GQUxTRSk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgICAgIGxldCBvcHRpb25zID0geyBwYXJhbXM6IHRoaXMuYnVpbGRVcmxQYXJhbXMocGFyYW1zKSwgd2l0aENyZWRlbnRpYWxzOiB0aGlzLndpdGhDcmVkZW50aWFsc09wdGlvbiB9XHJcblxyXG4gICAgICAgIGlmIChza2lwID09PSBTa2lwSGVhZGVycy5GQUxTRSkge1xyXG5cclxuICAgICAgICAgICAgb3B0aW9uc1snaGVhZGVycyddID0geyBza2lwOiBza2lwIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAke3BhdGh9YCwgb3B0aW9ucylcclxuICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgIG1hcCh0aGlzLmV4dHJhY3REYXRhLmJpbmQodGhpcykpXHJcbiAgICAgICAgICAgICAgICApIGFzIE9ic2VydmFibGU8VD47XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFdpdGhvdXRJbnRlcmNlcHRvci5kZWxldGUoYCR7cGF0aH1gLCBvcHRpb25zKVxyXG4gICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgbWFwKHRoaXMuZXh0cmFjdERhdGEuYmluZCh0aGlzKSlcclxuICAgICAgICAgICAgICAgICkgYXMgT2JzZXJ2YWJsZTxUPjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0PFQ+KHBhdGg6IHN0cmluZywgcGFyYW1zPzogT2JqZWN0LCBza2lwOiBzdHJpbmcgPSBTa2lwSGVhZGVycy5GQUxTRSk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgICAgIGxldCBvcHRpb25zID0geyBwYXJhbXM6IHRoaXMuYnVpbGRVcmxQYXJhbXMocGFyYW1zKSwgd2l0aENyZWRlbnRpYWxzOiB0aGlzLndpdGhDcmVkZW50aWFsc09wdGlvbiB9XHJcblxyXG4gICAgICAgIGlmIChza2lwID09PSBTa2lwSGVhZGVycy5GQUxTRSkge1xyXG4gICAgICAgICAgICBvcHRpb25zWydoZWFkZXJzJ10gPSB7IHNraXA6IHNraXAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7cGF0aH1gLCBvcHRpb25zKVxyXG4gICAgICAgICAgICAgICAgLnBpcGUobWFwKHRoaXMuZXh0cmFjdERhdGEuYmluZCh0aGlzKSkpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFdpdGhvdXRJbnRlcmNlcHRvci5nZXQoYCR7cGF0aH1gLCBvcHRpb25zKVxyXG4gICAgICAgICAgICAgICAgLnBpcGUobWFwKHRoaXMuZXh0cmFjdERhdGEuYmluZCh0aGlzKSkpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHBvc3Q8VD4ocGF0aDogc3RyaW5nLCBib2R5OiBPYmplY3QgPSB7fSwgc2tpcDogc3RyaW5nID0gU2tpcEhlYWRlcnMuRkFMU0UpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgICAgICBsZXQgb3B0aW9uczogT2JqZWN0ID0geyB3aXRoQ3JlZGVudGlhbHM6IHRoaXMud2l0aENyZWRlbnRpYWxzT3B0aW9uIH1cclxuXHJcbiAgICAgICAgaWYgKHNraXAgPT09IFNraXBIZWFkZXJzLkZBTFNFKSB7XHJcbiAgICAgICAgICAgIG9wdGlvbnNbJ2hlYWRlcnMnXSA9IG5ldyBIdHRwSGVhZGVycygpLnNldCgnc2tpcCcsIHNraXApXHJcblxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgICAgICAgICAgICBgJHtwYXRofWAsXHJcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShib2R5KSxcclxuICAgICAgICAgICAgICAgIG9wdGlvbnNcclxuICAgICAgICAgICAgKS5waXBlKG1hcCh0aGlzLmV4dHJhY3REYXRhLmJpbmQodGhpcykpKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG9wdGlvbnNbJ2hlYWRlcnMnXSA9IG5ldyBIdHRwSGVhZGVycygpXHJcbiAgICAgICAgICAgICAgICAuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCcpXHJcblxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwV2l0aG91dEludGVyY2VwdG9yLnBvc3QoXHJcbiAgICAgICAgICAgICAgICBgJHtwYXRofWAsXHJcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShib2R5KSxcclxuICAgICAgICAgICAgICAgIG9wdGlvbnNcclxuICAgICAgICAgICAgKS5waXBlKG1hcCh0aGlzLmV4dHJhY3REYXRhLmJpbmQodGhpcykpKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdXQ8VD4ocGF0aDogc3RyaW5nLCBib2R5OiBPYmplY3QgPSB7fSwgc2tpcDogc3RyaW5nID0gU2tpcEhlYWRlcnMuRkFMU0UpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIGxldCBvcHRpb25zID0geyB3aXRoQ3JlZGVudGlhbHM6IHRoaXMud2l0aENyZWRlbnRpYWxzT3B0aW9uIH1cclxuXHJcbiAgICAgICAgaWYgKHNraXAgPT09IFNraXBIZWFkZXJzLkZBTFNFKSB7XHJcbiAgICAgICAgICAgIG9wdGlvbnNbJ2hlYWRlcnMnXSA9IHsgc2tpcDogc2tpcCB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLnB1dChcclxuICAgICAgICAgICAgICAgIGAke3BhdGh9YCxcclxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGJvZHkpLFxyXG4gICAgICAgICAgICAgICAgb3B0aW9uc1xyXG4gICAgICAgICAgICApLnBpcGUobWFwKHRoaXMuZXh0cmFjdERhdGEuYmluZCh0aGlzKSkpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFdpdGhvdXRJbnRlcmNlcHRvci5wdXQoYCR7cGF0aH1gLCBKU09OLnN0cmluZ2lmeShib2R5KSlcclxuICAgICAgICAgICAgICAgIC5waXBlKG1hcCh0aGlzLmV4dHJhY3REYXRhLmJpbmQodGhpcykpKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwYXRjaDxUPihwYXRoOiBzdHJpbmcsIGJvZHk6IE9iamVjdCA9IHt9LCBza2lwOiBzdHJpbmcgPSBTa2lwSGVhZGVycy5GQUxTRSk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgPSB7IHdpdGhDcmVkZW50aWFsczogdGhpcy53aXRoQ3JlZGVudGlhbHNPcHRpb24gfVxyXG5cclxuICAgICAgICBpZiAoc2tpcCA9PT0gU2tpcEhlYWRlcnMuRkFMU0UpIHtcclxuICAgICAgICAgICAgb3B0aW9uc1snaGVhZGVycyddID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdza2lwJywgc2tpcClcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goXHJcbiAgICAgICAgICAgICAgICBgJHtwYXRofWAsXHJcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShib2R5KSxcclxuICAgICAgICAgICAgICAgIG9wdGlvbnNcclxuICAgICAgICAgICAgKS5waXBlKG1hcCh0aGlzLmV4dHJhY3REYXRhLmJpbmQodGhpcykpKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG9wdGlvbnNbJ2hlYWRlcnMnXSA9IG5ldyBIdHRwSGVhZGVycygpXHJcbiAgICAgICAgICAgICAgICAuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCcpXHJcblxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwV2l0aG91dEludGVyY2VwdG9yLnBhdGNoKFxyXG4gICAgICAgICAgICAgICAgYCR7cGF0aH1gLFxyXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoYm9keSksXHJcbiAgICAgICAgICAgICAgICBvcHRpb25zXHJcbiAgICAgICAgICAgICkucGlwZShtYXAodGhpcy5leHRyYWN0RGF0YS5iaW5kKHRoaXMpKSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZmlsZTxUPihwYXRoOiBzdHJpbmcsIHBhcmFtcz86IE9iamVjdCk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3BhdGh9YCwgeyBwYXJhbXM6IHRoaXMuYnVpbGRVcmxQYXJhbXMocGFyYW1zKSwgd2l0aENyZWRlbnRpYWxzOiB0aGlzLndpdGhDcmVkZW50aWFsc09wdGlvbiwgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAodGhpcy5leHRyYWN0RGF0YS5iaW5kKHRoaXMpKVxyXG4gICAgICAgICAgICApIGFzIE9ic2VydmFibGU8VD47XHJcbiAgICB9XHJcblxyXG4gICAgdXBsb2FkPFQ+KHBhdGg6IHN0cmluZywgYm9keTogT2JqZWN0ID0ge30sIG9wdGlvbnM6IE9iamVjdCA9IHsgd2l0aENyZWRlbnRpYWxzOiB0aGlzLndpdGhDcmVkZW50aWFsc09wdGlvbiB9KTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8VD4+IHtcclxuICAgICAgICBvcHRpb25zWydoZWFkZXJzJ10gPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04Jyk7XHJcbiAgICAgICAgb3B0aW9uc1sncmVwb3J0UHJvZ3Jlc3MnXSA9IHRydWU7XHJcbiAgICAgICAgb3B0aW9uc1snb2JzZXJ2ZSddID0gXCJldmVudHNcIjtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICAgICAgICBgJHtwYXRofWAsXHJcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGJvZHkpLFxyXG4gICAgICAgICAgICBvcHRpb25zXHJcbiAgICAgICAgKSBhcyBPYnNlcnZhYmxlPEh0dHBFdmVudDxUPj47XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGV4dHJhY3REYXRhKHJlczogUmVzcG9uc2UpIHtcclxuICAgICAgICBpZiAoIXJlcykgcmV0dXJuIHJlc1xyXG5cclxuICAgICAgICBjb25zdCBib2R5OiBhbnkgPSAoPGFueT5yZXMuYm9keSk7XHJcblxyXG4gICAgICAgIGlmIChyZXMuc3RhdHVzID09PSAyMDQpIHJldHVybiByZXMuYm9keTtcclxuXHJcbiAgICAgICAgaWYgKGJvZHkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiByZXMuYm9keSA9PT0gJ3N0cmluZycgPyBKU09OLnBhcnNlKDxhbnk+cmVzLmJvZHkpIDogcmVzLmJvZHk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBidWlsZFVybFBhcmFtcyhwYXJhbWV0ZXJzOiBhbnkpOiBIdHRwUGFyYW1zIHtcclxuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIHBhcmFtZXRlcnMpIHtcclxuICAgICAgICAgICAgaWYgKHBhcmFtZXRlcnMuaGFzT3duUHJvcGVydHkocHJvcGVydHkpKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKHByb3BlcnR5LCBwYXJhbWV0ZXJzW3Byb3BlcnR5XSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHBhcmFtcztcclxuICAgIH1cclxufVxyXG5cclxuIl19