@tiba-spark/client-shared-lib 25.3.0-826 → 25.3.0-832
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.
|
@@ -462,7 +462,7 @@ let ParkerState = class ParkerState {
|
|
|
462
462
|
const requestedReceiptMap = ctx.getState().requestedReceiptMap;
|
|
463
463
|
if (requestedReceiptMap[action.identifier]?.email) {
|
|
464
464
|
const { email, entityName, entityId, guid, parkId } = requestedReceiptMap[action.identifier];
|
|
465
|
-
this.sendReceiptToMail(ctx, email, entityName, entityId, guid, parkId, receipt, action.notificationDto.name);
|
|
465
|
+
this.sendReceiptToMail(ctx, email, entityName, entityId, guid, parkId, receipt, action.notificationDto.name).subscribe();
|
|
466
466
|
delete requestedReceiptMap[action.identifier];
|
|
467
467
|
ctx.patchState({
|
|
468
468
|
requestedReceiptMap,
|
|
@@ -682,4 +682,4 @@ export { ParkerState };
|
|
|
682
682
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParkerState, decorators: [{
|
|
683
683
|
type: Injectable
|
|
684
684
|
}], ctorParameters: () => [{ type: i1.ChaserTicketServiceProxy }, { type: i1.PaymentServiceProxy }, { type: i1.MonthlyServiceProxy }, { type: i1.TransientServiceProxy }, { type: i1.GuestServiceProxy }, { type: i1.EvoucherServiceProxy }, { type: i1.CreditCardServiceProxy }, { type: i1.AccessProfileServiceProxy }, { type: i2.AuditServiceProxy }, { type: i3.Store }, { type: i4.SessionStorageService }, { type: i5.TranslateService }, { type: i1.FileServiceProxy }, { type: i6.FileService }, { type: i7.MessageBarService }, { type: i8.SignalR }, { type: i9.NotificationEventService }, { type: i1.AccountServiceProxy }, { type: i1.SpecialTransientServiceProxy }], propDecorators: { onClearParkerAction: [], onLoadParkerAction: [], onLoadParkersAction: [], onLoadLocateTicketSearchAction: [], onLoadLocatedTicketAction: [], onLoadTicketNumParkersAction: [], onSetSearchTermAction: [], onClearSearchTermAction: [], onClearSearchResultsAction: [], onClearLocateTicketSearchAction: [], onClearLocatedTicketAction: [], onClearSpecialTransientTablesAction: [], onUpdateDocumentAction: [], onUpdateTicketPlateIdAction: [], onPrintReceiptAction: [], onReceiptGeneratedAction: [], OnSpecialTransientTablesTablesAction: [], onReloadParkerAction: [], onSetTicketIdentifierIdAction: [] } });
|
|
685
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFya2VyLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9tb2R1bGVzL3Bhcmtlci9wYXJrZXIuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUF1QixNQUFNLGFBQWEsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlyQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQy9ILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUczRSxPQUFPLEVBQXVELG1CQUFtQixFQUFFLFlBQVksRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25KLE9BQU8sRUFBK1IscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQXlFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFzSSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUl2cEIsT0FBTyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXpFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLDZCQUE2QixFQUM3QixpQkFBaUIsRUFBRSx3QkFBd0IsRUFDM0MscUJBQXFCLEVBQ3JCLGlDQUFpQyxFQUNqQywrQkFBK0IsRUFDL0IsdUJBQXVCLEVBQ3ZCLDRCQUE0QixFQUM1QixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQ3pGLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLHlCQUF5QixFQUFFLG9CQUFvQixFQUFFLHlCQUF5QixFQUNwSCxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7OztBQXFDbkIsSUFBTSxXQUFXLEdBQWpCLE1BQU0sV0FBVztJQUV0QixZQUNVLHdCQUFrRCxFQUNsRCxtQkFBd0MsRUFDeEMsbUJBQXdDLEVBQ3hDLHFCQUE0QyxFQUM1QyxpQkFBb0MsRUFDcEMsb0JBQTBDLEVBQzFDLHNCQUE4QyxFQUM5Qyx5QkFBb0QsRUFDcEQsaUJBQW9DLEVBQ3BDLEtBQVksRUFDWixxQkFBNEMsRUFDNUMsU0FBMkIsRUFDM0IsZ0JBQWtDLEVBQ2xDLFdBQXdCLEVBQ3hCLGlCQUFvQyxFQUNwQyxPQUFnQixFQUNoQix3QkFBa0QsRUFDbEQsbUJBQXdDLEVBQ3hDLDRCQUEwRDtRQWxCMUQsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5Qyw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ3BELHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUNaLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBOEI7SUFFcEUsQ0FBQztJQUlhLEFBQVAsTUFBTSxDQUFDLHNCQUFzQixDQUFDLEtBQXVCO1FBQzFELE9BQU8sS0FBSyxDQUFDLHNCQUFzQixDQUFDO0lBQ3RDLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBdUI7UUFDNUMsT0FBTyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO0lBQ3pDLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUF1QjtRQUNyRCxPQUFPLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQztJQUNsRCxDQUFDO0lBR2EsQUFBUCxNQUFNLENBQUMscUJBQXFCLENBQUMsS0FBdUI7UUFDekQsT0FBTyxLQUFLLENBQUMscUJBQXFCLENBQUM7SUFDckMsQ0FBQztJQUdhLEFBQVAsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQXVCO1FBQ3BELE9BQU8sS0FBSyxDQUFDLGdCQUFnQixDQUFDO0lBQ2hDLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBdUI7UUFDakQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ3ZCLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBdUI7UUFDOUMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3RCLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBdUI7UUFDakQsT0FBTyxLQUFLLENBQUMsYUFBYSxDQUFDO0lBQzdCLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUF1QjtRQUN2RCxPQUFPLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQztJQUNuQyxDQUFDO0lBR2EsQUFBUCxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQXVCO1FBQ2pELE9BQU8sS0FBSyxDQUFDLGFBQWEsQ0FBQztJQUM3QixDQUFDO0lBR0QsbUJBQW1CLENBQUMsR0FBbUM7UUFDckQsR0FBRyxDQUFDLFVBQVUsQ0FBQztZQUNiLGdCQUFnQixFQUFFO2dCQUNoQixRQUFRLEVBQUUsSUFBSTtnQkFDZCxpQkFBaUIsRUFBRSxFQUFFO2dCQUNyQixtQkFBbUIsRUFBRSxFQUFFO2dCQUN2QixJQUFJLEVBQUUsRUFBRTthQUNUO1lBQ0QsT0FBTyxFQUFFLElBQUk7WUFDYixxQkFBcUIsRUFBRSxJQUFJO1NBQzVCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHRCxrQkFBa0IsQ0FBQyxHQUFtQyxFQUFFLE1BQXdCO1FBQzlFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUzRCxNQUFNLGlCQUFpQixHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QyxpQkFBaUIsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsV0FBVyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzdJLGlCQUFpQixDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7UUFDeEMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWxDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUVoRyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwRSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFMUUsUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDcEIsS0FBSyxnQkFBZ0IsQ0FBQyxVQUFVO2dCQUM5QixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ25ILE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO29CQUN0RCxpQkFBaUIsQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDO29CQUNuRCxpQkFBaUIsQ0FBQyxxQkFBcUIsR0FBRyxHQUFHLFVBQVUsTUFBTSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLENBQUM7b0JBQ3BILGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO29CQUM5RCxHQUFHLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQ3BDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDTixLQUFLLGdCQUFnQixDQUFDLFNBQVM7Z0JBQzdCLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDaEgsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEVBQUU7b0JBQ3JELE1BQU0sYUFBYSxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDakksTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUNwSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUMvRyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsR0FBRyxNQUFNLE1BQU0saUJBQWlCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBRTVGLEdBQUcsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDcEMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNOLEtBQUssZ0JBQWdCLENBQUMsUUFBUTtnQkFDNUIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUM3RyxPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtvQkFDbkQsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7d0JBQ3hDLE1BQU0sYUFBYSxHQUFHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsQ0FBQzt3QkFDN0YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxFQUN6RixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUNuSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxNQUFNLE1BQU0sYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUN6SSxDQUFDO3lCQUFNLENBQUM7d0JBQ04sTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLFNBQVMsQ0FBQzt3QkFDekUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLEVBQUUsWUFBWSxFQUN4RixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUM5SCxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixDQUFDLElBQUksRUFBRSxHQUFHLFFBQVEsTUFBTSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQzNHLENBQUM7b0JBQ0QsR0FBRyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUNwQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ04sS0FBSyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7WUFDNUIsS0FBSyxnQkFBZ0IsQ0FBQyxVQUFVO2dCQUM5QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDcEcsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRTtvQkFDN0MsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7d0JBQ3pDLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxLQUFLLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQzs0QkFDN0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQzt3QkFFcEcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUNoSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUNoSCxhQUFhLENBQUMsSUFBSSxFQUFFLEdBQUcsVUFBVSxNQUFNLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDekQsQ0FBQzt5QkFBTSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzt3QkFDaEQsTUFBTSxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsQ0FBQzt3QkFFMUYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLElBQUksRUFDbkosSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxFQUFFLEVBQzlILGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxNQUFNLE1BQU0sYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUMzRSxDQUFDO3lCQUFNLENBQUM7d0JBQ04sTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsU0FBUyxLQUFLLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQzs0QkFDekYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUM7d0JBRWhHLE1BQU0sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQzVILElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUN0RyxhQUFhLENBQUMsSUFBSSxFQUFFLEdBQUcsS0FBSyxNQUFNLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDcEQsQ0FBQztvQkFDRCxHQUFHLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQ3BDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDTixLQUFLLGdCQUFnQixDQUFDLE9BQU87Z0JBQzNCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzNGLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRTtvQkFDakQseUJBQXlCO29CQUN6QixJQUFJLHlCQUF5QixDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDO3dCQUMzRCxnREFBZ0Q7b0JBQ2xELENBQUM7eUJBQU0sQ0FBQzt3QkFDTixlQUFlLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQztvQkFDakcsQ0FBQztvQkFFRCx5QkFBeUI7b0JBQ3pCLElBQUkseUJBQXlCLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUM7d0JBQzNELHlCQUF5QjtvQkFDM0IsQ0FBQzt5QkFBTSxJQUFJLHlCQUF5QixDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDO3dCQUNsRSxtR0FBbUc7d0JBQ25HLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7NEJBQzNELGVBQWUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQzs0QkFDdEQsZUFBZSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dDQUN6RCxNQUFNLE9BQU8sR0FBZ0IsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQ0FDL0MsT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7NEJBQ3hCLENBQUMsQ0FBQyxDQUFDO3dCQUNMLENBQUM7b0JBQ0gsQ0FBQztvQkFDRCxNQUFNLFdBQVcsR0FBRyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQztvQkFDbEgsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFDakksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQzVHLGVBQWUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxPQUFPLE1BQU0sV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUV4RCxHQUFHLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQ3BDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDTixLQUFLLGdCQUFnQixDQUFDLE9BQU87Z0JBQzNCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzNGLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRTtvQkFDakQsTUFBTSxXQUFXLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUMzRSxNQUFNLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUM3RixRQUFRLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEVBQUUsZUFBZSxDQUFDLElBQUksRUFBRSxHQUFHLFFBQVEsTUFBTSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBRWpILEdBQUcsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDcEMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNOLEtBQUssZ0JBQWdCLENBQUMsTUFBTTtnQkFDMUIsSUFBSSxlQUE4RCxDQUFDO2dCQUNuRSx5QkFBeUI7Z0JBQ3pCLElBQUkseUJBQXlCLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUM7b0JBQzVELGVBQWUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ3BJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzlGLENBQUM7cUJBQU0sSUFBSSx5QkFBeUIsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQztvQkFDbEUsZUFBZSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxnQ0FBZ0MsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQy9ILElBQUksQ0FBQyx3QkFBd0IsQ0FBQywrQkFBK0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUN6RixDQUFDO2dCQUVELE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUU7b0JBQy9DLE1BQU0sVUFBVSxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ3JFLE1BQU0sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQzVGLE1BQU0sRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsY0FBYyxDQUFDLElBQUksRUFBRSxHQUFHLE1BQU0sTUFBTSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBRW5HLEdBQUcsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDcEMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNOLEtBQUssZ0JBQWdCLENBQUMsT0FBTztnQkFDM0IsSUFBSSxnQkFBZ0UsQ0FBQztnQkFDckUseUJBQXlCO2dCQUN6QixJQUFJLHlCQUF5QixDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsRUFBRSxDQUFDO29CQUM1RCxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ3RJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQy9GLENBQUM7cUJBQU0sSUFBSSx5QkFBeUIsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQztvQkFDbEUsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGlDQUFpQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDakksSUFBSSxDQUFDLHdCQUF3QixDQUFDLGdDQUFnQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzFGLENBQUM7Z0JBRUQsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFO29CQUNqRCxNQUFNLFdBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUN4RSxNQUFNLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUM3RixPQUFPLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLGVBQWUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxPQUFPLE1BQU0sV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUV6RyxHQUFHLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQ3BDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDTixLQUFLLGdCQUFnQixDQUFDLEtBQUs7Z0JBQ3pCLElBQUksY0FBNEQsQ0FBQztnQkFDakUsY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBRTVFLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUU7b0JBQzdDLE1BQU0sU0FBUyxHQUFHLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ3JFLE1BQU0sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQzNGLEtBQUssRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLElBQUksRUFBRSxHQUFHLEtBQUssTUFBTSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQy9GLEdBQUcsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDcEMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVOLEtBQUssZ0JBQWdCLENBQUMsT0FBTztnQkFDM0IsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFFM0YsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFO29CQUNqRCxNQUFNLFdBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUMxRSxNQUFNLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUM3RixPQUFPLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLGVBQWUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxPQUFPLE1BQU0sV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUN6RyxHQUFHLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQ3BDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFTixLQUFLLGdCQUFnQixDQUFDLFVBQVU7Z0JBQzlCLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBRWpHLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO29CQUN2RCxNQUFNLGNBQWMsR0FBRyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDdEYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLElBQUksRUFDaEcsVUFBVSxFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxFQUFFLEdBQUcsVUFBVSxNQUFNLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDM0gsR0FBRyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUNwQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRU4sS0FBSyxnQkFBZ0IsQ0FBQyw0QkFBNEI7Z0JBQ2hELE1BQU0sNkJBQTZCLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLHlDQUF5QyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDckosT0FBTyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxDQUFDLEVBQUU7b0JBQ25GLE1BQU0sZ0NBQWdDLEdBQUcsR0FBRyxvQ0FBb0MsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ2xILE1BQU0sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixFQUFFLGdDQUFnQyxFQUFFLElBQUksRUFDbEgsYUFBYSxFQUFFLG9DQUFvQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEVBQUUsb0NBQW9DLENBQUMsSUFBSSxFQUFFLEdBQUcsZ0NBQWdDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZLLEdBQUcsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDcEMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVOO2dCQUNFLGlCQUFpQixDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQy9CLEdBQUcsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDbEMsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDO0lBR0QsbUJBQW1CLENBQUMsR0FBbUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBcUI7UUFDcEksTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNELEdBQUcsQ0FBQyxVQUFVLENBQUM7WUFDYixNQUFNLEVBQUUsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsQ0FBQztZQUM1RSxhQUFhLEVBQUUsSUFBSTtTQUNwQixDQUFDLENBQUM7UUFFSCxJQUFJLEtBQXNCLENBQUM7UUFDM0IsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUViLEtBQUssZ0JBQWdCLENBQUMsU0FBUztnQkFDN0IsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDO2dCQUM5QixNQUFNLDBCQUEwQixHQUFHLEtBQUssQ0FBQztnQkFDekMsS0FBSyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSwwQkFBMEIsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDaEosTUFBTTtZQUNSLEtBQUssZ0JBQWdCLENBQUMsUUFBUTtnQkFDNUIsS0FBSyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNuRixNQUFNO1lBQ1IsS0FBSyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7WUFDNUIsS0FBSyxnQkFBZ0IsQ0FBQyxVQUFVO2dCQUM5QixLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzdFLE1BQU07WUFDUixLQUFLLGdCQUFnQixDQUFDLE9BQU87Z0JBQzNCLEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDakYsTUFBTTtZQUNSLEtBQUssZ0JBQWdCLENBQUMsT0FBTztnQkFDM0IsS0FBSyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNqRixNQUFNO1lBQ1IsS0FBSyxnQkFBZ0IsQ0FBQyxVQUFVO2dCQUM5QixLQUFLLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNwRyxNQUFNO1lBQ1I7Z0JBQ0UsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNqQixDQUFDO1FBRUQsT0FBTyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM1QixHQUFHLENBQUMsVUFBVSxDQUFDO2dCQUNiLGFBQWEsRUFBRSxJQUFJLEVBQUUsSUFBSTthQUMxQixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUdELDhCQUE4QixDQUFDLEdBQW1DLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBZ0M7UUFDN0gsR0FBRyxDQUFDLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBRTVDLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQztRQUM5QixNQUFNLDBCQUEwQixHQUFHLElBQUksQ0FBQztRQUN4QyxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUUvQixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSwwQkFBMEIsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQ2pKLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNULEdBQUcsQ0FBQyxVQUFVLENBQUM7Z0JBQ2IsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLElBQUk7YUFDL0IsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFHRCx5QkFBeUIsQ0FBQyxHQUFtQyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQTJCO1FBQ2hILEdBQUcsQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUV2QyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQzVFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNULEdBQUcsQ0FBQyxVQUFVLENBQUM7Z0JBQ2IsYUFBYSxFQUFFLElBQUksQ0FBQyxJQUFJO2FBQ3pCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBR0QsNEJBQTRCLENBQUMsR0FBbUMsRUFBRSxNQUFrQztRQUNsRyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0QsR0FBRyxDQUFDLFVBQVUsQ0FBQztZQUNiLE1BQU0sRUFBRSxJQUFJLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUN2RSxhQUFhLEVBQUUsSUFBSTtTQUNwQixDQUFDLENBQUM7UUFFSCxRQUFRLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQixLQUFLLGdCQUFnQixDQUFDLFNBQVM7Z0JBQzdCLE1BQU0sMEJBQTBCLEdBQUcsS0FBSyxDQUFDO2dCQUN6QyxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQztnQkFFL0IsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxFQUNsRyxNQUFNLENBQUMsU0FBUyxFQUFFLDBCQUEwQixFQUFFLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDeEUsR0FBRyxDQUFDLG9CQUFvQixDQUFDLEVBQUU7b0JBQ3pCLEdBQUcsQ0FBQyxVQUFVLENBQUM7d0JBQ2IsYUFBYSxFQUFFLG9CQUFvQixDQUFDLElBQUk7cUJBQ3pDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FDSCxDQUFDO1lBRU4sS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPO2dCQUMzQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLE1BQU0sQ0FBQztnQkFFMUYseUJBQXlCO2dCQUN6QixNQUFNLG9CQUFvQixHQUF3QixNQUFNLENBQUMsV0FBVyxLQUFLLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUNyRyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQztnQkFFdkUsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsNkJBQTZCLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxFQUN2RyxRQUFRLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQzFELEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO29CQUN2QixHQUFHLENBQUMsVUFBVSxDQUFDO3dCQUNiLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQyxJQUFJO3FCQUN2QyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQ0gsQ0FBQztZQUVOO2dCQUNFLE9BQU8sS0FBSyxDQUFDLENBQUMsMkNBQTJDO1FBQzdELENBQUM7SUFDSCxDQUFDO0lBR0QscUJBQXFCLENBQUMsR0FBbUMsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUF1QjtRQUMxSCxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUdELHVCQUF1QixDQUFDLEdBQW1DO1FBQ3pELEdBQUcsQ0FBQyxVQUFVLENBQUM7WUFDYixNQUFNLEVBQUU7Z0JBQ04sS0FBSyxFQUFFLElBQUk7Z0JBQ1gsSUFBSSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSTtnQkFDaEMsZ0JBQWdCLEVBQUUsS0FBSztnQkFDdkIsRUFBRSxFQUFFLEVBQUU7YUFDUDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHRCwwQkFBMEIsQ0FBQyxHQUFtQztRQUM1RCxHQUFHLENBQUMsVUFBVSxDQUFDO1lBQ2IsYUFBYSxFQUFFLElBQUk7U0FDcEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELCtCQUErQixDQUFDLEdBQW1DO1FBQ2pFLEdBQUcsQ0FBQyxVQUFVLENBQUM7WUFDYixtQkFBbUIsRUFBRSxJQUFJO1NBQzFCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHRCwwQkFBMEIsQ0FBQyxHQUFtQztRQUM1RCxHQUFHLENBQUMsVUFBVSxDQUFDO1lBQ2IsYUFBYSxFQUFFLElBQUk7U0FDcEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELG1DQUFtQyxDQUFDLEdBQW1DO1FBQ3JFLEdBQUcsQ0FBQyxVQUFVLENBQUM7WUFDYixzQkFBc0IsRUFBRSxFQUFFO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHRCxzQkFBc0IsQ0FBQyxHQUFtQyxFQUFFLEVBQUUsSUFBSSxFQUF3QjtRQUN4RixNQUFNLE9BQU8sR0FBOEMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQztRQUNsRixJQUFJLFVBQXdDLENBQUM7UUFDN0MsTUFBTSxjQUFjLEdBQUksT0FBZ0MsRUFBRSxjQUFjLENBQUM7UUFDekUsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQixVQUFVLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sY0FBYyxHQUFJLE9BQThCLENBQUMsb0JBQW9CLENBQUM7WUFDNUUsSUFBSSxjQUFjLEVBQUUsQ0FBQztnQkFDbkIsVUFBVSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2hILENBQUM7UUFDSCxDQUFDO1FBRUQsVUFBVSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3RDLFVBQVUsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUM1QyxVQUFVLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBRXBELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxHQUFHLENBQUMsVUFBVSxDQUFDO1lBQ2IsT0FBTyxFQUFFLEtBQUs7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDO0lBR0QsMkJBQTJCLENBQUMsR0FBbUMsRUFBRSxFQUFFLE9BQU8sRUFBNkI7UUFDckcsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQztRQUN2QyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFFeEMsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWpDLEdBQUcsQ0FBQyxVQUFVLENBQUM7WUFDYixPQUFPLEVBQUUsS0FBSztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHRCxvQkFBb0IsQ0FBQyxHQUFtQyxFQUFFLE1BQTBCO1FBQ2xGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0SCxNQUFNLFdBQVcsR0FBZ0I7WUFDL0IsUUFBUSxFQUFFLGtCQUFrQixDQUFDLG1CQUFtQjtZQUNoRCxhQUFhLEVBQUU7Z0JBQ2IsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7YUFDckQ7U0FDRixDQUFDO1FBRUYsT0FBTyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBNEMsRUFBRSxFQUFFO1lBQzFFLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGtDQUFrQyxFQUFFLENBQUM7WUFDdkcsMkJBQTJCLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDO1lBQzlELDJCQUEyQixDQUFDLElBQUksR0FBRyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQztZQUMxRSwyQkFBMkIsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ2hELDJCQUEyQixDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1lBRXBFLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNqQixNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztnQkFDL0QsbUJBQW1CLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsR0FBRztvQkFDMUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO29CQUNuQixVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7b0JBQzdCLFFBQVEsRUFBRSxNQUFNLENBQUMsU0FBUztvQkFDMUIsSUFBSTtvQkFDSixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07aUJBQ3RCLENBQUM7Z0JBQ0YsR0FBRyxDQUFDLFVBQVUsQ0FBQztvQkFDYixtQkFBbUI7aUJBQ3BCLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQywwQkFBMEIsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNwRixDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDUCxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyx5QkFBeUIsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNwRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFJRCx3QkFBd0IsQ0FBQyxHQUFtQyxFQUFFLE1BQThCO1FBQzFGLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGtDQUFrQyxFQUFFLENBQUM7UUFDdkcsMkJBQTJCLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDM0QsMkJBQTJCLENBQUMsSUFBSSxHQUFHLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDO1FBQzFFLDJCQUEyQixDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBRXBFLE1BQU0sV0FBVyxHQUFnQjtZQUMvQixhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1NBQ3hFLENBQUM7UUFFRixJQUFJLE1BQU0sQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDckMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFOUYsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztnQkFDdkIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFFO29CQUNkLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUMvRCxJQUFJLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQzt3QkFDbEQsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7d0JBQzdGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDN0csT0FBTyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7d0JBQzlDLEdBQUcsQ0FBQyxVQUFVLENBQUM7NEJBQ2IsbUJBQW1CO3lCQUNwQixDQUFDLENBQUM7b0JBQ0wsQ0FBQzt5QkFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7d0JBQ3BHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLDBCQUEwQixFQUFFLFdBQVcsQ0FBQyxDQUFDO29CQUN2RixDQUFDO2dCQUNILENBQUM7Z0JBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRTtvQkFDVixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ3RHLENBQUM7YUFDRixDQUFDLENBQUMsQ0FBQztRQUNOLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyw4QkFBOEIsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVGLENBQUM7SUFDSCxDQUFDO0lBR0Qsb0NBQW9DLENBQUMsR0FBbUMsRUFBRSxNQUF1QztRQUMvRyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztRQUNyRSxJQUFJLHNCQUFzQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFGLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsRUFBRTtnQkFDakQsR0FBRyxDQUFDLFVBQVUsQ0FBQztvQkFDYixzQkFBc0IsRUFBRSxzQkFBc0IsQ0FBQyxJQUFJO2lCQUNwRCxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ04sQ0FBQztJQUNILENBQUM7SUFHRCxvQkFBb0IsQ0FBQyxHQUFtQyxFQUFFLE1BQTBCO1FBQ2xGLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxZQUFZLENBQUM7UUFDakQsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLFdBQVcsS0FBSyxTQUFTLElBQUksWUFBWSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUM7UUFFL0YsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixNQUFNLHdCQUF3QixHQUFHLFlBQVksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDO1lBRWhFLElBQUksd0JBQXdCLEVBQUUsQ0FBQztnQkFDN0IsaUJBQWlCO2dCQUNqQixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQztnQkFFeEYsSUFBSSxrQkFBa0IsS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDaEMsc0NBQXNDO29CQUN0QyxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7b0JBQzdFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksMEJBQTBCLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDakksQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksaUJBQWlCLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsSUFBSSxFQUM5RSxZQUFZLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDdEYsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixjQUFjO2dCQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksZ0JBQWdCLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsSUFBSSxFQUM3RSxZQUFZLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxZQUFZLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQy9HLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUdELDZCQUE2QixDQUFDLEdBQW1DLEVBQUUsTUFBaUM7UUFDbEcsR0FBRyxDQUFDLFVBQVUsQ0FBQztZQUNiLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxnQkFBZ0I7U0FDMUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEdBQW1DLEVBQUUsS0FBYSxFQUFFLFVBQWtCLEVBQUUsUUFBZ0IsRUFBRSxJQUFZLEVBQUUsTUFBYyxFQUFFLElBQWtCLEVBQUUsUUFBZ0I7UUFDcEwsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUN4RyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtZQUNyQixNQUFNLElBQUksR0FBUTtnQkFDaEIsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQztnQkFDdEUsU0FBUyxFQUFFLEtBQUs7Z0JBQ2hCLGdCQUFnQixFQUFFLGdCQUFnQjthQUNuQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFDakMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLHlCQUF5QixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTyxLQUFLLENBQUMsd0JBQXdCLENBQUMsS0FBYSxFQUFFLFVBQWtCLEVBQUUsUUFBZ0IsRUFBRSxJQUFZLEVBQUUsTUFBYyxFQUFFLElBQWtCLEVBQUUsUUFBZ0I7UUFDNUosTUFBTSxVQUFVLEdBQUcsTUFBTSxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUYsTUFBTSxzQkFBc0IsR0FBOEIsQ0FBQztnQkFDekQsUUFBUTtnQkFDUixNQUFNLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRTtnQkFDekIsSUFBSTtnQkFDSixXQUFXLEVBQUUsVUFBVSxDQUFDLFFBQVEsRUFBRTthQUNuQyxDQUFDLENBQUM7UUFFSCxNQUFNLGdCQUFnQixHQUFHLElBQUksbUJBQW1CLENBQUM7WUFDL0MsTUFBTSxFQUFFLElBQUksbUJBQW1CLENBQUM7Z0JBQzlCLFdBQVcsRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFO2dCQUNsQyxFQUFFLEVBQUUsUUFBUTthQUNiLENBQUM7WUFDRixFQUFFLEVBQUUsS0FBSztZQUNULFlBQVksRUFBRSxZQUFZLENBQUMsT0FBTztZQUNsQyxzQkFBc0I7WUFDdEIsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLHFDQUFxQztZQUMvRCxVQUFVLEVBQUU7Z0JBQ1YsUUFBUTtnQkFDUixPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sVUFBVSxFQUFFO2FBQzNFO1lBQ0QsZ0JBQWdCLEVBQUUsU0FBUztTQUM1QixDQUFDLENBQUM7UUFDSCxPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxXQUE2QixFQUFFLGlCQUF5QixFQUFFLElBQWMsRUFBRSxtQkFBMkIsRUFDaEksUUFBZ0IsRUFBRSxPQUFZLEVBQUUscUJBQTZCO1FBQzdELE1BQU0sS0FBSyxHQUFHLEVBQUUsR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUNqQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7UUFDN0QsS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDbkMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDO1FBQ2pFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQzNDLEtBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxxQkFBcUIsR0FBRyxxQkFBcUIsQ0FBQztRQUNwRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7K0dBbHFCVSxXQUFXO21IQUFYLFdBQVc7O0FBNkV0QjtJQURDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztzREFZekI7QUFHRDtJQURDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDO3FEQWdOckQ7QUFHRDtJQURDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDO3NEQXlDdEQ7QUFHRDtJQURDLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQztpRUFlcEM7QUFHRDtJQURDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQzs0REFXL0I7QUFHRDtJQURDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQzsrREF5Q2xDO0FBR0Q7SUFEQyxNQUFNLENBQUMsbUJBQW1CLENBQUM7d0RBRzNCO0FBR0Q7SUFEQyxNQUFNLENBQUMscUJBQXFCLENBQUM7MERBVTdCO0FBR0Q7SUFEQyxNQUFNLENBQUMsd0JBQXdCLENBQUM7NkRBS2hDO0FBR0Q7SUFEQyxNQUFNLENBQUMsNkJBQTZCLENBQUM7a0VBS3JDO0FBR0Q7SUFEQyxNQUFNLENBQUMsd0JBQXdCLENBQUM7NkRBS2hDO0FBR0Q7SUFEQyxNQUFNLENBQUMsaUNBQWlDLENBQUM7c0VBS3pDO0FBR0Q7SUFEQyxNQUFNLENBQUMsb0JBQW9CLENBQUM7eURBdUI1QjtBQUdEO0lBREMsTUFBTSxDQUFDLHlCQUF5QixDQUFDOzhEQVVqQztBQUdEO0lBREMsTUFBTSxDQUFDLGtCQUFrQixDQUFDO3VEQW9DMUI7QUFJRDtJQURDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQzsyREFvQzlCO0FBR0Q7SUFEQyxNQUFNLENBQUMsK0JBQStCLENBQUM7dUVBV3ZDO0FBR0Q7SUFEQyxNQUFNLENBQUMsa0JBQWtCLENBQUM7dURBMEIxQjtBQUdEO0lBREMsTUFBTSxDQUFDLHlCQUF5QixDQUFDO2dFQUtqQztBQWxsQmE7SUFEYixRQUFRLEVBQUU7K0NBR1Y7QUFHYTtJQURiLFFBQVEsRUFBRTtpQ0FHVjtBQUdhO0lBRGIsUUFBUSxFQUFFOzBDQUdWO0FBR2E7SUFEYixRQUFRLEVBQUU7OENBR1Y7QUFHYTtJQURiLFFBQVEsRUFBRTt5Q0FHVjtBQUdhO0lBRGIsUUFBUSxFQUFFO3NDQUdWO0FBR2E7SUFEYixRQUFRLEVBQUU7bUNBR1Y7QUFHYTtJQURiLFFBQVEsRUFBRTtzQ0FHVjtBQUdhO0lBRGIsUUFBUSxFQUFFOzRDQUdWO0FBR2E7SUFEYixRQUFRLEVBQUU7c0NBR1Y7QUExRVUsV0FBVztJQXBCdkIsS0FBSyxDQUFtQjtRQUN2QixJQUFJLEVBQUUsUUFBUTtRQUNkLFFBQVEsRUFBRTtZQUNSLGdCQUFnQixFQUFFO2dCQUNoQixRQUFRLEVBQUUsSUFBSTtnQkFDZCxpQkFBaUIsRUFBRSxFQUFFO2dCQUNyQixtQkFBbUIsRUFBRSxFQUFFO2dCQUN2QixJQUFJLEVBQUUsRUFBRTthQUNUO1lBQ0QsT0FBTyxFQUFFLElBQUk7WUFDYixNQUFNLEVBQUUsSUFBSSxnQkFBZ0IsRUFBRTtZQUM5QixhQUFhLEVBQUUsSUFBSTtZQUNuQixZQUFZLEVBQUUsSUFBSTtZQUNsQixtQkFBbUIsRUFBRSxJQUFJO1lBQ3pCLGFBQWEsRUFBRSxJQUFJO1lBQ25CLHFCQUFxQixFQUFFLElBQUk7WUFDM0IsbUJBQW1CLEVBQUUsRUFBRTtZQUN2QixzQkFBc0IsRUFBRSxFQUFFO1NBQzNCO0tBQ0YsQ0FBQztHQUNXLFdBQVcsQ0FtcUJ2Qjs7NEZBbnFCWSxXQUFXO2tCQXJCdkIsVUFBVTsrcUJBa0dULG1CQUFtQixNQWNuQixrQkFBa0IsTUFrTmxCLG1CQUFtQixNQTJDbkIsOEJBQThCLE1BaUI5Qix5QkFBeUIsTUFhekIsNEJBQTRCLE1BMkM1QixxQkFBcUIsTUFLckIsdUJBQXVCLE1BWXZCLDBCQUEwQixNQU8xQiwrQkFBK0IsTUFPL0IsMEJBQTBCLE1BTzFCLG1DQUFtQyxNQU9uQyxzQkFBc0IsTUF5QnRCLDJCQUEyQixNQVkzQixvQkFBb0IsTUF1Q3BCLHdCQUF3QixNQXNDeEIsb0NBQW9DLE1BYXBDLG9CQUFvQixNQTRCcEIsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uLCBTZWxlY3RvciwgU3RhdGUsIFN0YXRlQ29udGV4dCwgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRU1QVFksIGZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1lc3NhZ2VCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tZXNzYWdlLWJhci9tZXNzYWdlLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7IE1lc3NhZ2VJbmZvIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tZXNzYWdlLWJhci9tZXNzYWdlLWluZm8uaW50ZXJmYWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkV2ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IERFVklDRV9FVkVOVF9PUFRJT05TX0tFWSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9rZXlzLWNvbnN0YW50cyc7XG5pbXBvcnQgeyBWRVJTSU9OXzEwXzJfMCwgVkVSU0lPTl84XzFfMCwgVkVSU0lPTl84XzJfMCwgVkVSU0lPTl84XzRfMCwgVkVSU0lPTl85XzFfMCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy92ZXJzaW9uLWNvbnN0YW50cyc7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb24gfSBmcm9tICcuLi8uLi9lbnVtcy9sb2NhbGl6YXRpb24uZW51bSc7XG5pbXBvcnQgeyBEdXJhdGlvbk1lc3NhZ2VCYXIgfSBmcm9tICcuLi8uLi9lbnVtcy9tZXNzYWdlLWJhci1kdXJhdGlvbi5lbnVtJztcbmltcG9ydCB7IEdlbmVyYXRlZFJlY2VpcHRJbmZvIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9nZW5lcmF0ZWQtcmVjZWlwdC1pbmZvLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUaWNrZXRJZGVudGlmaWVyIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy90aWNrZXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEF1ZGl0U2VjdGlvbnNEdG9IdHRwUmVzcG9uc2VEYXRhLCBBdWRpdFNlcnZpY2VQcm94eSwgU2VuZEVtYWlsUmVxdWVzdER0bywgVGVtcGxhdGVUeXBlIH0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eS9jbG91ZC1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgQWNjZXNzUHJvZmlsZVNlcnZpY2VQcm94eSwgQWNjb3VudFNlcnZpY2VQcm94eSwgQ2hhc2VyVGlja2V0U2VydmljZVByb3h5LCBDb3Vwb25TZWN0aW9uc0R0b0h0dHBSZXNwb25zZURhdGEsIENyZWRpdENhcmRTZXJ2aWNlUHJveHksIEV2b3VjaGVyU2VydmljZVByb3h5LCBGaWxlUmVzcG9uc2UsIEZpbGVTZXJ2aWNlUHJveHksIEdlbmVyYXRlRmlsZVJlc3BvbnNlRHRvSHR0cFJlc3BvbnNlRGF0YSwgR3Vlc3RTZXJ2aWNlUHJveHksIExvY2F0ZVRpY2tldER0bywgTW9udGhseVNlcnZpY2VQcm94eSwgTm90aWZpY2F0aW9uRXZlbnRUeXBlLCBQYXJrZXJUaWNrZXRUeXBlLCBQYXltZW50c0RvY3VtZW50VGFibGVEYXRhRHRvLCBQYXltZW50U2VjdGlvbnNEdG8sIFBheW1lbnRTZXJ2aWNlUHJveHksIFJlY2VpcHRFbnRpdHlQYXJhbXMsIFNlYXJjaEZpZWxkU2VsZWN0b3IsIFNwZWNpYWxUcmFuc2llbnRTZXJ2aWNlUHJveHksIFN0aWNrZXJTZWN0aW9uc0R0b0h0dHBSZXNwb25zZURhdGEsIFRyYW5zaWVudFNlY3Rpb25zRHRvLCBUcmFuc2llbnRTZXJ2aWNlUHJveHksIFRyYW5zaWVudFNoYWxsb3dEdG8sIFR5cGVDYXN0RGV2aWNlRXZlbnQsIFZlaGljbGVzRHRvIH0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eS9lZGdlLXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBGaWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpbGUuc2VydmljZSc7XG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zZXNzaW9uLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBTaWduYWxSIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2lnbmFsci5zZXJ2aWNlJztcbmltcG9ydCB7IGJsb2JUb0Jhc2U2NCwgRmlsZUdlbmVyYXRlTWV0aG9kIH0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS51dGlsJztcbmltcG9ydCB7IFN0cmluZ01hcCB9IGZyb20gJy4uLy4uL3V0aWxzL2xhbmcudXRpbCc7XG5pbXBvcnQgeyBnZXRQYXJrZXJUeXBlc1RleHQgfSBmcm9tICcuLi8uLi91dGlscy9wYXJrZXItdHlwZXMtdGV4dC51dGlsJztcbmltcG9ydCB7IGlzVmVyc2lvbkdyZWF0ZXJUaGFuRXF1YWwgfSBmcm9tICcuLi8uLi91dGlscy9zdXBwb3J0LXZlcnNpb24udXRpbCc7XG5pbXBvcnQgeyBTZW5kRW1haWxGcm9tRW50aXR5QWN0aW9uIH0gZnJvbSAnLi4vZW1haWwtc2VydmVyL2VtYWlsLXNlcnZlci5hY3Rpb25zJztcbmltcG9ydCB7IEZhY2lsaXR5U3RhdGUgfSBmcm9tICcuLi9mYWNpbGl0eS9mYWNpbGl0eS5zdGF0ZSc7XG5pbXBvcnQgeyBQYXJrTWFuYWdlclN0YXRlIH0gZnJvbSAnLi4vcGFyay1tYW5hZ2VyL3BhcmstbWFuYWdlci5zdGF0ZSc7XG5pbXBvcnQgeyBQYXJrZXJTZWFyY2hUZXJtIH0gZnJvbSAnLi9wYXJrZXItc2VhcmNoLXRlcm0nO1xuaW1wb3J0IHtcbiAgQ2xlYXJMb2NhdGVkVGlja2V0QWN0aW9uLFxuICBDbGVhckxvY2F0ZVRpY2tldFNlYXJjaEFjdGlvbixcbiAgQ2xlYXJQYXJrZXJBY3Rpb24sIENsZWFyU2VhcmNoUmVzdWx0c0FjdGlvbixcbiAgQ2xlYXJTZWFyY2hUZXJtQWN0aW9uLFxuICBDbGVhclNwZWNpYWxUcmFuc2llbnRUYWJsZXNBY3Rpb24sXG4gIEdldFNwZWNpYWxUcmFuc2llbnRUYWJsZXNBY3Rpb24sXG4gIExvYWRMb2NhdGVkVGlja2V0QWN0aW9uLFxuICBMb2FkTG9jYXRlVGlja2V0U2VhcmNoQWN0aW9uLFxuICBMb2FkUGFya2VyQWN0aW9uLFxuICBMb2FkUGFya2Vyc0FjdGlvbiwgTG9hZFRpY2tldE51bVBhcmtlcnNBY3Rpb24sIFByaW50UmVjZWlwdEFjdGlvbiwgUmVjZWlwdEdlbmVyYXRlZEFjdGlvbixcbiAgUmVsb2FkUGFya2VyQWN0aW9uLCBTZXRTZWFyY2hUZXJtQWN0aW9uLCBTZXRUaWNrZXRJZGVudGlmaWVyQWN0aW9uLCBVcGRhdGVEb2N1bWVudEFjdGlvbiwgVXBkYXRlVGlja2V0UGxhdGVJZEFjdGlvblxufSBmcm9tICcuL3Bhcmtlci5hY3Rpb25zJztcblxuZXhwb3J0IGludGVyZmFjZSBQYXJrZXJTdGF0ZU1vZGVsIHtcbiAgdGlja2V0SWRlbnRpZmllcjogVGlja2V0SWRlbnRpZmllcjtcbiAgZGV0YWlsczogYW55O1xuICBzZWFyY2g6IFBhcmtlclNlYXJjaFRlcm07XG4gIHNlYXJjaFJlc3VsdHM6IGFueVtdO1xuICBwYXJrZXJQYXJhbXM6IExvYWRQYXJrZXJBY3Rpb247XG4gIGxvY2F0ZVNlYXJjaFJlc3VsdHM6IFRyYW5zaWVudFNoYWxsb3dEdG9bXTtcbiAgbG9jYXRlZFRpY2tldDogTG9jYXRlVGlja2V0RHRvO1xuICBwYXJrZXJCcmVhZGNydW1iVmFsdWU6IHN0cmluZztcbiAgcmVxdWVzdGVkUmVjZWlwdE1hcDogU3RyaW5nTWFwPEdlbmVyYXRlZFJlY2VpcHRJbmZvPixcbiAgc3BlY2lhbFRyYW5zaWVudFRhYmxlczogc3RyaW5nW107XG59XG5cblxuQEluamVjdGFibGUoKVxuQFN0YXRlPFBhcmtlclN0YXRlTW9kZWw+KHtcbiAgbmFtZTogJ3BhcmtlcicsXG4gIGRlZmF1bHRzOiB7XG4gICAgdGlja2V0SWRlbnRpZmllcjoge1xuICAgICAgdGlja2V0SWQ6IG51bGwsXG4gICAgICBlbnRpdHlEaXNwbGF5TmFtZTogJycsXG4gICAgICBlbnRpdHlUeXBlVHJhbnNsYXRlOiAnJyxcbiAgICAgIHRhZ3M6IFtdLFxuICAgIH0sXG4gICAgZGV0YWlsczogbnVsbCxcbiAgICBzZWFyY2g6IG5ldyBQYXJrZXJTZWFyY2hUZXJtKCksXG4gICAgc2VhcmNoUmVzdWx0czogbnVsbCxcbiAgICBwYXJrZXJQYXJhbXM6IG51bGwsXG4gICAgbG9jYXRlU2VhcmNoUmVzdWx0czogbnVsbCxcbiAgICBsb2NhdGVkVGlja2V0OiBudWxsLFxuICAgIHBhcmtlckJyZWFkY3J1bWJWYWx1ZTogbnVsbCxcbiAgICByZXF1ZXN0ZWRSZWNlaXB0TWFwOiB7fSxcbiAgICBzcGVjaWFsVHJhbnNpZW50VGFibGVzOiBbXSxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgUGFya2VyU3RhdGUge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhc2VyVGlja2V0U2VydmljZVByb3h5OiBDaGFzZXJUaWNrZXRTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBwYXltZW50U2VydmljZVByb3h5OiBQYXltZW50U2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgbW9udGhseVNlcnZpY2VQcm94eTogTW9udGhseVNlcnZpY2VQcm94eSxcbiAgICBwcml2YXRlIHRyYW5zaWVudFNlcnZpY2VQcm94eTogVHJhbnNpZW50U2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgZ3Vlc3RTZXJ2aWNlUHJveHk6IEd1ZXN0U2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgZXZvdWNoZXJTZXJ2aWNlUHJveHk6IEV2b3VjaGVyU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgY3JlZGl0Q2FyZFNlcnZpY2VQcm94eTogQ3JlZGl0Q2FyZFNlcnZpY2VQcm94eSxcbiAgICBwcml2YXRlIGFjY2Vzc1Byb2ZpbGVTZXJ2aWNlUHJveHk6IEFjY2Vzc1Byb2ZpbGVTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBhdWRpdFNlcnZpY2VQcm94eTogQXVkaXRTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGZpbGVTZXJ2aWNlUHJveHk6IEZpbGVTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBmaWxlU2VydmljZTogRmlsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlQmFyU2VydmljZTogTWVzc2FnZUJhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzaWduYWxSOiBTaWduYWxSLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlOiBOb3RpZmljYXRpb25FdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY2NvdW50U2VydmljZVByb3h5OiBBY2NvdW50U2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgc3BlY2lhbFRyYW5zaWVudFNlcnZpY2VQcm94eTogU3BlY2lhbFRyYW5zaWVudFNlcnZpY2VQcm94eSxcbiAgKSB7XG4gIH1cblxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc3BlY2lhbFRyYW5zaWVudFRhYmxlcyhzdGF0ZTogUGFya2VyU3RhdGVNb2RlbCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gc3RhdGUuc3BlY2lhbFRyYW5zaWVudFRhYmxlcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgdGlja2V0SWQoc3RhdGU6IFBhcmtlclN0YXRlTW9kZWwpOiBudW1iZXIge1xuICAgIHJldHVybiBzdGF0ZS50aWNrZXRJZGVudGlmaWVyLnRpY2tldElkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBlbnRpdHlEaXNwbGF5TmFtZShzdGF0ZTogUGFya2VyU3RhdGVNb2RlbCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0YXRlLnRpY2tldElkZW50aWZpZXIuZW50aXR5RGlzcGxheU5hbWU7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHBhcmtlckJyZWFkY3J1bWJWYWx1ZShzdGF0ZTogUGFya2VyU3RhdGVNb2RlbCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0YXRlLnBhcmtlckJyZWFkY3J1bWJWYWx1ZTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgdGlja2V0SWRlbnRpZmllcihzdGF0ZTogUGFya2VyU3RhdGVNb2RlbCk6IFRpY2tldElkZW50aWZpZXIge1xuICAgIHJldHVybiBzdGF0ZS50aWNrZXRJZGVudGlmaWVyO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBwYXJrZXJEZXRhaWxzKHN0YXRlOiBQYXJrZXJTdGF0ZU1vZGVsKTogYW55IHtcbiAgICByZXR1cm4gc3RhdGUuZGV0YWlscztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc2VhcmNoVGVybShzdGF0ZTogUGFya2VyU3RhdGVNb2RlbCk6IFBhcmtlclNlYXJjaFRlcm0ge1xuICAgIHJldHVybiBzdGF0ZS5zZWFyY2g7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNlYXJjaFJlc3VsdHMoc3RhdGU6IFBhcmtlclN0YXRlTW9kZWwpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHN0YXRlLnNlYXJjaFJlc3VsdHM7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGxvY2F0ZVNlYXJjaFJlc3VsdHMoc3RhdGU6IFBhcmtlclN0YXRlTW9kZWwpOiBUcmFuc2llbnRTaGFsbG93RHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5sb2NhdGVTZWFyY2hSZXN1bHRzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBsb2NhdGVkVGlja2V0KHN0YXRlOiBQYXJrZXJTdGF0ZU1vZGVsKTogTG9jYXRlVGlja2V0RHRvIHtcbiAgICByZXR1cm4gc3RhdGUubG9jYXRlZFRpY2tldDtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJQYXJrZXJBY3Rpb24pXG4gIG9uQ2xlYXJQYXJrZXJBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya2VyU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICB0aWNrZXRJZGVudGlmaWVyOiB7XG4gICAgICAgIHRpY2tldElkOiBudWxsLFxuICAgICAgICBlbnRpdHlEaXNwbGF5TmFtZTogJycsXG4gICAgICAgIGVudGl0eVR5cGVUcmFuc2xhdGU6ICcnLFxuICAgICAgICB0YWdzOiBbXSxcbiAgICAgIH0sXG4gICAgICBkZXRhaWxzOiBudWxsLFxuICAgICAgcGFya2VyQnJlYWRjcnVtYlZhbHVlOiBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkUGFya2VyQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZFBhcmtlckFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkUGFya2VyQWN0aW9uKSB7XG4gICAgY29uc3QgZ3VpZCA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5ndWlkKTtcblxuICAgIGNvbnN0IHBhcmtlckVudGl0eVN0YXRlID0gY3R4LmdldFN0YXRlKCk7XG4gICAgcGFya2VyRW50aXR5U3RhdGUuZGV0YWlscyA9IG51bGw7XG4gICAgcGFya2VyRW50aXR5U3RhdGUuc2VhcmNoID0geyB0eXBlOiBhY3Rpb24udHlwZSwgdmFsdWU6IGFjdGlvbi5zZWFyY2hWYWx1ZSwgaXNMdWNreUxQUlNlYXJjaDogYWN0aW9uLmlzTHVja3lMUFJTZWFyY2gsIHRuOiBhY3Rpb24udGFibGVOYW1lIH07XG4gICAgcGFya2VyRW50aXR5U3RhdGUucGFya2VyUGFyYW1zID0gYWN0aW9uO1xuICAgIGN0eC5wYXRjaFN0YXRlKHBhcmtlckVudGl0eVN0YXRlKTtcblxuICAgIGNvbnN0IHNwYXJrVmVyc2lvbiA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoKHsgc21hcnRwYXJrOiB7IHZlcnNpb25zIH0gfSkgPT4gdmVyc2lvbnNbZ3VpZF0pO1xuXG4gICAgY29uc3QgdGlja2V0ID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24udGlja2V0KTtcbiAgICBjb25zdCBlVm91Y2hlciA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmVfdm91Y2hlcik7XG4gICAgY29uc3QgZ3Vlc3QgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5ndWVzdCk7XG4gICAgY29uc3QgaG90ZWxHdWVzdCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmhvdGVsX2d1ZXN0KTtcbiAgICBjb25zdCBtb250aGx5ID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24ubW9udGhseSk7XG4gICAgY29uc3QgZG9jdW1lbnQgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5kb2N1bWVudCk7XG4gICAgY29uc3QgY3JlZGl0Q2FyZCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNyZWRpdF9jYXJkKTtcbiAgICBjb25zdCBjb3Vwb24gPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5jb3Vwb24pO1xuICAgIGNvbnN0IHN0aWNrZXIgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5zdGlja2VyKTtcbiAgICBjb25zdCBhdWRpdCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmF1ZGl0KTtcbiAgICBjb25zdCBhY2NvdW50ID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uYWNjb3VudCk7XG4gICAgY29uc3Qgc3ViQWNjb3VudCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLnN1Yl9hY2NvdW50KTtcbiAgICBjb25zdCBhY2Nlc3NQcm9maWxlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uYWNjZXNzX3Byb2ZpbGUpO1xuXG4gICAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgICAgY2FzZSBQYXJrZXJUaWNrZXRUeXBlLkNyZWRpdENhcmQ6XG4gICAgICAgIGNvbnN0IGNyZWRpdENhcmRTZWN0aW9ucyQgPSB0aGlzLmNyZWRpdENhcmRTZXJ2aWNlUHJveHkuY3JlZGl0Q2FyZERlZXBTZWFyY2goYWN0aW9uLnBhcmtJZCwgYWN0aW9uLnRpY2tldElkLCBndWlkKTtcbiAgICAgICAgcmV0dXJuIGNyZWRpdENhcmRTZWN0aW9ucyQucGlwZSh0YXAoY3JlZGl0Q2FyZFNlY3Rpb24gPT4ge1xuICAgICAgICAgIHBhcmtlckVudGl0eVN0YXRlLmRldGFpbHMgPSBjcmVkaXRDYXJkU2VjdGlvbi5kYXRhO1xuICAgICAgICAgIHBhcmtlckVudGl0eVN0YXRlLnBhcmtlckJyZWFkY3J1bWJWYWx1ZSA9IGAke2NyZWRpdENhcmR9IC0gJHtjcmVkaXRDYXJkU2VjdGlvbi5kYXRhLmNyZWRpdENhcmREZXRhaWxzPy5jcmVkaXRDYXJkfWA7XG4gICAgICAgICAgcGFya2VyRW50aXR5U3RhdGUudGlja2V0SWRlbnRpZmllci50aWNrZXRJZCA9IGFjdGlvbi50aWNrZXRJZDtcbiAgICAgICAgICBjdHgucGF0Y2hTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSk7XG4gICAgICAgIH0pKTtcbiAgICAgIGNhc2UgUGFya2VyVGlja2V0VHlwZS5UcmFuc2llbnQ6XG4gICAgICAgIGNvbnN0IHRyYW5zaWVudFNlY3Rpb25zJCA9IHRoaXMudHJhbnNpZW50U2VydmljZVByb3h5LnRyYW5zaW5ldERlZXBTZWFyY2goYWN0aW9uLnBhcmtJZCwgYWN0aW9uLnRpY2tldElkLCBndWlkKTtcbiAgICAgICAgcmV0dXJuIHRyYW5zaWVudFNlY3Rpb25zJC5waXBlKHRhcCh0cmFuc2llbnRTZWN0aW9ucyA9PiB7XG4gICAgICAgICAgY29uc3QgdHJhbnNpZW50TmFtZSA9IHRyYW5zaWVudFNlY3Rpb25zLmRhdGEudGlja2V0RGV0YWlscy50aWNrZXROdW0gPyBgIyR7dHJhbnNpZW50U2VjdGlvbnMuZGF0YS50aWNrZXREZXRhaWxzLnRpY2tldE51bX1gIDogJyc7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihwYXJrZXJFbnRpdHlTdGF0ZSwgdGhpcy5nZXRQYXJrZXJFbnRpdHlTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSwgdHJhbnNpZW50TmFtZSwgdHJhbnNpZW50U2VjdGlvbnMuZGF0YS50aWNrZXREZXRhaWxzLnRhZ3MsXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGdldFBhcmtlclR5cGVzVGV4dChQYXJrZXJUaWNrZXRUeXBlLlRyYW5zaWVudCkpLCB0cmFuc2llbnRTZWN0aW9ucy5kYXRhLnRpY2tldERldGFpbHMuaWQsXG4gICAgICAgICAgICB0cmFuc2llbnRTZWN0aW9ucy5kYXRhLCBgJHt0aWNrZXR9IC0gJHt0cmFuc2llbnRTZWN0aW9ucy5kYXRhLnRpY2tldERldGFpbHMudGlja2V0TnVtfWApKTtcblxuICAgICAgICAgIGN0eC5wYXRjaFN0YXRlKHBhcmtlckVudGl0eVN0YXRlKTtcbiAgICAgICAgfSkpO1xuICAgICAgY2FzZSBQYXJrZXJUaWNrZXRUeXBlLkVWb3VjaGVyOlxuICAgICAgICBjb25zdCBldm91Y2hlclNlY3Rpb25zJCA9IHRoaXMuZXZvdWNoZXJTZXJ2aWNlUHJveHkuZVZvdWNoZXJEZWVwU2VhcmNoKGFjdGlvbi5wYXJrSWQsIGFjdGlvbi50aWNrZXRJZCwgZ3VpZCk7XG4gICAgICAgIHJldHVybiBldm91Y2hlclNlY3Rpb25zJC5waXBlKHRhcChldm91Y2hlclNlY3Rpb25zID0+IHtcbiAgICAgICAgICBpZiAoZXZvdWNoZXJTZWN0aW9ucy5kYXRhLnRpY2tldERldGFpbHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zaWVudE5hbWUgPSBgIyR7ZXZvdWNoZXJTZWN0aW9ucy5kYXRhLnRyYW5zaWVudFNlY3Rpb25zLnRpY2tldERldGFpbHM/LnRpY2tldE51bX1gO1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihwYXJrZXJFbnRpdHlTdGF0ZSwgdGhpcy5nZXRQYXJrZXJFbnRpdHlTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSwgdHJhbnNpZW50TmFtZSxcbiAgICAgICAgICAgICAgZXZvdWNoZXJTZWN0aW9ucy5kYXRhLnRyYW5zaWVudFNlY3Rpb25zLnRpY2tldERldGFpbHM/LnRhZ3MsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoZ2V0UGFya2VyVHlwZXNUZXh0KFBhcmtlclRpY2tldFR5cGUuVHJhbnNpZW50KSksXG4gICAgICAgICAgICAgIGV2b3VjaGVyU2VjdGlvbnMuZGF0YS50cmFuc2llbnRTZWN0aW9ucy50aWNrZXREZXRhaWxzPy5pZCwgZXZvdWNoZXJTZWN0aW9ucy5kYXRhLnRyYW5zaWVudFNlY3Rpb25zLCBgJHt0aWNrZXR9IC0gJHt0cmFuc2llbnROYW1lfWApKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZVZvdWNoZXJOYW1lID0gZXZvdWNoZXJTZWN0aW9ucy5kYXRhLnJlc2VydmF0aW9uRGV0YWlscz8uZ3Vlc3ROYW1lO1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihwYXJrZXJFbnRpdHlTdGF0ZSwgdGhpcy5nZXRQYXJrZXJFbnRpdHlTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSwgZVZvdWNoZXJOYW1lLFxuICAgICAgICAgICAgICBbZXZvdWNoZXJTZWN0aW9ucy5kYXRhLnJlc2VydmF0aW9uRGV0YWlscz8uZXZvdWNoZXJUYWddLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGdldFBhcmtlclR5cGVzVGV4dChQYXJrZXJUaWNrZXRUeXBlLkVWb3VjaGVyKSksXG4gICAgICAgICAgICAgIGV2b3VjaGVyU2VjdGlvbnMuZGF0YS5yZXNlcnZhdGlvbkRldGFpbHM/LmlkLCBldm91Y2hlclNlY3Rpb25zLmRhdGEsIGAke2VWb3VjaGVyfSAtICR7ZVZvdWNoZXJOYW1lfWApKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY3R4LnBhdGNoU3RhdGUocGFya2VyRW50aXR5U3RhdGUpO1xuICAgICAgICB9KSk7XG4gICAgICBjYXNlIFBhcmtlclRpY2tldFR5cGUuR3Vlc3Q6XG4gICAgICBjYXNlIFBhcmtlclRpY2tldFR5cGUuSG90ZWxHdWVzdDpcbiAgICAgICAgY29uc3QgZ3Vlc3RTZWN0aW9ucyQgPSB0aGlzLmd1ZXN0U2VydmljZVByb3h5Lmd1ZXN0RGVlcFNlYXJjaChhY3Rpb24ucGFya0lkLCBhY3Rpb24udGlja2V0SWQsIGd1aWQpO1xuICAgICAgICByZXR1cm4gZ3Vlc3RTZWN0aW9ucyQucGlwZSh0YXAoZ3Vlc3RTZWN0aW9ucyA9PiB7XG4gICAgICAgICAgaWYgKGd1ZXN0U2VjdGlvbnMuZGF0YS5ob3RlbEd1ZXN0RGV0YWlscykge1xuICAgICAgICAgICAgY29uc3QgZ3Vlc3ROYW1lID0gZ3Vlc3RTZWN0aW9ucy5kYXRhLmhvdGVsR3Vlc3REZXRhaWxzLmd1ZXN0TmFtZSA9PT0gTG9jYWxpemF0aW9uLmNhcmRfaG9sZGVyID9cbiAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uY2FyZF9ob2xkZXIpIDogZ3Vlc3RTZWN0aW9ucy5kYXRhLmhvdGVsR3Vlc3REZXRhaWxzLmd1ZXN0TmFtZTtcblxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihwYXJrZXJFbnRpdHlTdGF0ZSwgdGhpcy5nZXRQYXJrZXJFbnRpdHlTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSwgZ3Vlc3ROYW1lLCBndWVzdFNlY3Rpb25zLmRhdGEuaG90ZWxHdWVzdERldGFpbHMudGFncyxcbiAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudChnZXRQYXJrZXJUeXBlc1RleHQoUGFya2VyVGlja2V0VHlwZS5Ib3RlbEd1ZXN0KSksIGd1ZXN0U2VjdGlvbnMuZGF0YS5ob3RlbEd1ZXN0RGV0YWlscy5pZCxcbiAgICAgICAgICAgICAgZ3Vlc3RTZWN0aW9ucy5kYXRhLCBgJHtob3RlbEd1ZXN0fSAtICR7Z3Vlc3ROYW1lfWApKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGd1ZXN0U2VjdGlvbnMuZGF0YS50cmFuc2llbnRTZWN0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgdHJhbnNpZW50TmFtZSA9IGAjJHtndWVzdFNlY3Rpb25zLmRhdGEudHJhbnNpZW50U2VjdGlvbnMudGlja2V0RGV0YWlscz8udGlja2V0TnVtfWA7XG5cbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocGFya2VyRW50aXR5U3RhdGUsIHRoaXMuZ2V0UGFya2VyRW50aXR5U3RhdGUocGFya2VyRW50aXR5U3RhdGUsIHRyYW5zaWVudE5hbWUsIGd1ZXN0U2VjdGlvbnMuZGF0YS50cmFuc2llbnRTZWN0aW9ucy50aWNrZXREZXRhaWxzPy50YWdzLFxuICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGdldFBhcmtlclR5cGVzVGV4dChQYXJrZXJUaWNrZXRUeXBlLlRyYW5zaWVudCkpLCBndWVzdFNlY3Rpb25zLmRhdGEudHJhbnNpZW50U2VjdGlvbnMudGlja2V0RGV0YWlscz8uaWQsXG4gICAgICAgICAgICAgIGd1ZXN0U2VjdGlvbnMuZGF0YS50cmFuc2llbnRTZWN0aW9ucywgYCR7dGlja2V0fSAtICR7dHJhbnNpZW50TmFtZX1gKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGd1ZXN0TmFtZSA9IGd1ZXN0U2VjdGlvbnMuZGF0YS5ndWVzdERldGFpbHM/Lmd1ZXN0TmFtZSA9PT0gTG9jYWxpemF0aW9uLmNhcmRfaG9sZGVyID9cbiAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uY2FyZF9ob2xkZXIpIDogZ3Vlc3RTZWN0aW9ucy5kYXRhLmd1ZXN0RGV0YWlscz8uZ3Vlc3ROYW1lO1xuXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHBhcmtlckVudGl0eVN0YXRlLCB0aGlzLmdldFBhcmtlckVudGl0eVN0YXRlKHBhcmtlckVudGl0eVN0YXRlLCBndWVzdE5hbWUsIGd1ZXN0U2VjdGlvbnMuZGF0YS5ndWVzdERldGFpbHM/LnRhZ3MsXG4gICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoZ2V0UGFya2VyVHlwZXNUZXh0KFBhcmtlclRpY2tldFR5cGUuR3Vlc3QpKSwgZ3Vlc3RTZWN0aW9ucy5kYXRhLmd1ZXN0RGV0YWlscy5pZCxcbiAgICAgICAgICAgICAgZ3Vlc3RTZWN0aW9ucy5kYXRhLCBgJHtndWVzdH0gLSAke2d1ZXN0TmFtZX1gKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGN0eC5wYXRjaFN0YXRlKHBhcmtlckVudGl0eVN0YXRlKTtcbiAgICAgICAgfSkpO1xuICAgICAgY2FzZSBQYXJrZXJUaWNrZXRUeXBlLk1vbnRobHk6XG4gICAgICAgIGNvbnN0IG1vbnRobHlTZWN0aW9ucyQgPSB0aGlzLm1vbnRobHlTZXJ2aWNlUHJveHkubW9udGhseURlZXBTZWFyY2goYWN0aW9uLnRpY2tldElkLCBndWlkKTtcbiAgICAgICAgcmV0dXJuIG1vbnRobHlTZWN0aW9ucyQucGlwZSh0YXAobW9udGhseVNlY3Rpb25zID0+IHtcbiAgICAgICAgICAvLyBCYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICAgICAgaWYgKGlzVmVyc2lvbkdyZWF0ZXJUaGFuRXF1YWwoc3BhcmtWZXJzaW9uLCBWRVJTSU9OXzlfMV8wKSkge1xuICAgICAgICAgICAgLy8gZW1haWwgZmllbGQgaXMgYWxyZWFkeSBvbiBDcmVkZW50aWFscyBzZWN0aW9uXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1vbnRobHlTZWN0aW9ucy5kYXRhLm1vbnRobHlDcmVkZW50aWFscy5lbWFpbCA9IG1vbnRobHlTZWN0aW9ucy5kYXRhLm1vbnRobHlQZXJzb25hbEluZm8uZW1haWw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgICAgICAgIGlmIChpc1ZlcnNpb25HcmVhdGVyVGhhbkVxdWFsKHNwYXJrVmVyc2lvbiwgVkVSU0lPTl84XzJfMCkpIHtcbiAgICAgICAgICAgIC8vIGxvZ2ljIG9jY3VycyBvbiBzZXJ2ZXJcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzVmVyc2lvbkdyZWF0ZXJUaGFuRXF1YWwoc3BhcmtWZXJzaW9uLCBWRVJTSU9OXzhfMV8wKSkge1xuICAgICAgICAgICAgLy8gQ29udmVydCBtb250aGx5U2VjdGlvbnMubW9udGhseUNyZWRlbnRpYWxzLnBsYXRlcyB0byBtb250aGx5U2VjdGlvbnMubW9udGhseUNyZWRlbnRpYWxzLnZlaGljbGVzXG4gICAgICAgICAgICBpZiAobW9udGhseVNlY3Rpb25zLmRhdGEubW9udGhseUNyZWRlbnRpYWxzLnBsYXRlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIG1vbnRobHlTZWN0aW9ucy5kYXRhLm1vbnRobHlDcmVkZW50aWFscy52ZWhpY2xlcyA9IFtdO1xuICAgICAgICAgICAgICBtb250aGx5U2VjdGlvbnMuZGF0YS5tb250aGx5Q3JlZGVudGlhbHMucGxhdGVzLm1hcChwbGF0ZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmVoaWNsZTogVmVoaWNsZXNEdG8gPSBuZXcgVmVoaWNsZXNEdG8oKTtcbiAgICAgICAgICAgICAgICB2ZWhpY2xlLnBsYXRlID0gcGxhdGU7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBtb250aGx5TmFtZSA9IGAke21vbnRobHlTZWN0aW9ucy5kYXRhLm1vbnRobHlEZXRhaWxzPy5mTmFtZX0gJHttb250aGx5U2VjdGlvbnMuZGF0YS5tb250aGx5RGV0YWlscz8ubE5hbWV9YDtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHBhcmtlckVudGl0eVN0YXRlLCB0aGlzLmdldFBhcmtlckVudGl0eVN0YXRlKHBhcmtlckVudGl0eVN0YXRlLCBtb250aGx5TmFtZSwgbW9udGhseVNlY3Rpb25zLmRhdGEubW9udGhseURldGFpbHMudGFncyxcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoZ2V0UGFya2VyVHlwZXNUZXh0KFBhcmtlclRpY2tldFR5cGUuTW9udGhseSkpLCBtb250aGx5U2VjdGlvbnMuZGF0YS5tb250aGx5RGV0YWlscy5pZCxcbiAgICAgICAgICAgIG1vbnRobHlTZWN0aW9ucy5kYXRhLCBgJHttb250aGx5fSAtICR7bW9udGhseU5hbWV9YCkpO1xuXG4gICAgICAgICAgY3R4LnBhdGNoU3RhdGUocGFya2VyRW50aXR5U3RhdGUpO1xuICAgICAgICB9KSk7XG4gICAgICBjYXNlIFBhcmtlclRpY2tldFR5cGUuUGF5bWVudDpcbiAgICAgICAgY29uc3QgcGF5bWVudFNlY3Rpb25zJCA9IHRoaXMucGF5bWVudFNlcnZpY2VQcm94eS5wYXltZW50RGVlcFNlYXJjaChhY3Rpb24udGlja2V0SWQsIGd1aWQpO1xuICAgICAgICByZXR1cm4gcGF5bWVudFNlY3Rpb25zJC5waXBlKHRhcChwYXltZW50U2VjdGlvbnMgPT4ge1xuICAgICAgICAgIGNvbnN0IHBheW1lbnROYW1lID0gYCMke3BheW1lbnRTZWN0aW9ucy5kYXRhLnBheW1lbnRzRG9jdW1lbnREYXRhLmRvY051bX1gO1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24ocGFya2VyRW50aXR5U3RhdGUsIHRoaXMuZ2V0UGFya2VyRW50aXR5U3RhdGUocGFya2VyRW50aXR5U3RhdGUsIHBheW1lbnROYW1lLCBudWxsLFxuICAgICAgICAgICAgZG9jdW1lbnQsIHBheW1lbnRTZWN0aW9ucy5kYXRhLnBheW1lbnRzRG9jdW1lbnREYXRhLmlkLCBwYXltZW50U2VjdGlvbnMuZGF0YSwgYCR7ZG9jdW1lbnR9IC0gJHtwYXltZW50TmFtZX1gKSk7XG5cbiAgICAgICAgICBjdHgucGF0Y2hTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSk7XG4gICAgICAgIH0pKTtcbiAgICAgIGNhc2UgUGFya2VyVGlja2V0VHlwZS5Db3Vwb246XG4gICAgICAgIGxldCBjb3Vwb25TZWN0aW9ucyQ6IE9ic2VydmFibGU8Q291cG9uU2VjdGlvbnNEdG9IdHRwUmVzcG9uc2VEYXRhPjtcbiAgICAgICAgLy8gQmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgICAgICBpZiAoaXNWZXJzaW9uR3JlYXRlclRoYW5FcXVhbChzcGFya1ZlcnNpb24sIFZFUlNJT05fMTBfMl8wKSkge1xuICAgICAgICAgIGNvdXBvblNlY3Rpb25zJCA9IGFjdGlvbi5zdWJUaWNrZXRJZCA/IHRoaXMuY2hhc2VyVGlja2V0U2VydmljZVByb3h5LnNpbmdsZUNvdXBvbkRlZXBTZWFyY2goYWN0aW9uLnBhcmtJZCwgYWN0aW9uLnN1YlRpY2tldElkLCBndWlkKSA6XG4gICAgICAgICAgICB0aGlzLmNoYXNlclRpY2tldFNlcnZpY2VQcm94eS5jb3Vwb25CYXRjaERlZXBTZWFyY2goYWN0aW9uLnBhcmtJZCwgYWN0aW9uLnRpY2tldElkLCBndWlkKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc1ZlcnNpb25HcmVhdGVyVGhhbkVxdWFsKHNwYXJrVmVyc2lvbiwgVkVSU0lPTl84XzRfMCkpIHtcbiAgICAgICAgICBjb3Vwb25TZWN0aW9ucyQgPSBhY3Rpb24uc3ViVGlja2V0SWQgPyB0aGlzLmNoYXNlclRpY2tldFNlcnZpY2VQcm94eS5zaW5nbGVDb3Vwb25EZWVwU2VhcmNoRGVwcmVjYXRlZChhY3Rpb24uc3ViVGlja2V0SWQsIGd1aWQpIDpcbiAgICAgICAgICAgIHRoaXMuY2hhc2VyVGlja2V0U2VydmljZVByb3h5LmNvdXBvbkJhdGNoRGVlcFNlYXJjaERlcHJlY2F0ZWQoYWN0aW9uLnRpY2tldElkLCBndWlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb3Vwb25TZWN0aW9ucyQucGlwZSh0YXAoY291cG9uU2VjdGlvbnMgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvdXBvbk5hbWUgPSBgIyR7Y291cG9uU2VjdGlvbnMuZGF0YS5jb3Vwb25EZXRhaWxzLmJhdGNoTmFtZX1gO1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24ocGFya2VyRW50aXR5U3RhdGUsIHRoaXMuZ2V0UGFya2VyRW50aXR5U3RhdGUocGFya2VyRW50aXR5U3RhdGUsIGNvdXBvbk5hbWUsIG51bGwsXG4gICAgICAgICAgICBjb3Vwb24sIGNvdXBvblNlY3Rpb25zLmRhdGEuY291cG9uRGV0YWlscy5pZCwgY291cG9uU2VjdGlvbnMuZGF0YSwgYCR7Y291cG9ufSAtICR7Y291cG9uTmFtZX1gKSk7XG5cbiAgICAgICAgICBjdHgucGF0Y2hTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSk7XG4gICAgICAgIH0pKTtcbiAgICAgIGNhc2UgUGFya2VyVGlja2V0VHlwZS5TdGlja2VyOlxuICAgICAgICBsZXQgc3RpY2tlclNlY3Rpb25zJDogT2JzZXJ2YWJsZTxTdGlja2VyU2VjdGlvbnNEdG9IdHRwUmVzcG9uc2VEYXRhPjtcbiAgICAgICAgLy8gQmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgICAgICBpZiAoaXNWZXJzaW9uR3JlYXRlclRoYW5FcXVhbChzcGFya1ZlcnNpb24sIFZFUlNJT05fMTBfMl8wKSkge1xuICAgICAgICAgIHN0aWNrZXJTZWN0aW9ucyQgPSBhY3Rpb24uc3ViVGlja2V0SWQgPyB0aGlzLmNoYXNlclRpY2tldFNlcnZpY2VQcm94eS5zaW5nbGVTdGlja2VyRGVlcFNlYXJjaChhY3Rpb24ucGFya0lkLCBhY3Rpb24uc3ViVGlja2V0SWQsIGd1aWQpIDpcbiAgICAgICAgICAgIHRoaXMuY2hhc2VyVGlja2V0U2VydmljZVByb3h5LnN0aWNrZXJCYXRjaERlZXBTZWFyY2goYWN0aW9uLnBhcmtJZCwgYWN0aW9uLnRpY2tldElkLCBndWlkKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc1ZlcnNpb25HcmVhdGVyVGhhbkVxdWFsKHNwYXJrVmVyc2lvbiwgVkVSU0lPTl84XzRfMCkpIHtcbiAgICAgICAgICBzdGlja2VyU2VjdGlvbnMkID0gYWN0aW9uLnN1YlRpY2tldElkID8gdGhpcy5jaGFzZXJUaWNrZXRTZXJ2aWNlUHJveHkuc2luZ2xlU3RpY2tlckRlZXBTZWFyY2hEZXByZWNhdGVkKGFjdGlvbi5zdWJUaWNrZXRJZCwgZ3VpZCkgOlxuICAgICAgICAgICAgdGhpcy5jaGFzZXJUaWNrZXRTZXJ2aWNlUHJveHkuc3RpY2tlckJhdGNoRGVlcFNlYXJjaERlcHJlY2F0ZWQoYWN0aW9uLnRpY2tldElkLCBndWlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdGlja2VyU2VjdGlvbnMkLnBpcGUodGFwKHN0aWNrZXJTZWN0aW9ucyA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RpY2tlck5hbWUgPSBgIyR7c3RpY2tlclNlY3Rpb25zLmRhdGEuc3RpY2tlckRldGFpbHMuYmF0Y2hOYW1lfWA7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihwYXJrZXJFbnRpdHlTdGF0ZSwgdGhpcy5nZXRQYXJrZXJFbnRpdHlTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSwgc3RpY2tlck5hbWUsIG51bGwsXG4gICAgICAgICAgICBzdGlja2VyLCBzdGlja2VyU2VjdGlvbnMuZGF0YS5zdGlja2VyRGV0YWlscy5pZCwgc3RpY2tlclNlY3Rpb25zLmRhdGEsIGAke3N0aWNrZXJ9IC0gJHtzdGlja2VyTmFtZX1gKSk7XG5cbiAgICAgICAgICBjdHgucGF0Y2hTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSk7XG4gICAgICAgIH0pKTtcbiAgICAgIGNhc2UgUGFya2VyVGlja2V0VHlwZS5BdWRpdDpcbiAgICAgICAgbGV0IGF1ZGl0U2VjdGlvbnMkOiBPYnNlcnZhYmxlPEF1ZGl0U2VjdGlvbnNEdG9IdHRwUmVzcG9uc2VEYXRhPjtcbiAgICAgICAgYXVkaXRTZWN0aW9ucyQgPSB0aGlzLmF1ZGl0U2VydmljZVByb3h5LmdldEF1ZGl0RGVlcFNlYXJjaChhY3Rpb24udGlja2V0SWQpO1xuXG4gICAgICAgIHJldHVybiBhdWRpdFNlY3Rpb25zJC5waXBlKHRhcChhdWRpdFNlY3Rpb25zID0+IHtcbiAgICAgICAgICBjb25zdCBhdWRpdE5hbWUgPSBgIyR7YXVkaXRTZWN0aW9ucy5kYXRhLmNoYW5nZXNEZXRhaWxzLmVudGl0eU5hbWV9YDtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHBhcmtlckVudGl0eVN0YXRlLCB0aGlzLmdldFBhcmtlckVudGl0eVN0YXRlKHBhcmtlckVudGl0eVN0YXRlLCBhdWRpdE5hbWUsIG51bGwsXG4gICAgICAgICAgICBhdWRpdCwgYXVkaXRTZWN0aW9ucy5kYXRhLmNoYW5nZXNEZXRhaWxzLmlkLCBhdWRpdFNlY3Rpb25zLmRhdGEsIGAke2F1ZGl0fSAtICR7YXVkaXROYW1lfWApKTtcbiAgICAgICAgICBjdHgucGF0Y2hTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSk7XG4gICAgICAgIH0pKTtcblxuICAgICAgY2FzZSBQYXJrZXJUaWNrZXRUeXBlLkFjY291bnQ6XG4gICAgICAgIGNvbnN0IGFjY291bnRTZWN0aW9ucyQgPSB0aGlzLmFjY291bnRTZXJ2aWNlUHJveHkuYWNjb3VudERlZXBTZWFyY2goYWN0aW9uLnRpY2tldElkLCBndWlkKTtcblxuICAgICAgICByZXR1cm4gYWNjb3VudFNlY3Rpb25zJC5waXBlKHRhcChhY2NvdW50U2VjdGlvbnMgPT4ge1xuICAgICAgICAgIGNvbnN0IGFjY291bnROYW1lID0gYCMke2FjY291bnRTZWN0aW9ucy5kYXRhLmFjY291bnREZXRhaWxzLmFjY291bnROYW1lfWA7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihwYXJrZXJFbnRpdHlTdGF0ZSwgdGhpcy5nZXRQYXJrZXJFbnRpdHlTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSwgYWNjb3VudE5hbWUsIG51bGwsXG4gICAgICAgICAgICBhY2NvdW50LCBhY2NvdW50U2VjdGlvbnMuZGF0YS5hY2NvdW50RGV0YWlscy5pZCwgYWNjb3VudFNlY3Rpb25zLmRhdGEsIGAke2FjY291bnR9IC0gJHthY2NvdW50TmFtZX1gKSk7XG4gICAgICAgICAgY3R4LnBhdGNoU3RhdGUocGFya2VyRW50aXR5U3RhdGUpO1xuICAgICAgICB9KSk7XG5cbiAgICAgIGNhc2UgUGFya2VyVGlja2V0VHlwZS5TdWJBY2NvdW50OlxuICAgICAgICBjb25zdCBzdWJBY2NvdW50U2VjdGlvbnMkID0gdGhpcy5hY2NvdW50U2VydmljZVByb3h5LnN1YkFjY291bnREZWVwU2VhcmNoKGFjdGlvbi50aWNrZXRJZCwgZ3VpZCk7XG5cbiAgICAgICAgcmV0dXJuIHN1YkFjY291bnRTZWN0aW9ucyQucGlwZSh0YXAoc3ViQWNjb3VudFNlY3Rpb25zID0+IHtcbiAgICAgICAgICBjb25zdCBzdWJBY2NvdW50TmFtZSA9IGAjJHtzdWJBY2NvdW50U2VjdGlvbnMuZGF0YS5zdWJBY2NvdW50RGV0YWlscy5zdWJBY2NvdW50TmFtZX1gO1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24ocGFya2VyRW50aXR5U3RhdGUsIHRoaXMuZ2V0UGFya2VyRW50aXR5U3RhdGUocGFya2VyRW50aXR5U3RhdGUsIHN1YkFjY291bnROYW1lLCBudWxsLFxuICAgICAgICAgICAgc3ViQWNjb3VudCwgc3ViQWNjb3VudFNlY3Rpb25zLmRhdGEuc3ViQWNjb3VudERldGFpbHMuaWQsIHN1YkFjY291bnRTZWN0aW9ucy5kYXRhLCBgJHtzdWJBY2NvdW50fSAtICR7c3ViQWNjb3VudE5hbWV9YCkpO1xuICAgICAgICAgIGN0eC5wYXRjaFN0YXRlKHBhcmtlckVudGl0eVN0YXRlKTtcbiAgICAgICAgfSkpO1xuXG4gICAgICBjYXNlIFBhcmtlclRpY2tldFR5cGUuQWNjZXNzUHJvZmlsZU1vbnRobHlBbmRHdWVzdDpcbiAgICAgICAgY29uc3QgYWNjZXNzUHJvZmlsZU1vbnRobHlBbmRHdWVzdCQgPSB0aGlzLmFjY2Vzc1Byb2ZpbGVTZXJ2aWNlUHJveHkuZ2V0QWNjZXNzUHJvZmlsZU1vbnRobHlBbmRHdWVzdERlZXBTZWFyY2goYWN0aW9uLnBhcmtJZCwgYWN0aW9uLnRpY2tldElkLCBndWlkKTtcbiAgICAgICAgcmV0dXJuIGFjY2Vzc1Byb2ZpbGVNb250aGx5QW5kR3Vlc3QkLnBpcGUodGFwKGFjY2Vzc1Byb2ZpbGVNb250aGx5QW5kR3Vlc3RTZWN0aW9ucyA9PiB7XG4gICAgICAgICAgY29uc3QgYWNjZXNzUHJvZmlsZU1vbnRobHlBbmRHdWVzdE5hbWUgPSBgJHthY2Nlc3NQcm9maWxlTW9udGhseUFuZEd1ZXN0U2VjdGlvbnMuZGF0YS5hY2Nlc3NQcm9maWxlRGV0YWlscy5uYW1lfWA7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihwYXJrZXJFbnRpdHlTdGF0ZSwgdGhpcy5nZXRQYXJrZXJFbnRpdHlTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSwgYWNjZXNzUHJvZmlsZU1vbnRobHlBbmRHdWVzdE5hbWUsIG51bGwsXG4gICAgICAgICAgICBhY2Nlc3NQcm9maWxlLCBhY2Nlc3NQcm9maWxlTW9udGhseUFuZEd1ZXN0U2VjdGlvbnMuZGF0YS5hY2Nlc3NQcm9maWxlRGV0YWlscy5pZCwgYWNjZXNzUHJvZmlsZU1vbnRobHlBbmRHdWVzdFNlY3Rpb25zLmRhdGEsIGAke2FjY2Vzc1Byb2ZpbGVNb250aGx5QW5kR3Vlc3ROYW1lfWApKTtcbiAgICAgICAgICBjdHgucGF0Y2hTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSk7XG4gICAgICAgIH0pKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcGFya2VyRW50aXR5U3RhdGUuZGV0YWlscyA9IHt9O1xuICAgICAgICBjdHgucGF0Y2hTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oTG9hZFBhcmtlcnNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkUGFya2Vyc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrZXJTdGF0ZU1vZGVsPiwgeyBwYXJrSWQsIHR5cGUsIHNlYXJjaFZhbHVlLCBpc0x1Y2t5TFBSU2VhcmNoLCB0YWJsZU5hbWUgfTogTG9hZFBhcmtlcnNBY3Rpb24pIHtcbiAgICBjb25zdCBndWlkID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmd1aWQpO1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNlYXJjaDogbmV3IFBhcmtlclNlYXJjaFRlcm0odHlwZSwgc2VhcmNoVmFsdWUsIGlzTHVja3lMUFJTZWFyY2gsIHRhYmxlTmFtZSksXG4gICAgICBzZWFyY2hSZXN1bHRzOiBudWxsLFxuICAgIH0pO1xuXG4gICAgbGV0IGRhdGEkOiBPYnNlcnZhYmxlPGFueT47XG4gICAgc3dpdGNoICh0eXBlKSB7XG5cbiAgICAgIGNhc2UgUGFya2VyVGlja2V0VHlwZS5UcmFuc2llbnQ6XG4gICAgICAgIGNvbnN0IGZyb21TZWNvbmRzID0gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBmZXRjaEF0dGFjaGFibGVPbmx5VGlja2V0cyA9IGZhbHNlO1xuICAgICAgICBkYXRhJCA9IHRoaXMudHJhbnNpZW50U2VydmljZVByb3h5LnRyYW5zaW5ldFNoYWxsb3dTZWFyY2gocGFya0lkLCBzZWFyY2hWYWx1ZSwgZnJvbVNlY29uZHMsIGZldGNoQXR0YWNoYWJsZU9ubHlUaWNrZXRzLCBpc0x1Y2t5TFBSU2VhcmNoLCBndWlkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFBhcmtlclRpY2tldFR5cGUuRVZvdWNoZXI6XG4gICAgICAgIGRhdGEkID0gdGhpcy5ldm91Y2hlclNlcnZpY2VQcm94eS5lVm91Y2hlclNoYWxsb3dTZWFyY2gocGFya0lkLCBzZWFyY2hWYWx1ZSwgZ3VpZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQYXJrZXJUaWNrZXRUeXBlLkd1ZXN0OlxuICAgICAgY2FzZSBQYXJrZXJUaWNrZXRUeXBlLkhvdGVsR3Vlc3Q6XG4gICAgICAgIGRhdGEkID0gdGhpcy5ndWVzdFNlcnZpY2VQcm94eS5ndWVzdFNoYWxsb3dTZWFyY2gocGFya0lkLCBzZWFyY2hWYWx1ZSwgZ3VpZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQYXJrZXJUaWNrZXRUeXBlLk1vbnRobHk6XG4gICAgICAgIGRhdGEkID0gdGhpcy5tb250aGx5U2VydmljZVByb3h5Lm1vbnRobHlTaGFsbG93U2VhcmNoKHBhcmtJZCwgc2VhcmNoVmFsdWUsIGd1aWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUGFya2VyVGlja2V0VHlwZS5QYXltZW50OlxuICAgICAgICBkYXRhJCA9IHRoaXMucGF5bWVudFNlcnZpY2VQcm94eS5wYXltZW50U2hhbGxvd1NlYXJjaChwYXJrSWQsIHNlYXJjaFZhbHVlLCBndWlkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFBhcmtlclRpY2tldFR5cGUuQ2FyZE9uRmlsZTpcbiAgICAgICAgZGF0YSQgPSB0aGlzLnNwZWNpYWxUcmFuc2llbnRTZXJ2aWNlUHJveHkuZ2V0U3BlY2lhbFRyYW5zaWVudChwYXJrSWQsIHNlYXJjaFZhbHVlLCB0YWJsZU5hbWUsIGd1aWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGRhdGEkID0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YSQ/LnBpcGUodGFwKGRhdGEgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBzZWFyY2hSZXN1bHRzOiBkYXRhPy5kYXRhLFxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkTG9jYXRlVGlja2V0U2VhcmNoQWN0aW9uKVxuICBvbkxvYWRMb2NhdGVUaWNrZXRTZWFyY2hBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya2VyU3RhdGVNb2RlbD4sIHsgZ3VpZCwgcGFya0lkLCBzZWFyY2hWYWx1ZSB9OiBMb2FkTG9jYXRlVGlja2V0U2VhcmNoQWN0aW9uKSB7XG4gICAgY3R4LmRpc3BhdGNoKENsZWFyTG9jYXRlVGlja2V0U2VhcmNoQWN0aW9uKTtcblxuICAgIGNvbnN0IGZyb21TZWNvbmRzID0gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGZldGNoQXR0YWNoYWJsZU9ubHlUaWNrZXRzID0gdHJ1ZTtcbiAgICBjb25zdCBpc0x1Y2t5TFBSU2VhcmNoID0gZmFsc2U7XG5cbiAgICByZXR1cm4gdGhpcy50cmFuc2llbnRTZXJ2aWNlUHJveHkudHJhbnNpbmV0U2hhbGxvd1NlYXJjaChwYXJrSWQsIHNlYXJjaFZhbHVlLCBmcm9tU2Vjb25kcywgZmV0Y2hBdHRhY2hhYmxlT25seVRpY2tldHMsIGlzTHVja3lMUFJTZWFyY2gsIGd1aWQpLnBpcGUoXG4gICAgICB0YXAoZGF0YSA9PiB7XG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICBsb2NhdGVTZWFyY2hSZXN1bHRzOiBkYXRhLmRhdGEsXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkTG9jYXRlZFRpY2tldEFjdGlvbilcbiAgb25Mb2FkTG9jYXRlZFRpY2tldEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrZXJTdGF0ZU1vZGVsPiwgeyBndWlkLCBwYXJrSWQsIHRpY2tldElkIH06IExvYWRMb2NhdGVkVGlja2V0QWN0aW9uKSB7XG4gICAgY3R4LmRpc3BhdGNoKENsZWFyTG9jYXRlZFRpY2tldEFjdGlvbik7XG5cbiAgICByZXR1cm4gdGhpcy50cmFuc2llbnRTZXJ2aWNlUHJveHkuZ2V0TG9jYXRlVGlja2V0KHBhcmtJZCwgdGlja2V0SWQsIGd1aWQpLnBpcGUoXG4gICAgICB0YXAoZGF0YSA9PiB7XG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICBsb2NhdGVkVGlja2V0OiBkYXRhLmRhdGEsXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkVGlja2V0TnVtUGFya2Vyc0FjdGlvbilcbiAgb25Mb2FkVGlja2V0TnVtUGFya2Vyc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkVGlja2V0TnVtUGFya2Vyc0FjdGlvbikge1xuICAgIGNvbnN0IGd1aWQgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZ3VpZCk7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgc2VhcmNoOiBuZXcgUGFya2VyU2VhcmNoVGVybShhY3Rpb24udHlwZSwgYWN0aW9uLnRpY2tldE51bT8udG9TdHJpbmcoKSksXG4gICAgICBzZWFyY2hSZXN1bHRzOiBudWxsLFxuICAgIH0pO1xuXG4gICAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgICAgY2FzZSBQYXJrZXJUaWNrZXRUeXBlLlRyYW5zaWVudDpcbiAgICAgICAgY29uc3QgZmV0Y2hBdHRhY2hhYmxlT25seVRpY2tldHMgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgaXNMdWNreUxQUlNlYXJjaCA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zaWVudFNlcnZpY2VQcm94eS50cmFuc2luZXRTaGFsbG93U2VhcmNoKGFjdGlvbi5wYXJrSWQsIGFjdGlvbi50aWNrZXROdW0/LnRvU3RyaW5nKCksXG4gICAgICAgICAgYWN0aW9uLmV2ZW50VGltZSwgZmV0Y2hBdHRhY2hhYmxlT25seVRpY2tldHMsIGlzTHVja3lMUFJTZWFyY2gsIGd1aWQpLnBpcGUoXG4gICAgICAgICAgICB0YXAodHJhbnNpZW50U2hhbGxvd0RhdGEgPT4ge1xuICAgICAgICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgICAgICAgc2VhcmNoUmVzdWx0czogdHJhbnNpZW50U2hhbGxvd0RhdGEuZGF0YSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG5cbiAgICAgIGNhc2UgUGFya2VyVGlja2V0VHlwZS5QYXltZW50OlxuICAgICAgICBjb25zdCByZWFkZXJJZCA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoUGFya01hbmFnZXJTdGF0ZS5zZWxlY3RlZERldmljZVN0YXR1cyk/LmNvbW1JRDtcblxuICAgICAgICAvLyBBZGQgZmllbGRzIHRvIHF1ZXJ5IGJ5XG4gICAgICAgIGNvbnN0IHNlYXJjaEZpZWxkU2VsZWN0b3JzOiBTZWFyY2hGaWVsZFNlbGVjdG9yID0gYWN0aW9uLmV2ZW50VHlwZUlkID09PSBUeXBlQ2FzdERldmljZUV2ZW50LlN0aWNrZXJzID9cbiAgICAgICAgICBTZWFyY2hGaWVsZFNlbGVjdG9yLlN0aWNrZXJOdW0gOiBTZWFyY2hGaWVsZFNlbGVjdG9yLkNyZWRpdENhcmRMYXN0NDtcblxuICAgICAgICByZXR1cm4gdGhpcy5wYXltZW50U2VydmljZVByb3h5LnBheW1lbnRTaGFsbG93U2VhcmNoc0J5RmllbGRzKGFjdGlvbi5wYXJrSWQsIGFjdGlvbi50aWNrZXROdW0/LnRvU3RyaW5nKCksXG4gICAgICAgICAgcmVhZGVySWQsIGFjdGlvbi5ldmVudFRpbWUsIHNlYXJjaEZpZWxkU2VsZWN0b3JzLCBndWlkKS5waXBlKFxuICAgICAgICAgICAgdGFwKHBheW1lbnRTaGFsbG93RGF0YSA9PiB7XG4gICAgICAgICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICAgICAgICBzZWFyY2hSZXN1bHRzOiBwYXltZW50U2hhbGxvd0RhdGEuZGF0YSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBFTVBUWTsgLy8gUmV0dXJuIGVtcHR5IG9ic2VydmFibGUgZm9yIGRlZmF1bHQgY2FzZVxuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oU2V0U2VhcmNoVGVybUFjdGlvbilcbiAgb25TZXRTZWFyY2hUZXJtQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtlclN0YXRlTW9kZWw+LCB7IHR5cGUsIHZhbHVlLCBpc0x1Y2t5TFBSU2VhcmNoLCB0YWJsZU5hbWUgfTogU2V0U2VhcmNoVGVybUFjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHsgc2VhcmNoOiBuZXcgUGFya2VyU2VhcmNoVGVybSh0eXBlLCB2YWx1ZSwgaXNMdWNreUxQUlNlYXJjaCwgdGFibGVOYW1lKSB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJTZWFyY2hUZXJtQWN0aW9uKVxuICBvbkNsZWFyU2VhcmNoVGVybUFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrZXJTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNlYXJjaDoge1xuICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgdHlwZTogY3R4LmdldFN0YXRlKCkuc2VhcmNoLnR5cGUsXG4gICAgICAgIGlzTHVja3lMUFJTZWFyY2g6IGZhbHNlLFxuICAgICAgICB0bjogJycsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhclNlYXJjaFJlc3VsdHNBY3Rpb24pXG4gIG9uQ2xlYXJTZWFyY2hSZXN1bHRzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtlclN0YXRlTW9kZWw+KSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgc2VhcmNoUmVzdWx0czogbnVsbCxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJMb2NhdGVUaWNrZXRTZWFyY2hBY3Rpb24pXG4gIG9uQ2xlYXJMb2NhdGVUaWNrZXRTZWFyY2hBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya2VyU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBsb2NhdGVTZWFyY2hSZXN1bHRzOiBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhckxvY2F0ZWRUaWNrZXRBY3Rpb24pXG4gIG9uQ2xlYXJMb2NhdGVkVGlja2V0QWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtlclN0YXRlTW9kZWw+KSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgbG9jYXRlZFRpY2tldDogbnVsbCxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJTcGVjaWFsVHJhbnNpZW50VGFibGVzQWN0aW9uKVxuICBvbkNsZWFyU3BlY2lhbFRyYW5zaWVudFRhYmxlc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrZXJTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNwZWNpYWxUcmFuc2llbnRUYWJsZXM6IFtdLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihVcGRhdGVEb2N1bWVudEFjdGlvbilcbiAgb25VcGRhdGVEb2N1bWVudEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrZXJTdGF0ZU1vZGVsPiwgeyBkYXRhIH06IFVwZGF0ZURvY3VtZW50QWN0aW9uKSB7XG4gICAgY29uc3QgZGV0YWlsczogVHJhbnNpZW50U2VjdGlvbnNEdG8gfCBQYXltZW50U2VjdGlvbnNEdG8gPSBjdHguZ2V0U3RhdGUoKS5kZXRhaWxzO1xuICAgIGxldCBkb2NEZXRhaWxzOiBQYXltZW50c0RvY3VtZW50VGFibGVEYXRhRHRvO1xuICAgIGNvbnN0IHBheW1lbnREZXRhaWxzID0gKGRldGFpbHMgYXMgVHJhbnNpZW50U2VjdGlvbnNEdG8pPy5wYXltZW50RGV0YWlscztcbiAgICBpZiAocGF5bWVudERldGFpbHMpIHtcbiAgICAgIGRvY0RldGFpbHMgPSBwYXltZW50RGV0YWlscy5kYXRhLm1hcChkID0+XG4gICAgICAgIGQuZGF0YS5maW5kKGRkID0+IGRkLmRvY0RldGFpbHNJZCA9PSBkYXRhLmRvY0RldGFpbHNJZCAmJiBkZC5wYXJrSWQgPT0gZGF0YS5wYXJrSWQpKVswXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcGF5bWVudERldGFpbHMgPSAoZGV0YWlscyBhcyBQYXltZW50U2VjdGlvbnNEdG8pLnBheW1lbnRzRG9jdW1lbnREYXRhO1xuICAgICAgaWYgKHBheW1lbnREZXRhaWxzKSB7XG4gICAgICAgIGRvY0RldGFpbHMgPSBwYXltZW50RGV0YWlscy5kYXRhLmZpbmQoZGQgPT4gZGQuZG9jRGV0YWlsc0lkID09IGRhdGEuZG9jRGV0YWlsc0lkICYmIGRkLnBhcmtJZCA9PSBkYXRhLnBhcmtJZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZG9jRGV0YWlscy5jb21wYW55SUQgPSBkYXRhLmNvbXBhbnlJRDtcbiAgICBkb2NEZXRhaWxzLnN1YkNvbXBhbnlJRCA9IGRhdGEuc3ViQ29tcGFueUlEO1xuICAgIGRvY0RldGFpbHMuc21hcnRQYXltZW50VHlwZSA9IGRhdGEuc21hcnRQYXltZW50VHlwZTtcblxuICAgIGNvbnN0IGNsb25lID0gY2xvbmVEZWVwKGRldGFpbHMpO1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGRldGFpbHM6IGNsb25lLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihVcGRhdGVUaWNrZXRQbGF0ZUlkQWN0aW9uKVxuICBvblVwZGF0ZVRpY2tldFBsYXRlSWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya2VyU3RhdGVNb2RlbD4sIHsgcGxhdGVJZCB9OiBVcGRhdGVUaWNrZXRQbGF0ZUlkQWN0aW9uKSB7XG4gICAgY29uc3QgZGV0YWlscyA9IGN0eC5nZXRTdGF0ZSgpLmRldGFpbHM7XG4gICAgZGV0YWlscy50aWNrZXREZXRhaWxzLnBsYXRlSUQgPSBwbGF0ZUlkO1xuXG4gICAgY29uc3QgY2xvbmUgPSBjbG9uZURlZXAoZGV0YWlscyk7XG5cbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBkZXRhaWxzOiBjbG9uZSxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oUHJpbnRSZWNlaXB0QWN0aW9uKVxuICBvblByaW50UmVjZWlwdEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBQcmludFJlY2VpcHRBY3Rpb24pIHtcbiAgICBjb25zdCBndWlkID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmd1aWQpO1xuICAgIGNvbnN0IGRvY3VtZW50JCA9IHRoaXMuZmlsZVNlcnZpY2VQcm94eS5jcmVhdGVSZWNlaXB0KGFjdGlvbi5lbnRpdHlOYW1lLCBhY3Rpb24ucGF5bWVudElkLCBudWxsLCBhY3Rpb24ucGFya0lkLCBndWlkKTtcbiAgICBjb25zdCBtZXNzYWdlSW5mbzogTWVzc2FnZUluZm8gPSB7XG4gICAgICBkdXJhdGlvbjogRHVyYXRpb25NZXNzYWdlQmFyLmRpc3BsYXlDb250aW51b3VzbHksXG4gICAgICBtZXNzYWdlUGFyYW1zOiB7XG4gICAgICAgIGVudGl0eTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24ucmVjZWlwdClcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIGRvY3VtZW50JC5zdWJzY3JpYmUoKHJlczogR2VuZXJhdGVGaWxlUmVzcG9uc2VEdG9IdHRwUmVzcG9uc2VEYXRhKSA9PiB7XG4gICAgICBjb25zdCBub3RpZmljYXRpb25TdWJzY3JpcHRpb25EdG8gPSB0aGlzLm5vdGlmaWNhdGlvbkV2ZW50U2VydmljZS5nZXROb3RpZmljYXRpb25TdWJzY3JpcHRpb25zRW50aXR5KCk7XG4gICAgICBub3RpZmljYXRpb25TdWJzY3JpcHRpb25EdG8uaWRlbnRpZmllciA9IHJlcy5kYXRhPy5pZGVudGlmaWVyO1xuICAgICAgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uRHRvLnR5cGUgPSBOb3RpZmljYXRpb25FdmVudFR5cGUuUmVjZWlwdEdlbmVyYXRlZDtcbiAgICAgIG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbkR0by51bnN1YnNjcmliZSA9IGZhbHNlO1xuICAgICAgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uRHRvLmd1aWQgPSBndWlkO1xuICAgICAgdGhpcy5zaWduYWxSLnN1YnNjcmliZUZvck5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uRHRvKTtcblxuICAgICAgaWYgKGFjdGlvbi5lbWFpbCkge1xuICAgICAgICBjb25zdCByZXF1ZXN0ZWRSZWNlaXB0TWFwID0gY3R4LmdldFN0YXRlKCkucmVxdWVzdGVkUmVjZWlwdE1hcDtcbiAgICAgICAgcmVxdWVzdGVkUmVjZWlwdE1hcFtyZXMuZGF0YT8uaWRlbnRpZmllcl0gPSB7XG4gICAgICAgICAgZW1haWw6IGFjdGlvbi5lbWFpbCxcbiAgICAgICAgICBlbnRpdHlOYW1lOiBhY3Rpb24uZW50aXR5TmFtZSxcbiAgICAgICAgICBlbnRpdHlJZDogYWN0aW9uLnBheW1lbnRJZCxcbiAgICAgICAgICBndWlkLFxuICAgICAgICAgIHBhcmtJZDogYWN0aW9uLnBhcmtJZFxuICAgICAgICB9O1xuICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgcmVxdWVzdGVkUmVjZWlwdE1hcCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmluZm8oTG9jYWxpemF0aW9uLmVudGl0eV9pc19iZWluZ19wcm9jY2Vzc2VkLCBtZXNzYWdlSW5mbyk7XG4gICAgfSwgZXJyID0+IHtcbiAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IoTG9jYWxpemF0aW9uLmVudGl0eV9mYWlsZWRfdG9fZ2VuZXJhdGUsIG1lc3NhZ2VJbmZvKTtcbiAgICB9KTtcbiAgfVxuXG5cbiAgQEFjdGlvbihSZWNlaXB0R2VuZXJhdGVkQWN0aW9uKVxuICBvblJlY2VpcHRHZW5lcmF0ZWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogUmVjZWlwdEdlbmVyYXRlZEFjdGlvbikge1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbkR0byA9IHRoaXMubm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlLmdldE5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbnNFbnRpdHkoKTtcbiAgICBub3RpZmljYXRpb25TdWJzY3JpcHRpb25EdG8uaWRlbnRpZmllciA9IGFjdGlvbi5pZGVudGlmaWVyO1xuICAgIG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbkR0by50eXBlID0gTm90aWZpY2F0aW9uRXZlbnRUeXBlLlJlY2VpcHRHZW5lcmF0ZWQ7XG4gICAgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uRHRvLnVuc3Vic2NyaWJlID0gdHJ1ZTtcbiAgICB0aGlzLnNpZ25hbFIuc3Vic2NyaWJlRm9yTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25TdWJzY3JpcHRpb25EdG8pO1xuXG4gICAgY29uc3QgbWVzc2FnZUluZm86IE1lc3NhZ2VJbmZvID0ge1xuICAgICAgbWVzc2FnZVBhcmFtczogeyBlbnRpdHk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLnJlY2VpcHQpIH1cbiAgICB9O1xuXG4gICAgaWYgKGFjdGlvbi5ub3RpZmljYXRpb25EdG8uaXNTdWNjZXNzKSB7XG4gICAgICBjb25zdCByZWNlaXB0JCA9IHRoaXMuZmlsZVNlcnZpY2VQcm94eS5mZXRjaFJlY2VpcHQoYWN0aW9uLm5vdGlmaWNhdGlvbkR0by5uYW1lLCBhY3Rpb24uZ3VpZCk7XG5cbiAgICAgIHJldHVybiByZWNlaXB0JC5waXBlKHRhcCh7XG4gICAgICAgIG5leHQ6IHJlY2VpcHQgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlcXVlc3RlZFJlY2VpcHRNYXAgPSBjdHguZ2V0U3RhdGUoKS5yZXF1ZXN0ZWRSZWNlaXB0TWFwO1xuICAgICAgICAgIGlmIChyZXF1ZXN0ZWRSZWNlaXB0TWFwW2FjdGlvbi5pZGVudGlmaWVyXT8uZW1haWwpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgZW1haWwsIGVudGl0eU5hbWUsIGVudGl0eUlkLCBndWlkLCBwYXJrSWQgfSA9IHJlcXVlc3RlZFJlY2VpcHRNYXBbYWN0aW9uLmlkZW50aWZpZXJdO1xuICAgICAgICAgICAgdGhpcy5zZW5kUmVjZWlwdFRvTWFpbChjdHgsIGVtYWlsLCBlbnRpdHlOYW1lLCBlbnRpdHlJZCwgZ3VpZCwgcGFya0lkLCByZWNlaXB0LCBhY3Rpb24ubm90aWZpY2F0aW9uRHRvLm5hbWUpO1xuICAgICAgICAgICAgZGVsZXRlIHJlcXVlc3RlZFJlY2VpcHRNYXBbYWN0aW9uLmlkZW50aWZpZXJdO1xuICAgICAgICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICAgICAgICByZXF1ZXN0ZWRSZWNlaXB0TWFwLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZpbGVTZXJ2aWNlLmRvd25sb2FkRmlsZShyZWNlaXB0LCBGaWxlR2VuZXJhdGVNZXRob2Qudmlld1BERiwgTG9jYWxpemF0aW9uLnJlY2VpcHQpKSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLnN1Y2Nlc3MoTG9jYWxpemF0aW9uLmVudGl0eV9zdWNjZXNzX3RvX2dlbmVyYXRlLCBtZXNzYWdlSW5mbyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IoYEZhaWxlZCB3aGlsZSB0cnlpbmcgdG8gZmV0Y2ggcmVjZWlwdCAke2FjdGlvbi5ub3RpZmljYXRpb25EdG8ubmFtZX1gKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKGBGYWlsZWQgdG8gZ2VuZXJhdGUgcmVjZWlwdCAke2FjdGlvbi5ub3RpZmljYXRpb25EdG8ubmFtZX1gKTtcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKEdldFNwZWNpYWxUcmFuc2llbnRUYWJsZXNBY3Rpb24pXG4gIE9uU3BlY2lhbFRyYW5zaWVudFRhYmxlc1RhYmxlc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBHZXRTcGVjaWFsVHJhbnNpZW50VGFibGVzQWN0aW9uKSB7XG4gICAgY29uc3Qgc3BlY2lhbFRyYW5zaWVudFRhYmxlcyA9IGN0eC5nZXRTdGF0ZSgpLnNwZWNpYWxUcmFuc2llbnRUYWJsZXM7XG4gICAgaWYgKHNwZWNpYWxUcmFuc2llbnRUYWJsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBnZXRUYWJsZXMgPSB0aGlzLnNwZWNpYWxUcmFuc2llbnRTZXJ2aWNlUHJveHkuZ2V0VGFibGVzKGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5ndWlkKTtcbiAgICAgIHJldHVybiBnZXRUYWJsZXMucGlwZSh0YXAoc3BlY2lhbFRyYW5zaWVudFRhYmxlcyA9PiB7XG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICBzcGVjaWFsVHJhbnNpZW50VGFibGVzOiBzcGVjaWFsVHJhbnNpZW50VGFibGVzLmRhdGFcbiAgICAgICAgfSk7XG4gICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgQEFjdGlvbihSZWxvYWRQYXJrZXJBY3Rpb24pXG4gIG9uUmVsb2FkUGFya2VyQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtlclN0YXRlTW9kZWw+LCBhY3Rpb246IFJlbG9hZFBhcmtlckFjdGlvbikge1xuICAgIGNvbnN0IHBhcmtlclBhcmFtcyA9IGN0eC5nZXRTdGF0ZSgpLnBhcmtlclBhcmFtcztcbiAgICBjb25zdCByZWxvYWRTaWRlQmFyID0gcGFya2VyUGFyYW1zLnNlYXJjaFZhbHVlICE9PSB1bmRlZmluZWQgfHwgcGFya2VyUGFyYW1zLnRpY2tldElkICE9PSBudWxsO1xuXG4gICAgaWYgKHJlbG9hZFNpZGVCYXIpIHtcbiAgICAgIGNvbnN0IHJlbG9hZFBhcmtlclNlYXJjaFJlc3VsdCA9IHBhcmtlclBhcmFtcy50aWNrZXRJZCA9PT0gbnVsbDtcblxuICAgICAgaWYgKHJlbG9hZFBhcmtlclNlYXJjaFJlc3VsdCkge1xuICAgICAgICAvLyBzaGFsbG93IHNlYXJjaFxuICAgICAgICBjb25zdCBkZXZpY2VFdmVudE9wdGlvbnMgPSB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRJdGVtKERFVklDRV9FVkVOVF9PUFRJT05TX0tFWSk7XG5cbiAgICAgICAgaWYgKGRldmljZUV2ZW50T3B0aW9ucyAhPT0gbnVsbCkge1xuICAgICAgICAgIC8vIHNlYXJjaCBieSByb3cgY2xpY2sgaW4gZGV2aWNlIHRhYmxlXG4gICAgICAgICAgY29uc3QgeyB0aWNrZXROdW0sIGV2ZW50VGltZSwgZXZlbnRUeXBlSWQgfSA9IEpTT04ucGFyc2UoZGV2aWNlRXZlbnRPcHRpb25zKTtcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBMb2FkVGlja2V0TnVtUGFya2Vyc0FjdGlvbihwYXJrZXJQYXJhbXMudHlwZSwgcGFya2VyUGFyYW1zLnBhcmtJZCwgdGlja2V0TnVtLCBldmVudFRpbWUsIGV2ZW50VHlwZUlkKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTG9hZFBhcmtlcnNBY3Rpb24ocGFya2VyUGFyYW1zLnBhcmtJZCwgcGFya2VyUGFyYW1zLnR5cGUsXG4gICAgICAgICAgICBwYXJrZXJQYXJhbXMuc2VhcmNoVmFsdWUsIHBhcmtlclBhcmFtcy5pc0x1Y2t5TFBSU2VhcmNoLCBwYXJrZXJQYXJhbXMudGFibGVOYW1lKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGRlZXAgc2VhcmNoXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IExvYWRQYXJrZXJBY3Rpb24ocGFya2VyUGFyYW1zLnBhcmtJZCwgcGFya2VyUGFyYW1zLnR5cGUsXG4gICAgICAgICAgcGFya2VyUGFyYW1zLnNlYXJjaFZhbHVlLCBwYXJrZXJQYXJhbXMuaXNMdWNreUxQUlNlYXJjaCwgcGFya2VyUGFyYW1zLnRpY2tldElkLCBwYXJrZXJQYXJhbXMuc3ViVGlja2V0SWQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKFNldFRpY2tldElkZW50aWZpZXJBY3Rpb24pXG4gIG9uU2V0VGlja2V0SWRlbnRpZmllcklkQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtlclN0YXRlTW9kZWw+LCBhY3Rpb246IFNldFRpY2tldElkZW50aWZpZXJBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICB0aWNrZXRJZGVudGlmaWVyOiBhY3Rpb24udGlja2V0SWRlbnRpZmllclxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZW5kUmVjZWlwdFRvTWFpbChjdHg6IFN0YXRlQ29udGV4dDxQYXJrZXJTdGF0ZU1vZGVsPiwgZW1haWw6IHN0cmluZywgZW50aXR5TmFtZTogc3RyaW5nLCBlbnRpdHlJZDogbnVtYmVyLCBndWlkOiBzdHJpbmcsIHBhcmtJZDogbnVtYmVyLCBmaWxlOiBGaWxlUmVzcG9uc2UsIGZpbGVOYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMucG9wdWxhdGVTZW5kRW1haWxSZXF1ZXN0KGVtYWlsLCBlbnRpdHlOYW1lLCBlbnRpdHlJZCwgZ3VpZCwgcGFya0lkLCBmaWxlLCBmaWxlTmFtZSkpLnBpcGUoXG4gICAgICB0YXAoc2VuZEVtYWlsUmVxdWVzdCA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGE6IGFueSA9IHtcbiAgICAgICAgICBtb2RhbFRpdGxlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5zZW5kX3JlY2VpcHRfdG9fZW1haWwpLFxuICAgICAgICAgIHNlbmRFbWFpbDogZmFsc2UsXG4gICAgICAgICAgc2VuZEVtYWlsUmVxZXVzdDogc2VuZEVtYWlsUmVxdWVzdFxuICAgICAgICB9O1xuICAgICAgICBkYXRhLnNlbmRFbWFpbFJlcWV1c3QudG8gPSBlbWFpbDtcbiAgICAgICAgY3R4LmRpc3BhdGNoKG5ldyBTZW5kRW1haWxGcm9tRW50aXR5QWN0aW9uKGRhdGEuc2VuZEVtYWlsUmVxZXVzdCkpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwb3B1bGF0ZVNlbmRFbWFpbFJlcXVlc3QoZW1haWw6IHN0cmluZywgZW50aXR5TmFtZTogc3RyaW5nLCBlbnRpdHlJZDogbnVtYmVyLCBndWlkOiBzdHJpbmcsIHBhcmtJZDogbnVtYmVyLCBmaWxlOiBGaWxlUmVzcG9uc2UsIGZpbGVOYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBmaWxlQmFzZTY0ID0gYXdhaXQgYmxvYlRvQmFzZTY0KG5ldyBCbG9iKFtmaWxlLmRhdGFdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnIH0pKTtcbiAgICBjb25zdCBwZGZQYWdlc1BhcmFtZXRlcnNMaXN0OiB7IFtrZXk6IHN0cmluZ106IGFueTsgfVtdID0gW3tcbiAgICAgIGZpbGVOYW1lLFxuICAgICAgcGFya0lkOiBwYXJrSWQudG9TdHJpbmcoKSxcbiAgICAgIGd1aWQsXG4gICAgICBhdHRhY2hlZFBkZjogZmlsZUJhc2U2NC50b1N0cmluZygpLFxuICAgIH1dO1xuXG4gICAgY29uc3Qgc2VuZEVtYWlsUmVxdWVzdCA9IG5ldyBTZW5kRW1haWxSZXF1ZXN0RHRvKHtcbiAgICAgIGVudGl0eTogbmV3IFJlY2VpcHRFbnRpdHlQYXJhbXMoe1xuICAgICAgICBhdHRhY2hlZFBkZjogZmlsZUJhc2U2NC50b1N0cmluZygpLFxuICAgICAgICBpZDogZW50aXR5SWRcbiAgICAgIH0pLFxuICAgICAgdG86IGVtYWlsLFxuICAgICAgdGVtcGxhdGVUeXBlOiBUZW1wbGF0ZVR5cGUuUmVjZWlwdCxcbiAgICAgIHBkZlBhZ2VzUGFyYW1ldGVyc0xpc3QsXG4gICAgICBwZGZQYWdlc1BhcmFtZXRlcnM6IG51bGwsIC8vYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgdmVyc2lvbiA4LjJcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgZmlsZU5hbWUsXG4gICAgICAgIHN1YmplY3Q6IGAke3RoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLnJlY2VpcHQpfSA6ICR7ZW50aXR5TmFtZX1gLFxuICAgICAgfSxcbiAgICAgIGlzTXVsdGlQYWdlc0ZpbGU6IHVuZGVmaW5lZFxuICAgIH0pO1xuICAgIHJldHVybiBzZW5kRW1haWxSZXF1ZXN0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJrZXJFbnRpdHlTdGF0ZShwYXJrZXJTdGF0ZTogUGFya2VyU3RhdGVNb2RlbCwgZW50aXR5RGlzcGxheU5hbWU6IHN0cmluZywgdGFnczogbnVtYmVyW10sIGVudGl0eVR5cGVUcmFuc2xhdGU6IHN0cmluZyxcbiAgICB0aWNrZXRJZDogbnVtYmVyLCBkZXRhaWxzOiBhbnksIHBhcmtlckJyZWFkY3J1bWJWYWx1ZTogc3RyaW5nKSB7XG4gICAgY29uc3Qgc3RhdGUgPSB7IC4uLnBhcmtlclN0YXRlIH07XG4gICAgc3RhdGUudGlja2V0SWRlbnRpZmllci5lbnRpdHlEaXNwbGF5TmFtZSA9IGVudGl0eURpc3BsYXlOYW1lO1xuICAgIHN0YXRlLnRpY2tldElkZW50aWZpZXIudGFncyA9IHRhZ3M7XG4gICAgc3RhdGUudGlja2V0SWRlbnRpZmllci5lbnRpdHlUeXBlVHJhbnNsYXRlID0gZW50aXR5VHlwZVRyYW5zbGF0ZTtcbiAgICBzdGF0ZS50aWNrZXRJZGVudGlmaWVyLnRpY2tldElkID0gdGlja2V0SWQ7XG4gICAgc3RhdGUuZGV0YWlscyA9IGRldGFpbHM7XG4gICAgc3RhdGUucGFya2VyQnJlYWRjcnVtYlZhbHVlID0gcGFya2VyQnJlYWRjcnVtYlZhbHVlO1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufVxuIl19
|
|
685
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFya2VyLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9tb2R1bGVzL3Bhcmtlci9wYXJrZXIuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUF1QixNQUFNLGFBQWEsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlyQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQy9ILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUczRSxPQUFPLEVBQXVELG1CQUFtQixFQUFFLFlBQVksRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25KLE9BQU8sRUFBK1IscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQXlFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFzSSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUl2cEIsT0FBTyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXpFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FB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RTtZQUN2QixzQkFBc0IsRUFBRSxFQUFFO1NBQzNCO0tBQ0YsQ0FBQztHQUNXLFdBQVcsQ0FtcUJ2Qjs7NEZBbnFCWSxXQUFXO2tCQXJCdkIsVUFBVTsrcUJBa0dULG1CQUFtQixNQWNuQixrQkFBa0IsTUFrTmxCLG1CQUFtQixNQTJDbkIsOEJBQThCLE1BaUI5Qix5QkFBeUIsTUFhekIsNEJBQTRCLE1BMkM1QixxQkFBcUIsTUFLckIsdUJBQXVCLE1BWXZCLDBCQUEwQixNQU8xQiwrQkFBK0IsTUFPL0IsMEJBQTBCLE1BTzFCLG1DQUFtQyxNQU9uQyxzQkFBc0IsTUF5QnRCLDJCQUEyQixNQVkzQixvQkFBb0IsTUF1Q3BCLHdCQUF3QixNQXNDeEIsb0NBQW9DLE1BYXBDLG9CQUFvQixNQTRCcEIsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uLCBTZWxlY3RvciwgU3RhdGUsIFN0YXRlQ29udGV4dCwgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRU1QVFksIGZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1lc3NhZ2VCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tZXNzYWdlLWJhci9tZXNzYWdlLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7IE1lc3NhZ2VJbmZvIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tZXNzYWdlLWJhci9tZXNzYWdlLWluZm8uaW50ZXJmYWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkV2ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IERFVklDRV9FVkVOVF9PUFRJT05TX0tFWSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9rZXlzLWNvbnN0YW50cyc7XG5pbXBvcnQgeyBWRVJTSU9OXzEwXzJfMCwgVkVSU0lPTl84XzFfMCwgVkVSU0lPTl84XzJfMCwgVkVSU0lPTl84XzRfMCwgVkVSU0lPTl85XzFfMCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy92ZXJzaW9uLWNvbnN0YW50cyc7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb24gfSBmcm9tICcuLi8uLi9lbnVtcy9sb2NhbGl6YXRpb24uZW51bSc7XG5pbXBvcnQgeyBEdXJhdGlvbk1lc3NhZ2VCYXIgfSBmcm9tICcuLi8uLi9lbnVtcy9tZXNzYWdlLWJhci1kdXJhdGlvbi5lbnVtJztcbmltcG9ydCB7IEdlbmVyYXRlZFJlY2VpcHRJbmZvIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9nZW5lcmF0ZWQtcmVjZWlwdC1pbmZvLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUaWNrZXRJZGVudGlmaWVyIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy90aWNrZXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEF1ZGl0U2VjdGlvbnNEdG9IdHRwUmVzcG9uc2VEYXRhLCBBdWRpdFNlcnZpY2VQcm94eSwgU2VuZEVtYWlsUmVxdWVzdER0bywgVGVtcGxhdGVUeXBlIH0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eS9jbG91ZC1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgQWNjZXNzUHJvZmlsZVNlcnZpY2VQcm94eSwgQWNjb3VudFNlcnZpY2VQcm94eSwgQ2hhc2VyVGlja2V0U2VydmljZVByb3h5LCBDb3Vwb25TZWN0aW9uc0R0b0h0dHBSZXNwb25zZURhdGEsIENyZWRpdENhcmRTZXJ2aWNlUHJveHksIEV2b3VjaGVyU2VydmljZVByb3h5LCBGaWxlUmVzcG9uc2UsIEZpbGVTZXJ2aWNlUHJveHksIEdlbmVyYXRlRmlsZVJlc3BvbnNlRHRvSHR0cFJlc3BvbnNlRGF0YSwgR3Vlc3RTZXJ2aWNlUHJveHksIExvY2F0ZVRpY2tldER0bywgTW9udGhseVNlcnZpY2VQcm94eSwgTm90aWZpY2F0aW9uRXZlbnRUeXBlLCBQYXJrZXJUaWNrZXRUeXBlLCBQYXltZW50c0RvY3VtZW50VGFibGVEYXRhRHRvLCBQYXltZW50U2VjdGlvbnNEdG8sIFBheW1lbnRTZXJ2aWNlUHJveHksIFJlY2VpcHRFbnRpdHlQYXJhbXMsIFNlYXJjaEZpZWxkU2VsZWN0b3IsIFNwZWNpYWxUcmFuc2llbnRTZXJ2aWNlUHJveHksIFN0aWNrZXJTZWN0aW9uc0R0b0h0dHBSZXNwb25zZURhdGEsIFRyYW5zaWVudFNlY3Rpb25zRHRvLCBUcmFuc2llbnRTZXJ2aWNlUHJveHksIFRyYW5zaWVudFNoYWxsb3dEdG8sIFR5cGVDYXN0RGV2aWNlRXZlbnQsIFZlaGljbGVzRHRvIH0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eS9lZGdlLXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBGaWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpbGUuc2VydmljZSc7XG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zZXNzaW9uLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBTaWduYWxSIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2lnbmFsci5zZXJ2aWNlJztcbmltcG9ydCB7IGJsb2JUb0Jhc2U2NCwgRmlsZUdlbmVyYXRlTWV0aG9kIH0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS51dGlsJztcbmltcG9ydCB7IFN0cmluZ01hcCB9IGZyb20gJy4uLy4uL3V0aWxzL2xhbmcudXRpbCc7XG5pbXBvcnQgeyBnZXRQYXJrZXJUeXBlc1RleHQgfSBmcm9tICcuLi8uLi91dGlscy9wYXJrZXItdHlwZXMtdGV4dC51dGlsJztcbmltcG9ydCB7IGlzVmVyc2lvbkdyZWF0ZXJUaGFuRXF1YWwgfSBmcm9tICcuLi8uLi91dGlscy9zdXBwb3J0LXZlcnNpb24udXRpbCc7XG5pbXBvcnQgeyBTZW5kRW1haWxGcm9tRW50aXR5QWN0aW9uIH0gZnJvbSAnLi4vZW1haWwtc2VydmVyL2VtYWlsLXNlcnZlci5hY3Rpb25zJztcbmltcG9ydCB7IEZhY2lsaXR5U3RhdGUgfSBmcm9tICcuLi9mYWNpbGl0eS9mYWNpbGl0eS5zdGF0ZSc7XG5pbXBvcnQgeyBQYXJrTWFuYWdlclN0YXRlIH0gZnJvbSAnLi4vcGFyay1tYW5hZ2VyL3BhcmstbWFuYWdlci5zdGF0ZSc7XG5pbXBvcnQgeyBQYXJrZXJTZWFyY2hUZXJtIH0gZnJvbSAnLi9wYXJrZXItc2VhcmNoLXRlcm0nO1xuaW1wb3J0IHtcbiAgQ2xlYXJMb2NhdGVkVGlja2V0QWN0aW9uLFxuICBDbGVhckxvY2F0ZVRpY2tldFNlYXJjaEFjdGlvbixcbiAgQ2xlYXJQYXJrZXJBY3Rpb24sIENsZWFyU2VhcmNoUmVzdWx0c0FjdGlvbixcbiAgQ2xlYXJTZWFyY2hUZXJtQWN0aW9uLFxuICBDbGVhclNwZWNpYWxUcmFuc2llbnRUYWJsZXNBY3Rpb24sXG4gIEdldFNwZWNpYWxUcmFuc2llbnRUYWJsZXNBY3Rpb24sXG4gIExvYWRMb2NhdGVkVGlja2V0QWN0aW9uLFxuICBMb2FkTG9jYXRlVGlja2V0U2VhcmNoQWN0aW9uLFxuICBMb2FkUGFya2VyQWN0aW9uLFxuICBMb2FkUGFya2Vyc0FjdGlvbiwgTG9hZFRpY2tldE51bVBhcmtlcnNBY3Rpb24sIFByaW50UmVjZWlwdEFjdGlvbiwgUmVjZWlwdEdlbmVyYXRlZEFjdGlvbixcbiAgUmVsb2FkUGFya2VyQWN0aW9uLCBTZXRTZWFyY2hUZXJtQWN0aW9uLCBTZXRUaWNrZXRJZGVudGlmaWVyQWN0aW9uLCBVcGRhdGVEb2N1bWVudEFjdGlvbiwgVXBkYXRlVGlja2V0UGxhdGVJZEFjdGlvblxufSBmcm9tICcuL3Bhcmtlci5hY3Rpb25zJztcblxuZXhwb3J0IGludGVyZmFjZSBQYXJrZXJTdGF0ZU1vZGVsIHtcbiAgdGlja2V0SWRlbnRpZmllcjogVGlja2V0SWRlbnRpZmllcjtcbiAgZGV0YWlsczogYW55O1xuICBzZWFyY2g6IFBhcmtlclNlYXJjaFRlcm07XG4gIHNlYXJjaFJlc3VsdHM6IGFueVtdO1xuICBwYXJrZXJQYXJhbXM6IExvYWRQYXJrZXJBY3Rpb247XG4gIGxvY2F0ZVNlYXJjaFJlc3VsdHM6IFRyYW5zaWVudFNoYWxsb3dEdG9bXTtcbiAgbG9jYXRlZFRpY2tldDogTG9jYXRlVGlja2V0RHRvO1xuICBwYXJrZXJCcmVhZGNydW1iVmFsdWU6IHN0cmluZztcbiAgcmVxdWVzdGVkUmVjZWlwdE1hcDogU3RyaW5nTWFwPEdlbmVyYXRlZFJlY2VpcHRJbmZvPixcbiAgc3BlY2lhbFRyYW5zaWVudFRhYmxlczogc3RyaW5nW107XG59XG5cblxuQEluamVjdGFibGUoKVxuQFN0YXRlPFBhcmtlclN0YXRlTW9kZWw+KHtcbiAgbmFtZTogJ3BhcmtlcicsXG4gIGRlZmF1bHRzOiB7XG4gICAgdGlja2V0SWRlbnRpZmllcjoge1xuICAgICAgdGlja2V0SWQ6IG51bGwsXG4gICAgICBlbnRpdHlEaXNwbGF5TmFtZTogJycsXG4gICAgICBlbnRpdHlUeXBlVHJhbnNsYXRlOiAnJyxcbiAgICAgIHRhZ3M6IFtdLFxuICAgIH0sXG4gICAgZGV0YWlsczogbnVsbCxcbiAgICBzZWFyY2g6IG5ldyBQYXJrZXJTZWFyY2hUZXJtKCksXG4gICAgc2VhcmNoUmVzdWx0czogbnVsbCxcbiAgICBwYXJrZXJQYXJhbXM6IG51bGwsXG4gICAgbG9jYXRlU2VhcmNoUmVzdWx0czogbnVsbCxcbiAgICBsb2NhdGVkVGlja2V0OiBudWxsLFxuICAgIHBhcmtlckJyZWFkY3J1bWJWYWx1ZTogbnVsbCxcbiAgICByZXF1ZXN0ZWRSZWNlaXB0TWFwOiB7fSxcbiAgICBzcGVjaWFsVHJhbnNpZW50VGFibGVzOiBbXSxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgUGFya2VyU3RhdGUge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhc2VyVGlja2V0U2VydmljZVByb3h5OiBDaGFzZXJUaWNrZXRTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBwYXltZW50U2VydmljZVByb3h5OiBQYXltZW50U2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgbW9udGhseVNlcnZpY2VQcm94eTogTW9udGhseVNlcnZpY2VQcm94eSxcbiAgICBwcml2YXRlIHRyYW5zaWVudFNlcnZpY2VQcm94eTogVHJhbnNpZW50U2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgZ3Vlc3RTZXJ2aWNlUHJveHk6IEd1ZXN0U2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgZXZvdWNoZXJTZXJ2aWNlUHJveHk6IEV2b3VjaGVyU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgY3JlZGl0Q2FyZFNlcnZpY2VQcm94eTogQ3JlZGl0Q2FyZFNlcnZpY2VQcm94eSxcbiAgICBwcml2YXRlIGFjY2Vzc1Byb2ZpbGVTZXJ2aWNlUHJveHk6IEFjY2Vzc1Byb2ZpbGVTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBhdWRpdFNlcnZpY2VQcm94eTogQXVkaXRTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGZpbGVTZXJ2aWNlUHJveHk6IEZpbGVTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBmaWxlU2VydmljZTogRmlsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlQmFyU2VydmljZTogTWVzc2FnZUJhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzaWduYWxSOiBTaWduYWxSLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlOiBOb3RpZmljYXRpb25FdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY2NvdW50U2VydmljZVByb3h5OiBBY2NvdW50U2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgc3BlY2lhbFRyYW5zaWVudFNlcnZpY2VQcm94eTogU3BlY2lhbFRyYW5zaWVudFNlcnZpY2VQcm94eSxcbiAgKSB7XG4gIH1cblxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc3BlY2lhbFRyYW5zaWVudFRhYmxlcyhzdGF0ZTogUGFya2VyU3RhdGVNb2RlbCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gc3RhdGUuc3BlY2lhbFRyYW5zaWVudFRhYmxlcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgdGlja2V0SWQoc3RhdGU6IFBhcmtlclN0YXRlTW9kZWwpOiBudW1iZXIge1xuICAgIHJldHVybiBzdGF0ZS50aWNrZXRJZGVudGlmaWVyLnRpY2tldElkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBlbnRpdHlEaXNwbGF5TmFtZShzdGF0ZTogUGFya2VyU3RhdGVNb2RlbCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0YXRlLnRpY2tldElkZW50aWZpZXIuZW50aXR5RGlzcGxheU5hbWU7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHBhcmtlckJyZWFkY3J1bWJWYWx1ZShzdGF0ZTogUGFya2VyU3RhdGVNb2RlbCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0YXRlLnBhcmtlckJyZWFkY3J1bWJWYWx1ZTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgdGlja2V0SWRlbnRpZmllcihzdGF0ZTogUGFya2VyU3RhdGVNb2RlbCk6IFRpY2tldElkZW50aWZpZXIge1xuICAgIHJldHVybiBzdGF0ZS50aWNrZXRJZGVudGlmaWVyO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBwYXJrZXJEZXRhaWxzKHN0YXRlOiBQYXJrZXJTdGF0ZU1vZGVsKTogYW55IHtcbiAgICByZXR1cm4gc3RhdGUuZGV0YWlscztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc2VhcmNoVGVybShzdGF0ZTogUGFya2VyU3RhdGVNb2RlbCk6IFBhcmtlclNlYXJjaFRlcm0ge1xuICAgIHJldHVybiBzdGF0ZS5zZWFyY2g7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNlYXJjaFJlc3VsdHMoc3RhdGU6IFBhcmtlclN0YXRlTW9kZWwpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHN0YXRlLnNlYXJjaFJlc3VsdHM7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGxvY2F0ZVNlYXJjaFJlc3VsdHMoc3RhdGU6IFBhcmtlclN0YXRlTW9kZWwpOiBUcmFuc2llbnRTaGFsbG93RHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5sb2NhdGVTZWFyY2hSZXN1bHRzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBsb2NhdGVkVGlja2V0KHN0YXRlOiBQYXJrZXJTdGF0ZU1vZGVsKTogTG9jYXRlVGlja2V0RHRvIHtcbiAgICByZXR1cm4gc3RhdGUubG9jYXRlZFRpY2tldDtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJQYXJrZXJBY3Rpb24pXG4gIG9uQ2xlYXJQYXJrZXJBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya2VyU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICB0aWNrZXRJZGVudGlmaWVyOiB7XG4gICAgICAgIHRpY2tldElkOiBudWxsLFxuICAgICAgICBlbnRpdHlEaXNwbGF5TmFtZTogJycsXG4gICAgICAgIGVudGl0eVR5cGVUcmFuc2xhdGU6ICcnLFxuICAgICAgICB0YWdzOiBbXSxcbiAgICAgIH0sXG4gICAgICBkZXRhaWxzOiBudWxsLFxuICAgICAgcGFya2VyQnJlYWRjcnVtYlZhbHVlOiBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkUGFya2VyQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZFBhcmtlckFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkUGFya2VyQWN0aW9uKSB7XG4gICAgY29uc3QgZ3VpZCA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5ndWlkKTtcblxuICAgIGNvbnN0IHBhcmtlckVudGl0eVN0YXRlID0gY3R4LmdldFN0YXRlKCk7XG4gICAgcGFya2VyRW50aXR5U3RhdGUuZGV0YWlscyA9IG51bGw7XG4gICAgcGFya2VyRW50aXR5U3RhdGUuc2VhcmNoID0geyB0eXBlOiBhY3Rpb24udHlwZSwgdmFsdWU6IGFjdGlvbi5zZWFyY2hWYWx1ZSwgaXNMdWNreUxQUlNlYXJjaDogYWN0aW9uLmlzTHVja3lMUFJTZWFyY2gsIHRuOiBhY3Rpb24udGFibGVOYW1lIH07XG4gICAgcGFya2VyRW50aXR5U3RhdGUucGFya2VyUGFyYW1zID0gYWN0aW9uO1xuICAgIGN0eC5wYXRjaFN0YXRlKHBhcmtlckVudGl0eVN0YXRlKTtcblxuICAgIGNvbnN0IHNwYXJrVmVyc2lvbiA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoKHsgc21hcnRwYXJrOiB7IHZlcnNpb25zIH0gfSkgPT4gdmVyc2lvbnNbZ3VpZF0pO1xuXG4gICAgY29uc3QgdGlja2V0ID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24udGlja2V0KTtcbiAgICBjb25zdCBlVm91Y2hlciA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmVfdm91Y2hlcik7XG4gICAgY29uc3QgZ3Vlc3QgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5ndWVzdCk7XG4gICAgY29uc3QgaG90ZWxHdWVzdCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmhvdGVsX2d1ZXN0KTtcbiAgICBjb25zdCBtb250aGx5ID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24ubW9udGhseSk7XG4gICAgY29uc3QgZG9jdW1lbnQgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5kb2N1bWVudCk7XG4gICAgY29uc3QgY3JlZGl0Q2FyZCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNyZWRpdF9jYXJkKTtcbiAgICBjb25zdCBjb3Vwb24gPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5jb3Vwb24pO1xuICAgIGNvbnN0IHN0aWNrZXIgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5zdGlja2VyKTtcbiAgICBjb25zdCBhdWRpdCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmF1ZGl0KTtcbiAgICBjb25zdCBhY2NvdW50ID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uYWNjb3VudCk7XG4gICAgY29uc3Qgc3ViQWNjb3VudCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLnN1Yl9hY2NvdW50KTtcbiAgICBjb25zdCBhY2Nlc3NQcm9maWxlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uYWNjZXNzX3Byb2ZpbGUpO1xuXG4gICAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgICAgY2FzZSBQYXJrZXJUaWNrZXRUeXBlLkNyZWRpdENhcmQ6XG4gICAgICAgIGNvbnN0IGNyZWRpdENhcmRTZWN0aW9ucyQgPSB0aGlzLmNyZWRpdENhcmRTZXJ2aWNlUHJveHkuY3JlZGl0Q2FyZERlZXBTZWFyY2goYWN0aW9uLnBhcmtJZCwgYWN0aW9uLnRpY2tldElkLCBndWlkKTtcbiAgICAgICAgcmV0dXJuIGNyZWRpdENhcmRTZWN0aW9ucyQucGlwZSh0YXAoY3JlZGl0Q2FyZFNlY3Rpb24gPT4ge1xuICAgICAgICAgIHBhcmtlckVudGl0eVN0YXRlLmRldGFpbHMgPSBjcmVkaXRDYXJkU2VjdGlvbi5kYXRhO1xuICAgICAgICAgIHBhcmtlckVudGl0eVN0YXRlLnBhcmtlckJyZWFkY3J1bWJWYWx1ZSA9IGAke2NyZWRpdENhcmR9IC0gJHtjcmVkaXRDYXJkU2VjdGlvbi5kYXRhLmNyZWRpdENhcmREZXRhaWxzPy5jcmVkaXRDYXJkfWA7XG4gICAgICAgICAgcGFya2VyRW50aXR5U3RhdGUudGlja2V0SWRlbnRpZmllci50aWNrZXRJZCA9IGFjdGlvbi50aWNrZXRJZDtcbiAgICAgICAgICBjdHgucGF0Y2hTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSk7XG4gICAgICAgIH0pKTtcbiAgICAgIGNhc2UgUGFya2VyVGlja2V0VHlwZS5UcmFuc2llbnQ6XG4gICAgICAgIGNvbnN0IHRyYW5zaWVudFNlY3Rpb25zJCA9IHRoaXMudHJhbnNpZW50U2VydmljZVByb3h5LnRyYW5zaW5ldERlZXBTZWFyY2goYWN0aW9uLnBhcmtJZCwgYWN0aW9uLnRpY2tldElkLCBndWlkKTtcbiAgICAgICAgcmV0dXJuIHRyYW5zaWVudFNlY3Rpb25zJC5waXBlKHRhcCh0cmFuc2llbnRTZWN0aW9ucyA9PiB7XG4gICAgICAgICAgY29uc3QgdHJhbnNpZW50TmFtZSA9IHRyYW5zaWVudFNlY3Rpb25zLmRhdGEudGlja2V0RGV0YWlscy50aWNrZXROdW0gPyBgIyR7dHJhbnNpZW50U2VjdGlvbnMuZGF0YS50aWNrZXREZXRhaWxzLnRpY2tldE51bX1gIDogJyc7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihwYXJrZXJFbnRpdHlTdGF0ZSwgdGhpcy5nZXRQYXJrZXJFbnRpdHlTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSwgdHJhbnNpZW50TmFtZSwgdHJhbnNpZW50U2VjdGlvbnMuZGF0YS50aWNrZXREZXRhaWxzLnRhZ3MsXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGdldFBhcmtlclR5cGVzVGV4dChQYXJrZXJUaWNrZXRUeXBlLlRyYW5zaWVudCkpLCB0cmFuc2llbnRTZWN0aW9ucy5kYXRhLnRpY2tldERldGFpbHMuaWQsXG4gICAgICAgICAgICB0cmFuc2llbnRTZWN0aW9ucy5kYXRhLCBgJHt0aWNrZXR9IC0gJHt0cmFuc2llbnRTZWN0aW9ucy5kYXRhLnRpY2tldERldGFpbHMudGlja2V0TnVtfWApKTtcblxuICAgICAgICAgIGN0eC5wYXRjaFN0YXRlKHBhcmtlckVudGl0eVN0YXRlKTtcbiAgICAgICAgfSkpO1xuICAgICAgY2FzZSBQYXJrZXJUaWNrZXRUeXBlLkVWb3VjaGVyOlxuICAgICAgICBjb25zdCBldm91Y2hlclNlY3Rpb25zJCA9IHRoaXMuZXZvdWNoZXJTZXJ2aWNlUHJveHkuZVZvdWNoZXJEZWVwU2VhcmNoKGFjdGlvbi5wYXJrSWQsIGFjdGlvbi50aWNrZXRJZCwgZ3VpZCk7XG4gICAgICAgIHJldHVybiBldm91Y2hlclNlY3Rpb25zJC5waXBlKHRhcChldm91Y2hlclNlY3Rpb25zID0+IHtcbiAgICAgICAgICBpZiAoZXZvdWNoZXJTZWN0aW9ucy5kYXRhLnRpY2tldERldGFpbHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zaWVudE5hbWUgPSBgIyR7ZXZvdWNoZXJTZWN0aW9ucy5kYXRhLnRyYW5zaWVudFNlY3Rpb25zLnRpY2tldERldGFpbHM/LnRpY2tldE51bX1gO1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihwYXJrZXJFbnRpdHlTdGF0ZSwgdGhpcy5nZXRQYXJrZXJFbnRpdHlTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSwgdHJhbnNpZW50TmFtZSxcbiAgICAgICAgICAgICAgZXZvdWNoZXJTZWN0aW9ucy5kYXRhLnRyYW5zaWVudFNlY3Rpb25zLnRpY2tldERldGFpbHM/LnRhZ3MsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoZ2V0UGFya2VyVHlwZXNUZXh0KFBhcmtlclRpY2tldFR5cGUuVHJhbnNpZW50KSksXG4gICAgICAgICAgICAgIGV2b3VjaGVyU2VjdGlvbnMuZGF0YS50cmFuc2llbnRTZWN0aW9ucy50aWNrZXREZXRhaWxzPy5pZCwgZXZvdWNoZXJTZWN0aW9ucy5kYXRhLnRyYW5zaWVudFNlY3Rpb25zLCBgJHt0aWNrZXR9IC0gJHt0cmFuc2llbnROYW1lfWApKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZVZvdWNoZXJOYW1lID0gZXZvdWNoZXJTZWN0aW9ucy5kYXRhLnJlc2VydmF0aW9uRGV0YWlscz8uZ3Vlc3ROYW1lO1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihwYXJrZXJFbnRpdHlTdGF0ZSwgdGhpcy5nZXRQYXJrZXJFbnRpdHlTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSwgZVZvdWNoZXJOYW1lLFxuICAgICAgICAgICAgICBbZXZvdWNoZXJTZWN0aW9ucy5kYXRhLnJlc2VydmF0aW9uRGV0YWlscz8uZXZvdWNoZXJUYWddLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGdldFBhcmtlclR5cGVzVGV4dChQYXJrZXJUaWNrZXRUeXBlLkVWb3VjaGVyKSksXG4gICAgICAgICAgICAgIGV2b3VjaGVyU2VjdGlvbnMuZGF0YS5yZXNlcnZhdGlvbkRldGFpbHM/LmlkLCBldm91Y2hlclNlY3Rpb25zLmRhdGEsIGAke2VWb3VjaGVyfSAtICR7ZVZvdWNoZXJOYW1lfWApKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY3R4LnBhdGNoU3RhdGUocGFya2VyRW50aXR5U3RhdGUpO1xuICAgICAgICB9KSk7XG4gICAgICBjYXNlIFBhcmtlclRpY2tldFR5cGUuR3Vlc3Q6XG4gICAgICBjYXNlIFBhcmtlclRpY2tldFR5cGUuSG90ZWxHdWVzdDpcbiAgICAgICAgY29uc3QgZ3Vlc3RTZWN0aW9ucyQgPSB0aGlzLmd1ZXN0U2VydmljZVByb3h5Lmd1ZXN0RGVlcFNlYXJjaChhY3Rpb24ucGFya0lkLCBhY3Rpb24udGlja2V0SWQsIGd1aWQpO1xuICAgICAgICByZXR1cm4gZ3Vlc3RTZWN0aW9ucyQucGlwZSh0YXAoZ3Vlc3RTZWN0aW9ucyA9PiB7XG4gICAgICAgICAgaWYgKGd1ZXN0U2VjdGlvbnMuZGF0YS5ob3RlbEd1ZXN0RGV0YWlscykge1xuICAgICAgICAgICAgY29uc3QgZ3Vlc3ROYW1lID0gZ3Vlc3RTZWN0aW9ucy5kYXRhLmhvdGVsR3Vlc3REZXRhaWxzLmd1ZXN0TmFtZSA9PT0gTG9jYWxpemF0aW9uLmNhcmRfaG9sZGVyID9cbiAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uY2FyZF9ob2xkZXIpIDogZ3Vlc3RTZWN0aW9ucy5kYXRhLmhvdGVsR3Vlc3REZXRhaWxzLmd1ZXN0TmFtZTtcblxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihwYXJrZXJFbnRpdHlTdGF0ZSwgdGhpcy5nZXRQYXJrZXJFbnRpdHlTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSwgZ3Vlc3ROYW1lLCBndWVzdFNlY3Rpb25zLmRhdGEuaG90ZWxHdWVzdERldGFpbHMudGFncyxcbiAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudChnZXRQYXJrZXJUeXBlc1RleHQoUGFya2VyVGlja2V0VHlwZS5Ib3RlbEd1ZXN0KSksIGd1ZXN0U2VjdGlvbnMuZGF0YS5ob3RlbEd1ZXN0RGV0YWlscy5pZCxcbiAgICAgICAgICAgICAgZ3Vlc3RTZWN0aW9ucy5kYXRhLCBgJHtob3RlbEd1ZXN0fSAtICR7Z3Vlc3ROYW1lfWApKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGd1ZXN0U2VjdGlvbnMuZGF0YS50cmFuc2llbnRTZWN0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgdHJhbnNpZW50TmFtZSA9IGAjJHtndWVzdFNlY3Rpb25zLmRhdGEudHJhbnNpZW50U2VjdGlvbnMudGlja2V0RGV0YWlscz8udGlja2V0TnVtfWA7XG5cbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocGFya2VyRW50aXR5U3RhdGUsIHRoaXMuZ2V0UGFya2VyRW50aXR5U3RhdGUocGFya2VyRW50aXR5U3RhdGUsIHRyYW5zaWVudE5hbWUsIGd1ZXN0U2VjdGlvbnMuZGF0YS50cmFuc2llbnRTZWN0aW9ucy50aWNrZXREZXRhaWxzPy50YWdzLFxuICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGdldFBhcmtlclR5cGVzVGV4dChQYXJrZXJUaWNrZXRUeXBlLlRyYW5zaWVudCkpLCBndWVzdFNlY3Rpb25zLmRhdGEudHJhbnNpZW50U2VjdGlvbnMudGlja2V0RGV0YWlscz8uaWQsXG4gICAgICAgICAgICAgIGd1ZXN0U2VjdGlvbnMuZGF0YS50cmFuc2llbnRTZWN0aW9ucywgYCR7dGlja2V0fSAtICR7dHJhbnNpZW50TmFtZX1gKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGd1ZXN0TmFtZSA9IGd1ZXN0U2VjdGlvbnMuZGF0YS5ndWVzdERldGFpbHM/Lmd1ZXN0TmFtZSA9PT0gTG9jYWxpemF0aW9uLmNhcmRfaG9sZGVyID9cbiAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uY2FyZF9ob2xkZXIpIDogZ3Vlc3RTZWN0aW9ucy5kYXRhLmd1ZXN0RGV0YWlscz8uZ3Vlc3ROYW1lO1xuXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHBhcmtlckVudGl0eVN0YXRlLCB0aGlzLmdldFBhcmtlckVudGl0eVN0YXRlKHBhcmtlckVudGl0eVN0YXRlLCBndWVzdE5hbWUsIGd1ZXN0U2VjdGlvbnMuZGF0YS5ndWVzdERldGFpbHM/LnRhZ3MsXG4gICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoZ2V0UGFya2VyVHlwZXNUZXh0KFBhcmtlclRpY2tldFR5cGUuR3Vlc3QpKSwgZ3Vlc3RTZWN0aW9ucy5kYXRhLmd1ZXN0RGV0YWlscy5pZCxcbiAgICAgICAgICAgICAgZ3Vlc3RTZWN0aW9ucy5kYXRhLCBgJHtndWVzdH0gLSAke2d1ZXN0TmFtZX1gKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGN0eC5wYXRjaFN0YXRlKHBhcmtlckVudGl0eVN0YXRlKTtcbiAgICAgICAgfSkpO1xuICAgICAgY2FzZSBQYXJrZXJUaWNrZXRUeXBlLk1vbnRobHk6XG4gICAgICAgIGNvbnN0IG1vbnRobHlTZWN0aW9ucyQgPSB0aGlzLm1vbnRobHlTZXJ2aWNlUHJveHkubW9udGhseURlZXBTZWFyY2goYWN0aW9uLnRpY2tldElkLCBndWlkKTtcbiAgICAgICAgcmV0dXJuIG1vbnRobHlTZWN0aW9ucyQucGlwZSh0YXAobW9udGhseVNlY3Rpb25zID0+IHtcbiAgICAgICAgICAvLyBCYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICAgICAgaWYgKGlzVmVyc2lvbkdyZWF0ZXJUaGFuRXF1YWwoc3BhcmtWZXJzaW9uLCBWRVJTSU9OXzlfMV8wKSkge1xuICAgICAgICAgICAgLy8gZW1haWwgZmllbGQgaXMgYWxyZWFkeSBvbiBDcmVkZW50aWFscyBzZWN0aW9uXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1vbnRobHlTZWN0aW9ucy5kYXRhLm1vbnRobHlDcmVkZW50aWFscy5lbWFpbCA9IG1vbnRobHlTZWN0aW9ucy5kYXRhLm1vbnRobHlQZXJzb25hbEluZm8uZW1haWw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgICAgICAgIGlmIChpc1ZlcnNpb25HcmVhdGVyVGhhbkVxdWFsKHNwYXJrVmVyc2lvbiwgVkVSU0lPTl84XzJfMCkpIHtcbiAgICAgICAgICAgIC8vIGxvZ2ljIG9jY3VycyBvbiBzZXJ2ZXJcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzVmVyc2lvbkdyZWF0ZXJUaGFuRXF1YWwoc3BhcmtWZXJzaW9uLCBWRVJTSU9OXzhfMV8wKSkge1xuICAgICAgICAgICAgLy8gQ29udmVydCBtb250aGx5U2VjdGlvbnMubW9udGhseUNyZWRlbnRpYWxzLnBsYXRlcyB0byBtb250aGx5U2VjdGlvbnMubW9udGhseUNyZWRlbnRpYWxzLnZlaGljbGVzXG4gICAgICAgICAgICBpZiAobW9udGhseVNlY3Rpb25zLmRhdGEubW9udGhseUNyZWRlbnRpYWxzLnBsYXRlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIG1vbnRobHlTZWN0aW9ucy5kYXRhLm1vbnRobHlDcmVkZW50aWFscy52ZWhpY2xlcyA9IFtdO1xuICAgICAgICAgICAgICBtb250aGx5U2VjdGlvbnMuZGF0YS5tb250aGx5Q3JlZGVudGlhbHMucGxhdGVzLm1hcChwbGF0ZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmVoaWNsZTogVmVoaWNsZXNEdG8gPSBuZXcgVmVoaWNsZXNEdG8oKTtcbiAgICAgICAgICAgICAgICB2ZWhpY2xlLnBsYXRlID0gcGxhdGU7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBtb250aGx5TmFtZSA9IGAke21vbnRobHlTZWN0aW9ucy5kYXRhLm1vbnRobHlEZXRhaWxzPy5mTmFtZX0gJHttb250aGx5U2VjdGlvbnMuZGF0YS5tb250aGx5RGV0YWlscz8ubE5hbWV9YDtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHBhcmtlckVudGl0eVN0YXRlLCB0aGlzLmdldFBhcmtlckVudGl0eVN0YXRlKHBhcmtlckVudGl0eVN0YXRlLCBtb250aGx5TmFtZSwgbW9udGhseVNlY3Rpb25zLmRhdGEubW9udGhseURldGFpbHMudGFncyxcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoZ2V0UGFya2VyVHlwZXNUZXh0KFBhcmtlclRpY2tldFR5cGUuTW9udGhseSkpLCBtb250aGx5U2VjdGlvbnMuZGF0YS5tb250aGx5RGV0YWlscy5pZCxcbiAgICAgICAgICAgIG1vbnRobHlTZWN0aW9ucy5kYXRhLCBgJHttb250aGx5fSAtICR7bW9udGhseU5hbWV9YCkpO1xuXG4gICAgICAgICAgY3R4LnBhdGNoU3RhdGUocGFya2VyRW50aXR5U3RhdGUpO1xuICAgICAgICB9KSk7XG4gICAgICBjYXNlIFBhcmtlclRpY2tldFR5cGUuUGF5bWVudDpcbiAgICAgICAgY29uc3QgcGF5bWVudFNlY3Rpb25zJCA9IHRoaXMucGF5bWVudFNlcnZpY2VQcm94eS5wYXltZW50RGVlcFNlYXJjaChhY3Rpb24udGlja2V0SWQsIGd1aWQpO1xuICAgICAgICByZXR1cm4gcGF5bWVudFNlY3Rpb25zJC5waXBlKHRhcChwYXltZW50U2VjdGlvbnMgPT4ge1xuICAgICAgICAgIGNvbnN0IHBheW1lbnROYW1lID0gYCMke3BheW1lbnRTZWN0aW9ucy5kYXRhLnBheW1lbnRzRG9jdW1lbnREYXRhLmRvY051bX1gO1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24ocGFya2VyRW50aXR5U3RhdGUsIHRoaXMuZ2V0UGFya2VyRW50aXR5U3RhdGUocGFya2VyRW50aXR5U3RhdGUsIHBheW1lbnROYW1lLCBudWxsLFxuICAgICAgICAgICAgZG9jdW1lbnQsIHBheW1lbnRTZWN0aW9ucy5kYXRhLnBheW1lbnRzRG9jdW1lbnREYXRhLmlkLCBwYXltZW50U2VjdGlvbnMuZGF0YSwgYCR7ZG9jdW1lbnR9IC0gJHtwYXltZW50TmFtZX1gKSk7XG5cbiAgICAgICAgICBjdHgucGF0Y2hTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSk7XG4gICAgICAgIH0pKTtcbiAgICAgIGNhc2UgUGFya2VyVGlja2V0VHlwZS5Db3Vwb246XG4gICAgICAgIGxldCBjb3Vwb25TZWN0aW9ucyQ6IE9ic2VydmFibGU8Q291cG9uU2VjdGlvbnNEdG9IdHRwUmVzcG9uc2VEYXRhPjtcbiAgICAgICAgLy8gQmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgICAgICBpZiAoaXNWZXJzaW9uR3JlYXRlclRoYW5FcXVhbChzcGFya1ZlcnNpb24sIFZFUlNJT05fMTBfMl8wKSkge1xuICAgICAgICAgIGNvdXBvblNlY3Rpb25zJCA9IGFjdGlvbi5zdWJUaWNrZXRJZCA/IHRoaXMuY2hhc2VyVGlja2V0U2VydmljZVByb3h5LnNpbmdsZUNvdXBvbkRlZXBTZWFyY2goYWN0aW9uLnBhcmtJZCwgYWN0aW9uLnN1YlRpY2tldElkLCBndWlkKSA6XG4gICAgICAgICAgICB0aGlzLmNoYXNlclRpY2tldFNlcnZpY2VQcm94eS5jb3Vwb25CYXRjaERlZXBTZWFyY2goYWN0aW9uLnBhcmtJZCwgYWN0aW9uLnRpY2tldElkLCBndWlkKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc1ZlcnNpb25HcmVhdGVyVGhhbkVxdWFsKHNwYXJrVmVyc2lvbiwgVkVSU0lPTl84XzRfMCkpIHtcbiAgICAgICAgICBjb3Vwb25TZWN0aW9ucyQgPSBhY3Rpb24uc3ViVGlja2V0SWQgPyB0aGlzLmNoYXNlclRpY2tldFNlcnZpY2VQcm94eS5zaW5nbGVDb3Vwb25EZWVwU2VhcmNoRGVwcmVjYXRlZChhY3Rpb24uc3ViVGlja2V0SWQsIGd1aWQpIDpcbiAgICAgICAgICAgIHRoaXMuY2hhc2VyVGlja2V0U2VydmljZVByb3h5LmNvdXBvbkJhdGNoRGVlcFNlYXJjaERlcHJlY2F0ZWQoYWN0aW9uLnRpY2tldElkLCBndWlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb3Vwb25TZWN0aW9ucyQucGlwZSh0YXAoY291cG9uU2VjdGlvbnMgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvdXBvbk5hbWUgPSBgIyR7Y291cG9uU2VjdGlvbnMuZGF0YS5jb3Vwb25EZXRhaWxzLmJhdGNoTmFtZX1gO1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24ocGFya2VyRW50aXR5U3RhdGUsIHRoaXMuZ2V0UGFya2VyRW50aXR5U3RhdGUocGFya2VyRW50aXR5U3RhdGUsIGNvdXBvbk5hbWUsIG51bGwsXG4gICAgICAgICAgICBjb3Vwb24sIGNvdXBvblNlY3Rpb25zLmRhdGEuY291cG9uRGV0YWlscy5pZCwgY291cG9uU2VjdGlvbnMuZGF0YSwgYCR7Y291cG9ufSAtICR7Y291cG9uTmFtZX1gKSk7XG5cbiAgICAgICAgICBjdHgucGF0Y2hTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSk7XG4gICAgICAgIH0pKTtcbiAgICAgIGNhc2UgUGFya2VyVGlja2V0VHlwZS5TdGlja2VyOlxuICAgICAgICBsZXQgc3RpY2tlclNlY3Rpb25zJDogT2JzZXJ2YWJsZTxTdGlja2VyU2VjdGlvbnNEdG9IdHRwUmVzcG9uc2VEYXRhPjtcbiAgICAgICAgLy8gQmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgICAgICBpZiAoaXNWZXJzaW9uR3JlYXRlclRoYW5FcXVhbChzcGFya1ZlcnNpb24sIFZFUlNJT05fMTBfMl8wKSkge1xuICAgICAgICAgIHN0aWNrZXJTZWN0aW9ucyQgPSBhY3Rpb24uc3ViVGlja2V0SWQgPyB0aGlzLmNoYXNlclRpY2tldFNlcnZpY2VQcm94eS5zaW5nbGVTdGlja2VyRGVlcFNlYXJjaChhY3Rpb24ucGFya0lkLCBhY3Rpb24uc3ViVGlja2V0SWQsIGd1aWQpIDpcbiAgICAgICAgICAgIHRoaXMuY2hhc2VyVGlja2V0U2VydmljZVByb3h5LnN0aWNrZXJCYXRjaERlZXBTZWFyY2goYWN0aW9uLnBhcmtJZCwgYWN0aW9uLnRpY2tldElkLCBndWlkKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc1ZlcnNpb25HcmVhdGVyVGhhbkVxdWFsKHNwYXJrVmVyc2lvbiwgVkVSU0lPTl84XzRfMCkpIHtcbiAgICAgICAgICBzdGlja2VyU2VjdGlvbnMkID0gYWN0aW9uLnN1YlRpY2tldElkID8gdGhpcy5jaGFzZXJUaWNrZXRTZXJ2aWNlUHJveHkuc2luZ2xlU3RpY2tlckRlZXBTZWFyY2hEZXByZWNhdGVkKGFjdGlvbi5zdWJUaWNrZXRJZCwgZ3VpZCkgOlxuICAgICAgICAgICAgdGhpcy5jaGFzZXJUaWNrZXRTZXJ2aWNlUHJveHkuc3RpY2tlckJhdGNoRGVlcFNlYXJjaERlcHJlY2F0ZWQoYWN0aW9uLnRpY2tldElkLCBndWlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdGlja2VyU2VjdGlvbnMkLnBpcGUodGFwKHN0aWNrZXJTZWN0aW9ucyA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RpY2tlck5hbWUgPSBgIyR7c3RpY2tlclNlY3Rpb25zLmRhdGEuc3RpY2tlckRldGFpbHMuYmF0Y2hOYW1lfWA7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihwYXJrZXJFbnRpdHlTdGF0ZSwgdGhpcy5nZXRQYXJrZXJFbnRpdHlTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSwgc3RpY2tlck5hbWUsIG51bGwsXG4gICAgICAgICAgICBzdGlja2VyLCBzdGlja2VyU2VjdGlvbnMuZGF0YS5zdGlja2VyRGV0YWlscy5pZCwgc3RpY2tlclNlY3Rpb25zLmRhdGEsIGAke3N0aWNrZXJ9IC0gJHtzdGlja2VyTmFtZX1gKSk7XG5cbiAgICAgICAgICBjdHgucGF0Y2hTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSk7XG4gICAgICAgIH0pKTtcbiAgICAgIGNhc2UgUGFya2VyVGlja2V0VHlwZS5BdWRpdDpcbiAgICAgICAgbGV0IGF1ZGl0U2VjdGlvbnMkOiBPYnNlcnZhYmxlPEF1ZGl0U2VjdGlvbnNEdG9IdHRwUmVzcG9uc2VEYXRhPjtcbiAgICAgICAgYXVkaXRTZWN0aW9ucyQgPSB0aGlzLmF1ZGl0U2VydmljZVByb3h5LmdldEF1ZGl0RGVlcFNlYXJjaChhY3Rpb24udGlja2V0SWQpO1xuXG4gICAgICAgIHJldHVybiBhdWRpdFNlY3Rpb25zJC5waXBlKHRhcChhdWRpdFNlY3Rpb25zID0+IHtcbiAgICAgICAgICBjb25zdCBhdWRpdE5hbWUgPSBgIyR7YXVkaXRTZWN0aW9ucy5kYXRhLmNoYW5nZXNEZXRhaWxzLmVudGl0eU5hbWV9YDtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHBhcmtlckVudGl0eVN0YXRlLCB0aGlzLmdldFBhcmtlckVudGl0eVN0YXRlKHBhcmtlckVudGl0eVN0YXRlLCBhdWRpdE5hbWUsIG51bGwsXG4gICAgICAgICAgICBhdWRpdCwgYXVkaXRTZWN0aW9ucy5kYXRhLmNoYW5nZXNEZXRhaWxzLmlkLCBhdWRpdFNlY3Rpb25zLmRhdGEsIGAke2F1ZGl0fSAtICR7YXVkaXROYW1lfWApKTtcbiAgICAgICAgICBjdHgucGF0Y2hTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSk7XG4gICAgICAgIH0pKTtcblxuICAgICAgY2FzZSBQYXJrZXJUaWNrZXRUeXBlLkFjY291bnQ6XG4gICAgICAgIGNvbnN0IGFjY291bnRTZWN0aW9ucyQgPSB0aGlzLmFjY291bnRTZXJ2aWNlUHJveHkuYWNjb3VudERlZXBTZWFyY2goYWN0aW9uLnRpY2tldElkLCBndWlkKTtcblxuICAgICAgICByZXR1cm4gYWNjb3VudFNlY3Rpb25zJC5waXBlKHRhcChhY2NvdW50U2VjdGlvbnMgPT4ge1xuICAgICAgICAgIGNvbnN0IGFjY291bnROYW1lID0gYCMke2FjY291bnRTZWN0aW9ucy5kYXRhLmFjY291bnREZXRhaWxzLmFjY291bnROYW1lfWA7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihwYXJrZXJFbnRpdHlTdGF0ZSwgdGhpcy5nZXRQYXJrZXJFbnRpdHlTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSwgYWNjb3VudE5hbWUsIG51bGwsXG4gICAgICAgICAgICBhY2NvdW50LCBhY2NvdW50U2VjdGlvbnMuZGF0YS5hY2NvdW50RGV0YWlscy5pZCwgYWNjb3VudFNlY3Rpb25zLmRhdGEsIGAke2FjY291bnR9IC0gJHthY2NvdW50TmFtZX1gKSk7XG4gICAgICAgICAgY3R4LnBhdGNoU3RhdGUocGFya2VyRW50aXR5U3RhdGUpO1xuICAgICAgICB9KSk7XG5cbiAgICAgIGNhc2UgUGFya2VyVGlja2V0VHlwZS5TdWJBY2NvdW50OlxuICAgICAgICBjb25zdCBzdWJBY2NvdW50U2VjdGlvbnMkID0gdGhpcy5hY2NvdW50U2VydmljZVByb3h5LnN1YkFjY291bnREZWVwU2VhcmNoKGFjdGlvbi50aWNrZXRJZCwgZ3VpZCk7XG5cbiAgICAgICAgcmV0dXJuIHN1YkFjY291bnRTZWN0aW9ucyQucGlwZSh0YXAoc3ViQWNjb3VudFNlY3Rpb25zID0+IHtcbiAgICAgICAgICBjb25zdCBzdWJBY2NvdW50TmFtZSA9IGAjJHtzdWJBY2NvdW50U2VjdGlvbnMuZGF0YS5zdWJBY2NvdW50RGV0YWlscy5zdWJBY2NvdW50TmFtZX1gO1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24ocGFya2VyRW50aXR5U3RhdGUsIHRoaXMuZ2V0UGFya2VyRW50aXR5U3RhdGUocGFya2VyRW50aXR5U3RhdGUsIHN1YkFjY291bnROYW1lLCBudWxsLFxuICAgICAgICAgICAgc3ViQWNjb3VudCwgc3ViQWNjb3VudFNlY3Rpb25zLmRhdGEuc3ViQWNjb3VudERldGFpbHMuaWQsIHN1YkFjY291bnRTZWN0aW9ucy5kYXRhLCBgJHtzdWJBY2NvdW50fSAtICR7c3ViQWNjb3VudE5hbWV9YCkpO1xuICAgICAgICAgIGN0eC5wYXRjaFN0YXRlKHBhcmtlckVudGl0eVN0YXRlKTtcbiAgICAgICAgfSkpO1xuXG4gICAgICBjYXNlIFBhcmtlclRpY2tldFR5cGUuQWNjZXNzUHJvZmlsZU1vbnRobHlBbmRHdWVzdDpcbiAgICAgICAgY29uc3QgYWNjZXNzUHJvZmlsZU1vbnRobHlBbmRHdWVzdCQgPSB0aGlzLmFjY2Vzc1Byb2ZpbGVTZXJ2aWNlUHJveHkuZ2V0QWNjZXNzUHJvZmlsZU1vbnRobHlBbmRHdWVzdERlZXBTZWFyY2goYWN0aW9uLnBhcmtJZCwgYWN0aW9uLnRpY2tldElkLCBndWlkKTtcbiAgICAgICAgcmV0dXJuIGFjY2Vzc1Byb2ZpbGVNb250aGx5QW5kR3Vlc3QkLnBpcGUodGFwKGFjY2Vzc1Byb2ZpbGVNb250aGx5QW5kR3Vlc3RTZWN0aW9ucyA9PiB7XG4gICAgICAgICAgY29uc3QgYWNjZXNzUHJvZmlsZU1vbnRobHlBbmRHdWVzdE5hbWUgPSBgJHthY2Nlc3NQcm9maWxlTW9udGhseUFuZEd1ZXN0U2VjdGlvbnMuZGF0YS5hY2Nlc3NQcm9maWxlRGV0YWlscy5uYW1lfWA7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihwYXJrZXJFbnRpdHlTdGF0ZSwgdGhpcy5nZXRQYXJrZXJFbnRpdHlTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSwgYWNjZXNzUHJvZmlsZU1vbnRobHlBbmRHdWVzdE5hbWUsIG51bGwsXG4gICAgICAgICAgICBhY2Nlc3NQcm9maWxlLCBhY2Nlc3NQcm9maWxlTW9udGhseUFuZEd1ZXN0U2VjdGlvbnMuZGF0YS5hY2Nlc3NQcm9maWxlRGV0YWlscy5pZCwgYWNjZXNzUHJvZmlsZU1vbnRobHlBbmRHdWVzdFNlY3Rpb25zLmRhdGEsIGAke2FjY2Vzc1Byb2ZpbGVNb250aGx5QW5kR3Vlc3ROYW1lfWApKTtcbiAgICAgICAgICBjdHgucGF0Y2hTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSk7XG4gICAgICAgIH0pKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcGFya2VyRW50aXR5U3RhdGUuZGV0YWlscyA9IHt9O1xuICAgICAgICBjdHgucGF0Y2hTdGF0ZShwYXJrZXJFbnRpdHlTdGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oTG9hZFBhcmtlcnNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkUGFya2Vyc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrZXJTdGF0ZU1vZGVsPiwgeyBwYXJrSWQsIHR5cGUsIHNlYXJjaFZhbHVlLCBpc0x1Y2t5TFBSU2VhcmNoLCB0YWJsZU5hbWUgfTogTG9hZFBhcmtlcnNBY3Rpb24pIHtcbiAgICBjb25zdCBndWlkID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmd1aWQpO1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNlYXJjaDogbmV3IFBhcmtlclNlYXJjaFRlcm0odHlwZSwgc2VhcmNoVmFsdWUsIGlzTHVja3lMUFJTZWFyY2gsIHRhYmxlTmFtZSksXG4gICAgICBzZWFyY2hSZXN1bHRzOiBudWxsLFxuICAgIH0pO1xuXG4gICAgbGV0IGRhdGEkOiBPYnNlcnZhYmxlPGFueT47XG4gICAgc3dpdGNoICh0eXBlKSB7XG5cbiAgICAgIGNhc2UgUGFya2VyVGlja2V0VHlwZS5UcmFuc2llbnQ6XG4gICAgICAgIGNvbnN0IGZyb21TZWNvbmRzID0gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBmZXRjaEF0dGFjaGFibGVPbmx5VGlja2V0cyA9IGZhbHNlO1xuICAgICAgICBkYXRhJCA9IHRoaXMudHJhbnNpZW50U2VydmljZVByb3h5LnRyYW5zaW5ldFNoYWxsb3dTZWFyY2gocGFya0lkLCBzZWFyY2hWYWx1ZSwgZnJvbVNlY29uZHMsIGZldGNoQXR0YWNoYWJsZU9ubHlUaWNrZXRzLCBpc0x1Y2t5TFBSU2VhcmNoLCBndWlkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFBhcmtlclRpY2tldFR5cGUuRVZvdWNoZXI6XG4gICAgICAgIGRhdGEkID0gdGhpcy5ldm91Y2hlclNlcnZpY2VQcm94eS5lVm91Y2hlclNoYWxsb3dTZWFyY2gocGFya0lkLCBzZWFyY2hWYWx1ZSwgZ3VpZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQYXJrZXJUaWNrZXRUeXBlLkd1ZXN0OlxuICAgICAgY2FzZSBQYXJrZXJUaWNrZXRUeXBlLkhvdGVsR3Vlc3Q6XG4gICAgICAgIGRhdGEkID0gdGhpcy5ndWVzdFNlcnZpY2VQcm94eS5ndWVzdFNoYWxsb3dTZWFyY2gocGFya0lkLCBzZWFyY2hWYWx1ZSwgZ3VpZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQYXJrZXJUaWNrZXRUeXBlLk1vbnRobHk6XG4gICAgICAgIGRhdGEkID0gdGhpcy5tb250aGx5U2VydmljZVByb3h5Lm1vbnRobHlTaGFsbG93U2VhcmNoKHBhcmtJZCwgc2VhcmNoVmFsdWUsIGd1aWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUGFya2VyVGlja2V0VHlwZS5QYXltZW50OlxuICAgICAgICBkYXRhJCA9IHRoaXMucGF5bWVudFNlcnZpY2VQcm94eS5wYXltZW50U2hhbGxvd1NlYXJjaChwYXJrSWQsIHNlYXJjaFZhbHVlLCBndWlkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFBhcmtlclRpY2tldFR5cGUuQ2FyZE9uRmlsZTpcbiAgICAgICAgZGF0YSQgPSB0aGlzLnNwZWNpYWxUcmFuc2llbnRTZXJ2aWNlUHJveHkuZ2V0U3BlY2lhbFRyYW5zaWVudChwYXJrSWQsIHNlYXJjaFZhbHVlLCB0YWJsZU5hbWUsIGd1aWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGRhdGEkID0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YSQ/LnBpcGUodGFwKGRhdGEgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBzZWFyY2hSZXN1bHRzOiBkYXRhPy5kYXRhLFxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkTG9jYXRlVGlja2V0U2VhcmNoQWN0aW9uKVxuICBvbkxvYWRMb2NhdGVUaWNrZXRTZWFyY2hBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya2VyU3RhdGVNb2RlbD4sIHsgZ3VpZCwgcGFya0lkLCBzZWFyY2hWYWx1ZSB9OiBMb2FkTG9jYXRlVGlja2V0U2VhcmNoQWN0aW9uKSB7XG4gICAgY3R4LmRpc3BhdGNoKENsZWFyTG9jYXRlVGlja2V0U2VhcmNoQWN0aW9uKTtcblxuICAgIGNvbnN0IGZyb21TZWNvbmRzID0gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGZldGNoQXR0YWNoYWJsZU9ubHlUaWNrZXRzID0gdHJ1ZTtcbiAgICBjb25zdCBpc0x1Y2t5TFBSU2VhcmNoID0gZmFsc2U7XG5cbiAgICByZXR1cm4gdGhpcy50cmFuc2llbnRTZXJ2aWNlUHJveHkudHJhbnNpbmV0U2hhbGxvd1NlYXJjaChwYXJrSWQsIHNlYXJjaFZhbHVlLCBmcm9tU2Vjb25kcywgZmV0Y2hBdHRhY2hhYmxlT25seVRpY2tldHMsIGlzTHVja3lMUFJTZWFyY2gsIGd1aWQpLnBpcGUoXG4gICAgICB0YXAoZGF0YSA9PiB7XG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICBsb2NhdGVTZWFyY2hSZXN1bHRzOiBkYXRhLmRhdGEsXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkTG9jYXRlZFRpY2tldEFjdGlvbilcbiAgb25Mb2FkTG9jYXRlZFRpY2tldEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrZXJTdGF0ZU1vZGVsPiwgeyBndWlkLCBwYXJrSWQsIHRpY2tldElkIH06IExvYWRMb2NhdGVkVGlja2V0QWN0aW9uKSB7XG4gICAgY3R4LmRpc3BhdGNoKENsZWFyTG9jYXRlZFRpY2tldEFjdGlvbik7XG5cbiAgICByZXR1cm4gdGhpcy50cmFuc2llbnRTZXJ2aWNlUHJveHkuZ2V0TG9jYXRlVGlja2V0KHBhcmtJZCwgdGlja2V0SWQsIGd1aWQpLnBpcGUoXG4gICAgICB0YXAoZGF0YSA9PiB7XG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICBsb2NhdGVkVGlja2V0OiBkYXRhLmRhdGEsXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkVGlja2V0TnVtUGFya2Vyc0FjdGlvbilcbiAgb25Mb2FkVGlja2V0TnVtUGFya2Vyc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkVGlja2V0TnVtUGFya2Vyc0FjdGlvbikge1xuICAgIGNvbnN0IGd1aWQgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZ3VpZCk7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgc2VhcmNoOiBuZXcgUGFya2VyU2VhcmNoVGVybShhY3Rpb24udHlwZSwgYWN0aW9uLnRpY2tldE51bT8udG9TdHJpbmcoKSksXG4gICAgICBzZWFyY2hSZXN1bHRzOiBudWxsLFxuICAgIH0pO1xuXG4gICAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgICAgY2FzZSBQYXJrZXJUaWNrZXRUeXBlLlRyYW5zaWVudDpcbiAgICAgICAgY29uc3QgZmV0Y2hBdHRhY2hhYmxlT25seVRpY2tldHMgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgaXNMdWNreUxQUlNlYXJjaCA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zaWVudFNlcnZpY2VQcm94eS50cmFuc2luZXRTaGFsbG93U2VhcmNoKGFjdGlvbi5wYXJrSWQsIGFjdGlvbi50aWNrZXROdW0/LnRvU3RyaW5nKCksXG4gICAgICAgICAgYWN0aW9uLmV2ZW50VGltZSwgZmV0Y2hBdHRhY2hhYmxlT25seVRpY2tldHMsIGlzTHVja3lMUFJTZWFyY2gsIGd1aWQpLnBpcGUoXG4gICAgICAgICAgICB0YXAodHJhbnNpZW50U2hhbGxvd0RhdGEgPT4ge1xuICAgICAgICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgICAgICAgc2VhcmNoUmVzdWx0czogdHJhbnNpZW50U2hhbGxvd0RhdGEuZGF0YSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG5cbiAgICAgIGNhc2UgUGFya2VyVGlja2V0VHlwZS5QYXltZW50OlxuICAgICAgICBjb25zdCByZWFkZXJJZCA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoUGFya01hbmFnZXJTdGF0ZS5zZWxlY3RlZERldmljZVN0YXR1cyk/LmNvbW1JRDtcblxuICAgICAgICAvLyBBZGQgZmllbGRzIHRvIHF1ZXJ5IGJ5XG4gICAgICAgIGNvbnN0IHNlYXJjaEZpZWxkU2VsZWN0b3JzOiBTZWFyY2hGaWVsZFNlbGVjdG9yID0gYWN0aW9uLmV2ZW50VHlwZUlkID09PSBUeXBlQ2FzdERldmljZUV2ZW50LlN0aWNrZXJzID9cbiAgICAgICAgICBTZWFyY2hGaWVsZFNlbGVjdG9yLlN0aWNrZXJOdW0gOiBTZWFyY2hGaWVsZFNlbGVjdG9yLkNyZWRpdENhcmRMYXN0NDtcblxuICAgICAgICByZXR1cm4gdGhpcy5wYXltZW50U2VydmljZVByb3h5LnBheW1lbnRTaGFsbG93U2VhcmNoc0J5RmllbGRzKGFjdGlvbi5wYXJrSWQsIGFjdGlvbi50aWNrZXROdW0/LnRvU3RyaW5nKCksXG4gICAgICAgICAgcmVhZGVySWQsIGFjdGlvbi5ldmVudFRpbWUsIHNlYXJjaEZpZWxkU2VsZWN0b3JzLCBndWlkKS5waXBlKFxuICAgICAgICAgICAgdGFwKHBheW1lbnRTaGFsbG93RGF0YSA9PiB7XG4gICAgICAgICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICAgICAgICBzZWFyY2hSZXN1bHRzOiBwYXltZW50U2hhbGxvd0RhdGEuZGF0YSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBFTVBUWTsgLy8gUmV0dXJuIGVtcHR5IG9ic2VydmFibGUgZm9yIGRlZmF1bHQgY2FzZVxuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oU2V0U2VhcmNoVGVybUFjdGlvbilcbiAgb25TZXRTZWFyY2hUZXJtQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtlclN0YXRlTW9kZWw+LCB7IHR5cGUsIHZhbHVlLCBpc0x1Y2t5TFBSU2VhcmNoLCB0YWJsZU5hbWUgfTogU2V0U2VhcmNoVGVybUFjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHsgc2VhcmNoOiBuZXcgUGFya2VyU2VhcmNoVGVybSh0eXBlLCB2YWx1ZSwgaXNMdWNreUxQUlNlYXJjaCwgdGFibGVOYW1lKSB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJTZWFyY2hUZXJtQWN0aW9uKVxuICBvbkNsZWFyU2VhcmNoVGVybUFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrZXJTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNlYXJjaDoge1xuICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgdHlwZTogY3R4LmdldFN0YXRlKCkuc2VhcmNoLnR5cGUsXG4gICAgICAgIGlzTHVja3lMUFJTZWFyY2g6IGZhbHNlLFxuICAgICAgICB0bjogJycsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhclNlYXJjaFJlc3VsdHNBY3Rpb24pXG4gIG9uQ2xlYXJTZWFyY2hSZXN1bHRzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtlclN0YXRlTW9kZWw+KSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgc2VhcmNoUmVzdWx0czogbnVsbCxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJMb2NhdGVUaWNrZXRTZWFyY2hBY3Rpb24pXG4gIG9uQ2xlYXJMb2NhdGVUaWNrZXRTZWFyY2hBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya2VyU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBsb2NhdGVTZWFyY2hSZXN1bHRzOiBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhckxvY2F0ZWRUaWNrZXRBY3Rpb24pXG4gIG9uQ2xlYXJMb2NhdGVkVGlja2V0QWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtlclN0YXRlTW9kZWw+KSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgbG9jYXRlZFRpY2tldDogbnVsbCxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJTcGVjaWFsVHJhbnNpZW50VGFibGVzQWN0aW9uKVxuICBvbkNsZWFyU3BlY2lhbFRyYW5zaWVudFRhYmxlc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrZXJTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNwZWNpYWxUcmFuc2llbnRUYWJsZXM6IFtdLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihVcGRhdGVEb2N1bWVudEFjdGlvbilcbiAgb25VcGRhdGVEb2N1bWVudEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrZXJTdGF0ZU1vZGVsPiwgeyBkYXRhIH06IFVwZGF0ZURvY3VtZW50QWN0aW9uKSB7XG4gICAgY29uc3QgZGV0YWlsczogVHJhbnNpZW50U2VjdGlvbnNEdG8gfCBQYXltZW50U2VjdGlvbnNEdG8gPSBjdHguZ2V0U3RhdGUoKS5kZXRhaWxzO1xuICAgIGxldCBkb2NEZXRhaWxzOiBQYXltZW50c0RvY3VtZW50VGFibGVEYXRhRHRvO1xuICAgIGNvbnN0IHBheW1lbnREZXRhaWxzID0gKGRldGFpbHMgYXMgVHJhbnNpZW50U2VjdGlvbnNEdG8pPy5wYXltZW50RGV0YWlscztcbiAgICBpZiAocGF5bWVudERldGFpbHMpIHtcbiAgICAgIGRvY0RldGFpbHMgPSBwYXltZW50RGV0YWlscy5kYXRhLm1hcChkID0+XG4gICAgICAgIGQuZGF0YS5maW5kKGRkID0+IGRkLmRvY0RldGFpbHNJZCA9PSBkYXRhLmRvY0RldGFpbHNJZCAmJiBkZC5wYXJrSWQgPT0gZGF0YS5wYXJrSWQpKVswXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcGF5bWVudERldGFpbHMgPSAoZGV0YWlscyBhcyBQYXltZW50U2VjdGlvbnNEdG8pLnBheW1lbnRzRG9jdW1lbnREYXRhO1xuICAgICAgaWYgKHBheW1lbnREZXRhaWxzKSB7XG4gICAgICAgIGRvY0RldGFpbHMgPSBwYXltZW50RGV0YWlscy5kYXRhLmZpbmQoZGQgPT4gZGQuZG9jRGV0YWlsc0lkID09IGRhdGEuZG9jRGV0YWlsc0lkICYmIGRkLnBhcmtJZCA9PSBkYXRhLnBhcmtJZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZG9jRGV0YWlscy5jb21wYW55SUQgPSBkYXRhLmNvbXBhbnlJRDtcbiAgICBkb2NEZXRhaWxzLnN1YkNvbXBhbnlJRCA9IGRhdGEuc3ViQ29tcGFueUlEO1xuICAgIGRvY0RldGFpbHMuc21hcnRQYXltZW50VHlwZSA9IGRhdGEuc21hcnRQYXltZW50VHlwZTtcblxuICAgIGNvbnN0IGNsb25lID0gY2xvbmVEZWVwKGRldGFpbHMpO1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGRldGFpbHM6IGNsb25lLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihVcGRhdGVUaWNrZXRQbGF0ZUlkQWN0aW9uKVxuICBvblVwZGF0ZVRpY2tldFBsYXRlSWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya2VyU3RhdGVNb2RlbD4sIHsgcGxhdGVJZCB9OiBVcGRhdGVUaWNrZXRQbGF0ZUlkQWN0aW9uKSB7XG4gICAgY29uc3QgZGV0YWlscyA9IGN0eC5nZXRTdGF0ZSgpLmRldGFpbHM7XG4gICAgZGV0YWlscy50aWNrZXREZXRhaWxzLnBsYXRlSUQgPSBwbGF0ZUlkO1xuXG4gICAgY29uc3QgY2xvbmUgPSBjbG9uZURlZXAoZGV0YWlscyk7XG5cbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBkZXRhaWxzOiBjbG9uZSxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oUHJpbnRSZWNlaXB0QWN0aW9uKVxuICBvblByaW50UmVjZWlwdEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBQcmludFJlY2VpcHRBY3Rpb24pIHtcbiAgICBjb25zdCBndWlkID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmd1aWQpO1xuICAgIGNvbnN0IGRvY3VtZW50JCA9IHRoaXMuZmlsZVNlcnZpY2VQcm94eS5jcmVhdGVSZWNlaXB0KGFjdGlvbi5lbnRpdHlOYW1lLCBhY3Rpb24ucGF5bWVudElkLCBudWxsLCBhY3Rpb24ucGFya0lkLCBndWlkKTtcbiAgICBjb25zdCBtZXNzYWdlSW5mbzogTWVzc2FnZUluZm8gPSB7XG4gICAgICBkdXJhdGlvbjogRHVyYXRpb25NZXNzYWdlQmFyLmRpc3BsYXlDb250aW51b3VzbHksXG4gICAgICBtZXNzYWdlUGFyYW1zOiB7XG4gICAgICAgIGVudGl0eTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24ucmVjZWlwdClcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIGRvY3VtZW50JC5zdWJzY3JpYmUoKHJlczogR2VuZXJhdGVGaWxlUmVzcG9uc2VEdG9IdHRwUmVzcG9uc2VEYXRhKSA9PiB7XG4gICAgICBjb25zdCBub3RpZmljYXRpb25TdWJzY3JpcHRpb25EdG8gPSB0aGlzLm5vdGlmaWNhdGlvbkV2ZW50U2VydmljZS5nZXROb3RpZmljYXRpb25TdWJzY3JpcHRpb25zRW50aXR5KCk7XG4gICAgICBub3RpZmljYXRpb25TdWJzY3JpcHRpb25EdG8uaWRlbnRpZmllciA9IHJlcy5kYXRhPy5pZGVudGlmaWVyO1xuICAgICAgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uRHRvLnR5cGUgPSBOb3RpZmljYXRpb25FdmVudFR5cGUuUmVjZWlwdEdlbmVyYXRlZDtcbiAgICAgIG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbkR0by51bnN1YnNjcmliZSA9IGZhbHNlO1xuICAgICAgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uRHRvLmd1aWQgPSBndWlkO1xuICAgICAgdGhpcy5zaWduYWxSLnN1YnNjcmliZUZvck5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uRHRvKTtcblxuICAgICAgaWYgKGFjdGlvbi5lbWFpbCkge1xuICAgICAgICBjb25zdCByZXF1ZXN0ZWRSZWNlaXB0TWFwID0gY3R4LmdldFN0YXRlKCkucmVxdWVzdGVkUmVjZWlwdE1hcDtcbiAgICAgICAgcmVxdWVzdGVkUmVjZWlwdE1hcFtyZXMuZGF0YT8uaWRlbnRpZmllcl0gPSB7XG4gICAgICAgICAgZW1haWw6IGFjdGlvbi5lbWFpbCxcbiAgICAgICAgICBlbnRpdHlOYW1lOiBhY3Rpb24uZW50aXR5TmFtZSxcbiAgICAgICAgICBlbnRpdHlJZDogYWN0aW9uLnBheW1lbnRJZCxcbiAgICAgICAgICBndWlkLFxuICAgICAgICAgIHBhcmtJZDogYWN0aW9uLnBhcmtJZFxuICAgICAgICB9O1xuICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgcmVxdWVzdGVkUmVjZWlwdE1hcCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmluZm8oTG9jYWxpemF0aW9uLmVudGl0eV9pc19iZWluZ19wcm9jY2Vzc2VkLCBtZXNzYWdlSW5mbyk7XG4gICAgfSwgZXJyID0+IHtcbiAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IoTG9jYWxpemF0aW9uLmVudGl0eV9mYWlsZWRfdG9fZ2VuZXJhdGUsIG1lc3NhZ2VJbmZvKTtcbiAgICB9KTtcbiAgfVxuXG5cbiAgQEFjdGlvbihSZWNlaXB0R2VuZXJhdGVkQWN0aW9uKVxuICBvblJlY2VpcHRHZW5lcmF0ZWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogUmVjZWlwdEdlbmVyYXRlZEFjdGlvbikge1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbkR0byA9IHRoaXMubm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlLmdldE5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbnNFbnRpdHkoKTtcbiAgICBub3RpZmljYXRpb25TdWJzY3JpcHRpb25EdG8uaWRlbnRpZmllciA9IGFjdGlvbi5pZGVudGlmaWVyO1xuICAgIG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbkR0by50eXBlID0gTm90aWZpY2F0aW9uRXZlbnRUeXBlLlJlY2VpcHRHZW5lcmF0ZWQ7XG4gICAgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uRHRvLnVuc3Vic2NyaWJlID0gdHJ1ZTtcbiAgICB0aGlzLnNpZ25hbFIuc3Vic2NyaWJlRm9yTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25TdWJzY3JpcHRpb25EdG8pO1xuXG4gICAgY29uc3QgbWVzc2FnZUluZm86IE1lc3NhZ2VJbmZvID0ge1xuICAgICAgbWVzc2FnZVBhcmFtczogeyBlbnRpdHk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLnJlY2VpcHQpIH1cbiAgICB9O1xuXG4gICAgaWYgKGFjdGlvbi5ub3RpZmljYXRpb25EdG8uaXNTdWNjZXNzKSB7XG4gICAgICBjb25zdCByZWNlaXB0JCA9IHRoaXMuZmlsZVNlcnZpY2VQcm94eS5mZXRjaFJlY2VpcHQoYWN0aW9uLm5vdGlmaWNhdGlvbkR0by5uYW1lLCBhY3Rpb24uZ3VpZCk7XG5cbiAgICAgIHJldHVybiByZWNlaXB0JC5waXBlKHRhcCh7XG4gICAgICAgIG5leHQ6IHJlY2VpcHQgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlcXVlc3RlZFJlY2VpcHRNYXAgPSBjdHguZ2V0U3RhdGUoKS5yZXF1ZXN0ZWRSZWNlaXB0TWFwO1xuICAgICAgICAgIGlmIChyZXF1ZXN0ZWRSZWNlaXB0TWFwW2FjdGlvbi5pZGVudGlmaWVyXT8uZW1haWwpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgZW1haWwsIGVudGl0eU5hbWUsIGVudGl0eUlkLCBndWlkLCBwYXJrSWQgfSA9IHJlcXVlc3RlZFJlY2VpcHRNYXBbYWN0aW9uLmlkZW50aWZpZXJdO1xuICAgICAgICAgICAgdGhpcy5zZW5kUmVjZWlwdFRvTWFpbChjdHgsIGVtYWlsLCBlbnRpdHlOYW1lLCBlbnRpdHlJZCwgZ3VpZCwgcGFya0lkLCByZWNlaXB0LCBhY3Rpb24ubm90aWZpY2F0aW9uRHRvLm5hbWUpLnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgZGVsZXRlIHJlcXVlc3RlZFJlY2VpcHRNYXBbYWN0aW9uLmlkZW50aWZpZXJdO1xuICAgICAgICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICAgICAgICByZXF1ZXN0ZWRSZWNlaXB0TWFwLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZpbGVTZXJ2aWNlLmRvd25sb2FkRmlsZShyZWNlaXB0LCBGaWxlR2VuZXJhdGVNZXRob2Qudmlld1BERiwgTG9jYWxpemF0aW9uLnJlY2VpcHQpKSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLnN1Y2Nlc3MoTG9jYWxpemF0aW9uLmVudGl0eV9zdWNjZXNzX3RvX2dlbmVyYXRlLCBtZXNzYWdlSW5mbyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IoYEZhaWxlZCB3aGlsZSB0cnlpbmcgdG8gZmV0Y2ggcmVjZWlwdCAke2FjdGlvbi5ub3RpZmljYXRpb25EdG8ubmFtZX1gKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKGBGYWlsZWQgdG8gZ2VuZXJhdGUgcmVjZWlwdCAke2FjdGlvbi5ub3RpZmljYXRpb25EdG8ubmFtZX1gKTtcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKEdldFNwZWNpYWxUcmFuc2llbnRUYWJsZXNBY3Rpb24pXG4gIE9uU3BlY2lhbFRyYW5zaWVudFRhYmxlc1RhYmxlc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBHZXRTcGVjaWFsVHJhbnNpZW50VGFibGVzQWN0aW9uKSB7XG4gICAgY29uc3Qgc3BlY2lhbFRyYW5zaWVudFRhYmxlcyA9IGN0eC5nZXRTdGF0ZSgpLnNwZWNpYWxUcmFuc2llbnRUYWJsZXM7XG4gICAgaWYgKHNwZWNpYWxUcmFuc2llbnRUYWJsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBnZXRUYWJsZXMgPSB0aGlzLnNwZWNpYWxUcmFuc2llbnRTZXJ2aWNlUHJveHkuZ2V0VGFibGVzKGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5ndWlkKTtcbiAgICAgIHJldHVybiBnZXRUYWJsZXMucGlwZSh0YXAoc3BlY2lhbFRyYW5zaWVudFRhYmxlcyA9PiB7XG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICBzcGVjaWFsVHJhbnNpZW50VGFibGVzOiBzcGVjaWFsVHJhbnNpZW50VGFibGVzLmRhdGFcbiAgICAgICAgfSk7XG4gICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgQEFjdGlvbihSZWxvYWRQYXJrZXJBY3Rpb24pXG4gIG9uUmVsb2FkUGFya2VyQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtlclN0YXRlTW9kZWw+LCBhY3Rpb246IFJlbG9hZFBhcmtlckFjdGlvbikge1xuICAgIGNvbnN0IHBhcmtlclBhcmFtcyA9IGN0eC5nZXRTdGF0ZSgpLnBhcmtlclBhcmFtcztcbiAgICBjb25zdCByZWxvYWRTaWRlQmFyID0gcGFya2VyUGFyYW1zLnNlYXJjaFZhbHVlICE9PSB1bmRlZmluZWQgfHwgcGFya2VyUGFyYW1zLnRpY2tldElkICE9PSBudWxsO1xuXG4gICAgaWYgKHJlbG9hZFNpZGVCYXIpIHtcbiAgICAgIGNvbnN0IHJlbG9hZFBhcmtlclNlYXJjaFJlc3VsdCA9IHBhcmtlclBhcmFtcy50aWNrZXRJZCA9PT0gbnVsbDtcblxuICAgICAgaWYgKHJlbG9hZFBhcmtlclNlYXJjaFJlc3VsdCkge1xuICAgICAgICAvLyBzaGFsbG93IHNlYXJjaFxuICAgICAgICBjb25zdCBkZXZpY2VFdmVudE9wdGlvbnMgPSB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRJdGVtKERFVklDRV9FVkVOVF9PUFRJT05TX0tFWSk7XG5cbiAgICAgICAgaWYgKGRldmljZUV2ZW50T3B0aW9ucyAhPT0gbnVsbCkge1xuICAgICAgICAgIC8vIHNlYXJjaCBieSByb3cgY2xpY2sgaW4gZGV2aWNlIHRhYmxlXG4gICAgICAgICAgY29uc3QgeyB0aWNrZXROdW0sIGV2ZW50VGltZSwgZXZlbnRUeXBlSWQgfSA9IEpTT04ucGFyc2UoZGV2aWNlRXZlbnRPcHRpb25zKTtcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBMb2FkVGlja2V0TnVtUGFya2Vyc0FjdGlvbihwYXJrZXJQYXJhbXMudHlwZSwgcGFya2VyUGFyYW1zLnBhcmtJZCwgdGlja2V0TnVtLCBldmVudFRpbWUsIGV2ZW50VHlwZUlkKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTG9hZFBhcmtlcnNBY3Rpb24ocGFya2VyUGFyYW1zLnBhcmtJZCwgcGFya2VyUGFyYW1zLnR5cGUsXG4gICAgICAgICAgICBwYXJrZXJQYXJhbXMuc2VhcmNoVmFsdWUsIHBhcmtlclBhcmFtcy5pc0x1Y2t5TFBSU2VhcmNoLCBwYXJrZXJQYXJhbXMudGFibGVOYW1lKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGRlZXAgc2VhcmNoXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IExvYWRQYXJrZXJBY3Rpb24ocGFya2VyUGFyYW1zLnBhcmtJZCwgcGFya2VyUGFyYW1zLnR5cGUsXG4gICAgICAgICAgcGFya2VyUGFyYW1zLnNlYXJjaFZhbHVlLCBwYXJrZXJQYXJhbXMuaXNMdWNreUxQUlNlYXJjaCwgcGFya2VyUGFyYW1zLnRpY2tldElkLCBwYXJrZXJQYXJhbXMuc3ViVGlja2V0SWQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKFNldFRpY2tldElkZW50aWZpZXJBY3Rpb24pXG4gIG9uU2V0VGlja2V0SWRlbnRpZmllcklkQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtlclN0YXRlTW9kZWw+LCBhY3Rpb246IFNldFRpY2tldElkZW50aWZpZXJBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICB0aWNrZXRJZGVudGlmaWVyOiBhY3Rpb24udGlja2V0SWRlbnRpZmllclxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZW5kUmVjZWlwdFRvTWFpbChjdHg6IFN0YXRlQ29udGV4dDxQYXJrZXJTdGF0ZU1vZGVsPiwgZW1haWw6IHN0cmluZywgZW50aXR5TmFtZTogc3RyaW5nLCBlbnRpdHlJZDogbnVtYmVyLCBndWlkOiBzdHJpbmcsIHBhcmtJZDogbnVtYmVyLCBmaWxlOiBGaWxlUmVzcG9uc2UsIGZpbGVOYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMucG9wdWxhdGVTZW5kRW1haWxSZXF1ZXN0KGVtYWlsLCBlbnRpdHlOYW1lLCBlbnRpdHlJZCwgZ3VpZCwgcGFya0lkLCBmaWxlLCBmaWxlTmFtZSkpLnBpcGUoXG4gICAgICB0YXAoc2VuZEVtYWlsUmVxdWVzdCA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGE6IGFueSA9IHtcbiAgICAgICAgICBtb2RhbFRpdGxlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5zZW5kX3JlY2VpcHRfdG9fZW1haWwpLFxuICAgICAgICAgIHNlbmRFbWFpbDogZmFsc2UsXG4gICAgICAgICAgc2VuZEVtYWlsUmVxZXVzdDogc2VuZEVtYWlsUmVxdWVzdFxuICAgICAgICB9O1xuICAgICAgICBkYXRhLnNlbmRFbWFpbFJlcWV1c3QudG8gPSBlbWFpbDtcbiAgICAgICAgY3R4LmRpc3BhdGNoKG5ldyBTZW5kRW1haWxGcm9tRW50aXR5QWN0aW9uKGRhdGEuc2VuZEVtYWlsUmVxZXVzdCkpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwb3B1bGF0ZVNlbmRFbWFpbFJlcXVlc3QoZW1haWw6IHN0cmluZywgZW50aXR5TmFtZTogc3RyaW5nLCBlbnRpdHlJZDogbnVtYmVyLCBndWlkOiBzdHJpbmcsIHBhcmtJZDogbnVtYmVyLCBmaWxlOiBGaWxlUmVzcG9uc2UsIGZpbGVOYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBmaWxlQmFzZTY0ID0gYXdhaXQgYmxvYlRvQmFzZTY0KG5ldyBCbG9iKFtmaWxlLmRhdGFdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnIH0pKTtcbiAgICBjb25zdCBwZGZQYWdlc1BhcmFtZXRlcnNMaXN0OiB7IFtrZXk6IHN0cmluZ106IGFueTsgfVtdID0gW3tcbiAgICAgIGZpbGVOYW1lLFxuICAgICAgcGFya0lkOiBwYXJrSWQudG9TdHJpbmcoKSxcbiAgICAgIGd1aWQsXG4gICAgICBhdHRhY2hlZFBkZjogZmlsZUJhc2U2NC50b1N0cmluZygpLFxuICAgIH1dO1xuXG4gICAgY29uc3Qgc2VuZEVtYWlsUmVxdWVzdCA9IG5ldyBTZW5kRW1haWxSZXF1ZXN0RHRvKHtcbiAgICAgIGVudGl0eTogbmV3IFJlY2VpcHRFbnRpdHlQYXJhbXMoe1xuICAgICAgICBhdHRhY2hlZFBkZjogZmlsZUJhc2U2NC50b1N0cmluZygpLFxuICAgICAgICBpZDogZW50aXR5SWRcbiAgICAgIH0pLFxuICAgICAgdG86IGVtYWlsLFxuICAgICAgdGVtcGxhdGVUeXBlOiBUZW1wbGF0ZVR5cGUuUmVjZWlwdCxcbiAgICAgIHBkZlBhZ2VzUGFyYW1ldGVyc0xpc3QsXG4gICAgICBwZGZQYWdlc1BhcmFtZXRlcnM6IG51bGwsIC8vYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgdmVyc2lvbiA4LjJcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgZmlsZU5hbWUsXG4gICAgICAgIHN1YmplY3Q6IGAke3RoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLnJlY2VpcHQpfSA6ICR7ZW50aXR5TmFtZX1gLFxuICAgICAgfSxcbiAgICAgIGlzTXVsdGlQYWdlc0ZpbGU6IHVuZGVmaW5lZFxuICAgIH0pO1xuICAgIHJldHVybiBzZW5kRW1haWxSZXF1ZXN0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJrZXJFbnRpdHlTdGF0ZShwYXJrZXJTdGF0ZTogUGFya2VyU3RhdGVNb2RlbCwgZW50aXR5RGlzcGxheU5hbWU6IHN0cmluZywgdGFnczogbnVtYmVyW10sIGVudGl0eVR5cGVUcmFuc2xhdGU6IHN0cmluZyxcbiAgICB0aWNrZXRJZDogbnVtYmVyLCBkZXRhaWxzOiBhbnksIHBhcmtlckJyZWFkY3J1bWJWYWx1ZTogc3RyaW5nKSB7XG4gICAgY29uc3Qgc3RhdGUgPSB7IC4uLnBhcmtlclN0YXRlIH07XG4gICAgc3RhdGUudGlja2V0SWRlbnRpZmllci5lbnRpdHlEaXNwbGF5TmFtZSA9IGVudGl0eURpc3BsYXlOYW1lO1xuICAgIHN0YXRlLnRpY2tldElkZW50aWZpZXIudGFncyA9IHRhZ3M7XG4gICAgc3RhdGUudGlja2V0SWRlbnRpZmllci5lbnRpdHlUeXBlVHJhbnNsYXRlID0gZW50aXR5VHlwZVRyYW5zbGF0ZTtcbiAgICBzdGF0ZS50aWNrZXRJZGVudGlmaWVyLnRpY2tldElkID0gdGlja2V0SWQ7XG4gICAgc3RhdGUuZGV0YWlscyA9IGRldGFpbHM7XG4gICAgc3RhdGUucGFya2VyQnJlYWRjcnVtYlZhbHVlID0gcGFya2VyQnJlYWRjcnVtYlZhbHVlO1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufVxuIl19
|
|
@@ -109747,7 +109747,7 @@ let ParkerState = class ParkerState {
|
|
|
109747
109747
|
const requestedReceiptMap = ctx.getState().requestedReceiptMap;
|
|
109748
109748
|
if (requestedReceiptMap[action.identifier]?.email) {
|
|
109749
109749
|
const { email, entityName, entityId, guid, parkId } = requestedReceiptMap[action.identifier];
|
|
109750
|
-
this.sendReceiptToMail(ctx, email, entityName, entityId, guid, parkId, receipt, action.notificationDto.name);
|
|
109750
|
+
this.sendReceiptToMail(ctx, email, entityName, entityId, guid, parkId, receipt, action.notificationDto.name).subscribe();
|
|
109751
109751
|
delete requestedReceiptMap[action.identifier];
|
|
109752
109752
|
ctx.patchState({
|
|
109753
109753
|
requestedReceiptMap,
|