@reusa/ngx-reusa-app-lib 0.0.1363 → 0.0.1365
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/add-employer/add-employer.component.mjs +1 -1
- package/esm2022/lib/components/mfa/mfa.component.mjs +2 -1
- package/esm2022/lib/components/questionnaire/dynamic-form-question.component.mjs +24 -12
- package/esm2022/lib/components/user-login/user-login.component.mjs +4 -1
- package/esm2022/lib/components/weekly-cert-employer/weekly-cert-employer.component.mjs +253 -171
- package/esm2022/lib/models/OtpAuthModel.mjs +1 -1
- package/esm2022/lib/models/UserModel.mjs +1 -1
- package/esm2022/lib/models/questionnaire/QuestionnaireSaveModel.mjs +1 -1
- package/esm2022/lib/pages/common/login/login.component.mjs +3 -1
- package/esm2022/lib/services/login/login.service.mjs +4 -1
- package/esm2022/lib/validations/AppValidators.mjs +9 -9
- package/fesm2022/reusa-ngx-reusa-app-lib.mjs +292 -189
- package/fesm2022/reusa-ngx-reusa-app-lib.mjs.map +1 -1
- package/lib/components/add-employer/add-employer.component.d.ts.map +1 -1
- package/lib/components/mfa/mfa.component.d.ts.map +1 -1
- package/lib/components/questionnaire/dynamic-form-question.component.d.ts +1 -0
- package/lib/components/questionnaire/dynamic-form-question.component.d.ts.map +1 -1
- package/lib/components/user-login/user-login.component.d.ts.map +1 -1
- package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts.map +1 -1
- package/lib/models/OtpAuthModel.d.ts +1 -0
- package/lib/models/OtpAuthModel.d.ts.map +1 -1
- package/lib/models/UserModel.d.ts +1 -0
- package/lib/models/UserModel.d.ts.map +1 -1
- package/lib/models/questionnaire/QuestionnaireSaveModel.d.ts +1 -0
- package/lib/models/questionnaire/QuestionnaireSaveModel.d.ts.map +1 -1
- package/lib/pages/common/login/login.component.d.ts.map +1 -1
- package/lib/services/login/login.service.d.ts.map +1 -1
- package/lib/validations/AppValidators.d.ts +8 -8
- package/lib/validations/AppValidators.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export class OtpAuthModel {
|
|
2
2
|
}
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3RwQXV0aE1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9tb2RlbHMvT3RwQXV0aE1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxZQUFZO0NBTXhCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIE90cEF1dGhNb2RlbHtcclxuICAgIHVzZXJJZCA6IHN0cmluZztcclxuICAgIHBhc3N3b3JkIDogc3RyaW5nO1xyXG4gICAgb3RwIDogc3RyaW5nIDtcclxuICAgIGlzdHJ1c3RlZERldmljZSA6IHN0cmluZztcclxuICAgIGxhbmd1YWdlIDogc3RyaW5nO1xyXG59Il19
|
|
@@ -3,4 +3,4 @@ export class UserModel {
|
|
|
3
3
|
this.isUserRegistered = false;
|
|
4
4
|
}
|
|
5
5
|
}
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlck1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9tb2RlbHMvVXNlck1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxTQUFTO0lBQXRCO1FBcUJJLHFCQUFnQixHQUFhLEtBQUssQ0FBQztJQXFFdkMsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFVzZXJNb2RlbHtcclxuICAgIHVzZXJuYW1lIDogc3RyaW5nO1xyXG5cclxuICAgIHBhc3N3b3JkIDogc3RyaW5nO1xyXG5cclxuICAgIHVzZXJUeXBlIDogc3RyaW5nO1xyXG5cclxuICAgIGZpcnN0TmFtZSA6IHN0cmluZztcclxuXHJcbiAgICBtaWRkbGVOYW1lIDogc3RyaW5nO1xyXG5cclxuICAgIGxhc3ROYW1lIDogc3RyaW5nO1xyXG5cclxuICAgIGdlbmRlciA6IHN0cmluZztcclxuXHJcbiAgICBkb2IgOiBEYXRlO1xyXG5cclxuICAgIGFjY2Vzc190b2tlbiA6IHN0cmluZztcclxuXHJcbiAgICByZWZyZXNoX3Rva2VuIDogc3RyaW5nO1xyXG5cclxuICAgIGlzVXNlclJlZ2lzdGVyZWQgOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgcm9sZXMgOiBzdHJpbmdbXTtcclxuXHJcbiAgICBmdW5jdGlvbnMgOiBzdHJpbmdbXTtcclxuXHJcbiAgICBpc0FwcHJvdmVkIDogc3RyaW5nO1xyXG5cclxuICAgIGlzQWN0aXZlIDogc3RyaW5nO1xyXG5cclxuICAgIHVzZXJQcm9maWxlQ29tcGxldGUgOiBib29sZWFuO1xyXG5cclxuICAgIGVtYWlsSWQgOiBzdHJpbmc7XHJcblxyXG4gICAgcGFzc3dvcmRFeHBpcmF0aW9uRGF0ZSA6IERhdGU7XHJcblxyXG4gICAgZW1haWxTdGF0dXMgOiBzdHJpbmc7XHJcblxyXG4gICAgc2VjdXJpdHlRdWVzdGlvbiA6IHN0cmluZztcclxuXHJcbiAgICBzZWN1cml0eUFuc3dlciA6IHN0cmluZztcclxuXHJcbiAgICBzZWN1cml0eVF1ZXN0aW9uMiA6IHN0cmluZztcclxuXHJcbiAgICBzZWN1cml0eUFuc3dlcjIgOiBzdHJpbmc7XHJcblxyXG4gICAgc2VjdXJpdHlRdWVzdGlvbjMgOiBzdHJpbmc7XHJcblxyXG4gICAgc2VjdXJpdHlBbnN3ZXIzIDogc3RyaW5nO1xyXG4gICAgXHJcbiAgICBjaGFuZ2VQd2QgOiBib29sZWFuO1xyXG5cclxuICAgIGlzTG9nZ2VkSW4gOiBib29sZWFuO1xyXG5cclxuICAgIGV4cGlyYXRpb24gOiBEYXRlO1xyXG5cclxuICAgIGdlbmVyYXRpb24gOiBEYXRlO1xyXG5cclxuICAgIGV4cGlyZXNfaW4gOiBudW1iZXI7XHJcblxyXG4gICAgc3NuIDogc3RyaW5nO1xyXG5cclxuICAgIGVhbiA6IHN0cmluZztcclxuXHJcbiAgICBjbGFpbWFudElkIDogc3RyaW5nO1xyXG5cclxuICAgIGVtcGxveWVySWQgOiBzdHJpbmc7XHJcblxyXG4gICAgY29va2llTmFtZSA6IHN0cmluZztcclxuXHJcbiAgICBkb21haW5OYW1lIDogc3RyaW5nO1xyXG5cclxuICAgIGNvb2tpZVZhbHVlIDogc3RyaW5nO1xyXG5cclxuICAgIGlzMkZBUmVxdWlyZWQgOiBib29sZWFuO1xyXG5cclxuICAgIGlzRW1haWxWZXJpZmljYXRpb25SZXF1aXJlZCA6IGJvb2xlYW47XHJcblxyXG4gICAgZGF5c1RpbGxQYXNzd29yZEV4cGlyZSA6IG51bWJlcjtcclxuXHJcbiAgICBjZWxscGhvbmVTdGF0dXMgOiBzdHJpbmc7XHJcblxyXG4gICAgY2VsbHBob25lTm8gOiBzdHJpbmc7XHJcblxyXG4gICAgc3VwcG9ydGVkTWZhVHlwZXMgOiBzdHJpbmc7XHJcblxyXG4gICAgdXNlclVuaXQgOiBzdHJpbmc7XHJcbiAgICBcclxuICAgIGxhbmd1YWdlIDpzdHJpbmc7XHJcbn0iXX0=
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export class QuestionnaireSaveModel {
|
|
2
2
|
}
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUXVlc3Rpb25uYWlyZVNhdmVNb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvbW9kZWxzL3F1ZXN0aW9ubmFpcmUvUXVlc3Rpb25uYWlyZVNhdmVNb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sc0JBQXNCO0NBeUJsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENsYWltQXBwRW1wUmVzcG9uc2VNb2RlbCB9IGZyb20gXCIuL0NsYWltQXBwRW1wUmVzcG9uc2VNb2RlbFwiO1xyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBRdWVzdGlvbm5haXJlU2F2ZU1vZGVse1xyXG4gICAgZGF0YTphbnk7XHJcbiAgICBxdWVzdGlvbm5haXJlVHlwZTpzdHJpbmc7XHJcblx0dXNlclR5cGU6c3RyaW5nO1xyXG5cdGZsb3dGcm9tOnN0cmluZztcclxuXHRwb3RlbnRpYWxJc3N1ZUlkOm51bWJlcjtcclxuXHRjbGFpbUFwcGxpY2F0aW9uSWQ6bnVtYmVyO1xyXG5cdGlzc3VlTWFzdGVySWQ6bnVtYmVyO1xyXG5cclxuXHRmbG93V0NBYmxlQW5kQXZhaWxhYmxlOmJvb2xlYW47XHJcblx0Zmxvd1dDQWJsZUFuZEF2YWlsYWJsZUlucTpib29sZWFuO1xyXG5cdGZsb3dBYmxlQW5kQXZhaWxhYmxlOmJvb2xlYW47XHJcblx0Zmxvd0FibGVBbmRBdmFpbGFibGVJbnE6Ym9vbGVhbjtcclxuXHRxdWVzdGlvbm5haXJlSWQ6bnVtYmVyO1xyXG5cdHF1ZXN0aW9ubmFpcmVJZHM6bnVtYmVyW107XHJcblx0ZW1wTW9kZWw6IENsYWltQXBwRW1wUmVzcG9uc2VNb2RlbFtdO1xyXG5cclxuXHRzY3JlZW5RdWVzdGlvbm5haXJlRGF0YTphbnkgW107XHJcblx0dXVpZDpzdHJpbmc7XHJcblx0aWRlbnRpZmllcjogc3RyaW5nW107XHJcblx0Zmxvd0tleTogc3RyaW5nO1xyXG5cdGlzU2NyZWVuUXVlc3Rpb25uYWlyZTogYm9vbGVhbjtcclxuXHRhdXRvU2F2ZSA6IGJvb2xlYW47XHJcblx0YWN0aXZlUGFnZUluZGV4Om51bWJlcjtcclxuXHRsYW5ndWFnZTpzdHJpbmc7XHJcbn0iXX0=
|
|
@@ -286,6 +286,7 @@ export class LoginComponent extends BasePage {
|
|
|
286
286
|
this.loginService.login(auth)
|
|
287
287
|
.subscribe(res => {
|
|
288
288
|
let userModel = res;
|
|
289
|
+
userModel.language = localStorage.getItem("language");
|
|
289
290
|
this.loginService.setUser(userModel).then(res => {
|
|
290
291
|
if (userModel.changePwd) {
|
|
291
292
|
this.nav.navigateRoot('change-password');
|
|
@@ -322,6 +323,7 @@ export class LoginComponent extends BasePage {
|
|
|
322
323
|
userModel.dob = this.dob.value;
|
|
323
324
|
userModel.username = this.signUpUserId.value;
|
|
324
325
|
userModel.password = this.password.value;
|
|
326
|
+
userModel.language = localStorage.getItem("language");
|
|
325
327
|
this.loginService.setUser(userModel);
|
|
326
328
|
this.loginService.signUp(userModel).subscribe(res => {
|
|
327
329
|
this.opt = 'signin';
|
|
@@ -528,4 +530,4 @@ export class LoginComponent extends BasePage {
|
|
|
528
530
|
args: ['loginTypeFormDirective', { static: false }]
|
|
529
531
|
}] }); })();
|
|
530
532
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LoginComponent, { className: "LoginComponent", filePath: "lib\\pages\\common\\login\\login.component.ts", lineNumber: 19 }); })();
|
|
531
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9wYWdlcy9jb21tb24vbG9naW4vbG9naW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9wYWdlcy9jb21tb24vbG9naW4vbG9naW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQTZELE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBc0IsVUFBVSxFQUE2RCxNQUFNLGdCQUFnQixDQUFDO0FBSTNILE9BQU8sRUFBRSxRQUFRLEVBQTJCLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNEdkQsMkJBQW9CO0lBQ2xCLHFCQUFLO0lBQUEsa0RBQ1A7SUFBQSxpQkFBTTs7O0lBQ04sMkJBQW9CO0lBQ2xCLHFCQUFLO0lBQUEsa0RBQ0w7SUFBQSxxQkFBSztJQUFBLHFEQUNQO0lBQUEsaUJBQU07OztJQWNGLDhCQUEwQzs7O0lBK0R4Qyw4QkFBMEM7OztJQVFsQywrQkFBdUU7OztJQUE3RCxnREFBNEI7Ozs7SUFJeEMsMkJBQXVCLGVBQUE7SUFFbkIsaUNBQTZHO0lBQzdHLGlDQUF5QjtJQUFBLHdCQUFRO0lBQUEsaUJBQVEsRUFBQTtJQUUzQyxnQ0FHaUI7SUFDbkIsaUJBQU07Ozs7SUFQVSxlQUFtQjtJQUFuQix3Q0FBbUIsb0JBQUEsbUJBQUE7SUFHdEIsZUFBYTtJQUFiLGtDQUFhLGFBQUEsc0NBQUE7Ozs7SUFNMUIs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LEVBQUMsTUFBTSxFQUFHLEtBQUssRUFBQztZQUVjLHNCQUFzQjtrQkFBcEYsU0FBUzttQkFBQyx3QkFBd0IsRUFBRSxFQUFDLE1BQU0sRUFBRyxLQUFLLEVBQUM7O2tGQWQxQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgRGlyZWN0aXZlLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVmFsaWRhdG9ycywgVW50eXBlZEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cERpcmVjdGl2ZSwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBQb3BvdmVyQ29udHJvbGxlciwgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuaW1wb3J0IHtNYXRTdGVwcGVyfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zdGVwcGVyJztcclxuaW1wb3J0IHsgQmFzZVBhZ2UsIEN1c3RvbUVycm9yU3RhdGVNYXRjaGVyIH0gZnJvbSAnLi4vLi4vQmFzZVBhZ2UnO1xyXG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sb2dpbi9sb2dpbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9Vc2VyTW9kZWwnO1xyXG5pbXBvcnQgeyBMYW5ndWFnZVBhZ2UgfSBmcm9tICcuLi8uLi9wb3BvdmVycy9sYW5ndWFnZS9sYW5ndWFnZS5wYWdlJztcclxuaW1wb3J0IHsgTGliQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL0xpYkNvbnN0YW50cyc7XHJcbmltcG9ydCB7IENhcHRjaGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2FwdGNoYS9jYXB0Y2hhLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtbG9naW4nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2dpbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbG9naW4uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9naW5Db21wb25lbnQgZXh0ZW5kcyBCYXNlUGFnZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHByaXZhdGUgTE9HSU5fQVVUSF9DT0RFX0FDVElPTl9OQU1FID0gXCJMT0dJTl9BVVRIX0NPREVcIjtcclxuXHJcbiAgcHVibGljIGNhcHNPbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgZGlzcGxheURpYWxvZyA9IGZhbHNlO1xyXG5cclxuICBAVmlld0NoaWxkKCdsb2dpblJlZicsIHtzdGF0aWM6IHRydWUgfSkgbG9naW5FbGVtZW50OiBFbGVtZW50UmVmO1xyXG5cclxuICBAVmlld0NoaWxkKCdzdGVwcGVyJykgc3RlcHBlcjogTWF0U3RlcHBlcjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbG9naW5Gb3JtRGlyZWN0aXZlJywge3N0YXRpYyA6IGZhbHNlfSkgcHJpdmF0ZSBsb2dpbkZvcm1EaXJlY3RpdmU6IE5nRm9ybTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbG9naW5UeXBlRm9ybURpcmVjdGl2ZScsIHtzdGF0aWMgOiBmYWxzZX0pIHByaXZhdGUgbG9naW5UeXBlRm9ybURpcmVjdGl2ZTogTmdGb3JtO1xyXG5cclxuICBhdXRoMjogYW55O1xyXG4gIHByaXZhdGUgbG9naW5FcnJvclN0cmluZzogc3RyaW5nO1xyXG4gIHB1YmxpYyBvcHQ6IHN0cmluZyA9ICdzaWduaW4nO1xyXG4gIHB1YmxpYyBsb2dpbkZvcm0gOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG4gIHB1YmxpYyBsb2dpblR5cGVGb3JtIDogVW50eXBlZEZvcm1Hcm91cDtcclxuICBwdWJsaWMgc2lnbnVwRm9ybSA6IFVudHlwZWRGb3JtR3JvdXA7XHJcbiAgcHVibGljIGVuYWJsZU90cCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgZW5hYmxlUGFzc3dvcmQgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGVuYWJsZVNpZ25pbiA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgaXNMb2dpbkluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICBwdWJsaWMgZmFxID0gJ3B1YSc7XHJcbiAgcHVibGljIHNob3dQcm9ncmVzc0JhciA9IGZhbHNlO1xyXG4gIHB1YmxpYyBoaWRlUGFzc3dvcmQgPSB0cnVlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZmIgOiBVbnR5cGVkRm9ybUJ1aWxkZXIsIHB1YmxpYyBsb2dpblNlcnZpY2UgOiBMb2dpblNlcnZpY2UsIHB1YmxpYyByb3V0ZXIgOiBSb3V0ZXIsIHB1YmxpYyB1dGlsIDogVXRpbFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHVibGljIHBvcHVwOiBQb3BvdmVyQ29udHJvbGxlciwgcHJpdmF0ZSBuYXY6IE5hdkNvbnRyb2xsZXIsIHByaXZhdGUgY3M6IENhcHRjaGFTZXJ2aWNlKSB7IFxyXG4gICAgICAgICAgICAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0RpYWxvZygpIHtcclxuICAgIHRoaXMuZGlzcGxheURpYWxvZyA9IHRydWU7XHJcbiAgfVxyXG4gIFxyXG4gIGlvblZpZXdEaWRFbnRlcigpe1xyXG4gICAgdGhpcy5yZXNldCgpO1xyXG4gIH1cclxuXHJcbiAgZW5hYmxlT3RwRmllbGQoKXtcclxuICAgIGlmKHRoaXMubG9naW5Gb3JtLmludmFsaWQpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51dGlsXHJcbiAgICAgICAgLnNob3dMb2FkZXIoKVxyXG4gICAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY3MuZ2VuZXJhdGVDYXB0Y2hhVG9rZW4odGhpcy5MT0dJTl9BVVRIX0NPREVfQUNUSU9OX05BTUUpXHJcbiAgICAgICAgLnN1YnNjcmliZSgodG9rZW46IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jcy5zZXRJbnZpc2liZWxDYXB0Y2hhKHRva2VuKTtcclxuICAgICAgICAgIHRoaXMubG9naW5TZXJ2aWNlXHJcbiAgICAgICAgICAgICAgLmdlbmVyYXRlT3RwKHRoaXMudXNlcklkLnZhbHVlLCBcImVtYWlsXCIpXHJcbiAgICAgICAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYoIXRoaXMuZW5hYmxlT3RwKXtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zdGVwcGVyLm5leHQoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5lbmFibGVQYXNzd29yZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZVNpZ25pbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMub3RwLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxWYWxpZGF0b3JzLm1pbkxlbmd0aCg2KSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNildKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnNpZ25JblBhc3N3b3JkKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5lbmFibGVPdHAgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy51dGlsLnNob3dFcnJvcignQ2FwdGNoYSB2ZXJpZmljYXRpb24gZmFpbGVkLiBQbGVhc2UgcmV0cnkuJyk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICB9XHJcblxyXG4gIGVuYWJsZVBhc3N3b3JkRmllbGQoKXtcclxuICAgIGlmKHRoaXMubG9naW5Gb3JtLmludmFsaWQpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZighdGhpcy5lbmFibGVQYXNzd29yZCl7XHJcbiAgICAgIHRoaXMuZW5hYmxlT3RwID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZW5hYmxlUGFzc3dvcmQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVuYWJsZVNpZ25pbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuc3RlcHBlci5uZXh0KCk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5vdHApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXQoKXtcclxuICAgIHRoaXMuZW5hYmxlT3RwID0gZmFsc2U7XHJcbiAgICB0aGlzLmVuYWJsZVBhc3N3b3JkID0gZmFsc2U7XHJcbiAgICB0aGlzLmVuYWJsZVNpZ25pbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaWduSW5QYXNzd29yZC5yZXNldCgpO1xyXG4gICAgdGhpcy5zaG93UHJvZ3Jlc3NCYXIgPSBmYWxzZTtcclxuICAgIHRoaXMuc3RlcHBlci5yZXNldCgpO1xyXG4gICAgdGhpcy5vdHAucmVzZXQoKTtcclxuICAgIHRoaXMubG9naW5UeXBlRm9ybS5yZXNldCgpO1xyXG4gICAgdGhpcy5sb2dpbkZvcm0ucmVzZXQoKTtcclxuICAgIHRoaXMubG9naW5Gb3JtRGlyZWN0aXZlLnJlc2V0Rm9ybSgpO1xyXG4gICAgdGhpcy5sb2dpblR5cGVGb3JtRGlyZWN0aXZlLnJlc2V0Rm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmluaXRpbGl6ZUxvZ2luRm9ybSgpO1xyXG4gIH1cclxuICBcclxuICBpbml0aWxpemVMb2dpbkZvcm0oKXtcclxuICAgIHRoaXMubG9naW5Gb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICd1c2VySWQnIDogWycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zaWdudXBGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICdzaWduVXBVc2VySWQnIDogWycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAncGFzc3dvcmQnIDogWycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAnZmlyc3ROYW1lJyA6IFsnJyxWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgJ21pZGRsZU5hbWUnIDogWycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAnbGFzdE5hbWUnIDogWycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAnZG9iJyA6IFsnJyxWYWxpZGF0b3JzLnJlcXVpcmVkXVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5sb2dpblR5cGVGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICdvdHAnIDogWycnXSxcclxuICAgICAgJ3NpZ25JblBhc3N3b3JkJyA6IFsnJ10sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBnZXQgc2lnbkluUGFzc3dvcmQoKXtcclxuICAgIHJldHVybiB0aGlzLmxvZ2luVHlwZUZvcm0uY29udHJvbHNbJ3NpZ25JblBhc3N3b3JkJ107XHJcbiAgfVxyXG5cclxuICBnZXQgdXNlcklkKCl7XHJcbiAgICByZXR1cm4gdGhpcy5sb2dpbkZvcm0uY29udHJvbHNbJ3VzZXJJZCddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG90cCgpe1xyXG4gICAgcmV0dXJuIHRoaXMubG9naW5UeXBlRm9ybS5jb250cm9sc1snb3RwJ107XHJcbiAgfVxyXG5cclxuICBnZXQgc2lnblVwVXNlcklkKCl7XHJcbiAgICByZXR1cm4gdGhpcy5zaWdudXBGb3JtLmNvbnRyb2xzWydzaWduVXBVc2VySWQnXTtcclxuICB9XHJcblxyXG4gIGdldCBwYXNzd29yZCgpe1xyXG4gICAgcmV0dXJuIHRoaXMuc2lnbnVwRm9ybS5jb250cm9sc1sncGFzc3dvcmQnXTtcclxuICB9XHJcblxyXG4gIGdldCBmaXJzdE5hbWUoKXtcclxuICAgIHJldHVybiB0aGlzLnNpZ251cEZvcm0uY29udHJvbHNbJ2ZpcnN0TmFtZSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1pZGRsZU5hbWUoKXtcclxuICAgIHJldHVybiB0aGlzLnNpZ251cEZvcm0uY29udHJvbHNbJ21pZGRsZU5hbWUnXTtcclxuICB9XHJcblxyXG4gIGdldCBsYXN0TmFtZSgpe1xyXG4gICAgcmV0dXJuIHRoaXMuc2lnbnVwRm9ybS5jb250cm9sc1snbGFzdE5hbWUnXTtcclxuICB9XHJcblxyXG4gIGdldCBkb2IoKXtcclxuICAgIHJldHVybiB0aGlzLnNpZ251cEZvcm0uY29udHJvbHNbJ2RvYiddO1xyXG4gIH1cclxuICBcclxuXHJcblxyXG4gIGdlbmVyYXRlT3RwKGlzUmVnaXN0ZXJlZCA6IGJvb2xlYW4pe1xyXG4gICAgaWYoaXNSZWdpc3RlcmVkKXtcclxuICAgICAgdGhpcy51dGlsLnNob3dMb2FkZXIoKTtcclxuICAgICAgdGhpcy5sb2dpblNlcnZpY2VcclxuICAgICAgICAgIC5nZW5lcmF0ZU90cCh0aGlzLnVzZXJJZC52YWx1ZSwgXCJlbWFpbFwiKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVuYWJsZU90cCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlUGFzc3dvcmQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoZXJyID0+IHtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgICB0aGlzLmVuYWJsZU90cCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmVuYWJsZVBhc3N3b3JkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5sb2dpblNlcnZpY2VcclxuICAgICAgICAgIC5nZW5lcmF0ZU90cFVucmVnaXN0ZXJlZCh0aGlzLnNpZ25VcFVzZXJJZC52YWx1ZSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wcmVzZW50UG9wb3ZlcigpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIChlcnIgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBwcmVzZW50UG9wb3ZlcigpIHt9XHJcblxyXG4gIGFzeW5jIHNpZ25Jbigpe1xyXG4gICAgaWYodGhpcy5sb2dpbkZvcm0uaW52YWxpZCB8fCB0aGlzLmxvZ2luVHlwZUZvcm0uaW52YWxpZCl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuaXNMb2dpbkluUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgLy90aGlzLnNob3dQcm9ncmVzc0JhciA9IHRydWU7XHJcbiAgICBsZXQgYXV0aCA6IGFueT0ge307XHJcbiAgICBhdXRoLnVzZXJJZCA9IHRoaXMudXNlcklkLnZhbHVlO1xyXG4gICAgaWYodGhpcy5lbmFibGVPdHApe1xyXG4gICAgICBhdXRoLnBhc3N3b3JkID0gdGhpcy5vdHAudmFsdWU7XHJcbiAgICB9ZWxzZSBpZih0aGlzLmVuYWJsZVBhc3N3b3JkKXtcclxuICAgICAgYXV0aC5wYXNzd29yZCA9IHRoaXMuc2lnbkluUGFzc3dvcmQudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51dGlsXHJcbiAgICAgICAgLnNob3dMb2FkZXIoKVxyXG4gICAgICAgIC50aGVuKFxyXG4gICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2luU2VydmljZS5sb2dpbihhdXRoKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdXNlck1vZGVsIDogVXNlck1vZGVsID0gcmVzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dpblNlcnZpY2Uuc2V0VXNlcih1c2VyTW9kZWwpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodXNlck1vZGVsLmNoYW5nZVB3ZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoJ2NoYW5nZS1wYXNzd29yZCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93UHJvZ3Jlc3NCYXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2dpbkluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dQcm9ncmVzc0JhciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvZ2luSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXYubmF2aWdhdGVSb290KCd3ZWxjb21lJylcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm90cC5zZXRWYWx1ZSgnJyk7XHJcbiAgICAgICAgICAgICAgICBpZighdGhpcy5lbmFibGVPdHApe1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dQcm9ncmVzc0JhciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvZ2luSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICB9XHJcblxyXG4gIHNpZ25VcChvdHApe1xyXG5cclxuICAgIGlmKG90cCA9PSBudWxsIHx8IG90cCA9PSB1bmRlZmluZWQpe1xyXG4gICAgICB0aGlzLnV0aWwuc2hvd0Vycm9yKCdPVFAgVmVyaWZpY2F0aW9uIEZhaWxlZC4gUGxlYXNlIHZlcmlmeSBhZ2Fpbi4nKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgdXNlck1vZGVsIDogVXNlck1vZGVsID0gbmV3IFVzZXJNb2RlbCgpO1xyXG4gICAgdXNlck1vZGVsLmZpcnN0TmFtZSA9IHRoaXMuZmlyc3ROYW1lLnZhbHVlO1xyXG4gICAgdXNlck1vZGVsLm1pZGRsZU5hbWUgPSB0aGlzLm1pZGRsZU5hbWUudmFsdWU7XHJcbiAgICB1c2VyTW9kZWwubGFzdE5hbWUgPSB0aGlzLmxhc3ROYW1lLnZhbHVlO1xyXG4gICAgdXNlck1vZGVsLmRvYiA9IHRoaXMuZG9iLnZhbHVlO1xyXG4gICAgdXNlck1vZGVsLnVzZXJuYW1lID0gdGhpcy5zaWduVXBVc2VySWQudmFsdWU7XHJcbiAgICB1c2VyTW9kZWwucGFzc3dvcmQgPSB0aGlzLnBhc3N3b3JkLnZhbHVlO1xyXG5cclxuICAgIHRoaXMubG9naW5TZXJ2aWNlLnNldFVzZXIodXNlck1vZGVsKTtcclxuICAgIHRoaXMubG9naW5TZXJ2aWNlLnNpZ25VcCh1c2VyTW9kZWwpLnN1YnNjcmliZShcclxuICAgICAgcmVzID0+IHtcclxuICAgICAgICB0aGlzLm9wdCA9ICdzaWduaW4nO1xyXG4gICAgICAgIHRoaXMudXRpbC5zdWNjZXNzKCdZb3UgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkIGluIFJlRW1wbG95TVMuIFBsZWFzZSBsb2dpbiB0byB1c2UgdG8gdGhlIGZlYXR1cmVzIG9mIHRoZSBhcHAuJyk7XHJcbiAgICAgICAgdGhpcy5zaWdudXBGb3JtLnJlc2V0KCk7XHJcbiAgICAgICAgdGhpcy5sb2dpblNlcnZpY2UucmVzZXQoKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyID0+IHtcclxuICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgICAgICAgdGhpcy5sb2dpblNlcnZpY2UucmVzZXQoKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGNoYW5nZUxhbmd1YWdlKGV2ZW50KSB7XHJcbiAgICBjb25zdCBwb3BvdmVyID0gYXdhaXQgdGhpcy5wb3B1cC5jcmVhdGUoe1xyXG4gICAgICBjb21wb25lbnQ6IExhbmd1YWdlUGFnZSxcclxuICAgICAgZXZlbnQ6IGV2ZW50LFxyXG4gICAgICB0cmFuc2x1Y2VudDogdHJ1ZSxcclxuICAgICAgYmFja2Ryb3BEaXNtaXNzOiBmYWxzZSxcclxuICAgICAgY3NzQ2xhc3M6ICdib3R0b20tc2hlZXQtcG9wb3ZlcidcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBhd2FpdCBwb3BvdmVyLnByZXNlbnQoKTtcclxuICB9XHJcblxyXG4gIGluaXRpYXRlRm9yZ290UGFzc3dvcmQoKXtcclxuICAgIGlmKHRoaXMubG9naW5Gb3JtLmludmFsaWQpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnV0aWxcclxuICAgICAgICAuc2hvd0xvYWRlcigpXHJcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2dpblNlcnZpY2VcclxuICAgICAgICAgICAgICAuaW5pdGlhdGVGb3Jnb3RQYXNzd29yZCh0aGlzLnVzZXJJZC52YWx1ZSlcclxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSA9PT0gXCJlc1wiKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnV0aWwuc3VjY2VzcygnU2UgaGEgcmVzdGFibGVjaWRvIHN1IGNvbnRyYXNlw7FhLiBSZWNpYmlyw6EgdW4gY29ycmVvIGVsZWN0csOzbmljbyBjb24gdW5hIGNvbnRyYXNlw7FhIHRlbXBvcmFsIGUgaW5zdHJ1Y2Npb25lcyBwYXJhIGluaWNpYXIgc2VzacOzbi4nKTtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXRpbC5zdWNjZXNzKCdZb3VyIHBhc3N3b3JkIGhhcyBiZWVuIHJlc2V0LiBZb3Ugc2hvdWxkIHJlY2VpdmUgYW4gZW1haWwgd2l0aCBhIHRlbXBvcmFyeSBwYXNzd29yZCBhbmQgbG9naW4gaW5zdHJ1Y3Rpb25zLicpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubG9naW5Gb3JtLnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubG9naW5TZXJ2aWNlLnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubG9naW5Gb3JtRGlyZWN0aXZlLnJlc2V0Rm9ybSgpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudXRpbC5lcnJvckhhbmRsZXIoZXJyKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sb2dpbkZvcm0ucmVzZXQoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sb2dpblNlcnZpY2UucmVzZXQoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sb2dpbkZvcm1EaXJlY3RpdmUucmVzZXRGb3JtKCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGlvbi1jb250ZW50IGNsYXNzPVwiYmFja2dyb3VuZFwiPlxyXG4gIDxwLXRvYXN0IHBvc2l0aW9uPVwidG9wLWNlbnRlclwiID48L3AtdG9hc3Q+XHJcbiAgICA8YXBwLWNvbnRlbnQgW3Nob3dIZWxwXT1cInRydWVcIj5cclxuICAgICAgPGFwcC1wYWdlIHNyYz1cImFzc2V0cy9pY29uL1JlRW1wbG95e3t1dGlsLmdldFN0YXRlKCl9fS5zdmdcIiBbaGlkZUNhcmRdPVwidHJ1ZVwiPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8YXBwLWNhcmQgdGl0bGU9XCJsb2dpbi5jYXJkLnRpdGxlXCI+XHJcbiAgICAgICAgICAgIDxwLWRpYWxvZyBoZWFkZXI9XCJNZXNzYWdlXCIgWyh2aXNpYmxlKV09XCJkaXNwbGF5RGlhbG9nXCIgbW9kYWw9XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgTWF5YmUgeW91IGZvcmdvdCB5b3VyIFVzZXIgSUQsIGEgQ3VzdG9tZXIgU2VydmljZSBSZXByZXNlbnRhdGl2ZSBpcyBhdmFpbGFibGUgdG8gYXNzaXN0IHlvdSBNb25kYXkgdGhyb3VnaCBGcmlkYXkgZnJvbSA4IEFNIHRvIDUgUE0uICBpZiB3ZWF0aGVyIHBlcm1pdHNcclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNNUygpXCI+XHJcbiAgICAgICAgICAgICAgICA8YnIvPi0gRW1wbG95ZXJzIG1heSBjYWxsIDYwMS0zMjEtNjMzNCBcclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNNRSgpXCI+XHJcbiAgICAgICAgICAgICAgICA8YnIvPi0gRW1wbG95ZXJzIG1heSBjYWxsIDIwNy02MjEtNTEyMFxyXG4gICAgICAgICAgICAgICAgPGJyLz4tIENsYWltYW50cyBtYXkgY2FsbCAxLTgwMC01OTMtNzY2MC5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8YnIvPlxyXG4gICAgICAgICAgICAgIDxwLWZvb3Rlcj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwiZGlzcGxheURpYWxvZyA9ICFkaXNwbGF5RGlhbG9nXCIgY29sb3I9XCJzdWNjZXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJjbG9zZS1zaGFycFwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgQ2xvc2VcclxuICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9wLWZvb3Rlcj5cclxuICAgICAgICAgIDwvcC1kaWFsb2c+XHJcbiAgICAgICAgICAgIDxtYXQtaG9yaXpvbnRhbC1zdGVwcGVyIFtsaW5lYXJdPVwidHJ1ZVwiICNzdGVwcGVyPlxyXG4gICAgICAgICAgICAgIDxtYXQtc3RlcCBbc3RlcENvbnRyb2xdPVwibG9naW5Gb3JtXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8YXBwLW1zZyBrZXk9XCJsb2dpbi5jYXJkLnN0ZXAxXCI+PC9hcHAtbXNnPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwibG9naW5Gb3JtXCIgI2xvZ2luRm9ybURpcmVjdGl2ZT1cIm5nRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW9uLXJvdyBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImlvbi1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgam95cmlkZVN0ZXA9XCJzdGVwMVwiIHRpdGxlPVwie3snZ3VpZGUubG9naW4udXNlcmlkLnRpdGxlJyB8IHRyYW5zbGF0ZX19XCIgXHJcbiAgICAgICAgICAgICAgICAgIHRleHQ9XCJ7eydndWlkZS5sb2dpbi51c2VyaWQubWVzc2FnZScgfCB0cmFuc2xhdGV9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLWFsaWduLXNlbGYtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW9uLWp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWZsb2F0LWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwidXNlcklkXCIgaWQ9XCJ1c2VySWRcIiBpbmxlbmd0aD1cIjVcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBhcHBBdXRvZm9jdXM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImZsb2F0LWlucHV0XCI+VXNlciBJRDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1lcnJvciBbZmllbGRdPSd1c2VySWQnIFtmb3JtXT1cImxvZ2luVHlwZUZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ1VzZXIgSUQgaXMgcmVxdWlyZWQuJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbmxlbmd0aDogJ1VzZXIgSUQgc2hvdWxkIGhhdmUgbWluaW11bSA1IGNoYXJhY3RlcnMuJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgIDxpb24tcm93IGNsYXNzPVwianVzdGlmeS1jb250ZW50LWNlbnRlclwiIGpveXJpZGVTdGVwPVwic3RlcDJcIiB0aXRsZT1cInt7J2d1aWRlLmxvZ2luLm9wdGlvbnMudGl0bGUnIHwgdHJhbnNsYXRlfX1cIiBcclxuICAgICAgICAgICAgICAgICAgdGV4dD1cInt7J2d1aWRlLmxvZ2luLm9wdGlvbnMubWVzc2FnZScgfCB0cmFuc2xhdGV9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIHR5cGU9XCJzdWJtaXRcIiBleHBhbmQ9XCJibG9ja1wiIChjbGljayk9XCJlbmFibGVQYXNzd29yZEZpZWxkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInN1Y2Nlc3NcIiBwVG9vbHRpcD1cIkxvZ2luIHdpdGggcGFzc3dvcmRcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBqb3lyaWRlU3RlcD1cInN0ZXAzXCIgdGl0bGU9XCJ7eydndWlkZS5sb2dpbi5wYXNzd29yZC50aXRsZScgfCB0cmFuc2xhdGV9fVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9XCJ7eydndWlkZS5sb2dpbi5wYXNzd29yZC5tZXNzYWdlJyB8IHRyYW5zbGF0ZX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBuYW1lPVwibG9nLWluLW91dGxpbmVcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBQYXNzd29yZFxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiB0eXBlPVwic3VibWl0XCIgZXhwYW5kPVwiYmxvY2tcIiBleHBhbmQ9XCJibG9ja1wiIChjbGljayk9XCJlbmFibGVPdHBGaWVsZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJzdWNjZXNzXCIgcFRvb2x0aXA9XCJMb2dpbiB3aXRoIGF1dGhjb2RlXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGpveXJpZGVTdGVwPVwic3RlcDRcIiB0aXRsZT1cInt7J2d1aWRlLmxvZ2luLmF1dGhjb2RlLnRpdGxlJyB8IHRyYW5zbGF0ZX19XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1cInt7J2d1aWRlLmxvZ2luLmF1dGhjb2RlLm1lc3NhZ2UnIHwgdHJhbnNsYXRlfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJsb2ctaW4tb3V0bGluZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhjb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgIDxpb24tcm93IGNsYXNzPVwianVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBqb3lyaWRlU3RlcD1cInN0ZXA1XCIgdGl0bGU9XCJGb3Jnb3QgVXNlciBJRD9cIiBcclxuICAgICAgICAgICAgICAgICAgICAgIHRleHQ9XCJQcm92aWRlcyBhc3Npc3RhbmNlIGlmIHlvdSBmb3JnZXQgeW91ciBVc2VyIElEIHRvIGxvZ2luXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgc2hhcGU9XCJyb3VuZFwiIHR5cGU9XCJzdWJtaXRcIiBleHBhbmQ9XCJvdXRsaW5lXCIgY29sb3I9XCJzdWNjZXNzXCIgcFRvb2x0aXA9XCJGb3Jnb3QgVXNlciBJRD9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwic2hvd0RpYWxvZygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEZvcmdvdCBVc2VyIElEP1xyXG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICBqb3lyaWRlU3RlcD1cInN0ZXA2XCIgdGl0bGU9XCJGb3Jnb3QgcGFzc3dvcmQ/XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1cIlByb3ZpZGVzIGFzc2lzdGFuY2UgdG8gcmVzZXQgeW91ciBwYXNzd29yZCB1c2luZyB5b3VyIHJlZ2lzdGVyZWQgZW1haWwgYWRkcmVzc1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgc2hhcGU9XCJyb3VuZFwiIHR5cGU9XCJzdWJtaXRcIiBleHBhbmQ9XCJvdXRsaW5lXCIgY29sb3I9XCJzdWNjZXNzXCIgcFRvb2x0aXA9XCJGb3Jnb3QgUGFzc3dvcmQ/XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cImluaXRpYXRlRm9yZ290UGFzc3dvcmQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBGb3Jnb3QgUGFzc3dvcmQ/XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgPC9tYXQtc3RlcD5cclxuICAgICAgICAgICAgICA8bWF0LXN0ZXA+XHJcbiAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImxvZ2luVHlwZUZvcm1cIiAjbG9naW5UeXBlRm9ybURpcmVjdGl2ZT1cIm5nRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtbXNnIGtleT1cImxvZ2luLmNhcmQuc3RlcDJcIj48L2FwcC1tc2c+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIDxpb24tZ3JpZCBjbGFzcz1cImlvbi1wYWRkaW5nLXRvcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tcm93IGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwiaW9uLWp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLWFsaWduLXNlbGYtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpb24tanVzdGlmeS1jb250ZW50LWNlbnRlclwiIChjYXBzTG9jayk9XCJjYXBzT249JGV2ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImlvbi1wYWRkaW5nLXJpZ2h0XCI+VXNlciBJRDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJpb24tcGFkZGluZy1sZWZ0XCIgc3R5bGU9XCJmbG9hdDogcmlnaHQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLW1hc2sgW3ZhbHVlXT1cInVzZXJJZC52YWx1ZSAgKyAnJ1wiICpuZ0lmPVwidXNlcklkLnZhbHVlXCI+PC9hcHAtbWFzaz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz48YnIgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVuYWJsZU90cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWZsb2F0LWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXBhc3N3b3JkIFtmb3JtQ29udHJvbF09XCJvdHBcIiBpbnB1dElkPVwic2lnbkluUGFzc3dvcmRcIiBbdG9nZ2xlTWFza109J3RydWUnIFtmZWVkYmFja109J2ZhbHNlJz48L3AtcGFzc3dvcmQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJmbG9hdC1pbnB1dFwiPkF1dGhjb2RlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2ZpZWxkXT0nb3RwJyBbZm9ybV09XCJsb2dpblR5cGVGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnQXV0aGNvZGUgaXMgcmVxdWlyZWQuJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5sZW5ndGg6ICdBdXRoY29kZSBzaG91bGQgaGF2ZSBtaW5pbXVtIDYgY2hhcmFjdGVycy4nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVuYWJsZVBhc3N3b3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtZmxvYXQtbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtcGFzc3dvcmQgW2Zvcm1Db250cm9sXT1cInNpZ25JblBhc3N3b3JkXCIgaW5wdXRJZD1cInNpZ25JblBhc3N3b3JkXCIgW3RvZ2dsZU1hc2tdPSd0cnVlJyBbZmVlZGJhY2tdPSdmYWxzZSc+PC9wLXBhc3N3b3JkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZmxvYXQtaW5wdXRcIj5QYXNzd29yZDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtmaWVsZF09J3NpZ25JblBhc3N3b3JkJyBbZm9ybV09XCJsb2dpblR5cGVGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnUGFzc3dvcmQgaXMgcmVxdWlyZWQuJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwiY2Fwc09uXCIgc3R5bGU9XCJjb2xvcjojYjM0MTFkO1wiPjxzdHJvbmc+Q2FwcyBMb2NrIGlzIE9uPC9zdHJvbmc+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpb24tanVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tZ3JpZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tcm93IGNsYXNzPVwianVzdGlmeS1jb250ZW50LWNlbnRlclwiIFtoaWRkZW5dPVwiIWVuYWJsZVNpZ25pblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgdHlwZT1cInN1Ym1pdFwiIGV4cGFuZD1cImJsb2NrXCIgKGNsaWNrKT1cInNpZ25JbigpXCIgY29sb3I9XCJzdWNjZXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgbmFtZT1cImxvZy1pbi1vdXRsaW5lXCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ24gSW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIHR5cGU9XCJyZXNldFwiIGV4cGFuZD1cImJsb2NrXCIgZXhwYW5kPVwiYmxvY2tcIiAoY2xpY2spPVwicmVzZXQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cIm1lZGl1bVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJyZWZyZXNoXCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc2V0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tZ3JpZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWdyaWQgKm5nSWY9XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1yb3cgY2xhc3M9XCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIiNcIj5Gb3Jnb3QgdXNlciBJRD88L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiI1wiPkZvcmdvdCBQYXNzd29yZD88L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1ncmlkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgPC9tYXQtc3RlcD5cclxuICAgICAgICAgICAgPC9tYXQtaG9yaXpvbnRhbC1zdGVwcGVyPlxyXG4gIFxyXG4gICAgICAgICAgPC9hcHAtY2FyZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJnLXNpZ25pbjJcIiBkYXRhLXdpZHRoPVwiMzAwXCIgZGF0YS1oZWlnaHQ9XCIyMDBcIiBkYXRhLWxvbmd0aXRsZT1cInRydWVcIj48L2Rpdj4gLS0+XHJcbiAgICAgIDwvYXBwLXBhZ2U+XHJcbiAgICA8L2FwcC1jb250ZW50PlxyXG4gIDwvaW9uLWNvbnRlbnQ+XHJcblxyXG5cclxuXHJcbiJdfQ==
|
|
533
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9wYWdlcy9jb21tb24vbG9naW4vbG9naW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9wYWdlcy9jb21tb24vbG9naW4vbG9naW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQTZELE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBc0IsVUFBVSxFQUE2RCxNQUFNLGdCQUFnQixDQUFDO0FBSTNILE9BQU8sRUFBRSxRQUFRLEVBQTJCLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNEdkQsMkJBQW9CO0lBQ2xCLHFCQUFLO0lBQUEsa0RBQ1A7SUFBQSxpQkFBTTs7O0lBQ04sMkJBQW9CO0lBQ2xCLHFCQUFLO0lBQUEsa0RBQ0w7SUFBQSxxQkFBSztJQUFBLHFEQUNQO0lBQUEsaUJBQU07OztJQWNGLDhCQUEwQzs7O0lBK0R4Qyw4QkFBMEM7OztJQVFsQywrQkFBdUU7OztJQUE3RCxnREFBNEI7Ozs7SUFJeEMsMkJBQXVCLGVBQUE7SUFFbkIsaUNBQTZHO0lBQzdHLGlDQUF5QjtJQUFBLHdCQUFRO0lBQUEsaUJBQVEsRUFBQTtJQUUzQyxnQ0FHaUI7SUFDbkIsaUJBQU07Ozs7SUFQVSxlQUFtQjtJQUFuQix3Q0FBbUIsb0JBQUEsbUJBQUE7SUFHdEIsZUFBYTtJQUFiLGtDQUFhLGFBQUEsc0NBQUE7Ozs7SUFNMUIs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LFNBQVM7bUJBQUMsVUFBVSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtZQUVoQixPQUFPO2tCQUE1QixTQUFTO21CQUFDLFNBQVM7WUFFdUMsa0JBQWtCO2tCQUE1RSxTQUFTO21CQUFDLG9CQUFvQixFQUFFLEVBQUMsTUFBTSxFQUFHLEtBQUssRUFBQztZQUVjLHNCQUFzQjtrQkFBcEYsU0FBUzttQkFBQyx3QkFBd0IsRUFBRSxFQUFDLE1BQU0sRUFBRyxLQUFLLEVBQUM7O2tGQWQxQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgRGlyZWN0aXZlLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVmFsaWRhdG9ycywgVW50eXBlZEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cERpcmVjdGl2ZSwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBQb3BvdmVyQ29udHJvbGxlciwgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuaW1wb3J0IHtNYXRTdGVwcGVyfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zdGVwcGVyJztcclxuaW1wb3J0IHsgQmFzZVBhZ2UsIEN1c3RvbUVycm9yU3RhdGVNYXRjaGVyIH0gZnJvbSAnLi4vLi4vQmFzZVBhZ2UnO1xyXG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sb2dpbi9sb2dpbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9Vc2VyTW9kZWwnO1xyXG5pbXBvcnQgeyBMYW5ndWFnZVBhZ2UgfSBmcm9tICcuLi8uLi9wb3BvdmVycy9sYW5ndWFnZS9sYW5ndWFnZS5wYWdlJztcclxuaW1wb3J0IHsgTGliQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL0xpYkNvbnN0YW50cyc7XHJcbmltcG9ydCB7IENhcHRjaGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2FwdGNoYS9jYXB0Y2hhLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtbG9naW4nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2dpbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbG9naW4uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9naW5Db21wb25lbnQgZXh0ZW5kcyBCYXNlUGFnZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHByaXZhdGUgTE9HSU5fQVVUSF9DT0RFX0FDVElPTl9OQU1FID0gXCJMT0dJTl9BVVRIX0NPREVcIjtcclxuXHJcbiAgcHVibGljIGNhcHNPbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgZGlzcGxheURpYWxvZyA9IGZhbHNlO1xyXG5cclxuICBAVmlld0NoaWxkKCdsb2dpblJlZicsIHtzdGF0aWM6IHRydWUgfSkgbG9naW5FbGVtZW50OiBFbGVtZW50UmVmO1xyXG5cclxuICBAVmlld0NoaWxkKCdzdGVwcGVyJykgc3RlcHBlcjogTWF0U3RlcHBlcjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbG9naW5Gb3JtRGlyZWN0aXZlJywge3N0YXRpYyA6IGZhbHNlfSkgcHJpdmF0ZSBsb2dpbkZvcm1EaXJlY3RpdmU6IE5nRm9ybTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbG9naW5UeXBlRm9ybURpcmVjdGl2ZScsIHtzdGF0aWMgOiBmYWxzZX0pIHByaXZhdGUgbG9naW5UeXBlRm9ybURpcmVjdGl2ZTogTmdGb3JtO1xyXG5cclxuICBhdXRoMjogYW55O1xyXG4gIHByaXZhdGUgbG9naW5FcnJvclN0cmluZzogc3RyaW5nO1xyXG4gIHB1YmxpYyBvcHQ6IHN0cmluZyA9ICdzaWduaW4nO1xyXG4gIHB1YmxpYyBsb2dpbkZvcm0gOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG4gIHB1YmxpYyBsb2dpblR5cGVGb3JtIDogVW50eXBlZEZvcm1Hcm91cDtcclxuICBwdWJsaWMgc2lnbnVwRm9ybSA6IFVudHlwZWRGb3JtR3JvdXA7XHJcbiAgcHVibGljIGVuYWJsZU90cCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgZW5hYmxlUGFzc3dvcmQgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGVuYWJsZVNpZ25pbiA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgaXNMb2dpbkluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICBwdWJsaWMgZmFxID0gJ3B1YSc7XHJcbiAgcHVibGljIHNob3dQcm9ncmVzc0JhciA9IGZhbHNlO1xyXG4gIHB1YmxpYyBoaWRlUGFzc3dvcmQgPSB0cnVlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZmIgOiBVbnR5cGVkRm9ybUJ1aWxkZXIsIHB1YmxpYyBsb2dpblNlcnZpY2UgOiBMb2dpblNlcnZpY2UsIHB1YmxpYyByb3V0ZXIgOiBSb3V0ZXIsIHB1YmxpYyB1dGlsIDogVXRpbFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHVibGljIHBvcHVwOiBQb3BvdmVyQ29udHJvbGxlciwgcHJpdmF0ZSBuYXY6IE5hdkNvbnRyb2xsZXIsIHByaXZhdGUgY3M6IENhcHRjaGFTZXJ2aWNlKSB7IFxyXG4gICAgICAgICAgICAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0RpYWxvZygpIHtcclxuICAgIHRoaXMuZGlzcGxheURpYWxvZyA9IHRydWU7XHJcbiAgfVxyXG4gIFxyXG4gIGlvblZpZXdEaWRFbnRlcigpe1xyXG4gICAgdGhpcy5yZXNldCgpO1xyXG4gIH1cclxuXHJcbiAgZW5hYmxlT3RwRmllbGQoKXtcclxuICAgIGlmKHRoaXMubG9naW5Gb3JtLmludmFsaWQpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51dGlsXHJcbiAgICAgICAgLnNob3dMb2FkZXIoKVxyXG4gICAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY3MuZ2VuZXJhdGVDYXB0Y2hhVG9rZW4odGhpcy5MT0dJTl9BVVRIX0NPREVfQUNUSU9OX05BTUUpXHJcbiAgICAgICAgLnN1YnNjcmliZSgodG9rZW46IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jcy5zZXRJbnZpc2liZWxDYXB0Y2hhKHRva2VuKTtcclxuICAgICAgICAgIHRoaXMubG9naW5TZXJ2aWNlXHJcbiAgICAgICAgICAgICAgLmdlbmVyYXRlT3RwKHRoaXMudXNlcklkLnZhbHVlLCBcImVtYWlsXCIpXHJcbiAgICAgICAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYoIXRoaXMuZW5hYmxlT3RwKXtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zdGVwcGVyLm5leHQoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5lbmFibGVQYXNzd29yZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZVNpZ25pbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMub3RwLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxWYWxpZGF0b3JzLm1pbkxlbmd0aCg2KSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNildKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnNpZ25JblBhc3N3b3JkKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5lbmFibGVPdHAgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy51dGlsLnNob3dFcnJvcignQ2FwdGNoYSB2ZXJpZmljYXRpb24gZmFpbGVkLiBQbGVhc2UgcmV0cnkuJyk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICB9XHJcblxyXG4gIGVuYWJsZVBhc3N3b3JkRmllbGQoKXtcclxuICAgIGlmKHRoaXMubG9naW5Gb3JtLmludmFsaWQpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZighdGhpcy5lbmFibGVQYXNzd29yZCl7XHJcbiAgICAgIHRoaXMuZW5hYmxlT3RwID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZW5hYmxlUGFzc3dvcmQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVuYWJsZVNpZ25pbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuc3RlcHBlci5uZXh0KCk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5vdHApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXQoKXtcclxuICAgIHRoaXMuZW5hYmxlT3RwID0gZmFsc2U7XHJcbiAgICB0aGlzLmVuYWJsZVBhc3N3b3JkID0gZmFsc2U7XHJcbiAgICB0aGlzLmVuYWJsZVNpZ25pbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaWduSW5QYXNzd29yZC5yZXNldCgpO1xyXG4gICAgdGhpcy5zaG93UHJvZ3Jlc3NCYXIgPSBmYWxzZTtcclxuICAgIHRoaXMuc3RlcHBlci5yZXNldCgpO1xyXG4gICAgdGhpcy5vdHAucmVzZXQoKTtcclxuICAgIHRoaXMubG9naW5UeXBlRm9ybS5yZXNldCgpO1xyXG4gICAgdGhpcy5sb2dpbkZvcm0ucmVzZXQoKTtcclxuICAgIHRoaXMubG9naW5Gb3JtRGlyZWN0aXZlLnJlc2V0Rm9ybSgpO1xyXG4gICAgdGhpcy5sb2dpblR5cGVGb3JtRGlyZWN0aXZlLnJlc2V0Rm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmluaXRpbGl6ZUxvZ2luRm9ybSgpO1xyXG4gIH1cclxuICBcclxuICBpbml0aWxpemVMb2dpbkZvcm0oKXtcclxuICAgIHRoaXMubG9naW5Gb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICd1c2VySWQnIDogWycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zaWdudXBGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICdzaWduVXBVc2VySWQnIDogWycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAncGFzc3dvcmQnIDogWycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAnZmlyc3ROYW1lJyA6IFsnJyxWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgJ21pZGRsZU5hbWUnIDogWycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAnbGFzdE5hbWUnIDogWycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAnZG9iJyA6IFsnJyxWYWxpZGF0b3JzLnJlcXVpcmVkXVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5sb2dpblR5cGVGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICdvdHAnIDogWycnXSxcclxuICAgICAgJ3NpZ25JblBhc3N3b3JkJyA6IFsnJ10sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBnZXQgc2lnbkluUGFzc3dvcmQoKXtcclxuICAgIHJldHVybiB0aGlzLmxvZ2luVHlwZUZvcm0uY29udHJvbHNbJ3NpZ25JblBhc3N3b3JkJ107XHJcbiAgfVxyXG5cclxuICBnZXQgdXNlcklkKCl7XHJcbiAgICByZXR1cm4gdGhpcy5sb2dpbkZvcm0uY29udHJvbHNbJ3VzZXJJZCddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG90cCgpe1xyXG4gICAgcmV0dXJuIHRoaXMubG9naW5UeXBlRm9ybS5jb250cm9sc1snb3RwJ107XHJcbiAgfVxyXG5cclxuICBnZXQgc2lnblVwVXNlcklkKCl7XHJcbiAgICByZXR1cm4gdGhpcy5zaWdudXBGb3JtLmNvbnRyb2xzWydzaWduVXBVc2VySWQnXTtcclxuICB9XHJcblxyXG4gIGdldCBwYXNzd29yZCgpe1xyXG4gICAgcmV0dXJuIHRoaXMuc2lnbnVwRm9ybS5jb250cm9sc1sncGFzc3dvcmQnXTtcclxuICB9XHJcblxyXG4gIGdldCBmaXJzdE5hbWUoKXtcclxuICAgIHJldHVybiB0aGlzLnNpZ251cEZvcm0uY29udHJvbHNbJ2ZpcnN0TmFtZSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1pZGRsZU5hbWUoKXtcclxuICAgIHJldHVybiB0aGlzLnNpZ251cEZvcm0uY29udHJvbHNbJ21pZGRsZU5hbWUnXTtcclxuICB9XHJcblxyXG4gIGdldCBsYXN0TmFtZSgpe1xyXG4gICAgcmV0dXJuIHRoaXMuc2lnbnVwRm9ybS5jb250cm9sc1snbGFzdE5hbWUnXTtcclxuICB9XHJcblxyXG4gIGdldCBkb2IoKXtcclxuICAgIHJldHVybiB0aGlzLnNpZ251cEZvcm0uY29udHJvbHNbJ2RvYiddO1xyXG4gIH1cclxuICBcclxuXHJcblxyXG4gIGdlbmVyYXRlT3RwKGlzUmVnaXN0ZXJlZCA6IGJvb2xlYW4pe1xyXG4gICAgaWYoaXNSZWdpc3RlcmVkKXtcclxuICAgICAgdGhpcy51dGlsLnNob3dMb2FkZXIoKTtcclxuICAgICAgdGhpcy5sb2dpblNlcnZpY2VcclxuICAgICAgICAgIC5nZW5lcmF0ZU90cCh0aGlzLnVzZXJJZC52YWx1ZSwgXCJlbWFpbFwiKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVuYWJsZU90cCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlUGFzc3dvcmQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoZXJyID0+IHtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgICB0aGlzLmVuYWJsZU90cCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmVuYWJsZVBhc3N3b3JkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5sb2dpblNlcnZpY2VcclxuICAgICAgICAgIC5nZW5lcmF0ZU90cFVucmVnaXN0ZXJlZCh0aGlzLnNpZ25VcFVzZXJJZC52YWx1ZSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wcmVzZW50UG9wb3ZlcigpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIChlcnIgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBwcmVzZW50UG9wb3ZlcigpIHt9XHJcblxyXG4gIGFzeW5jIHNpZ25Jbigpe1xyXG4gICAgaWYodGhpcy5sb2dpbkZvcm0uaW52YWxpZCB8fCB0aGlzLmxvZ2luVHlwZUZvcm0uaW52YWxpZCl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5pc0xvZ2luSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICAvL3RoaXMuc2hvd1Byb2dyZXNzQmFyID0gdHJ1ZTtcclxuICAgIGxldCBhdXRoIDogYW55PSB7fTtcclxuICAgIGF1dGgudXNlcklkID0gdGhpcy51c2VySWQudmFsdWU7XHJcbiAgICBpZih0aGlzLmVuYWJsZU90cCl7XHJcbiAgICAgIGF1dGgucGFzc3dvcmQgPSB0aGlzLm90cC52YWx1ZTtcclxuICAgIH1lbHNlIGlmKHRoaXMuZW5hYmxlUGFzc3dvcmQpe1xyXG4gICAgICBhdXRoLnBhc3N3b3JkID0gdGhpcy5zaWduSW5QYXNzd29yZC52YWx1ZTtcclxuICAgIH1cclxuICAgIFxyXG5cclxuICAgIHRoaXMudXRpbFxyXG4gICAgICAgIC5zaG93TG9hZGVyKClcclxuICAgICAgICAudGhlbihcclxuICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2dpblNlcnZpY2UubG9naW4oYXV0aClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IHVzZXJNb2RlbCA6IFVzZXJNb2RlbCA9IHJlcztcclxuICAgICAgICAgICAgICAgIHVzZXJNb2RlbC5sYW5ndWFnZT1sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxhbmd1YWdlXCIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dpblNlcnZpY2Uuc2V0VXNlcih1c2VyTW9kZWwpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodXNlck1vZGVsLmNoYW5nZVB3ZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoJ2NoYW5nZS1wYXNzd29yZCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93UHJvZ3Jlc3NCYXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2dpbkluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dQcm9ncmVzc0JhciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvZ2luSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXYubmF2aWdhdGVSb290KCd3ZWxjb21lJylcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm90cC5zZXRWYWx1ZSgnJyk7XHJcbiAgICAgICAgICAgICAgICBpZighdGhpcy5lbmFibGVPdHApe1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dQcm9ncmVzc0JhciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvZ2luSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICB9XHJcblxyXG4gIHNpZ25VcChvdHApe1xyXG5cclxuICAgIGlmKG90cCA9PSBudWxsIHx8IG90cCA9PSB1bmRlZmluZWQpe1xyXG4gICAgICB0aGlzLnV0aWwuc2hvd0Vycm9yKCdPVFAgVmVyaWZpY2F0aW9uIEZhaWxlZC4gUGxlYXNlIHZlcmlmeSBhZ2Fpbi4nKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgdXNlck1vZGVsIDogVXNlck1vZGVsID0gbmV3IFVzZXJNb2RlbCgpO1xyXG4gICAgdXNlck1vZGVsLmZpcnN0TmFtZSA9IHRoaXMuZmlyc3ROYW1lLnZhbHVlO1xyXG4gICAgdXNlck1vZGVsLm1pZGRsZU5hbWUgPSB0aGlzLm1pZGRsZU5hbWUudmFsdWU7XHJcbiAgICB1c2VyTW9kZWwubGFzdE5hbWUgPSB0aGlzLmxhc3ROYW1lLnZhbHVlO1xyXG4gICAgdXNlck1vZGVsLmRvYiA9IHRoaXMuZG9iLnZhbHVlO1xyXG4gICAgdXNlck1vZGVsLnVzZXJuYW1lID0gdGhpcy5zaWduVXBVc2VySWQudmFsdWU7XHJcbiAgICB1c2VyTW9kZWwucGFzc3dvcmQgPSB0aGlzLnBhc3N3b3JkLnZhbHVlO1xyXG4gICAgIHVzZXJNb2RlbC5sYW5ndWFnZT1sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxhbmd1YWdlXCIpO1xyXG5cclxuICAgIHRoaXMubG9naW5TZXJ2aWNlLnNldFVzZXIodXNlck1vZGVsKTtcclxuICAgIHRoaXMubG9naW5TZXJ2aWNlLnNpZ25VcCh1c2VyTW9kZWwpLnN1YnNjcmliZShcclxuICAgICAgcmVzID0+IHtcclxuICAgICAgICB0aGlzLm9wdCA9ICdzaWduaW4nO1xyXG4gICAgICAgIHRoaXMudXRpbC5zdWNjZXNzKCdZb3UgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkIGluIFJlRW1wbG95TVMuIFBsZWFzZSBsb2dpbiB0byB1c2UgdG8gdGhlIGZlYXR1cmVzIG9mIHRoZSBhcHAuJyk7XHJcbiAgICAgICAgdGhpcy5zaWdudXBGb3JtLnJlc2V0KCk7XHJcbiAgICAgICAgdGhpcy5sb2dpblNlcnZpY2UucmVzZXQoKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyID0+IHtcclxuICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgICAgICAgdGhpcy5sb2dpblNlcnZpY2UucmVzZXQoKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGNoYW5nZUxhbmd1YWdlKGV2ZW50KSB7XHJcbiAgICBjb25zdCBwb3BvdmVyID0gYXdhaXQgdGhpcy5wb3B1cC5jcmVhdGUoe1xyXG4gICAgICBjb21wb25lbnQ6IExhbmd1YWdlUGFnZSxcclxuICAgICAgZXZlbnQ6IGV2ZW50LFxyXG4gICAgICB0cmFuc2x1Y2VudDogdHJ1ZSxcclxuICAgICAgYmFja2Ryb3BEaXNtaXNzOiBmYWxzZSxcclxuICAgICAgY3NzQ2xhc3M6ICdib3R0b20tc2hlZXQtcG9wb3ZlcidcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBhd2FpdCBwb3BvdmVyLnByZXNlbnQoKTtcclxuICB9XHJcblxyXG4gIGluaXRpYXRlRm9yZ290UGFzc3dvcmQoKXtcclxuICAgIGlmKHRoaXMubG9naW5Gb3JtLmludmFsaWQpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnV0aWxcclxuICAgICAgICAuc2hvd0xvYWRlcigpXHJcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2dpblNlcnZpY2VcclxuICAgICAgICAgICAgICAuaW5pdGlhdGVGb3Jnb3RQYXNzd29yZCh0aGlzLnVzZXJJZC52YWx1ZSlcclxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSA9PT0gXCJlc1wiKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnV0aWwuc3VjY2VzcygnU2UgaGEgcmVzdGFibGVjaWRvIHN1IGNvbnRyYXNlw7FhLiBSZWNpYmlyw6EgdW4gY29ycmVvIGVsZWN0csOzbmljbyBjb24gdW5hIGNvbnRyYXNlw7FhIHRlbXBvcmFsIGUgaW5zdHJ1Y2Npb25lcyBwYXJhIGluaWNpYXIgc2VzacOzbi4nKTtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXRpbC5zdWNjZXNzKCdZb3VyIHBhc3N3b3JkIGhhcyBiZWVuIHJlc2V0LiBZb3Ugc2hvdWxkIHJlY2VpdmUgYW4gZW1haWwgd2l0aCBhIHRlbXBvcmFyeSBwYXNzd29yZCBhbmQgbG9naW4gaW5zdHJ1Y3Rpb25zLicpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubG9naW5Gb3JtLnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubG9naW5TZXJ2aWNlLnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubG9naW5Gb3JtRGlyZWN0aXZlLnJlc2V0Rm9ybSgpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudXRpbC5lcnJvckhhbmRsZXIoZXJyKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sb2dpbkZvcm0ucmVzZXQoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sb2dpblNlcnZpY2UucmVzZXQoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sb2dpbkZvcm1EaXJlY3RpdmUucmVzZXRGb3JtKCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGlvbi1jb250ZW50IGNsYXNzPVwiYmFja2dyb3VuZFwiPlxyXG4gIDxwLXRvYXN0IHBvc2l0aW9uPVwidG9wLWNlbnRlclwiID48L3AtdG9hc3Q+XHJcbiAgICA8YXBwLWNvbnRlbnQgW3Nob3dIZWxwXT1cInRydWVcIj5cclxuICAgICAgPGFwcC1wYWdlIHNyYz1cImFzc2V0cy9pY29uL1JlRW1wbG95e3t1dGlsLmdldFN0YXRlKCl9fS5zdmdcIiBbaGlkZUNhcmRdPVwidHJ1ZVwiPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8YXBwLWNhcmQgdGl0bGU9XCJsb2dpbi5jYXJkLnRpdGxlXCI+XHJcbiAgICAgICAgICAgIDxwLWRpYWxvZyBoZWFkZXI9XCJNZXNzYWdlXCIgWyh2aXNpYmxlKV09XCJkaXNwbGF5RGlhbG9nXCIgbW9kYWw9XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgTWF5YmUgeW91IGZvcmdvdCB5b3VyIFVzZXIgSUQsIGEgQ3VzdG9tZXIgU2VydmljZSBSZXByZXNlbnRhdGl2ZSBpcyBhdmFpbGFibGUgdG8gYXNzaXN0IHlvdSBNb25kYXkgdGhyb3VnaCBGcmlkYXkgZnJvbSA4IEFNIHRvIDUgUE0uICBpZiB3ZWF0aGVyIHBlcm1pdHNcclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNNUygpXCI+XHJcbiAgICAgICAgICAgICAgICA8YnIvPi0gRW1wbG95ZXJzIG1heSBjYWxsIDYwMS0zMjEtNjMzNCBcclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNNRSgpXCI+XHJcbiAgICAgICAgICAgICAgICA8YnIvPi0gRW1wbG95ZXJzIG1heSBjYWxsIDIwNy02MjEtNTEyMFxyXG4gICAgICAgICAgICAgICAgPGJyLz4tIENsYWltYW50cyBtYXkgY2FsbCAxLTgwMC01OTMtNzY2MC5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8YnIvPlxyXG4gICAgICAgICAgICAgIDxwLWZvb3Rlcj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwiZGlzcGxheURpYWxvZyA9ICFkaXNwbGF5RGlhbG9nXCIgY29sb3I9XCJzdWNjZXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJjbG9zZS1zaGFycFwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgQ2xvc2VcclxuICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9wLWZvb3Rlcj5cclxuICAgICAgICAgIDwvcC1kaWFsb2c+XHJcbiAgICAgICAgICAgIDxtYXQtaG9yaXpvbnRhbC1zdGVwcGVyIFtsaW5lYXJdPVwidHJ1ZVwiICNzdGVwcGVyPlxyXG4gICAgICAgICAgICAgIDxtYXQtc3RlcCBbc3RlcENvbnRyb2xdPVwibG9naW5Gb3JtXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8YXBwLW1zZyBrZXk9XCJsb2dpbi5jYXJkLnN0ZXAxXCI+PC9hcHAtbXNnPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwibG9naW5Gb3JtXCIgI2xvZ2luRm9ybURpcmVjdGl2ZT1cIm5nRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW9uLXJvdyBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImlvbi1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgam95cmlkZVN0ZXA9XCJzdGVwMVwiIHRpdGxlPVwie3snZ3VpZGUubG9naW4udXNlcmlkLnRpdGxlJyB8IHRyYW5zbGF0ZX19XCIgXHJcbiAgICAgICAgICAgICAgICAgIHRleHQ9XCJ7eydndWlkZS5sb2dpbi51c2VyaWQubWVzc2FnZScgfCB0cmFuc2xhdGV9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLWFsaWduLXNlbGYtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW9uLWp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWZsb2F0LWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwidXNlcklkXCIgaWQ9XCJ1c2VySWRcIiBpbmxlbmd0aD1cIjVcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBhcHBBdXRvZm9jdXM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImZsb2F0LWlucHV0XCI+VXNlciBJRDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1lcnJvciBbZmllbGRdPSd1c2VySWQnIFtmb3JtXT1cImxvZ2luVHlwZUZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ1VzZXIgSUQgaXMgcmVxdWlyZWQuJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbmxlbmd0aDogJ1VzZXIgSUQgc2hvdWxkIGhhdmUgbWluaW11bSA1IGNoYXJhY3RlcnMuJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgIDxpb24tcm93IGNsYXNzPVwianVzdGlmeS1jb250ZW50LWNlbnRlclwiIGpveXJpZGVTdGVwPVwic3RlcDJcIiB0aXRsZT1cInt7J2d1aWRlLmxvZ2luLm9wdGlvbnMudGl0bGUnIHwgdHJhbnNsYXRlfX1cIiBcclxuICAgICAgICAgICAgICAgICAgdGV4dD1cInt7J2d1aWRlLmxvZ2luLm9wdGlvbnMubWVzc2FnZScgfCB0cmFuc2xhdGV9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIHR5cGU9XCJzdWJtaXRcIiBleHBhbmQ9XCJibG9ja1wiIChjbGljayk9XCJlbmFibGVQYXNzd29yZEZpZWxkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInN1Y2Nlc3NcIiBwVG9vbHRpcD1cIkxvZ2luIHdpdGggcGFzc3dvcmRcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBqb3lyaWRlU3RlcD1cInN0ZXAzXCIgdGl0bGU9XCJ7eydndWlkZS5sb2dpbi5wYXNzd29yZC50aXRsZScgfCB0cmFuc2xhdGV9fVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9XCJ7eydndWlkZS5sb2dpbi5wYXNzd29yZC5tZXNzYWdlJyB8IHRyYW5zbGF0ZX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBuYW1lPVwibG9nLWluLW91dGxpbmVcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBQYXNzd29yZFxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiB0eXBlPVwic3VibWl0XCIgZXhwYW5kPVwiYmxvY2tcIiBleHBhbmQ9XCJibG9ja1wiIChjbGljayk9XCJlbmFibGVPdHBGaWVsZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJzdWNjZXNzXCIgcFRvb2x0aXA9XCJMb2dpbiB3aXRoIGF1dGhjb2RlXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGpveXJpZGVTdGVwPVwic3RlcDRcIiB0aXRsZT1cInt7J2d1aWRlLmxvZ2luLmF1dGhjb2RlLnRpdGxlJyB8IHRyYW5zbGF0ZX19XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1cInt7J2d1aWRlLmxvZ2luLmF1dGhjb2RlLm1lc3NhZ2UnIHwgdHJhbnNsYXRlfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJsb2ctaW4tb3V0bGluZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhjb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgIDxpb24tcm93IGNsYXNzPVwianVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBqb3lyaWRlU3RlcD1cInN0ZXA1XCIgdGl0bGU9XCJGb3Jnb3QgVXNlciBJRD9cIiBcclxuICAgICAgICAgICAgICAgICAgICAgIHRleHQ9XCJQcm92aWRlcyBhc3Npc3RhbmNlIGlmIHlvdSBmb3JnZXQgeW91ciBVc2VyIElEIHRvIGxvZ2luXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgc2hhcGU9XCJyb3VuZFwiIHR5cGU9XCJzdWJtaXRcIiBleHBhbmQ9XCJvdXRsaW5lXCIgY29sb3I9XCJzdWNjZXNzXCIgcFRvb2x0aXA9XCJGb3Jnb3QgVXNlciBJRD9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwic2hvd0RpYWxvZygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEZvcmdvdCBVc2VyIElEP1xyXG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICBqb3lyaWRlU3RlcD1cInN0ZXA2XCIgdGl0bGU9XCJGb3Jnb3QgcGFzc3dvcmQ/XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1cIlByb3ZpZGVzIGFzc2lzdGFuY2UgdG8gcmVzZXQgeW91ciBwYXNzd29yZCB1c2luZyB5b3VyIHJlZ2lzdGVyZWQgZW1haWwgYWRkcmVzc1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgc2hhcGU9XCJyb3VuZFwiIHR5cGU9XCJzdWJtaXRcIiBleHBhbmQ9XCJvdXRsaW5lXCIgY29sb3I9XCJzdWNjZXNzXCIgcFRvb2x0aXA9XCJGb3Jnb3QgUGFzc3dvcmQ/XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cImluaXRpYXRlRm9yZ290UGFzc3dvcmQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBGb3Jnb3QgUGFzc3dvcmQ/XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgPC9tYXQtc3RlcD5cclxuICAgICAgICAgICAgICA8bWF0LXN0ZXA+XHJcbiAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImxvZ2luVHlwZUZvcm1cIiAjbG9naW5UeXBlRm9ybURpcmVjdGl2ZT1cIm5nRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtbXNnIGtleT1cImxvZ2luLmNhcmQuc3RlcDJcIj48L2FwcC1tc2c+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIDxpb24tZ3JpZCBjbGFzcz1cImlvbi1wYWRkaW5nLXRvcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tcm93IGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwiaW9uLWp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLWFsaWduLXNlbGYtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpb24tanVzdGlmeS1jb250ZW50LWNlbnRlclwiIChjYXBzTG9jayk9XCJjYXBzT249JGV2ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImlvbi1wYWRkaW5nLXJpZ2h0XCI+VXNlciBJRDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJpb24tcGFkZGluZy1sZWZ0XCIgc3R5bGU9XCJmbG9hdDogcmlnaHQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLW1hc2sgW3ZhbHVlXT1cInVzZXJJZC52YWx1ZSAgKyAnJ1wiICpuZ0lmPVwidXNlcklkLnZhbHVlXCI+PC9hcHAtbWFzaz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz48YnIgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVuYWJsZU90cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWZsb2F0LWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXBhc3N3b3JkIFtmb3JtQ29udHJvbF09XCJvdHBcIiBpbnB1dElkPVwic2lnbkluUGFzc3dvcmRcIiBbdG9nZ2xlTWFza109J3RydWUnIFtmZWVkYmFja109J2ZhbHNlJz48L3AtcGFzc3dvcmQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJmbG9hdC1pbnB1dFwiPkF1dGhjb2RlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2ZpZWxkXT0nb3RwJyBbZm9ybV09XCJsb2dpblR5cGVGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnQXV0aGNvZGUgaXMgcmVxdWlyZWQuJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5sZW5ndGg6ICdBdXRoY29kZSBzaG91bGQgaGF2ZSBtaW5pbXVtIDYgY2hhcmFjdGVycy4nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVuYWJsZVBhc3N3b3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtZmxvYXQtbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtcGFzc3dvcmQgW2Zvcm1Db250cm9sXT1cInNpZ25JblBhc3N3b3JkXCIgaW5wdXRJZD1cInNpZ25JblBhc3N3b3JkXCIgW3RvZ2dsZU1hc2tdPSd0cnVlJyBbZmVlZGJhY2tdPSdmYWxzZSc+PC9wLXBhc3N3b3JkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZmxvYXQtaW5wdXRcIj5QYXNzd29yZDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtmaWVsZF09J3NpZ25JblBhc3N3b3JkJyBbZm9ybV09XCJsb2dpblR5cGVGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnUGFzc3dvcmQgaXMgcmVxdWlyZWQuJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwiY2Fwc09uXCIgc3R5bGU9XCJjb2xvcjojYjM0MTFkO1wiPjxzdHJvbmc+Q2FwcyBMb2NrIGlzIE9uPC9zdHJvbmc+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpb24tanVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tZ3JpZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tcm93IGNsYXNzPVwianVzdGlmeS1jb250ZW50LWNlbnRlclwiIFtoaWRkZW5dPVwiIWVuYWJsZVNpZ25pblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgdHlwZT1cInN1Ym1pdFwiIGV4cGFuZD1cImJsb2NrXCIgKGNsaWNrKT1cInNpZ25JbigpXCIgY29sb3I9XCJzdWNjZXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgbmFtZT1cImxvZy1pbi1vdXRsaW5lXCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ24gSW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIHR5cGU9XCJyZXNldFwiIGV4cGFuZD1cImJsb2NrXCIgZXhwYW5kPVwiYmxvY2tcIiAoY2xpY2spPVwicmVzZXQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cIm1lZGl1bVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJyZWZyZXNoXCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc2V0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tZ3JpZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWdyaWQgKm5nSWY9XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1yb3cgY2xhc3M9XCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIiNcIj5Gb3Jnb3QgdXNlciBJRD88L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiI1wiPkZvcmdvdCBQYXNzd29yZD88L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1ncmlkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgPC9tYXQtc3RlcD5cclxuICAgICAgICAgICAgPC9tYXQtaG9yaXpvbnRhbC1zdGVwcGVyPlxyXG4gIFxyXG4gICAgICAgICAgPC9hcHAtY2FyZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJnLXNpZ25pbjJcIiBkYXRhLXdpZHRoPVwiMzAwXCIgZGF0YS1oZWlnaHQ9XCIyMDBcIiBkYXRhLWxvbmd0aXRsZT1cInRydWVcIj48L2Rpdj4gLS0+XHJcbiAgICAgIDwvYXBwLXBhZ2U+XHJcbiAgICA8L2FwcC1jb250ZW50PlxyXG4gIDwvaW9uLWNvbnRlbnQ+XHJcblxyXG5cclxuXHJcbiJdfQ==
|
|
@@ -44,6 +44,7 @@ export class LoginService {
|
|
|
44
44
|
user.expiration = res.expiration;
|
|
45
45
|
user.expires_in = res.expires_in;
|
|
46
46
|
user.ssn = res.ssn;
|
|
47
|
+
user.language = res.language;
|
|
47
48
|
user.claimantId = res.claimantId;
|
|
48
49
|
user.employerId = res.employerId;
|
|
49
50
|
user.cookieName = res.cookieName;
|
|
@@ -122,6 +123,7 @@ export class LoginService {
|
|
|
122
123
|
authData.set('grant_type', 'password');
|
|
123
124
|
authData.set('username', auth.userId);
|
|
124
125
|
authData.set('password', auth.password);
|
|
126
|
+
authData.set('language', auth.language);
|
|
125
127
|
return this.util.postFormData('oauth/token', authData, this.options);
|
|
126
128
|
}
|
|
127
129
|
loginAndCheckForMFA(auth) {
|
|
@@ -133,6 +135,7 @@ export class LoginService {
|
|
|
133
135
|
authData.set('grant_type', 'mfa');
|
|
134
136
|
authData.set('username', auth.userId);
|
|
135
137
|
authData.set('password', auth.password);
|
|
138
|
+
authData.set('language', localStorage.getItem("language"));
|
|
136
139
|
if (auth.otp) {
|
|
137
140
|
authData.set('mfa_code', auth.otp);
|
|
138
141
|
authData.set('is_trusted_device', auth.istrustedDevice);
|
|
@@ -337,4 +340,4 @@ export class LoginService {
|
|
|
337
340
|
providedIn: 'root'
|
|
338
341
|
}]
|
|
339
342
|
}], () => [{ type: i1.UtilService }, { type: i2.Storage }, { type: i3.ClaimantContextService }], null); })();
|
|
340
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvc2VydmljZXMvbG9naW4vbG9naW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBU25ELE1BQU0sT0FBTyxZQUFZO0lBWXZCLFdBQVcsQ0FBQyxRQUFpQjtRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFlO1FBQzNCLElBQUcsR0FBRyxFQUFDO1lBQ0wsSUFBSSxJQUFJLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUM7WUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQzdCLElBQUksQ0FBQyxR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Q0FBQyxjQUFjLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxjQUFjLENBQUMsSUFBYTtRQUMxQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxHQUFZO1FBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELGlDQUFpQyxDQUFDLE1BQWU7UUFDL0MsSUFBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUk7WUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWMsWUFBWSxNQUFNLEVBQUUsQ0FBQztpQkFDM0MsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDOzZFQW5ZVSxZQUFZO3VFQUFaLFlBQVksV0FBWixZQUFZLG1CQUZYLE1BQU07O2lGQUVQLFlBQVk7Y0FIeEIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IExpYkNvbnN0YW50cyB9IGZyb20gJy4uLy4uL21vZGVscy9MaWJDb25zdGFudHMnO1xyXG5pbXBvcnQgeyBPdHBBdXRoTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvT3RwQXV0aE1vZGVsJztcclxuaW1wb3J0IHsgVXNlckRldGFpbHNNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9Vc2VyRGV0YWlsc01vZGVsJztcclxuaW1wb3J0IHsgVXNlck1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1VzZXJNb2RlbCc7XHJcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbC91dGlsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdG9yYWdlIH0gZnJvbSAnQGlvbmljL3N0b3JhZ2UtYW5ndWxhcic7XHJcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBDbGFpbWFudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2xhaW1hbnQtY29udGV4dC9jbGFpbWFudC1jb250ZXh0LnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9naW5TZXJ2aWNlIHtcclxuXHJcbiAgb3B0aW9ucyA9IHt9O1xyXG5cclxuICBwcml2YXRlIHVzZXJCcyA6IEJlaGF2aW9yU3ViamVjdDxVc2VyTW9kZWw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcclxuICBwcml2YXRlIHVzZXJJZEluVW5pdEJzIDogQmVoYXZpb3JTdWJqZWN0PFVzZXJNb2RlbFtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XHJcbiAgcHJpdmF0ZSBtZW51QnMgOiBCZWhhdmlvclN1YmplY3Q8TWVudUl0ZW1bXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xyXG5cclxuICBwcml2YXRlIHVzZXIgOiBVc2VyTW9kZWw7XHJcblxyXG4gIHByaXZhdGUgYXV0aENvZGUgOiBzdHJpbmc7XHJcblxyXG4gIHNldEF1dGhDb2RlKGF1dGhjb2RlIDogc3RyaW5nKXtcclxuICAgIHRoaXMuYXV0aENvZGUgPSBhdXRoY29kZTtcclxuICB9XHJcblxyXG4gIGdldEF1dGhjb2RlKCl7XHJcbiAgICByZXR1cm4gdGhpcy5hdXRoQ29kZTtcclxuICB9XHJcblxyXG4gIGdldFVzZXIoKSA6IFVzZXJNb2RlbHtcclxuICAgIHJldHVybiB0aGlzLnVzZXJCcy5nZXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckJzKCkgOiBCZWhhdmlvclN1YmplY3Q8VXNlck1vZGVsPntcclxuICAgIHJldHVybiB0aGlzLnVzZXJCcztcclxuICB9XHJcblxyXG4gIGdldE1lbnVCcygpIDogQmVoYXZpb3JTdWJqZWN0PE1lbnVJdGVtW10+e1xyXG4gICAgcmV0dXJuIHRoaXMubWVudUJzO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2V0VXNlcihyZXMgOiBVc2VyTW9kZWwpe1xyXG4gICAgaWYocmVzKXtcclxuICAgICAgbGV0IHVzZXIgPSBuZXcgVXNlck1vZGVsKCk7XHJcbiAgICAgIHVzZXIuZmlyc3ROYW1lID0gcmVzLmZpcnN0TmFtZTtcclxuICAgICAgdXNlci5sYXN0TmFtZSA9IHJlcy5sYXN0TmFtZTtcclxuICAgICAgdXNlci51c2VybmFtZSA9IHJlc1sndXNlcl9uYW1lJ107XHJcbiAgICAgIHVzZXIubWlkZGxlTmFtZSA9IHJlcy5taWRkbGVOYW1lO1xyXG4gICAgICB1c2VyLmlzQWN0aXZlID0gcmVzLmlzQWN0aXZlXHJcbiAgICAgIHVzZXIucm9sZXMgPSByZXMucm9sZXM7XHJcbiAgICAgIHVzZXIuZnVuY3Rpb25zID0gcmVzLmZ1bmN0aW9ucztcclxuICAgICAgdXNlci5kb2IgPSByZXMuZG9iO1xyXG4gICAgICB1c2VyLnVzZXJUeXBlID0gcmVzLnVzZXJUeXBlO1xyXG4gICAgICB1c2VyLmdlbmRlciA9IHJlcy5nZW5kZXI7XHJcbiAgICAgIHVzZXIuZW1haWxJZD1yZXMuZW1haWxJZDtcclxuICAgICAgdXNlci5wYXNzd29yZEV4cGlyYXRpb25EYXRlID0gcmVzLnBhc3N3b3JkRXhwaXJhdGlvbkRhdGU7XHJcbiAgICAgIHVzZXIuZW1haWxTdGF0dXMgPSByZXMuZW1haWxTdGF0dXM7XHJcbiAgICAgIHVzZXIuaXNMb2dnZWRJbiA9IHJlcy5pc0xvZ2dlZEluO1xyXG4gICAgICB1c2VyLmNoYW5nZVB3ZCA9IHJlcy5jaGFuZ2VQd2Q7XHJcbiAgICAgIHVzZXIuZXhwaXJhdGlvbiA9IHJlcy5leHBpcmF0aW9uO1xyXG4gICAgICB1c2VyLmV4cGlyZXNfaW4gPSByZXMuZXhwaXJlc19pbjtcclxuICAgICAgdXNlci5zc24gPSByZXMuc3NuO1xyXG4gICAgICB1c2VyLmNsYWltYW50SWQgPSByZXMuY2xhaW1hbnRJZDtcclxuICAgICAgdXNlci5lbXBsb3llcklkID0gcmVzLmVtcGxveWVySWQ7XHJcbiAgICAgIHVzZXIuY29va2llTmFtZSA9IHJlcy5jb29raWVOYW1lO1xyXG4gICAgICB1c2VyLmNvb2tpZVZhbHVlID0gcmVzLmNvb2tpZVZhbHVlO1xyXG4gICAgICB1c2VyLnVzZXJVbml0ID0gcmVzLnVzZXJVbml0O1xyXG4gICAgICB1c2VyLmRvbWFpbk5hbWUgPSByZXMuZG9tYWluTmFtZTtcclxuICAgICAgdXNlci5pczJGQVJlcXVpcmVkID0gcmVzLmlzMkZBUmVxdWlyZWQ7XHJcbiAgICAgIHVzZXIuZGF5c1RpbGxQYXNzd29yZEV4cGlyZSA9IHJlcy5kYXlzVGlsbFBhc3N3b3JkRXhwaXJlO1xyXG4gICAgICB1c2VyLmlzRW1haWxWZXJpZmljYXRpb25SZXF1aXJlZCA9IHJlcy5pc0VtYWlsVmVyaWZpY2F0aW9uUmVxdWlyZWQ7XHJcbiAgICAgIHVzZXIuY2VsbHBob25lTm8gPSByZXMuY2VsbHBob25lTm87XHJcbiAgICAgIHVzZXIuY2VsbHBob25lU3RhdHVzID0gcmVzLmNlbGxwaG9uZVN0YXR1cztcclxuICAgICAgdXNlci5zdXBwb3J0ZWRNZmFUeXBlcyA9IHJlcy5zdXBwb3J0ZWRNZmFUeXBlcztcclxuICAgICAgaWYocmVzLmFjY2Vzc190b2tlbiAmJiByZXMucmVmcmVzaF90b2tlbil7XHJcbiAgICAgICAgdXNlci5hY2Nlc3NfdG9rZW4gPSByZXMuYWNjZXNzX3Rva2VuO1xyXG4gICAgICAgIHVzZXIucmVmcmVzaF90b2tlbiA9IHJlcy5yZWZyZXNoX3Rva2VuO1xyXG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zZXQoJ2FjY2Vzc190b2tlbicsIHJlcy5hY2Nlc3NfdG9rZW4pO1xyXG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zZXQoJ3JlZnJlc2hfdG9rZW4nLCByZXMucmVmcmVzaF90b2tlbik7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHVzZXIuYWNjZXNzX3Rva2VuID0gdGhpcy51c2VyLmFjY2Vzc190b2tlbjtcclxuICAgICAgICB1c2VyLnJlZnJlc2hfdG9rZW4gPSB0aGlzLnVzZXIucmVmcmVzaF90b2tlbjtcclxuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0KCdhY2Nlc3NfdG9rZW4nLCB0aGlzLnVzZXIuYWNjZXNzX3Rva2VuKTtcclxuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0KCdyZWZyZXNoX3Rva2VuJywgdGhpcy51c2VyLnJlZnJlc2hfdG9rZW4pO1xyXG4gICAgICB9XHJcbiAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zZXQoJ3VzZXJuYW1lJywgYnRvYSh1c2VyLnVzZXJuYW1lKSk7XHJcbiAgICAgIGxldCBzaG93X2Rpc2Nsb3N1cmUgPSBhd2FpdCB0aGlzLnN0b3JhZ2UuZ2V0KCdzaG93X2Rpc2Nsb3N1cmUnKTtcclxuICAgICAgaWYoc2hvd19kaXNjbG9zdXJlID09IG51bGwgfHwgc2hvd19kaXNjbG9zdXJlID09IHVuZGVmaW5lZCB8fCBzaG93X2Rpc2Nsb3N1cmUgIT0gJ2ZhbHNlJyl7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldCgnc2hvd19kaXNjbG9zdXJlJywgJ3RydWUnKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVzZXIgPSB1c2VyO1xyXG4gICAgICB0aGlzLnVzZXJCcy5uZXh0KHRoaXMudXNlcik7XHJcbiAgICAgIGlmKHRoaXMudXRpbC5pc1N0YXRlKCdtcycpKXtcclxuICAgICAgICBpZighdXNlci5pczJGQVJlcXVpcmVkKXtcclxuICAgICAgICAgIHRoaXMuY3JlYXRlQ29va2llKExpYkNvbnN0YW50cy5zc29Db29raWVOYW1lLCBgXCIke3VzZXIuY29va2llVmFsdWV9XCJgLCB1c2VyLmV4cGlyYXRpb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RnVsbE5hbWUoKXtcclxuICAgIHJldHVybiB0aGlzLmdldFVzZXIoKS5maXJzdE5hbWUgKyAodGhpcy5nZXRVc2VyKCkubWlkZGxlTmFtZSAhPSBudWxsID8gJyAnICsgdGhpcy5nZXRVc2VyKCkubWlkZGxlTmFtZSA6ICcnKSArICcgJyArIHRoaXMuZ2V0VXNlcigpLmxhc3ROYW1lO1xyXG4gIH1cclxuXHJcbiAgZ2V0SXNVc2VyUHJvZmlsZUNvbXBsZXRlKCl7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldFVzZXIoKS51c2VyUHJvZmlsZUNvbXBsZXRlO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIHV0aWwgOiBVdGlsU2VydmljZSwgcHJpdmF0ZSBzdG9yYWdlOiBTdG9yYWdlLCBwcml2YXRlIGNsYWltYW50Q29udGV4dFNlcnZpY2UgOiBDbGFpbWFudENvbnRleHRTZXJ2aWNlKSB7IFxyXG4gICAgXHJcbiAgfVxyXG5cclxuICBnZXRVc2VyUGVyc29uYWxEZXRhaWxzKCkgOiBPYnNlcnZhYmxlPFVzZXJEZXRhaWxzTW9kZWw+e1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbC5nZXQ8VXNlckRldGFpbHNNb2RlbD4oJ3VzZXIvZGV0YWlscy8nICsgdGhpcy51c2VyLnVzZXJuYW1lKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlT3RwKHVzZXJJZCA6IHN0cmluZywgdHlwZSA6IHN0cmluZyl7XHJcbiAgICByZXR1cm4gdGhpcy51dGlsLmdldChgdXNlci92Mi9vdHAvJHt1c2VySWR9P3R5cGU9JHt0eXBlfWApO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVPdHBGb3JOZXdVc2VyQ3JlYXRpb24ocGhvbmU6IHN0cmluZywgdHlwZTogc3RyaW5nKXtcclxuICAgIHJldHVybiB0aGlzLnV0aWwuZ2V0KGB1c2VyL290cC9waG9uZS8ke3Bob25lfT90eXBlPSR7dHlwZX1gKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlT3RwRm9yTG9nZ2VkSW5Vc2VyKCl7XHJcbiAgICByZXR1cm4gdGhpcy51dGlsLmdldChgdXNlci9nZW5lcmF0ZS9vdHBgKTtcclxuICB9XHJcblxyXG4gIHZlcmlmeU90cEZvclBob25lTnVtYmVyKGNvZGU6IHN0cmluZywgcGhvbmU6IHN0cmluZywgaXNSZXR1cm5pbmdVc2VyOiBib29sZWFuLCBzc246IFN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgY29uc3QgdXJsID0gYHVzZXIvb3RwL3Bob25lL3ZlcmlmeS8ke2NvZGV9P3Bob25lPSR7cGhvbmV9JmlzUmV0dXJuaW5nVXNlcj0ke2lzUmV0dXJuaW5nVXNlcn0mc3NuPSR7c3NuID8gc3NuIDogXCJcIn1gO1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbC5nZXQodXJsKTtcclxuICB9XHJcblxyXG4gIGxvZ2luKGF1dGggOiBPdHBBdXRoTW9kZWwpe1xyXG4gICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAvL1wiQWNjZXB0XCIgOiBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiXHJcbiAgICB9KTtcclxuICAgIHRoaXMub3B0aW9ucyA9IHsgaGVhZGVyczogaGVhZGVycyB9O1xyXG5cclxuICAgIGxldCBhdXRoRGF0YSA6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBhdXRoRGF0YS5zZXQoJ2dyYW50X3R5cGUnLCAncGFzc3dvcmQnKTtcclxuICAgIGF1dGhEYXRhLnNldCgndXNlcm5hbWUnLCBhdXRoLnVzZXJJZCk7XHJcbiAgICBhdXRoRGF0YS5zZXQoJ3Bhc3N3b3JkJywgYXV0aC5wYXNzd29yZCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMudXRpbC5wb3N0Rm9ybURhdGE8VXNlck1vZGVsPignb2F1dGgvdG9rZW4nLCBhdXRoRGF0YSx0aGlzLm9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgbG9naW5BbmRDaGVja0Zvck1GQShhdXRoIDogT3RwQXV0aE1vZGVsKXtcclxuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgLy9cIkFjY2VwdFwiIDogXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIlxyXG4gICAgfSk7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB7IGhlYWRlcnM6IGhlYWRlcnMgfTtcclxuXHJcbiAgICBsZXQgYXV0aERhdGEgOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgYXV0aERhdGEuc2V0KCdncmFudF90eXBlJywgJ21mYScpO1xyXG4gICAgYXV0aERhdGEuc2V0KCd1c2VybmFtZScsIGF1dGgudXNlcklkKTtcclxuICAgIGF1dGhEYXRhLnNldCgncGFzc3dvcmQnLCBhdXRoLnBhc3N3b3JkKTtcclxuICAgIGlmKGF1dGgub3RwKXtcclxuICAgICAgYXV0aERhdGEuc2V0KCdtZmFfY29kZScsIGF1dGgub3RwKTtcclxuICAgICAgYXV0aERhdGEuc2V0KCdpc190cnVzdGVkX2RldmljZScsIGF1dGguaXN0cnVzdGVkRGV2aWNlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy51dGlsLnBvc3RGb3JtRGF0YTxVc2VyTW9kZWw+KCdvYXV0aC90b2tlbicsIGF1dGhEYXRhLHRoaXMub3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBhc3luYyByZWZyZXNoVG9rZW4ocmVmcmVzaFRva2VuKXtcclxuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgXCJBY2NlcHRcIiA6IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIsXHJcbiAgICAgICdBdXRob3JpemF0aW9uJzogYEJhc2ljIGAgKyBidG9hKGAke0xpYkNvbnN0YW50cy5vYXV0aENsaWVudFVzZXJ9OiR7TGliQ29uc3RhbnRzLm9hdXRoQ2xpZW50U2VjcmV0fWApXHJcbiAgICB9KTtcclxuICAgIHRoaXMub3B0aW9ucyA9IHsgaGVhZGVyczogaGVhZGVycyB9O1xyXG5cclxuICAgIGxldCBhdXRoRGF0YSA6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBhdXRoRGF0YS5zZXQoJ2dyYW50X3R5cGUnLCAncmVmcmVzaF90b2tlbicpO1xyXG4gICAgYXV0aERhdGEuc2V0KCdjbGllbnRfaWQnLCBMaWJDb25zdGFudHMub2F1dGhDbGllbnRVc2VyKTtcclxuICAgIGF1dGhEYXRhLnNldCgncmVmcmVzaF90b2tlbicsIHJlZnJlc2hUb2tlbik7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMudXRpbC5wb3N0Rm9ybURhdGE8VXNlck1vZGVsPihgb2F1dGgvdG9rZW5gLCBhdXRoRGF0YSwgdGhpcy5vcHRpb25zKS50b1Byb21pc2UoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGxvYWRVc2VySW5mbygpe1xyXG4gICAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgXCJBY2NlcHRcIiA6IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCJcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMub3B0aW9ucyA9IHsgaGVhZGVyczogaGVhZGVycyB9O1xyXG4gICAgICBsZXQgYXV0aFRva2VuID0gYXdhaXQgdGhpcy5nZXRTdG9yZWRBY2Nlc3NUb3BlbigpO1xyXG4gICAgICByZXR1cm4gdGhpcy51dGlsLmdldDxVc2VyTW9kZWw+KGBvYXV0aC9jaGVja190b2tlbj90b2tlbj0ke2F1dGhUb2tlbn1gKS50b1Byb21pc2UoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFN0b3JlZEFjY2Vzc1RvcGVuKCl7XHJcbiAgICBsZXQgYWNjZXNzVG9rZW4gPSBhd2FpdCB0aGlzLnN0b3JhZ2UuZ2V0KCdhY2Nlc3NfdG9rZW4nKS50aGVuKHJlcyA9PiByZXMpO1xyXG4gICAgcmV0dXJuIGFjY2Vzc1Rva2VuO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVPdHBVbnJlZ2lzdGVyZWQobW9iaWxlTm8gOiBzdHJpbmcpe1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbC5nZXQoJ2F1dGgvb3RwL25ld3VzZXIvJyArIG1vYmlsZU5vKTtcclxuICB9XHJcblxyXG4gIHNpZ25VcCh1c2VyTW9kZWwgOiBVc2VyTW9kZWwpe1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbC5wb3N0KCd1c2VyJywgdXNlck1vZGVsKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVBlcnNvbmFsRGV0YWlscyh1c3JEdGxzIDogVXNlckRldGFpbHNNb2RlbCl7XHJcbiAgICByZXR1cm4gdGhpcy51dGlsLnBvc3QoJ3VzZXIvZGV0YWlscycsIHVzckR0bHMpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXQoKXtcclxuICAgIHRoaXMudXNlciA9IG51bGw7XHJcbiAgICB0aGlzLnVzZXJCcy5uZXh0KG51bGwpO1xyXG4gICAgdGhpcy5tZW51QnMubmV4dChudWxsKTtcclxuICAgIHRoaXMuc3RvcmFnZS5yZW1vdmUoJ2FjY2Vzc190b2tlbicpO1xyXG4gICAgdGhpcy5zdG9yYWdlLnJlbW92ZSgncmVmcmVzaF90b2tlbicpO1xyXG4gICAgdGhpcy5zdG9yYWdlLnJlbW92ZSgnc2hvd19kaXNjbG9zdXJlJyk7XHJcbiAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlKCd1c2VybmFtZScpO1xyXG4gICAgdGhpcy5jbGFpbWFudENvbnRleHRTZXJ2aWNlLmNsZWFyQ29udGV4dCgpO1xyXG4gICAgdGhpcy5yZW1vdmVDb29raWVzKCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVDb29raWVzKCl7XHJcbiAgICB0aGlzLmRlbGV0ZUNvb2tpZSgnYXQnKTtcclxuICAgIHRoaXMuZGVsZXRlQ29va2llKCdydCcpO1xyXG4gICAgdGhpcy5kZWxldGVDb29raWUoTGliQ29uc3RhbnRzLnNzb0Nvb2tpZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlQ29va2llKGNvb2tpZU5hbWUpe1xyXG4gICAgbGV0IGNvb2tpZSA9IGAke2Nvb2tpZU5hbWV9PTsgTWF4LUFnZT0wOyBwYXRoPS87IGRvbWFpbj0ke0xpYkNvbnN0YW50cy5zc29Eb21haW59YDtcclxuICAgIGRvY3VtZW50LmNvb2tpZSA9IGNvb2tpZTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUNvb2tpZShjb29raWVOYW1lLCB2YWx1ZSwgZXhwaXJhdGlvbil7XHJcbiAgICBsZXQgY29va2llID0gYCR7Y29va2llTmFtZX09JHt2YWx1ZX07IGV4cGlyZXM9JHtleHBpcmF0aW9uICsgJy4wMDAnfTsgcGF0aD0vOyBkb21haW49JHtMaWJDb25zdGFudHMuc3NvRG9tYWlufWA7XHJcbiAgICBkb2N1bWVudC5jb29raWUgPSBjb29raWU7XHJcbiAgfVxyXG5cclxuICBsb2dvdXQoKXtcclxuICAgIGlmKHRoaXMudXNlcil7XHJcbiAgICAgIHRoaXMudXRpbC5nZXQoJ3VzZXIvbG9nb3V0JylcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICByZXMgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgIHRoaXMucmVzZXQoKTtcclxuICAgICAgICAgIHRoaXMudXRpbC5lcnJvckhhbmRsZXIoZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0xvZ2dlZEluKCl7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyICYmIHRoaXMudXNlci5pc0xvZ2dlZEluO1xyXG4gIH1cclxuXHJcbiAgaXMyRkFSZXF1aXJlZCgpe1xyXG4gICAgcmV0dXJuIHRoaXMudXNlciAmJiB0aGlzLnVzZXIuaXMyRkFSZXF1aXJlZDtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVByb2ZpbGUodXNlciA6IFVzZXJNb2RlbCl7XHJcbiAgICByZXR1cm4gdGhpcy51dGlsLnBvc3QoJ3VzZXIvcHJvZmlsZScsIHVzZXIpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUGFzc3dvcmQob2xkUGFzc3dvcmQsIG5ld1Bhc3N3b3JkLCBjb25maXJtUGFzc3dvcmQpe1xyXG4gICAgbGV0IHB3ZENoYW5nZU1vZGVsIDoge29sZFBhc3N3b3JkOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIGNvbmZpcm1QYXNzd29yZDogc3RyaW5nfSA9IHtvbGRQYXNzd29yZDogb2xkUGFzc3dvcmQsIHBhc3N3b3JkOiBuZXdQYXNzd29yZCwgY29uZmlybVBhc3N3b3JkOiBjb25maXJtUGFzc3dvcmR9O1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbC5wb3N0KGB1c2VyL3Bhc3N3b3JkLyR7dGhpcy5nZXRVc2VyKCkudXNlcm5hbWV9YCwgcHdkQ2hhbmdlTW9kZWwpO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhdGVGb3Jnb3RQYXNzd29yZCh1c2VySWQgOiBzdHJpbmcpe1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbC5nZXQoYHVzZXIvcGFzc3dvcmQvcmVzZXQvJHt1c2VySWR9YCk7XHJcbiAgfVxyXG5cclxuICBpbml0aWF0ZUZvcmdvdFBhc3N3b3JkVjIodXNlcklkIDogc3RyaW5nKXtcclxuICAgIHJldHVybiB0aGlzLnV0aWwuZ2V0KGB1c2VyL3YyL3Bhc3N3b3JkL3Jlc2V0LyR7dXNlcklkfWApO1xyXG4gIH1cclxuXHJcbiAgaGFzUm9sZShyb2xlTmFtZSA6IHN0cmluZykgOiBib29sZWFue1xyXG4gICAgcmV0dXJuIHRoaXMudXNlciAmJiB0aGlzLnVzZXIucm9sZXMgJiYgdGhpcy51c2VyLnJvbGVzLmluY2x1ZGVzKHJvbGVOYW1lKTtcclxuICB9XHJcblxyXG4gIGhhc0Z1bmN0aW9uKGZ1bmN0aW9uTmFtZSA6IHN0cmluZykgOiBib29sZWFue1xyXG4gICAgcmV0dXJuIHRoaXMudXNlciAmJiB0aGlzLnVzZXIuZnVuY3Rpb25zICYmIHRoaXMudXNlci5mdW5jdGlvbnMuaW5jbHVkZXMoZnVuY3Rpb25OYW1lKTtcclxuICB9XHJcblxyXG4gIGhhc1JvbGVzKC4uLnJvbGVzIDogc3RyaW5nW10pe1xyXG4gICAgbGV0IGlzUHJlc2VudCA9IGZhbHNlO1xyXG4gICAgZm9yKHZhciBpID0gMCA7IGkgPCByb2xlcy5sZW5ndGggOyBpKyspe1xyXG4gICAgICBpZih0aGlzLmhhc1JvbGUocm9sZXNbaV0udG9TdHJpbmcoKSkpe1xyXG4gICAgICAgIGlzUHJlc2VudCA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBpc1ByZXNlbnQ7XHJcbiAgfVxyXG5cclxuICBoYXNGdW5jdGlvbnMoLi4uZnVuY3Rpb25zIDogc3RyaW5nW10pe1xyXG4gICAgbGV0IGlzUHJlc2VudCA9IGZhbHNlO1xyXG4gICAgZm9yKHZhciBpID0gMCA7IGkgPCBmdW5jdGlvbnMubGVuZ3RoIDsgaSsrKXtcclxuICAgICAgaWYodGhpcy5oYXNGdW5jdGlvbihmdW5jdGlvbnNbaV0pKXtcclxuICAgICAgICBpc1ByZXNlbnQgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNQcmVzZW50O1xyXG4gIH1cclxuXHJcbiAgY2hlY2tSb2xlcyhyb2xlcyA6IHN0cmluZ1tdKXtcclxuICAgIGxldCBpc1ByZXNlbnQgPSBmYWxzZTtcclxuICAgIGZvcih2YXIgaSA9IDAgOyBpIDwgcm9sZXMubGVuZ3RoIDsgaSsrKXtcclxuICAgICAgaWYodGhpcy5oYXNSb2xlKHJvbGVzW2ldLnRvU3RyaW5nKCkpKXtcclxuICAgICAgICBpc1ByZXNlbnQgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNQcmVzZW50O1xyXG4gIH1cclxuXHJcbiAgY2hlY2tGdW5jdGlvbnMoZnVuY3Rpb25zIDogc3RyaW5nW10pe1xyXG4gICAgbGV0IGlzUHJlc2VudCA9IGZhbHNlO1xyXG4gICAgZm9yKHZhciBpID0gMCA7IGkgPCBmdW5jdGlvbnMubGVuZ3RoIDsgaSsrKXtcclxuICAgICAgaWYodGhpcy5oYXNGdW5jdGlvbihmdW5jdGlvbnNbaV0pKXtcclxuICAgICAgICBpc1ByZXNlbnQgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNQcmVzZW50O1xyXG4gIH1cclxuXHJcbiAgaXNDc3IoKXtcclxuICAgIHJldHVybiB0aGlzLmdldFVzZXIoKSAmJiB0aGlzLmdldFVzZXIoKS51c2VyVHlwZSA9PT0gJ01ERVMnXHJcbiAgfVxyXG5cclxuICBpc0VtcGxveWVyKCl7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRVc2VyKCkgJiYgdGhpcy5nZXRVc2VyKCkudXNlclR5cGUgPT09ICdFTVBMJ1xyXG4gIH1cclxuXHJcbiAgaXNUcGEoKXtcclxuICAgIHJldHVybiB0aGlzLmdldFVzZXIoKSAmJiB0aGlzLmdldFVzZXIoKS51c2VyVHlwZSA9PT0gJ1RQQSdcclxuICB9XHJcblxyXG4gIGlzQ2xhaW1hbnQoKXtcclxuICAgIHJldHVybiB0aGlzLmdldFVzZXIoKSAmJiB0aGlzLmdldFVzZXIoKS51c2VyVHlwZSA9PT0gJ0NMTVQnXHJcbiAgfVxyXG5cclxuICBoYXNTc25Bc3NvY2lhdGVkKCkgOiBib29sZWFue1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0VXNlcigpICYmIHRoaXMuZ2V0VXNlcigpLnVzZXJUeXBlID09PSAnQ0xNVCcgJiYgdGhpcy5nZXRVc2VyKCkuc3NuICE9PSB1bmRlZmluZWQgXHJcbiAgfVxyXG5cclxuICBnZXRVc2VyTWVudXMoKXtcclxuICAgIHJldHVybiB0aGlzLnV0aWwuZ2V0PE1lbnVJdGVtW10+KGBtZW51L2ApO1xyXG4gIH1cclxuXHJcbiAgbWFya0ZhdihtZW51SWQgOiBzdHJpbmcpe1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbC5wb3N0PE1lbnVJdGVtW10+KGBtZW51L2Zhdi8ke21lbnVJZH1gLCBudWxsKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUZhdihtZW51SWQgOiBzdHJpbmcpe1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbC5kZWxldGU8TWVudUl0ZW1bXT4oYG1lbnUvZmF2LyR7bWVudUlkfWApO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmF2b3VyaXRlTWVudSgpe1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbC5nZXQ8TWVudUl0ZW1bXT4oYG1lbnUvZmF2YCk7XHJcbiAgfVxyXG5cclxuICBnZXRUcmVuZGluZ01lbnUoKXtcclxuICAgIHJldHVybiB0aGlzLnV0aWwuZ2V0PE1lbnVJdGVtW10+KGBtZW51L3RyZW5kaW5nYCk7XHJcbiAgfVxyXG5cclxuICB2ZXJpZnlFbWFpbChjb2RlIDogc3RyaW5nKXtcclxuICAgIHJldHVybiB0aGlzLnV0aWwucG9zdChgdXNlci9lbWFpbC8ke2NvZGV9YCwgbnVsbCk7XHJcbiAgfVxyXG5cclxuICBnZXROZXdDb2RlKCl7XHJcbiAgICByZXR1cm4gdGhpcy51dGlsLmdldChgdXNlci9lbWFpbGApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRW1haWxBbmRHZXROZXdDb2RlKGVtYWlsIDogc3RyaW5nKXtcclxuICAgIHJldHVybiB0aGlzLnV0aWwucGF0Y2goYHVzZXIvZW1haWwvJHtlbWFpbH1gLCBudWxsKTtcclxuICB9XHJcblxyXG4gIGdldE5ld0F1dGhDb2RlKHR5cGUgOiBzdHJpbmcpe1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbC5nZXQoYHVzZXIvb3RwP3R5cGU9JHt0eXBlfWApO1xyXG4gIH1cclxuXHJcbiAgYXNzb2NpYXRlU3NuVG9Vc2VySWQoc3NuIDogc3RyaW5nKXtcclxuICAgIHJldHVybiB0aGlzLnV0aWwucG9zdChgY2xhaW1hbnQvYXNzb2NpYXRlLXNzbi8ke3Nzbn1gLCBudWxsKTtcclxuICB9XHJcblxyXG4gIGdldFVzZXJJZEluVW5pdEJzKCl7XHJcbiAgICByZXR1cm4gdGhpcy51c2VySWRJblVuaXRCcztcclxuICB9XHJcblxyXG4gIGxvYWRVc2VySWRzRnJvbVVuaXRPZkxvZ2dlZEluVXNlcih1bml0SWQgOiBzdHJpbmcpe1xyXG4gICAgaWYodGhpcy51c2VySWRJblVuaXRCcy5nZXRWYWx1ZSgpID09IG51bGwpXHJcbiAgICAgIHRoaXMudXRpbC5nZXQ8VXNlck1vZGVsW10+KGB1c2VyL2FsbC8ke3VuaXRJZH1gKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShyZXMgPT4gdGhpcy51c2VySWRJblVuaXRCcy5uZXh0KHJlcykpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
343
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvc2VydmljZXMvbG9naW4vbG9naW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBU25ELE1BQU0sT0FBTyxZQUFZO0lBWXZCLFdBQVcsQ0FBQyxRQUFpQjtRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFlO1FBQzNCLElBQUcsR0FBRyxFQUFDO1lBQ0wsSUFBSSxJQUFJLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUM7WUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQzdCLElBQUksQ0FBQyxR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QUMsY0FBYyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELHdCQUF3QixDQUFDLEtBQWM7UUFDckMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxjQUFjLENBQUMsSUFBYTtRQUMxQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxHQUFZO1FBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELGlDQUFpQyxDQUFDLE1BQWU7UUFDL0MsSUFBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUk7WUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWMsWUFBWSxNQUFNLEVBQUUsQ0FBQztpQkFDM0MsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDOzZFQXBZVSxZQUFZO3VFQUFaLFlBQVksV0FBWixZQUFZLG1CQUZYLE1BQU07O2lGQUVQLFlBQVk7Y0FIeEIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IExpYkNvbnN0YW50cyB9IGZyb20gJy4uLy4uL21vZGVscy9MaWJDb25zdGFudHMnO1xyXG5pbXBvcnQgeyBPdHBBdXRoTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvT3RwQXV0aE1vZGVsJztcclxuaW1wb3J0IHsgVXNlckRldGFpbHNNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9Vc2VyRGV0YWlsc01vZGVsJztcclxuaW1wb3J0IHsgVXNlck1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1VzZXJNb2RlbCc7XHJcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbC91dGlsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdG9yYWdlIH0gZnJvbSAnQGlvbmljL3N0b3JhZ2UtYW5ndWxhcic7XHJcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBDbGFpbWFudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2xhaW1hbnQtY29udGV4dC9jbGFpbWFudC1jb250ZXh0LnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9naW5TZXJ2aWNlIHtcclxuXHJcbiAgb3B0aW9ucyA9IHt9O1xyXG5cclxuICBwcml2YXRlIHVzZXJCcyA6IEJlaGF2aW9yU3ViamVjdDxVc2VyTW9kZWw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcclxuICBwcml2YXRlIHVzZXJJZEluVW5pdEJzIDogQmVoYXZpb3JTdWJqZWN0PFVzZXJNb2RlbFtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XHJcbiAgcHJpdmF0ZSBtZW51QnMgOiBCZWhhdmlvclN1YmplY3Q8TWVudUl0ZW1bXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xyXG5cclxuICBwcml2YXRlIHVzZXIgOiBVc2VyTW9kZWw7XHJcblxyXG4gIHByaXZhdGUgYXV0aENvZGUgOiBzdHJpbmc7XHJcblxyXG4gIHNldEF1dGhDb2RlKGF1dGhjb2RlIDogc3RyaW5nKXtcclxuICAgIHRoaXMuYXV0aENvZGUgPSBhdXRoY29kZTtcclxuICB9XHJcblxyXG4gIGdldEF1dGhjb2RlKCl7XHJcbiAgICByZXR1cm4gdGhpcy5hdXRoQ29kZTtcclxuICB9XHJcblxyXG4gIGdldFVzZXIoKSA6IFVzZXJNb2RlbHtcclxuICAgIHJldHVybiB0aGlzLnVzZXJCcy5nZXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckJzKCkgOiBCZWhhdmlvclN1YmplY3Q8VXNlck1vZGVsPntcclxuICAgIHJldHVybiB0aGlzLnVzZXJCcztcclxuICB9XHJcblxyXG4gIGdldE1lbnVCcygpIDogQmVoYXZpb3JTdWJqZWN0PE1lbnVJdGVtW10+e1xyXG4gICAgcmV0dXJuIHRoaXMubWVudUJzO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2V0VXNlcihyZXMgOiBVc2VyTW9kZWwpe1xyXG4gICAgaWYocmVzKXtcclxuICAgICAgbGV0IHVzZXIgPSBuZXcgVXNlck1vZGVsKCk7XHJcbiAgICAgIHVzZXIuZmlyc3ROYW1lID0gcmVzLmZpcnN0TmFtZTtcclxuICAgICAgdXNlci5sYXN0TmFtZSA9IHJlcy5sYXN0TmFtZTtcclxuICAgICAgdXNlci51c2VybmFtZSA9IHJlc1sndXNlcl9uYW1lJ107XHJcbiAgICAgIHVzZXIubWlkZGxlTmFtZSA9IHJlcy5taWRkbGVOYW1lO1xyXG4gICAgICB1c2VyLmlzQWN0aXZlID0gcmVzLmlzQWN0aXZlXHJcbiAgICAgIHVzZXIucm9sZXMgPSByZXMucm9sZXM7XHJcbiAgICAgIHVzZXIuZnVuY3Rpb25zID0gcmVzLmZ1bmN0aW9ucztcclxuICAgICAgdXNlci5kb2IgPSByZXMuZG9iO1xyXG4gICAgICB1c2VyLnVzZXJUeXBlID0gcmVzLnVzZXJUeXBlO1xyXG4gICAgICB1c2VyLmdlbmRlciA9IHJlcy5nZW5kZXI7XHJcbiAgICAgIHVzZXIuZW1haWxJZD1yZXMuZW1haWxJZDtcclxuICAgICAgdXNlci5wYXNzd29yZEV4cGlyYXRpb25EYXRlID0gcmVzLnBhc3N3b3JkRXhwaXJhdGlvbkRhdGU7XHJcbiAgICAgIHVzZXIuZW1haWxTdGF0dXMgPSByZXMuZW1haWxTdGF0dXM7XHJcbiAgICAgIHVzZXIuaXNMb2dnZWRJbiA9IHJlcy5pc0xvZ2dlZEluO1xyXG4gICAgICB1c2VyLmNoYW5nZVB3ZCA9IHJlcy5jaGFuZ2VQd2Q7XHJcbiAgICAgIHVzZXIuZXhwaXJhdGlvbiA9IHJlcy5leHBpcmF0aW9uO1xyXG4gICAgICB1c2VyLmV4cGlyZXNfaW4gPSByZXMuZXhwaXJlc19pbjtcclxuICAgICAgdXNlci5zc24gPSByZXMuc3NuO1xyXG4gICAgICB1c2VyLmxhbmd1YWdlPXJlcy5sYW5ndWFnZTtcclxuICAgICAgdXNlci5jbGFpbWFudElkID0gcmVzLmNsYWltYW50SWQ7XHJcbiAgICAgIHVzZXIuZW1wbG95ZXJJZCA9IHJlcy5lbXBsb3llcklkO1xyXG4gICAgICB1c2VyLmNvb2tpZU5hbWUgPSByZXMuY29va2llTmFtZTtcclxuICAgICAgdXNlci5jb29raWVWYWx1ZSA9IHJlcy5jb29raWVWYWx1ZTtcclxuICAgICAgdXNlci51c2VyVW5pdCA9IHJlcy51c2VyVW5pdDtcclxuICAgICAgdXNlci5kb21haW5OYW1lID0gcmVzLmRvbWFpbk5hbWU7XHJcbiAgICAgIHVzZXIuaXMyRkFSZXF1aXJlZCA9IHJlcy5pczJGQVJlcXVpcmVkO1xyXG4gICAgICB1c2VyLmRheXNUaWxsUGFzc3dvcmRFeHBpcmUgPSByZXMuZGF5c1RpbGxQYXNzd29yZEV4cGlyZTtcclxuICAgICAgdXNlci5pc0VtYWlsVmVyaWZpY2F0aW9uUmVxdWlyZWQgPSByZXMuaXNFbWFpbFZlcmlmaWNhdGlvblJlcXVpcmVkO1xyXG4gICAgICB1c2VyLmNlbGxwaG9uZU5vID0gcmVzLmNlbGxwaG9uZU5vO1xyXG4gICAgICB1c2VyLmNlbGxwaG9uZVN0YXR1cyA9IHJlcy5jZWxscGhvbmVTdGF0dXM7XHJcbiAgICAgIHVzZXIuc3VwcG9ydGVkTWZhVHlwZXMgPSByZXMuc3VwcG9ydGVkTWZhVHlwZXM7XHJcbiAgICAgIGlmKHJlcy5hY2Nlc3NfdG9rZW4gJiYgcmVzLnJlZnJlc2hfdG9rZW4pe1xyXG4gICAgICAgIHVzZXIuYWNjZXNzX3Rva2VuID0gcmVzLmFjY2Vzc190b2tlbjtcclxuICAgICAgICB1c2VyLnJlZnJlc2hfdG9rZW4gPSByZXMucmVmcmVzaF90b2tlbjtcclxuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0KCdhY2Nlc3NfdG9rZW4nLCByZXMuYWNjZXNzX3Rva2VuKTtcclxuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0KCdyZWZyZXNoX3Rva2VuJywgcmVzLnJlZnJlc2hfdG9rZW4pO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB1c2VyLmFjY2Vzc190b2tlbiA9IHRoaXMudXNlci5hY2Nlc3NfdG9rZW47XHJcbiAgICAgICAgdXNlci5yZWZyZXNoX3Rva2VuID0gdGhpcy51c2VyLnJlZnJlc2hfdG9rZW47XHJcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldCgnYWNjZXNzX3Rva2VuJywgdGhpcy51c2VyLmFjY2Vzc190b2tlbik7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldCgncmVmcmVzaF90b2tlbicsIHRoaXMudXNlci5yZWZyZXNoX3Rva2VuKTtcclxuICAgICAgfVxyXG4gICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0KCd1c2VybmFtZScsIGJ0b2EodXNlci51c2VybmFtZSkpO1xyXG4gICAgICBsZXQgc2hvd19kaXNjbG9zdXJlID0gYXdhaXQgdGhpcy5zdG9yYWdlLmdldCgnc2hvd19kaXNjbG9zdXJlJyk7XHJcbiAgICAgIGlmKHNob3dfZGlzY2xvc3VyZSA9PSBudWxsIHx8IHNob3dfZGlzY2xvc3VyZSA9PSB1bmRlZmluZWQgfHwgc2hvd19kaXNjbG9zdXJlICE9ICdmYWxzZScpe1xyXG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zZXQoJ3Nob3dfZGlzY2xvc3VyZScsICd0cnVlJyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy51c2VyID0gdXNlcjtcclxuICAgICAgdGhpcy51c2VyQnMubmV4dCh0aGlzLnVzZXIpO1xyXG4gICAgICBpZih0aGlzLnV0aWwuaXNTdGF0ZSgnbXMnKSl7XHJcbiAgICAgICAgaWYoIXVzZXIuaXMyRkFSZXF1aXJlZCl7XHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZUNvb2tpZShMaWJDb25zdGFudHMuc3NvQ29va2llTmFtZSwgYFwiJHt1c2VyLmNvb2tpZVZhbHVlfVwiYCwgdXNlci5leHBpcmF0aW9uKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEZ1bGxOYW1lKCl7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRVc2VyKCkuZmlyc3ROYW1lICsgKHRoaXMuZ2V0VXNlcigpLm1pZGRsZU5hbWUgIT0gbnVsbCA/ICcgJyArIHRoaXMuZ2V0VXNlcigpLm1pZGRsZU5hbWUgOiAnJykgKyAnICcgKyB0aGlzLmdldFVzZXIoKS5sYXN0TmFtZTtcclxuICB9XHJcblxyXG4gIGdldElzVXNlclByb2ZpbGVDb21wbGV0ZSgpe1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRVc2VyKCkudXNlclByb2ZpbGVDb21wbGV0ZTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1dGlsIDogVXRpbFNlcnZpY2UsIHByaXZhdGUgc3RvcmFnZTogU3RvcmFnZSwgcHJpdmF0ZSBjbGFpbWFudENvbnRleHRTZXJ2aWNlIDogQ2xhaW1hbnRDb250ZXh0U2VydmljZSkgeyBcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgZ2V0VXNlclBlcnNvbmFsRGV0YWlscygpIDogT2JzZXJ2YWJsZTxVc2VyRGV0YWlsc01vZGVsPntcclxuICAgIHJldHVybiB0aGlzLnV0aWwuZ2V0PFVzZXJEZXRhaWxzTW9kZWw+KCd1c2VyL2RldGFpbHMvJyArIHRoaXMudXNlci51c2VybmFtZSk7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZU90cCh1c2VySWQgOiBzdHJpbmcsIHR5cGUgOiBzdHJpbmcpe1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbC5nZXQoYHVzZXIvdjIvb3RwLyR7dXNlcklkfT90eXBlPSR7dHlwZX1gKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlT3RwRm9yTmV3VXNlckNyZWF0aW9uKHBob25lOiBzdHJpbmcsIHR5cGU6IHN0cmluZyl7XHJcbiAgICByZXR1cm4gdGhpcy51dGlsLmdldChgdXNlci9vdHAvcGhvbmUvJHtwaG9uZX0/dHlwZT0ke3R5cGV9YCk7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZU90cEZvckxvZ2dlZEluVXNlcigpe1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbC5nZXQoYHVzZXIvZ2VuZXJhdGUvb3RwYCk7XHJcbiAgfVxyXG5cclxuICB2ZXJpZnlPdHBGb3JQaG9uZU51bWJlcihjb2RlOiBzdHJpbmcsIHBob25lOiBzdHJpbmcsIGlzUmV0dXJuaW5nVXNlcjogYm9vbGVhbiwgc3NuOiBTdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIGNvbnN0IHVybCA9IGB1c2VyL290cC9waG9uZS92ZXJpZnkvJHtjb2RlfT9waG9uZT0ke3Bob25lfSZpc1JldHVybmluZ1VzZXI9JHtpc1JldHVybmluZ1VzZXJ9JnNzbj0ke3NzbiA/IHNzbiA6IFwiXCJ9YDtcclxuICAgIHJldHVybiB0aGlzLnV0aWwuZ2V0KHVybCk7XHJcbiAgfVxyXG5cclxuICBsb2dpbihhdXRoIDogT3RwQXV0aE1vZGVsKXtcclxuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgLy9cIkFjY2VwdFwiIDogXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIlxyXG4gICAgfSk7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB7IGhlYWRlcnM6IGhlYWRlcnMgfTtcclxuXHJcbiAgICBsZXQgYXV0aERhdGEgOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgYXV0aERhdGEuc2V0KCdncmFudF90eXBlJywgJ3Bhc3N3b3JkJyk7XHJcbiAgICBhdXRoRGF0YS5zZXQoJ3VzZXJuYW1lJywgYXV0aC51c2VySWQpO1xyXG4gICAgYXV0aERhdGEuc2V0KCdwYXNzd29yZCcsIGF1dGgucGFzc3dvcmQpO1xyXG4gICAgYXV0aERhdGEuc2V0KCdsYW5ndWFnZScsYXV0aC5sYW5ndWFnZSk7XHJcbiAgICByZXR1cm4gdGhpcy51dGlsLnBvc3RGb3JtRGF0YTxVc2VyTW9kZWw+KCdvYXV0aC90b2tlbicsIGF1dGhEYXRhLHRoaXMub3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBsb2dpbkFuZENoZWNrRm9yTUZBKGF1dGggOiBPdHBBdXRoTW9kZWwpe1xyXG4gICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAvL1wiQWNjZXB0XCIgOiBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiXHJcbiAgICB9KTtcclxuICAgIHRoaXMub3B0aW9ucyA9IHsgaGVhZGVyczogaGVhZGVycyB9O1xyXG5cclxuICAgIGxldCBhdXRoRGF0YSA6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBhdXRoRGF0YS5zZXQoJ2dyYW50X3R5cGUnLCAnbWZhJyk7XHJcbiAgICBhdXRoRGF0YS5zZXQoJ3VzZXJuYW1lJywgYXV0aC51c2VySWQpO1xyXG4gICAgYXV0aERhdGEuc2V0KCdwYXNzd29yZCcsIGF1dGgucGFzc3dvcmQpO1xyXG4gICAgYXV0aERhdGEuc2V0KCdsYW5ndWFnZScsbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSk7XHJcbiAgICBpZihhdXRoLm90cCl7XHJcbiAgICAgIGF1dGhEYXRhLnNldCgnbWZhX2NvZGUnLCBhdXRoLm90cCk7XHJcbiAgICAgIGF1dGhEYXRhLnNldCgnaXNfdHJ1c3RlZF9kZXZpY2UnLCBhdXRoLmlzdHJ1c3RlZERldmljZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMudXRpbC5wb3N0Rm9ybURhdGE8VXNlck1vZGVsPignb2F1dGgvdG9rZW4nLCBhdXRoRGF0YSx0aGlzLm9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVmcmVzaFRva2VuKHJlZnJlc2hUb2tlbil7XHJcbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgIFwiQWNjZXB0XCIgOiBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiLFxyXG4gICAgICAnQXV0aG9yaXphdGlvbic6IGBCYXNpYyBgICsgYnRvYShgJHtMaWJDb25zdGFudHMub2F1dGhDbGllbnRVc2VyfToke0xpYkNvbnN0YW50cy5vYXV0aENsaWVudFNlY3JldH1gKVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB7IGhlYWRlcnM6IGhlYWRlcnMgfTtcclxuXHJcbiAgICBsZXQgYXV0aERhdGEgOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgYXV0aERhdGEuc2V0KCdncmFudF90eXBlJywgJ3JlZnJlc2hfdG9rZW4nKTtcclxuICAgIGF1dGhEYXRhLnNldCgnY2xpZW50X2lkJywgTGliQ29uc3RhbnRzLm9hdXRoQ2xpZW50VXNlcik7XHJcbiAgICBhdXRoRGF0YS5zZXQoJ3JlZnJlc2hfdG9rZW4nLCByZWZyZXNoVG9rZW4pOyAgXHJcbiAgICByZXR1cm4gdGhpcy51dGlsLnBvc3RGb3JtRGF0YTxVc2VyTW9kZWw+KGBvYXV0aC90b2tlbmAsIGF1dGhEYXRhLCB0aGlzLm9wdGlvbnMpLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbG9hZFVzZXJJbmZvKCl7XHJcbiAgICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICBcIkFjY2VwdFwiIDogXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIlxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5vcHRpb25zID0geyBoZWFkZXJzOiBoZWFkZXJzIH07XHJcbiAgICAgIGxldCBhdXRoVG9rZW4gPSBhd2FpdCB0aGlzLmdldFN0b3JlZEFjY2Vzc1RvcGVuKCk7XHJcbiAgICAgIHJldHVybiB0aGlzLnV0aWwuZ2V0PFVzZXJNb2RlbD4oYG9hdXRoL2NoZWNrX3Rva2VuP3Rva2VuPSR7YXV0aFRva2VufWApLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0U3RvcmVkQWNjZXNzVG9wZW4oKXtcclxuICAgIGxldCBhY2Nlc3NUb2tlbiA9IGF3YWl0IHRoaXMuc3RvcmFnZS5nZXQoJ2FjY2Vzc190b2tlbicpLnRoZW4ocmVzID0+IHJlcyk7XHJcbiAgICByZXR1cm4gYWNjZXNzVG9rZW47XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZU90cFVucmVnaXN0ZXJlZChtb2JpbGVObyA6IHN0cmluZyl7XHJcbiAgICByZXR1cm4gdGhpcy51dGlsLmdldCgnYXV0aC9vdHAvbmV3dXNlci8nICsgbW9iaWxlTm8pO1xyXG4gIH1cclxuXHJcbiAgc2lnblVwKHVzZXJNb2RlbCA6IFVzZXJNb2RlbCl7XHJcbiAgICByZXR1cm4gdGhpcy51dGlsLnBvc3QoJ3VzZXInLCB1c2VyTW9kZWwpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUGVyc29uYWxEZXRhaWxzKHVzckR0bHMgOiBVc2VyRGV0YWlsc01vZGVsKXtcclxuICAgIHJldHVybiB0aGlzLnV0aWwucG9zdCgndXNlci9kZXRhaWxzJywgdXNyRHRscyk7XHJcbiAgfVxyXG5cclxuICByZXNldCgpe1xyXG4gICAgdGhpcy51c2VyID0gbnVsbDtcclxuICAgIHRoaXMudXNlckJzLm5leHQobnVsbCk7XHJcbiAgICB0aGlzLm1lbnVCcy5uZXh0KG51bGwpO1xyXG4gICAgdGhpcy5zdG9yYWdlLnJlbW92ZSgnYWNjZXNzX3Rva2VuJyk7XHJcbiAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlKCdyZWZyZXNoX3Rva2VuJyk7XHJcbiAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlKCdzaG93X2Rpc2Nsb3N1cmUnKTtcclxuICAgIHRoaXMuc3RvcmFnZS5yZW1vdmUoJ3VzZXJuYW1lJyk7XHJcbiAgICB0aGlzLmNsYWltYW50Q29udGV4dFNlcnZpY2UuY2xlYXJDb250ZXh0KCk7XHJcbiAgICB0aGlzLnJlbW92ZUNvb2tpZXMoKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUNvb2tpZXMoKXtcclxuICAgIHRoaXMuZGVsZXRlQ29va2llKCdhdCcpO1xyXG4gICAgdGhpcy5kZWxldGVDb29raWUoJ3J0Jyk7XHJcbiAgICB0aGlzLmRlbGV0ZUNvb2tpZShMaWJDb25zdGFudHMuc3NvQ29va2llTmFtZSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVDb29raWUoY29va2llTmFtZSl7XHJcbiAgICBsZXQgY29va2llID0gYCR7Y29va2llTmFtZX09OyBNYXgtQWdlPTA7IHBhdGg9LzsgZG9tYWluPSR7TGliQ29uc3RhbnRzLnNzb0RvbWFpbn1gO1xyXG4gICAgZG9jdW1lbnQuY29va2llID0gY29va2llO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlQ29va2llKGNvb2tpZU5hbWUsIHZhbHVlLCBleHBpcmF0aW9uKXtcclxuICAgIGxldCBjb29raWUgPSBgJHtjb29raWVOYW1lfT0ke3ZhbHVlfTsgZXhwaXJlcz0ke2V4cGlyYXRpb24gKyAnLjAwMCd9OyBwYXRoPS87IGRvbWFpbj0ke0xpYkNvbnN0YW50cy5zc29Eb21haW59YDtcclxuICAgIGRvY3VtZW50LmNvb2tpZSA9IGNvb2tpZTtcclxuICB9XHJcblxyXG4gIGxvZ291dCgpe1xyXG4gICAgaWYodGhpcy51c2VyKXtcclxuICAgICAgdGhpcy51dGlsLmdldCgndXNlci9sb2dvdXQnKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpO1xyXG4gICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMucmVzZXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzTG9nZ2VkSW4oKXtcclxuICAgIHJldHVybiB0aGlzLnVzZXIgJiYgdGhpcy51c2VyLmlzTG9nZ2VkSW47XHJcbiAgfVxyXG5cclxuICBpczJGQVJlcXVpcmVkKCl7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyICYmIHRoaXMudXNlci5pczJGQVJlcXVpcmVkO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUHJvZmlsZSh1c2VyIDogVXNlck1vZGVsKXtcclxuICAgIHJldHVybiB0aGlzLnV0aWwucG9zdCgndXNlci9wcm9maWxlJywgdXNlcik7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVQYXNzd29yZChvbGRQYXNzd29yZCwgbmV3UGFzc3dvcmQsIGNvbmZpcm1QYXNzd29yZCl7XHJcbiAgICBsZXQgcHdkQ2hhbmdlTW9kZWwgOiB7b2xkUGFzc3dvcmQ6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgY29uZmlybVBhc3N3b3JkOiBzdHJpbmd9ID0ge29sZFBhc3N3b3JkOiBvbGRQYXNzd29yZCwgcGFzc3dvcmQ6IG5ld1Bhc3N3b3JkLCBjb25maXJtUGFzc3dvcmQ6IGNvbmZpcm1QYXNzd29yZH07XHJcbiAgICByZXR1cm4gdGhpcy51dGlsLnBvc3QoYHVzZXIvcGFzc3dvcmQvJHt0aGlzLmdldFVzZXIoKS51c2VybmFtZX1gLCBwd2RDaGFuZ2VNb2RlbCk7XHJcbiAgfVxyXG5cclxuICBpbml0aWF0ZUZvcmdvdFBhc3N3b3JkKHVzZXJJZCA6IHN0cmluZyl7XHJcbiAgICByZXR1cm4gdGhpcy51dGlsLmdldChgdXNlci9wYXNzd29yZC9yZXNldC8ke3VzZXJJZH1gKTtcclxuICB9XHJcblxyXG4gIGluaXRpYXRlRm9yZ290UGFzc3dvcmRWMih1c2VySWQgOiBzdHJpbmcpe1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbC5nZXQoYHVzZXIvdjIvcGFzc3dvcmQvcmVzZXQvJHt1c2VySWR9YCk7XHJcbiAgfVxyXG5cclxuICBoYXNSb2xlKHJvbGVOYW1lIDogc3RyaW5nKSA6IGJvb2xlYW57XHJcbiAgICByZXR1cm4gdGhpcy51c2VyICYmIHRoaXMudXNlci5yb2xlcyAmJiB0aGlzLnVzZXIucm9sZXMuaW5jbHVkZXMocm9sZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgaGFzRnVuY3Rpb24oZnVuY3Rpb25OYW1lIDogc3RyaW5nKSA6IGJvb2xlYW57XHJcbiAgICByZXR1cm4gdGhpcy51c2VyICYmIHRoaXMudXNlci5mdW5jdGlvbnMgJiYgdGhpcy51c2VyLmZ1bmN0aW9ucy5pbmNsdWRlcyhmdW5jdGlvbk5hbWUpO1xyXG4gIH1cclxuXHJcbiAgaGFzUm9sZXMoLi4ucm9sZXMgOiBzdHJpbmdbXSl7XHJcbiAgICBsZXQgaXNQcmVzZW50ID0gZmFsc2U7XHJcbiAgICBmb3IodmFyIGkgPSAwIDsgaSA8IHJvbGVzLmxlbmd0aCA7IGkrKyl7XHJcbiAgICAgIGlmKHRoaXMuaGFzUm9sZShyb2xlc1tpXS50b1N0cmluZygpKSl7XHJcbiAgICAgICAgaXNQcmVzZW50ID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzUHJlc2VudDtcclxuICB9XHJcblxyXG4gIGhhc0Z1bmN0aW9ucyguLi5mdW5jdGlvbnMgOiBzdHJpbmdbXSl7XHJcbiAgICBsZXQgaXNQcmVzZW50ID0gZmFsc2U7XHJcbiAgICBmb3IodmFyIGkgPSAwIDsgaSA8IGZ1bmN0aW9ucy5sZW5ndGggOyBpKyspe1xyXG4gICAgICBpZih0aGlzLmhhc0Z1bmN0aW9uKGZ1bmN0aW9uc1tpXSkpe1xyXG4gICAgICAgIGlzUHJlc2VudCA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBpc1ByZXNlbnQ7XHJcbiAgfVxyXG5cclxuICBjaGVja1JvbGVzKHJvbGVzIDogc3RyaW5nW10pe1xyXG4gICAgbGV0IGlzUHJlc2VudCA9IGZhbHNlO1xyXG4gICAgZm9yKHZhciBpID0gMCA7IGkgPCByb2xlcy5sZW5ndGggOyBpKyspe1xyXG4gICAgICBpZih0aGlzLmhhc1JvbGUocm9sZXNbaV0udG9TdHJpbmcoKSkpe1xyXG4gICAgICAgIGlzUHJlc2VudCA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBpc1ByZXNlbnQ7XHJcbiAgfVxyXG5cclxuICBjaGVja0Z1bmN0aW9ucyhmdW5jdGlvbnMgOiBzdHJpbmdbXSl7XHJcbiAgICBsZXQgaXNQcmVzZW50ID0gZmFsc2U7XHJcbiAgICBmb3IodmFyIGkgPSAwIDsgaSA8IGZ1bmN0aW9ucy5sZW5ndGggOyBpKyspe1xyXG4gICAgICBpZih0aGlzLmhhc0Z1bmN0aW9uKGZ1bmN0aW9uc1tpXSkpe1xyXG4gICAgICAgIGlzUHJlc2VudCA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBpc1ByZXNlbnQ7XHJcbiAgfVxyXG5cclxuICBpc0Nzcigpe1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0VXNlcigpICYmIHRoaXMuZ2V0VXNlcigpLnVzZXJUeXBlID09PSAnTURFUydcclxuICB9XHJcblxyXG4gIGlzRW1wbG95ZXIoKXtcclxuICAgIHJldHVybiB0aGlzLmdldFVzZXIoKSAmJiB0aGlzLmdldFVzZXIoKS51c2VyVHlwZSA9PT0gJ0VNUEwnXHJcbiAgfVxyXG5cclxuICBpc1RwYSgpe1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0VXNlcigpICYmIHRoaXMuZ2V0VXNlcigpLnVzZXJUeXBlID09PSAnVFBBJ1xyXG4gIH1cclxuXHJcbiAgaXNDbGFpbWFudCgpe1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0VXNlcigpICYmIHRoaXMuZ2V0VXNlcigpLnVzZXJUeXBlID09PSAnQ0xNVCdcclxuICB9XHJcblxyXG4gIGhhc1NzbkFzc29jaWF0ZWQoKSA6IGJvb2xlYW57XHJcbiAgICByZXR1cm4gdGhpcy5nZXRVc2VyKCkgJiYgdGhpcy5nZXRVc2VyKCkudXNlclR5cGUgPT09ICdDTE1UJyAmJiB0aGlzLmdldFVzZXIoKS5zc24gIT09IHVuZGVmaW5lZCBcclxuICB9XHJcblxyXG4gIGdldFVzZXJNZW51cygpe1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbC5nZXQ8TWVudUl0ZW1bXT4oYG1lbnUvYCk7XHJcbiAgfVxyXG5cclxuICBtYXJrRmF2KG1lbnVJZCA6IHN0cmluZyl7XHJcbiAgICByZXR1cm4gdGhpcy51dGlsLnBvc3Q8TWVudUl0ZW1bXT4oYG1lbnUvZmF2LyR7bWVudUlkfWAsIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRmF2KG1lbnVJZCA6IHN0cmluZyl7XHJcbiAgICByZXR1cm4gdGhpcy51dGlsLmRlbGV0ZTxNZW51SXRlbVtdPihgbWVudS9mYXYvJHttZW51SWR9YCk7XHJcbiAgfVxyXG5cclxuICBnZXRGYXZvdXJpdGVNZW51KCl7XHJcbiAgICByZXR1cm4gdGhpcy51dGlsLmdldDxNZW51SXRlbVtdPihgbWVudS9mYXZgKTtcclxuICB9XHJcblxyXG4gIGdldFRyZW5kaW5nTWVudSgpe1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbC5nZXQ8TWVudUl0ZW1bXT4oYG1lbnUvdHJlbmRpbmdgKTtcclxuICB9XHJcblxyXG4gIHZlcmlmeUVtYWlsKGNvZGUgOiBzdHJpbmcpe1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbC5wb3N0KGB1c2VyL2VtYWlsLyR7Y29kZX1gLCBudWxsKTtcclxuICB9XHJcblxyXG4gIGdldE5ld0NvZGUoKXtcclxuICAgIHJldHVybiB0aGlzLnV0aWwuZ2V0KGB1c2VyL2VtYWlsYCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVFbWFpbEFuZEdldE5ld0NvZGUoZW1haWwgOiBzdHJpbmcpe1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbC5wYXRjaChgdXNlci9lbWFpbC8ke2VtYWlsfWAsIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TmV3QXV0aENvZGUodHlwZSA6IHN0cmluZyl7XHJcbiAgICByZXR1cm4gdGhpcy51dGlsLmdldChgdXNlci9vdHA/dHlwZT0ke3R5cGV9YCk7XHJcbiAgfVxyXG5cclxuICBhc3NvY2lhdGVTc25Ub1VzZXJJZChzc24gOiBzdHJpbmcpe1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbC5wb3N0KGBjbGFpbWFudC9hc3NvY2lhdGUtc3NuLyR7c3NufWAsIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlcklkSW5Vbml0QnMoKXtcclxuICAgIHJldHVybiB0aGlzLnVzZXJJZEluVW5pdEJzO1xyXG4gIH1cclxuXHJcbiAgbG9hZFVzZXJJZHNGcm9tVW5pdE9mTG9nZ2VkSW5Vc2VyKHVuaXRJZCA6IHN0cmluZyl7XHJcbiAgICBpZih0aGlzLnVzZXJJZEluVW5pdEJzLmdldFZhbHVlKCkgPT0gbnVsbClcclxuICAgICAgdGhpcy51dGlsLmdldDxVc2VyTW9kZWxbXT4oYHVzZXIvYWxsLyR7dW5pdElkfWApXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB0aGlzLnVzZXJJZEluVW5pdEJzLm5leHQocmVzKSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -215,14 +215,14 @@ export class AppValidators {
|
|
|
215
215
|
};
|
|
216
216
|
}
|
|
217
217
|
/**
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
218
|
+
*
|
|
219
|
+
* @param weekstart and weekEnd date
|
|
220
|
+
* @param error earningsRequired error which should be returned in case validation fails
|
|
221
|
+
*
|
|
222
|
+
* @description Form validator to validate earnings and hours worked is avalible if ldw falls within the week of filling
|
|
223
|
+
*
|
|
224
|
+
* @author Steevan Macwan
|
|
225
|
+
*/
|
|
226
226
|
static requireEarningsIfWorked(sunDate, satDate) {
|
|
227
227
|
return (group) => {
|
|
228
228
|
const lastDayWorked = group.get('lastDayWorked')?.value;
|
|
@@ -250,4 +250,4 @@ export class AppValidators {
|
|
|
250
250
|
};
|
|
251
251
|
}
|
|
252
252
|
}
|
|
253
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwVmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvdmFsaWRhdGlvbnMvQXBwVmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFDeEI7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBa0I7UUFDdEMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssSUFBSSxTQUFTLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQzFELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEVBQUMsY0FBYyxFQUFFLElBQUksRUFBQyxDQUFDO0lBQ2hDLENBQUM7SUFDRCxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBa0I7UUFDaEQsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSyxFQUFFO1lBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLG1DQUFtQyxDQUFDLFNBQTJCO1FBQ3BFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0RCxNQUFNLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNwRSxPQUFPLFFBQVEsS0FBSyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMxRSxDQUFD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QixDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztpQkFDdkU7Z0JBRUQsbUVBQW1FO2dCQUNuRSxJQUFJLENBQUMsWUFBWSxJQUFJLFlBQVksS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksV0FBVyxLQUFLLENBQUMsRUFBRTtvQkFDNUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxDQUFDO2lCQUNuQzthQUNGO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG4vKioqXHJcbiAqIFxyXG4gKiBAZGVzY3JpcHRpb24gQ2xhc3MgQ29udGFpbnMgYWxsIGNvbW1vbiBmb3JtIHZhbGlkYXRpb24gdXNlZCBpbiB0aGUgcHJvamVjdC5cclxuICogQGF1dGhvciBQcmVyYWsgVGl3YXJpXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQXBwVmFsaWRhdG9ycyB7XHJcbiAgLyoqXHJcbiAgICogY2hlY2tzIGlmIHN0YXRlIGZpZWxkIGhhcyBhIHZhbHVlIG90aGVyIHRoYW4gS1NcclxuICAgKiBAcGFyYW0gYyBjb250cm9sXHJcbiAgICogQHJldHVybnMge3JlcXVpcmVkS2Fuc2FzOiBib29sZWFufVxyXG4gICAqL1xyXG4gIHN0YXRpYyByZXF1aXJlZEthbnNhcyhjOiBBYnN0cmFjdENvbnRyb2wpOiB7cmVxdWlyZWRLYW5zYXM6IGJvb2xlYW59IHtcclxuICAgIGlmIChjLnZhbHVlPy52YWx1ZSA9PSB1bmRlZmluZWQgfHwgYy52YWx1ZT8udmFsdWUgPT09ICdLUycpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge3JlcXVpcmVkS2Fuc2FzOiB0cnVlfTtcclxuICB9XHJcbiAgc3RhdGljIGNvbmZpcm1QYXNzd29yZFZhbGlkYXRvcihjOiBBYnN0cmFjdENvbnRyb2wpOiB7IGludmFsaWQ6IGJvb2xlYW4gfSB7XHJcbiAgICBpZiAoYy5nZXQoJ3Bhc3N3b3JkJykudmFsdWUgIT0gYy5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiB7IGludmFsaWQ6IHRydWUgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBwYXNzd29yZEFuZENvbmZpcm1QYXNzd29yZE11c3RNYXRjaChmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXApIHtcclxuICAgIGNvbnN0IHsgdmFsdWU6IHBhc3N3b3JkIH0gPSBmb3JtR3JvdXAuZ2V0KCdwYXNzd29yZCcpO1xyXG4gICAgY29uc3QgeyB2YWx1ZTogY29uZmlybVBhc3N3b3JkIH0gPSBmb3JtR3JvdXAuZ2V0KCdjb25maXJtUGFzc3dvcmQnKTtcclxuICAgIHJldHVybiBwYXNzd29yZCA9PT0gY29uZmlybVBhc3N3b3JkID8gbnVsbCA6IHsgcGFzc3dvcmROb3RNYXRjaDogdHJ1ZSB9O1xyXG4gIH1cclxuXHJcbiAgLy8gQGR5bmFtaWNcclxuICBzdGF0aWMgY29uZmlybVZhbGlkYXRvcihjb250cm9sTmFtZTogc3RyaW5nLCBtYXRjaGluZ0NvbnRyb2xOYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGZ1bmMgPSAoZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNbY29udHJvbE5hbWVdO1xyXG4gICAgICBjb25zdCBtYXRjaGluZ0NvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNbbWF0Y2hpbmdDb250cm9sTmFtZV07XHJcbiAgICAgIGlmIChtYXRjaGluZ0NvbnRyb2wuZXJyb3JzICYmICFtYXRjaGluZ0NvbnRyb2wuZXJyb3JzLmNvbmZpcm1lZFZhbGlkYXRvcikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29udHJvbC52YWx1ZSAhPT0gbWF0Y2hpbmdDb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgbWF0Y2hpbmdDb250cm9sLnNldEVycm9ycyh7IG5vdE1hdGNoOiB0cnVlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG1hdGNoaW5nQ29udHJvbC5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmdW5jO1xyXG4gIH1cclxuICBcclxuICAvLyBAZHluYW1pY1xyXG4gIHN0YXRpYyBzZWxlY3RBdGxlYXN0T25lKHZhbGlkYXRvcjogVmFsaWRhdG9yRm4pIHtcclxuICAgIGNvbnN0IGZ1bmMgPSAoZ3JvdXA6IFVudHlwZWRGb3JtR3JvdXApOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgIGNvbnN0IGlzQXRsZWFzdE9uZVBhc3NUaGVWYWxpZGF0aW9uID0gZ3JvdXAgJiYgZ3JvdXAuY29udHJvbHMgJiYgT2JqZWN0LmtleXMoZ3JvdXAuY29udHJvbHMpLnNvbWUoayA9PiAhdmFsaWRhdG9yKGdyb3VwLmNvbnRyb2xzW2tdKSk7XHJcbiAgICAgIHJldHVybiBpc0F0bGVhc3RPbmVQYXNzVGhlVmFsaWRhdGlvbiA/IG51bGwgOiB7IHNlbGVjdEF0bGVhc3RPbmU6IHRydWUgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBmdW5jO1xyXG4gIH1cclxuXHJcbiAgLy8gQGR5bmFtaWNcclxuICBzdGF0aWMgYXRMZWFzdE9uZU5vblplcm9WYWx1ZVZhbGlkYXRvcihtaW5SZXF1aXJlZDogbnVtYmVyID0gMSwgbmFtZT86IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiB2YWxpZGF0ZShmb3JtR3JvdXA6IEZvcm1Hcm91cCkge1xyXG4gICAgICBsZXQgbm9PZk5vblplcm9WYWx1ZXMgPSAwXHJcbiAgICAgIE9iamVjdC5rZXlzKGZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNba2V5XVxyXG4gICAgICAgIGxldCB2YWx1ZSA9IG5hbWUgPyAgY29udHJvbC52YWx1ZVtuYW1lXSA6IGNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgaWYgKHZhbHVlID4gMCkge1xyXG4gICAgICAgICAgbm9PZk5vblplcm9WYWx1ZXMrK1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgaWYgKG5vT2ZOb25aZXJvVmFsdWVzIDwgbWluUmVxdWlyZWQpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgcmVxdWlyZUNoZWNrYm94VG9CZUNoZWNrZWQ6IHRydWUsXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIEBkeW5hbWljXHJcbiAgc3RhdGljIHJlcXVpcmVkSWZWYWxpZGF0b3IocHJlZGljYXRlKSB7XHJcbiAgICByZXR1cm4gKGZvcm1Db250cm9sKSA9PiB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgaWYgKCFmb3JtQ29udHJvbCkge1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwcmVkaWNhdGUoKSkge1xyXG4gICAgICAgICAgY29uc3QgdmFsID0gZm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICAvLyBDaGVjayBmb3IgbnVsbCwgdW5kZWZpbmVkLCBvciBlbXB0eSBzdHJpbmdcclxuICAgICAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQgfHwgdmFsID09PSAnJykge1xyXG4gICAgICAgICAgICByZXR1cm4geyByZXF1aXJlZDogJ3JlcXVpcmVkJyB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBjYXRjaChlKXtcclxuICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHJlZ2V4IFJlZ3VsYXIgRXhwcmVzc2lvbiBhZ2FpbnN0IHdoaWNoIHZhbHVlIG5lZWRzIHRvIGJlIHZhbGlkYXRlZFxyXG4gICAqIEBwYXJhbSBlcnJvciBFcnJvciB3aGljaCBzaG91bGQgYmUgcmV0dXJuZWQgaW4gY2FzZSB2YWxpZGF0aW9uIGZhaWxzXHJcbiAgICogXHJcbiAgICogQGRlc2NyaXB0aW9uIEZvcm0gdmFsaWRhdG9yIHRvIHZhbGlkYXRlIGNvbnRyb2wgdmFsdWUgYWdhaW5zdCBhIHJlZ3VsYXIgZXhwcmVzc2lvblxyXG4gICAqIFxyXG4gICAqIEBhdXRob3IgUHJlcmFrIFRpd2FyaVxyXG4gICAqL1xyXG4gICBzdGF0aWMgbWF0Y2gocmVnZXg6IFJlZ0V4cCwgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICBjb25zdCBmdW5jID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPT4ge1xyXG4gICAgICBpZiAoIWNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICAvLyBpZiBjb250cm9sIGlzIGVtcHR5IHJldHVybiBubyBlcnJvclxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyB0ZXN0IHRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbCBhZ2FpbnN0IHRoZSByZWdleHAgc3VwcGxpZWRcclxuICAgICAgY29uc3QgdmFsaWQgPSByZWdleC50ZXN0KGNvbnRyb2wudmFsdWUpO1xyXG4gICAgICAvLyBpZiB0cnVlLCByZXR1cm4gbm8gZXJyb3IgKG5vIGVycm9yKSwgZWxzZSByZXR1cm4gZXJyb3IgcGFzc2VkIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyXHJcbiAgICAgIHJldHVybiB2YWxpZCA/IG51bGwgOiBlcnJvcjtcclxuICAgIH07XHJcbiAgICByZXR1cm4gZnVuYztcclxuICB9XHJcblxyXG4gICAgLyoqKlxyXG4gICAgKiBUaGlzIG1ldGhvZCBjaGVja3MgaWYgdGhlIGVudGVyZWQgcm91dGluZyBudW1iZXIgaXMgdmFsaWQgb3Igbm90IGFzIHBlciBmb2xsb3dpbmcgbG9naWNcclxuICAgICogXHJcbiAgICAqICgzICogKGQxICsgZDQgKyBkNykgKyA3ICogKGQyICsgZDUgKyBkOCkgKyAxICogKGQzICsgZDYgKyBkOSkgKSBtb2QgMTAgPSAwXHJcbiAgICAqIFxyXG4gICAgKiAgVGhpcyBmb3JtdWxhIGlzIHRha2VuIGZyb20gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm91dGluZ190cmFuc2l0X251bWJlciNNSUNSX1JvdXRpbmdfbnVtYmVyX2Zvcm1hdFxyXG4gICAgKi9cclxuICBzdGF0aWMgaXNWYWxpZFJvdXRpbmdOdW1iZXIoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIGxldCByb3V0aW5nTnVtYmVyID0gY29udHJvbC52YWx1ZTtcclxuICAgIGxldCBzdW0gPSAwLCBtb2QgPSAwO1xyXG4gICAgbGV0IHJvdXRpbmdOdW1iZXJBcnIgPSAocm91dGluZ051bWJlciArIFwiXCIpLnNwbGl0KFwiXCIpO1xyXG4gICAgbGV0IHN1bTEgPSAzICogKHBhcnNlSW50KHJvdXRpbmdOdW1iZXJBcnJbMF0pICsgcGFyc2VJbnQocm91dGluZ051bWJlckFyclszXSkgKyBwYXJzZUludChyb3V0aW5nTnVtYmVyQXJyWzZdKSk7XHJcbiAgICBsZXQgc3VtMiA9IDcgKiAocGFyc2VJbnQocm91dGluZ051bWJlckFyclsxXSkgKyBwYXJzZUludChyb3V0aW5nTnVtYmVyQXJyWzRdKSArIHBhcnNlSW50KHJvdXRpbmdOdW1iZXJBcnJbN10pKTtcclxuICAgIGxldCBzdW0zID0gMSAqIChwYXJzZUludChyb3V0aW5nTnVtYmVyQXJyWzJdKSArIHBhcnNlSW50KHJvdXRpbmdOdW1iZXJBcnJbNV0pICsgcGFyc2VJbnQocm91dGluZ051bWJlckFycls4XSkpO1xyXG5cclxuICAgIHN1bSA9IHN1bTEgKyBzdW0yICsgc3VtMztcclxuICAgIG1vZCA9IHN1bSAlIDEwO1xyXG5cclxuICAgIGlmICghKG1vZCA9PSAwKSkge1xyXG4gICAgICByZXR1cm4geyBpc1JvdXRpbmdOdW1iZXJOb3RWYWxpZDogdHJ1ZSB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgXHJcbiAgc3RhdGljIGlzVmFsaWRMZW5ndGhSb3V0aW5nTnVtYmVyKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfXtcclxuICAgIGRlYnVnZ2VyO1xyXG4gICBpZihjb250cm9sLnZhbHVlICE9IG51bGwgJiYgKGNvbnRyb2wudmFsdWUubGVuZ3RoICE9IDkpKXtcclxuICAgICAgcmV0dXJuIHtpbnZhbGlkTGVuZ3RoUm91dGluZyA6IHRydWV9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzVmFsaWRaaXBDb2RlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfXtcclxuICAgIGlmKGNvbnRyb2wudmFsdWUgIT0gbnVsbCAmJiAhQXBwVmFsaWRhdG9ycy5pc051bWJlcihjb250cm9sLnZhbHVlKSl7XHJcbiAgICAgIHJldHVybiB7aW52YWxpZE51bWJlciA6IHRydWV9O1xyXG4gICAgfWVsc2UgaWYoY29udHJvbC52YWx1ZSAhPSBudWxsICYmIChjb250cm9sLnZhbHVlLmxlbmd0aCA9PSA1IHx8IGNvbnRyb2wudmFsdWUubGVuZ3RoID09IDkpKXtcclxuICAgICAgLy9kbyBub3RoaW5nXHJcbiAgICB9ZWxzZXtcclxuICAgICAgcmV0dXJuIHtpbnZhbGlkTGVuZ3RoIDogdHJ1ZX07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNWYWxpZENhbmFkaWFuWmlwQ29kZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgaWYoIUFwcFZhbGlkYXRvcnMuaXNDYW5hZGFaaXBDb2RlKGNvbnRyb2wudmFsdWUpKXtcclxuICAgICAgcmV0dXJuIHtpbnZhbGlkWmlwQ29kZSA6IHRydWV9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzQ2FuYWRhWmlwQ29kZShzdHJpbmcpIHtcclxuICAgIHZhciByZWcgPSAvXltBQkNFR0hKLU5QUlNUVlhZXVxcZFtBQkNFR0hKLU5QUlNUVi1aXVsgLV0/XFxkW0FCQ0VHSEotTlBSU1RWLVpdXFxkJC9pO1xyXG4gICAgcmV0dXJuIHJlZy50ZXN0KHN0cmluZyk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNOdW1iZXIobnVtYmVyKSB7XHJcbiAgICB2YXIgcmVnID0gbmV3IFJlZ0V4cChcIl5bMC05XSokXCIpOyBcclxuICAgIHJldHVybiByZWcudGVzdChudW1iZXIpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzQmV0d2Vlbihmcm9tIDogRGF0ZSwgdG86IERhdGUpIDogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgLy8gaWYgY29udHJvbCBpcyBlbXB0eSByZXR1cm4gbm8gZXJyb3JcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBsZXQgd3NEYXRlID0gY29udHJvbC52YWx1ZTtcclxuICAgICAgaWYod3NEYXRlLmdldFRpbWUoKSA8IGZyb20uZ2V0VGltZSgpIHx8IHdzRGF0ZS5nZXRUaW1lKCkgPiB0by5nZXRUaW1lKCkpe1xyXG4gICAgICAgIHJldHVybiB7ZGF0ZU5vdEJldHdlZW4gOiB0cnVlfTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBlcXVhbChtYXRjaGluZ0NvbnRyb2xOYW1lOiBzdHJpbmcsIGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnBhcmVudCkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBtYXRjaGluZ0NvbnRyb2w6IEFic3RyYWN0Q29udHJvbCA9IGNvbnRyb2wucGFyZW50LmdldChtYXRjaGluZ0NvbnRyb2xOYW1lKTtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlIHx8ICFtYXRjaGluZ0NvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICAvLyBpZiBjb250cm9sIGlzIGVtcHR5IHJldHVybiBubyBlcnJvclxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCB2YWxpZCA9IChjb250cm9sLnZhbHVlID09PSBtYXRjaGluZ0NvbnRyb2wudmFsdWUpO1xyXG5cclxuICAgICAgLy8gaWYgdHJ1ZSwgcmV0dXJuIG5vIGVycm9yIChubyBlcnJvciksIGVsc2UgcmV0dXJuIGVycm9yIHBhc3NlZCBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlclxyXG4gICAgICByZXR1cm4gdmFsaWQgPyBudWxsIDogZXJyb3I7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIG1hdGNoaW5nQ29udHJvbE5hbWUgRm9ybSBjb250cm9sIG5hbWUgYWdhaW5zdCB3aGljaCBjdXJyZW50IGZvcm0gY29udHJvbCB2YWx1ZSBzaG91bGQgYmUgbWF0Y2hlZFxyXG4gICAqIEBwYXJhbSBlcnJvciBFcnJvciB3aGljaCBzaG91bGQgYmUgcmV0dXJuZWQgaW4gY2FzZSB2YWxpZGF0aW9uIGZhaWxzXHJcbiAgICogXHJcbiAgICogQGRlc2NyaXB0aW9uIEZvcm0gdmFsaWRhdG9yIHRvIHZhbGlkYXRlIGNvbnRyb2wgdmFsdWUgYWdhaW5zdCBhIG90aGVyIGNvbnRyb2wgdmFsdWVcclxuICAgKiBcclxuICAgKiBAYXV0aG9yIFByZXJhayBUaXdhcmlcclxuICAgKi9cclxuICBzdGF0aWMgbm90RXF1YWwobWF0Y2hpbmdDb250cm9sTmFtZTogc3RyaW5nLCBlcnJvcjogVmFsaWRhdGlvbkVycm9ycyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9PiB7XHJcbiAgICAgIGlmICghY29udHJvbC5wYXJlbnQpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBsZXQgbWF0Y2hpbmdDb250cm9sOiBBYnN0cmFjdENvbnRyb2wgPSBjb250cm9sLnBhcmVudC5nZXQobWF0Y2hpbmdDb250cm9sTmFtZSk7XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZSB8fCAhbWF0Y2hpbmdDb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgLy8gaWYgY29udHJvbCBpcyBlbXB0eSByZXR1cm4gbm8gZXJyb3JcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgdmFsaWQgPSAoY29udHJvbC52YWx1ZSAhPT0gbWF0Y2hpbmdDb250cm9sLnZhbHVlKTtcclxuXHJcbiAgICAgIC8vIGlmIHRydWUsIHJldHVybiBubyBlcnJvciAobm8gZXJyb3IpLCBlbHNlIHJldHVybiBlcnJvciBwYXNzZWQgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXJcclxuICAgICAgcmV0dXJuIHZhbGlkID8gbnVsbCA6IGVycm9yO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gd2Vla3N0YXJ0IGFuZCB3ZWVrRW5kIGRhdGVcclxuICAgKiBAcGFyYW0gZXJyb3IgZWFybmluZ3NSZXF1aXJlZCBlcnJvciB3aGljaCBzaG91bGQgYmUgcmV0dXJuZWQgaW4gY2FzZSB2YWxpZGF0aW9uIGZhaWxzXHJcbiAgICogXHJcbiAgICogQGRlc2NyaXB0aW9uIEZvcm0gdmFsaWRhdG9yIHRvIHZhbGlkYXRlIGVhcm5pbmdzIGFuZCBob3VycyB3b3JrZWQgaXMgYXZhbGlibGUgaWYgbGR3IGZhbGxzIHdpdGhpbiB0aGUgd2VlayBvZiBmaWxsaW5nXHJcbiAgICogXHJcbiAgICogQGF1dGhvciBTdGVldmFuIE1hY3dhblxyXG4gICAqL1xyXG4gICBzdGF0aWMgcmVxdWlyZUVhcm5pbmdzSWZXb3JrZWQoc3VuRGF0ZTogRGF0ZSwgc2F0RGF0ZTogRGF0ZSk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoZ3JvdXA6IEZvcm1Hcm91cCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuICAgICAgY29uc3QgbGFzdERheVdvcmtlZDogRGF0ZSA9IGdyb3VwLmdldCgnbGFzdERheVdvcmtlZCcpPy52YWx1ZTtcclxuICAgICAgY29uc3QgZ3Jvc3NFYXJuaW5nOiBudW1iZXIgPSBncm91cC5nZXQoJ2dyb3NzRWFybmluZycpPy52YWx1ZTtcclxuICAgICAgY29uc3QgaG91cnNXb3JrZWQ6IG51bWJlciA9IGdyb3VwLmdldCgnaG91cnNXb3JrZWRJbldlZWsnKT8udmFsdWU7XHJcblxyXG4gICAgICAvLyBTa2lwIGlmIGxhc3REYXlXb3JrZWQgaXMgbWlzc2luZ1xyXG4gICAgICBpZiAoIWxhc3REYXlXb3JrZWQpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgbGFzdERheSA9IGxhc3REYXlXb3JrZWQgaW5zdGFuY2VvZiBEYXRlID8gbGFzdERheVdvcmtlZCA6IG5ldyBEYXRlKGxhc3REYXlXb3JrZWQpO1xyXG5cclxuICAgICAgLy8gQ2hlY2sgaWYgbGFzdERheVdvcmtlZCBmYWxscyB3aXRoaW4gdGhlIHdlZWtcclxuICAgICAgaWYgKGxhc3REYXkgPj0gc3VuRGF0ZSAmJiBsYXN0RGF5IDw9IHNhdERhdGUpIHtcclxuICAgICAgICBpZiAoIWdyb3NzRWFybmluZyB8fCBncm9zc0Vhcm5pbmcgPT09IDApIHtcclxuICAgICAgICAgIGdyb3VwLmdldCgnZ3Jvc3NFYXJuaW5nJyk/LnNldEVycm9ycyh7IGVhcm5pbmdzUmVxdWlyZWQ6IHRydWUgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaG91cnNXb3JrZWQgfHwgaG91cnNXb3JrZWQgPT09IDApIHtcclxuICAgICAgICAgIGdyb3VwLmdldCgnaG91cnNXb3JrZWRJbldlZWsnKT8uc2V0RXJyb3JzKHsgZWFybmluZ3NSZXF1aXJlZDogdHJ1ZSB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIElmIHdvcmsgd2FzIHBlcmZvcm1lZCBidXQgZ3Jvc3NFYXJuaW5nIG9yIGhvdXJzV29ya2VkIGlzIG1pc3NpbmdcclxuICAgICAgICBpZiAoIWdyb3NzRWFybmluZyB8fCBncm9zc0Vhcm5pbmcgPT09IDAgfHwgIWhvdXJzV29ya2VkIHx8IGhvdXJzV29ya2VkID09PSAwKSB7XHJcbiAgICAgICAgICByZXR1cm4geyBlYXJuaW5nc1JlcXVpcmVkOiB0cnVlIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG59Il19
|
|
253
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwVmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvdmFsaWRhdGlvbnMvQXBwVmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFDeEI7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBa0I7UUFDdEMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssSUFBSSxTQUFTLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQzFELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEVBQUMsY0FBYyxFQUFFLElBQUksRUFBQyxDQUFDO0lBQ2hDLENBQUM7SUFDRCxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBa0I7UUFDaEQsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSyxFQUFFO1lBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLG1DQUFtQyxDQUFDLFNBQTJCO1FBQ3BFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0RCxNQUFNLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNwRSxPQUFPLFFBQVEsS0FBSyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMxRSxDQUFDO0lBRUQsV0FBVztJQUNYLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFtQixFQUFFLG1CQUEyQjtRQUN0RSxNQUFNLElBQUksR0FBRyxDQUFDLFNBQTJCLEVBQUUsRUFBRTtZQUMzQyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2hELE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNoRSxJQUFJLGVBQWUsQ0FBQyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFO2dCQUN4RSxPQUFPO2FBQ1I7WUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssZUFBZSxDQUFDLEtBQUssRUFBRTtnQkFDM0MsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQy9DO2lCQUFNO2dCQUNMLGVBQWUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDakM7UUFDSCxDQUFDLENBQUE7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxXQUFXO0lBQ1gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQXNCO1FBQzVDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBdUIsRUFBMkIsRUFBRTtZQUNoRSxNQUFNLDZCQUE2QixHQUFHLEtBQUssSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RJLE9BQU8sNkJBQTZCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUMzRSxDQUFDLENBQUE7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxXQUFXO0lBQ1gsTUFBTSxDQUFDLCtCQUErQixDQUFDLGNBQXNCLENBQUMsRUFBRSxJQUFhO1FBQzNFLE9BQU8sU0FBUyxRQUFRLENBQUMsU0FBb0I7WUFDM0MsSUFBSSxpQkFBaUIsR0FBRyxDQUFDLENBQUE7WUFDekIsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUM1QyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUN2QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQ3hELElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtvQkFDYixpQkFBaUIsRUFBRSxDQUFBO2lCQUNwQjtZQUNILENBQUMsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxpQkFBaUIsR0FBRyxXQUFXLEVBQUU7Z0JBQ25DLE9BQU87b0JBQ0wsMEJBQTBCLEVBQUUsSUFBSTtpQkFDakMsQ0FBQTthQUNGO1lBQ0QsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDLENBQUE7SUFDSCxDQUFDO0lBQ0QsV0FBVztJQUNYLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTO1FBQ2xDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNyQixJQUFJO2dCQUNGLElBQUksQ0FBQyxXQUFXLEVBQUU7b0JBQ2hCLE9BQU8sSUFBSSxDQUFDO2lCQUNiO2dCQUNELElBQUksU0FBUyxFQUFFLEVBQUU7b0JBQ2YsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztvQkFDOUIsNkNBQTZDO29CQUM3QyxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLFNBQVMsSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO3dCQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxDQUFDO3FCQUNqQztpQkFDRjtnQkFDRCxPQUFPLElBQUksQ0FBQzthQUNiO1lBQ0QsT0FBTSxDQUFDLEVBQUM7Z0JBQ1AsT0FBTyxJQUFJLENBQUM7YUFDWjtRQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNGLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBYSxFQUFFLEtBQXVCO1FBQ2xELE1BQU0sSUFBSSxHQUFHLENBQUMsT0FBd0IsRUFBMEIsRUFBRTtZQUNoRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtnQkFDbEIsc0NBQXNDO2dCQUN0QyxPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsNERBQTREO1lBQzVELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLHdGQUF3RjtZQUN4RixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDOUIsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUM7Ozs7OztNQU1FO0lBQ0osTUFBTSxDQUFDLG9CQUFvQixDQUFDLE9BQXdCO1FBQ2xELElBQUksYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDbEMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDckIsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEQsSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9HLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFL0csR0FBRyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLEdBQUcsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBRWYsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ2YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSxDQUFDO1NBQzFDO1FBQ0QsT0FBTztJQUNULENBQUM7SUFHRCxNQUFNLENBQUMsMEJBQTBCLENBQUMsT0FBd0I7UUFDeEQsUUFBUSxDQUFDO1FBQ1YsSUFBRyxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxFQUFDO1lBQ3JELE9BQU8sRUFBQyxvQkFBb0IsRUFBRyxJQUFJLEVBQUMsQ0FBQztTQUN0QztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQXdCO1FBQzVDLElBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBQztZQUNqRSxPQUFPLEVBQUMsYUFBYSxFQUFHLElBQUksRUFBQyxDQUFDO1NBQy9CO2FBQUssSUFBRyxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsRUFBQztZQUN6RixZQUFZO1NBQ2I7YUFBSTtZQUNILE9BQU8sRUFBQyxhQUFhLEVBQUcsSUFBSSxFQUFDLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLHNCQUFzQixDQUFDLE9BQXdCO1FBQ3BELElBQUcsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBQztZQUMvQyxPQUFPLEVBQUMsY0FBYyxFQUFHLElBQUksRUFBQyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsTUFBTTtRQUMzQixJQUFJLEdBQUcsR0FBRyxzRUFBc0UsQ0FBQztRQUNqRixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTTtRQUNwQixJQUFJLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBVyxFQUFFLEVBQVE7UUFDcEMsT0FBTyxDQUFDLE9BQXdCLEVBQTBCLEVBQUU7WUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7Z0JBQ2xCLHNDQUFzQztnQkFDdEMsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUNELElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDM0IsSUFBRyxNQUFNLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUM7Z0JBQ3RFLE9BQU8sRUFBQyxjQUFjLEVBQUcsSUFBSSxFQUFDLENBQUM7YUFDaEM7UUFDSCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxtQkFBMkIsRUFBRSxLQUF1QjtRQUMvRCxPQUFPLENBQUMsT0FBd0IsRUFBMEIsRUFBRTtZQUMxRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtnQkFDbkIsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUNELElBQUksZUFBZSxHQUFvQixPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQy9FLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRTtnQkFDNUMsc0NBQXNDO2dCQUN0QyxPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUV4RCx3RkFBd0Y7WUFDeEYsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzlCLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxRQUFRLENBQUMsbUJBQTJCLEVBQUUsS0FBdUI7UUFDbEUsT0FBTyxDQUFDLE9BQXdCLEVBQTBCLEVBQUU7WUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7Z0JBQ25CLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCxJQUFJLGVBQWUsR0FBb0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUMvRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUU7Z0JBQzVDLHNDQUFzQztnQkFDdEMsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELE1BQU0sS0FBSyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFeEQsd0ZBQXdGO1lBQ3hGLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM5QixDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxNQUFNLENBQUMsdUJBQXVCLENBQUMsT0FBYSxFQUFFLE9BQWE7UUFDekQsT0FBTyxDQUFDLEtBQWdCLEVBQTJCLEVBQUU7WUFDbkQsTUFBTSxhQUFhLEdBQVMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDOUQsTUFBTSxZQUFZLEdBQVcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDOUQsTUFBTSxXQUFXLEdBQVcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEtBQUssQ0FBQztZQUVsRSxtQ0FBbUM7WUFDbkMsSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDbEIsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELE1BQU0sT0FBTyxHQUFHLGFBQWEsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFeEYsK0NBQStDO1lBQy9DLElBQUksT0FBTyxJQUFJLE9BQU8sSUFBSSxPQUFPLElBQUksT0FBTyxFQUFFO2dCQUM1QyxJQUFJLENBQUMsWUFBWSxJQUFJLFlBQVksS0FBSyxDQUFDLEVBQUU7b0JBQ3ZDLEtBQUssQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztpQkFDbEU7Z0JBQ0QsSUFBSSxDQUFDLFdBQVcsSUFBSSxXQUFXLEtBQUssQ0FBQyxFQUFFO29CQUNyQyxLQUFLLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztpQkFDdkU7Z0JBRUQsbUVBQW1FO2dCQUNuRSxJQUFJLENBQUMsWUFBWSxJQUFJLFlBQVksS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksV0FBVyxLQUFLLENBQUMsRUFBRTtvQkFDNUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxDQUFDO2lCQUNuQzthQUNGO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG4vKioqXHJcbiAqIFxyXG4gKiBAZGVzY3JpcHRpb24gQ2xhc3MgQ29udGFpbnMgYWxsIGNvbW1vbiBmb3JtIHZhbGlkYXRpb24gdXNlZCBpbiB0aGUgcHJvamVjdC5cclxuICogQGF1dGhvciBQcmVyYWsgVGl3YXJpXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQXBwVmFsaWRhdG9ycyB7XHJcbiAgLyoqXHJcbiAgICogY2hlY2tzIGlmIHN0YXRlIGZpZWxkIGhhcyBhIHZhbHVlIG90aGVyIHRoYW4gS1NcclxuICAgKiBAcGFyYW0gYyBjb250cm9sXHJcbiAgICogQHJldHVybnMge3JlcXVpcmVkS2Fuc2FzOiBib29sZWFufVxyXG4gICAqL1xyXG4gIHN0YXRpYyByZXF1aXJlZEthbnNhcyhjOiBBYnN0cmFjdENvbnRyb2wpOiB7cmVxdWlyZWRLYW5zYXM6IGJvb2xlYW59IHtcclxuICAgIGlmIChjLnZhbHVlPy52YWx1ZSA9PSB1bmRlZmluZWQgfHwgYy52YWx1ZT8udmFsdWUgPT09ICdLUycpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge3JlcXVpcmVkS2Fuc2FzOiB0cnVlfTtcclxuICB9XHJcbiAgc3RhdGljIGNvbmZpcm1QYXNzd29yZFZhbGlkYXRvcihjOiBBYnN0cmFjdENvbnRyb2wpOiB7IGludmFsaWQ6IGJvb2xlYW4gfSB7XHJcbiAgICBpZiAoYy5nZXQoJ3Bhc3N3b3JkJykudmFsdWUgIT0gYy5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiB7IGludmFsaWQ6IHRydWUgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBwYXNzd29yZEFuZENvbmZpcm1QYXNzd29yZE11c3RNYXRjaChmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXApIHtcclxuICAgIGNvbnN0IHsgdmFsdWU6IHBhc3N3b3JkIH0gPSBmb3JtR3JvdXAuZ2V0KCdwYXNzd29yZCcpO1xyXG4gICAgY29uc3QgeyB2YWx1ZTogY29uZmlybVBhc3N3b3JkIH0gPSBmb3JtR3JvdXAuZ2V0KCdjb25maXJtUGFzc3dvcmQnKTtcclxuICAgIHJldHVybiBwYXNzd29yZCA9PT0gY29uZmlybVBhc3N3b3JkID8gbnVsbCA6IHsgcGFzc3dvcmROb3RNYXRjaDogdHJ1ZSB9O1xyXG4gIH1cclxuXHJcbiAgLy8gQGR5bmFtaWNcclxuICBzdGF0aWMgY29uZmlybVZhbGlkYXRvcihjb250cm9sTmFtZTogc3RyaW5nLCBtYXRjaGluZ0NvbnRyb2xOYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGZ1bmMgPSAoZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNbY29udHJvbE5hbWVdO1xyXG4gICAgICBjb25zdCBtYXRjaGluZ0NvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNbbWF0Y2hpbmdDb250cm9sTmFtZV07XHJcbiAgICAgIGlmIChtYXRjaGluZ0NvbnRyb2wuZXJyb3JzICYmICFtYXRjaGluZ0NvbnRyb2wuZXJyb3JzLmNvbmZpcm1lZFZhbGlkYXRvcikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29udHJvbC52YWx1ZSAhPT0gbWF0Y2hpbmdDb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgbWF0Y2hpbmdDb250cm9sLnNldEVycm9ycyh7IG5vdE1hdGNoOiB0cnVlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG1hdGNoaW5nQ29udHJvbC5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmdW5jO1xyXG4gIH1cclxuICBcclxuICAvLyBAZHluYW1pY1xyXG4gIHN0YXRpYyBzZWxlY3RBdGxlYXN0T25lKHZhbGlkYXRvcjogVmFsaWRhdG9yRm4pIHtcclxuICAgIGNvbnN0IGZ1bmMgPSAoZ3JvdXA6IFVudHlwZWRGb3JtR3JvdXApOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgIGNvbnN0IGlzQXRsZWFzdE9uZVBhc3NUaGVWYWxpZGF0aW9uID0gZ3JvdXAgJiYgZ3JvdXAuY29udHJvbHMgJiYgT2JqZWN0LmtleXMoZ3JvdXAuY29udHJvbHMpLnNvbWUoayA9PiAhdmFsaWRhdG9yKGdyb3VwLmNvbnRyb2xzW2tdKSk7XHJcbiAgICAgIHJldHVybiBpc0F0bGVhc3RPbmVQYXNzVGhlVmFsaWRhdGlvbiA/IG51bGwgOiB7IHNlbGVjdEF0bGVhc3RPbmU6IHRydWUgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBmdW5jO1xyXG4gIH1cclxuXHJcbiAgLy8gQGR5bmFtaWNcclxuICBzdGF0aWMgYXRMZWFzdE9uZU5vblplcm9WYWx1ZVZhbGlkYXRvcihtaW5SZXF1aXJlZDogbnVtYmVyID0gMSwgbmFtZT86IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiB2YWxpZGF0ZShmb3JtR3JvdXA6IEZvcm1Hcm91cCkge1xyXG4gICAgICBsZXQgbm9PZk5vblplcm9WYWx1ZXMgPSAwXHJcbiAgICAgIE9iamVjdC5rZXlzKGZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNba2V5XVxyXG4gICAgICAgIGxldCB2YWx1ZSA9IG5hbWUgPyAgY29udHJvbC52YWx1ZVtuYW1lXSA6IGNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgaWYgKHZhbHVlID4gMCkge1xyXG4gICAgICAgICAgbm9PZk5vblplcm9WYWx1ZXMrK1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgaWYgKG5vT2ZOb25aZXJvVmFsdWVzIDwgbWluUmVxdWlyZWQpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgcmVxdWlyZUNoZWNrYm94VG9CZUNoZWNrZWQ6IHRydWUsXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIEBkeW5hbWljXHJcbiAgc3RhdGljIHJlcXVpcmVkSWZWYWxpZGF0b3IocHJlZGljYXRlKSB7XHJcbiAgICByZXR1cm4gKGZvcm1Db250cm9sKSA9PiB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgaWYgKCFmb3JtQ29udHJvbCkge1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwcmVkaWNhdGUoKSkge1xyXG4gICAgICAgICAgY29uc3QgdmFsID0gZm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICAvLyBDaGVjayBmb3IgbnVsbCwgdW5kZWZpbmVkLCBvciBlbXB0eSBzdHJpbmdcclxuICAgICAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQgfHwgdmFsID09PSAnJykge1xyXG4gICAgICAgICAgICByZXR1cm4geyByZXF1aXJlZDogJ3JlcXVpcmVkJyB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBjYXRjaChlKXtcclxuICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHJlZ2V4IFJlZ3VsYXIgRXhwcmVzc2lvbiBhZ2FpbnN0IHdoaWNoIHZhbHVlIG5lZWRzIHRvIGJlIHZhbGlkYXRlZFxyXG4gICAqIEBwYXJhbSBlcnJvciBFcnJvciB3aGljaCBzaG91bGQgYmUgcmV0dXJuZWQgaW4gY2FzZSB2YWxpZGF0aW9uIGZhaWxzXHJcbiAgICogXHJcbiAgICogQGRlc2NyaXB0aW9uIEZvcm0gdmFsaWRhdG9yIHRvIHZhbGlkYXRlIGNvbnRyb2wgdmFsdWUgYWdhaW5zdCBhIHJlZ3VsYXIgZXhwcmVzc2lvblxyXG4gICAqIFxyXG4gICAqIEBhdXRob3IgUHJlcmFrIFRpd2FyaVxyXG4gICAqL1xyXG4gICBzdGF0aWMgbWF0Y2gocmVnZXg6IFJlZ0V4cCwgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICBjb25zdCBmdW5jID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPT4ge1xyXG4gICAgICBpZiAoIWNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICAvLyBpZiBjb250cm9sIGlzIGVtcHR5IHJldHVybiBubyBlcnJvclxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyB0ZXN0IHRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbCBhZ2FpbnN0IHRoZSByZWdleHAgc3VwcGxpZWRcclxuICAgICAgY29uc3QgdmFsaWQgPSByZWdleC50ZXN0KGNvbnRyb2wudmFsdWUpO1xyXG4gICAgICAvLyBpZiB0cnVlLCByZXR1cm4gbm8gZXJyb3IgKG5vIGVycm9yKSwgZWxzZSByZXR1cm4gZXJyb3IgcGFzc2VkIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyXHJcbiAgICAgIHJldHVybiB2YWxpZCA/IG51bGwgOiBlcnJvcjtcclxuICAgIH07XHJcbiAgICByZXR1cm4gZnVuYztcclxuICB9XHJcblxyXG4gICAgLyoqKlxyXG4gICAgKiBUaGlzIG1ldGhvZCBjaGVja3MgaWYgdGhlIGVudGVyZWQgcm91dGluZyBudW1iZXIgaXMgdmFsaWQgb3Igbm90IGFzIHBlciBmb2xsb3dpbmcgbG9naWNcclxuICAgICogXHJcbiAgICAqICgzICogKGQxICsgZDQgKyBkNykgKyA3ICogKGQyICsgZDUgKyBkOCkgKyAxICogKGQzICsgZDYgKyBkOSkgKSBtb2QgMTAgPSAwXHJcbiAgICAqIFxyXG4gICAgKiAgVGhpcyBmb3JtdWxhIGlzIHRha2VuIGZyb20gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm91dGluZ190cmFuc2l0X251bWJlciNNSUNSX1JvdXRpbmdfbnVtYmVyX2Zvcm1hdFxyXG4gICAgKi9cclxuICBzdGF0aWMgaXNWYWxpZFJvdXRpbmdOdW1iZXIoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIGxldCByb3V0aW5nTnVtYmVyID0gY29udHJvbC52YWx1ZTtcclxuICAgIGxldCBzdW0gPSAwLCBtb2QgPSAwO1xyXG4gICAgbGV0IHJvdXRpbmdOdW1iZXJBcnIgPSAocm91dGluZ051bWJlciArIFwiXCIpLnNwbGl0KFwiXCIpO1xyXG4gICAgbGV0IHN1bTEgPSAzICogKHBhcnNlSW50KHJvdXRpbmdOdW1iZXJBcnJbMF0pICsgcGFyc2VJbnQocm91dGluZ051bWJlckFyclszXSkgKyBwYXJzZUludChyb3V0aW5nTnVtYmVyQXJyWzZdKSk7XHJcbiAgICBsZXQgc3VtMiA9IDcgKiAocGFyc2VJbnQocm91dGluZ051bWJlckFyclsxXSkgKyBwYXJzZUludChyb3V0aW5nTnVtYmVyQXJyWzRdKSArIHBhcnNlSW50KHJvdXRpbmdOdW1iZXJBcnJbN10pKTtcclxuICAgIGxldCBzdW0zID0gMSAqIChwYXJzZUludChyb3V0aW5nTnVtYmVyQXJyWzJdKSArIHBhcnNlSW50KHJvdXRpbmdOdW1iZXJBcnJbNV0pICsgcGFyc2VJbnQocm91dGluZ051bWJlckFycls4XSkpO1xyXG5cclxuICAgIHN1bSA9IHN1bTEgKyBzdW0yICsgc3VtMztcclxuICAgIG1vZCA9IHN1bSAlIDEwO1xyXG5cclxuICAgIGlmICghKG1vZCA9PSAwKSkge1xyXG4gICAgICByZXR1cm4geyBpc1JvdXRpbmdOdW1iZXJOb3RWYWxpZDogdHJ1ZSB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgXHJcbiAgc3RhdGljIGlzVmFsaWRMZW5ndGhSb3V0aW5nTnVtYmVyKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfXtcclxuICAgIGRlYnVnZ2VyO1xyXG4gICBpZihjb250cm9sLnZhbHVlICE9IG51bGwgJiYgKGNvbnRyb2wudmFsdWUubGVuZ3RoICE9IDkpKXtcclxuICAgICAgcmV0dXJuIHtpbnZhbGlkTGVuZ3RoUm91dGluZyA6IHRydWV9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzVmFsaWRaaXBDb2RlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfXtcclxuICAgIGlmKGNvbnRyb2wudmFsdWUgIT0gbnVsbCAmJiAhQXBwVmFsaWRhdG9ycy5pc051bWJlcihjb250cm9sLnZhbHVlKSl7XHJcbiAgICAgIHJldHVybiB7aW52YWxpZE51bWJlciA6IHRydWV9O1xyXG4gICAgfWVsc2UgaWYoY29udHJvbC52YWx1ZSAhPSBudWxsICYmIChjb250cm9sLnZhbHVlLmxlbmd0aCA9PSA1IHx8IGNvbnRyb2wudmFsdWUubGVuZ3RoID09IDkpKXtcclxuICAgICAgLy9kbyBub3RoaW5nXHJcbiAgICB9ZWxzZXtcclxuICAgICAgcmV0dXJuIHtpbnZhbGlkTGVuZ3RoIDogdHJ1ZX07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNWYWxpZENhbmFkaWFuWmlwQ29kZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgaWYoIUFwcFZhbGlkYXRvcnMuaXNDYW5hZGFaaXBDb2RlKGNvbnRyb2wudmFsdWUpKXtcclxuICAgICAgcmV0dXJuIHtpbnZhbGlkWmlwQ29kZSA6IHRydWV9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzQ2FuYWRhWmlwQ29kZShzdHJpbmcpIHtcclxuICAgIHZhciByZWcgPSAvXltBQkNFR0hKLU5QUlNUVlhZXVxcZFtBQkNFR0hKLU5QUlNUVi1aXVsgLV0/XFxkW0FCQ0VHSEotTlBSU1RWLVpdXFxkJC9pO1xyXG4gICAgcmV0dXJuIHJlZy50ZXN0KHN0cmluZyk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNOdW1iZXIobnVtYmVyKSB7XHJcbiAgICB2YXIgcmVnID0gbmV3IFJlZ0V4cChcIl5bMC05XSokXCIpOyBcclxuICAgIHJldHVybiByZWcudGVzdChudW1iZXIpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzQmV0d2Vlbihmcm9tIDogRGF0ZSwgdG86IERhdGUpIDogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgLy8gaWYgY29udHJvbCBpcyBlbXB0eSByZXR1cm4gbm8gZXJyb3JcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBsZXQgd3NEYXRlID0gY29udHJvbC52YWx1ZTtcclxuICAgICAgaWYod3NEYXRlLmdldFRpbWUoKSA8IGZyb20uZ2V0VGltZSgpIHx8IHdzRGF0ZS5nZXRUaW1lKCkgPiB0by5nZXRUaW1lKCkpe1xyXG4gICAgICAgIHJldHVybiB7ZGF0ZU5vdEJldHdlZW4gOiB0cnVlfTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBlcXVhbChtYXRjaGluZ0NvbnRyb2xOYW1lOiBzdHJpbmcsIGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnBhcmVudCkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBtYXRjaGluZ0NvbnRyb2w6IEFic3RyYWN0Q29udHJvbCA9IGNvbnRyb2wucGFyZW50LmdldChtYXRjaGluZ0NvbnRyb2xOYW1lKTtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlIHx8ICFtYXRjaGluZ0NvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICAvLyBpZiBjb250cm9sIGlzIGVtcHR5IHJldHVybiBubyBlcnJvclxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCB2YWxpZCA9IChjb250cm9sLnZhbHVlID09PSBtYXRjaGluZ0NvbnRyb2wudmFsdWUpO1xyXG5cclxuICAgICAgLy8gaWYgdHJ1ZSwgcmV0dXJuIG5vIGVycm9yIChubyBlcnJvciksIGVsc2UgcmV0dXJuIGVycm9yIHBhc3NlZCBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlclxyXG4gICAgICByZXR1cm4gdmFsaWQgPyBudWxsIDogZXJyb3I7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIG1hdGNoaW5nQ29udHJvbE5hbWUgRm9ybSBjb250cm9sIG5hbWUgYWdhaW5zdCB3aGljaCBjdXJyZW50IGZvcm0gY29udHJvbCB2YWx1ZSBzaG91bGQgYmUgbWF0Y2hlZFxyXG4gICAqIEBwYXJhbSBlcnJvciBFcnJvciB3aGljaCBzaG91bGQgYmUgcmV0dXJuZWQgaW4gY2FzZSB2YWxpZGF0aW9uIGZhaWxzXHJcbiAgICogXHJcbiAgICogQGRlc2NyaXB0aW9uIEZvcm0gdmFsaWRhdG9yIHRvIHZhbGlkYXRlIGNvbnRyb2wgdmFsdWUgYWdhaW5zdCBhIG90aGVyIGNvbnRyb2wgdmFsdWVcclxuICAgKiBcclxuICAgKiBAYXV0aG9yIFByZXJhayBUaXdhcmlcclxuICAgKi9cclxuICBzdGF0aWMgbm90RXF1YWwobWF0Y2hpbmdDb250cm9sTmFtZTogc3RyaW5nLCBlcnJvcjogVmFsaWRhdGlvbkVycm9ycyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9PiB7XHJcbiAgICAgIGlmICghY29udHJvbC5wYXJlbnQpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBsZXQgbWF0Y2hpbmdDb250cm9sOiBBYnN0cmFjdENvbnRyb2wgPSBjb250cm9sLnBhcmVudC5nZXQobWF0Y2hpbmdDb250cm9sTmFtZSk7XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZSB8fCAhbWF0Y2hpbmdDb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgLy8gaWYgY29udHJvbCBpcyBlbXB0eSByZXR1cm4gbm8gZXJyb3JcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgdmFsaWQgPSAoY29udHJvbC52YWx1ZSAhPT0gbWF0Y2hpbmdDb250cm9sLnZhbHVlKTtcclxuXHJcbiAgICAgIC8vIGlmIHRydWUsIHJldHVybiBubyBlcnJvciAobm8gZXJyb3IpLCBlbHNlIHJldHVybiBlcnJvciBwYXNzZWQgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXJcclxuICAgICAgcmV0dXJuIHZhbGlkID8gbnVsbCA6IGVycm9yO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB3ZWVrc3RhcnQgYW5kIHdlZWtFbmQgZGF0ZVxyXG4gICAqIEBwYXJhbSBlcnJvciBlYXJuaW5nc1JlcXVpcmVkIGVycm9yIHdoaWNoIHNob3VsZCBiZSByZXR1cm5lZCBpbiBjYXNlIHZhbGlkYXRpb24gZmFpbHNcclxuICAgKiBcclxuICAgKiBAZGVzY3JpcHRpb24gRm9ybSB2YWxpZGF0b3IgdG8gdmFsaWRhdGUgZWFybmluZ3MgYW5kIGhvdXJzIHdvcmtlZCBpcyBhdmFsaWJsZSBpZiBsZHcgZmFsbHMgd2l0aGluIHRoZSB3ZWVrIG9mIGZpbGxpbmdcclxuICAgKiBcclxuICAgKiBAYXV0aG9yIFN0ZWV2YW4gTWFjd2FuXHJcbiAgICovXHJcbiAgc3RhdGljIHJlcXVpcmVFYXJuaW5nc0lmV29ya2VkKHN1bkRhdGU6IERhdGUsIHNhdERhdGU6IERhdGUpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGdyb3VwOiBGb3JtR3JvdXApOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgIGNvbnN0IGxhc3REYXlXb3JrZWQ6IERhdGUgPSBncm91cC5nZXQoJ2xhc3REYXlXb3JrZWQnKT8udmFsdWU7XHJcbiAgICAgIGNvbnN0IGdyb3NzRWFybmluZzogbnVtYmVyID0gZ3JvdXAuZ2V0KCdncm9zc0Vhcm5pbmcnKT8udmFsdWU7XHJcbiAgICAgIGNvbnN0IGhvdXJzV29ya2VkOiBudW1iZXIgPSBncm91cC5nZXQoJ2hvdXJzV29ya2VkSW5XZWVrJyk/LnZhbHVlO1xyXG5cclxuICAgICAgLy8gU2tpcCBpZiBsYXN0RGF5V29ya2VkIGlzIG1pc3NpbmdcclxuICAgICAgaWYgKCFsYXN0RGF5V29ya2VkKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGxhc3REYXkgPSBsYXN0RGF5V29ya2VkIGluc3RhbmNlb2YgRGF0ZSA/IGxhc3REYXlXb3JrZWQgOiBuZXcgRGF0ZShsYXN0RGF5V29ya2VkKTtcclxuXHJcbiAgICAgIC8vIENoZWNrIGlmIGxhc3REYXlXb3JrZWQgZmFsbHMgd2l0aGluIHRoZSB3ZWVrXHJcbiAgICAgIGlmIChsYXN0RGF5ID49IHN1bkRhdGUgJiYgbGFzdERheSA8PSBzYXREYXRlKSB7XHJcbiAgICAgICAgaWYgKCFncm9zc0Vhcm5pbmcgfHwgZ3Jvc3NFYXJuaW5nID09PSAwKSB7XHJcbiAgICAgICAgICBncm91cC5nZXQoJ2dyb3NzRWFybmluZycpPy5zZXRFcnJvcnMoeyBlYXJuaW5nc1JlcXVpcmVkOiB0cnVlIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWhvdXJzV29ya2VkIHx8IGhvdXJzV29ya2VkID09PSAwKSB7XHJcbiAgICAgICAgICBncm91cC5nZXQoJ2hvdXJzV29ya2VkSW5XZWVrJyk/LnNldEVycm9ycyh7IGVhcm5pbmdzUmVxdWlyZWQ6IHRydWUgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJZiB3b3JrIHdhcyBwZXJmb3JtZWQgYnV0IGdyb3NzRWFybmluZyBvciBob3Vyc1dvcmtlZCBpcyBtaXNzaW5nXHJcbiAgICAgICAgaWYgKCFncm9zc0Vhcm5pbmcgfHwgZ3Jvc3NFYXJuaW5nID09PSAwIHx8ICFob3Vyc1dvcmtlZCB8fCBob3Vyc1dvcmtlZCA9PT0gMCkge1xyXG4gICAgICAgICAgcmV0dXJuIHsgZWFybmluZ3NSZXF1aXJlZDogdHJ1ZSB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gIH1cclxufSJdfQ==
|