ngx-histaff-alpha 3.5.0 → 3.5.1

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.
@@ -20,6 +20,32 @@ import * as i12 from "../../../services/app.service";
20
20
  import * as i13 from "../../../services/app-config.service";
21
21
  export class CoreNavigationTrackerComponent {
22
22
  constructor(authService, router, route, routingService, layoutService, hubConnectionService, userActivityService, urlService, navigatorService, alertService, dialogService, mls, appService, appConfigService) {
23
+ /*
24
+ this.subscriptions.push(
25
+ this.dialogService.dialogConfirmed$.pipe(
26
+ filter(x => {
27
+ return (
28
+ // !!this.dialogService.busy
29
+ true
30
+ && x?.instanceNumber === this.dialogInstanceNumber && !!x?.confirmed
31
+ && !!this.navigatorService.clickedItem$.value
32
+ && (this.authService.data$.value?.id === '8c24683d-7d52-4f5a-8090-31c777e8869d' || this.authService.data$.value?.id === 'bd3e4ad4-11fc-4766-9224-4f9902f3a623')
33
+ )
34
+ })
35
+ ).subscribe(_ => {
36
+ this.router.navigate(
37
+ [
38
+ '/root',
39
+ 'url-mapper',
40
+ ],
41
+ { state: { url: this.pendingUrl, lastClickedMenuItem: this.lastClickedMenuItem, lastClickedMenuItemString: this.lastClickedMenuItemString } }
42
+ );
43
+
44
+ this.dialogService.resetService();
45
+
46
+ })
47
+ )
48
+ */
23
49
  this.authService = authService;
24
50
  this.router = router;
25
51
  this.route = route;
@@ -40,20 +66,6 @@ export class CoreNavigationTrackerComponent {
40
66
  this.unsubscribe = new Subject();
41
67
  this.subscriptions = [];
42
68
  this.routingHistory = [];
43
- this.subscriptions.push(this.dialogService.dialogConfirmed$.pipe(filter(x => {
44
- return (
45
- // !!this.dialogService.busy
46
- true
47
- && x?.instanceNumber === this.dialogInstanceNumber && !!x?.confirmed
48
- && !!this.navigatorService.clickedItem$.value
49
- && (this.authService.data$.value?.id === '8c24683d-7d52-4f5a-8090-31c777e8869d' || this.authService.data$.value?.id === 'bd3e4ad4-11fc-4766-9224-4f9902f3a623'));
50
- })).subscribe(_ => {
51
- this.router.navigate([
52
- '/root',
53
- 'url-mapper',
54
- ], { state: { url: this.pendingUrl, lastClickedMenuItem: this.lastClickedMenuItem, lastClickedMenuItemString: this.lastClickedMenuItemString } });
55
- this.dialogService.resetService();
56
- }));
57
69
  this.subscriptions.push(this.navigatorService.clickedItem$.pipe(filter(s => !!s)).subscribe(x => {
58
70
  this.lastClickedMenuItem = x;
59
71
  this.lastClickedMenuItemString = `[${x?.id}]=>${this.mls.trans(x.code)}=>(${x?.url})`;
@@ -306,4 +318,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
306
318
  type: Component,
307
319
  args: [{ selector: 'core-navigation-tracker', standalone: true, imports: [], template: "" }]
308
320
  }], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i3.RoutingService }, { type: i4.LayoutService }, { type: i5.HubConnectionService }, { type: i6.UserActivityService }, { type: i7.UrlService }, { type: i8.NavigatorService }, { type: i9.AlertService }, { type: i10.DialogService }, { type: i11.MultiLanguageService }, { type: i12.AppService }, { type: i13.AppConfigService }] });
309
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1uYXZpZ2F0aW9uLXRyYWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQXVCLE1BQU0saUJBQWlCLENBQUM7QUFDekksT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFZaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHMUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQXVCN0UsTUFBTSxPQUFPLDhCQUE4QjtJQW1DekMsWUFDVSxXQUF3QixFQUN4QixNQUFjLEVBQ2QsS0FBcUIsRUFDckIsY0FBOEIsRUFDL0IsYUFBNEIsRUFDM0Isb0JBQTBDLEVBQzFDLG1CQUF3QyxFQUN4QyxVQUFzQixFQUN0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O1FBQzNCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO1FBQ2xFLE1BQU0sUUFBUSxHQUEyQjtZQUN2QyxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVM7WUFDcEIsVUFBVSxFQUFFLGVBQWUsQ0FBQyxzQkFBc0I7WUFDbEQsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFTO1lBQ3pCLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTztZQUNyQixPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsUUFBUSw2QkFBNkI7WUFDdkQsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxTQUFVO1lBQ25ELElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQTtRQUVELElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRTtZQUNoQixJQUFJO2dCQUNGLFVBQVUsRUFBRSxNQUFNLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQzdDO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTthQUNqQjtTQUNGO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFBO0lBQy9DLENBQUM7OEdBdlhVLDhCQUE4QjtrR0FBOUIsOEJBQThCLG1GQ3pDM0MsRUFBQTs7MkZEeUNhLDhCQUE4QjtrQkFQMUMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25DYW5jZWwsIE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25FcnJvciwgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIsIFJvdXRlckV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFbnVtU2lnbmFsUlR5cGUgfSBmcm9tICcuLi8uLi8uLi9lbnVtL0VudW1TaWduYWxSVHlwZSc7XHJcbmltcG9ydCB7IElIdWJDb25uZWN0aW9uQWN0aXZpdHkgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL0lIdWJDb25uZWN0aW9uQWN0aXZpdHknO1xyXG5pbXBvcnQgeyBSb3V0aW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3JvdXRpbmcuc2VydmljZSc7XHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IEh1YkNvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaHViLWNvbm5lY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJBY3Rpdml0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91c2VyLWFjdGl2aXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJUm91dGluZ0hpc3RvcnlJdGVtIH0gZnJvbSAnLi4vLi4vY29yZS1yb3V0aW5nLWhpc3RvcnkvY29yZS1yb3V0aW5nLWhpc3RvcnkvY29yZS1yb3V0aW5nLWhpc3RvcnkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXJsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3VybC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmF2aWdhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IElOYXZpZ2F0b3JJdGVtIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9JTmF2aWdhdG9ySXRlbSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IElBdXRoRGF0YSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSUF1dGhEYXRhJztcclxuaW1wb3J0IHsgQXBwU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcC1jb25maWcuc2VydmljZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElMb2dVc2VyQWN0aXZpdHkge1xyXG4gIGNsaWVudENvZGU6IHN0cmluZztcclxuICBhcHBUeXBlOiBzdHJpbmc7XHJcbiAgdXNlcm5hbWU/OiBzdHJpbmc7XHJcbiAgc2lkPzogc3RyaW5nO1xyXG4gIGxvZ2luVGltZT86IERhdGU7XHJcbiAgYWNjZXNzVGltZTogRGF0ZTtcclxuICBwYXRoOiBzdHJpbmc7XHJcbiAgcGF0aG5hbWU/OiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1uYXZpZ2F0aW9uLXRyYWNrZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW10sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlTmF2aWdhdGlvblRyYWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBuYXZpZ2F0aW5nITogYm9vbGVhbjtcclxuICB1cmwhOiBzdHJpbmc7XHJcblxyXG4gIGxhbmchOiBzdHJpbmc7XHJcblxyXG4gIGFwcENvbmZpZzogYW55ID0ge1xyXG4gICAgc2hvd0xheW91dDogJ2ZhbHNlJ1xyXG4gIH07XHJcblxyXG4gIGFwcEluaXRpYWxpemluZyE6IGJvb2xlYW47XHJcbiAgbG9hZGluZyE6IGJvb2xlYW47XHJcbiAgc3VibWl0dGluZyE6IGJvb2xlYW47XHJcbiAgbWVudU9wZW4hOiBib29sZWFuO1xyXG4gIGxlZnRiYXJSZWR1Y2VkITogYm9vbGVhbjtcclxuICBrZXl3b3JkITogc3RyaW5nO1xyXG4gIHNpZCE6IHN0cmluZztcclxuICB1c2VybmFtZSE6IHN0cmluZztcclxuICBleHBpcmVzQXQhOiBzdHJpbmc7XHJcbiAgYXZhdGFyITogc3RyaW5nO1xyXG5cclxuXHJcbiAgdW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICByb3V0aW5nSGlzdG9yeTogSVJvdXRpbmdIaXN0b3J5SXRlbVtdID0gW107XHJcblxyXG4gIHBlbmRpbmdVcmwhOiBzdHJpbmc7XHJcbiAgbGFzdENsaWNrZWRNZW51SXRlbSE6IElOYXZpZ2F0b3JJdGVtIHwgbnVsbDtcclxuICBsYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nITogc3RyaW5nO1xyXG5cclxuICBkaWFsb2dJbnN0YW5jZU51bWJlciE6IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgcm91dGluZ1NlcnZpY2U6IFJvdXRpbmdTZXJ2aWNlLFxyXG4gICAgcHVibGljIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGh1YkNvbm5lY3Rpb25TZXJ2aWNlOiBIdWJDb25uZWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlckFjdGl2aXR5U2VydmljZTogVXNlckFjdGl2aXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgdXJsU2VydmljZTogVXJsU2VydmljZSxcclxuICAgIHByaXZhdGUgbmF2aWdhdG9yU2VydmljZTogTmF2aWdhdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcFNlcnZpY2U6IEFwcFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZGlhbG9nQ29uZmlybWVkJC5waXBlKFxyXG4gICAgICAgIGZpbHRlcih4ID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIC8vICEhdGhpcy5kaWFsb2dTZXJ2aWNlLmJ1c3lcclxuICAgICAgICAgICAgdHJ1ZVxyXG4gICAgICAgICAgICAmJiB4Py5pbnN0YW5jZU51bWJlciA9PT0gdGhpcy5kaWFsb2dJbnN0YW5jZU51bWJlciAmJiAhIXg/LmNvbmZpcm1lZFxyXG4gICAgICAgICAgICAmJiAhIXRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQudmFsdWVcclxuICAgICAgICAgICAgJiYgKHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmlkID09PSAnOGMyNDY4M2QtN2Q1Mi00ZjVhLTgwOTAtMzFjNzc3ZTg4NjlkJyB8fCB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pZCA9PT0gJ2JkM2U0YWQ0LTExZmMtNDc2Ni05MjI0LTRmOTkwMmYzYTYyMycpXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfSlcclxuICAgICAgKS5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoXHJcbiAgICAgICAgICBbXHJcbiAgICAgICAgICAgICcvcm9vdCcsXHJcbiAgICAgICAgICAgICd1cmwtbWFwcGVyJyxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgICB7IHN0YXRlOiB7IHVybDogdGhpcy5wZW5kaW5nVXJsLCBsYXN0Q2xpY2tlZE1lbnVJdGVtOiB0aGlzLmxhc3RDbGlja2VkTWVudUl0ZW0sIGxhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmc6IHRoaXMubGFzdENsaWNrZWRNZW51SXRlbVN0cmluZyB9IH1cclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UucmVzZXRTZXJ2aWNlKCk7XHJcblxyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLnBpcGUoZmlsdGVyKHMgPT4gISFzKSkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIHRoaXMubGFzdENsaWNrZWRNZW51SXRlbSA9IHhcclxuICAgICAgICB0aGlzLmxhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmcgPSBgWyR7eD8uaWR9XT0+JHt0aGlzLm1scy50cmFucyh4IS5jb2RlKX09Pigke3g/LnVybH0pYFxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICB0aGlzLnVybFNlcnZpY2UuY3VycmVudFJvdXRlVXJsJC5uZXh0KHRoaXMucm91dGVyLnVybCk7XHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLnJvdXRpbmdIaXN0b3J5JC5zdWJzY3JpYmUoeCA9PiB0aGlzLnJvdXRpbmdIaXN0b3J5ID0geClcclxuICAgICAgKVxyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgocm91dGVyRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja1JvdXRlckV2ZW50KHJvdXRlckV2ZW50IGFzIFJvdXRlckV2ZW50KTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgIClcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMudXJsU2VydmljZS5jdXJyZW50Um91dGVVcmwkLnBpcGUoXHJcbiAgICAgICAgICBmaWx0ZXIoeCA9PiB7XHJcbiAgICAgICAgICAgIGlmICghIXRoaXMuZGlhbG9nU2VydmljZS5zaG93Q29uZmlybURpYWxvZyQudmFsdWUpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuICEhIVsnLyddLmluY2x1ZGVzKHgpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgY29uc3QgaWdub3JlZFBhdGhzID0gdGhpcy5yb3V0aW5nU2VydmljZS5pZ25vcmVkUGF0aHMkLnZhbHVlO1xyXG4gICAgICAgICAgY29uc3QgZnVsbEZ1bmN0aW9ucyA9IHRoaXMucm91dGluZ1NlcnZpY2UuZnVsbEZ1bmN0aW9ucyQudmFsdWU/LmZpbHRlcihmID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuICFpZ25vcmVkUGF0aHM/LmluY2x1ZGVzKGYucGF0aClcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgY29uc3QgZnVuY3Rpb25GaWx0ZXIgPSBmdWxsRnVuY3Rpb25zLmZpbHRlcihmID0+IHtcclxuICAgICAgICAgICAgaWYgKGYucGF0aEZ1bGxNYXRjaCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBmLnBhdGggPT09IHg7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgLy9yZXR1cm4geC5pbmRleE9mKGYucGF0aCkgPT09IDBcclxuXHJcbiAgICAgICAgICAgICAgLy8gZXhwZXJpbWVudGFsIHNpbmNlIDIwMjQtMDQtMDJcclxuICAgICAgICAgICAgICByZXR1cm4geC5pbmRleE9mKGYucGF0aCkgPj0gMCAvLyBmb3Igc29tZSBhdXhpbGlhcnkgcm91dGVzLCBmb3IgZXggLi4uKHBvcHVwQXV4MjpvbmxpbmUtdXNlcnMpIHRvIGJlIGFjY2VwdGFibGVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJmdW5jdGlvbkZpbHRlclwiLCBpZ25vcmVkUGF0aHMpXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcImZ1bmN0aW9uRmlsdGVyXCIsIGZ1bmN0aW9uRmlsdGVyKVxyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJmdW5jdGlvbkZpbHRlclwiLCBpZ25vcmVkUGF0aHMuaW5jbHVkZXMoXCIvY21zL3N5c3RlbS91cGVybWlzc2lvbi8wXCIpKVxyXG5cclxuICAgICAgICAgIGlmICh4LmluZGV4T2YoJy9yb290JykgIT09IDAgJiYgISEhZnVuY3Rpb25GaWx0ZXIubGVuZ3RoICYmICEhIWlnbm9yZWRQYXRocy5pbmNsdWRlcyh4KSAmJiAhIXRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQudmFsdWUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmlzUm9vdCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlhbG9nSW5zdGFuY2VOdW1iZXIgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZGlhbG9nQ29uZmlybWVkJC5uZXh0KHtcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlTnVtYmVyOiB0aGlzLmRpYWxvZ0luc3RhbmNlTnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgY29uZmlybWVkOiBmYWxzZVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5jcmVhdGVOZXcoXHJcbiAgICAgICAgICAgICAgICBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPUkVfQ09ORklSTV9ESUFMT0dfVElUTEUsXHJcbiAgICAgICAgICAgICAgICBFbnVtVHJhbnNsYXRlS2V5LllFUyxcclxuICAgICAgICAgICAgICAgIEVudW1UcmFuc2xhdGVLZXkuSUdOT1JFLFxyXG4gICAgICAgICAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBFbnVtVHJhbnNsYXRlS2V5LlJPT1RfQ1VSUkVOVF9VUkxfRE9FU19OT1RfRVhJU1RfSU5fQVBQX0ZVTkNUSU9OX1BBVEhfRE9fWU9VX1dBTlRfVE9fTUFQLFxyXG4gICAgICAgICAgICAgICAgW3hdXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uRmlsdGVyLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLmN1cnJlbnRGdW5jdGlvbiQubmV4dChmdW5jdGlvbkZpbHRlclswXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgICAgLy8gdHJ5IHRvIHNldCBjdXJyZW50IGZ1bmN0aW9uIGltbWVkaWF0ZWx5IHdoZW4gdXNlciBoYXMgcHJlc3NlZCBGNVxyXG4gICAgICBjb25zdCB1cmwgPSB0aGlzLnJvdXRlci51cmw7XHJcbiAgICAgIGNvbnN0IGlnbm9yZWRQYXRocyA9IHRoaXMucm91dGluZ1NlcnZpY2UuaWdub3JlZFBhdGhzJC52YWx1ZTtcclxuICAgICAgY29uc3QgZnVsbEZ1bmN0aW9ucyA9IHRoaXMucm91dGluZ1NlcnZpY2UuZnVsbEZ1bmN0aW9ucyQudmFsdWU/LmZpbHRlcihmID0+IHtcclxuICAgICAgICByZXR1cm4gIWlnbm9yZWRQYXRocz8uaW5jbHVkZXMoZi5wYXRoKVxyXG4gICAgICB9KTtcclxuICAgICAgY29uc3QgZnVuY3Rpb25GaWx0ZXIgPSBmdWxsRnVuY3Rpb25zLmZpbHRlcihmID0+IHtcclxuICAgICAgICBpZiAoZi5wYXRoRnVsbE1hdGNoKSB7XHJcbiAgICAgICAgICByZXR1cm4gZi5wYXRoID09PSB1cmw7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiB1cmwuaW5kZXhPZihmLnBhdGgpID09PSAwXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcblxyXG4gICAgICBpZiAoISFmdW5jdGlvbkZpbHRlci5sZW5ndGgpIHtcclxuICAgICAgICBpZiAoZnVuY3Rpb25GaWx0ZXIubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgICAgIHZhciBmdW5jdGlvbkZpbHRlckxpbmtzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgICAgICBmdW5jdGlvbkZpbHRlci5tYXAoeCA9PiB7XHJcbiAgICAgICAgICAgICAgZnVuY3Rpb25GaWx0ZXJMaW5rcy5wdXNoKHgucGF0aCArIFwiIChcIiArICh4LnBhdGhGdWxsTWF0Y2ggPyBcInTGsMahbmcg4bupbmcgdG/DoG4gcGjhuqduXCIgOiBcInTGsMahbmcg4bupbmcgcGjhuqduIGLDqm4gdHLDoWlcIikgKyBcIilcIilcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoXHJcbiAgICAgICAgICAgICAgYE5oaeG7gXUgaMahbiAwMSBjaOG7qWMgbsSDbmcgY8O5bmcgxJFhbmcgdMawxqFuZyDhu6luZyB24bubaSDEkWnhu4F1IGjGsOG7m25nICR7dXJsfTpcXG4ke0pTT04uc3RyaW5naWZ5KGZ1bmN0aW9uRmlsdGVyTGlua3MsIG51bGwsIDIpfWAsXHJcbiAgICAgICAgICAgICAgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnNcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gTuG6v3Uga2jDtG5nIHBo4bqjaSBJU19ST09UIGPFqW5nIGtow7RuZyBwaOG6o2kgSVNfQURNSU4gdGjDrCDEkWnhu4F1IGjGsOG7m25nIHbhu4EgdHJhbmcgY2jhu6dcclxuICAgICAgICAgIGlmICghdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaXNSb290ICYmICF0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pc0FkbWluKSB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvaG9tZScpXHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgLy8gS2nhu4NtIHRyYSB4ZW0gY8OzIHF1eeG7gW4gduG7m2kgRnVuY3Rpb24gaGnhu4duIHThuqFpIGhheSBraMO0bmdcclxuICAgICAgICAgIGNvbnN0IHRyeUZpbmQgPSB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5wZXJtaXNzaW9uQWN0aW9ucy5maWx0ZXIoeCA9PiB4LmZ1bmN0aW9uSWQgPT09IGZ1bmN0aW9uRmlsdGVyWzBdLmlkKVxyXG4gICAgICAgICAgLy8gTuG6v3Uga2jDtG5nIHTDrG0gdGjhuqV5IHbDoCBraMO0bmcgcGjhuqNpIElTX1JPT1QgY8Wpbmcga2jDtG5nIHBo4bqjaSBJU19BRE1JTiB0aMOsIMSRxrBhIHJhIHRow7RuZyBiw6FvIHbDoCDEkWnhu4F1IGjGsOG7m25nIHbhu4EgdHJhbmcgY2jhu6dcclxuICAgICAgICAgIC8vIFwiL2F1dGgvbG9naW5cIiDEkcaw4bujYyBi4buPIHF1YVxyXG4gICAgICAgICAgaWYgKCF0cnlGaW5kPy5sZW5ndGggJiYgIXRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmlzUm9vdCAmJiAhdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaXNBZG1pbikge1xyXG4gICAgICAgICAgICBpZiAoIShbXCIvYXV0aC9sb2dpblwiLCBcIi9ob21lXCJdLmluY2x1ZGVzKGZ1bmN0aW9uRmlsdGVyWzBdLnBhdGgpKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFxyXG4gICAgICAgICAgICAgICAgZnVuY3Rpb25GaWx0ZXJbMF0ucGF0aCArIFwiIFwiICtcclxuICAgICAgICAgICAgICAgIHRoaXMubWxzLnRyYW5zKCdDT1JFLlBFUk1JU1NJT04uVEhFX1BBVEhfSVNfTk9UX1BFUk1JVFRFRCcpLFxyXG4gICAgICAgICAgICAgICAgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2hvbWUnKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5jdXJyZW50RnVuY3Rpb24kLm5leHQoZnVuY3Rpb25GaWx0ZXJbMF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgY2hlY2tSb3V0ZXJFdmVudChyb3V0ZXJFdmVudDogUm91dGVyRXZlbnQpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAocm91dGVyRXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcclxuICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5uYXZpZ2F0aW9uVXJsJC5uZXh0KHJvdXRlckV2ZW50LnVybCk7XHJcblxyXG4gICAgICAvLyBTa2lwIG5hdmlnYXRpbmcgZWZmZWN0IHdoZW4gdGhlIG5hdmlnYXRpb24gc3RhcnRzIHdpdGggL2Ntcy9wcm9maWxlL2J1c2luZXNzL3N0YWZmcHJvZmlsZVxyXG4gICAgICBpZiAocm91dGVyRXZlbnQudXJsLmluZGV4T2YoXCIvY21zL3Byb2ZpbGUvYnVzaW5lc3Mvc3RhZmZwcm9maWxlXCIpICE9PSAwKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5uYXZpZ2F0aW5nJC5uZXh0KHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJvdXRlckV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xyXG4gICAgICB0aGlzLnVybCA9IHRoaXMucm91dGVyLnVybDtcclxuXHJcbiAgICAgIGlmICghIXRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmlzRmlyc3RMb2dpbiAmJiB0aGlzLnVybCAhPT0gJy9jbXMvY2hhbmdlLXBhc3N3b3JkJykge1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY21zJywgJ2NoYW5nZS1wYXNzd29yZCcsIGJ0b2EoKHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWUgYXMgSUF1dGhEYXRhKS5yZWZyZXNoVG9rZW4udXNlcildKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgbmV3Um91dGluZ0hpc3Rvcnk6IElSb3V0aW5nSGlzdG9yeUl0ZW1bXSA9IHRoaXMucm91dGluZ1NlcnZpY2Uucm91dGluZ0hpc3RvcnkkLnZhbHVlO1xyXG4gICAgICBuZXdSb3V0aW5nSGlzdG9yeS5wdXNoKHsgZnVsbFVybDogdGhpcy51cmwgfSk7XHJcbiAgICAgIHRoaXMucm91dGluZ1NlcnZpY2Uucm91dGluZ0hpc3RvcnkkLm5leHQobmV3Um91dGluZ0hpc3RvcnkpO1xyXG5cclxuICAgICAgY29uc3QgdXNlckFjdGl2aXR5ID0gdGhpcy51c2VyQWN0aXZpdHlTZXJ2aWNlLnVzZXJBY3Rpdml0eSQudmFsdWU7XHJcbiAgICAgIGNvbnN0IGF1dGggPSB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlO1xyXG5cclxuICAgICAgY29uc3QgbmV3VXNlckFjdGl2aXR5ID0gdXNlckFjdGl2aXR5LmZpbHRlcihpdGVtID0+IGl0ZW0uc2lkICE9PSBhdXRoPy5pZClcclxuICAgICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMuaHViQ29ubmVjdGlvblNlcnZpY2UuaHViQ29ubmVjdGlvbiQudmFsdWU7XHJcbiAgICAgIG5ld1VzZXJBY3Rpdml0eS5wdXNoKHtcclxuICAgICAgICBzaWQ6IGF1dGg/LmZ1bGxOYW1lISxcclxuICAgICAgICB1c2VybmFtZTogYXV0aD8udXNlck5hbWUhLFxyXG4gICAgICAgIHBhdGhuYW1lOiB0aGlzLnVybCxcclxuICAgICAgICBhdmF0YXI6IGF1dGg/LmF2YXRhciEsXHJcbiAgICAgICAgaHViQ29ubmVjdGlvbklkOiBjb25uZWN0aW9uPy5jb25uZWN0aW9uSWQhLFxyXG4gICAgICAgIGFjY2Vzc1RpbWU6IG5ldyBEYXRlKCkuZ2V0VGltZSgpLFxyXG4gICAgICB9KVxyXG5cclxuICAgICAgY29uc3QgYWNjZXNzTW9tZW50ID0gbmV3IERhdGUoKTtcclxuICAgICAgY29uc3QgYWNjZXNzVGltZSA9IGFjY2Vzc01vbWVudC5nZXRUaW1lKCk7XHJcblxyXG4gICAgICBjb25zdCBhY3Rpdml0eTogSUh1YkNvbm5lY3Rpb25BY3Rpdml0eSA9IHtcclxuICAgICAgICBzaWQ6IGF1dGg/LmZ1bGxOYW1lISxcclxuICAgICAgICBzaWduYWxUeXBlOiBFbnVtU2lnbmFsUlR5cGUuQUNUSVZJVFksXHJcbiAgICAgICAgdXNlcm5hbWU6IGF1dGg/LnVzZXJOYW1lISxcclxuICAgICAgICBhdmF0YXI6IGF1dGg/LmF2YXRhciEsXHJcbiAgICAgICAgbWVzc2FnZTogYCR7YXV0aD8udXNlck5hbWV9IG5hdmlnYXRlZCB0byAke2xvY2F0aW9uLnBhdGhuYW1lfWAsXHJcbiAgICAgICAgbG9naW5UaW1lOiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5sb2dpblRpbWUhLFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIHNpZDogYXV0aD8uZnVsbE5hbWUsXHJcbiAgICAgICAgICB1c2VyTmFtZTogYXV0aD8udXNlck5hbWUsXHJcbiAgICAgICAgICBwYXRobmFtZTogdGhpcy51cmwsXHJcbiAgICAgICAgICBhdmF0YXI6IGF1dGg/LmF2YXRhcixcclxuICAgICAgICAgIGh1YkNvbm5lY3Rpb25JZDogY29ubmVjdGlvbj8uY29ubmVjdGlvbklkISxcclxuICAgICAgICAgIGFjY2Vzc1RpbWUsXHJcbiAgICAgICAgICB1c2VyQWN0aXZpdHk6IG5ld1VzZXJBY3Rpdml0eSxcclxuICAgICAgICB9LFxyXG4gICAgICB9XHJcblxyXG4gICAgICAvKiBpZiBsb2cgbmVlZGVkXHJcbiAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgICBjb25zdCBsb2dQYXlsb2FkOiBJTG9nVXNlckFjdGl2aXR5ID0ge1xyXG4gICAgICAgIGNsaWVudENvZGU6ICdWTlMnLFxyXG4gICAgICAgIGFwcFR5cGU6ICdXRUJBUFAnLFxyXG4gICAgICAgIHVzZXJuYW1lOiBhdXRoPy51c2VyTmFtZSxcclxuICAgICAgICBzaWQ6IGF1dGg/LmZ1bGxOYW1lLFxyXG4gICAgICAgIGxvZ2luVGltZTogdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8ubG9naW5UaW1lID8gbmV3IERhdGUodGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8ubG9naW5UaW1lKSA6IHVuZGVmaW5lZCxcclxuICAgICAgICBhY2Nlc3NUaW1lOiBhY2Nlc3NNb21lbnQsXHJcbiAgICAgICAgcGF0aDogd2luZG93LmxvY2F0aW9uLmhyZWYsXHJcbiAgICAgICAgcGF0aG5hbWU6ICcnXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCdsb2NhbGhvc3QnKSA8IDAgJiYgd2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZignLndlYi5hcHAnKSA8IDApIHtcclxuICAgICAgICB0aGlzLmFwcFNlcnZpY2UucG9zdEZ1bGxVcmwoXCJodHRwczovL2Jsb2cudGFubGVpY2EuY29tL2FwaS9Mb2dVc2VyQWN0aXZpdHkvQ3JlYXRlXCIsIGxvZ1BheWxvYWQpLnN1YnNjcmliZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgICAqL1xyXG5cclxuICAgICAgY29uc29sZS5sb2coXCJOYXZpZ2F0aW9uRW5kIGFjdGl2aXR5XCIsIGFjdGl2aXR5KVxyXG4gICAgICBpZiAoISFjb25uZWN0aW9uKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGNvbm5lY3Rpb24/Lmludm9rZShcIlNlbmRNZXNzYWdlXCIsIGFjdGl2aXR5KTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGUpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJvdXRlckV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCB8fFxyXG4gICAgICByb3V0ZXJFdmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25DYW5jZWwgfHxcclxuICAgICAgcm91dGVyRXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRXJyb3IpIHtcclxuXHJcblxyXG4gICAgICBjb25zb2xlLmdyb3VwKFwicm91dGVyRXZlbnQudXJsXCIpXHJcbiAgICAgIGNvbnNvbGUubG9nKHJvdXRlckV2ZW50LnVybClcclxuICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5yb3V0aW5nU2VydmljZS5wb3J0YWxSb3V0ZXMkLnZhbHVlLmZpbHRlcih4ID0+IHgucGF0aCA9PT0gcm91dGVyRXZlbnQudXJsKTtcclxuICAgICAgaWYgKGZpbHRlci5sZW5ndGgpIHtcclxuICAgICAgICBpZiAodGhpcy5sYW5nID09PSBcInZpXCIpIHtcclxuICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudFNjcmVlbkNhcHRpb24kLm5leHQoZmlsdGVyWzBdLnZpKVxyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5sYW5nID09PSBcImVuXCIpIHtcclxuICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudFNjcmVlbkNhcHRpb24kLm5leHQoZmlsdGVyWzBdLmVuKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLmN1cnJlbnRTY3JlZW5DYXB0aW9uJC5uZXh0KGZpbHRlclswXS52aSlcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5jdXJyZW50U2NyZWVuQ2FwdGlvbiQubmV4dCgnJyk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc29sZS5ncm91cEVuZCgpXHJcblxyXG4gICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLm5hdmlnYXRpbmckLm5leHQoZmFsc2UpO1xyXG5cclxuICAgICAgc3dpdGNoICh0aGlzLmFwcENvbmZpZ1NlcnZpY2UuQVBQX1RZUEUpIHtcclxuICAgICAgICBjYXNlIFwiV0VCQVBQXCI6XHJcblxyXG4gICAgICAgICAgdGhpcy51cmxTZXJ2aWNlLnByZXZpb3VzUm91dGVVcmwkLm5leHQodGhpcy51cmxTZXJ2aWNlLmN1cnJlbnRSb3V0ZVVybCQudmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy51cmxTZXJ2aWNlLmN1cnJlbnRSb3V0ZVVybCQubmV4dChyb3V0ZXJFdmVudC51cmwpO1xyXG5cclxuICAgICAgICAgIC8vIHRoaXMubGF5b3V0U2VydmljZS5sZWZ0YmFyUmVkdWNlZCQubmV4dCh0cnVlKTsgLy8gaWYgd2Ugd2FudCBhdXRvLXJlZHVjZSB0aGUgbWVudSwgdW5jb21tZW50IHRoaXMgbGluZVxyXG4gICAgICAgICAgLypcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBsZWZ0QmFyID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy0tc2l6ZS1sZWZ0LWJhci1jdXJyZW50LXdpZHRoJykucmVwbGFjZSgncHgnLCAnJyk7XHJcbiAgICAgICAgICAgIHRoaXMubGF5b3V0U2VydmljZS5sZWZ0QmFyQ3VycmVudFdpZHRoJC5uZXh0KE51bWJlcihsZWZ0QmFyKSlcclxuICAgICAgICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmNvbnRlbnRDb250YWluZXJXaWR0aCQubmV4dCh3aW5kb3cuaW5uZXJXaWR0aCAtIE51bWJlcihsZWZ0QmFyKSlcclxuICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWNvbnRlbnQtY29udGFpbmVyLXdpZHRoJywgd2luZG93LmlubmVyV2lkdGggLSBOdW1iZXIobGVmdEJhcikgKyAncHgnKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgICovXHJcblxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgXCJQT1JUQUxcIjpcclxuXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcImNoZWNrUm91dGVyRXZlbnRcIiwgcm91dGVyRXZlbnQudXJsKTtcclxuXHJcbiAgICAgICAgICBpZiAoIXJvdXRlckV2ZW50LnVybC5lbmRzV2l0aCgnLWVkaXQnKSkge1xyXG4gICAgICAgICAgICB0aGlzLnVybFNlcnZpY2UucHJldmlvdXNSb3V0ZVVybCQubmV4dCh0aGlzLnVybFNlcnZpY2UuY3VycmVudFJvdXRlVXJsJC52YWx1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMudXJsU2VydmljZS5jdXJyZW50Um91dGVVcmwkLm5leHQocm91dGVyRXZlbnQudXJsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnVybFNlcnZpY2UuY3VycmVudFJvdXRlVXJsJC5uZXh0KHJvdXRlckV2ZW50LnVybClcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRBY3Rpdml0eUhpc3RvcnkoKTogdm9pZCB7XHJcbiAgICBjb25zdCBhdXRoID0gdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZTtcclxuICAgIGlmICghYXV0aD8uaXNBZG1pbikgcmV0dXJuO1xyXG4gICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMuaHViQ29ubmVjdGlvblNlcnZpY2UuaHViQ29ubmVjdGlvbiQudmFsdWU7XHJcbiAgICBjb25zdCBhY3Rpdml0eTogSUh1YkNvbm5lY3Rpb25BY3Rpdml0eSA9IHtcclxuICAgICAgc2lkOiBhdXRoPy5mdWxsTmFtZSEsXHJcbiAgICAgIHNpZ25hbFR5cGU6IEVudW1TaWduYWxSVHlwZS5BQ1RJVklUWV9ISVNUT1JZX1JFU0VULFxyXG4gICAgICB1c2VybmFtZTogYXV0aD8udXNlck5hbWUhLFxyXG4gICAgICBhdmF0YXI6IGF1dGg/LmF2YXRhciEsXHJcbiAgICAgIG1lc3NhZ2U6IGAke2F1dGg/LnVzZXJOYW1lfSBoYXMgcmVzZXQgYWN0aXZpdHkgaGlzdG9yeWAsXHJcbiAgICAgIGxvZ2luVGltZTogdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8ubG9naW5UaW1lISxcclxuICAgICAgZGF0YTogbnVsbCxcclxuICAgIH1cclxuXHJcbiAgICBpZiAoISFjb25uZWN0aW9uKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29ubmVjdGlvbj8uaW52b2tlKFwiU2VuZE1lc3NhZ2VcIiwgYWN0aXZpdHkpO1xyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5tYXAoeCA9PiB4Py51bnN1YnNjcmliZSgpKVxyXG4gIH1cclxuXHJcbn1cclxuIiwiIl19
321
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1uYXZpZ2F0aW9uLXRyYWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQXVCLE1BQU0saUJBQWlCLENBQUM7QUFDekksT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFZaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHMUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQXVCN0UsTUFBTSxPQUFPLDhCQUE4QjtJQW1DekMsWUFDVSxXQUF3QixFQUN4QixNQUFjLEVBQ2QsS0FBcUIsRUFDckIsY0FBOEIsRUFDL0IsYUFBNEIsRUFDM0Isb0JBQTBDLEVBQzFDLG1CQUF3QyxFQUN4QyxVQUFzQixFQUN0QixnQkFBa0MsRUFDbEMsWUFBMEIsRUFDMUIsYUFBNEIsRUFDNUIsR0FBeUIsRUFDekIsVUFBc0IsRUFDdEIsZ0JBQWtDO1FBRTFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1VBeUJFO1FBeENNLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDL0Isa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDM0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixRQUFHLEdBQUgsR0FBRyxDQUFzQjtRQUN6QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUExQzVDLGNBQVMsR0FBUTtZQUNmLFVBQVUsRUFBRSxPQUFPO1NBQ3BCLENBQUM7UUFjRixnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFbEMsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBRW5DLG1CQUFjLEdBQTBCLEVBQUUsQ0FBQztRQW1EekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN0RSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxDQUFBO1lBQzVCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQTtRQUN4RixDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixVQUFVLENBQUMsR0FBRyxFQUFFO1lBRWQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUV2RCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FDNUUsQ0FBQTtZQUVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztpQkFDakQsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUEwQixDQUFDLENBQUM7WUFDcEQsQ0FBQyxDQUFDLENBQ0wsQ0FBQTtZQUVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FDbkMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNULElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsS0FBSztvQkFBRSxPQUFPLEtBQUssQ0FBQztnQkFDaEUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUM3QixDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDZCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7Z0JBQzdELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3pFLE9BQU8sQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDeEMsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDOUMsSUFBSSxDQUFDLENBQUMsYUFBYSxFQUFFO3dCQUNuQixPQUFPLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDO3FCQUNyQjt5QkFBTTt3QkFDTCxnQ0FBZ0M7d0JBRWhDLGdDQUFnQzt3QkFDaEMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQyxpRkFBaUY7cUJBQ2hIO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUVILE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLENBQUE7Z0JBQzNDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLENBQUE7Z0JBQzdDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUE7Z0JBRWpGLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtvQkFDckksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFO3dCQUN4QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQzt3QkFDakQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7NEJBQ3ZDLGNBQWMsRUFBRSxJQUFJLENBQUMsb0JBQW9COzRCQUN6QyxTQUFTLEVBQUUsS0FBSzt5QkFDakIsQ0FBQyxDQUFDO3dCQUNILElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUMxQixnQkFBZ0IsQ0FBQyw0QkFBNEIsRUFDN0MsZ0JBQWdCLENBQUMsR0FBRyxFQUNwQixnQkFBZ0IsQ0FBQyxNQUFNLEVBQ3ZCLEtBQUssRUFDTCxnQkFBZ0IsQ0FBQyx1RUFBdUUsRUFDeEYsQ0FBQyxDQUFDLENBQUMsQ0FDSixDQUFBO3FCQUNGO2lCQUNGO3FCQUFNLElBQUksY0FBYyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM5RDtZQUNILENBQUMsQ0FBQyxDQUNILENBQUE7WUFFRCxtRUFBbUU7WUFDbkUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7WUFDNUIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1lBQzdELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pFLE9BQU8sQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUN4QyxDQUFDLENBQUMsQ0FBQztZQUNILE1BQU0sY0FBYyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzlDLElBQUksQ0FBQyxDQUFDLGFBQWEsRUFBRTtvQkFDbkIsT0FBTyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQztpQkFDdkI7cUJBQU07b0JBQ0wsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7aUJBQ2pDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFHSCxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFO2dCQUMzQixJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUM3QixJQUFJLFNBQVMsRUFBRSxFQUFFO3dCQUNmLElBQUksbUJBQW1CLEdBQWEsRUFBRSxDQUFDO3dCQUN2QyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFOzRCQUNyQixtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQTt3QkFDdkgsQ0FBQyxDQUFDLENBQUE7d0JBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQ3JCLDZEQUE2RCxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFDcEgsMEJBQTBCLENBQzNCLENBQUE7cUJBQ0Y7b0JBQ0QsOEVBQThFO29CQUM5RSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxPQUFPO3dCQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFBO2lCQUV4SDtxQkFBTTtvQkFFTCx3REFBd0Q7b0JBQ3hELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxLQUFLLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtvQkFDbEgsb0hBQW9IO29CQUNwSCw0QkFBNEI7b0JBQzVCLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUU7d0JBQ3ZHLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTs0QkFDaEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQ3JCLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRztnQ0FDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsMkNBQTJDLENBQUMsRUFDM0QsMEJBQTBCLENBQUMsQ0FBQTs0QkFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUE7eUJBQ25DO3FCQUNGO29CQUVELElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM5RDthQUNGO1FBR0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsV0FBd0I7UUFFdkMsSUFBSSxXQUFXLFlBQVksZUFBZSxFQUFFO1lBQzFDLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFekQsNEZBQTRGO1lBQzVGLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsb0NBQW9DLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3ZFLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM1QztTQUNGO1FBRUQsSUFBSSxXQUFXLFlBQVksYUFBYSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7WUFFM0IsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFlBQVksSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLHNCQUFzQixFQUFFO2dCQUN2RixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxJQUFJLENBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBbUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZIO1lBRUQsTUFBTSxpQkFBaUIsR0FBMEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDO1lBQzNGLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUU1RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztZQUNsRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFFMUMsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFBO1lBQzFFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO1lBQ2xFLGVBQWUsQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLEdBQUcsRUFBRSxJQUFJLEVBQUUsUUFBUztnQkFDcEIsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFTO2dCQUN6QixRQUFRLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ2xCLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTztnQkFDckIsZUFBZSxFQUFFLFVBQVUsRUFBRSxZQUFhO2dCQUMxQyxVQUFVLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUU7YUFDakMsQ0FBQyxDQUFBO1lBRUYsTUFBTSxZQUFZLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNoQyxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFMUMsTUFBTSxRQUFRLEdBQTJCO2dCQUN2QyxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVM7Z0JBQ3BCLFVBQVUsRUFBRSxlQUFlLENBQUMsUUFBUTtnQkFDcEMsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFTO2dCQUN6QixNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU87Z0JBQ3JCLE9BQU8sRUFBRSxHQUFHLElBQUksRUFBRSxRQUFRLGlCQUFpQixRQUFRLENBQUMsUUFBUSxFQUFFO2dCQUM5RCxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFNBQVU7Z0JBQ25ELElBQUksRUFBRTtvQkFDSixHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVE7b0JBQ25CLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUTtvQkFDeEIsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHO29CQUNsQixNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU07b0JBQ3BCLGVBQWUsRUFBRSxVQUFVLEVBQUUsWUFBYTtvQkFDMUMsVUFBVTtvQkFDVixZQUFZLEVBQUUsZUFBZTtpQkFDOUI7YUFDRixDQUFBO1lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O2NBaUJFO1lBRUYsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxRQUFRLENBQUMsQ0FBQTtZQUMvQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUU7Z0JBQ2hCLElBQUk7b0JBQ0YsVUFBVSxFQUFFLE1BQU0sQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7aUJBQzdDO2dCQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7aUJBQ2pCO2FBQ0Y7U0FDRjtRQUVELElBQUksV0FBVyxZQUFZLGFBQWE7WUFDdEMsV0FBVyxZQUFZLGdCQUFnQjtZQUN2QyxXQUFXLFlBQVksZUFBZSxFQUFFO1lBR3hDLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtZQUNoQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUM1QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0YsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO2dCQUNqQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO29CQUN0QixJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7aUJBQzdEO3FCQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUU7b0JBQzdCLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtpQkFDN0Q7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO2lCQUM3RDthQUNGO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3BEO1lBQ0QsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFBO1lBRWxCLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUU1QyxRQUFRLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3RDLEtBQUssUUFBUTtvQkFFWCxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMvRSxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBRXZELHlHQUF5RztvQkFDekc7Ozs7Ozs7c0JBT0U7b0JBRUYsTUFBTTtnQkFFUixLQUFLLFFBQVE7b0JBRVgsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBRWpELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTt3QkFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDL0UsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUN4RDt5QkFDSTt3QkFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUE7cUJBQ3ZEO29CQUVELE1BQU07Z0JBQ1I7b0JBQ0UsTUFBTTthQUNUO1NBR0Y7SUFDSCxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUMxQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU87WUFBRSxPQUFPO1FBQzNCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO1FBQ2xFLE1BQU0sUUFBUSxHQUEyQjtZQUN2QyxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVM7WUFDcEIsVUFBVSxFQUFFLGVBQWUsQ0FBQyxzQkFBc0I7WUFDbEQsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFTO1lBQ3pCLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTztZQUNyQixPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsUUFBUSw2QkFBNkI7WUFDdkQsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxTQUFVO1lBQ25ELElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQTtRQUVELElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRTtZQUNoQixJQUFJO2dCQUNGLFVBQVUsRUFBRSxNQUFNLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQzdDO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTthQUNqQjtTQUNGO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFBO0lBQy9DLENBQUM7OEdBelhVLDhCQUE4QjtrR0FBOUIsOEJBQThCLG1GQ3pDM0MsRUFBQTs7MkZEeUNhLDhCQUE4QjtrQkFQMUMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25DYW5jZWwsIE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25FcnJvciwgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIsIFJvdXRlckV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFbnVtU2lnbmFsUlR5cGUgfSBmcm9tICcuLi8uLi8uLi9lbnVtL0VudW1TaWduYWxSVHlwZSc7XHJcbmltcG9ydCB7IElIdWJDb25uZWN0aW9uQWN0aXZpdHkgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL0lIdWJDb25uZWN0aW9uQWN0aXZpdHknO1xyXG5pbXBvcnQgeyBSb3V0aW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3JvdXRpbmcuc2VydmljZSc7XHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IEh1YkNvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaHViLWNvbm5lY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJBY3Rpdml0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91c2VyLWFjdGl2aXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJUm91dGluZ0hpc3RvcnlJdGVtIH0gZnJvbSAnLi4vLi4vY29yZS1yb3V0aW5nLWhpc3RvcnkvY29yZS1yb3V0aW5nLWhpc3RvcnkvY29yZS1yb3V0aW5nLWhpc3RvcnkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXJsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3VybC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmF2aWdhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IElOYXZpZ2F0b3JJdGVtIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9JTmF2aWdhdG9ySXRlbSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IElBdXRoRGF0YSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSUF1dGhEYXRhJztcclxuaW1wb3J0IHsgQXBwU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcC1jb25maWcuc2VydmljZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElMb2dVc2VyQWN0aXZpdHkge1xyXG4gIGNsaWVudENvZGU6IHN0cmluZztcclxuICBhcHBUeXBlOiBzdHJpbmc7XHJcbiAgdXNlcm5hbWU/OiBzdHJpbmc7XHJcbiAgc2lkPzogc3RyaW5nO1xyXG4gIGxvZ2luVGltZT86IERhdGU7XHJcbiAgYWNjZXNzVGltZTogRGF0ZTtcclxuICBwYXRoOiBzdHJpbmc7XHJcbiAgcGF0aG5hbWU/OiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1uYXZpZ2F0aW9uLXRyYWNrZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW10sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlTmF2aWdhdGlvblRyYWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBuYXZpZ2F0aW5nITogYm9vbGVhbjtcclxuICB1cmwhOiBzdHJpbmc7XHJcblxyXG4gIGxhbmchOiBzdHJpbmc7XHJcblxyXG4gIGFwcENvbmZpZzogYW55ID0ge1xyXG4gICAgc2hvd0xheW91dDogJ2ZhbHNlJ1xyXG4gIH07XHJcblxyXG4gIGFwcEluaXRpYWxpemluZyE6IGJvb2xlYW47XHJcbiAgbG9hZGluZyE6IGJvb2xlYW47XHJcbiAgc3VibWl0dGluZyE6IGJvb2xlYW47XHJcbiAgbWVudU9wZW4hOiBib29sZWFuO1xyXG4gIGxlZnRiYXJSZWR1Y2VkITogYm9vbGVhbjtcclxuICBrZXl3b3JkITogc3RyaW5nO1xyXG4gIHNpZCE6IHN0cmluZztcclxuICB1c2VybmFtZSE6IHN0cmluZztcclxuICBleHBpcmVzQXQhOiBzdHJpbmc7XHJcbiAgYXZhdGFyITogc3RyaW5nO1xyXG5cclxuXHJcbiAgdW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICByb3V0aW5nSGlzdG9yeTogSVJvdXRpbmdIaXN0b3J5SXRlbVtdID0gW107XHJcblxyXG4gIHBlbmRpbmdVcmwhOiBzdHJpbmc7XHJcbiAgbGFzdENsaWNrZWRNZW51SXRlbSE6IElOYXZpZ2F0b3JJdGVtIHwgbnVsbDtcclxuICBsYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nITogc3RyaW5nO1xyXG5cclxuICBkaWFsb2dJbnN0YW5jZU51bWJlciE6IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgcm91dGluZ1NlcnZpY2U6IFJvdXRpbmdTZXJ2aWNlLFxyXG4gICAgcHVibGljIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGh1YkNvbm5lY3Rpb25TZXJ2aWNlOiBIdWJDb25uZWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlckFjdGl2aXR5U2VydmljZTogVXNlckFjdGl2aXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgdXJsU2VydmljZTogVXJsU2VydmljZSxcclxuICAgIHByaXZhdGUgbmF2aWdhdG9yU2VydmljZTogTmF2aWdhdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcFNlcnZpY2U6IEFwcFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIC8qXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmRpYWxvZ0NvbmZpcm1lZCQucGlwZShcclxuICAgICAgICBmaWx0ZXIoeCA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAvLyAhIXRoaXMuZGlhbG9nU2VydmljZS5idXN5XHJcbiAgICAgICAgICAgIHRydWVcclxuICAgICAgICAgICAgJiYgeD8uaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuZGlhbG9nSW5zdGFuY2VOdW1iZXIgJiYgISF4Py5jb25maXJtZWRcclxuICAgICAgICAgICAgJiYgISF0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLnZhbHVlXHJcbiAgICAgICAgICAgICYmICh0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pZCA9PT0gJzhjMjQ2ODNkLTdkNTItNGY1YS04MDkwLTMxYzc3N2U4ODY5ZCcgfHwgdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaWQgPT09ICdiZDNlNGFkNC0xMWZjLTQ3NjYtOTIyNC00Zjk5MDJmM2E2MjMnKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICkuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFxyXG4gICAgICAgICAgW1xyXG4gICAgICAgICAgICAnL3Jvb3QnLFxyXG4gICAgICAgICAgICAndXJsLW1hcHBlcicsXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgICAgeyBzdGF0ZTogeyB1cmw6IHRoaXMucGVuZGluZ1VybCwgbGFzdENsaWNrZWRNZW51SXRlbTogdGhpcy5sYXN0Q2xpY2tlZE1lbnVJdGVtLCBsYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nOiB0aGlzLmxhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmcgfSB9XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnJlc2V0U2VydmljZSgpO1xyXG5cclxuICAgICAgfSlcclxuICAgIClcclxuICAgICovXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQucGlwZShmaWx0ZXIocyA9PiAhIXMpKS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5sYXN0Q2xpY2tlZE1lbnVJdGVtID0geFxyXG4gICAgICAgIHRoaXMubGFzdENsaWNrZWRNZW51SXRlbVN0cmluZyA9IGBbJHt4Py5pZH1dPT4ke3RoaXMubWxzLnRyYW5zKHghLmNvZGUpfT0+KCR7eD8udXJsfSlgXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMudXJsU2VydmljZS5jdXJyZW50Um91dGVVcmwkLm5leHQodGhpcy5yb3V0ZXIudXJsKTtcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2Uucm91dGluZ0hpc3RvcnkkLnN1YnNjcmliZSh4ID0+IHRoaXMucm91dGluZ0hpc3RvcnkgPSB4KVxyXG4gICAgICApXHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKChyb3V0ZXJFdmVudCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrUm91dGVyRXZlbnQocm91dGVyRXZlbnQgYXMgUm91dGVyRXZlbnQpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy51cmxTZXJ2aWNlLmN1cnJlbnRSb3V0ZVVybCQucGlwZShcclxuICAgICAgICAgIGZpbHRlcih4ID0+IHtcclxuICAgICAgICAgICAgaWYgKCEhdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dDb25maXJtRGlhbG9nJC52YWx1ZSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm4gISEhWycvJ10uaW5jbHVkZXMoeClcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpZ25vcmVkUGF0aHMgPSB0aGlzLnJvdXRpbmdTZXJ2aWNlLmlnbm9yZWRQYXRocyQudmFsdWU7XHJcbiAgICAgICAgICBjb25zdCBmdWxsRnVuY3Rpb25zID0gdGhpcy5yb3V0aW5nU2VydmljZS5mdWxsRnVuY3Rpb25zJC52YWx1ZT8uZmlsdGVyKGYgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gIWlnbm9yZWRQYXRocz8uaW5jbHVkZXMoZi5wYXRoKVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBjb25zdCBmdW5jdGlvbkZpbHRlciA9IGZ1bGxGdW5jdGlvbnMuZmlsdGVyKGYgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZi5wYXRoRnVsbE1hdGNoKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGYucGF0aCA9PT0geDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAvL3JldHVybiB4LmluZGV4T2YoZi5wYXRoKSA9PT0gMFxyXG5cclxuICAgICAgICAgICAgICAvLyBleHBlcmltZW50YWwgc2luY2UgMjAyNC0wNC0wMlxyXG4gICAgICAgICAgICAgIHJldHVybiB4LmluZGV4T2YoZi5wYXRoKSA+PSAwIC8vIGZvciBzb21lIGF1eGlsaWFyeSByb3V0ZXMsIGZvciBleCAuLi4ocG9wdXBBdXgyOm9ubGluZS11c2VycykgdG8gYmUgYWNjZXB0YWJsZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcImZ1bmN0aW9uRmlsdGVyXCIsIGlnbm9yZWRQYXRocylcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiZnVuY3Rpb25GaWx0ZXJcIiwgZnVuY3Rpb25GaWx0ZXIpXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcImZ1bmN0aW9uRmlsdGVyXCIsIGlnbm9yZWRQYXRocy5pbmNsdWRlcyhcIi9jbXMvc3lzdGVtL3VwZXJtaXNzaW9uLzBcIikpXHJcblxyXG4gICAgICAgICAgaWYgKHguaW5kZXhPZignL3Jvb3QnKSAhPT0gMCAmJiAhISFmdW5jdGlvbkZpbHRlci5sZW5ndGggJiYgISEhaWdub3JlZFBhdGhzLmluY2x1ZGVzKHgpICYmICEhdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmNsaWNrZWRJdGVtJC52YWx1ZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaXNSb290KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaWFsb2dJbnN0YW5jZU51bWJlciA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5kaWFsb2dDb25maXJtZWQkLm5leHQoe1xyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2VOdW1iZXI6IHRoaXMuZGlhbG9nSW5zdGFuY2VOdW1iZXIsXHJcbiAgICAgICAgICAgICAgICBjb25maXJtZWQ6IGZhbHNlXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNyZWF0ZU5ldyhcclxuICAgICAgICAgICAgICAgIEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9DT05GSVJNX0RJQUxPR19USVRMRSxcclxuICAgICAgICAgICAgICAgIEVudW1UcmFuc2xhdGVLZXkuWUVTLFxyXG4gICAgICAgICAgICAgICAgRW51bVRyYW5zbGF0ZUtleS5JR05PUkUsXHJcbiAgICAgICAgICAgICAgICBmYWxzZSxcclxuICAgICAgICAgICAgICAgIEVudW1UcmFuc2xhdGVLZXkuUk9PVF9DVVJSRU5UX1VSTF9ET0VTX05PVF9FWElTVF9JTl9BUFBfRlVOQ1RJT05fUEFUSF9ET19ZT1VfV0FOVF9UT19NQVAsXHJcbiAgICAgICAgICAgICAgICBbeF1cclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAoZnVuY3Rpb25GaWx0ZXIubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudEZ1bmN0aW9uJC5uZXh0KGZ1bmN0aW9uRmlsdGVyWzBdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcblxyXG4gICAgICAvLyB0cnkgdG8gc2V0IGN1cnJlbnQgZnVuY3Rpb24gaW1tZWRpYXRlbHkgd2hlbiB1c2VyIGhhcyBwcmVzc2VkIEY1XHJcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMucm91dGVyLnVybDtcclxuICAgICAgY29uc3QgaWdub3JlZFBhdGhzID0gdGhpcy5yb3V0aW5nU2VydmljZS5pZ25vcmVkUGF0aHMkLnZhbHVlO1xyXG4gICAgICBjb25zdCBmdWxsRnVuY3Rpb25zID0gdGhpcy5yb3V0aW5nU2VydmljZS5mdWxsRnVuY3Rpb25zJC52YWx1ZT8uZmlsdGVyKGYgPT4ge1xyXG4gICAgICAgIHJldHVybiAhaWdub3JlZFBhdGhzPy5pbmNsdWRlcyhmLnBhdGgpXHJcbiAgICAgIH0pO1xyXG4gICAgICBjb25zdCBmdW5jdGlvbkZpbHRlciA9IGZ1bGxGdW5jdGlvbnMuZmlsdGVyKGYgPT4ge1xyXG4gICAgICAgIGlmIChmLnBhdGhGdWxsTWF0Y2gpIHtcclxuICAgICAgICAgIHJldHVybiBmLnBhdGggPT09IHVybDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHVybC5pbmRleE9mKGYucGF0aCkgPT09IDBcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgIGlmICghIWZ1bmN0aW9uRmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICAgIGlmIChmdW5jdGlvbkZpbHRlci5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAgICAgdmFyIGZ1bmN0aW9uRmlsdGVyTGlua3M6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uRmlsdGVyLm1hcCh4ID0+IHtcclxuICAgICAgICAgICAgICBmdW5jdGlvbkZpbHRlckxpbmtzLnB1c2goeC5wYXRoICsgXCIgKFwiICsgKHgucGF0aEZ1bGxNYXRjaCA/IFwidMawxqFuZyDhu6luZyB0b8OgbiBwaOG6p25cIiA6IFwidMawxqFuZyDhu6luZyBwaOG6p24gYsOqbiB0csOhaVwiKSArIFwiKVwiKVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihcclxuICAgICAgICAgICAgICBgTmhp4buBdSBoxqFuIDAxIGNo4bupYyBuxINuZyBjw7luZyDEkWFuZyB0xrDGoW5nIOG7qW5nIHbhu5tpIMSRaeG7gXUgaMaw4bubbmcgJHt1cmx9OlxcbiR7SlNPTi5zdHJpbmdpZnkoZnVuY3Rpb25GaWx0ZXJMaW5rcywgbnVsbCwgMil9YCxcclxuICAgICAgICAgICAgICBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9uc1xyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBO4bq/dSBraMO0bmcgcGjhuqNpIElTX1JPT1QgY8Wpbmcga2jDtG5nIHBo4bqjaSBJU19BRE1JTiB0aMOsIMSRaeG7gXUgaMaw4bubbmcgduG7gSB0cmFuZyBjaOG7p1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pc1Jvb3QgJiYgIXRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmlzQWRtaW4pIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9ob21lJylcclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAvLyBLaeG7g20gdHJhIHhlbSBjw7MgcXV54buBbiB24bubaSBGdW5jdGlvbiBoaeG7h24gdOG6oWkgaGF5IGtow7RuZ1xyXG4gICAgICAgICAgY29uc3QgdHJ5RmluZCA9IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LnBlcm1pc3Npb25BY3Rpb25zLmZpbHRlcih4ID0+IHguZnVuY3Rpb25JZCA9PT0gZnVuY3Rpb25GaWx0ZXJbMF0uaWQpXHJcbiAgICAgICAgICAvLyBO4bq/dSBraMO0bmcgdMOsbSB0aOG6pXkgdsOgIGtow7RuZyBwaOG6o2kgSVNfUk9PVCBjxaluZyBraMO0bmcgcGjhuqNpIElTX0FETUlOIHRow6wgxJHGsGEgcmEgdGjDtG5nIGLDoW8gdsOgIMSRaeG7gXUgaMaw4bubbmcgduG7gSB0cmFuZyBjaOG7p1xyXG4gICAgICAgICAgLy8gXCIvYXV0aC9sb2dpblwiIMSRxrDhu6NjIGLhu48gcXVhXHJcbiAgICAgICAgICBpZiAoIXRyeUZpbmQ/Lmxlbmd0aCAmJiAhdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaXNSb290ICYmICF0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pc0FkbWluKSB7XHJcbiAgICAgICAgICAgIGlmICghKFtcIi9hdXRoL2xvZ2luXCIsIFwiL2hvbWVcIl0uaW5jbHVkZXMoZnVuY3Rpb25GaWx0ZXJbMF0ucGF0aCkpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoXHJcbiAgICAgICAgICAgICAgICBmdW5jdGlvbkZpbHRlclswXS5wYXRoICsgXCIgXCIgK1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tbHMudHJhbnMoJ0NPUkUuUEVSTUlTU0lPTi5USEVfUEFUSF9JU19OT1RfUEVSTUlUVEVEJyksXHJcbiAgICAgICAgICAgICAgICBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvaG9tZScpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLmN1cnJlbnRGdW5jdGlvbiQubmV4dChmdW5jdGlvbkZpbHRlclswXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG5cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBjaGVja1JvdXRlckV2ZW50KHJvdXRlckV2ZW50OiBSb3V0ZXJFdmVudCk6IHZvaWQge1xyXG5cclxuICAgIGlmIChyb3V0ZXJFdmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xyXG4gICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLm5hdmlnYXRpb25VcmwkLm5leHQocm91dGVyRXZlbnQudXJsKTtcclxuXHJcbiAgICAgIC8vIFNraXAgbmF2aWdhdGluZyBlZmZlY3Qgd2hlbiB0aGUgbmF2aWdhdGlvbiBzdGFydHMgd2l0aCAvY21zL3Byb2ZpbGUvYnVzaW5lc3Mvc3RhZmZwcm9maWxlXHJcbiAgICAgIGlmIChyb3V0ZXJFdmVudC51cmwuaW5kZXhPZihcIi9jbXMvcHJvZmlsZS9idXNpbmVzcy9zdGFmZnByb2ZpbGVcIikgIT09IDApIHtcclxuICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLm5hdmlnYXRpbmckLm5leHQodHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAocm91dGVyRXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcbiAgICAgIHRoaXMudXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG5cclxuICAgICAgaWYgKCEhdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaXNGaXJzdExvZ2luICYmIHRoaXMudXJsICE9PSAnL2Ntcy9jaGFuZ2UtcGFzc3dvcmQnKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydjbXMnLCAnY2hhbmdlLXBhc3N3b3JkJywgYnRvYSgodGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZSBhcyBJQXV0aERhdGEpLnJlZnJlc2hUb2tlbi51c2VyKV0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBuZXdSb3V0aW5nSGlzdG9yeTogSVJvdXRpbmdIaXN0b3J5SXRlbVtdID0gdGhpcy5yb3V0aW5nU2VydmljZS5yb3V0aW5nSGlzdG9yeSQudmFsdWU7XHJcbiAgICAgIG5ld1JvdXRpbmdIaXN0b3J5LnB1c2goeyBmdWxsVXJsOiB0aGlzLnVybCB9KTtcclxuICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5yb3V0aW5nSGlzdG9yeSQubmV4dChuZXdSb3V0aW5nSGlzdG9yeSk7XHJcblxyXG4gICAgICBjb25zdCB1c2VyQWN0aXZpdHkgPSB0aGlzLnVzZXJBY3Rpdml0eVNlcnZpY2UudXNlckFjdGl2aXR5JC52YWx1ZTtcclxuICAgICAgY29uc3QgYXV0aCA9IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU7XHJcblxyXG4gICAgICBjb25zdCBuZXdVc2VyQWN0aXZpdHkgPSB1c2VyQWN0aXZpdHkuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zaWQgIT09IGF1dGg/LmlkKVxyXG4gICAgICBjb25zdCBjb25uZWN0aW9uID0gdGhpcy5odWJDb25uZWN0aW9uU2VydmljZS5odWJDb25uZWN0aW9uJC52YWx1ZTtcclxuICAgICAgbmV3VXNlckFjdGl2aXR5LnB1c2goe1xyXG4gICAgICAgIHNpZDogYXV0aD8uZnVsbE5hbWUhLFxyXG4gICAgICAgIHVzZXJuYW1lOiBhdXRoPy51c2VyTmFtZSEsXHJcbiAgICAgICAgcGF0aG5hbWU6IHRoaXMudXJsLFxyXG4gICAgICAgIGF2YXRhcjogYXV0aD8uYXZhdGFyISxcclxuICAgICAgICBodWJDb25uZWN0aW9uSWQ6IGNvbm5lY3Rpb24/LmNvbm5lY3Rpb25JZCEsXHJcbiAgICAgICAgYWNjZXNzVGltZTogbmV3IERhdGUoKS5nZXRUaW1lKCksXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBjb25zdCBhY2Nlc3NNb21lbnQgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICBjb25zdCBhY2Nlc3NUaW1lID0gYWNjZXNzTW9tZW50LmdldFRpbWUoKTtcclxuXHJcbiAgICAgIGNvbnN0IGFjdGl2aXR5OiBJSHViQ29ubmVjdGlvbkFjdGl2aXR5ID0ge1xyXG4gICAgICAgIHNpZDogYXV0aD8uZnVsbE5hbWUhLFxyXG4gICAgICAgIHNpZ25hbFR5cGU6IEVudW1TaWduYWxSVHlwZS5BQ1RJVklUWSxcclxuICAgICAgICB1c2VybmFtZTogYXV0aD8udXNlck5hbWUhLFxyXG4gICAgICAgIGF2YXRhcjogYXV0aD8uYXZhdGFyISxcclxuICAgICAgICBtZXNzYWdlOiBgJHthdXRoPy51c2VyTmFtZX0gbmF2aWdhdGVkIHRvICR7bG9jYXRpb24ucGF0aG5hbWV9YCxcclxuICAgICAgICBsb2dpblRpbWU6IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmxvZ2luVGltZSEsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgc2lkOiBhdXRoPy5mdWxsTmFtZSxcclxuICAgICAgICAgIHVzZXJOYW1lOiBhdXRoPy51c2VyTmFtZSxcclxuICAgICAgICAgIHBhdGhuYW1lOiB0aGlzLnVybCxcclxuICAgICAgICAgIGF2YXRhcjogYXV0aD8uYXZhdGFyLFxyXG4gICAgICAgICAgaHViQ29ubmVjdGlvbklkOiBjb25uZWN0aW9uPy5jb25uZWN0aW9uSWQhLFxyXG4gICAgICAgICAgYWNjZXNzVGltZSxcclxuICAgICAgICAgIHVzZXJBY3Rpdml0eTogbmV3VXNlckFjdGl2aXR5LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8qIGlmIGxvZyBuZWVkZWRcclxuICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGNvbnN0IGxvZ1BheWxvYWQ6IElMb2dVc2VyQWN0aXZpdHkgPSB7XHJcbiAgICAgICAgY2xpZW50Q29kZTogJ1ZOUycsXHJcbiAgICAgICAgYXBwVHlwZTogJ1dFQkFQUCcsXHJcbiAgICAgICAgdXNlcm5hbWU6IGF1dGg/LnVzZXJOYW1lLFxyXG4gICAgICAgIHNpZDogYXV0aD8uZnVsbE5hbWUsXHJcbiAgICAgICAgbG9naW5UaW1lOiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5sb2dpblRpbWUgPyBuZXcgRGF0ZSh0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5sb2dpblRpbWUpIDogdW5kZWZpbmVkLFxyXG4gICAgICAgIGFjY2Vzc1RpbWU6IGFjY2Vzc01vbWVudCxcclxuICAgICAgICBwYXRoOiB3aW5kb3cubG9jYXRpb24uaHJlZixcclxuICAgICAgICBwYXRobmFtZTogJydcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2xvY2FsaG9zdCcpIDwgMCAmJiB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCcud2ViLmFwcCcpIDwgMCkge1xyXG4gICAgICAgIHRoaXMuYXBwU2VydmljZS5wb3N0RnVsbFVybChcImh0dHBzOi8vYmxvZy50YW5sZWljYS5jb20vYXBpL0xvZ1VzZXJBY3Rpdml0eS9DcmVhdGVcIiwgbG9nUGF5bG9hZCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgICovXHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhcIk5hdmlnYXRpb25FbmQgYWN0aXZpdHlcIiwgYWN0aXZpdHkpXHJcbiAgICAgIGlmICghIWNvbm5lY3Rpb24pIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgY29ubmVjdGlvbj8uaW52b2tlKFwiU2VuZE1lc3NhZ2VcIiwgYWN0aXZpdHkpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAocm91dGVyRXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kIHx8XHJcbiAgICAgIHJvdXRlckV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkNhbmNlbCB8fFxyXG4gICAgICByb3V0ZXJFdmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FcnJvcikge1xyXG5cclxuXHJcbiAgICAgIGNvbnNvbGUuZ3JvdXAoXCJyb3V0ZXJFdmVudC51cmxcIilcclxuICAgICAgY29uc29sZS5sb2cocm91dGVyRXZlbnQudXJsKVxyXG4gICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLnJvdXRpbmdTZXJ2aWNlLnBvcnRhbFJvdXRlcyQudmFsdWUuZmlsdGVyKHggPT4geC5wYXRoID09PSByb3V0ZXJFdmVudC51cmwpO1xyXG4gICAgICBpZiAoZmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICAgIGlmICh0aGlzLmxhbmcgPT09IFwidmlcIikge1xyXG4gICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5jdXJyZW50U2NyZWVuQ2FwdGlvbiQubmV4dChmaWx0ZXJbMF0udmkpXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmxhbmcgPT09IFwiZW5cIikge1xyXG4gICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5jdXJyZW50U2NyZWVuQ2FwdGlvbiQubmV4dChmaWx0ZXJbMF0uZW4pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudFNjcmVlbkNhcHRpb24kLm5leHQoZmlsdGVyWzBdLnZpKVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLmN1cnJlbnRTY3JlZW5DYXB0aW9uJC5uZXh0KCcnKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmdyb3VwRW5kKClcclxuXHJcbiAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UubmF2aWdhdGluZyQubmV4dChmYWxzZSk7XHJcblxyXG4gICAgICBzd2l0Y2ggKHRoaXMuYXBwQ29uZmlnU2VydmljZS5BUFBfVFlQRSkge1xyXG4gICAgICAgIGNhc2UgXCJXRUJBUFBcIjpcclxuXHJcbiAgICAgICAgICB0aGlzLnVybFNlcnZpY2UucHJldmlvdXNSb3V0ZVVybCQubmV4dCh0aGlzLnVybFNlcnZpY2UuY3VycmVudFJvdXRlVXJsJC52YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLnVybFNlcnZpY2UuY3VycmVudFJvdXRlVXJsJC5uZXh0KHJvdXRlckV2ZW50LnVybCk7XHJcblxyXG4gICAgICAgICAgLy8gdGhpcy5sYXlvdXRTZXJ2aWNlLmxlZnRiYXJSZWR1Y2VkJC5uZXh0KHRydWUpOyAvLyBpZiB3ZSB3YW50IGF1dG8tcmVkdWNlIHRoZSBtZW51LCB1bmNvbW1lbnQgdGhpcyBsaW5lXHJcbiAgICAgICAgICAvKlxyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlZnRCYXIgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zaXplLWxlZnQtYmFyLWN1cnJlbnQtd2lkdGgnKS5yZXBsYWNlKCdweCcsICcnKTtcclxuICAgICAgICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmxlZnRCYXJDdXJyZW50V2lkdGgkLm5leHQoTnVtYmVyKGxlZnRCYXIpKVxyXG4gICAgICAgICAgICB0aGlzLmxheW91dFNlcnZpY2UuY29udGVudENvbnRhaW5lcldpZHRoJC5uZXh0KHdpbmRvdy5pbm5lcldpZHRoIC0gTnVtYmVyKGxlZnRCYXIpKVxyXG4gICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tY29udGVudC1jb250YWluZXItd2lkdGgnLCB3aW5kb3cuaW5uZXJXaWR0aCAtIE51bWJlcihsZWZ0QmFyKSArICdweCcpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgKi9cclxuXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBcIlBPUlRBTFwiOlxyXG5cclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiY2hlY2tSb3V0ZXJFdmVudFwiLCByb3V0ZXJFdmVudC51cmwpO1xyXG5cclxuICAgICAgICAgIGlmICghcm91dGVyRXZlbnQudXJsLmVuZHNXaXRoKCctZWRpdCcpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXJsU2VydmljZS5wcmV2aW91c1JvdXRlVXJsJC5uZXh0KHRoaXMudXJsU2VydmljZS5jdXJyZW50Um91dGVVcmwkLnZhbHVlKTtcclxuICAgICAgICAgICAgdGhpcy51cmxTZXJ2aWNlLmN1cnJlbnRSb3V0ZVVybCQubmV4dChyb3V0ZXJFdmVudC51cmwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudXJsU2VydmljZS5jdXJyZW50Um91dGVVcmwkLm5leHQocm91dGVyRXZlbnQudXJsKVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldEFjdGl2aXR5SGlzdG9yeSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGF1dGggPSB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlO1xyXG4gICAgaWYgKCFhdXRoPy5pc0FkbWluKSByZXR1cm47XHJcbiAgICBjb25zdCBjb25uZWN0aW9uID0gdGhpcy5odWJDb25uZWN0aW9uU2VydmljZS5odWJDb25uZWN0aW9uJC52YWx1ZTtcclxuICAgIGNvbnN0IGFjdGl2aXR5OiBJSHViQ29ubmVjdGlvbkFjdGl2aXR5ID0ge1xyXG4gICAgICBzaWQ6IGF1dGg/LmZ1bGxOYW1lISxcclxuICAgICAgc2lnbmFsVHlwZTogRW51bVNpZ25hbFJUeXBlLkFDVElWSVRZX0hJU1RPUllfUkVTRVQsXHJcbiAgICAgIHVzZXJuYW1lOiBhdXRoPy51c2VyTmFtZSEsXHJcbiAgICAgIGF2YXRhcjogYXV0aD8uYXZhdGFyISxcclxuICAgICAgbWVzc2FnZTogYCR7YXV0aD8udXNlck5hbWV9IGhhcyByZXNldCBhY3Rpdml0eSBoaXN0b3J5YCxcclxuICAgICAgbG9naW5UaW1lOiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5sb2dpblRpbWUhLFxyXG4gICAgICBkYXRhOiBudWxsLFxyXG4gICAgfVxyXG5cclxuICAgIGlmICghIWNvbm5lY3Rpb24pIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25uZWN0aW9uPy5pbnZva2UoXCJTZW5kTWVzc2FnZVwiLCBhY3Rpdml0eSk7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGUpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLm1hcCh4ID0+IHg/LnVuc3Vic2NyaWJlKCkpXHJcbiAgfVxyXG5cclxufVxyXG4iLCIiXX0=
@@ -139,7 +139,7 @@ export class CorePaginationFullComponent extends BaseComponent {
139
139
  this.subscriptions.map(x => x?.unsubscribe());
140
140
  }
141
141
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CorePaginationFullComponent, deps: [{ token: i1.MultiLanguageService }], target: i0.ɵɵFactoryTarget.Component }); }
142
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: CorePaginationFullComponent, isStandalone: true, selector: "core-pagination-full", inputs: { currentPage$: "currentPage$", height: "height", pageCount: "pageCount", loading: "loading", showAdd: "showAdd", background: "background", pageSize$: "pageSize$", innerBodyCount$: "innerBodyCount$", pagination$: "pagination$", fixedPageSize: "fixedPageSize" }, outputs: { onClickAdd: "onClickAdd", onCurrentPageChange: "onCurrentPageChange" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "current", first: true, predicate: ["current"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #container class=\"pagination-full-container roboto-font d-flex-between\">\r\n <div class=\"custom-select-container\" *ngIf=\"!!!fixedPageSize\">\r\n <!-- <label>\r\n {{'UI.COMPONENT.CORE-PAGINATION-TOTAL.COUNT' | translate: lang }}\r\n </label>&nbsp;<span>{{innerBodyCount$.value}}.</span>&nbsp; -->\r\n <label style=\"color:#848484\">{{ 'UI.COMPONENT.CORE-PAGINATION-FULL.VIEW' | translate: lang }}&nbsp;&nbsp;</label>\r\n <select class=\"custom-select\" [(ngModel)]=\"selectedSize\" (ngModelChange)=\"onSizeChange($event)\">\r\n <option *ngFor=\"let size of SizeChanger\">{{size}}</option>\r\n </select>\r\n <label style=\"color:#848484\">&nbsp;/{{innerBodyCount$.value}}&nbsp;{{ 'UI.COMPONENT.CORE-PAGINATION-FULL.RESULTS' | translate: lang }}</label>\r\n </div>\r\n <div class=\"pagination-container\">\r\n <div class=\"first\" [class.disable]=\"!!!pageCount || currentPage$.value===1\" (click)=\"goFirst()\"></div>\r\n <div class=\"previous\" [class.disable]=\"!!!pageCount || currentPage$.value===1\" (click)=\"goPrevious()\"></div>\r\n <div #current *ngFor=\"let item of displayPageCount\" [class.hide-item]=\"item !== currentPage$.value\">\r\n <div class=\"d-flex-center\">\r\n <!-- <i class=\"feather-aperture aperture\" [class.visible]=\"loading\"\r\n [ngStyle]=\"{\r\n animationName: navigationDirection === 1 ? 'rotate-current-content-fw' : 'rotate-current-content-bw'\r\n }\"\r\n ></i> -->\r\n <span (click)=\"clickPageNumber(item)\" [class.current]=\"item == currentPage$.value\" [class.not-current]=\"item !== currentPage$.value\">{{ item }}</span>\r\n\r\n </div>\r\n </div>\r\n <div class=\"next\" [class.disable]=\"!!!pageCount || currentPage$.value===pageCount\" (click)=\"goNext()\"></div>\r\n <div class=\"last\" [class.disable]=\"!!!pageCount || currentPage$.value===pageCount\" (click)=\"goLast()\"></div>\r\n </div>\r\n <!-- <a (click)=\"onClickAddLocal()\" *ngIf=\"showAdd\">\r\n <div class=\"add\"></div>\r\n </a> -->\r\n</div>", styles: [".pagination-full-container{--bg: #848484;--color: white;--height: 30px;--button-size: 30px;--font-size: 12px;--aperture-size: 36px;background-color:#fff}.pagination-full-container *{font-size:13px!important}@keyframes rotate-current-content-fw{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes rotate-current-content-bw{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}.pagination-full-container select{border-color:#848484;color:#848484}.pagination-full-container span.current,.pagination-full-container span.not-current{display:inline-flex;align-items:center;justify-content:center}.pagination-full-container .add:before{font-family:feather;content:\"\\e9b1\";font-weight:700;font-size:var(--font-size);color:#fff;background:var(--bg);width:var(--button-size);height:var(--button-size);display:flex;align-items:center;justify-content:center;border-top-right-radius:50%;border-bottom-right-radius:50%}.pagination-full-container .custom-select{width:80px;height:28px}.pagination-full-container .custom-select-container{color:#a5a4a4;margin-right:12px;background-color:#fff}.pagination-full-container .pagination-container{height:var(--height);display:flex;align-items:center;justify-content:center;background-color:#fff}.pagination-full-container .pagination-container>div{display:inline-block;cursor:pointer;margin-right:5px}.pagination-full-container .pagination-container .disable{cursor:default;opacity:.5!important}.pagination-full-container .pagination-container .current{border-radius:50%;margin:0;opacity:1;display:flex;align-items:center;justify-content:center}.pagination-full-container .pagination-container .not-current{border-radius:50%;border:1px solid #D1D1D1;opacity:1;display:flex;justify-content:center}.pagination-full-container .pagination-container .not-current:hover{border-radius:50%;background:#a5a4a4;color:#fff;border:1px solid white}.pagination-full-container .pagination-container .aperture{width:var(--aperture-size);height:var(--aperture-size);animation:1s infinite linear;opacity:0;transition:.25s ease-out}.pagination-full-container .pagination-container .aperture:before{font-size:var(--aperture-size)}.pagination-full-container .pagination-container .visible{opacity:1;transition:.25s ease-out}.pagination-full-container .pagination-container .current,.pagination-full-container .pagination-container .loading{width:var(--button-size);height:var(--button-size);background:#848484!important;color:var(--color)}.pagination-full-container .pagination-container .not-current{width:var(--button-size);height:var(--button-size);background:#fff;color:#848484}.pagination-full-container .pagination-container .current-text{position:absolute}.pagination-full-container .pagination-container .not-current>div,.pagination-full-container .pagination-container .current>div{width:var(--button-size);height:var(--button-size);display:flex;align-items:center;justify-content:center}.pagination-full-container .pagination-container div:before{font-family:feather;font-size:var(--font-size);width:var(--button-size);height:var(--button-size);background:var(--bg);color:var(--color);display:flex;align-items:center;justify-content:center}.pagination-full-container .pagination-container .first:before{content:\"\\e933\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #D1D1D1}.pagination-full-container .pagination-container .first.disable:hover:before{content:\"\\e933\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #A5A4A4}.pagination-full-container .pagination-container .first:hover:before{content:\"\\e933\";border-radius:50%;background:#a5a4a4;color:#fff;border:1px solid white}.pagination-full-container .pagination-container .previous.disable:hover:before{content:\"\\e92f\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #A5A4A4}.pagination-full-container .pagination-container .previous:before{content:\"\\e92f\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #D1D1D1}.pagination-full-container .pagination-container .previous:hover:before{content:\"\\e92f\";border-radius:50%;background:#a5a4a4;color:#fff;border:1px solid white}.pagination-full-container .pagination-container .next:before{content:\"\\e930\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #D1D1D1}.pagination-full-container .pagination-container .next.disable:hover:before{content:\"\\e930\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #A5A4A4}.pagination-full-container .pagination-container .next:hover:before{content:\"\\e930\";border-radius:50%;background:#a5a4a4;color:#fff;border:1px solid white}.pagination-full-container .pagination-container .last.disable:hover:before{content:\"\\e934\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #A5A4A4}.pagination-full-container .pagination-container .last:before{content:\"\\e934\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #D1D1D1}.pagination-full-container .pagination-container .last:hover:before{content:\"\\e934\";border-radius:50%;background:#a5a4a4;color:#fff;border:1px solid white}@media only screen and (max-width: 768px){.custom-select-container{display:none}}@media only screen and (max-width: 576px){.pagination-container .pagination-container .not-current{display:none}.hide-item{display:none!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
142
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: CorePaginationFullComponent, isStandalone: true, selector: "core-pagination-full", inputs: { currentPage$: "currentPage$", height: "height", pageCount: "pageCount", loading: "loading", showAdd: "showAdd", background: "background", pageSize$: "pageSize$", innerBodyCount$: "innerBodyCount$", pagination$: "pagination$", fixedPageSize: "fixedPageSize" }, outputs: { onClickAdd: "onClickAdd", onCurrentPageChange: "onCurrentPageChange" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "current", first: true, predicate: ["current"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #container class=\"pagination-full-container roboto-font d-flex-between\">\r\n <div class=\"custom-select-container\">\r\n <!-- <label>\r\n {{'UI.COMPONENT.CORE-PAGINATION-TOTAL.COUNT' | translate: lang }}\r\n </label>&nbsp;<span>{{innerBodyCount$.value}}.</span>&nbsp; -->\r\n <label style=\"color:#848484\">{{ 'UI.COMPONENT.CORE-PAGINATION-FULL.VIEW' | translate: lang }}&nbsp;&nbsp;</label>\r\n <select class=\"custom-select\" [(ngModel)]=\"selectedSize\" (ngModelChange)=\"onSizeChange($event)\" [disabled]=\"!!fixedPageSize\">\r\n <option *ngFor=\"let size of SizeChanger\">{{size}}</option>\r\n </select>\r\n <label style=\"color:#848484\">&nbsp;/{{innerBodyCount$.value}}&nbsp;{{ 'UI.COMPONENT.CORE-PAGINATION-FULL.RESULTS' | translate: lang }}</label>\r\n </div>\r\n <div class=\"pagination-container\">\r\n <div class=\"first\" [class.disable]=\"!!!pageCount || currentPage$.value===1\" (click)=\"goFirst()\"></div>\r\n <div class=\"previous\" [class.disable]=\"!!!pageCount || currentPage$.value===1\" (click)=\"goPrevious()\"></div>\r\n <div #current *ngFor=\"let item of displayPageCount\" [class.hide-item]=\"item !== currentPage$.value\">\r\n <div class=\"d-flex-center\">\r\n <!-- <i class=\"feather-aperture aperture\" [class.visible]=\"loading\"\r\n [ngStyle]=\"{\r\n animationName: navigationDirection === 1 ? 'rotate-current-content-fw' : 'rotate-current-content-bw'\r\n }\"\r\n ></i> -->\r\n <span (click)=\"clickPageNumber(item)\" [class.current]=\"item == currentPage$.value\" [class.not-current]=\"item !== currentPage$.value\">{{ item }}</span>\r\n\r\n </div>\r\n </div>\r\n <div class=\"next\" [class.disable]=\"!!!pageCount || currentPage$.value===pageCount\" (click)=\"goNext()\"></div>\r\n <div class=\"last\" [class.disable]=\"!!!pageCount || currentPage$.value===pageCount\" (click)=\"goLast()\"></div>\r\n </div>\r\n <!-- <a (click)=\"onClickAddLocal()\" *ngIf=\"showAdd\">\r\n <div class=\"add\"></div>\r\n </a> -->\r\n</div>", styles: [".pagination-full-container{--bg: #848484;--color: white;--height: 30px;--button-size: 30px;--font-size: 12px;--aperture-size: 36px;background-color:#fff}.pagination-full-container *{font-size:13px!important}@keyframes rotate-current-content-fw{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes rotate-current-content-bw{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}.pagination-full-container select{border-color:#848484;color:#848484}.pagination-full-container span.current,.pagination-full-container span.not-current{display:inline-flex;align-items:center;justify-content:center}.pagination-full-container .add:before{font-family:feather;content:\"\\e9b1\";font-weight:700;font-size:var(--font-size);color:#fff;background:var(--bg);width:var(--button-size);height:var(--button-size);display:flex;align-items:center;justify-content:center;border-top-right-radius:50%;border-bottom-right-radius:50%}.pagination-full-container .custom-select{width:80px;height:28px}.pagination-full-container .custom-select-container{color:#a5a4a4;margin-right:12px;background-color:#fff}.pagination-full-container .pagination-container{height:var(--height);display:flex;align-items:center;justify-content:center;background-color:#fff}.pagination-full-container .pagination-container>div{display:inline-block;cursor:pointer;margin-right:5px}.pagination-full-container .pagination-container .disable{cursor:default;opacity:.5!important}.pagination-full-container .pagination-container .current{border-radius:50%;margin:0;opacity:1;display:flex;align-items:center;justify-content:center}.pagination-full-container .pagination-container .not-current{border-radius:50%;border:1px solid #D1D1D1;opacity:1;display:flex;justify-content:center}.pagination-full-container .pagination-container .not-current:hover{border-radius:50%;background:#a5a4a4;color:#fff;border:1px solid white}.pagination-full-container .pagination-container .aperture{width:var(--aperture-size);height:var(--aperture-size);animation:1s infinite linear;opacity:0;transition:.25s ease-out}.pagination-full-container .pagination-container .aperture:before{font-size:var(--aperture-size)}.pagination-full-container .pagination-container .visible{opacity:1;transition:.25s ease-out}.pagination-full-container .pagination-container .current,.pagination-full-container .pagination-container .loading{width:var(--button-size);height:var(--button-size);background:#848484!important;color:var(--color)}.pagination-full-container .pagination-container .not-current{width:var(--button-size);height:var(--button-size);background:#fff;color:#848484}.pagination-full-container .pagination-container .current-text{position:absolute}.pagination-full-container .pagination-container .not-current>div,.pagination-full-container .pagination-container .current>div{width:var(--button-size);height:var(--button-size);display:flex;align-items:center;justify-content:center}.pagination-full-container .pagination-container div:before{font-family:feather;font-size:var(--font-size);width:var(--button-size);height:var(--button-size);background:var(--bg);color:var(--color);display:flex;align-items:center;justify-content:center}.pagination-full-container .pagination-container .first:before{content:\"\\e933\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #D1D1D1}.pagination-full-container .pagination-container .first.disable:hover:before{content:\"\\e933\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #A5A4A4}.pagination-full-container .pagination-container .first:hover:before{content:\"\\e933\";border-radius:50%;background:#a5a4a4;color:#fff;border:1px solid white}.pagination-full-container .pagination-container .previous.disable:hover:before{content:\"\\e92f\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #A5A4A4}.pagination-full-container .pagination-container .previous:before{content:\"\\e92f\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #D1D1D1}.pagination-full-container .pagination-container .previous:hover:before{content:\"\\e92f\";border-radius:50%;background:#a5a4a4;color:#fff;border:1px solid white}.pagination-full-container .pagination-container .next:before{content:\"\\e930\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #D1D1D1}.pagination-full-container .pagination-container .next.disable:hover:before{content:\"\\e930\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #A5A4A4}.pagination-full-container .pagination-container .next:hover:before{content:\"\\e930\";border-radius:50%;background:#a5a4a4;color:#fff;border:1px solid white}.pagination-full-container .pagination-container .last.disable:hover:before{content:\"\\e934\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #A5A4A4}.pagination-full-container .pagination-container .last:before{content:\"\\e934\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #D1D1D1}.pagination-full-container .pagination-container .last:hover:before{content:\"\\e934\";border-radius:50%;background:#a5a4a4;color:#fff;border:1px solid white}@media only screen and (max-width: 768px){.custom-select-container{display:none}}@media only screen and (max-width: 576px){.pagination-container .pagination-container .not-current{display:none}.hide-item{display:none!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
143
143
  }
144
144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CorePaginationFullComponent, decorators: [{
145
145
  type: Component,
@@ -147,7 +147,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
147
147
  CommonModule,
148
148
  FormsModule,
149
149
  TranslatePipe
150
- ], template: "<div #container class=\"pagination-full-container roboto-font d-flex-between\">\r\n <div class=\"custom-select-container\" *ngIf=\"!!!fixedPageSize\">\r\n <!-- <label>\r\n {{'UI.COMPONENT.CORE-PAGINATION-TOTAL.COUNT' | translate: lang }}\r\n </label>&nbsp;<span>{{innerBodyCount$.value}}.</span>&nbsp; -->\r\n <label style=\"color:#848484\">{{ 'UI.COMPONENT.CORE-PAGINATION-FULL.VIEW' | translate: lang }}&nbsp;&nbsp;</label>\r\n <select class=\"custom-select\" [(ngModel)]=\"selectedSize\" (ngModelChange)=\"onSizeChange($event)\">\r\n <option *ngFor=\"let size of SizeChanger\">{{size}}</option>\r\n </select>\r\n <label style=\"color:#848484\">&nbsp;/{{innerBodyCount$.value}}&nbsp;{{ 'UI.COMPONENT.CORE-PAGINATION-FULL.RESULTS' | translate: lang }}</label>\r\n </div>\r\n <div class=\"pagination-container\">\r\n <div class=\"first\" [class.disable]=\"!!!pageCount || currentPage$.value===1\" (click)=\"goFirst()\"></div>\r\n <div class=\"previous\" [class.disable]=\"!!!pageCount || currentPage$.value===1\" (click)=\"goPrevious()\"></div>\r\n <div #current *ngFor=\"let item of displayPageCount\" [class.hide-item]=\"item !== currentPage$.value\">\r\n <div class=\"d-flex-center\">\r\n <!-- <i class=\"feather-aperture aperture\" [class.visible]=\"loading\"\r\n [ngStyle]=\"{\r\n animationName: navigationDirection === 1 ? 'rotate-current-content-fw' : 'rotate-current-content-bw'\r\n }\"\r\n ></i> -->\r\n <span (click)=\"clickPageNumber(item)\" [class.current]=\"item == currentPage$.value\" [class.not-current]=\"item !== currentPage$.value\">{{ item }}</span>\r\n\r\n </div>\r\n </div>\r\n <div class=\"next\" [class.disable]=\"!!!pageCount || currentPage$.value===pageCount\" (click)=\"goNext()\"></div>\r\n <div class=\"last\" [class.disable]=\"!!!pageCount || currentPage$.value===pageCount\" (click)=\"goLast()\"></div>\r\n </div>\r\n <!-- <a (click)=\"onClickAddLocal()\" *ngIf=\"showAdd\">\r\n <div class=\"add\"></div>\r\n </a> -->\r\n</div>", styles: [".pagination-full-container{--bg: #848484;--color: white;--height: 30px;--button-size: 30px;--font-size: 12px;--aperture-size: 36px;background-color:#fff}.pagination-full-container *{font-size:13px!important}@keyframes rotate-current-content-fw{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes rotate-current-content-bw{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}.pagination-full-container select{border-color:#848484;color:#848484}.pagination-full-container span.current,.pagination-full-container span.not-current{display:inline-flex;align-items:center;justify-content:center}.pagination-full-container .add:before{font-family:feather;content:\"\\e9b1\";font-weight:700;font-size:var(--font-size);color:#fff;background:var(--bg);width:var(--button-size);height:var(--button-size);display:flex;align-items:center;justify-content:center;border-top-right-radius:50%;border-bottom-right-radius:50%}.pagination-full-container .custom-select{width:80px;height:28px}.pagination-full-container .custom-select-container{color:#a5a4a4;margin-right:12px;background-color:#fff}.pagination-full-container .pagination-container{height:var(--height);display:flex;align-items:center;justify-content:center;background-color:#fff}.pagination-full-container .pagination-container>div{display:inline-block;cursor:pointer;margin-right:5px}.pagination-full-container .pagination-container .disable{cursor:default;opacity:.5!important}.pagination-full-container .pagination-container .current{border-radius:50%;margin:0;opacity:1;display:flex;align-items:center;justify-content:center}.pagination-full-container .pagination-container .not-current{border-radius:50%;border:1px solid #D1D1D1;opacity:1;display:flex;justify-content:center}.pagination-full-container .pagination-container .not-current:hover{border-radius:50%;background:#a5a4a4;color:#fff;border:1px solid white}.pagination-full-container .pagination-container .aperture{width:var(--aperture-size);height:var(--aperture-size);animation:1s infinite linear;opacity:0;transition:.25s ease-out}.pagination-full-container .pagination-container .aperture:before{font-size:var(--aperture-size)}.pagination-full-container .pagination-container .visible{opacity:1;transition:.25s ease-out}.pagination-full-container .pagination-container .current,.pagination-full-container .pagination-container .loading{width:var(--button-size);height:var(--button-size);background:#848484!important;color:var(--color)}.pagination-full-container .pagination-container .not-current{width:var(--button-size);height:var(--button-size);background:#fff;color:#848484}.pagination-full-container .pagination-container .current-text{position:absolute}.pagination-full-container .pagination-container .not-current>div,.pagination-full-container .pagination-container .current>div{width:var(--button-size);height:var(--button-size);display:flex;align-items:center;justify-content:center}.pagination-full-container .pagination-container div:before{font-family:feather;font-size:var(--font-size);width:var(--button-size);height:var(--button-size);background:var(--bg);color:var(--color);display:flex;align-items:center;justify-content:center}.pagination-full-container .pagination-container .first:before{content:\"\\e933\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #D1D1D1}.pagination-full-container .pagination-container .first.disable:hover:before{content:\"\\e933\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #A5A4A4}.pagination-full-container .pagination-container .first:hover:before{content:\"\\e933\";border-radius:50%;background:#a5a4a4;color:#fff;border:1px solid white}.pagination-full-container .pagination-container .previous.disable:hover:before{content:\"\\e92f\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #A5A4A4}.pagination-full-container .pagination-container .previous:before{content:\"\\e92f\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #D1D1D1}.pagination-full-container .pagination-container .previous:hover:before{content:\"\\e92f\";border-radius:50%;background:#a5a4a4;color:#fff;border:1px solid white}.pagination-full-container .pagination-container .next:before{content:\"\\e930\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #D1D1D1}.pagination-full-container .pagination-container .next.disable:hover:before{content:\"\\e930\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #A5A4A4}.pagination-full-container .pagination-container .next:hover:before{content:\"\\e930\";border-radius:50%;background:#a5a4a4;color:#fff;border:1px solid white}.pagination-full-container .pagination-container .last.disable:hover:before{content:\"\\e934\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #A5A4A4}.pagination-full-container .pagination-container .last:before{content:\"\\e934\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #D1D1D1}.pagination-full-container .pagination-container .last:hover:before{content:\"\\e934\";border-radius:50%;background:#a5a4a4;color:#fff;border:1px solid white}@media only screen and (max-width: 768px){.custom-select-container{display:none}}@media only screen and (max-width: 576px){.pagination-container .pagination-container .not-current{display:none}.hide-item{display:none!important}}\n"] }]
150
+ ], template: "<div #container class=\"pagination-full-container roboto-font d-flex-between\">\r\n <div class=\"custom-select-container\">\r\n <!-- <label>\r\n {{'UI.COMPONENT.CORE-PAGINATION-TOTAL.COUNT' | translate: lang }}\r\n </label>&nbsp;<span>{{innerBodyCount$.value}}.</span>&nbsp; -->\r\n <label style=\"color:#848484\">{{ 'UI.COMPONENT.CORE-PAGINATION-FULL.VIEW' | translate: lang }}&nbsp;&nbsp;</label>\r\n <select class=\"custom-select\" [(ngModel)]=\"selectedSize\" (ngModelChange)=\"onSizeChange($event)\" [disabled]=\"!!fixedPageSize\">\r\n <option *ngFor=\"let size of SizeChanger\">{{size}}</option>\r\n </select>\r\n <label style=\"color:#848484\">&nbsp;/{{innerBodyCount$.value}}&nbsp;{{ 'UI.COMPONENT.CORE-PAGINATION-FULL.RESULTS' | translate: lang }}</label>\r\n </div>\r\n <div class=\"pagination-container\">\r\n <div class=\"first\" [class.disable]=\"!!!pageCount || currentPage$.value===1\" (click)=\"goFirst()\"></div>\r\n <div class=\"previous\" [class.disable]=\"!!!pageCount || currentPage$.value===1\" (click)=\"goPrevious()\"></div>\r\n <div #current *ngFor=\"let item of displayPageCount\" [class.hide-item]=\"item !== currentPage$.value\">\r\n <div class=\"d-flex-center\">\r\n <!-- <i class=\"feather-aperture aperture\" [class.visible]=\"loading\"\r\n [ngStyle]=\"{\r\n animationName: navigationDirection === 1 ? 'rotate-current-content-fw' : 'rotate-current-content-bw'\r\n }\"\r\n ></i> -->\r\n <span (click)=\"clickPageNumber(item)\" [class.current]=\"item == currentPage$.value\" [class.not-current]=\"item !== currentPage$.value\">{{ item }}</span>\r\n\r\n </div>\r\n </div>\r\n <div class=\"next\" [class.disable]=\"!!!pageCount || currentPage$.value===pageCount\" (click)=\"goNext()\"></div>\r\n <div class=\"last\" [class.disable]=\"!!!pageCount || currentPage$.value===pageCount\" (click)=\"goLast()\"></div>\r\n </div>\r\n <!-- <a (click)=\"onClickAddLocal()\" *ngIf=\"showAdd\">\r\n <div class=\"add\"></div>\r\n </a> -->\r\n</div>", styles: [".pagination-full-container{--bg: #848484;--color: white;--height: 30px;--button-size: 30px;--font-size: 12px;--aperture-size: 36px;background-color:#fff}.pagination-full-container *{font-size:13px!important}@keyframes rotate-current-content-fw{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes rotate-current-content-bw{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}.pagination-full-container select{border-color:#848484;color:#848484}.pagination-full-container span.current,.pagination-full-container span.not-current{display:inline-flex;align-items:center;justify-content:center}.pagination-full-container .add:before{font-family:feather;content:\"\\e9b1\";font-weight:700;font-size:var(--font-size);color:#fff;background:var(--bg);width:var(--button-size);height:var(--button-size);display:flex;align-items:center;justify-content:center;border-top-right-radius:50%;border-bottom-right-radius:50%}.pagination-full-container .custom-select{width:80px;height:28px}.pagination-full-container .custom-select-container{color:#a5a4a4;margin-right:12px;background-color:#fff}.pagination-full-container .pagination-container{height:var(--height);display:flex;align-items:center;justify-content:center;background-color:#fff}.pagination-full-container .pagination-container>div{display:inline-block;cursor:pointer;margin-right:5px}.pagination-full-container .pagination-container .disable{cursor:default;opacity:.5!important}.pagination-full-container .pagination-container .current{border-radius:50%;margin:0;opacity:1;display:flex;align-items:center;justify-content:center}.pagination-full-container .pagination-container .not-current{border-radius:50%;border:1px solid #D1D1D1;opacity:1;display:flex;justify-content:center}.pagination-full-container .pagination-container .not-current:hover{border-radius:50%;background:#a5a4a4;color:#fff;border:1px solid white}.pagination-full-container .pagination-container .aperture{width:var(--aperture-size);height:var(--aperture-size);animation:1s infinite linear;opacity:0;transition:.25s ease-out}.pagination-full-container .pagination-container .aperture:before{font-size:var(--aperture-size)}.pagination-full-container .pagination-container .visible{opacity:1;transition:.25s ease-out}.pagination-full-container .pagination-container .current,.pagination-full-container .pagination-container .loading{width:var(--button-size);height:var(--button-size);background:#848484!important;color:var(--color)}.pagination-full-container .pagination-container .not-current{width:var(--button-size);height:var(--button-size);background:#fff;color:#848484}.pagination-full-container .pagination-container .current-text{position:absolute}.pagination-full-container .pagination-container .not-current>div,.pagination-full-container .pagination-container .current>div{width:var(--button-size);height:var(--button-size);display:flex;align-items:center;justify-content:center}.pagination-full-container .pagination-container div:before{font-family:feather;font-size:var(--font-size);width:var(--button-size);height:var(--button-size);background:var(--bg);color:var(--color);display:flex;align-items:center;justify-content:center}.pagination-full-container .pagination-container .first:before{content:\"\\e933\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #D1D1D1}.pagination-full-container .pagination-container .first.disable:hover:before{content:\"\\e933\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #A5A4A4}.pagination-full-container .pagination-container .first:hover:before{content:\"\\e933\";border-radius:50%;background:#a5a4a4;color:#fff;border:1px solid white}.pagination-full-container .pagination-container .previous.disable:hover:before{content:\"\\e92f\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #A5A4A4}.pagination-full-container .pagination-container .previous:before{content:\"\\e92f\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #D1D1D1}.pagination-full-container .pagination-container .previous:hover:before{content:\"\\e92f\";border-radius:50%;background:#a5a4a4;color:#fff;border:1px solid white}.pagination-full-container .pagination-container .next:before{content:\"\\e930\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #D1D1D1}.pagination-full-container .pagination-container .next.disable:hover:before{content:\"\\e930\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #A5A4A4}.pagination-full-container .pagination-container .next:hover:before{content:\"\\e930\";border-radius:50%;background:#a5a4a4;color:#fff;border:1px solid white}.pagination-full-container .pagination-container .last.disable:hover:before{content:\"\\e934\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #A5A4A4}.pagination-full-container .pagination-container .last:before{content:\"\\e934\";border-radius:50%;background:#fff;color:#a5a4a4;border:1px solid #D1D1D1}.pagination-full-container .pagination-container .last:hover:before{content:\"\\e934\";border-radius:50%;background:#a5a4a4;color:#fff;border:1px solid white}@media only screen and (max-width: 768px){.custom-select-container{display:none}}@media only screen and (max-width: 576px){.pagination-container .pagination-container .not-current{display:none}.hide-item{display:none!important}}\n"] }]
151
151
  }], ctorParameters: () => [{ type: i1.MultiLanguageService }], propDecorators: { currentPage$: [{
152
152
  type: Input
153
153
  }], height: [{
@@ -179,4 +179,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
179
179
  type: ViewChild,
180
180
  args: ['current']
181
181
  }] } });
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1wYWdpbmF0aW9uLWZ1bGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtcGFnaW5hdGlvbi1mdWxsL2NvcmUtcGFnaW5hdGlvbi1mdWxsL2NvcmUtcGFnaW5hdGlvbi1mdWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXBhZ2luYXRpb24tZnVsbC9jb3JlLXBhZ2luYXRpb24tZnVsbC9jb3JlLXBhZ2luYXRpb24tZnVsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7OztBQWFsRSxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsYUFBYTtJQWlDNUQsWUFBNEIsR0FBeUI7UUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7UUFBdkMsUUFBRyxHQUFILEdBQUcsQ0FBc0I7UUFyQjNDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2hDLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFLbkQsd0JBQW1CLEdBQVcsQ0FBQyxDQUFDO1FBQ2hDLHFCQUFnQixHQUFVLEVB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Qk0saXhLRG5CRixZQUFZLCtQQUNaLFdBQVcscXZCQUNYLGFBQWE7OzJGQUtKLDJCQUEyQjtrQkFYdkMsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxhQUFhO3FCQUNkO3lGQU1RLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBRWlCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDQSxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2UtY29tcG9uZW50L2Jhc2UvYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1waXBlcy90cmFuc2xhdGUucGlwZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtcGFnaW5hdGlvbi1mdWxsJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlUGlwZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtcGFnaW5hdGlvbi1mdWxsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLXBhZ2luYXRpb24tZnVsbC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlUGFnaW5hdGlvbkZ1bGxDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgY3VycmVudFBhZ2UkITogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj47XHJcbiAgQElucHV0KCkgaGVpZ2h0ITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHBhZ2VDb3VudCE6IG51bWJlcjtcclxuICBASW5wdXQoKSBsb2FkaW5nITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzaG93QWRkITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBiYWNrZ3JvdW5kITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHBhZ2VTaXplJCE6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+O1xyXG4gIEBJbnB1dCgpIGlubmVyQm9keUNvdW50JCE6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+O1xyXG4gIEBJbnB1dCgpIHBhZ2luYXRpb24kITogQmVoYXZpb3JTdWJqZWN0PGFueT47XHJcbiAgQElucHV0KCkgZml4ZWRQYWdlU2l6ZSE6IG51bWJlcjtcclxuICBAT3V0cHV0KCkgb25DbGlja0FkZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25DdXJyZW50UGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgY29udGFpbmVyITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdjdXJyZW50JykgY3VycmVudCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIG5hdmlnYXRpb25EaXJlY3Rpb246IG51bWJlciA9IDE7XHJcbiAgZGlzcGxheVBhZ2VDb3VudDogYW55W10gPSBbXVxyXG4gIG1vdXNlRG93blN0cmVhbSQhOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgdG91Y2hTdGFydFN0cmVhbSQhOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgbW91c2VVcFN0cmVhbSQhOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgdG91Y2hFbmRTdHJlYW0kITogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gIG1vdXNlRG93blN1YnNjcmlwdGlvbiQhOiBTdWJzY3JpcHRpb247XHJcbiAgdG91Y2hTdGFydFN1YnNjcmlwdGlvbiQhOiBTdWJzY3JpcHRpb247XHJcbiAgbW91c2VVcFN1YnNjcmlwdGlvbiQhOiBTdWJzY3JpcHRpb247XHJcbiAgdG91Y2hFbmRTdWJzY3JpcHRpb24kITogU3Vic2NyaXB0aW9uO1xyXG4gIFNpemVDaGFuZ2VyOiBhbnlbXSA9IFs1LDEwLDIwLDUwLDIwMCw1MDAsMTAwMCw1MDAwLDEwMDAwXVxyXG4gIHNlbGVjdGVkU2l6ZTogbnVtYmVyID0gNTBcclxuXHJcbiAgY3VycmVudEJ1dHRvbkNvbnRlbnQhOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvdmVycmlkZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlKSB7IHN1cGVyKG1scykgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1sncGFnZUNvdW50J10pIHtcclxuICAgICAgaWYgKCEhdGhpcy5wYWdlQ291bnQpIHtcclxuICAgICAgICB0aGlzLnJlc29sdmVQYWdlQ291bnQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5tbHMubGFuZyQuc3Vic2NyaWJlKHggPT4gdGhpcy5sYW5nID0geClcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5wYWdlU2l6ZSQuc3Vic2NyaWJlKHggPT4gdGhpcy5zZWxlY3RlZFNpemUgPSB4KVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlJC5zdWJzY3JpYmUoeCA9PiB0aGlzLmN1cnJlbnRCdXR0b25Db250ZW50ID0geD8udG9TdHJpbmcoKSlcclxuICAgIClcclxuXHJcbiAgfVxyXG4gIG9uU2l6ZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnBhZ2VTaXplJC5uZXh0KGV2ZW50KVxyXG4gICAgdGhpcy5wYWdlQ291bnQgPSBNYXRoLmNlaWwodGhpcy5pbm5lckJvZHlDb3VudCQudmFsdWUgLyB0aGlzLnBhZ2VTaXplJC52YWx1ZSk7XHJcbiAgICB0aGlzLnBhZ2luYXRpb24kLm5leHQoeyBza2lwOiAwLCB0YWtlOiB0aGlzLnBhZ2VTaXplJC52YWx1ZSB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNvbHZlUGFnZUNvdW50KCkge1xyXG4gICAgbGV0IGFycmF5UGFnZUNvdW50ID0gdGhpcy5jaHVua0FycmF5KHRoaXMucGFnZUNvdW50LCA0KSBhcyBhbnlbXVxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5UGFnZUNvdW50Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoYXJyYXlQYWdlQ291bnRbaV0uaW5jbHVkZXModGhpcy5jdXJyZW50UGFnZSQudmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVBhZ2VDb3VudCA9IGFycmF5UGFnZUNvdW50W2ldXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICB9XHJcbiAgY2h1bmtBcnJheTxUPihwYWdlQ291bnQ6IG51bWJlciwgY2h1bmtTaXplOiBudW1iZXIpIHtcclxuICAgIGxldCBhcnJheSA9IEFycmF5LmZyb20oeyBsZW5ndGg6IHBhZ2VDb3VudCB9LCAoXywgaW5kZXgpID0+IGluZGV4ICsgMSlcclxuICAgIGNvbnN0IHJlc3VsdCA9IFtdIGFzIGFueVtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkgKz0gY2h1bmtTaXplKSB7XHJcbiAgICAgIHJlc3VsdC5wdXNoKGFycmF5LnNsaWNlKGksIGkgKyBjaHVua1NpemUpKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBjbGlja1BhZ2VOdW1iZXIoZXZlbnQ6IG51bWJlcikge1xyXG4gICAgY29uc29sZS5sb2coZXZlbnQpXHJcbiAgICBpZiAoZXZlbnQgPT09IHRoaXMuY3VycmVudFBhZ2UkLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UkLm5leHQoZXZlbnQpXHJcbiAgICAgIHRoaXMub25DdXJyZW50UGFnZUNoYW5nZS5lbWl0KGV2ZW50KVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGdvRmlyc3QoKSB7XHJcbiAgICB0aGlzLm5hdmlnYXRpb25EaXJlY3Rpb24gPSAtMTtcclxuICAgIGlmICghIXRoaXMucGFnZUNvdW50KSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5jdXJyZW50UGFnZSQubmV4dCgxKVxyXG4gICAgICB0aGlzLm9uQ3VycmVudFBhZ2VDaGFuZ2UuZW1pdCgxKVxyXG4gICAgICBjb25zb2xlLmxvZyhcImdvRmlyc3RcIik7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnb0xhc3QoKSB7XHJcbiAgICB0aGlzLm5hdmlnYXRpb25EaXJlY3Rpb24gPSAxO1xyXG4gICAgaWYgKCEhdGhpcy5wYWdlQ291bnQpIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlJC5uZXh0KHRoaXMucGFnZUNvdW50KVxyXG4gICAgICB0aGlzLm9uQ3VycmVudFBhZ2VDaGFuZ2UuZW1pdCh0aGlzLnBhZ2VDb3VudClcclxuICAgICAgY29uc29sZS5sb2coXCJnb0xhc3RcIik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdvUHJldmlvdXMoKSB7XHJcbiAgICB0aGlzLm5hdmlnYXRpb25EaXJlY3Rpb24gPSAtMTtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlJC52YWx1ZSA+IDEpIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlJC5uZXh0KHRoaXMuY3VycmVudFBhZ2UkLnZhbHVlIC0gMSlcclxuICAgICAgdGhpcy5vbkN1cnJlbnRQYWdlQ2hhbmdlLmVtaXQodGhpcy5jdXJyZW50UGFnZSQudmFsdWUpXHJcbiAgICAgIGNvbnNvbGUubG9nKFwiZ29QcmV2aW91c1wiKTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdvTmV4dCgpIHtcclxuICAgIHRoaXMubmF2aWdhdGlvbkRpcmVjdGlvbiA9IDE7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZSQudmFsdWUgPCB0aGlzLnBhZ2VDb3VudCkgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UkLm5leHQodGhpcy5jdXJyZW50UGFnZSQudmFsdWUgKyAxKVxyXG4gICAgICB0aGlzLm9uQ3VycmVudFBhZ2VDaGFuZ2UuZW1pdCh0aGlzLmN1cnJlbnRQYWdlJC52YWx1ZSlcclxuICAgICAgY29uc29sZS5sb2coXCJnb05leHRcIik7XHJcbiAgICAgIFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrQWRkTG9jYWwoKSB7XHJcbiAgICB0aGlzLm9uQ2xpY2tBZGQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cclxuICAgIGlmICh0aGlzLmhlaWdodCkge1xyXG4gICAgICB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWhlaWdodCcsIHRoaXMuaGVpZ2h0ICsgJ3B4JylcclxuICAgIH1cclxuXHJcbiAgICAvLyB0aGlzLm1vdXNlRG93blN0cmVhbSQgPSBmcm9tRXZlbnQodGhpcy5jdXJyZW50Lm5hdGl2ZUVsZW1lbnQsICdtb3VzZWRvd24nLCBfID0+IHtcclxuICAgIC8vICAgdGhpcy5jdXJyZW50QnV0dG9uQ29udGVudCA9IGAke3RoaXMuY3VycmVudFBhZ2UkLnZhbHVlfS8ke3RoaXMucGFnZUNvdW50fWA7XHJcbiAgICAvLyB9KTtcclxuICAgIC8vIHRoaXMudG91Y2hTdGFydFN0cmVhbSQgPSBmcm9tRXZlbnQodGhpcy5jdXJyZW50Lm5hdGl2ZUVsZW1lbnQsICd0b3VjaHN0YXJ0JywgXyA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY3VycmVudEJ1dHRvbkNvbnRlbnQgPSBgJHt0aGlzLmN1cnJlbnRQYWdlJC52YWx1ZX0vJHt0aGlzLnBhZ2VDb3VudH1gO1xyXG4gICAgLy8gfSk7XHJcblxyXG5cclxuICAgIC8vIHRoaXMubW91c2VVcFN0cmVhbSQgPSBmcm9tRXZlbnQodGhpcy5jdXJyZW50Lm5hdGl2ZUVsZW1lbnQsICdtb3VzZXVwJywgXyA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY3VycmVudEJ1dHRvbkNvbnRlbnQgPSBgJHt0aGlzLmN1cnJlbnRQYWdlJC52YWx1ZX1gO1xyXG4gICAgLy8gfSk7XHJcbiAgICAvLyB0aGlzLnRvdWNoRW5kU3RyZWFtJCA9IGZyb21FdmVudCh0aGlzLmN1cnJlbnQubmF0aXZlRWxlbWVudCwgJ3RvdWNoZW5kJywgXyA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY3VycmVudEJ1dHRvbkNvbnRlbnQgPSBgJHt0aGlzLmN1cnJlbnRQYWdlJC52YWx1ZX1gO1xyXG4gICAgLy8gfSk7XHJcblxyXG5cclxuICAgIC8vIHRoaXMubW91c2VEb3duU3Vic2NyaXB0aW9uJCA9IHRoaXMubW91c2VEb3duU3RyZWFtJC5zdWJzY3JpYmUoKTtcclxuICAgIC8vIHRoaXMudG91Y2hTdGFydFN1YnNjcmlwdGlvbiQgPSB0aGlzLnRvdWNoU3RhcnRTdHJlYW0kLnN1YnNjcmliZSgpO1xyXG4gICAgLy8gdGhpcy5tb3VzZVVwU3Vic2NyaXB0aW9uJCA9IHRoaXMubW91c2VVcFN0cmVhbSQuc3Vic2NyaWJlKCk7XHJcbiAgICAvLyB0aGlzLnRvdWNoRW5kU3Vic2NyaXB0aW9uJCA9IHRoaXMudG91Y2hFbmRTdHJlYW0kLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLmJhY2tncm91bmQpIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1iZycsIHRoaXMuYmFja2dyb3VuZCkpO1xyXG5cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubW91c2VEb3duU3Vic2NyaXB0aW9uJCkgdGhpcy5tb3VzZURvd25TdWJzY3JpcHRpb24kLnVuc3Vic2NyaWJlKCk7XHJcbiAgICBpZiAodGhpcy50b3VjaFN0YXJ0U3Vic2NyaXB0aW9uJCkgdGhpcy50b3VjaFN0YXJ0U3Vic2NyaXB0aW9uJC51bnN1YnNjcmliZSgpO1xyXG4gICAgaWYgKHRoaXMubW91c2VVcFN1YnNjcmlwdGlvbiQpIHRoaXMubW91c2VVcFN1YnNjcmlwdGlvbiQudW5zdWJzY3JpYmUoKTtcclxuICAgIGlmICh0aGlzLnRvdWNoRW5kU3Vic2NyaXB0aW9uJCkgdGhpcy50b3VjaEVuZFN1YnNjcmlwdGlvbiQudW5zdWJzY3JpYmUoKTtcclxuICAgIGlmKHRoaXMucGFnaW5hdGlvbiQpIHRoaXMucGFnaW5hdGlvbiQudW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5tYXAoeCA9PiB4Py51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgI2NvbnRhaW5lciBjbGFzcz1cInBhZ2luYXRpb24tZnVsbC1jb250YWluZXIgcm9ib3RvLWZvbnQgZC1mbGV4LWJldHdlZW5cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tc2VsZWN0LWNvbnRhaW5lclwiICpuZ0lmPVwiISEhZml4ZWRQYWdlU2l6ZVwiPlxyXG4gICAgICAgIDwhLS0gPGxhYmVsPlxyXG4gICAgICAgICAgICB7eydVSS5DT01QT05FTlQuQ09SRS1QQUdJTkFUSU9OLVRPVEFMLkNPVU5UJyB8IHRyYW5zbGF0ZTogbGFuZyB9fVxyXG4gICAgICAgIDwvbGFiZWw+Jm5ic3A7PHNwYW4+e3tpbm5lckJvZHlDb3VudCQudmFsdWV9fS48L3NwYW4+Jm5ic3A7IC0tPlxyXG4gICAgICAgIDxsYWJlbCBzdHlsZT1cImNvbG9yOiM4NDg0ODRcIj57eyAnVUkuQ09NUE9ORU5ULkNPUkUtUEFHSU5BVElPTi1GVUxMLlZJRVcnIHwgdHJhbnNsYXRlOiBsYW5nIH19Jm5ic3A7Jm5ic3A7PC9sYWJlbD5cclxuICAgICAgICA8c2VsZWN0IGNsYXNzPVwiY3VzdG9tLXNlbGVjdFwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRTaXplXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25TaXplQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgc2l6ZSBvZiBTaXplQ2hhbmdlclwiPnt7c2l6ZX19PC9vcHRpb24+XHJcbiAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgPGxhYmVsIHN0eWxlPVwiY29sb3I6Izg0ODQ4NFwiPiZuYnNwOy97e2lubmVyQm9keUNvdW50JC52YWx1ZX19Jm5ic3A7e3sgJ1VJLkNPTVBPTkVOVC5DT1JFLVBBR0lOQVRJT04tRlVMTC5SRVNVTFRTJyB8IHRyYW5zbGF0ZTogbGFuZyB9fTwvbGFiZWw+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJwYWdpbmF0aW9uLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaXJzdFwiIFtjbGFzcy5kaXNhYmxlXT1cIiEhIXBhZ2VDb3VudCB8fCBjdXJyZW50UGFnZSQudmFsdWU9PT0xXCIgKGNsaWNrKT1cImdvRmlyc3QoKVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcmV2aW91c1wiIFtjbGFzcy5kaXNhYmxlXT1cIiEhIXBhZ2VDb3VudCB8fCBjdXJyZW50UGFnZSQudmFsdWU9PT0xXCIgKGNsaWNrKT1cImdvUHJldmlvdXMoKVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgI2N1cnJlbnQgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGlzcGxheVBhZ2VDb3VudFwiIFtjbGFzcy5oaWRlLWl0ZW1dPVwiaXRlbSAhPT0gY3VycmVudFBhZ2UkLnZhbHVlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxpIGNsYXNzPVwiZmVhdGhlci1hcGVydHVyZSBhcGVydHVyZVwiIFtjbGFzcy52aXNpYmxlXT1cImxvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbk5hbWU6IG5hdmlnYXRpb25EaXJlY3Rpb24gPT09IDEgPyAncm90YXRlLWN1cnJlbnQtY29udGVudC1mdycgOiAncm90YXRlLWN1cnJlbnQtY29udGVudC1idydcclxuICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgPjwvaT4gLS0+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiY2xpY2tQYWdlTnVtYmVyKGl0ZW0pXCIgIFtjbGFzcy5jdXJyZW50XT1cIml0ZW0gPT0gY3VycmVudFBhZ2UkLnZhbHVlXCIgW2NsYXNzLm5vdC1jdXJyZW50XT1cIml0ZW0gIT09IGN1cnJlbnRQYWdlJC52YWx1ZVwiPnt7IGl0ZW0gfX08L3NwYW4+XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibmV4dFwiIFtjbGFzcy5kaXNhYmxlXT1cIiEhIXBhZ2VDb3VudCB8fCBjdXJyZW50UGFnZSQudmFsdWU9PT1wYWdlQ291bnRcIiAoY2xpY2spPVwiZ29OZXh0KClcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGFzdFwiIFtjbGFzcy5kaXNhYmxlXT1cIiEhIXBhZ2VDb3VudCB8fCBjdXJyZW50UGFnZSQudmFsdWU9PT1wYWdlQ291bnRcIiAoY2xpY2spPVwiZ29MYXN0KClcIj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSA8YSAoY2xpY2spPVwib25DbGlja0FkZExvY2FsKClcIiAqbmdJZj1cInNob3dBZGRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkXCI+PC9kaXY+XHJcbiAgICA8L2E+IC0tPlxyXG48L2Rpdj4iXX0=
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1wYWdpbmF0aW9uLWZ1bGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtcGFnaW5hdGlvbi1mdWxsL2NvcmUtcGFnaW5hdGlvbi1mdWxsL2NvcmUtcGFnaW5hdGlvbi1mdWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXBhZ2luYXRpb24tZnVsbC9jb3JlLXBhZ2luYXRpb24tZnVsbC9jb3JlLXBhZ2luYXRpb24tZnVsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7OztBQWFsRSxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsYUFBYTtJQWlDNUQsWUFBNEIsR0FBeUI7UUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7UUFBdkMsUUFBRyxHQUFILEdBQUcsQ0FBc0I7UUFyQjNDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2hDLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFLbkQsd0JBQW1CLEdBQVcsQ0FBQyxDQUFDO1FBQ2hDLHFCQUFnQixHQUFVLEVB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Qk0saXhLRG5CRixZQUFZLDJKQUNaLFdBQVcscXZCQUNYLGFBQWE7OzJGQUtKLDJCQUEyQjtrQkFYdkMsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxhQUFhO3FCQUNkO3lGQU1RLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBRWlCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDQSxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2UtY29tcG9uZW50L2Jhc2UvYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1waXBlcy90cmFuc2xhdGUucGlwZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtcGFnaW5hdGlvbi1mdWxsJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlUGlwZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtcGFnaW5hdGlvbi1mdWxsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLXBhZ2luYXRpb24tZnVsbC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlUGFnaW5hdGlvbkZ1bGxDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgY3VycmVudFBhZ2UkITogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj47XHJcbiAgQElucHV0KCkgaGVpZ2h0ITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHBhZ2VDb3VudCE6IG51bWJlcjtcclxuICBASW5wdXQoKSBsb2FkaW5nITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzaG93QWRkITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBiYWNrZ3JvdW5kITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHBhZ2VTaXplJCE6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+O1xyXG4gIEBJbnB1dCgpIGlubmVyQm9keUNvdW50JCE6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+O1xyXG4gIEBJbnB1dCgpIHBhZ2luYXRpb24kITogQmVoYXZpb3JTdWJqZWN0PGFueT47XHJcbiAgQElucHV0KCkgZml4ZWRQYWdlU2l6ZSE6IG51bWJlcjtcclxuICBAT3V0cHV0KCkgb25DbGlja0FkZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25DdXJyZW50UGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgY29udGFpbmVyITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdjdXJyZW50JykgY3VycmVudCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIG5hdmlnYXRpb25EaXJlY3Rpb246IG51bWJlciA9IDE7XHJcbiAgZGlzcGxheVBhZ2VDb3VudDogYW55W10gPSBbXVxyXG4gIG1vdXNlRG93blN0cmVhbSQhOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgdG91Y2hTdGFydFN0cmVhbSQhOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgbW91c2VVcFN0cmVhbSQhOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgdG91Y2hFbmRTdHJlYW0kITogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gIG1vdXNlRG93blN1YnNjcmlwdGlvbiQhOiBTdWJzY3JpcHRpb247XHJcbiAgdG91Y2hTdGFydFN1YnNjcmlwdGlvbiQhOiBTdWJzY3JpcHRpb247XHJcbiAgbW91c2VVcFN1YnNjcmlwdGlvbiQhOiBTdWJzY3JpcHRpb247XHJcbiAgdG91Y2hFbmRTdWJzY3JpcHRpb24kITogU3Vic2NyaXB0aW9uO1xyXG4gIFNpemVDaGFuZ2VyOiBhbnlbXSA9IFs1LDEwLDIwLDUwLDIwMCw1MDAsMTAwMCw1MDAwLDEwMDAwXVxyXG4gIHNlbGVjdGVkU2l6ZTogbnVtYmVyID0gNTBcclxuXHJcbiAgY3VycmVudEJ1dHRvbkNvbnRlbnQhOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvdmVycmlkZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlKSB7IHN1cGVyKG1scykgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1sncGFnZUNvdW50J10pIHtcclxuICAgICAgaWYgKCEhdGhpcy5wYWdlQ291bnQpIHtcclxuICAgICAgICB0aGlzLnJlc29sdmVQYWdlQ291bnQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5tbHMubGFuZyQuc3Vic2NyaWJlKHggPT4gdGhpcy5sYW5nID0geClcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5wYWdlU2l6ZSQuc3Vic2NyaWJlKHggPT4gdGhpcy5zZWxlY3RlZFNpemUgPSB4KVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlJC5zdWJzY3JpYmUoeCA9PiB0aGlzLmN1cnJlbnRCdXR0b25Db250ZW50ID0geD8udG9TdHJpbmcoKSlcclxuICAgIClcclxuXHJcbiAgfVxyXG4gIG9uU2l6ZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnBhZ2VTaXplJC5uZXh0KGV2ZW50KVxyXG4gICAgdGhpcy5wYWdlQ291bnQgPSBNYXRoLmNlaWwodGhpcy5pbm5lckJvZHlDb3VudCQudmFsdWUgLyB0aGlzLnBhZ2VTaXplJC52YWx1ZSk7XHJcbiAgICB0aGlzLnBhZ2luYXRpb24kLm5leHQoeyBza2lwOiAwLCB0YWtlOiB0aGlzLnBhZ2VTaXplJC52YWx1ZSB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNvbHZlUGFnZUNvdW50KCkge1xyXG4gICAgbGV0IGFycmF5UGFnZUNvdW50ID0gdGhpcy5jaHVua0FycmF5KHRoaXMucGFnZUNvdW50LCA0KSBhcyBhbnlbXVxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5UGFnZUNvdW50Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoYXJyYXlQYWdlQ291bnRbaV0uaW5jbHVkZXModGhpcy5jdXJyZW50UGFnZSQudmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVBhZ2VDb3VudCA9IGFycmF5UGFnZUNvdW50W2ldXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICB9XHJcbiAgY2h1bmtBcnJheTxUPihwYWdlQ291bnQ6IG51bWJlciwgY2h1bmtTaXplOiBudW1iZXIpIHtcclxuICAgIGxldCBhcnJheSA9IEFycmF5LmZyb20oeyBsZW5ndGg6IHBhZ2VDb3VudCB9LCAoXywgaW5kZXgpID0+IGluZGV4ICsgMSlcclxuICAgIGNvbnN0IHJlc3VsdCA9IFtdIGFzIGFueVtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkgKz0gY2h1bmtTaXplKSB7XHJcbiAgICAgIHJlc3VsdC5wdXNoKGFycmF5LnNsaWNlKGksIGkgKyBjaHVua1NpemUpKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBjbGlja1BhZ2VOdW1iZXIoZXZlbnQ6IG51bWJlcikge1xyXG4gICAgY29uc29sZS5sb2coZXZlbnQpXHJcbiAgICBpZiAoZXZlbnQgPT09IHRoaXMuY3VycmVudFBhZ2UkLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UkLm5leHQoZXZlbnQpXHJcbiAgICAgIHRoaXMub25DdXJyZW50UGFnZUNoYW5nZS5lbWl0KGV2ZW50KVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGdvRmlyc3QoKSB7XHJcbiAgICB0aGlzLm5hdmlnYXRpb25EaXJlY3Rpb24gPSAtMTtcclxuICAgIGlmICghIXRoaXMucGFnZUNvdW50KSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5jdXJyZW50UGFnZSQubmV4dCgxKVxyXG4gICAgICB0aGlzLm9uQ3VycmVudFBhZ2VDaGFuZ2UuZW1pdCgxKVxyXG4gICAgICBjb25zb2xlLmxvZyhcImdvRmlyc3RcIik7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnb0xhc3QoKSB7XHJcbiAgICB0aGlzLm5hdmlnYXRpb25EaXJlY3Rpb24gPSAxO1xyXG4gICAgaWYgKCEhdGhpcy5wYWdlQ291bnQpIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlJC5uZXh0KHRoaXMucGFnZUNvdW50KVxyXG4gICAgICB0aGlzLm9uQ3VycmVudFBhZ2VDaGFuZ2UuZW1pdCh0aGlzLnBhZ2VDb3VudClcclxuICAgICAgY29uc29sZS5sb2coXCJnb0xhc3RcIik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdvUHJldmlvdXMoKSB7XHJcbiAgICB0aGlzLm5hdmlnYXRpb25EaXJlY3Rpb24gPSAtMTtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlJC52YWx1ZSA+IDEpIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlJC5uZXh0KHRoaXMuY3VycmVudFBhZ2UkLnZhbHVlIC0gMSlcclxuICAgICAgdGhpcy5vbkN1cnJlbnRQYWdlQ2hhbmdlLmVtaXQodGhpcy5jdXJyZW50UGFnZSQudmFsdWUpXHJcbiAgICAgIGNvbnNvbGUubG9nKFwiZ29QcmV2aW91c1wiKTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdvTmV4dCgpIHtcclxuICAgIHRoaXMubmF2aWdhdGlvbkRpcmVjdGlvbiA9IDE7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZSQudmFsdWUgPCB0aGlzLnBhZ2VDb3VudCkgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UkLm5leHQodGhpcy5jdXJyZW50UGFnZSQudmFsdWUgKyAxKVxyXG4gICAgICB0aGlzLm9uQ3VycmVudFBhZ2VDaGFuZ2UuZW1pdCh0aGlzLmN1cnJlbnRQYWdlJC52YWx1ZSlcclxuICAgICAgY29uc29sZS5sb2coXCJnb05leHRcIik7XHJcbiAgICAgIFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrQWRkTG9jYWwoKSB7XHJcbiAgICB0aGlzLm9uQ2xpY2tBZGQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cclxuICAgIGlmICh0aGlzLmhlaWdodCkge1xyXG4gICAgICB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWhlaWdodCcsIHRoaXMuaGVpZ2h0ICsgJ3B4JylcclxuICAgIH1cclxuXHJcbiAgICAvLyB0aGlzLm1vdXNlRG93blN0cmVhbSQgPSBmcm9tRXZlbnQodGhpcy5jdXJyZW50Lm5hdGl2ZUVsZW1lbnQsICdtb3VzZWRvd24nLCBfID0+IHtcclxuICAgIC8vICAgdGhpcy5jdXJyZW50QnV0dG9uQ29udGVudCA9IGAke3RoaXMuY3VycmVudFBhZ2UkLnZhbHVlfS8ke3RoaXMucGFnZUNvdW50fWA7XHJcbiAgICAvLyB9KTtcclxuICAgIC8vIHRoaXMudG91Y2hTdGFydFN0cmVhbSQgPSBmcm9tRXZlbnQodGhpcy5jdXJyZW50Lm5hdGl2ZUVsZW1lbnQsICd0b3VjaHN0YXJ0JywgXyA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY3VycmVudEJ1dHRvbkNvbnRlbnQgPSBgJHt0aGlzLmN1cnJlbnRQYWdlJC52YWx1ZX0vJHt0aGlzLnBhZ2VDb3VudH1gO1xyXG4gICAgLy8gfSk7XHJcblxyXG5cclxuICAgIC8vIHRoaXMubW91c2VVcFN0cmVhbSQgPSBmcm9tRXZlbnQodGhpcy5jdXJyZW50Lm5hdGl2ZUVsZW1lbnQsICdtb3VzZXVwJywgXyA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY3VycmVudEJ1dHRvbkNvbnRlbnQgPSBgJHt0aGlzLmN1cnJlbnRQYWdlJC52YWx1ZX1gO1xyXG4gICAgLy8gfSk7XHJcbiAgICAvLyB0aGlzLnRvdWNoRW5kU3RyZWFtJCA9IGZyb21FdmVudCh0aGlzLmN1cnJlbnQubmF0aXZlRWxlbWVudCwgJ3RvdWNoZW5kJywgXyA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY3VycmVudEJ1dHRvbkNvbnRlbnQgPSBgJHt0aGlzLmN1cnJlbnRQYWdlJC52YWx1ZX1gO1xyXG4gICAgLy8gfSk7XHJcblxyXG5cclxuICAgIC8vIHRoaXMubW91c2VEb3duU3Vic2NyaXB0aW9uJCA9IHRoaXMubW91c2VEb3duU3RyZWFtJC5zdWJzY3JpYmUoKTtcclxuICAgIC8vIHRoaXMudG91Y2hTdGFydFN1YnNjcmlwdGlvbiQgPSB0aGlzLnRvdWNoU3RhcnRTdHJlYW0kLnN1YnNjcmliZSgpO1xyXG4gICAgLy8gdGhpcy5tb3VzZVVwU3Vic2NyaXB0aW9uJCA9IHRoaXMubW91c2VVcFN0cmVhbSQuc3Vic2NyaWJlKCk7XHJcbiAgICAvLyB0aGlzLnRvdWNoRW5kU3Vic2NyaXB0aW9uJCA9IHRoaXMudG91Y2hFbmRTdHJlYW0kLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLmJhY2tncm91bmQpIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1iZycsIHRoaXMuYmFja2dyb3VuZCkpO1xyXG5cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubW91c2VEb3duU3Vic2NyaXB0aW9uJCkgdGhpcy5tb3VzZURvd25TdWJzY3JpcHRpb24kLnVuc3Vic2NyaWJlKCk7XHJcbiAgICBpZiAodGhpcy50b3VjaFN0YXJ0U3Vic2NyaXB0aW9uJCkgdGhpcy50b3VjaFN0YXJ0U3Vic2NyaXB0aW9uJC51bnN1YnNjcmliZSgpO1xyXG4gICAgaWYgKHRoaXMubW91c2VVcFN1YnNjcmlwdGlvbiQpIHRoaXMubW91c2VVcFN1YnNjcmlwdGlvbiQudW5zdWJzY3JpYmUoKTtcclxuICAgIGlmICh0aGlzLnRvdWNoRW5kU3Vic2NyaXB0aW9uJCkgdGhpcy50b3VjaEVuZFN1YnNjcmlwdGlvbiQudW5zdWJzY3JpYmUoKTtcclxuICAgIGlmKHRoaXMucGFnaW5hdGlvbiQpIHRoaXMucGFnaW5hdGlvbiQudW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5tYXAoeCA9PiB4Py51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgI2NvbnRhaW5lciBjbGFzcz1cInBhZ2luYXRpb24tZnVsbC1jb250YWluZXIgcm9ib3RvLWZvbnQgZC1mbGV4LWJldHdlZW5cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tc2VsZWN0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDwhLS0gPGxhYmVsPlxyXG4gICAgICAgICAgICB7eydVSS5DT01QT05FTlQuQ09SRS1QQUdJTkFUSU9OLVRPVEFMLkNPVU5UJyB8IHRyYW5zbGF0ZTogbGFuZyB9fVxyXG4gICAgICAgIDwvbGFiZWw+Jm5ic3A7PHNwYW4+e3tpbm5lckJvZHlDb3VudCQudmFsdWV9fS48L3NwYW4+Jm5ic3A7IC0tPlxyXG4gICAgICAgIDxsYWJlbCBzdHlsZT1cImNvbG9yOiM4NDg0ODRcIj57eyAnVUkuQ09NUE9ORU5ULkNPUkUtUEFHSU5BVElPTi1GVUxMLlZJRVcnIHwgdHJhbnNsYXRlOiBsYW5nIH19Jm5ic3A7Jm5ic3A7PC9sYWJlbD5cclxuICAgICAgICA8c2VsZWN0IGNsYXNzPVwiY3VzdG9tLXNlbGVjdFwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRTaXplXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25TaXplQ2hhbmdlKCRldmVudClcIiBbZGlzYWJsZWRdPVwiISFmaXhlZFBhZ2VTaXplXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHNpemUgb2YgU2l6ZUNoYW5nZXJcIj57e3NpemV9fTwvb3B0aW9uPlxyXG4gICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDxsYWJlbCBzdHlsZT1cImNvbG9yOiM4NDg0ODRcIj4mbmJzcDsve3tpbm5lckJvZHlDb3VudCQudmFsdWV9fSZuYnNwO3t7ICdVSS5DT01QT05FTlQuQ09SRS1QQUdJTkFUSU9OLUZVTEwuUkVTVUxUUycgfCB0cmFuc2xhdGU6IGxhbmcgfX08L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicGFnaW5hdGlvbi1jb250YWluZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlyc3RcIiBbY2xhc3MuZGlzYWJsZV09XCIhISFwYWdlQ291bnQgfHwgY3VycmVudFBhZ2UkLnZhbHVlPT09MVwiIChjbGljayk9XCJnb0ZpcnN0KClcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlvdXNcIiBbY2xhc3MuZGlzYWJsZV09XCIhISFwYWdlQ291bnQgfHwgY3VycmVudFBhZ2UkLnZhbHVlPT09MVwiIChjbGljayk9XCJnb1ByZXZpb3VzKClcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2ICNjdXJyZW50ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRpc3BsYXlQYWdlQ291bnRcIiBbY2xhc3MuaGlkZS1pdGVtXT1cIml0ZW0gIT09IGN1cnJlbnRQYWdlJC52YWx1ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8aSBjbGFzcz1cImZlYXRoZXItYXBlcnR1cmUgYXBlcnR1cmVcIiBbY2xhc3MudmlzaWJsZV09XCJsb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICBhbmltYXRpb25OYW1lOiBuYXZpZ2F0aW9uRGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZS1jdXJyZW50LWNvbnRlbnQtZncnIDogJ3JvdGF0ZS1jdXJyZW50LWNvbnRlbnQtYncnXHJcbiAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgID48L2k+IC0tPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cImNsaWNrUGFnZU51bWJlcihpdGVtKVwiICBbY2xhc3MuY3VycmVudF09XCJpdGVtID09IGN1cnJlbnRQYWdlJC52YWx1ZVwiIFtjbGFzcy5ub3QtY3VycmVudF09XCJpdGVtICE9PSBjdXJyZW50UGFnZSQudmFsdWVcIj57eyBpdGVtIH19PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5leHRcIiBbY2xhc3MuZGlzYWJsZV09XCIhISFwYWdlQ291bnQgfHwgY3VycmVudFBhZ2UkLnZhbHVlPT09cGFnZUNvdW50XCIgKGNsaWNrKT1cImdvTmV4dCgpXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxhc3RcIiBbY2xhc3MuZGlzYWJsZV09XCIhISFwYWdlQ291bnQgfHwgY3VycmVudFBhZ2UkLnZhbHVlPT09cGFnZUNvdW50XCIgKGNsaWNrKT1cImdvTGFzdCgpXCI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gPGEgKGNsaWNrKT1cIm9uQ2xpY2tBZGRMb2NhbCgpXCIgKm5nSWY9XCJzaG93QWRkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZFwiPjwvZGl2PlxyXG4gICAgPC9hPiAtLT5cclxuPC9kaXY+Il19
@@ -3,6 +3,7 @@ export var EnumCoreTablePipeType;
3
3
  EnumCoreTablePipeType["TRANSLATE"] = "TRANSLATE";
4
4
  EnumCoreTablePipeType["BEAUTIFUL_JSON"] = "BEAUTIFUL_JSON";
5
5
  EnumCoreTablePipeType["DATE"] = "DATE";
6
+ EnumCoreTablePipeType["DATE_DDMM"] = "DATE_DDMM";
6
7
  EnumCoreTablePipeType["NUMBER"] = "NUMBER";
7
8
  EnumCoreTablePipeType["DECIMAL_TO_FIX_2"] = "DECIMAL_TO_FIX_2";
8
9
  EnumCoreTablePipeType["DECIMAL_TO_FIX_3"] = "DECIMAL_TO_FIX_3";
@@ -18,4 +19,4 @@ export var EnumCoreTablePipeType;
18
19
  EnumCoreTablePipeType["NORMALIZE_HUMAN_NAME"] = "NORMALIZE_HUMAN_NAME";
19
20
  EnumCoreTablePipeType["UPLOADED_FILENAME_CUT_OFF"] = "UPLOADED_FILENAME_CUT_OFF";
20
21
  })(EnumCoreTablePipeType || (EnumCoreTablePipeType = {}));
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW51bUNvcmVUYWJsZVBpcGVUeXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtdGFibGUvRW51bUNvcmVUYWJsZVBpcGVUeXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLHFCQWtCWDtBQWxCRCxXQUFZLHFCQUFxQjtJQUM3QixnREFBdUIsQ0FBQTtJQUN2QiwwREFBaUMsQ0FBQTtJQUNqQyxzQ0FBYSxDQUFBO0lBQ2IsMENBQWlCLENBQUE7SUFDakIsOERBQXFDLENBQUE7SUFDckMsOERBQXFDLENBQUE7SUFDckMsOERBQXFDLENBQUE7SUFDckMsZ0RBQXVCLENBQUE7SUFDdkIsZ0RBQXVCLENBQUE7SUFDdkIsZ0VBQXVDLENBQUE7SUFDdkMsMEVBQWlELENBQUE7SUFDakQsd0VBQStDLENBQUE7SUFDL0Msa0ZBQXlELENBQUE7SUFDekQsZ0RBQXVCLENBQUE7SUFDdkIsZ0RBQXVCLENBQUE7SUFDdkIsc0VBQTZDLENBQUE7SUFDN0MsZ0ZBQXVELENBQUE7QUFDM0QsQ0FBQyxFQWxCVyxxQkFBcUIsS0FBckIscUJBQXFCLFFBa0JoQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEVudW1Db3JlVGFibGVQaXBlVHlwZSB7XHJcbiAgICBUUkFOU0xBVEUgPSAnVFJBTlNMQVRFJyxcclxuICAgIEJFQVVUSUZVTF9KU09OID0gJ0JFQVVUSUZVTF9KU09OJyxcclxuICAgIERBVEUgPSAnREFURScsXHJcbiAgICBOVU1CRVIgPSAnTlVNQkVSJyxcclxuICAgIERFQ0lNQUxfVE9fRklYXzIgPSAnREVDSU1BTF9UT19GSVhfMicsXHJcbiAgICBERUNJTUFMX1RPX0ZJWF8zID0gJ0RFQ0lNQUxfVE9fRklYXzMnLFxyXG4gICAgREVDSU1BTF9UT19GSVhfNSA9ICdERUNJTUFMX1RPX0ZJWF81JyxcclxuICAgIERBVEVfVElNRSA9ICdEQVRFX1RJTUUnLFxyXG4gICAgVElNRV9ISE1NID0gJ1RJTUVfSEhNTScsXHJcbiAgICBCT09MRUFOX1RPX1lFU19OTyA9ICdCT09MRUFOX1RPX1lFU19OTycsXHJcbiAgICBCT09MRUFOX1RPX0RPTkVfTk9UWUVUID0gJ0JPT0xFQU5fVE9fRE9ORV9OT1RZRVQnLFxyXG4gICAgQk9PTEVBTl9UT19UUlVFX0ZBTFNFID0gJ0JPT0xFQU5fVE9fVFJVRV9GQUxTRScsXHJcbiAgICBCT09MRUFOX1RPX0FDVElWRV9JTkFDVElWRSA9ICdCT09MRUFOX1RPX0FDVElWRV9JTkFDVElWRScsXHJcbiAgICBMT1dFUkNBU0UgPSAnTE9XRVJDQVNFJyxcclxuICAgIFVQUEVSQ0FTRSA9ICdVUFBFUkNBU0UnLFxyXG4gICAgTk9STUFMSVpFX0hVTUFOX05BTUUgPSAnTk9STUFMSVpFX0hVTUFOX05BTUUnLFxyXG4gICAgVVBMT0FERURfRklMRU5BTUVfQ1VUX09GRiA9ICdVUExPQURFRF9GSUxFTkFNRV9DVVRfT0ZGJyxcclxufSJdfQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW51bUNvcmVUYWJsZVBpcGVUeXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtdGFibGUvRW51bUNvcmVUYWJsZVBpcGVUeXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLHFCQW1CWDtBQW5CRCxXQUFZLHFCQUFxQjtJQUM3QixnREFBdUIsQ0FBQTtJQUN2QiwwREFBaUMsQ0FBQTtJQUNqQyxzQ0FBYSxDQUFBO0lBQ2IsZ0RBQXVCLENBQUE7SUFDdkIsMENBQWlCLENBQUE7SUFDakIsOERBQXFDLENBQUE7SUFDckMsOERBQXFDLENBQUE7SUFDckMsOERBQXFDLENBQUE7SUFDckMsZ0RBQXVCLENBQUE7SUFDdkIsZ0RBQXVCLENBQUE7SUFDdkIsZ0VBQXVDLENBQUE7SUFDdkMsMEVBQWlELENBQUE7SUFDakQsd0VBQStDLENBQUE7SUFDL0Msa0ZBQXlELENBQUE7SUFDekQsZ0RBQXVCLENBQUE7SUFDdkIsZ0RBQXVCLENBQUE7SUFDdkIsc0VBQTZDLENBQUE7SUFDN0MsZ0ZBQXVELENBQUE7QUFDM0QsQ0FBQyxFQW5CVyxxQkFBcUIsS0FBckIscUJBQXFCLFFBbUJoQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEVudW1Db3JlVGFibGVQaXBlVHlwZSB7XHJcbiAgICBUUkFOU0xBVEUgPSAnVFJBTlNMQVRFJyxcclxuICAgIEJFQVVUSUZVTF9KU09OID0gJ0JFQVVUSUZVTF9KU09OJyxcclxuICAgIERBVEUgPSAnREFURScsXHJcbiAgICBEQVRFX0RETU0gPSAnREFURV9ERE1NJyxcclxuICAgIE5VTUJFUiA9ICdOVU1CRVInLFxyXG4gICAgREVDSU1BTF9UT19GSVhfMiA9ICdERUNJTUFMX1RPX0ZJWF8yJyxcclxuICAgIERFQ0lNQUxfVE9fRklYXzMgPSAnREVDSU1BTF9UT19GSVhfMycsXHJcbiAgICBERUNJTUFMX1RPX0ZJWF81ID0gJ0RFQ0lNQUxfVE9fRklYXzUnLFxyXG4gICAgREFURV9USU1FID0gJ0RBVEVfVElNRScsXHJcbiAgICBUSU1FX0hITU0gPSAnVElNRV9ISE1NJyxcclxuICAgIEJPT0xFQU5fVE9fWUVTX05PID0gJ0JPT0xFQU5fVE9fWUVTX05PJyxcclxuICAgIEJPT0xFQU5fVE9fRE9ORV9OT1RZRVQgPSAnQk9PTEVBTl9UT19ET05FX05PVFlFVCcsXHJcbiAgICBCT09MRUFOX1RPX1RSVUVfRkFMU0UgPSAnQk9PTEVBTl9UT19UUlVFX0ZBTFNFJyxcclxuICAgIEJPT0xFQU5fVE9fQUNUSVZFX0lOQUNUSVZFID0gJ0JPT0xFQU5fVE9fQUNUSVZFX0lOQUNUSVZFJyxcclxuICAgIExPV0VSQ0FTRSA9ICdMT1dFUkNBU0UnLFxyXG4gICAgVVBQRVJDQVNFID0gJ1VQUEVSQ0FTRScsXHJcbiAgICBOT1JNQUxJWkVfSFVNQU5fTkFNRSA9ICdOT1JNQUxJWkVfSFVNQU5fTkFNRScsXHJcbiAgICBVUExPQURFRF9GSUxFTkFNRV9DVVRfT0ZGID0gJ1VQTE9BREVEX0ZJTEVOQU1FX0NVVF9PRkYnLFxyXG59Il19
@@ -17,6 +17,7 @@ export class TableCellPipe {
17
17
  EnumCoreTablePipeType.TRANSLATE,
18
18
  EnumCoreTablePipeType.BEAUTIFUL_JSON,
19
19
  EnumCoreTablePipeType.DATE,
20
+ EnumCoreTablePipeType.DATE_DDMM,
20
21
  EnumCoreTablePipeType.NUMBER,
21
22
  EnumCoreTablePipeType.DATE_TIME,
22
23
  EnumCoreTablePipeType.TIME_HHMM,
@@ -86,6 +87,33 @@ export class TableCellPipe {
86
87
  default:
87
88
  return value;
88
89
  }
90
+ case EnumCoreTablePipeType.DATE_DDMM:
91
+ /* Convert from UTC to local date */
92
+ const origValue = new Date(value);
93
+ const localValue = new Date(origValue.getTime() - offset * 60000);
94
+ /*----------------------------------------*/
95
+ m = localValue?.getMonth() + 1;
96
+ d = localValue?.getDate();
97
+ switch (lang) {
98
+ case 'vi':
99
+ m = Number(m) < 10 ? '0' + m : m;
100
+ d = Number(d) < 10 ? '0' + d : d;
101
+ if (typeof localValue?.getFullYear === 'function') {
102
+ return `${d}/${m}`;
103
+ }
104
+ else {
105
+ return value;
106
+ }
107
+ case 'en':
108
+ if (typeof localValue?.getFullYear === 'function') {
109
+ return `${m}/${d}`;
110
+ }
111
+ else {
112
+ return value;
113
+ }
114
+ default:
115
+ return value;
116
+ }
89
117
  case EnumCoreTablePipeType.DATE_TIME:
90
118
  // Convert from UTC to local datetme
91
119
  const originalDate = new Date(value);
@@ -174,4 +202,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
174
202
  standalone: true,
175
203
  }]
176
204
  }], ctorParameters: () => [{ type: i1.MultiLanguageService }] });
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL3BpcGVzL3RhYmxlLWNlbGwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBTTFELE1BQU0sT0FBTyxhQUFhO0lBRXhCLFlBQW9CLEdBQXlCO1FBQXpCLFFBQUcsR0FBSCxHQUFHLENBQXNCO0lBQzdDLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBVSxFQUFFLElBQXdCLEVBQUUsSUFBWTtRQUUxRCxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssRUFBRTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3hFLElBQUksSUFBSSxLQUFLLFNBQVM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUVyQyxNQUFNLGNBQWMsR0FBYTtZQUMvQixxQkFBcUIsQ0FBQyxTQUFTO1lBQy9CLHFCQUFxQixDQUFDLGNBQWM7WUFDcEMscUJBQXFCLENBQUMsSUFBSTtZQUMxQixxQkFBcUIsQ0FBQyxNQUFNO1lBQzVCLHFCQUFxQixDQUFDLFNBQVM7WUFDL0IscUJBQXFCLENBQUMsU0FBUztZQUMvQixxQkFBcUIsQ0FBQyxxQkFBcUI7WUFDM0MscUJBQXFCLENBQUMsaUJBQWlCO1lBQ3ZDLHFCQUFxQixDQUFDLHNCQUFzQjtZQUM1QyxxQkFBcUIsQ0FBQywwQkFBMEI7WUFDaEQscUJBQXFCLENBQUMsU0FBUztZ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QkFDSixJQUFJLEVBQUUsV0FBVztvQkFDakIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFbnVtQ29yZVRhYmxlUGlwZVR5cGUgfSBmcm9tICcuLi9jb3JlLXRhYmxlL0VudW1Db3JlVGFibGVQaXBlVHlwZSc7XHJcbmltcG9ydCB7IG5vcm1hbGl6ZUh1bWFuTmFtZSB9IGZyb20gJy4vbm9ybWFsaXplLWh1bWFuLW5hbWUucGlwZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICd0YWJsZUNlbGwnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZUNlbGxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIHBpcGU6IHN0cmluZyB8IHVuZGVmaW5lZCwgbGFuZzogc3RyaW5nKTogYW55IHtcclxuXHJcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiB2YWx1ZTtcclxuICAgIGlmIChwaXBlID09PSB1bmRlZmluZWQpIHJldHVybiB2YWx1ZTtcclxuXHJcbiAgICBjb25zdCBhdmFpbGFibGVUeXBlczogc3RyaW5nW10gPSBbXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5UUkFOU0xBVEUsXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5CRUFVVElGVUxfSlNPTixcclxuICAgICAgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkRBVEUsXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5OVU1CRVIsXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5EQVRFX1RJTUUsXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5USU1FX0hITU0sXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5CT09MRUFOX1RPX1RSVUVfRkFMU0UsXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5CT09MRUFOX1RPX1lFU19OTyxcclxuICAgICAgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkJPT0xFQU5fVE9fRE9ORV9OT1RZRVQsXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5CT09MRUFOX1RPX0FDVElWRV9JTkFDVElWRSxcclxuICAgICAgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkxPV0VSQ0FTRSxcclxuICAgICAgRW51bUNvcmVUYWJsZVBpcGVUeXBlLlVQUEVSQ0FTRSxcclxuICAgICAgRW51bUNvcmVUYWJsZVBpcGVUeXBlLk5PUk1BTElaRV9IVU1BTl9OQU1FLFxyXG4gICAgICBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuREVDSU1BTF9UT19GSVhfMixcclxuICAgICAgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkRFQ0lNQUxfVE9fRklYXzMsXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5ERUNJTUFMX1RPX0ZJWF81LFxyXG4gICAgICBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuVVBMT0FERURfRklMRU5BTUVfQ1VUX09GRlxyXG4gICAgXTtcclxuXHJcbiAgICBpZiAoISEhYXZhaWxhYmxlVHlwZXMuaW5jbHVkZXMocGlwZSkpIHJldHVybiB2YWx1ZTtcclxuXHJcbiAgICBsZXQgeSwgbSwgZCwgaGgsIG1tLCBzcztcclxuICAgIC8vIEdldCBtaW51dGVzIGRpZmZlcmVudCBiZXR3ZWVuIGxvY2FsIGRhdGUgYW5kIFVUQyB0aW1lIHpvbmVcclxuICAgIGNvbnN0IG9mZnNldCA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lem9uZU9mZnNldCgpO1xyXG4gICAgdHJ5IHtcclxuXHJcbiAgICAgIHN3aXRjaCAocGlwZSEpIHtcclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5UUkFOU0xBVEU6XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5tbHMudHJhbnModmFsdWUsIGxhbmcpO1xyXG4gICAgICAgIGNhc2UgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkJFQVVUSUZVTF9KU09OOlxyXG4gICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KEpTT04ucGFyc2UodmFsdWUpLCBudWxsLCAyKTtcclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5MT1dFUkNBU0U6XHJcbiAgICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIGNhc2UgRW51bUNvcmVUYWJsZVBpcGVUeXBlLlVQUEVSQ0FTRTpcclxuICAgICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgICAgY2FzZSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuTk9STUFMSVpFX0hVTUFOX05BTUU6XHJcbiAgICAgICAgICByZXR1cm4gbm9ybWFsaXplSHVtYW5OYW1lKHZhbHVlKTtcclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5OVU1CRVI6XHJcbiAgICAgICAgICB2YWx1ZSA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgnZW4tVVMnLCB7IG1heGltdW1TaWduaWZpY2FudERpZ2l0czogKHZhbHVlKS5sZW5ndGggfSkuZm9ybWF0KHZhbHVlKTtcclxuICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5ERUNJTUFMX1RPX0ZJWF8yOlxyXG4gICAgICAgICAgcmV0dXJuIHZhbHVlLnRvRml4ZWQoMik7XHJcbiAgICAgICAgY2FzZSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuREVDSU1BTF9UT19GSVhfMzpcclxuICAgICAgICAgIHJldHVybiB2YWx1ZS50b0ZpeGVkKDMpO1xyXG4gICAgICAgIGNhc2UgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkRFQ0lNQUxfVE9fRklYXzU6XHJcbiAgICAgICAgICByZXR1cm4gdmFsdWUudG9GaXhlZCg1KTtcclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5EQVRFOlxyXG5cclxuICAgICAgICAgIC8qIENvbnZlcnQgZnJvbSBVVEMgdG8gbG9jYWwgZGF0ZSAqL1xyXG4gICAgICAgICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IG5ldyBEYXRlKHZhbHVlKTtcclxuICAgICAgICAgIGNvbnN0IGxvY2FsID0gbmV3IERhdGUob3JpZ2luYWxWYWx1ZS5nZXRUaW1lKCkgLSBvZmZzZXQgKiA2MDAwMCk7XHJcbiAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuICAgICAgICAgIHkgPSBsb2NhbD8uZ2V0RnVsbFllYXIoKTtcclxuICAgICAgICAgIG0gPSBsb2NhbD8uZ2V0TW9udGgoKSArIDE7XHJcbiAgICAgICAgICBkID0gbG9jYWw/LmdldERhdGUoKTtcclxuXHJcbiAgICAgICAgICBzd2l0Y2ggKGxhbmcpIHtcclxuICAgICAgICAgICAgY2FzZSAndmknOlxyXG4gICAgICAgICAgICAgIG0gPSBOdW1iZXIobSkgPCAxMCA/ICcwJyArIG0gOiBtO1xyXG4gICAgICAgICAgICAgIGQgPSBOdW1iZXIoZCkgPCAxMCA/ICcwJyArIGQgOiBkO1xyXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgbG9jYWw/LmdldEZ1bGxZZWFyID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7ZH0vJHttfS8ke3l9YDtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAnZW4nOlxyXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgbG9jYWw/LmdldEZ1bGxZZWFyID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7bX0vJHtkfS8ke3l9YDtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgY2FzZSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuREFURV9USU1FOlxyXG5cclxuICAgICAgICAgIC8vIENvbnZlcnQgZnJvbSBVVEMgdG8gbG9jYWwgZGF0ZXRtZVxyXG4gICAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXRlOiBEYXRlID0gbmV3IERhdGUodmFsdWUpO1xyXG4gICAgICAgICAgY29uc3QgZGF0ZVZhbHVlID0gbmV3IERhdGUob3JpZ2luYWxEYXRlLmdldFRpbWUoKSAtIG9mZnNldCAqIDYwMDAwKTtcclxuICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4gICAgICAgICAgeSA9IGRhdGVWYWx1ZT8uZ2V0RnVsbFllYXIoKTtcclxuICAgICAgICAgIG0gPSBkYXRlVmFsdWU/LmdldE1vbnRoKCkgKyAxO1xyXG4gICAgICAgICAgZCA9IGRhdGVWYWx1ZT8uZ2V0RGF0ZSgpO1xyXG4gICAgICAgICAgaGggPSBkYXRlVmFsdWU/LmdldEhvdXJzKCk7XHJcbiAgICAgICAgICBtbSA9IGRhdGVWYWx1ZT8uZ2V0TWludXRlcygpO1xyXG4gICAgICAgICAgc3MgPSBkYXRlVmFsdWU/LmdldFNlY29uZHMoKTtcclxuICAgICAgICAgIGhoID0gTnVtYmVyKGhoKSA8IDEwID8gJzAnICsgaGggOiBoaDtcclxuICAgICAgICAgIG1tID0gTnVtYmVyKG1tKSA8IDEwID8gJzAnICsgbW0gOiBtbTtcclxuICAgICAgICAgIHNzID0gTnVtYmVyKHNzKSA8IDEwID8gJzAnICsgc3MgOiBzcztcclxuXHJcbiAgICAgICAgICBzd2l0Y2ggKGxhbmcpIHtcclxuICAgICAgICAgICAgY2FzZSAndmknOlxyXG4gICAgICAgICAgICAgIG0gPSBOdW1iZXIobSkgPCAxMCA/ICcwJyArIG0gOiBtO1xyXG4gICAgICAgICAgICAgIGQgPSBOdW1iZXIoZCkgPCAxMCA/ICcwJyArIGQgOiBkO1xyXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0ZVZhbHVlPy5nZXRGdWxsWWVhciA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2R9LyR7bX0vJHt5fSAke2hofToke21tfToke3NzfWA7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgJ2VuJzpcclxuICAgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGVWYWx1ZT8uZ2V0RnVsbFllYXIgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHttfS8ke2R9LyR7eX0gJHtoaH06JHttbX06JHtzc31gO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5USU1FX0hITU06XHJcbiAgICAgICAgICB2YWx1ZSA9IG5ldyBEYXRlKHZhbHVlKTtcclxuICAgICAgICAgIGhoID0gdmFsdWU/LmdldEhvdXJzKCk7XHJcbiAgICAgICAgICBtbSA9IHZhbHVlPy5nZXRNaW51dGVzKCk7XHJcbiAgICAgICAgICBoaCA9IE51bWJlcihoaCkgPCAxMCA/ICcwJyArIGhoIDogaGg7XHJcbiAgICAgICAgICBtbSA9IE51bWJlcihtbSkgPCAxMCA/ICcwJyArIG1tIDogbW07XHJcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlPy5nZXRGdWxsWWVhciA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICByZXR1cm4gYCR7aGh9OiR7bW19YDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5CT09MRUFOX1RPX1RSVUVfRkFMU0U6XHJcbiAgICAgICAgICByZXR1cm4gISF2YWx1ZSA/XHJcbiAgICAgICAgICAgIHRoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfQ09NTU9OX0JPT0xFQU5fVE9fVFJVRSwgbGFuZykgOlxyXG4gICAgICAgICAgICB0aGlzLm1scy50cmFucyhFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTU1PTl9CT09MRUFOX1RPX0ZBTFNFLCBsYW5nKTtcclxuXHJcbiAgICAgICAgY2FzZSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuQk9PTEVBTl9UT19ZRVNfTk86XHJcbiAgICAgICAgICByZXR1cm4gISF2YWx1ZSA/XHJcbiAgICAgICAgICAgIHRoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfQ09NTU9OX0JPT0xFQU5fVE9fWUVTLCBsYW5nKSA6XHJcbiAgICAgICAgICAgIHRoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfQ09NTU9OX0JPT0xFQU5fVE9fTk8sIGxhbmcpO1xyXG5cclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5CT09MRUFOX1RPX0RPTkVfTk9UWUVUOlxyXG4gICAgICAgICAgcmV0dXJuICEhdmFsdWUgP1xyXG4gICAgICAgICAgICB0aGlzLm1scy50cmFucyhFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTU1PTl9CT09MRUFOX1RPX0RPTkUsIGxhbmcpIDpcclxuICAgICAgICAgICAgdGhpcy5tbHMudHJhbnMoRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fQk9PTEVBTl9UT19OT1RfWUVULCBsYW5nKTtcclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5CT09MRUFOX1RPX0FDVElWRV9JTkFDVElWRTpcclxuICAgICAgICAgIHJldHVybiAhIXZhbHVlID9cclxuICAgICAgICAgICAgdGhpcy5tbHMudHJhbnMoRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fQk9PTEVBTl9UT19BQ1RJVkUsIGxhbmcpIDpcclxuICAgICAgICAgICAgdGhpcy5tbHMudHJhbnMoRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fQk9PTEVBTl9UT19JTkFDVElWRSwgbGFuZyk7XHJcbiAgICAgICAgY2FzZSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuVVBMT0FERURfRklMRU5BTUVfQ1VUX09GRjpcclxuICAgICAgICAgIGlmICghIXZhbHVlICYmIHR5cGVvZih2YWx1ZSkgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA+IDUyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5zdWJzdHJpbmcoNTIpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIHByb2Nlc3NpbmcgdGFibGVQaXBlIGZvciBcIiwgdmFsdWUsIHR5cGVvZiB2YWx1ZSwgZSlcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIl19
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL3BpcGVzL3RhYmxlLWNlbGwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBTTFELE1BQU0sT0FBTyxhQUFhO0lBRXhCLFlBQW9CLEdBQXlCO1FBQXpCLFFBQUcsR0FBSCxHQUFHLENBQXNCO0lBQzdDLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBVSxFQUFFLElBQXdCLEVBQUUsSUFBWTtRQUUxRCxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssRUFBRTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3hFLElBQUksSUFBSSxLQUFLLFNBQVM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUVyQyxNQUFNLGNBQWMsR0FBYTtZQUMvQixxQkFBcUIsQ0FBQyxTQUFTO1lBQy9CLHFCQUFxQixDQUFDLGNBQWM7WUFDcEMscUJBQXFCLENBQUMsSUFBSTtZQUMxQixxQkFBcUIsQ0FBQyxTQUFTO1lBQy9CLHFCQUFxQixDQUFDLE1BQU07WUFDNUIscUJBQXFCLENBQUMsU0FBUztZQUMvQixxQkFBcUIsQ0FBQyxTQUFTO1lBQy9CLHFCQUFxQixDQUFDLHFCQUFxQjtZQUMzQyxxQkFBcUIsQ0FBQyxpQkFBaUI7WUFDdkMscUJBQXFCLENBQUMsc0JBQXNCO1lBQzVDLHFCQUFxQixDQUFDLDBCQUEwQjtZ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STtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVudW1Db3JlVGFibGVQaXBlVHlwZSB9IGZyb20gJy4uL2NvcmUtdGFibGUvRW51bUNvcmVUYWJsZVBpcGVUeXBlJztcclxuaW1wb3J0IHsgbm9ybWFsaXplSHVtYW5OYW1lIH0gZnJvbSAnLi9ub3JtYWxpemUtaHVtYW4tbmFtZS5waXBlJztcclxuaW1wb3J0IHsgTXVsdGlMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tdWx0aS1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ3RhYmxlQ2VsbCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlQ2VsbFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgcGlwZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBsYW5nOiBzdHJpbmcpOiBhbnkge1xyXG5cclxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykgcmV0dXJuIHZhbHVlO1xyXG4gICAgaWYgKHBpcGUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHZhbHVlO1xyXG5cclxuICAgIGNvbnN0IGF2YWlsYWJsZVR5cGVzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgRW51bUNvcmVUYWJsZVBpcGVUeXBlLlRSQU5TTEFURSxcclxuICAgICAgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkJFQVVUSUZVTF9KU09OLFxyXG4gICAgICBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuREFURSxcclxuICAgICAgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkRBVEVfRERNTSxcclxuICAgICAgRW51bUNvcmVUYWJsZVBpcGVUeXBlLk5VTUJFUixcclxuICAgICAgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkRBVEVfVElNRSxcclxuICAgICAgRW51bUNvcmVUYWJsZVBpcGVUeXBlLlRJTUVfSEhNTSxcclxuICAgICAgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkJPT0xFQU5fVE9fVFJVRV9GQUxTRSxcclxuICAgICAgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkJPT0xFQU5fVE9fWUVTX05PLFxyXG4gICAgICBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuQk9PTEVBTl9UT19ET05FX05PVFlFVCxcclxuICAgICAgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkJPT0xFQU5fVE9fQUNUSVZFX0lOQUNUSVZFLFxyXG4gICAgICBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuTE9XRVJDQVNFLFxyXG4gICAgICBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuVVBQRVJDQVNFLFxyXG4gICAgICBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuTk9STUFMSVpFX0hVTUFOX05BTUUsXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5ERUNJTUFMX1RPX0ZJWF8yLFxyXG4gICAgICBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuREVDSU1BTF9UT19GSVhfMyxcclxuICAgICAgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkRFQ0lNQUxfVE9fRklYXzUsXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5VUExPQURFRF9GSUxFTkFNRV9DVVRfT0ZGXHJcbiAgICBdO1xyXG5cclxuICAgIGlmICghISFhdmFpbGFibGVUeXBlcy5pbmNsdWRlcyhwaXBlKSkgcmV0dXJuIHZhbHVlO1xyXG5cclxuICAgIGxldCB5LCBtLCBkLCBoaCwgbW0sIHNzO1xyXG4gICAgLy8gR2V0IG1pbnV0ZXMgZGlmZmVyZW50IGJldHdlZW4gbG9jYWwgZGF0ZSBhbmQgVVRDIHRpbWUgem9uZVxyXG4gICAgY29uc3Qgb2Zmc2V0ID0gKG5ldyBEYXRlKCkpLmdldFRpbWV6b25lT2Zmc2V0KCk7XHJcbiAgICB0cnkge1xyXG5cclxuICAgICAgc3dpdGNoIChwaXBlISkge1xyXG4gICAgICAgIGNhc2UgRW51bUNvcmVUYWJsZVBpcGVUeXBlLlRSQU5TTEFURTpcclxuICAgICAgICAgIHJldHVybiB0aGlzLm1scy50cmFucyh2YWx1ZSwgbGFuZyk7XHJcbiAgICAgICAgY2FzZSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuQkVBVVRJRlVMX0pTT046XHJcbiAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoSlNPTi5wYXJzZSh2YWx1ZSksIG51bGwsIDIpO1xyXG4gICAgICAgIGNhc2UgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkxPV0VSQ0FTRTpcclxuICAgICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgY2FzZSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuVVBQRVJDQVNFOlxyXG4gICAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkudG9VcHBlckNhc2UoKTtcclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5OT1JNQUxJWkVfSFVNQU5fTkFNRTpcclxuICAgICAgICAgIHJldHVybiBub3JtYWxpemVIdW1hbk5hbWUodmFsdWUpO1xyXG4gICAgICAgIGNhc2UgRW51bUNvcmVUYWJsZVBpcGVUeXBlLk5VTUJFUjpcclxuICAgICAgICAgIHZhbHVlID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCdlbi1VUycsIHsgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOiAodmFsdWUpLmxlbmd0aCB9KS5mb3JtYXQodmFsdWUpO1xyXG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgIGNhc2UgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkRFQ0lNQUxfVE9fRklYXzI6XHJcbiAgICAgICAgICByZXR1cm4gdmFsdWUudG9GaXhlZCgyKTtcclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5ERUNJTUFMX1RPX0ZJWF8zOlxyXG4gICAgICAgICAgcmV0dXJuIHZhbHVlLnRvRml4ZWQoMyk7XHJcbiAgICAgICAgY2FzZSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuREVDSU1BTF9UT19GSVhfNTpcclxuICAgICAgICAgIHJldHVybiB2YWx1ZS50b0ZpeGVkKDUpO1xyXG4gICAgICAgIGNhc2UgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkRBVEU6XHJcblxyXG4gICAgICAgICAgLyogQ29udmVydCBmcm9tIFVUQyB0byBsb2NhbCBkYXRlICovXHJcbiAgICAgICAgICBjb25zdCBvcmlnaW5hbFZhbHVlID0gbmV3IERhdGUodmFsdWUpO1xyXG4gICAgICAgICAgY29uc3QgbG9jYWwgPSBuZXcgRGF0ZShvcmlnaW5hbFZhbHVlLmdldFRpbWUoKSAtIG9mZnNldCAqIDYwMDAwKTtcclxuICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4gICAgICAgICAgeSA9IGxvY2FsPy5nZXRGdWxsWWVhcigpO1xyXG4gICAgICAgICAgbSA9IGxvY2FsPy5nZXRNb250aCgpICsgMTtcclxuICAgICAgICAgIGQgPSBsb2NhbD8uZ2V0RGF0ZSgpO1xyXG5cclxuICAgICAgICAgIHN3aXRjaCAobGFuZykge1xyXG4gICAgICAgICAgICBjYXNlICd2aSc6XHJcbiAgICAgICAgICAgICAgbSA9IE51bWJlcihtKSA8IDEwID8gJzAnICsgbSA6IG07XHJcbiAgICAgICAgICAgICAgZCA9IE51bWJlcihkKSA8IDEwID8gJzAnICsgZCA6IGQ7XHJcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBsb2NhbD8uZ2V0RnVsbFllYXIgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtkfS8ke219LyR7eX1gO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlICdlbic6XHJcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBsb2NhbD8uZ2V0RnVsbFllYXIgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHttfS8ke2R9LyR7eX1gO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5EQVRFX0RETU06XHJcblxyXG4gICAgICAgICAgLyogQ29udmVydCBmcm9tIFVUQyB0byBsb2NhbCBkYXRlICovXHJcbiAgICAgICAgICBjb25zdCBvcmlnVmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICAgICAgICBjb25zdCBsb2NhbFZhbHVlID0gbmV3IERhdGUob3JpZ1ZhbHVlLmdldFRpbWUoKSAtIG9mZnNldCAqIDYwMDAwKTtcclxuICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4gICAgICAgICAgbSA9IGxvY2FsVmFsdWU/LmdldE1vbnRoKCkgKyAxO1xyXG4gICAgICAgICAgZCA9IGxvY2FsVmFsdWU/LmdldERhdGUoKTtcclxuXHJcbiAgICAgICAgICBzd2l0Y2ggKGxhbmcpIHtcclxuICAgICAgICAgICAgY2FzZSAndmknOlxyXG4gICAgICAgICAgICAgIG0gPSBOdW1iZXIobSkgPCAxMCA/ICcwJyArIG0gOiBtO1xyXG4gICAgICAgICAgICAgIGQgPSBOdW1iZXIoZCkgPCAxMCA/ICcwJyArIGQgOiBkO1xyXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgbG9jYWxWYWx1ZT8uZ2V0RnVsbFllYXIgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtkfS8ke219YDtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAnZW4nOlxyXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgbG9jYWxWYWx1ZT8uZ2V0RnVsbFllYXIgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHttfS8ke2R9YDtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgY2FzZSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuREFURV9USU1FOlxyXG5cclxuICAgICAgICAgIC8vIENvbnZlcnQgZnJvbSBVVEMgdG8gbG9jYWwgZGF0ZXRtZVxyXG4gICAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXRlOiBEYXRlID0gbmV3IERhdGUodmFsdWUpO1xyXG4gICAgICAgICAgY29uc3QgZGF0ZVZhbHVlID0gbmV3IERhdGUob3JpZ2luYWxEYXRlLmdldFRpbWUoKSAtIG9mZnNldCAqIDYwMDAwKTtcclxuICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4gICAgICAgICAgeSA9IGRhdGVWYWx1ZT8uZ2V0RnVsbFllYXIoKTtcclxuICAgICAgICAgIG0gPSBkYXRlVmFsdWU/LmdldE1vbnRoKCkgKyAxO1xyXG4gICAgICAgICAgZCA9IGRhdGVWYWx1ZT8uZ2V0RGF0ZSgpO1xyXG4gICAgICAgICAgaGggPSBkYXRlVmFsdWU/LmdldEhvdXJzKCk7XHJcbiAgICAgICAgICBtbSA9IGRhdGVWYWx1ZT8uZ2V0TWludXRlcygpO1xyXG4gICAgICAgICAgc3MgPSBkYXRlVmFsdWU/LmdldFNlY29uZHMoKTtcclxuICAgICAgICAgIGhoID0gTnVtYmVyKGhoKSA8IDEwID8gJzAnICsgaGggOiBoaDtcclxuICAgICAgICAgIG1tID0gTnVtYmVyKG1tKSA8IDEwID8gJzAnICsgbW0gOiBtbTtcclxuICAgICAgICAgIHNzID0gTnVtYmVyKHNzKSA8IDEwID8gJzAnICsgc3MgOiBzcztcclxuXHJcbiAgICAgICAgICBzd2l0Y2ggKGxhbmcpIHtcclxuICAgICAgICAgICAgY2FzZSAndmknOlxyXG4gICAgICAgICAgICAgIG0gPSBOdW1iZXIobSkgPCAxMCA/ICcwJyArIG0gOiBtO1xyXG4gICAgICAgICAgICAgIGQgPSBOdW1iZXIoZCkgPCAxMCA/ICcwJyArIGQgOiBkO1xyXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0ZVZhbHVlPy5nZXRGdWxsWWVhciA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2R9LyR7bX0vJHt5fSAke2hofToke21tfToke3NzfWA7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgJ2VuJzpcclxuICAgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGVWYWx1ZT8uZ2V0RnVsbFllYXIgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHttfS8ke2R9LyR7eX0gJHtoaH06JHttbX06JHtzc31gO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5USU1FX0hITU06XHJcbiAgICAgICAgICB2YWx1ZSA9IG5ldyBEYXRlKHZhbHVlKTtcclxuICAgICAgICAgIGhoID0gdmFsdWU/LmdldEhvdXJzKCk7XHJcbiAgICAgICAgICBtbSA9IHZhbHVlPy5nZXRNaW51dGVzKCk7XHJcbiAgICAgICAgICBoaCA9IE51bWJlcihoaCkgPCAxMCA/ICcwJyArIGhoIDogaGg7XHJcbiAgICAgICAgICBtbSA9IE51bWJlcihtbSkgPCAxMCA/ICcwJyArIG1tIDogbW07XHJcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlPy5nZXRGdWxsWWVhciA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICByZXR1cm4gYCR7aGh9OiR7bW19YDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5CT09MRUFOX1RPX1RSVUVfRkFMU0U6XHJcbiAgICAgICAgICByZXR1cm4gISF2YWx1ZSA/XHJcbiAgICAgICAgICAgIHRoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfQ09NTU9OX0JPT0xFQU5fVE9fVFJVRSwgbGFuZykgOlxyXG4gICAgICAgICAgICB0aGlzLm1scy50cmFucyhFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTU1PTl9CT09MRUFOX1RPX0ZBTFNFLCBsYW5nKTtcclxuXHJcbiAgICAgICAgY2FzZSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuQk9PTEVBTl9UT19ZRVNfTk86XHJcbiAgICAgICAgICByZXR1cm4gISF2YWx1ZSA/XHJcbiAgICAgICAgICAgIHRoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfQ09NTU9OX0JPT0xFQU5fVE9fWUVTLCBsYW5nKSA6XHJcbiAgICAgICAgICAgIHRoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfQ09NTU9OX0JPT0xFQU5fVE9fTk8sIGxhbmcpO1xyXG5cclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5CT09MRUFOX1RPX0RPTkVfTk9UWUVUOlxyXG4gICAgICAgICAgcmV0dXJuICEhdmFsdWUgP1xyXG4gICAgICAgICAgICB0aGlzLm1scy50cmFucyhFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTU1PTl9CT09MRUFOX1RPX0RPTkUsIGxhbmcpIDpcclxuICAgICAgICAgICAgdGhpcy5tbHMudHJhbnMoRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fQk9PTEVBTl9UT19OT1RfWUVULCBsYW5nKTtcclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5CT09MRUFOX1RPX0FDVElWRV9JTkFDVElWRTpcclxuICAgICAgICAgIHJldHVybiAhIXZhbHVlID9cclxuICAgICAgICAgICAgdGhpcy5tbHMudHJhbnMoRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fQk9PTEVBTl9UT19BQ1RJVkUsIGxhbmcpIDpcclxuICAgICAgICAgICAgdGhpcy5tbHMudHJhbnMoRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fQk9PTEVBTl9UT19JTkFDVElWRSwgbGFuZyk7XHJcbiAgICAgICAgY2FzZSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuVVBMT0FERURfRklMRU5BTUVfQ1VUX09GRjpcclxuICAgICAgICAgIGlmICghIXZhbHVlICYmIHR5cGVvZiAodmFsdWUpID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGggPiA1Mikge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUuc3Vic3RyaW5nKDUyKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBwcm9jZXNzaW5nIHRhYmxlUGlwZSBmb3IgXCIsIHZhbHVlLCB0eXBlb2YgdmFsdWUsIGUpXHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==