@the-liberators/ngx-scrumteamsurvey-tools 2.3.18 → 2.3.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/models/featuresDto.mjs +1 -1
- package/esm2022/lib/results/components/footer/footer.component.mjs +3 -3
- package/esm2022/lib/results/components/userprofile/userprofile.component.mjs +17 -9
- package/esm2022/lib/results/services/userProfile.service.mjs +6 -3
- package/fesm2022/the-liberators-ngx-scrumteamsurvey-tools.mjs +23 -12
- package/fesm2022/the-liberators-ngx-scrumteamsurvey-tools.mjs.map +1 -1
- package/lib/models/featuresDto.d.ts +1 -0
- package/lib/results/components/userprofile/userprofile.component.d.ts +6 -4
- package/lib/results/services/userProfile.service.d.ts +3 -2
- package/package.json +1 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export class FeaturesDto {
|
|
2
2
|
}
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZXNEdG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvbW9kZWxzL2ZlYXR1cmVzRHRvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxXQUFXO0NBT3ZCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEZlYXR1cmVzRHRvIHtcbiAgIGFsbG93TUZBOiBib29sZWFuO1xuICAgYWxsb3dTU086IGJvb2xlYW47XG4gICBhbGxvd0FQSTogYm9vbGVhbjtcbiAgIGFsbG93Q3VzdG9tRG9tYWluOiBib29sZWFuO1xuICAgYWxsb3dCcmFuZGVkUGRmczogYm9vbGVhbjtcbiAgIGFsbG93U2NhbGVTZWxlY3Rpb246IGJvb2xlYW47XG59XG4iXX0=
|
|
@@ -18,13 +18,13 @@ export class FooterComponent extends ComponentWithViewStateBase {
|
|
|
18
18
|
}
|
|
19
19
|
;
|
|
20
20
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: FooterComponent, deps: [{ token: VIEWSTATE_PROVIDER }, { token: i1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: FooterComponent, selector: "liberators-footer", usesInheritance: true, ngImport: i0, template: "<footer *ngIf=\"loaded\">\n <div class=\"item\">Provided by <a [href]=\"branding.channelCompanyUrl\">{{branding.channelName}}</a></div>\n <div class=\"item\"><a [href]=\"branding.channelTermsOfUseUrl\" target=\"_blank\">Terms of use</a></div>\n <div class=\"item\"><a [href]=\"branding.channelPrivacyPolicyUrl\" target=\"_blank\">Privacy</a></div>\n <div class=\"item\"><a href=\"https://
|
|
21
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: FooterComponent, selector: "liberators-footer", usesInheritance: true, ngImport: i0, template: "<footer *ngIf=\"loaded\">\n <div class=\"item\">Provided by <a [href]=\"branding.channelCompanyUrl\">{{branding.channelName}}</a></div>\n <div class=\"item\"><a [href]=\"branding.channelTermsOfUseUrl\" target=\"_blank\">Terms of use</a></div>\n <div class=\"item\"><a [href]=\"branding.channelPrivacyPolicyUrl\" target=\"_blank\">Privacy</a></div>\n <div class=\"item\"><a href=\"https://columinity.com/wiki\" target=\"_blank\">Documentation</a></div>\n <div class=\"item\"><a [routerLink]=\"[]\" reportBugDialog>Report bug</a></div>\n</footer>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.OpenReportBugDialogDirective, selector: "[reportBugDialog]" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
22
22
|
}
|
|
23
23
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: FooterComponent, decorators: [{
|
|
24
24
|
type: Component,
|
|
25
|
-
args: [{ selector: 'liberators-footer', encapsulation: ViewEncapsulation.None, template: "<footer *ngIf=\"loaded\">\n <div class=\"item\">Provided by <a [href]=\"branding.channelCompanyUrl\">{{branding.channelName}}</a></div>\n <div class=\"item\"><a [href]=\"branding.channelTermsOfUseUrl\" target=\"_blank\">Terms of use</a></div>\n <div class=\"item\"><a [href]=\"branding.channelPrivacyPolicyUrl\" target=\"_blank\">Privacy</a></div>\n <div class=\"item\"><a href=\"https://
|
|
25
|
+
args: [{ selector: 'liberators-footer', encapsulation: ViewEncapsulation.None, template: "<footer *ngIf=\"loaded\">\n <div class=\"item\">Provided by <a [href]=\"branding.channelCompanyUrl\">{{branding.channelName}}</a></div>\n <div class=\"item\"><a [href]=\"branding.channelTermsOfUseUrl\" target=\"_blank\">Terms of use</a></div>\n <div class=\"item\"><a [href]=\"branding.channelPrivacyPolicyUrl\" target=\"_blank\">Privacy</a></div>\n <div class=\"item\"><a href=\"https://columinity.com/wiki\" target=\"_blank\">Documentation</a></div>\n <div class=\"item\"><a [routerLink]=\"[]\" reportBugDialog>Report bug</a></div>\n</footer>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}\n"] }]
|
|
26
26
|
}], ctorParameters: () => [{ type: i5.ViewModelStateBase, decorators: [{
|
|
27
27
|
type: Inject,
|
|
28
28
|
args: [VIEWSTATE_PROVIDER]
|
|
29
29
|
}] }, { type: i1.MatSnackBar }] });
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY3J1bXRlYW1zdXJ2ZXktdG9vbHMvc3JjL2xpYi9yZXN1bHRzL2NvbXBvbmVudHMvZm9vdGVyL2Zvb3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvcmVzdWx0cy9jb21wb25lbnRzL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFHakYsT0FBTyxFQUFFLGtCQUFrQixFQUFzQixNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7O0FBUW5HLE1BQU0sT0FBTyxlQUFnQixTQUFRLDBCQUFzQztJQUd4RSxZQUFnRCxLQUFxQyxFQUFZLFFBQXFCO1FBQ25ILEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFEdUIsVUFBSyxHQUFMLEtBQUssQ0FBZ0M7UUFBWSxhQUFRLEdBQVIsUUFBUSxDQUFhO0lBRXRILENBQUM7SUFFUyxZQUFZLENBQUMsSUFBZ0I7UUFDcEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUMxQyxDQUFDO0lBQUEsQ0FBQzsrR0FUUSxlQUFlLGtCQUdMLGtCQUFrQjttR0FINUIsZUFBZSxnRkNiNUIsOGlCQU9BOzs0RkRNYSxlQUFlO2tCQU4zQixTQUFTOytCQUNHLG1CQUFtQixpQkFHZCxpQkFBaUIsQ0FBQyxJQUFJOzswQkFLeEIsTUFBTTsyQkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IENvbXBvbmVudFdpdGhWaWV3U3RhdGVCYXNlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50V2l0aFZpZXdTdGF0ZUJhc2UnO1xuaW1wb3J0IHsgQnJhbmRpbmdTZXR0aW5nc0R0byB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9icmFuZGluZ1NldHRpbmdzRHRvJztcbmltcG9ydCB7IElWaWV3U3RhdGUgfSBmcm9tICcuLi8uLi8uLi92aWV3TW9kZWwvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBWSUVXU1RBVEVfUFJPVklERVIsIFZpZXdNb2RlbFN0YXRlQmFzZSB9IGZyb20gJy4uLy4uLy4uL3ZpZXdNb2RlbC92aWV3TW9kZWxTdGF0ZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICBzZWxlY3RvcjogJ2xpYmVyYXRvcnMtZm9vdGVyJyxcbiAgIHRlbXBsYXRlVXJsOiAnLi9mb290ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgc3R5bGVVcmxzOiBbJy4vZm9vdGVyLmNvbXBvbmVudC5sZXNzJ10sXG4gICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEZvb3RlckNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudFdpdGhWaWV3U3RhdGVCYXNlPElWaWV3U3RhdGU+IHtcbiAgIHB1YmxpYyBicmFuZGluZzogQnJhbmRpbmdTZXR0aW5nc0R0bztcblxuICAgY29uc3RydWN0b3IoQEluamVjdChWSUVXU1RBVEVfUFJPVklERVIpIHByaXZhdGUgc3RhdGU6IFZpZXdNb2RlbFN0YXRlQmFzZTxJVmlld1N0YXRlPiwgcHJvdGVjdGVkIHNuYWNrQmFyOiBNYXRTbmFja0Jhcikge1xuICAgICAgc3VwZXIoc3RhdGUsIHNuYWNrQmFyKVxuICAgfVxuXG4gICBwcm90ZWN0ZWQgb25EYXRhVXBkYXRlKGRhdGE6IElWaWV3U3RhdGUpOiB2b2lkIHtcbiAgICAgIHRoaXMuYnJhbmRpbmcgPSBkYXRhLnVzZXJJbmZvLmJyYW5kaW5nO1xuICAgfTtcbn1cbiIsIjxmb290ZXIgKm5nSWY9XCJsb2FkZWRcIj5cbiAgIDxkaXYgY2xhc3M9XCJpdGVtXCI+UHJvdmlkZWQgYnkgPGEgW2hyZWZdPVwiYnJhbmRpbmcuY2hhbm5lbENvbXBhbnlVcmxcIj57e2JyYW5kaW5nLmNoYW5uZWxOYW1lfX08L2E+PC9kaXY+XG4gICA8ZGl2IGNsYXNzPVwiaXRlbVwiPjxhIFtocmVmXT1cImJyYW5kaW5nLmNoYW5uZWxUZXJtc09mVXNlVXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCI+VGVybXMgb2YgdXNlPC9hPjwvZGl2PlxuICAgPGRpdiBjbGFzcz1cIml0ZW1cIj48YSBbaHJlZl09XCJicmFuZGluZy5jaGFubmVsUHJpdmFjeVBvbGljeVVybFwiIHRhcmdldD1cIl9ibGFua1wiPlByaXZhY3k8L2E+PC9kaXY+XG4gICA8ZGl2IGNsYXNzPVwiaXRlbVwiPjxhIGhyZWY9XCJodHRwczovL2NvbHVtaW5pdHkuY29tL3dpa2lcIiB0YXJnZXQ9XCJfYmxhbmtcIj5Eb2N1bWVudGF0aW9uPC9hPjwvZGl2PlxuICAgPGRpdiBjbGFzcz1cIml0ZW1cIj48YSBbcm91dGVyTGlua109XCJbXVwiIHJlcG9ydEJ1Z0RpYWxvZz5SZXBvcnQgYnVnPC9hPjwvZGl2PlxuPC9mb290ZXI+XG4iXX0=
|
|
@@ -28,7 +28,7 @@ export class UserProfileComponent extends ComponentWithViewStateBase {
|
|
|
28
28
|
this.loading = false;
|
|
29
29
|
this.createForm();
|
|
30
30
|
this.authService.user$.subscribe((profile) => {
|
|
31
|
-
this.
|
|
31
|
+
this.usesMFA = profile.use_mfa;
|
|
32
32
|
this.email = profile.email;
|
|
33
33
|
});
|
|
34
34
|
}
|
|
@@ -116,16 +116,16 @@ export class UserProfileComponent extends ComponentWithViewStateBase {
|
|
|
116
116
|
super.showSuccess('We sent an e-mail to ' + this.email + ' to change your password');
|
|
117
117
|
});
|
|
118
118
|
}
|
|
119
|
-
|
|
119
|
+
sendMFAEnrollment() {
|
|
120
120
|
this.loading = true;
|
|
121
|
-
this.userProfileService.
|
|
121
|
+
this.userProfileService.sendMFAEnrollment().subscribe(success => {
|
|
122
122
|
this.loading = false;
|
|
123
123
|
super.showSuccess('We sent an e-mail to ' + this.email + ' to set up your second factor (2FA)');
|
|
124
124
|
});
|
|
125
125
|
}
|
|
126
|
-
|
|
126
|
+
resetMFAEnrollment() {
|
|
127
127
|
this.loading = true;
|
|
128
|
-
this.userProfileService.
|
|
128
|
+
this.userProfileService.resetMFAEnrollment().subscribe(success => {
|
|
129
129
|
this.loading = false;
|
|
130
130
|
super.showSuccess('Your second factor is cleared. If 2FA is required for your account, you now have to set up again. Otherwise you can leave it disabled.');
|
|
131
131
|
setTimeout(() => {
|
|
@@ -133,11 +133,19 @@ export class UserProfileComponent extends ComponentWithViewStateBase {
|
|
|
133
133
|
}, 4000);
|
|
134
134
|
});
|
|
135
135
|
}
|
|
136
|
+
createAPITokens() {
|
|
137
|
+
this.loading = true;
|
|
138
|
+
this.userProfileService.createAPITokens().subscribe(success => {
|
|
139
|
+
this.loading = false;
|
|
140
|
+
super.showSuccess('We sent an e-mail to ' + this.email + ' with your API tokens.');
|
|
141
|
+
});
|
|
142
|
+
}
|
|
136
143
|
onDataUpdate(data) {
|
|
137
144
|
this.loading = false;
|
|
138
145
|
this.changeAvatar = false;
|
|
139
146
|
this.userProfile = data.userInfo.profile;
|
|
140
|
-
this.
|
|
147
|
+
this.allowMFA = data.userInfo.features.allowMFA;
|
|
148
|
+
this.allowAPI = data.userInfo.features.allowAPI && data.userInfo.isAdmin;
|
|
141
149
|
this.form.controls.name.setValue(data.userInfo.profile.name);
|
|
142
150
|
if (data.userInfo.profile.email) {
|
|
143
151
|
this.showEmailInput = false;
|
|
@@ -146,13 +154,13 @@ export class UserProfileComponent extends ComponentWithViewStateBase {
|
|
|
146
154
|
}
|
|
147
155
|
;
|
|
148
156
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: UserProfileComponent, deps: [{ token: VIEWSTATE_PROVIDER }, { token: i1.AuthService }, { token: i2.UserProfileService }, { token: i3.AccountService }, { token: i4.UntypedFormBuilder }, { token: i5.MatSnackBar }, { token: i6.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
149
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: UserProfileComponent, selector: "userprofile", usesInheritance: true, ngImport: i0, template: "<div class=\"form-profile\">\n <h2>My Profile</h2>\n <form class=\"form\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit(formDirective)\" #formDirective=\"ngForm\">\n <div class=\"form-label\">Avatar</div>\n\n <div class=\"currentuserprofileavatar\">\n <div class=\"userprofileavatar\" *ngIf=\"userProfile.avatarUrl\">\n <div *ngIf=\"loading\" class=\"loading-icon small\"></div>\n <img *ngIf=\"!loading\" class=\"responsive\" [src]=\"userProfile.avatarUrl\" />\n </div>\n <div class=\"reupload\">\n <div class=\"button\" (click)=\"changeAvatar = true\" *ngIf=\"!changeAvatar && userProfile.avatarUrl\">Change avatar</div>\n <div class=\"button\" (click)=\"changeAvatar = true\" *ngIf=\"!changeAvatar && !userProfile.avatarUrl\">Set avatar</div>\n <div class=\"button\" (click)=\"clearAvatar()\" *ngIf=\"changeAvatar && userProfile.avatarUrl\"><span class=\"icon ph-trash-fill\"></span>Clear</div>\n </div>\n </div>\n\n <div class=\"reuploadform\" *ngIf=\"changeAvatar\">\n <div (click)=\"changeAvatar = false\" class=\"cancel icon ph-x-bold\"></div>\n <input class=\"mat-form-field\" accept=\"image/png,image/jpeg\" type=\"file\" id=\"coach-avatar\" (change)=\"uploadAvatar($event)\">\n <div class=\"message message-information\">\n <span class=\"icon ph-info-fill\"></span>Select new image (.png or .jpg). Use a 1:1 ratio for the best results (e.g. 500x500). Maximum size is 500x500px and 500kb.\n </div>\n </div>\n\n <div class=\"form-label\">Name</div>\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>What is your name?</mat-label>\n <input maxlength=\"50\" matInput id=\"name\" formControlName=\"name\" type=\"text\">\n <mat-error *ngIf=\"form.controls.name.errors\">\n <div *ngIf=\"form.controls.name.errors.required\">This field is required</div>\n </mat-error>\n </mat-form-field>\n\n <div class=\"form-label\">Email</div>\n <p *ngIf=\"!showEmailInput\">\n The e-mail address is set to <b>{{userProfile.email}}</b>.\n <a [routerLink]=\"[]\" id=\"toggle-email\" (click)=\"setChangeEmail()\">Set a different address.</a>\n </p>\n\n <mat-form-field appearance=\"fill\" *ngIf=\"showEmailInput\" subscriptSizing=\"dynamic\">\n <mat-label>On what e-mail address can you be contacted?</mat-label>\n <input matInput id=\"newEmail\" formControlName=\"newEmail\" type=\"email\">\n <mat-error *ngIf=\"form.controls.newEmail.errors\">\n <div *ngIf=\"form.controls.newEmail.errors.email\">The email is invalid. Please specify email like john@doe.nl or jane.doe@someone.nl.</div>\n <div *ngIf=\"form.controls.newEmail.errors.alreadyExists\">Another user already uses this e-mail address. Please use another email address.</div>\n </mat-error>\n </mat-form-field>\n\n <div class=\"toolbar\">\n <input class=\"button submit primary\" type=\"submit\" id=\"submit\" [disabled]=\"loading\" [ngClass]=\"{'loading': loading}\" value=\"Save\" />\n </div>\n </form>\n</div>\n\n<div class=\"form-security\">\n <h2>Security</h2>\n\n <form class=\"form\">\n <div class=\"form-label\">Change password</div>\n <div class=\"button\" (click)=\"sendPasswordReset()\" id=\"account-passwordreset\" *ngIf=\"!userProfile.usesSSO\">Send email to change password</div>\n <p *ngIf=\"userProfile.usesSSO\">You are logging in through single-sign on (SSO). Use your company's identity provider to change your password.</p>\n\n <ng-container *ngIf=\"allowMfa\">\n <div class=\"form-label\">Add additional login factor (MFA)</div>\n <ng-container *ngIf=\"!usesMfa\">\n <p>Add a code from Google Authenticator or similar to your account to make it more secure.</p>\n <div class=\"button\" (click)=\"sendMfaEnrollment()\" id=\"account-enrollmfa\">Send email to set up 2FA</div>\n </ng-container>\n <ng-container *ngIf=\"usesMfa\">\n <p>An additional factor is <b>enabled</b> for this account.</p>\n <div class=\"button\" (click)=\"resetMfaEnrollment()\" id=\"account-resetmfa\">Reset 2FA</div>\n </ng-container>\n </ng-container>\n </form>\n</div>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}.form-label{margin-top:30px}.currentuserprofileavatar{display:flex}.currentuserprofileavatar .userprofileavatar{margin-bottom:30px;display:flex;background:#2f2f2f;margin-right:15px;width:100px;height:100px;padding:10px}.reuploadform{background:#f0f0f0;position:relative}.reuploadform input{padding:15px 15px 0}.reuploadform .cancel{cursor:pointer;font-size:20pt;position:absolute;right:10px;top:10px}.form-security{margin-top:90px}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "directive", type: i9.MatError, selector: "mat-error, [matError]", inputs: ["id"] }] }); }
|
|
157
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: UserProfileComponent, selector: "userprofile", usesInheritance: true, ngImport: i0, template: "<div class=\"form-profile\">\n <h2>My Profile</h2>\n <form class=\"form\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit(formDirective)\" #formDirective=\"ngForm\">\n <div class=\"form-label\">Avatar</div>\n\n <div class=\"currentuserprofileavatar\">\n <div class=\"userprofileavatar\" *ngIf=\"userProfile.avatarUrl\">\n <div *ngIf=\"loading\" class=\"loading-icon small\"></div>\n <img *ngIf=\"!loading\" class=\"responsive\" [src]=\"userProfile.avatarUrl\" />\n </div>\n <div class=\"reupload\">\n <div class=\"button\" (click)=\"changeAvatar = true\" *ngIf=\"!changeAvatar && userProfile.avatarUrl\">Change avatar</div>\n <div class=\"button\" (click)=\"changeAvatar = true\" *ngIf=\"!changeAvatar && !userProfile.avatarUrl\">Set avatar</div>\n <div class=\"button\" (click)=\"clearAvatar()\" *ngIf=\"changeAvatar && userProfile.avatarUrl\"><span class=\"icon ph-trash-fill\"></span>Clear</div>\n </div>\n </div>\n\n <div class=\"reuploadform\" *ngIf=\"changeAvatar\">\n <div (click)=\"changeAvatar = false\" class=\"cancel icon ph-x-bold\"></div>\n <input class=\"mat-form-field\" accept=\"image/png,image/jpeg\" type=\"file\" id=\"coach-avatar\" (change)=\"uploadAvatar($event)\">\n <div class=\"message message-information\">\n <span class=\"icon ph-info-fill\"></span>Select new image (.png or .jpg). Use a 1:1 ratio for the best results (e.g. 500x500). Maximum size is 500x500px and 500kb.\n </div>\n </div>\n\n <div class=\"form-label\">Name</div>\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>What is your name?</mat-label>\n <input maxlength=\"50\" matInput id=\"name\" formControlName=\"name\" type=\"text\">\n <mat-error *ngIf=\"form.controls.name.errors\">\n <div *ngIf=\"form.controls.name.errors.required\">This field is required</div>\n </mat-error>\n </mat-form-field>\n\n <div class=\"form-label\">Email</div>\n <p *ngIf=\"!showEmailInput\">\n The e-mail address is set to <b>{{userProfile.email}}</b>.\n <a [routerLink]=\"[]\" id=\"toggle-email\" (click)=\"setChangeEmail()\">Set a different address.</a>\n </p>\n\n <mat-form-field appearance=\"fill\" *ngIf=\"showEmailInput\" subscriptSizing=\"dynamic\">\n <mat-label>On what e-mail address can you be contacted?</mat-label>\n <input matInput id=\"newEmail\" formControlName=\"newEmail\" type=\"email\">\n <mat-error *ngIf=\"form.controls.newEmail.errors\">\n <div *ngIf=\"form.controls.newEmail.errors.email\">The email is invalid. Please specify email like john@doe.nl or jane.doe@someone.nl.</div>\n <div *ngIf=\"form.controls.newEmail.errors.alreadyExists\">Another user already uses this e-mail address. Please use another email address.</div>\n </mat-error>\n </mat-form-field>\n\n <div class=\"toolbar\">\n <input class=\"button submit primary\" type=\"submit\" id=\"submit\" [disabled]=\"loading\" [ngClass]=\"{'loading': loading}\" value=\"Save\" />\n </div>\n </form>\n</div>\n\n<div class=\"form-security\">\n <h2>Security</h2>\n\n <form class=\"form\">\n <div class=\"form-label\">Change password</div>\n <div class=\"button\" (click)=\"sendPasswordReset()\" id=\"account-passwordreset\" *ngIf=\"!userProfile.usesSSO\">Send email to change password</div>\n <p *ngIf=\"userProfile.usesSSO\">You are logging in through single-sign on (SSO). Use your company's identity provider to change your password.</p>\n\n <ng-container *ngIf=\"allowMFA\">\n <div class=\"form-label\">Add additional login factor (MFA)</div>\n <ng-container *ngIf=\"!usesMFA\">\n <p>Add a code from Google Authenticator or similar to your account to make it more secure.</p>\n <div class=\"button\" (click)=\"sendMFAEnrollment()\" id=\"account-enrollmfa\">Send email to set up 2FA</div>\n </ng-container>\n <ng-container *ngIf=\"usesMFA\">\n <p>An additional factor is <b>enabled</b> for this account.</p>\n <div class=\"button\" (click)=\"resetMFAEnrollment()\" id=\"account-resetmfa\">Reset 2FA</div>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"allowAPI\">\n <div class=\"form-label\">API Access</div>\n <p>Access our <a target=\"_blank\" href=\"https://github.com/theliberators/scrumteamsurvey.docs/wiki/Getting-Started-with-the-API\">API</a> with your personal account.</p>\n <div class=\"button\" (click)=\"createAPITokens()\" id=\"account-apitokens\">Send email with new API tokens</div>\n </ng-container>\n </form>\n</div>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}.form-label{margin-top:30px}.currentuserprofileavatar{display:flex}.currentuserprofileavatar .userprofileavatar{margin-bottom:30px;display:flex;background:#2f2f2f;margin-right:15px;width:100px;height:100px;padding:10px}.reuploadform{background:#f0f0f0;position:relative}.reuploadform input{padding:15px 15px 0}.reuploadform .cancel{cursor:pointer;font-size:20pt;position:absolute;right:10px;top:10px}.form-security{margin-top:90px}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "directive", type: i9.MatError, selector: "mat-error, [matError]", inputs: ["id"] }] }); }
|
|
150
158
|
}
|
|
151
159
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: UserProfileComponent, decorators: [{
|
|
152
160
|
type: Component,
|
|
153
|
-
args: [{ selector: 'userprofile', template: "<div class=\"form-profile\">\n <h2>My Profile</h2>\n <form class=\"form\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit(formDirective)\" #formDirective=\"ngForm\">\n <div class=\"form-label\">Avatar</div>\n\n <div class=\"currentuserprofileavatar\">\n <div class=\"userprofileavatar\" *ngIf=\"userProfile.avatarUrl\">\n <div *ngIf=\"loading\" class=\"loading-icon small\"></div>\n <img *ngIf=\"!loading\" class=\"responsive\" [src]=\"userProfile.avatarUrl\" />\n </div>\n <div class=\"reupload\">\n <div class=\"button\" (click)=\"changeAvatar = true\" *ngIf=\"!changeAvatar && userProfile.avatarUrl\">Change avatar</div>\n <div class=\"button\" (click)=\"changeAvatar = true\" *ngIf=\"!changeAvatar && !userProfile.avatarUrl\">Set avatar</div>\n <div class=\"button\" (click)=\"clearAvatar()\" *ngIf=\"changeAvatar && userProfile.avatarUrl\"><span class=\"icon ph-trash-fill\"></span>Clear</div>\n </div>\n </div>\n\n <div class=\"reuploadform\" *ngIf=\"changeAvatar\">\n <div (click)=\"changeAvatar = false\" class=\"cancel icon ph-x-bold\"></div>\n <input class=\"mat-form-field\" accept=\"image/png,image/jpeg\" type=\"file\" id=\"coach-avatar\" (change)=\"uploadAvatar($event)\">\n <div class=\"message message-information\">\n <span class=\"icon ph-info-fill\"></span>Select new image (.png or .jpg). Use a 1:1 ratio for the best results (e.g. 500x500). Maximum size is 500x500px and 500kb.\n </div>\n </div>\n\n <div class=\"form-label\">Name</div>\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>What is your name?</mat-label>\n <input maxlength=\"50\" matInput id=\"name\" formControlName=\"name\" type=\"text\">\n <mat-error *ngIf=\"form.controls.name.errors\">\n <div *ngIf=\"form.controls.name.errors.required\">This field is required</div>\n </mat-error>\n </mat-form-field>\n\n <div class=\"form-label\">Email</div>\n <p *ngIf=\"!showEmailInput\">\n The e-mail address is set to <b>{{userProfile.email}}</b>.\n <a [routerLink]=\"[]\" id=\"toggle-email\" (click)=\"setChangeEmail()\">Set a different address.</a>\n </p>\n\n <mat-form-field appearance=\"fill\" *ngIf=\"showEmailInput\" subscriptSizing=\"dynamic\">\n <mat-label>On what e-mail address can you be contacted?</mat-label>\n <input matInput id=\"newEmail\" formControlName=\"newEmail\" type=\"email\">\n <mat-error *ngIf=\"form.controls.newEmail.errors\">\n <div *ngIf=\"form.controls.newEmail.errors.email\">The email is invalid. Please specify email like john@doe.nl or jane.doe@someone.nl.</div>\n <div *ngIf=\"form.controls.newEmail.errors.alreadyExists\">Another user already uses this e-mail address. Please use another email address.</div>\n </mat-error>\n </mat-form-field>\n\n <div class=\"toolbar\">\n <input class=\"button submit primary\" type=\"submit\" id=\"submit\" [disabled]=\"loading\" [ngClass]=\"{'loading': loading}\" value=\"Save\" />\n </div>\n </form>\n</div>\n\n<div class=\"form-security\">\n <h2>Security</h2>\n\n <form class=\"form\">\n <div class=\"form-label\">Change password</div>\n <div class=\"button\" (click)=\"sendPasswordReset()\" id=\"account-passwordreset\" *ngIf=\"!userProfile.usesSSO\">Send email to change password</div>\n <p *ngIf=\"userProfile.usesSSO\">You are logging in through single-sign on (SSO). Use your company's identity provider to change your password.</p>\n\n <ng-container *ngIf=\"
|
|
161
|
+
args: [{ selector: 'userprofile', template: "<div class=\"form-profile\">\n <h2>My Profile</h2>\n <form class=\"form\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit(formDirective)\" #formDirective=\"ngForm\">\n <div class=\"form-label\">Avatar</div>\n\n <div class=\"currentuserprofileavatar\">\n <div class=\"userprofileavatar\" *ngIf=\"userProfile.avatarUrl\">\n <div *ngIf=\"loading\" class=\"loading-icon small\"></div>\n <img *ngIf=\"!loading\" class=\"responsive\" [src]=\"userProfile.avatarUrl\" />\n </div>\n <div class=\"reupload\">\n <div class=\"button\" (click)=\"changeAvatar = true\" *ngIf=\"!changeAvatar && userProfile.avatarUrl\">Change avatar</div>\n <div class=\"button\" (click)=\"changeAvatar = true\" *ngIf=\"!changeAvatar && !userProfile.avatarUrl\">Set avatar</div>\n <div class=\"button\" (click)=\"clearAvatar()\" *ngIf=\"changeAvatar && userProfile.avatarUrl\"><span class=\"icon ph-trash-fill\"></span>Clear</div>\n </div>\n </div>\n\n <div class=\"reuploadform\" *ngIf=\"changeAvatar\">\n <div (click)=\"changeAvatar = false\" class=\"cancel icon ph-x-bold\"></div>\n <input class=\"mat-form-field\" accept=\"image/png,image/jpeg\" type=\"file\" id=\"coach-avatar\" (change)=\"uploadAvatar($event)\">\n <div class=\"message message-information\">\n <span class=\"icon ph-info-fill\"></span>Select new image (.png or .jpg). Use a 1:1 ratio for the best results (e.g. 500x500). Maximum size is 500x500px and 500kb.\n </div>\n </div>\n\n <div class=\"form-label\">Name</div>\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>What is your name?</mat-label>\n <input maxlength=\"50\" matInput id=\"name\" formControlName=\"name\" type=\"text\">\n <mat-error *ngIf=\"form.controls.name.errors\">\n <div *ngIf=\"form.controls.name.errors.required\">This field is required</div>\n </mat-error>\n </mat-form-field>\n\n <div class=\"form-label\">Email</div>\n <p *ngIf=\"!showEmailInput\">\n The e-mail address is set to <b>{{userProfile.email}}</b>.\n <a [routerLink]=\"[]\" id=\"toggle-email\" (click)=\"setChangeEmail()\">Set a different address.</a>\n </p>\n\n <mat-form-field appearance=\"fill\" *ngIf=\"showEmailInput\" subscriptSizing=\"dynamic\">\n <mat-label>On what e-mail address can you be contacted?</mat-label>\n <input matInput id=\"newEmail\" formControlName=\"newEmail\" type=\"email\">\n <mat-error *ngIf=\"form.controls.newEmail.errors\">\n <div *ngIf=\"form.controls.newEmail.errors.email\">The email is invalid. Please specify email like john@doe.nl or jane.doe@someone.nl.</div>\n <div *ngIf=\"form.controls.newEmail.errors.alreadyExists\">Another user already uses this e-mail address. Please use another email address.</div>\n </mat-error>\n </mat-form-field>\n\n <div class=\"toolbar\">\n <input class=\"button submit primary\" type=\"submit\" id=\"submit\" [disabled]=\"loading\" [ngClass]=\"{'loading': loading}\" value=\"Save\" />\n </div>\n </form>\n</div>\n\n<div class=\"form-security\">\n <h2>Security</h2>\n\n <form class=\"form\">\n <div class=\"form-label\">Change password</div>\n <div class=\"button\" (click)=\"sendPasswordReset()\" id=\"account-passwordreset\" *ngIf=\"!userProfile.usesSSO\">Send email to change password</div>\n <p *ngIf=\"userProfile.usesSSO\">You are logging in through single-sign on (SSO). Use your company's identity provider to change your password.</p>\n\n <ng-container *ngIf=\"allowMFA\">\n <div class=\"form-label\">Add additional login factor (MFA)</div>\n <ng-container *ngIf=\"!usesMFA\">\n <p>Add a code from Google Authenticator or similar to your account to make it more secure.</p>\n <div class=\"button\" (click)=\"sendMFAEnrollment()\" id=\"account-enrollmfa\">Send email to set up 2FA</div>\n </ng-container>\n <ng-container *ngIf=\"usesMFA\">\n <p>An additional factor is <b>enabled</b> for this account.</p>\n <div class=\"button\" (click)=\"resetMFAEnrollment()\" id=\"account-resetmfa\">Reset 2FA</div>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"allowAPI\">\n <div class=\"form-label\">API Access</div>\n <p>Access our <a target=\"_blank\" href=\"https://github.com/theliberators/scrumteamsurvey.docs/wiki/Getting-Started-with-the-API\">API</a> with your personal account.</p>\n <div class=\"button\" (click)=\"createAPITokens()\" id=\"account-apitokens\">Send email with new API tokens</div>\n </ng-container>\n </form>\n</div>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}.form-label{margin-top:30px}.currentuserprofileavatar{display:flex}.currentuserprofileavatar .userprofileavatar{margin-bottom:30px;display:flex;background:#2f2f2f;margin-right:15px;width:100px;height:100px;padding:10px}.reuploadform{background:#f0f0f0;position:relative}.reuploadform input{padding:15px 15px 0}.reuploadform .cancel{cursor:pointer;font-size:20pt;position:absolute;right:10px;top:10px}.form-security{margin-top:90px}\n"] }]
|
|
154
162
|
}], ctorParameters: () => [{ type: i10.ViewModelStateBase, decorators: [{
|
|
155
163
|
type: Inject,
|
|
156
164
|
args: [VIEWSTATE_PROVIDER]
|
|
157
165
|
}] }, { type: i1.AuthService }, { type: i2.UserProfileService }, { type: i3.AccountService }, { type: i4.UntypedFormBuilder }, { type: i5.MatSnackBar }, { type: i6.ActivatedRoute }] });
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnByb2ZpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjcnVtdGVhbXN1cnZleS10b29scy9zcmMvbGliL3Jlc3VsdHMvY29tcG9uZW50cy91c2VycHJvZmlsZS91c2VycHJvZmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvcmVzdWx0cy9jb21wb25lbnRzL3VzZXJwcm9maWxlL3VzZXJwcm9maWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUE0RCxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl0RyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFzQixrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFVbkcsTUFBTSxPQUFPLG9CQUFxQixTQUFRLDBCQUF5QztJQVloRixZQUFrRCxLQUF3QyxFQUFVLFdBQXdCLEVBQVUsa0JBQXNDLEVBQVUsY0FBOEIsRUFBVSxXQUErQixFQUFZLFFBQXFCLEVBQVksS0FBcUI7UUFDNVQsS0FBSyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUR3QixVQUFLLEdBQUwsS0FBSyxDQUFtQztRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUFVLG1CQUFjLEdBQWQsY0FB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QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFdmVudFR5cGUsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXBEaXJlY3RpdmUsIFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnQGF1dGgwL2F1dGgwLWFuZ3VsYXInO1xuaW1wb3J0IHsgQ29tcG9uZW50V2l0aFZpZXdTdGF0ZUJhc2UgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRXaXRoVmlld1N0YXRlQmFzZSc7XG5pbXBvcnQgeyBVc2VyUHJvZmlsZUR0byB9IGZyb20gJy4uLy4uLy4uL21vZGVscy91c2VySW5mb0R0byc7XG5pbXBvcnQgeyBWaWV3TW9kZWxTdGF0ZUJhc2UsIFZJRVdTVEFURV9QUk9WSURFUiB9IGZyb20gJy4uLy4uLy4uL3ZpZXdNb2RlbC92aWV3TW9kZWxTdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IElSZXN1bHRzU3RhdGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZXN1bHRzU3RhdGUnO1xuaW1wb3J0IHsgVXNlclByb2ZpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXNlclByb2ZpbGUuc2VydmljZSc7XG5pbXBvcnQgeyBBY2NvdW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FjY291bnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgc2VsZWN0b3I6ICd1c2VycHJvZmlsZScsXG4gICB0ZW1wbGF0ZVVybDogJy4vdXNlcnByb2ZpbGUuY29tcG9uZW50Lmh0bWwnLFxuICAgc3R5bGVVcmxzOiBbJy4vdXNlcnByb2ZpbGUuY29tcG9uZW50Lmxlc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBVc2VyUHJvZmlsZUNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudFdpdGhWaWV3U3RhdGVCYXNlPElSZXN1bHRzU3RhdGU+IHtcbiAgIHB1YmxpYyBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICAgcHVibGljIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgIHB1YmxpYyB1c2VyUHJvZmlsZTogVXNlclByb2ZpbGVEdG87XG4gICBwdWJsaWMgY2hhbmdlQXZhdGFyOiBib29sZWFuO1xuICAgcHVibGljIGNvbG9yOiBzdHJpbmc7XG4gICBwdWJsaWMgZW1haWw6IHN0cmluZztcbiAgIHB1YmxpYyB1c2VzTWZhOiBib29sZWFuO1xuICAgcHVibGljIGFsbG93TWZhOiBib29sZWFuO1xuICAgcHVibGljIGFsbG93UGFzc3dvcmRDaGFuZ2U6IGJvb2xlYW47XG4gICBwdWJsaWMgc2hvd0VtYWlsSW5wdXQ6IGJvb2xlYW47XG5cbiAgIGNvbnN0cnVjdG9yKEBJbmplY3QoVklFV1NUQVRFX1BST1ZJREVSKSBwcm90ZWN0ZWQgc3RhdGU6IFZpZXdNb2RlbFN0YXRlQmFzZTxJUmVzdWx0c1N0YXRlPiwgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHByaXZhdGUgdXNlclByb2ZpbGVTZXJ2aWNlOiBVc2VyUHJvZmlsZVNlcnZpY2UsIHByaXZhdGUgYWNjb3VudFNlcnZpY2U6IEFjY291bnRTZXJ2aWNlLCBwcml2YXRlIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsIHByb3RlY3RlZCBzbmFja2JhcjogTWF0U25hY2tCYXIsIHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcbiAgICAgIHN1cGVyKHN0YXRlLCBzbmFja2Jhcik7XG4gICAgICB0aGlzLmNyZWF0ZUZvcm0oKTtcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UudXNlciQuc3Vic2NyaWJlKFxuICAgICAgICAgKHByb2ZpbGUpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlc01mYSA9IHByb2ZpbGUudXNlX21mYTtcbiAgICAgICAgICAgIHRoaXMuZW1haWwgPSBwcm9maWxlLmVtYWlsO1xuICAgICAgICAgfSk7XG4gICB9XG5cbiAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICB9XG5cbiAgIHByaXZhdGUgY3JlYXRlRm9ybSgpOiB2b2lkIHtcbiAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgbmFtZTogW1wiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCldXSxcbiAgICAgICAgIG5ld0VtYWlsOiBbXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdXVxuICAgICAgfSk7XG4gICB9O1xuXG4gICBwdWJsaWMgYXN5bmMgb25TdWJtaXQoZm9ybURpcmVjdGl2ZTogRm9ybUdyb3VwRGlyZWN0aXZlKSB7XG4gICAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkgeyByZXR1cm47IH1cbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG5cbiAgICAgIGF3YWl0IHRoaXMuYXV0aFNlcnZpY2UubG9naW5XaXRoUG9wdXAoeyBhdXRob3JpemF0aW9uUGFyYW1zOiB7IG1heF9hZ2U6IDEgfSB9KS5zdWJzY3JpYmUoc3VjY2VzcyA9PiB7XG4gICAgICAgICB2YXIgdXBkYXRlUmVxdWVzdCA9IG5ldyBVc2VyUHJvZmlsZUR0bygpO1xuICAgICAgICAgdXBkYXRlUmVxdWVzdC5uYW1lID0gdGhpcy5mb3JtLmNvbnRyb2xzLm5hbWUudmFsdWU7XG4gICAgICAgICB1cGRhdGVSZXF1ZXN0LmVtYWlsID0gdGhpcy5mb3JtLmNvbnRyb2xzLm5ld0VtYWlsLnZhbHVlO1xuXG4gICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgdGhpcy51c2VyUHJvZmlsZVNlcnZpY2UudXBkYXRlKHVwZGF0ZVJlcXVlc3QpLnN1YnNjcmliZShzdWNjZXNzID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1N1Y2Nlc3MoXCJZb3VyIHByb2ZpbGUgd2FzIHVwZGF0ZWRcIik7XG4gICAgICAgICAgICAgICB9KTtcbiAgICAgICAgIH1cbiAgICAgICAgIGNhdGNoIChleDogYW55KSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMubmV3RW1haWwuc2V0RXJyb3JzKHsgYWxyZWFkeUV4aXN0czogdHJ1ZSB9KTtcbiAgICAgICAgIH1cbiAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgIH1cblxuICAgcHVibGljIHNldENoYW5nZUVtYWlsKCkge1xuICAgICAgdGhpcy5zaG93RW1haWxJbnB1dCA9IHRydWU7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMubmV3RW1haWwuZW5hYmxlKCk7XG4gICB9XG5cbiAgIHB1YmxpYyB1cGxvYWRBdmF0YXIoJGZpbGVJbnB1dDogYW55KTogdm9pZCB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgY29uc3QgZmlsZSA9ICgkZmlsZUlucHV0LnRhcmdldC5maWxlc1swXSk7XG5cbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xuICAgICAgICAgaWYgKGZpbGUudHlwZSAhPSBcImltYWdlL3BuZ1wiICYmIGZpbGUudHlwZSAhPSBcImltYWdlL2pwZWdcIikge1xuICAgICAgICAgICAgYWxlcnQoXCJUaGUgZmlsZSBtdXN0IGJlIGEgcG5nIG9yIGpwZyBmaWxlLiBZb3UgdXBsb2FkZWQgYSBmaWxlIG9mIHR5cGUgXCIgKyBmaWxlLnR5cGUpO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICB9XG5cbiAgICAgICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgICAgICBpbWFnZS5zcmMgPSBlLnRhcmdldC5yZXN1bHQ7XG4gICAgICAgICBpbWFnZS5vbmxvYWQgPSBycyA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbWdfaGVpZ2h0ID0gcnMuY3VycmVudFRhcmdldFsnaGVpZ2h0J107XG4gICAgICAgICAgICBjb25zdCBpbWdfd2lkdGggPSBycy5jdXJyZW50VGFyZ2V0Wyd3aWR0aCddO1xuXG4gICAgICAgICAgICBpZiAoaW1nX2hlaWdodCA+IDUwMCAmJiBpbWdfd2lkdGggPiA1MDApIHtcbiAgICAgICAgICAgICAgIGFsZXJ0KFwiVGhlIGxvZ28gaXMgdG9vIGxhcmdlLiBQbGVhc2UgbGltaXQgdG8gYSBwaWN0dXJlIG9mIDUwMHg1MDAgcGl4ZWxzLlwiKTtcbiAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgIHRoaXMudXNlclByb2ZpbGVTZXJ2aWNlLnNldEF2YXRhcihmaWxlKVxuICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICB9O1xuICAgICAgfTtcblxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICB9O1xuXG4gICBwdWJsaWMgY2xlYXJBdmF0YXIoKTogdm9pZCB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy51c2VyUHJvZmlsZVNlcnZpY2UuY2xlYXJBdmF0YXIoKVxuICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudXNlclByb2ZpbGUuYXZhdGFyVXJsID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlQXZhdGFyID0gZmFsc2U7XG4gICAgICAgICB9KTtcbiAgIH07ICBcblxuICAgcHVibGljIHNlbmRQYXNzd29yZFJlc2V0KCkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuYWNjb3VudFNlcnZpY2Uuc2VuZFJlc2V0UGFzc3dvcmQodGhpcy5lbWFpbCkuc3Vic2NyaWJlKFxuICAgICAgICAgc3VjY2VzcyA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHN1cGVyLnNob3dTdWNjZXNzKCdXZSBzZW50IGFuIGUtbWFpbCB0byAnICsgdGhpcy5lbWFpbCArICcgdG8gY2hhbmdlIHlvdXIgcGFzc3dvcmQnKTtcbiAgICAgICAgIH0pO1xuICAgfVxuXG4gICBwdWJsaWMgc2VuZE1mYUVucm9sbG1lbnQoKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy51c2VyUHJvZmlsZVNlcnZpY2Uuc2VuZE1mYUVucm9sbG1lbnQoKS5zdWJzY3JpYmUoXG4gICAgICAgICBzdWNjZXNzID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgc3VwZXIuc2hvd1N1Y2Nlc3MoJ1dlIHNlbnQgYW4gZS1tYWlsIHRvICcgKyB0aGlzLmVtYWlsICsgJyB0byBzZXQgdXAgeW91ciBzZWNvbmQgZmFjdG9yICgyRkEpJyk7XG4gICAgICAgICB9KTtcbiAgIH1cblxuXG4gICBwdWJsaWMgcmVzZXRNZmFFbnJvbGxtZW50KCkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMudXNlclByb2ZpbGVTZXJ2aWNlLnJlc2V0TWZhRW5yb2xsbWVudCgpLnN1YnNjcmliZShcbiAgICAgICAgIHN1Y2Nlc3MgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICBzdXBlci5zaG93U3VjY2VzcygnWW91ciBzZWNvbmQgZmFjdG9yIGlzIGNsZWFyZWQuIElmIDJGQSBpcyByZXF1aXJlZCBmb3IgeW91ciBhY2NvdW50LCB5b3Ugbm93IGhhdmUgdG8gc2V0IHVwIGFnYWluLiBPdGhlcndpc2UgeW91IGNhbiBsZWF2ZSBpdCBkaXNhYmxlZC4nKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgfSwgNDAwMCk7XG4gICAgICAgICB9KTtcbiAgIH1cblxuICAgcHJvdGVjdGVkIG9uRGF0YVVwZGF0ZShkYXRhOiBJUmVzdWx0c1N0YXRlKTogdm9pZCB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2hhbmdlQXZhdGFyID0gZmFsc2U7XG4gICAgICB0aGlzLnVzZXJQcm9maWxlID0gZGF0YS51c2VySW5mby5wcm9maWxlO1xuICAgICAgdGhpcy5hbGxvd01mYSA9IGRhdGEudXNlckluZm8uZmVhdHVyZXMuYWxsb3dNRkE7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMubmFtZS5zZXRWYWx1ZShkYXRhLnVzZXJJbmZvLnByb2ZpbGUubmFtZSk7XG4gICAgICBcbiAgICAgIGlmIChkYXRhLnVzZXJJbmZvLnByb2ZpbGUuZW1haWwpIHtcbiAgICAgICAgIHRoaXMuc2hvd0VtYWlsSW5wdXQgPSBmYWxzZTtcbiAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5uZXdFbWFpbC5kaXNhYmxlKCk7XG4gICAgICB9XG4gICB9O1xufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tcHJvZmlsZVwiPlxuICAgPGgyPk15IFByb2ZpbGU8L2gyPlxuICAgPGZvcm0gY2xhc3M9XCJmb3JtXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KGZvcm1EaXJlY3RpdmUpXCIgI2Zvcm1EaXJlY3RpdmU9XCJuZ0Zvcm1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QXZhdGFyPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjdXJyZW50dXNlcnByb2ZpbGVhdmF0YXJcIj5cbiAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VycHJvZmlsZWF2YXRhclwiICpuZ0lmPVwidXNlclByb2ZpbGUuYXZhdGFyVXJsXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwibG9hZGluZy1pY29uIHNtYWxsXCI+PC9kaXY+XG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiIWxvYWRpbmdcIiBjbGFzcz1cInJlc3BvbnNpdmVcIiBbc3JjXT1cInVzZXJQcm9maWxlLmF2YXRhclVybFwiIC8+XG4gICAgICAgICA8L2Rpdj5cbiAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXVwbG9hZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJjaGFuZ2VBdmF0YXIgPSB0cnVlXCIgKm5nSWY9XCIhY2hhbmdlQXZhdGFyICYmIHVzZXJQcm9maWxlLmF2YXRhclVybFwiPkNoYW5nZSBhdmF0YXI8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY2hhbmdlQXZhdGFyID0gdHJ1ZVwiICpuZ0lmPVwiIWNoYW5nZUF2YXRhciAmJiAhdXNlclByb2ZpbGUuYXZhdGFyVXJsXCI+U2V0IGF2YXRhcjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJjbGVhckF2YXRhcigpXCIgKm5nSWY9XCJjaGFuZ2VBdmF0YXIgJiYgdXNlclByb2ZpbGUuYXZhdGFyVXJsXCI+PHNwYW4gY2xhc3M9XCJpY29uIHBoLXRyYXNoLWZpbGxcIj48L3NwYW4+Q2xlYXI8L2Rpdj5cbiAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZXVwbG9hZGZvcm1cIiAqbmdJZj1cImNoYW5nZUF2YXRhclwiPlxuICAgICAgICAgPGRpdiAoY2xpY2spPVwiY2hhbmdlQXZhdGFyID0gZmFsc2VcIiBjbGFzcz1cImNhbmNlbCBpY29uIHBoLXgtYm9sZFwiPjwvZGl2PlxuICAgICAgICAgPGlucHV0IGNsYXNzPVwibWF0LWZvcm0tZmllbGRcIiBhY2NlcHQ9XCJpbWFnZS9wbmcsaW1hZ2UvanBlZ1wiIHR5cGU9XCJmaWxlXCIgaWQ9XCJjb2FjaC1hdmF0YXJcIiAoY2hhbmdlKT1cInVwbG9hZEF2YXRhcigkZXZlbnQpXCI+XG4gICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZSBtZXNzYWdlLWluZm9ybWF0aW9uXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gcGgtaW5mby1maWxsXCI+PC9zcGFuPlNlbGVjdCBuZXcgaW1hZ2UgKC5wbmcgb3IgLmpwZykuIFVzZSBhIDE6MSByYXRpbyBmb3IgdGhlIGJlc3QgcmVzdWx0cyAoZS5nLiA1MDB4NTAwKS4gTWF4aW11bSBzaXplIGlzIDUwMHg1MDBweCBhbmQgNTAwa2IuXG4gICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1sYWJlbFwiPk5hbWU8L2Rpdj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgICAgIDxtYXQtbGFiZWw+V2hhdCBpcyB5b3VyIG5hbWU/PC9tYXQtbGFiZWw+XG4gICAgICAgICA8aW5wdXQgbWF4bGVuZ3RoPVwiNTBcIiBtYXRJbnB1dCBpZD1cIm5hbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgdHlwZT1cInRleHRcIj5cbiAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLm5hbWUuZXJyb3JzXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZm9ybS5jb250cm9scy5uYW1lLmVycm9ycy5yZXF1aXJlZFwiPlRoaXMgZmllbGQgaXMgcmVxdWlyZWQ8L2Rpdj5cbiAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tbGFiZWxcIj5FbWFpbDwvZGl2PlxuICAgICAgPHAgKm5nSWY9XCIhc2hvd0VtYWlsSW5wdXRcIj5cbiAgICAgICAgIFRoZSBlLW1haWwgYWRkcmVzcyBpcyBzZXQgdG8gPGI+e3t1c2VyUHJvZmlsZS5lbWFpbH19PC9iPi5cbiAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIltdXCIgaWQ9XCJ0b2dnbGUtZW1haWxcIiAoY2xpY2spPVwic2V0Q2hhbmdlRW1haWwoKVwiPlNldCBhIGRpZmZlcmVudCBhZGRyZXNzLjwvYT5cbiAgICAgIDwvcD5cblxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgKm5nSWY9XCJzaG93RW1haWxJbnB1dFwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgICAgIDxtYXQtbGFiZWw+T24gd2hhdCBlLW1haWwgYWRkcmVzcyBjYW4geW91IGJlIGNvbnRhY3RlZD88L21hdC1sYWJlbD5cbiAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBpZD1cIm5ld0VtYWlsXCIgZm9ybUNvbnRyb2xOYW1lPVwibmV3RW1haWxcIiB0eXBlPVwiZW1haWxcIj5cbiAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLm5ld0VtYWlsLmVycm9yc1wiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZvcm0uY29udHJvbHMubmV3RW1haWwuZXJyb3JzLmVtYWlsXCI+VGhlIGVtYWlsIGlzIGludmFsaWQuIFBsZWFzZSBzcGVjaWZ5IGVtYWlsIGxpa2Ugam9obiYjNjQ7ZG9lLm5sIG9yIGphbmUuZG9lJiM2NDtzb21lb25lLm5sLjwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZvcm0uY29udHJvbHMubmV3RW1haWwuZXJyb3JzLmFscmVhZHlFeGlzdHNcIj5Bbm90aGVyIHVzZXIgYWxyZWFkeSB1c2VzIHRoaXMgZS1tYWlsIGFkZHJlc3MuIFBsZWFzZSB1c2UgYW5vdGhlciBlbWFpbCBhZGRyZXNzLjwvZGl2PlxuICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwidG9vbGJhclwiPlxuICAgICAgICAgPGlucHV0IGNsYXNzPVwiYnV0dG9uIHN1Ym1pdCBwcmltYXJ5XCIgdHlwZT1cInN1Ym1pdFwiIGlkPVwic3VibWl0XCIgW2Rpc2FibGVkXT1cImxvYWRpbmdcIiBbbmdDbGFzc109XCJ7J2xvYWRpbmcnOiBsb2FkaW5nfVwiIHZhbHVlPVwiU2F2ZVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgIDwvZm9ybT5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZm9ybS1zZWN1cml0eVwiPlxuICAgPGgyPlNlY3VyaXR5PC9oMj5cblxuICAgPGZvcm0gY2xhc3M9XCJmb3JtXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1sYWJlbFwiPkNoYW5nZSBwYXNzd29yZDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJzZW5kUGFzc3dvcmRSZXNldCgpXCIgaWQ9XCJhY2NvdW50LXBhc3N3b3JkcmVzZXRcIiAqbmdJZj1cIiF1c2VyUHJvZmlsZS51c2VzU1NPXCI+U2VuZCBlbWFpbCB0byBjaGFuZ2UgcGFzc3dvcmQ8L2Rpdj5cbiAgICAgIDxwICpuZ0lmPVwidXNlclByb2ZpbGUudXNlc1NTT1wiPllvdSBhcmUgbG9nZ2luZyBpbiB0aHJvdWdoIHNpbmdsZS1zaWduIG9uIChTU08pLiBVc2UgeW91ciBjb21wYW55J3MgaWRlbnRpdHkgcHJvdmlkZXIgdG8gY2hhbmdlIHlvdXIgcGFzc3dvcmQuPC9wPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWxsb3dNZmFcIj5cbiAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QWRkIGFkZGl0aW9uYWwgbG9naW4gZmFjdG9yIChNRkEpPC9kaXY+XG4gICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXVzZXNNZmFcIj5cbiAgICAgICAgICAgIDxwPkFkZCBhIGNvZGUgZnJvbSBHb29nbGUgQXV0aGVudGljYXRvciBvciBzaW1pbGFyIHRvIHlvdXIgYWNjb3VudCB0byBtYWtlIGl0IG1vcmUgc2VjdXJlLjwvcD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwic2VuZE1mYUVucm9sbG1lbnQoKVwiIGlkPVwiYWNjb3VudC1lbnJvbGxtZmFcIj5TZW5kIGVtYWlsIHRvIHNldCB1cCAyRkE8L2Rpdj5cbiAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVzZXNNZmFcIj5cbiAgICAgICAgICAgIDxwPkFuIGFkZGl0aW9uYWwgZmFjdG9yIGlzIDxiPmVuYWJsZWQ8L2I+IGZvciB0aGlzIGFjY291bnQuPC9wPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJyZXNldE1mYUVucm9sbG1lbnQoKVwiIGlkPVwiYWNjb3VudC1yZXNldG1mYVwiPlJlc2V0IDJGQTwvZGl2PlxuICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgIDwvZm9ybT5cbjwvZGl2PlxuIl19
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnByb2ZpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjcnVtdGVhbXN1cnZleS10b29scy9zcmMvbGliL3Jlc3VsdHMvY29tcG9uZW50cy91c2VycHJvZmlsZS91c2VycHJvZmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvcmVzdWx0cy9jb21wb25lbnRzL3VzZXJwcm9maWxlL3VzZXJwcm9maWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUE0RCxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl0RyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFzQixrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFVbkcsTUFBTSxPQUFPLG9CQUFxQixTQUFRLDBCQUF5QztJQWFoRixZQUFrRCxLQUF3QyxFQUFVLFdBQXdCLEVBQVUsa0JBQXNDLEVBQVUsY0FBOEIsRUFBVSxXQUErQixFQUFZLFFBQXFCLEVBQVksS0FBcUI7UUFDNVQsS0FBSyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUR3QixVQUFLLEdBQUwsS0FBSyxDQUFtQztRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUFVLG1CQUFjLEdBQWQsY0FB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QUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTdELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pDLENBQUM7SUFDSixDQUFDO0lBQUEsQ0FBQzsrR0E3SlEsb0JBQW9CLGtCQWFWLGtCQUFrQjttR0FiNUIsb0JBQW9CLDBFQ2xCakMsc3RKQWtGQTs7NEZEaEVhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRyxhQUFhOzswQkFpQlYsTUFBTTsyQkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXZlbnRUeXBlLCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwRGlyZWN0aXZlLCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJ0BhdXRoMC9hdXRoMC1hbmd1bGFyJztcbmltcG9ydCB7IENvbXBvbmVudFdpdGhWaWV3U3RhdGVCYXNlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50V2l0aFZpZXdTdGF0ZUJhc2UnO1xuaW1wb3J0IHsgVXNlclByb2ZpbGVEdG8gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvdXNlckluZm9EdG8nO1xuaW1wb3J0IHsgVmlld01vZGVsU3RhdGVCYXNlLCBWSUVXU1RBVEVfUFJPVklERVIgfSBmcm9tICcuLi8uLi8uLi92aWV3TW9kZWwvdmlld01vZGVsU3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBJUmVzdWx0c1N0YXRlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVzdWx0c1N0YXRlJztcbmltcG9ydCB7IFVzZXJQcm9maWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3VzZXJQcm9maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hY2NvdW50LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgIHNlbGVjdG9yOiAndXNlcnByb2ZpbGUnLFxuICAgdGVtcGxhdGVVcmw6ICcuL3VzZXJwcm9maWxlLmNvbXBvbmVudC5odG1sJyxcbiAgIHN0eWxlVXJsczogWycuL3VzZXJwcm9maWxlLmNvbXBvbmVudC5sZXNzJ11cbn0pXG5leHBvcnQgY2xhc3MgVXNlclByb2ZpbGVDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRXaXRoVmlld1N0YXRlQmFzZTxJUmVzdWx0c1N0YXRlPiB7XG4gICBwdWJsaWMgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgIHB1YmxpYyBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gICBwdWJsaWMgdXNlclByb2ZpbGU6IFVzZXJQcm9maWxlRHRvO1xuICAgcHVibGljIGNoYW5nZUF2YXRhcjogYm9vbGVhbjtcbiAgIHB1YmxpYyBjb2xvcjogc3RyaW5nO1xuICAgcHVibGljIGVtYWlsOiBzdHJpbmc7XG4gICBwdWJsaWMgdXNlc01GQTogYm9vbGVhbjtcbiAgIHB1YmxpYyBhbGxvd01GQTogYm9vbGVhbjtcbiAgIHB1YmxpYyBhbGxvd1Bhc3N3b3JkQ2hhbmdlOiBib29sZWFuO1xuICAgcHVibGljIHNob3dFbWFpbElucHV0OiBib29sZWFuO1xuICAgIGFsbG93QVBJOiBhbnk7XG5cbiAgIGNvbnN0cnVjdG9yKEBJbmplY3QoVklFV1NUQVRFX1BST1ZJREVSKSBwcm90ZWN0ZWQgc3RhdGU6IFZpZXdNb2RlbFN0YXRlQmFzZTxJUmVzdWx0c1N0YXRlPiwgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHByaXZhdGUgdXNlclByb2ZpbGVTZXJ2aWNlOiBVc2VyUHJvZmlsZVNlcnZpY2UsIHByaXZhdGUgYWNjb3VudFNlcnZpY2U6IEFjY291bnRTZXJ2aWNlLCBwcml2YXRlIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsIHByb3RlY3RlZCBzbmFja2JhcjogTWF0U25hY2tCYXIsIHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcbiAgICAgIHN1cGVyKHN0YXRlLCBzbmFja2Jhcik7XG4gICAgICB0aGlzLmNyZWF0ZUZvcm0oKTtcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UudXNlciQuc3Vic2NyaWJlKFxuICAgICAgICAgKHByb2ZpbGUpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlc01GQSA9IHByb2ZpbGUudXNlX21mYTtcbiAgICAgICAgICAgIHRoaXMuZW1haWwgPSBwcm9maWxlLmVtYWlsO1xuICAgICAgICAgfSk7XG4gICB9XG5cbiAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICB9XG5cbiAgIHByaXZhdGUgY3JlYXRlRm9ybSgpOiB2b2lkIHtcbiAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgbmFtZTogW1wiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCldXSxcbiAgICAgICAgIG5ld0VtYWlsOiBbXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdXVxuICAgICAgfSk7XG4gICB9O1xuXG4gICBwdWJsaWMgYXN5bmMgb25TdWJtaXQoZm9ybURpcmVjdGl2ZTogRm9ybUdyb3VwRGlyZWN0aXZlKSB7XG4gICAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkgeyByZXR1cm47IH1cbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG5cbiAgICAgIGF3YWl0IHRoaXMuYXV0aFNlcnZpY2UubG9naW5XaXRoUG9wdXAoeyBhdXRob3JpemF0aW9uUGFyYW1zOiB7IG1heF9hZ2U6IDEgfSB9KS5zdWJzY3JpYmUoc3VjY2VzcyA9PiB7XG4gICAgICAgICB2YXIgdXBkYXRlUmVxdWVzdCA9IG5ldyBVc2VyUHJvZmlsZUR0bygpO1xuICAgICAgICAgdXBkYXRlUmVxdWVzdC5uYW1lID0gdGhpcy5mb3JtLmNvbnRyb2xzLm5hbWUudmFsdWU7XG4gICAgICAgICB1cGRhdGVSZXF1ZXN0LmVtYWlsID0gdGhpcy5mb3JtLmNvbnRyb2xzLm5ld0VtYWlsLnZhbHVlO1xuXG4gICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgdGhpcy51c2VyUHJvZmlsZVNlcnZpY2UudXBkYXRlKHVwZGF0ZVJlcXVlc3QpLnN1YnNjcmliZShzdWNjZXNzID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1N1Y2Nlc3MoXCJZb3VyIHByb2ZpbGUgd2FzIHVwZGF0ZWRcIik7XG4gICAgICAgICAgICAgICB9KTtcbiAgICAgICAgIH1cbiAgICAgICAgIGNhdGNoIChleDogYW55KSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMubmV3RW1haWwuc2V0RXJyb3JzKHsgYWxyZWFkeUV4aXN0czogdHJ1ZSB9KTtcbiAgICAgICAgIH1cbiAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgIH1cblxuICAgcHVibGljIHNldENoYW5nZUVtYWlsKCkge1xuICAgICAgdGhpcy5zaG93RW1haWxJbnB1dCA9IHRydWU7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMubmV3RW1haWwuZW5hYmxlKCk7XG4gICB9XG5cbiAgIHB1YmxpYyB1cGxvYWRBdmF0YXIoJGZpbGVJbnB1dDogYW55KTogdm9pZCB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgY29uc3QgZmlsZSA9ICgkZmlsZUlucHV0LnRhcmdldC5maWxlc1swXSk7XG5cbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xuICAgICAgICAgaWYgKGZpbGUudHlwZSAhPSBcImltYWdlL3BuZ1wiICYmIGZpbGUudHlwZSAhPSBcImltYWdlL2pwZWdcIikge1xuICAgICAgICAgICAgYWxlcnQoXCJUaGUgZmlsZSBtdXN0IGJlIGEgcG5nIG9yIGpwZyBmaWxlLiBZb3UgdXBsb2FkZWQgYSBmaWxlIG9mIHR5cGUgXCIgKyBmaWxlLnR5cGUpO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICB9XG5cbiAgICAgICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgICAgICBpbWFnZS5zcmMgPSBlLnRhcmdldC5yZXN1bHQ7XG4gICAgICAgICBpbWFnZS5vbmxvYWQgPSBycyA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbWdfaGVpZ2h0ID0gcnMuY3VycmVudFRhcmdldFsnaGVpZ2h0J107XG4gICAgICAgICAgICBjb25zdCBpbWdfd2lkdGggPSBycy5jdXJyZW50VGFyZ2V0Wyd3aWR0aCddO1xuXG4gICAgICAgICAgICBpZiAoaW1nX2hlaWdodCA+IDUwMCAmJiBpbWdfd2lkdGggPiA1MDApIHtcbiAgICAgICAgICAgICAgIGFsZXJ0KFwiVGhlIGxvZ28gaXMgdG9vIGxhcmdlLiBQbGVhc2UgbGltaXQgdG8gYSBwaWN0dXJlIG9mIDUwMHg1MDAgcGl4ZWxzLlwiKTtcbiAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgIHRoaXMudXNlclByb2ZpbGVTZXJ2aWNlLnNldEF2YXRhcihmaWxlKVxuICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICB9O1xuICAgICAgfTtcblxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICB9O1xuXG4gICBwdWJsaWMgY2xlYXJBdmF0YXIoKTogdm9pZCB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy51c2VyUHJvZmlsZVNlcnZpY2UuY2xlYXJBdmF0YXIoKVxuICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudXNlclByb2ZpbGUuYXZhdGFyVXJsID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlQXZhdGFyID0gZmFsc2U7XG4gICAgICAgICB9KTtcbiAgIH07ICBcblxuICAgcHVibGljIHNlbmRQYXNzd29yZFJlc2V0KCkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuYWNjb3VudFNlcnZpY2Uuc2VuZFJlc2V0UGFzc3dvcmQodGhpcy5lbWFpbCkuc3Vic2NyaWJlKFxuICAgICAgICAgc3VjY2VzcyA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHN1cGVyLnNob3dTdWNjZXNzKCdXZSBzZW50IGFuIGUtbWFpbCB0byAnICsgdGhpcy5lbWFpbCArICcgdG8gY2hhbmdlIHlvdXIgcGFzc3dvcmQnKTtcbiAgICAgICAgIH0pO1xuICAgfVxuXG4gICBwdWJsaWMgc2VuZE1GQUVucm9sbG1lbnQoKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy51c2VyUHJvZmlsZVNlcnZpY2Uuc2VuZE1GQUVucm9sbG1lbnQoKS5zdWJzY3JpYmUoXG4gICAgICAgICBzdWNjZXNzID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgc3VwZXIuc2hvd1N1Y2Nlc3MoJ1dlIHNlbnQgYW4gZS1tYWlsIHRvICcgKyB0aGlzLmVtYWlsICsgJyB0byBzZXQgdXAgeW91ciBzZWNvbmQgZmFjdG9yICgyRkEpJyk7XG4gICAgICAgICB9KTtcbiAgIH1cblxuICAgcHVibGljIHJlc2V0TUZBRW5yb2xsbWVudCgpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLnVzZXJQcm9maWxlU2VydmljZS5yZXNldE1GQUVucm9sbG1lbnQoKS5zdWJzY3JpYmUoXG4gICAgICAgICBzdWNjZXNzID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgc3VwZXIuc2hvd1N1Y2Nlc3MoJ1lvdXIgc2Vjb25kIGZhY3RvciBpcyBjbGVhcmVkLiBJZiAyRkEgaXMgcmVxdWlyZWQgZm9yIHlvdXIgYWNjb3VudCwgeW91IG5vdyBoYXZlIHRvIHNldCB1cCBhZ2Fpbi4gT3RoZXJ3aXNlIHlvdSBjYW4gbGVhdmUgaXQgZGlzYWJsZWQuJyk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgIH0sIDQwMDApO1xuICAgICAgICAgfSk7XG4gICB9XG5cbiAgIHB1YmxpYyBjcmVhdGVBUElUb2tlbnMoKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy51c2VyUHJvZmlsZVNlcnZpY2UuY3JlYXRlQVBJVG9rZW5zKCkuc3Vic2NyaWJlKFxuICAgICAgICAgc3VjY2VzcyA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHN1cGVyLnNob3dTdWNjZXNzKCdXZSBzZW50IGFuIGUtbWFpbCB0byAnICsgdGhpcy5lbWFpbCArICcgd2l0aCB5b3VyIEFQSSB0b2tlbnMuJyk7XG4gICAgICAgICB9KTtcbiAgIH1cblxuICAgcHJvdGVjdGVkIG9uRGF0YVVwZGF0ZShkYXRhOiBJUmVzdWx0c1N0YXRlKTogdm9pZCB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2hhbmdlQXZhdGFyID0gZmFsc2U7XG4gICAgICB0aGlzLnVzZXJQcm9maWxlID0gZGF0YS51c2VySW5mby5wcm9maWxlO1xuICAgICAgdGhpcy5hbGxvd01GQSA9IGRhdGEudXNlckluZm8uZmVhdHVyZXMuYWxsb3dNRkE7XG4gICAgICB0aGlzLmFsbG93QVBJID0gZGF0YS51c2VySW5mby5mZWF0dXJlcy5hbGxvd0FQSSAmJiBkYXRhLnVzZXJJbmZvLmlzQWRtaW47XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMubmFtZS5zZXRWYWx1ZShkYXRhLnVzZXJJbmZvLnByb2ZpbGUubmFtZSk7XG4gICAgICBcbiAgICAgIGlmIChkYXRhLnVzZXJJbmZvLnByb2ZpbGUuZW1haWwpIHtcbiAgICAgICAgIHRoaXMuc2hvd0VtYWlsSW5wdXQgPSBmYWxzZTtcbiAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5uZXdFbWFpbC5kaXNhYmxlKCk7XG4gICAgICB9XG4gICB9O1xufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tcHJvZmlsZVwiPlxuICAgPGgyPk15IFByb2ZpbGU8L2gyPlxuICAgPGZvcm0gY2xhc3M9XCJmb3JtXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KGZvcm1EaXJlY3RpdmUpXCIgI2Zvcm1EaXJlY3RpdmU9XCJuZ0Zvcm1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QXZhdGFyPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjdXJyZW50dXNlcnByb2ZpbGVhdmF0YXJcIj5cbiAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VycHJvZmlsZWF2YXRhclwiICpuZ0lmPVwidXNlclByb2ZpbGUuYXZhdGFyVXJsXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwibG9hZGluZy1pY29uIHNtYWxsXCI+PC9kaXY+XG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiIWxvYWRpbmdcIiBjbGFzcz1cInJlc3BvbnNpdmVcIiBbc3JjXT1cInVzZXJQcm9maWxlLmF2YXRhclVybFwiIC8+XG4gICAgICAgICA8L2Rpdj5cbiAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXVwbG9hZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJjaGFuZ2VBdmF0YXIgPSB0cnVlXCIgKm5nSWY9XCIhY2hhbmdlQXZhdGFyICYmIHVzZXJQcm9maWxlLmF2YXRhclVybFwiPkNoYW5nZSBhdmF0YXI8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY2hhbmdlQXZhdGFyID0gdHJ1ZVwiICpuZ0lmPVwiIWNoYW5nZUF2YXRhciAmJiAhdXNlclByb2ZpbGUuYXZhdGFyVXJsXCI+U2V0IGF2YXRhcjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJjbGVhckF2YXRhcigpXCIgKm5nSWY9XCJjaGFuZ2VBdmF0YXIgJiYgdXNlclByb2ZpbGUuYXZhdGFyVXJsXCI+PHNwYW4gY2xhc3M9XCJpY29uIHBoLXRyYXNoLWZpbGxcIj48L3NwYW4+Q2xlYXI8L2Rpdj5cbiAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZXVwbG9hZGZvcm1cIiAqbmdJZj1cImNoYW5nZUF2YXRhclwiPlxuICAgICAgICAgPGRpdiAoY2xpY2spPVwiY2hhbmdlQXZhdGFyID0gZmFsc2VcIiBjbGFzcz1cImNhbmNlbCBpY29uIHBoLXgtYm9sZFwiPjwvZGl2PlxuICAgICAgICAgPGlucHV0IGNsYXNzPVwibWF0LWZvcm0tZmllbGRcIiBhY2NlcHQ9XCJpbWFnZS9wbmcsaW1hZ2UvanBlZ1wiIHR5cGU9XCJmaWxlXCIgaWQ9XCJjb2FjaC1hdmF0YXJcIiAoY2hhbmdlKT1cInVwbG9hZEF2YXRhcigkZXZlbnQpXCI+XG4gICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZSBtZXNzYWdlLWluZm9ybWF0aW9uXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gcGgtaW5mby1maWxsXCI+PC9zcGFuPlNlbGVjdCBuZXcgaW1hZ2UgKC5wbmcgb3IgLmpwZykuIFVzZSBhIDE6MSByYXRpbyBmb3IgdGhlIGJlc3QgcmVzdWx0cyAoZS5nLiA1MDB4NTAwKS4gTWF4aW11bSBzaXplIGlzIDUwMHg1MDBweCBhbmQgNTAwa2IuXG4gICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1sYWJlbFwiPk5hbWU8L2Rpdj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgICAgIDxtYXQtbGFiZWw+V2hhdCBpcyB5b3VyIG5hbWU/PC9tYXQtbGFiZWw+XG4gICAgICAgICA8aW5wdXQgbWF4bGVuZ3RoPVwiNTBcIiBtYXRJbnB1dCBpZD1cIm5hbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgdHlwZT1cInRleHRcIj5cbiAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLm5hbWUuZXJyb3JzXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZm9ybS5jb250cm9scy5uYW1lLmVycm9ycy5yZXF1aXJlZFwiPlRoaXMgZmllbGQgaXMgcmVxdWlyZWQ8L2Rpdj5cbiAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tbGFiZWxcIj5FbWFpbDwvZGl2PlxuICAgICAgPHAgKm5nSWY9XCIhc2hvd0VtYWlsSW5wdXRcIj5cbiAgICAgICAgIFRoZSBlLW1haWwgYWRkcmVzcyBpcyBzZXQgdG8gPGI+e3t1c2VyUHJvZmlsZS5lbWFpbH19PC9iPi5cbiAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIltdXCIgaWQ9XCJ0b2dnbGUtZW1haWxcIiAoY2xpY2spPVwic2V0Q2hhbmdlRW1haWwoKVwiPlNldCBhIGRpZmZlcmVudCBhZGRyZXNzLjwvYT5cbiAgICAgIDwvcD5cblxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgKm5nSWY9XCJzaG93RW1haWxJbnB1dFwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgICAgIDxtYXQtbGFiZWw+T24gd2hhdCBlLW1haWwgYWRkcmVzcyBjYW4geW91IGJlIGNvbnRhY3RlZD88L21hdC1sYWJlbD5cbiAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBpZD1cIm5ld0VtYWlsXCIgZm9ybUNvbnRyb2xOYW1lPVwibmV3RW1haWxcIiB0eXBlPVwiZW1haWxcIj5cbiAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLm5ld0VtYWlsLmVycm9yc1wiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZvcm0uY29udHJvbHMubmV3RW1haWwuZXJyb3JzLmVtYWlsXCI+VGhlIGVtYWlsIGlzIGludmFsaWQuIFBsZWFzZSBzcGVjaWZ5IGVtYWlsIGxpa2Ugam9obiYjNjQ7ZG9lLm5sIG9yIGphbmUuZG9lJiM2NDtzb21lb25lLm5sLjwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZvcm0uY29udHJvbHMubmV3RW1haWwuZXJyb3JzLmFscmVhZHlFeGlzdHNcIj5Bbm90aGVyIHVzZXIgYWxyZWFkeSB1c2VzIHRoaXMgZS1tYWlsIGFkZHJlc3MuIFBsZWFzZSB1c2UgYW5vdGhlciBlbWFpbCBhZGRyZXNzLjwvZGl2PlxuICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwidG9vbGJhclwiPlxuICAgICAgICAgPGlucHV0IGNsYXNzPVwiYnV0dG9uIHN1Ym1pdCBwcmltYXJ5XCIgdHlwZT1cInN1Ym1pdFwiIGlkPVwic3VibWl0XCIgW2Rpc2FibGVkXT1cImxvYWRpbmdcIiBbbmdDbGFzc109XCJ7J2xvYWRpbmcnOiBsb2FkaW5nfVwiIHZhbHVlPVwiU2F2ZVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgIDwvZm9ybT5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZm9ybS1zZWN1cml0eVwiPlxuICAgPGgyPlNlY3VyaXR5PC9oMj5cblxuICAgPGZvcm0gY2xhc3M9XCJmb3JtXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1sYWJlbFwiPkNoYW5nZSBwYXNzd29yZDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJzZW5kUGFzc3dvcmRSZXNldCgpXCIgaWQ9XCJhY2NvdW50LXBhc3N3b3JkcmVzZXRcIiAqbmdJZj1cIiF1c2VyUHJvZmlsZS51c2VzU1NPXCI+U2VuZCBlbWFpbCB0byBjaGFuZ2UgcGFzc3dvcmQ8L2Rpdj5cbiAgICAgIDxwICpuZ0lmPVwidXNlclByb2ZpbGUudXNlc1NTT1wiPllvdSBhcmUgbG9nZ2luZyBpbiB0aHJvdWdoIHNpbmdsZS1zaWduIG9uIChTU08pLiBVc2UgeW91ciBjb21wYW55J3MgaWRlbnRpdHkgcHJvdmlkZXIgdG8gY2hhbmdlIHlvdXIgcGFzc3dvcmQuPC9wPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWxsb3dNRkFcIj5cbiAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QWRkIGFkZGl0aW9uYWwgbG9naW4gZmFjdG9yIChNRkEpPC9kaXY+XG4gICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXVzZXNNRkFcIj5cbiAgICAgICAgICAgIDxwPkFkZCBhIGNvZGUgZnJvbSBHb29nbGUgQXV0aGVudGljYXRvciBvciBzaW1pbGFyIHRvIHlvdXIgYWNjb3VudCB0byBtYWtlIGl0IG1vcmUgc2VjdXJlLjwvcD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwic2VuZE1GQUVucm9sbG1lbnQoKVwiIGlkPVwiYWNjb3VudC1lbnJvbGxtZmFcIj5TZW5kIGVtYWlsIHRvIHNldCB1cCAyRkE8L2Rpdj5cbiAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVzZXNNRkFcIj5cbiAgICAgICAgICAgIDxwPkFuIGFkZGl0aW9uYWwgZmFjdG9yIGlzIDxiPmVuYWJsZWQ8L2I+IGZvciB0aGlzIGFjY291bnQuPC9wPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJyZXNldE1GQUVucm9sbG1lbnQoKVwiIGlkPVwiYWNjb3VudC1yZXNldG1mYVwiPlJlc2V0IDJGQTwvZGl2PlxuICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbG93QVBJXCI+XG4gICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1sYWJlbFwiPkFQSSBBY2Nlc3M8L2Rpdj5cbiAgICAgICAgIDxwPkFjY2VzcyBvdXIgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vZ2l0aHViLmNvbS90aGVsaWJlcmF0b3JzL3NjcnVtdGVhbXN1cnZleS5kb2NzL3dpa2kvR2V0dGluZy1TdGFydGVkLXdpdGgtdGhlLUFQSVwiPkFQSTwvYT4gd2l0aCB5b3VyIHBlcnNvbmFsIGFjY291bnQuPC9wPlxuICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJjcmVhdGVBUElUb2tlbnMoKVwiIGlkPVwiYWNjb3VudC1hcGl0b2tlbnNcIj5TZW5kIGVtYWlsIHdpdGggbmV3IEFQSSB0b2tlbnM8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgPC9mb3JtPlxuPC9kaXY+XG4iXX0=
|
|
@@ -20,12 +20,15 @@ export class UserProfileService {
|
|
|
20
20
|
clearAvatar() {
|
|
21
21
|
return this.http.delete(this.baseUrl + 'userprofiles/commands/avatar');
|
|
22
22
|
}
|
|
23
|
-
|
|
23
|
+
sendMFAEnrollment() {
|
|
24
24
|
return this.http.post(this.baseUrl + 'userprofiles/commands/enrollmfa/', {});
|
|
25
25
|
}
|
|
26
|
-
|
|
26
|
+
resetMFAEnrollment() {
|
|
27
27
|
return this.http.post(this.baseUrl + 'userprofiles/commands/resetmfa/', {});
|
|
28
28
|
}
|
|
29
|
+
createAPITokens() {
|
|
30
|
+
return this.http.post(this.baseUrl + 'userprofiles/commands/apitokens/', {});
|
|
31
|
+
}
|
|
29
32
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: UserProfileService, deps: [{ token: i1.HttpClient }, { token: ApiConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
30
33
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: UserProfileService }); }
|
|
31
34
|
}
|
|
@@ -35,4 +38,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
|
35
38
|
type: Inject,
|
|
36
39
|
args: [ApiConfig]
|
|
37
40
|
}] }] });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlclByb2ZpbGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY3J1bXRlYW1zdXJ2ZXktdG9vbHMvc3JjL2xpYi9yZXN1bHRzL3NlcnZpY2VzL3VzZXJQcm9maWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7O0FBSTlDLE1BQU0sT0FBTyxrQkFBa0I7SUFHNUIsWUFBb0IsSUFBZ0IsRUFBNkIsTUFBaUI7UUFBOUQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUE2QixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQy9FLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQTJCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyx1QkFBdUIsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQVU7UUFDakIsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNoQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsOEJBQThCLEVBQUUsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvSCxDQUFDO0lBRUQsV0FBVztRQUNSLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyw4QkFBOEIsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxpQkFBaUI7UUFDZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsa0NBQWtDLEVBQUUsRUFBRyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVELGtCQUFrQjtRQUNmLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxpQ0FBaUMsRUFBRSxFQUFHLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsZUFBZTtRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxrQ0FBa0MsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNoRixDQUFDOytHQS9CUyxrQkFBa0IsNENBR2tCLFNBQVM7bUhBSDdDLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVTs7MEJBSStCLE1BQU07MkJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFwaUNvbmZpZyB9IGZyb20gJy4uLy4uL2FwaVVybFRva2VuJztcbmltcG9ydCB7IFVzZXJQcm9maWxlRHRvIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXJJbmZvRHRvJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFVzZXJQcm9maWxlU2VydmljZSB7XG4gICBwcml2YXRlIGJhc2VVcmw6IHN0cmluZztcblxuICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBASW5qZWN0KEFwaUNvbmZpZykgcHJpdmF0ZSBjb25maWc6IEFwaUNvbmZpZykge1xuICAgICAgdGhpcy5iYXNlVXJsID0gY29uZmlnLmdldCgpLmFwaVVybDtcbiAgIH1cblxuICAgdXBkYXRlKHVzZXJQcm9maWxlOiBVc2VyUHJvZmlsZUR0byk6IE9ic2VydmFibGU8YW55PiB7ICAgICAgXG4gICAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLmJhc2VVcmwgKyAndXNlcnByb2ZpbGVzL2NvbW1hbmRzJywgdXNlclByb2ZpbGUpO1xuICAgfVxuXG4gICBzZXRBdmF0YXIoZmlsZTogRmlsZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZSk7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5iYXNlVXJsICsgJ3VzZXJwcm9maWxlcy9jb21tYW5kcy9hdmF0YXInLCBmb3JtRGF0YSwgeyBvYnNlcnZlOiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M6IHRydWUgfSk7XG4gICB9XG5cbiAgIGNsZWFyQXZhdGFyKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZSh0aGlzLmJhc2VVcmwgKyAndXNlcnByb2ZpbGVzL2NvbW1hbmRzL2F2YXRhcicpO1xuICAgfVxuXG4gICBzZW5kTUZBRW5yb2xsbWVudCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuYmFzZVVybCArICd1c2VycHJvZmlsZXMvY29tbWFuZHMvZW5yb2xsbWZhLycsIHsgfSk7XG4gICB9XG5cbiAgIHJlc2V0TUZBRW5yb2xsbWVudCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuYmFzZVVybCArICd1c2VycHJvZmlsZXMvY29tbWFuZHMvcmVzZXRtZmEvJywgeyB9KTtcbiAgIH1cblxuICAgY3JlYXRlQVBJVG9rZW5zKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5iYXNlVXJsICsgJ3VzZXJwcm9maWxlcy9jb21tYW5kcy9hcGl0b2tlbnMvJywge30pO1xuICAgfVxufVxuIl19
|