@esolve/ng-esolve-connect 0.22.2 → 0.23.0
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/esm2020/lib/account/confirmation/esolve-account-confirmation-post-response-item.interface.mjs +2 -0
- package/esm2020/lib/account/confirmation/esolve-account-confirmation-result.model.mjs +10 -0
- package/esm2020/lib/account/confirmation/index.mjs +3 -0
- package/esm2020/lib/account/esolve-account.service.mjs +34 -1
- package/esm2020/lib/account/index.mjs +2 -1
- package/esm2020/lib/cart/esolve-checkout-response.interface.mjs +1 -1
- package/esm2020/lib/cart/esolve-checkout-result.model.mjs +2 -1
- package/esm2020/lib/payment/esolve-payment.service.mjs +6 -3
- package/esm2020/lib/payment/interfaces/esolve-payment-redirect-links.interface.mjs +2 -0
- package/esm2020/lib/payment/interfaces/esolve-payment-set-body.interface.mjs +1 -1
- package/esm2020/lib/payment/interfaces/index.mjs +2 -1
- package/esm2020/lib/wishlist/esolve-wishlist.service.mjs +2 -2
- package/fesm2015/esolve-ng-esolve-connect.mjs +49 -3
- package/fesm2015/esolve-ng-esolve-connect.mjs.map +1 -1
- package/fesm2020/esolve-ng-esolve-connect.mjs +48 -3
- package/fesm2020/esolve-ng-esolve-connect.mjs.map +1 -1
- package/lib/account/confirmation/esolve-account-confirmation-post-response-item.interface.d.ts +7 -0
- package/lib/account/confirmation/esolve-account-confirmation-result.model.d.ts +8 -0
- package/lib/account/confirmation/index.d.ts +2 -0
- package/lib/account/esolve-account.service.d.ts +10 -0
- package/lib/account/index.d.ts +1 -0
- package/lib/cart/esolve-checkout-response.interface.d.ts +1 -0
- package/lib/cart/esolve-checkout-result.model.d.ts +1 -0
- package/lib/payment/esolve-payment.service.d.ts +2 -2
- package/lib/payment/interfaces/esolve-payment-redirect-links.interface.d.ts +4 -0
- package/lib/payment/interfaces/esolve-payment-set-body.interface.d.ts +2 -0
- package/lib/payment/interfaces/index.d.ts +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWFjY291bnQtY29uZmlybWF0aW9uLXBvc3QtcmVzcG9uc2UtaXRlbS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL2FjY291bnQvY29uZmlybWF0aW9uL2Vzb2x2ZS1hY2NvdW50LWNvbmZpcm1hdGlvbi1wb3N0LXJlc3BvbnNlLWl0ZW0uaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFc29sdmVQb3N0UmVzcG9uc2VJdGVtIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3Jlc3BvbnNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXNvbHZlQWNjb3VudENvbmZpcm1hdGlvblBvc3RSZXNwb25zZUl0ZW0gZXh0ZW5kcyBFc29sdmVQb3N0UmVzcG9uc2VJdGVtIHtcclxuICAgIGVzb2x2ZV9pZDogbnVtYmVyO1xyXG4gICAgbG9jYXRpb25faWQ6IG51bWJlcjtcclxuICAgIHJlY2FsY3VsYXRlZF9jYXJ0OiBib29sZWFuO1xyXG4gICAgYXV0b19sb2dpbjogYm9vbGVhbjtcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { EsolveResponseResult } from '../../shared/response';
|
|
2
|
+
export class EsolveAccountConfirmationResult extends EsolveResponseResult {
|
|
3
|
+
constructor(response) {
|
|
4
|
+
super(response);
|
|
5
|
+
this.user_id = +response.esolve_id;
|
|
6
|
+
this.location_id = +response.location_id;
|
|
7
|
+
this.recalculated_cart = !!+response.recalculated_cart;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWFjY291bnQtY29uZmlybWF0aW9uLXJlc3VsdC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYWNjb3VudC9jb25maXJtYXRpb24vZXNvbHZlLWFjY291bnQtY29uZmlybWF0aW9uLXJlc3VsdC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUc3RCxNQUFNLE9BQU8sK0JBQWdDLFNBQVEsb0JBQW9CO0lBS3JFLFlBQ0ksUUFBbUQ7UUFFbkQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWhCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUM7SUFDM0QsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXNvbHZlUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi8uLi9zaGFyZWQvcmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBFc29sdmVBY2NvdW50Q29uZmlybWF0aW9uUG9zdFJlc3BvbnNlSXRlbSB9IGZyb20gJy4vZXNvbHZlLWFjY291bnQtY29uZmlybWF0aW9uLXBvc3QtcmVzcG9uc2UtaXRlbS5pbnRlcmZhY2UnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEVzb2x2ZUFjY291bnRDb25maXJtYXRpb25SZXN1bHQgZXh0ZW5kcyBFc29sdmVSZXNwb25zZVJlc3VsdCB7XHJcbiAgICBwdWJsaWMgdXNlcl9pZDogbnVtYmVyO1xyXG4gICAgcHVibGljIGxvY2F0aW9uX2lkOiBudW1iZXI7XHJcbiAgICBwdWJsaWMgcmVjYWxjdWxhdGVkX2NhcnQ6IGJvb2xlYW47XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcmVzcG9uc2U6IEVzb2x2ZUFjY291bnRDb25maXJtYXRpb25Qb3N0UmVzcG9uc2VJdGVtLFxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIocmVzcG9uc2UpO1xyXG5cclxuICAgICAgICB0aGlzLnVzZXJfaWQgPSArcmVzcG9uc2UuZXNvbHZlX2lkO1xyXG4gICAgICAgIHRoaXMubG9jYXRpb25faWQgPSArcmVzcG9uc2UubG9jYXRpb25faWQ7XHJcbiAgICAgICAgdGhpcy5yZWNhbGN1bGF0ZWRfY2FydCA9ICEhK3Jlc3BvbnNlLnJlY2FsY3VsYXRlZF9jYXJ0O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './esolve-account-confirmation-result.model';
|
|
2
|
+
export * from './esolve-account-confirmation-post-response-item.interface';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL2FjY291bnQvY29uZmlybWF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyw0REFBNEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLWFjY291bnQtY29uZmlybWF0aW9uLXJlc3VsdC5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLWFjY291bnQtY29uZmlybWF0aW9uLXBvc3QtcmVzcG9uc2UtaXRlbS5pbnRlcmZhY2UnO1xyXG4iXX0=
|
|
@@ -9,6 +9,7 @@ import { EsolveAddress, EsolveAddressResult, } from './address';
|
|
|
9
9
|
import { EsolveChangePasswordResult, EsolveResetPasswordResult, } from './password';
|
|
10
10
|
import { EsolveTransaction, EsolveTransactionList, } from './transaction';
|
|
11
11
|
import { EsolveUserAccount, EsolveUserAccountResult, EsolveUserAccountContact, EsolveUserAccountBusiness, } from './user-account';
|
|
12
|
+
import { EsolveAccountConfirmationResult } from './confirmation';
|
|
12
13
|
import * as i0 from "@angular/core";
|
|
13
14
|
import * as i1 from "@angular/common/http";
|
|
14
15
|
import * as i2 from "../session/esolve-session.service";
|
|
@@ -160,6 +161,38 @@ export class EsolveAccountService {
|
|
|
160
161
|
return this.errorHandler.handleHttpPostError('set-change-password', errorRes);
|
|
161
162
|
}));
|
|
162
163
|
}
|
|
164
|
+
/**
|
|
165
|
+
* Submits the users confirmation key to the relevant backend server in order to
|
|
166
|
+
* confirm the accounts validity. The key was emailed to the user hence if he received
|
|
167
|
+
* it and enters the value, the email account can be seen as valid.
|
|
168
|
+
*
|
|
169
|
+
* @param key The key that was emailed to the registered user's email account.
|
|
170
|
+
* @returns An `Observable` that contains the result of the account confirmation request.
|
|
171
|
+
*/
|
|
172
|
+
accountConfirmationRequest(key) {
|
|
173
|
+
const body = {
|
|
174
|
+
key,
|
|
175
|
+
};
|
|
176
|
+
return this.http
|
|
177
|
+
.post(`${this.config.api_url}/set-account-confirmation.php`, body, {
|
|
178
|
+
headers: {
|
|
179
|
+
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;',
|
|
180
|
+
},
|
|
181
|
+
responseType: 'json',
|
|
182
|
+
observe: 'body',
|
|
183
|
+
})
|
|
184
|
+
.pipe(map((http_response) => this.responseHandler.validateSingleHttpResponse(http_response, (response) => {
|
|
185
|
+
if (response.auto_login) {
|
|
186
|
+
this.sessionService.handleUpdateSession({
|
|
187
|
+
user_id: +response.esolve_id,
|
|
188
|
+
location_id: +response.location_id,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
return new EsolveAccountConfirmationResult(response);
|
|
192
|
+
})), catchError((errorRes) => {
|
|
193
|
+
return this.errorHandler.handleHttpPostError('set-account-confirmation', errorRes);
|
|
194
|
+
}));
|
|
195
|
+
}
|
|
163
196
|
sendForgotPasswordRequest(email) {
|
|
164
197
|
return this.http
|
|
165
198
|
.get(`${this.config.api_url}/get-forgot-password.php`, { params: { email } })
|
|
@@ -312,4 +345,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
312
345
|
type: Inject,
|
|
313
346
|
args: [ESOLVE_CONNECT_CONFIG]
|
|
314
347
|
}] }, { type: i1.HttpClient }, { type: i2.EsolveSessionService }, { type: i3.EsolveErrorHandlerService }, { type: i4.EsolveResponseHandlerService }]; } });
|
|
315
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWFjY291bnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYWNjb3VudC9lc29sdmUtYWNjb3VudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUUxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFXN0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbkYsT0FBTyxFQUdILHdCQUF3QixHQUMzQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDSCxhQUFhLEVBRWIsbUJBQW1CLEdBR3RCLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFDSCwwQkFBMEIsRUFDMUIseUJBQXlCLEdBRzVCLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFFSCxpQkFBaUIsRUFFakIscUJBQXFCLEdBQ3hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxpQkFBaUIsRUFHakIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4Qix5QkFBeUIsR0FDNUIsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBS3hCLE1BQU0sT0FBTyxvQkFBb0I7SUFlN0IsWUFDMkMsTUFBMkIsRUFDMUQsSUFBZ0IsRUFDaEIsY0FBb0MsRUFDcEMsWUFBdUMsRUFDdkMsZUFBNkM7UUFKZCxXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUMxRCxTQUFJLEdBQUosSUFB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LFdBQVcsRUFDbEIsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUNoQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQ3BCLENBQUMsQ0FBQztTQUNOO1FBRUQsT0FBTyxjQUFjLENBQUM7SUFDMUIsQ0FBQztJQUVPLG1CQUFtQixDQUFDLE9BQWtDO1FBQzFELE1BQU0sWUFBWSxHQUF3QixFQUFFLENBQUM7UUFFN0MsSUFBSSxPQUFPLEVBQUU7WUFDVCxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRTtnQkFDMUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFFbEQsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNsQztTQUNKO1FBRUQsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztJQUVPLFVBQVU7UUFDZCxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLG1CQUFtQixDQUFDLENBQUM7U0FDdkU7SUFDTCxDQUFDOztrSEE3ZFEsb0JBQW9CLGtCQWdCakIscUJBQXFCO3NIQWhCeEIsb0JBQW9CLGNBRmpCLE1BQU07NEZBRVQsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBaUJRLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVDb25uZWN0Q29uZmlnIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QuY29uZmlnJztcclxuaW1wb3J0IHsgRVNPTFZFX0NPTk5FQ1RfQ09ORklHIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QtY29uZmlnLmNvbnN0YW50JztcclxuXHJcbmltcG9ydCB7IEVzb2x2ZVJlc3VsdCB9IGZyb20gJy4uL3NoYXJlZC9lc29sdmUtcmVzdWx0Lm1vZGVsJztcclxuaW1wb3J0IHsgRXNvbHZlRXJyb3JIYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9lcnJvcnMnO1xyXG5pbXBvcnQge1xyXG4gICAgRXNvbHZlRGVsZXRlUmVzcG9uc2UsXHJcbiAgICBFc29sdmVTZXRSZXNwb25zZSxcclxuICAgIEVzb2x2ZUdldFJlc3BvbnNlLFxyXG4gICAgRXNvbHZlUmVzcG9uc2VIYW5kbGVyU2VydmljZSxcclxufSBmcm9tICcuLi9zaGFyZWQvcmVzcG9uc2UnO1xyXG5cclxuaW1wb3J0IHsgRXNvbHZlU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi9zZXNzaW9uL2Vzb2x2ZS1zZXNzaW9uLnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgRXNvbHZlTG9jYXRpb25VcGRhdGVSZXN1bHQgfSBmcm9tICcuL2Vzb2x2ZS1sb2NhdGlvbi11cGRhdGUtcmVzdWx0Lm1vZGVsJztcclxuaW1wb3J0IHtcclxuICAgIEVzb2x2ZVJlZ2lzdHJhdGlvblBvc3RSZXNwb25zZUl0ZW0sXHJcbiAgICBFc29sdmVSZWdpc3RyYXRpb25EYXRhLFxyXG4gICAgRXNvbHZlUmVnaXN0cmF0aW9uUmVzdWx0LFxyXG59IGZyb20gJy4vcmVnaXN0cmF0aW9uJztcclxuaW1wb3J0IHtcclxuICAgIEVzb2x2ZUFkZHJlc3MsXHJcbiAgICBFc29sdmVBZGRyZXNzUmVjb3JkLFxyXG4gICAgRXNvbHZlQWRkcmVzc1Jlc3VsdCxcclxuICAgIEVzb2x2ZUFkZHJlc3NQb3N0RGF0YSxcclxuICAgIEVzb2x2ZUFkZHJlc3NSZXNwb25zZSxcclxufSBmcm9tICcuL2FkZHJlc3MnO1xyXG5pbXBvcnQge1xyXG4gICAgRXNvbHZlQ2hhbmdlUGFzc3dvcmRSZXN1bHQsXHJcbiAgICBFc29sdmVSZXNldFBhc3N3b3JkUmVzdWx0LFxyXG4gICAgRXNvbHZlRm9yZ290UGFzc3dvcmRSZXNwb25zZSxcclxuICAgIEVzb2x2ZUZvcmdvdFBhc3N3b3JkR2V0UmVzdWx0LFxyXG59IGZyb20gJy4vcGFzc3dvcmQnO1xyXG5pbXBvcnQge1xyXG4gICAgRXNvbHZlVHJhbnNhY3Rpb25SZWNvcmQsXHJcbiAgICBFc29sdmVUcmFuc2FjdGlvbixcclxuICAgIEVzb2x2ZVRyYW5zYWN0aW9uT3B0aW9ucyxcclxuICAgIEVzb2x2ZVRyYW5zYWN0aW9uTGlzdCxcclxufSBmcm9tICcuL3RyYW5zYWN0aW9uJztcclxuaW1wb3J0IHtcclxuICAgIEVzb2x2ZVVzZXJBY2NvdW50LFxyXG4gICAgRXNvbHZlVXNlckFjY291bnREYXRhLFxyXG4gICAgRXNvbHZlVXNlckFjY291bnRSZWNvcmQsXHJcbiAgICBFc29sdmVVc2VyQWNjb3VudFJlc3VsdCxcclxuICAgIEVzb2x2ZVVzZXJBY2NvdW50Q29udGFjdCxcclxuICAgIEVzb2x2ZVVzZXJBY2NvdW50QnVzaW5lc3MsXHJcbn0gZnJvbSAnLi91c2VyLWFjY291bnQnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNvbHZlQWNjb3VudFNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSBfdXNlcl9pZCA9IDA7XHJcblxyXG4gICAgcHVibGljIGdldCB1c2VyX2lkKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJfaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldCB1c2VyX2lkKHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICB2YWx1ZSA9ICgodmFsdWUgPiAwKSA/IHZhbHVlIDogMCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl91c2VyX2lkICE9PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl91c2VyX2lkID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoRVNPTFZFX0NPTk5FQ1RfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogRXNvbHZlQ29ubmVjdENvbmZpZyxcclxuICAgICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgcHJpdmF0ZSBzZXNzaW9uU2VydmljZTogRXNvbHZlU2Vzc2lvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBlcnJvckhhbmRsZXI6IEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZXNwb25zZUhhbmRsZXI6IEVzb2x2ZVJlc3BvbnNlSGFuZGxlclNlcnZpY2UsXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNlc3Npb24uc3Vic2NyaWJlKChzZXNzaW9uKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzZXNzaW9uLmtleSAhPT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXNlcl9pZCA9IHNlc3Npb24uaWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdXBkYXRlVXNlckFjY291bnQodXNlcl9hY2NvdW50X2RhdGE6IEVzb2x2ZVVzZXJBY2NvdW50RGF0YSk6IE9ic2VydmFibGU8RXNvbHZlVXNlckFjY291bnRSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICAgICAgICBhY2NvdW50OiB1c2VyX2FjY291bnRfZGF0YSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NldC11c2VyLWFjY291bnQucGhwYCxcclxuICAgICAgICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OycsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChodHRwX3Jlc3BvbnNlKSA9PiB0aGlzLnJlc3BvbnNlSGFuZGxlci52YWxpZGF0ZVNpbmdsZUh0dHBSZXNwb25zZShcclxuICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLFxyXG4gICAgICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4gbmV3IEVzb2x2ZVVzZXJBY2NvdW50UmVzdWx0KHJlc3BvbnNlKSxcclxuICAgICAgICAgICAgICAgICkpLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBQb3N0RXJyb3IoJ3NldC11c2VyLWFjY291bnQnLCBlcnJvclJlcyk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0VXNlckFjY291bnQoKTogT2JzZXJ2YWJsZTxFc29sdmVVc2VyQWNjb3VudD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVVc2VyQWNjb3VudFJlY29yZFtdPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtYWNjb3VudC5waHBgLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlLnJlY29yZHMubGVuZ3RoID09PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlY29yZCA9IHJlc3BvbnNlLnJlY29yZHNbMF07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NVc2VyQWNjb3VudChyZWNvcmQpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldEFkZHJlc3MoYWRkcmVzc19wb3N0X2RhdGE6IEVzb2x2ZUFkZHJlc3NQb3N0RGF0YSk6IE9ic2VydmFibGU8RXNvbHZlQWRkcmVzc1Jlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgICAgICAgIGFkZHJlc3M6IGFkZHJlc3NfcG9zdF9kYXRhLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLnBvc3Q8RXNvbHZlU2V0UmVzcG9uc2U8RXNvbHZlQWRkcmVzc1Jlc3BvbnNlPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXQtYWRkcmVzcy5waHBgLFxyXG4gICAgICAgICAgICAgICAgYm9keSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7JyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5JyxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKGh0dHBfcmVzcG9uc2UpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZUhhbmRsZXIudmFsaWRhdGVTaW5nbGVIdHRwUmVzcG9uc2UoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4gbmV3IEVzb2x2ZUFkZHJlc3NSZXN1bHQocmVzcG9uc2UpLFxyXG4gICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBQb3N0RXJyb3IoJ3NldC1yZWdpc3RyYXRpb24nLCBlcnJvclJlcyk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0QWRkcmVzc2VzKCk6IE9ic2VydmFibGU8RXNvbHZlQWRkcmVzc1tdPiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdGhpcy5sb2dpbkd1YXJkKCk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZUFkZHJlc3NSZWNvcmRbXT4+KFxyXG4gICAgICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC1hZGRyZXNzZXMucGhwYCxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyB1c2VyX2lkOiB0aGlzLnVzZXJfaWQgfSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1VzZXJBZGRyZXNzKHJlc3BvbnNlLnJlY29yZHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBkZWxldGVBZGRyZXNzKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPEVzb2x2ZVJlc3VsdD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLmRlbGV0ZTxFc29sdmVEZWxldGVSZXNwb25zZT4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9kZWxldGUtYWRkcmVzcy5waHBgLFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyBpZCB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5JyxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKGh0dHBfcmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChodHRwX3Jlc3BvbnNlLnJlc3VsdCA9PT0gdW5kZWZpbmVkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaHR0cF9yZXNwb25zZS5yZXN1bHQgPT09IG51bGwpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChodHRwX3Jlc3BvbnNlLnJlc3VsdC5zdGF0dXMgIT09ICdzdWNjZXNzJylcclxuICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgaHR0cF9yZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlUmVzdWx0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLnJlc3VsdC5zdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UucmVzdWx0LmNvZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UucmVzdWx0Lm1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBEZWxldGVFcnJvcignZGVsZXRlLWFkZHJlc3MnLCBlcnJvclJlcyk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXIodXNlcl9yZWdpc3RyYXRpb246IEVzb2x2ZVJlZ2lzdHJhdGlvbkRhdGEpOiBPYnNlcnZhYmxlPEVzb2x2ZVJlZ2lzdHJhdGlvblJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgICAgICAgIHVzZXI6IHVzZXJfcmVnaXN0cmF0aW9uLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLnBvc3Q8RXNvbHZlU2V0UmVzcG9uc2U8RXNvbHZlUmVnaXN0cmF0aW9uUG9zdFJlc3BvbnNlSXRlbT4+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2V0LXJlZ2lzdHJhdGlvbi5waHBgLFxyXG4gICAgICAgICAgICAgICAgYm9keSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7JyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5JyxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKGh0dHBfcmVzcG9uc2UpID0+IHRoaXMucmVzcG9uc2VIYW5kbGVyLnZhbGlkYXRlU2luZ2xlSHR0cFJlc3BvbnNlKFxyXG4gICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5hdXRvX2xvZ2luKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLmhhbmRsZVVwZGF0ZVNlc3Npb24oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfaWQ6ICtyZXNwb25zZS5lc29sdmVfaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25faWQ6ICtyZXNwb25zZS5zZXNzaW9uX2RhdGEubG9jYXRpb25faWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVSZWdpc3RyYXRpb25SZXN1bHQocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICApKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzOiBIdHRwRXJyb3JSZXNwb25zZSB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwUG9zdEVycm9yKCdzZXQtcmVnaXN0cmF0aW9uJywgZXJyb3JSZXMpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNoYW5nZVBhc3N3b3JkKHBhc3N3b3JkOiBzdHJpbmcsIGNvbmZpcm1fcGFzc3dvcmQ6IHN0cmluZyk6IE9ic2VydmFibGU8RXNvbHZlQ2hhbmdlUGFzc3dvcmRSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICAgICAgICBwYXNzd29yZCxcclxuICAgICAgICAgICAgY29uZmlybV9wYXNzd29yZCxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NldC1jaGFuZ2UtcGFzc3dvcmQucGhwYCxcclxuICAgICAgICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OycsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChodHRwX3Jlc3BvbnNlKSA9PiB0aGlzLnJlc3BvbnNlSGFuZGxlci52YWxpZGF0ZVNpbmdsZUh0dHBSZXNwb25zZShcclxuICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLFxyXG4gICAgICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZUNoYW5nZVBhc3N3b3JkUmVzdWx0KHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgKSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cFBvc3RFcnJvcignc2V0LWNoYW5nZS1wYXNzd29yZCcsIGVycm9yUmVzKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZW5kRm9yZ290UGFzc3dvcmRSZXF1ZXN0KGVtYWlsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlRm9yZ290UGFzc3dvcmRHZXRSZXN1bHQ+PihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC1mb3Jnb3QtcGFzc3dvcmQucGhwYCxcclxuICAgICAgICAgICAgICAgIHsgcGFyYW1zOiB7IGVtYWlsIH0gfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICEoJ3Jlc2V0X2xpbmtfc2VudCcgaW4gcmVzcG9uc2UucmVjb3JkcylcclxuICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UucmVjb3Jkcy5yZXNldF9saW5rX3NlbnQ7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVzZXRQYXNzd29yZChcclxuICAgICAgICByZXNldF9rZXk6IHN0cmluZyxcclxuICAgICAgICBwYXNzd29yZDogc3RyaW5nLFxyXG4gICAgICAgIGNvbmZpcm1fcGFzc3dvcmQ6IHN0cmluZyxcclxuICAgICAgICBhdXRvX2xvZ2luID0gdHJ1ZSxcclxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlUmVzZXRQYXNzd29yZFJlc3VsdD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLnBvc3Q8RXNvbHZlU2V0UmVzcG9uc2U8RXNvbHZlRm9yZ290UGFzc3dvcmRSZXNwb25zZT4+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2V0LWZvcmdvdC1wYXNzd29yZC5waHBgLFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc2V0X2tleSxcclxuICAgICAgICAgICAgICAgICAgICBwYXNzd29yZCxcclxuICAgICAgICAgICAgICAgICAgICBjb25maXJtX3Bhc3N3b3JkLFxyXG4gICAgICAgICAgICAgICAgICAgIGF1dG9fbG9naW4sXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtODsnLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgoaHR0cF9yZXNwb25zZSkgPT4gdGhpcy5yZXNwb25zZUhhbmRsZXIudmFsaWRhdGVTaW5nbGVIdHRwUmVzcG9uc2UoXHJcbiAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZSxcclxuICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5sb2dpbl9yZXF1aXJlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5oYW5kbGVVcGRhdGVTZXNzaW9uKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2lkOiArcmVzcG9uc2UuZXNvbHZlX2lkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uX2lkOiArcmVzcG9uc2Uuc2Vzc2lvbl9kYXRhLmxvY2F0aW9uX2lkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlUmVzZXRQYXNzd29yZFJlc3VsdChyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICkpLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBQb3N0RXJyb3IoJ3NldC1mb3Jnb3QtcGFzc3dvcmQnLCBlcnJvclJlcyk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdXBkYXRlTG9jYXRpb24obG9jYXRpb25faWQ6IG51bWJlcik6IE9ic2VydmFibGU8RXNvbHZlTG9jYXRpb25VcGRhdGVSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBib2R5ID0geyBsb2NhdGlvbl9pZCB9O1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NldC1zZXNzaW9uLWxvY2F0aW9uLnBocGAsXHJcbiAgICAgICAgICAgICAgICBib2R5LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtODsnLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgoaHR0cF9yZXNwb25zZSkgPT4gdGhpcy5yZXNwb25zZUhhbmRsZXIudmFsaWRhdGVTaW5nbGVIdHRwUmVzcG9uc2UoXHJcbiAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZSxcclxuICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5oYW5kbGVVcGRhdGVTZXNzaW9uKHsgbG9jYXRpb25faWQgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZUxvY2F0aW9uVXBkYXRlUmVzdWx0KHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgKSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFRyYW5zYWN0aW9ucyhvcHRpb25zOiBFc29sdmVUcmFuc2FjdGlvbk9wdGlvbnMgPSB7fSk6IE9ic2VydmFibGU8RXNvbHZlVHJhbnNhY3Rpb25MaXN0PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdGhpcy5sb2dpbkd1YXJkKCk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZVRyYW5zYWN0aW9uUmVjb3JkW10+PihcclxuICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtdHJhbnNhY3Rpb25zLnBocGAsXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfaWQ6IHRoaXMudXNlcl9pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5wcm9jZXNzVHJhbnNhY3Rpb25zKHJlc3BvbnNlLnJlY29yZHMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0b3RhbCA9ICtyZXNwb25zZS5hZGRpdGlvbmFsX2RhdGEudG90YWxfcmVjb3JkcyA/PyAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByb3dzID0gb3B0aW9ucy5yb3dzID8/IHRvdGFsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYWdlID0gb3B0aW9ucy5wYWdlIHx8IDE7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZVRyYW5zYWN0aW9uTGlzdChpdGVtcywgcGFnZSwgcm93cywgdG90YWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRUcmFuc2FjdGlvbihpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxFc29sdmVUcmFuc2FjdGlvbj4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9naW5HdWFyZCgpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVUcmFuc2FjdGlvblJlY29yZFtdPj4oXHJcbiAgICAgICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LXRyYW5zYWN0aW9ucy5waHBgLFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2lkOiB0aGlzLnVzZXJfaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbl9pZDogaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA8PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMucHJvY2Vzc1RyYW5zYWN0aW9ucyhyZXNwb25zZS5yZWNvcmRzKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtc1swXTtcclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHByb2Nlc3NVc2VyQWNjb3VudChyZWNvcmQ6IEVzb2x2ZVVzZXJBY2NvdW50UmVjb3JkKTogRXNvbHZlVXNlckFjY291bnQge1xyXG4gICAgICAgIGlmICghcmVjb3JkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCByZWNvcmQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICgrcmVjb3JkLnVzZXJpZCAhPT0gdGhpcy5fdXNlcl9pZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdXNlciBhY2NvdW50IHJldHJpZXZlZCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdXNlcl9hY2NvdW50ID0gbmV3IEVzb2x2ZVVzZXJBY2NvdW50KFxyXG4gICAgICAgICAgICArcmVjb3JkLnVzZXJpZCxcclxuICAgICAgICAgICAgcmVjb3JkLmVtYWlsLFxyXG4gICAgICAgICAgICByZWNvcmQucmVnaXN0cmF0aW9uX3R5cGUsXHJcbiAgICAgICAgICAgIHJlY29yZC50aXRsZSxcclxuICAgICAgICAgICAgcmVjb3JkLmZpcnN0bmFtZSxcclxuICAgICAgICAgICAgcmVjb3JkLnN1cm5hbWUsXHJcbiAgICAgICAgICAgIHJlY29yZC5pbml0aWFscyxcclxuICAgICAgICAgICAgcmVjb3JkLmdlbmRlcixcclxuICAgICAgICAgICAgcmVjb3JkLmlkbnVtYmVyLFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHVzZXJfYWNjb3VudC5jb250YWN0X2RldGFpbHMgPSBuZXcgRXNvbHZlVXNlckFjY291bnRDb250YWN0KFxyXG4gICAgICAgICAgICByZWNvcmQudGVsbnVtYmVyLFxyXG4gICAgICAgICAgICByZWNvcmQuY2VsbG51bWJlcixcclxuICAgICAgICAgICAgcmVjb3JkLmZheCxcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB1c2VyX2FjY291bnQuYnVzaW5lc3NfZGV0YWlscyA9IG5ldyBFc29sdmVVc2VyQWNjb3VudEJ1c2luZXNzKFxyXG4gICAgICAgICAgICByZWNvcmQuYnVzbmFtZSxcclxuICAgICAgICAgICAgcmVjb3JkLnZhdG51bSxcclxuICAgICAgICAgICAgcmVjb3JkLmJ1c2Rlc2NyaXB0LFxyXG4gICAgICAgICAgICByZWNvcmQuYnVzaW5lc3NfdHlwZSxcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICByZXR1cm4gdXNlcl9hY2NvdW50O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcHJvY2Vzc1VzZXJBZGRyZXNzKHJlY29yZHM6IEVzb2x2ZUFkZHJlc3NSZWNvcmRbXSk6IEVzb2x2ZUFkZHJlc3NbXSB7XHJcbiAgICAgICAgY29uc3QgdXNlcl9hZGRyZXNzZXM6IEVzb2x2ZUFkZHJlc3NbXSA9IFtdO1xyXG5cclxuICAgICAgICBpZiAoIXJlY29yZHMgfHwgKHRoaXMuX3VzZXJfaWQgPT09IDApKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1c2VyX2FkZHJlc3NlcztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcclxuICAgICAgICAgICAgaWYgKCtyZWNvcmQudXNlcmlkICE9PSB0aGlzLl91c2VyX2lkKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdXNlcl9hZGRyZXNzZXMucHVzaChuZXcgRXNvbHZlQWRkcmVzcyhcclxuICAgICAgICAgICAgICAgICtyZWNvcmQuaWQsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQucmVjaXBpZW50LFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLmFkZHJlc3NfdHlwZSxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5wb2JveCxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5wbGFjZV9uYW1lLFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLnN0cmVldF9udW1iZXIsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQuc3RyZWV0LFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLnN1YnVyYixcclxuICAgICAgICAgICAgICAgIHJlY29yZC5jaXR5LFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLnByb3ZpbmNlLFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLmNvdW50cnksXHJcbiAgICAgICAgICAgICAgICByZWNvcmQucG9zdGFsX2NvZGUsXHJcbiAgICAgICAgICAgICAgICArcmVjb3JkLmxhdGl0dWRlLFxyXG4gICAgICAgICAgICAgICAgK3JlY29yZC5sb25naXR1ZGUsXHJcbiAgICAgICAgICAgICkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHVzZXJfYWRkcmVzc2VzO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcHJvY2Vzc1RyYW5zYWN0aW9ucyhyZWNvcmRzOiBFc29sdmVUcmFuc2FjdGlvblJlY29yZFtdKTogRXNvbHZlVHJhbnNhY3Rpb25bXSB7XHJcbiAgICAgICAgY29uc3QgdHJhbnNhY3Rpb25zOiBFc29sdmVUcmFuc2FjdGlvbltdID0gW107XHJcblxyXG4gICAgICAgIGlmIChyZWNvcmRzKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gbmV3IEVzb2x2ZVRyYW5zYWN0aW9uKHJlY29yZCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25zLnB1c2godHJhbnNhY3Rpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbG9naW5HdWFyZCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy51c2VyX2lkIDw9IDApIHtcclxuICAgICAgICAgICAgdGhpcy5lcnJvckhhbmRsZXIudGhyb3dFcnJvcignbG9naW5fcmVxdWlyZWQnLCAnTG9naW4gaXMgcmVxdWlyZWQnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
348
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWFjY291bnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYWNjb3VudC9lc29sdmUtYWNjb3VudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUUxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFXN0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbkYsT0FBTyxFQUdILHdCQUF3QixHQUMzQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDSCxhQUFhLEVBRWIsbUJBQW1CLEdBR3RCLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFDSCwwQkFBMEIsRUFDMUIseUJBQXlCLEdBRzVCLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFFSCxpQkFBaUIsRUFFakIscUJBQXFCLEdBQ3hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxpQkFBaUIsRUFHakIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4Qix5QkFBeUIsR0FDNUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQTZDLCtCQUErQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQUs1RyxNQUFNLE9BQU8sb0JBQW9CO0lBZTdCLFlBQzJDLE1BQTJCLEVBQzFELElBQWdCLEVBQ2hCLGNBQW9DLEVBQ3BDLFlBQXVDLEVBQ3ZDLGVBQTZD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QixDQUFDO0lBRU8sbUJBQW1CLENBQUMsT0FBa0M7UUFDMUQsTUFBTSxZQUFZLEdBQXdCLEVBQUUsQ0FBQztRQUU3QyxJQUFJLE9BQU8sRUFBRTtZQUNULEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFO2dCQUMxQixNQUFNLFdBQVcsR0FBRyxJQUFJLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUVsRCxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ2xDO1NBQ0o7UUFFRCxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRU8sVUFBVTtRQUNkLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztTQUN2RTtJQUNMLENBQUM7O2tIQTFnQlEsb0JBQW9CLGtCQWdCakIscUJBQXFCO3NIQWhCeEIsb0JBQW9CLGNBRmpCLE1BQU07NEZBRVQsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBaUJRLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVDb25uZWN0Q29uZmlnIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QuY29uZmlnJztcclxuaW1wb3J0IHsgRVNPTFZFX0NPTk5FQ1RfQ09ORklHIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QtY29uZmlnLmNvbnN0YW50JztcclxuXHJcbmltcG9ydCB7IEVzb2x2ZVJlc3VsdCB9IGZyb20gJy4uL3NoYXJlZC9lc29sdmUtcmVzdWx0Lm1vZGVsJztcclxuaW1wb3J0IHsgRXNvbHZlRXJyb3JIYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9lcnJvcnMnO1xyXG5pbXBvcnQge1xyXG4gICAgRXNvbHZlRGVsZXRlUmVzcG9uc2UsXHJcbiAgICBFc29sdmVTZXRSZXNwb25zZSxcclxuICAgIEVzb2x2ZUdldFJlc3BvbnNlLFxyXG4gICAgRXNvbHZlUmVzcG9uc2VIYW5kbGVyU2VydmljZSxcclxufSBmcm9tICcuLi9zaGFyZWQvcmVzcG9uc2UnO1xyXG5cclxuaW1wb3J0IHsgRXNvbHZlU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi9zZXNzaW9uL2Vzb2x2ZS1zZXNzaW9uLnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgRXNvbHZlTG9jYXRpb25VcGRhdGVSZXN1bHQgfSBmcm9tICcuL2Vzb2x2ZS1sb2NhdGlvbi11cGRhdGUtcmVzdWx0Lm1vZGVsJztcclxuaW1wb3J0IHtcclxuICAgIEVzb2x2ZVJlZ2lzdHJhdGlvblBvc3RSZXNwb25zZUl0ZW0sXHJcbiAgICBFc29sdmVSZWdpc3RyYXRpb25EYXRhLFxyXG4gICAgRXNvbHZlUmVnaXN0cmF0aW9uUmVzdWx0LFxyXG59IGZyb20gJy4vcmVnaXN0cmF0aW9uJztcclxuaW1wb3J0IHtcclxuICAgIEVzb2x2ZUFkZHJlc3MsXHJcbiAgICBFc29sdmVBZGRyZXNzUmVjb3JkLFxyXG4gICAgRXNvbHZlQWRkcmVzc1Jlc3VsdCxcclxuICAgIEVzb2x2ZUFkZHJlc3NQb3N0RGF0YSxcclxuICAgIEVzb2x2ZUFkZHJlc3NSZXNwb25zZSxcclxufSBmcm9tICcuL2FkZHJlc3MnO1xyXG5pbXBvcnQge1xyXG4gICAgRXNvbHZlQ2hhbmdlUGFzc3dvcmRSZXN1bHQsXHJcbiAgICBFc29sdmVSZXNldFBhc3N3b3JkUmVzdWx0LFxyXG4gICAgRXNvbHZlRm9yZ290UGFzc3dvcmRSZXNwb25zZSxcclxuICAgIEVzb2x2ZUZvcmdvdFBhc3N3b3JkR2V0UmVzdWx0LFxyXG59IGZyb20gJy4vcGFzc3dvcmQnO1xyXG5pbXBvcnQge1xyXG4gICAgRXNvbHZlVHJhbnNhY3Rpb25SZWNvcmQsXHJcbiAgICBFc29sdmVUcmFuc2FjdGlvbixcclxuICAgIEVzb2x2ZVRyYW5zYWN0aW9uT3B0aW9ucyxcclxuICAgIEVzb2x2ZVRyYW5zYWN0aW9uTGlzdCxcclxufSBmcm9tICcuL3RyYW5zYWN0aW9uJztcclxuaW1wb3J0IHtcclxuICAgIEVzb2x2ZVVzZXJBY2NvdW50LFxyXG4gICAgRXNvbHZlVXNlckFjY291bnREYXRhLFxyXG4gICAgRXNvbHZlVXNlckFjY291bnRSZWNvcmQsXHJcbiAgICBFc29sdmVVc2VyQWNjb3VudFJlc3VsdCxcclxuICAgIEVzb2x2ZVVzZXJBY2NvdW50Q29udGFjdCxcclxuICAgIEVzb2x2ZVVzZXJBY2NvdW50QnVzaW5lc3MsXHJcbn0gZnJvbSAnLi91c2VyLWFjY291bnQnO1xyXG5pbXBvcnQgeyBFc29sdmVBY2NvdW50Q29uZmlybWF0aW9uUG9zdFJlc3BvbnNlSXRlbSwgRXNvbHZlQWNjb3VudENvbmZpcm1hdGlvblJlc3VsdCB9IGZyb20gJy4vY29uZmlybWF0aW9uJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEVzb2x2ZUFjY291bnRTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgX3VzZXJfaWQgPSAwO1xyXG5cclxuICAgIHB1YmxpYyBnZXQgdXNlcl9pZCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyX2lkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXQgdXNlcl9pZCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICAgICAgdmFsdWUgPSAoKHZhbHVlID4gMCkgPyB2YWx1ZSA6IDApO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fdXNlcl9pZCAhPT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fdXNlcl9pZCA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KEVTT0xWRV9DT05ORUNUX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IEVzb2x2ZUNvbm5lY3RDb25maWcsXHJcbiAgICAgICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIHByaXZhdGUgc2Vzc2lvblNlcnZpY2U6IEVzb2x2ZVNlc3Npb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZXJyb3JIYW5kbGVyOiBFc29sdmVFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVzcG9uc2VIYW5kbGVyOiBFc29sdmVSZXNwb25zZUhhbmRsZXJTZXJ2aWNlLFxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5zZXNzaW9uLnN1YnNjcmliZSgoc2Vzc2lvbikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoc2Vzc2lvbi5rZXkgIT09ICcnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJfaWQgPSBzZXNzaW9uLmlkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHVwZGF0ZVVzZXJBY2NvdW50KHVzZXJfYWNjb3VudF9kYXRhOiBFc29sdmVVc2VyQWNjb3VudERhdGEpOiBPYnNlcnZhYmxlPEVzb2x2ZVVzZXJBY2NvdW50UmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgICAgICAgYWNjb3VudDogdXNlcl9hY2NvdW50X2RhdGEsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAucG9zdDxFc29sdmVTZXRSZXNwb25zZT4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXQtdXNlci1hY2NvdW50LnBocGAsXHJcbiAgICAgICAgICAgICAgICBib2R5LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtODsnLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgoaHR0cF9yZXNwb25zZSkgPT4gdGhpcy5yZXNwb25zZUhhbmRsZXIudmFsaWRhdGVTaW5nbGVIdHRwUmVzcG9uc2UoXHJcbiAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZSxcclxuICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UpID0+IG5ldyBFc29sdmVVc2VyQWNjb3VudFJlc3VsdChyZXNwb25zZSksXHJcbiAgICAgICAgICAgICAgICApKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzOiBIdHRwRXJyb3JSZXNwb25zZSB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwUG9zdEVycm9yKCdzZXQtdXNlci1hY2NvdW50JywgZXJyb3JSZXMpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFVzZXJBY2NvdW50KCk6IE9ic2VydmFibGU8RXNvbHZlVXNlckFjY291bnQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlVXNlckFjY291bnRSZWNvcmRbXT4+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWFjY291bnQucGhwYCxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA9PT0gMClcclxuICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWNvcmQgPSByZXNwb25zZS5yZWNvcmRzWzBdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzVXNlckFjY291bnQocmVjb3JkKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXRBZGRyZXNzKGFkZHJlc3NfcG9zdF9kYXRhOiBFc29sdmVBZGRyZXNzUG9zdERhdGEpOiBPYnNlcnZhYmxlPEVzb2x2ZUFkZHJlc3NSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICAgICAgICBhZGRyZXNzOiBhZGRyZXNzX3Bvc3RfZGF0YSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPEVzb2x2ZUFkZHJlc3NSZXNwb25zZT4+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2V0LWFkZHJlc3MucGhwYCxcclxuICAgICAgICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OycsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChodHRwX3Jlc3BvbnNlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VIYW5kbGVyLnZhbGlkYXRlU2luZ2xlSHR0cFJlc3BvbnNlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UpID0+IG5ldyBFc29sdmVBZGRyZXNzUmVzdWx0KHJlc3BvbnNlKSxcclxuICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzOiBIdHRwRXJyb3JSZXNwb25zZSB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwUG9zdEVycm9yKCdzZXQtcmVnaXN0cmF0aW9uJywgZXJyb3JSZXMpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEFkZHJlc3NlcygpOiBPYnNlcnZhYmxlPEVzb2x2ZUFkZHJlc3NbXT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9naW5HdWFyZCgpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVBZGRyZXNzUmVjb3JkW10+PihcclxuICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtYWRkcmVzc2VzLnBocGAsXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHsgdXNlcl9pZDogdGhpcy51c2VyX2lkIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NVc2VyQWRkcmVzcyhyZXNwb25zZS5yZWNvcmRzKTtcclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZGVsZXRlQWRkcmVzcyhpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxFc29sdmVSZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5kZWxldGU8RXNvbHZlRGVsZXRlUmVzcG9uc2U+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZGVsZXRlLWFkZHJlc3MucGhwYCxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHsgaWQgfSxcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChodHRwX3Jlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaHR0cF9yZXNwb25zZS5yZXN1bHQgPT09IHVuZGVmaW5lZCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGh0dHBfcmVzcG9uc2UucmVzdWx0ID09PSBudWxsKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaHR0cF9yZXNwb25zZS5yZXN1bHQuc3RhdHVzICE9PSAnc3VjY2VzcycpXHJcbiAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGh0dHBfcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZVJlc3VsdChcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZS5yZXN1bHQuc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLnJlc3VsdC5jb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLnJlc3VsdC5tZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzOiBIdHRwRXJyb3JSZXNwb25zZSB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwRGVsZXRlRXJyb3IoJ2RlbGV0ZS1hZGRyZXNzJywgZXJyb3JSZXMpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlZ2lzdGVyKHVzZXJfcmVnaXN0cmF0aW9uOiBFc29sdmVSZWdpc3RyYXRpb25EYXRhKTogT2JzZXJ2YWJsZTxFc29sdmVSZWdpc3RyYXRpb25SZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICAgICAgICB1c2VyOiB1c2VyX3JlZ2lzdHJhdGlvbixcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPEVzb2x2ZVJlZ2lzdHJhdGlvblBvc3RSZXNwb25zZUl0ZW0+PihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NldC1yZWdpc3RyYXRpb24ucGhwYCxcclxuICAgICAgICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OycsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChodHRwX3Jlc3BvbnNlKSA9PiB0aGlzLnJlc3BvbnNlSGFuZGxlci52YWxpZGF0ZVNpbmdsZUh0dHBSZXNwb25zZShcclxuICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLFxyXG4gICAgICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuYXV0b19sb2dpbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5oYW5kbGVVcGRhdGVTZXNzaW9uKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2lkOiArcmVzcG9uc2UuZXNvbHZlX2lkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uX2lkOiArcmVzcG9uc2Uuc2Vzc2lvbl9kYXRhLmxvY2F0aW9uX2lkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlUmVnaXN0cmF0aW9uUmVzdWx0KHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgKSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cFBvc3RFcnJvcignc2V0LXJlZ2lzdHJhdGlvbicsIGVycm9yUmVzKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjaGFuZ2VQYXNzd29yZChwYXNzd29yZDogc3RyaW5nLCBjb25maXJtX3Bhc3N3b3JkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEVzb2x2ZUNoYW5nZVBhc3N3b3JkUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgICAgICAgcGFzc3dvcmQsXHJcbiAgICAgICAgICAgIGNvbmZpcm1fcGFzc3dvcmQsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAucG9zdDxFc29sdmVTZXRSZXNwb25zZT4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXQtY2hhbmdlLXBhc3N3b3JkLnBocGAsXHJcbiAgICAgICAgICAgICAgICBib2R5LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtODsnLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgoaHR0cF9yZXNwb25zZSkgPT4gdGhpcy5yZXNwb25zZUhhbmRsZXIudmFsaWRhdGVTaW5nbGVIdHRwUmVzcG9uc2UoXHJcbiAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZSxcclxuICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVDaGFuZ2VQYXNzd29yZFJlc3VsdChyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICkpLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBQb3N0RXJyb3IoJ3NldC1jaGFuZ2UtcGFzc3dvcmQnLCBlcnJvclJlcyk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFN1Ym1pdHMgdGhlIHVzZXJzIGNvbmZpcm1hdGlvbiBrZXkgdG8gdGhlIHJlbGV2YW50IGJhY2tlbmQgc2VydmVyIGluIG9yZGVyIHRvXHJcbiAgICAgKiBjb25maXJtIHRoZSBhY2NvdW50cyB2YWxpZGl0eS4gVGhlIGtleSB3YXMgZW1haWxlZCB0byB0aGUgdXNlciBoZW5jZSBpZiBoZSByZWNlaXZlZFxyXG4gICAgICogaXQgYW5kIGVudGVycyB0aGUgdmFsdWUsIHRoZSBlbWFpbCBhY2NvdW50IGNhbiBiZSBzZWVuIGFzIHZhbGlkLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0aGF0IHdhcyBlbWFpbGVkIHRvIHRoZSByZWdpc3RlcmVkIHVzZXIncyBlbWFpbCBhY2NvdW50LlxyXG4gICAgICogQHJldHVybnMgQW4gYE9ic2VydmFibGVgIHRoYXQgY29udGFpbnMgdGhlIHJlc3VsdCBvZiB0aGUgYWNjb3VudCBjb25maXJtYXRpb24gcmVxdWVzdC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGFjY291bnRDb25maXJtYXRpb25SZXF1ZXN0KGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxFc29sdmVBY2NvdW50Q29uZmlybWF0aW9uUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgICAgICAga2V5LFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLnBvc3Q8RXNvbHZlU2V0UmVzcG9uc2U8RXNvbHZlQWNjb3VudENvbmZpcm1hdGlvblBvc3RSZXNwb25zZUl0ZW0+PihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NldC1hY2NvdW50LWNvbmZpcm1hdGlvbi5waHBgLFxyXG4gICAgICAgICAgICAgICAgYm9keSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7JyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5JyxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKGh0dHBfcmVzcG9uc2UpID0+IHRoaXMucmVzcG9uc2VIYW5kbGVyLnZhbGlkYXRlU2luZ2xlSHR0cFJlc3BvbnNlKFxyXG4gICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5hdXRvX2xvZ2luKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLmhhbmRsZVVwZGF0ZVNlc3Npb24oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfaWQ6ICtyZXNwb25zZS5lc29sdmVfaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25faWQ6ICtyZXNwb25zZS5sb2NhdGlvbl9pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZUFjY291bnRDb25maXJtYXRpb25SZXN1bHQocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICApKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzOiBIdHRwRXJyb3JSZXNwb25zZSB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwUG9zdEVycm9yKCdzZXQtYWNjb3VudC1jb25maXJtYXRpb24nLCBlcnJvclJlcyk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2VuZEZvcmdvdFBhc3N3b3JkUmVxdWVzdChlbWFpbDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZUZvcmdvdFBhc3N3b3JkR2V0UmVzdWx0Pj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtZm9yZ290LXBhc3N3b3JkLnBocGAsXHJcbiAgICAgICAgICAgICAgICB7IHBhcmFtczogeyBlbWFpbCB9IH0sXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAhKCdyZXNldF9saW5rX3NlbnQnIGluIHJlc3BvbnNlLnJlY29yZHMpXHJcbiAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnJlY29yZHMucmVzZXRfbGlua19zZW50O1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlc2V0UGFzc3dvcmQoXHJcbiAgICAgICAgcmVzZXRfa2V5OiBzdHJpbmcsXHJcbiAgICAgICAgcGFzc3dvcmQ6IHN0cmluZyxcclxuICAgICAgICBjb25maXJtX3Bhc3N3b3JkOiBzdHJpbmcsXHJcbiAgICAgICAgYXV0b19sb2dpbiA9IHRydWUsXHJcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZVJlc2V0UGFzc3dvcmRSZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPEVzb2x2ZUZvcmdvdFBhc3N3b3JkUmVzcG9uc2U+PihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NldC1mb3Jnb3QtcGFzc3dvcmQucGhwYCxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICByZXNldF9rZXksXHJcbiAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgY29uZmlybV9wYXNzd29yZCxcclxuICAgICAgICAgICAgICAgICAgICBhdXRvX2xvZ2luLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7JyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5JyxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKGh0dHBfcmVzcG9uc2UpID0+IHRoaXMucmVzcG9uc2VIYW5kbGVyLnZhbGlkYXRlU2luZ2xlSHR0cFJlc3BvbnNlKFxyXG4gICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2UubG9naW5fcmVxdWlyZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2UuaGFuZGxlVXBkYXRlU2Vzc2lvbih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9pZDogK3Jlc3BvbnNlLmVzb2x2ZV9pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbl9pZDogK3Jlc3BvbnNlLnNlc3Npb25fZGF0YS5sb2NhdGlvbl9pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZVJlc2V0UGFzc3dvcmRSZXN1bHQocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICApKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzOiBIdHRwRXJyb3JSZXNwb25zZSB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwUG9zdEVycm9yKCdzZXQtZm9yZ290LXBhc3N3b3JkJywgZXJyb3JSZXMpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHVwZGF0ZUxvY2F0aW9uKGxvY2F0aW9uX2lkOiBudW1iZXIpOiBPYnNlcnZhYmxlPEVzb2x2ZUxvY2F0aW9uVXBkYXRlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgYm9keSA9IHsgbG9jYXRpb25faWQgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAucG9zdDxFc29sdmVTZXRSZXNwb25zZT4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXQtc2Vzc2lvbi1sb2NhdGlvbi5waHBgLFxyXG4gICAgICAgICAgICAgICAgYm9keSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7JyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5JyxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKGh0dHBfcmVzcG9uc2UpID0+IHRoaXMucmVzcG9uc2VIYW5kbGVyLnZhbGlkYXRlU2luZ2xlSHR0cFJlc3BvbnNlKFxyXG4gICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2UuaGFuZGxlVXBkYXRlU2Vzc2lvbih7IGxvY2F0aW9uX2lkIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVMb2NhdGlvblVwZGF0ZVJlc3VsdChyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICkpLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRUcmFuc2FjdGlvbnMob3B0aW9uczogRXNvbHZlVHJhbnNhY3Rpb25PcHRpb25zID0ge30pOiBPYnNlcnZhYmxlPEVzb2x2ZVRyYW5zYWN0aW9uTGlzdD4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9naW5HdWFyZCgpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVUcmFuc2FjdGlvblJlY29yZFtdPj4oXHJcbiAgICAgICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LXRyYW5zYWN0aW9ucy5waHBgLFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2lkOiB0aGlzLnVzZXJfaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5vcHRpb25zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMucHJvY2Vzc1RyYW5zYWN0aW9ucyhyZXNwb25zZS5yZWNvcmRzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdG90YWwgPSArcmVzcG9uc2UuYWRkaXRpb25hbF9kYXRhLnRvdGFsX3JlY29yZHMgPz8gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm93cyA9IG9wdGlvbnMucm93cyA/PyB0b3RhbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFnZSA9IG9wdGlvbnMucGFnZSB8fCAxO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVUcmFuc2FjdGlvbkxpc3QoaXRlbXMsIHBhZ2UsIHJvd3MsIHRvdGFsKTtcclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0VHJhbnNhY3Rpb24oaWQ6IG51bWJlcik6IE9ic2VydmFibGU8RXNvbHZlVHJhbnNhY3Rpb24+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2luR3VhcmQoKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlVHJhbnNhY3Rpb25SZWNvcmRbXT4+KFxyXG4gICAgICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC10cmFuc2FjdGlvbnMucGhwYCxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9pZDogdGhpcy51c2VyX2lkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25faWQ6IGlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVjb3Jkcy5sZW5ndGggPD0gMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLnByb2Nlc3NUcmFuc2FjdGlvbnMocmVzcG9uc2UucmVjb3Jkcyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbXNbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBwcm9jZXNzVXNlckFjY291bnQocmVjb3JkOiBFc29sdmVVc2VyQWNjb3VudFJlY29yZCk6IEVzb2x2ZVVzZXJBY2NvdW50IHtcclxuICAgICAgICBpZiAoIXJlY29yZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcmVjb3JkJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoK3JlY29yZC51c2VyaWQgIT09IHRoaXMuX3VzZXJfaWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHVzZXIgYWNjb3VudCByZXRyaWV2ZWQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHVzZXJfYWNjb3VudCA9IG5ldyBFc29sdmVVc2VyQWNjb3VudChcclxuICAgICAgICAgICAgK3JlY29yZC51c2VyaWQsXHJcbiAgICAgICAgICAgIHJlY29yZC5lbWFpbCxcclxuICAgICAgICAgICAgcmVjb3JkLnJlZ2lzdHJhdGlvbl90eXBlLFxyXG4gICAgICAgICAgICByZWNvcmQudGl0bGUsXHJcbiAgICAgICAgICAgIHJlY29yZC5maXJzdG5hbWUsXHJcbiAgICAgICAgICAgIHJlY29yZC5zdXJuYW1lLFxyXG4gICAgICAgICAgICByZWNvcmQuaW5pdGlhbHMsXHJcbiAgICAgICAgICAgIHJlY29yZC5nZW5kZXIsXHJcbiAgICAgICAgICAgIHJlY29yZC5pZG51bWJlcixcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB1c2VyX2FjY291bnQuY29udGFjdF9kZXRhaWxzID0gbmV3IEVzb2x2ZVVzZXJBY2NvdW50Q29udGFjdChcclxuICAgICAgICAgICAgcmVjb3JkLnRlbG51bWJlcixcclxuICAgICAgICAgICAgcmVjb3JkLmNlbGxudW1iZXIsXHJcbiAgICAgICAgICAgIHJlY29yZC5mYXgsXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdXNlcl9hY2NvdW50LmJ1c2luZXNzX2RldGFpbHMgPSBuZXcgRXNvbHZlVXNlckFjY291bnRCdXNpbmVzcyhcclxuICAgICAgICAgICAgcmVjb3JkLmJ1c25hbWUsXHJcbiAgICAgICAgICAgIHJlY29yZC52YXRudW0sXHJcbiAgICAgICAgICAgIHJlY29yZC5idXNkZXNjcmlwdCxcclxuICAgICAgICAgICAgcmVjb3JkLmJ1c2luZXNzX3R5cGUsXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHVzZXJfYWNjb3VudDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHByb2Nlc3NVc2VyQWRkcmVzcyhyZWNvcmRzOiBFc29sdmVBZGRyZXNzUmVjb3JkW10pOiBFc29sdmVBZGRyZXNzW10ge1xyXG4gICAgICAgIGNvbnN0IHVzZXJfYWRkcmVzc2VzOiBFc29sdmVBZGRyZXNzW10gPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKCFyZWNvcmRzIHx8ICh0aGlzLl91c2VyX2lkID09PSAwKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdXNlcl9hZGRyZXNzZXM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XHJcbiAgICAgICAgICAgIGlmICgrcmVjb3JkLnVzZXJpZCAhPT0gdGhpcy5fdXNlcl9pZCkge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHVzZXJfYWRkcmVzc2VzLnB1c2gobmV3IEVzb2x2ZUFkZHJlc3MoXHJcbiAgICAgICAgICAgICAgICArcmVjb3JkLmlkLFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLnJlY2lwaWVudCxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5hZGRyZXNzX3R5cGUsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQucG9ib3gsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQucGxhY2VfbmFtZSxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5zdHJlZXRfbnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLnN0cmVldCxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5zdWJ1cmIsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQuY2l0eSxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5wcm92aW5jZSxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5jb3VudHJ5LFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLnBvc3RhbF9jb2RlLFxyXG4gICAgICAgICAgICAgICAgK3JlY29yZC5sYXRpdHVkZSxcclxuICAgICAgICAgICAgICAgICtyZWNvcmQubG9uZ2l0dWRlLFxyXG4gICAgICAgICAgICApKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB1c2VyX2FkZHJlc3NlcztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHByb2Nlc3NUcmFuc2FjdGlvbnMocmVjb3JkczogRXNvbHZlVHJhbnNhY3Rpb25SZWNvcmRbXSk6IEVzb2x2ZVRyYW5zYWN0aW9uW10ge1xyXG4gICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uczogRXNvbHZlVHJhbnNhY3Rpb25bXSA9IFtdO1xyXG5cclxuICAgICAgICBpZiAocmVjb3Jkcykge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IG5ldyBFc29sdmVUcmFuc2FjdGlvbihyZWNvcmQpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9ucy5wdXNoKHRyYW5zYWN0aW9uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRyYW5zYWN0aW9ucztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGxvZ2luR3VhcmQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMudXNlcl9pZCA8PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXJyb3JIYW5kbGVyLnRocm93RXJyb3IoJ2xvZ2luX3JlcXVpcmVkJywgJ0xvZ2luIGlzIHJlcXVpcmVkJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -3,5 +3,6 @@ export * from './user-account';
|
|
|
3
3
|
export * from './transaction';
|
|
4
4
|
export * from './password';
|
|
5
5
|
export * from './registration';
|
|
6
|
+
export * from './confirmation';
|
|
6
7
|
export * from './esolve-account.service';
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL2FjY291bnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWRkcmVzcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdXNlci1hY2NvdW50JztcclxuZXhwb3J0ICogZnJvbSAnLi90cmFuc2FjdGlvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGFzc3dvcmQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3JlZ2lzdHJhdGlvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29uZmlybWF0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtYWNjb3VudC5zZXJ2aWNlJztcclxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWNoZWNrb3V0LXJlc3BvbnNlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvY2FydC9lc29sdmUtY2hlY2tvdXQtcmVzcG9uc2UuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFc29sdmVQb3N0UmVzcG9uc2VJdGVtIH0gZnJvbSAnLi4vc2hhcmVkL3Jlc3BvbnNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXNvbHZlQ2hlY2tvdXRSZXNwb25zZSBleHRlbmRzIEVzb2x2ZVBvc3RSZXNwb25zZUl0ZW0ge1xyXG4gICAgZXNvbHZlX2lkOiBudW1iZXI7XHJcbiAgICBwcm9jZXNzX3BheW1lbnQ/OiBib29sZWFuO1xyXG59XHJcbiJdfQ==
|
|
@@ -4,6 +4,7 @@ export class EsolveCheckoutResult extends EsolveResponseResult {
|
|
|
4
4
|
super(response);
|
|
5
5
|
this.id = 0;
|
|
6
6
|
this.id = +response.esolve_id;
|
|
7
|
+
this.process_payment = response.process_payment ?? false;
|
|
7
8
|
}
|
|
8
9
|
}
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWNoZWNrb3V0LXJlc3VsdC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvY2FydC9lc29sdmUtY2hlY2tvdXQtcmVzdWx0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzFELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxvQkFBb0I7SUFJMUQsWUFBWSxRQUFnQztRQUN4QyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFKYixPQUFFLEdBQUcsQ0FBQyxDQUFDO1FBTVYsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDOUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxRQUFRLENBQUMsZUFBZSxJQUFJLEtBQUssQ0FBQztJQUM3RCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFc29sdmVSZXNwb25zZVJlc3VsdCB9IGZyb20gJy4uL3NoYXJlZC9yZXNwb25zZSc7XHJcbmltcG9ydCB7IEVzb2x2ZUNoZWNrb3V0UmVzcG9uc2UgfSBmcm9tICcuL2Vzb2x2ZS1jaGVja291dC1yZXNwb25zZS5pbnRlcmZhY2UnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEVzb2x2ZUNoZWNrb3V0UmVzdWx0IGV4dGVuZHMgRXNvbHZlUmVzcG9uc2VSZXN1bHQge1xyXG4gICAgcHVibGljIGlkID0gMDtcclxuICAgIHB1YmxpYyBwcm9jZXNzX3BheW1lbnQ6IGJvb2xlYW47XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVzcG9uc2U6IEVzb2x2ZUNoZWNrb3V0UmVzcG9uc2UpIHtcclxuICAgICAgICBzdXBlcihyZXNwb25zZSk7XHJcblxyXG4gICAgICAgIHRoaXMuaWQgPSArcmVzcG9uc2UuZXNvbHZlX2lkO1xyXG4gICAgICAgIHRoaXMucHJvY2Vzc19wYXltZW50ID0gcmVzcG9uc2UucHJvY2Vzc19wYXltZW50ID8/IGZhbHNlO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { HttpParams } from '@angular/common/http';
|
|
2
1
|
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { HttpParams } from '@angular/common/http';
|
|
3
3
|
import { catchError, map } from 'rxjs/operators';
|
|
4
4
|
import { ESOLVE_CONNECT_CONFIG } from '../esolve-connect-config.constant';
|
|
5
5
|
import { EsolveResult } from '../shared/esolve-result.model';
|
|
@@ -135,7 +135,7 @@ export class EsolvePaymentService {
|
|
|
135
135
|
*
|
|
136
136
|
* @returns An `Observable` with the result of the payment
|
|
137
137
|
*/
|
|
138
|
-
setPayment(transaction_id, payment_methods_id, card) {
|
|
138
|
+
setPayment(transaction_id, payment_methods_id, card, links) {
|
|
139
139
|
const body = {
|
|
140
140
|
payment: {
|
|
141
141
|
cart_id: transaction_id,
|
|
@@ -155,6 +155,9 @@ export class EsolvePaymentService {
|
|
|
155
155
|
};
|
|
156
156
|
}
|
|
157
157
|
}
|
|
158
|
+
if (links) {
|
|
159
|
+
body.links = links;
|
|
160
|
+
}
|
|
158
161
|
return this.http
|
|
159
162
|
.post(`${this.config.api_url}/set-payment.php`, body, {
|
|
160
163
|
headers: {
|
|
@@ -225,4 +228,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
225
228
|
type: Inject,
|
|
226
229
|
args: [ESOLVE_CONNECT_CONFIG]
|
|
227
230
|
}] }, { type: i1.HttpClient }, { type: i2.EsolveErrorHandlerService }, { type: i3.EsolveResponseHandlerService }]; } });
|
|
228
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXBheW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvcGF5bWVudC9lc29sdmUtcGF5bWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUMsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakYsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUcxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFRN0QsT0FBTyxFQUNILG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLHFCQUFxQixHQUN4QixNQUFNLFdBQVcsQ0FBQzs7Ozs7QUFlbkIsTUFBTSxPQUFPLG9CQUFvQjtJQUM3QixZQUMyQyxNQUEyQixFQUMxRCxJQUFnQixFQUNoQixZQUF1QyxFQUN2QyxlQUE2QztRQUhkLFdBQU0sR0FBTixNQUFNLENBQXFCO1FBQzFELFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsaUJBQVksR0FBWixZQUFZLENBQTJCO1FBQ3ZDLG9CQUFlLEdBQWYsZUFBZSxDQUE4QjtJQUNyRCxDQUFDO0lBRUw7Ozs7OztPQU1HO0lBQ0ksaUJBQWlCLENBQUMsT0FBb0M7UUFDekQsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNYLEdBQUcsQ0FDQSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTywwQkFBMEIsRUFDaEQsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRSxFQUFFLENBQzdCO2FBQ0EsSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLFFB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RCxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3hDO1NBQ0o7UUFFRCxPQUFPLGVBQWUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssaUJBQWlCLENBQUMsT0FBNEI7UUFDbEQsTUFBTSxLQUFLLEdBQXNCLEVBQUUsQ0FBQztRQUVwQyxJQUFJLE9BQU8sRUFBRTtZQUNULEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFO2dCQUMxQixNQUFNLFVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FDbEMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUNWLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUMxQixNQUFNLENBQUMsS0FBSyxFQUNaLE1BQU0sQ0FBQyxLQUFLLEVBQ1osTUFBTSxDQUFDLGdCQUFnQixDQUMxQixDQUFDO2dCQUVGLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDMUI7U0FDSjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxjQUFjLENBQUMsU0FBeUI7UUFDNUMsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzdELE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUUzRCxPQUFPLEdBQUcsWUFBWSxHQUFHLFdBQVcsRUFBRSxDQUFDO0lBQzNDLENBQUM7O2tIQW5TUSxvQkFBb0Isa0JBRWpCLHFCQUFxQjtzSEFGeEIsb0JBQW9CLGNBRmpCLE1BQU07NEZBRVQsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBR1EsTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IEVTT0xWRV9DT05ORUNUX0NPTkZJRyB9IGZyb20gJy4uL2Vzb2x2ZS1jb25uZWN0LWNvbmZpZy5jb25zdGFudCc7XHJcbmltcG9ydCB7IEVzb2x2ZUNvbm5lY3RDb25maWcgfSBmcm9tICcuLi9lc29sdmUtY29ubmVjdC5jb25maWcnO1xyXG5pbXBvcnQgeyBFc29sdmVFcnJvckhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2Vycm9ycy9lc29sdmUtZXJyb3ItaGFuZGxlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXNvbHZlUmVzdWx0IH0gZnJvbSAnLi4vc2hhcmVkL2Vzb2x2ZS1yZXN1bHQubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gICAgRXNvbHZlRGVsZXRlUmVzcG9uc2UsXHJcbiAgICBFc29sdmVHZXRSZXNwb25zZSxcclxuICAgIEVzb2x2ZVJlc3BvbnNlSGFuZGxlclNlcnZpY2UsXHJcbiAgICBFc29sdmVTZXRSZXNwb25zZSxcclxufSBmcm9tICcuLi9zaGFyZWQvcmVzcG9uc2UnO1xyXG5cclxuaW1wb3J0IHtcclxuICAgIEVzb2x2ZVBheW1lbnRNZXRob2QsXHJcbiAgICBFc29sdmVQYXltZW50UmVzdWx0LFxyXG4gICAgRXNvbHZlVmF1bHRJdGVtLFxyXG4gICAgRXNvbHZlVmF1bHRJdGVtUmVzdWx0LFxyXG59IGZyb20gJy4vY2xhc3Nlcyc7XHJcbmltcG9ydCB7XHJcbiAgICBFc29sdmVDYXJkRGF0YSxcclxuICAgIEVzb2x2ZVBheW1lbnRNZXRob2RPcHRpb25zLFxyXG4gICAgRXNvbHZlUGF5bWVudE1ldGhvZFJlY29yZCxcclxuICAgIEVzb2x2ZVBheW1lbnRSZXNwb25zZSxcclxuICAgIEVzb2x2ZVZhdWx0UmVjb3JkLFxyXG4gICAgRXNvbHZlVmF1bHRSZXNwb25zZSxcclxufSBmcm9tICcuL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBFc29sdmVQYXltZW50U2V0Qm9keSB9IGZyb20gJy4vaW50ZXJmYWNlcy9lc29sdmUtcGF5bWVudC1zZXQtYm9keS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVQYXltZW50U3RhdHVzIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2Vzb2x2ZS1wYXltZW50LXN0YXR1cy5pbnRlcmZhY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNvbHZlUGF5bWVudFNlcnZpY2Uge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQEluamVjdChFU09MVkVfQ09OTkVDVF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBFc29sdmVDb25uZWN0Q29uZmlnLFxyXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgICAgICBwcml2YXRlIGVycm9ySGFuZGxlcjogRXNvbHZlRXJyb3JIYW5kbGVyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlc3BvbnNlSGFuZGxlcjogRXNvbHZlUmVzcG9uc2VIYW5kbGVyU2VydmljZSxcclxuICAgICkgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIHBheW1lbnQgbWV0aG9kcy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBGaWx0ZXIgb3B0aW9uc1xyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIEFuIGBPYnNlcnZhYmxlYCB3aXRoIGFuIGFycmF5IG9mIHBheW1lbnQgbWV0aG9kc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0UGF5bWVudE1ldGhvZHMob3B0aW9ucz86IEVzb2x2ZVBheW1lbnRNZXRob2RPcHRpb25zKTogT2JzZXJ2YWJsZTxFc29sdmVQYXltZW50TWV0aG9kW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlUGF5bWVudE1ldGhvZFJlY29yZFtdPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtcGF5bWVudC1tZXRob2RzLnBocGAsXHJcbiAgICAgICAgICAgICAgICB7IHBhcmFtczogeyAuLi5vcHRpb25zIH0gfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1BheW1lbnRNZXRob2RzKHJlc3BvbnNlLnJlY29yZHMpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZSB0aGUgcGF5bWVudCBzdGF0dXMgb2YgdGhlIHNwZWNpZmllZCB0cmFuc2FjdGlvblxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB0cmFuc2FjdGlvbl9pZCBJRCBvZiB0aGUgdHJhbnNhY3Rpb25cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyBBbiBgT2JzZXJ2YWJsZWAgd2l0aCB0aGUgc3VjY2VzcyBzdGF0dXMgb2YgdGhlIHBheW1lbnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldFBheW1lbnRTdGF0dXModHJhbnNhY3Rpb25faWQ6IG51bWJlcik6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVQYXltZW50U3RhdHVzPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtcGF5bWVudC1zdGF0dXMucGhwYCxcclxuICAgICAgICAgICAgICAgIHsgcGFyYW1zOiB7IGNhcnRfaWQ6IHRyYW5zYWN0aW9uX2lkIH0gfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnJlY29yZHMuc3VjY2VzcztcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBzYXZlZCBjYXJkcyBmcm9tIHRoZSB2YXVsdC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gcGF5bWVudF9tZXRob2RzX2lkIGVTb2x2ZSBJRCBvZiBhIHBheW1lbnQgbWV0aG9kXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgQW4gYE9ic2VydmFibGVgIHdpdGggYW4gYXJyYXkgb2Ygc2F2ZWQgYmFuayBjYXJkc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0VmF1bHQocGF5bWVudF9tZXRob2RzX2lkPzogbnVtYmVyKTogT2JzZXJ2YWJsZTxFc29sdmVWYXVsdEl0ZW1bXT4ge1xyXG4gICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG5cclxuICAgICAgICBpZiAodHlwZW9mIHBheW1lbnRfbWV0aG9kc19pZCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncGF5bWVudF9tZXRob2RzX2lkJywgcGF5bWVudF9tZXRob2RzX2lkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVWYXVsdFJlY29yZFtdPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtdmF1bHQucGhwYCxcclxuICAgICAgICAgICAgICAgIHsgcGFyYW1zIH0sXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NWYXVsdEl0ZW1zKHJlc3BvbnNlLnJlY29yZHMpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIGEgbmV3IGNhcmQgaW4gdGhlIHZhdWx0IE9SIHVwZGF0ZXMgYW4gZXhpc3Rpbmcgb25lLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBwYXltZW50X21ldGhvZHNfaWQgU2VsZWN0ZWQgcGF5bWVudCBtZXRob2RcclxuICAgICAqIEBwYXJhbSBjYXJkX2RhdGEgSW5mb3JtYXRpb24gb2YgYmFuayBjYXJkXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgQW4gYE9ic2VydmFibGVgIHdpdGggdGhlIHJlc3VsdCBvZiB0aGUgdmF1bHQgc2V0LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0VmF1bHRJdGVtKFxyXG4gICAgICAgIHBheW1lbnRfbWV0aG9kc19pZDogbnVtYmVyLFxyXG4gICAgICAgIGNhcmRfZGF0YTogRXNvbHZlQ2FyZERhdGEsXHJcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZVZhdWx0SXRlbVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgICAgICAgIHZhdWx0OiB7XHJcbiAgICAgICAgICAgICAgICBwYXltZW50X21ldGhvZHNfaWQsXHJcbiAgICAgICAgICAgICAgICBjYXJkX251bWJlcjogY2FyZF9kYXRhLmNhcmRfbnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgY2FyZF9uYW1lOiBjYXJkX2RhdGEubmFtZSxcclxuICAgICAgICAgICAgICAgIGNhcmRfY3Z2OiBjYXJkX2RhdGEuY3Z2LFxyXG4gICAgICAgICAgICAgICAgY2FyZF9leHBpcnk6IHRoaXMuZ2VuZXJhdGVFeHBpcnkoY2FyZF9kYXRhKSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPEVzb2x2ZVZhdWx0UmVzcG9uc2U+PihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NldC12YXVsdC5waHBgLFxyXG4gICAgICAgICAgICAgICAgYm9keSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7JyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5JyxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKGh0dHBfcmVzcG9uc2UpID0+IHRoaXMucmVzcG9uc2VIYW5kbGVyLnZhbGlkYXRlU2luZ2xlSHR0cFJlc3BvbnNlKFxyXG4gICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiBuZXcgRXNvbHZlVmF1bHRJdGVtUmVzdWx0KHJlc3BvbnNlKSxcclxuICAgICAgICAgICAgICAgICkpLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBQb3N0RXJyb3IoJ3NldC12YXVsdCcsIGVycm9yUmVzKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVsZXRlIGEgY2FyZCBpbiB0aGUgdmF1bHRcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gaWQgSUQgb2YgdGhlIHZhdWx0IGl0ZW1cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyBBbiBgT2JzZXJ2YWJsZWAgd2l0aCB0aGUgcmVzdWx0IG9mIHRoZSB2YXVsdCBkZWxldGUuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkZWxldGVWYXVsdEl0ZW0oaWQ6IG51bWJlcik6IE9ic2VydmFibGU8RXNvbHZlUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAuZGVsZXRlPEVzb2x2ZURlbGV0ZVJlc3BvbnNlPihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2RlbGV0ZS12YXVsdC5waHBgLFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyBpZCB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5JyxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKGh0dHBfcmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChodHRwX3Jlc3BvbnNlLnJlc3VsdCA9PT0gdW5kZWZpbmVkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaHR0cF9yZXNwb25zZS5yZXN1bHQgPT09IG51bGwpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChodHRwX3Jlc3BvbnNlLnJlc3VsdC5zdGF0dXMgIT09ICdzdWNjZXNzJylcclxuICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgaHR0cF9yZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlUmVzdWx0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLnJlc3VsdC5zdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UucmVzdWx0LmNvZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UucmVzdWx0Lm1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBEZWxldGVFcnJvcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS12YXVsdCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yUmVzLFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIHBheW1lbnQgZm9yIHRoZSBzcGVjaWZpZWQgdHJhbnNhY3Rpb24gdXNpbmcgc2VsZWN0ZWQgcGF5bWVudFxyXG4gICAgICogbWV0aG9kLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB0cmFuc2FjdGlvbl9pZCBlU29sdmUgSUQgdG8gdGhlIHRyYW5zYWN0aW9uXHJcbiAgICAgKiBAcGFyYW0gcGF5bWVudF9tZXRob2RzX2lkIGVTb2x2ZSBJRCB0byB0aGUgc2VsZWN0ZWQgcGF5bWVudCBtZXRob2RcclxuICAgICAqIEBwYXJhbSBjYXJkIElEIG9mIHNlbGVjdGVkIGNhcmQgZnJvbSB0aGUgdmF1bHQgb3IgaW5mb3JtYXRpb24gdG8gYSBicmFuZCBuZXcgY2FyZFxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIEFuIGBPYnNlcnZhYmxlYCB3aXRoIHRoZSByZXN1bHQgb2YgdGhlIHBheW1lbnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldFBheW1lbnQoXHJcbiAgICAgICAgdHJhbnNhY3Rpb25faWQ6IG51bWJlcixcclxuICAgICAgICBwYXltZW50X21ldGhvZHNfaWQ6IG51bWJlcixcclxuICAgICAgICBjYXJkPzogRXNvbHZlQ2FyZERhdGEgfCBudW1iZXIsXHJcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZVBheW1lbnRSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBib2R5OiBFc29sdmVQYXltZW50U2V0Qm9keSA9IHtcclxuICAgICAgICAgICAgcGF5bWVudDoge1xyXG4gICAgICAgICAgICAgICAgY2FydF9pZDogdHJhbnNhY3Rpb25faWQsXHJcbiAgICAgICAgICAgICAgICBwYXltZW50X21ldGhvZHNfaWQsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKGNhcmQpIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjYXJkID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICAgICAgYm9keS5wYXltZW50LnVzZXJfdmF1bHRfaWQgPSBjYXJkO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYm9keS5jYXJkID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhcmRfbnVtYmVyOiBjYXJkLmNhcmRfbnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgICAgIGNhcmRfbmFtZTogY2FyZC5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGNhcmRfY3Z2OiBjYXJkLmN2dixcclxuICAgICAgICAgICAgICAgICAgICBjYXJkX2V4cGlyeTogdGhpcy5nZW5lcmF0ZUV4cGlyeShjYXJkKSxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLnBvc3Q8RXNvbHZlU2V0UmVzcG9uc2U8RXNvbHZlUGF5bWVudFJlc3BvbnNlPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXQtcGF5bWVudC5waHBgLFxyXG4gICAgICAgICAgICAgICAgYm9keSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7JyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5JyxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKGh0dHBfcmVzcG9uc2UpID0+IHRoaXMucmVzcG9uc2VIYW5kbGVyLnZhbGlkYXRlU2luZ2xlSHR0cFJlc3BvbnNlKFxyXG4gICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiBuZXcgRXNvbHZlUGF5bWVudFJlc3VsdChyZXNwb25zZSksXHJcbiAgICAgICAgICAgICAgICApKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzOiBIdHRwRXJyb3JSZXNwb25zZSB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwUG9zdEVycm9yKCdzZXQtcGF5bWVudCcsIGVycm9yUmVzKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJvY2Vzc2VzIHRoZSBlU29sdmUgcGF5bWVudCBtZXRob2QgcmVjb3Jkcy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gcmVjb3JkcyBSZWNvcmRzIHRvIHByb2Nlc3NcclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBwcm9jZXNzZWQgcGF5bWVudCBtZXRob2RzLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHByb2Nlc3NQYXltZW50TWV0aG9kcyhyZWNvcmRzOiBFc29sdmVQYXltZW50TWV0aG9kUmVjb3JkW10pOiBFc29sdmVQYXltZW50TWV0aG9kW10ge1xyXG4gICAgICAgIGNvbnN0IHBheW1lbnRfbWV0aG9kczogRXNvbHZlUGF5bWVudE1ldGhvZFtdID0gW107XHJcblxyXG4gICAgICAgIGlmIChyZWNvcmRzKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBheW1lbnRfbWV0aG9kID0gbmV3IEVzb2x2ZVBheW1lbnRNZXRob2QocmVjb3JkKTtcclxuXHJcbiAgICAgICAgICAgICAgICBwYXltZW50X21ldGhvZHMucHVzaChwYXltZW50X21ldGhvZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBwYXltZW50X21ldGhvZHM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9jZXNzZXMgdGhlIGVTb2x2ZSB2YXVsdCByZWNvcmRzLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSByZWNvcmRzIFJlY29yZHMgdG8gcHJvY2Vzc1xyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHByb2Nlc3NlZCB2YXVsdCBpdGVtcyAoYS5rLmEuIGNhcmRzKVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHByb2Nlc3NWYXVsdEl0ZW1zKHJlY29yZHM6IEVzb2x2ZVZhdWx0UmVjb3JkW10pOiBFc29sdmVWYXVsdEl0ZW1bXSB7XHJcbiAgICAgICAgY29uc3QgdmF1bHQ6IEVzb2x2ZVZhdWx0SXRlbVtdID0gW107XHJcblxyXG4gICAgICAgIGlmIChyZWNvcmRzKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZhdWx0X2l0ZW0gPSBuZXcgRXNvbHZlVmF1bHRJdGVtKFxyXG4gICAgICAgICAgICAgICAgICAgICtyZWNvcmQuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgK3JlY29yZC5wYXltZW50X21ldGhvZHNfaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmxhc3Q0LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5icmFuZCxcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuZXhwaXJ5X3RpbWVzdGFtcCxcclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgdmF1bHQucHVzaCh2YXVsdF9pdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHZhdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2VuZXJhdGUgYSBjb25jYXRlbmF0ZWQgc3RyaW5nIHdpdGggdGhlIGV4cGlyeSBtb250aCBhbmQgeWVhclxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBjYXJkX2RhdGEgQ3JlZGl0IGNhcmQgZGF0YVxyXG4gICAgICpcclxuICAgICAqICBAcmV0dXJucyBFeHBpcnkgc3RyaW5nXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2VuZXJhdGVFeHBpcnkoY2FyZF9kYXRhOiBFc29sdmVDYXJkRGF0YSk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgbW9udGhfc3RyaW5nID0gY2FyZF9kYXRhLmV4cGlyeV9tb250aC5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgICAgIGNvbnN0IHllYXJfc3RyaW5nID0gY2FyZF9kYXRhLmV4cGlyeV95ZWFyLnBhZFN0YXJ0KDQsICcwJyk7XHJcblxyXG4gICAgICAgIHJldHVybiBgJHttb250aF9zdHJpbmd9JHt5ZWFyX3N0cmluZ31gO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
231
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXBheW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvcGF5bWVudC9lc29sdmUtcGF5bWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBaUMsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHakYsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUcxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFRN0QsT0FBTyxFQUNILG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLHFCQUFxQixHQUN4QixNQUFNLFdBQVcsQ0FBQzs7Ozs7QUFnQm5CLE1BQU0sT0FBTyxvQkFBb0I7SUFDN0IsWUFDMkMsTUFBMkIsRUFDMUQsSUFBZ0IsRUFDaEIsWUFBdUMsRUFDdkMsZUFBNkM7UUFIZCxXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUMxRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGlCQUFZLEdBQVosWUFBWSxDQUEyQjtRQUN2QyxvQkFBZSxHQUFmLGVBQWUsQ0FBOEI7SUFDckQsQ0FBQztJQUVMOzs7Ozs7T0FNRztJQUNJLGlCQUFpQixDQUFDLE9BQW9DO1FBQ3pELE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDWCxHQUFHLENBQ0EsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sMEJBQTBCLEVBQ2hELEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxPQUFPLEVBQUUsRUFBRSxDQUM3QjthQUNBLElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxR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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgRVNPTFZFX0NPTk5FQ1RfQ09ORklHIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QtY29uZmlnLmNvbnN0YW50JztcclxuaW1wb3J0IHsgRXNvbHZlQ29ubmVjdENvbmZpZyB9IGZyb20gJy4uL2Vzb2x2ZS1jb25uZWN0LmNvbmZpZyc7XHJcbmltcG9ydCB7IEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvZXJyb3JzL2Vzb2x2ZS1lcnJvci1oYW5kbGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVSZXN1bHQgfSBmcm9tICcuLi9zaGFyZWQvZXNvbHZlLXJlc3VsdC5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgICBFc29sdmVEZWxldGVSZXNwb25zZSxcclxuICAgIEVzb2x2ZUdldFJlc3BvbnNlLFxyXG4gICAgRXNvbHZlUmVzcG9uc2VIYW5kbGVyU2VydmljZSxcclxuICAgIEVzb2x2ZVNldFJlc3BvbnNlLFxyXG59IGZyb20gJy4uL3NoYXJlZC9yZXNwb25zZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgRXNvbHZlUGF5bWVudE1ldGhvZCxcclxuICAgIEVzb2x2ZVBheW1lbnRSZXN1bHQsXHJcbiAgICBFc29sdmVWYXVsdEl0ZW0sXHJcbiAgICBFc29sdmVWYXVsdEl0ZW1SZXN1bHQsXHJcbn0gZnJvbSAnLi9jbGFzc2VzJztcclxuaW1wb3J0IHtcclxuICAgIEVzb2x2ZUNhcmREYXRhLFxyXG4gICAgRXNvbHZlUGF5bWVudE1ldGhvZE9wdGlvbnMsXHJcbiAgICBFc29sdmVQYXltZW50TWV0aG9kUmVjb3JkLFxyXG4gICAgRXNvbHZlUGF5bWVudFJlZGlyZWN0TGlua3MsXHJcbiAgICBFc29sdmVQYXltZW50UmVzcG9uc2UsXHJcbiAgICBFc29sdmVWYXVsdFJlY29yZCxcclxuICAgIEVzb2x2ZVZhdWx0UmVzcG9uc2UsXHJcbn0gZnJvbSAnLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgRXNvbHZlUGF5bWVudFNldEJvZHkgfSBmcm9tICcuL2ludGVyZmFjZXMvZXNvbHZlLXBheW1lbnQtc2V0LWJvZHkuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgRXNvbHZlUGF5bWVudFN0YXR1cyB9IGZyb20gJy4vaW50ZXJmYWNlcy9lc29sdmUtcGF5bWVudC1zdGF0dXMuaW50ZXJmYWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEVzb2x2ZVBheW1lbnRTZXJ2aWNlIHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoRVNPTFZFX0NPTk5FQ1RfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogRXNvbHZlQ29ubmVjdENvbmZpZyxcclxuICAgICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgcHJpdmF0ZSBlcnJvckhhbmRsZXI6IEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZXNwb25zZUhhbmRsZXI6IEVzb2x2ZVJlc3BvbnNlSGFuZGxlclNlcnZpY2UsXHJcbiAgICApIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBwYXltZW50IG1ldGhvZHMuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIG9wdGlvbnMgRmlsdGVyIG9wdGlvbnNcclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyBBbiBgT2JzZXJ2YWJsZWAgd2l0aCBhbiBhcnJheSBvZiBwYXltZW50IG1ldGhvZHNcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldFBheW1lbnRNZXRob2RzKG9wdGlvbnM/OiBFc29sdmVQYXltZW50TWV0aG9kT3B0aW9ucyk6IE9ic2VydmFibGU8RXNvbHZlUGF5bWVudE1ldGhvZFtdPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZVBheW1lbnRNZXRob2RSZWNvcmRbXT4+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LXBheW1lbnQtbWV0aG9kcy5waHBgLFxyXG4gICAgICAgICAgICAgICAgeyBwYXJhbXM6IHsgLi4ub3B0aW9ucyB9IH0sXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NQYXltZW50TWV0aG9kcyhyZXNwb25zZS5yZWNvcmRzKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmUgdGhlIHBheW1lbnQgc3RhdHVzIG9mIHRoZSBzcGVjaWZpZWQgdHJhbnNhY3Rpb25cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gdHJhbnNhY3Rpb25faWQgSUQgb2YgdGhlIHRyYW5zYWN0aW9uXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgQW4gYE9ic2VydmFibGVgIHdpdGggdGhlIHN1Y2Nlc3Mgc3RhdHVzIG9mIHRoZSBwYXltZW50XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRQYXltZW50U3RhdHVzKHRyYW5zYWN0aW9uX2lkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlUGF5bWVudFN0YXR1cz4+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LXBheW1lbnQtc3RhdHVzLnBocGAsXHJcbiAgICAgICAgICAgICAgICB7IHBhcmFtczogeyBjYXJ0X2lkOiB0cmFuc2FjdGlvbl9pZCB9IH0sXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5yZWNvcmRzLnN1Y2Nlc3M7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHJpZXZlcyBhIGxpc3Qgb2Ygc2F2ZWQgY2FyZHMgZnJvbSB0aGUgdmF1bHQuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHBheW1lbnRfbWV0aG9kc19pZCBlU29sdmUgSUQgb2YgYSBwYXltZW50IG1ldGhvZFxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIEFuIGBPYnNlcnZhYmxlYCB3aXRoIGFuIGFycmF5IG9mIHNhdmVkIGJhbmsgY2FyZHNcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldFZhdWx0KHBheW1lbnRfbWV0aG9kc19pZD86IG51bWJlcik6IE9ic2VydmFibGU8RXNvbHZlVmF1bHRJdGVtW10+IHtcclxuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiBwYXltZW50X21ldGhvZHNfaWQgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3BheW1lbnRfbWV0aG9kc19pZCcsIHBheW1lbnRfbWV0aG9kc19pZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlVmF1bHRSZWNvcmRbXT4+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LXZhdWx0LnBocGAsXHJcbiAgICAgICAgICAgICAgICB7IHBhcmFtcyB9LFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzVmF1bHRJdGVtcyhyZXNwb25zZS5yZWNvcmRzKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyBhIG5ldyBjYXJkIGluIHRoZSB2YXVsdCBPUiB1cGRhdGVzIGFuIGV4aXN0aW5nIG9uZS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gcGF5bWVudF9tZXRob2RzX2lkIFNlbGVjdGVkIHBheW1lbnQgbWV0aG9kXHJcbiAgICAgKiBAcGFyYW0gY2FyZF9kYXRhIEluZm9ybWF0aW9uIG9mIGJhbmsgY2FyZFxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIEFuIGBPYnNlcnZhYmxlYCB3aXRoIHRoZSByZXN1bHQgb2YgdGhlIHZhdWx0IHNldC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldFZhdWx0SXRlbShcclxuICAgICAgICBwYXltZW50X21ldGhvZHNfaWQ6IG51bWJlcixcclxuICAgICAgICBjYXJkX2RhdGE6IEVzb2x2ZUNhcmREYXRhLFxyXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVWYXVsdEl0ZW1SZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICAgICAgICB2YXVsdDoge1xyXG4gICAgICAgICAgICAgICAgcGF5bWVudF9tZXRob2RzX2lkLFxyXG4gICAgICAgICAgICAgICAgY2FyZF9udW1iZXI6IGNhcmRfZGF0YS5jYXJkX251bWJlcixcclxuICAgICAgICAgICAgICAgIGNhcmRfbmFtZTogY2FyZF9kYXRhLm5hbWUsXHJcbiAgICAgICAgICAgICAgICBjYXJkX2N2djogY2FyZF9kYXRhLmN2dixcclxuICAgICAgICAgICAgICAgIGNhcmRfZXhwaXJ5OiB0aGlzLmdlbmVyYXRlRXhwaXJ5KGNhcmRfZGF0YSksXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAucG9zdDxFc29sdmVTZXRSZXNwb25zZTxFc29sdmVWYXVsdFJlc3BvbnNlPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXQtdmF1bHQucGhwYCxcclxuICAgICAgICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OycsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChodHRwX3Jlc3BvbnNlKSA9PiB0aGlzLnJlc3BvbnNlSGFuZGxlci52YWxpZGF0ZVNpbmdsZUh0dHBSZXNwb25zZShcclxuICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLFxyXG4gICAgICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4gbmV3IEVzb2x2ZVZhdWx0SXRlbVJlc3VsdChyZXNwb25zZSksXHJcbiAgICAgICAgICAgICAgICApKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzOiBIdHRwRXJyb3JSZXNwb25zZSB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwUG9zdEVycm9yKCdzZXQtdmF1bHQnLCBlcnJvclJlcyk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlbGV0ZSBhIGNhcmQgaW4gdGhlIHZhdWx0XHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGlkIElEIG9mIHRoZSB2YXVsdCBpdGVtXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgQW4gYE9ic2VydmFibGVgIHdpdGggdGhlIHJlc3VsdCBvZiB0aGUgdmF1bHQgZGVsZXRlLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGVsZXRlVmF1bHRJdGVtKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPEVzb2x2ZVJlc3VsdD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLmRlbGV0ZTxFc29sdmVEZWxldGVSZXNwb25zZT4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9kZWxldGUtdmF1bHQucGhwYCxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHsgaWQgfSxcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChodHRwX3Jlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaHR0cF9yZXNwb25zZS5yZXN1bHQgPT09IHVuZGVmaW5lZCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGh0dHBfcmVzcG9uc2UucmVzdWx0ID09PSBudWxsKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaHR0cF9yZXNwb25zZS5yZXN1bHQuc3RhdHVzICE9PSAnc3VjY2VzcycpXHJcbiAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGh0dHBfcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZVJlc3VsdChcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZS5yZXN1bHQuc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLnJlc3VsdC5jb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLnJlc3VsdC5tZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzOiBIdHRwRXJyb3JSZXNwb25zZSB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwRGVsZXRlRXJyb3IoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdkZWxldGUtdmF1bHQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvclJlcyxcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSBwYXltZW50IGZvciB0aGUgc3BlY2lmaWVkIHRyYW5zYWN0aW9uIHVzaW5nIHNlbGVjdGVkIHBheW1lbnRcclxuICAgICAqIG1ldGhvZC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gdHJhbnNhY3Rpb25faWQgZVNvbHZlIElEIHRvIHRoZSB0cmFuc2FjdGlvblxyXG4gICAgICogQHBhcmFtIHBheW1lbnRfbWV0aG9kc19pZCBlU29sdmUgSUQgdG8gdGhlIHNlbGVjdGVkIHBheW1lbnQgbWV0aG9kXHJcbiAgICAgKiBAcGFyYW0gY2FyZCBJRCBvZiBzZWxlY3RlZCBjYXJkIGZyb20gdGhlIHZhdWx0IG9yIGluZm9ybWF0aW9uIHRvIGEgYnJhbmQgbmV3IGNhcmRcclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyBBbiBgT2JzZXJ2YWJsZWAgd2l0aCB0aGUgcmVzdWx0IG9mIHRoZSBwYXltZW50XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXRQYXltZW50KFxyXG4gICAgICAgIHRyYW5zYWN0aW9uX2lkOiBudW1iZXIsXHJcbiAgICAgICAgcGF5bWVudF9tZXRob2RzX2lkOiBudW1iZXIsXHJcbiAgICAgICAgY2FyZD86IEVzb2x2ZUNhcmREYXRhIHwgbnVtYmVyLFxyXG4gICAgICAgIGxpbmtzPzogRXNvbHZlUGF5bWVudFJlZGlyZWN0TGlua3MsXHJcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZVBheW1lbnRSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBib2R5OiBFc29sdmVQYXltZW50U2V0Qm9keSA9IHtcclxuICAgICAgICAgICAgcGF5bWVudDoge1xyXG4gICAgICAgICAgICAgICAgY2FydF9pZDogdHJhbnNhY3Rpb25faWQsXHJcbiAgICAgICAgICAgICAgICBwYXltZW50X21ldGhvZHNfaWQsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKGNhcmQpIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjYXJkID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICAgICAgYm9keS5wYXltZW50LnVzZXJfdmF1bHRfaWQgPSBjYXJkO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYm9keS5jYXJkID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhcmRfbnVtYmVyOiBjYXJkLmNhcmRfbnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgICAgIGNhcmRfbmFtZTogY2FyZC5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGNhcmRfY3Z2OiBjYXJkLmN2dixcclxuICAgICAgICAgICAgICAgICAgICBjYXJkX2V4cGlyeTogdGhpcy5nZW5lcmF0ZUV4cGlyeShjYXJkKSxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChsaW5rcykge1xyXG4gICAgICAgICAgICBib2R5LmxpbmtzID0gbGlua3M7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPEVzb2x2ZVBheW1lbnRSZXNwb25zZT4+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2V0LXBheW1lbnQucGhwYCxcclxuICAgICAgICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OycsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChodHRwX3Jlc3BvbnNlKSA9PiB0aGlzLnJlc3BvbnNlSGFuZGxlci52YWxpZGF0ZVNpbmdsZUh0dHBSZXNwb25zZShcclxuICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLFxyXG4gICAgICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4gbmV3IEVzb2x2ZVBheW1lbnRSZXN1bHQocmVzcG9uc2UpLFxyXG4gICAgICAgICAgICAgICAgKSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cFBvc3RFcnJvcignc2V0LXBheW1lbnQnLCBlcnJvclJlcyk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb2Nlc3NlcyB0aGUgZVNvbHZlIHBheW1lbnQgbWV0aG9kIHJlY29yZHMuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHJlY29yZHMgUmVjb3JkcyB0byBwcm9jZXNzXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgcHJvY2Vzc2VkIHBheW1lbnQgbWV0aG9kcy5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBwcm9jZXNzUGF5bWVudE1ldGhvZHMocmVjb3JkczogRXNvbHZlUGF5bWVudE1ldGhvZFJlY29yZFtdKTogRXNvbHZlUGF5bWVudE1ldGhvZFtdIHtcclxuICAgICAgICBjb25zdCBwYXltZW50X21ldGhvZHM6IEVzb2x2ZVBheW1lbnRNZXRob2RbXSA9IFtdO1xyXG5cclxuICAgICAgICBpZiAocmVjb3Jkcykge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXltZW50X21ldGhvZCA9IG5ldyBFc29sdmVQYXltZW50TWV0aG9kKHJlY29yZCk7XHJcblxyXG4gICAgICAgICAgICAgICAgcGF5bWVudF9tZXRob2RzLnB1c2gocGF5bWVudF9tZXRob2QpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcGF5bWVudF9tZXRob2RzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJvY2Vzc2VzIHRoZSBlU29sdmUgdmF1bHQgcmVjb3Jkcy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gcmVjb3JkcyBSZWNvcmRzIHRvIHByb2Nlc3NcclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBwcm9jZXNzZWQgdmF1bHQgaXRlbXMgKGEuay5hLiBjYXJkcylcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBwcm9jZXNzVmF1bHRJdGVtcyhyZWNvcmRzOiBFc29sdmVWYXVsdFJlY29yZFtdKTogRXNvbHZlVmF1bHRJdGVtW10ge1xyXG4gICAgICAgIGNvbnN0IHZhdWx0OiBFc29sdmVWYXVsdEl0ZW1bXSA9IFtdO1xyXG5cclxuICAgICAgICBpZiAocmVjb3Jkcykge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YXVsdF9pdGVtID0gbmV3IEVzb2x2ZVZhdWx0SXRlbShcclxuICAgICAgICAgICAgICAgICAgICArcmVjb3JkLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICtyZWNvcmQucGF5bWVudF9tZXRob2RzX2lkLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5sYXN0NCxcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuYnJhbmQsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmV4cGlyeV90aW1lc3RhbXAsXHJcbiAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgIHZhdWx0LnB1c2godmF1bHRfaXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB2YXVsdDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdlbmVyYXRlIGEgY29uY2F0ZW5hdGVkIHN0cmluZyB3aXRoIHRoZSBleHBpcnkgbW9udGggYW5kIHllYXJcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gY2FyZF9kYXRhIENyZWRpdCBjYXJkIGRhdGFcclxuICAgICAqXHJcbiAgICAgKiAgQHJldHVybnMgRXhwaXJ5IHN0cmluZ1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdlbmVyYXRlRXhwaXJ5KGNhcmRfZGF0YTogRXNvbHZlQ2FyZERhdGEpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IG1vbnRoX3N0cmluZyA9IGNhcmRfZGF0YS5leHBpcnlfbW9udGgucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgICBjb25zdCB5ZWFyX3N0cmluZyA9IGNhcmRfZGF0YS5leHBpcnlfeWVhci5wYWRTdGFydCg0LCAnMCcpO1xyXG5cclxuICAgICAgICByZXR1cm4gYCR7bW9udGhfc3RyaW5nfSR7eWVhcl9zdHJpbmd9YDtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXBheW1lbnQtcmVkaXJlY3QtbGlua3MuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9wYXltZW50L2ludGVyZmFjZXMvZXNvbHZlLXBheW1lbnQtcmVkaXJlY3QtbGlua3MuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEVzb2x2ZVBheW1lbnRSZWRpcmVjdExpbmtzIHtcclxuICAgIHN1Y2Nlc3M/OiBzdHJpbmc7XHJcbiAgICBmYWlsdXJlPzogc3RyaW5nO1xyXG59XHJcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXBheW1lbnQtc2V0LWJvZHkuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9wYXltZW50L2ludGVyZmFjZXMvZXNvbHZlLXBheW1lbnQtc2V0LWJvZHkuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFc29sdmVQYXltZW50UmVkaXJlY3RMaW5rcyB9IGZyb20gJy4vZXNvbHZlLXBheW1lbnQtcmVkaXJlY3QtbGlua3MuaW50ZXJmYWNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXNvbHZlUGF5bWVudFNldEJvZHkge1xyXG4gICAgcGF5bWVudDoge1xyXG4gICAgICAgIGNhcnRfaWQ6IG51bWJlcjtcclxuICAgICAgICBwYXltZW50X21ldGhvZHNfaWQ6IG51bWJlcjtcclxuICAgICAgICB1c2VyX3ZhdWx0X2lkPzogbnVtYmVyO1xyXG4gICAgfTtcclxuICAgIGNhcmQ/OiB7XHJcbiAgICAgICAgY2FyZF9udW1iZXI6IHN0cmluZztcclxuICAgICAgICBjYXJkX25hbWU6IHN0cmluZztcclxuICAgICAgICBjYXJkX2N2djogc3RyaW5nO1xyXG4gICAgICAgIGNhcmRfZXhwaXJ5OiBzdHJpbmc7XHJcbiAgICB9O1xyXG4gICAgbGlua3M/OiBFc29sdmVQYXltZW50UmVkaXJlY3RMaW5rcztcclxufVxyXG4iXX0=
|
|
@@ -6,4 +6,5 @@ export * from './esolve-vault-record.interface';
|
|
|
6
6
|
export * from './esolve-payment-response.interface';
|
|
7
7
|
export * from './esolve-payment-method-options.interface';
|
|
8
8
|
export * from './esolve-payment-method-record.interface';
|
|
9
|
-
|
|
9
|
+
export * from './esolve-payment-redirect-links.interface';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL3BheW1lbnQvaW50ZXJmYWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4REFBOEQ7QUFDOUQsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDJDQUEyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gT25seSBleHBvcnQgdGhlIHR5cGVzIHRoYXQgYXJlIGFjY2Vzc2libGUgdG8gdGhlIHB1YmxpYyBBUElcclxuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtY2FyZC1kYXRhLmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXBheW1lbnQtZm9ybS1pbnB1dC5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS12YXVsdC1yZXNwb25zZS5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS12YXVsdC1yZWNvcmQuaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtcGF5bWVudC1yZXNwb25zZS5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1wYXltZW50LW1ldGhvZC1vcHRpb25zLmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXBheW1lbnQtbWV0aG9kLXJlY29yZC5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1wYXltZW50LXJlZGlyZWN0LWxpbmtzLmludGVyZmFjZSc7XHJcbiJdfQ==
|
|
@@ -62,7 +62,7 @@ export class EsolveWishlistService {
|
|
|
62
62
|
*/
|
|
63
63
|
setWishlistEmpty() {
|
|
64
64
|
return this.http
|
|
65
|
-
.post(`${this.config.api_url}/set-wishlist-empty.php`,
|
|
65
|
+
.post(`${this.config.api_url}/set-wishlist-empty.php`, { empty: true }, {
|
|
66
66
|
headers: {
|
|
67
67
|
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;',
|
|
68
68
|
},
|
|
@@ -113,4 +113,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
113
113
|
type: Inject,
|
|
114
114
|
args: [ESOLVE_CONNECT_CONFIG]
|
|
115
115
|
}] }, { type: i1.HttpClient }, { type: i2.EsolveErrorHandlerService }, { type: i3.EsolveResponseHandlerService }]; } });
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXdpc2hsaXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL3dpc2hsaXN0L2Vzb2x2ZS13aXNobGlzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSW5ELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHakQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFPMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUkzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7O0FBTTFFLE1BQU0sT0FBTyxxQkFBcUI7SUFDOUIsWUFDMkMsTUFBMkIsRUFDMUQsSUFBZ0IsRUFDaEIsWUFBdUMsRUFDdkMsZUFBNkM7UUFIZCxXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUMxRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGlCQUFZLEdBQVosWUFBWSxDQUEyQjtRQUN2QyxvQkFBZSxHQUFmLGVBQWUsQ0FBOEI7SUFDckQsQ0FBQztJQUVMOzs7O09BSUc7SUFDSSxXQUFXO1FBQ2QsT0FBTyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQ2pDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2IsSUFBSSxRQUFRLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRTtnQkFDaEMsTUFBTSxRQUFRLENBQUM7YUFDbEI7WUFFRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7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ckI7OzBCQUdRLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVDb25uZWN0Q29uZmlnIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QuY29uZmlnJztcclxuaW1wb3J0IHsgRVNPTFZFX0NPTk5FQ1RfQ09ORklHIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QtY29uZmlnLmNvbnN0YW50JztcclxuaW1wb3J0IHtcclxuICAgIEVzb2x2ZVNldFJlc3BvbnNlLFxyXG4gICAgRXNvbHZlR2V0UmVzcG9uc2UsXHJcbiAgICBFc29sdmVSZXNwb25zZUhhbmRsZXJTZXJ2aWNlLFxyXG59IGZyb20gJy4uL3NoYXJlZC9yZXNwb25zZSc7XHJcbmltcG9ydCB7IEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvZXJyb3JzJztcclxuaW1wb3J0IHsgRXNvbHZlU3RvY2tJdGVtIH0gZnJvbSAnLi4vc3RvY2snO1xyXG5cclxuaW1wb3J0IHsgRXNvbHZlV2lzaGxpc3RTZXRJdGVtIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgRXNvbHZlV2lzaGxpc3QsIEVzb2x2ZVdpc2hsaXN0U2V0QWN0aW9uIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IEVzb2x2ZVdpc2hsaXN0SXRlbSwgRXNvbHZlRW1wdHlXaXNobGlzdFJlc3VsdCB9IGZyb20gJy4vY2xhc3Nlcyc7XHJcbmltcG9ydCB7IEVzb2x2ZVdpc2hsaXN0SXRlbVJlY29yZCwgRXNvbHZlV2lzaGxpc3RJdGVtUmVzcG9uc2UgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNvbHZlV2lzaGxpc3RTZXJ2aWNlIHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoRVNPTFZFX0NPTk5FQ1RfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogRXNvbHZlQ29ubmVjdENvbmZpZyxcclxuICAgICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgcHJpdmF0ZSBlcnJvckhhbmRsZXI6IEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZXNwb25zZUhhbmRsZXI6IEVzb2x2ZVJlc3BvbnNlSGFuZGxlclNlcnZpY2UsXHJcbiAgICApIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmVzIHRoZSBjdXJyZW50IHdpc2hsaXN0XHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgQW4gYE9ic2VydmFibGVgIHdpdGggYW4gYXJyYXkgb2YgY2FydCBpdGVtc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0V2lzaGxpc3QoKTogT2JzZXJ2YWJsZTxFc29sdmVXaXNobGlzdD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldFdpc2hsaXN0UmVjb3JkcygpLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzV2lzaGxpc3QocmVzcG9uc2UucmVjb3Jkcyk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGVzIHRoZSB3aXNobGlzdCBieSBwcmVmb3JtaW5nIHZhcmlvdXMgYWN0aW9ucywgc3VjaCBhcyBhZGRpbmcsIGVkaXRpbmcgb3IgcmVtb3ZpbmcgaXRlbXMgZnJvbSB0aGUgbGlzdC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gaXRlbXMgQW4gYXJyYXkgb2Ygb3B0aW9ucyB0byB1cGRhdGUgdGhlIHdpc2hsaXN0XHJcbiAgICAgKiBAcGFyYW0gZGVmYXVsdF9hY3Rpb24gVGhlIGRlZmF1bHQgYWN0aW9uIHRvIHByZWZvcm1cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyBBbiBgT2JzZXJ2YWJsZWAgd2l0aCBhbiBhcnJheSBvZiByZXNwb25zZXMgdGhhdCBnaXZlcyBmZWVkYmFjayBvbiB0aGUgcmVxdWVzdGVkIGNoYW5nZXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldFdpc2hsaXN0KFxyXG4gICAgICAgIGl0ZW1zOiBFc29sdmVXaXNobGlzdFNldEl0ZW1bXSxcclxuICAgICAgICBkZWZhdWx0X2FjdGlvbjogRXNvbHZlV2lzaGxpc3RTZXRBY3Rpb24gPSAnYWRkJyxcclxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlV2lzaGxpc3RJdGVtUmVzcG9uc2VbXT4ge1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgICAgICAgIGl0ZW1zLFxyXG4gICAgICAgICAgICBkZWZhdWx0X2FjdGlvbixcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPEVzb2x2ZVdpc2hsaXN0SXRlbVJlc3BvbnNlPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXQtd2lzaGxpc3QtaXRlbS5waHBgLFxyXG4gICAgICAgICAgICAgICAgYm9keSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7JyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5JyxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlc3BvbnNlcyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnJlc3BvbnNlcztcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRW1wdGllcyB0aGUgd2lzaGxpc3QgZm9yIHRoZSBsb2dnZWQgaW4gdXNlci5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHR5cGUgRXNvbHZlRW1wdHlXaXNobGlzdFJlc3VsdFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0V2lzaGxpc3RFbXB0eSgpOiBPYnNlcnZhYmxlPEVzb2x2ZUVtcHR5V2lzaGxpc3RSZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPEVzb2x2ZVdpc2hsaXN0SXRlbVJlc3BvbnNlPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXQtd2lzaGxpc3QtZW1wdHkucGhwYCxcclxuICAgICAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OycsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChodHRwX3Jlc3BvbnNlKSA9PiB0aGlzLnJlc3BvbnNlSGFuZGxlci52YWxpZGF0ZVNpbmdsZUh0dHBSZXNwb25zZShcclxuICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLFxyXG4gICAgICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZUVtcHR5V2lzaGxpc3RSZXN1bHQocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICApKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzOiBIdHRwRXJyb3JSZXNwb25zZSB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwUG9zdEVycm9yKCdzZXQtd2lzaGxpc3QtZW1wdHknLCBlcnJvclJlcyk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb2Nlc3NlcyB0aGUgZVNvbHZlIHdpc2hsaXN0IHJlY29yZHNcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gd2lzaGxpc3RfaXRlbV9yZWNvcmRzIFJlY29yZHMgdG8gcHJvY2Vzc1xyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHByb2Nlc3NlZCBjYXJ0IGl0ZW1zXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcHJvY2Vzc1dpc2hsaXN0KHdpc2hsaXN0X2l0ZW1fcmVjb3JkczogRXNvbHZlV2lzaGxpc3RJdGVtUmVjb3JkW10pOiBFc29sdmVXaXNobGlzdCB7XHJcbiAgICAgICAgY29uc3Qgd2lzaGxpc3RfaXRlbXM6IEVzb2x2ZVdpc2hsaXN0ID0gW107XHJcblxyXG4gICAgICAgIGlmICh3aXNobGlzdF9pdGVtX3JlY29yZHMpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHdpc2hsaXN0X2l0ZW1fcmVjb3Jkcykge1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0b2NrX2l0ZW0gPSBuZXcgRXNvbHZlU3RvY2tJdGVtKGl0ZW0uc3RvY2tfaXRlbSk7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3Qgd2lzaGxpc3RfaXRlbSA9IG5ldyBFc29sdmVXaXNobGlzdEl0ZW0oXHJcbiAgICAgICAgICAgICAgICAgICAgK2l0ZW0uaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgK2l0ZW0ucXR5LFxyXG4gICAgICAgICAgICAgICAgICAgICtpdGVtLnZhdF9yYXRlLFxyXG4gICAgICAgICAgICAgICAgICAgICtpdGVtLnByaWNlLFxyXG4gICAgICAgICAgICAgICAgICAgICtpdGVtLnByaWNlX2luY2wsXHJcbiAgICAgICAgICAgICAgICAgICAgK2l0ZW0udmF0X3RvdGFsLFxyXG4gICAgICAgICAgICAgICAgICAgICtpdGVtLmxpbmVfdG90YWwsXHJcbiAgICAgICAgICAgICAgICAgICAgK2l0ZW0ubGluZV90b3RhbF9pbmNsLFxyXG4gICAgICAgICAgICAgICAgICAgIHN0b2NrX2l0ZW0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgIHdpc2hsaXN0X2l0ZW1zLnB1c2god2lzaGxpc3RfaXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB3aXNobGlzdF9pdGVtcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHJpZXZlcyBzdG9jayByZWNvcmRzIGZyb20gSFRUUCBwYXJhbXMuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHBhcmFtcyBIVFRQIGNsaWVudCBwYXJhbWV0ZXJzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0V2lzaGxpc3RSZWNvcmRzKFxyXG4gICAgICAgIHBhcmFtcz86IEh0dHBQYXJhbXMsXHJcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZVdpc2hsaXN0SXRlbVJlY29yZFtdPj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZVdpc2hsaXN0SXRlbVJlY29yZFtdPj4oXHJcbiAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC13aXNobGlzdC5waHBgLFxyXG4gICAgICAgICAgICB7IHBhcmFtcyB9LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXdpc2hsaXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL3dpc2hsaXN0L2Vzb2x2ZS13aXNobGlzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSW5ELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHakQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFPMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUkzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7O0FBTTFFLE1BQU0sT0FBTyxxQkFBcUI7SUFDOUIsWUFDMkMsTUFBMkIsRUFDMUQsSUFBZ0IsRUFDaEIsWUFBdUMsRUFDdkMsZUFBNkM7UUFIZCxXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUMxRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGlCQUFZLEdBQVosWUFBWSxDQUEyQjtRQUN2QyxvQkFBZSxHQUFmLGVBQWUsQ0FBOEI7SUFDckQsQ0FBQztJQUVMOzs7O09BSUc7SUFDSSxXQUFXO1FBQ2QsT0FBTyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQ2pDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2IsSUFBSSxRQUFRLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRTtnQkFDaEMsTUFBTSxRQUFRLENBQUM7YUFDbEI7WUFFRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7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LFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBR1EsTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IEVzb2x2ZUNvbm5lY3RDb25maWcgfSBmcm9tICcuLi9lc29sdmUtY29ubmVjdC5jb25maWcnO1xyXG5pbXBvcnQgeyBFU09MVkVfQ09OTkVDVF9DT05GSUcgfSBmcm9tICcuLi9lc29sdmUtY29ubmVjdC1jb25maWcuY29uc3RhbnQnO1xyXG5pbXBvcnQge1xyXG4gICAgRXNvbHZlU2V0UmVzcG9uc2UsXHJcbiAgICBFc29sdmVHZXRSZXNwb25zZSxcclxuICAgIEVzb2x2ZVJlc3BvbnNlSGFuZGxlclNlcnZpY2UsXHJcbn0gZnJvbSAnLi4vc2hhcmVkL3Jlc3BvbnNlJztcclxuaW1wb3J0IHsgRXNvbHZlRXJyb3JIYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9lcnJvcnMnO1xyXG5pbXBvcnQgeyBFc29sdmVTdG9ja0l0ZW0gfSBmcm9tICcuLi9zdG9jayc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVXaXNobGlzdFNldEl0ZW0gfSBmcm9tICcuL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBFc29sdmVXaXNobGlzdCwgRXNvbHZlV2lzaGxpc3RTZXRBY3Rpb24gfSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgRXNvbHZlV2lzaGxpc3RJdGVtLCBFc29sdmVFbXB0eVdpc2hsaXN0UmVzdWx0IH0gZnJvbSAnLi9jbGFzc2VzJztcclxuaW1wb3J0IHsgRXNvbHZlV2lzaGxpc3RJdGVtUmVjb3JkLCBFc29sdmVXaXNobGlzdEl0ZW1SZXNwb25zZSB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVXaXNobGlzdFNlcnZpY2Uge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQEluamVjdChFU09MVkVfQ09OTkVDVF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBFc29sdmVDb25uZWN0Q29uZmlnLFxyXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgICAgICBwcml2YXRlIGVycm9ySGFuZGxlcjogRXNvbHZlRXJyb3JIYW5kbGVyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlc3BvbnNlSGFuZGxlcjogRXNvbHZlUmVzcG9uc2VIYW5kbGVyU2VydmljZSxcclxuICAgICkgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgd2lzaGxpc3RcclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyBBbiBgT2JzZXJ2YWJsZWAgd2l0aCBhbiBhcnJheSBvZiBjYXJ0IGl0ZW1zXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRXaXNobGlzdCgpOiBPYnNlcnZhYmxlPEVzb2x2ZVdpc2hsaXN0PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0V2lzaGxpc3RSZWNvcmRzKCkucGlwZShcclxuICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NXaXNobGlzdChyZXNwb25zZS5yZWNvcmRzKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZXMgdGhlIHdpc2hsaXN0IGJ5IHByZWZvcm1pbmcgdmFyaW91cyBhY3Rpb25zLCBzdWNoIGFzIGFkZGluZywgZWRpdGluZyBvciByZW1vdmluZyBpdGVtcyBmcm9tIHRoZSBsaXN0LlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBpdGVtcyBBbiBhcnJheSBvZiBvcHRpb25zIHRvIHVwZGF0ZSB0aGUgd2lzaGxpc3RcclxuICAgICAqIEBwYXJhbSBkZWZhdWx0X2FjdGlvbiBUaGUgZGVmYXVsdCBhY3Rpb24gdG8gcHJlZm9ybVxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIEFuIGBPYnNlcnZhYmxlYCB3aXRoIGFuIGFycmF5IG9mIHJlc3BvbnNlcyB0aGF0IGdpdmVzIGZlZWRiYWNrIG9uIHRoZSByZXF1ZXN0ZWQgY2hhbmdlc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0V2lzaGxpc3QoXHJcbiAgICAgICAgaXRlbXM6IEVzb2x2ZVdpc2hsaXN0U2V0SXRlbVtdLFxyXG4gICAgICAgIGRlZmF1bHRfYWN0aW9uOiBFc29sdmVXaXNobGlzdFNldEFjdGlvbiA9ICdhZGQnLFxyXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVXaXNobGlzdEl0ZW1SZXNwb25zZVtdPiB7XHJcbiAgICAgICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgICAgICAgaXRlbXMsXHJcbiAgICAgICAgICAgIGRlZmF1bHRfYWN0aW9uLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLnBvc3Q8RXNvbHZlU2V0UmVzcG9uc2U8RXNvbHZlV2lzaGxpc3RJdGVtUmVzcG9uc2U+PihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NldC13aXNobGlzdC1pdGVtLnBocGAsXHJcbiAgICAgICAgICAgICAgICBib2R5LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtODsnLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVzcG9uc2VzID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UucmVzcG9uc2VzO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFbXB0aWVzIHRoZSB3aXNobGlzdCBmb3IgdGhlIGxvZ2dlZCBpbiB1c2VyLlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2YgdHlwZSBFc29sdmVFbXB0eVdpc2hsaXN0UmVzdWx0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXRXaXNobGlzdEVtcHR5KCk6IE9ic2VydmFibGU8RXNvbHZlRW1wdHlXaXNobGlzdFJlc3VsdD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLnBvc3Q8RXNvbHZlU2V0UmVzcG9uc2U8RXNvbHZlV2lzaGxpc3RJdGVtUmVzcG9uc2U+PihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NldC13aXNobGlzdC1lbXB0eS5waHBgLFxyXG4gICAgICAgICAgICAgICAgeyBlbXB0eTogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtODsnLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgoaHR0cF9yZXNwb25zZSkgPT4gdGhpcy5yZXNwb25zZUhhbmRsZXIudmFsaWRhdGVTaW5nbGVIdHRwUmVzcG9uc2UoXHJcbiAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZSxcclxuICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVFbXB0eVdpc2hsaXN0UmVzdWx0KHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgKSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cFBvc3RFcnJvcignc2V0LXdpc2hsaXN0LWVtcHR5JywgZXJyb3JSZXMpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9jZXNzZXMgdGhlIGVTb2x2ZSB3aXNobGlzdCByZWNvcmRzXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHdpc2hsaXN0X2l0ZW1fcmVjb3JkcyBSZWNvcmRzIHRvIHByb2Nlc3NcclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBwcm9jZXNzZWQgY2FydCBpdGVtc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHByb2Nlc3NXaXNobGlzdCh3aXNobGlzdF9pdGVtX3JlY29yZHM6IEVzb2x2ZVdpc2hsaXN0SXRlbVJlY29yZFtdKTogRXNvbHZlV2lzaGxpc3Qge1xyXG4gICAgICAgIGNvbnN0IHdpc2hsaXN0X2l0ZW1zOiBFc29sdmVXaXNobGlzdCA9IFtdO1xyXG5cclxuICAgICAgICBpZiAod2lzaGxpc3RfaXRlbV9yZWNvcmRzKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB3aXNobGlzdF9pdGVtX3JlY29yZHMpIHtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdG9ja19pdGVtID0gbmV3IEVzb2x2ZVN0b2NrSXRlbShpdGVtLnN0b2NrX2l0ZW0pO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHdpc2hsaXN0X2l0ZW0gPSBuZXcgRXNvbHZlV2lzaGxpc3RJdGVtKFxyXG4gICAgICAgICAgICAgICAgICAgICtpdGVtLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICtpdGVtLnF0eSxcclxuICAgICAgICAgICAgICAgICAgICAraXRlbS52YXRfcmF0ZSxcclxuICAgICAgICAgICAgICAgICAgICAraXRlbS5wcmljZSxcclxuICAgICAgICAgICAgICAgICAgICAraXRlbS5wcmljZV9pbmNsLFxyXG4gICAgICAgICAgICAgICAgICAgICtpdGVtLnZhdF90b3RhbCxcclxuICAgICAgICAgICAgICAgICAgICAraXRlbS5saW5lX3RvdGFsLFxyXG4gICAgICAgICAgICAgICAgICAgICtpdGVtLmxpbmVfdG90YWxfaW5jbCxcclxuICAgICAgICAgICAgICAgICAgICBzdG9ja19pdGVtLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICB3aXNobGlzdF9pdGVtcy5wdXNoKHdpc2hsaXN0X2l0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gd2lzaGxpc3RfaXRlbXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZXMgc3RvY2sgcmVjb3JkcyBmcm9tIEhUVFAgcGFyYW1zLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBwYXJhbXMgSFRUUCBjbGllbnQgcGFyYW1ldGVyc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldFdpc2hsaXN0UmVjb3JkcyhcclxuICAgICAgICBwYXJhbXM/OiBIdHRwUGFyYW1zLFxyXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVXaXNobGlzdEl0ZW1SZWNvcmRbXT4+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVXaXNobGlzdEl0ZW1SZWNvcmRbXT4+KFxyXG4gICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtd2lzaGxpc3QucGhwYCxcclxuICAgICAgICAgICAgeyBwYXJhbXMgfSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|