@tiba-spark/client-shared-lib 25.4.0-192 → 25.4.0-195
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/libraries/modules/login/login.state.mjs +6 -4
- package/esm2022/libraries/service-proxy/identity-service-proxies.mjs +41 -13
- package/fesm2022/tiba-spark-client-shared-lib.mjs +45 -14
- package/fesm2022/tiba-spark-client-shared-lib.mjs.map +1 -1
- package/libraries/modules/login/login.state.d.ts.map +1 -1
- package/libraries/service-proxy/identity-service-proxies.d.ts +15 -3
- package/libraries/service-proxy/identity-service-proxies.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -9,7 +9,7 @@ import { VERSION_V1 } from '../../constants/version-constants';
|
|
|
9
9
|
import { AppType } from '../../enums/app-type.enum';
|
|
10
10
|
import { Localization } from '../../enums/localization.enum';
|
|
11
11
|
import { ActivateUserDto, UserStatus, UserUpdatePasswordDto } from '../../service-proxy/cloud-service-proxies';
|
|
12
|
-
import { AuthenticateRequestDto, PasswordChangeType, SingleSignOnProvider, Verify2FactorAuthRequestDto } from '../../service-proxy/identity-service-proxies';
|
|
12
|
+
import { AuthenticateBackofficeRequestDto, AuthenticateRequestDto, PasswordChangeType, SingleSignOnProvider, Verify2FactorAuthRequestDto } from '../../service-proxy/identity-service-proxies';
|
|
13
13
|
import { parseApiErrorData, parseApiErrorMessage } from '../../utils/api-helper.util';
|
|
14
14
|
import { HealthAction, LoadAppConfigurationAction, LoadBackofficeAppConfigurationAction, SetTenantUserAction, UpdateAuthTokenAction } from '../auth/session.actions';
|
|
15
15
|
import { AccountSetPasswordAction, AccountSetPasswordErrorAction, AccountSetPasswordInitAction, AuthenticateMultipleTenantsAction, BackofficeAutheticateAction, ForgotPasswordAction, ForgotPasswordTenantlessAction, MobileAuthenticateMultipleTenantsAction, OpenIdAutheticateAction, SetTFASetupAction, ValidateUserTokenAction, Verify2FactorAuthenticationAction } from './login.actions';
|
|
@@ -244,8 +244,10 @@ let LoginState = class LoginState {
|
|
|
244
244
|
localStorage.clear();
|
|
245
245
|
}
|
|
246
246
|
onBackofficeAutheticateAction(ctx, { token, tenantInfo }) {
|
|
247
|
-
|
|
248
|
-
|
|
247
|
+
const authenticateRequestDto = new AuthenticateBackofficeRequestDto();
|
|
248
|
+
authenticateRequestDto.code = token;
|
|
249
|
+
authenticateRequestDto.tenantName = tenantInfo.tenantName;
|
|
250
|
+
const authenticateOidc$ = this.backofficeUserIdentityServiceProxy.backofficeAuthenticate(authenticateRequestDto);
|
|
249
251
|
return authenticateOidc$.pipe(tap({
|
|
250
252
|
next: authResponse => {
|
|
251
253
|
if (authResponse.data.message === Localization.sso_pending_approval) {
|
|
@@ -399,4 +401,4 @@ export { LoginState };
|
|
|
399
401
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginState, decorators: [{
|
|
400
402
|
type: Injectable
|
|
401
403
|
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.UsersCloudServiceProxy }, { type: i3.BackofficeUserIdentityServiceProxy }, { type: i4.OpenIdAuthService }, { type: i3.UsersIdentityServiceProxy }, { type: i5.AuthService }, { type: i6.SessionStorageService }, { type: i7.LoginService }, { type: i8.TranslateService }, { type: i9.MsalService }, { type: i10.MessageBarService }, { type: i11.AppConfigService }, { type: i12.RouteService }, { type: i3.MobileIdentityServiceProxy }], propDecorators: { onAuthenticateMultipleTenantsAction: [], onMobileAuthenticateMultipleTenantsAction: [], onForgotPassword: [], onForgotPasswordTenantless: [], onAccountSetPasswordInitAction: [], onAccountSetPasswordErrorAction: [], onAccountSetPasswordAction: [], onValidateUserTokenAction: [], onVerify2FactorAuthenticationAction: [], onSetTFASetupAction: [], onBackofficeAutheticateAction: [], onOpenIdAutheticateAction: [] } });
|
|
402
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtc2hhcmVkLWxpYi9zcmMvbGlicmFyaWVzL21vZHVsZXMvbG9naW4vbG9naW4uc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBdUIsTUFBTSxhQUFhLENBQUM7QUFDM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQWMsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUU1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDL0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQ2dDLGVBQWUsRUFDSCxVQUFVLEVBQUUscUJBQXFCLEVBQ25GLE1BQU0sMkNBQTJDLENBQUM7QUFDbkQsT0FBTyxFQUN5QixzQkFBc0IsRUFDWSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFDbEMsMkJBQTJCLEVBQ2xHLE1BQU0sOENBQThDLENBQUM7QUFLdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFJdEYsT0FBTyxFQUFFLFlBQVksRUFBRSwwQkFBMEIsRUFBRSxvQ0FBb0MsRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFN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O0lBRE4sTUFBTSxDQUFDLGlDQUFpQyxDQUFDO3FFQXVCekM7QUFHTTtJQUROLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztxREFLekI7QUFvQ007SUFETixNQUFNLENBQUMsMkJBQTJCLENBQUM7K0RBNEJuQztBQUdNO0lBRE4sTUFBTSxDQUFDLHVCQUF1QixDQUFDOzJEQWlDL0I7QUFuVGE7SUFEYixRQUFRLEVBQUU7NkNBR1Y7QUFHYTtJQURiLFFBQVEsRUFBRTtrQ0FHVjtBQUdhO0lBRGIsUUFBUSxFQUFFO2dDQUdWO0FBR2E7SUFEYixRQUFRLEVBQUU7b0NBR1Y7QUFHYTtJQURiLFFBQVEsRUFBRTtnQ0FHVjtBQUdhO0lBRGIsUUFBUSxFQUFFO21DQUdWO0FBekNVLFVBQVU7SUFYdEIsS0FBSyxDQUFrQjtRQUN0QixJQUFJLEVBQUUsT0FBTztRQUNiLFFBQVEsRUFBRTtZQUNSLFFBQVEsRUFBRSxTQUFTO1lBQ25CLFVBQVUsRUFBRSxFQUFFO1lBQ2Qsa0JBQWtCLEVBQUUsU0FBUztZQUM3QixRQUFRLEVBQUUsRUFBRTtZQUNaLFdBQVcsRUFBRSxFQUFFO1lBQ2YsUUFBUSxFQUFFLFNBQVM7U0FDcEI7S0FDRixDQUFDO0dBQ1csVUFBVSxDQThWdEI7OzRGQTlWWSxVQUFVO2tCQVp0QixVQUFVO2dnQkF3REYsbUNBQW1DLE1Ba0JuQyx5Q0FBeUMsTUFnQnpDLGdCQUFnQixNQVloQiwwQkFBMEIsTUFPMUIsOEJBQThCLE1BUTlCLCtCQUErQixNQVMvQiwwQkFBMEIsTUF3QzFCLHlCQUF5QixNQXdDekIsbUNBQW1DLE1BeUJuQyxtQkFBbUIsTUF3Q25CLDZCQUE2QixNQThCN0IseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTXNhbFNlcnZpY2UgfSBmcm9tICdAYXp1cmUvbXNhbC1hbmd1bGFyJztcbmltcG9ydCB7IENsZWFyQ2FjaGVSZXF1ZXN0IH0gZnJvbSAnQGF6dXJlL21zYWwtYnJvd3Nlcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0ZSB9IGZyb20gJ0BuZ3hzL3JvdXRlci1wbHVnaW4nO1xuaW1wb3J0IHsgQWN0aW9uLCBTZWxlY3RvciwgU3RhdGUsIFN0YXRlQ29udGV4dCwgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIE9ic2VydmFibGUsIHRhcCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWVzc2FnZUJhclBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tZXNzYWdlLWJhci9tZXNzYWdlLWJhci1wb3NpdGlvbi5lbnVtJztcbmltcG9ydCB7IE1lc3NhZ2VCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tZXNzYWdlLWJhci9tZXNzYWdlLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7IFJFU0VUX1BBU1NXT1JEX0VNQUlMIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2tleXMtY29uc3RhbnRzJztcbmltcG9ydCB7IFZFUlNJT05fVjEgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdmVyc2lvbi1jb25zdGFudHMnO1xuaW1wb3J0IHsgQXBwVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL2FwcC10eXBlLmVudW0nO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uIH0gZnJvbSAnLi4vLi4vZW51bXMvbG9jYWxpemF0aW9uLmVudW0nO1xuaW1wb3J0IHtcbiAgQWN0aXZhdGVSZXNwb25zZUR0b0h0dHBSZXNwb25zZURhdGEsIEFjdGl2YXRlVXNlckR0bywgQXBpRXhjZXB0aW9uLCBQcm9ibGVtRGV0YWlscywgVGZhU2V0dXBEdG8sXG4gIFVzZXJEdG9IdHRwUmVzcG9uc2VEYXRhLCBVc2Vyc0Nsb3VkU2VydmljZVByb3h5LCBVc2VyU3RhdHVzLCBVc2VyVXBkYXRlUGFzc3dvcmREdG9cbn0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eS9jbG91ZC1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHtcbiAgQXV0aGVudGljYXRlRXJyb3JSZXNwb25zZUR0bywgQXV0aGVudGljYXRlUmVxdWVzdER0bywgQXV0aGVudGljYXRlUmVzcG9uc2VEdG8sIEF1dGhlbnRpY2F0ZVJlc3BvbnNlRHRvSHR0cFJlc3BvbnNlRGF0YSxcbiAgQmFja29mZmljZVVzZXJJZGVudGl0eVNlcnZpY2VQcm94eSwgTW9iaWxlSWRlbnRpdHlTZXJ2aWNlUHJveHksIFBhc3N3b3JkQ2hhbmdlVHlwZSwgU2luZ2xlU2lnbk9uUHJvdmlkZXIsXG4gIFVzZXJzSWRlbnRpdHlTZXJ2aWNlUHJveHksIFZhbGlkYXRlQWN0aXZhdGlvblVzZXJEdG9IdHRwUmVzcG9uc2VEYXRhLCBWZXJpZnkyRmFjdG9yQXV0aFJlcXVlc3REdG8sIFZlcmlmeTJGYWN0b3JBdXRoUmVzcG9uc2V0RHRvSHR0cFJlc3BvbnNlRGF0YVxufSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L2lkZW50aXR5LXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IE9wZW5JZEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvb3BlbmlkLWF1dGguc2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yb3V0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFNlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IHBhcnNlQXBpRXJyb3JEYXRhLCBwYXJzZUFwaUVycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uL3V0aWxzL2FwaS1oZWxwZXIudXRpbCc7XG5pbXBvcnQgeyBTdHJpbmdNYXAgfSBmcm9tICcuLi8uLi91dGlscy9sYW5nLnV0aWwnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9hdXRoL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBVc2VySW5mbyB9IGZyb20gJy4uL2F1dGgvbW9kZWwvdXNlci1pbmZvLmludGVyZmFjZSc7XG5pbXBvcnQgeyBIZWFsdGhBY3Rpb24sIExvYWRBcHBDb25maWd1cmF0aW9uQWN0aW9uLCBMb2FkQmFja29mZmljZUFwcENvbmZpZ3VyYXRpb25BY3Rpb24sIFNldFRlbmFudFVzZXJBY3Rpb24sIFVwZGF0ZUF1dGhUb2tlbkFjdGlvbiB9IGZyb20gJy4uL2F1dGgvc2Vzc2lvbi5hY3Rpb25zJztcbmltcG9ydCB7XG4gIEFjY291bnRTZXRQYXNzd29yZEFjdGlvbiwgQWNjb3VudFNldFBhc3N3b3JkRXJyb3JBY3Rpb24sIEFjY291bnRTZXRQYXNzd29yZEluaXRBY3Rpb24sIEF1dGhlbnRpY2F0ZU11bHRpcGxlVGVuYW50c0FjdGlvbixcbiAgQmFja29mZmljZUF1dGhldGljYXRlQWN0aW9uLCBGb3Jnb3RQYXNzd29yZEFjdGlvbiwgRm9yZ290UGFzc3dvcmRUZW5hbnRsZXNzQWN0aW9uLCBNb2JpbGVBdXRoZW50aWNhdGVNdWx0aXBsZVRlbmFudHNBY3Rpb24sXG4gIE9wZW5JZEF1dGhldGljYXRlQWN0aW9uLCBTZXRURkFTZXR1cEFjdGlvbiwgVmFsaWRhdGVVc2VyVG9rZW5BY3Rpb24sIFZlcmlmeTJGYWN0b3JBdXRoZW50aWNhdGlvbkFjdGlvblxufSBmcm9tICcuL2xvZ2luLmFjdGlvbnMnO1xuaW1wb3J0IHsgTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi9sb2dpbi5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBMb2dpblN0YXRlTW9kZWwge1xuICB1c2VySW5mbzogVXNlckluZm87XG4gIHRlbmFudE5hbWU6IHN0cmluZztcbiAgcGFzc3dvcmRDaGFuZ2VUeXBlOiBQYXNzd29yZENoYW5nZVR5cGU7XG4gIGFjY291bnRzOiBBdXRoZW50aWNhdGVSZXNwb25zZUR0b1tdO1xuICBhY2NvdW50c01hcDogU3RyaW5nTWFwPEF1dGhlbnRpY2F0ZVJlc3BvbnNlRHRvPjtcbiAgdGZhU2V0dXA6IFRmYVNldHVwRHRvO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5AU3RhdGU8TG9naW5TdGF0ZU1vZGVsPih7XG4gIG5hbWU6ICdsb2dpbicsXG4gIGRlZmF1bHRzOiB7XG4gICAgdXNlckluZm86IHVuZGVmaW5lZCxcbiAgICB0ZW5hbnROYW1lOiAnJyxcbiAgICBwYXNzd29yZENoYW5nZVR5cGU6IHVuZGVmaW5lZCxcbiAgICBhY2NvdW50czogW10sXG4gICAgYWNjb3VudHNNYXA6IHt9LFxuICAgIHRmYVNldHVwOiB1bmRlZmluZWQsXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgTG9naW5TdGF0ZSB7XG5cbiAgcHJpdmF0ZSBtZXNzYWdlT3B0aW9ucyA9IHsgcG9zaXRpb246IE1lc3NhZ2VCYXJQb3NpdGlvbi5TdGF0aWMgfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIHVzZXJzQ2xvdWRTZXJ2aWNlUHJveHk6IFVzZXJzQ2xvdWRTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBiYWNrb2ZmaWNlVXNlcklkZW50aXR5U2VydmljZVByb3h5OiBCYWNrb2ZmaWNlVXNlcklkZW50aXR5U2VydmljZVByb3h5LCBwcml2YXRlIG9wZW5JZEF1dGhTZXJ2aWNlOiBPcGVuSWRBdXRoU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJzSWRlbnRpdHlTZXJ2aWNlUHJveHk6IFVzZXJzSWRlbnRpdHlTZXJ2aWNlUHJveHksIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2UsIHByaXZhdGUgbG9naW5TZXJ2aWNlOiBMb2dpblNlcnZpY2UsIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIG1zYWxTZXJ2aWNlOiBNc2FsU2VydmljZSwgcHJpdmF0ZSBtZXNzYWdlQmFyU2VydmljZTogTWVzc2FnZUJhclNlcnZpY2UsIHByaXZhdGUgYXBwQ29uZmlnOiBBcHBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVTZXJ2aWNlOiBSb3V0ZVNlcnZpY2UsIHByaXZhdGUgbW9iaWxlSWRlbnRpdHlTZXJ2aWNlUHJveHk6IE1vYmlsZUlkZW50aXR5U2VydmljZVByb3h5KSB7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHR3b0ZhY3RvclNldHVwRm9yVXNlcihzdGF0ZTogTG9naW5TdGF0ZU1vZGVsKTogVGZhU2V0dXBEdG8ge1xuICAgIHJldHVybiBzdGF0ZS50ZmFTZXR1cDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgdGVuYW50TmFtZShzdGF0ZTogTG9naW5TdGF0ZU1vZGVsKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc3RhdGUudGVuYW50TmFtZTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgdXNlckluZm8oc3RhdGU6IExvZ2luU3RhdGVNb2RlbCk6IFVzZXJJbmZvIHtcbiAgICByZXR1cm4gc3RhdGUudXNlckluZm87XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHRlbXBsYXRlVHlwZShzdGF0ZTogTG9naW5TdGF0ZU1vZGVsKTogUGFzc3dvcmRDaGFuZ2VUeXBlIHtcbiAgICByZXR1cm4gc3RhdGUucGFzc3dvcmRDaGFuZ2VUeXBlO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBhY2NvdW50cyhzdGF0ZTogTG9naW5TdGF0ZU1vZGVsKTogQXV0aGVudGljYXRlUmVzcG9uc2VEdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLmFjY291bnRzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBhY2NvdW50c01hcChzdGF0ZTogTG9naW5TdGF0ZU1vZGVsKTogU3RyaW5nTWFwPEF1dGhlbnRpY2F0ZVJlc3BvbnNlRHRvPiB7XG4gICAgcmV0dXJuIHN0YXRlLmFjY291bnRzTWFwO1xuICB9XG5cbiAgQEFjdGlvbihBdXRoZW50aWNhdGVNdWx0aXBsZVRlbmFudHNBY3Rpb24pXG4gIHB1YmxpYyBvbkF1dGhlbnRpY2F0ZU11bHRpcGxlVGVuYW50c0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxMb2dpblN0YXRlTW9kZWw+LCB7IHVzZXJuYW1lLCBwYXNzd29yZCB9OiBBdXRoZW50aWNhdGVNdWx0aXBsZVRlbmFudHNBY3Rpb24pIHtcbiAgICBjb25zdCBhdXRoZW50aWNhdGVSZXF1ZXN0RHRvID0gbmV3IEF1dGhlbnRpY2F0ZVJlcXVlc3REdG8oKTtcbiAgICBhdXRoZW50aWNhdGVSZXF1ZXN0RHRvLnVzZXJuYW1lID0gdXNlcm5hbWU7XG4gICAgYXV0aGVudGljYXRlUmVxdWVzdER0by5wYXNzd29yZCA9IHBhc3N3b3JkO1xuICAgIGF1dGhlbnRpY2F0ZVJlcXVlc3REdG8udGVuYW50TmFtZSA9ICcnO1xuXG4gICAgcmV0dXJuIHRoaXMudXNlcnNJZGVudGl0eVNlcnZpY2VQcm94eS5tdWx0aVRlbmFudHNBdXRoZW50aWNhdGUoYXV0aGVudGljYXRlUmVxdWVzdER0bykucGlwZSh0YXAoe1xuICAgICAgbmV4dDogYWNjb3VudHNIdHRwUmVzcG9uc2VEYXRhID0+IHtcbiAgICAgICAgY29uc3QgYWNjb3VudHMgPSBhY2NvdW50c0h0dHBSZXNwb25zZURhdGEuZGF0YTtcbiAgICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICAgIGFjY291bnRzXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiBlID0+IHRoaXMuYXV0aGVudGljYXRpb25FcnJvck1lc3NhZ2VCYXIoZSlcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKE1vYmlsZUF1dGhlbnRpY2F0ZU11bHRpcGxlVGVuYW50c0FjdGlvbilcbiAgcHVibGljIG9uTW9iaWxlQXV0aGVudGljYXRlTXVsdGlwbGVUZW5hbnRzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PExvZ2luU3RhdGVNb2RlbD4sIHsgdXNlcm5hbWUsIHBhc3N3b3JkLCB0ZW5hbnROYW1lIH06IE1vYmlsZUF1dGhlbnRpY2F0ZU11bHRpcGxlVGVuYW50c0FjdGlvbikge1xuICAgIGNvbnN0IGF1dGhlbnRpY2F0ZVJlcXVlc3REdG8gPSBuZXcgQXV0aGVudGljYXRlUmVxdWVzdER0bygpO1xuICAgIGF1dGhlbnRpY2F0ZVJlcXVlc3REdG8udXNlcm5hbWUgPSB1c2VybmFtZTtcbiAgICBhdXRoZW50aWNhdGVSZXF1ZXN0RHRvLnBhc3N3b3JkID0gcGFzc3dvcmQ7XG4gICAgYXV0aGVudGljYXRlUmVxdWVzdER0by50ZW5hbnROYW1lID0gdGVuYW50TmFtZTtcbiAgICByZXR1cm4gdGhpcy5tb2JpbGVJZGVudGl0eVNlcnZpY2VQcm94eS5tb2JpbGVBdXRoZW50aWNhdGUoVkVSU0lPTl9WMSwgYXV0aGVudGljYXRlUmVxdWVzdER0bykucGlwZSh0YXAoe1xuICAgICAgbmV4dDogYWNjb3VudHMgPT4ge1xuICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgYWNjb3VudHNNYXA6IGFjY291bnRzLmRhdGEsXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiBlID0+IHRoaXMuYXV0aGVudGljYXRpb25FcnJvck1lc3NhZ2VCYXIoZSlcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKEZvcmdvdFBhc3N3b3JkQWN0aW9uKVxuICBwdWJsaWMgb25Gb3Jnb3RQYXNzd29yZChjdHg6IFN0YXRlQ29udGV4dDxMb2dpblN0YXRlTW9kZWw+LCB7IGVtYWlsLCB0ZW5hbnRJZCB9OiBGb3Jnb3RQYXNzd29yZEFjdGlvbikge1xuICAgIGNvbnN0IGlzTW9iaWxlQXBwTW9kZSA9IHRoaXMuYXBwQ29uZmlnLmdldENvbmZpZygpLmFwcFR5cGUgPT09IEFwcFR5cGUuTW9iaWxlO1xuICAgIGNvbnN0IHBhdGggPSBbJ2FjY291bnQnLCAnZm9yZ290LXBhc3N3b3JkLXN1Y2Nlc3MnXTtcbiAgICBjb25zdCB1cmwgPSBpc01vYmlsZUFwcE1vZGUgPyBwYXRoIDogdGhpcy5yb3V0ZVNlcnZpY2UuZ2V0TmF2aWdhdGlvblJvdXRlKHBhdGgpO1xuXG4gICAgdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2Uuc2V0SXRlbShSRVNFVF9QQVNTV09SRF9FTUFJTCwgSlNPTi5zdHJpbmdpZnkoZW1haWwpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOYXZpZ2F0ZSh1cmwpKTtcbiAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLnN1Y2Nlc3MoTG9jYWxpemF0aW9uLmZvcmdvdF9wYXNzd29yZF9lbWFpbF9zZW50X21zZywgdGhpcy5tZXNzYWdlT3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXMudXNlcnNDbG91ZFNlcnZpY2VQcm94eS5mb3Jnb3RQYXNzd29yZChlbWFpbCwgdGVuYW50SWQpO1xuICB9XG5cbiAgQEFjdGlvbihGb3Jnb3RQYXNzd29yZFRlbmFudGxlc3NBY3Rpb24pXG4gIHB1YmxpYyBvbkZvcmdvdFBhc3N3b3JkVGVuYW50bGVzcyhjdHg6IFN0YXRlQ29udGV4dDxMb2dpblN0YXRlTW9kZWw+LCB7IGVtYWlsIH06IEZvcmdvdFBhc3N3b3JkQWN0aW9uKSB7XG4gICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5zdWNjZXNzKExvY2FsaXphdGlvbi5mb3Jnb3RfcGFzc3dvcmRfZW1haWxfc2VudF9tc2csIHRoaXMubWVzc2FnZU9wdGlvbnMpO1xuICAgIHJldHVybiB0aGlzLnVzZXJzQ2xvdWRTZXJ2aWNlUHJveHkuZm9yZ290UGFzc3dvcmRUZW5hbnRsZXNzKGVtYWlsKTtcbiAgfVxuXG5cbiAgQEFjdGlvbihBY2NvdW50U2V0UGFzc3dvcmRJbml0QWN0aW9uKVxuICBwdWJsaWMgb25BY2NvdW50U2V0UGFzc3dvcmRJbml0QWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PExvZ2luU3RhdGVNb2RlbD4sIHsgdXNlckluZm8sIGNvbXBvbmVudFR5cGUgfSkge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHVzZXJJbmZvLFxuICAgICAgcGFzc3dvcmRDaGFuZ2VUeXBlOiBjb21wb25lbnRUeXBlXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKEFjY291bnRTZXRQYXNzd29yZEVycm9yQWN0aW9uKVxuICBwdWJsaWMgb25BY2NvdW50U2V0UGFzc3dvcmRFcnJvckFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxMb2dpblN0YXRlTW9kZWw+LCB7IGVycm9yTXNnLCB1c2VybmFtZSB9KSB7XG4gICAgY29uc3QgdXNlckluZm86IFVzZXJJbmZvID0geyAuLi51c2VybmFtZSB9O1xuICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IoZXJyb3JNc2csIHRoaXMubWVzc2FnZU9wdGlvbnMpO1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHVzZXJJbmZvXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKEFjY291bnRTZXRQYXNzd29yZEFjdGlvbilcbiAgcHVibGljIG9uQWNjb3VudFNldFBhc3N3b3JkQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PExvZ2luU3RhdGVNb2RlbD4sIHsgcGFzc3dvcmQgfTogQWNjb3VudFNldFBhc3N3b3JkQWN0aW9uKSB7XG4gICAgY29uc3QgdXNlckluZm8gPSBjdHguZ2V0U3RhdGUoKS51c2VySW5mbztcbiAgICBsZXQgZGF0YTogYW55O1xuICAgIGxldCBzZXRQYXNzd29yZCQ6IE9ic2VydmFibGU8VXNlckR0b0h0dHBSZXNwb25zZURhdGEgfCBBY3RpdmF0ZVJlc3BvbnNlRHRvSHR0cFJlc3BvbnNlRGF0YT47XG5cbiAgICBpZiAodGhpcy5hcHBDb25maWcuZ2V0Q29uZmlnKCkuYXBwVHlwZSA9PT0gQXBwVHlwZS5DbG91ZCkge1xuICAgICAgZGF0YSA9IG5ldyBBY3RpdmF0ZVVzZXJEdG8oe1xuICAgICAgICBwYXNzd29yZCxcbiAgICAgICAgY3VycmVudFBhc3N3b3JkOiBudWxsLFxuICAgICAgICB1c2VyU3RhdHVzOiB1c2VySW5mby5zdGF0dXMgYXMgVXNlclN0YXR1c1xuICAgICAgfSk7XG5cbiAgICAgIHNldFBhc3N3b3JkJCA9IHRoaXMudXNlcnNDbG91ZFNlcnZpY2VQcm94eS5hY3RpdmF0ZShkYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0YSA9IG5ldyBVc2VyVXBkYXRlUGFzc3dvcmREdG8oe1xuICAgICAgICBwYXNzd29yZCxcbiAgICAgICAgY3VycmVudFBhc3N3b3JkOiBudWxsXG4gICAgICB9KTtcbiAgICAgIHNldFBhc3N3b3JkJCA9IHRoaXMudXNlcnNDbG91ZFNlcnZpY2VQcm94eS51cGRhdGVVc2VyUGFzc3dvcmQoZGF0YSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNldFBhc3N3b3JkJC5waXBlKFxuICAgICAgbWFwKChhY3RpdmF0ZVJlc3BvbnNlRHRvSHR0cFJlc3BvbnNlRGF0YTogQWN0aXZhdGVSZXNwb25zZUR0b0h0dHBSZXNwb25zZURhdGEpID0+IHtcbiAgICAgICAgaWYgKGFjdGl2YXRlUmVzcG9uc2VEdG9IdHRwUmVzcG9uc2VEYXRhLmRhdGEuaXNTdWNjZXNzKSB7XG4gICAgICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICAgICAgdGZhU2V0dXA6IGFjdGl2YXRlUmVzcG9uc2VEdG9IdHRwUmVzcG9uc2VEYXRhLmRhdGE/LnRmYVNldHVwLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihhY3RpdmF0ZVJlc3BvbnNlRHRvSHR0cFJlc3BvbnNlRGF0YS5kYXRhLmVycm9yTWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcihlID0+IHtcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogZTtcbiAgICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcihlcnJvck1lc3NhZ2UsIHRoaXMubWVzc2FnZU9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvck1lc3NhZ2UpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgQEFjdGlvbihWYWxpZGF0ZVVzZXJUb2tlbkFjdGlvbilcbiAgcHVibGljIG9uVmFsaWRhdGVVc2VyVG9rZW5BY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8TG9naW5TdGF0ZU1vZGVsPiwgeyB0b2tlbiwgdG9rZW5UeXBlIH06IFZhbGlkYXRlVXNlclRva2VuQWN0aW9uKSB7XG4gICAgY29uc3QgcGN0OiBhbnkgPSBQYXNzd29yZENoYW5nZVR5cGVbdG9rZW5UeXBlXTtcbiAgICByZXR1cm4gdGhpcy51c2Vyc0lkZW50aXR5U2VydmljZVByb3h5LnZhbGlkYXRlQWN0aXZhdGlvbih0b2tlbiwgUGFzc3dvcmRDaGFuZ2VUeXBlW1Bhc3N3b3JkQ2hhbmdlVHlwZVt0b2tlblR5cGVdXSkucGlwZSh0YXAoe1xuICAgICAgbmV4dDogKHVzZXI6IFZhbGlkYXRlQWN0aXZhdGlvblVzZXJEdG9IdHRwUmVzcG9uc2VEYXRhKSA9PiB7XG4gICAgICAgIGlmICh1c2VyPy5kYXRhKSB7XG4gICAgICAgICAgY29uc3QgdXNlckluZm86IFVzZXJJbmZvID0ge1xuICAgICAgICAgICAgdXNlcklkOiB1c2VyLmRhdGEuaWQsXG4gICAgICAgICAgICB1c2VybmFtZTogdXNlci5kYXRhLnVOYW1lLFxuICAgICAgICAgICAgZGlzcGxheU5hbWU6IGAke3VzZXIuZGF0YS5uYW1lfSAke3VzZXIuZGF0YS5sYXN0TmFtZX1gLFxuICAgICAgICAgICAgc3RhdHVzOiB1c2VyLmRhdGEuc3RhdHVzLFxuICAgICAgICAgICAgcG1sOiB1c2VyLmRhdGEucG1sXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAodXNlci5kYXRhLnN0YXR1cyAhPT0gVXNlclN0YXR1cy5CbG9ja2VkKSB7XG4gICAgICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgICAgIHVzZXJJbmZvLFxuICAgICAgICAgICAgICBwYXNzd29yZENoYW5nZVR5cGU6IHBjdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKExvY2FsaXphdGlvbi5ub25fYWN0aXZlX3VzZXIsIHRoaXMubWVzc2FnZU9wdGlvbnMpO1xuICAgICAgICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICAgICAgICB1c2VySW5mbyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiBlID0+IHtcbiAgICAgICAgY29uc3QgZXJyb3JKc29uOiBQcm9ibGVtRGV0YWlscyA9IEpTT04ucGFyc2UoZS5yZXNwb25zZSkgYXMgUHJvYmxlbURldGFpbHM7XG4gICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IocGFyc2VBcGlFcnJvck1lc3NhZ2UoZSksIHRoaXMubWVzc2FnZU9wdGlvbnMpO1xuICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgdXNlckluZm86IHtcbiAgICAgICAgICAgIHVzZXJuYW1lOiBlcnJvckpzb24uaW5zdGFuY2UsXG4gICAgICAgICAgICB1c2VySWQ6IG51bGwsXG4gICAgICAgICAgICBkaXNwbGF5TmFtZTogbnVsbFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oVmVyaWZ5MkZhY3RvckF1dGhlbnRpY2F0aW9uQWN0aW9uKVxuICBwdWJsaWMgb25WZXJpZnkyRmFjdG9yQXV0aGVudGljYXRpb25BY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8TG9naW5TdGF0ZU1vZGVsPiwgeyB1c2VyTmFtZSwgY29kZSwgc2V0dXAyRmEgfTogVmVyaWZ5MkZhY3RvckF1dGhlbnRpY2F0aW9uQWN0aW9uKSB7XG4gICAgY29uc3QgdmVyaWZ5MkZhY3RvckF1dGhSZXF1ZXN0RHRvID0gbmV3IFZlcmlmeTJGYWN0b3JBdXRoUmVxdWVzdER0byh7XG4gICAgICBjb2RlLFxuICAgICAgdXNlck5hbWVcbiAgICB9KTtcblxuICAgIGxldCB2ZXJpZnkyRmFjdG9yQXV0aCQ6IE9ic2VydmFibGU8VmVyaWZ5MkZhY3RvckF1dGhSZXNwb25zZXREdG9IdHRwUmVzcG9uc2VEYXRhPjtcbiAgICBpZiAoc2V0dXAyRmEpIHtcbiAgICAgIHZlcmlmeTJGYWN0b3JBdXRoJCA9IHRoaXMudXNlcnNJZGVudGl0eVNlcnZpY2VQcm94eS52ZXJpZnkyRmFjdG9yQXV0aGVudGljYXRpb24odmVyaWZ5MkZhY3RvckF1dGhSZXF1ZXN0RHRvKTtcbiAgICB9IGVsc2UgeyAvLyBsb2dpbiBmb3IgdXNlciB3aXRoIDJGQSAoYWxyZWFkeSBzZXQgdXApXG4gICAgICB2ZXJpZnkyRmFjdG9yQXV0aCQgPSB0aGlzLnVzZXJzSWRlbnRpdHlTZXJ2aWNlUHJveHkudmVyaWZ5MkZhY3RvckF1dGhlbnRpY2F0aW9uTG9naW4odmVyaWZ5MkZhY3RvckF1dGhSZXF1ZXN0RHRvKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZ5MkZhY3RvckF1dGgkLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6ICh2ZXJpZnkyRmFjdG9yQXV0aFJlc3BvbnNldDogVmVyaWZ5MkZhY3RvckF1dGhSZXNwb25zZXREdG9IdHRwUmVzcG9uc2VEYXRhKSA9PiB7XG4gICAgICAgIHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmFjY2Vzc1Rva2VuID0gdmVyaWZ5MkZhY3RvckF1dGhSZXNwb25zZXQuZGF0YS5hY2Nlc3NUb2tlbjtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgVXBkYXRlQXV0aFRva2VuQWN0aW9uKHZlcmlmeTJGYWN0b3JBdXRoUmVzcG9uc2V0LmRhdGEuYWNjZXNzVG9rZW4pKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZSA9PiB7XG4gICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IocGFyc2VBcGlFcnJvck1lc3NhZ2UoZSksIHRoaXMubWVzc2FnZU9wdGlvbnMpO1xuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oU2V0VEZBU2V0dXBBY3Rpb24pXG4gIHB1YmxpYyBvblNldFRGQVNldHVwQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PExvZ2luU3RhdGVNb2RlbD4sIHsgdGZhU2V0dXBEdG8gfSkge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHRmYVNldHVwOiB0ZmFTZXR1cER0b1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhdXRoZW50aWNhdGlvbkVycm9yTWVzc2FnZUJhcihlcnJvcjogQXBpRXhjZXB0aW9uKSB7XG4gICAgY29uc3QgZXJyb3JNZXNzYWdlID0gcGFyc2VBcGlFcnJvck1lc3NhZ2UoZXJyb3IpO1xuICAgIGNvbnN0IGRhdGEgPSBwYXJzZUFwaUVycm9yRGF0YTxBdXRoZW50aWNhdGVFcnJvclJlc3BvbnNlRHRvPihlcnJvcik7XG4gICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcihlcnJvck1lc3NhZ2UsIHsgcG9zaXRpb246IE1lc3NhZ2VCYXJQb3NpdGlvbi5TdGF0aWMsIG1lc3NhZ2VQYXJhbXM6IHsgdGVtcG9yYXJ5TG9ja2VkTWludXRlczogZGF0YT8udGVtcG9yYXJ5QmxvY2tlZFRpbWUgfSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJNc2xMb2dpbkNhY2hlKCkge1xuICAgIGNvbnN0IGNsZWFyQ2FjaGVSZXF1ZXN0OiBDbGVhckNhY2hlUmVxdWVzdCA9IHtcbiAgICAgIGFjY291bnQ6IHRoaXMubXNhbFNlcnZpY2UuaW5zdGFuY2UuZ2V0QWxsQWNjb3VudHMoKVswXSxcbiAgICB9O1xuICAgIHRoaXMubXNhbFNlcnZpY2UuaW5zdGFuY2UuY2xlYXJDYWNoZShjbGVhckNhY2hlUmVxdWVzdCk7XG4gICAgdGhpcy5tc2FsU2VydmljZS5sb2dvdXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJTaW5nbGVTaW5nT25DYWNoZShzaW5nbGVTaWduT25Qcm92aWRlcjogU2luZ2xlU2lnbk9uUHJvdmlkZXIpIHtcbiAgICBzd2l0Y2ggKHNpbmdsZVNpZ25PblByb3ZpZGVyKSB7XG4gICAgICBjYXNlIFNpbmdsZVNpZ25PblByb3ZpZGVyLk1pY3Jvc29mdDpcbiAgICAgICAgdGhpcy5jbGVhck1zbExvZ2luQ2FjaGUoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2luZ2xlU2lnbk9uUHJvdmlkZXIuUGluZ0ZlZGVyYXRlOlxuICAgICAgICB0aGlzLm9wZW5JZEF1dGhTZXJ2aWNlLnNpZ25PdXQoKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSB1c2VyU3RhdHVzSXNBd2FpdGluZ0FjY2VzcyA9IChhdXRoUmVzcG9uc2U6IEF1dGhlbnRpY2F0ZVJlc3BvbnNlRHRvSHR0cFJlc3BvbnNlRGF0YSk6IGJvb2xlYW4gPT5cbiAgICBhdXRoUmVzcG9uc2UuZGF0YS5zaW5nbGVTaWduT25BdXRoZW50aWNhdGlvbkR0bz8uaXNBdXRoZW50aWNhdGVkID09PSBmYWxzZSAmJlxuICAgIGF1dGhSZXNwb25zZS5kYXRhLnNpbmdsZVNpZ25PbkF1dGhlbnRpY2F0aW9uRHRvPy51c2VyU3RhdHVzID09PSBVc2VyU3RhdHVzLkF3YWl0aW5nQWNjZXNzO1xuXG4gIEBBY3Rpb24oQmFja29mZmljZUF1dGhldGljYXRlQWN0aW9uKVxuICBwdWJsaWMgb25CYWNrb2ZmaWNlQXV0aGV0aWNhdGVBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8TG9naW5TdGF0ZU1vZGVsPiwgeyB0b2tlbiwgdGVuYW50SW5mbyB9OiBCYWNrb2ZmaWNlQXV0aGV0aWNhdGVBY3Rpb24pIHtcbiAgICBsZXQgYXV0aGVudGljYXRlT2lkYyQ6IE9ic2VydmFibGU8QXV0aGVudGljYXRlUmVzcG9uc2VEdG9IdHRwUmVzcG9uc2VEYXRhPjtcbiAgICBhdXRoZW50aWNhdGVPaWRjJCA9IHRoaXMuYmFja29mZmljZVVzZXJJZGVudGl0eVNlcnZpY2VQcm94eS5iYWNrb2ZmaWNlQXV0aGVudGljYXRlKHRva2VuLCB0ZW5hbnRJbmZvLnRlbmFudE5hbWUpO1xuICAgIHJldHVybiBhdXRoZW50aWNhdGVPaWRjJC5waXBlKHRhcCh7XG4gICAgICBuZXh0OiBhdXRoUmVzcG9uc2UgPT4ge1xuICAgICAgICBpZiAoYXV0aFJlc3BvbnNlLmRhdGEubWVzc2FnZSA9PT0gTG9jYWxpemF0aW9uLnNzb19wZW5kaW5nX2FwcHJvdmFsKSB7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5zc29fcGVuZGluZ19hcHByb3ZhbCk7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5pbmZvKG1lc3NhZ2UsIHsgcG9zaXRpb246IE1lc3NhZ2VCYXJQb3NpdGlvbi5TdGF0aWMgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3BhcmtTZXNzaW9uID0gdGhpcy5hdXRoU2VydmljZS5wcm9jZXNzQXV0aGVudGljYXRlKGF1dGhSZXNwb25zZS5kYXRhKTtcbiAgICAgICAgY3R4LmRpc3BhdGNoKG5ldyBTZXRUZW5hbnRVc2VyQWN0aW9uKHNwYXJrU2Vzc2lvbikpO1xuICAgICAgICBpZiAodGhpcy51c2VyU3RhdHVzSXNBd2FpdGluZ0FjY2VzcyhhdXRoUmVzcG9uc2UpKSB7XG4gICAgICAgICAgdGhpcy5jbGVhclNpbmdsZVNpbmdPbkNhY2hlKFNpbmdsZVNpZ25PblByb3ZpZGVyLk1pY3Jvc29mdCk7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5zc29fcGVuZGluZ19hcHByb3ZhbCk7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS53YXJuKG1lc3NhZ2UsIHsgcG9zaXRpb246IE1lc3NhZ2VCYXJQb3NpdGlvbi5TdGF0aWMgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgLy8gQWZ0ZXIgYXV0aGVudGljYXRpb24gZ2V0IGFwcCBjb25maWd1cmF0aW9uXG4gICAgICAgICAgdGhpcy5sb2dpblRvQmFja29mZmljZSgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IGUgPT4ge1xuICAgICAgICB0aGlzLnNpbmdsZVNpbmdPbkVycm9ySGFuZGxpbmcoZSk7XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihPcGVuSWRBdXRoZXRpY2F0ZUFjdGlvbilcbiAgcHVibGljIG9uT3BlbklkQXV0aGV0aWNhdGVBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8TG9naW5TdGF0ZU1vZGVsPiwgYWN0aW9uOiBPcGVuSWRBdXRoZXRpY2F0ZUFjdGlvbikge1xuICAgIGxldCBhdXRoZW50aWNhdGVPaWRjJDogT2JzZXJ2YWJsZTxBdXRoZW50aWNhdGVSZXNwb25zZUR0b0h0dHBSZXNwb25zZURhdGE+O1xuICAgIGF1dGhlbnRpY2F0ZU9pZGMkID0gdGhpcy51c2Vyc0lkZW50aXR5U2VydmljZVByb3h5Lm9wZW5JZEF1dGhlbnRpY2F0ZShhY3Rpb24udG9rZW4sIGFjdGlvbi50ZW5hbnRJbmZvLnRlbmFudE5hbWUpO1xuXG4gICAgcmV0dXJuIGF1dGhlbnRpY2F0ZU9pZGMkLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6IGF1dGhSZXNwb25zZSA9PiB7XG4gICAgICAgIGlmIChhdXRoUmVzcG9uc2UuZGF0YS5tZXNzYWdlID09PSBMb2NhbGl6YXRpb24uc3NvX3BlbmRpbmdfYXBwcm92YWwpIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLnNzb19wZW5kaW5nX2FwcHJvdmFsKTtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmluZm8obWVzc2FnZSwgeyBwb3NpdGlvbjogTWVzc2FnZUJhclBvc2l0aW9uLlN0YXRpYyB9KTtcbiAgICAgICAgICBhY3Rpb24uaXNQZW5kaW5nQXBwcm92YWwgPSB0cnVlO1xuICAgICAgICAgIC8vdGhpcy5jbGVhclNpbmdsZVNpbmdPbkNhY2hlKHNpbmdsZVNpZ25PblByb3ZpZGVyKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzcGFya1Nlc3Npb24gPSB0aGlzLmF1dGhTZXJ2aWNlLnByb2Nlc3NBdXRoZW50aWNhdGUoYXV0aFJlc3BvbnNlLmRhdGEpO1xuICAgICAgICBjdHguZGlzcGF0Y2gobmV3IFNldFRlbmFudFVzZXJBY3Rpb24oc3BhcmtTZXNzaW9uKSk7XG5cbiAgICAgICAgaWYgKHRoaXMudXNlclN0YXR1c0lzQXdhaXRpbmdBY2Nlc3MoYXV0aFJlc3BvbnNlKSkge1xuICAgICAgICAgIHRoaXMuY2xlYXJTaW5nbGVTaW5nT25DYWNoZShhY3Rpb24uc2luZ2xlU2lnbk9uUHJvdmlkZXIpO1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uc3NvX3BlbmRpbmdfYXBwcm92YWwpO1xuICAgICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2Uud2FybihtZXNzYWdlLCB7IHBvc2l0aW9uOiBNZXNzYWdlQmFyUG9zaXRpb24uU3RhdGljIH0pO1xuICAgICAgICAgIGFjdGlvbi5pc1BlbmRpbmdBcHByb3ZhbCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgLy8gQWZ0ZXIgYXV0aGVudGljYXRpb24gZ2V0IGFwcCBjb25maWd1cmF0aW9uXG4gICAgICAgICAgdGhpcy5sb2dpblRvU3BhcmsoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiBlID0+IHtcbiAgICAgICAgdGhpcy5zaW5nbGVTaW5nT25FcnJvckhhbmRsaW5nKGUpO1xuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIHNpbmdsZVNpbmdPbkVycm9ySGFuZGxpbmcoZTogYW55KSB7XG4gICAgaWYgKGUuZXJyb3JNZXNzYWdlID09IExvY2FsaXphdGlvbi5zc29fcGVuZGluZ19hcHByb3ZhbCkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5zc29fcGVuZGluZ19hcHByb3ZhbCk7XG4gICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmluZm8obWVzc2FnZSwgeyBwb3NpdGlvbjogTWVzc2FnZUJhclBvc2l0aW9uLlN0YXRpYyB9KTtcbiAgICB9XG4gICAgZWxzZSBpZiAoZS5lcnJvck1lc3NhZ2UpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChlLmVycm9yTWVzc2FnZSk7XG4gICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKG1lc3NhZ2UsIHsgcG9zaXRpb246IE1lc3NhZ2VCYXJQb3NpdGlvbi5TdGF0aWMgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcihwYXJzZUFwaUVycm9yTWVzc2FnZShlKSwgdGhpcy5tZXNzYWdlT3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgbG9naW5Ub1NwYXJrKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IExvYWRBcHBDb25maWd1cmF0aW9uQWN0aW9uKCkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEhlYWx0aEFjdGlvbigpKTtcbiAgICB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS51cGRhdGVMb2dnZWRUZW5hbnQoKTtcbiAgICB0aGlzLmxvZ2luU2VydmljZS5sb2dpblRvU3BhcmsoKTtcbiAgfVxuXG4gIGxvZ2luVG9CYWNrb2ZmaWNlKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IExvYWRCYWNrb2ZmaWNlQXBwQ29uZmlndXJhdGlvbkFjdGlvbigpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBIZWFsdGhBY3Rpb24oKSk7XG4gICAgdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UudXBkYXRlTG9nZ2VkVGVuYW50KCk7XG4gICAgdGhpcy5sb2dpblNlcnZpY2UubG9naW5Ub1NwYXJrKCk7XG4gIH1cbn1cbiJdfQ==
|
|
404
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtc2hhcmVkLWxpYi9zcmMvbGlicmFyaWVzL21vZHVsZXMvbG9naW4vbG9naW4uc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBdUIsTUFBTSxhQUFhLENBQUM7QUFDM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQWMsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUU1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDL0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQ2dDLGVBQWUsRUFDSCxVQUFVLEVBQUUscUJBQXFCLEVBQ25GLE1BQU0sMkNBQTJDLENBQUM7QUFDbkQsT0FBTyxFQUNMLGdDQUFnQyxFQUFnQyxzQkFBc0IsRUFFdEYsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQ3hDLDJCQUEyQixFQUM1QixNQUFNLDhDQUE4QyxDQUFDO0FBS3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBSXRGLE9BQU8sRUFBRSxZQUFZLEVBQUUsMEJBQTBCLEVBQUUsb0NBQW9DLEVBQUUsbUJBQW1CLEVBQUUscUJB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b3J0IHsgTXNhbFNlcnZpY2UgfSBmcm9tICdAYXp1cmUvbXNhbC1hbmd1bGFyJztcbmltcG9ydCB7IENsZWFyQ2FjaGVSZXF1ZXN0IH0gZnJvbSAnQGF6dXJlL21zYWwtYnJvd3Nlcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0ZSB9IGZyb20gJ0BuZ3hzL3JvdXRlci1wbHVnaW4nO1xuaW1wb3J0IHsgQWN0aW9uLCBTZWxlY3RvciwgU3RhdGUsIFN0YXRlQ29udGV4dCwgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIE9ic2VydmFibGUsIHRhcCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWVzc2FnZUJhclBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tZXNzYWdlLWJhci9tZXNzYWdlLWJhci1wb3NpdGlvbi5lbnVtJztcbmltcG9ydCB7IE1lc3NhZ2VCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tZXNzYWdlLWJhci9tZXNzYWdlLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7IFJFU0VUX1BBU1NXT1JEX0VNQUlMIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2tleXMtY29uc3RhbnRzJztcbmltcG9ydCB7IFZFUlNJT05fVjEgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdmVyc2lvbi1jb25zdGFudHMnO1xuaW1wb3J0IHsgQXBwVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL2FwcC10eXBlLmVudW0nO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uIH0gZnJvbSAnLi4vLi4vZW51bXMvbG9jYWxpemF0aW9uLmVudW0nO1xuaW1wb3J0IHtcbiAgQWN0aXZhdGVSZXNwb25zZUR0b0h0dHBSZXNwb25zZURhdGEsIEFjdGl2YXRlVXNlckR0bywgQXBpRXhjZXB0aW9uLCBQcm9ibGVtRGV0YWlscywgVGZhU2V0dXBEdG8sXG4gIFVzZXJEdG9IdHRwUmVzcG9uc2VEYXRhLCBVc2Vyc0Nsb3VkU2VydmljZVByb3h5LCBVc2VyU3RhdHVzLCBVc2VyVXBkYXRlUGFzc3dvcmREdG9cbn0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eS9jbG91ZC1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHtcbiAgQXV0aGVudGljYXRlQmFja29mZmljZVJlcXVlc3REdG8sIEF1dGhlbnRpY2F0ZUVycm9yUmVzcG9uc2VEdG8sIEF1dGhlbnRpY2F0ZVJlcXVlc3REdG8sIEF1dGhlbnRpY2F0ZVJlc3BvbnNlRHRvLFxuICBBdXRoZW50aWNhdGVSZXNwb25zZUR0b0h0dHBSZXNwb25zZURhdGEsIEJhY2tvZmZpY2VVc2VySWRlbnRpdHlTZXJ2aWNlUHJveHksIE1vYmlsZUlkZW50aXR5U2VydmljZVByb3h5LFxuICBQYXNzd29yZENoYW5nZVR5cGUsIFNpbmdsZVNpZ25PblByb3ZpZGVyLCBVc2Vyc0lkZW50aXR5U2VydmljZVByb3h5LCBWYWxpZGF0ZUFjdGl2YXRpb25Vc2VyRHRvSHR0cFJlc3BvbnNlRGF0YSxcbiAgVmVyaWZ5MkZhY3RvckF1dGhSZXF1ZXN0RHRvLCBWZXJpZnkyRmFjdG9yQXV0aFJlc3BvbnNldER0b0h0dHBSZXNwb25zZURhdGFcbn0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eS9pZGVudGl0eS1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwcC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBPcGVuSWRBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL29wZW5pZC1hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgUm91dGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcm91dGUuc2VydmljZSc7XG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zZXNzaW9uLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBwYXJzZUFwaUVycm9yRGF0YSwgcGFyc2VBcGlFcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi91dGlscy9hcGktaGVscGVyLnV0aWwnO1xuaW1wb3J0IHsgU3RyaW5nTWFwIH0gZnJvbSAnLi4vLi4vdXRpbHMvbGFuZy51dGlsJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlckluZm8gfSBmcm9tICcuLi9hdXRoL21vZGVsL3VzZXItaW5mby5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSGVhbHRoQWN0aW9uLCBMb2FkQXBwQ29uZmlndXJhdGlvbkFjdGlvbiwgTG9hZEJhY2tvZmZpY2VBcHBDb25maWd1cmF0aW9uQWN0aW9uLCBTZXRUZW5hbnRVc2VyQWN0aW9uLCBVcGRhdGVBdXRoVG9rZW5BY3Rpb24gfSBmcm9tICcuLi9hdXRoL3Nlc3Npb24uYWN0aW9ucyc7XG5pbXBvcnQge1xuICBBY2NvdW50U2V0UGFzc3dvcmRBY3Rpb24sIEFjY291bnRTZXRQYXNzd29yZEVycm9yQWN0aW9uLCBBY2NvdW50U2V0UGFzc3dvcmRJbml0QWN0aW9uLCBBdXRoZW50aWNhdGVNdWx0aXBsZVRlbmFudHNBY3Rpb24sXG4gIEJhY2tvZmZpY2VBdXRoZXRpY2F0ZUFjdGlvbiwgRm9yZ290UGFzc3dvcmRBY3Rpb24sIEZvcmdvdFBhc3N3b3JkVGVuYW50bGVzc0FjdGlvbiwgTW9iaWxlQXV0aGVudGljYXRlTXVsdGlwbGVUZW5hbnRzQWN0aW9uLFxuICBPcGVuSWRBdXRoZXRpY2F0ZUFjdGlvbiwgU2V0VEZBU2V0dXBBY3Rpb24sIFZhbGlkYXRlVXNlclRva2VuQWN0aW9uLCBWZXJpZnkyRmFjdG9yQXV0aGVudGljYXRpb25BY3Rpb25cbn0gZnJvbSAnLi9sb2dpbi5hY3Rpb25zJztcbmltcG9ydCB7IExvZ2luU2VydmljZSB9IGZyb20gJy4vbG9naW4uc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9naW5TdGF0ZU1vZGVsIHtcbiAgdXNlckluZm86IFVzZXJJbmZvO1xuICB0ZW5hbnROYW1lOiBzdHJpbmc7XG4gIHBhc3N3b3JkQ2hhbmdlVHlwZTogUGFzc3dvcmRDaGFuZ2VUeXBlO1xuICBhY2NvdW50czogQXV0aGVudGljYXRlUmVzcG9uc2VEdG9bXTtcbiAgYWNjb3VudHNNYXA6IFN0cmluZ01hcDxBdXRoZW50aWNhdGVSZXNwb25zZUR0bz47XG4gIHRmYVNldHVwOiBUZmFTZXR1cER0bztcbn1cblxuQEluamVjdGFibGUoKVxuQFN0YXRlPExvZ2luU3RhdGVNb2RlbD4oe1xuICBuYW1lOiAnbG9naW4nLFxuICBkZWZhdWx0czoge1xuICAgIHVzZXJJbmZvOiB1bmRlZmluZWQsXG4gICAgdGVuYW50TmFtZTogJycsXG4gICAgcGFzc3dvcmRDaGFuZ2VUeXBlOiB1bmRlZmluZWQsXG4gICAgYWNjb3VudHM6IFtdLFxuICAgIGFjY291bnRzTWFwOiB7fSxcbiAgICB0ZmFTZXR1cDogdW5kZWZpbmVkLFxuICB9XG59KVxuZXhwb3J0IGNsYXNzIExvZ2luU3RhdGUge1xuXG4gIHByaXZhdGUgbWVzc2FnZU9wdGlvbnMgPSB7IHBvc2l0aW9uOiBNZXNzYWdlQmFyUG9zaXRpb24uU3RhdGljIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSB1c2Vyc0Nsb3VkU2VydmljZVByb3h5OiBVc2Vyc0Nsb3VkU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgYmFja29mZmljZVVzZXJJZGVudGl0eVNlcnZpY2VQcm94eTogQmFja29mZmljZVVzZXJJZGVudGl0eVNlcnZpY2VQcm94eSwgcHJpdmF0ZSBvcGVuSWRBdXRoU2VydmljZTogT3BlbklkQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2Vyc0lkZW50aXR5U2VydmljZVByb3h5OiBVc2Vyc0lkZW50aXR5U2VydmljZVByb3h5LCBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBwcml2YXRlIHNlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLCBwcml2YXRlIGxvZ2luU2VydmljZTogTG9naW5TZXJ2aWNlLCBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtc2FsU2VydmljZTogTXNhbFNlcnZpY2UsIHByaXZhdGUgbWVzc2FnZUJhclNlcnZpY2U6IE1lc3NhZ2VCYXJTZXJ2aWNlLCBwcml2YXRlIGFwcENvbmZpZzogQXBwQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlU2VydmljZTogUm91dGVTZXJ2aWNlLCBwcml2YXRlIG1vYmlsZUlkZW50aXR5U2VydmljZVByb3h5OiBNb2JpbGVJZGVudGl0eVNlcnZpY2VQcm94eSkge1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyB0d29GYWN0b3JTZXR1cEZvclVzZXIoc3RhdGU6IExvZ2luU3RhdGVNb2RlbCk6IFRmYVNldHVwRHRvIHtcbiAgICByZXR1cm4gc3RhdGUudGZhU2V0dXA7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHRlbmFudE5hbWUoc3RhdGU6IExvZ2luU3RhdGVNb2RlbCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0YXRlLnRlbmFudE5hbWU7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHVzZXJJbmZvKHN0YXRlOiBMb2dpblN0YXRlTW9kZWwpOiBVc2VySW5mbyB7XG4gICAgcmV0dXJuIHN0YXRlLnVzZXJJbmZvO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyB0ZW1wbGF0ZVR5cGUoc3RhdGU6IExvZ2luU3RhdGVNb2RlbCk6IFBhc3N3b3JkQ2hhbmdlVHlwZSB7XG4gICAgcmV0dXJuIHN0YXRlLnBhc3N3b3JkQ2hhbmdlVHlwZTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgYWNjb3VudHMoc3RhdGU6IExvZ2luU3RhdGVNb2RlbCk6IEF1dGhlbnRpY2F0ZVJlc3BvbnNlRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5hY2NvdW50cztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgYWNjb3VudHNNYXAoc3RhdGU6IExvZ2luU3RhdGVNb2RlbCk6IFN0cmluZ01hcDxBdXRoZW50aWNhdGVSZXNwb25zZUR0bz4ge1xuICAgIHJldHVybiBzdGF0ZS5hY2NvdW50c01hcDtcbiAgfVxuXG4gIEBBY3Rpb24oQXV0aGVudGljYXRlTXVsdGlwbGVUZW5hbnRzQWN0aW9uKVxuICBwdWJsaWMgb25BdXRoZW50aWNhdGVNdWx0aXBsZVRlbmFudHNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8TG9naW5TdGF0ZU1vZGVsPiwgeyB1c2VybmFtZSwgcGFzc3dvcmQgfTogQXV0aGVudGljYXRlTXVsdGlwbGVUZW5hbnRzQWN0aW9uKSB7XG4gICAgY29uc3QgYXV0aGVudGljYXRlUmVxdWVzdER0byA9IG5ldyBBdXRoZW50aWNhdGVSZXF1ZXN0RHRvKCk7XG4gICAgYXV0aGVudGljYXRlUmVxdWVzdER0by51c2VybmFtZSA9IHVzZXJuYW1lO1xuICAgIGF1dGhlbnRpY2F0ZVJlcXVlc3REdG8ucGFzc3dvcmQgPSBwYXNzd29yZDtcbiAgICBhdXRoZW50aWNhdGVSZXF1ZXN0RHRvLnRlbmFudE5hbWUgPSAnJztcblxuICAgIHJldHVybiB0aGlzLnVzZXJzSWRlbnRpdHlTZXJ2aWNlUHJveHkubXVsdGlUZW5hbnRzQXV0aGVudGljYXRlKGF1dGhlbnRpY2F0ZVJlcXVlc3REdG8pLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6IGFjY291bnRzSHR0cFJlc3BvbnNlRGF0YSA9PiB7XG4gICAgICAgIGNvbnN0IGFjY291bnRzID0gYWNjb3VudHNIdHRwUmVzcG9uc2VEYXRhLmRhdGE7XG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICBhY2NvdW50c1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZSA9PiB0aGlzLmF1dGhlbnRpY2F0aW9uRXJyb3JNZXNzYWdlQmFyKGUpXG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihNb2JpbGVBdXRoZW50aWNhdGVNdWx0aXBsZVRlbmFudHNBY3Rpb24pXG4gIHB1YmxpYyBvbk1vYmlsZUF1dGhlbnRpY2F0ZU11bHRpcGxlVGVuYW50c0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxMb2dpblN0YXRlTW9kZWw+LCB7IHVzZXJuYW1lLCBwYXNzd29yZCwgdGVuYW50TmFtZSB9OiBNb2JpbGVBdXRoZW50aWNhdGVNdWx0aXBsZVRlbmFudHNBY3Rpb24pIHtcbiAgICBjb25zdCBhdXRoZW50aWNhdGVSZXF1ZXN0RHRvID0gbmV3IEF1dGhlbnRpY2F0ZVJlcXVlc3REdG8oKTtcbiAgICBhdXRoZW50aWNhdGVSZXF1ZXN0RHRvLnVzZXJuYW1lID0gdXNlcm5hbWU7XG4gICAgYXV0aGVudGljYXRlUmVxdWVzdER0by5wYXNzd29yZCA9IHBhc3N3b3JkO1xuICAgIGF1dGhlbnRpY2F0ZVJlcXVlc3REdG8udGVuYW50TmFtZSA9IHRlbmFudE5hbWU7XG4gICAgcmV0dXJuIHRoaXMubW9iaWxlSWRlbnRpdHlTZXJ2aWNlUHJveHkubW9iaWxlQXV0aGVudGljYXRlKFZFUlNJT05fVjEsIGF1dGhlbnRpY2F0ZVJlcXVlc3REdG8pLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6IGFjY291bnRzID0+IHtcbiAgICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICAgIGFjY291bnRzTWFwOiBhY2NvdW50cy5kYXRhLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZSA9PiB0aGlzLmF1dGhlbnRpY2F0aW9uRXJyb3JNZXNzYWdlQmFyKGUpXG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihGb3Jnb3RQYXNzd29yZEFjdGlvbilcbiAgcHVibGljIG9uRm9yZ290UGFzc3dvcmQoY3R4OiBTdGF0ZUNvbnRleHQ8TG9naW5TdGF0ZU1vZGVsPiwgeyBlbWFpbCwgdGVuYW50SWQgfTogRm9yZ290UGFzc3dvcmRBY3Rpb24pIHtcbiAgICBjb25zdCBpc01vYmlsZUFwcE1vZGUgPSB0aGlzLmFwcENvbmZpZy5nZXRDb25maWcoKS5hcHBUeXBlID09PSBBcHBUeXBlLk1vYmlsZTtcbiAgICBjb25zdCBwYXRoID0gWydhY2NvdW50JywgJ2ZvcmdvdC1wYXNzd29yZC1zdWNjZXNzJ107XG4gICAgY29uc3QgdXJsID0gaXNNb2JpbGVBcHBNb2RlID8gcGF0aCA6IHRoaXMucm91dGVTZXJ2aWNlLmdldE5hdmlnYXRpb25Sb3V0ZShwYXRoKTtcblxuICAgIHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oUkVTRVRfUEFTU1dPUkRfRU1BSUwsIEpTT04uc3RyaW5naWZ5KGVtYWlsKSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmF2aWdhdGUodXJsKSk7XG4gICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5zdWNjZXNzKExvY2FsaXphdGlvbi5mb3Jnb3RfcGFzc3dvcmRfZW1haWxfc2VudF9tc2csIHRoaXMubWVzc2FnZU9wdGlvbnMpO1xuICAgIHJldHVybiB0aGlzLnVzZXJzQ2xvdWRTZXJ2aWNlUHJveHkuZm9yZ290UGFzc3dvcmQoZW1haWwsIHRlbmFudElkKTtcbiAgfVxuXG4gIEBBY3Rpb24oRm9yZ290UGFzc3dvcmRUZW5hbnRsZXNzQWN0aW9uKVxuICBwdWJsaWMgb25Gb3Jnb3RQYXNzd29yZFRlbmFudGxlc3MoY3R4OiBTdGF0ZUNvbnRleHQ8TG9naW5TdGF0ZU1vZGVsPiwgeyBlbWFpbCB9OiBGb3Jnb3RQYXNzd29yZEFjdGlvbikge1xuICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2Uuc3VjY2VzcyhMb2NhbGl6YXRpb24uZm9yZ290X3Bhc3N3b3JkX2VtYWlsX3NlbnRfbXNnLCB0aGlzLm1lc3NhZ2VPcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcy51c2Vyc0Nsb3VkU2VydmljZVByb3h5LmZvcmdvdFBhc3N3b3JkVGVuYW50bGVzcyhlbWFpbCk7XG4gIH1cblxuXG4gIEBBY3Rpb24oQWNjb3VudFNldFBhc3N3b3JkSW5pdEFjdGlvbilcbiAgcHVibGljIG9uQWNjb3VudFNldFBhc3N3b3JkSW5pdEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxMb2dpblN0YXRlTW9kZWw+LCB7IHVzZXJJbmZvLCBjb21wb25lbnRUeXBlIH0pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICB1c2VySW5mbyxcbiAgICAgIHBhc3N3b3JkQ2hhbmdlVHlwZTogY29tcG9uZW50VHlwZVxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihBY2NvdW50U2V0UGFzc3dvcmRFcnJvckFjdGlvbilcbiAgcHVibGljIG9uQWNjb3VudFNldFBhc3N3b3JkRXJyb3JBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8TG9naW5TdGF0ZU1vZGVsPiwgeyBlcnJvck1zZywgdXNlcm5hbWUgfSkge1xuICAgIGNvbnN0IHVzZXJJbmZvOiBVc2VySW5mbyA9IHsgLi4udXNlcm5hbWUgfTtcbiAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKGVycm9yTXNnLCB0aGlzLm1lc3NhZ2VPcHRpb25zKTtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICB1c2VySW5mb1xuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihBY2NvdW50U2V0UGFzc3dvcmRBY3Rpb24pXG4gIHB1YmxpYyBvbkFjY291bnRTZXRQYXNzd29yZEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxMb2dpblN0YXRlTW9kZWw+LCB7IHBhc3N3b3JkIH06IEFjY291bnRTZXRQYXNzd29yZEFjdGlvbikge1xuICAgIGNvbnN0IHVzZXJJbmZvID0gY3R4LmdldFN0YXRlKCkudXNlckluZm87XG4gICAgbGV0IGRhdGE6IGFueTtcbiAgICBsZXQgc2V0UGFzc3dvcmQkOiBPYnNlcnZhYmxlPFVzZXJEdG9IdHRwUmVzcG9uc2VEYXRhIHwgQWN0aXZhdGVSZXNwb25zZUR0b0h0dHBSZXNwb25zZURhdGE+O1xuXG4gICAgaWYgKHRoaXMuYXBwQ29uZmlnLmdldENvbmZpZygpLmFwcFR5cGUgPT09IEFwcFR5cGUuQ2xvdWQpIHtcbiAgICAgIGRhdGEgPSBuZXcgQWN0aXZhdGVVc2VyRHRvKHtcbiAgICAgICAgcGFzc3dvcmQsXG4gICAgICAgIGN1cnJlbnRQYXNzd29yZDogbnVsbCxcbiAgICAgICAgdXNlclN0YXR1czogdXNlckluZm8uc3RhdHVzIGFzIFVzZXJTdGF0dXNcbiAgICAgIH0pO1xuXG4gICAgICBzZXRQYXNzd29yZCQgPSB0aGlzLnVzZXJzQ2xvdWRTZXJ2aWNlUHJveHkuYWN0aXZhdGUoZGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGEgPSBuZXcgVXNlclVwZGF0ZVBhc3N3b3JkRHRvKHtcbiAgICAgICAgcGFzc3dvcmQsXG4gICAgICAgIGN1cnJlbnRQYXNzd29yZDogbnVsbFxuICAgICAgfSk7XG4gICAgICBzZXRQYXNzd29yZCQgPSB0aGlzLnVzZXJzQ2xvdWRTZXJ2aWNlUHJveHkudXBkYXRlVXNlclBhc3N3b3JkKGRhdGEpO1xuICAgIH1cblxuICAgIHJldHVybiBzZXRQYXNzd29yZCQucGlwZShcbiAgICAgIG1hcCgoYWN0aXZhdGVSZXNwb25zZUR0b0h0dHBSZXNwb25zZURhdGE6IEFjdGl2YXRlUmVzcG9uc2VEdG9IdHRwUmVzcG9uc2VEYXRhKSA9PiB7XG4gICAgICAgIGlmIChhY3RpdmF0ZVJlc3BvbnNlRHRvSHR0cFJlc3BvbnNlRGF0YS5kYXRhLmlzU3VjY2Vzcykge1xuICAgICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICAgIHRmYVNldHVwOiBhY3RpdmF0ZVJlc3BvbnNlRHRvSHR0cFJlc3BvbnNlRGF0YS5kYXRhPy50ZmFTZXR1cCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYWN0aXZhdGVSZXNwb25zZUR0b0h0dHBSZXNwb25zZURhdGEuZGF0YS5lcnJvck1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoZSA9PiB7XG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGUgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IGU7XG4gICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IoZXJyb3JNZXNzYWdlLCB0aGlzLm1lc3NhZ2VPcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3JNZXNzYWdlKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIEBBY3Rpb24oVmFsaWRhdGVVc2VyVG9rZW5BY3Rpb24pXG4gIHB1YmxpYyBvblZhbGlkYXRlVXNlclRva2VuQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PExvZ2luU3RhdGVNb2RlbD4sIHsgdG9rZW4sIHRva2VuVHlwZSB9OiBWYWxpZGF0ZVVzZXJUb2tlbkFjdGlvbikge1xuICAgIGNvbnN0IHBjdDogYW55ID0gUGFzc3dvcmRDaGFuZ2VUeXBlW3Rva2VuVHlwZV07XG4gICAgcmV0dXJuIHRoaXMudXNlcnNJZGVudGl0eVNlcnZpY2VQcm94eS52YWxpZGF0ZUFjdGl2YXRpb24odG9rZW4sIFBhc3N3b3JkQ2hhbmdlVHlwZVtQYXNzd29yZENoYW5nZVR5cGVbdG9rZW5UeXBlXV0pLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6ICh1c2VyOiBWYWxpZGF0ZUFjdGl2YXRpb25Vc2VyRHRvSHR0cFJlc3BvbnNlRGF0YSkgPT4ge1xuICAgICAgICBpZiAodXNlcj8uZGF0YSkge1xuICAgICAgICAgIGNvbnN0IHVzZXJJbmZvOiBVc2VySW5mbyA9IHtcbiAgICAgICAgICAgIHVzZXJJZDogdXNlci5kYXRhLmlkLFxuICAgICAgICAgICAgdXNlcm5hbWU6IHVzZXIuZGF0YS51TmFtZSxcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBgJHt1c2VyLmRhdGEubmFtZX0gJHt1c2VyLmRhdGEubGFzdE5hbWV9YCxcbiAgICAgICAgICAgIHN0YXR1czogdXNlci5kYXRhLnN0YXR1cyxcbiAgICAgICAgICAgIHBtbDogdXNlci5kYXRhLnBtbFxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKHVzZXIuZGF0YS5zdGF0dXMgIT09IFVzZXJTdGF0dXMuQmxvY2tlZCkge1xuICAgICAgICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICAgICAgICB1c2VySW5mbyxcbiAgICAgICAgICAgICAgcGFzc3dvcmRDaGFuZ2VUeXBlOiBwY3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcihMb2NhbGl6YXRpb24ubm9uX2FjdGl2ZV91c2VyLCB0aGlzLm1lc3NhZ2VPcHRpb25zKTtcbiAgICAgICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICAgICAgdXNlckluZm8sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogZSA9PiB7XG4gICAgICAgIGNvbnN0IGVycm9ySnNvbjogUHJvYmxlbURldGFpbHMgPSBKU09OLnBhcnNlKGUucmVzcG9uc2UpIGFzIFByb2JsZW1EZXRhaWxzO1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKHBhcnNlQXBpRXJyb3JNZXNzYWdlKGUpLCB0aGlzLm1lc3NhZ2VPcHRpb25zKTtcbiAgICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICAgIHVzZXJJbmZvOiB7XG4gICAgICAgICAgICB1c2VybmFtZTogZXJyb3JKc29uLmluc3RhbmNlLFxuICAgICAgICAgICAgdXNlcklkOiBudWxsLFxuICAgICAgICAgICAgZGlzcGxheU5hbWU6IG51bGxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKFZlcmlmeTJGYWN0b3JBdXRoZW50aWNhdGlvbkFjdGlvbilcbiAgcHVibGljIG9uVmVyaWZ5MkZhY3RvckF1dGhlbnRpY2F0aW9uQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PExvZ2luU3RhdGVNb2RlbD4sIHsgdXNlck5hbWUsIGNvZGUsIHNldHVwMkZhIH06IFZlcmlmeTJGYWN0b3JBdXRoZW50aWNhdGlvbkFjdGlvbikge1xuICAgIGNvbnN0IHZlcmlmeTJGYWN0b3JBdXRoUmVxdWVzdER0byA9IG5ldyBWZXJpZnkyRmFjdG9yQXV0aFJlcXVlc3REdG8oe1xuICAgICAgY29kZSxcbiAgICAgIHVzZXJOYW1lXG4gICAgfSk7XG5cbiAgICBsZXQgdmVyaWZ5MkZhY3RvckF1dGgkOiBPYnNlcnZhYmxlPFZlcmlmeTJGYWN0b3JBdXRoUmVzcG9uc2V0RHRvSHR0cFJlc3BvbnNlRGF0YT47XG4gICAgaWYgKHNldHVwMkZhKSB7XG4gICAgICB2ZXJpZnkyRmFjdG9yQXV0aCQgPSB0aGlzLnVzZXJzSWRlbnRpdHlTZXJ2aWNlUHJveHkudmVyaWZ5MkZhY3RvckF1dGhlbnRpY2F0aW9uKHZlcmlmeTJGYWN0b3JBdXRoUmVxdWVzdER0byk7XG4gICAgfSBlbHNlIHsgLy8gbG9naW4gZm9yIHVzZXIgd2l0aCAyRkEgKGFscmVhZHkgc2V0IHVwKVxuICAgICAgdmVyaWZ5MkZhY3RvckF1dGgkID0gdGhpcy51c2Vyc0lkZW50aXR5U2VydmljZVByb3h5LnZlcmlmeTJGYWN0b3JBdXRoZW50aWNhdGlvbkxvZ2luKHZlcmlmeTJGYWN0b3JBdXRoUmVxdWVzdER0byk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmeTJGYWN0b3JBdXRoJC5waXBlKHRhcCh7XG4gICAgICBuZXh0OiAodmVyaWZ5MkZhY3RvckF1dGhSZXNwb25zZXQ6IFZlcmlmeTJGYWN0b3JBdXRoUmVzcG9uc2V0RHRvSHR0cFJlc3BvbnNlRGF0YSkgPT4ge1xuICAgICAgICB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5hY2Nlc3NUb2tlbiA9IHZlcmlmeTJGYWN0b3JBdXRoUmVzcG9uc2V0LmRhdGEuYWNjZXNzVG9rZW47XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFVwZGF0ZUF1dGhUb2tlbkFjdGlvbih2ZXJpZnkyRmFjdG9yQXV0aFJlc3BvbnNldC5kYXRhLmFjY2Vzc1Rva2VuKSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IGUgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKHBhcnNlQXBpRXJyb3JNZXNzYWdlKGUpLCB0aGlzLm1lc3NhZ2VPcHRpb25zKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKFNldFRGQVNldHVwQWN0aW9uKVxuICBwdWJsaWMgb25TZXRURkFTZXR1cEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxMb2dpblN0YXRlTW9kZWw+LCB7IHRmYVNldHVwRHRvIH0pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICB0ZmFTZXR1cDogdGZhU2V0dXBEdG9cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXV0aGVudGljYXRpb25FcnJvck1lc3NhZ2VCYXIoZXJyb3I6IEFwaUV4Y2VwdGlvbikge1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHBhcnNlQXBpRXJyb3JNZXNzYWdlKGVycm9yKTtcbiAgICBjb25zdCBkYXRhID0gcGFyc2VBcGlFcnJvckRhdGE8QXV0aGVudGljYXRlRXJyb3JSZXNwb25zZUR0bz4oZXJyb3IpO1xuICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IoZXJyb3JNZXNzYWdlLCB7IHBvc2l0aW9uOiBNZXNzYWdlQmFyUG9zaXRpb24uU3RhdGljLCBtZXNzYWdlUGFyYW1zOiB7IHRlbXBvcmFyeUxvY2tlZE1pbnV0ZXM6IGRhdGE/LnRlbXBvcmFyeUJsb2NrZWRUaW1lIH0gfSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyTXNsTG9naW5DYWNoZSgpIHtcbiAgICBjb25zdCBjbGVhckNhY2hlUmVxdWVzdDogQ2xlYXJDYWNoZVJlcXVlc3QgPSB7XG4gICAgICBhY2NvdW50OiB0aGlzLm1zYWxTZXJ2aWNlLmluc3RhbmNlLmdldEFsbEFjY291bnRzKClbMF0sXG4gICAgfTtcbiAgICB0aGlzLm1zYWxTZXJ2aWNlLmluc3RhbmNlLmNsZWFyQ2FjaGUoY2xlYXJDYWNoZVJlcXVlc3QpO1xuICAgIHRoaXMubXNhbFNlcnZpY2UubG9nb3V0KCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyU2luZ2xlU2luZ09uQ2FjaGUoc2luZ2xlU2lnbk9uUHJvdmlkZXI6IFNpbmdsZVNpZ25PblByb3ZpZGVyKSB7XG4gICAgc3dpdGNoIChzaW5nbGVTaWduT25Qcm92aWRlcikge1xuICAgICAgY2FzZSBTaW5nbGVTaWduT25Qcm92aWRlci5NaWNyb3NvZnQ6XG4gICAgICAgIHRoaXMuY2xlYXJNc2xMb2dpbkNhY2hlKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNpbmdsZVNpZ25PblByb3ZpZGVyLlBpbmdGZWRlcmF0ZTpcbiAgICAgICAgdGhpcy5vcGVuSWRBdXRoU2VydmljZS5zaWduT3V0KCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBsb2NhbFN0b3JhZ2UuY2xlYXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXNlclN0YXR1c0lzQXdhaXRpbmdBY2Nlc3MgPSAoYXV0aFJlc3BvbnNlOiBBdXRoZW50aWNhdGVSZXNwb25zZUR0b0h0dHBSZXNwb25zZURhdGEpOiBib29sZWFuID0+XG4gICAgYXV0aFJlc3BvbnNlLmRhdGEuc2luZ2xlU2lnbk9uQXV0aGVudGljYXRpb25EdG8/LmlzQXV0aGVudGljYXRlZCA9PT0gZmFsc2UgJiZcbiAgICBhdXRoUmVzcG9uc2UuZGF0YS5zaW5nbGVTaWduT25BdXRoZW50aWNhdGlvbkR0bz8udXNlclN0YXR1cyA9PT0gVXNlclN0YXR1cy5Bd2FpdGluZ0FjY2VzcztcblxuICBAQWN0aW9uKEJhY2tvZmZpY2VBdXRoZXRpY2F0ZUFjdGlvbilcbiAgcHVibGljIG9uQmFja29mZmljZUF1dGhldGljYXRlQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PExvZ2luU3RhdGVNb2RlbD4sIHsgdG9rZW4sIHRlbmFudEluZm8gfTogQmFja29mZmljZUF1dGhldGljYXRlQWN0aW9uKSB7XG4gICAgY29uc3QgYXV0aGVudGljYXRlUmVxdWVzdER0byA9IG5ldyBBdXRoZW50aWNhdGVCYWNrb2ZmaWNlUmVxdWVzdER0bygpO1xuICAgIGF1dGhlbnRpY2F0ZVJlcXVlc3REdG8uY29kZSA9IHRva2VuO1xuICAgIGF1dGhlbnRpY2F0ZVJlcXVlc3REdG8udGVuYW50TmFtZSA9IHRlbmFudEluZm8udGVuYW50TmFtZTtcblxuICAgIGNvbnN0IGF1dGhlbnRpY2F0ZU9pZGMkID0gdGhpcy5iYWNrb2ZmaWNlVXNlcklkZW50aXR5U2VydmljZVByb3h5LmJhY2tvZmZpY2VBdXRoZW50aWNhdGUoYXV0aGVudGljYXRlUmVxdWVzdER0byk7XG4gICAgcmV0dXJuIGF1dGhlbnRpY2F0ZU9pZGMkLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6IGF1dGhSZXNwb25zZSA9PiB7XG4gICAgICAgIGlmIChhdXRoUmVzcG9uc2UuZGF0YS5tZXNzYWdlID09PSBMb2NhbGl6YXRpb24uc3NvX3BlbmRpbmdfYXBwcm92YWwpIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLnNzb19wZW5kaW5nX2FwcHJvdmFsKTtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmluZm8obWVzc2FnZSwgeyBwb3NpdGlvbjogTWVzc2FnZUJhclBvc2l0aW9uLlN0YXRpYyB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzcGFya1Nlc3Npb24gPSB0aGlzLmF1dGhTZXJ2aWNlLnByb2Nlc3NBdXRoZW50aWNhdGUoYXV0aFJlc3BvbnNlLmRhdGEpO1xuICAgICAgICBjdHguZGlzcGF0Y2gobmV3IFNldFRlbmFudFVzZXJBY3Rpb24oc3BhcmtTZXNzaW9uKSk7XG4gICAgICAgIGlmICh0aGlzLnVzZXJTdGF0dXNJc0F3YWl0aW5nQWNjZXNzKGF1dGhSZXNwb25zZSkpIHtcbiAgICAgICAgICB0aGlzLmNsZWFyU2luZ2xlU2luZ09uQ2FjaGUoU2luZ2xlU2lnbk9uUHJvdmlkZXIuTWljcm9zb2Z0KTtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLnNzb19wZW5kaW5nX2FwcHJvdmFsKTtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLndhcm4obWVzc2FnZSwgeyBwb3NpdGlvbjogTWVzc2FnZUJhclBvc2l0aW9uLlN0YXRpYyB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAvLyBBZnRlciBhdXRoZW50aWNhdGlvbiBnZXQgYXBwIGNvbmZpZ3VyYXRpb25cbiAgICAgICAgICB0aGlzLmxvZ2luVG9CYWNrb2ZmaWNlKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogZSA9PiB7XG4gICAgICAgIHRoaXMuc2luZ2xlU2luZ09uRXJyb3JIYW5kbGluZyhlKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKE9wZW5JZEF1dGhldGljYXRlQWN0aW9uKVxuICBwdWJsaWMgb25PcGVuSWRBdXRoZXRpY2F0ZUFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxMb2dpblN0YXRlTW9kZWw+LCBhY3Rpb246IE9wZW5JZEF1dGhldGljYXRlQWN0aW9uKSB7XG4gICAgbGV0IGF1dGhlbnRpY2F0ZU9pZGMkOiBPYnNlcnZhYmxlPEF1dGhlbnRpY2F0ZVJlc3BvbnNlRHRvSHR0cFJlc3BvbnNlRGF0YT47XG4gICAgYXV0aGVudGljYXRlT2lkYyQgPSB0aGlzLnVzZXJzSWRlbnRpdHlTZXJ2aWNlUHJveHkub3BlbklkQXV0aGVudGljYXRlKGFjdGlvbi50b2tlbiwgYWN0aW9uLnRlbmFudEluZm8udGVuYW50TmFtZSk7XG5cbiAgICByZXR1cm4gYXV0aGVudGljYXRlT2lkYyQucGlwZSh0YXAoe1xuICAgICAgbmV4dDogYXV0aFJlc3BvbnNlID0+IHtcbiAgICAgICAgaWYgKGF1dGhSZXNwb25zZS5kYXRhLm1lc3NhZ2UgPT09IExvY2FsaXphdGlvbi5zc29fcGVuZGluZ19hcHByb3ZhbCkge1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uc3NvX3BlbmRpbmdfYXBwcm92YWwpO1xuICAgICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuaW5mbyhtZXNzYWdlLCB7IHBvc2l0aW9uOiBNZXNzYWdlQmFyUG9zaXRpb24uU3RhdGljIH0pO1xuICAgICAgICAgIGFjdGlvbi5pc1BlbmRpbmdBcHByb3ZhbCA9IHRydWU7XG4gICAgICAgICAgLy90aGlzLmNsZWFyU2luZ2xlU2luZ09uQ2FjaGUoc2luZ2xlU2lnbk9uUHJvdmlkZXIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNwYXJrU2Vzc2lvbiA9IHRoaXMuYXV0aFNlcnZpY2UucHJvY2Vzc0F1dGhlbnRpY2F0ZShhdXRoUmVzcG9uc2UuZGF0YSk7XG4gICAgICAgIGN0eC5kaXNwYXRjaChuZXcgU2V0VGVuYW50VXNlckFjdGlvbihzcGFya1Nlc3Npb24pKTtcblxuICAgICAgICBpZiAodGhpcy51c2VyU3RhdHVzSXNBd2FpdGluZ0FjY2VzcyhhdXRoUmVzcG9uc2UpKSB7XG4gICAgICAgICAgdGhpcy5jbGVhclNpbmdsZVNpbmdPbkNhY2hlKGFjdGlvbi5zaW5nbGVTaWduT25Qcm92aWRlcik7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5zc29fcGVuZGluZ19hcHByb3ZhbCk7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS53YXJuKG1lc3NhZ2UsIHsgcG9zaXRpb246IE1lc3NhZ2VCYXJQb3NpdGlvbi5TdGF0aWMgfSk7XG4gICAgICAgICAgYWN0aW9uLmlzUGVuZGluZ0FwcHJvdmFsID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAvLyBBZnRlciBhdXRoZW50aWNhdGlvbiBnZXQgYXBwIGNvbmZpZ3VyYXRpb25cbiAgICAgICAgICB0aGlzLmxvZ2luVG9TcGFyaygpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IGUgPT4ge1xuICAgICAgICB0aGlzLnNpbmdsZVNpbmdPbkVycm9ySGFuZGxpbmcoZSk7XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgc2luZ2xlU2luZ09uRXJyb3JIYW5kbGluZyhlOiBhbnkpIHtcbiAgICBpZiAoZS5lcnJvck1lc3NhZ2UgPT0gTG9jYWxpemF0aW9uLnNzb19wZW5kaW5nX2FwcHJvdmFsKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLnNzb19wZW5kaW5nX2FwcHJvdmFsKTtcbiAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuaW5mbyhtZXNzYWdlLCB7IHBvc2l0aW9uOiBNZXNzYWdlQmFyUG9zaXRpb24uU3RhdGljIH0pO1xuICAgIH1cbiAgICBlbHNlIGlmIChlLmVycm9yTWVzc2FnZSkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGUuZXJyb3JNZXNzYWdlKTtcbiAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IobWVzc2FnZSwgeyBwb3NpdGlvbjogTWVzc2FnZUJhclBvc2l0aW9uLlN0YXRpYyB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKHBhcnNlQXBpRXJyb3JNZXNzYWdlKGUpLCB0aGlzLm1lc3NhZ2VPcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBsb2dpblRvU3BhcmsoKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTG9hZEFwcENvbmZpZ3VyYXRpb25BY3Rpb24oKSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgSGVhbHRoQWN0aW9uKCkpO1xuICAgIHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnVwZGF0ZUxvZ2dlZFRlbmFudCgpO1xuICAgIHRoaXMubG9naW5TZXJ2aWNlLmxvZ2luVG9TcGFyaygpO1xuICB9XG5cbiAgbG9naW5Ub0JhY2tvZmZpY2UoKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTG9hZEJhY2tvZmZpY2VBcHBDb25maWd1cmF0aW9uQWN0aW9uKCkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEhlYWx0aEFjdGlvbigpKTtcbiAgICB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS51cGRhdGVMb2dnZWRUZW5hbnQoKTtcbiAgICB0aGlzLmxvZ2luU2VydmljZS5sb2dpblRvU3BhcmsoKTtcbiAgfVxufVxuIl19
|