ezlibrary_v2 0.1.27 → 0.1.29
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.
- package/esm2020/lib/comman-service/comman-service.service.mjs +34 -4
- package/fesm2015/ezlibrary_v2.mjs +35 -3
- package/fesm2015/ezlibrary_v2.mjs.map +1 -1
- package/fesm2020/ezlibrary_v2.mjs +33 -3
- package/fesm2020/ezlibrary_v2.mjs.map +1 -1
- package/lib/comman-service/comman-service.service.d.ts +1 -0
- package/package.json +1 -1
|
@@ -25,6 +25,19 @@ export class CommanServiceService {
|
|
|
25
25
|
this.cDate = new Date();
|
|
26
26
|
this.a = ['', 'one ', 'two ', 'three ', 'four ', 'five ', 'six ', 'seven ', 'eight ', 'nine ', 'ten ', 'eleven ', 'twelve ', 'thirteen ', 'fourteen ', 'fifteen ', 'sixteen ', 'seventeen ', 'eighteen ', 'nineteen '];
|
|
27
27
|
this.b = ['', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'];
|
|
28
|
+
// async getIpNew() : Promise<any> {
|
|
29
|
+
// let ip: any = ''
|
|
30
|
+
// await this.getIpAddrress().then((res: any) => {
|
|
31
|
+
// console.log(res)
|
|
32
|
+
// ip = res.ip
|
|
33
|
+
// });
|
|
34
|
+
// console.log(ip, '180')
|
|
35
|
+
// let ipStackAccessKey = "b69ccd0df93bb0d1ef6b6e57b153f2f2"
|
|
36
|
+
// let url = `http://api.ipstack.com/${ip}?access_key=${ipStackAccessKey}`
|
|
37
|
+
// return this.newHttpClient.get(url)
|
|
38
|
+
// .toPromise()
|
|
39
|
+
// .then((response) => response);
|
|
40
|
+
// }
|
|
28
41
|
this.pageBck = () => window.history.back();
|
|
29
42
|
this.editorConfig = {
|
|
30
43
|
"editable": true,
|
|
@@ -484,6 +497,10 @@ export class CommanServiceService {
|
|
|
484
497
|
return this.http.get("http://ipinfo.io/json/")
|
|
485
498
|
.pipe(map((res) => res));
|
|
486
499
|
}
|
|
500
|
+
// getIpAddrress() {
|
|
501
|
+
// return this.newHttpClient.get("//api.ipify.org/?format=json").toPromise()
|
|
502
|
+
// .then((response) => response);
|
|
503
|
+
// }
|
|
487
504
|
getIpAddrress() {
|
|
488
505
|
return this.newHttpClient.get("//api.ipify.org/?format=json").toPromise()
|
|
489
506
|
.then((response) => response);
|
|
@@ -494,9 +511,22 @@ export class CommanServiceService {
|
|
|
494
511
|
console.log(res);
|
|
495
512
|
ip = res.ip;
|
|
496
513
|
});
|
|
497
|
-
|
|
498
|
-
let
|
|
499
|
-
let url = `
|
|
514
|
+
let ipStackAccessKey = "b399bdb306c040208e531fb977e0ce3a";
|
|
515
|
+
// let url = `https://api.ipstack.com/${ip}?access_key=${ipStackAccessKey}`
|
|
516
|
+
let url = `https://api.ipgeolocation.io/ipgeo?apiKey=${ipStackAccessKey}&ip=${ip}`;
|
|
517
|
+
return this.newHttpClient.get(url)
|
|
518
|
+
.toPromise()
|
|
519
|
+
.then((response) => response);
|
|
520
|
+
}
|
|
521
|
+
async getuserInfo() {
|
|
522
|
+
let ip = '';
|
|
523
|
+
await this.getIpAddrress().then((res) => {
|
|
524
|
+
console.log(res);
|
|
525
|
+
ip = res.ip;
|
|
526
|
+
});
|
|
527
|
+
let ipStackAccessKey = "b399bdb306c040208e531fb977e0ce3a";
|
|
528
|
+
// let url = `https://api.ipstack.com/${ip}?access_key=${ipStackAccessKey}`
|
|
529
|
+
let url = `https://api.ipgeolocation.io/user-agent?apiKey=${ipStackAccessKey}`;
|
|
500
530
|
return this.newHttpClient.get(url)
|
|
501
531
|
.toPromise()
|
|
502
532
|
.then((response) => response);
|
|
@@ -713,4 +743,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
713
743
|
providedIn: 'root'
|
|
714
744
|
}]
|
|
715
745
|
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.HttpClient }, { type: i2.HttpBackend }, { type: i3.GlobleEnvService }, { type: i4.ToastrService }, { type: i5.NgxSpinnerService }, { type: i6.DatePipe }]; } });
|
|
716
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuLXNlcnZpY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V6bGliL3NyYy9saWIvY29tbWFuLXNlcnZpY2UvY29tbWFuLXNlcnZpY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFaEUsT0FBTyxFQUFFLE1BQU0sRUFBMEIsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQVFyQyxNQUFNLE9BQU8sb0JBQW9CO0lBUS9CLFlBQ1MsTUFBYyxFQUNiLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3pCLE1BQXdCLEVBQ3ZCLE1BQXFCLEVBQ3JCLGNBQWlDLEVBQ2pDLFFBQWlCO1FBTmxCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDYixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3pCLFdBQU0sR0FBTixNQUFNLENBQWtCO1FBQ3ZCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLGFBQVEsR0FBUixRQUFRLENBQVM7UUFibEIsVUFBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFFNUIsTUFBQyxHQUFHLENBQUMsRUFBRSxFQUFF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RUFBRTtZQUNiLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUNiLEtBQUssSUFBSSxLQUFLLElBQUksS0FBSyxFQUFFO2dCQUN2QixHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQzthQUMzQjtZQUNELEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLEdBQUcsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDO1NBQ3JCO1FBSUQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN4QixJQUFJLEdBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUNyRCxHQUFHLEdBQUcsVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQzVFLEdBQUcsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1lBQzNHLEdBQUcsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1lBQzlHLEdBQUcsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUs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QUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdkcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3RHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMxRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDekcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDcEksT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFHRCxZQUFZO1FBQ1YsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNwRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFZQSxXQUFXLENBQUMsR0FBRztRQUNkLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7YUFDcEIsTUFBTSxDQUFDLFVBQVUsQ0FBQztZQUNqQixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQzthQUNELE1BQU0sQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1lBQ3RCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEIsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDWCxDQUFDOztvSUEzd0JVLG9CQUFvQjt3SUFBcEIsb0JBQW9CLGNBSG5CLE1BQU07MkZBR1Asb0JBQW9CO2tCQUpoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBCYWNrZW5kLCBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBHbG9ibGVFbnZTZXJ2aWNlIH0gZnJvbSAnLi4vZ2xvYmxlL2dsb2JsZS1lbnYuc2VydmljZSc7XHJcbmltcG9ydCB7IENvb2tpZSB9IGZyb20gJ25nMi1jb29raWVzL25nMi1jb29raWVzJztcclxuaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTmd4U3Bpbm5lclNlcnZpY2UgfSBmcm9tIFwibmd4LXNwaW5uZXJcIjtcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xyXG5pbXBvcnQgeyBIdHRwSGVhZGVycyAgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQ29tbWFuU2VydmljZVNlcnZpY2Uge1xyXG5cclxuICByZWFkb25seSBjRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgaGVhZGVyO1xyXG4gIGEgPSBbJycsICdvbmUgJywgJ3R3byAnLCAndGhyZWUgJywgJ2ZvdXIgJywgJ2ZpdmUgJywgJ3NpeCAnLCAnc2V2ZW4gJywgJ2VpZ2h0ICcsICduaW5lICcsICd0ZW4gJywgJ2VsZXZlbiAnLCAndHdlbHZlICcsICd0aGlydGVlbiAnLCAnZm91cnRlZW4gJywgJ2ZpZnRlZW4gJywgJ3NpeHRlZW4gJywgJ3NldmVudGVlbiAnLCAnZWlnaHRlZW4gJywgJ25pbmV0ZWVuICddO1xyXG4gIGIgPSBbJycsICcnLCAndHdlbnR5JywgJ3RoaXJ0eScsICdmb3J0eScsICdmaWZ0eScsICdzaXh0eScsICdzZXZlbnR5JywgJ2VpZ2h0eScsICduaW5ldHknXTtcclxuXHJcbiAgbmV3SHR0cENsaWVudDogYW55O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBodHRwQmFja2VuZDogSHR0cEJhY2tlbmQsXHJcbiAgICBwdWJsaWMgZ2xiRW52OiBHbG9ibGVFbnZTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNwaW5uZXJTZXJ2aWNlOiBOZ3hTcGlubmVyU2VydmljZSAsXHJcbiAgICBwcml2YXRlIGRhdGVQaXBlOkRhdGVQaXBlXHJcbiAgKSB7IFxyXG4gICAgdGhpcy5uZXdIdHRwQ2xpZW50ID0gbmV3IEh0dHBDbGllbnQodGhpcy5odHRwQmFja2VuZClcclxuICB9XHJcblxyXG4gIGxvYWRMaXN0KHJlcU9iaiwgb3B0aW9uczogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5nbGJFbnYuYmFzZVVybCArICdkYXNoYm9yZC9tb2R1bGUnLCBKU09OLnN0cmluZ2lmeShyZXFPYmopLCBvcHRpb25zPXtcclxuICAgICAgcGFyYW1zOiBvcHRpb25zLFxyXG4gICAgfSlcclxuICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UpO1xyXG4gIH1cclxuXHJcbiAgbWVudUxpc3QocmVxT2JqLCBvcHRpb25zOiBhbnkpIHtcclxuICAgIEpTT04uc3RyaW5naWZ5KHJlcU9iaik7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5nbGJFbnYuYmFzZVVybCArICdsb2dpbi9sb2FkTWVudScsIEpTT04uc3RyaW5naWZ5KHJlcU9iaiksIG9wdGlvbnM9e1xyXG4gICAgICBwYXJhbXM6IG9wdGlvbnMsXHJcbiAgICB9KVxyXG4gICAgICAudG9Qcm9taXNlKClcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZSk7XHJcbiAgfVxyXG5cclxuICBsb2FkbWVudUxpc3QocmVxT2JqLCBvcHRpb25zOiBhbnkpIHtcclxuICAgIEpTT04uc3RyaW5naWZ5KHJlcU9iaik7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5nbGJFbnYuYmFzZVVybCArICdsb2dpbi9nZXRNZW51JywgSlNPTi5zdHJpbmdpZnkocmVxT2JqKSwgb3B0aW9ucz17XHJcbiAgICAgIHBhcmFtczogb3B0aW9ucyxcclxuICAgIH0pXHJcbiAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlKTtcclxuICB9XHJcblxyXG4gIGxvZ291dChyZXFPYmosIG9wdGlvbnM6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuZ2xiRW52LmJhc2VVcmwgKyAnbG9naW4vYXV0aGVudGljYXRpb24nLCBKU09OLnN0cmluZ2lmeShyZXFPYmopLCBvcHRpb25zPXtcclxuICAgICAgcGFyYW1zOiBvcHRpb25zLFxyXG4gICAgfSlcclxuICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UpO1xyXG4gIH1cclxuXHJcbiAgYXV0aExvZ291dChyZXFPYmosIG9wdGlvbnMpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmdsYkVudi5iYXNlVXJsICsgJ2xvZ2luL2F1dGhMb2dvdXQnLCBKU09OLnN0cmluZ2lmeShyZXFPYmopLCBvcHRpb25zPXtcclxuICAgICAgcGFyYW1zOiBvcHRpb25zLFxyXG4gICAgfSlcclxuICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UpO1xyXG4gIH1cclxuXHJcbiAgXHJcbiAgYXN5bmMgZ2V0Vm5tc2VxKHJlcU9iaiwgaGVhZGVycykge1xyXG4gICAgY29uc29sZS5sb2coXCJoZWFkZXJzXCIsaGVhZGVycyk7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwLnBvc3QodGhpcy5nbGJFbnYuYmFzZVVybCArICdhY2NvdW50cy9tYXN0ZXJkYXRhJywgSlNPTi5zdHJpbmdpZnkocmVxT2JqKSwgaGVhZGVycylcclxuICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UpO1xyXG4gIH1cclxuXHJcbiAgQ1NWQ29udmVydG9yKEpTT05EYXRhLCBSZXBvcnRUaXRsZSwgU2hvd0xhYmVsKSB7XHJcbiAgICBsZXQgYXJyRGF0YSA9IHR5cGVvZiBKU09ORGF0YSAhPSAnb2JqZWN0JyA/IEpTT04ucGFyc2UoSlNPTkRhdGEpIDogSlNPTkRhdGE7XHJcbiAgICBjb25zb2xlLmxvZyhcImFyckRhdGFcIiwgYXJyRGF0YSk7XHJcblxyXG4gICAgbGV0IENTViA9ICcnO1xyXG4gICAgaWYgKFNob3dMYWJlbCkge1xyXG4gICAgICBsZXQgcm93ID0gXCJcIjtcclxuICAgICAgZm9yIChsZXQgaW5kZXggaW4gYXJyRGF0YVswXSkge1xyXG4gICAgICAgIHJvdyArPSBpbmRleCArICcsJztcclxuICAgICAgfVxyXG4gICAgICByb3cgPSByb3cuc2xpY2UoMCwgLTEpO1xyXG4gICAgICBDU1YgKz0gcm93ICsgJ1xcclxcbic7XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyckRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHJvdyA9IFwiXCI7XHJcbiAgICAgIGlmIChhcnJEYXRhW2ldICE9ICdicicpIHtcclxuICAgICAgICBmb3IgKGxldCBpbmRleCBpbiBhcnJEYXRhW2ldKSB7XHJcbiAgICAgICAgICByb3cgKz0gJ1wiJyArIGFyckRhdGFbaV1baW5kZXhdICsgJ1wiLCc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvdy5zbGljZSgwLCByb3cubGVuZ3RoIC0gMSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIENTViArPSByb3cgKyAnXFxyXFxuJztcclxuICAgIH1cclxuICAgIGlmIChDU1YgPT0gJycpIHtcclxuICAgICAgYWxlcnQoXCJJbnZhbGlkIGRhdGFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIGNvbnNvbGUubG9nKFwiYXJyRGF0YVwiLCBhcnJEYXRhKTtcclxuICAgIGxldCBmaWxlTmFtZSA9IFwiUmVwb3J0X1wiO1xyXG4gICAgbGV0IGNUaW1lID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnN1YnN0cmluZygwLCAxOSk7XHJcbiAgICBmaWxlTmFtZSArPSBSZXBvcnRUaXRsZS5yZXBsYWNlKC8gL2csIFwiX1wiKSArIGNUaW1lICsgXCIuY3N2XCI7XHJcbiAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtDU1ZdLCB7XHJcbiAgICAgIHR5cGU6IFwiYXBwbGljYXRpb24vY3N2O2NoYXJzZXQ9dXRmLTg7XCJcclxuICAgIH0pO1xyXG5cclxuICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XHJcbiAgICB2YXIgY3N2VXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgIGxpbmsuaHJlZiA9IGNzdlVybDtcclxuICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlTmFtZTtcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xyXG4gICAgLy9sZXQgdXJpID0gJ2RhdGE6dGV4dC9jc3Y7Y2hhcnNldD11dGYtOCwnICsgZXNjYXBlKENTVik7XHJcbiAgICAvLyBsZXQgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xyXG4gICAgLy9saW5rLmhyZWYgPSB1cmk7XHJcbiAgICAvLyBsaW5rLnN0eWxlID0gXCJ2aXNpYmlsaXR5OmhpZGRlblwiO1xyXG4gICAgLy8gbGluay5kb3dubG9hZCA9IGZpbGVOYW1lICsgXCIuY3N2XCI7XHJcbiAgICAvLyAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgIC8vIGxpbmsuY2xpY2soKTtcclxuICAgIC8vIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XHJcbiAgfVxyXG5cclxuICBDT21wYXJpc2lvbkNTVkNvbnZlcnRvcihIZWFkZXJzLCBIZHJEdGwsIEpTT05EYXRhLCBSZXBvcnRUaXRsZSwgU2hvd0xhYmVsKSB7XHJcbiAgICBsZXQgYXJyRGF0YSA9IHR5cGVvZiBKU09ORGF0YSAhPSAnb2JqZWN0JyA/IEpTT04ucGFyc2UoSlNPTkRhdGEpIDogSlNPTkRhdGE7XHJcbiAgICBsZXQgQ1NWID0gJyc7XHJcbiAgICBpZiAoU2hvd0xhYmVsKSB7XHJcbiAgICAgIGxldCByb3cgPSBcIlwiO1xyXG4gICAgICByb3cgKz0gJ1NyJyArICcsJztcclxuICAgICAgcm93ICs9ICdFbXBsb3llZScgKyAnLCc7XHJcbiAgICAgIHJvdyArPSAnVHJhbnMgSWQnICsgJywnO1xyXG4gICAgICByb3cgKz0gJ1Byb2Nlc3MgTmFtZScgKyAnLCc7XHJcbiAgICAgIHJvdyArPSAnU3RhdHVzJyArICcsJztcclxuICAgICAgcm93ICs9ICdQYWNrZXQgQ29kZScgKyAnLCc7XHJcbiAgICAgIHJvdyArPSAnRGF0ZScgKyAnLCc7XHJcblxyXG4gICAgICBIZWFkZXJzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgcm93ICs9IEhkckR0bFtlbGVtZW50XSArICcsJztcclxuICAgICAgfSk7XHJcblxyXG4gICAgICByb3cgPSByb3cuc2xpY2UoMCwgLTEpO1xyXG4gICAgICBDU1YgKz0gcm93ICsgJ1xcclxcbic7XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyckRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHJvdyA9IFwiXCI7XHJcblxyXG4gICAgICByb3cgKz0gJ1wiJyArIGFyckRhdGFbaV1bJ3NyJ10gKyAnXCIsJztcclxuICAgICAgcm93ICs9ICdcIicgKyBhcnJEYXRhW2ldWydlbXBsb3llZSddICsgJ1wiLCc7XHJcbiAgICAgIHJvdyArPSAnXCInICsgYXJyRGF0YVtpXVsndHJhbnNhY3Rpb25fcWNfaWRuJ10gKyAnXCIsJztcclxuICAgICAgcm93ICs9ICdcIicgKyBhcnJEYXRhW2ldWydwcm9jZXNzTm1lJ10gKyAnXCIsJztcclxuICAgICAgcm93ICs9ICdcIicgKyBhcnJEYXRhW2ldWydzdGF0dXMnXSArICdcIiwnO1xyXG4gICAgICByb3cgKz0gJ1wiJyArIGFyckRhdGFbaV1bJ3BrdF9jb2RlJ10gKyAnXCIsJztcclxuXHJcbiAgICAgIHJvdyArPSAnXCInICsgYXJyRGF0YVtpXVsnaXNzdWVfdHMnXSArICdcXG4nICsgYXJyRGF0YVtpXVsnbW9kaWZpZWRfdHMnXSArICdcIiwnO1xyXG5cclxuICAgICAgSGVhZGVycy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgIGxldCBpc3N2YWwgPSBcIlwiO1xyXG4gICAgICAgIGxldCBydHZhbCA9IFwiXCI7XHJcbiAgICAgICAgaXNzdmFsID0gYXJyRGF0YVtpXVsnaXNzdmFsJ11bZWxlbWVudF0gPT0gdW5kZWZpbmVkID8gJycgOiBhcnJEYXRhW2ldWydpc3N2YWwnXVtlbGVtZW50XTtcclxuICAgICAgICBydHZhbCA9IGFyckRhdGFbaV1bJ3J0bnZhbCddW2VsZW1lbnRdID09IHVuZGVmaW5lZCA/ICcnIDogYXJyRGF0YVtpXVsncnRudmFsJ11bZWxlbWVudF07XHJcbiAgICAgICAgcm93ICs9ICdcIicgKyBpc3N2YWwgKyAnXFxuJyArIHJ0dmFsICsgJ1wiLCc7XHJcbiAgICAgIH0pO1xyXG4gICAgXHJcbiAgICAgIHJvdy5zbGljZSgwLCByb3cubGVuZ3RoIC0gMSk7XHJcblxyXG4gICAgICBDU1YgKz0gcm93ICsgJ1xcclxcbic7XHJcbiAgICB9XHJcbiAgICBpZiAoQ1NWID09ICcnKSB7XHJcbiAgICAgIGFsZXJ0KFwiSW52YWxpZCBkYXRhXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgZmlsZU5hbWUgPSBcIlJlcG9ydF9cIjtcclxuICAgIGxldCBjVGltZSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zdWJzdHJpbmcoMCwgMTkpO1xyXG4gICAgZmlsZU5hbWUgKz0gUmVwb3J0VGl0bGUucmVwbGFjZSgvIC9nLCBcIl9cIikgKyBjVGltZSArIFwiLmNzdlwiO1xyXG4gICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbQ1NWXSwge1xyXG4gICAgICB0eXBlOiBcImFwcGxpY2F0aW9uL2NzdjtjaGFyc2V0PXV0Zi04O1wiXHJcbiAgICB9KTtcclxuXHJcbiAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xyXG4gICAgdmFyIGNzdlVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICBsaW5rLmhyZWYgPSBjc3ZVcmw7XHJcbiAgICBsaW5rLmRvd25sb2FkID0gZmlsZU5hbWU7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgbGluay5jbGljaygpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuXHJcbiAgfVxyXG5cclxuICAvL1RpdGxlLCBncm91cFN1bW1hcnksIGF0dHJEdGwsIGF0dHJEaXNwbGF5RHRsLCBHcnBMaXN0LCBmaW5hbEdycFZhbFxyXG4gIENTVkNvbnZlcnRvckdycFdpc2UoZ3JvdXBTdW1tYXJ5LCBhdHRyRHRsLCBhdHRyRGlzcGxheUR0bCwgR3JwTGlzdCwgZmluYWxHcnBWYWwsIFJlcG9ydFRpdGxlLCBTaG93TGFiZWwpIHtcclxuXHJcbiAgICBsZXQgT3ZhbHMgPSBPYmplY3QudmFsdWVzKGF0dHJEaXNwbGF5RHRsKTtcclxuXHJcbiAgICBsZXQgYXJyRGF0YSA9IHR5cGVvZiBmaW5hbEdycFZhbCAhPSAnb2JqZWN0JyA/IEpTT04ucGFyc2UoZmluYWxHcnBWYWwpIDogZmluYWxHcnBWYWw7XHJcbiAgICBjb25zb2xlLmxvZyhcImFyckRhdGFcIiwgYXJyRGF0YSk7XHJcblxyXG5cclxuICAgIGxldCBDU1YgPSAnJztcclxuICAgIGlmIChTaG93TGFiZWwpIHtcclxuICAgICAgbGV0IHJvdyA9IFwiXCI7XHJcbiAgICAgIGZvciAobGV0IGluZGV4IGluIE92YWxzKSB7XHJcbiAgICAgICAgcm93ICs9IE92YWxzW2luZGV4XSArICcsJztcclxuICAgICAgfVxyXG4gICAgICByb3cgPSByb3cuc2xpY2UoMCwgLTEpO1xyXG4gICAgICBDU1YgKz0gcm93ICsgJ1xcclxcbic7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICBHcnBMaXN0LmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgIGxldCBncnAgPSAnJywgcXR5ID0gJycsIGN0cyA9ICcnLCBydGUgPSAnJywgYW10ID0gJyc7XHJcbiAgICAgIGdycCA9IFwiR3JvdXAgOiBcIiArIGVsZW1lbnQuZ3JwID09IHVuZGVmaW5lZCA/IFwiXCIgOiBcIkdyb3VwIDogXCIgKyBlbGVtZW50LmdycDtcclxuICAgICAgcXR5ID0gZ3JvdXBTdW1tYXJ5W2VsZW1lbnQuZ3JwICsgJ19RVFknXSA9PSB1bmRlZmluZWQgPyBcIlwiIDogXCJRVFkgOiBcIiArIGdyb3VwU3VtbWFyeVtlbGVtZW50LmdycCArICdfUVRZJ107XHJcbiAgICAgIGN0cyA9IGdyb3VwU3VtbWFyeVtlbGVtZW50LmdycCArICdfQ1RTJ10gPT0gdW5kZWZpbmVkID8gXCJcIiA6IFwiQ2FyYXRzIDogXCIgKyBncm91cFN1bW1hcnlbZWxlbWVudC5ncnAgKyAnX0NUUyddO1xyXG4gICAgICBydGUgPSBncm91cFN1bW1hcnlbZWxlbWVudC5ncnAgKyAnX1JURSddID09IHVuZGVmaW5lZCA/IFwiXCIgOiBcIlJhdGUgOiBcIiArIGdyb3VwU3VtbWFyeVtlbGVtZW50LmdycCArICdfUlRFJ107XHJcbiAgICAgIGFtdCA9IGdyb3VwU3VtbWFyeVtlbGVtZW50LmdycCArICdfQU1UJ10gPT0gdW5kZWZpbmVkID8gXCJcIiA6IFwiQW1vdW50IDogXCIgKyBncm91cFN1bW1hcnlbZWxlbWVudC5ncnAgKyAnX0FNVCddO1xyXG5cclxuXHJcblxyXG4gICAgICBsZXQgcm93ID0gXCJcIjtcclxuICAgICAgcm93ID0gZ3JwICsgXCIgIFwiICsgcXR5ICsgXCIgIFwiICsgY3RzICsgXCIgIFwiICsgcnRlICsgXCIgIFwiICsgYW10O1xyXG4gICAgICAvL3JvdyA9IFwiR3JvdXAgOiBcIiArIGVsZW1lbnQuZ3JwICtcclxuICAgICAgLy8gZ3JvdXBTdW1tYXJ5W2VsZW1lbnQuZ3JwICsgJ19RVFknXSA9PSB1bmRlZmluZWQgPyBcIlwiIDogXCJRVFkgOiBcIiArIGdyb3VwU3VtbWFyeVtlbGVtZW50LmdycCArICdfUVRZJ10gK1xyXG4gICAgICAvLyAgIGdyb3VwU3VtbWFyeVtlbGVtZW50LmdycCArICdfQ1RTJ10gPT0gdW5kZWZpbmVkID8gXCJcIiA6IFwiQ2FyYXRzIDogXCIgKyBncm91cFN1bW1hcnlbZWxlbWVudC5ncnAgKyAnX0NUUyddICtcclxuICAgICAgLy8gICAgIGdyb3VwU3VtbWFyeVtlbGVtZW50LmdycCArICdfUlRFJ10gPT0gdW5kZWZpbmVkID8gXCJcIiA6IFwiUmF0ZSA6IFwiICsgZ3JvdXBTdW1tYXJ5W2VsZW1lbnQuZ3JwICsgJ19SVEUnXSArXHJcbiAgICAgIC8vICAgICAgIGdyb3VwU3VtbWFyeVtlbGVtZW50LmdycCArICdfQU1UJ10gPT0gdW5kZWZpbmVkID8gXCJcIiA6IFwiQW1vdW50IDogXCIgKyBncm91cFN1bW1hcnlbZWxlbWVudC5ncnAgKyAnX0FNVCddO1xyXG4gICAgICBDU1YgKz0gcm93ICsgJ1xcclxcbic7XHJcbiAgICAgIGZpbmFsR3JwVmFsW2VsZW1lbnQuZ3JwXS5mb3JFYWNoKHBrdGR0bCA9PiB7XHJcbiAgICAgICAgbGV0IHIgPSBcIlwiO1xyXG4gICAgICAgIGF0dHJEdGwuZm9yRWFjaChhdHQgPT4ge1xyXG4gICAgICAgICAgciArPSBwa3RkdGxbYXR0XSArICcsJztcclxuICAgICAgICB9KTtcclxuICAgICAgICByID0gci5zbGljZSgwLCAtMSk7XHJcbiAgICAgICAgQ1NWICs9IHIgKyAnXFxyXFxuJztcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoQ1NWID09ICcnKSB7XHJcbiAgICAgIGFsZXJ0KFwiSW52YWxpZCBkYXRhXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGNvbnNvbGUubG9nKFwiYXJyRGF0YVwiLCBhcnJEYXRhKTtcclxuICAgIGxldCBmaWxlTmFtZSA9IFwiUmVwb3J0X1wiO1xyXG4gICAgZmlsZU5hbWUgKz0gUmVwb3J0VGl0bGUucmVwbGFjZSgvIC9nLCBcIl9cIikgKyBcIi5jc3ZcIjtcclxuICAgIHZhciBibG9iID0gbmV3IEJsb2IoW0NTVl0sIHtcclxuICAgICAgdHlwZTogXCJhcHBsaWNhdGlvbi9jc3Y7Y2hhcnNldD11dGYtODtcIlxyXG4gICAgfSk7XHJcblxyXG4gICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICAgIHZhciBjc3ZVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgbGluay5ocmVmID0gY3N2VXJsO1xyXG4gICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgIGxpbmsuY2xpY2soKTtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIG1vZGlmeURhdGFCeUhlYWRlcihzZWFyY2hSZXN1bHREdGwsIHJlc3VsdFZpZXcsIHJlc3VsdFZpZXdEdGwpIHtcclxuICAgIGxldCBvYmogPSB7fVxyXG4gICAgbGV0IG1vZGlmaWVkT2JqQXJyID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlYXJjaFJlc3VsdER0bC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHJlc3VsdFZpZXcubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICBsZXQgdmFscyA9IHNlYXJjaFJlc3VsdER0bFtpXVtyZXN1bHRWaWV3W2pdXTtcclxuICAgICAgICBvYmpbcmVzdWx0Vmlld0R0bFtyZXN1bHRWaWV3W2pdXV0gPSB2YWxzO1xyXG4gICAgICB9XHJcbiAgICAgIG1vZGlmaWVkT2JqQXJyLnB1c2gob2JqKTtcclxuICAgICAgb2JqID0ge307XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhtb2RpZmllZE9iakFycik7XHJcbiAgICByZXR1cm4gbW9kaWZpZWRPYmpBcnI7XHJcbiAgfVxyXG5cclxuICBtb2RpZnlHcnBEYXRhQnlIZWFkZXIoc2VhcmNoUmVzdWx0RHRsLCByZXN1bHRWaWV3LCByZXN1bHRWaWV3RHRsKSB7XHJcbiAgICBsZXQgb2JqID0ge31cclxuICAgIGxldCBtb2RpZmllZE9iakFyciA9IFtdO1xyXG4gICAgZm9yIChsZXQgZ3JwayBpbiBzZWFyY2hSZXN1bHREdGwpIHtcclxuICAgICAgc2VhcmNoUmVzdWx0RHRsW2dycGtdLmZvckVhY2gocGt0cyA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCByZXN1bHRWaWV3Lmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICBsZXQgdmFscyA9IHBrdHNbcmVzdWx0Vmlld1tqXV07XHJcbiAgICAgICAgICBvYmpbcmVzdWx0Vmlld0R0bFtyZXN1bHRWaWV3W2pdXV0gPSB2YWxzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBtb2RpZmllZE9iakFyci5wdXNoKG9iaik7XHJcbiAgICAgICAgb2JqID0ge307XHJcbiAgICAgIH0pO1xyXG4gICAgICBtb2RpZmllZE9iakFyci5wdXNoKFwiYnJcIik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbW9kaWZpZWRPYmpBcnI7XHJcbiAgfVxyXG5cclxuICBmb3JtYXREYXRlKGRhdGUpIHtcclxuICAgIGxldCBkID0gbmV3IERhdGUoZGF0ZSksXHJcbiAgICAgIG1vbnRoID0gJycgKyAoZC5nZXRNb250aCgpICsgMSksXHJcbiAgICAgIGRheSA9ICcnICsgZC5nZXREYXRlKCksXHJcbiAgICAgIHllYXIgPSBkLmdldEZ1bGxZZWFyKCk7XHJcbiAgICBpZiAobW9udGgubGVuZ3RoIDwgMikgbW9udGggPSAnMCcgKyBtb250aDtcclxuICAgIGlmIChkYXkubGVuZ3RoIDwgMikgZGF5ID0gJzAnICsgZGF5O1xyXG5cclxuICAgIHJldHVybiBbZGF5LCBtb250aCwgeWVhcl0uam9pbignLScpO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0RGF0ZVNDKGRhdGUpIHtcclxuICAgIFxyXG4gICAgbGV0IGQgPSBuZXcgRGF0ZShkYXRlKSxcclxuICAgICAgbW9udGggPSAnJyArIChkLmdldE1vbnRoKCkgKyAxKSxcclxuICAgICAgZGF5ID0gJycgKyBkLmdldERhdGUoKSxcclxuICAgICAgeWVhciA9IGQuZ2V0RnVsbFllYXIoKTtcclxuXHJcbiAgICBpZiAobW9udGgubGVuZ3RoIDwgMikgbW9udGggPSAnMCcgKyBtb250aDtcclxuICAgIGlmIChkYXkubGVuZ3RoIDwgMikgZGF5ID0gJzAnICsgZGF5O1xyXG5cclxuICAgIHJldHVybiBbeWVhciwgbW9udGgsIGRheV0uam9pbignLScpO1xyXG4gIH1cclxuXHJcbiAgZGRNTVlZWVkoZGF0ZSkge1xyXG4gICAgbGV0IGQgPSBuZXcgRGF0ZShkYXRlKSxcclxuICAgICAgbW9udGggPSAnJyArIChkLmdldE1vbnRoKCkgKyAxKSxcclxuICAgICAgZGF5ID0gJycgKyBkLmdldERhdGUoKSxcclxuICAgICAgeWVhciA9IGQuZ2V0RnVsbFllYXIoKTtcclxuXHJcbiAgICBpZiAobW9udGgubGVuZ3RoIDwgMikgbW9udGggPSAnMCcgKyBtb250aDtcclxuICAgIGlmIChkYXkubGVuZ3RoIDwgMikgZGF5ID0gJzAnICsgZGF5O1xyXG5cclxuICAgIHJldHVybiBbZGF5LCBtb250aCwgeWVhcl0uam9pbignLScpO1xyXG4gIH1cclxuIFxyXG4gIEZvcm1hdERhdGUoZGF0ZSxmb3JtYXQpe1xyXG4gICAgbGV0IGQgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShkYXRlLCBmb3JtYXQpO1xyXG4gICAgcmV0dXJuIGQ7XHJcbiAgfVxyXG5cclxuICBkZE1NWVlZWW51bShkYXRlKSB7XHJcbiAgICBsZXQgZCA9IG5ldyBEYXRlKGRhdGUpLFxyXG4gICAgICBtb250aCA9ICcnICsgKGQuZ2V0TW9udGgoKSArIDEpLFxyXG4gICAgICBkYXkgPSAnJyArIGQuZ2V0RGF0ZSgpLFxyXG4gICAgICB5ZWFyID0gZC5nZXRGdWxsWWVhcigpO1xyXG5kZWJ1Z2dlclxyXG4gICAgaWYgKG1vbnRoLmxlbmd0aCA8IDIpIG1vbnRoID0gJzAnICsgbW9udGg7XHJcbiAgICBpZiAoZGF5Lmxlbmd0aCA8IDIpIGRheSA9ICcwJyArIGRheTtcclxuXHJcbiAgICByZXR1cm4geWVhcittb250aCtkYXk7XHJcbiAgfVxyXG5cclxuICBmb3JtYXREYXRlU0NNb250aEJlZm9yZShkYXRlKSB7XHJcbiAgICBpZihkYXRlIT11bmRlZmluZWQgJiYgZGF0ZSE9XCJcIil7XHJcblxyXG4gICAgbGV0IGQgPSBuZXcgRGF0ZShkYXRlKSxcclxuICAgICAgbW9udGggPSAnJyArIChkLmdldE1vbnRoKCkpLFxyXG4gICAgICBkYXkgPSAnJyArIGQuZ2V0RGF0ZSgpLFxyXG4gICAgICB5ZWFyID0gZC5nZXRGdWxsWWVhcigpO1xyXG4gICAgZC5zZXREYXRlKGQuZ2V0RGF0ZSgpIC0gMzApO1xyXG5cclxuICAgIGlmIChtb250aC5sZW5ndGggPCAyKSBtb250aCA9ICcwJyArIG1vbnRoO1xyXG4gICAgaWYgKGRheS5sZW5ndGggPCAyKSBkYXkgPSAnMCcgKyBkYXk7XHJcblxyXG4gICAgcmV0dXJuIFt5ZWFyLCBtb250aCwgZGF5XS5qb2luKCctJyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIG51bWJlckZsb2F0KG51bWJlcil7XHJcbiAgICBkZWJ1Z2dlclxyXG4gICAgbnVtYmVyPW51bWJlcnx8MDtcclxuICAgIHJldHVybiBwYXJzZUZsb2F0KG51bWJlcik7XHJcblxyXG4gIH1cclxuICBcclxuIGRhdGVWYWxpZGF0aW9uKGRhdGUsZm9ybWF0ZSl7XHJcbiAgIGRlYnVnZ2VyO1xyXG4gIHZhciBkZDsgXHJcbiAgdmFyIG1tOyBcclxuICB2YXIgeXk7IFxyXG4gIGRhdGU9ZGF0ZS5yZXBsYWNlKCctJywnLycpXHJcbiAgZGF0ZT1kYXRlLnJlcGxhY2UoJy0nLCcvJylcclxuICB2YXIgcGFydHMgPSBkYXRlLnNwbGl0KCcvJyk7XHJcbiAgXHJcbiAgaWYgKGZvcm1hdGUgPT0gJ2RkL21tL3l5Jykge1xyXG4gICAgZGQgPSBwYXJ0c1swXTtcclxuICAgIG1tID0gcGFydHNbMV07XHJcbiAgICB5eSA9ICBwYXJ0c1syXTsgIFx0ICBcclxuICB9IGVsc2UgaWYoZm9ybWF0ZSA9PSAnbW0vZGQveXknKXtcclxuICAgIG1tID0gcGFydHNbMF07XHJcbiAgICBkZCA9IHBhcnRzWzFdO1xyXG4gICAgeXkgPSAgcGFydHNbMl07ICBcclxuICB9ZWxzZSBpZihmb3JtYXRlID09ICdkZC9Nb24veXknKXsgXHJcbiAgICBkZCA9IHBhcnRzWzBdO1xyXG4gICAgbW0gPSBwYXJ0c1sxXTtcclxuICAgIHl5ID0gIHBhcnRzWzJdOyAgXHJcbiAgICBsZXQgZCA9IG5ldyBEYXRlKGRhdGUpXHJcbiAgICBtbSA9ICAoZC5nZXRNb250aCgpKSsxXHJcbiAgICBtbSA9bW0udG9TdHJpbmcoKTtcclxuICB9XHJcbiAgXHJcbiAgaWYobW0ubGVuZ3RoIDwgMilcclxuICBtbSA9ICcwJyttbTtcclxuICBpZihkZC5sZW5ndGggPCAyKVxyXG4gIGRkID0gJzAnK2RkO1xyXG4gIGlmKHl5Lmxlbmd0aCA8IDQpXHJcbiAgeXkgPSAnMjAnK3l5O1xyXG5cclxuICBsZXQgbW1pbnQgPSBwYXJzZUludChtbSk7XHJcblxyXG4gIGxldCBkZGludCA9IHBhcnNlSW50KGRkKTtcclxuICBpZihkZGludCA+IDMxKVxyXG4gICByZXR1cm4gJ2ludmFpbGQnXHJcbiAgZWxzZSBpZihtbWludCA+IDEyKVxyXG4gICByZXR1cm4gJ2ludmFpbGQnXHJcbiBlbHNlXHJcbiAgcmV0dXJuIHl5K21tK2RkO1xyXG4gfVxyXG5cclxuICBzcGxpdFRvVHdvRGVjaW1hbChpbnB1dHZhbCkge1xyXG4gICAgaWYgKGlucHV0dmFsICYmIGlucHV0dmFsICE9IEluZmluaXR5KSB7XHJcbiAgICAgIHJldHVybiBpbnB1dHZhbC50b1N0cmluZygpLnRvU3RyaW5nKCkubWF0Y2goL14tP1xcZCsoPzpcXC5cXGR7MCwyfSk/LylbMF07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzcGxpdFRvVGhyZWVEZWNpbWFsKGlucHV0dmFsKSB7XHJcbiAgICBpZiAoaW5wdXR2YWwgJiYgaW5wdXR2YWwgIT0gSW5maW5pdHkpIHtcclxuICAgICAgcmV0dXJuIGlucHV0dmFsLnRvU3RyaW5nKCkudG9TdHJpbmcoKS5tYXRjaCgvXi0/XFxkKyg/OlxcLlxcZHswLDN9KT8vKVswXTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICByb3VuZHZhbChpbnB1dHZhbCkge1xyXG4gICAgaWYgKGlucHV0dmFsKSB7XHJcbiAgICAgIHJldHVybiBNYXRoLnJvdW5kKGlucHV0dmFsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJvdW5kVXAobnVtLCBwcmVjaXNpb24pIHtcclxuICAgIHByZWNpc2lvbiA9IE1hdGgucG93KDEwLCBwcmVjaXNpb24pXHJcbiAgICByZXR1cm4gTWF0aC5jZWlsKG51bSAqIHByZWNpc2lvbikgLyBwcmVjaXNpb25cclxuICB9XHJcblxyXG4gIGdldFNpZ25lZFVybChzM2RldGFpbHMsZG9jX25tZSxidWNrZXQpe1xyXG4gICAgZGVidWdnZXJcclxuICAgIGxldCB1cmxQYXJhbXMgPSB7XHJcbiAgICAgIEJ1Y2tldDogczNkZXRhaWxzW1wiZG9jYnVja2V0XCJdLFxyXG4gICAgICBLZXk6IHMzZGV0YWlsc1tcImRvY2ZvbGRlclwiXStcIi9cIitkb2Nfbm1lXHJcbiAgICB9O1xyXG4gICAgYnVja2V0LmdldFNpZ25lZFVybChcImdldE9iamVjdFwiLCB1cmxQYXJhbXMsIGZ1bmN0aW9uKCBlcnIsIHVybCApIHtcclxuICAgICAgcmV0dXJuIHVybDtcclxuICAgIH0pO1xyXG4gIH1cclxuICBudW1iZXJ0b2ZpeGVkKGlucHV0dmFsLGRlY2ltYWwpIHtcclxuICAgIGlmIChpbnB1dHZhbCkge1xyXG4gICAgICAgIGlucHV0dmFsPWlucHV0dmFsLnRvRml4ZWQoZGVjaW1hbCk7XHJcbiAgICAgIHJldHVybiBpbnB1dHZhbDtcclxuICAgIH1lbHNle1xyXG4gICAgcmV0dXJuIGlucHV0dmFsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdHJ1bmNhdGUobnVtYmVyLCBpbmRleCA9IDIpIHtcclxuICBcdC8vIGN1dHRpbmcgdGhlIG51bWJlclxyXG4gICAgcmV0dXJuICtudW1iZXIudG9TdHJpbmcoKS5zbGljZSgwLCAobnVtYmVyLnRvU3RyaW5nKCkuaW5kZXhPZihcIi5cIikpICsgKGluZGV4ICsgMSkpO1xyXG59XHJcblxyXG4gICBmbG9vckZpZ3VyZShmaWd1cmUsIGRlY2ltYWxzKSB7XHJcbiAgICBsZXQgYTtcclxuICAgIGlmKGZpZ3VyZSE9bnVsbCAmJiBmaWd1cmUhPXVuZGVmaW5lZCApe1xyXG4gICAgaWYgKGRlY2ltYWxzID09IC0xKVxyXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKGZpZ3VyZSk7XHJcbiAgICBpZiAoZGVjaW1hbHMgPT0gMClcclxuICAgICAgICByZXR1cm4gTWF0aC50cnVuYyhmaWd1cmUpO1xyXG4gICAgaWYgKCFkZWNpbWFscykgZGVjaW1hbHMgPSAyO1xyXG4gICAgbGV0IGQgPSBNYXRoLnBvdygxMCwgZGVjaW1hbHMpO1xyXG5cclxuICAgIHZhciBzdHIgPSBmaWd1cmUudG9TdHJpbmcoKTsgXHJcbiAgICBhPSBwYXJzZUZsb2F0KHN0cik7IFxyXG4gICAgZGVjaW1hbHMgPSBwYXJzZUludChkZWNpbWFscyk7XHJcbiAgICBpZihzdHIuaW5kZXhPZihcIi5cIikgIT0gLTEpe1xyXG4gICAgICAgIHZhciBmY3RyIDtcclxuIGRlYnVnZ2VyXHJcbiAgICAgICAgaWYgKCgoZmlndXJlLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzFdKS5sZW5ndGgpID09IDIpIHtcclxuICAgICAgICAgICAgZmN0ciA9IGZpZ3VyZS50b1N0cmluZygpLnNwbGl0KFwiLlwiKVsxXTtcclxuICAgICAgICB9ICAgICAgICBcclxuICAgICAgICBpZiAoKChmaWd1cmUudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMV0pLmxlbmd0aCkgPT0gMSkge1xyXG4gICAgICAgICAgICBmY3RyID0gZmlndXJlLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzFdLmNvbmNhdChcIjBcIik7XHJcbiAgICAgICAgfSAgICAgICAgXHJcbiAgICBcclxuICAgICAgICBpZiAoKChmaWd1cmUudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMV0pLmxlbmd0aCkgPiAyKSB7XHJcbiAgICAgICAgICAgIGZjdHIgPSBmaWd1cmUudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMV0uc3Vic3RyaW5nKDAsZGVjaW1hbHMpO1xyXG4gICAgICAgIH0gICAgICAgIFxyXG4gICAgXHJcbiAgICAgICAgYSA9IE1hdGgudHJ1bmMoZmlndXJlKSArIFwiLlwiICsgZmN0cjtcclxuICAgIH0gIFxyXG4gICAgXHJcbn1lbHNle1xyXG4gICAgYT1maWd1cmU7XHJcbn1cclxuICAgIHJldHVybiBhO1xyXG59XHJcblxyXG4gIHNjcm9sbFRvRGl2KGVsKSB7XHJcbiAgICBsZXQgeCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsKTtcclxuICAgIHJldHVybiB4LnNjcm9sbEludG9WaWV3KCk7XHJcbiAgfVxyXG5cclxuICBnZXRJcCgpIDogYW55IHtcclxuICAgIFxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXCJodHRwOi8vaXBpbmZvLmlvL2pzb24vXCIpXHJcbiAgICAgIC5waXBlKG1hcCgocmVzOiBhbnkpID0+IHJlcykpXHJcbiAgfSBcclxuICBcclxuICBnZXRJcEFkZHJyZXNzKCkge1xyXG5cclxuICAgIHJldHVybiB0aGlzLm5ld0h0dHBDbGllbnQuZ2V0KFwiLy9hcGkuaXBpZnkub3JnLz9mb3JtYXQ9anNvblwiKS50b1Byb21pc2UoKVxyXG4gICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRJcE5ldygpIDogUHJvbWlzZTxhbnk+IHtcclxuICAgIGxldCBpcDogYW55ID0gJydcclxuICAgIGF3YWl0IHRoaXMuZ2V0SXBBZGRycmVzcygpLnRoZW4oKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKHJlcylcclxuICAgICAgaXAgPSByZXMuaXBcclxuICAgIH0pO1xyXG4gICAgXHJcbiAgICBjb25zb2xlLmxvZyhpcCwgJzE4MCcpXHJcbiAgICBsZXQgaXBTdGFja0FjY2Vzc0tleSA9IFwiYjY5Y2NkMGRmOTNiYjBkMWVmNmI2ZTU3YjE1M2YyZjJcIlxyXG4gICAgbGV0IHVybCA9IGBodHRwOi8vYXBpLmlwc3RhY2suY29tLyR7aXB9P2FjY2Vzc19rZXk9JHtpcFN0YWNrQWNjZXNzS2V5fWBcclxuICAgIHJldHVybiB0aGlzLm5ld0h0dHBDbGllbnQuZ2V0KHVybClcclxuICAgIC50b1Byb21pc2UoKVxyXG4gICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZSk7XHJcbiAgfVxyXG5cclxuICBcclxuXHJcbiAgcGFnZUJjayA9ICgpID0+IHdpbmRvdy5oaXN0b3J5LmJhY2soKTtcclxuXHJcbiAgZ2V0QnJvd3NlckluZm8oKSB7XHJcbiAgICBsZXQgblZlciA9IG5hdmlnYXRvci5hcHBWZXJzaW9uO1xyXG4gICAgbGV0IG5BZ3QgPSBuYXZpZ2F0b3IudXNlckFnZW50O1xyXG4gICAgbGV0IGJyb3dzZXJOYW1lID0gbmF2aWdhdG9yLmFwcE5hbWU7XHJcbiAgICBsZXQgZnVsbFZlcnNpb24gPSAnJyArIHBhcnNlRmxvYXQobmF2aWdhdG9yLmFwcFZlcnNpb24pO1xyXG4gICAgbGV0IG1ham9yVmVyc2lvbiA9IHBhcnNlSW50KG5hdmlnYXRvci5hcHBWZXJzaW9uLCAxMCk7XHJcbiAgICBsZXQgbmFtZU9mZnNldCwgdmVyT2Zmc2V0LCBpeDtcclxuXHJcbiAgICAvLyBJbiBPcGVyYSAxNSssIHRoZSB0cnVlIHZlcnNpb24gaXMgYWZ0ZXIgXCJPUFIvXCIgXHJcbiAgICBpZiAoKHZlck9mZnNldCA9IG5BZ3QuaW5kZXhPZihcIk9QUi9cIikpICE9IC0xKSB7XHJcbiAgICAgIGJyb3dzZXJOYW1lID0gXCJPcGVyYVwiO1xyXG4gICAgICBmdWxsVmVyc2lvbiA9IG5BZ3Quc3Vic3RyaW5nKHZlck9mZnNldCArIDQpO1xyXG4gICAgfVxyXG4gICAgLy8gSW4gb2xkZXIgT3BlcmEsIHRoZSB0cnVlIHZlcnNpb24gaXMgYWZ0ZXIgXCJPcGVyYVwiIG9yIGFmdGVyIFwiVmVyc2lvblwiXHJcbiAgICBlbHNlIGlmICgodmVyT2Zmc2V0ID0gbkFndC5pbmRleE9mKFwiT3BlcmFcIikpICE9IC0xKSB7XHJcbiAgICAgIGJyb3dzZXJOYW1lID0gXCJPcGVyYVwiO1xyXG4gICAgICBmdWxsVmVyc2lvbiA9IG5BZ3Quc3Vic3RyaW5nKHZlck9mZnNldCArIDYpO1xyXG4gICAgICBpZiAoKHZlck9mZnNldCA9IG5BZ3QuaW5kZXhPZihcIlZlcnNpb25cIikpICE9IC0xKVxyXG4gICAgICAgIGZ1bGxWZXJzaW9uID0gbkFndC5zdWJzdHJpbmcodmVyT2Zmc2V0ICsgOCk7XHJcbiAgICB9XHJcbiAgICAvLyBJbiBNU0lFLCB0aGUgdHJ1ZSB2ZXJzaW9uIGlzIGFmdGVyIFwiTVNJRVwiIGluIHVzZXJBZ2VudFxyXG4gICAgZWxzZSBpZiAoKHZlck9mZnNldCA9IG5BZ3QuaW5kZXhPZihcIk1TSUVcIikpICE9IC0xKSB7XHJcbiAgICAgIGJyb3dzZXJOYW1lID0gXCJNaWNyb3NvZnQgSW50ZXJuZXQgRXhwbG9yZXJcIjtcclxuICAgICAgZnVsbFZlcnNpb24gPSBuQWd0LnN1YnN0cmluZyh2ZXJPZmZzZXQgKyA1KTtcclxuICAgIH1cclxuICAgIC8vIEluIENocm9tZSwgdGhlIHRydWUgdmVyc2lvbiBpcyBhZnRlciBcIkNocm9tZVwiIFxyXG4gICAgZWxzZSBpZiAoKHZlck9mZnNldCA9IG5BZ3QuaW5kZXhPZihcIkNocm9tZVwiKSkgIT0gLTEpIHtcclxuICAgICAgYnJvd3Nlck5hbWUgPSBcIkNocm9tZVwiO1xyXG4gICAgICBmdWxsVmVyc2lvbiA9IG5BZ3Quc3Vic3RyaW5nKHZlck9mZnNldCArIDcpO1xyXG4gICAgfVxyXG4gICAgLy8gSW4gU2FmYXJpLCB0aGUgdHJ1ZSB2ZXJzaW9uIGlzIGFmdGVyIFwiU2FmYXJpXCIgb3IgYWZ0ZXIgXCJWZXJzaW9uXCIgXHJcbiAgICBlbHNlIGlmICgodmVyT2Zmc2V0ID0gbkFndC5pbmRleE9mKFwiU2FmYXJpXCIpKSAhPSAtMSkge1xyXG4gICAgICBicm93c2VyTmFtZSA9IFwiU2FmYXJpXCI7XHJcbiAgICAgIGZ1bGxWZXJzaW9uID0gbkFndC5zdWJzdHJpbmcodmVyT2Zmc2V0ICsgNyk7XHJcbiAgICAgIGlmICgodmVyT2Zmc2V0ID0gbkFndC5pbmRleE9mKFwiVmVyc2lvblwiKSkgIT0gLTEpXHJcbiAgICAgICAgZnVsbFZlcnNpb24gPSBuQWd0LnN1YnN0cmluZyh2ZXJPZmZzZXQgKyA4KTtcclxuICAgIH1cclxuICAgIC8vIEluIEZpcmVmb3gsIHRoZSB0cnVlIHZlcnNpb24gaXMgYWZ0ZXIgXCJGaXJlZm94XCIgXHJcbiAgICBlbHNlIGlmICgodmVyT2Zmc2V0ID0gbkFndC5pbmRleE9mKFwiRmlyZWZveFwiKSkgIT0gLTEpIHtcclxuICAgICAgYnJvd3Nlck5hbWUgPSBcIkZpcmVmb3hcIjtcclxuICAgICAgZnVsbFZlcnNpb24gPSBuQWd0LnN1YnN0cmluZyh2ZXJPZmZzZXQgKyA4KTtcclxuICAgIH1cclxuICAgIC8vIEluIG1vc3Qgb3RoZXIgYnJvd3NlcnMsIFwibmFtZS92ZXJzaW9uXCIgaXMgYXQgdGhlIGVuZCBvZiB1c2VyQWdlbnQgXHJcbiAgICBlbHNlIGlmICgobmFtZU9mZnNldCA9IG5BZ3QubGFzdEluZGV4T2YoJyAnKSArIDEpIDxcclxuICAgICAgKHZlck9mZnNldCA9IG5BZ3QubGFzdEluZGV4T2YoJy8nKSkpIHtcclxuICAgICAgYnJvd3Nlck5hbWUgPSBuQWd0LnN1YnN0cmluZyhuYW1lT2Zmc2V0LCB2ZXJPZmZzZXQpO1xyXG4gICAgICBmdWxsVmVyc2lvbiA9IG5BZ3Quc3Vic3RyaW5nKHZlck9mZnNldCArIDEpO1xyXG4gICAgICBpZiAoYnJvd3Nlck5hbWUudG9Mb3dlckNhc2UoKSA9PSBicm93c2VyTmFtZS50b1VwcGVyQ2FzZSgpKSB7XHJcbiAgICAgICAgYnJvd3Nlck5hbWUgPSBuYXZpZ2F0b3IuYXBwTmFtZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gdHJpbSB0aGUgZnVsbFZlcnNpb24gc3RyaW5nIGF0IHNlbWljb2xvbi9zcGFjZSBpZiBwcmVzZW50XHJcbiAgICBpZiAoKGl4ID0gZnVsbFZlcnNpb24uaW5kZXhPZihcIjtcIikpICE9IC0xKVxyXG4gICAgICBmdWxsVmVyc2lvbiA9IGZ1bGxWZXJzaW9uLnN1YnN0cmluZygwLCBpeCk7XHJcbiAgICBpZiAoKGl4ID0gZnVsbFZlcnNpb24uaW5kZXhPZihcIiBcIikpICE9IC0xKVxyXG4gICAgICBmdWxsVmVyc2lvbiA9IGZ1bGxWZXJzaW9uLnN1YnN0cmluZygwLCBpeCk7XHJcblxyXG4gICAgbWFqb3JWZXJzaW9uID0gcGFyc2VJbnQoJycgKyBmdWxsVmVyc2lvbiwgMTApO1xyXG4gICAgaWYgKGlzTmFOKG1ham9yVmVyc2lvbikpIHtcclxuICAgICAgZnVsbFZlcnNpb24gPSAnJyArIHBhcnNlRmxvYXQobmF2aWdhdG9yLmFwcFZlcnNpb24pO1xyXG4gICAgICBtYWpvclZlcnNpb24gPSBwYXJzZUludChuYXZpZ2F0b3IuYXBwVmVyc2lvbiwgMTApO1xyXG4gICAgfVxyXG4gICAgbGV0IE9iaiA9IHtcclxuICAgICAgJ2Jyb3dzZXJOYW1lJzogYnJvd3Nlck5hbWUsXHJcbiAgICAgICd2ZXJzaW9uJzogZnVsbFZlcnNpb24sXHJcbiAgICAgICdtYWpvclZlcnNpb24nOiBtYWpvclZlcnNpb24sXHJcbiAgICAgICdhcHBOYW1lJzogbmF2aWdhdG9yLmFwcE5hbWUsXHJcbiAgICAgICd1c2VyQWdlbnQnOiBuYXZpZ2F0b3IudXNlckFnZW50XHJcbiAgICB9XHJcbiAgICByZXR1cm4gT2JqO1xyXG4gIH1cclxuXHJcbiAgZWRpdG9yQ29uZmlnID0ge1xyXG4gICAgXCJlZGl0YWJsZVwiOiB0cnVlLFxyXG4gICAgXCJzcGVsbGNoZWNrXCI6IHRydWUsXHJcbiAgICBcImhlaWdodFwiOiBcIjExMHB4XCIsXHJcbiAgICBcIm1pbkhlaWdodFwiOiBcIjExMHB4XCIsXHJcbiAgICBcIndpZHRoXCI6IFwiYXV0b1wiLFxyXG4gICAgXCJtaW5XaWR0aFwiOiBcIjBcIixcclxuICAgIFwidHJhbnNsYXRlXCI6IFwieWVzXCIsXHJcbiAgICBcImVuYWJsZVRvb2xiYXJcIjogdHJ1ZSxcclxuICAgIFwic2hvd1Rvb2xiYXJcIjogdHJ1ZSxcclxuICAgIFwicGxhY2Vob2xkZXJcIjogXCJFbnRlciB0ZXh0IGhlcmUuLi5cIixcclxuICAgIFwiaW1hZ2VFbmRQb2ludFwiOiBcIlwiLFxyXG4gICAgXCJ0b29sYmFyXCI6IFtcclxuICAgICAgW1wiYm9sZFwiLCBcIml0YWxpY1wiLCBcInVuZGVybGluZVwiLCBcInN0cmlrZVRocm91Z2hcIiwgXCJzdXBlcnNjcmlwdFwiLCBcInN1YnNjcmlwdFwiXSxcclxuICAgICAgW1wiZm9udE5hbWVcIiwgXCJmb250U2l6ZVwiLCBcImNvbG9yXCJdLFxyXG4gICAgICBbXCJqdXN0aWZ5TGVmdFwiLCBcImp1c3RpZnlDZW50ZXJcIiwgXCJqdXN0aWZ5UmlnaHRcIiwgXCJqdXN0aWZ5RnVsbFwiLCBcImluZGVudFwiLCBcIm91dGRlbnRcIl0sXHJcbiAgICAgIFtcImN1dFwiLCBcImNvcHlcIiwgXCJkZWxldGVcIiwgXCJyZW1vdmVGb3JtYXRcIiwgXCJ1bmRvXCIsIFwicmVkb1wiXSxcclxuICAgICAgW1wicGFyYWdyYXBoXCIsIFwiYmxvY2txdW90ZVwiLCBcInJlbW92ZUJsb2NrcXVvdGVcIiwgXCJob3Jpem9udGFsTGluZVwiLCBcIm9yZGVyZWRMaXN0XCIsIFwidW5vcmRlcmVkTGlzdFwiXSxcclxuICAgICAgW1wibGlua1wiLCBcInVubGlua1wiLCBcImltYWdlXCIsIFwidmlkZW9cIl1cclxuICAgIF1cclxuICB9XHJcblxyXG4gIGZvcm1hdGVTdHIoc3RyKSB7XHJcbiAgICBzdHIgPSBzdHIudHJpbSgpO1xyXG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL1sgLF0rL2csIFwiLFwiKTtcclxuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9cXG4vZywgXCIsXCIpO1xyXG4gICAgcmV0dXJuIHN0cjtcclxuICB9XHJcblxyXG4gIHN0YXJ0UkZJRFNjYW4oZGV2aWNlSWQsIGZvcm1ObWUpIHtcclxuICAgIGxldCBtZGxrID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbWRsS2V5JykpO1xyXG4gICAgbGV0IGNVcmwgPSB0aGlzLnJvdXRlci51cmw7XHJcbiAgICB0aGlzLmhlYWRlciA9IHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgJ21ldGhvZCc6ICdzdGFydEJhckNvZGVSZWFkaW5nJyxcclxuICAgICAgJ3NvdXJjZSc6ICdxcydcclxuICAgIH07XHJcbiAgICAvLyAnY2xpZW50a2V5JzogQ29va2llLmdldCgnX2NrJyksXHJcbiAgICAvLyAnbG9naW5pZCc6IENvb2tpZS5nZXQoJ19sb2dpZCcpLFxyXG4gICAgLy8gJ21vZHVsZWtleSc6IG1kbGtbY1VybC5zcGxpdCgnLycpWzFdXSxcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID0gZm9ybU5tZTtcclxuICAgIHJlcU9ialsnZGV2aWNlSWQnXSA9IGRldmljZUlkO1xyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPXtcclxuICAgICAgbWV0aG9kOiAnc3RhcnRCYXJDb2RlUmVhZGluZydcclxuICAgIH1cclxuICAgIHRoaXMubG9hZChyZXFPYmosIG9wdGlvbnMsICdtYXJrZXRpbmcvYmFyQ29kZVJlYWRlcicpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKCdTY2FuIFN0YXJ0ZWQuLi4nKTtcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2Uuc2Nhbl9pZG47XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgU3RvcFJGSURTY2FuKHNjYW5faWRuLCBmb3JtTm1lKSB7XHJcbiAgICBsZXQgbWRsayA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21kbEtleScpKTtcclxuICAgIGxldCBjVXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG4gICAgdGhpcy5oZWFkZXIgPSB7XHJcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICdtZXRob2QnOiAnc3RvcEJhckNvZGVSZWFkaW5nJyxcclxuICAgICAgJ3NvdXJjZSc6ICdxcydcclxuICAgIH07XHJcbiAgICAvLyAnY2xpZW50a2V5JzogQ29va2llLmdldCgnX2NrJyksXHJcbiAgICAvLyAnbW9kdWxla2V5JzogbWRsa1tjVXJsLnNwbGl0KCcvJylbMV1dLFxyXG4gICAgLy8gJ2xvZ2luaWQnOiBDb29raWUuZ2V0KCdfbG9naWQnKSxcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID0gZm9ybU5tZTtcclxuICAgIHJlcU9ialsnc2NhbklkJ10gPSBzY2FuX2lkbjtcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6ICdzdG9wQmFyQ29kZVJlYWRpbmcnXHJcbiAgICB9XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICB0aGlzLmxvYWQocmVxT2JqLCBvcHRpb25zLCAnbWFya2V0aW5nL2JhckNvZGVSZWFkZXInKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnU2NhbiBTdG9wcGVkLi4uJyk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnNjYW5faWRuO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBsb2FkKHJlcU9iaiwgb3B0aW9uczogYW55LCB1cmwpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKGhlYWRlcnMpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuZ2xiRW52LmJhc2VVcmwgKyB1cmwsIEpTT04uc3RyaW5naWZ5KHJlcU9iaiksIG9wdGlvbnM9e1xyXG4gICAgICBwYXJhbXM6IG9wdGlvbnMsXHJcbiAgICB9KVxyXG4gICAgICAudG9Qcm9taXNlKClcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZSkuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZGlGaWxlKHJlcU9iaiwgb3B0aW9uczogYW55LCB1cmwpIHtcclxuICAgIC8vIGxldCBvcHRpb25zOiBhbnkgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoaGVhZGVyKSA7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5nbGJFbnYuYmFzZVVybCArIHVybCwgSlNPTi5zdHJpbmdpZnkocmVxT2JqKSwgb3B0aW9ucz17XHJcbiAgICAgIHBhcmFtczogb3B0aW9uc1xyXG4gICAgfSlcclxuICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UpLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIFxyXG4gICBudW1iZXJXaXRoQ29tbWFzKHgpIHtcclxuICAgIHZhciBwYXJ0cyA9IHgudG9TdHJpbmcoKS5zcGxpdChcIi5cIik7XHJcbiAgICBwYXJ0c1swXSA9IHBhcnRzWzBdLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLFwiKTtcclxuICAgIHJldHVybiBwYXJ0cy5qb2luKFwiLlwiKTtcclxuICAgfVxyXG5cclxuICAgIC8vIG5ldyBmdW5jdGlvbiBmb3IgaW5kaWFuIGFuZCBlbmdsaXNoIGZvcm1hdCBjb21tYXNcclxuICBudW1iZXJXaXRoQ29tbWFzRm9ybWF0KG51bSkge1xyXG4gICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjb21tYUZvcm1hdCcpID09ICdlbmcnKSB7XHJcbiAgICAgIHZhciBwYXJ0cyA9IG51bS50b1N0cmluZygpLnNwbGl0KFwiLlwiKTtcclxuICAgICAgcGFydHNbMF0gPSBwYXJ0c1swXS5yZXBsYWNlKC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCBcIixcIik7XHJcbiAgICAgIHJldHVybiBwYXJ0cy5qb2luKFwiLlwiKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB2YXIgcGFydHMgPSBudW0udG9TdHJpbmcoKS5zcGxpdChcIi5cIik7XHJcbiAgICAgIGxldCB4ID0gcGFydHNbMF07XHJcbiAgICAgIHggPSB4LnJlcGxhY2VBbGwoJywnLCAnJyk7IC8vcmVtb3ZpbmcgcHJlIGV4aXN0aW5nIGNvbW1hcyBpZiBhbnlcclxuICAgICAgdmFyIGxhc3RUaHJlZSA9IHguc3Vic3RyaW5nKHgubGVuZ3RoLTMpO1xyXG4gICAgICB2YXIgb3RoZXJOdW1iZXJzID0geC5zdWJzdHJpbmcoMCx4Lmxlbmd0aC0zKTtcclxuICAgICAgaWYob3RoZXJOdW1iZXJzICE9ICcnKVxyXG4gICAgICAgICAgbGFzdFRocmVlID0gJywnICsgbGFzdFRocmVlO1xyXG4gICAgICB2YXIgcmVzID0gb3RoZXJOdW1iZXJzLnJlcGxhY2UoL1xcQig/PShcXGR7Mn0pKyg/IVxcZCkpL2csIFwiLFwiKSArIGxhc3RUaHJlZTtcclxuICAgICAgcGFydHNbMF0gPSByZXM7XHJcbiAgICAgIHJldHVybiBwYXJ0cy5qb2luKFwiLlwiKTtcclxuICAgIH1cclxufVxyXG5cclxuICBpbldvcmRzSU5SKG51bSkge1xyXG4gICAgaWYgKChudW0gPSBudW0udG9TdHJpbmcoKSkubGVuZ3RoID4gOSkgcmV0dXJuICdvdmVyZmxvdyc7XHJcbiAgICBsZXQgbiA9IFtdO1xyXG4gICAgbiA9ICgnMDAwMDAwMDAwJyArIG51bSkuc3Vic3RyKC05KS5tYXRjaCgvXihcXGR7Mn0pKFxcZHsyfSkoXFxkezJ9KShcXGR7MX0pKFxcZHsyfSkkLyk7XHJcbiAgICBpZiAoIW4pIHJldHVybjsgdmFyIHN0ciA9ICcnO1xyXG4gICAgc3RyICs9IChuWzFdICE9IDApID8gKHRoaXMuYVtOdW1iZXIoblsxXSldIHx8IHRoaXMuYltuWzFdWzBdXSArICcgJyArIHRoaXMuYVtuWzFdWzFdXSkgKyAnY3JvcmUgJyA6ICcnO1xyXG4gICAgc3RyICs9IChuWzJdICE9IDApID8gKHRoaXMuYVtOdW1iZXIoblsyXSldIHx8IHRoaXMuYltuWzJdWzBdXSArICcgJyArIHRoaXMuYVtuWzJdWzFdXSkgKyAnbGFraCAnIDogJyc7XHJcbiAgICBzdHIgKz0gKG5bM10gIT0gMCkgPyAodGhpcy5hW051bWJlcihuWzNdKV0gfHwgdGhpcy5iW25bM11bMF1dICsgJyAnICsgdGhpcy5hW25bM11bMV1dKSArICd0aG91c2FuZCAnIDogJyc7XHJcbiAgICBzdHIgKz0gKG5bNF0gIT0gMCkgPyAodGhpcy5hW051bWJlcihuWzRdKV0gfHwgdGhpcy5iW25bNF1bMF1dICsgJyAnICsgdGhpcy5hW25bNF1bMV1dKSArICdodW5kcmVkICcgOiAnJztcclxuICAgIHN0ciArPSAobls1XSAhPSAwKSA/ICgoc3RyICE9ICcnKSA/ICdhbmQgJyA6ICcnKSArICh0aGlzLmFbTnVtYmVyKG5bNV0pXSB8fCB0aGlzLmJbbls1XVswXV0gKyAnICcgKyB0aGlzLmFbbls1XVsxXV0pICsgJ29ubHkgJyA6ICcnO1xyXG4gICAgY29uc29sZS5sb2coc3RyKTtcclxuICAgIHJldHVybiBzdHI7XHJcbiAgfVxyXG5cclxuXHJcbiAgcmFuZG9tbnVtYmVyKCkge1xyXG4gICAgbGV0IG51bSA9IE1hdGguZmxvb3IoKE1hdGgucmFuZG9tKCkgKiAxMDAwMCkgKyAxMDApO1xyXG4gICAgcmV0dXJuIG51bTtcclxuICB9XHJcblxyXG4gIHRhZ2JveFNldHRpbmdzOiB7XHJcbiAgICBlbmFibGVGaWx0ZXJTZWxlY3RBbGw6IGZhbHNlLFxyXG4gICAgc2luZ2xlU2VsZWN0aW9uOiBmYWxzZSxcclxuICAgIHRleHQ6IFwiU2VsZWN0IHN0YXR1c1wiLFxyXG4gICAgc2VsZWN0QWxsVGV4dDogJ1NlbGVjdCBBbGwnLFxyXG4gICAgdW5TZWxlY3RBbGxUZXh0OiAnVW5TZWxlY3QgQWxsJyxcclxuICAgIGVuYWJsZVNlYXJjaEZpbHRlcjogdHJ1ZSxcclxuICAgIGNsYXNzZXM6IFwibXljbGFzcyBjdXN0b20tY2xhc3NcIlxyXG4gIH1cclxuXHJcbiAgIHJlbW92ZUVtcHR5KG9iaikge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iailcclxuICAgICAgLmZpbHRlcihmdW5jdGlvbiAoaykge1xyXG4gICAgICAgIHJldHVybiBvYmpba118fCcnICE9ICcnO1xyXG4gICAgICB9KVxyXG4gICAgICAucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGspIHtcclxuICAgICAgICBhY2Nba10gPSBvYmpba107XHJcbiAgICAgICAgcmV0dXJuIGFjYztcclxuICAgICAgfSwge30pO1xyXG4gIH1cclxuXHJcbiAgY29uZmlnID0ge1xyXG4gICAgZWRpdGFibGU6IHRydWUsXHJcbiAgICBzcGVsbGNoZWNrOiB0cnVlLFxyXG4gICAgaGVpZ2h0OiAnMTVyZW0nLFxyXG4gICAgbWluSGVpZ2h0OiAnNXJlbScsXHJcbiAgICBwbGFjZWhvbGRlcjogJ0VudGVyIHRleHQgaGVyZS4uLicsXHJcbiAgICB0cmFuc2xhdGU6ICdubycsXHJcbiAgICBkZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yOiAncCcsXHJcbiAgICBkZWZhdWx0Rm9udE5hbWU6ICdBcmlhbCcsXHJcbiAgICBjdXN0b21DbGFzc2VzOiBbXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiBcInF1b3RlXCIsXHJcbiAgICAgICAgY2xhc3M6IFwicXVvdGVcIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdyZWRUZXh0JyxcclxuICAgICAgICBjbGFzczogJ3JlZFRleHQnXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiBcInRpdGxlVGV4dFwiLFxyXG4gICAgICAgIGNsYXNzOiBcInRpdGxlVGV4dFwiLFxyXG4gICAgICAgIHRhZzogXCJoMVwiLFxyXG4gICAgICB9LFxyXG4gICAgXVxyXG4gIH07XHJcblxyXG59Il19
|
|
746
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuLXNlcnZpY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V6bGliL3NyYy9saWIvY29tbWFuLXNlcnZpY2UvY29tbWFuLXNlcnZpY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFaEUsT0FBTyxFQUFFLE1BQU0sRUFBMEIsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQVFyQyxNQUFNLE9BQU8sb0JBQW9CO0lBUS9CLFlBQ1MsTUFBYyxFQUNiLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3pCLE1BQXdCLEVBQ3ZCLE1BQXFCLEVBQ3JCLGNBQWlDLEVBQ2pDLFFBQWlCO1FBTmxCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDYixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3pCLFdBQU0sR0FBTixNQUFNLENBQWtCO1FBQ3ZCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLGFBQVEsR0FBUixRQUFRLENBQVM7UUFibEIsVUFBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFFNUIsTUFBQyxHQUFHLENBQUMsRUFBRSxFQUFF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QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN0RyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDMUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3pHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3BJLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakIsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBR0QsWUFBWTtRQUNWLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDcEQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBWUEsV0FBVyxDQUFDLEdBQUc7UUFDZCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2FBQ3BCLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDakIsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUM7YUFDRCxNQUFNLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUN0QixHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1gsQ0FBQzs7b0lBOXlCVSxvQkFBb0I7d0lBQXBCLG9CQUFvQixjQUhuQixNQUFNOzJGQUdQLG9CQUFvQjtrQkFKaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQmFja2VuZCwgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgR2xvYmxlRW52U2VydmljZSB9IGZyb20gJy4uL2dsb2JsZS9nbG9ibGUtZW52LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb29raWUgfSBmcm9tICduZzItY29va2llcy9uZzItY29va2llcyc7XHJcbmltcG9ydCB7IFJvdXRlciwgQWN0aXZhdGVkUm91dGUsIFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE5neFNwaW5uZXJTZXJ2aWNlIH0gZnJvbSBcIm5neC1zcGlubmVyXCI7XHJcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMgIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcblxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIENvbW1hblNlcnZpY2VTZXJ2aWNlIHtcclxuXHJcbiAgcmVhZG9ubHkgY0RhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gIGhlYWRlcjtcclxuICBhID0gWycnLCAnb25lICcsICd0d28gJywgJ3RocmVlICcsICdmb3VyICcsICdmaXZlICcsICdzaXggJywgJ3NldmVuICcsICdlaWdodCAnLCAnbmluZSAnLCAndGVuICcsICdlbGV2ZW4gJywgJ3R3ZWx2ZSAnLCAndGhpcnRlZW4gJywgJ2ZvdXJ0ZWVuICcsICdmaWZ0ZWVuICcsICdzaXh0ZWVuICcsICdzZXZlbnRlZW4gJywgJ2VpZ2h0ZWVuICcsICduaW5ldGVlbiAnXTtcclxuICBiID0gWycnLCAnJywgJ3R3ZW50eScsICd0aGlydHknLCAnZm9ydHknLCAnZmlmdHknLCAnc2l4dHknLCAnc2V2ZW50eScsICdlaWdodHknLCAnbmluZXR5J107XHJcblxyXG4gIG5ld0h0dHBDbGllbnQ6IGFueTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgaHR0cEJhY2tlbmQ6IEh0dHBCYWNrZW5kLFxyXG4gICAgcHVibGljIGdsYkVudjogR2xvYmxlRW52U2VydmljZSxcclxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzcGlubmVyU2VydmljZTogTmd4U3Bpbm5lclNlcnZpY2UgLFxyXG4gICAgcHJpdmF0ZSBkYXRlUGlwZTpEYXRlUGlwZVxyXG4gICkgeyBcclxuICAgIHRoaXMubmV3SHR0cENsaWVudCA9IG5ldyBIdHRwQ2xpZW50KHRoaXMuaHR0cEJhY2tlbmQpXHJcbiAgfVxyXG5cclxuICBsb2FkTGlzdChyZXFPYmosIG9wdGlvbnM6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuZ2xiRW52LmJhc2VVcmwgKyAnZGFzaGJvcmQvbW9kdWxlJywgSlNPTi5zdHJpbmdpZnkocmVxT2JqKSwgb3B0aW9ucz17XHJcbiAgICAgIHBhcmFtczogb3B0aW9ucyxcclxuICAgIH0pXHJcbiAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlKTtcclxuICB9XHJcblxyXG4gIG1lbnVMaXN0KHJlcU9iaiwgb3B0aW9uczogYW55KSB7XHJcbiAgICBKU09OLnN0cmluZ2lmeShyZXFPYmopO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuZ2xiRW52LmJhc2VVcmwgKyAnbG9naW4vbG9hZE1lbnUnLCBKU09OLnN0cmluZ2lmeShyZXFPYmopLCBvcHRpb25zPXtcclxuICAgICAgcGFyYW1zOiBvcHRpb25zLFxyXG4gICAgfSlcclxuICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UpO1xyXG4gIH1cclxuXHJcbiAgbG9hZG1lbnVMaXN0KHJlcU9iaiwgb3B0aW9uczogYW55KSB7XHJcbiAgICBKU09OLnN0cmluZ2lmeShyZXFPYmopO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuZ2xiRW52LmJhc2VVcmwgKyAnbG9naW4vZ2V0TWVudScsIEpTT04uc3RyaW5naWZ5KHJlcU9iaiksIG9wdGlvbnM9e1xyXG4gICAgICBwYXJhbXM6IG9wdGlvbnMsXHJcbiAgICB9KVxyXG4gICAgICAudG9Qcm9taXNlKClcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZSk7XHJcbiAgfVxyXG5cclxuICBsb2dvdXQocmVxT2JqLCBvcHRpb25zOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmdsYkVudi5iYXNlVXJsICsgJ2xvZ2luL2F1dGhlbnRpY2F0aW9uJywgSlNPTi5zdHJpbmdpZnkocmVxT2JqKSwgb3B0aW9ucz17XHJcbiAgICAgIHBhcmFtczogb3B0aW9ucyxcclxuICAgIH0pXHJcbiAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlKTtcclxuICB9XHJcblxyXG4gIGF1dGhMb2dvdXQocmVxT2JqLCBvcHRpb25zKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5nbGJFbnYuYmFzZVVybCArICdsb2dpbi9hdXRoTG9nb3V0JywgSlNPTi5zdHJpbmdpZnkocmVxT2JqKSwgb3B0aW9ucz17XHJcbiAgICAgIHBhcmFtczogb3B0aW9ucyxcclxuICAgIH0pXHJcbiAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlKTtcclxuICB9XHJcblxyXG4gIFxyXG4gIGFzeW5jIGdldFZubXNlcShyZXFPYmosIGhlYWRlcnMpIHtcclxuICAgIGNvbnNvbGUubG9nKFwiaGVhZGVyc1wiLGhlYWRlcnMpO1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuaHR0cC5wb3N0KHRoaXMuZ2xiRW52LmJhc2VVcmwgKyAnYWNjb3VudHMvbWFzdGVyZGF0YScsIEpTT04uc3RyaW5naWZ5KHJlcU9iaiksIGhlYWRlcnMpXHJcbiAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlKTtcclxuICB9XHJcblxyXG4gIENTVkNvbnZlcnRvcihKU09ORGF0YSwgUmVwb3J0VGl0bGUsIFNob3dMYWJlbCkge1xyXG4gICAgbGV0IGFyckRhdGEgPSB0eXBlb2YgSlNPTkRhdGEgIT0gJ29iamVjdCcgPyBKU09OLnBhcnNlKEpTT05EYXRhKSA6IEpTT05EYXRhO1xyXG4gICAgY29uc29sZS5sb2coXCJhcnJEYXRhXCIsIGFyckRhdGEpO1xyXG5cclxuICAgIGxldCBDU1YgPSAnJztcclxuICAgIGlmIChTaG93TGFiZWwpIHtcclxuICAgICAgbGV0IHJvdyA9IFwiXCI7XHJcbiAgICAgIGZvciAobGV0IGluZGV4IGluIGFyckRhdGFbMF0pIHtcclxuICAgICAgICByb3cgKz0gaW5kZXggKyAnLCc7XHJcbiAgICAgIH1cclxuICAgICAgcm93ID0gcm93LnNsaWNlKDAsIC0xKTtcclxuICAgICAgQ1NWICs9IHJvdyArICdcXHJcXG4nO1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCByb3cgPSBcIlwiO1xyXG4gICAgICBpZiAoYXJyRGF0YVtpXSAhPSAnYnInKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaW5kZXggaW4gYXJyRGF0YVtpXSkge1xyXG4gICAgICAgICAgcm93ICs9ICdcIicgKyBhcnJEYXRhW2ldW2luZGV4XSArICdcIiwnO1xyXG4gICAgICAgIH1cclxuICAgICAgICByb3cuc2xpY2UoMCwgcm93Lmxlbmd0aCAtIDEpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBDU1YgKz0gcm93ICsgJ1xcclxcbic7XHJcbiAgICB9XHJcbiAgICBpZiAoQ1NWID09ICcnKSB7XHJcbiAgICAgIGFsZXJ0KFwiSW52YWxpZCBkYXRhXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyBjb25zb2xlLmxvZyhcImFyckRhdGFcIiwgYXJyRGF0YSk7XHJcbiAgICBsZXQgZmlsZU5hbWUgPSBcIlJlcG9ydF9cIjtcclxuICAgIGxldCBjVGltZSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zdWJzdHJpbmcoMCwgMTkpO1xyXG4gICAgZmlsZU5hbWUgKz0gUmVwb3J0VGl0bGUucmVwbGFjZSgvIC9nLCBcIl9cIikgKyBjVGltZSArIFwiLmNzdlwiO1xyXG4gICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbQ1NWXSwge1xyXG4gICAgICB0eXBlOiBcImFwcGxpY2F0aW9uL2NzdjtjaGFyc2V0PXV0Zi04O1wiXHJcbiAgICB9KTtcclxuXHJcbiAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xyXG4gICAgdmFyIGNzdlVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICBsaW5rLmhyZWYgPSBjc3ZVcmw7XHJcbiAgICBsaW5rLmRvd25sb2FkID0gZmlsZU5hbWU7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgbGluay5jbGljaygpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICAgIC8vbGV0IHVyaSA9ICdkYXRhOnRleHQvY3N2O2NoYXJzZXQ9dXRmLTgsJyArIGVzY2FwZShDU1YpO1xyXG4gICAgLy8gbGV0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICAgIC8vbGluay5ocmVmID0gdXJpO1xyXG4gICAgLy8gbGluay5zdHlsZSA9IFwidmlzaWJpbGl0eTpoaWRkZW5cIjtcclxuICAgIC8vIGxpbmsuZG93bmxvYWQgPSBmaWxlTmFtZSArIFwiLmNzdlwiO1xyXG4gICAgLy8gIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICAvLyBsaW5rLmNsaWNrKCk7XHJcbiAgICAvLyBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xyXG4gIH1cclxuXHJcbiAgQ09tcGFyaXNpb25DU1ZDb252ZXJ0b3IoSGVhZGVycywgSGRyRHRsLCBKU09ORGF0YSwgUmVwb3J0VGl0bGUsIFNob3dMYWJlbCkge1xyXG4gICAgbGV0IGFyckRhdGEgPSB0eXBlb2YgSlNPTkRhdGEgIT0gJ29iamVjdCcgPyBKU09OLnBhcnNlKEpTT05EYXRhKSA6IEpTT05EYXRhO1xyXG4gICAgbGV0IENTViA9ICcnO1xyXG4gICAgaWYgKFNob3dMYWJlbCkge1xyXG4gICAgICBsZXQgcm93ID0gXCJcIjtcclxuICAgICAgcm93ICs9ICdTcicgKyAnLCc7XHJcbiAgICAgIHJvdyArPSAnRW1wbG95ZWUnICsgJywnO1xyXG4gICAgICByb3cgKz0gJ1RyYW5zIElkJyArICcsJztcclxuICAgICAgcm93ICs9ICdQcm9jZXNzIE5hbWUnICsgJywnO1xyXG4gICAgICByb3cgKz0gJ1N0YXR1cycgKyAnLCc7XHJcbiAgICAgIHJvdyArPSAnUGFja2V0IENvZGUnICsgJywnO1xyXG4gICAgICByb3cgKz0gJ0RhdGUnICsgJywnO1xyXG5cclxuICAgICAgSGVhZGVycy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgIHJvdyArPSBIZHJEdGxbZWxlbWVudF0gKyAnLCc7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcm93ID0gcm93LnNsaWNlKDAsIC0xKTtcclxuICAgICAgQ1NWICs9IHJvdyArICdcXHJcXG4nO1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCByb3cgPSBcIlwiO1xyXG5cclxuICAgICAgcm93ICs9ICdcIicgKyBhcnJEYXRhW2ldWydzciddICsgJ1wiLCc7XHJcbiAgICAgIHJvdyArPSAnXCInICsgYXJyRGF0YVtpXVsnZW1wbG95ZWUnXSArICdcIiwnO1xyXG4gICAgICByb3cgKz0gJ1wiJyArIGFyckRhdGFbaV1bJ3RyYW5zYWN0aW9uX3FjX2lkbiddICsgJ1wiLCc7XHJcbiAgICAgIHJvdyArPSAnXCInICsgYXJyRGF0YVtpXVsncHJvY2Vzc05tZSddICsgJ1wiLCc7XHJcbiAgICAgIHJvdyArPSAnXCInICsgYXJyRGF0YVtpXVsnc3RhdHVzJ10gKyAnXCIsJztcclxuICAgICAgcm93ICs9ICdcIicgKyBhcnJEYXRhW2ldWydwa3RfY29kZSddICsgJ1wiLCc7XHJcblxyXG4gICAgICByb3cgKz0gJ1wiJyArIGFyckRhdGFbaV1bJ2lzc3VlX3RzJ10gKyAnXFxuJyArIGFyckRhdGFbaV1bJ21vZGlmaWVkX3RzJ10gKyAnXCIsJztcclxuXHJcbiAgICAgIEhlYWRlcnMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICBsZXQgaXNzdmFsID0gXCJcIjtcclxuICAgICAgICBsZXQgcnR2YWwgPSBcIlwiO1xyXG4gICAgICAgIGlzc3ZhbCA9IGFyckRhdGFbaV1bJ2lzc3ZhbCddW2VsZW1lbnRdID09IHVuZGVmaW5lZCA/ICcnIDogYXJyRGF0YVtpXVsnaXNzdmFsJ11bZWxlbWVudF07XHJcbiAgICAgICAgcnR2YWwgPSBhcnJEYXRhW2ldWydydG52YWwnXVtlbGVtZW50XSA9PSB1bmRlZmluZWQgPyAnJyA6IGFyckRhdGFbaV1bJ3J0bnZhbCddW2VsZW1lbnRdO1xyXG4gICAgICAgIHJvdyArPSAnXCInICsgaXNzdmFsICsgJ1xcbicgKyBydHZhbCArICdcIiwnO1xyXG4gICAgICB9KTtcclxuICAgIFxyXG4gICAgICByb3cuc2xpY2UoMCwgcm93Lmxlbmd0aCAtIDEpO1xyXG5cclxuICAgICAgQ1NWICs9IHJvdyArICdcXHJcXG4nO1xyXG4gICAgfVxyXG4gICAgaWYgKENTViA9PSAnJykge1xyXG4gICAgICBhbGVydChcIkludmFsaWQgZGF0YVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGZpbGVOYW1lID0gXCJSZXBvcnRfXCI7XHJcbiAgICBsZXQgY1RpbWUgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDE5KTtcclxuICAgIGZpbGVOYW1lICs9IFJlcG9ydFRpdGxlLnJlcGxhY2UoLyAvZywgXCJfXCIpICsgY1RpbWUgKyBcIi5jc3ZcIjtcclxuICAgIHZhciBibG9iID0gbmV3IEJsb2IoW0NTVl0sIHtcclxuICAgICAgdHlwZTogXCJhcHBsaWNhdGlvbi9jc3Y7Y2hhcnNldD11dGYtODtcIlxyXG4gICAgfSk7XHJcblxyXG4gICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICAgIHZhciBjc3ZVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgbGluay5ocmVmID0gY3N2VXJsO1xyXG4gICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgIGxpbmsuY2xpY2soKTtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XHJcblxyXG4gIH1cclxuXHJcbiAgLy9UaXRsZSwgZ3JvdXBTdW1tYXJ5LCBhdHRyRHRsLCBhdHRyRGlzcGxheUR0bCwgR3JwTGlzdCwgZmluYWxHcnBWYWxcclxuICBDU1ZDb252ZXJ0b3JHcnBXaXNlKGdyb3VwU3VtbWFyeSwgYXR0ckR0bCwgYXR0ckRpc3BsYXlEdGwsIEdycExpc3QsIGZpbmFsR3JwVmFsLCBSZXBvcnRUaXRsZSwgU2hvd0xhYmVsKSB7XHJcblxyXG4gICAgbGV0IE92YWxzID0gT2JqZWN0LnZhbHVlcyhhdHRyRGlzcGxheUR0bCk7XHJcblxyXG4gICAgbGV0IGFyckRhdGEgPSB0eXBlb2YgZmluYWxHcnBWYWwgIT0gJ29iamVjdCcgPyBKU09OLnBhcnNlKGZpbmFsR3JwVmFsKSA6IGZpbmFsR3JwVmFsO1xyXG4gICAgY29uc29sZS5sb2coXCJhcnJEYXRhXCIsIGFyckRhdGEpO1xyXG5cclxuXHJcbiAgICBsZXQgQ1NWID0gJyc7XHJcbiAgICBpZiAoU2hvd0xhYmVsKSB7XHJcbiAgICAgIGxldCByb3cgPSBcIlwiO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCBpbiBPdmFscykge1xyXG4gICAgICAgIHJvdyArPSBPdmFsc1tpbmRleF0gKyAnLCc7XHJcbiAgICAgIH1cclxuICAgICAgcm93ID0gcm93LnNsaWNlKDAsIC0xKTtcclxuICAgICAgQ1NWICs9IHJvdyArICdcXHJcXG4nO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgR3JwTGlzdC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICBsZXQgZ3JwID0gJycsIHF0eSA9ICcnLCBjdHMgPSAnJywgcnRlID0gJycsIGFtdCA9ICcnO1xyXG4gICAgICBncnAgPSBcIkdyb3VwIDogXCIgKyBlbGVtZW50LmdycCA9PSB1bmRlZmluZWQgPyBcIlwiIDogXCJHcm91cCA6IFwiICsgZWxlbWVudC5ncnA7XHJcbiAgICAgIHF0eSA9IGdyb3VwU3VtbWFyeVtlbGVtZW50LmdycCArICdfUVRZJ10gPT0gdW5kZWZpbmVkID8gXCJcIiA6IFwiUVRZIDogXCIgKyBncm91cFN1bW1hcnlbZWxlbWVudC5ncnAgKyAnX1FUWSddO1xyXG4gICAgICBjdHMgPSBncm91cFN1bW1hcnlbZWxlbWVudC5ncnAgKyAnX0NUUyddID09IHVuZGVmaW5lZCA/IFwiXCIgOiBcIkNhcmF0cyA6IFwiICsgZ3JvdXBTdW1tYXJ5W2VsZW1lbnQuZ3JwICsgJ19DVFMnXTtcclxuICAgICAgcnRlID0gZ3JvdXBTdW1tYXJ5W2VsZW1lbnQuZ3JwICsgJ19SVEUnXSA9PSB1bmRlZmluZWQgPyBcIlwiIDogXCJSYXRlIDogXCIgKyBncm91cFN1bW1hcnlbZWxlbWVudC5ncnAgKyAnX1JURSddO1xyXG4gICAgICBhbXQgPSBncm91cFN1bW1hcnlbZWxlbWVudC5ncnAgKyAnX0FNVCddID09IHVuZGVmaW5lZCA/IFwiXCIgOiBcIkFtb3VudCA6IFwiICsgZ3JvdXBTdW1tYXJ5W2VsZW1lbnQuZ3JwICsgJ19BTVQnXTtcclxuXHJcblxyXG5cclxuICAgICAgbGV0IHJvdyA9IFwiXCI7XHJcbiAgICAgIHJvdyA9IGdycCArIFwiICBcIiArIHF0eSArIFwiICBcIiArIGN0cyArIFwiICBcIiArIHJ0ZSArIFwiICBcIiArIGFtdDtcclxuICAgICAgLy9yb3cgPSBcIkdyb3VwIDogXCIgKyBlbGVtZW50LmdycCArXHJcbiAgICAgIC8vIGdyb3VwU3VtbWFyeVtlbGVtZW50LmdycCArICdfUVRZJ10gPT0gdW5kZWZpbmVkID8gXCJcIiA6IFwiUVRZIDogXCIgKyBncm91cFN1bW1hcnlbZWxlbWVudC5ncnAgKyAnX1FUWSddICtcclxuICAgICAgLy8gICBncm91cFN1bW1hcnlbZWxlbWVudC5ncnAgKyAnX0NUUyddID09IHVuZGVmaW5lZCA/IFwiXCIgOiBcIkNhcmF0cyA6IFwiICsgZ3JvdXBTdW1tYXJ5W2VsZW1lbnQuZ3JwICsgJ19DVFMnXSArXHJcbiAgICAgIC8vICAgICBncm91cFN1bW1hcnlbZWxlbWVudC5ncnAgKyAnX1JURSddID09IHVuZGVmaW5lZCA/IFwiXCIgOiBcIlJhdGUgOiBcIiArIGdyb3VwU3VtbWFyeVtlbGVtZW50LmdycCArICdfUlRFJ10gK1xyXG4gICAgICAvLyAgICAgICBncm91cFN1bW1hcnlbZWxlbWVudC5ncnAgKyAnX0FNVCddID09IHVuZGVmaW5lZCA/IFwiXCIgOiBcIkFtb3VudCA6IFwiICsgZ3JvdXBTdW1tYXJ5W2VsZW1lbnQuZ3JwICsgJ19BTVQnXTtcclxuICAgICAgQ1NWICs9IHJvdyArICdcXHJcXG4nO1xyXG4gICAgICBmaW5hbEdycFZhbFtlbGVtZW50LmdycF0uZm9yRWFjaChwa3RkdGwgPT4ge1xyXG4gICAgICAgIGxldCByID0gXCJcIjtcclxuICAgICAgICBhdHRyRHRsLmZvckVhY2goYXR0ID0+IHtcclxuICAgICAgICAgIHIgKz0gcGt0ZHRsW2F0dF0gKyAnLCc7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgciA9IHIuc2xpY2UoMCwgLTEpO1xyXG4gICAgICAgIENTViArPSByICsgJ1xcclxcbic7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKENTViA9PSAnJykge1xyXG4gICAgICBhbGVydChcIkludmFsaWQgZGF0YVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBjb25zb2xlLmxvZyhcImFyckRhdGFcIiwgYXJyRGF0YSk7XHJcbiAgICBsZXQgZmlsZU5hbWUgPSBcIlJlcG9ydF9cIjtcclxuICAgIGZpbGVOYW1lICs9IFJlcG9ydFRpdGxlLnJlcGxhY2UoLyAvZywgXCJfXCIpICsgXCIuY3N2XCI7XHJcbiAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtDU1ZdLCB7XHJcbiAgICAgIHR5cGU6IFwiYXBwbGljYXRpb24vY3N2O2NoYXJzZXQ9dXRmLTg7XCJcclxuICAgIH0pO1xyXG5cclxuICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XHJcbiAgICB2YXIgY3N2VXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgIGxpbmsuaHJlZiA9IGNzdlVybDtcclxuICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlTmFtZTtcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xyXG5cclxuICB9XHJcblxyXG5cclxuICBtb2RpZnlEYXRhQnlIZWFkZXIoc2VhcmNoUmVzdWx0RHRsLCByZXN1bHRWaWV3LCByZXN1bHRWaWV3RHRsKSB7XHJcbiAgICBsZXQgb2JqID0ge31cclxuICAgIGxldCBtb2RpZmllZE9iakFyciA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWFyY2hSZXN1bHREdGwubGVuZ3RoOyBpKyspIHtcclxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCByZXN1bHRWaWV3Lmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgbGV0IHZhbHMgPSBzZWFyY2hSZXN1bHREdGxbaV1bcmVzdWx0Vmlld1tqXV07XHJcbiAgICAgICAgb2JqW3Jlc3VsdFZpZXdEdGxbcmVzdWx0Vmlld1tqXV1dID0gdmFscztcclxuICAgICAgfVxyXG4gICAgICBtb2RpZmllZE9iakFyci5wdXNoKG9iaik7XHJcbiAgICAgIG9iaiA9IHt9O1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2cobW9kaWZpZWRPYmpBcnIpO1xyXG4gICAgcmV0dXJuIG1vZGlmaWVkT2JqQXJyO1xyXG4gIH1cclxuXHJcbiAgbW9kaWZ5R3JwRGF0YUJ5SGVhZGVyKHNlYXJjaFJlc3VsdER0bCwgcmVzdWx0VmlldywgcmVzdWx0Vmlld0R0bCkge1xyXG4gICAgbGV0IG9iaiA9IHt9XHJcbiAgICBsZXQgbW9kaWZpZWRPYmpBcnIgPSBbXTtcclxuICAgIGZvciAobGV0IGdycGsgaW4gc2VhcmNoUmVzdWx0RHRsKSB7XHJcbiAgICAgIHNlYXJjaFJlc3VsdER0bFtncnBrXS5mb3JFYWNoKHBrdHMgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcmVzdWx0Vmlldy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgbGV0IHZhbHMgPSBwa3RzW3Jlc3VsdFZpZXdbal1dO1xyXG4gICAgICAgICAgb2JqW3Jlc3VsdFZpZXdEdGxbcmVzdWx0Vmlld1tqXV1dID0gdmFscztcclxuICAgICAgICB9XHJcbiAgICAgICAgbW9kaWZpZWRPYmpBcnIucHVzaChvYmopO1xyXG4gICAgICAgIG9iaiA9IHt9O1xyXG4gICAgICB9KTtcclxuICAgICAgbW9kaWZpZWRPYmpBcnIucHVzaChcImJyXCIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1vZGlmaWVkT2JqQXJyO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0RGF0ZShkYXRlKSB7XHJcbiAgICBsZXQgZCA9IG5ldyBEYXRlKGRhdGUpLFxyXG4gICAgICBtb250aCA9ICcnICsgKGQuZ2V0TW9udGgoKSArIDEpLFxyXG4gICAgICBkYXkgPSAnJyArIGQuZ2V0RGF0ZSgpLFxyXG4gICAgICB5ZWFyID0gZC5nZXRGdWxsWWVhcigpO1xyXG4gICAgaWYgKG1vbnRoLmxlbmd0aCA8IDIpIG1vbnRoID0gJzAnICsgbW9udGg7XHJcbiAgICBpZiAoZGF5Lmxlbmd0aCA8IDIpIGRheSA9ICcwJyArIGRheTtcclxuXHJcbiAgICByZXR1cm4gW2RheSwgbW9udGgsIHllYXJdLmpvaW4oJy0nKTtcclxuICB9XHJcblxyXG4gIGZvcm1hdERhdGVTQyhkYXRlKSB7XHJcbiAgICBcclxuICAgIGxldCBkID0gbmV3IERhdGUoZGF0ZSksXHJcbiAgICAgIG1vbnRoID0gJycgKyAoZC5nZXRNb250aCgpICsgMSksXHJcbiAgICAgIGRheSA9ICcnICsgZC5nZXREYXRlKCksXHJcbiAgICAgIHllYXIgPSBkLmdldEZ1bGxZZWFyKCk7XHJcblxyXG4gICAgaWYgKG1vbnRoLmxlbmd0aCA8IDIpIG1vbnRoID0gJzAnICsgbW9udGg7XHJcbiAgICBpZiAoZGF5Lmxlbmd0aCA8IDIpIGRheSA9ICcwJyArIGRheTtcclxuXHJcbiAgICByZXR1cm4gW3llYXIsIG1vbnRoLCBkYXldLmpvaW4oJy0nKTtcclxuICB9XHJcblxyXG4gIGRkTU1ZWVlZKGRhdGUpIHtcclxuICAgIGxldCBkID0gbmV3IERhdGUoZGF0ZSksXHJcbiAgICAgIG1vbnRoID0gJycgKyAoZC5nZXRNb250aCgpICsgMSksXHJcbiAgICAgIGRheSA9ICcnICsgZC5nZXREYXRlKCksXHJcbiAgICAgIHllYXIgPSBkLmdldEZ1bGxZZWFyKCk7XHJcblxyXG4gICAgaWYgKG1vbnRoLmxlbmd0aCA8IDIpIG1vbnRoID0gJzAnICsgbW9udGg7XHJcbiAgICBpZiAoZGF5Lmxlbmd0aCA8IDIpIGRheSA9ICcwJyArIGRheTtcclxuXHJcbiAgICByZXR1cm4gW2RheSwgbW9udGgsIHllYXJdLmpvaW4oJy0nKTtcclxuICB9XHJcbiBcclxuICBGb3JtYXREYXRlKGRhdGUsZm9ybWF0KXtcclxuICAgIGxldCBkID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZSwgZm9ybWF0KTtcclxuICAgIHJldHVybiBkO1xyXG4gIH1cclxuXHJcbiAgZGRNTVlZWVludW0oZGF0ZSkge1xyXG4gICAgbGV0IGQgPSBuZXcgRGF0ZShkYXRlKSxcclxuICAgICAgbW9udGggPSAnJyArIChkLmdldE1vbnRoKCkgKyAxKSxcclxuICAgICAgZGF5ID0gJycgKyBkLmdldERhdGUoKSxcclxuICAgICAgeWVhciA9IGQuZ2V0RnVsbFllYXIoKTtcclxuZGVidWdnZXJcclxuICAgIGlmIChtb250aC5sZW5ndGggPCAyKSBtb250aCA9ICcwJyArIG1vbnRoO1xyXG4gICAgaWYgKGRheS5sZW5ndGggPCAyKSBkYXkgPSAnMCcgKyBkYXk7XHJcblxyXG4gICAgcmV0dXJuIHllYXIrbW9udGgrZGF5O1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0RGF0ZVNDTW9udGhCZWZvcmUoZGF0ZSkge1xyXG4gICAgaWYoZGF0ZSE9dW5kZWZpbmVkICYmIGRhdGUhPVwiXCIpe1xyXG5cclxuICAgIGxldCBkID0gbmV3IERhdGUoZGF0ZSksXHJcbiAgICAgIG1vbnRoID0gJycgKyAoZC5nZXRNb250aCgpKSxcclxuICAgICAgZGF5ID0gJycgKyBkLmdldERhdGUoKSxcclxuICAgICAgeWVhciA9IGQuZ2V0RnVsbFllYXIoKTtcclxuICAgIGQuc2V0RGF0ZShkLmdldERhdGUoKSAtIDMwKTtcclxuXHJcbiAgICBpZiAobW9udGgubGVuZ3RoIDwgMikgbW9udGggPSAnMCcgKyBtb250aDtcclxuICAgIGlmIChkYXkubGVuZ3RoIDwgMikgZGF5ID0gJzAnICsgZGF5O1xyXG5cclxuICAgIHJldHVybiBbeWVhciwgbW9udGgsIGRheV0uam9pbignLScpO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBudW1iZXJGbG9hdChudW1iZXIpe1xyXG4gICAgZGVidWdnZXJcclxuICAgIG51bWJlcj1udW1iZXJ8fDA7XHJcbiAgICByZXR1cm4gcGFyc2VGbG9hdChudW1iZXIpO1xyXG5cclxuICB9XHJcbiAgXHJcbiBkYXRlVmFsaWRhdGlvbihkYXRlLGZvcm1hdGUpe1xyXG4gICBkZWJ1Z2dlcjtcclxuICB2YXIgZGQ7IFxyXG4gIHZhciBtbTsgXHJcbiAgdmFyIHl5OyBcclxuICBkYXRlPWRhdGUucmVwbGFjZSgnLScsJy8nKVxyXG4gIGRhdGU9ZGF0ZS5yZXBsYWNlKCctJywnLycpXHJcbiAgdmFyIHBhcnRzID0gZGF0ZS5zcGxpdCgnLycpO1xyXG4gIFxyXG4gIGlmIChmb3JtYXRlID09ICdkZC9tbS95eScpIHtcclxuICAgIGRkID0gcGFydHNbMF07XHJcbiAgICBtbSA9IHBhcnRzWzFdO1xyXG4gICAgeXkgPSAgcGFydHNbMl07ICBcdCAgXHJcbiAgfSBlbHNlIGlmKGZvcm1hdGUgPT0gJ21tL2RkL3l5Jyl7XHJcbiAgICBtbSA9IHBhcnRzWzBdO1xyXG4gICAgZGQgPSBwYXJ0c1sxXTtcclxuICAgIHl5ID0gIHBhcnRzWzJdOyAgXHJcbiAgfWVsc2UgaWYoZm9ybWF0ZSA9PSAnZGQvTW9uL3l5Jyl7IFxyXG4gICAgZGQgPSBwYXJ0c1swXTtcclxuICAgIG1tID0gcGFydHNbMV07XHJcbiAgICB5eSA9ICBwYXJ0c1syXTsgIFxyXG4gICAgbGV0IGQgPSBuZXcgRGF0ZShkYXRlKVxyXG4gICAgbW0gPSAgKGQuZ2V0TW9udGgoKSkrMVxyXG4gICAgbW0gPW1tLnRvU3RyaW5nKCk7XHJcbiAgfVxyXG4gIFxyXG4gIGlmKG1tLmxlbmd0aCA8IDIpXHJcbiAgbW0gPSAnMCcrbW07XHJcbiAgaWYoZGQubGVuZ3RoIDwgMilcclxuICBkZCA9ICcwJytkZDtcclxuICBpZih5eS5sZW5ndGggPCA0KVxyXG4gIHl5ID0gJzIwJyt5eTtcclxuXHJcbiAgbGV0IG1taW50ID0gcGFyc2VJbnQobW0pO1xyXG5cclxuICBsZXQgZGRpbnQgPSBwYXJzZUludChkZCk7XHJcbiAgaWYoZGRpbnQgPiAzMSlcclxuICAgcmV0dXJuICdpbnZhaWxkJ1xyXG4gIGVsc2UgaWYobW1pbnQgPiAxMilcclxuICAgcmV0dXJuICdpbnZhaWxkJ1xyXG4gZWxzZVxyXG4gIHJldHVybiB5eSttbStkZDtcclxuIH1cclxuXHJcbiAgc3BsaXRUb1R3b0RlY2ltYWwoaW5wdXR2YWwpIHtcclxuICAgIGlmIChpbnB1dHZhbCAmJiBpbnB1dHZhbCAhPSBJbmZpbml0eSkge1xyXG4gICAgICByZXR1cm4gaW5wdXR2YWwudG9TdHJpbmcoKS50b1N0cmluZygpLm1hdGNoKC9eLT9cXGQrKD86XFwuXFxkezAsMn0pPy8pWzBdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3BsaXRUb1RocmVlRGVjaW1hbChpbnB1dHZhbCkge1xyXG4gICAgaWYgKGlucHV0dmFsICYmIGlucHV0dmFsICE9IEluZmluaXR5KSB7XHJcbiAgICAgIHJldHVybiBpbnB1dHZhbC50b1N0cmluZygpLnRvU3RyaW5nKCkubWF0Y2goL14tP1xcZCsoPzpcXC5cXGR7MCwzfSk/LylbMF07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgcm91bmR2YWwoaW5wdXR2YWwpIHtcclxuICAgIGlmIChpbnB1dHZhbCkge1xyXG4gICAgICByZXR1cm4gTWF0aC5yb3VuZChpbnB1dHZhbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByb3VuZFVwKG51bSwgcHJlY2lzaW9uKSB7XHJcbiAgICBwcmVjaXNpb24gPSBNYXRoLnBvdygxMCwgcHJlY2lzaW9uKVxyXG4gICAgcmV0dXJuIE1hdGguY2VpbChudW0gKiBwcmVjaXNpb24pIC8gcHJlY2lzaW9uXHJcbiAgfVxyXG5cclxuICBnZXRTaWduZWRVcmwoczNkZXRhaWxzLGRvY19ubWUsYnVja2V0KXtcclxuICAgIGRlYnVnZ2VyXHJcbiAgICBsZXQgdXJsUGFyYW1zID0ge1xyXG4gICAgICBCdWNrZXQ6IHMzZGV0YWlsc1tcImRvY2J1Y2tldFwiXSxcclxuICAgICAgS2V5OiBzM2RldGFpbHNbXCJkb2Nmb2xkZXJcIl0rXCIvXCIrZG9jX25tZVxyXG4gICAgfTtcclxuICAgIGJ1Y2tldC5nZXRTaWduZWRVcmwoXCJnZXRPYmplY3RcIiwgdXJsUGFyYW1zLCBmdW5jdGlvbiggZXJyLCB1cmwgKSB7XHJcbiAgICAgIHJldHVybiB1cmw7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbnVtYmVydG9maXhlZChpbnB1dHZhbCxkZWNpbWFsKSB7XHJcbiAgICBpZiAoaW5wdXR2YWwpIHtcclxuICAgICAgICBpbnB1dHZhbD1pbnB1dHZhbC50b0ZpeGVkKGRlY2ltYWwpO1xyXG4gICAgICByZXR1cm4gaW5wdXR2YWw7XHJcbiAgICB9ZWxzZXtcclxuICAgIHJldHVybiBpbnB1dHZhbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRydW5jYXRlKG51bWJlciwgaW5kZXggPSAyKSB7XHJcbiAgXHQvLyBjdXR0aW5nIHRoZSBudW1iZXJcclxuICAgIHJldHVybiArbnVtYmVyLnRvU3RyaW5nKCkuc2xpY2UoMCwgKG51bWJlci50b1N0cmluZygpLmluZGV4T2YoXCIuXCIpKSArIChpbmRleCArIDEpKTtcclxufVxyXG5cclxuICAgZmxvb3JGaWd1cmUoZmlndXJlLCBkZWNpbWFscykge1xyXG4gICAgbGV0IGE7XHJcbiAgICBpZihmaWd1cmUhPW51bGwgJiYgZmlndXJlIT11bmRlZmluZWQgKXtcclxuICAgIGlmIChkZWNpbWFscyA9PSAtMSlcclxuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihmaWd1cmUpO1xyXG4gICAgaWYgKGRlY2ltYWxzID09IDApXHJcbiAgICAgICAgcmV0dXJuIE1hdGgudHJ1bmMoZmlndXJlKTtcclxuICAgIGlmICghZGVjaW1hbHMpIGRlY2ltYWxzID0gMjtcclxuICAgIGxldCBkID0gTWF0aC5wb3coMTAsIGRlY2ltYWxzKTtcclxuXHJcbiAgICB2YXIgc3RyID0gZmlndXJlLnRvU3RyaW5nKCk7IFxyXG4gICAgYT0gcGFyc2VGbG9hdChzdHIpOyBcclxuICAgIGRlY2ltYWxzID0gcGFyc2VJbnQoZGVjaW1hbHMpO1xyXG4gICAgaWYoc3RyLmluZGV4T2YoXCIuXCIpICE9IC0xKXtcclxuICAgICAgICB2YXIgZmN0ciA7XHJcbiBkZWJ1Z2dlclxyXG4gICAgICAgIGlmICgoKGZpZ3VyZS50b1N0cmluZygpLnNwbGl0KFwiLlwiKVsxXSkubGVuZ3RoKSA9PSAyKSB7XHJcbiAgICAgICAgICAgIGZjdHIgPSBmaWd1cmUudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMV07XHJcbiAgICAgICAgfSAgICAgICAgXHJcbiAgICAgICAgaWYgKCgoZmlndXJlLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzFdKS5sZW5ndGgpID09IDEpIHtcclxuICAgICAgICAgICAgZmN0ciA9IGZpZ3VyZS50b1N0cmluZygpLnNwbGl0KFwiLlwiKVsxXS5jb25jYXQoXCIwXCIpO1xyXG4gICAgICAgIH0gICAgICAgIFxyXG4gICAgXHJcbiAgICAgICAgaWYgKCgoZmlndXJlLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzFdKS5sZW5ndGgpID4gMikge1xyXG4gICAgICAgICAgICBmY3RyID0gZmlndXJlLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzFdLnN1YnN0cmluZygwLGRlY2ltYWxzKTtcclxuICAgICAgICB9ICAgICAgICBcclxuICAgIFxyXG4gICAgICAgIGEgPSBNYXRoLnRydW5jKGZpZ3VyZSkgKyBcIi5cIiArIGZjdHI7XHJcbiAgICB9ICBcclxuICAgIFxyXG59ZWxzZXtcclxuICAgIGE9ZmlndXJlO1xyXG59XHJcbiAgICByZXR1cm4gYTtcclxufVxyXG5cclxuICBzY3JvbGxUb0RpdihlbCkge1xyXG4gICAgbGV0IHggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbCk7XHJcbiAgICByZXR1cm4geC5zY3JvbGxJbnRvVmlldygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SXAoKSA6IGFueSB7XHJcbiAgICBcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFwiaHR0cDovL2lwaW5mby5pby9qc29uL1wiKVxyXG4gICAgICAucGlwZShtYXAoKHJlczogYW55KSA9PiByZXMpKVxyXG4gIH0gXHJcbiAgXHJcbiAgLy8gZ2V0SXBBZGRycmVzcygpIHtcclxuXHJcbiAgLy8gICByZXR1cm4gdGhpcy5uZXdIdHRwQ2xpZW50LmdldChcIi8vYXBpLmlwaWZ5Lm9yZy8/Zm9ybWF0PWpzb25cIikudG9Qcm9taXNlKClcclxuICAvLyAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UpO1xyXG4gIC8vIH1cclxuXHJcbiAgZ2V0SXBBZGRycmVzcygpIHtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5uZXdIdHRwQ2xpZW50LmdldChcIi8vYXBpLmlwaWZ5Lm9yZy8/Zm9ybWF0PWpzb25cIikudG9Qcm9taXNlKClcclxuICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0SXBOZXcoKSA6IFByb21pc2U8YW55PiB7XHJcbiAgICBsZXQgaXA6IGFueSA9ICcnXHJcbiAgICBhd2FpdCB0aGlzLmdldElwQWRkcnJlc3MoKS50aGVuKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhyZXMpXHJcbiAgICAgIGlwID0gcmVzLmlwXHJcbiAgICB9KTtcclxuICAgIGxldCBpcFN0YWNrQWNjZXNzS2V5ID0gXCJiMzk5YmRiMzA2YzA0MDIwOGU1MzFmYjk3N2UwY2UzYVwiXHJcbiAgICAvLyBsZXQgdXJsID0gYGh0dHBzOi8vYXBpLmlwc3RhY2suY29tLyR7aXB9P2FjY2Vzc19rZXk9JHtpcFN0YWNrQWNjZXNzS2V5fWBcclxuICAgIGxldCB1cmwgPSBgaHR0cHM6Ly9hcGkuaXBnZW9sb2NhdGlvbi5pby9pcGdlbz9hcGlLZXk9JHtpcFN0YWNrQWNjZXNzS2V5fSZpcD0ke2lwfWBcclxuICAgIHJldHVybiB0aGlzLm5ld0h0dHBDbGllbnQuZ2V0KHVybClcclxuICAgIC50b1Byb21pc2UoKVxyXG4gICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXR1c2VySW5mbygpIDogUHJvbWlzZTxhbnk+IHtcclxuICAgIGxldCBpcDogYW55ID0gJydcclxuICAgIGF3YWl0IHRoaXMuZ2V0SXBBZGRycmVzcygpLnRoZW4oKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKHJlcylcclxuICAgICAgaXAgPSByZXMuaXBcclxuICAgIH0pO1xyXG4gICAgbGV0IGlwU3RhY2tBY2Nlc3NLZXkgPSBcImIzOTliZGIzMDZjMDQwMjA4ZTUzMWZiOTc3ZTBjZTNhXCJcclxuICAgIC8vIGxldCB1cmwgPSBgaHR0cHM6Ly9hcGkuaXBzdGFjay5jb20vJHtpcH0/YWNjZXNzX2tleT0ke2lwU3RhY2tBY2Nlc3NLZXl9YFxyXG4gICAgbGV0IHVybCA9IGBodHRwczovL2FwaS5pcGdlb2xvY2F0aW9uLmlvL3VzZXItYWdlbnQ/YXBpS2V5PSR7aXBTdGFja0FjY2Vzc0tleX1gXHJcbiAgICByZXR1cm4gdGhpcy5uZXdIdHRwQ2xpZW50LmdldCh1cmwpXHJcbiAgICAudG9Qcm9taXNlKClcclxuICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIGFzeW5jIGdldElwTmV3KCkgOiBQcm9taXNlPGFueT4ge1xyXG4gIC8vICAgbGV0IGlwOiBhbnkgPSAnJ1xyXG4gIC8vICAgYXdhaXQgdGhpcy5nZXRJcEFkZHJyZXNzKCkudGhlbigocmVzOiBhbnkpID0+IHtcclxuICAvLyAgICAgY29uc29sZS5sb2cocmVzKVxyXG4gIC8vICAgICBpcCA9IHJlcy5pcFxyXG4gIC8vICAgfSk7XHJcbiAgICBcclxuICAvLyAgIGNvbnNvbGUubG9nKGlwLCAnMTgwJylcclxuICAvLyAgIGxldCBpcFN0YWNrQWNjZXNzS2V5ID0gXCJiNjljY2QwZGY5M2JiMGQxZWY2YjZlNTdiMTUzZjJmMlwiXHJcbiAgLy8gICBsZXQgdXJsID0gYGh0dHA6Ly9hcGkuaXBzdGFjay5jb20vJHtpcH0/YWNjZXNzX2tleT0ke2lwU3RhY2tBY2Nlc3NLZXl9YFxyXG4gIC8vICAgcmV0dXJuIHRoaXMubmV3SHR0cENsaWVudC5nZXQodXJsKVxyXG4gIC8vICAgLnRvUHJvbWlzZSgpXHJcbiAgLy8gICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlKTtcclxuICAvLyB9XHJcblxyXG4gIFxyXG5cclxuICBwYWdlQmNrID0gKCkgPT4gd2luZG93Lmhpc3RvcnkuYmFjaygpO1xyXG5cclxuICBnZXRCcm93c2VySW5mbygpIHtcclxuICAgIGxldCBuVmVyID0gbmF2aWdhdG9yLmFwcFZlcnNpb247XHJcbiAgICBsZXQgbkFndCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7XHJcbiAgICBsZXQgYnJvd3Nlck5hbWUgPSBuYXZpZ2F0b3IuYXBwTmFtZTtcclxuICAgIGxldCBmdWxsVmVyc2lvbiA9ICcnICsgcGFyc2VGbG9hdChuYXZpZ2F0b3IuYXBwVmVyc2lvbik7XHJcbiAgICBsZXQgbWFqb3JWZXJzaW9uID0gcGFyc2VJbnQobmF2aWdhdG9yLmFwcFZlcnNpb24sIDEwKTtcclxuICAgIGxldCBuYW1lT2Zmc2V0LCB2ZXJPZmZzZXQsIGl4O1xyXG5cclxuICAgIC8vIEluIE9wZXJhIDE1KywgdGhlIHRydWUgdmVyc2lvbiBpcyBhZnRlciBcIk9QUi9cIiBcclxuICAgIGlmICgodmVyT2Zmc2V0ID0gbkFndC5pbmRleE9mKFwiT1BSL1wiKSkgIT0gLTEpIHtcclxuICAgICAgYnJvd3Nlck5hbWUgPSBcIk9wZXJhXCI7XHJcbiAgICAgIGZ1bGxWZXJzaW9uID0gbkFndC5zdWJzdHJpbmcodmVyT2Zmc2V0ICsgNCk7XHJcbiAgICB9XHJcbiAgICAvLyBJbiBvbGRlciBPcGVyYSwgdGhlIHRydWUgdmVyc2lvbiBpcyBhZnRlciBcIk9wZXJhXCIgb3IgYWZ0ZXIgXCJWZXJzaW9uXCJcclxuICAgIGVsc2UgaWYgKCh2ZXJPZmZzZXQgPSBuQWd0LmluZGV4T2YoXCJPcGVyYVwiKSkgIT0gLTEpIHtcclxuICAgICAgYnJvd3Nlck5hbWUgPSBcIk9wZXJhXCI7XHJcbiAgICAgIGZ1bGxWZXJzaW9uID0gbkFndC5zdWJzdHJpbmcodmVyT2Zmc2V0ICsgNik7XHJcbiAgICAgIGlmICgodmVyT2Zmc2V0ID0gbkFndC5pbmRleE9mKFwiVmVyc2lvblwiKSkgIT0gLTEpXHJcbiAgICAgICAgZnVsbFZlcnNpb24gPSBuQWd0LnN1YnN0cmluZyh2ZXJPZmZzZXQgKyA4KTtcclxuICAgIH1cclxuICAgIC8vIEluIE1TSUUsIHRoZSB0cnVlIHZlcnNpb24gaXMgYWZ0ZXIgXCJNU0lFXCIgaW4gdXNlckFnZW50XHJcbiAgICBlbHNlIGlmICgodmVyT2Zmc2V0ID0gbkFndC5pbmRleE9mKFwiTVNJRVwiKSkgIT0gLTEpIHtcclxuICAgICAgYnJvd3Nlck5hbWUgPSBcIk1pY3Jvc29mdCBJbnRlcm5ldCBFeHBsb3JlclwiO1xyXG4gICAgICBmdWxsVmVyc2lvbiA9IG5BZ3Quc3Vic3RyaW5nKHZlck9mZnNldCArIDUpO1xyXG4gICAgfVxyXG4gICAgLy8gSW4gQ2hyb21lLCB0aGUgdHJ1ZSB2ZXJzaW9uIGlzIGFmdGVyIFwiQ2hyb21lXCIgXHJcbiAgICBlbHNlIGlmICgodmVyT2Zmc2V0ID0gbkFndC5pbmRleE9mKFwiQ2hyb21lXCIpKSAhPSAtMSkge1xyXG4gICAgICBicm93c2VyTmFtZSA9IFwiQ2hyb21lXCI7XHJcbiAgICAgIGZ1bGxWZXJzaW9uID0gbkFndC5zdWJzdHJpbmcodmVyT2Zmc2V0ICsgNyk7XHJcbiAgICB9XHJcbiAgICAvLyBJbiBTYWZhcmksIHRoZSB0cnVlIHZlcnNpb24gaXMgYWZ0ZXIgXCJTYWZhcmlcIiBvciBhZnRlciBcIlZlcnNpb25cIiBcclxuICAgIGVsc2UgaWYgKCh2ZXJPZmZzZXQgPSBuQWd0LmluZGV4T2YoXCJTYWZhcmlcIikpICE9IC0xKSB7XHJcbiAgICAgIGJyb3dzZXJOYW1lID0gXCJTYWZhcmlcIjtcclxuICAgICAgZnVsbFZlcnNpb24gPSBuQWd0LnN1YnN0cmluZyh2ZXJPZmZzZXQgKyA3KTtcclxuICAgICAgaWYgKCh2ZXJPZmZzZXQgPSBuQWd0LmluZGV4T2YoXCJWZXJzaW9uXCIpKSAhPSAtMSlcclxuICAgICAgICBmdWxsVmVyc2lvbiA9IG5BZ3Quc3Vic3RyaW5nKHZlck9mZnNldCArIDgpO1xyXG4gICAgfVxyXG4gICAgLy8gSW4gRmlyZWZveCwgdGhlIHRydWUgdmVyc2lvbiBpcyBhZnRlciBcIkZpcmVmb3hcIiBcclxuICAgIGVsc2UgaWYgKCh2ZXJPZmZzZXQgPSBuQWd0LmluZGV4T2YoXCJGaXJlZm94XCIpKSAhPSAtMSkge1xyXG4gICAgICBicm93c2VyTmFtZSA9IFwiRmlyZWZveFwiO1xyXG4gICAgICBmdWxsVmVyc2lvbiA9IG5BZ3Quc3Vic3RyaW5nKHZlck9mZnNldCArIDgpO1xyXG4gICAgfVxyXG4gICAgLy8gSW4gbW9zdCBvdGhlciBicm93c2VycywgXCJuYW1lL3ZlcnNpb25cIiBpcyBhdCB0aGUgZW5kIG9mIHVzZXJBZ2VudCBcclxuICAgIGVsc2UgaWYgKChuYW1lT2Zmc2V0ID0gbkFndC5sYXN0SW5kZXhPZignICcpICsgMSkgPFxyXG4gICAgICAodmVyT2Zmc2V0ID0gbkFndC5sYXN0SW5kZXhPZignLycpKSkge1xyXG4gICAgICBicm93c2VyTmFtZSA9IG5BZ3Quc3Vic3RyaW5nKG5hbWVPZmZzZXQsIHZlck9mZnNldCk7XHJcbiAgICAgIGZ1bGxWZXJzaW9uID0gbkFndC5zdWJzdHJpbmcodmVyT2Zmc2V0ICsgMSk7XHJcbiAgICAgIGlmIChicm93c2VyTmFtZS50b0xvd2VyQ2FzZSgpID09IGJyb3dzZXJOYW1lLnRvVXBwZXJDYXNlKCkpIHtcclxuICAgICAgICBicm93c2VyTmFtZSA9IG5hdmlnYXRvci5hcHBOYW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyB0cmltIHRoZSBmdWxsVmVyc2lvbiBzdHJpbmcgYXQgc2VtaWNvbG9uL3NwYWNlIGlmIHByZXNlbnRcclxuICAgIGlmICgoaXggPSBmdWxsVmVyc2lvbi5pbmRleE9mKFwiO1wiKSkgIT0gLTEpXHJcbiAgICAgIGZ1bGxWZXJzaW9uID0gZnVsbFZlcnNpb24uc3Vic3RyaW5nKDAsIGl4KTtcclxuICAgIGlmICgoaXggPSBmdWxsVmVyc2lvbi5pbmRleE9mKFwiIFwiKSkgIT0gLTEpXHJcbiAgICAgIGZ1bGxWZXJzaW9uID0gZnVsbFZlcnNpb24uc3Vic3RyaW5nKDAsIGl4KTtcclxuXHJcbiAgICBtYWpvclZlcnNpb24gPSBwYXJzZUludCgnJyArIGZ1bGxWZXJzaW9uLCAxMCk7XHJcbiAgICBpZiAoaXNOYU4obWFqb3JWZXJzaW9uKSkge1xyXG4gICAgICBmdWxsVmVyc2lvbiA9ICcnICsgcGFyc2VGbG9hdChuYXZpZ2F0b3IuYXBwVmVyc2lvbik7XHJcbiAgICAgIG1ham9yVmVyc2lvbiA9IHBhcnNlSW50KG5hdmlnYXRvci5hcHBWZXJzaW9uLCAxMCk7XHJcbiAgICB9XHJcbiAgICBsZXQgT2JqID0ge1xyXG4gICAgICAnYnJvd3Nlck5hbWUnOiBicm93c2VyTmFtZSxcclxuICAgICAgJ3ZlcnNpb24nOiBmdWxsVmVyc2lvbixcclxuICAgICAgJ21ham9yVmVyc2lvbic6IG1ham9yVmVyc2lvbixcclxuICAgICAgJ2FwcE5hbWUnOiBuYXZpZ2F0b3IuYXBwTmFtZSxcclxuICAgICAgJ3VzZXJBZ2VudCc6IG5hdmlnYXRvci51c2VyQWdlbnRcclxuICAgIH1cclxuICAgIHJldHVybiBPYmo7XHJcbiAgfVxyXG5cclxuICBlZGl0b3JDb25maWcgPSB7XHJcbiAgICBcImVkaXRhYmxlXCI6IHRydWUsXHJcbiAgICBcInNwZWxsY2hlY2tcIjogdHJ1ZSxcclxuICAgIFwiaGVpZ2h0XCI6IFwiMTEwcHhcIixcclxuICAgIFwibWluSGVpZ2h0XCI6IFwiMTEwcHhcIixcclxuICAgIFwid2lkdGhcIjogXCJhdXRvXCIsXHJcbiAgICBcIm1pbldpZHRoXCI6IFwiMFwiLFxyXG4gICAgXCJ0cmFuc2xhdGVcIjogXCJ5ZXNcIixcclxuICAgIFwiZW5hYmxlVG9vbGJhclwiOiB0cnVlLFxyXG4gICAgXCJzaG93VG9vbGJhclwiOiB0cnVlLFxyXG4gICAgXCJwbGFjZWhvbGRlclwiOiBcIkVudGVyIHRleHQgaGVyZS4uLlwiLFxyXG4gICAgXCJpbWFnZUVuZFBvaW50XCI6IFwiXCIsXHJcbiAgICBcInRvb2xiYXJcIjogW1xyXG4gICAgICBbXCJib2xkXCIsIFwiaXRhbGljXCIsIFwidW5kZXJsaW5lXCIsIFwic3RyaWtlVGhyb3VnaFwiLCBcInN1cGVyc2NyaXB0XCIsIFwic3Vic2NyaXB0XCJdLFxyXG4gICAgICBbXCJmb250TmFtZVwiLCBcImZvbnRTaXplXCIsIFwiY29sb3JcIl0sXHJcbiAgICAgIFtcImp1c3RpZnlMZWZ0XCIsIFwianVzdGlmeUNlbnRlclwiLCBcImp1c3RpZnlSaWdodFwiLCBcImp1c3RpZnlGdWxsXCIsIFwiaW5kZW50XCIsIFwib3V0ZGVudFwiXSxcclxuICAgICAgW1wiY3V0XCIsIFwiY29weVwiLCBcImRlbGV0ZVwiLCBcInJlbW92ZUZvcm1hdFwiLCBcInVuZG9cIiwgXCJyZWRvXCJdLFxyXG4gICAgICBbXCJwYXJhZ3JhcGhcIiwgXCJibG9ja3F1b3RlXCIsIFwicmVtb3ZlQmxvY2txdW90ZVwiLCBcImhvcml6b250YWxMaW5lXCIsIFwib3JkZXJlZExpc3RcIiwgXCJ1bm9yZGVyZWRMaXN0XCJdLFxyXG4gICAgICBbXCJsaW5rXCIsIFwidW5saW5rXCIsIFwiaW1hZ2VcIiwgXCJ2aWRlb1wiXVxyXG4gICAgXVxyXG4gIH1cclxuXHJcbiAgZm9ybWF0ZVN0cihzdHIpIHtcclxuICAgIHN0ciA9IHN0ci50cmltKCk7XHJcbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvWyAsXSsvZywgXCIsXCIpO1xyXG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL1xcbi9nLCBcIixcIik7XHJcbiAgICByZXR1cm4gc3RyO1xyXG4gIH1cclxuXHJcbiAgc3RhcnRSRklEU2NhbihkZXZpY2VJZCwgZm9ybU5tZSkge1xyXG4gICAgbGV0IG1kbGsgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtZGxLZXknKSk7XHJcbiAgICBsZXQgY1VybCA9IHRoaXMucm91dGVyLnVybDtcclxuICAgIHRoaXMuaGVhZGVyID0ge1xyXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAnbWV0aG9kJzogJ3N0YXJ0QmFyQ29kZVJlYWRpbmcnLFxyXG4gICAgICAnc291cmNlJzogJ3FzJ1xyXG4gICAgfTtcclxuICAgIC8vICdjbGllbnRrZXknOiBDb29raWUuZ2V0KCdfY2snKSxcclxuICAgIC8vICdsb2dpbmlkJzogQ29va2llLmdldCgnX2xvZ2lkJyksXHJcbiAgICAvLyAnbW9kdWxla2V5JzogbWRsa1tjVXJsLnNwbGl0KCcvJylbMV1dLFxyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSBmb3JtTm1lO1xyXG4gICAgcmVxT2JqWydkZXZpY2VJZCddID0gZGV2aWNlSWQ7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9e1xyXG4gICAgICBtZXRob2Q6ICdzdGFydEJhckNvZGVSZWFkaW5nJ1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2FkKHJlcU9iaiwgb3B0aW9ucywgJ21hcmtldGluZy9iYXJDb2RlUmVhZGVyJykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ1NjYW4gU3RhcnRlZC4uLicpO1xyXG4gICAgICAgIHJldHVybiByZXNwb25zZS5zY2FuX2lkbjtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBTdG9wUkZJRFNjYW4oc2Nhbl9pZG4sIGZvcm1ObWUpIHtcclxuICAgIGxldCBtZGxrID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbWRsS2V5JykpO1xyXG4gICAgbGV0IGNVcmwgPSB0aGlzLnJvdXRlci51cmw7XHJcbiAgICB0aGlzLmhlYWRlciA9IHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgJ21ldGhvZCc6ICdzdG9wQmFyQ29kZVJlYWRpbmcnLFxyXG4gICAgICAnc291cmNlJzogJ3FzJ1xyXG4gICAgfTtcclxuICAgIC8vICdjbGllbnRrZXknOiBDb29raWUuZ2V0KCdfY2snKSxcclxuICAgIC8vICdtb2R1bGVrZXknOiBtZGxrW2NVcmwuc3BsaXQoJy8nKVsxXV0sXHJcbiAgICAvLyAnbG9naW5pZCc6IENvb2tpZS5nZXQoJ19sb2dpZCcpLFxyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSBmb3JtTm1lO1xyXG4gICAgcmVxT2JqWydzY2FuSWQnXSA9IHNjYW5faWRuO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogJ3N0b3BCYXJDb2RlUmVhZGluZydcclxuICAgIH1cclxuICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIHRoaXMubG9hZChyZXFPYmosIG9wdGlvbnMsICdtYXJrZXRpbmcvYmFyQ29kZVJlYWRlcicpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKCdTY2FuIFN0b3BwZWQuLi4nKTtcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2Uuc2Nhbl9pZG47XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGxvYWQocmVxT2JqLCBvcHRpb25zOiBhbnksIHVybCkge1xyXG4gICAgLy8gY29uc29sZS5sb2coaGVhZGVycyk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5nbGJFbnYuYmFzZVVybCArIHVybCwgSlNPTi5zdHJpbmdpZnkocmVxT2JqKSwgb3B0aW9ucz17XHJcbiAgICAgIHBhcmFtczogb3B0aW9ucyxcclxuICAgIH0pXHJcbiAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlKS5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2FkaUZpbGUocmVxT2JqLCBvcHRpb25zOiBhbnksIHVybCkge1xyXG4gICAgLy8gbGV0IG9wdGlvbnM6IGFueSA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyhoZWFkZXIpIDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmdsYkVudi5iYXNlVXJsICsgdXJsLCBKU09OLnN0cmluZ2lmeShyZXFPYmopLCBvcHRpb25zPXtcclxuICAgICAgcGFyYW1zOiBvcHRpb25zXHJcbiAgICB9KVxyXG4gICAgICAudG9Qcm9taXNlKClcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZSkuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgXHJcbiAgIG51bWJlcldpdGhDb21tYXMoeCkge1xyXG4gICAgdmFyIHBhcnRzID0geC50b1N0cmluZygpLnNwbGl0KFwiLlwiKTtcclxuICAgIHBhcnRzWzBdID0gcGFydHNbMF0ucmVwbGFjZSgvXFxCKD89KFxcZHszfSkrKD8hXFxkKSkvZywgXCIsXCIpO1xyXG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oXCIuXCIpO1xyXG4gICB9XHJcblxyXG4gICAgLy8gbmV3IGZ1bmN0aW9uIGZvciBpbmRpYW4gYW5kIGVuZ2xpc2ggZm9ybWF0IGNvbW1hc1xyXG4gIG51bWJlcldpdGhDb21tYXNGb3JtYXQobnVtKSB7XHJcbiAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2NvbW1hRm9ybWF0JykgPT0gJ2VuZycpIHtcclxuICAgICAgdmFyIHBhcnRzID0gbnVtLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpO1xyXG4gICAgICBwYXJ0c1swXSA9IHBhcnRzWzBdLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLFwiKTtcclxuICAgICAgcmV0dXJuIHBhcnRzLmpvaW4oXCIuXCIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHZhciBwYXJ0cyA9IG51bS50b1N0cmluZygpLnNwbGl0KFwiLlwiKTtcclxuICAgICAgbGV0IHggPSBwYXJ0c1swXTtcclxuICAgICAgeCA9IHgucmVwbGFjZUFsbCgnLCcsICcnKTsgLy9yZW1vdmluZyBwcmUgZXhpc3RpbmcgY29tbWFzIGlmIGFueVxyXG4gICAgICB2YXIgbGFzdFRocmVlID0geC5zdWJzdHJpbmcoeC5sZW5ndGgtMyk7XHJcbiAgICAgIHZhciBvdGhlck51bWJlcnMgPSB4LnN1YnN0cmluZygwLHgubGVuZ3RoLTMpO1xyXG4gICAgICBpZihvdGhlck51bWJlcnMgIT0gJycpXHJcbiAgICAgICAgICBsYXN0VGhyZWUgPSAnLCcgKyBsYXN0VGhyZWU7XHJcbiAgICAgIHZhciByZXMgPSBvdGhlck51bWJlcnMucmVwbGFjZSgvXFxCKD89KFxcZHsyfSkrKD8hXFxkKSkvZywgXCIsXCIpICsgbGFzdFRocmVlO1xyXG4gICAgICBwYXJ0c1swXSA9IHJlcztcclxuICAgICAgcmV0dXJuIHBhcnRzLmpvaW4oXCIuXCIpO1xyXG4gICAgfVxyXG59XHJcblxyXG4gIGluV29yZHNJTlIobnVtKSB7XHJcbiAgICBpZiAoKG51bSA9IG51bS50b1N0cmluZygpKS5sZW5ndGggPiA5KSByZXR1cm4gJ292ZXJmbG93JztcclxuICAgIGxldCBuID0gW107XHJcbiAgICBuID0gKCcwMDAwMDAwMDAnICsgbnVtKS5zdWJzdHIoLTkpLm1hdGNoKC9eKFxcZHsyfSkoXFxkezJ9KShcXGR7Mn0pKFxcZHsxfSkoXFxkezJ9KSQvKTtcclxuICAgIGlmICghbikgcmV0dXJuOyB2YXIgc3RyID0gJyc7XHJcbiAgICBzdHIgKz0gKG5bMV0gIT0gMCkgPyAodGhpcy5hW051bWJlcihuWzFdKV0gfHwgdGhpcy5iW25bMV1bMF1dICsgJyAnICsgdGhpcy5hW25bMV1bMV1dKSArICdjcm9yZSAnIDogJyc7XHJcbiAgICBzdHIgKz0gKG5bMl0gIT0gMCkgPyAodGhpcy5hW051bWJlcihuWzJdKV0gfHwgdGhpcy5iW25bMl1bMF1dICsgJyAnICsgdGhpcy5hW25bMl1bMV1dKSArICdsYWtoICcgOiAnJztcclxuICAgIHN0ciArPSAoblszXSAhPSAwKSA/ICh0aGlzLmFbTnVtYmVyKG5bM10pXSB8fCB0aGlzLmJbblszXVswXV0gKyAnICcgKyB0aGlzLmFbblszXVsxXV0pICsgJ3Rob3VzYW5kICcgOiAnJztcclxuICAgIHN0ciArPSAobls0XSAhPSAwKSA/ICh0aGlzLmFbTnVtYmVyKG5bNF0pXSB8fCB0aGlzLmJbbls0XVswXV0gKyAnICcgKyB0aGlzLmFbbls0XVsxXV0pICsgJ2h1bmRyZWQgJyA6ICcnO1xyXG4gICAgc3RyICs9IChuWzVdICE9IDApID8gKChzdHIgIT0gJycpID8gJ2FuZCAnIDogJycpICsgKHRoaXMuYVtOdW1iZXIobls1XSldIHx8IHRoaXMuYltuWzVdWzBdXSArICcgJyArIHRoaXMuYVtuWzVdWzFdXSkgKyAnb25seSAnIDogJyc7XHJcbiAgICBjb25zb2xlLmxvZyhzdHIpO1xyXG4gICAgcmV0dXJuIHN0cjtcclxuICB9XHJcblxyXG5cclxuICByYW5kb21udW1iZXIoKSB7XHJcbiAgICBsZXQgbnVtID0gTWF0aC5mbG9vcigoTWF0aC5yYW5kb20oKSAqIDEwMDAwKSArIDEwMCk7XHJcbiAgICByZXR1cm4gbnVtO1xyXG4gIH1cclxuXHJcbiAgdGFnYm94U2V0dGluZ3M6IHtcclxuICAgIGVuYWJsZUZpbHRlclNlbGVjdEFsbDogZmFsc2UsXHJcbiAgICBzaW5nbGVTZWxlY3Rpb246IGZhbHNlLFxyXG4gICAgdGV4dDogXCJTZWxlY3Qgc3RhdHVzXCIsXHJcbiAgICBzZWxlY3RBbGxUZXh0OiAnU2VsZWN0IEFsbCcsXHJcbiAgICB1blNlbGVjdEFsbFRleHQ6ICdVblNlbGVjdCBBbGwnLFxyXG4gICAgZW5hYmxlU2VhcmNoRmlsdGVyOiB0cnVlLFxyXG4gICAgY2xhc3NlczogXCJteWNsYXNzIGN1c3RvbS1jbGFzc1wiXHJcbiAgfVxyXG5cclxuICAgcmVtb3ZlRW1wdHkob2JqKSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKVxyXG4gICAgICAuZmlsdGVyKGZ1bmN0aW9uIChrKSB7XHJcbiAgICAgICAgcmV0dXJuIG9ialtrXXx8JycgIT0gJyc7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgaykge1xyXG4gICAgICAgIGFjY1trXSA9IG9ialtrXTtcclxuICAgICAgICByZXR1cm4gYWNjO1xyXG4gICAgICB9LCB7fSk7XHJcbiAgfVxyXG5cclxuICBjb25maWcgPSB7XHJcbiAgICBlZGl0YWJsZTogdHJ1ZSxcclxuICAgIHNwZWxsY2hlY2s6IHRydWUsXHJcbiAgICBoZWlnaHQ6ICcxNXJlbScsXHJcbiAgICBtaW5IZWlnaHQ6ICc1cmVtJyxcclxuICAgIHBsYWNlaG9sZGVyOiAnRW50ZXIgdGV4dCBoZXJlLi4uJyxcclxuICAgIHRyYW5zbGF0ZTogJ25vJyxcclxuICAgIGRlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3I6ICdwJyxcclxuICAgIGRlZmF1bHRGb250TmFtZTogJ0FyaWFsJyxcclxuICAgIGN1c3RvbUNsYXNzZXM6IFtcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6IFwicXVvdGVcIixcclxuICAgICAgICBjbGFzczogXCJxdW90ZVwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ3JlZFRleHQnLFxyXG4gICAgICAgIGNsYXNzOiAncmVkVGV4dCdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6IFwidGl0bGVUZXh0XCIsXHJcbiAgICAgICAgY2xhc3M6IFwidGl0bGVUZXh0XCIsXHJcbiAgICAgICAgdGFnOiBcImgxXCIsXHJcbiAgICAgIH0sXHJcbiAgICBdXHJcbiAgfTtcclxuXHJcbn0iXX0=
|
|
@@ -94,6 +94,19 @@ class CommanServiceService {
|
|
|
94
94
|
this.cDate = new Date();
|
|
95
95
|
this.a = ['', 'one ', 'two ', 'three ', 'four ', 'five ', 'six ', 'seven ', 'eight ', 'nine ', 'ten ', 'eleven ', 'twelve ', 'thirteen ', 'fourteen ', 'fifteen ', 'sixteen ', 'seventeen ', 'eighteen ', 'nineteen '];
|
|
96
96
|
this.b = ['', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'];
|
|
97
|
+
// async getIpNew() : Promise<any> {
|
|
98
|
+
// let ip: any = ''
|
|
99
|
+
// await this.getIpAddrress().then((res: any) => {
|
|
100
|
+
// console.log(res)
|
|
101
|
+
// ip = res.ip
|
|
102
|
+
// });
|
|
103
|
+
// console.log(ip, '180')
|
|
104
|
+
// let ipStackAccessKey = "b69ccd0df93bb0d1ef6b6e57b153f2f2"
|
|
105
|
+
// let url = `http://api.ipstack.com/${ip}?access_key=${ipStackAccessKey}`
|
|
106
|
+
// return this.newHttpClient.get(url)
|
|
107
|
+
// .toPromise()
|
|
108
|
+
// .then((response) => response);
|
|
109
|
+
// }
|
|
97
110
|
this.pageBck = () => window.history.back();
|
|
98
111
|
this.editorConfig = {
|
|
99
112
|
"editable": true,
|
|
@@ -555,6 +568,10 @@ class CommanServiceService {
|
|
|
555
568
|
return this.http.get("http://ipinfo.io/json/")
|
|
556
569
|
.pipe(map((res) => res));
|
|
557
570
|
}
|
|
571
|
+
// getIpAddrress() {
|
|
572
|
+
// return this.newHttpClient.get("//api.ipify.org/?format=json").toPromise()
|
|
573
|
+
// .then((response) => response);
|
|
574
|
+
// }
|
|
558
575
|
getIpAddrress() {
|
|
559
576
|
return this.newHttpClient.get("//api.ipify.org/?format=json").toPromise()
|
|
560
577
|
.then((response) => response);
|
|
@@ -566,9 +583,24 @@ class CommanServiceService {
|
|
|
566
583
|
console.log(res);
|
|
567
584
|
ip = res.ip;
|
|
568
585
|
});
|
|
569
|
-
|
|
570
|
-
let
|
|
571
|
-
let url = `
|
|
586
|
+
let ipStackAccessKey = "b399bdb306c040208e531fb977e0ce3a";
|
|
587
|
+
// let url = `https://api.ipstack.com/${ip}?access_key=${ipStackAccessKey}`
|
|
588
|
+
let url = `https://api.ipgeolocation.io/ipgeo?apiKey=${ipStackAccessKey}&ip=${ip}`;
|
|
589
|
+
return this.newHttpClient.get(url)
|
|
590
|
+
.toPromise()
|
|
591
|
+
.then((response) => response);
|
|
592
|
+
});
|
|
593
|
+
}
|
|
594
|
+
getuserInfo() {
|
|
595
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
596
|
+
let ip = '';
|
|
597
|
+
yield this.getIpAddrress().then((res) => {
|
|
598
|
+
console.log(res);
|
|
599
|
+
ip = res.ip;
|
|
600
|
+
});
|
|
601
|
+
let ipStackAccessKey = "b399bdb306c040208e531fb977e0ce3a";
|
|
602
|
+
// let url = `https://api.ipstack.com/${ip}?access_key=${ipStackAccessKey}`
|
|
603
|
+
let url = `https://api.ipgeolocation.io/user-agent?apiKey=${ipStackAccessKey}`;
|
|
572
604
|
return this.newHttpClient.get(url)
|
|
573
605
|
.toPromise()
|
|
574
606
|
.then((response) => response);
|