@rolatech/angular-account 17.2.5 → 17.2.7
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/components/avatar-update-dialog/avatar-update-dialog.component.mjs +3 -3
- package/esm2022/lib/components/forgot-password/forgot-password.component.mjs +3 -3
- package/esm2022/lib/components/login/login-wechat/login-wechat.component.mjs +4 -8
- package/esm2022/lib/components/logout/logout.component.mjs +3 -3
- package/esm2022/lib/components/passwordreset/passwordreset.component.mjs +3 -3
- package/esm2022/lib/components/topbar-login/topbar-login.component.mjs +7 -6
- package/esm2022/lib/components/user-item/user-item.component.mjs +7 -5
- package/esm2022/lib/pages/accounts/signin/signin.component.mjs +21 -9
- package/esm2022/lib/pages/accounts/signup/signup.component.mjs +5 -5
- package/esm2022/lib/pages/myaccount/email/email.component.mjs +16 -16
- package/esm2022/lib/pages/myaccount/email-verification/email-verification.component.mjs +3 -3
- package/esm2022/lib/pages/myaccount/gender/gender.component.mjs +26 -20
- package/esm2022/lib/pages/myaccount/home/home.component.mjs +45 -10
- package/esm2022/lib/pages/myaccount/personal-info/info.component.mjs +11 -18
- package/esm2022/lib/pages/myaccount/personal-info/profile/profile.component.mjs +22 -16
- package/esm2022/lib/pages/myaccount/personal-info/username/username.component.mjs +14 -16
- package/esm2022/lib/pages/myaccount/phone/phone.component.mjs +19 -24
- package/esm2022/lib/pages/myaccount/security/security-faceid/security-faceid.component.mjs +3 -3
- package/esm2022/lib/pages/myaccount/security/security-index/security-index.component.mjs +6 -6
- package/esm2022/lib/pages/myaccount/security/security-password/security-password.component.mjs +8 -11
- package/esm2022/lib/pages/myaccount/security/security-verification/security-verification.component.mjs +6 -6
- package/esm2022/lib/services/wechat-login.service.mjs +9 -6
- package/fesm2022/{rolatech-angular-account-email-verification.component-D9e--XMc.mjs → rolatech-angular-account-email-verification.component-BMf1IfbK.mjs} +4 -4
- package/fesm2022/{rolatech-angular-account-email-verification.component-D9e--XMc.mjs.map → rolatech-angular-account-email-verification.component-BMf1IfbK.mjs.map} +1 -1
- package/fesm2022/rolatech-angular-account-email.component-BQaELPci.mjs +44 -0
- package/fesm2022/rolatech-angular-account-email.component-BQaELPci.mjs.map +1 -0
- package/fesm2022/rolatech-angular-account-gender.component-9GJeEE9U.mjs +55 -0
- package/fesm2022/rolatech-angular-account-gender.component-9GJeEE9U.mjs.map +1 -0
- package/fesm2022/rolatech-angular-account-home.component-BVB5vvE5.mjs +77 -0
- package/fesm2022/rolatech-angular-account-home.component-BVB5vvE5.mjs.map +1 -0
- package/fesm2022/rolatech-angular-account-info.component-CYY20QY4.mjs +98 -0
- package/fesm2022/rolatech-angular-account-info.component-CYY20QY4.mjs.map +1 -0
- package/fesm2022/{rolatech-angular-account-login.routes-DWwDcOM9.mjs → rolatech-angular-account-login.routes-XD8QIaL9.mjs} +6 -10
- package/fesm2022/rolatech-angular-account-login.routes-XD8QIaL9.mjs.map +1 -0
- package/fesm2022/rolatech-angular-account-phone.component-D2v9enci.mjs +68 -0
- package/fesm2022/rolatech-angular-account-phone.component-D2v9enci.mjs.map +1 -0
- package/fesm2022/rolatech-angular-account-profile.component-WwV7Jpjy.mjs +50 -0
- package/fesm2022/rolatech-angular-account-profile.component-WwV7Jpjy.mjs.map +1 -0
- package/fesm2022/rolatech-angular-account-rolatech-angular-account-C4Q8Ay9E.mjs +444 -0
- package/fesm2022/rolatech-angular-account-rolatech-angular-account-C4Q8Ay9E.mjs.map +1 -0
- package/fesm2022/rolatech-angular-account-security.routes-DiAm22Qh.mjs +203 -0
- package/fesm2022/rolatech-angular-account-security.routes-DiAm22Qh.mjs.map +1 -0
- package/fesm2022/rolatech-angular-account-username.component-D8DPlm9P.mjs +42 -0
- package/fesm2022/rolatech-angular-account-username.component-D8DPlm9P.mjs.map +1 -0
- package/fesm2022/rolatech-angular-account.mjs +2 -2
- package/lib/pages/myaccount/email/email.component.d.ts +5 -4
- package/lib/pages/myaccount/gender/gender.component.d.ts +4 -1
- package/lib/pages/myaccount/home/home.component.d.ts +8 -4
- package/lib/pages/myaccount/personal-info/info.component.d.ts +2 -4
- package/lib/pages/myaccount/personal-info/profile/profile.component.d.ts +2 -2
- package/lib/pages/myaccount/personal-info/username/username.component.d.ts +2 -2
- package/lib/pages/myaccount/phone/phone.component.d.ts +2 -2
- package/lib/pages/myaccount/security/security-verification/security-verification.component.d.ts +1 -1
- package/lib/services/wechat-login.service.d.ts +3 -1
- package/package.json +5 -5
- package/themes/_default.scss +1 -1
- package/fesm2022/rolatech-angular-account-email.component-DC8qYVOJ.mjs +0 -44
- package/fesm2022/rolatech-angular-account-email.component-DC8qYVOJ.mjs.map +0 -1
- package/fesm2022/rolatech-angular-account-gender.component-DWdWJiQW.mjs +0 -49
- package/fesm2022/rolatech-angular-account-gender.component-DWdWJiQW.mjs.map +0 -1
- package/fesm2022/rolatech-angular-account-home.component-DOQ-USiX.mjs +0 -41
- package/fesm2022/rolatech-angular-account-home.component-DOQ-USiX.mjs.map +0 -1
- package/fesm2022/rolatech-angular-account-info.component-DNi4eTxV.mjs +0 -105
- package/fesm2022/rolatech-angular-account-info.component-DNi4eTxV.mjs.map +0 -1
- package/fesm2022/rolatech-angular-account-login.routes-DWwDcOM9.mjs.map +0 -1
- package/fesm2022/rolatech-angular-account-phone.component-r9dWPfEL.mjs +0 -73
- package/fesm2022/rolatech-angular-account-phone.component-r9dWPfEL.mjs.map +0 -1
- package/fesm2022/rolatech-angular-account-profile.component-CJfmQ3Ba.mjs +0 -44
- package/fesm2022/rolatech-angular-account-profile.component-CJfmQ3Ba.mjs.map +0 -1
- package/fesm2022/rolatech-angular-account-rolatech-angular-account-CMkF3BmF.mjs +0 -429
- package/fesm2022/rolatech-angular-account-rolatech-angular-account-CMkF3BmF.mjs.map +0 -1
- package/fesm2022/rolatech-angular-account-security.routes-Dag8RZ38.mjs +0 -204
- package/fesm2022/rolatech-angular-account-security.routes-Dag8RZ38.mjs.map +0 -1
- package/fesm2022/rolatech-angular-account-username.component-BL2F5fnx.mjs +0 -44
- package/fesm2022/rolatech-angular-account-username.component-BL2F5fnx.mjs.map +0 -1
|
@@ -50,10 +50,10 @@ export class AvatarUpdateDialogComponent {
|
|
|
50
50
|
};
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
54
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
53
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AvatarUpdateDialogComponent, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
54
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: AvatarUpdateDialogComponent, isStandalone: true, selector: "rolatech-account-avatar-update-dialog", outputs: { save: "save" }, ngImport: i0, template: "<div class=\"flex flex-col p-3 max-w-[500px] mx-auto\">\n <div class=\"text-xl font-bold p-3\">\u4FEE\u6539\u5934\u50CF</div>\n <!-- <div class=\"w-[256px] h-[256px] mx-auto flex justify-center items-center\">\n <img [src]=\"avatar\" />\n </div> -->\n <div class=\"px-3 py-8\">\n <div\n class=\"bg-orange-600 w-[256px] h-[256px] rounded-full cursor-pointer hover:outline-gray-200 outline outline-transparent outline-4\"\n >\n @if (avatar) {\n <div class=\"w-[256px] h-[256px]\">\n <img [src]=\"avatar\" class=\"w-[256px] h-[256px] rounded-full object-cover\" />\n </div>\n }\n </div>\n </div>\n\n <!-- <div class=\"p-3 flex justify-end items-center gap-3\">\n <button mat-button (click)=\"cancel()\">\u53D6\u6D88</button>\n <button mat-flat-button color=\"primary\" (click)=\"onSave()\">\u4FDD\u5B58</button>\n </div> -->\n <div class=\"py-3\">\n <input style=\"display: none\" type=\"file\" accept=\"image/*\" (change)=\"onUpload($event)\" #fileInput />\n <button mat-flat-button (click)=\"fileInput.click()\">\n <mat-icon>edit</mat-icon>\n <span>\u66F4\u6362\u5934\u50CF</span>\n </button>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
55
55
|
}
|
|
56
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AvatarUpdateDialogComponent, decorators: [{
|
|
57
57
|
type: Component,
|
|
58
58
|
args: [{ selector: 'rolatech-account-avatar-update-dialog', standalone: true, imports: [CommonModule, MatButtonModule, MatIconModule], template: "<div class=\"flex flex-col p-3 max-w-[500px] mx-auto\">\n <div class=\"text-xl font-bold p-3\">\u4FEE\u6539\u5934\u50CF</div>\n <!-- <div class=\"w-[256px] h-[256px] mx-auto flex justify-center items-center\">\n <img [src]=\"avatar\" />\n </div> -->\n <div class=\"px-3 py-8\">\n <div\n class=\"bg-orange-600 w-[256px] h-[256px] rounded-full cursor-pointer hover:outline-gray-200 outline outline-transparent outline-4\"\n >\n @if (avatar) {\n <div class=\"w-[256px] h-[256px]\">\n <img [src]=\"avatar\" class=\"w-[256px] h-[256px] rounded-full object-cover\" />\n </div>\n }\n </div>\n </div>\n\n <!-- <div class=\"p-3 flex justify-end items-center gap-3\">\n <button mat-button (click)=\"cancel()\">\u53D6\u6D88</button>\n <button mat-flat-button color=\"primary\" (click)=\"onSave()\">\u4FDD\u5B58</button>\n </div> -->\n <div class=\"py-3\">\n <input style=\"display: none\" type=\"file\" accept=\"image/*\" (change)=\"onUpload($event)\" #fileInput />\n <button mat-flat-button (click)=\"fileInput.click()\">\n <mat-icon>edit</mat-icon>\n <span>\u66F4\u6362\u5934\u50CF</span>\n </button>\n </div>\n</div>\n" }]
|
|
59
59
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
@@ -3,10 +3,10 @@ import * as i0 from "@angular/core";
|
|
|
3
3
|
export class ForgotPasswordComponent {
|
|
4
4
|
constructor() { }
|
|
5
5
|
ngOnInit() { }
|
|
6
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
7
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
6
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ForgotPasswordComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: ForgotPasswordComponent, isStandalone: true, selector: "rolatech-account-forgot-password", ngImport: i0, template: "<p>forgot-password works!</p>\n", styles: [""] }); }
|
|
8
8
|
}
|
|
9
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
9
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ForgotPasswordComponent, decorators: [{
|
|
10
10
|
type: Component,
|
|
11
11
|
args: [{ selector: 'rolatech-account-forgot-password', standalone: true, template: "<p>forgot-password works!</p>\n" }]
|
|
12
12
|
}], ctorParameters: () => [] });
|
|
@@ -20,23 +20,19 @@ export class LoginWechatComponent extends BaseComponent {
|
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
22
|
wechatLogin(code, state) {
|
|
23
|
-
window.parent.postMessage({ code: 23 }, this.environment.accountsUrl);
|
|
24
23
|
this.authService.wechatLogin(code, state).subscribe({
|
|
25
24
|
next: (res) => {
|
|
26
25
|
if (res.name) {
|
|
27
26
|
window.parent.postMessage({ code: 200 }, this.environment.accountsUrl);
|
|
28
27
|
}
|
|
29
|
-
// if (isPlatformBrowser(this.platformId) && res.code === 200) {
|
|
30
|
-
// window.parent.postMessage({ code: res.code }, this.environment.myaccountUrl);
|
|
31
|
-
// }
|
|
32
28
|
},
|
|
33
29
|
});
|
|
34
30
|
}
|
|
35
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
36
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
31
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: LoginWechatComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
32
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: LoginWechatComponent, isStandalone: true, selector: "rolatech-account-login-wechat", usesInheritance: true, ngImport: i0, template: "<div>loading...</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }] }); }
|
|
37
33
|
}
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: LoginWechatComponent, decorators: [{
|
|
39
35
|
type: Component,
|
|
40
36
|
args: [{ standalone: true, imports: [AngularCommonModule, AngularComponentsModule], selector: 'rolatech-account-login-wechat', template: "<div>loading...</div>\n" }]
|
|
41
37
|
}] });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4td2VjaGF0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy9sb2dpbi9sb2dpbi13ZWNoYXQvbG9naW4td2VjaGF0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy9sb2dpbi9sb2dpbi13ZWNoYXQvbG9naW4td2VjaGF0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQVUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7QUFTNUUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGFBQWE7SUFQdkQ7O1FBUUUsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxzQkFBaUIsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztLQWtCaEQ7SUFoQkMsUUFBUTtRQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQztZQUMvQixJQUFJLEVBQUUsQ0FBQyxNQUFXLEVBQUUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5QyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELFdBQVcsQ0FBQyxJQUFZLEVBQUUsS0FBYTtRQUNyQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ2xELElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNaLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNiLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3pFLENBQUM7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FyQlUsb0JBQW9CO2tHQUFwQixvQkFBb0IsZ0hDZGpDLHlCQUNBLHlERFFZLG1CQUFtQiw4QkFBRSx1QkFBdUI7OzJGQUszQyxvQkFBb0I7a0JBUGhDLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsbUJBQW1CLEVBQUUsdUJBQXVCLENBQUMsWUFDN0MsK0JBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFBMQVRGT1JNX0lELCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItYXV0aCc7XG5pbXBvcnQgeyBBUFBfQ09ORklHLCBBbmd1bGFyQ29tbW9uTW9kdWxlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcbmltcG9ydCB7IEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlLCBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tcG9uZW50cyc7XG5pbXBvcnQgeyBXZUNoYXRMb2dpblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy93ZWNoYXQtbG9naW4uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQW5ndWxhckNvbW1vbk1vZHVsZSwgQW5ndWxhckNvbXBvbmVudHNNb2R1bGVdLFxuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLWFjY291bnQtbG9naW4td2VjaGF0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvZ2luLXdlY2hhdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xvZ2luLXdlY2hhdC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBMb2dpbldlY2hhdENvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIGVudmlyb25tZW50ID0gaW5qZWN0KEFQUF9DT05GSUcpO1xuICBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcbiAgd2VjaHRMb2dpblNlcnZpY2UgPSBpbmplY3QoV2VDaGF0TG9naW5TZXJ2aWNlKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocGFyYW1zOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy53ZWNoYXRMb2dpbihwYXJhbXMuY29kZSwgcGFyYW1zLnN0YXRlKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgd2VjaGF0TG9naW4oY29kZTogc3RyaW5nLCBzdGF0ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5hdXRoU2VydmljZS53ZWNoYXRMb2dpbihjb2RlLCBzdGF0ZSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgaWYgKHJlcy5uYW1lKSB7XG4gICAgICAgICAgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZSh7IGNvZGU6IDIwMCB9LCB0aGlzLmVudmlyb25tZW50LmFjY291bnRzVXJsKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdj5sb2FkaW5nLi4uPC9kaXY+XG4iXX0=
|
|
@@ -36,10 +36,10 @@ export class LogoutComponent {
|
|
|
36
36
|
},
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
40
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
39
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: LogoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
40
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: LogoutComponent, isStandalone: true, selector: "rolatech-account-logout", ngImport: i0, template: "<p>Please waiting...</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }] }); }
|
|
41
41
|
}
|
|
42
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: LogoutComponent, decorators: [{
|
|
43
43
|
type: Component,
|
|
44
44
|
args: [{ standalone: true, imports: [AngularCommonModule, AngularComponentsModule], selector: 'rolatech-account-logout', template: "<p>Please waiting...</p>\n" }]
|
|
45
45
|
}] });
|
|
@@ -3,10 +3,10 @@ import * as i0 from "@angular/core";
|
|
|
3
3
|
export class PasswordresetComponent {
|
|
4
4
|
constructor() { }
|
|
5
5
|
ngOnInit() { }
|
|
6
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
7
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
6
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: PasswordresetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: PasswordresetComponent, isStandalone: true, selector: "rolatech-account-passwordreset", ngImport: i0, template: "<p>passwordreset works!</p>\n", styles: [""] }); }
|
|
8
8
|
}
|
|
9
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
9
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: PasswordresetComponent, decorators: [{
|
|
10
10
|
type: Component,
|
|
11
11
|
args: [{ selector: 'rolatech-account-passwordreset', standalone: true, template: "<p>passwordreset works!</p>\n" }]
|
|
12
12
|
}], ctorParameters: () => [] });
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Component, PLATFORM_ID, inject, input } from '@angular/core';
|
|
1
|
+
import { Component, PLATFORM_ID, ViewEncapsulation, inject, input } from '@angular/core';
|
|
2
2
|
import { CommonModule, isPlatformBrowser } from '@angular/common';
|
|
3
3
|
import { APP_CONFIG } from '@rolatech/angular-common';
|
|
4
|
+
import { MatButton } from '@angular/material/button';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export class TopbarLoginComponent {
|
|
6
7
|
constructor() {
|
|
@@ -17,11 +18,11 @@ export class TopbarLoginComponent {
|
|
|
17
18
|
this.logoutUrl = this.environment.accountsUrl + `/logout?service=${this.service()}&continue=` + window.location.origin;
|
|
18
19
|
}
|
|
19
20
|
}
|
|
20
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
21
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "
|
|
21
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: TopbarLoginComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
22
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.1", type: TopbarLoginComponent, isStandalone: true, selector: "rolatech-account-topbar-login", inputs: { service: { classPropertyName: "service", publicName: "service", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"flex items-center\">\n <a mat-stroked-button class=\"mr-2 max-h-9 md:max-h-10\" [href]=\"signinUrl\"><span>\u767B\u5F55</span></a>\n <a mat-flat-button class=\"max-h-9 md:max-h-10\" [href]=\"signupUrl\"><span>\u6CE8\u518C</span></a>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
22
23
|
}
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: TopbarLoginComponent, decorators: [{
|
|
24
25
|
type: Component,
|
|
25
|
-
args: [{ selector: 'rolatech-account-topbar-login', standalone: true, imports: [CommonModule], template: "<div class=\"flex\">\n <a class=\"
|
|
26
|
+
args: [{ selector: 'rolatech-account-topbar-login', standalone: true, imports: [CommonModule, MatButton], encapsulation: ViewEncapsulation.None, template: "<div class=\"flex items-center\">\n <a mat-stroked-button class=\"mr-2 max-h-9 md:max-h-10\" [href]=\"signinUrl\"><span>\u767B\u5F55</span></a>\n <a mat-flat-button class=\"max-h-9 md:max-h-10\" [href]=\"signupUrl\"><span>\u6CE8\u518C</span></a>\n</div>\n" }]
|
|
26
27
|
}] });
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wYmFyLWxvZ2luLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy90b3BiYXItbG9naW4vdG9wYmFyLWxvZ2luLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy90b3BiYXItbG9naW4vdG9wYmFyLWxvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBVXJELE1BQU0sT0FBTyxvQkFBb0I7SUFSakM7UUFTRSxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pDLFlBQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLGNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7UUFDckQsY0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxHQUFHLG1CQUFtQixJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztLQU9oRjtJQU5DLFFBQVE7UUFDTixJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDM0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsR0FBRyxtQkFBbUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDekgsQ0FBQztJQUNILENBQUM7OEdBWlUsb0JBQW9CO2tHQUFwQixvQkFBb0IsbU9DYmpDLG1RQUlBLHlERElZLFlBQVk7OzJGQUtYLG9CQUFvQjtrQkFSaEMsU0FBUzsrQkFDRSwrQkFBK0IsY0FDN0IsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxpQkFHbkIsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBQTEFURk9STV9JRCwgVmlld0VuY2Fwc3VsYXRpb24sIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQVBQX0NPTkZJRyB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbW1vbic7XG5pbXBvcnQgeyBNYXRCdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1hY2NvdW50LXRvcGJhci1sb2dpbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEJ1dHRvbl0sXG4gIHRlbXBsYXRlVXJsOiAnLi90b3BiYXItbG9naW4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vdG9wYmFyLWxvZ2luLmNvbXBvbmVudC5zY3NzJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgVG9wYmFyTG9naW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBlbnZpcm9ubWVudCA9IGluamVjdChBUFBfQ09ORklHKTtcbiAgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIHNlcnZpY2UgPSBpbnB1dCgnd3d3Jyk7XG4gIHNpZ25pblVybCA9ICcnO1xuICBzaWdudXBVcmwgPSB0aGlzLmVudmlyb25tZW50LmFjY291bnRzVXJsICsgJy9zaWdudXAnO1xuICBsb2dvdXRVcmwgPSB0aGlzLmVudmlyb25tZW50LmFjY291bnRzVXJsICsgYC9sb2dvdXQ/c2VydmljZT0ke3RoaXMuc2VydmljZSgpfWA7XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICB0aGlzLnNpZ25pblVybCA9IGAke3RoaXMuZW52aXJvbm1lbnQuYWNjb3VudHNVcmx9L3NpZ25pbj9jb250aW51ZT1gICsgd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICB0aGlzLmxvZ291dFVybCA9IHRoaXMuZW52aXJvbm1lbnQuYWNjb3VudHNVcmwgKyBgL2xvZ291dD9zZXJ2aWNlPSR7dGhpcy5zZXJ2aWNlKCl9JmNvbnRpbnVlPWAgKyB3aW5kb3cubG9jYXRpb24ub3JpZ2luO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gIDxhIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cIm1yLTIgbWF4LWgtOSBtZDptYXgtaC0xMFwiIFtocmVmXT1cInNpZ25pblVybFwiPjxzcGFuPueZu+W9lTwvc3Bhbj48L2E+XG4gIDxhIG1hdC1mbGF0LWJ1dHRvbiBjbGFzcz1cIm1heC1oLTkgbWQ6bWF4LWgtMTBcIiBbaHJlZl09XCJzaWdudXBVcmxcIj48c3Bhbj7ms6jlhow8L3NwYW4+PC9hPlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Component, HostBinding, ViewEncapsulation, input, output } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/material/button";
|
|
4
6
|
export class UserItemComponent {
|
|
5
7
|
constructor() {
|
|
6
8
|
this.hasClass = true;
|
|
@@ -16,14 +18,14 @@ export class UserItemComponent {
|
|
|
16
18
|
onUnFollow() {
|
|
17
19
|
this.unfollow.emit(this.user().username);
|
|
18
20
|
}
|
|
19
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
20
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
21
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: UserItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
22
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: UserItemComponent, isStandalone: true, selector: "rolatech-account-user-item", inputs: { user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null }, isFollowing: { classPropertyName: "isFollowing", publicName: "isFollowing", isSignal: true, isRequired: false, transformFunction: null }, own: { classPropertyName: "own", publicName: "own", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { follow: "follow", unfollow: "unfollow" }, host: { properties: { "class.rolatech-account-user-item": "this.hasClass" } }, ngImport: i0, template: "<div class=\"flex w-full justify-between items-center p-2 hover:bg-gray-100 cursor-pointer\">\n <div class=\"flex items-center\">\n <div class=\"bg-orange-600 w-12 h-12 rounded-full\">\n @if (user().avatar) {\n <img class=\"w-12 h-12 object-cover rounded-full\" [src]=\"user().avatar\" />\n }\n </div>\n <div class=\"flex flex-col ml-3\">\n <a class=\"text-lg font-bold\">\n <span>{{ user().name }}</span>\n </a>\n <a class=\"text-md\">\n <span>{{ user().username }}</span>\n </a>\n </div>\n </div>\n @if (!own()) {\n @if (isFollowing()) {\n <button mat-flat-button class=\"w-28 max-h-8\" (click)=\"onUnFollow()\">\u53D6\u6D88\u5173\u6CE8</button>\n } @else {\n <button mat-flat-button class=\"w-28 max-h-8\" (click)=\"onFollow()\">\u5173\u6CE8</button>\n }\n }\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
21
23
|
}
|
|
22
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: UserItemComponent, decorators: [{
|
|
23
25
|
type: Component,
|
|
24
|
-
args: [{ selector: 'rolatech-account-user-item', standalone: true, imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"flex w-full justify-between items-center p-2 hover:bg-gray-100 cursor-pointer\">\n <div class=\"flex items-center\">\n <div class=\"bg-orange-600 w-12 h-12 rounded-full\">\n @if (user().avatar) {\n <img class=\"w-12 h-12 object-cover rounded-full\" [src]=\"user().avatar\" />\n }\n </div>\n <div class=\"flex flex-col ml-3\">\n <a class=\"text-lg font-bold\">\n <span>{{ user().name }}</span>\n </a>\n <a class=\"text-md\">\n <span>{{ user().username }}</span>\n </a>\n </div>\n </div>\n @if (!own()) {\n @if (isFollowing()) {\n <
|
|
26
|
+
args: [{ selector: 'rolatech-account-user-item', standalone: true, imports: [CommonModule, MatButtonModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"flex w-full justify-between items-center p-2 hover:bg-gray-100 cursor-pointer\">\n <div class=\"flex items-center\">\n <div class=\"bg-orange-600 w-12 h-12 rounded-full\">\n @if (user().avatar) {\n <img class=\"w-12 h-12 object-cover rounded-full\" [src]=\"user().avatar\" />\n }\n </div>\n <div class=\"flex flex-col ml-3\">\n <a class=\"text-lg font-bold\">\n <span>{{ user().name }}</span>\n </a>\n <a class=\"text-md\">\n <span>{{ user().username }}</span>\n </a>\n </div>\n </div>\n @if (!own()) {\n @if (isFollowing()) {\n <button mat-flat-button class=\"w-28 max-h-8\" (click)=\"onUnFollow()\">\u53D6\u6D88\u5173\u6CE8</button>\n } @else {\n <button mat-flat-button class=\"w-28 max-h-8\" (click)=\"onFollow()\">\u5173\u6CE8</button>\n }\n }\n</div>\n" }]
|
|
25
27
|
}], propDecorators: { hasClass: [{
|
|
26
28
|
type: HostBinding,
|
|
27
29
|
args: ['class.rolatech-account-user-item']
|
|
28
30
|
}] } });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy91c2VyLWl0ZW0vdXNlci1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy91c2VyLWl0ZW0vdXNlci1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBVTNELE1BQU0sT0FBTyxpQkFBaUI7SUFSOUI7UUFTbUQsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNqRSxTQUFJLEdBQUcsS0FBSyxFQUFPLENBQUM7UUFDcEIsZ0JBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsV0FBTSxHQUFHLE1BQU0sRUFBVSxDQUFDO1FBQzFCLGFBQVEsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUNwQixRQUFHLEdBQUcsS0FBSyxFQUFFLENBQUM7S0FPZjtJQU5DLFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUNELFVBQVU7UUFDUixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0MsQ0FBQzs4R0FaVSxpQkFBaUI7a0dBQWpCLGlCQUFpQix1bEJDWjlCLDIxQkF3QkEseUREakJZLFlBQVksOEJBQUUsZUFBZTs7MkZBSzVCLGlCQUFpQjtrQkFSN0IsU0FBUzsrQkFDRSw0QkFBNEIsY0FDMUIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQyxpQkFHekIsaUJBQWlCLENBQUMsSUFBSTs4QkFHWSxRQUFRO3NCQUF4RCxXQUFXO3VCQUFDLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIFZpZXdFbmNhcHN1bGF0aW9uLCBpbnB1dCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncm9sYXRlY2gtYWNjb3VudC11c2VyLWl0ZW0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vdXNlci1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3VzZXItaXRlbS5jb21wb25lbnQuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJJdGVtQ29tcG9uZW50IHtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5yb2xhdGVjaC1hY2NvdW50LXVzZXItaXRlbScpIGhhc0NsYXNzID0gdHJ1ZTtcbiAgdXNlciA9IGlucHV0PGFueT4oKTtcbiAgaXNGb2xsb3dpbmcgPSBpbnB1dCh0cnVlKTtcbiAgZm9sbG93ID0gb3V0cHV0PHN0cmluZz4oKTtcbiAgdW5mb2xsb3cgPSBvdXRwdXQoKTtcbiAgb3duID0gaW5wdXQoKTtcbiAgb25Gb2xsb3coKSB7XG4gICAgdGhpcy5mb2xsb3cuZW1pdCh0aGlzLnVzZXIoKS51c2VybmFtZSk7XG4gIH1cbiAgb25VbkZvbGxvdygpIHtcbiAgICB0aGlzLnVuZm9sbG93LmVtaXQodGhpcy51c2VyKCkudXNlcm5hbWUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCB3LWZ1bGwganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBwLTIgaG92ZXI6YmctZ3JheS0xMDAgY3Vyc29yLXBvaW50ZXJcIj5cbiAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImJnLW9yYW5nZS02MDAgdy0xMiBoLTEyIHJvdW5kZWQtZnVsbFwiPlxuICAgICAgQGlmICh1c2VyKCkuYXZhdGFyKSB7XG4gICAgICAgIDxpbWcgY2xhc3M9XCJ3LTEyIGgtMTIgb2JqZWN0LWNvdmVyIHJvdW5kZWQtZnVsbFwiIFtzcmNdPVwidXNlcigpLmF2YXRhclwiIC8+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgbWwtM1wiPlxuICAgICAgPGEgY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtYm9sZFwiPlxuICAgICAgICA8c3Bhbj57eyB1c2VyKCkubmFtZSB9fTwvc3Bhbj5cbiAgICAgIDwvYT5cbiAgICAgIDxhIGNsYXNzPVwidGV4dC1tZFwiPlxuICAgICAgICA8c3Bhbj57eyB1c2VyKCkudXNlcm5hbWUgfX08L3NwYW4+XG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICBAaWYgKCFvd24oKSkge1xuICAgIEBpZiAoaXNGb2xsb3dpbmcoKSkge1xuICAgICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gY2xhc3M9XCJ3LTI4IG1heC1oLThcIiAoY2xpY2spPVwib25VbkZvbGxvdygpXCI+5Y+W5raI5YWz5rOoPC9idXR0b24+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiBjbGFzcz1cInctMjggbWF4LWgtOFwiIChjbGljayk9XCJvbkZvbGxvdygpXCI+5YWz5rOoPC9idXR0b24+XG4gICAgfVxuICB9XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,19 +1,23 @@
|
|
|
1
1
|
import { isPlatformBrowser } from '@angular/common';
|
|
2
2
|
import { Component, effect, HostListener, inject, PLATFORM_ID, signal } from '@angular/core';
|
|
3
|
-
import { FormBuilder, Validators } from '@angular/forms';
|
|
3
|
+
import { FormBuilder, FormsModule, Validators } from '@angular/forms';
|
|
4
4
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
5
5
|
import { AngularCommonModule, APP_CONFIG } from '@rolatech/angular-common';
|
|
6
6
|
import { AngularComponentsModule, BaseComponent, TabComponent, TabsComponent } from '@rolatech/angular-components';
|
|
7
7
|
import { AuthService, AuthUserService } from '@rolatech/angular-auth';
|
|
8
8
|
import { WeChatLoginService } from '../../../services/wechat-login.service';
|
|
9
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
10
|
+
import { MatInputModule } from '@angular/material/input';
|
|
9
11
|
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@angular/
|
|
11
|
-
import * as i2 from "@angular/
|
|
12
|
+
import * as i1 from "@angular/forms";
|
|
13
|
+
import * as i2 from "@angular/material/button";
|
|
12
14
|
import * as i3 from "@angular/material/form-field";
|
|
13
15
|
import * as i4 from "@angular/material/input";
|
|
14
16
|
export class SigninComponent extends BaseComponent {
|
|
15
17
|
onLogin(event) {
|
|
16
|
-
if (event.origin !== window.location.origin ||
|
|
18
|
+
if (event.origin !== window.location.origin ||
|
|
19
|
+
/react-devtools/gi.test(event.data.source) ||
|
|
20
|
+
/angular-devtools/gi.test(event.data.source)) {
|
|
17
21
|
return;
|
|
18
22
|
}
|
|
19
23
|
if (event.origin === this.environment.accountsUrl && event.data.code === 200) {
|
|
@@ -134,14 +138,22 @@ export class SigninComponent extends BaseComponent {
|
|
|
134
138
|
const src = `${this.baseUrl}?appid=${this.appid}&response_type=code&self_redirect=true&scope=snsapi_login&href=${href}&redirect_uri=${encodedURI}&state=${this.state}#wechat_redirect`;
|
|
135
139
|
this.urlSafe = this.sanitizer.bypassSecurityTrustResourceUrl(src);
|
|
136
140
|
}
|
|
137
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
138
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
141
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: SigninComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
142
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: SigninComponent, isStandalone: true, selector: "rolatech-account-auth-signin", host: { listeners: { "window:message": "onLogin($event)" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"h-full flex flex-col items-center sm:justify-center sm:bg-gray-100\">\n <div\n class=\"w-full p-6 lg:p-11 rounded-xl bg-white flex flex-col lg:flex-row justify-between xl:w-[800px] lg:w-[600px] sm:w-[600px]\"\n >\n <!-- header -->\n <div class=\"flex flex-col py-6\">\n <div class=\"text-3xl font-medium mb-3 ml-2\">\u767B\u5F55</div>\n <div class=\"text-md ml-2\">\u4F7F\u7528\u62FC\u5C0F\u8BFE\u8D26\u53F7\u767B\u5F55</div>\n </div>\n <div>\n <rolatech-tabs [(select)]=\"tabIndex\">\n <rolatech-tab label=\"\u8D26\u53F7\u5BC6\u7801\"></rolatech-tab>\n <rolatech-tab label=\"\u77ED\u4FE1\u9A8C\u8BC1\u7801\"></rolatech-tab>\n <rolatech-tab label=\"\u5FAE\u4FE1\u626B\u7801\"></rolatech-tab>\n </rolatech-tabs>\n <!-- content -->\n <div class=\"pt-6 min-w-[320px] min-h-[214px]\">\n @if (tabIndex() === 0) {\n <form [formGroup]=\"passrodForm\" class=\"flex flex-col\">\n <mat-form-field>\n <mat-label> \u7528\u6237\u540D/\u624B\u673A\u53F7 </mat-label>\n <input matInput formControlName=\"account\" required />\n @if (passrodForm.controls['account'].touched && passrodForm.controls['account'].invalid) {\n <mat-error>\n @if (passrodForm.controls['account'].errors?.['required']) {\n <span>\u7528\u6237\u540D\u5FC5\u586B</span>\n }\n </mat-error>\n }\n </mat-form-field>\n <mat-form-field>\n <mat-label> \u5BC6\u7801 </mat-label>\n <input autocomplete matInput formControlName=\"password\" type=\"password\" />\n @if (passrodForm.controls['password'].touched && passrodForm.controls['password'].invalid) {\n <mat-error>\n @if (passrodForm.controls['password'].errors?.['required']) {\n <span>\u8BF7\u8F93\u5165\u5BC6\u7801</span>\n }\n </mat-error>\n }\n </mat-form-field>\n </form>\n }\n @if (tabIndex() === 1) {\n <form [formGroup]=\"codeForm\" class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u624B\u673A\u53F7 </mat-label>\n <input autocomplete matInput formControlName=\"phone\" required />\n @if (codeForm.controls['phone'].touched && codeForm.controls['phone'].invalid) {\n <mat-error>\n @if (codeForm.controls['phone'].errors?.['required']) {\n <span> \u624B\u673A\u53F7\u5FC5\u586B</span>\n }\n @if (codeForm.controls['phone'].errors?.['pattern']) {\n <span> \u624B\u673A\u53F7\u683C\u5F0F\u9519\u8BEF </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <div class=\"flex justify-between items-center\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u9A8C\u8BC1\u7801 </mat-label>\n <input matInput formControlName=\"code\" required />\n @if (codeForm.controls['code'].touched && codeForm.controls['code'].invalid) {\n <mat-error>\n @if (codeForm.controls['code'].errors?.['required']) {\n <span> \u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801 </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <button mat-button (click)=\"sendSMSCode()\" [disabled]=\"countDown\" class=\"max-w-[128px] text-white text-center\">\n <span>{{ showButtonText }}</span>\n </button>\n </div>\n </form>\n }\n @if (tabIndex() === 2) {\n <div class=\"w-[190px] h-[190px] ml-[56px]\">\n <iframe [src]=\"urlSafe\" class=\"w-full h-full inline\" scrolling=\"no\" frameBorder=\"no\" #iframe></iframe>\n <div></div>\n </div>\n }\n </div>\n <!-- actions -->\n <div class=\"flex justify-between items-center py-3 pl-2\">\n <a class=\"underline underline-offset-4 text-sm\" href=\"signup\">\u521B\u5EFA\u8D26\u53F7</a>\n <button mat-flat-button (click)=\"login()\" class=\"w-[128px]\">\u767B\u5F55</button>\n </div>\n </div>\n </div>\n</div>\n", styles: ["input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{transition:background-color 0s 600000s,color 0s 600000s!important}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.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: TabsComponent, selector: "rolatech-tabs", inputs: ["select", "loading"], outputs: ["selectChange"] }, { kind: "component", type: TabComponent, selector: "rolatech-tab", inputs: ["label"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatInputModule }] }); }
|
|
139
143
|
}
|
|
140
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
144
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: SigninComponent, decorators: [{
|
|
141
145
|
type: Component,
|
|
142
|
-
args: [{ standalone: true, imports: [
|
|
146
|
+
args: [{ standalone: true, imports: [
|
|
147
|
+
AngularCommonModule,
|
|
148
|
+
AngularComponentsModule,
|
|
149
|
+
TabsComponent,
|
|
150
|
+
TabComponent,
|
|
151
|
+
FormsModule,
|
|
152
|
+
MatFormFieldModule,
|
|
153
|
+
MatInputModule,
|
|
154
|
+
], selector: 'rolatech-account-auth-signin', template: "<div class=\"h-full flex flex-col items-center sm:justify-center sm:bg-gray-100\">\n <div\n class=\"w-full p-6 lg:p-11 rounded-xl bg-white flex flex-col lg:flex-row justify-between xl:w-[800px] lg:w-[600px] sm:w-[600px]\"\n >\n <!-- header -->\n <div class=\"flex flex-col py-6\">\n <div class=\"text-3xl font-medium mb-3 ml-2\">\u767B\u5F55</div>\n <div class=\"text-md ml-2\">\u4F7F\u7528\u62FC\u5C0F\u8BFE\u8D26\u53F7\u767B\u5F55</div>\n </div>\n <div>\n <rolatech-tabs [(select)]=\"tabIndex\">\n <rolatech-tab label=\"\u8D26\u53F7\u5BC6\u7801\"></rolatech-tab>\n <rolatech-tab label=\"\u77ED\u4FE1\u9A8C\u8BC1\u7801\"></rolatech-tab>\n <rolatech-tab label=\"\u5FAE\u4FE1\u626B\u7801\"></rolatech-tab>\n </rolatech-tabs>\n <!-- content -->\n <div class=\"pt-6 min-w-[320px] min-h-[214px]\">\n @if (tabIndex() === 0) {\n <form [formGroup]=\"passrodForm\" class=\"flex flex-col\">\n <mat-form-field>\n <mat-label> \u7528\u6237\u540D/\u624B\u673A\u53F7 </mat-label>\n <input matInput formControlName=\"account\" required />\n @if (passrodForm.controls['account'].touched && passrodForm.controls['account'].invalid) {\n <mat-error>\n @if (passrodForm.controls['account'].errors?.['required']) {\n <span>\u7528\u6237\u540D\u5FC5\u586B</span>\n }\n </mat-error>\n }\n </mat-form-field>\n <mat-form-field>\n <mat-label> \u5BC6\u7801 </mat-label>\n <input autocomplete matInput formControlName=\"password\" type=\"password\" />\n @if (passrodForm.controls['password'].touched && passrodForm.controls['password'].invalid) {\n <mat-error>\n @if (passrodForm.controls['password'].errors?.['required']) {\n <span>\u8BF7\u8F93\u5165\u5BC6\u7801</span>\n }\n </mat-error>\n }\n </mat-form-field>\n </form>\n }\n @if (tabIndex() === 1) {\n <form [formGroup]=\"codeForm\" class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u624B\u673A\u53F7 </mat-label>\n <input autocomplete matInput formControlName=\"phone\" required />\n @if (codeForm.controls['phone'].touched && codeForm.controls['phone'].invalid) {\n <mat-error>\n @if (codeForm.controls['phone'].errors?.['required']) {\n <span> \u624B\u673A\u53F7\u5FC5\u586B</span>\n }\n @if (codeForm.controls['phone'].errors?.['pattern']) {\n <span> \u624B\u673A\u53F7\u683C\u5F0F\u9519\u8BEF </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <div class=\"flex justify-between items-center\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u9A8C\u8BC1\u7801 </mat-label>\n <input matInput formControlName=\"code\" required />\n @if (codeForm.controls['code'].touched && codeForm.controls['code'].invalid) {\n <mat-error>\n @if (codeForm.controls['code'].errors?.['required']) {\n <span> \u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801 </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <button mat-button (click)=\"sendSMSCode()\" [disabled]=\"countDown\" class=\"max-w-[128px] text-white text-center\">\n <span>{{ showButtonText }}</span>\n </button>\n </div>\n </form>\n }\n @if (tabIndex() === 2) {\n <div class=\"w-[190px] h-[190px] ml-[56px]\">\n <iframe [src]=\"urlSafe\" class=\"w-full h-full inline\" scrolling=\"no\" frameBorder=\"no\" #iframe></iframe>\n <div></div>\n </div>\n }\n </div>\n <!-- actions -->\n <div class=\"flex justify-between items-center py-3 pl-2\">\n <a class=\"underline underline-offset-4 text-sm\" href=\"signup\">\u521B\u5EFA\u8D26\u53F7</a>\n <button mat-flat-button (click)=\"login()\" class=\"w-[128px]\">\u767B\u5F55</button>\n </div>\n </div>\n </div>\n</div>\n", styles: ["input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{transition:background-color 0s 600000s,color 0s 600000s!important}\n"] }]
|
|
143
155
|
}], ctorParameters: () => [], propDecorators: { onLogin: [{
|
|
144
156
|
type: HostListener,
|
|
145
157
|
args: ['window:message', ['$event']]
|
|
146
158
|
}] } });
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmluLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvcGFnZXMvYWNjb3VudHMvc2lnbmluL3NpZ25pbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjb3VudC9zcmMvbGliL3BhZ2VzL2FjY291bnRzL3NpZ25pbi9zaWduaW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBVSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxXQUFXLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFtQixZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkgsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7O0FBUzVFLE1BQU0sT0FBTyxlQUFnQixTQUFRLGFBQWE7SUFxQmhELE9BQU8sQ0FBQyxLQUFVO1FBQ2hCLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFD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WSxDQUFDLFlBQzFFLDhCQUE4Qjt3REF5QnhDLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgZWZmZWN0LCBIb3N0TGlzdGVuZXIsIGluamVjdCwgT25Jbml0LCBQTEFURk9STV9JRCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0VGFiQ2hhbmdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IFNhZmVSZXNvdXJjZVVybCwgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBBbmd1bGFyQ29tbW9uTW9kdWxlLCBBUFBfQ09ORklHIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcbmltcG9ydCB7IEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlLCBCYXNlQ29tcG9uZW50LCBUYWJDb21wb25lbnQsIFRhYnNDb21wb25lbnQgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21wb25lbnRzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBBdXRoVXNlclNlcnZpY2UgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1hdXRoJztcbmltcG9ydCB7IFdlQ2hhdExvZ2luU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3dlY2hhdC1sb2dpbi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtBbmd1bGFyQ29tbW9uTW9kdWxlLCBBbmd1bGFyQ29tcG9uZW50c01vZHVsZSwgVGFic0NvbXBvbmVudCwgVGFiQ29tcG9uZW50XSxcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1hY2NvdW50LWF1dGgtc2lnbmluJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZ25pbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpZ25pbi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTaWduaW5Db21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcGFzc3JvZEZvcm0hOiBGb3JtR3JvdXA7XG4gIGNvZGVGb3JtITogRm9ybUdyb3VwO1xuICBjb250aW51ZSA9ICcnO1xuICBlbnZpcm9ubWVudCA9IGluamVjdChBUFBfQ09ORklHKTtcbiAgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIGZvcm1CdWlsZGVyID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcbiAgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBhdXRoVXNlclNlcnZpY2UgPSBpbmplY3QoQXV0aFVzZXJTZXJ2aWNlKTtcbiAgd2VjaHRMb2dpblNlcnZpY2UgPSBpbmplY3QoV2VDaGF0TG9naW5TZXJ2aWNlKTtcbiAgc2FuaXRpemVyID0gaW5qZWN0KERvbVNhbml0aXplcik7XG4gIHRhYkluZGV4ID0gc2lnbmFsKDApO1xuICBjb3VudERvd24gPSBmYWxzZTtcbiAgY291bnREb3duVGltZSA9IDYwO1xuICBzaG93QnV0dG9uVGV4dCA9ICflj5HpgIHpqozor4HnoIEnO1xuICBhcHBpZCA9ICd3eDU2N2FjYmVhNzM0Mzk4MjgnO1xuICBzdGF0ZSA9ICdhZGQnO1xuICB1cmxTYWZlOiBTYWZlUmVzb3VyY2VVcmwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoJycpO1xuICBiYXNlVXJsID0gJ2h0dHBzOi8vb3Blbi53ZWl4aW4ucXEuY29tL2Nvbm5lY3QvcXJjb25uZWN0JztcblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bWVzc2FnZScsIFsnJGV2ZW50J10pXG4gIG9uTG9naW4oZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmIChldmVudC5vcmlnaW4gIT09IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gfHwgL3JlYWN0LWRldnRvb2xzL2dpLnRlc3QoZXZlbnQuZGF0YS5zb3VyY2UpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChldmVudC5vcmlnaW4gPT09IHRoaXMuZW52aXJvbm1lbnQuYWNjb3VudHNVcmwgJiYgZXZlbnQuZGF0YS5jb2RlID09PSAyMDApIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdGhpcy5jb250aW51ZSA9PT0gdGhpcy5lbnZpcm9ubWVudC5hY2NvdW50c1VybCA/IHRoaXMuZW52aXJvbm1lbnQubXlhY2NvdW50VXJsIDogdGhpcy5jb250aW51ZTtcbiAgICB9XG4gIH1cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnRhYkluZGV4KCk7XG4gICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgdGhpcy5jb2RlRm9ybS5yZXNldCgpO1xuICAgICAgfVxuICAgICAgaWYgKGluZGV4ID09PSAxKSB7XG4gICAgICAgIHRoaXMucGFzc3JvZEZvcm0ucmVzZXQoKTtcbiAgICAgIH1cbiAgICAgIGlmIChpbmRleCA9PT0gMikge1xuICAgICAgICB0aGlzLmNvZGVGb3JtLnJlc2V0KCk7XG4gICAgICAgIHRoaXMucGFzc3JvZEZvcm0ucmVzZXQoKTtcbiAgICAgICAgdGhpcy53ZWNoYXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRpdGxlU2VydmljZS5zZXRUaXRsZSgn6LSm5Y+355m75b2VIC0g5ou85bCP6K++Jyk7XG4gICAgdGhpcy5wYXNzcm9kRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgYWNjb3VudDogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgcGFzc3dvcmQ6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICB9KTtcbiAgICB0aGlzLmNvZGVGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBwaG9uZTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oJzEoM3w0fDV8Nnw3fDh8OSlcXFxcZHs5fScpXV0sXG4gICAgICBjb2RlOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgfSk7XG4gICAgdGhpcy5jb250aW51ZSA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ2NvbnRpbnVlJ10gfHwgJy8nO1xuICB9XG4gIGdldCBmb3JtKCkge1xuICAgIHJldHVybiB0aGlzLnRhYkluZGV4KCkgPT09IDAgPyB0aGlzLnBhc3Nyb2RGb3JtLmNvbnRyb2xzIDogdGhpcy5jb2RlRm9ybS5jb250cm9scztcbiAgfVxuICBzZW5kU01TQ29kZSgpIHtcbiAgICBjb25zdCBwaG9uZUNvbnRyb2wgPSB0aGlzLmNvZGVGb3JtLmdldCgncGhvbmUnKTtcbiAgICBpZiAoIXBob25lQ29udHJvbD8udmFsaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcGhvbmUgPSBwaG9uZUNvbnRyb2wudmFsdWU7XG4gICAgdGhpcy5jb3VudERvd24gPSB0cnVlO1xuICAgIGNvbnN0IHN0YXJ0ID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY291bnREb3duVGltZSA+PSAwKSB7XG4gICAgICAgIHRoaXMuc2hvd0J1dHRvblRleHQgPSBgJHt0aGlzLmNvdW50RG93blRpbWUtLX3np5Lph43lj5FgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbChzdGFydCk7XG4gICAgICAgIHRoaXMuc2hvd0J1dHRvblRleHQgPSAn6YeN5paw5Y+R6YCBJztcbiAgICAgICAgdGhpcy5jb3VudERvd24gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jb3VudERvd25UaW1lID0gNjA7XG4gICAgICB9XG4gICAgfSwgMTAwMCk7XG5cbiAgICB0aGlzLmF1dGhVc2VyU2VydmljZS5zZW5kU01TQ29kZSgnKzg2JywgcGhvbmUpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuc25hY2tCYXJTZXJ2aWNlLm9wZW4oJ+WPkemAgeaIkOWKnycpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0JhclNlcnZpY2Uub3BlbihlcnJvci5tZXNzYWdlKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgbG9naW4oKSB7XG4gICAgbGV0IGRhdGEgPSB7fTtcbiAgICBpZiAodGhpcy50YWJJbmRleCgpID09PSAwKSB7XG4gICAgICBpZiAoIXRoaXMucGFzc3JvZEZvcm0udmFsaWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZGF0YSA9IHtcbiAgICAgICAgYWNjb3VudDogdGhpcy5mb3JtWydhY2NvdW50J10udmFsdWUsXG4gICAgICAgIHBhc3N3b3JkOiB0aGlzLmZvcm1bJ3Bhc3N3b3JkJ10udmFsdWUsXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAodGhpcy50YWJJbmRleCgpID09PSAxKSB7XG4gICAgICBpZiAoIXRoaXMuY29kZUZvcm0udmFsaWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZGF0YSA9IHtcbiAgICAgICAgcGhvbmU6IHRoaXMuZm9ybVsncGhvbmUnXS52YWx1ZSxcbiAgICAgICAgY29kZTogdGhpcy5mb3JtWydjb2RlJ10udmFsdWUsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMuYXV0aFNlcnZpY2UubG9naW4oZGF0YSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHRoaXMuY29udGludWUgPT09IHRoaXMuZW52aXJvbm1lbnQuYWNjb3VudHNVcmwgPyB0aGlzLmVudmlyb25tZW50Lm15YWNjb3VudFVybCA6IHRoaXMuY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuc25hY2tCYXJTZXJ2aWNlLm9wZW4oZXJyb3IubWVzc2FnZSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIHdlY2hhdCgpIHtcbiAgICBjb25zdCByZWRpcmVjdFVyaSA9ICdodHRwczovL2FjY291bnRzLnBpbnhpYW9rZS5jbi9sb2dpbj9jb250aW51ZSc7XG4gICAgLy8gY29uc3QgcmVkaXJlY3RVcmkgPSBgJHt3aW5kb3cubG9jYXRpb24ub3JpZ2lufS9sb2dpbj9jb250aW51ZWA7XG4gICAgY29uc3QgaHJlZiA9ICdodHRwczovL2Nsb3VkY2FjaGUudGVuY2VudC1jbG91ZC5jb20vb3Blbl9wcm9qL3Byb2pfcWNsb3VkX3YyL2dhdGV3YXkvbG9naW4tcmVnaXN0L2Nzcy9saW5rLXd4LWxvZ2luLmNzcyc7XG4gICAgY29uc3QgZW5jb2RlZFVSSSA9IGVuY29kZVVSSShyZWRpcmVjdFVyaSk7XG4gICAgY29uc3Qgc3JjID0gYCR7dGhpcy5iYXNlVXJsfT9hcHBpZD0ke3RoaXMuYXBwaWR9JnJlc3BvbnNlX3R5cGU9Y29kZSZzZWxmX3JlZGlyZWN0PXRydWUmc2NvcGU9c25zYXBpX2xvZ2luJmhyZWY9JHtocmVmfSZyZWRpcmVjdF91cmk9JHtlbmNvZGVkVVJJfSZzdGF0ZT0ke3RoaXMuc3RhdGV9I3dlY2hhdF9yZWRpcmVjdGA7XG4gICAgdGhpcy51cmxTYWZlID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHNyYyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJoLWZ1bGwgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgc206anVzdGlmeS1jZW50ZXIgc206YmctZ3JheS0xMDBcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwidy1mdWxsIHAtNiBsZzpwLTExIHJvdW5kZWQteGwgYmctd2hpdGUgZmxleCBmbGV4LWNvbCBsZzpmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW4geGw6dy1bODAwcHhdIGxnOnctWzYwMHB4XSBzbTp3LVs2MDBweF1cIlxuICA+XG4gICAgPCEtLSBoZWFkZXIgLS0+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgcHktNlwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtM3hsIGZvbnQtbWVkaXVtIG1iLTMgbWwtMlwiPueZu+W9lTwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWwtMlwiPuS9v+eUqOaLvOWwj+ivvui0puWPt+eZu+W9lTwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXY+XG4gICAgICA8cm9sYXRlY2gtdGFicyBbKHNlbGVjdCldPVwidGFiSW5kZXhcIj5cbiAgICAgICAgPHJvbGF0ZWNoLXRhYiBsYWJlbD1cIui0puWPt+WvhueggVwiPjwvcm9sYXRlY2gtdGFiPlxuICAgICAgICA8cm9sYXRlY2gtdGFiIGxhYmVsPVwi55+t5L+h6aqM6K+B56CBXCI+PC9yb2xhdGVjaC10YWI+XG4gICAgICAgIDxyb2xhdGVjaC10YWIgbGFiZWw9XCLlvq7kv6HmiavnoIFcIj48L3JvbGF0ZWNoLXRhYj5cbiAgICAgIDwvcm9sYXRlY2gtdGFicz5cbiAgICAgIDwhLS0gY29udGVudCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJwdC02IG1pbi13LVsxOTBweF0gbWluLWgtWzIxNHB4XVwiPlxuICAgICAgICBAaWYgKHRhYkluZGV4KCkgPT09IDApIHtcbiAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInBhc3Nyb2RGb3JtXCIgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICAgICAgICAgICAgPG1hdC1sYWJlbD4g55So5oi35ZCNL+aJi+acuuWPtyA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImFjY291bnRcIiByZXF1aXJlZCAvPlxuICAgICAgICAgICAgICBAaWYgKHBhc3Nyb2RGb3JtLmNvbnRyb2xzWydhY2NvdW50J10udG91Y2hlZCAmJiBwYXNzcm9kRm9ybS5jb250cm9sc1snYWNjb3VudCddLmludmFsaWQpIHtcbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yPlxuICAgICAgICAgICAgICAgICAgQGlmIChwYXNzcm9kRm9ybS5jb250cm9sc1snYWNjb3VudCddLmVycm9ycz8uWydyZXF1aXJlZCddKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPueUqOaIt+WQjeW/heWhqzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgICAgICA8bWF0LWxhYmVsPiDlr4bnoIEgPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGUgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicGFzc3dvcmRcIiB0eXBlPVwicGFzc3dvcmRcIiAvPlxuICAgICAgICAgICAgICBAaWYgKHBhc3Nyb2RGb3JtLmNvbnRyb2xzWydwYXNzd29yZCddLnRvdWNoZWQgJiYgcGFzc3JvZEZvcm0uY29udHJvbHNbJ3Bhc3N3b3JkJ10uaW52YWxpZCkge1xuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+XG4gICAgICAgICAgICAgICAgICBAaWYgKHBhc3Nyb2RGb3JtLmNvbnRyb2xzWydwYXNzd29yZCddLmVycm9ycz8uWydyZXF1aXJlZCddKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPuivt+i+k+WFpeWvhueggTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIH1cbiAgICAgICAgQGlmICh0YWJJbmRleCgpID09PSAxKSB7XG4gICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJjb2RlRm9ybVwiIGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+IOaJi+acuuWPtyA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZSBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJwaG9uZVwiIHJlcXVpcmVkIC8+XG4gICAgICAgICAgICAgIEBpZiAoY29kZUZvcm0uY29udHJvbHNbJ3Bob25lJ10udG91Y2hlZCAmJiBjb2RlRm9ybS5jb250cm9sc1sncGhvbmUnXS5pbnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoY29kZUZvcm0uY29udHJvbHNbJ3Bob25lJ10uZXJyb3JzPy5bJ3JlcXVpcmVkJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+IOaJi+acuuWPt+W/heWhqzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAoY29kZUZvcm0uY29udHJvbHNbJ3Bob25lJ10uZXJyb3JzPy5bJ3BhdHRlcm4nXSkge1xuICAgICAgICAgICAgICAgICAgICA8c3Bhbj4g5omL5py65Y+35qC85byP6ZSZ6K+vIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydFwiPlxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPiDpqozor4HnoIEgPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImNvZGVcIiB0eXBlPVwidGV4dFwiIHJlcXVpcmVkIC8+XG4gICAgICAgICAgICAgICAgQGlmIChjb2RlRm9ybS5jb250cm9sc1snY29kZSddLnRvdWNoZWQgJiYgY29kZUZvcm0uY29udHJvbHNbJ2NvZGUnXS5pbnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGNvZGVGb3JtLmNvbnRyb2xzWydjb2RlJ10uZXJyb3JzPy5bJ3JlcXVpcmVkJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4g6K+36L6T5YWl6aqM6K+B56CBIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbmRTTVNDb2RlKClcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb3VudERvd25cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvdW50RG93biA/ICdiZy1vcmFuZ2UtMzAwJyA6ICdiZy1vcmFuZ2UtNjAwIHNoYWRvdyBzaGFkb3ctZ3JheS0zMDAgY3Vyc29yLXBvaW50ZXInXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1heC13LVsxMjhweF0gcC0zIG10LTIgdGV4dC13aGl0ZSByb3VuZGVkIHRleHQtY2VudGVyXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHNob3dCdXR0b25UZXh0IH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKHRhYkluZGV4KCkgPT09IDIpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1bMTkwcHhdIGgtWzE5MHB4XSBteC1hdXRvXCI+XG4gICAgICAgICAgICA8aWZyYW1lIFtzcmNdPVwidXJsU2FmZVwiIGNsYXNzPVwidy1mdWxsIGgtZnVsbCBpbmxpbmVcIiBzY3JvbGxpbmc9XCJub1wiIGZyYW1lQm9yZGVyPVwibm9cIiAjaWZyYW1lPjwvaWZyYW1lPlxuICAgICAgICAgICAgPGRpdj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIGFjdGlvbnMgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIHB5LTIgcGwtMlwiPlxuICAgICAgICA8YSBjbGFzcz1cInVuZGVybGluZSB1bmRlcmxpbmUtb2Zmc2V0LTRcIiBocmVmPVwic2lnbnVwXCI+5Yib5bu66LSm5Y+3PC9hPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKGNsaWNrKT1cImxvZ2luKClcIlxuICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgYmctb3JhbmdlLTYwMCBob3ZlcjpiZy1vcmFuZ2UtNzAwIHctWzEyOHB4XSBwLTMgc2hhZG93LWdyYXktMzAwIHNoYWRvdyBob3ZlcjpzaGFkb3ctbGcgdGV4dC13aGl0ZSByb3VuZGVkIHRleHQtY2VudGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuPueZu+W9lTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gMy1wYXJ0IC0tPlxuICAgIDwhLS0gPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIG10LTZcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidy0xNiBoLVsxcHhdIGJnLWdyYXktMzAwXCI+PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJweC0zXCI+56ys5LiJ5pa555m75b2VPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ3LTE2IGgtWzFweF0gYmctZ3JheS0zMDBcIj48L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm10LTMgZmxleCBpdGVtcy1jZW50ZXIgaG92ZXI6c2hhZG93IGhvdmVyOnNoYWRvdy1ncmF5LTQwMCBjdXJzb3ItcG9pbnRlciBwLTNcIj5cbiAgICAgIDxpbWcgY2xhc3M9XCJ3LTQgaC00XCIgc3JjPVwiYXNzZXRzL2ltYWdlcy9pY29uNjRfYXBwd3hfbG9nby5wbmdcIiAvPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtbC0xXCI+5b6u5L+hPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj4gLS0+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmluLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvcGFnZXMvYWNjb3VudHMvc2lnbmluL3NpZ25pbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjb3VudC9zcmMvbGliL3BhZ2VzL2FjY291bnRzL3NpZ25pbi9zaWduaW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBVSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxXQUFXLEVBQWEsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pGLE9BQU8sRUFBbUIsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25ILE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7QUFnQnpELE1BQU0sT0FBTyxlQUFnQixTQUFRLGFBQWE7SUFvQmhELE9BQU8sQ0FB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QUFmLGVBQWUsNktDekI1QixzMklBNEZBLDRPRC9FSSxtQkFBbUIseXFDQUNuQix1QkFBdUIsaTVCQUN2QixhQUFhLG9IQUNiLFlBQVksMkVBQ1osV0FBVyw4QkFDWCxrQkFBa0IsOEJBQ2xCLGNBQWM7OzJGQU1MLGVBQWU7a0JBZjNCLFNBQVM7aUNBQ0ksSUFBSSxXQUNQO3dCQUNQLG1CQUFtQjt3QkFDbkIsdUJBQXVCO3dCQUN2QixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxrQkFBa0I7d0JBQ2xCLGNBQWM7cUJBQ2YsWUFDUyw4QkFBOEI7d0RBd0J4QyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGVmZmVjdCwgSG9zdExpc3RlbmVyLCBpbmplY3QsIE9uSW5pdCwgUExBVEZPUk1fSUQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTYWZlUmVzb3VyY2VVcmwsIERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgQW5ndWxhckNvbW1vbk1vZHVsZSwgQVBQX0NPTkZJRyB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbW1vbic7XG5pbXBvcnQgeyBBbmd1bGFyQ29tcG9uZW50c01vZHVsZSwgQmFzZUNvbXBvbmVudCwgVGFiQ29tcG9uZW50LCBUYWJzQ29tcG9uZW50IH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSwgQXV0aFVzZXJTZXJ2aWNlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItYXV0aCc7XG5pbXBvcnQgeyBXZUNoYXRMb2dpblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy93ZWNoYXQtbG9naW4uc2VydmljZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBBbmd1bGFyQ29tbW9uTW9kdWxlLFxuICAgIEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlLFxuICAgIFRhYnNDb21wb25lbnQsXG4gICAgVGFiQ29tcG9uZW50LFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgXSxcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1hY2NvdW50LWF1dGgtc2lnbmluJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZ25pbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpZ25pbi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTaWduaW5Db21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcGFzc3JvZEZvcm0hOiBGb3JtR3JvdXA7XG4gIGNvZGVGb3JtITogRm9ybUdyb3VwO1xuICBjb250aW51ZSA9ICcnO1xuICBlbnZpcm9ubWVudCA9IGluamVjdChBUFBfQ09ORklHKTtcbiAgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIGZvcm1CdWlsZGVyID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcbiAgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBhdXRoVXNlclNlcnZpY2UgPSBpbmplY3QoQXV0aFVzZXJTZXJ2aWNlKTtcbiAgd2VjaHRMb2dpblNlcnZpY2UgPSBpbmplY3QoV2VDaGF0TG9naW5TZXJ2aWNlKTtcbiAgc2FuaXRpemVyID0gaW5qZWN0KERvbVNhbml0aXplcik7XG4gIHRhYkluZGV4ID0gc2lnbmFsKDApO1xuICBjb3VudERvd24gPSBmYWxzZTtcbiAgY291bnREb3duVGltZSA9IDYwO1xuICBzaG93QnV0dG9uVGV4dCA9ICflj5HpgIHpqozor4HnoIEnO1xuICBhcHBpZCA9ICd3eDU2N2FjYmVhNzM0Mzk4MjgnO1xuICBzdGF0ZSA9ICdhZGQnO1xuICB1cmxTYWZlOiBTYWZlUmVzb3VyY2VVcmwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoJycpO1xuICBiYXNlVXJsID0gJ2h0dHBzOi8vb3Blbi53ZWl4aW4ucXEuY29tL2Nvbm5lY3QvcXJjb25uZWN0JztcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1lc3NhZ2UnLCBbJyRldmVudCddKVxuICBvbkxvZ2luKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICBldmVudC5vcmlnaW4gIT09IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gfHxcbiAgICAgIC9yZWFjdC1kZXZ0b29scy9naS50ZXN0KGV2ZW50LmRhdGEuc291cmNlKSB8fFxuICAgICAgL2FuZ3VsYXItZGV2dG9vbHMvZ2kudGVzdChldmVudC5kYXRhLnNvdXJjZSlcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGV2ZW50Lm9yaWdpbiA9PT0gdGhpcy5lbnZpcm9ubWVudC5hY2NvdW50c1VybCAmJiBldmVudC5kYXRhLmNvZGUgPT09IDIwMCkge1xuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0aGlzLmNvbnRpbnVlID09PSB0aGlzLmVudmlyb25tZW50LmFjY291bnRzVXJsID8gdGhpcy5lbnZpcm9ubWVudC5teWFjY291bnRVcmwgOiB0aGlzLmNvbnRpbnVlO1xuICAgIH1cbiAgfVxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMudGFiSW5kZXgoKTtcbiAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICB0aGlzLmNvZGVGb3JtLnJlc2V0KCk7XG4gICAgICB9XG4gICAgICBpZiAoaW5kZXggPT09IDEpIHtcbiAgICAgICAgdGhpcy5wYXNzcm9kRm9ybS5yZXNldCgpO1xuICAgICAgfVxuICAgICAgaWYgKGluZGV4ID09PSAyKSB7XG4gICAgICAgIHRoaXMuY29kZUZvcm0ucmVzZXQoKTtcbiAgICAgICAgdGhpcy5wYXNzcm9kRm9ybS5yZXNldCgpO1xuICAgICAgICB0aGlzLndlY2hhdCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKCfotKblj7fnmbvlvZUgLSDmi7zlsI/or74nKTtcbiAgICB0aGlzLnBhc3Nyb2RGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBhY2NvdW50OiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBwYXNzd29yZDogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgIH0pO1xuICAgIHRoaXMuY29kZUZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHBob25lOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybignMSgzfDR8NXw2fDd8OHw5KVxcXFxkezl9JyldXSxcbiAgICAgIGNvZGU6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICB9KTtcbiAgICB0aGlzLmNvbnRpbnVlID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1snY29udGludWUnXSB8fCAnLyc7XG4gIH1cbiAgZ2V0IGZvcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMudGFiSW5kZXgoKSA9PT0gMCA/IHRoaXMucGFzc3JvZEZvcm0uY29udHJvbHMgOiB0aGlzLmNvZGVGb3JtLmNvbnRyb2xzO1xuICB9XG4gIHNlbmRTTVNDb2RlKCkge1xuICAgIGNvbnN0IHBob25lQ29udHJvbCA9IHRoaXMuY29kZUZvcm0uZ2V0KCdwaG9uZScpO1xuICAgIGlmICghcGhvbmVDb250cm9sPy52YWxpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwaG9uZSA9IHBob25lQ29udHJvbC52YWx1ZTtcbiAgICB0aGlzLmNvdW50RG93biA9IHRydWU7XG4gICAgY29uc3Qgc3RhcnQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jb3VudERvd25UaW1lID49IDApIHtcbiAgICAgICAgdGhpcy5zaG93QnV0dG9uVGV4dCA9IGAke3RoaXMuY291bnREb3duVGltZS0tfeenkumHjeWPkWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjbGVhckludGVydmFsKHN0YXJ0KTtcbiAgICAgICAgdGhpcy5zaG93QnV0dG9uVGV4dCA9ICfph43mlrDlj5HpgIEnO1xuICAgICAgICB0aGlzLmNvdW50RG93biA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNvdW50RG93blRpbWUgPSA2MDtcbiAgICAgIH1cbiAgICB9LCAxMDAwKTtcblxuICAgIHRoaXMuYXV0aFVzZXJTZXJ2aWNlLnNlbmRTTVNDb2RlKCcrODYnLCBwaG9uZSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0JhclNlcnZpY2Uub3Blbign5Y+R6YCB5oiQ5YqfJyk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLnNuYWNrQmFyU2VydmljZS5vcGVuKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBsb2dpbigpIHtcbiAgICBsZXQgZGF0YSA9IHt9O1xuICAgIGlmICh0aGlzLnRhYkluZGV4KCkgPT09IDApIHtcbiAgICAgIGlmICghdGhpcy5wYXNzcm9kRm9ybS52YWxpZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBkYXRhID0ge1xuICAgICAgICBhY2NvdW50OiB0aGlzLmZvcm1bJ2FjY291bnQnXS52YWx1ZSxcbiAgICAgICAgcGFzc3dvcmQ6IHRoaXMuZm9ybVsncGFzc3dvcmQnXS52YWx1ZSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmICh0aGlzLnRhYkluZGV4KCkgPT09IDEpIHtcbiAgICAgIGlmICghdGhpcy5jb2RlRm9ybS52YWxpZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBkYXRhID0ge1xuICAgICAgICBwaG9uZTogdGhpcy5mb3JtWydwaG9uZSddLnZhbHVlLFxuICAgICAgICBjb2RlOiB0aGlzLmZvcm1bJ2NvZGUnXS52YWx1ZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhpcy5hdXRoU2VydmljZS5sb2dpbihkYXRhKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdGhpcy5jb250aW51ZSA9PT0gdGhpcy5lbnZpcm9ubWVudC5hY2NvdW50c1VybCA/IHRoaXMuZW52aXJvbm1lbnQubXlhY2NvdW50VXJsIDogdGhpcy5jb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0JhclNlcnZpY2Uub3BlbihlcnJvci5tZXNzYWdlKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgd2VjaGF0KCkge1xuICAgIGNvbnN0IHJlZGlyZWN0VXJpID0gJ2h0dHBzOi8vYWNjb3VudHMucGlueGlhb2tlLmNuL2xvZ2luP2NvbnRpbnVlJztcbiAgICAvLyBjb25zdCByZWRpcmVjdFVyaSA9IGAke3dpbmRvdy5sb2NhdGlvbi5vcmlnaW59L2xvZ2luP2NvbnRpbnVlYDtcbiAgICBjb25zdCBocmVmID0gJ2h0dHBzOi8vY2xvdWRjYWNoZS50ZW5jZW50LWNsb3VkLmNvbS9vcGVuX3Byb2ovcHJval9xY2xvdWRfdjIvZ2F0ZXdheS9sb2dpbi1yZWdpc3QvY3NzL2xpbmstd3gtbG9naW4uY3NzJztcbiAgICBjb25zdCBlbmNvZGVkVVJJID0gZW5jb2RlVVJJKHJlZGlyZWN0VXJpKTtcbiAgICBjb25zdCBzcmMgPSBgJHt0aGlzLmJhc2VVcmx9P2FwcGlkPSR7dGhpcy5hcHBpZH0mcmVzcG9uc2VfdHlwZT1jb2RlJnNlbGZfcmVkaXJlY3Q9dHJ1ZSZzY29wZT1zbnNhcGlfbG9naW4maHJlZj0ke2hyZWZ9JnJlZGlyZWN0X3VyaT0ke2VuY29kZWRVUkl9JnN0YXRlPSR7dGhpcy5zdGF0ZX0jd2VjaGF0X3JlZGlyZWN0YDtcbiAgICB0aGlzLnVybFNhZmUgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoc3JjKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImgtZnVsbCBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBzbTpqdXN0aWZ5LWNlbnRlciBzbTpiZy1ncmF5LTEwMFwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJ3LWZ1bGwgcC02IGxnOnAtMTEgcm91bmRlZC14bCBiZy13aGl0ZSBmbGV4IGZsZXgtY29sIGxnOmZsZXgtcm93IGp1c3RpZnktYmV0d2VlbiB4bDp3LVs4MDBweF0gbGc6dy1bNjAwcHhdIHNtOnctWzYwMHB4XVwiXG4gID5cbiAgICA8IS0tIGhlYWRlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBweS02XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC0zeGwgZm9udC1tZWRpdW0gbWItMyBtbC0yXCI+55m75b2VPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtbC0yXCI+5L2/55So5ou85bCP6K++6LSm5Y+355m75b2VPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdj5cbiAgICAgIDxyb2xhdGVjaC10YWJzIFsoc2VsZWN0KV09XCJ0YWJJbmRleFwiPlxuICAgICAgICA8cm9sYXRlY2gtdGFiIGxhYmVsPVwi6LSm5Y+35a+G56CBXCI+PC9yb2xhdGVjaC10YWI+XG4gICAgICAgIDxyb2xhdGVjaC10YWIgbGFiZWw9XCLnn63kv6Hpqozor4HnoIFcIj48L3JvbGF0ZWNoLXRhYj5cbiAgICAgICAgPHJvbGF0ZWNoLXRhYiBsYWJlbD1cIuW+ruS/oeaJq+eggVwiPjwvcm9sYXRlY2gtdGFiPlxuICAgICAgPC9yb2xhdGVjaC10YWJzPlxuICAgICAgPCEtLSBjb250ZW50IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInB0LTYgbWluLXctWzMyMHB4XSBtaW4taC1bMjE0cHhdXCI+XG4gICAgICAgIEBpZiAodGFiSW5kZXgoKSA9PT0gMCkge1xuICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwicGFzc3JvZEZvcm1cIiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgPG1hdC1sYWJlbD4g55So5oi35ZCNL+aJi+acuuWPtyA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImFjY291bnRcIiByZXF1aXJlZCAvPlxuICAgICAgICAgICAgICBAaWYgKHBhc3Nyb2RGb3JtLmNvbnRyb2xzWydhY2NvdW50J10udG91Y2hlZCAmJiBwYXNzcm9kRm9ybS5jb250cm9sc1snYWNjb3VudCddLmludmFsaWQpIHtcbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yPlxuICAgICAgICAgICAgICAgICAgQGlmIChwYXNzcm9kRm9ybS5jb250cm9sc1snYWNjb3VudCddLmVycm9ycz8uWydyZXF1aXJlZCddKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPueUqOaIt+WQjeW/heWhqzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgPG1hdC1sYWJlbD4g5a+G56CBIDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCIgdHlwZT1cInBhc3N3b3JkXCIgLz5cbiAgICAgICAgICAgICAgQGlmIChwYXNzcm9kRm9ybS5jb250cm9sc1sncGFzc3dvcmQnXS50b3VjaGVkICYmIHBhc3Nyb2RGb3JtLmNvbnRyb2xzWydwYXNzd29yZCddLmludmFsaWQpIHtcbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yPlxuICAgICAgICAgICAgICAgICAgQGlmIChwYXNzcm9kRm9ybS5jb250cm9sc1sncGFzc3dvcmQnXS5lcnJvcnM/LlsncmVxdWlyZWQnXSkge1xuICAgICAgICAgICAgICAgICAgICA8c3Bhbj7or7fovpPlhaXlr4bnoIE8L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPC9mb3JtPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAodGFiSW5kZXgoKSA9PT0gMSkge1xuICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiY29kZUZvcm1cIiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgICAgICA8bWF0LWxhYmVsPiDmiYvmnLrlj7cgPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGUgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicGhvbmVcIiByZXF1aXJlZCAvPlxuICAgICAgICAgICAgICBAaWYgKGNvZGVGb3JtLmNvbnRyb2xzWydwaG9uZSddLnRvdWNoZWQgJiYgY29kZUZvcm0uY29udHJvbHNbJ3Bob25lJ10uaW52YWxpZCkge1xuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+XG4gICAgICAgICAgICAgICAgICBAaWYgKGNvZGVGb3JtLmNvbnRyb2xzWydwaG9uZSddLmVycm9ycz8uWydyZXF1aXJlZCddKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPiDmiYvmnLrlj7flv4Xloas8L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKGNvZGVGb3JtLmNvbnRyb2xzWydwaG9uZSddLmVycm9ycz8uWydwYXR0ZXJuJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+IOaJi+acuuWPt+agvOW8j+mUmeivryA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+IOmqjOivgeeggSA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiY29kZVwiIHJlcXVpcmVkIC8+XG4gICAgICAgICAgICAgICAgQGlmIChjb2RlRm9ybS5jb250cm9sc1snY29kZSddLnRvdWNoZWQgJiYgY29kZUZvcm0uY29udHJvbHNbJ2NvZGUnXS5pbnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGNvZGVGb3JtLmNvbnRyb2xzWydjb2RlJ10uZXJyb3JzPy5bJ3JlcXVpcmVkJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4g6K+36L6T5YWl6aqM6K+B56CBIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cInNlbmRTTVNDb2RlKClcIiBbZGlzYWJsZWRdPVwiY291bnREb3duXCIgY2xhc3M9XCJtYXgtdy1bMTI4cHhdIHRleHQtd2hpdGUgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBzaG93QnV0dG9uVGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIH1cbiAgICAgICAgQGlmICh0YWJJbmRleCgpID09PSAyKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInctWzE5MHB4XSBoLVsxOTBweF0gbWwtWzU2cHhdXCI+XG4gICAgICAgICAgICA8aWZyYW1lIFtzcmNdPVwidXJsU2FmZVwiIGNsYXNzPVwidy1mdWxsIGgtZnVsbCBpbmxpbmVcIiBzY3JvbGxpbmc9XCJub1wiIGZyYW1lQm9yZGVyPVwibm9cIiAjaWZyYW1lPjwvaWZyYW1lPlxuICAgICAgICAgICAgPGRpdj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIGFjdGlvbnMgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIHB5LTMgcGwtMlwiPlxuICAgICAgICA8YSBjbGFzcz1cInVuZGVybGluZSB1bmRlcmxpbmUtb2Zmc2V0LTQgdGV4dC1zbVwiIGhyZWY9XCJzaWdudXBcIj7liJvlu7rotKblj7c8L2E+XG4gICAgICAgIDxidXR0b24gbWF0LWZsYXQtYnV0dG9uIChjbGljayk9XCJsb2dpbigpXCIgY2xhc3M9XCJ3LVsxMjhweF1cIj7nmbvlvZU8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|