@dbx-tools/shared-genie 0.9.153 → 0.9.157
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.ts +4 -4
- package/lib/index.d.ts +4 -4
- package/lib/index.js +5 -5
- package/lib/src/agent-mode.js +7 -7
- package/lib/src/event.js +3 -3
- package/lib/src/genie-model.js +3 -5
- package/package.json +3 -43
- package/src/agent-mode.ts +6 -6
- package/src/event.ts +2 -2
- package/src/genie-model.ts +2 -4
package/index.ts
CHANGED
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
|
|
5
5
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/shared-genie";
|
|
6
|
-
export const PACKAGE_VERSION = "0.9.
|
|
6
|
+
export const PACKAGE_VERSION = "0.9.157";
|
|
7
7
|
export * as agentMode from "./src/agent-mode.ts";
|
|
8
8
|
export * as dashboards from "./src/dashboards.ts";
|
|
9
9
|
export * as event from "./src/event.ts";
|
|
10
10
|
export * as genieModel from "./src/genie-model.ts";
|
|
11
|
-
export { GenieAgentContentSchema, GenieAgentOutputItemSchema, GenieAgentConversationItemsSchema, GenieAgentResponseSchema, GenieAgentModeEventSchema, GenieAgentModeProjection } from "./src/agent-mode.ts";
|
|
11
|
+
export { GenieAgentContentSchema, GenieAgentOutputItemSchema, GenieAgentConversationItemsSchema, GenieAgentResponseSchema, GenieAgentModeEventSchema, GenieAgentModeProjection, projectAgentModeMessage, projectAgentModeConversation } from "./src/agent-mode.ts";
|
|
12
12
|
export type { GenieAgentConversationItems, GenieAgentOutputItem, GenieAgentResponse, GenieAgentModeEvent } from "./src/agent-mode.ts";
|
|
13
13
|
export { authorizationDetailsGrantRuleSchema, cronScheduleSchema, lifecycleStateSchema, dashboardViewSchema, deleteScheduleRequestSchema, deleteSubscriptionRequestSchema, genieSuggestedQuestionsAttachmentSchema, genieConversationSchema, genieConversationSummarySchema, genieCreateConversationMessageRequestSchema, genieDeleteConversationMessageRequestSchema, genieDeleteConversationRequestSchema, genieExecuteMessageAttachmentQueryRequestSchema, genieExecuteMessageQueryRequestSchema, genieFeedbackRatingSchema, genieGetConversationMessageRequestSchema, genieGetMessageAttachmentQueryResultRequestSchema, genieGetMessageQueryResultRequestSchema, genieGetMessageQueryResultResponseSchema, genieGetQueryResultByAttachmentRequestSchema, genieGetSpaceRequestSchema, genieListConversationMessagesRequestSchema, genieListConversationsRequestSchema, genieListConversationsResponseSchema, genieListSpacesRequestSchema, genieSpaceSchema, genieFeedbackSchema, resultSchema, messageStatusSchema, queryAttachmentParameterSchema, genieResultMetadataSchema, genieSendMessageFeedbackRequestSchema, genieStartConversationMessageRequestSchema, genieTrashSpaceRequestSchema, getDashboardRequestSchema, getPublishedDashboardRequestSchema, getPublishedDashboardTokenInfoRequestSchema, authorizationDetailsSchema, getScheduleRequestSchema, getSubscriptionRequestSchema, listDashboardsRequestSchema, dashboardSchema, listSchedulesRequestSchema, listSubscriptionsRequestSchema, messageErrorTypeSchema, migrateDashboardRequestSchema, publishRequestSchema, publishedDashboardSchema, schedulePauseStatusSchema, subscriptionSubscriberDestinationSchema, subscriptionSubscriberUserSchema, subscriberSchema, textAttachmentPurposeSchema, trashDashboardRequestSchema, unpublishDashboardRequestSchema, updateDashboardRequestSchema, scheduleSchema, createDashboardRequestSchema, createScheduleRequestSchema, subscriptionSchema, genieQueryAttachmentSchema, textAttachmentSchema, genieListSpacesResponseSchema, genieAttachmentSchema, messageErrorSchema, genieMessageSchema, getPublishedDashboardTokenInfoResponseSchema, listDashboardsResponseSchema, listSchedulesResponseSchema, listSubscriptionsResponseSchema, updateScheduleRequestSchema, createSubscriptionRequestSchema, genieListConversationMessagesResponseSchema, genieStartConversationResponseSchema } from "./src/dashboards.ts";
|
|
14
14
|
export type { AuthorizationDetailsGrantRule, CronSchedule, LifecycleState, DashboardView, DeleteScheduleRequest, DeleteSubscriptionRequest, GenieSuggestedQuestionsAttachment, GenieConversation, GenieConversationSummary, GenieCreateConversationMessageRequest, GenieDeleteConversationMessageRequest, GenieDeleteConversationRequest, GenieExecuteMessageAttachmentQueryRequest, GenieExecuteMessageQueryRequest, GenieFeedbackRating, GenieGetConversationMessageRequest, GenieGetMessageAttachmentQueryResultRequest, GenieGetMessageQueryResultRequest, GenieGetMessageQueryResultResponse, GenieGetQueryResultByAttachmentRequest, GenieGetSpaceRequest, GenieListConversationMessagesRequest, GenieListConversationsRequest, GenieListConversationsResponse, GenieListSpacesRequest, GenieFeedback, Result, QueryAttachmentParameter, GenieResultMetadata, GenieSendMessageFeedbackRequest, GenieStartConversationMessageRequest, GenieTrashSpaceRequest, GetDashboardRequest, GetPublishedDashboardRequest, GetPublishedDashboardTokenInfoRequest, AuthorizationDetails, GetScheduleRequest, GetSubscriptionRequest, ListDashboardsRequest, Dashboard, ListSchedulesRequest, ListSubscriptionsRequest, MessageErrorType, MigrateDashboardRequest, PublishRequest, PublishedDashboard, SchedulePauseStatus, SubscriptionSubscriberDestination, SubscriptionSubscriberUser, Subscriber, TextAttachmentPurpose, TrashDashboardRequest, UnpublishDashboardRequest, UpdateDashboardRequest, Schedule, CreateDashboardRequest, CreateScheduleRequest, Subscription, TextAttachment, GenieListSpacesResponse, MessageError, GetPublishedDashboardTokenInfoResponse, ListDashboardsResponse, ListSchedulesResponse, ListSubscriptionsResponse, UpdateScheduleRequest, CreateSubscriptionRequest, GenieListConversationMessagesResponse, GenieStartConversationResponse } from "./src/dashboards.ts";
|
|
15
|
-
export { detectStatus, detectAttachmentAdded, detectThinking, detectText, detectQuery, detectStatement, detectRows, detectSuggestedQuestions } from "./src/event.ts";
|
|
16
|
-
export { MessageStatusSchema, GenieThoughtTypeSchema, GenieThoughtSchema, ATTACHMENT_TYPES, KnownAttachmentTypeSchema, AttachmentTypeSchema, GenieQueryAttachmentSchema, GenieTextAttachmentPurposeSchema, GenieTextAttachmentSchema, GenieVizAttachmentSchema, GenieAttachmentSchema, GenieMessageSchema, GenieResponseSchema, GenieSpaceSchema, CreateGenieSpaceRequestSchema, GenieMessageFeedbackRequestSchema, TERMINAL_STATUSES, TerminalStatusSchema, GenieChatLocationSchema, QuestionEventSchema, MessageEventSchema, StatusEventSchema, AttachmentEventSchema, ThinkingEventSchema, TextEventSchema, QueryEventSchema, StatementEventSchema, RowsEventSchema, SuggestedQuestionsEventSchema, ResultEventSchema, GenieChatEventSchema } from "./src/genie-model.ts";
|
|
15
|
+
export { eventDetector, detectStatus, detectAttachmentAdded, detectThinking, detectText, detectQuery, detectStatement, detectRows, detectSuggestedQuestions, eventsFromMessage } from "./src/event.ts";
|
|
16
|
+
export { MessageStatusSchema, GenieThoughtTypeSchema, GenieThoughtSchema, ATTACHMENT_TYPES, KnownAttachmentTypeSchema, AttachmentTypeSchema, GenieQueryAttachmentSchema, GenieTextAttachmentPurposeSchema, GenieTextAttachmentSchema, GenieVizAttachmentSchema, GenieAttachmentSchema, GenieMessageSchema, GenieResponseSchema, GenieSpaceSchema, CreateGenieSpaceRequestSchema, GenieMessageFeedbackRequestSchema, TERMINAL_STATUSES, TerminalStatusSchema, isTerminalStatus, humanizeStatus, detectAttachmentType, GenieChatLocationSchema, QuestionEventSchema, MessageEventSchema, StatusEventSchema, AttachmentEventSchema, ThinkingEventSchema, TextEventSchema, QueryEventSchema, StatementEventSchema, RowsEventSchema, SuggestedQuestionsEventSchema, ResultEventSchema, GenieChatEventSchema } from "./src/genie-model.ts";
|
|
17
17
|
export type { MessageStatus, GenieThoughtType, GenieThought, KnownAttachmentType, AttachmentType, GenieQueryAttachment, GenieTextAttachmentPurpose, GenieTextAttachment, GenieVizAttachment, GenieAttachment, GenieMessage, GenieResponse, GenieSpace, CreateGenieSpaceRequest, GenieMessageFeedbackRequest, TerminalStatus, GenieChatLocation, QuestionEvent, MessageEvent, StatusEvent, AttachmentEvent, ThinkingEvent, TextEvent, QueryEvent, StatementEvent, RowsEvent, SuggestedQuestionsEvent, ResultEvent, GenieChatEvent, GenieChatEventType, GenieChatEventFields } from "./src/genie-model.ts";
|
package/lib/index.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
export declare const PACKAGE_IDENTIFIER = "@dbx-tools/shared-genie";
|
|
2
|
-
export declare const PACKAGE_VERSION = "0.9.
|
|
2
|
+
export declare const PACKAGE_VERSION = "0.9.157";
|
|
3
3
|
export * as agentMode from "./src/agent-mode.ts";
|
|
4
4
|
export * as dashboards from "./src/dashboards.ts";
|
|
5
5
|
export * as event from "./src/event.ts";
|
|
6
6
|
export * as genieModel from "./src/genie-model.ts";
|
|
7
|
-
export { GenieAgentContentSchema, GenieAgentOutputItemSchema, GenieAgentConversationItemsSchema, GenieAgentResponseSchema, GenieAgentModeEventSchema, GenieAgentModeProjection } from "./src/agent-mode.ts";
|
|
7
|
+
export { GenieAgentContentSchema, GenieAgentOutputItemSchema, GenieAgentConversationItemsSchema, GenieAgentResponseSchema, GenieAgentModeEventSchema, GenieAgentModeProjection, projectAgentModeMessage, projectAgentModeConversation } from "./src/agent-mode.ts";
|
|
8
8
|
export type { GenieAgentConversationItems, GenieAgentOutputItem, GenieAgentResponse, GenieAgentModeEvent } from "./src/agent-mode.ts";
|
|
9
9
|
export { authorizationDetailsGrantRuleSchema, cronScheduleSchema, lifecycleStateSchema, dashboardViewSchema, deleteScheduleRequestSchema, deleteSubscriptionRequestSchema, genieSuggestedQuestionsAttachmentSchema, genieConversationSchema, genieConversationSummarySchema, genieCreateConversationMessageRequestSchema, genieDeleteConversationMessageRequestSchema, genieDeleteConversationRequestSchema, genieExecuteMessageAttachmentQueryRequestSchema, genieExecuteMessageQueryRequestSchema, genieFeedbackRatingSchema, genieGetConversationMessageRequestSchema, genieGetMessageAttachmentQueryResultRequestSchema, genieGetMessageQueryResultRequestSchema, genieGetMessageQueryResultResponseSchema, genieGetQueryResultByAttachmentRequestSchema, genieGetSpaceRequestSchema, genieListConversationMessagesRequestSchema, genieListConversationsRequestSchema, genieListConversationsResponseSchema, genieListSpacesRequestSchema, genieSpaceSchema, genieFeedbackSchema, resultSchema, messageStatusSchema, queryAttachmentParameterSchema, genieResultMetadataSchema, genieSendMessageFeedbackRequestSchema, genieStartConversationMessageRequestSchema, genieTrashSpaceRequestSchema, getDashboardRequestSchema, getPublishedDashboardRequestSchema, getPublishedDashboardTokenInfoRequestSchema, authorizationDetailsSchema, getScheduleRequestSchema, getSubscriptionRequestSchema, listDashboardsRequestSchema, dashboardSchema, listSchedulesRequestSchema, listSubscriptionsRequestSchema, messageErrorTypeSchema, migrateDashboardRequestSchema, publishRequestSchema, publishedDashboardSchema, schedulePauseStatusSchema, subscriptionSubscriberDestinationSchema, subscriptionSubscriberUserSchema, subscriberSchema, textAttachmentPurposeSchema, trashDashboardRequestSchema, unpublishDashboardRequestSchema, updateDashboardRequestSchema, scheduleSchema, createDashboardRequestSchema, createScheduleRequestSchema, subscriptionSchema, genieQueryAttachmentSchema, textAttachmentSchema, genieListSpacesResponseSchema, genieAttachmentSchema, messageErrorSchema, genieMessageSchema, getPublishedDashboardTokenInfoResponseSchema, listDashboardsResponseSchema, listSchedulesResponseSchema, listSubscriptionsResponseSchema, updateScheduleRequestSchema, createSubscriptionRequestSchema, genieListConversationMessagesResponseSchema, genieStartConversationResponseSchema } from "./src/dashboards.ts";
|
|
10
10
|
export type { AuthorizationDetailsGrantRule, CronSchedule, LifecycleState, DashboardView, DeleteScheduleRequest, DeleteSubscriptionRequest, GenieSuggestedQuestionsAttachment, GenieConversation, GenieConversationSummary, GenieCreateConversationMessageRequest, GenieDeleteConversationMessageRequest, GenieDeleteConversationRequest, GenieExecuteMessageAttachmentQueryRequest, GenieExecuteMessageQueryRequest, GenieFeedbackRating, GenieGetConversationMessageRequest, GenieGetMessageAttachmentQueryResultRequest, GenieGetMessageQueryResultRequest, GenieGetMessageQueryResultResponse, GenieGetQueryResultByAttachmentRequest, GenieGetSpaceRequest, GenieListConversationMessagesRequest, GenieListConversationsRequest, GenieListConversationsResponse, GenieListSpacesRequest, GenieFeedback, Result, QueryAttachmentParameter, GenieResultMetadata, GenieSendMessageFeedbackRequest, GenieStartConversationMessageRequest, GenieTrashSpaceRequest, GetDashboardRequest, GetPublishedDashboardRequest, GetPublishedDashboardTokenInfoRequest, AuthorizationDetails, GetScheduleRequest, GetSubscriptionRequest, ListDashboardsRequest, Dashboard, ListSchedulesRequest, ListSubscriptionsRequest, MessageErrorType, MigrateDashboardRequest, PublishRequest, PublishedDashboard, SchedulePauseStatus, SubscriptionSubscriberDestination, SubscriptionSubscriberUser, Subscriber, TextAttachmentPurpose, TrashDashboardRequest, UnpublishDashboardRequest, UpdateDashboardRequest, Schedule, CreateDashboardRequest, CreateScheduleRequest, Subscription, TextAttachment, GenieListSpacesResponse, MessageError, GetPublishedDashboardTokenInfoResponse, ListDashboardsResponse, ListSchedulesResponse, ListSubscriptionsResponse, UpdateScheduleRequest, CreateSubscriptionRequest, GenieListConversationMessagesResponse, GenieStartConversationResponse } from "./src/dashboards.ts";
|
|
11
|
-
export { detectStatus, detectAttachmentAdded, detectThinking, detectText, detectQuery, detectStatement, detectRows, detectSuggestedQuestions } from "./src/event.ts";
|
|
12
|
-
export { MessageStatusSchema, GenieThoughtTypeSchema, GenieThoughtSchema, ATTACHMENT_TYPES, KnownAttachmentTypeSchema, AttachmentTypeSchema, GenieQueryAttachmentSchema, GenieTextAttachmentPurposeSchema, GenieTextAttachmentSchema, GenieVizAttachmentSchema, GenieAttachmentSchema, GenieMessageSchema, GenieResponseSchema, GenieSpaceSchema, CreateGenieSpaceRequestSchema, GenieMessageFeedbackRequestSchema, TERMINAL_STATUSES, TerminalStatusSchema, GenieChatLocationSchema, QuestionEventSchema, MessageEventSchema, StatusEventSchema, AttachmentEventSchema, ThinkingEventSchema, TextEventSchema, QueryEventSchema, StatementEventSchema, RowsEventSchema, SuggestedQuestionsEventSchema, ResultEventSchema, GenieChatEventSchema } from "./src/genie-model.ts";
|
|
11
|
+
export { eventDetector, detectStatus, detectAttachmentAdded, detectThinking, detectText, detectQuery, detectStatement, detectRows, detectSuggestedQuestions, eventsFromMessage } from "./src/event.ts";
|
|
12
|
+
export { MessageStatusSchema, GenieThoughtTypeSchema, GenieThoughtSchema, ATTACHMENT_TYPES, KnownAttachmentTypeSchema, AttachmentTypeSchema, GenieQueryAttachmentSchema, GenieTextAttachmentPurposeSchema, GenieTextAttachmentSchema, GenieVizAttachmentSchema, GenieAttachmentSchema, GenieMessageSchema, GenieResponseSchema, GenieSpaceSchema, CreateGenieSpaceRequestSchema, GenieMessageFeedbackRequestSchema, TERMINAL_STATUSES, TerminalStatusSchema, isTerminalStatus, humanizeStatus, detectAttachmentType, GenieChatLocationSchema, QuestionEventSchema, MessageEventSchema, StatusEventSchema, AttachmentEventSchema, ThinkingEventSchema, TextEventSchema, QueryEventSchema, StatementEventSchema, RowsEventSchema, SuggestedQuestionsEventSchema, ResultEventSchema, GenieChatEventSchema } from "./src/genie-model.ts";
|
|
13
13
|
export type { MessageStatus, GenieThoughtType, GenieThought, KnownAttachmentType, AttachmentType, GenieQueryAttachment, GenieTextAttachmentPurpose, GenieTextAttachment, GenieVizAttachment, GenieAttachment, GenieMessage, GenieResponse, GenieSpace, CreateGenieSpaceRequest, GenieMessageFeedbackRequest, TerminalStatus, GenieChatLocation, QuestionEvent, MessageEvent, StatusEvent, AttachmentEvent, ThinkingEvent, TextEvent, QueryEvent, StatementEvent, RowsEvent, SuggestedQuestionsEvent, ResultEvent, GenieChatEvent, GenieChatEventType, GenieChatEventFields } from "./src/genie-model.ts";
|
package/lib/index.js
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
// Regenerated from the exporting modules in ./src.
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/shared-genie";
|
|
5
|
-
export const PACKAGE_VERSION = "0.9.
|
|
5
|
+
export const PACKAGE_VERSION = "0.9.157";
|
|
6
6
|
export * as agentMode from "./src/agent-mode.js";
|
|
7
7
|
export * as dashboards from "./src/dashboards.js";
|
|
8
8
|
export * as event from "./src/event.js";
|
|
9
9
|
export * as genieModel from "./src/genie-model.js";
|
|
10
|
-
export { GenieAgentContentSchema, GenieAgentOutputItemSchema, GenieAgentConversationItemsSchema, GenieAgentResponseSchema, GenieAgentModeEventSchema, GenieAgentModeProjection } from "./src/agent-mode.js";
|
|
10
|
+
export { GenieAgentContentSchema, GenieAgentOutputItemSchema, GenieAgentConversationItemsSchema, GenieAgentResponseSchema, GenieAgentModeEventSchema, GenieAgentModeProjection, projectAgentModeMessage, projectAgentModeConversation } from "./src/agent-mode.js";
|
|
11
11
|
export { authorizationDetailsGrantRuleSchema, cronScheduleSchema, lifecycleStateSchema, dashboardViewSchema, deleteScheduleRequestSchema, deleteSubscriptionRequestSchema, genieSuggestedQuestionsAttachmentSchema, genieConversationSchema, genieConversationSummarySchema, genieCreateConversationMessageRequestSchema, genieDeleteConversationMessageRequestSchema, genieDeleteConversationRequestSchema, genieExecuteMessageAttachmentQueryRequestSchema, genieExecuteMessageQueryRequestSchema, genieFeedbackRatingSchema, genieGetConversationMessageRequestSchema, genieGetMessageAttachmentQueryResultRequestSchema, genieGetMessageQueryResultRequestSchema, genieGetMessageQueryResultResponseSchema, genieGetQueryResultByAttachmentRequestSchema, genieGetSpaceRequestSchema, genieListConversationMessagesRequestSchema, genieListConversationsRequestSchema, genieListConversationsResponseSchema, genieListSpacesRequestSchema, genieSpaceSchema, genieFeedbackSchema, resultSchema, messageStatusSchema, queryAttachmentParameterSchema, genieResultMetadataSchema, genieSendMessageFeedbackRequestSchema, genieStartConversationMessageRequestSchema, genieTrashSpaceRequestSchema, getDashboardRequestSchema, getPublishedDashboardRequestSchema, getPublishedDashboardTokenInfoRequestSchema, authorizationDetailsSchema, getScheduleRequestSchema, getSubscriptionRequestSchema, listDashboardsRequestSchema, dashboardSchema, listSchedulesRequestSchema, listSubscriptionsRequestSchema, messageErrorTypeSchema, migrateDashboardRequestSchema, publishRequestSchema, publishedDashboardSchema, schedulePauseStatusSchema, subscriptionSubscriberDestinationSchema, subscriptionSubscriberUserSchema, subscriberSchema, textAttachmentPurposeSchema, trashDashboardRequestSchema, unpublishDashboardRequestSchema, updateDashboardRequestSchema, scheduleSchema, createDashboardRequestSchema, createScheduleRequestSchema, subscriptionSchema, genieQueryAttachmentSchema, textAttachmentSchema, genieListSpacesResponseSchema, genieAttachmentSchema, messageErrorSchema, genieMessageSchema, getPublishedDashboardTokenInfoResponseSchema, listDashboardsResponseSchema, listSchedulesResponseSchema, listSubscriptionsResponseSchema, updateScheduleRequestSchema, createSubscriptionRequestSchema, genieListConversationMessagesResponseSchema, genieStartConversationResponseSchema } from "./src/dashboards.js";
|
|
12
|
-
export { detectStatus, detectAttachmentAdded, detectThinking, detectText, detectQuery, detectStatement, detectRows, detectSuggestedQuestions } from "./src/event.js";
|
|
13
|
-
export { MessageStatusSchema, GenieThoughtTypeSchema, GenieThoughtSchema, ATTACHMENT_TYPES, KnownAttachmentTypeSchema, AttachmentTypeSchema, GenieQueryAttachmentSchema, GenieTextAttachmentPurposeSchema, GenieTextAttachmentSchema, GenieVizAttachmentSchema, GenieAttachmentSchema, GenieMessageSchema, GenieResponseSchema, GenieSpaceSchema, CreateGenieSpaceRequestSchema, GenieMessageFeedbackRequestSchema, TERMINAL_STATUSES, TerminalStatusSchema, GenieChatLocationSchema, QuestionEventSchema, MessageEventSchema, StatusEventSchema, AttachmentEventSchema, ThinkingEventSchema, TextEventSchema, QueryEventSchema, StatementEventSchema, RowsEventSchema, SuggestedQuestionsEventSchema, ResultEventSchema, GenieChatEventSchema } from "./src/genie-model.js";
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyx5QkFBeUIsQ0FBQztBQUM1RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxLQUFLLFVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sS0FBSyxVQUFVLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLDBCQUEwQixFQUFFLGlDQUFpQyxFQUFFLHdCQUF3QixFQUFFLHlCQUF5QixFQUFFLHdCQUF3QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFNU0sT0FBTyxFQUFFLG1DQUFtQyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLDJCQUEyQixFQUFFLCtCQUErQixFQUFFLHVDQUF1QyxFQUFFLHVCQUF1QixFQUFFLDhCQUE4QixFQUFFLDJDQUEyQyxFQUFFLDJDQUEyQyxFQUFFLG9DQUFvQyxFQUFFLCtDQUErQyxFQUFFLHFDQUFxQyxFQUFFLHlCQUF5QixFQUFFLHdDQUF3QyxFQUFFLGlEQUFpRCxFQUFFLHVDQUF1QyxFQUFFLHdDQUF3QyxFQUFFLDRDQUE0QyxFQUFFLDBCQUEwQixFQUFFLDBDQUEwQyxFQUFFLG1DQUFtQyxFQUFFLG9DQUFvQyxFQUFFLDRCQUE0QixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSw4QkFBOEIsRUFBRSx5QkFBeUIsRUFBRSxxQ0FBcUMsRUFBRSwwQ0FBMEMsRUFBRSw0QkFBNEIsRUFBRSx5QkFBeUIsRUFBRSxrQ0FBa0MsRUFBRSwyQ0FBMkMsRUFBRSwwQkFBMEIsRUFBRSx3QkFBd0IsRUFBRSw0QkFBNEIsRUFBRSwyQkFBMkIsRUFBRSxlQUFlLEVBQUUsMEJBQTBCLEVBQUUsOEJBQThCLEVBQUUsc0JBQXNCLEVBQUUsNkJBQTZCLEVBQUUsb0JBQW9CLEVBQUUsd0JBQXdCLEVBQUUseUJBQXlCLEVBQUUsdUNBQXVDLEVBQUUsZ0NBQWdDLEVBQUUsZ0JBQWdCLEVBQUUsMkJBQTJCLEVBQUUsMkJBQTJCLEVBQUUsK0JBQStCLEVBQUUsNEJBQTRCLEVBQUUsY0FBYyxFQUFFLDRCQUE0QixFQUFFLDJCQUEyQixFQUFFLGtCQUFrQixFQUFFLDBCQUEwQixFQUFFLG9CQUFvQixFQUFFLDZCQUE2QixFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLDRDQUE0QyxFQUFFLDRCQUE0QixFQUFFLDJCQUEyQixFQUFFLCtCQUErQixFQUFFLDJCQUEyQixFQUFFLCtCQUErQixFQUFFLDJDQUEyQyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN3lFLE9BQU8sRUFBRSxZQUFZLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JLLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSx5QkFBeUIsRUFBRSxvQkFBb0IsRUFBRSwwQkFBMEIsRUFBRSxnQ0FBZ0MsRUFBRSx5QkFBeUIsRUFBRSx3QkFBd0IsRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSw2QkFBNkIsRUFBRSxpQ0FBaUMsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLDZCQUE2QixFQUFFLGlCQUFpQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL3NoYXJlZC1nZW5pZVwiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9IFwiMC45LjE1M1wiO1xuZXhwb3J0ICogYXMgYWdlbnRNb2RlIGZyb20gXCIuL3NyYy9hZ2VudC1tb2RlLnRzXCI7XG5leHBvcnQgKiBhcyBkYXNoYm9hcmRzIGZyb20gXCIuL3NyYy9kYXNoYm9hcmRzLnRzXCI7XG5leHBvcnQgKiBhcyBldmVudCBmcm9tIFwiLi9zcmMvZXZlbnQudHNcIjtcbmV4cG9ydCAqIGFzIGdlbmllTW9kZWwgZnJvbSBcIi4vc3JjL2dlbmllLW1vZGVsLnRzXCI7XG5leHBvcnQgeyBHZW5pZUFnZW50Q29udGVudFNjaGVtYSwgR2VuaWVBZ2VudE91dHB1dEl0ZW1TY2hlbWEsIEdlbmllQWdlbnRDb252ZXJzYXRpb25JdGVtc1NjaGVtYSwgR2VuaWVBZ2VudFJlc3BvbnNlU2NoZW1hLCBHZW5pZUFnZW50TW9kZUV2ZW50U2NoZW1hLCBHZW5pZUFnZW50TW9kZVByb2plY3Rpb24gfSBmcm9tIFwiLi9zcmMvYWdlbnQtbW9kZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBHZW5pZUFnZW50Q29udmVyc2F0aW9uSXRlbXMsIEdlbmllQWdlbnRPdXRwdXRJdGVtLCBHZW5pZUFnZW50UmVzcG9uc2UsIEdlbmllQWdlbnRNb2RlRXZlbnQgfSBmcm9tIFwiLi9zcmMvYWdlbnQtbW9kZS50c1wiO1xuZXhwb3J0IHsgYXV0aG9yaXphdGlvbkRldGFpbHNHcmFudFJ1bGVTY2hlbWEsIGNyb25TY2hlZHVsZVNjaGVtYSwgbGlmZWN5Y2xlU3RhdGVTY2hlbWEsIGRhc2hib2FyZFZpZXdTY2hlbWEsIGRlbGV0ZVNjaGVkdWxlUmVxdWVzdFNjaGVtYSwgZGVsZXRlU3Vic2NyaXB0aW9uUmVxdWVzdFNjaGVtYSwgZ2VuaWVTdWdnZXN0ZWRRdWVzdGlvbnNBdHRhY2htZW50U2NoZW1hLCBnZW5pZUNvbnZlcnNhdGlvblNjaGVtYSwgZ2VuaWVDb252ZXJzYXRpb25TdW1tYXJ5U2NoZW1hLCBnZW5pZUNyZWF0ZUNvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hLCBnZW5pZURlbGV0ZUNvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hLCBnZW5pZURlbGV0ZUNvbnZlcnNhdGlvblJlcXVlc3RTY2hlbWEsIGdlbmllRXhlY3V0ZU1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXF1ZXN0U2NoZW1hLCBnZW5pZUV4ZWN1dGVNZXNzYWdlUXVlcnlSZXF1ZXN0U2NoZW1hLCBnZW5pZUZlZWRiYWNrUmF0aW5nU2NoZW1hLCBnZW5pZUdldENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hLCBnZW5pZUdldE1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXN1bHRSZXF1ZXN0U2NoZW1hLCBnZW5pZUdldE1lc3NhZ2VRdWVyeVJlc3VsdFJlcXVlc3RTY2hlbWEsIGdlbmllR2V0TWVzc2FnZVF1ZXJ5UmVzdWx0UmVzcG9uc2VTY2hlbWEsIGdlbmllR2V0UXVlcnlSZXN1bHRCeUF0dGFjaG1lbnRSZXF1ZXN0U2NoZW1hLCBnZW5pZUdldFNwYWNlUmVxdWVzdFNjaGVtYSwgZ2VuaWVMaXN0Q29udmVyc2F0aW9uTWVzc2FnZXNSZXF1ZXN0U2NoZW1hLCBnZW5pZUxpc3RDb252ZXJzYXRpb25zUmVxdWVzdFNjaGVtYSwgZ2VuaWVMaXN0Q29udmVyc2F0aW9uc1Jlc3BvbnNlU2NoZW1hLCBnZW5pZUxpc3RTcGFjZXNSZXF1ZXN0U2NoZW1hLCBnZW5pZVNwYWNlU2NoZW1hLCBnZW5pZUZlZWRiYWNrU2NoZW1hLCByZXN1bHRTY2hlbWEsIG1lc3NhZ2VTdGF0dXNTY2hlbWEsIHF1ZXJ5QXR0YWNobWVudFBhcmFtZXRlclNjaGVtYSwgZ2VuaWVSZXN1bHRNZXRhZGF0YVNjaGVtYSwgZ2VuaWVTZW5kTWVzc2FnZUZlZWRiYWNrUmVxdWVzdFNjaGVtYSwgZ2VuaWVTdGFydENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hLCBnZW5pZVRyYXNoU3BhY2VSZXF1ZXN0U2NoZW1hLCBnZXREYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCBnZXRQdWJsaXNoZWREYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCBnZXRQdWJsaXNoZWREYXNoYm9hcmRUb2tlbkluZm9SZXF1ZXN0U2NoZW1hLCBhdXRob3JpemF0aW9uRGV0YWlsc1NjaGVtYSwgZ2V0U2NoZWR1bGVSZXF1ZXN0U2NoZW1hLCBnZXRTdWJzY3JpcHRpb25SZXF1ZXN0U2NoZW1hLCBsaXN0RGFzaGJvYXJkc1JlcXVlc3RTY2hlbWEsIGRhc2hib2FyZFNjaGVtYSwgbGlzdFNjaGVkdWxlc1JlcXVlc3RTY2hlbWEsIGxpc3RTdWJzY3JpcHRpb25zUmVxdWVzdFNjaGVtYSwgbWVzc2FnZUVycm9yVHlwZVNjaGVtYSwgbWlncmF0ZURhc2hib2FyZFJlcXVlc3RTY2hlbWEsIHB1Ymxpc2hSZXF1ZXN0U2NoZW1hLCBwdWJsaXNoZWREYXNoYm9hcmRTY2hlbWEsIHNjaGVkdWxlUGF1c2VTdGF0dXNTY2hlbWEsIHN1YnNjcmlwdGlvblN1YnNjcmliZXJEZXN0aW5hdGlvblNjaGVtYSwgc3Vic2NyaXB0aW9uU3Vic2NyaWJlclVzZXJTY2hlbWEsIHN1YnNjcmliZXJTY2hlbWEsIHRleHRBdHRhY2htZW50UHVycG9zZVNjaGVtYSwgdHJhc2hEYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCB1bnB1Ymxpc2hEYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCB1cGRhdGVEYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCBzY2hlZHVsZVNjaGVtYSwgY3JlYXRlRGFzaGJvYXJkUmVxdWVzdFNjaGVtYSwgY3JlYXRlU2NoZWR1bGVSZXF1ZXN0U2NoZW1hLCBzdWJzY3JpcHRpb25TY2hlbWEsIGdlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hLCB0ZXh0QXR0YWNobWVudFNjaGVtYSwgZ2VuaWVMaXN0U3BhY2VzUmVzcG9uc2VTY2hlbWEsIGdlbmllQXR0YWNobWVudFNjaGVtYSwgbWVzc2FnZUVycm9yU2NoZW1hLCBnZW5pZU1lc3NhZ2VTY2hlbWEsIGdldFB1Ymxpc2hlZERhc2hib2FyZFRva2VuSW5mb1Jlc3BvbnNlU2NoZW1hLCBsaXN0RGFzaGJvYXJkc1Jlc3BvbnNlU2NoZW1hLCBsaXN0U2NoZWR1bGVzUmVzcG9uc2VTY2hlbWEsIGxpc3RTdWJzY3JpcHRpb25zUmVzcG9uc2VTY2hlbWEsIHVwZGF0ZVNjaGVkdWxlUmVxdWVzdFNjaGVtYSwgY3JlYXRlU3Vic2NyaXB0aW9uUmVxdWVzdFNjaGVtYSwgZ2VuaWVMaXN0Q29udmVyc2F0aW9uTWVzc2FnZXNSZXNwb25zZVNjaGVtYSwgZ2VuaWVTdGFydENvbnZlcnNhdGlvblJlc3BvbnNlU2NoZW1hIH0gZnJvbSBcIi4vc3JjL2Rhc2hib2FyZHMudHNcIjtcbmV4cG9ydCB0eXBlIHsgQXV0aG9yaXphdGlvbkRldGFpbHNHcmFudFJ1bGUsIENyb25TY2hlZHVsZSwgTGlmZWN5Y2xlU3RhdGUsIERhc2hib2FyZFZpZXcsIERlbGV0ZVNjaGVkdWxlUmVxdWVzdCwgRGVsZXRlU3Vic2NyaXB0aW9uUmVxdWVzdCwgR2VuaWVTdWdnZXN0ZWRRdWVzdGlvbnNBdHRhY2htZW50LCBHZW5pZUNvbnZlcnNhdGlvbiwgR2VuaWVDb252ZXJzYXRpb25TdW1tYXJ5LCBHZW5pZUNyZWF0ZUNvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0LCBHZW5pZURlbGV0ZUNvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0LCBHZW5pZURlbGV0ZUNvbnZlcnNhdGlvblJlcXVlc3QsIEdlbmllRXhlY3V0ZU1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXF1ZXN0LCBHZW5pZUV4ZWN1dGVNZXNzYWdlUXVlcnlSZXF1ZXN0LCBHZW5pZUZlZWRiYWNrUmF0aW5nLCBHZW5pZUdldENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0LCBHZW5pZUdldE1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXN1bHRSZXF1ZXN0LCBHZW5pZUdldE1lc3NhZ2VRdWVyeVJlc3VsdFJlcXVlc3QsIEdlbmllR2V0TWVzc2FnZVF1ZXJ5UmVzdWx0UmVzcG9uc2UsIEdlbmllR2V0UXVlcnlSZXN1bHRCeUF0dGFjaG1lbnRSZXF1ZXN0LCBHZW5pZUdldFNwYWNlUmVxdWVzdCwgR2VuaWVMaXN0Q29udmVyc2F0aW9uTWVzc2FnZXNSZXF1ZXN0LCBHZW5pZUxpc3RDb252ZXJzYXRpb25zUmVxdWVzdCwgR2VuaWVMaXN0Q29udmVyc2F0aW9uc1Jlc3BvbnNlLCBHZW5pZUxpc3RTcGFjZXNSZXF1ZXN0LCBHZW5pZUZlZWRiYWNrLCBSZXN1bHQsIFF1ZXJ5QXR0YWNobWVudFBhcmFtZXRlciwgR2VuaWVSZXN1bHRNZXRhZGF0YSwgR2VuaWVTZW5kTWVzc2FnZUZlZWRiYWNrUmVxdWVzdCwgR2VuaWVTdGFydENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0LCBHZW5pZVRyYXNoU3BhY2VSZXF1ZXN0LCBHZXREYXNoYm9hcmRSZXF1ZXN0LCBHZXRQdWJsaXNoZWREYXNoYm9hcmRSZXF1ZXN0LCBHZXRQdWJsaXNoZWREYXNoYm9hcmRUb2tlbkluZm9SZXF1ZXN0LCBBdXRob3JpemF0aW9uRGV0YWlscywgR2V0U2NoZWR1bGVSZXF1ZXN0LCBHZXRTdWJzY3JpcHRpb25SZXF1ZXN0LCBMaXN0RGFzaGJvYXJkc1JlcXVlc3QsIERhc2hib2FyZCwgTGlzdFNjaGVkdWxlc1JlcXVlc3QsIExpc3RTdWJzY3JpcHRpb25zUmVxdWVzdCwgTWVzc2FnZUVycm9yVHlwZSwgTWlncmF0ZURhc2hib2FyZFJlcXVlc3QsIFB1Ymxpc2hSZXF1ZXN0LCBQdWJsaXNoZWREYXNoYm9hcmQsIFNjaGVkdWxlUGF1c2VTdGF0dXMsIFN1YnNjcmlwdGlvblN1YnNjcmliZXJEZXN0aW5hdGlvbiwgU3Vic2NyaXB0aW9uU3Vic2NyaWJlclVzZXIsIFN1YnNjcmliZXIsIFRleHRBdHRhY2htZW50UHVycG9zZSwgVHJhc2hEYXNoYm9hcmRSZXF1ZXN0LCBVbnB1Ymxpc2hEYXNoYm9hcmRSZXF1ZXN0LCBVcGRhdGVEYXNoYm9hcmRSZXF1ZXN0LCBTY2hlZHVsZSwgQ3JlYXRlRGFzaGJvYXJkUmVxdWVzdCwgQ3JlYXRlU2NoZWR1bGVSZXF1ZXN0LCBTdWJzY3JpcHRpb24sIFRleHRBdHRhY2htZW50LCBHZW5pZUxpc3RTcGFjZXNSZXNwb25zZSwgTWVzc2FnZUVycm9yLCBHZXRQdWJsaXNoZWREYXNoYm9hcmRUb2tlbkluZm9SZXNwb25zZSwgTGlzdERhc2hib2FyZHNSZXNwb25zZSwgTGlzdFNjaGVkdWxlc1Jlc3BvbnNlLCBMaXN0U3Vic2NyaXB0aW9uc1Jlc3BvbnNlLCBVcGRhdGVTY2hlZHVsZVJlcXVlc3QsIENyZWF0ZVN1YnNjcmlwdGlvblJlcXVlc3QsIEdlbmllTGlzdENvbnZlcnNhdGlvbk1lc3NhZ2VzUmVzcG9uc2UsIEdlbmllU3RhcnRDb252ZXJzYXRpb25SZXNwb25zZSB9IGZyb20gXCIuL3NyYy9kYXNoYm9hcmRzLnRzXCI7XG5leHBvcnQgeyBkZXRlY3RTdGF0dXMsIGRldGVjdEF0dGFjaG1lbnRBZGRlZCwgZGV0ZWN0VGhpbmtpbmcsIGRldGVjdFRleHQsIGRldGVjdFF1ZXJ5LCBkZXRlY3RTdGF0ZW1lbnQsIGRldGVjdFJvd3MsIGRldGVjdFN1Z2dlc3RlZFF1ZXN0aW9ucyB9IGZyb20gXCIuL3NyYy9ldmVudC50c1wiO1xuZXhwb3J0IHsgTWVzc2FnZVN0YXR1c1NjaGVtYSwgR2VuaWVUaG91Z2h0VHlwZVNjaGVtYSwgR2VuaWVUaG91Z2h0U2NoZW1hLCBBVFRBQ0hNRU5UX1RZUEVTLCBLbm93bkF0dGFjaG1lbnRUeXBlU2NoZW1hLCBBdHRhY2htZW50VHlwZVNjaGVtYSwgR2VuaWVRdWVyeUF0dGFjaG1lbnRTY2hlbWEsIEdlbmllVGV4dEF0dGFjaG1lbnRQdXJwb3NlU2NoZW1hLCBHZW5pZVRleHRBdHRhY2htZW50U2NoZW1hLCBHZW5pZVZpekF0dGFjaG1lbnRTY2hlbWEsIEdlbmllQXR0YWNobWVudFNjaGVtYSwgR2VuaWVNZXNzYWdlU2NoZW1hLCBHZW5pZVJlc3BvbnNlU2NoZW1hLCBHZW5pZVNwYWNlU2NoZW1hLCBDcmVhdGVHZW5pZVNwYWNlUmVxdWVzdFNjaGVtYSwgR2VuaWVNZXNzYWdlRmVlZGJhY2tSZXF1ZXN0U2NoZW1hLCBURVJNSU5BTF9TVEFUVVNFUywgVGVybWluYWxTdGF0dXNTY2hlbWEsIEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLCBRdWVzdGlvbkV2ZW50U2NoZW1hLCBNZXNzYWdlRXZlbnRTY2hlbWEsIFN0YXR1c0V2ZW50U2NoZW1hLCBBdHRhY2htZW50RXZlbnRTY2hlbWEsIFRoaW5raW5nRXZlbnRTY2hlbWEsIFRleHRFdmVudFNjaGVtYSwgUXVlcnlFdmVudFNjaGVtYSwgU3RhdGVtZW50RXZlbnRTY2hlbWEsIFJvd3NFdmVudFNjaGVtYSwgU3VnZ2VzdGVkUXVlc3Rpb25zRXZlbnRTY2hlbWEsIFJlc3VsdEV2ZW50U2NoZW1hLCBHZW5pZUNoYXRFdmVudFNjaGVtYSB9IGZyb20gXCIuL3NyYy9nZW5pZS1tb2RlbC50c1wiO1xuZXhwb3J0IHR5cGUgeyBNZXNzYWdlU3RhdHVzLCBHZW5pZVRob3VnaHRUeXBlLCBHZW5pZVRob3VnaHQsIEtub3duQXR0YWNobWVudFR5cGUsIEF0dGFjaG1lbnRUeXBlLCBHZW5pZVF1ZXJ5QXR0YWNobWVudCwgR2VuaWVUZXh0QXR0YWNobWVudFB1cnBvc2UsIEdlbmllVGV4dEF0dGFjaG1lbnQsIEdlbmllVml6QXR0YWNobWVudCwgR2VuaWVBdHRhY2htZW50LCBHZW5pZU1lc3NhZ2UsIEdlbmllUmVzcG9uc2UsIEdlbmllU3BhY2UsIENyZWF0ZUdlbmllU3BhY2VSZXF1ZXN0LCBHZW5pZU1lc3NhZ2VGZWVkYmFja1JlcXVlc3QsIFRlcm1pbmFsU3RhdHVzLCBHZW5pZUNoYXRMb2NhdGlvbiwgUXVlc3Rpb25FdmVudCwgTWVzc2FnZUV2ZW50LCBTdGF0dXNFdmVudCwgQXR0YWNobWVudEV2ZW50LCBUaGlua2luZ0V2ZW50LCBUZXh0RXZlbnQsIFF1ZXJ5RXZlbnQsIFN0YXRlbWVudEV2ZW50LCBSb3dzRXZlbnQsIFN1Z2dlc3RlZFF1ZXN0aW9uc0V2ZW50LCBSZXN1bHRFdmVudCwgR2VuaWVDaGF0RXZlbnQsIEdlbmllQ2hhdEV2ZW50VHlwZSwgR2VuaWVDaGF0RXZlbnRGaWVsZHMgfSBmcm9tIFwiLi9zcmMvZ2VuaWUtbW9kZWwudHNcIjtcbiJdfQ==
|
|
12
|
+
export { eventDetector, detectStatus, detectAttachmentAdded, detectThinking, detectText, detectQuery, detectStatement, detectRows, detectSuggestedQuestions, eventsFromMessage } from "./src/event.js";
|
|
13
|
+
export { MessageStatusSchema, GenieThoughtTypeSchema, GenieThoughtSchema, ATTACHMENT_TYPES, KnownAttachmentTypeSchema, AttachmentTypeSchema, GenieQueryAttachmentSchema, GenieTextAttachmentPurposeSchema, GenieTextAttachmentSchema, GenieVizAttachmentSchema, GenieAttachmentSchema, GenieMessageSchema, GenieResponseSchema, GenieSpaceSchema, CreateGenieSpaceRequestSchema, GenieMessageFeedbackRequestSchema, TERMINAL_STATUSES, TerminalStatusSchema, isTerminalStatus, humanizeStatus, detectAttachmentType, GenieChatLocationSchema, QuestionEventSchema, MessageEventSchema, StatusEventSchema, AttachmentEventSchema, ThinkingEventSchema, TextEventSchema, QueryEventSchema, StatementEventSchema, RowsEventSchema, SuggestedQuestionsEventSchema, ResultEventSchema, GenieChatEventSchema } from "./src/genie-model.js";
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyx5QkFBeUIsQ0FBQztBQUM1RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxLQUFLLFVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sS0FBSyxVQUFVLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLDBCQUEwQixFQUFFLGlDQUFpQyxFQUFFLHdCQUF3QixFQUFFLHlCQUF5QixFQUFFLHdCQUF3QixFQUFFLHVCQUF1QixFQUFFLDRCQUE0QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFblEsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLDJCQUEyQixFQUFFLCtCQUErQixFQUFFLHVDQUF1QyxFQUFFLHVCQUF1QixFQUFFLDhCQUE4QixFQUFFLDJDQUEyQyxFQUFFLDJDQUEyQyxFQUFFLG9DQUFvQyxFQUFFLCtDQUErQyxFQUFFLHFDQUFxQyxFQUFFLHlCQUF5QixFQUFFLHdDQUF3QyxFQUFFLGlEQUFpRCxFQUFFLHVDQUF1QyxFQUFFLHdDQUF3QyxFQUFFLDRDQUE0QyxFQUFFLDBCQUEwQixFQUFFLDBDQUEwQyxFQUFFLG1DQUFtQyxFQUFFLG9DQUFvQyxFQUFFLDRCQUE0QixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSw4QkFBOEIsRUFBRSx5QkFBeUIsRUFBRSxxQ0FBcUMsRUFBRSwwQ0FBMEMsRUFBRSw0QkFBNEIsRUFBRSx5QkFBeUIsRUFBRSxrQ0FBa0MsRUFBRSwyQ0FBMkMsRUFBRSwwQkFBMEIsRUFBRSx3QkFBd0IsRUFBRSw0QkFBNEIsRUFBRSwyQkFBMkIsRUFBRSxlQUFlLEVBQUUsMEJBQTBCLEVBQUUsOEJBQThCLEVBQUUsc0JBQXNCLEVBQUUsNkJBQTZCLEVBQUUsb0JBQW9CLEVBQUUsd0JBQXdCLEVBQUUseUJBQXlCLEVBQUUsdUNBQXVDLEVBQUUsZ0NBQWdDLEVBQUUsZ0JBQWdCLEVBQUUsMkJBQTJCLEVBQUUsMkJBQTJCLEVBQUUsK0JBQStCLEVBQUUsNEJBQTRCLEVBQUUsY0FBYyxFQUFFLDRCQUE0QixFQUFFLDJCQUEyQixFQUFFLGtCQUFrQixFQUFFLDBCQUEwQixFQUFFLG9CQUFvQixFQUFFLDZCQUE2QixFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLDRDQUE0QyxFQUFFLDRCQUE0QixFQUFFLDJCQUEyQixFQUFFLCtCQUErQixFQUFFLDJCQUEyQixFQUFFLCtCQUErQixFQUFFLDJDQUEyQyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN3lFLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsd0JBQXdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2TSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQUUsb0JBQW9CLEVBQUUsMEJBQTBCLEVBQUUsZ0NBQWdDLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsNkJBQTZCLEVBQUUsaUNBQWlDLEVBQUUsaUJBQWlCLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLG9CQUFvQixFQUFFLHVCQUF1QixFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsNkJBQTZCLEVBQUUsaUJBQWlCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvc2hhcmVkLWdlbmllXCI7XG5leHBvcnQgY29uc3QgUEFDS0FHRV9WRVJTSU9OID0gXCIwLjkuMTU3XCI7XG5leHBvcnQgKiBhcyBhZ2VudE1vZGUgZnJvbSBcIi4vc3JjL2FnZW50LW1vZGUudHNcIjtcbmV4cG9ydCAqIGFzIGRhc2hib2FyZHMgZnJvbSBcIi4vc3JjL2Rhc2hib2FyZHMudHNcIjtcbmV4cG9ydCAqIGFzIGV2ZW50IGZyb20gXCIuL3NyYy9ldmVudC50c1wiO1xuZXhwb3J0ICogYXMgZ2VuaWVNb2RlbCBmcm9tIFwiLi9zcmMvZ2VuaWUtbW9kZWwudHNcIjtcbmV4cG9ydCB7IEdlbmllQWdlbnRDb250ZW50U2NoZW1hLCBHZW5pZUFnZW50T3V0cHV0SXRlbVNjaGVtYSwgR2VuaWVBZ2VudENvbnZlcnNhdGlvbkl0ZW1zU2NoZW1hLCBHZW5pZUFnZW50UmVzcG9uc2VTY2hlbWEsIEdlbmllQWdlbnRNb2RlRXZlbnRTY2hlbWEsIEdlbmllQWdlbnRNb2RlUHJvamVjdGlvbiwgcHJvamVjdEFnZW50TW9kZU1lc3NhZ2UsIHByb2plY3RBZ2VudE1vZGVDb252ZXJzYXRpb24gfSBmcm9tIFwiLi9zcmMvYWdlbnQtbW9kZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBHZW5pZUFnZW50Q29udmVyc2F0aW9uSXRlbXMsIEdlbmllQWdlbnRPdXRwdXRJdGVtLCBHZW5pZUFnZW50UmVzcG9uc2UsIEdlbmllQWdlbnRNb2RlRXZlbnQgfSBmcm9tIFwiLi9zcmMvYWdlbnQtbW9kZS50c1wiO1xuZXhwb3J0IHsgYXV0aG9yaXphdGlvbkRldGFpbHNHcmFudFJ1bGVTY2hlbWEsIGNyb25TY2hlZHVsZVNjaGVtYSwgbGlmZWN5Y2xlU3RhdGVTY2hlbWEsIGRhc2hib2FyZFZpZXdTY2hlbWEsIGRlbGV0ZVNjaGVkdWxlUmVxdWVzdFNjaGVtYSwgZGVsZXRlU3Vic2NyaXB0aW9uUmVxdWVzdFNjaGVtYSwgZ2VuaWVTdWdnZXN0ZWRRdWVzdGlvbnNBdHRhY2htZW50U2NoZW1hLCBnZW5pZUNvbnZlcnNhdGlvblNjaGVtYSwgZ2VuaWVDb252ZXJzYXRpb25TdW1tYXJ5U2NoZW1hLCBnZW5pZUNyZWF0ZUNvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hLCBnZW5pZURlbGV0ZUNvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hLCBnZW5pZURlbGV0ZUNvbnZlcnNhdGlvblJlcXVlc3RTY2hlbWEsIGdlbmllRXhlY3V0ZU1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXF1ZXN0U2NoZW1hLCBnZW5pZUV4ZWN1dGVNZXNzYWdlUXVlcnlSZXF1ZXN0U2NoZW1hLCBnZW5pZUZlZWRiYWNrUmF0aW5nU2NoZW1hLCBnZW5pZUdldENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hLCBnZW5pZUdldE1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXN1bHRSZXF1ZXN0U2NoZW1hLCBnZW5pZUdldE1lc3NhZ2VRdWVyeVJlc3VsdFJlcXVlc3RTY2hlbWEsIGdlbmllR2V0TWVzc2FnZVF1ZXJ5UmVzdWx0UmVzcG9uc2VTY2hlbWEsIGdlbmllR2V0UXVlcnlSZXN1bHRCeUF0dGFjaG1lbnRSZXF1ZXN0U2NoZW1hLCBnZW5pZUdldFNwYWNlUmVxdWVzdFNjaGVtYSwgZ2VuaWVMaXN0Q29udmVyc2F0aW9uTWVzc2FnZXNSZXF1ZXN0U2NoZW1hLCBnZW5pZUxpc3RDb252ZXJzYXRpb25zUmVxdWVzdFNjaGVtYSwgZ2VuaWVMaXN0Q29udmVyc2F0aW9uc1Jlc3BvbnNlU2NoZW1hLCBnZW5pZUxpc3RTcGFjZXNSZXF1ZXN0U2NoZW1hLCBnZW5pZVNwYWNlU2NoZW1hLCBnZW5pZUZlZWRiYWNrU2NoZW1hLCByZXN1bHRTY2hlbWEsIG1lc3NhZ2VTdGF0dXNTY2hlbWEsIHF1ZXJ5QXR0YWNobWVudFBhcmFtZXRlclNjaGVtYSwgZ2VuaWVSZXN1bHRNZXRhZGF0YVNjaGVtYSwgZ2VuaWVTZW5kTWVzc2FnZUZlZWRiYWNrUmVxdWVzdFNjaGVtYSwgZ2VuaWVTdGFydENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hLCBnZW5pZVRyYXNoU3BhY2VSZXF1ZXN0U2NoZW1hLCBnZXREYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCBnZXRQdWJsaXNoZWREYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCBnZXRQdWJsaXNoZWREYXNoYm9hcmRUb2tlbkluZm9SZXF1ZXN0U2NoZW1hLCBhdXRob3JpemF0aW9uRGV0YWlsc1NjaGVtYSwgZ2V0U2NoZWR1bGVSZXF1ZXN0U2NoZW1hLCBnZXRTdWJzY3JpcHRpb25SZXF1ZXN0U2NoZW1hLCBsaXN0RGFzaGJvYXJkc1JlcXVlc3RTY2hlbWEsIGRhc2hib2FyZFNjaGVtYSwgbGlzdFNjaGVkdWxlc1JlcXVlc3RTY2hlbWEsIGxpc3RTdWJzY3JpcHRpb25zUmVxdWVzdFNjaGVtYSwgbWVzc2FnZUVycm9yVHlwZVNjaGVtYSwgbWlncmF0ZURhc2hib2FyZFJlcXVlc3RTY2hlbWEsIHB1Ymxpc2hSZXF1ZXN0U2NoZW1hLCBwdWJsaXNoZWREYXNoYm9hcmRTY2hlbWEsIHNjaGVkdWxlUGF1c2VTdGF0dXNTY2hlbWEsIHN1YnNjcmlwdGlvblN1YnNjcmliZXJEZXN0aW5hdGlvblNjaGVtYSwgc3Vic2NyaXB0aW9uU3Vic2NyaWJlclVzZXJTY2hlbWEsIHN1YnNjcmliZXJTY2hlbWEsIHRleHRBdHRhY2htZW50UHVycG9zZVNjaGVtYSwgdHJhc2hEYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCB1bnB1Ymxpc2hEYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCB1cGRhdGVEYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCBzY2hlZHVsZVNjaGVtYSwgY3JlYXRlRGFzaGJvYXJkUmVxdWVzdFNjaGVtYSwgY3JlYXRlU2NoZWR1bGVSZXF1ZXN0U2NoZW1hLCBzdWJzY3JpcHRpb25TY2hlbWEsIGdlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hLCB0ZXh0QXR0YWNobWVudFNjaGVtYSwgZ2VuaWVMaXN0U3BhY2VzUmVzcG9uc2VTY2hlbWEsIGdlbmllQXR0YWNobWVudFNjaGVtYSwgbWVzc2FnZUVycm9yU2NoZW1hLCBnZW5pZU1lc3NhZ2VTY2hlbWEsIGdldFB1Ymxpc2hlZERhc2hib2FyZFRva2VuSW5mb1Jlc3BvbnNlU2NoZW1hLCBsaXN0RGFzaGJvYXJkc1Jlc3BvbnNlU2NoZW1hLCBsaXN0U2NoZWR1bGVzUmVzcG9uc2VTY2hlbWEsIGxpc3RTdWJzY3JpcHRpb25zUmVzcG9uc2VTY2hlbWEsIHVwZGF0ZVNjaGVkdWxlUmVxdWVzdFNjaGVtYSwgY3JlYXRlU3Vic2NyaXB0aW9uUmVxdWVzdFNjaGVtYSwgZ2VuaWVMaXN0Q29udmVyc2F0aW9uTWVzc2FnZXNSZXNwb25zZVNjaGVtYSwgZ2VuaWVTdGFydENvbnZlcnNhdGlvblJlc3BvbnNlU2NoZW1hIH0gZnJvbSBcIi4vc3JjL2Rhc2hib2FyZHMudHNcIjtcbmV4cG9ydCB0eXBlIHsgQXV0aG9yaXphdGlvbkRldGFpbHNHcmFudFJ1bGUsIENyb25TY2hlZHVsZSwgTGlmZWN5Y2xlU3RhdGUsIERhc2hib2FyZFZpZXcsIERlbGV0ZVNjaGVkdWxlUmVxdWVzdCwgRGVsZXRlU3Vic2NyaXB0aW9uUmVxdWVzdCwgR2VuaWVTdWdnZXN0ZWRRdWVzdGlvbnNBdHRhY2htZW50LCBHZW5pZUNvbnZlcnNhdGlvbiwgR2VuaWVDb252ZXJzYXRpb25TdW1tYXJ5LCBHZW5pZUNyZWF0ZUNvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0LCBHZW5pZURlbGV0ZUNvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0LCBHZW5pZURlbGV0ZUNvbnZlcnNhdGlvblJlcXVlc3QsIEdlbmllRXhlY3V0ZU1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXF1ZXN0LCBHZW5pZUV4ZWN1dGVNZXNzYWdlUXVlcnlSZXF1ZXN0LCBHZW5pZUZlZWRiYWNrUmF0aW5nLCBHZW5pZUdldENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0LCBHZW5pZUdldE1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXN1bHRSZXF1ZXN0LCBHZW5pZUdldE1lc3NhZ2VRdWVyeVJlc3VsdFJlcXVlc3QsIEdlbmllR2V0TWVzc2FnZVF1ZXJ5UmVzdWx0UmVzcG9uc2UsIEdlbmllR2V0UXVlcnlSZXN1bHRCeUF0dGFjaG1lbnRSZXF1ZXN0LCBHZW5pZUdldFNwYWNlUmVxdWVzdCwgR2VuaWVMaXN0Q29udmVyc2F0aW9uTWVzc2FnZXNSZXF1ZXN0LCBHZW5pZUxpc3RDb252ZXJzYXRpb25zUmVxdWVzdCwgR2VuaWVMaXN0Q29udmVyc2F0aW9uc1Jlc3BvbnNlLCBHZW5pZUxpc3RTcGFjZXNSZXF1ZXN0LCBHZW5pZUZlZWRiYWNrLCBSZXN1bHQsIFF1ZXJ5QXR0YWNobWVudFBhcmFtZXRlciwgR2VuaWVSZXN1bHRNZXRhZGF0YSwgR2VuaWVTZW5kTWVzc2FnZUZlZWRiYWNrUmVxdWVzdCwgR2VuaWVTdGFydENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0LCBHZW5pZVRyYXNoU3BhY2VSZXF1ZXN0LCBHZXREYXNoYm9hcmRSZXF1ZXN0LCBHZXRQdWJsaXNoZWREYXNoYm9hcmRSZXF1ZXN0LCBHZXRQdWJsaXNoZWREYXNoYm9hcmRUb2tlbkluZm9SZXF1ZXN0LCBBdXRob3JpemF0aW9uRGV0YWlscywgR2V0U2NoZWR1bGVSZXF1ZXN0LCBHZXRTdWJzY3JpcHRpb25SZXF1ZXN0LCBMaXN0RGFzaGJvYXJkc1JlcXVlc3QsIERhc2hib2FyZCwgTGlzdFNjaGVkdWxlc1JlcXVlc3QsIExpc3RTdWJzY3JpcHRpb25zUmVxdWVzdCwgTWVzc2FnZUVycm9yVHlwZSwgTWlncmF0ZURhc2hib2FyZFJlcXVlc3QsIFB1Ymxpc2hSZXF1ZXN0LCBQdWJsaXNoZWREYXNoYm9hcmQsIFNjaGVkdWxlUGF1c2VTdGF0dXMsIFN1YnNjcmlwdGlvblN1YnNjcmliZXJEZXN0aW5hdGlvbiwgU3Vic2NyaXB0aW9uU3Vic2NyaWJlclVzZXIsIFN1YnNjcmliZXIsIFRleHRBdHRhY2htZW50UHVycG9zZSwgVHJhc2hEYXNoYm9hcmRSZXF1ZXN0LCBVbnB1Ymxpc2hEYXNoYm9hcmRSZXF1ZXN0LCBVcGRhdGVEYXNoYm9hcmRSZXF1ZXN0LCBTY2hlZHVsZSwgQ3JlYXRlRGFzaGJvYXJkUmVxdWVzdCwgQ3JlYXRlU2NoZWR1bGVSZXF1ZXN0LCBTdWJzY3JpcHRpb24sIFRleHRBdHRhY2htZW50LCBHZW5pZUxpc3RTcGFjZXNSZXNwb25zZSwgTWVzc2FnZUVycm9yLCBHZXRQdWJsaXNoZWREYXNoYm9hcmRUb2tlbkluZm9SZXNwb25zZSwgTGlzdERhc2hib2FyZHNSZXNwb25zZSwgTGlzdFNjaGVkdWxlc1Jlc3BvbnNlLCBMaXN0U3Vic2NyaXB0aW9uc1Jlc3BvbnNlLCBVcGRhdGVTY2hlZHVsZVJlcXVlc3QsIENyZWF0ZVN1YnNjcmlwdGlvblJlcXVlc3QsIEdlbmllTGlzdENvbnZlcnNhdGlvbk1lc3NhZ2VzUmVzcG9uc2UsIEdlbmllU3RhcnRDb252ZXJzYXRpb25SZXNwb25zZSB9IGZyb20gXCIuL3NyYy9kYXNoYm9hcmRzLnRzXCI7XG5leHBvcnQgeyBldmVudERldGVjdG9yLCBkZXRlY3RTdGF0dXMsIGRldGVjdEF0dGFjaG1lbnRBZGRlZCwgZGV0ZWN0VGhpbmtpbmcsIGRldGVjdFRleHQsIGRldGVjdFF1ZXJ5LCBkZXRlY3RTdGF0ZW1lbnQsIGRldGVjdFJvd3MsIGRldGVjdFN1Z2dlc3RlZFF1ZXN0aW9ucywgZXZlbnRzRnJvbU1lc3NhZ2UgfSBmcm9tIFwiLi9zcmMvZXZlbnQudHNcIjtcbmV4cG9ydCB7IE1lc3NhZ2VTdGF0dXNTY2hlbWEsIEdlbmllVGhvdWdodFR5cGVTY2hlbWEsIEdlbmllVGhvdWdodFNjaGVtYSwgQVRUQUNITUVOVF9UWVBFUywgS25vd25BdHRhY2htZW50VHlwZVNjaGVtYSwgQXR0YWNobWVudFR5cGVTY2hlbWEsIEdlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hLCBHZW5pZVRleHRBdHRhY2htZW50UHVycG9zZVNjaGVtYSwgR2VuaWVUZXh0QXR0YWNobWVudFNjaGVtYSwgR2VuaWVWaXpBdHRhY2htZW50U2NoZW1hLCBHZW5pZUF0dGFjaG1lbnRTY2hlbWEsIEdlbmllTWVzc2FnZVNjaGVtYSwgR2VuaWVSZXNwb25zZVNjaGVtYSwgR2VuaWVTcGFjZVNjaGVtYSwgQ3JlYXRlR2VuaWVTcGFjZVJlcXVlc3RTY2hlbWEsIEdlbmllTWVzc2FnZUZlZWRiYWNrUmVxdWVzdFNjaGVtYSwgVEVSTUlOQUxfU1RBVFVTRVMsIFRlcm1pbmFsU3RhdHVzU2NoZW1hLCBpc1Rlcm1pbmFsU3RhdHVzLCBodW1hbml6ZVN0YXR1cywgZGV0ZWN0QXR0YWNobWVudFR5cGUsIEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLCBRdWVzdGlvbkV2ZW50U2NoZW1hLCBNZXNzYWdlRXZlbnRTY2hlbWEsIFN0YXR1c0V2ZW50U2NoZW1hLCBBdHRhY2htZW50RXZlbnRTY2hlbWEsIFRoaW5raW5nRXZlbnRTY2hlbWEsIFRleHRFdmVudFNjaGVtYSwgUXVlcnlFdmVudFNjaGVtYSwgU3RhdGVtZW50RXZlbnRTY2hlbWEsIFJvd3NFdmVudFNjaGVtYSwgU3VnZ2VzdGVkUXVlc3Rpb25zRXZlbnRTY2hlbWEsIFJlc3VsdEV2ZW50U2NoZW1hLCBHZW5pZUNoYXRFdmVudFNjaGVtYSB9IGZyb20gXCIuL3NyYy9nZW5pZS1tb2RlbC50c1wiO1xuZXhwb3J0IHR5cGUgeyBNZXNzYWdlU3RhdHVzLCBHZW5pZVRob3VnaHRUeXBlLCBHZW5pZVRob3VnaHQsIEtub3duQXR0YWNobWVudFR5cGUsIEF0dGFjaG1lbnRUeXBlLCBHZW5pZVF1ZXJ5QXR0YWNobWVudCwgR2VuaWVUZXh0QXR0YWNobWVudFB1cnBvc2UsIEdlbmllVGV4dEF0dGFjaG1lbnQsIEdlbmllVml6QXR0YWNobWVudCwgR2VuaWVBdHRhY2htZW50LCBHZW5pZU1lc3NhZ2UsIEdlbmllUmVzcG9uc2UsIEdlbmllU3BhY2UsIENyZWF0ZUdlbmllU3BhY2VSZXF1ZXN0LCBHZW5pZU1lc3NhZ2VGZWVkYmFja1JlcXVlc3QsIFRlcm1pbmFsU3RhdHVzLCBHZW5pZUNoYXRMb2NhdGlvbiwgUXVlc3Rpb25FdmVudCwgTWVzc2FnZUV2ZW50LCBTdGF0dXNFdmVudCwgQXR0YWNobWVudEV2ZW50LCBUaGlua2luZ0V2ZW50LCBUZXh0RXZlbnQsIFF1ZXJ5RXZlbnQsIFN0YXRlbWVudEV2ZW50LCBSb3dzRXZlbnQsIFN1Z2dlc3RlZFF1ZXN0aW9uc0V2ZW50LCBSZXN1bHRFdmVudCwgR2VuaWVDaGF0RXZlbnQsIEdlbmllQ2hhdEV2ZW50VHlwZSwgR2VuaWVDaGF0RXZlbnRGaWVsZHMgfSBmcm9tIFwiLi9zcmMvZ2VuaWUtbW9kZWwudHNcIjtcbiJdfQ==
|
package/lib/src/agent-mode.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
|
-
import {
|
|
9
|
+
import { parseRecord, isRecord } from "@dbx-tools/shared-core";
|
|
10
10
|
import { z } from "zod";
|
|
11
11
|
import { GenieMessageSchema, } from "./genie-model.js";
|
|
12
12
|
/** Agent Mode output content item with forward-compatible fields. */
|
|
@@ -121,7 +121,7 @@ function agentItemKey(item, index) {
|
|
|
121
121
|
}
|
|
122
122
|
/** Project one Agent Mode response snapshot onto the shared Genie message shape. */
|
|
123
123
|
export function projectAgentModeMessage(spaceId, content, response, items) {
|
|
124
|
-
const errorValue =
|
|
124
|
+
const errorValue = isRecord(response.error) ? response.error : undefined;
|
|
125
125
|
const errorMessage = typeof errorValue?.message === "string"
|
|
126
126
|
? errorValue.message
|
|
127
127
|
: typeof response.error === "string"
|
|
@@ -172,7 +172,7 @@ export function projectAgentModeConversation(spaceId, conversationId, items, sta
|
|
|
172
172
|
});
|
|
173
173
|
}
|
|
174
174
|
function itemMetadata(item) {
|
|
175
|
-
return
|
|
175
|
+
return isRecord(item.metadata) ? item.metadata : undefined;
|
|
176
176
|
}
|
|
177
177
|
function itemMessageId(item) {
|
|
178
178
|
const messageId = itemMetadata(item)?.message_id;
|
|
@@ -218,7 +218,7 @@ function itemAttachments(item) {
|
|
|
218
218
|
}
|
|
219
219
|
if (item.type === "function_call") {
|
|
220
220
|
const callId = item.call_id ?? item.id;
|
|
221
|
-
const argumentsValue =
|
|
221
|
+
const argumentsValue = parseRecord(item.arguments);
|
|
222
222
|
const query = typeof argumentsValue?.sql === "string"
|
|
223
223
|
? argumentsValue.sql
|
|
224
224
|
: typeof argumentsValue?.query === "string"
|
|
@@ -241,7 +241,7 @@ function itemAttachments(item) {
|
|
|
241
241
|
}
|
|
242
242
|
if (item.type === "function_call_output" && item.output !== undefined) {
|
|
243
243
|
const viz = itemMetadata(item)?.viz;
|
|
244
|
-
if (
|
|
244
|
+
if (isRecord(viz) && typeof viz.attachment_id === "string") {
|
|
245
245
|
return [
|
|
246
246
|
{
|
|
247
247
|
attachment_id: viz.attachment_id,
|
|
@@ -266,7 +266,7 @@ function itemAttachments(item) {
|
|
|
266
266
|
return [];
|
|
267
267
|
}
|
|
268
268
|
function visualizationAttachmentId(metadata) {
|
|
269
|
-
if (!
|
|
269
|
+
if (!isRecord(metadata) || !isRecord(metadata.viz))
|
|
270
270
|
return undefined;
|
|
271
271
|
return typeof metadata.viz.attachment_id === "string" ? metadata.viz.attachment_id : undefined;
|
|
272
272
|
}
|
|
@@ -287,4 +287,4 @@ function textAttachment(id, content, metadata) {
|
|
|
287
287
|
},
|
|
288
288
|
};
|
|
289
289
|
}
|
|
290
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQtbW9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZ2VudC1tb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsT0FBTyxFQUNMLGtCQUFrQixHQUluQixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLHFFQUFxRTtBQUNyRSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDO0tBQ3JDLE1BQU0sQ0FBQztJQUNOLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2hCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNCLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ2pDLENBQUM7S0FDRCxLQUFLLEVBQUUsQ0FBQztBQUVYLG9FQUFvRTtBQUNwRSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxDQUFDO0tBQ3hDLE1BQU0sQ0FBQztJQUNOLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2hCLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3pCLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzlCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNCLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2hDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzdCLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMs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QUVsQixPQUFPO1FBQ0wsYUFBYSxFQUFFLEVBQUU7UUFDakIsZUFBZSxFQUFFLE1BQU07UUFDdkIsSUFBSSxFQUFFO1lBQ0osRUFBRTtZQUNGLE9BQU87WUFDUCxPQUFPLEVBQUUsZ0NBQWdDO1lBQ3pDLEdBQUcsQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDaEQ7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQnJvd3Nlci1zYWZlIEdlbmllIEFnZW50IE1vZGUgU1NFIGNvbnRyYWN0cy5cbiAqXG4gKiBTY2hlbWFzIHZhbGlkYXRlIHRoZSBzdGFibGUgUmVzcG9uc2VzLXN0eWxlIGV2ZW50IGVudmVsb3BlIHdoaWxlIHByZXNlcnZpbmdcbiAqIGFkZGl0aXZlIGZpZWxkcyBhbmQgb3V0cHV0LWl0ZW0gdmFyaWFudHMgaW50cm9kdWNlZCBieSB0aGUgYmV0YSBBUEkuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGpzb24sIG9iamVjdCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5pbXBvcnQge1xuICBHZW5pZU1lc3NhZ2VTY2hlbWEsXG4gIHR5cGUgR2VuaWVBdHRhY2htZW50LFxuICB0eXBlIEdlbmllTWVzc2FnZSxcbiAgdHlwZSBHZW5pZVRob3VnaHQsXG59IGZyb20gXCIuL2dlbmllLW1vZGVsLnRzXCI7XG5cbi8qKiBBZ2VudCBNb2RlIG91dHB1dCBjb250ZW50IGl0ZW0gd2l0aCBmb3J3YXJkLWNvbXBhdGlibGUgZmllbGRzLiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllQWdlbnRDb250ZW50U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICB0eXBlOiB6LnN0cmluZygpLFxuICAgIHRleHQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBtZXRhZGF0YTogei51bmtub3duKCkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLmxvb3NlKCk7XG5cbi8qKiBBZ2VudCBNb2RlIHJlc3BvbnNlIG91dHB1dCBpdGVtIHdpdGgga25vd24gcHJvamVjdGlvbiBmaWVsZHMuICovXG5leHBvcnQgY29uc3QgR2VuaWVBZ2VudE91dHB1dEl0ZW1TY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHR5cGU6IHouc3RyaW5nKCksXG4gICAgaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBjYWxsX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGFyZ3VtZW50czogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIG91dHB1dDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHN0YXR1czogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHJvbGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBjb250ZW50OiB6LmFycmF5KEdlbmllQWdlbnRDb250ZW50U2NoZW1hKS5vcHRpb25hbCgpLFxuICAgIG1ldGFkYXRhOiB6LnVua25vd24oKS5vcHRpb25hbCgpLFxuICAgIGNyZWF0ZWRfYXQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLmxvb3NlKCk7XG5cbi8qKiBPbmUgcGFnZSBvZiBhbiBBZ2VudCBNb2RlIGNvbnZlcnNhdGlvbidzIGl0ZW0gaGlzdG9yeS4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZUFnZW50Q29udmVyc2F0aW9uSXRlbXNTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGRhdGE6IHouYXJyYXkoR2VuaWVBZ2VudE91dHB1dEl0ZW1TY2hlbWEpLmRlc2NyaWJlKFwiQ29udmVyc2F0aW9uIGl0ZW1zLCBvbGRlc3QgZmlyc3QuXCIpLFxuICAgIGhhc19tb3JlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiV2hldGhlciBhbm90aGVyIHBhZ2UgZm9sbG93cyBgbGFzdF9pZGAuXCIpLFxuICAgIGxhc3RfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkl0ZW0gaWQgdGhhdCB0aGUgbmV4dCBwYWdlIHN0YXJ0cyBhZnRlci5cIiksXG4gICAgc3RhdHVzOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDdXJyZW50IHN0YXR1cyBvZiB0aGUgY29udmVyc2F0aW9uJ3MgbGF0ZXN0IHJlc3BvbnNlLlwiKSxcbiAgfSlcbiAgLmxvb3NlKClcbiAgLmRlc2NyaWJlKFwiUGFnZSBvZiBBZ2VudCBNb2RlIGNvbnZlcnNhdGlvbiBpdGVtcy5cIik7XG5cbi8qKiBWYWxpZGF0ZWQgQWdlbnQgTW9kZSBjb252ZXJzYXRpb24gaXRlbSBwYWdlLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVBZ2VudENvbnZlcnNhdGlvbkl0ZW1zID0gei5pbmZlcjx0eXBlb2YgR2VuaWVBZ2VudENvbnZlcnNhdGlvbkl0ZW1zU2NoZW1hPjtcblxuLyoqIEdlbmllIEFnZW50IE1vZGUgcmVzcG9uc2UgY2FycmllZCBieSBsaWZlY3ljbGUgZXZlbnRzLiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllQWdlbnRSZXNwb25zZVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgb2JqZWN0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaWQ6IHouc3RyaW5nKCksXG4gICAgbW9kZWw6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBzdGF0dXM6IHouc3RyaW5nKCksXG4gICAgb3V0cHV0OiB6LmFycmF5KEdlbmllQWdlbnRPdXRwdXRJdGVtU2NoZW1hKS5vcHRpb25hbCgpLFxuICAgIGNvbnZlcnNhdGlvbl9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGNyZWF0ZWRfYXQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICBlcnJvcjogei51bmtub3duKCkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLmxvb3NlKCk7XG5cbi8qKiBPbmUgU1NFIGV2ZW50IGZyb20gdGhlIEdlbmllIEFnZW50IE1vZGUgcmVzcG9uc2Ugc3RyZWFtLiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllQWdlbnRNb2RlRXZlbnRTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHR5cGU6IHouc3RyaW5nKCksXG4gICAgc2VxdWVuY2VfbnVtYmVyOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgb3V0cHV0X2luZGV4OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgcmVzcG9uc2U6IEdlbmllQWdlbnRSZXNwb25zZVNjaGVtYS5vcHRpb25hbCgpLFxuICAgIGl0ZW06IEdlbmllQWdlbnRPdXRwdXRJdGVtU2NoZW1hLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5sb29zZSgpO1xuXG4vKiogVmFsaWRhdGVkIEFnZW50IE1vZGUgcmVzcG9uc2Ugb3V0cHV0IGl0ZW0uICovXG5leHBvcnQgdHlwZSBHZW5pZUFnZW50T3V0cHV0SXRlbSA9IHouaW5mZXI8dHlwZW9mIEdlbmllQWdlbnRPdXRwdXRJdGVtU2NoZW1hPjtcbi8qKiBWYWxpZGF0ZWQgQWdlbnQgTW9kZSByZXNwb25zZS4gKi9cbmV4cG9ydCB0eXBlIEdlbmllQWdlbnRSZXNwb25zZSA9IHouaW5mZXI8dHlwZW9mIEdlbmllQWdlbnRSZXNwb25zZVNjaGVtYT47XG4vKiogVmFsaWRhdGVkIEFnZW50IE1vZGUgU1NFIGV2ZW50LiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVBZ2VudE1vZGVFdmVudCA9IHouaW5mZXI8dHlwZW9mIEdlbmllQWdlbnRNb2RlRXZlbnRTY2hlbWE+O1xuXG4vKiogU3RhdGVmdWwgcHVyZSByZWR1Y2VyIGZyb20gQWdlbnQgTW9kZSBTU0UgZXZlbnRzIHRvIEdlbmllIG1lc3NhZ2Ugc25hcHNob3RzLiAqL1xuZXhwb3J0IGNsYXNzIEdlbmllQWdlbnRNb2RlUHJvamVjdGlvbiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXRlbXMgPSBuZXcgTWFwPHN0cmluZywgR2VuaWVBZ2VudE91dHB1dEl0ZW0+KCk7XG4gIHByaXZhdGUgcmVzcG9uc2U6IEdlbmllQWdlbnRSZXNwb25zZSB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNwYWNlSWQ6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZyxcbiAgKSB7fVxuXG4gIC8qKiBBcHBseSBvbmUgdmFsaWRhdGVkIFNTRSBldmVudCBhbmQgcmV0dXJuIGl0cyBwcm9qZWN0ZWQgc25hcHNob3QuICovXG4gIGFwcGx5KGV2ZW50OiBHZW5pZUFnZW50TW9kZUV2ZW50KTogR2VuaWVNZXNzYWdlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoZXZlbnQucmVzcG9uc2UpIHtcbiAgICAgIHRoaXMucmVzcG9uc2UgPSBldmVudC5yZXNwb25zZTtcbiAgICAgIGlmIChldmVudC5yZXNwb25zZS5vdXRwdXQpIHtcbiAgICAgICAgdGhpcy5pdGVtcy5jbGVhcigpO1xuICAgICAgICBldmVudC5yZXNwb25zZS5vdXRwdXQuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICB0aGlzLml0ZW1zLnNldChhZ2VudEl0ZW1LZXkoaXRlbSwgaW5kZXgpLCBpdGVtKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChldmVudC5pdGVtKSB7XG4gICAgICB0aGlzLml0ZW1zLnNldChhZ2VudEl0ZW1LZXkoZXZlbnQuaXRlbSwgZXZlbnQub3V0cHV0X2luZGV4KSwgZXZlbnQuaXRlbSk7XG4gICAgfVxuICAgIGlmICgoIWV2ZW50LnJlc3BvbnNlICYmICFldmVudC5pdGVtKSB8fCAhdGhpcy5yZXNwb25zZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcHJvamVjdEFnZW50TW9kZU1lc3NhZ2UodGhpcy5zcGFjZUlkLCB0aGlzLmNvbnRlbnQsIHRoaXMucmVzcG9uc2UsIFtcbiAgICAgIC4uLnRoaXMuaXRlbXMudmFsdWVzKCksXG4gICAgXSk7XG4gIH1cblxuICAvKiogQ3VycmVudCByZXNwb25zZSBpZCwgb25jZSBgcmVzcG9uc2UuY3JlYXRlZGAgaGFzIGFycml2ZWQuICovXG4gIGdldCByZXNwb25zZUlkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucmVzcG9uc2U/LmlkO1xuICB9XG5cbiAgLyoqIEN1cnJlbnQgY29udmVyc2F0aW9uIGlkLCBvbmNlIGFzc2lnbmVkIGJ5IEdlbmllLiAqL1xuICBnZXQgY29udmVyc2F0aW9uSWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZXNwb25zZT8uY29udmVyc2F0aW9uX2lkO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGxhdGVzdCByZXNwb25zZSBzdGF0dXMgaXMgdGVybWluYWwuICovXG4gIGdldCB0ZXJtaW5hbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZXNwb25zZSA/IGlzVGVybWluYWxTdGF0dXModGhpcy5yZXNwb25zZS5zdGF0dXMpIDogZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNUZXJtaW5hbFN0YXR1cyhzdGF0dXM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gc3RhdHVzID09PSBcImNvbXBsZXRlZFwiIHx8IHN0YXR1cyA9PT0gXCJmYWlsZWRcIiB8fCBzdGF0dXMgPT09IFwiY2FuY2VsbGVkXCI7XG59XG5cbmZ1bmN0aW9uIGFnZW50SXRlbUtleShpdGVtOiBHZW5pZUFnZW50T3V0cHV0SXRlbSwgaW5kZXg6IHVua25vd24pOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIGl0ZW0uaWQgPT09IFwic3RyaW5nXCIpIHJldHVybiBpdGVtLmlkO1xuICBpZiAodHlwZW9mIGl0ZW0uY2FsbF9pZCA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGl0ZW0uY2FsbF9pZDtcbiAgcmV0dXJuIFN0cmluZyh0eXBlb2YgaW5kZXggPT09IFwibnVtYmVyXCIgPyBpbmRleCA6IChpdGVtLnR5cGUgPz8gXCJpdGVtXCIpKTtcbn1cblxuLyoqIFByb2plY3Qgb25lIEFnZW50IE1vZGUgcmVzcG9uc2Ugc25hcHNob3Qgb250byB0aGUgc2hhcmVkIEdlbmllIG1lc3NhZ2Ugc2hhcGUuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdEFnZW50TW9kZU1lc3NhZ2UoXG4gIHNwYWNlSWQ6IHN0cmluZyxcbiAgY29udGVudDogc3RyaW5nLFxuICByZXNwb25zZTogR2VuaWVBZ2VudFJlc3BvbnNlLFxuICBpdGVtczogR2VuaWVBZ2VudE91dHB1dEl0ZW1bXSxcbik6IEdlbmllTWVzc2FnZSB7XG4gIGNvbnN0IGVycm9yVmFsdWUgPSBvYmplY3QuaXNSZWNvcmQocmVzcG9uc2UuZXJyb3IpID8gcmVzcG9uc2UuZXJyb3IgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9XG4gICAgdHlwZW9mIGVycm9yVmFsdWU/Lm1lc3NhZ2UgPT09IFwic3RyaW5nXCJcbiAgICAgID8gZXJyb3JWYWx1ZS5tZXNzYWdlXG4gICAgICA6IHR5cGVvZiByZXNwb25zZS5lcnJvciA9PT0gXCJzdHJpbmdcIlxuICAgICAgICA/IHJlc3BvbnNlLmVycm9yXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICBjb25zdCBtZXNzYWdlSWQgPSBpdGVtcy5tYXAoaXRlbU1lc3NhZ2VJZCkuZmluZCgoaWQpID0+IGlkICE9PSB1bmRlZmluZWQpID8/IHJlc3BvbnNlLmlkO1xuICByZXR1cm4gR2VuaWVNZXNzYWdlU2NoZW1hLnBhcnNlKHtcbiAgICBpZDogbWVzc2FnZUlkLFxuICAgIG1lc3NhZ2VfaWQ6IG1lc3NhZ2VJZCxcbiAgICBzcGFjZV9pZDogc3BhY2VJZCxcbiAgICBjb252ZXJzYXRpb25faWQ6IHJlc3BvbnNlLmNvbnZlcnNhdGlvbl9pZCA/PyBcIlwiLFxuICAgIGNvbnRlbnQsXG4gICAgc3RhdHVzOiBhZ2VudE1vZGVTdGF0dXMocmVzcG9uc2Uuc3RhdHVzLCBpdGVtcyksXG4gICAgYXR0YWNobWVudHM6IHdpdGhTdGF0ZW1lbnRJZHMoaXRlbXMuZmxhdE1hcChpdGVtQXR0YWNobWVudHMpLCBpdGVtcyksXG4gICAgLi4uKHJlc3BvbnNlLmNyZWF0ZWRfYXQgIT09IHVuZGVmaW5lZCA/IHsgY3JlYXRlZF90aW1lc3RhbXA6IHJlc3BvbnNlLmNyZWF0ZWRfYXQgfSA6IHt9KSxcbiAgICAuLi4oZXJyb3JNZXNzYWdlID8geyBlcnJvcjogeyBlcnJvcjogZXJyb3JNZXNzYWdlIH0gfSA6IHt9KSxcbiAgfSk7XG59XG5cbi8qKlxuICogUHJvamVjdCBhbiBBZ2VudCBNb2RlIGNvbnZlcnNhdGlvbidzIGl0ZW0gaGlzdG9yeSBvbnRvIG9uZSBHZW5pZSBtZXNzYWdlIHBlclxuICogdHVybi4gSXRlbXMgYXJlIGdyb3VwZWQgYnkgdGhlaXIgYG1ldGFkYXRhLm1lc3NhZ2VfaWRgOyBlYWNoIHR1cm4ncyB1c2VyXG4gKiBgbWVzc2FnZWAgaXRlbSBzdXBwbGllcyB0aGUgcXVlc3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0QWdlbnRNb2RlQ29udmVyc2F0aW9uKFxuICBzcGFjZUlkOiBzdHJpbmcsXG4gIGNvbnZlcnNhdGlvbklkOiBzdHJpbmcsXG4gIGl0ZW1zOiBHZW5pZUFnZW50T3V0cHV0SXRlbVtdLFxuICBzdGF0dXMgPSBcImNvbXBsZXRlZFwiLFxuKTogR2VuaWVNZXNzYWdlW10ge1xuICBjb25zdCB0dXJuczogQXJyYXk8e1xuICAgIG1lc3NhZ2VJZDogc3RyaW5nO1xuICAgIHF1ZXN0aW9uOiBHZW5pZUFnZW50T3V0cHV0SXRlbTtcbiAgICBpdGVtczogR2VuaWVBZ2VudE91dHB1dEl0ZW1bXTtcbiAgfT4gPSBbXTtcbiAgbGV0IGN1cnJlbnQ6ICh0eXBlb2YgdHVybnMpW251bWJlcl0gfCB1bmRlZmluZWQ7XG4gIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgIGlmIChpdGVtLnR5cGUgPT09IFwibWVzc2FnZVwiICYmIGl0ZW0ucm9sZSA9PT0gXCJ1c2VyXCIpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2VJZCA9XG4gICAgICAgIGl0ZW1NZXNzYWdlSWQoaXRlbSkgPz9cbiAgICAgICAgKGl0ZW0uaWQ/LmVuZHNXaXRoKFwiX2lucHV0XCIpID8gaXRlbS5pZC5zbGljZSgwLCAtXCJfaW5wdXRcIi5sZW5ndGgpIDogaXRlbS5pZCk7XG4gICAgICBpZiAoIW1lc3NhZ2VJZCkgY29udGludWU7XG4gICAgICBjdXJyZW50ID0geyBtZXNzYWdlSWQsIHF1ZXN0aW9uOiBpdGVtLCBpdGVtczogW10gfTtcbiAgICAgIHR1cm5zLnB1c2goY3VycmVudCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY3VycmVudD8uaXRlbXMucHVzaChpdGVtKTtcbiAgfVxuICByZXR1cm4gdHVybnMubWFwKCh0dXJuLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IGZhaWxlZCA9IHR1cm4uaXRlbXMuc29tZSgoaXRlbSkgPT4gaXRlbS5zdGF0dXMgPT09IFwiZmFpbGVkXCIpO1xuICAgIGNvbnN0IHR1cm5TdGF0dXMgPSBmYWlsZWQgPyBcImZhaWxlZFwiIDogaW5kZXggPT09IHR1cm5zLmxlbmd0aCAtIDEgPyBzdGF0dXMgOiBcImNvbXBsZXRlZFwiO1xuICAgIHJldHVybiBwcm9qZWN0QWdlbnRNb2RlTWVzc2FnZShcbiAgICAgIHNwYWNlSWQsXG4gICAgICBjb250ZW50VGV4dCh0dXJuLnF1ZXN0aW9uLmNvbnRlbnQsIFwiaW5wdXRfdGV4dFwiKS5qb2luKFwiXFxuXCIpLFxuICAgICAge1xuICAgICAgICBpZDogdHVybi5tZXNzYWdlSWQsXG4gICAgICAgIHN0YXR1czogdHVyblN0YXR1cyxcbiAgICAgICAgY29udmVyc2F0aW9uX2lkOiBjb252ZXJzYXRpb25JZCxcbiAgICAgICAgLi4uKHR1cm4ucXVlc3Rpb24uY3JlYXRlZF9hdCAhPT0gdW5kZWZpbmVkID8geyBjcmVhdGVkX2F0OiB0dXJuLnF1ZXN0aW9uLmNyZWF0ZWRfYXQgfSA6IHt9KSxcbiAgICAgIH0sXG4gICAgICB0dXJuLml0ZW1zLFxuICAgICk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpdGVtTWV0YWRhdGEoaXRlbTogR2VuaWVBZ2VudE91dHB1dEl0ZW0pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBvYmplY3QuaXNSZWNvcmQoaXRlbS5tZXRhZGF0YSkgPyBpdGVtLm1ldGFkYXRhIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpdGVtTWVzc2FnZUlkKGl0ZW06IEdlbmllQWdlbnRPdXRwdXRJdGVtKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgbWVzc2FnZUlkID0gaXRlbU1ldGFkYXRhKGl0ZW0pPy5tZXNzYWdlX2lkO1xuICByZXR1cm4gdHlwZW9mIG1lc3NhZ2VJZCA9PT0gXCJzdHJpbmdcIiA/IG1lc3NhZ2VJZCA6IHVuZGVmaW5lZDtcbn1cblxuLyoqIENvcHkgZWFjaCBxdWVyeSBvdXRwdXQncyBgc3RhdGVtZW50X2lkYCBvbnRvIHRoZSBxdWVyeSBhdHRhY2htZW50IGl0IGFuc3dlcnMuICovXG5mdW5jdGlvbiB3aXRoU3RhdGVtZW50SWRzKFxuICBhdHRhY2htZW50czogR2VuaWVBdHRhY2htZW50W10sXG4gIGl0ZW1zOiBHZW5pZUFnZW50T3V0cHV0SXRlbVtdLFxuKTogR2VuaWVBdHRhY2htZW50W10ge1xuICBjb25zdCBzdGF0ZW1lbnRzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50SWQgPSBpdGVtTWV0YWRhdGEoaXRlbSk/LnN0YXRlbWVudF9pZDtcbiAgICBpZiAoaXRlbS50eXBlID09PSBcImZ1bmN0aW9uX2NhbGxfb3V0cHV0XCIgJiYgaXRlbS5jYWxsX2lkICYmIHR5cGVvZiBzdGF0ZW1lbnRJZCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgc3RhdGVtZW50cy5zZXQoaXRlbS5jYWxsX2lkLCBzdGF0ZW1lbnRJZCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBhdHRhY2htZW50cy5tYXAoKGF0dGFjaG1lbnQpID0+IHtcbiAgICBjb25zdCBzdGF0ZW1lbnRJZCA9IGF0dGFjaG1lbnQucXVlcnkgJiYgc3RhdGVtZW50cy5nZXQoYXR0YWNobWVudC5hdHRhY2htZW50X2lkID8/IFwiXCIpO1xuICAgIHJldHVybiBzdGF0ZW1lbnRJZCAmJiBhdHRhY2htZW50LnF1ZXJ5XG4gICAgICA/IHsgLi4uYXR0YWNobWVudCwgcXVlcnk6IHsgLi4uYXR0YWNobWVudC5xdWVyeSwgc3RhdGVtZW50X2lkOiBzdGF0ZW1lbnRJZCB9IH1cbiAgICAgIDogYXR0YWNobWVudDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFnZW50TW9kZVN0YXR1cyh2YWx1ZTogc3RyaW5nLCBpdGVtczogR2VuaWVBZ2VudE91dHB1dEl0ZW1bXSk6IEdlbmllTWVzc2FnZVtcInN0YXR1c1wiXSB7XG4gIGlmICh2YWx1ZSA9PT0gXCJjb21wbGV0ZWRcIikgcmV0dXJuIFwiQ09NUExFVEVEXCI7XG4gIGlmICh2YWx1ZSA9PT0gXCJmYWlsZWRcIikgcmV0dXJuIFwiRkFJTEVEXCI7XG4gIGlmICh2YWx1ZSA9PT0gXCJjYW5jZWxsZWRcIikgcmV0dXJuIFwiQ0FOQ0VMTEVEXCI7XG4gIGlmIChpdGVtcy5zb21lKChpdGVtKSA9PiBpdGVtLnR5cGUgPT09IFwiZnVuY3Rpb25fY2FsbFwiKSkgcmV0dXJuIFwiRVhFQ1VUSU5HX1FVRVJZXCI7XG4gIHJldHVybiBcIkFTS0lOR19BSVwiO1xufVxuXG5mdW5jdGlvbiBpdGVtQXR0YWNobWVudHMoaXRlbTogR2VuaWVBZ2VudE91dHB1dEl0ZW0pOiBHZW5pZUF0dGFjaG1lbnRbXSB7XG4gIGNvbnN0IGlkID0gaXRlbS5pZCA/PyBpdGVtLmNhbGxfaWQ7XG4gIGlmIChpdGVtLnR5cGUgPT09IFwicmVhc29uaW5nXCIpIHtcbiAgICBjb25zdCB0aG91Z2h0cyA9IGNvbnRlbnRUZXh0KGl0ZW0uY29udGVudCwgXCJyZWFzb25pbmdfdGV4dFwiKS5tYXAoXG4gICAgICAodGhvdWdodENvbnRlbnQpOiBHZW5pZVRob3VnaHQgPT4gKHtcbiAgICAgICAgdGhvdWdodF90eXBlOiBcIlRIT1VHSFRfVFlQRV9TVEVQU1wiLFxuICAgICAgICBjb250ZW50OiB0aG91Z2h0Q29udGVudCxcbiAgICAgIH0pLFxuICAgICk7XG4gICAgcmV0dXJuIHRob3VnaHRzLmxlbmd0aCA9PT0gMFxuICAgICAgPyBbXVxuICAgICAgOiBbeyBhdHRhY2htZW50X2lkOiBpZCwgYXR0YWNobWVudF90eXBlOiBcInF1ZXJ5XCIsIHF1ZXJ5OiB7IGlkLCB0aG91Z2h0cyB9IH1dO1xuICB9XG4gIGlmIChpdGVtLnR5cGUgPT09IFwiZnVuY3Rpb25fY2FsbFwiKSB7XG4gICAgY29uc3QgY2FsbElkID0gaXRlbS5jYWxsX2lkID8/IGl0ZW0uaWQ7XG4gICAgY29uc3QgYXJndW1lbnRzVmFsdWUgPSBqc29uLnBhcnNlUmVjb3JkKGl0ZW0uYXJndW1lbnRzKTtcbiAgICBjb25zdCBxdWVyeSA9XG4gICAgICB0eXBlb2YgYXJndW1lbnRzVmFsdWU/LnNxbCA9PT0gXCJzdHJpbmdcIlxuICAgICAgICA/IGFyZ3VtZW50c1ZhbHVlLnNxbFxuICAgICAgICA6IHR5cGVvZiBhcmd1bWVudHNWYWx1ZT8ucXVlcnkgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICA/IGFyZ3VtZW50c1ZhbHVlLnF1ZXJ5XG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgdGl0bGUgPSB0eXBlb2YgYXJndW1lbnRzVmFsdWU/LnRpdGxlID09PSBcInN0cmluZ1wiID8gYXJndW1lbnRzVmFsdWUudGl0bGUgOiBpdGVtLm5hbWU7XG4gICAgcmV0dXJuIHF1ZXJ5XG4gICAgICA/IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhdHRhY2htZW50X2lkOiBjYWxsSWQsXG4gICAgICAgICAgICBhdHRhY2htZW50X3R5cGU6IFwicXVlcnlcIixcbiAgICAgICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgICAgIGlkOiBjYWxsSWQsXG4gICAgICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgICAgICAuLi4odGl0bGUgPyB7IHRpdGxlIH0gOiB7fSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF1cbiAgICAgIDogW107XG4gIH1cbiAgaWYgKGl0ZW0udHlwZSA9PT0gXCJmdW5jdGlvbl9jYWxsX291dHB1dFwiICYmIGl0ZW0ub3V0cHV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCB2aXogPSBpdGVtTWV0YWRhdGEoaXRlbSk/LnZpejtcbiAgICBpZiAob2JqZWN0LmlzUmVjb3JkKHZpeikgJiYgdHlwZW9mIHZpei5hdHRhY2htZW50X2lkID09PSBcInN0cmluZ1wiKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgYXR0YWNobWVudF9pZDogdml6LmF0dGFjaG1lbnRfaWQsXG4gICAgICAgICAgYXR0YWNobWVudF90eXBlOiBcInZpelwiLFxuICAgICAgICAgIHZpejoge1xuICAgICAgICAgICAgLi4uKGl0ZW0ub3V0cHV0ID8geyB0aXRsZTogaXRlbS5vdXRwdXQgfSA6IHt9KSxcbiAgICAgICAgICAgIC4uLih0eXBlb2Ygdml6LnF1ZXJ5X2F0dGFjaG1lbnRfaWQgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgPyB7IHF1ZXJ5X2F0dGFjaG1lbnRfaWQ6IHZpei5xdWVyeV9hdHRhY2htZW50X2lkIH1cbiAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfVxuICAgIHJldHVybiBbdGV4dEF0dGFjaG1lbnQoaWQsIGl0ZW0ub3V0cHV0LCBpdGVtLm1ldGFkYXRhKV07XG4gIH1cbiAgaWYgKGl0ZW0udHlwZSA9PT0gXCJtZXNzYWdlXCIpIHtcbiAgICByZXR1cm4gKGl0ZW0uY29udGVudCA/PyBbXSkuZmxhdE1hcCgocGFydCkgPT5cbiAgICAgIHBhcnQudHlwZSA9PT0gXCJvdXRwdXRfdGV4dFwiICYmXG4gICAgICAocGFydC50ZXh0ICE9PSB1bmRlZmluZWQgfHwgdmlzdWFsaXphdGlvbkF0dGFjaG1lbnRJZChwYXJ0Lm1ldGFkYXRhKSlcbiAgICAgICAgPyBbdGV4dEF0dGFjaG1lbnQoaWQsIHBhcnQudGV4dCA/PyBcIlwiLCBwYXJ0Lm1ldGFkYXRhKV1cbiAgICAgICAgOiBbXSxcbiAgICApO1xuICB9XG4gIHJldHVybiBbXTtcbn1cblxuZnVuY3Rpb24gdmlzdWFsaXphdGlvbkF0dGFjaG1lbnRJZChtZXRhZGF0YTogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghb2JqZWN0LmlzUmVjb3JkKG1ldGFkYXRhKSB8fCAhb2JqZWN0LmlzUmVjb3JkKG1ldGFkYXRhLnZpeikpIHJldHVybiB1bmRlZmluZWQ7XG4gIHJldHVybiB0eXBlb2YgbWV0YWRhdGEudml6LmF0dGFjaG1lbnRfaWQgPT09IFwic3RyaW5nXCIgPyBtZXRhZGF0YS52aXouYXR0YWNobWVudF9pZCA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gY29udGVudFRleHQoXG4gIHZhbHVlOiB6LmluZmVyPHR5cGVvZiBHZW5pZUFnZW50Q29udGVudFNjaGVtYT5bXSB8IHVuZGVmaW5lZCxcbiAgdHlwZTogc3RyaW5nLFxuKTogc3RyaW5nW10ge1xuICBpZiAoIXZhbHVlKSByZXR1cm4gW107XG4gIHJldHVybiB2YWx1ZS5mbGF0TWFwKChwYXJ0KSA9PiAocGFydC50eXBlID09PSB0eXBlICYmIHBhcnQudGV4dCA/IFtwYXJ0LnRleHRdIDogW10pKTtcbn1cblxuZnVuY3Rpb24gdGV4dEF0dGFjaG1lbnQoXG4gIGlkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgbWV0YWRhdGE/OiB1bmtub3duLFxuKTogR2VuaWVBdHRhY2htZW50IHtcbiAgcmV0dXJuIHtcbiAgICBhdHRhY2htZW50X2lkOiBpZCxcbiAgICBhdHRhY2htZW50X3R5cGU6IFwidGV4dFwiLFxuICAgIHRleHQ6IHtcbiAgICAgIGlkLFxuICAgICAgY29udGVudCxcbiAgICAgIHB1cnBvc2U6IFwiVEVYVF9BVFRBQ0hNRU5UX1BVUlBPU0VfQU5TV0VSXCIsXG4gICAgICAuLi4obWV0YWRhdGEgIT09IHVuZGVmaW5lZCA/IHsgbWV0YWRhdGEgfSA6IHt9KSxcbiAgICB9LFxuICB9O1xufVxuIl19
|
|
290
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQtbW9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZ2VudC1tb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsT0FBTyxFQUNMLGtCQUFrQixHQUluQixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLHFFQUFxRTtBQUNyRSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDO0tBQ3JDLE1BQU0sQ0FBQztJQUNOLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2hCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNCLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ2pDLENBQUM7S0FDRCxLQUFLLEVBQUUsQ0FBQztBQUVYLG9FQUFvRTtBQUNwRSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxDQUFDO0tBQ3hDLE1BQU0sQ0FBQztJQUNOLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2hCLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3pCLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzlCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNCLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2hDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzdCLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMs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SSxFQUFFO1lBQ0osRUFBRTtZQUNGLE9BQU87WUFDUCxPQUFPLEVBQUUsZ0NBQWdDO1lBQ3pDLEdBQUcsQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDaEQ7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQnJvd3Nlci1zYWZlIEdlbmllIEFnZW50IE1vZGUgU1NFIGNvbnRyYWN0cy5cbiAqXG4gKiBTY2hlbWFzIHZhbGlkYXRlIHRoZSBzdGFibGUgUmVzcG9uc2VzLXN0eWxlIGV2ZW50IGVudmVsb3BlIHdoaWxlIHByZXNlcnZpbmdcbiAqIGFkZGl0aXZlIGZpZWxkcyBhbmQgb3V0cHV0LWl0ZW0gdmFyaWFudHMgaW50cm9kdWNlZCBieSB0aGUgYmV0YSBBUEkuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IHBhcnNlUmVjb3JkLCBpc1JlY29yZCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5pbXBvcnQge1xuICBHZW5pZU1lc3NhZ2VTY2hlbWEsXG4gIHR5cGUgR2VuaWVBdHRhY2htZW50LFxuICB0eXBlIEdlbmllTWVzc2FnZSxcbiAgdHlwZSBHZW5pZVRob3VnaHQsXG59IGZyb20gXCIuL2dlbmllLW1vZGVsLnRzXCI7XG5cbi8qKiBBZ2VudCBNb2RlIG91dHB1dCBjb250ZW50IGl0ZW0gd2l0aCBmb3J3YXJkLWNvbXBhdGlibGUgZmllbGRzLiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllQWdlbnRDb250ZW50U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICB0eXBlOiB6LnN0cmluZygpLFxuICAgIHRleHQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBtZXRhZGF0YTogei51bmtub3duKCkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLmxvb3NlKCk7XG5cbi8qKiBBZ2VudCBNb2RlIHJlc3BvbnNlIG91dHB1dCBpdGVtIHdpdGgga25vd24gcHJvamVjdGlvbiBmaWVsZHMuICovXG5leHBvcnQgY29uc3QgR2VuaWVBZ2VudE91dHB1dEl0ZW1TY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHR5cGU6IHouc3RyaW5nKCksXG4gICAgaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBjYWxsX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGFyZ3VtZW50czogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIG91dHB1dDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHN0YXR1czogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHJvbGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBjb250ZW50OiB6LmFycmF5KEdlbmllQWdlbnRDb250ZW50U2NoZW1hKS5vcHRpb25hbCgpLFxuICAgIG1ldGFkYXRhOiB6LnVua25vd24oKS5vcHRpb25hbCgpLFxuICAgIGNyZWF0ZWRfYXQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLmxvb3NlKCk7XG5cbi8qKiBPbmUgcGFnZSBvZiBhbiBBZ2VudCBNb2RlIGNvbnZlcnNhdGlvbidzIGl0ZW0gaGlzdG9yeS4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZUFnZW50Q29udmVyc2F0aW9uSXRlbXNTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGRhdGE6IHouYXJyYXkoR2VuaWVBZ2VudE91dHB1dEl0ZW1TY2hlbWEpLmRlc2NyaWJlKFwiQ29udmVyc2F0aW9uIGl0ZW1zLCBvbGRlc3QgZmlyc3QuXCIpLFxuICAgIGhhc19tb3JlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiV2hldGhlciBhbm90aGVyIHBhZ2UgZm9sbG93cyBgbGFzdF9pZGAuXCIpLFxuICAgIGxhc3RfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkl0ZW0gaWQgdGhhdCB0aGUgbmV4dCBwYWdlIHN0YXJ0cyBhZnRlci5cIiksXG4gICAgc3RhdHVzOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDdXJyZW50IHN0YXR1cyBvZiB0aGUgY29udmVyc2F0aW9uJ3MgbGF0ZXN0IHJlc3BvbnNlLlwiKSxcbiAgfSlcbiAgLmxvb3NlKClcbiAgLmRlc2NyaWJlKFwiUGFnZSBvZiBBZ2VudCBNb2RlIGNvbnZlcnNhdGlvbiBpdGVtcy5cIik7XG5cbi8qKiBWYWxpZGF0ZWQgQWdlbnQgTW9kZSBjb252ZXJzYXRpb24gaXRlbSBwYWdlLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVBZ2VudENvbnZlcnNhdGlvbkl0ZW1zID0gei5pbmZlcjx0eXBlb2YgR2VuaWVBZ2VudENvbnZlcnNhdGlvbkl0ZW1zU2NoZW1hPjtcblxuLyoqIEdlbmllIEFnZW50IE1vZGUgcmVzcG9uc2UgY2FycmllZCBieSBsaWZlY3ljbGUgZXZlbnRzLiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllQWdlbnRSZXNwb25zZVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgb2JqZWN0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaWQ6IHouc3RyaW5nKCksXG4gICAgbW9kZWw6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBzdGF0dXM6IHouc3RyaW5nKCksXG4gICAgb3V0cHV0OiB6LmFycmF5KEdlbmllQWdlbnRPdXRwdXRJdGVtU2NoZW1hKS5vcHRpb25hbCgpLFxuICAgIGNvbnZlcnNhdGlvbl9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGNyZWF0ZWRfYXQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICBlcnJvcjogei51bmtub3duKCkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLmxvb3NlKCk7XG5cbi8qKiBPbmUgU1NFIGV2ZW50IGZyb20gdGhlIEdlbmllIEFnZW50IE1vZGUgcmVzcG9uc2Ugc3RyZWFtLiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllQWdlbnRNb2RlRXZlbnRTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHR5cGU6IHouc3RyaW5nKCksXG4gICAgc2VxdWVuY2VfbnVtYmVyOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgb3V0cHV0X2luZGV4OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgcmVzcG9uc2U6IEdlbmllQWdlbnRSZXNwb25zZVNjaGVtYS5vcHRpb25hbCgpLFxuICAgIGl0ZW06IEdlbmllQWdlbnRPdXRwdXRJdGVtU2NoZW1hLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5sb29zZSgpO1xuXG4vKiogVmFsaWRhdGVkIEFnZW50IE1vZGUgcmVzcG9uc2Ugb3V0cHV0IGl0ZW0uICovXG5leHBvcnQgdHlwZSBHZW5pZUFnZW50T3V0cHV0SXRlbSA9IHouaW5mZXI8dHlwZW9mIEdlbmllQWdlbnRPdXRwdXRJdGVtU2NoZW1hPjtcbi8qKiBWYWxpZGF0ZWQgQWdlbnQgTW9kZSByZXNwb25zZS4gKi9cbmV4cG9ydCB0eXBlIEdlbmllQWdlbnRSZXNwb25zZSA9IHouaW5mZXI8dHlwZW9mIEdlbmllQWdlbnRSZXNwb25zZVNjaGVtYT47XG4vKiogVmFsaWRhdGVkIEFnZW50IE1vZGUgU1NFIGV2ZW50LiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVBZ2VudE1vZGVFdmVudCA9IHouaW5mZXI8dHlwZW9mIEdlbmllQWdlbnRNb2RlRXZlbnRTY2hlbWE+O1xuXG4vKiogU3RhdGVmdWwgcHVyZSByZWR1Y2VyIGZyb20gQWdlbnQgTW9kZSBTU0UgZXZlbnRzIHRvIEdlbmllIG1lc3NhZ2Ugc25hcHNob3RzLiAqL1xuZXhwb3J0IGNsYXNzIEdlbmllQWdlbnRNb2RlUHJvamVjdGlvbiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXRlbXMgPSBuZXcgTWFwPHN0cmluZywgR2VuaWVBZ2VudE91dHB1dEl0ZW0+KCk7XG4gIHByaXZhdGUgcmVzcG9uc2U6IEdlbmllQWdlbnRSZXNwb25zZSB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNwYWNlSWQ6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZyxcbiAgKSB7fVxuXG4gIC8qKiBBcHBseSBvbmUgdmFsaWRhdGVkIFNTRSBldmVudCBhbmQgcmV0dXJuIGl0cyBwcm9qZWN0ZWQgc25hcHNob3QuICovXG4gIGFwcGx5KGV2ZW50OiBHZW5pZUFnZW50TW9kZUV2ZW50KTogR2VuaWVNZXNzYWdlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoZXZlbnQucmVzcG9uc2UpIHtcbiAgICAgIHRoaXMucmVzcG9uc2UgPSBldmVudC5yZXNwb25zZTtcbiAgICAgIGlmIChldmVudC5yZXNwb25zZS5vdXRwdXQpIHtcbiAgICAgICAgdGhpcy5pdGVtcy5jbGVhcigpO1xuICAgICAgICBldmVudC5yZXNwb25zZS5vdXRwdXQuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICB0aGlzLml0ZW1zLnNldChhZ2VudEl0ZW1LZXkoaXRlbSwgaW5kZXgpLCBpdGVtKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChldmVudC5pdGVtKSB7XG4gICAgICB0aGlzLml0ZW1zLnNldChhZ2VudEl0ZW1LZXkoZXZlbnQuaXRlbSwgZXZlbnQub3V0cHV0X2luZGV4KSwgZXZlbnQuaXRlbSk7XG4gICAgfVxuICAgIGlmICgoIWV2ZW50LnJlc3BvbnNlICYmICFldmVudC5pdGVtKSB8fCAhdGhpcy5yZXNwb25zZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcHJvamVjdEFnZW50TW9kZU1lc3NhZ2UodGhpcy5zcGFjZUlkLCB0aGlzLmNvbnRlbnQsIHRoaXMucmVzcG9uc2UsIFtcbiAgICAgIC4uLnRoaXMuaXRlbXMudmFsdWVzKCksXG4gICAgXSk7XG4gIH1cblxuICAvKiogQ3VycmVudCByZXNwb25zZSBpZCwgb25jZSBgcmVzcG9uc2UuY3JlYXRlZGAgaGFzIGFycml2ZWQuICovXG4gIGdldCByZXNwb25zZUlkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucmVzcG9uc2U/LmlkO1xuICB9XG5cbiAgLyoqIEN1cnJlbnQgY29udmVyc2F0aW9uIGlkLCBvbmNlIGFzc2lnbmVkIGJ5IEdlbmllLiAqL1xuICBnZXQgY29udmVyc2F0aW9uSWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZXNwb25zZT8uY29udmVyc2F0aW9uX2lkO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGxhdGVzdCByZXNwb25zZSBzdGF0dXMgaXMgdGVybWluYWwuICovXG4gIGdldCB0ZXJtaW5hbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZXNwb25zZSA/IGlzVGVybWluYWxTdGF0dXModGhpcy5yZXNwb25zZS5zdGF0dXMpIDogZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNUZXJtaW5hbFN0YXR1cyhzdGF0dXM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gc3RhdHVzID09PSBcImNvbXBsZXRlZFwiIHx8IHN0YXR1cyA9PT0gXCJmYWlsZWRcIiB8fCBzdGF0dXMgPT09IFwiY2FuY2VsbGVkXCI7XG59XG5cbmZ1bmN0aW9uIGFnZW50SXRlbUtleShpdGVtOiBHZW5pZUFnZW50T3V0cHV0SXRlbSwgaW5kZXg6IHVua25vd24pOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIGl0ZW0uaWQgPT09IFwic3RyaW5nXCIpIHJldHVybiBpdGVtLmlkO1xuICBpZiAodHlwZW9mIGl0ZW0uY2FsbF9pZCA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGl0ZW0uY2FsbF9pZDtcbiAgcmV0dXJuIFN0cmluZyh0eXBlb2YgaW5kZXggPT09IFwibnVtYmVyXCIgPyBpbmRleCA6IChpdGVtLnR5cGUgPz8gXCJpdGVtXCIpKTtcbn1cblxuLyoqIFByb2plY3Qgb25lIEFnZW50IE1vZGUgcmVzcG9uc2Ugc25hcHNob3Qgb250byB0aGUgc2hhcmVkIEdlbmllIG1lc3NhZ2Ugc2hhcGUuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdEFnZW50TW9kZU1lc3NhZ2UoXG4gIHNwYWNlSWQ6IHN0cmluZyxcbiAgY29udGVudDogc3RyaW5nLFxuICByZXNwb25zZTogR2VuaWVBZ2VudFJlc3BvbnNlLFxuICBpdGVtczogR2VuaWVBZ2VudE91dHB1dEl0ZW1bXSxcbik6IEdlbmllTWVzc2FnZSB7XG4gIGNvbnN0IGVycm9yVmFsdWUgPSBpc1JlY29yZChyZXNwb25zZS5lcnJvcikgPyByZXNwb25zZS5lcnJvciA6IHVuZGVmaW5lZDtcbiAgY29uc3QgZXJyb3JNZXNzYWdlID1cbiAgICB0eXBlb2YgZXJyb3JWYWx1ZT8ubWVzc2FnZSA9PT0gXCJzdHJpbmdcIlxuICAgICAgPyBlcnJvclZhbHVlLm1lc3NhZ2VcbiAgICAgIDogdHlwZW9mIHJlc3BvbnNlLmVycm9yID09PSBcInN0cmluZ1wiXG4gICAgICAgID8gcmVzcG9uc2UuZXJyb3JcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IG1lc3NhZ2VJZCA9IGl0ZW1zLm1hcChpdGVtTWVzc2FnZUlkKS5maW5kKChpZCkgPT4gaWQgIT09IHVuZGVmaW5lZCkgPz8gcmVzcG9uc2UuaWQ7XG4gIHJldHVybiBHZW5pZU1lc3NhZ2VTY2hlbWEucGFyc2Uoe1xuICAgIGlkOiBtZXNzYWdlSWQsXG4gICAgbWVzc2FnZV9pZDogbWVzc2FnZUlkLFxuICAgIHNwYWNlX2lkOiBzcGFjZUlkLFxuICAgIGNvbnZlcnNhdGlvbl9pZDogcmVzcG9uc2UuY29udmVyc2F0aW9uX2lkID8/IFwiXCIsXG4gICAgY29udGVudCxcbiAgICBzdGF0dXM6IGFnZW50TW9kZVN0YXR1cyhyZXNwb25zZS5zdGF0dXMsIGl0ZW1zKSxcbiAgICBhdHRhY2htZW50czogd2l0aFN0YXRlbWVudElkcyhpdGVtcy5mbGF0TWFwKGl0ZW1BdHRhY2htZW50cyksIGl0ZW1zKSxcbiAgICAuLi4ocmVzcG9uc2UuY3JlYXRlZF9hdCAhPT0gdW5kZWZpbmVkID8geyBjcmVhdGVkX3RpbWVzdGFtcDogcmVzcG9uc2UuY3JlYXRlZF9hdCB9IDoge30pLFxuICAgIC4uLihlcnJvck1lc3NhZ2UgPyB7IGVycm9yOiB7IGVycm9yOiBlcnJvck1lc3NhZ2UgfSB9IDoge30pLFxuICB9KTtcbn1cblxuLyoqXG4gKiBQcm9qZWN0IGFuIEFnZW50IE1vZGUgY29udmVyc2F0aW9uJ3MgaXRlbSBoaXN0b3J5IG9udG8gb25lIEdlbmllIG1lc3NhZ2UgcGVyXG4gKiB0dXJuLiBJdGVtcyBhcmUgZ3JvdXBlZCBieSB0aGVpciBgbWV0YWRhdGEubWVzc2FnZV9pZGA7IGVhY2ggdHVybidzIHVzZXJcbiAqIGBtZXNzYWdlYCBpdGVtIHN1cHBsaWVzIHRoZSBxdWVzdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3RBZ2VudE1vZGVDb252ZXJzYXRpb24oXG4gIHNwYWNlSWQ6IHN0cmluZyxcbiAgY29udmVyc2F0aW9uSWQ6IHN0cmluZyxcbiAgaXRlbXM6IEdlbmllQWdlbnRPdXRwdXRJdGVtW10sXG4gIHN0YXR1cyA9IFwiY29tcGxldGVkXCIsXG4pOiBHZW5pZU1lc3NhZ2VbXSB7XG4gIGNvbnN0IHR1cm5zOiBBcnJheTx7XG4gICAgbWVzc2FnZUlkOiBzdHJpbmc7XG4gICAgcXVlc3Rpb246IEdlbmllQWdlbnRPdXRwdXRJdGVtO1xuICAgIGl0ZW1zOiBHZW5pZUFnZW50T3V0cHV0SXRlbVtdO1xuICB9PiA9IFtdO1xuICBsZXQgY3VycmVudDogKHR5cGVvZiB0dXJucylbbnVtYmVyXSB8IHVuZGVmaW5lZDtcbiAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgaWYgKGl0ZW0udHlwZSA9PT0gXCJtZXNzYWdlXCIgJiYgaXRlbS5yb2xlID09PSBcInVzZXJcIikge1xuICAgICAgY29uc3QgbWVzc2FnZUlkID1cbiAgICAgICAgaXRlbU1lc3NhZ2VJZChpdGVtKSA/P1xuICAgICAgICAoaXRlbS5pZD8uZW5kc1dpdGgoXCJfaW5wdXRcIikgPyBpdGVtLmlkLnNsaWNlKDAsIC1cIl9pbnB1dFwiLmxlbmd0aCkgOiBpdGVtLmlkKTtcbiAgICAgIGlmICghbWVzc2FnZUlkKSBjb250aW51ZTtcbiAgICAgIGN1cnJlbnQgPSB7IG1lc3NhZ2VJZCwgcXVlc3Rpb246IGl0ZW0sIGl0ZW1zOiBbXSB9O1xuICAgICAgdHVybnMucHVzaChjdXJyZW50KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjdXJyZW50Py5pdGVtcy5wdXNoKGl0ZW0pO1xuICB9XG4gIHJldHVybiB0dXJucy5tYXAoKHR1cm4sIGluZGV4KSA9PiB7XG4gICAgY29uc3QgZmFpbGVkID0gdHVybi5pdGVtcy5zb21lKChpdGVtKSA9PiBpdGVtLnN0YXR1cyA9PT0gXCJmYWlsZWRcIik7XG4gICAgY29uc3QgdHVyblN0YXR1cyA9IGZhaWxlZCA/IFwiZmFpbGVkXCIgOiBpbmRleCA9PT0gdHVybnMubGVuZ3RoIC0gMSA/IHN0YXR1cyA6IFwiY29tcGxldGVkXCI7XG4gICAgcmV0dXJuIHByb2plY3RBZ2VudE1vZGVNZXNzYWdlKFxuICAgICAgc3BhY2VJZCxcbiAgICAgIGNvbnRlbnRUZXh0KHR1cm4ucXVlc3Rpb24uY29udGVudCwgXCJpbnB1dF90ZXh0XCIpLmpvaW4oXCJcXG5cIiksXG4gICAgICB7XG4gICAgICAgIGlkOiB0dXJuLm1lc3NhZ2VJZCxcbiAgICAgICAgc3RhdHVzOiB0dXJuU3RhdHVzLFxuICAgICAgICBjb252ZXJzYXRpb25faWQ6IGNvbnZlcnNhdGlvbklkLFxuICAgICAgICAuLi4odHVybi5xdWVzdGlvbi5jcmVhdGVkX2F0ICE9PSB1bmRlZmluZWQgPyB7IGNyZWF0ZWRfYXQ6IHR1cm4ucXVlc3Rpb24uY3JlYXRlZF9hdCB9IDoge30pLFxuICAgICAgfSxcbiAgICAgIHR1cm4uaXRlbXMsXG4gICAgKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGl0ZW1NZXRhZGF0YShpdGVtOiBHZW5pZUFnZW50T3V0cHV0SXRlbSk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGlzUmVjb3JkKGl0ZW0ubWV0YWRhdGEpID8gaXRlbS5tZXRhZGF0YSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gaXRlbU1lc3NhZ2VJZChpdGVtOiBHZW5pZUFnZW50T3V0cHV0SXRlbSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG1lc3NhZ2VJZCA9IGl0ZW1NZXRhZGF0YShpdGVtKT8ubWVzc2FnZV9pZDtcbiAgcmV0dXJuIHR5cGVvZiBtZXNzYWdlSWQgPT09IFwic3RyaW5nXCIgPyBtZXNzYWdlSWQgOiB1bmRlZmluZWQ7XG59XG5cbi8qKiBDb3B5IGVhY2ggcXVlcnkgb3V0cHV0J3MgYHN0YXRlbWVudF9pZGAgb250byB0aGUgcXVlcnkgYXR0YWNobWVudCBpdCBhbnN3ZXJzLiAqL1xuZnVuY3Rpb24gd2l0aFN0YXRlbWVudElkcyhcbiAgYXR0YWNobWVudHM6IEdlbmllQXR0YWNobWVudFtdLFxuICBpdGVtczogR2VuaWVBZ2VudE91dHB1dEl0ZW1bXSxcbik6IEdlbmllQXR0YWNobWVudFtdIHtcbiAgY29uc3Qgc3RhdGVtZW50cyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgIGNvbnN0IHN0YXRlbWVudElkID0gaXRlbU1ldGFkYXRhKGl0ZW0pPy5zdGF0ZW1lbnRfaWQ7XG4gICAgaWYgKGl0ZW0udHlwZSA9PT0gXCJmdW5jdGlvbl9jYWxsX291dHB1dFwiICYmIGl0ZW0uY2FsbF9pZCAmJiB0eXBlb2Ygc3RhdGVtZW50SWQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHN0YXRlbWVudHMuc2V0KGl0ZW0uY2FsbF9pZCwgc3RhdGVtZW50SWQpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYXR0YWNobWVudHMubWFwKChhdHRhY2htZW50KSA9PiB7XG4gICAgY29uc3Qgc3RhdGVtZW50SWQgPSBhdHRhY2htZW50LnF1ZXJ5ICYmIHN0YXRlbWVudHMuZ2V0KGF0dGFjaG1lbnQuYXR0YWNobWVudF9pZCA/PyBcIlwiKTtcbiAgICByZXR1cm4gc3RhdGVtZW50SWQgJiYgYXR0YWNobWVudC5xdWVyeVxuICAgICAgPyB7IC4uLmF0dGFjaG1lbnQsIHF1ZXJ5OiB7IC4uLmF0dGFjaG1lbnQucXVlcnksIHN0YXRlbWVudF9pZDogc3RhdGVtZW50SWQgfSB9XG4gICAgICA6IGF0dGFjaG1lbnQ7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhZ2VudE1vZGVTdGF0dXModmFsdWU6IHN0cmluZywgaXRlbXM6IEdlbmllQWdlbnRPdXRwdXRJdGVtW10pOiBHZW5pZU1lc3NhZ2VbXCJzdGF0dXNcIl0ge1xuICBpZiAodmFsdWUgPT09IFwiY29tcGxldGVkXCIpIHJldHVybiBcIkNPTVBMRVRFRFwiO1xuICBpZiAodmFsdWUgPT09IFwiZmFpbGVkXCIpIHJldHVybiBcIkZBSUxFRFwiO1xuICBpZiAodmFsdWUgPT09IFwiY2FuY2VsbGVkXCIpIHJldHVybiBcIkNBTkNFTExFRFwiO1xuICBpZiAoaXRlbXMuc29tZSgoaXRlbSkgPT4gaXRlbS50eXBlID09PSBcImZ1bmN0aW9uX2NhbGxcIikpIHJldHVybiBcIkVYRUNVVElOR19RVUVSWVwiO1xuICByZXR1cm4gXCJBU0tJTkdfQUlcIjtcbn1cblxuZnVuY3Rpb24gaXRlbUF0dGFjaG1lbnRzKGl0ZW06IEdlbmllQWdlbnRPdXRwdXRJdGVtKTogR2VuaWVBdHRhY2htZW50W10ge1xuICBjb25zdCBpZCA9IGl0ZW0uaWQgPz8gaXRlbS5jYWxsX2lkO1xuICBpZiAoaXRlbS50eXBlID09PSBcInJlYXNvbmluZ1wiKSB7XG4gICAgY29uc3QgdGhvdWdodHMgPSBjb250ZW50VGV4dChpdGVtLmNvbnRlbnQsIFwicmVhc29uaW5nX3RleHRcIikubWFwKFxuICAgICAgKHRob3VnaHRDb250ZW50KTogR2VuaWVUaG91Z2h0ID0+ICh7XG4gICAgICAgIHRob3VnaHRfdHlwZTogXCJUSE9VR0hUX1RZUEVfU1RFUFNcIixcbiAgICAgICAgY29udGVudDogdGhvdWdodENvbnRlbnQsXG4gICAgICB9KSxcbiAgICApO1xuICAgIHJldHVybiB0aG91Z2h0cy5sZW5ndGggPT09IDBcbiAgICAgID8gW11cbiAgICAgIDogW3sgYXR0YWNobWVudF9pZDogaWQsIGF0dGFjaG1lbnRfdHlwZTogXCJxdWVyeVwiLCBxdWVyeTogeyBpZCwgdGhvdWdodHMgfSB9XTtcbiAgfVxuICBpZiAoaXRlbS50eXBlID09PSBcImZ1bmN0aW9uX2NhbGxcIikge1xuICAgIGNvbnN0IGNhbGxJZCA9IGl0ZW0uY2FsbF9pZCA/PyBpdGVtLmlkO1xuICAgIGNvbnN0IGFyZ3VtZW50c1ZhbHVlID0gcGFyc2VSZWNvcmQoaXRlbS5hcmd1bWVudHMpO1xuICAgIGNvbnN0IHF1ZXJ5ID1cbiAgICAgIHR5cGVvZiBhcmd1bWVudHNWYWx1ZT8uc3FsID09PSBcInN0cmluZ1wiXG4gICAgICAgID8gYXJndW1lbnRzVmFsdWUuc3FsXG4gICAgICAgIDogdHlwZW9mIGFyZ3VtZW50c1ZhbHVlPy5xdWVyeSA9PT0gXCJzdHJpbmdcIlxuICAgICAgICAgID8gYXJndW1lbnRzVmFsdWUucXVlcnlcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCB0aXRsZSA9IHR5cGVvZiBhcmd1bWVudHNWYWx1ZT8udGl0bGUgPT09IFwic3RyaW5nXCIgPyBhcmd1bWVudHNWYWx1ZS50aXRsZSA6IGl0ZW0ubmFtZTtcbiAgICByZXR1cm4gcXVlcnlcbiAgICAgID8gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGF0dGFjaG1lbnRfaWQ6IGNhbGxJZCxcbiAgICAgICAgICAgIGF0dGFjaG1lbnRfdHlwZTogXCJxdWVyeVwiLFxuICAgICAgICAgICAgcXVlcnk6IHtcbiAgICAgICAgICAgICAgaWQ6IGNhbGxJZCxcbiAgICAgICAgICAgICAgcXVlcnksXG4gICAgICAgICAgICAgIC4uLih0aXRsZSA/IHsgdGl0bGUgfSA6IHt9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXVxuICAgICAgOiBbXTtcbiAgfVxuICBpZiAoaXRlbS50eXBlID09PSBcImZ1bmN0aW9uX2NhbGxfb3V0cHV0XCIgJiYgaXRlbS5vdXRwdXQgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IHZpeiA9IGl0ZW1NZXRhZGF0YShpdGVtKT8udml6O1xuICAgIGlmIChpc1JlY29yZCh2aXopICYmIHR5cGVvZiB2aXouYXR0YWNobWVudF9pZCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIGF0dGFjaG1lbnRfaWQ6IHZpei5hdHRhY2htZW50X2lkLFxuICAgICAgICAgIGF0dGFjaG1lbnRfdHlwZTogXCJ2aXpcIixcbiAgICAgICAgICB2aXo6IHtcbiAgICAgICAgICAgIC4uLihpdGVtLm91dHB1dCA/IHsgdGl0bGU6IGl0ZW0ub3V0cHV0IH0gOiB7fSksXG4gICAgICAgICAgICAuLi4odHlwZW9mIHZpei5xdWVyeV9hdHRhY2htZW50X2lkID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgICAgID8geyBxdWVyeV9hdHRhY2htZW50X2lkOiB2aXoucXVlcnlfYXR0YWNobWVudF9pZCB9XG4gICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH1cbiAgICByZXR1cm4gW3RleHRBdHRhY2htZW50KGlkLCBpdGVtLm91dHB1dCwgaXRlbS5tZXRhZGF0YSldO1xuICB9XG4gIGlmIChpdGVtLnR5cGUgPT09IFwibWVzc2FnZVwiKSB7XG4gICAgcmV0dXJuIChpdGVtLmNvbnRlbnQgPz8gW10pLmZsYXRNYXAoKHBhcnQpID0+XG4gICAgICBwYXJ0LnR5cGUgPT09IFwib3V0cHV0X3RleHRcIiAmJlxuICAgICAgKHBhcnQudGV4dCAhPT0gdW5kZWZpbmVkIHx8IHZpc3VhbGl6YXRpb25BdHRhY2htZW50SWQocGFydC5tZXRhZGF0YSkpXG4gICAgICAgID8gW3RleHRBdHRhY2htZW50KGlkLCBwYXJ0LnRleHQgPz8gXCJcIiwgcGFydC5tZXRhZGF0YSldXG4gICAgICAgIDogW10sXG4gICAgKTtcbiAgfVxuICByZXR1cm4gW107XG59XG5cbmZ1bmN0aW9uIHZpc3VhbGl6YXRpb25BdHRhY2htZW50SWQobWV0YWRhdGE6IHVua25vd24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIWlzUmVjb3JkKG1ldGFkYXRhKSB8fCAhaXNSZWNvcmQobWV0YWRhdGEudml6KSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIHR5cGVvZiBtZXRhZGF0YS52aXouYXR0YWNobWVudF9pZCA9PT0gXCJzdHJpbmdcIiA/IG1ldGFkYXRhLnZpei5hdHRhY2htZW50X2lkIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBjb250ZW50VGV4dChcbiAgdmFsdWU6IHouaW5mZXI8dHlwZW9mIEdlbmllQWdlbnRDb250ZW50U2NoZW1hPltdIHwgdW5kZWZpbmVkLFxuICB0eXBlOiBzdHJpbmcsXG4pOiBzdHJpbmdbXSB7XG4gIGlmICghdmFsdWUpIHJldHVybiBbXTtcbiAgcmV0dXJuIHZhbHVlLmZsYXRNYXAoKHBhcnQpID0+IChwYXJ0LnR5cGUgPT09IHR5cGUgJiYgcGFydC50ZXh0ID8gW3BhcnQudGV4dF0gOiBbXSkpO1xufVxuXG5mdW5jdGlvbiB0ZXh0QXR0YWNobWVudChcbiAgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgY29udGVudDogc3RyaW5nLFxuICBtZXRhZGF0YT86IHVua25vd24sXG4pOiBHZW5pZUF0dGFjaG1lbnQge1xuICByZXR1cm4ge1xuICAgIGF0dGFjaG1lbnRfaWQ6IGlkLFxuICAgIGF0dGFjaG1lbnRfdHlwZTogXCJ0ZXh0XCIsXG4gICAgdGV4dDoge1xuICAgICAgaWQsXG4gICAgICBjb250ZW50LFxuICAgICAgcHVycG9zZTogXCJURVhUX0FUVEFDSE1FTlRfUFVSUE9TRV9BTlNXRVJcIixcbiAgICAgIC4uLihtZXRhZGF0YSAhPT0gdW5kZWZpbmVkID8geyBtZXRhZGF0YSB9IDoge30pLFxuICAgIH0sXG4gIH07XG59XG4iXX0=
|
package/lib/src/event.js
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
*
|
|
25
25
|
* @module
|
|
26
26
|
*/
|
|
27
|
-
import {
|
|
27
|
+
import { deepEqual } from "@dbx-tools/shared-core";
|
|
28
28
|
import { detectAttachmentType, } from "./genie-model.js";
|
|
29
29
|
/* ----------------------- detector factory ----------------------- */
|
|
30
30
|
/**
|
|
@@ -155,7 +155,7 @@ export const detectSuggestedQuestions = eventDetector("suggested_questions", (cu
|
|
|
155
155
|
const prev = previous?.suggested_questions?.questions;
|
|
156
156
|
if (!curr || curr.length === 0)
|
|
157
157
|
return;
|
|
158
|
-
if (
|
|
158
|
+
if (deepEqual(curr, prev))
|
|
159
159
|
return;
|
|
160
160
|
return { ...location, questions: curr };
|
|
161
161
|
});
|
|
@@ -245,4 +245,4 @@ function matchPrevAttachment(curr, prevAtts, i) {
|
|
|
245
245
|
function thoughtKey(t) {
|
|
246
246
|
return `${t.thought_type}|${t.content}`;
|
|
247
247
|
}
|
|
248
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Qkc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFaEQsT0FBTyxFQUNMLG9CQUFvQixHQVFyQixNQUFNLGtCQUFrQixDQUFDO0FBdUUxQixzRUFBc0U7QUFFdEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQzNCLElBQU8sRUFDUCxNQUFtQjtJQUVuQixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQzFCLENBQUM7QUFFRCx5RUFBeUU7QUFFekUsK0NBQStDO0FBQy9DLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRTtJQUNsRixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRSxNQUFNO1FBQUUsT0FBTztJQUNuRSxPQUFPO1FBQ0wsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1FBQ3RCLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTTtRQUNqQyxRQUFRO1FBQ1IsZUFBZSxFQUFFLE9BQU8sQ0FBQyxlQUFlO1FBQ3hDLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtLQUMvQixDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUM7QUFFSCw0Q0FBNEM7QUFDNUMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsYUFBYSxDQUNoRCxZQUFZLEVBQ1osQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRTtJQUNyQyxJQUFJLFFBQVE7UUFBRSxPQUFPO0lBQ3JCLE9BQU87UUFDTCxHQUFH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QVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsd0JBQXdCLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEcsQ0FBQztBQUNILENBQUM7QUFFRCx5RUFBeUU7QUFFekU7Ozs7Ozs7R0FPRztBQUNILFNBQVMsbUJBQW1CLENBQzFCLElBQXFCLEVBQ3JCLFFBQTJCLEVBQzNCLENBQVM7SUFFVCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFDRCxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUMvQyxDQUFDO0FBRUQsb0VBQW9FO0FBQ3BFLFNBQVMsVUFBVSxDQUFDLENBQWU7SUFDakMsT0FBTyxHQUFHLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFB1cmUgZXZlbnQtZGV0ZWN0aW9uIGZvciBgZ2VuaWVFdmVudENoYXRgLiBHaXZlbiB0d29cbiAqIGBHZW5pZU1lc3NhZ2VgIHNuYXBzaG90cyAoY3VycmVudCArIHByaW9yKSBhbmQgdGhlIHN1cnJvdW5kaW5nXG4gKiBgc3BhY2VfaWRgLCBkZXJpdmUgdGhlIHNlbWFudGljIGRlbHRhcyAoc3RhdHVzIHRyYW5zaXRpb25zLCBuZXdcbiAqIGF0dGFjaG1lbnRzLCBuZXcgdGhvdWdodHMsIFNRTCBlbWlzc2lvbiwgd2FyZWhvdXNlIHN1Ym1pc3Npb24sXG4gKiByb3ctY291bnQgcHJvZ3Jlc3MsIGZvbGxvdy11cCBzdWdnZXN0aW9ucywgdGV4dCBkZWx0YXMpIGFuZFxuICogeWllbGQgdGhlbSBhcyB0eXBlZCB7QGxpbmsgR2VuaWVDaGF0RXZlbnR9cy5cbiAqXG4gKiBEZXRlY3RvcnMgYXJlIGJ1aWx0IHRocm91Z2ggYSBzaW5nbGUgdHlwZWQgZmFjdG9yeSB0aGF0IHRpZXNcbiAqIGVhY2ggZXZlbnQncyBuYW1lIHRvIGl0cyBzY29wZSAod2hvbGUtbWVzc2FnZSB2cyBwZXItYXR0YWNobWVudClcbiAqIGFuZCBwYXlsb2FkIHNoYXBlLCBzbyBhIG1pc25hbWVkIGV2ZW50IG9yIGEgcGF5bG9hZCB0aGF0IGRvZXNuJ3RcbiAqIG1hdGNoIGl0cyBldmVudCBmYWlscyB0byBjb21waWxlLiBBbiBvcmNoZXN0cmF0b3Igd2Fsa3MgdGhlXG4gKiBzbmFwc2hvdCBkaWZmIGFuZCB5aWVsZHMgZXZlcnkgZGV0ZWN0b3IgdGhhdCBmaXJlcyBpbiBhIHN0YWJsZVxuICogb3JkZXIgKHN0YXR1cyBmaXJzdCwgdGhlbiBwZXItYXR0YWNobWVudCBmaWVsZCBkZWx0YXMpIHNvIGFcbiAqIHN1YnNjcmliZXIgdGhhdCBsb2dzIGV2ZW50cyBhcyB0aGV5IGFycml2ZSBzZWVzIGEgc2Vuc2libGVcbiAqIHNlcXVlbmNlLlxuICpcbiAqIFRoZSBtb2R1bGUgaXMgaW50ZW50aW9uYWxseSBwdXJlOiBubyBgRXZlbnRFbWl0dGVyYCwgbm8gYHRoaXNgLFxuICogbm8gSS9PLCBubyBtb2R1bGUtbGV2ZWwgbXV0YWJsZSBzdGF0ZS4gVGhlIGBtZXNzYWdlYCBhbmRcbiAqIGByZXN1bHRgIGV2ZW50cyBhcmUgTk9UIGRlcml2ZWQgaGVyZSAtIHRoZXkgYmVsb25nIHRvIHRoZSBjaGF0XG4gKiBsaWZlY3ljbGUgbGF5ZXIgKHRoZSBgZ2VuaWVFdmVudENoYXRgIGRyaXZlcikgYmVjYXVzZSB0aGV5IHRyYWNrXG4gKiBwZXIteWllbGQgLyBwZXItdHVybi1jb21wbGV0aW9uIHNlbWFudGljcyByYXRoZXIgdGhhbiBhXG4gKiBmaWVsZC1sZXZlbCBzbmFwc2hvdCBkaWZmLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBvYmplY3QgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuXG5pbXBvcnQge1xuICBkZXRlY3RBdHRhY2htZW50VHlwZSxcbiAgdHlwZSBHZW5pZUF0dGFjaG1lbnQsXG4gIHR5cGUgR2VuaWVDaGF0RXZlbnQsXG4gIHR5cGUgR2VuaWVDaGF0RXZlbnRGaWVsZHMsXG4gIHR5cGUgR2VuaWVDaGF0RXZlbnRUeXBlLFxuICB0eXBlIEdlbmllQ2hhdExvY2F0aW9uLFxuICB0eXBlIEdlbmllTWVzc2FnZSxcbiAgdHlwZSBHZW5pZVRob3VnaHQsXG59IGZyb20gXCIuL2dlbmllLW1vZGVsLnRzXCI7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGNvbnRyYWN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBXaGF0IGEgc2luZ2xlIGRldGVjdG9yIGNhbGwgcmV0dXJuczogemVybyAoYHVuZGVmaW5lZGApLCBvbmVcbiAqIChmaWVsZHMgb2JqZWN0KSwgb3IgbWFueSAoYGZpZWxkc1tdYCkgZXZlbnRzIG9mIHRoZSBzYW1lIHR5cGUuXG4gKiBFYWNoIHJlc3VsdCBpcyB0aGUgdmFyaWFudCdzIHBheWxvYWQgZmllbGRzICoqd2l0aG91dCoqIHRoZVxuICogYHR5cGVgIGRpc2NyaW1pbmF0b3IgLSB0aGUgb3JjaGVzdHJhdG9yIHN0YW1wcyBgdHlwZWAgd2hlbiBpdFxuICogeWllbGRzIHRoZSBldmVudC5cbiAqL1xudHlwZSBEZXRlY3RvclJlc3VsdDxUIGV4dGVuZHMgR2VuaWVDaGF0RXZlbnRUeXBlPiA9XG4gIEdlbmllQ2hhdEV2ZW50RmllbGRzPFQ+IHwgR2VuaWVDaGF0RXZlbnRGaWVsZHM8VD5bXSB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBXaGVyZSBpbiB0aGUgd2lyZSBzaGFwZSBhIGdpdmVuIGV2ZW50IGlzIGRlcml2ZWQgZnJvbS4gRHJpdmVzXG4gKiB3aGljaCBhcmd1bWVudHMgYGRldGVjdGAgcmVjZWl2ZXMuIGBcIm1lc3NhZ2VcImAgZXZlbnRzIHdhdGNoXG4gKiBgR2VuaWVNZXNzYWdlYCBpdHNlbGY7IGBcImF0dGFjaG1lbnRcImAgZXZlbnRzIHdhdGNoIG9uZSBzbG90IG9mXG4gKiBgbWVzc2FnZS5hdHRhY2htZW50c1tdYC4gYFwibGlmZWN5Y2xlXCJgIGV2ZW50cyAoYG1lc3NhZ2VgLFxuICogYHJlc3VsdGApIGFyZSBlbWl0dGVkIGJ5IHRoZSBjaGF0IGRyaXZlciBkaXJlY3RseSBhbmQgY2FuJ3QgYmVcbiAqIGJ1aWx0IHdpdGgge0BsaW5rIGV2ZW50RGV0ZWN0b3J9IC0gdGhleSBoYXZlIG5vIGRpZmYgc2lnbmF0dXJlLlxuICovXG5pbnRlcmZhY2UgRGV0ZWN0b3JTY29wZSB7XG4gIC8vIE1lc3NhZ2Utc2NvcGVkOiB0b3AtbGV2ZWwgZmllbGQgZGlmZiBvbiBgR2VuaWVNZXNzYWdlYC5cbiAgc3RhdHVzOiBcIm1lc3NhZ2VcIjtcbiAgLy8gUGVyLWF0dGFjaG1lbnQ6IGZpZWxkIGRpZmYgb24gb25lIGBHZW5pZUF0dGFjaG1lbnRgIHNsb3QuXG4gIGF0dGFjaG1lbnQ6IFwiYXR0YWNobWVudFwiO1xuICB0aGlua2luZzogXCJhdHRhY2htZW50XCI7XG4gIHRleHQ6IFwiYXR0YWNobWVudFwiO1xuICBxdWVyeTogXCJhdHRhY2htZW50XCI7XG4gIHN0YXRlbWVudDogXCJhdHRhY2htZW50XCI7XG4gIHJvd3M6IFwiYXR0YWNobWVudFwiO1xuICBzdWdnZXN0ZWRfcXVlc3Rpb25zOiBcImF0dGFjaG1lbnRcIjtcbiAgLy8gTGlmZWN5Y2xlOiBub3QgZGVyaXZlZCB2aWEgZGlmZiwgaGFuZGxlZCBieSB0aGUgY2hhdCBkcml2ZXIuXG4gIHF1ZXN0aW9uOiBcImxpZmVjeWNsZVwiO1xuICBtZXNzYWdlOiBcImxpZmVjeWNsZVwiO1xuICByZXN1bHQ6IFwibGlmZWN5Y2xlXCI7XG59XG5cbi8qKlxuICogYGRldGVjdGAgY2FsbGJhY2sgc2lnbmF0dXJlIGZvciBhIGdpdmVuIGV2ZW50IHR5cGUuIFJlc29sdmVkXG4gKiBmcm9tIHtAbGluayBEZXRlY3RvclNjb3BlfTogYFwibWVzc2FnZVwiYCBldmVudHMgZ2V0IHRoZSB0b3AtbGV2ZWxcbiAqIHNuYXBzaG90IHRyaXBsZSwgYFwiYXR0YWNobWVudFwiYCBldmVudHMgZ2V0IHRoZSBwZXItc2xvdCBxdWFkLFxuICogYFwibGlmZWN5Y2xlXCJgIGV2ZW50cyByZXNvbHZlIHRvIGBuZXZlcmAgKG5vIGRpZmYtYmFzZWQgZGV0ZWN0b3JcbiAqIGV4aXN0cyBmb3IgdGhlbSkuXG4gKi9cbnR5cGUgRGV0ZWN0Rm48VCBleHRlbmRzIEdlbmllQ2hhdEV2ZW50VHlwZT4gPSBEZXRlY3RvclNjb3BlW1RdIGV4dGVuZHMgXCJtZXNzYWdlXCJcbiAgPyAoXG4gICAgICBjdXJyZW50OiBHZW5pZU1lc3NhZ2UsXG4gICAgICBwcmV2aW91czogR2VuaWVNZXNzYWdlIHwgdW5kZWZpbmVkLFxuICAgICAgc3BhY2VfaWQ6IHN0cmluZyxcbiAgICApID0+IERldGVjdG9yUmVzdWx0PFQ+XG4gIDogRGV0ZWN0b3JTY29wZVtUXSBleHRlbmRzIFwiYXR0YWNobWVudFwiXG4gICAgPyAoXG4gICAgICAgIGN1cnJlbnQ6IEdlbmllQXR0YWNobWVudCxcbiAgICAgICAgcHJldmlvdXM6IEdlbmllQXR0YWNobWVudCB8IHVuZGVmaW5lZCxcbiAgICAgICAgbG9jYXRpb246IEdlbmllQ2hhdExvY2F0aW9uLFxuICAgICAgICBpbmRleDogbnVtYmVyLFxuICAgICAgKSA9PiBEZXRlY3RvclJlc3VsdDxUPlxuICAgIDogbmV2ZXI7XG5cbi8qKlxuICogVHlwZWQgZGV0ZWN0b3IgZm9yIG9uZSBldmVudCBpbiB0aGUge0BsaW5rIEdlbmllQ2hhdEV2ZW50fVxuICogdW5pb24uIFRoZSBgdHlwZWAgZmllbGQgaXMgdGhlIGV2ZW50IG5hbWU7IGBkZXRlY3RgJ3Mgc2lnbmF0dXJlXG4gKiBpcyBwaWNrZWQgZnJvbSB7QGxpbmsgRGV0ZWN0b3JTY29wZX0gYmFzZWQgb24gYFRgLlxuICovXG5pbnRlcmZhY2UgRXZlbnREZXRlY3RvcjxUIGV4dGVuZHMgR2VuaWVDaGF0RXZlbnRUeXBlPiB7XG4gIHJlYWRvbmx5IHR5cGU6IFQ7XG4gIGRldGVjdDogRGV0ZWN0Rm48VD47XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGRldGVjdG9yIGZhY3RvcnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBCdWlsZCBhbiB7QGxpbmsgRXZlbnREZXRlY3Rvcn0uIFBhc3MgdGhlIGV2ZW50IG5hbWUgYXMgdGhlXG4gKiBsaXRlcmFsIGZpcnN0IGFyZyBhbmQgdGhlIG1hdGNoaW5nIGBkZXRlY3RgIGNhbGxiYWNrIGFzIHRoZVxuICogc2Vjb25kLiBUUyBpbmZlcnMgYFRgIGZyb20gdGhlIGxpdGVyYWwsIG5hcnJvd3MgYGRldGVjdGAnc1xuICogc2lnbmF0dXJlIGFjY29yZGluZ2x5LCBhbmQgdHlwZXMgdGhlIHJldHVybiBhc1xuICogYEV2ZW50RGV0ZWN0b3I8VD5gLlxuICpcbiAqIEJ1aWxkLXRpbWUgZ3VhcmFudGVlczpcbiAqXG4gKiAgIC0gYGV2ZW50RGV0ZWN0b3IoXCJzdGF0dXMyXCIsIC4uLilgIGZhaWxzIC0gdGhlIG5hbWUgaXNuJ3QgaW5cbiAqICAgICB7QGxpbmsgR2VuaWVDaGF0RXZlbnR9LlxuICogICAtIGBldmVudERldGVjdG9yKFwic3RhdHVzXCIsIGF0dGFjaG1lbnRBcmdzQ2FsbGJhY2spYCBmYWlscyAtXG4gKiAgICAgYFwic3RhdHVzXCJgIGlzIG1lc3NhZ2Utc2NvcGVkLCBzbyBgZGV0ZWN0YCBtdXN0IHRha2VcbiAqICAgICBgKEdlbmllTWVzc2FnZSwgR2VuaWVNZXNzYWdlIHwgdW5kZWZpbmVkLCBzdHJpbmcpYC5cbiAqICAgLSBSZXR1cm5pbmcgYSBgVGhpbmtpbmdFdmVudGAtc2hhcGVkIGZpZWxkcyBvYmplY3QgZnJvbSBhXG4gKiAgICAgYFwic3RhdHVzXCJgIGRldGVjdG9yIGZhaWxzIC0gdGhlIHJldHVybiB0eXBlIGlzIGNvbnN0cmFpbmVkXG4gKiAgICAgdG8gYERldGVjdG9yUmVzdWx0PFwic3RhdHVzXCI+YC5cbiAqXG4gKiBMaWZlY3ljbGUgZXZlbnQgbmFtZXMgKGBcIm1lc3NhZ2VcImAsIGBcInJlc3VsdFwiYCkgcmVzb2x2ZSBgZGV0ZWN0YFxuICogdG8gYG5ldmVyYCBhbmQgd29uJ3QgY29tcGlsZSwgd2hpY2ggaXMgaW50ZW50aW9uYWw6IHRob3NlIGhhdmVcbiAqIG5vIGRpZmYgc2lnbmF0dXJlIGFuZCBhcmUgZW1pdHRlZCBkaXJlY3RseSBieSB0aGUgY2hhdCBkcml2ZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBldmVudERldGVjdG9yPFQgZXh0ZW5kcyBHZW5pZUNoYXRFdmVudFR5cGU+KFxuICB0eXBlOiBULFxuICBkZXRlY3Q6IERldGVjdEZuPFQ+LFxuKTogRXZlbnREZXRlY3RvcjxUPiB7XG4gIHJldHVybiB7IHR5cGUsIGRldGVjdCB9O1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGRldGVjdG9ycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKiBUb3AtbGV2ZWwgYG1lc3NhZ2Uuc3RhdHVzYCB0cmFuc2l0aW9uZWQuICovXG5leHBvcnQgY29uc3QgZGV0ZWN0U3RhdHVzID0gZXZlbnREZXRlY3RvcihcInN0YXR1c1wiLCAoY3VycmVudCwgcHJldmlvdXMsIHNwYWNlX2lkKSA9PiB7XG4gIGlmICghY3VycmVudC5zdGF0dXMgfHwgY3VycmVudC5zdGF0dXMgPT09IHByZXZpb3VzPy5zdGF0dXMpIHJldHVybjtcbiAgcmV0dXJuIHtcbiAgICBzdGF0dXM6IGN1cnJlbnQuc3RhdHVzLFxuICAgIHByZXZpb3VzX3N0YXR1czogcHJldmlvdXM/LnN0YXR1cyxcbiAgICBzcGFjZV9pZCxcbiAgICBjb252ZXJzYXRpb25faWQ6IGN1cnJlbnQuY29udmVyc2F0aW9uX2lkLFxuICAgIG1lc3NhZ2VfaWQ6IGN1cnJlbnQubWVzc2FnZV9pZCxcbiAgfTtcbn0pO1xuXG4vKiogRmlyc3QgdGltZSB3ZSBzZWUgYW4gYXR0YWNobWVudCBzbG90LiAqL1xuZXhwb3J0IGNvbnN0IGRldGVjdEF0dGFjaG1lbnRBZGRlZCA9IGV2ZW50RGV0ZWN0b3IoXG4gIFwiYXR0YWNobWVudFwiLFxuICAoY3VycmVudCwgcHJldmlvdXMsIGxvY2F0aW9uLCBpbmRleCkgPT4ge1xuICAgIGlmIChwcmV2aW91cykgcmV0dXJuO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5sb2NhdGlvbixcbiAgICAgIGluZGV4LFxuICAgICAgYXR0YWNobWVudF90eXBlOiBkZXRlY3RBdHRhY2htZW50VHlwZShjdXJyZW50KSxcbiAgICB9O1xuICB9LFxuKTtcblxuLyoqXG4gKiBPbmUgZW1pdCBwZXIgbmV3IGAodGhvdWdodF90eXBlLCBjb250ZW50KWAgdHVwbGUgb24gYSBxdWVyeVxuICogYXR0YWNobWVudC4gVmFsdWUtYmFzZWQgc2V0IGRpZmY6IEdlbmllIGNhbiBtdXRhdGUgZXhpc3RpbmdcbiAqIHRob3VnaHQgc2xvdHMgaW4gcGxhY2UgKGUuZy4gcmUtdHlwaW5nIGluZGV4IDAgZnJvbVxuICogYERBVEFfU09VUkNJTkdgIHRvIGBERVNDUklQVElPTmAgd2hpbGUgcmUtYXBwZW5kaW5nIHRoZVxuICogb3JpZ2luYWwgYXQgaW5kZXggMSksIHNvIHBvc2l0aW9uYWwgLyBhcHBlbmQtb25seSBkaWZmIHdvdWxkXG4gKiBtaXNzIHJlLXR5cGVzIGFuZCBkb3VibGUtY291bnQgcmUtb3JkZXJzLlxuICovXG5leHBvcnQgY29uc3QgZGV0ZWN0VGhpbmtpbmcgPSBldmVudERldGVjdG9yKFwidGhpbmtpbmdcIiwgKGN1cnJlbnQsIHByZXZpb3VzLCBsb2NhdGlvbikgPT4ge1xuICBjb25zdCBjdXJyVGhvdWdodHMgPSBjdXJyZW50LnF1ZXJ5Py50aG91Z2h0cyA/PyBbXTtcbiAgaWYgKGN1cnJUaG91Z2h0cy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgY29uc3Qgc2VlbiA9IG5ldyBTZXQoKHByZXZpb3VzPy5xdWVyeT8udGhvdWdodHMgPz8gW10pLm1hcCh0aG91Z2h0S2V5KSk7XG4gIGNvbnN0IG91dDogR2VuaWVDaGF0RXZlbnRGaWVsZHM8XCJ0aGlua2luZ1wiPltdID0gW107XG4gIGZvciAoY29uc3QgdCBvZiBjdXJyVGhvdWdodHMpIHtcbiAgICBjb25zdCBrZXkgPSB0aG91Z2h0S2V5KHQpO1xuICAgIGlmIChzZWVuLmhhcyhrZXkpKSBjb250aW51ZTtcbiAgICAvLyBEZWZlbnNpdmU6IGRlZHVwZSB3aXRoaW4gYSBzaW5nbGUgc25hcHNob3QgaW4gY2FzZSBHZW5pZVxuICAgIC8vIGV2ZXIgc2hpcHMgdGhlIHNhbWUgdGhvdWdodCB0d2ljZSBpbiBvbmUgYHRob3VnaHRzW11gLlxuICAgIHNlZW4uYWRkKGtleSk7XG4gICAgb3V0LnB1c2goeyAuLi5sb2NhdGlvbiwgdGV4dDogdC5jb250ZW50LCB0aG91Z2h0X3R5cGU6IHQudGhvdWdodF90eXBlIH0pO1xuICB9XG4gIHJldHVybiBvdXQ7XG59KTtcblxuLyoqIFRleHQtYXR0YWNobWVudCBgY29udGVudGAgYXBwZWFyZWQgb3IgY2hhbmdlZC4gKi9cbmV4cG9ydCBjb25zdCBkZXRlY3RUZXh0ID0gZXZlbnREZXRlY3RvcihcInRleHRcIiwgKGN1cnJlbnQsIHByZXZpb3VzLCBsb2NhdGlvbikgPT4ge1xuICBjb25zdCBjdXJyID0gY3VycmVudC50ZXh0Py5jb250ZW50O1xuICBjb25zdCBwcmV2ID0gcHJldmlvdXM/LnRleHQ/LmNvbnRlbnQ7XG4gIGlmIChjdXJyID09PSB1bmRlZmluZWQgfHwgY3VyciA9PT0gcHJldikgcmV0dXJuO1xuICByZXR1cm4geyAuLi5sb2NhdGlvbiwgdGV4dDogY3VyciB9O1xufSk7XG5cbi8qKiBTUUwgdHJhbnNpdGlvbmVkIHVuZGVmaW5lZCAtPiBzdHJpbmcsIG9yIGNoYW5nZWQuICovXG5leHBvcnQgY29uc3QgZGV0ZWN0UXVlcnkgPSBldmVudERldGVjdG9yKFwicXVlcnlcIiwgKGN1cnJlbnQsIHByZXZpb3VzLCBsb2NhdGlvbikgPT4ge1xuICBjb25zdCBjdXJyID0gY3VycmVudC5xdWVyeT8ucXVlcnk7XG4gIGNvbnN0IHByZXYgPSBwcmV2aW91cz8ucXVlcnk/LnF1ZXJ5O1xuICBpZiAoIWN1cnIgfHwgY3VyciA9PT0gcHJldikgcmV0dXJuO1xuICByZXR1cm4ge1xuICAgIC4uLmxvY2F0aW9uLFxuICAgIHNxbDogY3VycixcbiAgICB0aXRsZTogY3VycmVudC5xdWVyeT8udGl0bGUsXG4gICAgZGVzY3JpcHRpb246IGN1cnJlbnQucXVlcnk/LmRlc2NyaXB0aW9uLFxuICB9O1xufSk7XG5cbi8qKiBXYXJlaG91c2Utc3RhdGVtZW50IGlkIGFzc2lnbmVkLiAqL1xuZXhwb3J0IGNvbnN0IGRldGVjdFN0YXRlbWVudCA9IGV2ZW50RGV0ZWN0b3IoXCJzdGF0ZW1lbnRcIiwgKGN1cnJlbnQsIHByZXZpb3VzLCBsb2NhdGlvbikgPT4ge1xuICBjb25zdCBjdXJyID0gY3VycmVudC5xdWVyeT8uc3RhdGVtZW50X2lkO1xuICBjb25zdCBwcmV2ID0gcHJldmlvdXM/LnF1ZXJ5Py5zdGF0ZW1lbnRfaWQ7XG4gIGlmICghY3VyciB8fCBjdXJyID09PSBwcmV2KSByZXR1cm47XG4gIHJldHVybiB7IC4uLmxvY2F0aW9uLCBzdGF0ZW1lbnRfaWQ6IGN1cnIgfTtcbn0pO1xuXG4vKipcbiAqIGByb3dfY291bnRgIGNoYW5nZWQgLSBmaXJlcyBvbiBldmVyeSB0cmFuc2l0aW9uIGluY2x1ZGluZyB0aGVcbiAqIGluaXRpYWwgYHVuZGVmaW5lZCAtPiAwYCBhbmQgdGhlIHBvc3QtZXhlY3V0aW9uIGAwIC0+IE5gLlxuICogQ2FycmllcyB0aGUgc3RhdGVtZW50IGlkIHdoZW4gYXZhaWxhYmxlIGZvciBjb3JyZWxhdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IGRldGVjdFJvd3MgPSBldmVudERldGVjdG9yKFwicm93c1wiLCAoY3VycmVudCwgcHJldmlvdXMsIGxvY2F0aW9uKSA9PiB7XG4gIGNvbnN0IGN1cnIgPSBjdXJyZW50LnF1ZXJ5Py5xdWVyeV9yZXN1bHRfbWV0YWRhdGE/LnJvd19jb3VudDtcbiAgY29uc3QgcHJldiA9IHByZXZpb3VzPy5xdWVyeT8ucXVlcnlfcmVzdWx0X21ldGFkYXRhPy5yb3dfY291bnQ7XG4gIGlmIChjdXJyID09PSB1bmRlZmluZWQgfHwgY3VyciA9PT0gcHJldikgcmV0dXJuO1xuICByZXR1cm4ge1xuICAgIC4uLmxvY2F0aW9uLFxuICAgIHJvd19jb3VudDogY3VycixcbiAgICBwcmV2aW91c19yb3dfY291bnQ6IHByZXYsXG4gICAgc3RhdGVtZW50X2lkOiBjdXJyZW50LnF1ZXJ5Py5zdGF0ZW1lbnRfaWQgPz8gcHJldmlvdXM/LnF1ZXJ5Py5zdGF0ZW1lbnRfaWQsXG4gIH07XG59KTtcblxuLyoqXG4gKiBGb2xsb3ctdXAgc3VnZ2VzdGVkLXF1ZXN0aW9ucyBhcnJheSBhcHBlYXJlZCBvciBjaGFuZ2VkLlxuICogQ29tcGFyZXMgc3RydWN0dXJhbGx5IHNvIGEgbGVuZ3RoLXByZXNlcnZpbmcgY29udGVudCByZXdyaXRlIHN0aWxsIGZpcmVzLlxuICovXG5leHBvcnQgY29uc3QgZGV0ZWN0U3VnZ2VzdGVkUXVlc3Rpb25zID0gZXZlbnREZXRlY3RvcihcbiAgXCJzdWdnZXN0ZWRfcXVlc3Rpb25zXCIsXG4gIChjdXJyZW50LCBwcmV2aW91cywgbG9jYXRpb24pID0+IHtcbiAgICBjb25zdCBjdXJyID0gY3VycmVudC5zdWdnZXN0ZWRfcXVlc3Rpb25zPy5xdWVzdGlvbnM7XG4gICAgY29uc3QgcHJldiA9IHByZXZpb3VzPy5zdWdnZXN0ZWRfcXVlc3Rpb25zPy5xdWVzdGlvbnM7XG4gICAgaWYgKCFjdXJyIHx8IGN1cnIubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgaWYgKG9iamVjdC5kZWVwRXF1YWwoY3VyciwgcHJldikpIHJldHVybjtcbiAgICByZXR1cm4geyAuLi5sb2NhdGlvbiwgcXVlc3Rpb25zOiBjdXJyIH07XG4gIH0sXG4pO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gb3JjaGVzdHJhdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIFdhbGsgdGhlIGRpZmYgYmV0d2VlbiBgY3VycmVudGAgYW5kIGBwcmV2aW91c2AgYW5kIHlpZWxkIGV2ZXJ5XG4gKiBkZXJpdmVkIGV2ZW50IHRoZSBzbmFwc2hvdCBwcm9kdWNlZC4gRGV0ZWN0b3Igb3JkZXIgbWlycm9yc1xuICogR2VuaWUncyB3aXJlIG9yZGVyaW5nIChzdGF0dXMgZmlyc3QsIHRoZW4gcGVyLWF0dGFjaG1lbnQgZmllbGRcbiAqIGRlbHRhcykgc28gYSBzdWJzY3JpYmVyIHRoYXQgc2ltcGx5IGxvZ3MgZXZlbnRzIGFzIHRoZXkgYXJyaXZlXG4gKiBzZWVzIHRoZW0gaW4gYSBzZW5zaWJsZSBzZXF1ZW5jZS5cbiAqXG4gKiBDYWxsZXIgcmVzcG9uc2liaWxpdGllcyAobm90IGhhbmRsZWQgaGVyZSk6XG4gKlxuICogICAtIFlpZWxkIGB7IHR5cGU6IFwibWVzc2FnZVwiLCBtZXNzYWdlOiBjdXJyZW50IH1gIEJFRk9SRVxuICogICAgIGNhbGxpbmcgdGhpcywgb25jZSBwZXIgcG9sbCB5aWVsZC5cbiAqICAgLSBZaWVsZCBgeyB0eXBlOiBcInJlc3VsdFwiLCAuLi4gfWAgQUZURVIgY2FsbGluZyB0aGlzIHdoZW5cbiAqICAgICBgaXNUZXJtaW5hbFN0YXR1cyhjdXJyZW50LnN0YXR1cylgIC0gcGVyLXR1cm4gbGlmZWN5Y2xlLFxuICogICAgIG5vdCBhIHBlci1zbmFwc2hvdCBmaWVsZCBkaWZmLlxuICogICAtIERlY2lkZSB3aGF0IGNvdW50cyBhcyBhIFwiZnJlc2ggdHVyblwiIGFuZCBwYXNzIGB1bmRlZmluZWRgXG4gKiAgICAgZm9yIGBwcmV2aW91c2Agb24gdHVybiBib3VuZGFyaWVzLCBzbyBhbm9ueW1vdXMtYXR0YWNobWVudFxuICogICAgIHN0YXRlIGZyb20gYSBwcmlvciB0dXJuIGRvZXNuJ3QgYmxlZWQgaW4uXG4gKlxuICogU3luYyBnZW5lcmF0b3I6IHRoZSBkaWZmIGlzIHB1cmUgQ1BVIHdvcmssIG5vIGF3YWl0cy4gVXNlXG4gKiBgeWllbGQqYCBmcm9tIGFuIGFzeW5jIGdlbmVyYXRvciB0byBzcGxpY2UgdGhlIGV2ZW50cyBpbnRvIGFcbiAqIHN0cmVhbS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uKiBldmVudHNGcm9tTWVzc2FnZShcbiAgY3VycmVudDogR2VuaWVNZXNzYWdlLFxuICBwcmV2aW91czogR2VuaWVNZXNzYWdlIHwgdW5kZWZpbmVkLFxuICBzcGFjZV9pZDogc3RyaW5nLFxuKTogR2VuZXJhdG9yPEdlbmllQ2hhdEV2ZW50LCB2b2lkLCB2b2lkPiB7XG4gIC8vIFN0YW1wIGB0eXBlYCBvbnRvIGVhY2ggZGV0ZWN0b3IgcmVzdWx0IGFuZCB5aWVsZCBpdC4gUmV0dXJuaW5nXG4gIC8vIGEgdHlwZWQgZ2VuZXJhdG9yIGtlZXBzIHRoZSBgeWllbGQqYCBjYWxsc2l0ZSB0aWR5LiBUaGUgZG91YmxlXG4gIC8vIGNhc3QgKGB1bmtub3duYCAtPiBgR2VuaWVDaGF0RXZlbnRgKSBpcyBuZWVkZWQgYmVjYXVzZSB0aGVcbiAgLy8gZ2VuZXJpYyBtZXJnZSBge3R5cGU6IFR9ICYgR2VuaWVDaGF0RXZlbnRGaWVsZHM8VD5gIGRvZXNuJ3RcbiAgLy8gc3RydWN0dXJhbGx5IG5hcnJvdyBiYWNrIHRvIGEgZGlzY3JpbWluYXRlZC11bmlvbiBtZW1iZXIgLVxuICAvLyBlYWNoIGRldGVjdG9yJ3MgcnVudGltZSBvdXRwdXQgaXMgc2hhcGVkIGNvcnJlY3RseSBieVxuICAvLyBjb25zdHJ1Y3Rpb24sIHNvIHRoZSBjYXN0IGlzIHNvdW5kLlxuICBmdW5jdGlvbiogZW1pdDxUIGV4dGVuZHMgR2VuaWVDaGF0RXZlbnRUeXBlPihcbiAgICBkZXRlY3RvcjogRXZlbnREZXRlY3RvcjxUPixcbiAgICByZXN1bHQ6IERldGVjdG9yUmVzdWx0PFQ+LFxuICApOiBHZW5lcmF0b3I8R2VuaWVDaGF0RXZlbnQsIHZvaWQsIHZvaWQ+IHtcbiAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHJldHVybjtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XG4gICAgICBmb3IgKGNvbnN0IGZpZWxkcyBvZiByZXN1bHQpIHtcbiAgICAgICAgeWllbGQgeyB0eXBlOiBkZXRlY3Rvci50eXBlLCAuLi5maWVsZHMgfSBhcyB1bmtub3duIGFzIEdlbmllQ2hhdEV2ZW50O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB5aWVsZCB7IHR5cGU6IGRldGVjdG9yLnR5cGUsIC4uLnJlc3VsdCB9IGFzIHVua25vd24gYXMgR2VuaWVDaGF0RXZlbnQ7XG4gICAgfVxuICB9XG5cbiAgLy8gTWVzc2FnZS1zY29wZWQgZGV0ZWN0b3JzIHJ1biBvbmNlIHBlciBzbmFwc2hvdC5cbiAgeWllbGQqIGVtaXQoZGV0ZWN0U3RhdHVzLCBkZXRlY3RTdGF0dXMuZGV0ZWN0KGN1cnJlbnQsIHByZXZpb3VzLCBzcGFjZV9pZCkpO1xuXG4gIC8vIFBlci1hdHRhY2htZW50IGRldGVjdG9ycyBydW4gb25jZSBwZXIgYXR0YWNobWVudCBzbG90LlxuICBjb25zdCBjdXJyQXR0cyA9IGN1cnJlbnQuYXR0YWNobWVudHMgPz8gW107XG4gIGNvbnN0IHByZXZBdHRzID0gcHJldmlvdXM/LmF0dGFjaG1lbnRzID8/IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGN1cnJBdHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY3VyciA9IGN1cnJBdHRzW2ldITtcbiAgICBjb25zdCBwcmV2ID0gbWF0Y2hQcmV2QXR0YWNobWVudChjdXJyLCBwcmV2QXR0cywgaSk7XG4gICAgY29uc3QgbG9jYXRpb246IEdlbmllQ2hhdExvY2F0aW9uID0ge1xuICAgICAgc3BhY2VfaWQsXG4gICAgICBjb252ZXJzYXRpb25faWQ6IGN1cnJlbnQuY29udmVyc2F0aW9uX2lkLFxuICAgICAgbWVzc2FnZV9pZDogY3VycmVudC5tZXNzYWdlX2lkLFxuICAgICAgYXR0YWNobWVudF9pZDogY3Vyci5hdHRhY2htZW50X2lkLFxuICAgIH07XG4gICAgeWllbGQqIGVtaXQoZGV0ZWN0QXR0YWNobWVudEFkZGVkLCBkZXRlY3RBdHRhY2htZW50QWRkZWQuZGV0ZWN0KGN1cnIsIHByZXYsIGxvY2F0aW9uLCBpKSk7XG4gICAgeWllbGQqIGVtaXQoZGV0ZWN0VGhpbmtpbmcsIGRldGVjdFRoaW5raW5nLmRldGVjdChjdXJyLCBwcmV2LCBsb2NhdGlvbiwgaSkpO1xuICAgIHlpZWxkKiBlbWl0KGRldGVjdFRleHQsIGRldGVjdFRleHQuZGV0ZWN0KGN1cnIsIHByZXYsIGxvY2F0aW9uLCBpKSk7XG4gICAgeWllbGQqIGVtaXQoZGV0ZWN0UXVlcnksIGRldGVjdFF1ZXJ5LmRldGVjdChjdXJyLCBwcmV2LCBsb2NhdGlvbiwgaSkpO1xuICAgIHlpZWxkKiBlbWl0KGRldGVjdFN0YXRlbWVudCwgZGV0ZWN0U3RhdGVtZW50LmRldGVjdChjdXJyLCBwcmV2LCBsb2NhdGlvbiwgaSkpO1xuICAgIHlpZWxkKiBlbWl0KGRldGVjdFJvd3MsIGRldGVjdFJvd3MuZGV0ZWN0KGN1cnIsIHByZXYsIGxvY2F0aW9uLCBpKSk7XG4gICAgeWllbGQqIGVtaXQoZGV0ZWN0U3VnZ2VzdGVkUXVlc3Rpb25zLCBkZXRlY3RTdWdnZXN0ZWRRdWVzdGlvbnMuZGV0ZWN0KGN1cnIsIHByZXYsIGxvY2F0aW9uLCBpKSk7XG4gIH1cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gaGVscGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIEZpbmQgdGhlIHByaW9yIHZlcnNpb24gb2YgYGN1cnJgIGluIGBwcmV2QXR0c2AuIEF0dGFjaG1lbnRzXG4gKiB3aXRoIGlkcyBtYXRjaCBieSBpZCAoR2VuaWUga2VlcHMgaWRzIHN0YWJsZSBhY3Jvc3MgcG9sbHMpO1xuICogYW5vbnltb3VzIGF0dGFjaG1lbnRzIChHZW5pZSdzIG1haW4tYW5zd2VyIHRleHQgZG9lc24ndCBnZXRcbiAqIG9uZSkgbWF0Y2ggcG9zaXRpb25hbGx5IGFnYWluc3QgYW4gYW5vbnltb3VzIHByZXYgYXQgdGhlIHNhbWVcbiAqIGluZGV4LCBzbyB0aGV5IGRvbid0IGFjY2lkZW50YWxseSBiaW5kIHRvIGFuIGlkJ2QgcHJlZGVjZXNzb3JcbiAqIHRoYXQgaGFwcGVuZWQgdG8gc2hhcmUgdGhlIHNsb3QuXG4gKi9cbmZ1bmN0aW9uIG1hdGNoUHJldkF0dGFjaG1lbnQoXG4gIGN1cnI6IEdlbmllQXR0YWNobWVudCxcbiAgcHJldkF0dHM6IEdlbmllQXR0YWNobWVudFtdLFxuICBpOiBudW1iZXIsXG4pOiBHZW5pZUF0dGFjaG1lbnQgfCB1bmRlZmluZWQge1xuICBpZiAoY3Vyci5hdHRhY2htZW50X2lkKSB7XG4gICAgcmV0dXJuIHByZXZBdHRzLmZpbmQoKGEpID0+IGEuYXR0YWNobWVudF9pZCA9PT0gY3Vyci5hdHRhY2htZW50X2lkKTtcbiAgfVxuICBjb25zdCBwID0gcHJldkF0dHNbaV07XG4gIHJldHVybiBwICYmICFwLmF0dGFjaG1lbnRfaWQgPyBwIDogdW5kZWZpbmVkO1xufVxuXG4vKiogU3RhYmxlIGtleSBmb3Ige0BsaW5rIGRldGVjdFRoaW5raW5nfSdzIHZhbHVlLWJhc2VkIHNldCBkaWZmLiAqL1xuZnVuY3Rpb24gdGhvdWdodEtleSh0OiBHZW5pZVRob3VnaHQpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7dC50aG91Z2h0X3R5cGV9fCR7dC5jb250ZW50fWA7XG59XG4iXX0=
|
|
248
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Qkc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFbkQsT0FBTyxFQUNMLG9CQUFvQixHQVFyQixNQUFNLGtCQUFrQixDQUFDO0FBdUUxQixzRUFBc0U7QUFFdEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQzNCLElBQU8sRUFDUCxNQUFtQjtJQUVuQixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQzFCLENBQUM7QUFFRCx5RUFBeUU7QUFFekUsK0NBQStDO0FBQy9DLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRTtJQUNsRixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRSxNQUFNO1FBQUUsT0FBTztJQUNuRSxPQUFPO1FBQ0wsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1FBQ3RCLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTTtRQUNqQyxRQUFRO1FBQ1IsZUFBZSxFQUFFLE9BQU8sQ0FBQyxlQUFlO1FBQ3hDLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtLQUMvQixDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUM7QUFFSCw0Q0FBNEM7QUFDNUMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsYUFBYSxDQUNoRCxZQUFZLEVBQ1osQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRTtJQUNyQyxJQUFJLFFBQVE7UUFBRSxPQUFPO0lBQ3JCLE9BQU87UUFDTCxHQUFH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QU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRyxDQUFDO0FBQ0gsQ0FBQztBQUVELHlFQUF5RTtBQUV6RTs7Ozs7OztHQU9HO0FBQ0gsU0FBUyxtQkFBbUIsQ0FDMUIsSUFBcUIsRUFDckIsUUFBMkIsRUFDM0IsQ0FBUztJQUVULElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUNELE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQy9DLENBQUM7QUFFRCxvRUFBb0U7QUFDcEUsU0FBUyxVQUFVLENBQUMsQ0FBZTtJQUNqQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDMUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHVyZSBldmVudC1kZXRlY3Rpb24gZm9yIGBnZW5pZUV2ZW50Q2hhdGAuIEdpdmVuIHR3b1xuICogYEdlbmllTWVzc2FnZWAgc25hcHNob3RzIChjdXJyZW50ICsgcHJpb3IpIGFuZCB0aGUgc3Vycm91bmRpbmdcbiAqIGBzcGFjZV9pZGAsIGRlcml2ZSB0aGUgc2VtYW50aWMgZGVsdGFzIChzdGF0dXMgdHJhbnNpdGlvbnMsIG5ld1xuICogYXR0YWNobWVudHMsIG5ldyB0aG91Z2h0cywgU1FMIGVtaXNzaW9uLCB3YXJlaG91c2Ugc3VibWlzc2lvbixcbiAqIHJvdy1jb3VudCBwcm9ncmVzcywgZm9sbG93LXVwIHN1Z2dlc3Rpb25zLCB0ZXh0IGRlbHRhcykgYW5kXG4gKiB5aWVsZCB0aGVtIGFzIHR5cGVkIHtAbGluayBHZW5pZUNoYXRFdmVudH1zLlxuICpcbiAqIERldGVjdG9ycyBhcmUgYnVpbHQgdGhyb3VnaCBhIHNpbmdsZSB0eXBlZCBmYWN0b3J5IHRoYXQgdGllc1xuICogZWFjaCBldmVudCdzIG5hbWUgdG8gaXRzIHNjb3BlICh3aG9sZS1tZXNzYWdlIHZzIHBlci1hdHRhY2htZW50KVxuICogYW5kIHBheWxvYWQgc2hhcGUsIHNvIGEgbWlzbmFtZWQgZXZlbnQgb3IgYSBwYXlsb2FkIHRoYXQgZG9lc24ndFxuICogbWF0Y2ggaXRzIGV2ZW50IGZhaWxzIHRvIGNvbXBpbGUuIEFuIG9yY2hlc3RyYXRvciB3YWxrcyB0aGVcbiAqIHNuYXBzaG90IGRpZmYgYW5kIHlpZWxkcyBldmVyeSBkZXRlY3RvciB0aGF0IGZpcmVzIGluIGEgc3RhYmxlXG4gKiBvcmRlciAoc3RhdHVzIGZpcnN0LCB0aGVuIHBlci1hdHRhY2htZW50IGZpZWxkIGRlbHRhcykgc28gYVxuICogc3Vic2NyaWJlciB0aGF0IGxvZ3MgZXZlbnRzIGFzIHRoZXkgYXJyaXZlIHNlZXMgYSBzZW5zaWJsZVxuICogc2VxdWVuY2UuXG4gKlxuICogVGhlIG1vZHVsZSBpcyBpbnRlbnRpb25hbGx5IHB1cmU6IG5vIGBFdmVudEVtaXR0ZXJgLCBubyBgdGhpc2AsXG4gKiBubyBJL08sIG5vIG1vZHVsZS1sZXZlbCBtdXRhYmxlIHN0YXRlLiBUaGUgYG1lc3NhZ2VgIGFuZFxuICogYHJlc3VsdGAgZXZlbnRzIGFyZSBOT1QgZGVyaXZlZCBoZXJlIC0gdGhleSBiZWxvbmcgdG8gdGhlIGNoYXRcbiAqIGxpZmVjeWNsZSBsYXllciAodGhlIGBnZW5pZUV2ZW50Q2hhdGAgZHJpdmVyKSBiZWNhdXNlIHRoZXkgdHJhY2tcbiAqIHBlci15aWVsZCAvIHBlci10dXJuLWNvbXBsZXRpb24gc2VtYW50aWNzIHJhdGhlciB0aGFuIGFcbiAqIGZpZWxkLWxldmVsIHNuYXBzaG90IGRpZmYuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGRlZXBFcXVhbCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5cbmltcG9ydCB7XG4gIGRldGVjdEF0dGFjaG1lbnRUeXBlLFxuICB0eXBlIEdlbmllQXR0YWNobWVudCxcbiAgdHlwZSBHZW5pZUNoYXRFdmVudCxcbiAgdHlwZSBHZW5pZUNoYXRFdmVudEZpZWxkcyxcbiAgdHlwZSBHZW5pZUNoYXRFdmVudFR5cGUsXG4gIHR5cGUgR2VuaWVDaGF0TG9jYXRpb24sXG4gIHR5cGUgR2VuaWVNZXNzYWdlLFxuICB0eXBlIEdlbmllVGhvdWdodCxcbn0gZnJvbSBcIi4vZ2VuaWUtbW9kZWwudHNcIjtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY29udHJhY3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIFdoYXQgYSBzaW5nbGUgZGV0ZWN0b3IgY2FsbCByZXR1cm5zOiB6ZXJvIChgdW5kZWZpbmVkYCksIG9uZVxuICogKGZpZWxkcyBvYmplY3QpLCBvciBtYW55IChgZmllbGRzW11gKSBldmVudHMgb2YgdGhlIHNhbWUgdHlwZS5cbiAqIEVhY2ggcmVzdWx0IGlzIHRoZSB2YXJpYW50J3MgcGF5bG9hZCBmaWVsZHMgKip3aXRob3V0KiogdGhlXG4gKiBgdHlwZWAgZGlzY3JpbWluYXRvciAtIHRoZSBvcmNoZXN0cmF0b3Igc3RhbXBzIGB0eXBlYCB3aGVuIGl0XG4gKiB5aWVsZHMgdGhlIGV2ZW50LlxuICovXG50eXBlIERldGVjdG9yUmVzdWx0PFQgZXh0ZW5kcyBHZW5pZUNoYXRFdmVudFR5cGU+ID1cbiAgR2VuaWVDaGF0RXZlbnRGaWVsZHM8VD4gfCBHZW5pZUNoYXRFdmVudEZpZWxkczxUPltdIHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIFdoZXJlIGluIHRoZSB3aXJlIHNoYXBlIGEgZ2l2ZW4gZXZlbnQgaXMgZGVyaXZlZCBmcm9tLiBEcml2ZXNcbiAqIHdoaWNoIGFyZ3VtZW50cyBgZGV0ZWN0YCByZWNlaXZlcy4gYFwibWVzc2FnZVwiYCBldmVudHMgd2F0Y2hcbiAqIGBHZW5pZU1lc3NhZ2VgIGl0c2VsZjsgYFwiYXR0YWNobWVudFwiYCBldmVudHMgd2F0Y2ggb25lIHNsb3Qgb2ZcbiAqIGBtZXNzYWdlLmF0dGFjaG1lbnRzW11gLiBgXCJsaWZlY3ljbGVcImAgZXZlbnRzIChgbWVzc2FnZWAsXG4gKiBgcmVzdWx0YCkgYXJlIGVtaXR0ZWQgYnkgdGhlIGNoYXQgZHJpdmVyIGRpcmVjdGx5IGFuZCBjYW4ndCBiZVxuICogYnVpbHQgd2l0aCB7QGxpbmsgZXZlbnREZXRlY3Rvcn0gLSB0aGV5IGhhdmUgbm8gZGlmZiBzaWduYXR1cmUuXG4gKi9cbmludGVyZmFjZSBEZXRlY3RvclNjb3BlIHtcbiAgLy8gTWVzc2FnZS1zY29wZWQ6IHRvcC1sZXZlbCBmaWVsZCBkaWZmIG9uIGBHZW5pZU1lc3NhZ2VgLlxuICBzdGF0dXM6IFwibWVzc2FnZVwiO1xuICAvLyBQZXItYXR0YWNobWVudDogZmllbGQgZGlmZiBvbiBvbmUgYEdlbmllQXR0YWNobWVudGAgc2xvdC5cbiAgYXR0YWNobWVudDogXCJhdHRhY2htZW50XCI7XG4gIHRoaW5raW5nOiBcImF0dGFjaG1lbnRcIjtcbiAgdGV4dDogXCJhdHRhY2htZW50XCI7XG4gIHF1ZXJ5OiBcImF0dGFjaG1lbnRcIjtcbiAgc3RhdGVtZW50OiBcImF0dGFjaG1lbnRcIjtcbiAgcm93czogXCJhdHRhY2htZW50XCI7XG4gIHN1Z2dlc3RlZF9xdWVzdGlvbnM6IFwiYXR0YWNobWVudFwiO1xuICAvLyBMaWZlY3ljbGU6IG5vdCBkZXJpdmVkIHZpYSBkaWZmLCBoYW5kbGVkIGJ5IHRoZSBjaGF0IGRyaXZlci5cbiAgcXVlc3Rpb246IFwibGlmZWN5Y2xlXCI7XG4gIG1lc3NhZ2U6IFwibGlmZWN5Y2xlXCI7XG4gIHJlc3VsdDogXCJsaWZlY3ljbGVcIjtcbn1cblxuLyoqXG4gKiBgZGV0ZWN0YCBjYWxsYmFjayBzaWduYXR1cmUgZm9yIGEgZ2l2ZW4gZXZlbnQgdHlwZS4gUmVzb2x2ZWRcbiAqIGZyb20ge0BsaW5rIERldGVjdG9yU2NvcGV9OiBgXCJtZXNzYWdlXCJgIGV2ZW50cyBnZXQgdGhlIHRvcC1sZXZlbFxuICogc25hcHNob3QgdHJpcGxlLCBgXCJhdHRhY2htZW50XCJgIGV2ZW50cyBnZXQgdGhlIHBlci1zbG90IHF1YWQsXG4gKiBgXCJsaWZlY3ljbGVcImAgZXZlbnRzIHJlc29sdmUgdG8gYG5ldmVyYCAobm8gZGlmZi1iYXNlZCBkZXRlY3RvclxuICogZXhpc3RzIGZvciB0aGVtKS5cbiAqL1xudHlwZSBEZXRlY3RGbjxUIGV4dGVuZHMgR2VuaWVDaGF0RXZlbnRUeXBlPiA9IERldGVjdG9yU2NvcGVbVF0gZXh0ZW5kcyBcIm1lc3NhZ2VcIlxuICA/IChcbiAgICAgIGN1cnJlbnQ6IEdlbmllTWVzc2FnZSxcbiAgICAgIHByZXZpb3VzOiBHZW5pZU1lc3NhZ2UgfCB1bmRlZmluZWQsXG4gICAgICBzcGFjZV9pZDogc3RyaW5nLFxuICAgICkgPT4gRGV0ZWN0b3JSZXN1bHQ8VD5cbiAgOiBEZXRlY3RvclNjb3BlW1RdIGV4dGVuZHMgXCJhdHRhY2htZW50XCJcbiAgICA/IChcbiAgICAgICAgY3VycmVudDogR2VuaWVBdHRhY2htZW50LFxuICAgICAgICBwcmV2aW91czogR2VuaWVBdHRhY2htZW50IHwgdW5kZWZpbmVkLFxuICAgICAgICBsb2NhdGlvbjogR2VuaWVDaGF0TG9jYXRpb24sXG4gICAgICAgIGluZGV4OiBudW1iZXIsXG4gICAgICApID0+IERldGVjdG9yUmVzdWx0PFQ+XG4gICAgOiBuZXZlcjtcblxuLyoqXG4gKiBUeXBlZCBkZXRlY3RvciBmb3Igb25lIGV2ZW50IGluIHRoZSB7QGxpbmsgR2VuaWVDaGF0RXZlbnR9XG4gKiB1bmlvbi4gVGhlIGB0eXBlYCBmaWVsZCBpcyB0aGUgZXZlbnQgbmFtZTsgYGRldGVjdGAncyBzaWduYXR1cmVcbiAqIGlzIHBpY2tlZCBmcm9tIHtAbGluayBEZXRlY3RvclNjb3BlfSBiYXNlZCBvbiBgVGAuXG4gKi9cbmludGVyZmFjZSBFdmVudERldGVjdG9yPFQgZXh0ZW5kcyBHZW5pZUNoYXRFdmVudFR5cGU+IHtcbiAgcmVhZG9ubHkgdHlwZTogVDtcbiAgZGV0ZWN0OiBEZXRlY3RGbjxUPjtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gZGV0ZWN0b3IgZmFjdG9yeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIEJ1aWxkIGFuIHtAbGluayBFdmVudERldGVjdG9yfS4gUGFzcyB0aGUgZXZlbnQgbmFtZSBhcyB0aGVcbiAqIGxpdGVyYWwgZmlyc3QgYXJnIGFuZCB0aGUgbWF0Y2hpbmcgYGRldGVjdGAgY2FsbGJhY2sgYXMgdGhlXG4gKiBzZWNvbmQuIFRTIGluZmVycyBgVGAgZnJvbSB0aGUgbGl0ZXJhbCwgbmFycm93cyBgZGV0ZWN0YCdzXG4gKiBzaWduYXR1cmUgYWNjb3JkaW5nbHksIGFuZCB0eXBlcyB0aGUgcmV0dXJuIGFzXG4gKiBgRXZlbnREZXRlY3RvcjxUPmAuXG4gKlxuICogQnVpbGQtdGltZSBndWFyYW50ZWVzOlxuICpcbiAqICAgLSBgZXZlbnREZXRlY3RvcihcInN0YXR1czJcIiwgLi4uKWAgZmFpbHMgLSB0aGUgbmFtZSBpc24ndCBpblxuICogICAgIHtAbGluayBHZW5pZUNoYXRFdmVudH0uXG4gKiAgIC0gYGV2ZW50RGV0ZWN0b3IoXCJzdGF0dXNcIiwgYXR0YWNobWVudEFyZ3NDYWxsYmFjaylgIGZhaWxzIC1cbiAqICAgICBgXCJzdGF0dXNcImAgaXMgbWVzc2FnZS1zY29wZWQsIHNvIGBkZXRlY3RgIG11c3QgdGFrZVxuICogICAgIGAoR2VuaWVNZXNzYWdlLCBHZW5pZU1lc3NhZ2UgfCB1bmRlZmluZWQsIHN0cmluZylgLlxuICogICAtIFJldHVybmluZyBhIGBUaGlua2luZ0V2ZW50YC1zaGFwZWQgZmllbGRzIG9iamVjdCBmcm9tIGFcbiAqICAgICBgXCJzdGF0dXNcImAgZGV0ZWN0b3IgZmFpbHMgLSB0aGUgcmV0dXJuIHR5cGUgaXMgY29uc3RyYWluZWRcbiAqICAgICB0byBgRGV0ZWN0b3JSZXN1bHQ8XCJzdGF0dXNcIj5gLlxuICpcbiAqIExpZmVjeWNsZSBldmVudCBuYW1lcyAoYFwibWVzc2FnZVwiYCwgYFwicmVzdWx0XCJgKSByZXNvbHZlIGBkZXRlY3RgXG4gKiB0byBgbmV2ZXJgIGFuZCB3b24ndCBjb21waWxlLCB3aGljaCBpcyBpbnRlbnRpb25hbDogdGhvc2UgaGF2ZVxuICogbm8gZGlmZiBzaWduYXR1cmUgYW5kIGFyZSBlbWl0dGVkIGRpcmVjdGx5IGJ5IHRoZSBjaGF0IGRyaXZlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV2ZW50RGV0ZWN0b3I8VCBleHRlbmRzIEdlbmllQ2hhdEV2ZW50VHlwZT4oXG4gIHR5cGU6IFQsXG4gIGRldGVjdDogRGV0ZWN0Rm48VD4sXG4pOiBFdmVudERldGVjdG9yPFQ+IHtcbiAgcmV0dXJuIHsgdHlwZSwgZGV0ZWN0IH07XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gZGV0ZWN0b3JzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqIFRvcC1sZXZlbCBgbWVzc2FnZS5zdGF0dXNgIHRyYW5zaXRpb25lZC4gKi9cbmV4cG9ydCBjb25zdCBkZXRlY3RTdGF0dXMgPSBldmVudERldGVjdG9yKFwic3RhdHVzXCIsIChjdXJyZW50LCBwcmV2aW91cywgc3BhY2VfaWQpID0+IHtcbiAgaWYgKCFjdXJyZW50LnN0YXR1cyB8fCBjdXJyZW50LnN0YXR1cyA9PT0gcHJldmlvdXM/LnN0YXR1cykgcmV0dXJuO1xuICByZXR1cm4ge1xuICAgIHN0YXR1czogY3VycmVudC5zdGF0dXMsXG4gICAgcHJldmlvdXNfc3RhdHVzOiBwcmV2aW91cz8uc3RhdHVzLFxuICAgIHNwYWNlX2lkLFxuICAgIGNvbnZlcnNhdGlvbl9pZDogY3VycmVudC5jb252ZXJzYXRpb25faWQsXG4gICAgbWVzc2FnZV9pZDogY3VycmVudC5tZXNzYWdlX2lkLFxuICB9O1xufSk7XG5cbi8qKiBGaXJzdCB0aW1lIHdlIHNlZSBhbiBhdHRhY2htZW50IHNsb3QuICovXG5leHBvcnQgY29uc3QgZGV0ZWN0QXR0YWNobWVudEFkZGVkID0gZXZlbnREZXRlY3RvcihcbiAgXCJhdHRhY2htZW50XCIsXG4gIChjdXJyZW50LCBwcmV2aW91cywgbG9jYXRpb24sIGluZGV4KSA9PiB7XG4gICAgaWYgKHByZXZpb3VzKSByZXR1cm47XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmxvY2F0aW9uLFxuICAgICAgaW5kZXgsXG4gICAgICBhdHRhY2htZW50X3R5cGU6IGRldGVjdEF0dGFjaG1lbnRUeXBlKGN1cnJlbnQpLFxuICAgIH07XG4gIH0sXG4pO1xuXG4vKipcbiAqIE9uZSBlbWl0IHBlciBuZXcgYCh0aG91Z2h0X3R5cGUsIGNvbnRlbnQpYCB0dXBsZSBvbiBhIHF1ZXJ5XG4gKiBhdHRhY2htZW50LiBWYWx1ZS1iYXNlZCBzZXQgZGlmZjogR2VuaWUgY2FuIG11dGF0ZSBleGlzdGluZ1xuICogdGhvdWdodCBzbG90cyBpbiBwbGFjZSAoZS5nLiByZS10eXBpbmcgaW5kZXggMCBmcm9tXG4gKiBgREFUQV9TT1VSQ0lOR2AgdG8gYERFU0NSSVBUSU9OYCB3aGlsZSByZS1hcHBlbmRpbmcgdGhlXG4gKiBvcmlnaW5hbCBhdCBpbmRleCAxKSwgc28gcG9zaXRpb25hbCAvIGFwcGVuZC1vbmx5IGRpZmYgd291bGRcbiAqIG1pc3MgcmUtdHlwZXMgYW5kIGRvdWJsZS1jb3VudCByZS1vcmRlcnMuXG4gKi9cbmV4cG9ydCBjb25zdCBkZXRlY3RUaGlua2luZyA9IGV2ZW50RGV0ZWN0b3IoXCJ0aGlua2luZ1wiLCAoY3VycmVudCwgcHJldmlvdXMsIGxvY2F0aW9uKSA9PiB7XG4gIGNvbnN0IGN1cnJUaG91Z2h0cyA9IGN1cnJlbnQucXVlcnk/LnRob3VnaHRzID8/IFtdO1xuICBpZiAoY3VyclRob3VnaHRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICBjb25zdCBzZWVuID0gbmV3IFNldCgocHJldmlvdXM/LnF1ZXJ5Py50aG91Z2h0cyA/PyBbXSkubWFwKHRob3VnaHRLZXkpKTtcbiAgY29uc3Qgb3V0OiBHZW5pZUNoYXRFdmVudEZpZWxkczxcInRoaW5raW5nXCI+W10gPSBbXTtcbiAgZm9yIChjb25zdCB0IG9mIGN1cnJUaG91Z2h0cykge1xuICAgIGNvbnN0IGtleSA9IHRob3VnaHRLZXkodCk7XG4gICAgaWYgKHNlZW4uaGFzKGtleSkpIGNvbnRpbnVlO1xuICAgIC8vIERlZmVuc2l2ZTogZGVkdXBlIHdpdGhpbiBhIHNpbmdsZSBzbmFwc2hvdCBpbiBjYXNlIEdlbmllXG4gICAgLy8gZXZlciBzaGlwcyB0aGUgc2FtZSB0aG91Z2h0IHR3aWNlIGluIG9uZSBgdGhvdWdodHNbXWAuXG4gICAgc2Vlbi5hZGQoa2V5KTtcbiAgICBvdXQucHVzaCh7IC4uLmxvY2F0aW9uLCB0ZXh0OiB0LmNvbnRlbnQsIHRob3VnaHRfdHlwZTogdC50aG91Z2h0X3R5cGUgfSk7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn0pO1xuXG4vKiogVGV4dC1hdHRhY2htZW50IGBjb250ZW50YCBhcHBlYXJlZCBvciBjaGFuZ2VkLiAqL1xuZXhwb3J0IGNvbnN0IGRldGVjdFRleHQgPSBldmVudERldGVjdG9yKFwidGV4dFwiLCAoY3VycmVudCwgcHJldmlvdXMsIGxvY2F0aW9uKSA9PiB7XG4gIGNvbnN0IGN1cnIgPSBjdXJyZW50LnRleHQ/LmNvbnRlbnQ7XG4gIGNvbnN0IHByZXYgPSBwcmV2aW91cz8udGV4dD8uY29udGVudDtcbiAgaWYgKGN1cnIgPT09IHVuZGVmaW5lZCB8fCBjdXJyID09PSBwcmV2KSByZXR1cm47XG4gIHJldHVybiB7IC4uLmxvY2F0aW9uLCB0ZXh0OiBjdXJyIH07XG59KTtcblxuLyoqIFNRTCB0cmFuc2l0aW9uZWQgdW5kZWZpbmVkIC0+IHN0cmluZywgb3IgY2hhbmdlZC4gKi9cbmV4cG9ydCBjb25zdCBkZXRlY3RRdWVyeSA9IGV2ZW50RGV0ZWN0b3IoXCJxdWVyeVwiLCAoY3VycmVudCwgcHJldmlvdXMsIGxvY2F0aW9uKSA9PiB7XG4gIGNvbnN0IGN1cnIgPSBjdXJyZW50LnF1ZXJ5Py5xdWVyeTtcbiAgY29uc3QgcHJldiA9IHByZXZpb3VzPy5xdWVyeT8ucXVlcnk7XG4gIGlmICghY3VyciB8fCBjdXJyID09PSBwcmV2KSByZXR1cm47XG4gIHJldHVybiB7XG4gICAgLi4ubG9jYXRpb24sXG4gICAgc3FsOiBjdXJyLFxuICAgIHRpdGxlOiBjdXJyZW50LnF1ZXJ5Py50aXRsZSxcbiAgICBkZXNjcmlwdGlvbjogY3VycmVudC5xdWVyeT8uZGVzY3JpcHRpb24sXG4gIH07XG59KTtcblxuLyoqIFdhcmVob3VzZS1zdGF0ZW1lbnQgaWQgYXNzaWduZWQuICovXG5leHBvcnQgY29uc3QgZGV0ZWN0U3RhdGVtZW50ID0gZXZlbnREZXRlY3RvcihcInN0YXRlbWVudFwiLCAoY3VycmVudCwgcHJldmlvdXMsIGxvY2F0aW9uKSA9PiB7XG4gIGNvbnN0IGN1cnIgPSBjdXJyZW50LnF1ZXJ5Py5zdGF0ZW1lbnRfaWQ7XG4gIGNvbnN0IHByZXYgPSBwcmV2aW91cz8ucXVlcnk/LnN0YXRlbWVudF9pZDtcbiAgaWYgKCFjdXJyIHx8IGN1cnIgPT09IHByZXYpIHJldHVybjtcbiAgcmV0dXJuIHsgLi4ubG9jYXRpb24sIHN0YXRlbWVudF9pZDogY3VyciB9O1xufSk7XG5cbi8qKlxuICogYHJvd19jb3VudGAgY2hhbmdlZCAtIGZpcmVzIG9uIGV2ZXJ5IHRyYW5zaXRpb24gaW5jbHVkaW5nIHRoZVxuICogaW5pdGlhbCBgdW5kZWZpbmVkIC0+IDBgIGFuZCB0aGUgcG9zdC1leGVjdXRpb24gYDAgLT4gTmAuXG4gKiBDYXJyaWVzIHRoZSBzdGF0ZW1lbnQgaWQgd2hlbiBhdmFpbGFibGUgZm9yIGNvcnJlbGF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgZGV0ZWN0Um93cyA9IGV2ZW50RGV0ZWN0b3IoXCJyb3dzXCIsIChjdXJyZW50LCBwcmV2aW91cywgbG9jYXRpb24pID0+IHtcbiAgY29uc3QgY3VyciA9IGN1cnJlbnQucXVlcnk/LnF1ZXJ5X3Jlc3VsdF9tZXRhZGF0YT8ucm93X2NvdW50O1xuICBjb25zdCBwcmV2ID0gcHJldmlvdXM/LnF1ZXJ5Py5xdWVyeV9yZXN1bHRfbWV0YWRhdGE/LnJvd19jb3VudDtcbiAgaWYgKGN1cnIgPT09IHVuZGVmaW5lZCB8fCBjdXJyID09PSBwcmV2KSByZXR1cm47XG4gIHJldHVybiB7XG4gICAgLi4ubG9jYXRpb24sXG4gICAgcm93X2NvdW50OiBjdXJyLFxuICAgIHByZXZpb3VzX3Jvd19jb3VudDogcHJldixcbiAgICBzdGF0ZW1lbnRfaWQ6IGN1cnJlbnQucXVlcnk/LnN0YXRlbWVudF9pZCA/PyBwcmV2aW91cz8ucXVlcnk/LnN0YXRlbWVudF9pZCxcbiAgfTtcbn0pO1xuXG4vKipcbiAqIEZvbGxvdy11cCBzdWdnZXN0ZWQtcXVlc3Rpb25zIGFycmF5IGFwcGVhcmVkIG9yIGNoYW5nZWQuXG4gKiBDb21wYXJlcyBzdHJ1Y3R1cmFsbHkgc28gYSBsZW5ndGgtcHJlc2VydmluZyBjb250ZW50IHJld3JpdGUgc3RpbGwgZmlyZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBkZXRlY3RTdWdnZXN0ZWRRdWVzdGlvbnMgPSBldmVudERldGVjdG9yKFxuICBcInN1Z2dlc3RlZF9xdWVzdGlvbnNcIixcbiAgKGN1cnJlbnQsIHByZXZpb3VzLCBsb2NhdGlvbikgPT4ge1xuICAgIGNvbnN0IGN1cnIgPSBjdXJyZW50LnN1Z2dlc3RlZF9xdWVzdGlvbnM/LnF1ZXN0aW9ucztcbiAgICBjb25zdCBwcmV2ID0gcHJldmlvdXM/LnN1Z2dlc3RlZF9xdWVzdGlvbnM/LnF1ZXN0aW9ucztcbiAgICBpZiAoIWN1cnIgfHwgY3Vyci5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBpZiAoZGVlcEVxdWFsKGN1cnIsIHByZXYpKSByZXR1cm47XG4gICAgcmV0dXJuIHsgLi4ubG9jYXRpb24sIHF1ZXN0aW9uczogY3VyciB9O1xuICB9LFxuKTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIG9yY2hlc3RyYXRvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBXYWxrIHRoZSBkaWZmIGJldHdlZW4gYGN1cnJlbnRgIGFuZCBgcHJldmlvdXNgIGFuZCB5aWVsZCBldmVyeVxuICogZGVyaXZlZCBldmVudCB0aGUgc25hcHNob3QgcHJvZHVjZWQuIERldGVjdG9yIG9yZGVyIG1pcnJvcnNcbiAqIEdlbmllJ3Mgd2lyZSBvcmRlcmluZyAoc3RhdHVzIGZpcnN0LCB0aGVuIHBlci1hdHRhY2htZW50IGZpZWxkXG4gKiBkZWx0YXMpIHNvIGEgc3Vic2NyaWJlciB0aGF0IHNpbXBseSBsb2dzIGV2ZW50cyBhcyB0aGV5IGFycml2ZVxuICogc2VlcyB0aGVtIGluIGEgc2Vuc2libGUgc2VxdWVuY2UuXG4gKlxuICogQ2FsbGVyIHJlc3BvbnNpYmlsaXRpZXMgKG5vdCBoYW5kbGVkIGhlcmUpOlxuICpcbiAqICAgLSBZaWVsZCBgeyB0eXBlOiBcIm1lc3NhZ2VcIiwgbWVzc2FnZTogY3VycmVudCB9YCBCRUZPUkVcbiAqICAgICBjYWxsaW5nIHRoaXMsIG9uY2UgcGVyIHBvbGwgeWllbGQuXG4gKiAgIC0gWWllbGQgYHsgdHlwZTogXCJyZXN1bHRcIiwgLi4uIH1gIEFGVEVSIGNhbGxpbmcgdGhpcyB3aGVuXG4gKiAgICAgYGlzVGVybWluYWxTdGF0dXMoY3VycmVudC5zdGF0dXMpYCAtIHBlci10dXJuIGxpZmVjeWNsZSxcbiAqICAgICBub3QgYSBwZXItc25hcHNob3QgZmllbGQgZGlmZi5cbiAqICAgLSBEZWNpZGUgd2hhdCBjb3VudHMgYXMgYSBcImZyZXNoIHR1cm5cIiBhbmQgcGFzcyBgdW5kZWZpbmVkYFxuICogICAgIGZvciBgcHJldmlvdXNgIG9uIHR1cm4gYm91bmRhcmllcywgc28gYW5vbnltb3VzLWF0dGFjaG1lbnRcbiAqICAgICBzdGF0ZSBmcm9tIGEgcHJpb3IgdHVybiBkb2Vzbid0IGJsZWVkIGluLlxuICpcbiAqIFN5bmMgZ2VuZXJhdG9yOiB0aGUgZGlmZiBpcyBwdXJlIENQVSB3b3JrLCBubyBhd2FpdHMuIFVzZVxuICogYHlpZWxkKmAgZnJvbSBhbiBhc3luYyBnZW5lcmF0b3IgdG8gc3BsaWNlIHRoZSBldmVudHMgaW50byBhXG4gKiBzdHJlYW0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiogZXZlbnRzRnJvbU1lc3NhZ2UoXG4gIGN1cnJlbnQ6IEdlbmllTWVzc2FnZSxcbiAgcHJldmlvdXM6IEdlbmllTWVzc2FnZSB8IHVuZGVmaW5lZCxcbiAgc3BhY2VfaWQ6IHN0cmluZyxcbik6IEdlbmVyYXRvcjxHZW5pZUNoYXRFdmVudCwgdm9pZCwgdm9pZD4ge1xuICAvLyBTdGFtcCBgdHlwZWAgb250byBlYWNoIGRldGVjdG9yIHJlc3VsdCBhbmQgeWllbGQgaXQuIFJldHVybmluZ1xuICAvLyBhIHR5cGVkIGdlbmVyYXRvciBrZWVwcyB0aGUgYHlpZWxkKmAgY2FsbHNpdGUgdGlkeS4gVGhlIGRvdWJsZVxuICAvLyBjYXN0IChgdW5rbm93bmAgLT4gYEdlbmllQ2hhdEV2ZW50YCkgaXMgbmVlZGVkIGJlY2F1c2UgdGhlXG4gIC8vIGdlbmVyaWMgbWVyZ2UgYHt0eXBlOiBUfSAmIEdlbmllQ2hhdEV2ZW50RmllbGRzPFQ+YCBkb2Vzbid0XG4gIC8vIHN0cnVjdHVyYWxseSBuYXJyb3cgYmFjayB0byBhIGRpc2NyaW1pbmF0ZWQtdW5pb24gbWVtYmVyIC1cbiAgLy8gZWFjaCBkZXRlY3RvcidzIHJ1bnRpbWUgb3V0cHV0IGlzIHNoYXBlZCBjb3JyZWN0bHkgYnlcbiAgLy8gY29uc3RydWN0aW9uLCBzbyB0aGUgY2FzdCBpcyBzb3VuZC5cbiAgZnVuY3Rpb24qIGVtaXQ8VCBleHRlbmRzIEdlbmllQ2hhdEV2ZW50VHlwZT4oXG4gICAgZGV0ZWN0b3I6IEV2ZW50RGV0ZWN0b3I8VD4sXG4gICAgcmVzdWx0OiBEZXRlY3RvclJlc3VsdDxUPixcbiAgKTogR2VuZXJhdG9yPEdlbmllQ2hhdEV2ZW50LCB2b2lkLCB2b2lkPiB7XG4gICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xuICAgICAgZm9yIChjb25zdCBmaWVsZHMgb2YgcmVzdWx0KSB7XG4gICAgICAgIHlpZWxkIHsgdHlwZTogZGV0ZWN0b3IudHlwZSwgLi4uZmllbGRzIH0gYXMgdW5rbm93biBhcyBHZW5pZUNoYXRFdmVudDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgeWllbGQgeyB0eXBlOiBkZXRlY3Rvci50eXBlLCAuLi5yZXN1bHQgfSBhcyB1bmtub3duIGFzIEdlbmllQ2hhdEV2ZW50O1xuICAgIH1cbiAgfVxuXG4gIC8vIE1lc3NhZ2Utc2NvcGVkIGRldGVjdG9ycyBydW4gb25jZSBwZXIgc25hcHNob3QuXG4gIHlpZWxkKiBlbWl0KGRldGVjdFN0YXR1cywgZGV0ZWN0U3RhdHVzLmRldGVjdChjdXJyZW50LCBwcmV2aW91cywgc3BhY2VfaWQpKTtcblxuICAvLyBQZXItYXR0YWNobWVudCBkZXRlY3RvcnMgcnVuIG9uY2UgcGVyIGF0dGFjaG1lbnQgc2xvdC5cbiAgY29uc3QgY3VyckF0dHMgPSBjdXJyZW50LmF0dGFjaG1lbnRzID8/IFtdO1xuICBjb25zdCBwcmV2QXR0cyA9IHByZXZpb3VzPy5hdHRhY2htZW50cyA/PyBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJyQXR0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGN1cnIgPSBjdXJyQXR0c1tpXSE7XG4gICAgY29uc3QgcHJldiA9IG1hdGNoUHJldkF0dGFjaG1lbnQoY3VyciwgcHJldkF0dHMsIGkpO1xuICAgIGNvbnN0IGxvY2F0aW9uOiBHZW5pZUNoYXRMb2NhdGlvbiA9IHtcbiAgICAgIHNwYWNlX2lkLFxuICAgICAgY29udmVyc2F0aW9uX2lkOiBjdXJyZW50LmNvbnZlcnNhdGlvbl9pZCxcbiAgICAgIG1lc3NhZ2VfaWQ6IGN1cnJlbnQubWVzc2FnZV9pZCxcbiAgICAgIGF0dGFjaG1lbnRfaWQ6IGN1cnIuYXR0YWNobWVudF9pZCxcbiAgICB9O1xuICAgIHlpZWxkKiBlbWl0KGRldGVjdEF0dGFjaG1lbnRBZGRlZCwgZGV0ZWN0QXR0YWNobWVudEFkZGVkLmRldGVjdChjdXJyLCBwcmV2LCBsb2NhdGlvbiwgaSkpO1xuICAgIHlpZWxkKiBlbWl0KGRldGVjdFRoaW5raW5nLCBkZXRlY3RUaGlua2luZy5kZXRlY3QoY3VyciwgcHJldiwgbG9jYXRpb24sIGkpKTtcbiAgICB5aWVsZCogZW1pdChkZXRlY3RUZXh0LCBkZXRlY3RUZXh0LmRldGVjdChjdXJyLCBwcmV2LCBsb2NhdGlvbiwgaSkpO1xuICAgIHlpZWxkKiBlbWl0KGRldGVjdFF1ZXJ5LCBkZXRlY3RRdWVyeS5kZXRlY3QoY3VyciwgcHJldiwgbG9jYXRpb24sIGkpKTtcbiAgICB5aWVsZCogZW1pdChkZXRlY3RTdGF0ZW1lbnQsIGRldGVjdFN0YXRlbWVudC5kZXRlY3QoY3VyciwgcHJldiwgbG9jYXRpb24sIGkpKTtcbiAgICB5aWVsZCogZW1pdChkZXRlY3RSb3dzLCBkZXRlY3RSb3dzLmRldGVjdChjdXJyLCBwcmV2LCBsb2NhdGlvbiwgaSkpO1xuICAgIHlpZWxkKiBlbWl0KGRldGVjdFN1Z2dlc3RlZFF1ZXN0aW9ucywgZGV0ZWN0U3VnZ2VzdGVkUXVlc3Rpb25zLmRldGVjdChjdXJyLCBwcmV2LCBsb2NhdGlvbiwgaSkpO1xuICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBGaW5kIHRoZSBwcmlvciB2ZXJzaW9uIG9mIGBjdXJyYCBpbiBgcHJldkF0dHNgLiBBdHRhY2htZW50c1xuICogd2l0aCBpZHMgbWF0Y2ggYnkgaWQgKEdlbmllIGtlZXBzIGlkcyBzdGFibGUgYWNyb3NzIHBvbGxzKTtcbiAqIGFub255bW91cyBhdHRhY2htZW50cyAoR2VuaWUncyBtYWluLWFuc3dlciB0ZXh0IGRvZXNuJ3QgZ2V0XG4gKiBvbmUpIG1hdGNoIHBvc2l0aW9uYWxseSBhZ2FpbnN0IGFuIGFub255bW91cyBwcmV2IGF0IHRoZSBzYW1lXG4gKiBpbmRleCwgc28gdGhleSBkb24ndCBhY2NpZGVudGFsbHkgYmluZCB0byBhbiBpZCdkIHByZWRlY2Vzc29yXG4gKiB0aGF0IGhhcHBlbmVkIHRvIHNoYXJlIHRoZSBzbG90LlxuICovXG5mdW5jdGlvbiBtYXRjaFByZXZBdHRhY2htZW50KFxuICBjdXJyOiBHZW5pZUF0dGFjaG1lbnQsXG4gIHByZXZBdHRzOiBHZW5pZUF0dGFjaG1lbnRbXSxcbiAgaTogbnVtYmVyLFxuKTogR2VuaWVBdHRhY2htZW50IHwgdW5kZWZpbmVkIHtcbiAgaWYgKGN1cnIuYXR0YWNobWVudF9pZCkge1xuICAgIHJldHVybiBwcmV2QXR0cy5maW5kKChhKSA9PiBhLmF0dGFjaG1lbnRfaWQgPT09IGN1cnIuYXR0YWNobWVudF9pZCk7XG4gIH1cbiAgY29uc3QgcCA9IHByZXZBdHRzW2ldO1xuICByZXR1cm4gcCAmJiAhcC5hdHRhY2htZW50X2lkID8gcCA6IHVuZGVmaW5lZDtcbn1cblxuLyoqIFN0YWJsZSBrZXkgZm9yIHtAbGluayBkZXRlY3RUaGlua2luZ30ncyB2YWx1ZS1iYXNlZCBzZXQgZGlmZi4gKi9cbmZ1bmN0aW9uIHRob3VnaHRLZXkodDogR2VuaWVUaG91Z2h0KTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3QudGhvdWdodF90eXBlfXwke3QuY29udGVudH1gO1xufVxuIl19
|
package/lib/src/genie-model.js
CHANGED
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
*
|
|
38
38
|
* @module
|
|
39
39
|
*/
|
|
40
|
-
import {
|
|
40
|
+
import { tokenizeWithOptions } from "@dbx-tools/shared-core";
|
|
41
41
|
import { z } from "zod";
|
|
42
42
|
import * as dashboards from "./dashboards.js";
|
|
43
43
|
// The generated SDK schemas live in the sibling `./dashboards.ts`, written by the
|
|
@@ -296,9 +296,7 @@ export function humanizeStatus(status) {
|
|
|
296
296
|
case "CANCELLED":
|
|
297
297
|
return "Cancelled";
|
|
298
298
|
default:
|
|
299
|
-
return [
|
|
300
|
-
...stringUtils.tokenizeWithOptions({ capitalize: true, lowerCase: true }, status),
|
|
301
|
-
].join(" ");
|
|
299
|
+
return [...tokenizeWithOptions({ capitalize: true, lowerCase: true }, status)].join(" ");
|
|
302
300
|
}
|
|
303
301
|
}
|
|
304
302
|
/* ----------------------- attachment type helper ---------------------- */
|
|
@@ -541,4 +539,4 @@ export const GenieChatEventSchema = z.discriminatedUnion("type", [
|
|
|
541
539
|
SuggestedQuestionsEventSchema,
|
|
542
540
|
ResultEventSchema,
|
|
543
541
|
]);
|
|
544
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuaWUtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuaWUtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0NHO0FBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDeEIsT0FBTyxLQUFLLFVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxrRkFBa0Y7QUFDbEYsaUZBQWlGO0FBQ2pGLDZEQUE2RDtBQUM3RCxNQUFNLEVBQ0oscUJBQXFCLEVBQUUsd0JBQXdCLEVBQy9DLGtCQUFrQixFQUFFLHFCQUFxQixFQUN6QywwQkFBMEIsRUFBRSw2QkFBNkIsRUFDekQsZ0JBQWdCLEVBQUUsbUJBQW1CLEdBQ3RDLEdBQUcsVUFBVSxDQUFDO0FBVWYsd0ZBQXdGO0FBQ3hGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQztBQUVsRSx5RUFBeUU7QUFFekU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUM7S0FDcEMsTUFBTSxFQUFFO0tBQ1IsUUFBUSxDQUFDLGtEQUFrRCxDQUFDLENBQUM7QUFJaEU7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN6QyxZQUFZLEVBQUUsc0JBQXNCLENBQUMsUUFBUSxDQUFDLDhDQUE4QyxDQUFDO0lBQzdGLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLDBDQUEwQyxDQUFDO0NBQ3pFLENBQUMsQ0FBQztBQUlILDZFQUE2RTtBQUU3RTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sQ0FBQyxNQUFN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a0JBQWtCO0lBQ2xCLGlCQUFpQjtJQUNqQixxQkFBcUI7SUFDckIsbUJBQW1CO0lBQ25CLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsb0JBQW9CO0lBQ3BCLGVBQWU7SUFDZiw2QkFBNkI7SUFDN0IsaUJBQWlCO0NBQ2xCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogV2lyZS1mb3JtYXQgem9kIHNjaGVtYXMgKyB0eXBlcyBhbmQgaGlnaC1sZXZlbCBldmVudCB2b2NhYnVsYXJ5XG4gKiBmb3IgdGhlIEdlbmllIGNoYXQgZHJpdmVyLlxuICpcbiAqIFR3byByZWxhdGVkIGxheWVycyBsaXZlIGhlcmU6XG4gKlxuICogICAxLiBHZW5pZSB3aXJlIHNoYXBlcyBkZXJpdmVkIGZyb20gdGhpcyBwYWNrYWdlJ3Mgb3duIGdlbmVyYXRlZFxuICogICAgICBgZGFzaGJvYXJkc2Agc2NoZW1hcyAocmVnZW5lcmF0ZWQgZnJvbSB0aGUgdXBzdHJlYW1cbiAqICAgICAgYEBkYXRhYnJpY2tzL3Nkay1leHBlcmltZW50YWxgIGBhcGlzL2Rhc2hib2FyZHMvbW9kZWwuZC50c2BcbiAqICAgICAgYnkgdGhlIGVuZ2luZSdzIGNvZGVnZW4gb24gc3ludGgpLiBXZSBleHRlbmQgdGhlIFNESyBzY2hlbWFzIHdoZXJlIEdlbmllXG4gKiAgICAgIHNoaXBzIGZpZWxkcyBvbiB0aGUgd2lyZSB0aGF0IHRoZSBTREsgZG9lc24ndCBjdXJyZW50bHkgdHlwZTpcbiAqXG4gKiAgICAgICAgLSBgR2VuaWVNZXNzYWdlLmF1dG9fcmVnZW5lcmF0ZV9jb3VudDogbnVtYmVyYCAoc3RhbXBlZFxuICogICAgICAgICAgb24gZXZlcnkgd2lyZSBtZXNzYWdlLCBvbWl0dGVkIGZyb20gdGhlIFNESyBzaGFwZSkuXG4gKiAgICAgICAgLSBgR2VuaWVRdWVyeUF0dGFjaG1lbnQudGhvdWdodHM6IEdlbmllVGhvdWdodFtdYCAodGhlXG4gKiAgICAgICAgICBzdHJlYW1lZCByZWFzb25pbmcgcGF5bG9hZCB3aXRoIGBERVNDUklQVElPTmAsXG4gKiAgICAgICAgICBgREFUQV9TT1VSQ0lOR2AsIGBTVEVQU2AsIGFuZCBgVU5ERVJTVEFORElOR2AgdGhvdWdodFxuICogICAgICAgICAga2luZHMpLlxuICogICAgICAgIC0gYEdlbmllQXR0YWNobWVudC5hdHRhY2htZW50X3R5cGU6IEF0dGFjaG1lbnRUeXBlYFxuICogICAgICAgICAgKGFuIG9wdGlvbmFsIGRpc2NyaW1pbmF0b3IgbGl0ZXJhbCBzbyBjYWxsZXJzIGNhblxuICogICAgICAgICAgYHN3aXRjaCAoYXR0LmF0dGFjaG1lbnRfdHlwZSlgIGluc3RlYWQgb2YgcHJvYmluZ1xuICogICAgICAgICAgd2hpY2ggc3ViLWtleSBpcyBwb3B1bGF0ZWQ7IGNvbXB1dGUgaXQgd2l0aFxuICogICAgICAgICAge0BsaW5rIGRldGVjdEF0dGFjaG1lbnRUeXBlfSkuXG4gKlxuICogICAyLiBFdmVudCB2b2NhYnVsYXJ5IGZvciB0aGUgaGlnaC1sZXZlbCBgZ2VuaWVFdmVudENoYXRgXG4gKiAgICAgIGRyaXZlci4gRWFjaCBldmVudCBpcyBhIGZsYXQgYHoub2JqZWN0YCB3aXRoIGEgYHR5cGVgXG4gKiAgICAgIGxpdGVyYWwgZGlzY3JpbWluYXRvciBhbmQgc25ha2VfY2FzZSBwYXlsb2FkIGZpZWxkcyBob2lzdGVkXG4gKiAgICAgIHRvIHRoZSB0b3AgbGV2ZWwgKG5vIGBwYXlsb2FkYCB3cmFwcGVyKS4gRXZlbnRzIHRoYXQgc2hhcmVcbiAqICAgICAgdGhlIGF0dGFjaG1lbnQtc2NvcGVkIGxvY2F0aW9uIHVzZVxuICogICAgICB7QGxpbmsgR2VuaWVDaGF0TG9jYXRpb25TY2hlbWF9IGFzIGEgYmFzZTsgZXZlbnRzIHRoYXRcbiAqICAgICAgZG9uJ3QgY2FycnkgYW4gYGF0dGFjaG1lbnRfaWRgIChzdGF0dXMsIHJlc3VsdCkgb21pdCBpdC5cbiAqICAgICAge0BsaW5rIEdlbmllQ2hhdEV2ZW50U2NoZW1hfSBidW5kbGVzIHRoZSB2YXJpYW50cyBpbnRvIG9uZVxuICogICAgICBkaXNjcmltaW5hdGVkIHVuaW9uLlxuICpcbiAqIFB1cmUgdHlwZXM6IG5vIHJ1bnRpbWUgaW1wb3J0cyBiZXlvbmQgem9kICsgdGhlIGdlbmVyYXRlZFxuICogYGRhc2hib2FyZHNgIHNjaGVtYXMsIG5vIE5vZGUtb25seSBjb2RlLCBzYWZlIGZvciBicm93c2VyIGJ1bmRsZXMuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IHN0cmluZ1V0aWxzIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgKiBhcyBkYXNoYm9hcmRzIGZyb20gXCIuL2Rhc2hib2FyZHMudHNcIjtcblxuLy8gVGhlIGdlbmVyYXRlZCBTREsgc2NoZW1hcyBsaXZlIGluIHRoZSBzaWJsaW5nIGAuL2Rhc2hib2FyZHMudHNgLCB3cml0dGVuIGJ5IHRoZVxuLy8gZW5naW5lJ3MgY29kZWdlbiBmcm9tIHRoZSB1cHN0cmVhbSBgLmQudHNgLiBBbGlhcyB0aGUgaGFuZGZ1bCBHZW5pZSBleHRlbmRzIHNvXG4vLyB0aGUgd2lkZW5lZCBzY2hlbWFzIGJlbG93IHJlYWQgYWdhaW5zdCBzaG9ydCwgbG9jYWwgbmFtZXMuXG5jb25zdCB7XG4gIGdlbmllQXR0YWNobWVudFNjaGVtYTogU0RLR2VuaWVBdHRhY2htZW50U2NoZW1hLFxuICBnZW5pZU1lc3NhZ2VTY2hlbWE6IFNES0dlbmllTWVzc2FnZVNjaGVtYSxcbiAgZ2VuaWVRdWVyeUF0dGFjaG1lbnRTY2hlbWE6IFNES0dlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hLFxuICBnZW5pZVNwYWNlU2NoZW1hOiBTREtHZW5pZVNwYWNlU2NoZW1hLFxufSA9IGRhc2hib2FyZHM7XG5cbi8qKlxuICogVGhlIFNESydzIGBNZXNzYWdlU3RhdHVzYCB0eXBlLCByZS1leHBvcnRlZCBzbyBjb25zdW1lcnMgb2YgdGhlXG4gKiBHZW5pZSBjb250cmFjdCBnZXQgdGhlIGZ1bGwgd2lyZSB2b2NhYnVsYXJ5IGZyb20gYSBzaW5nbGUgaW1wb3J0XG4gKiBwYXRoIC0gbWlycm9ycyB0aGUgcmUtZXhwb3J0cyBvZiB0aGUgb3RoZXIgU0RLLWRlcml2ZWQgc2NoZW1hc1xuICogYmVsb3cuXG4gKi9cbmV4cG9ydCB0eXBlIE1lc3NhZ2VTdGF0dXMgPSBkYXNoYm9hcmRzLk1lc3NhZ2VTdGF0dXM7XG5cbi8qKiBSdW50aW1lIHZhbGlkYXRvciBmb3IgYSByYXcgR2VuaWUgbWVzc2FnZSBzdGF0dXMgZnJvbSB0aGUgZ2VuZXJhdGVkIFNESyBjb250cmFjdC4gKi9cbmV4cG9ydCBjb25zdCBNZXNzYWdlU3RhdHVzU2NoZW1hID0gZGFzaGJvYXJkcy5tZXNzYWdlU3RhdHVzU2NoZW1hO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB0aG91Z2h0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogR2VuaWUncyBwZXItcXVlcnkgXCJ0aG91Z2h0c1wiIHN1cmZhY2UuIFRoZXNlIGFwcGVhciBvbiB0aGVcbiAqIGAvbWVzc2FnZXMve2lkfWAgd2lyZSB1bmRlciBgYXR0YWNobWVudHNbaV0ucXVlcnkudGhvdWdodHNbXWAgYnV0XG4gKiBhcmUgbm90IHR5cGVkIG9uIHRoZSBTREsncyBgR2VuaWVRdWVyeUF0dGFjaG1lbnRgIGF0IHYwLjE3LlxuICpcbiAqIEtub3duIHRob3VnaHQgdHlwZXMgb2JzZXJ2ZWQgaW4gcHJvZHVjdGlvbiBwb2xsczpcbiAqXG4gKiAgIC0gYFRIT1VHSFRfVFlQRV9ERVNDUklQVElPTmA6IGEgb25lLXBhcmFncmFwaCByZXN0YXRlbWVudCBvZlxuICogICAgIHdoYXQgdGhlIHVzZXIgYXNrZWQuIFRoZSBmaW5hbCBgcXVlcnkuZGVzY3JpcHRpb25gIGZpZWxkIG9uXG4gKiAgICAgdGhlIGF0dGFjaG1lbnQgY2FycmllcyB0aGUgc2FtZSB0ZXh0LlxuICogICAtIGBUSE9VR0hUX1RZUEVfREFUQV9TT1VSQ0lOR2A6IG1hcmtkb3duIGJ1bGxldHMgb2YgdGhlXG4gKiAgICAgZnVsbHktcXVhbGlmaWVkIGBjYXRhbG9nLnNjaGVtYS50YWJsZWAgc291cmNlcyBHZW5pZSBjaG9zZS5cbiAqICAgLSBgVEhPVUdIVF9UWVBFX1NURVBTYDogdGhlIGhpZ2gtbGV2ZWwgcGxhbiBHZW5pZSB3cm90ZSBiZWZvcmVcbiAqICAgICBydW5uaW5nIFNRTCAob25lIGJ1bGxldCBwZXIgc3RlcCkuXG4gKiAgIC0gYFRIT1VHSFRfVFlQRV9VTkRFUlNUQU5ESU5HYDogYW1iaWd1aXR5IC8gaW50ZXJwcmV0YXRpb25cbiAqICAgICBub3RlcyAoZS5nLiBcIidyZXZlbnVlJyBjb3VsZCBiZSBpbnRlcnByZXRlZCBhcyBncm9zcyxcbiAqICAgICBuZXQsIG9yIHJlY29nbml6ZWQgcmV2ZW51ZS4uLlwiKS5cbiAqXG4gKiBPcGVuIGF0IHRoZSB0eXBlIGxldmVsIChgfCAoc3RyaW5nICYge30pYCkgc28gYSBuZXcgc2VydmVyLXNpZGVcbiAqIHRob3VnaHQgdHlwZSBkb2Vzbid0IGJyZWFrIGNvbXBpbGF0aW9uOyB0aGUgZm91ciBrbm93biB0eXBlc1xuICogc3RpbGwgbmFycm93IGNvcnJlY3RseSB1bmRlciBgc3dpdGNoYC5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllVGhvdWdodFR5cGVTY2hlbWEgPSB6XG4gIC5zdHJpbmcoKVxuICAuZGVzY3JpYmUoXCJGb3J3YXJkLWNvbXBhdGlibGUgR2VuaWUgcmVhc29uaW5nIHRob3VnaHQgdHlwZS5cIik7XG5cbmV4cG9ydCB0eXBlIEdlbmllVGhvdWdodFR5cGUgPSB6LmluZmVyPHR5cGVvZiBHZW5pZVRob3VnaHRUeXBlU2NoZW1hPjtcblxuLyoqXG4gKiBPbmUgcmVhc29uaW5nIHN0ZXAgb24gYSBxdWVyeSBhdHRhY2htZW50LiBTZWVcbiAqIHtAbGluayBHZW5pZVRob3VnaHRUeXBlfSBmb3IgdGhlIGtub3duIGB0aG91Z2h0X3R5cGVgIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllVGhvdWdodFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgdGhvdWdodF90eXBlOiBHZW5pZVRob3VnaHRUeXBlU2NoZW1hLmRlc2NyaWJlKFwiS2luZCBvZiByZWFzb25pbmcgcmVwcmVzZW50ZWQgYnkgdGhpcyBlbnRyeS5cIiksXG4gIGNvbnRlbnQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJSZWFzb25pbmcgdGV4dCBlbWl0dGVkIGZvciB0aGlzIHRob3VnaHQuXCIpLFxufSk7XG4vKiogT25lIHR5cGVkIHJlYXNvbmluZyBlbnRyeSBhdHRhY2hlZCB0byBhIEdlbmllIHF1ZXJ5LiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVUaG91Z2h0ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVUaG91Z2h0U2NoZW1hPjtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gYXR0YWNobWVudCBkaXNjcmltaW5hdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBEaXNjcmltaW5hdG9yIGZvciB3aGF0J3MgaW5zaWRlIGEgYEdlbmllQXR0YWNobWVudGAuIEdlbmllIG9ubHlcbiAqIGV2ZXIgcG9wdWxhdGVzIG9uZSBvZiBgcXVlcnlgIC8gYHRleHRgIC8gYHN1Z2dlc3RlZF9xdWVzdGlvbnNgXG4gKiBwZXIgYXR0YWNobWVudC4gT3BlbiB2aWEgYChzdHJpbmcgJiB7fSlgIHNvIGEgbmV3IHNlcnZlci1zaWRlXG4gKiB0eXBlIGRvZXNuJ3QgYnJlYWsgY29tcGlsYXRpb247IHRoZSB0aHJlZSBrbm93biB0eXBlcyBzdGlsbFxuICogbmFycm93IGNvcnJlY3RseSB1bmRlciBgc3dpdGNoYC5cbiAqXG4gKiBMaWZ0ZWQgaW50byB0aGUgc2NoZW1hIGFzIHRoZSBvcHRpb25hbFxuICoge0BsaW5rIEdlbmllQXR0YWNobWVudFNjaGVtYX0uYGF0dGFjaG1lbnRfdHlwZWAgZmllbGQgKGNvbXB1dGVcbiAqIGl0IHdpdGgge0BsaW5rIGRldGVjdEF0dGFjaG1lbnRUeXBlfSkgc28gY29uc3VtZXJzIGNhbiBicmFuY2hcbiAqIG9uIGEgbGl0ZXJhbCBpbnN0ZWFkIG9mIHByb2Jpbmcgd2hpY2ggc3ViLW9iamVjdCBrZXkgaXNcbiAqIHByZXNlbnQuIEFsc28gc3VyZmFjZWQgb24ge0BsaW5rIEF0dGFjaG1lbnRFdmVudH0ncyBwYXlsb2FkIGFzXG4gKiBgYXR0YWNobWVudF90eXBlYCAodnMgYSBiYXJlIGB0eXBlYCkgdG8ga2VlcCB0aGUgZmllbGQgY2xlYXIgb2ZcbiAqIHRoZSBldmVudC11bmlvbiBkaXNjcmltaW5hdG9yIGtleS5cbiAqL1xuZXhwb3J0IGNvbnN0IEFUVEFDSE1FTlRfVFlQRVMgPSBbXG4gIFwicXVlcnlcIixcbiAgXCJ0ZXh0XCIsXG4gIFwic3VnZ2VzdGVkX3F1ZXN0aW9uc1wiLFxuICBcInZpelwiLFxuXSBhcyBjb25zdCBzYXRpc2ZpZXMgcmVhZG9ubHkgc3RyaW5nW107XG5cbmV4cG9ydCBjb25zdCBLbm93bkF0dGFjaG1lbnRUeXBlU2NoZW1hID0gelxuICAuZW51bShBVFRBQ0hNRU5UX1RZUEVTKVxuICAuZGVzY3JpYmUoXCJBdHRhY2htZW50IGRpc2NyaW1pbmF0b3IgdmFsdWVzIHVuZGVyc3Rvb2QgYnkgdGhpcyBwYWNrYWdlIHZlcnNpb24uXCIpO1xuXG5leHBvcnQgdHlwZSBLbm93bkF0dGFjaG1lbnRUeXBlID0gei5pbmZlcjx0eXBlb2YgS25vd25BdHRhY2htZW50VHlwZVNjaGVtYT47XG5cbmV4cG9ydCBjb25zdCBBdHRhY2htZW50VHlwZVNjaGVtYSA9IHpcbiAgLnN0cmluZygpXG4gIC5kZXNjcmliZShcIkZvcndhcmQtY29tcGF0aWJsZSBHZW5pZSBhdHRhY2htZW50IGRpc2NyaW1pbmF0b3IuXCIpO1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50VHlwZSA9IHouaW5mZXI8dHlwZW9mIEF0dGFjaG1lbnRUeXBlU2NoZW1hPjtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLSB3aWRlbmVkIHdpcmUgc2NoZW1hcyArIHR5cGVzIC0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIGBHZW5pZVF1ZXJ5QXR0YWNobWVudGAgd2lkZW5lZCB3aXRoIHRoZSBgdGhvdWdodHNbXWAgZmllbGQgdGhlXG4gKiBHZW5pZSB3aXJlIGV4cG9zZXMgYnV0IHRoZSBTREsgZG9lc24ndCBjdXJyZW50bHkgdHlwZS4gRXZlcnlcbiAqIG90aGVyIGZpZWxkIChgZGVzY3JpcHRpb25gLCBgcXVlcnlgLCBgc3RhdGVtZW50X2lkYCxcbiAqIGBxdWVyeV9yZXN1bHRfbWV0YWRhdGFgLCBgdGl0bGVgLCBgcGFyYW1ldGVyc2AsXG4gKiBgbGFzdF91cGRhdGVkX3RpbWVzdGFtcGAsIGBpZGApIGZsb3dzIHRocm91Z2ggdmVyYmF0aW0gZnJvbVxuICogdGhlIFNESyBzY2hlbWEuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVF1ZXJ5QXR0YWNobWVudFNjaGVtYSA9IFNES0dlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hLmV4dGVuZCh7XG4gIHRob3VnaHRzOiB6LmFycmF5KEdlbmllVGhvdWdodFNjaGVtYSkub3B0aW9uYWwoKSxcbn0pO1xuLyoqIFF1ZXJ5IGF0dGFjaG1lbnQgd2lkZW5lZCB3aXRoIEdlbmllJ3Mgc3RyZWFtZWQgcmVhc29uaW5nIHRob3VnaHRzLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVRdWVyeUF0dGFjaG1lbnQgPSB6LmluZmVyPHR5cGVvZiBHZW5pZVF1ZXJ5QXR0YWNobWVudFNjaGVtYT47XG5cbi8qKlxuICogUHVycG9zZSBhdHRhY2hlZCB0byBhIEdlbmllIHRleHQgcmVzcG9uc2UuXG4gKlxuICogVGhlIGdlbmVyYXRlZCBEYXRhYnJpY2tzIFNESyBzY2hlbWEgY3VycmVudGx5IGtub3dzIG9ubHlcbiAqIGBGT0xMT1dfVVBfUVVFU1RJT05gLCB3aGlsZSB0aGUgbGl2ZSBHZW5pZSBBUEkgYWxzbyBlbWl0c1xuICogYFRFWFRfQVRUQUNITUVOVF9QVVJQT1NFX0FOU1dFUmAgZm9yIHRoZSBwcmltYXJ5IGFuc3dlciB0ZXh0LiBLZWVwIHRoZVxuICoga25vd24gdmFsdWVzIGRpc2NvdmVyYWJsZSBhbmQgYWNjZXB0IGZ1dHVyZSBzdHJpbmcgdmFsdWVzIHNvIGFuIGFkZGl0aXZlXG4gKiBzZXJ2ZXItc2lkZSBlbnVtIGNoYW5nZSBjYW5ub3QgaW52YWxpZGF0ZSBhbiBvdGhlcndpc2UgY29tcGxldGUgbWVzc2FnZS5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllVGV4dEF0dGFjaG1lbnRQdXJwb3NlU2NoZW1hID0gelxuICAuc3RyaW5nKClcbiAgLmRlc2NyaWJlKFwiRm9yd2FyZC1jb21wYXRpYmxlIHNlbWFudGljIHB1cnBvc2UgZm9yIGEgR2VuaWUgdGV4dCBhdHRhY2htZW50LlwiKTtcblxuZXhwb3J0IHR5cGUgR2VuaWVUZXh0QXR0YWNobWVudFB1cnBvc2UgPSB6LmluZmVyPHR5cGVvZiBHZW5pZVRleHRBdHRhY2htZW50UHVycG9zZVNjaGVtYT47XG5cbi8qKlxuICogVGV4dCBhdHRhY2htZW50IHdpZGVuZWQgZm9yIGZvcndhcmQtY29tcGF0aWJsZSBwdXJwb3NlIHZhbHVlcyBhbmQgb3B0aW9uYWxcbiAqIEFnZW50IE1vZGUgdGFibGUgbWV0YWRhdGEuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVRleHRBdHRhY2htZW50U2NoZW1hID0gZGFzaGJvYXJkcy50ZXh0QXR0YWNobWVudFNjaGVtYS5leHRlbmQoe1xuICBwdXJwb3NlOiBHZW5pZVRleHRBdHRhY2htZW50UHVycG9zZVNjaGVtYS5vcHRpb25hbCgpLFxuICBtZXRhZGF0YTogei51bmtub3duKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkFnZW50IE1vZGUgbWV0YWRhdGEgYXR0YWNoZWQgdG8gdGhpcyB0ZXh0IHJlc3BvbnNlLlwiKSxcbn0pO1xuLyoqIE5hcnJhdGl2ZSB0ZXh0IGF0dGFjaG1lbnQsIGluY2x1ZGluZyBpdHMgb3B0aW9uYWwgc2VtYW50aWMgcHVycG9zZS4gKi9cbmV4cG9ydCB0eXBlIEdlbmllVGV4dEF0dGFjaG1lbnQgPSB6LmluZmVyPHR5cGVvZiBHZW5pZVRleHRBdHRhY2htZW50U2NoZW1hPjtcblxuLyoqXG4gKiBWaXN1YWxpemF0aW9uIEdlbmllIHJlcXVlc3RlZCBmb3Igb25lIG9mIGl0cyBxdWVyeSByZXN1bHRzLiBHZW5pZSBzdG9yZXMgb25seVxuICogdGhlIHRpdGxlIGFuZCB0aGUgcXVlcnkgYXR0YWNobWVudCBpdCBjaGFydHM7IHRoZSBjbGllbnQgZHJhd3MgdGhlIGNoYXJ0IGZyb21cbiAqIHRoYXQgcXVlcnkncyBzdGF0ZW1lbnQgcm93cy5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllVml6QXR0YWNobWVudFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgdGl0bGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkRpc3BsYXkgdGl0bGUgR2VuaWUgY2hvc2UgZm9yIHRoZSBjaGFydC5cIiksXG4gICAgcXVlcnlfYXR0YWNobWVudF9pZDogelxuICAgICAgLnN0cmluZygpXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiYGF0dGFjaG1lbnRfaWRgIG9mIHRoZSBxdWVyeSBhdHRhY2htZW50IHdob3NlIHJvd3MgdGhlIGNoYXJ0IHBsb3RzLlwiKSxcbiAgfSlcbiAgLmRlc2NyaWJlKFwiR2VuaWUgdmlzdWFsaXphdGlvbiByZXF1ZXN0IG92ZXIgb25lIHF1ZXJ5IGF0dGFjaG1lbnQuXCIpO1xuLyoqIEdlbmllIHZpc3VhbGl6YXRpb24gcmVxdWVzdCBvdmVyIG9uZSBxdWVyeSBhdHRhY2htZW50LiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVWaXpBdHRhY2htZW50ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVWaXpBdHRhY2htZW50U2NoZW1hPjtcblxuLyoqXG4gKiBgR2VuaWVBdHRhY2htZW50YCB3aXRoOlxuICpcbiAqICAgLSBgcXVlcnlgIHJlLXR5cGVkIHRvIHRoZSB0aG91Z2h0cy1hd2FyZVxuICogICAgIHtAbGluayBHZW5pZVF1ZXJ5QXR0YWNobWVudFNjaGVtYX0uXG4gKiAgIC0gYGF0dGFjaG1lbnRfdHlwZWAgZGlzY3JpbWluYXRvciBsaXRlcmFsXG4gKiAgICAgKHtAbGluayBBdHRhY2htZW50VHlwZX0pIHNvIGNvbnN1bWVycyBjYW4gYHN3aXRjaFxuICogICAgIChhdHQuYXR0YWNobWVudF90eXBlKWAgdG8gbmFycm93IHdoaWNoIHN1Yi1vYmplY3QgaXNcbiAqICAgICBwb3B1bGF0ZWQuIE9wdGlvbmFsIG9uIHRoZSB3aXJlIChHZW5pZSBkb2Vzbid0IHNlbmQgaXQpO1xuICogICAgIGNhbGxlcnMgY29tcHV0ZSBpdCB3aXRoIHtAbGluayBkZXRlY3RBdHRhY2htZW50VHlwZX0gd2hlblxuICogICAgIHRoZXkgd2FudCB0aGUgbGl0ZXJhbCB1cC1mcm9udC5cbiAqXG4gKiBgdGV4dGAgaXMgcmUtdHlwZWQgdG8gdGhlIGZvcndhcmQtY29tcGF0aWJsZVxuICoge0BsaW5rIEdlbmllVGV4dEF0dGFjaG1lbnRTY2hlbWF9LiBgYXR0YWNobWVudF9pZGAgYW5kXG4gKiBgc3VnZ2VzdGVkX3F1ZXN0aW9uc2AgcGFzcyB0aHJvdWdoIHVuY2hhbmdlZC4gYGF0dGFjaG1lbnRfaWRgIGlzIGdlbnVpbmVseVxuICogb3B0aW9uYWwgb24gdGhlIHdpcmU6XG4gKiB0aGUgZmlyc3QgdGV4dCBhdHRhY2htZW50IEdlbmllIGVtaXRzIHBlciB0dXJuICh0aGUgXCJtYWluXG4gKiBhbnN3ZXIgdGV4dFwiKSBhcnJpdmVzIHdpdGggbm8gaWQsIG9ubHkgdGhlIGZvbGxvdy11cCB0ZXh0XG4gKiBhdHRhY2htZW50IGdldHMgb25lLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVBdHRhY2htZW50U2NoZW1hID0gU0RLR2VuaWVBdHRhY2htZW50U2NoZW1hLmV4dGVuZCh7XG4gIHF1ZXJ5OiBHZW5pZVF1ZXJ5QXR0YWNobWVudFNjaGVtYS5vcHRpb25hbCgpLFxuICB0ZXh0OiBHZW5pZVRleHRBdHRhY2htZW50U2NoZW1hLm9wdGlvbmFsKCksXG4gIHZpejogR2VuaWVWaXpBdHRhY2htZW50U2NoZW1hLm9wdGlvbmFsKCksXG4gIGF0dGFjaG1lbnRfdHlwZTogQXR0YWNobWVudFR5cGVTY2hlbWEub3B0aW9uYWwoKSxcbn0pO1xuLyoqIEdlbmllIG1lc3NhZ2UgYXR0YWNobWVudCB3aXRoIGFuIG9wdGlvbmFsIGNvbXB1dGVkIGRpc2NyaW1pbmF0b3IuICovXG5leHBvcnQgdHlwZSBHZW5pZUF0dGFjaG1lbnQgPSB6LmluZmVyPHR5cGVvZiBHZW5pZUF0dGFjaG1lbnRTY2hlbWE+O1xuXG4vKipcbiAqIGBHZW5pZU1lc3NhZ2VgIHdpZGVuZWQgd2l0aDpcbiAqXG4gKiAgIC0gYGF1dG9fcmVnZW5lcmF0ZV9jb3VudGA6IG51bWJlciBzdGFtcGVkIG9uIGV2ZXJ5IHdpcmVcbiAqICAgICBtZXNzYWdlIHRoYXQgdGhlIFNESyB0eXBlIG9taXRzIGF0IHYwLjE3LlxuICogICAtIGBhdHRhY2htZW50c2A6IHJlLXR5cGVkIHRvIHRoZSBsb2NhbFxuICogICAgIHtAbGluayBHZW5pZUF0dGFjaG1lbnRTY2hlbWF9IHNvXG4gKiAgICAgYGF0dGFjaG1lbnQucXVlcnk/LnRob3VnaHRzYCAoYW5kIHRoZVxuICogICAgIGBhdHRhY2htZW50X3R5cGVgIGRpc2NyaW1pbmF0b3IpIGlzIHJlYWNoYWJsZSB3aXRob3V0IGFcbiAqICAgICBjYXN0LlxuICpcbiAqIEV2ZXJ5IG90aGVyIGZpZWxkIChgaWRgLCBgc3BhY2VfaWRgLCBgY29udmVyc2F0aW9uX2lkYCxcbiAqIGB1c2VyX2lkYCwgYGNyZWF0ZWRfdGltZXN0YW1wYCwgYGxhc3RfdXBkYXRlZF90aW1lc3RhbXBgLFxuICogYHN0YXR1c2AsIGBjb250ZW50YCwgYG1lc3NhZ2VfaWRgLCBgcXVlcnlfcmVzdWx0YCwgYGVycm9yYCxcbiAqIGBmZWVkYmFja2ApIHBhc3NlcyB0aHJvdWdoIGZyb20gdGhlIFNESyBzY2hlbWEuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZU1lc3NhZ2VTY2hlbWEgPSBTREtHZW5pZU1lc3NhZ2VTY2hlbWEuZXh0ZW5kKHtcbiAgYXR0YWNobWVudHM6IHouYXJyYXkoR2VuaWVBdHRhY2htZW50U2NoZW1hKS5vcHRpb25hbCgpLFxuICBhdXRvX3JlZ2VuZXJhdGVfY291bnQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbn0pO1xuLyoqIEdlbmllIG1lc3NhZ2Ugc25hcHNob3Qgd2lkZW5lZCB3aXRoIHR5cGVkIGF0dGFjaG1lbnRzIGFuZCByZWdlbmVyYXRpb24gY291bnQuICovXG5leHBvcnQgdHlwZSBHZW5pZU1lc3NhZ2UgPSB6LmluZmVyPHR5cGVvZiBHZW5pZU1lc3NhZ2VTY2hlbWE+O1xuXG4vKipcbiAqIERvbWFpbiBwcm9qZWN0aW9uIG9mIHtAbGluayBHZW5pZU1lc3NhZ2VTY2hlbWF9IHRoYXQgZHJvcHMgZXZlcnlcbiAqIHR1cm4tbGV2ZWwgZmllbGQgKGBpZGAsIGBzdGF0dXNgLCBgY3JlYXRlZF90aW1lc3RhbXBgLFxuICogYHF1ZXJ5X3Jlc3VsdGAsIC4uLikgYW5kIHlpZWxkcyBqdXN0IHRoZSByZXNwb25zZSBwYXlsb2FkIGFzIGFcbiAqIGZsYXQgYEdlbmllQXR0YWNobWVudFtdYC4gUGFyc2VzIHRoZSBzYW1lIHdpcmUgc2hhcGUgYXNcbiAqIHtAbGluayBHZW5pZU1lc3NhZ2VTY2hlbWF9OyBtaXNzaW5nIGBhdHRhY2htZW50c2AgZGVmYXVsdHMgdG9cbiAqIGBbXWAgc28gdGhlIG91dHB1dCBpcyBhbHdheXMgYW4gYXJyYXkuXG4gKlxuICogVXNlIHdoZW4gY29uc3VtZXJzIG9ubHkgY2FyZSBhYm91dCB0aGUgbW9kZWwncyByZXNwb25zZVxuICogYXR0YWNobWVudHMgYW5kIG5vdCB0aGUgc3Vycm91bmRpbmcgbWVzc2FnZSBlbnZlbG9wZS5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllUmVzcG9uc2VTY2hlbWEgPSBHZW5pZU1lc3NhZ2VTY2hlbWEudHJhbnNmb3JtKChtKSA9PiBtLmF0dGFjaG1lbnRzID8/IFtdKTtcbi8qKiBOb3JtYWxpemVkIGF0dGFjaG1lbnQgYXJyYXkgZXh0cmFjdGVkIGZyb20gYSBHZW5pZSBtZXNzYWdlIHJlc3BvbnNlLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVSZXNwb25zZSA9IHouaW5mZXI8dHlwZW9mIEdlbmllUmVzcG9uc2VTY2hlbWE+O1xuXG4vKipcbiAqIGBHZW5pZVNwYWNlYCB3aWRlbmVkIHdpdGggYW4gb3B0aW9uYWwgYHNlcmlhbGl6ZWRfc3BhY2VgIGZpZWxkXG4gKiBjYXJyeWluZyBhIEpTT04tc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzcGFjZSdzIGZ1bGxcbiAqIGRlZmluaXRpb24gKGNhdGFsb2dzLCBzY2hlbWFzLCB0YWJsZXMsIHNhbXBsZSBxdWVzdGlvbnMsIHByb21wdHMsXG4gKiBldGMuKSBhcyBleHBvcnRlZCBieSB0aGUgd29ya3NwYWNlIGV4cG9ydCBlbmRwb2ludC5cbiAqXG4gKiBUaGUgYmFzZSBTREsgc2hhcGUgKGBkZXNjcmlwdGlvbmAsIGBzcGFjZV9pZGAsIGB0aXRsZWAsXG4gKiBgd2FyZWhvdXNlX2lkYCkgY292ZXJzIHRoZSBkaXJlY3RvcnktbGlzdGluZyBzdXJmYWNlIC0gZW5vdWdoIHRvXG4gKiByb3V0ZSBhIGNoYXQuIGBzZXJpYWxpemVkX3NwYWNlYCBpcyBvcHQtaW4gc28gY2FsbGVycyB0aGF0IG5lZWRcbiAqIHRoZSBmdWxsIHNwYWNlIHNjaGVtYSAoZS5nLiB0byBzZWVkIGEgc3lzdGVtIHByb21wdCBvciB0byBzaGlwXG4gKiB0aGUgZGVmaW5pdGlvbiB0byBhbiBhZ2VudCkgY2FuIGF0dGFjaCBpdCB3aXRob3V0IGEgc2Vjb25kIHR5cGUuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVNwYWNlU2NoZW1hID0gU0RLR2VuaWVTcGFjZVNjaGVtYS5leHRlbmQoe1xuICBzZXJpYWxpemVkX3NwYWNlOiB6XG4gICAgLnN0cmluZygpXG4gICAgLm9wdGlvbmFsKClcbiAgICAuZGVzY3JpYmUoXG4gICAgICBcIlRoZSBjb250ZW50cyBvZiB0aGUgR2VuaWUgU3BhY2UgaW4gc2VyaWFsaXplZCBzdHJpbmcgZm9ybS4gVGhpcyBmaWVsZCBpcyBleGNsdWRlZCBpbiBMaXN0IEdlbmllIHNwYWNlcyByZXNwb25zZXMuIFRoaXMgZmllbGQgcHJvdmlkZXMgdGhlIHN0cnVjdHVyZSBvZiB0aGUgSlNPTiBzdHJpbmcgdGhhdCByZXByZXNlbnRzIHRoZSBzcGFjZSdzIGxheW91dCBhbmQgY29tcG9uZW50cy5cIixcbiAgICApLFxufSk7XG4vKiogR2VuaWUgc3BhY2UgbWV0YWRhdGEgd2l0aCB0aGUgaWRlbnRpZmllcnMgcmVxdWlyZWQgYnkgY2hhdCBjb25zdW1lcnMuICovXG5leHBvcnQgdHlwZSBHZW5pZVNwYWNlID0gei5pbmZlcjx0eXBlb2YgR2VuaWVTcGFjZVNjaGVtYT47XG5cbi8qKiBSZXF1ZXN0IGFjY2VwdGVkIGJ5IHRoZSBHQSBHZW5pZSBzcGFjZSBjcmVhdGUgZW5kcG9pbnQuICovXG5leHBvcnQgY29uc3QgQ3JlYXRlR2VuaWVTcGFjZVJlcXVlc3RTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHdhcmVob3VzZV9pZDogei5zdHJpbmcoKS50cmltKCkubWluKDEpLmRlc2NyaWJlKFwiQXNzb2NpYXRlZCBTUUwgd2FyZWhvdXNlIElELlwiKSxcbiAgICBzZXJpYWxpemVkX3NwYWNlOiB6LnN0cmluZygpLnRyaW0oKS5taW4oMSkuZGVzY3JpYmUoXCJTZXJpYWxpemVkIEdlbmllIHNwYWNlIGRlZmluaXRpb24uXCIpLFxuICAgIHRpdGxlOiB6LnN0cmluZygpLnRyaW0oKS5taW4oMSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkdlbmllIHNwYWNlIHRpdGxlLlwiKSxcbiAgICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS50cmltKCkubWluKDEpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJHZW5pZSBzcGFjZSBkZXNjcmlwdGlvbi5cIiksXG4gICAgcGFyZW50X3BhdGg6IHouc3RyaW5nKCkudHJpbSgpLm1pbigxKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUGFyZW50IHdvcmtzcGFjZSBmb2xkZXIuXCIpLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLmRlc2NyaWJlKFwiR0EgR2VuaWUgc3BhY2UgY3JlYXRpb24gcmVxdWVzdC5cIik7XG5cbi8qKiBHQSBHZW5pZSBzcGFjZSBjcmVhdGlvbiByZXF1ZXN0LiAqL1xuZXhwb3J0IHR5cGUgQ3JlYXRlR2VuaWVTcGFjZVJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBDcmVhdGVHZW5pZVNwYWNlUmVxdWVzdFNjaGVtYT47XG5cbi8qKiBGZWVkYmFjayByZXF1ZXN0IGFjY2VwdGVkIGJ5IEdlbmllIGNoYXQtbW9kZSBhbmQgYWdlbnQtbW9kZSBtZXNzYWdlcy4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZU1lc3NhZ2VGZWVkYmFja1JlcXVlc3RTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHNwYWNlX2lkOiB6LnN0cmluZygpLnRyaW0oKS5taW4oMSkuZGVzY3JpYmUoXCJHZW5pZSBzcGFjZSBJRC5cIiksXG4gICAgY29udmVyc2F0aW9uX2lkOiB6LnN0cmluZygpLnRyaW0oKS5taW4oMSkuZGVzY3JpYmUoXCJHZW5pZSBjb252ZXJzYXRpb24gSUQuXCIpLFxuICAgIG1lc3NhZ2VfaWQ6IHouc3RyaW5nKCkudHJpbSgpLm1pbigxKS5kZXNjcmliZShcIkdlbmllIG1lc3NhZ2UgSUQuXCIpLFxuICAgIHJhdGluZzogei5lbnVtKFtcIlBPU0lUSVZFXCIsIFwiTkVHQVRJVkVcIiwgXCJOT05FXCJdKS5kZXNjcmliZShcIkdlbmllIGZlZWRiYWNrIHJhdGluZy5cIiksXG4gICAgY29tbWVudDogei5zdHJpbmcoKS50cmltKCkubWF4KDVfMDAwKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiT3B0aW9uYWwgR2VuaWUgZmVlZGJhY2sgY29tbWVudC5cIiksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJGZWVkYmFjayBhdHRhY2hlZCB0byBvbmUgR2VuaWUgY29udmVyc2F0aW9uIG1lc3NhZ2UuXCIpO1xuXG4vKiogRmVlZGJhY2sgYXR0YWNoZWQgdG8gb25lIEdlbmllIGNvbnZlcnNhdGlvbiBtZXNzYWdlLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVNZXNzYWdlRmVlZGJhY2tSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVNZXNzYWdlRmVlZGJhY2tSZXF1ZXN0U2NoZW1hPjtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHRlcm1pbmFsIGhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIFRlcm1pbmFsIEdlbmllIG1lc3NhZ2Ugc3RhdHVzZXMuIFRoZSBwb2xsaW5nIGxvb3AgaW4gdGhlIGNoYXRcbiAqIGRyaXZlciBzdG9wcyBhcyBzb29uIGFzIHRoZSBsYXRlc3QgbWVzc2FnZSBoYXMgb25lIG9mIHRoZXNlXG4gKiBzdGF0dXNlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IFRFUk1JTkFMX1NUQVRVU0VTID0gW1wiQ09NUExFVEVEXCIsIFwiRkFJTEVEXCIsIFwiQ0FOQ0VMTEVEXCJdIGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgVGVybWluYWxTdGF0dXNTY2hlbWEgPSB6XG4gIC5lbnVtKFRFUk1JTkFMX1NUQVRVU0VTKVxuICAuZGVzY3JpYmUoXCJNZXNzYWdlIHN0YXR1cyB0aGF0IGVuZHMgYSBHZW5pZSB0dXJuIGFuZCBwcm9kdWNlcyBhIGZpbmFsIHJlc3VsdCBldmVudC5cIik7XG5cbmV4cG9ydCB0eXBlIFRlcm1pbmFsU3RhdHVzID0gei5pbmZlcjx0eXBlb2YgVGVybWluYWxTdGF0dXNTY2hlbWE+O1xuXG4vKiogTmFycm93IGBNZXNzYWdlU3RhdHVzIHwgdW5kZWZpbmVkYCB0byBhIHtAbGluayBUZXJtaW5hbFN0YXR1c30uICovXG5leHBvcnQgZnVuY3Rpb24gaXNUZXJtaW5hbFN0YXR1cyhzOiBNZXNzYWdlU3RhdHVzIHwgdW5kZWZpbmVkKTogcyBpcyBUZXJtaW5hbFN0YXR1cyB7XG4gIHJldHVybiBzICE9PSB1bmRlZmluZWQgJiYgKFRFUk1JTkFMX1NUQVRVU0VTIGFzIHJlYWRvbmx5IHN0cmluZ1tdKS5pbmNsdWRlcyhzKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgcmF3IEdlbmllIHdpcmUgc3RhdHVzIChgRkVUQ0hJTkdfTUVUQURBVEFgLFxuICogYEFTS0lOR19BSWAsIGBFWEVDVVRJTkdfUVVFUllgLCAuLi4pIGludG8gYSBzaG9ydCwgc2VudGVuY2UtY2FzZWRcbiAqIGxhYmVsIHNhZmUgdG8gZHJvcCBpbnRvIGEgVUkgcGlsbC4gS25vd24gc3RhdGVzIGdldCBhIGN1cmF0ZWRcbiAqIGxhYmVsOyB1bmtub3duIHN0YXRlcyBmYWxsIGJhY2sgdG8gYHN0cmluZ1V0aWxzLnRva2VuaXplV2l0aE9wdGlvbnNgXG4gKiBzbyBuZXcgc3RhdGVzIHN0aWxsIHJlbmRlciBjbGVhbmx5IHdpdGhvdXQgY29kZSBjaGFuZ2VzLlxuICpcbiAqIFB1cmUgKG5vIE5vZGUtb25seSBkZXBzKSwgc2FmZSBmb3IgYnJvd3NlciBidW5kbGVzLiBCb3RoIHRoZVxuICogR2VuaWUgYWdlbnQgKHNlcnZlcikgYW5kIGFueSBVSSB0aGF0IHN1YnNjcmliZXMgdG8gc3RhdHVzIGV2ZW50c1xuICogY2FsbCB0aGlzIHNvIGxhYmVscyBzdGF5IGluIGxvY2stc3RlcCBhY3Jvc3MgdGhlIHdpcmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBodW1hbml6ZVN0YXR1cyhzdGF0dXM6IE1lc3NhZ2VTdGF0dXMpOiBzdHJpbmcge1xuICBzd2l0Y2ggKHN0YXR1cykge1xuICAgIGNhc2UgXCJGRVRDSElOR19NRVRBREFUQVwiOlxuICAgICAgcmV0dXJuIFwiRmV0Y2hpbmcgbWV0YWRhdGFcIjtcbiAgICBjYXNlIFwiQVNLSU5HX0FJXCI6XG4gICAgICByZXR1cm4gXCJBc2tpbmcgR2VuaWVcIjtcbiAgICBjYXNlIFwiRVhFQ1VUSU5HX1FVRVJZXCI6XG4gICAgICByZXR1cm4gXCJSdW5uaW5nIFNRTCBxdWVyeVwiO1xuICAgIGNhc2UgXCJGSUxURVJJTkdfQ09OVEVYVFwiOlxuICAgICAgcmV0dXJuIFwiRmlsdGVyaW5nIGNvbnRleHRcIjtcbiAgICBjYXNlIFwiUEVORElOR19XQVJFSE9VU0VcIjpcbiAgICAgIHJldHVybiBcIldhaXRpbmcgZm9yIHdhcmVob3VzZVwiO1xuICAgIGNhc2UgXCJDT01QTEVURURcIjpcbiAgICAgIHJldHVybiBcIkNvbXBsZXRlZFwiO1xuICAgIGNhc2UgXCJGQUlMRURcIjpcbiAgICAgIHJldHVybiBcIkZhaWxlZFwiO1xuICAgIGNhc2UgXCJDQU5DRUxMRURcIjpcbiAgICAgIHJldHVybiBcIkNhbmNlbGxlZFwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi5zdHJpbmdVdGlscy50b2tlbml6ZVdpdGhPcHRpb25zKHsgY2FwaXRhbGl6ZTogdHJ1ZSwgbG93ZXJDYXNlOiB0cnVlIH0sIHN0YXR1cyksXG4gICAgICBdLmpvaW4oXCIgXCIpO1xuICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGF0dGFjaG1lbnQgdHlwZSBoZWxwZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIEluc3BlY3QgYSB7QGxpbmsgR2VuaWVBdHRhY2htZW50fSBhbmQgcmV0dXJuIHRoZVxuICoge0BsaW5rIEF0dGFjaG1lbnRUeXBlfSBvZiBwYXlsb2FkIGl0IGNhcnJpZXMuIFJldHVybnMgdGhlIGZpcnN0XG4gKiBrbm93biBzdWItb2JqZWN0IHRoYXQncyBwcmVzZW50OyBpZiBub25lIG9mIHRoZSBrbm93biBvbmVzIGFyZVxuICogcG9wdWxhdGVkLCBmYWxscyBiYWNrIHRvIHRoZSBmaXJzdCBub24tYm9va2tlZXBpbmcga2V5XG4gKiAoZm9yd2FyZC1jb21wYXQgZm9yIHR5cGVzIHdlIGRvbid0IG1vZGVsIHlldCksIGVsc2UgYFwidW5rbm93blwiYC5cbiAqXG4gKiBIb25vcnMgYSBwcmUtc2V0IGBhdHRhY2htZW50X3R5cGVgIGlmIG9uZSBpcyBhbHJlYWR5IG9uIHRoZVxuICogdmFsdWUsIHNvIHRoaXMgaXMgaWRlbXBvdGVudCBhY3Jvc3MgcmUtZGV0ZWN0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRldGVjdEF0dGFjaG1lbnRUeXBlKGF0dDogR2VuaWVBdHRhY2htZW50KTogQXR0YWNobWVudFR5cGUge1xuICBpZiAoYXR0LmF0dGFjaG1lbnRfdHlwZSkgcmV0dXJuIGF0dC5hdHRhY2htZW50X3R5cGU7XG4gIGlmIChhdHQucXVlcnkpIHJldHVybiBcInF1ZXJ5XCI7XG4gIGlmIChhdHQudGV4dCkgcmV0dXJuIFwidGV4dFwiO1xuICBpZiAoYXR0LnN1Z2dlc3RlZF9xdWVzdGlvbnMpIHJldHVybiBcInN1Z2dlc3RlZF9xdWVzdGlvbnNcIjtcbiAgaWYgKGF0dC52aXopIHJldHVybiBcInZpelwiO1xuICBmb3IgKGNvbnN0IGsgb2YgT2JqZWN0LmtleXMoYXR0KSkge1xuICAgIGlmIChrICE9PSBcImF0dGFjaG1lbnRfaWRcIiAmJiBrICE9PSBcImF0dGFjaG1lbnRfdHlwZVwiKSByZXR1cm4gaztcbiAgfVxuICByZXR1cm4gXCJ1bmtub3duXCI7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gR2VuaWVDaGF0IGV2ZW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBXaGVyZSBvbiB0aGUgd2lyZSBhbiBldmVudCB3YXMgb2JzZXJ2ZWQuIFNwcmVhZCBpbnRvIGV2ZXJ5XG4gKiBhdHRhY2htZW50LXNjb3BlZCBldmVudCBwYXlsb2FkIHNvIHN1YnNjcmliZXJzIGNhbiByb3V0ZSwgbG9nLFxuICogb3IgY29ycmVsYXRlIHdpdGhvdXQgcmUtd2Fsa2luZyB0aGUgbWVzc2FnZS5cbiAqXG4gKiBGaWVsZHM6XG4gKiAgIC0gYHNwYWNlX2lkYDogdGhlIEdlbmllIHNwYWNlIHRoZSBjb252ZXJzYXRpb24gbGl2ZXMgaW4uXG4gKiAgIC0gYGNvbnZlcnNhdGlvbl9pZGA6IGNvbnZlcnNhdGlvbiBpZCBvbmNlIEdlbmllIGhhcyBhc3NpZ25lZCBvbmUuXG4gKiAgIC0gYG1lc3NhZ2VfaWRgOiBHZW5pZSBtZXNzYWdlIGlkIGZvciB0aGUgYWN0aXZlIHR1cm4uXG4gKiAgIC0gYGF0dGFjaG1lbnRfaWRgOiBhdHRhY2htZW50IHRoZSBldmVudCBjYW1lIGZyb20uIE9wdGlvbmFsXG4gKiAgICAgYmVjYXVzZSBHZW5pZSBzb21ldGltZXMgZW1pdHMgYW4gYW5vbnltb3VzIG1haW4tYW5zd2VyXG4gKiAgICAgYXR0YWNobWVudCB3aXRob3V0IGFuIGlkOyB0aG9zZSBzdGlsbCBnZXQgZXZlbnRzLCBqdXN0IHdpdGhcbiAqICAgICBgYXR0YWNobWVudF9pZGAgdW5kZWZpbmVkLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHNwYWNlX2lkOiB6LnN0cmluZygpLFxuICBjb252ZXJzYXRpb25faWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgbWVzc2FnZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBhdHRhY2htZW50X2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcbi8qKiBDb252ZXJzYXRpb24sIG1lc3NhZ2UsIGFuZCBhdHRhY2htZW50IGNvb3JkaW5hdGVzIHNoYXJlZCBieSBhdHRhY2htZW50IGV2ZW50cy4gKi9cbmV4cG9ydCB0eXBlIEdlbmllQ2hhdExvY2F0aW9uID0gei5pbmZlcjx0eXBlb2YgR2VuaWVDaGF0TG9jYXRpb25TY2hlbWE+O1xuXG4vKipcbiAqIExpZmVjeWNsZSBldmVudDogdGhlIHF1ZXN0aW9uIHRoaXMgdHVybiBpcyBhc2tpbmcgR2VuaWUuIEZpcmVzXG4gKiBvbmNlIHBlciBgZ2VuaWVFdmVudENoYXRgIGNhbGwsIHRoZSBmaXJzdCB0aW1lIHRoZSB1bmRlcmx5aW5nXG4gKiBgZ2VuaWVDaGF0YCBsb29wIHlpZWxkcyBhIGBHZW5pZU1lc3NhZ2VgLiBDYXJyaWVzIHRoZSBwcm9tcHRcbiAqIHRleHQgR2VuaWUgZWNob2VkIGJhY2sgb24gYG1lc3NhZ2UuY29udGVudGAgYW5kIHRoZSBhc3NpZ25lZFxuICogYG1lc3NhZ2VfaWRgIHNvIHN1YnNjcmliZXJzIGNhbiBncm91cCBldmVyeSBzdWJzZXF1ZW50IGV2ZW50XG4gKiBmb3IgdGhpcyB0dXJuIHVuZGVyIG9uZSBzdGFibGUga2V5LiBgY29udmVyc2F0aW9uX2lkYCBpc1xuICogcG9wdWxhdGVkIGZvciBib3RoIG9wZW5pbmcgYW5kIGZvbGxvdy11cCB0dXJucyAoR2VuaWUgYXNzaWduc1xuICogaXQgb24gYHN0YXJ0Q29udmVyc2F0aW9uYCkuXG4gKlxuICogRGVmZXJyZWQgKGluc3RlYWQgb2YgZmlyZWQgc3luY2hyb25vdXNseSBvbiBlbnRyeSkgc28gdGhlXG4gKiBgbWVzc2FnZV9pZGAgaXMgYXZhaWxhYmxlIHdoZW4gdGhlIGV2ZW50IGxhbmRzIC0gdGhhdCBvbmUgcm91bmRcbiAqIHRyaXAgY29zdHMgfjIwMG1zIGJ1dCBsZXRzIFVJcyByZW5kZXIgcXVlc3Rpb24gLyB0aGlua2luZyAvXG4gKiBxdWVyeSAvIHRleHQgYXMgYSBzaW5nbGUgZ3JvdXBlZCBibG9jayBwZXIgR2VuaWUgY2FsbCBpbnN0ZWFkXG4gKiBvZiBhIGZsYXQgc3RyZWFtLlxuICpcbiAqIGBhdHRhY2htZW50X2lkYCBpcyBpbnRlbnRpb25hbGx5IGFic2VudCAtIHF1ZXN0aW9ucyBhcmUgdHVyblxuICogc2NvcGVkLCBub3QgYXR0YWNobWVudCBzY29wZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBRdWVzdGlvbkV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEub21pdCh7XG4gIGF0dGFjaG1lbnRfaWQ6IHRydWUsXG59KS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJxdWVzdGlvblwiKSxcbiAgY29udGVudDogei5zdHJpbmcoKSxcbn0pO1xuLyoqIEluaXRpYWwgZXZlbnQgY2FycnlpbmcgdGhlIHVzZXIncyBxdWVzdGlvbiBhZnRlciBHZW5pZSBhc3NpZ25zIGEgbWVzc2FnZSBpZC4gKi9cbmV4cG9ydCB0eXBlIFF1ZXN0aW9uRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBRdWVzdGlvbkV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBMaWZlY3ljbGUgZXZlbnQ6IHJhdyBgR2VuaWVNZXNzYWdlYCBzbmFwc2hvdCBmb3IgdGhlIGFjdGl2ZVxuICogdHVybi4gRmlyZXMgb25jZSBwZXIgcG9sbCB5aWVsZC4gVGhlIGZ1bGwgbWVzc2FnZSBzaGFwZVxuICogKGluY2x1ZGluZyB0aGUgd2lkZW5lZCB0aG91Z2h0IC8gcmVnZW4gLyBhdHRhY2htZW50LXR5cGVcbiAqIGZpZWxkcykgaXMgZXhwb3NlZCBpbmxpbmUgYXMgYG1lc3NhZ2VgOyBjb25zdW1lcnMgbmFycm93IG9uXG4gKiBgZXZlbnQudHlwZSA9PT0gXCJtZXNzYWdlXCJgIGFuZCByZWFjaCBmb3IgYGV2ZW50Lm1lc3NhZ2VgLlxuICovXG5leHBvcnQgY29uc3QgTWVzc2FnZUV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEub21pdCh7XG4gIGF0dGFjaG1lbnRfaWQ6IHRydWUsXG59KS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJtZXNzYWdlXCIpLFxuICBtZXNzYWdlOiBHZW5pZU1lc3NhZ2VTY2hlbWEsXG59KTtcbi8qKiBSYXcgR2VuaWUgbWVzc2FnZSBzbmFwc2hvdCBlbWl0dGVkIG9uIGV2ZXJ5IHBvbGwgaXRlcmF0aW9uLiAqL1xuZXhwb3J0IHR5cGUgTWVzc2FnZUV2ZW50ID0gei5pbmZlcjx0eXBlb2YgTWVzc2FnZUV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBUb3AtbGV2ZWwgYG1lc3NhZ2Uuc3RhdHVzYCB0cmFuc2l0aW9uZWQuIEZpcmVzIGZvciBldmVyeVxuICogZGlzdGluY3Qgc3RhdHVzIHNlZW4gb24gdGhlIHdpcmUgKGUuZy4gYFNVQk1JVFRFRGAgLT5cbiAqIGBGSUxURVJJTkdfQ09OVEVYVGAgLT4gYEFTS0lOR19BSWAgLT4gYFBFTkRJTkdfV0FSRUhPVVNFYCAtPlxuICogYEFTS0lOR19BSWAgLT4gYENPTVBMRVRFRGApLlxuICovXG5leHBvcnQgY29uc3QgU3RhdHVzRXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5vbWl0KHtcbiAgYXR0YWNobWVudF9pZDogdHJ1ZSxcbn0pLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInN0YXR1c1wiKSxcbiAgc3RhdHVzOiBNZXNzYWdlU3RhdHVzU2NoZW1hLFxuICBwcmV2aW91c19zdGF0dXM6IE1lc3NhZ2VTdGF0dXNTY2hlbWEub3B0aW9uYWwoKSxcbn0pO1xuLyoqIE1lc3NhZ2Utc3RhdHVzIHRyYW5zaXRpb24sIGluY2x1ZGluZyB0aGUgcHJldmlvdXMgc3RhdHVzIHdoZW4gYXZhaWxhYmxlLiAqL1xuZXhwb3J0IHR5cGUgU3RhdHVzRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBTdGF0dXNFdmVudFNjaGVtYT47XG5cbi8qKlxuICogQSBuZXcgYXR0YWNobWVudCBzbG90IGFwcGVhcmVkIGluIGBtZXNzYWdlLmF0dGFjaG1lbnRzW11gLlxuICogRmlyZXMgZXhhY3RseSBvbmNlIHBlciBhdHRhY2htZW50IChtYXRjaGVkIGJ5IGBhdHRhY2htZW50X2lkYCxcbiAqIHBvc2l0aW9uYWxseSBmb3IgYW5vbnltb3VzIGF0dGFjaG1lbnRzKSB0aGUgZmlyc3QgdGltZSB3ZSBzZWVcbiAqIGl0LiBUaGUgc2xvdCdzIHBheWxvYWQga2luZCBsYW5kcyBpbiBgYXR0YWNobWVudF90eXBlYCBzbyB0aGVcbiAqIG91dGVyIGB0eXBlYCBkaXNjcmltaW5hdG9yIHN0YXlzIHVuYW1iaWd1b3VzLlxuICovXG5leHBvcnQgY29uc3QgQXR0YWNobWVudEV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwiYXR0YWNobWVudFwiKSxcbiAgaW5kZXg6IHoubnVtYmVyKCksXG4gIGF0dGFjaG1lbnRfdHlwZTogQXR0YWNobWVudFR5cGVTY2hlbWEsXG59KTtcbi8qKiBFdmVudCBlbWl0dGVkIHdoZW4gYSBuZXcgdHlwZWQgYXR0YWNobWVudCBhcHBlYXJzIG9uIHRoZSBtZXNzYWdlLiAqL1xuZXhwb3J0IHR5cGUgQXR0YWNobWVudEV2ZW50ID0gei5pbmZlcjx0eXBlb2YgQXR0YWNobWVudEV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBBIG5ldyByZWFzb25pbmcgc3RlcCBhcHBlYXJlZCBvbiBhIHF1ZXJ5IGF0dGFjaG1lbnRcbiAqIChgYXR0YWNobWVudHNbaV0ucXVlcnkudGhvdWdodHNbaV1gKS4gRGVkdXBsaWNhdGVkIHBlclxuICogYCh0aG91Z2h0X3R5cGUsIGNvbnRlbnQpYCB0dXBsZSB3aXRoaW4gYW4gYXR0YWNobWVudCBzb1xuICogc3Vic2NyaWJlcnMgZG9uJ3Qgc2VlIHRoZSBzYW1lIHRob3VnaHQgbXVsdGlwbGUgdGltZXMgLSBHZW5pZVxuICogc29tZXRpbWVzIG11dGF0ZXMgZXhpc3RpbmcgdGhvdWdodCBzbG90cyBpbiBwbGFjZSwgc28gdGhlIGRpZmZcbiAqIGlzIHZhbHVlLWJhc2VkIHJhdGhlciB0aGFuIHBvc2l0aW9uYWwuXG4gKi9cbmV4cG9ydCBjb25zdCBUaGlua2luZ0V2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwidGhpbmtpbmdcIiksXG4gIHRleHQ6IHouc3RyaW5nKCksXG4gIHRob3VnaHRfdHlwZTogR2VuaWVUaG91Z2h0VHlwZVNjaGVtYSxcbn0pO1xuLyoqIEluY3JlbWVudGFsIEdlbmllIHJlYXNvbmluZyBldmVudCBkZXJpdmVkIGZyb20gcXVlcnkgdGhvdWdodHMuICovXG5leHBvcnQgdHlwZSBUaGlua2luZ0V2ZW50ID0gei5pbmZlcjx0eXBlb2YgVGhpbmtpbmdFdmVudFNjaGVtYT47XG5cbi8qKlxuICogQSB0ZXh0LWF0dGFjaG1lbnQgYGNvbnRlbnRgIGZpZWxkIGFwcGVhcmVkIG9yIGNoYW5nZWRcbiAqIChgYXR0YWNobWVudHNbaV0udGV4dC5jb250ZW50YCkuIEZpcmVzIHdoZW5ldmVyIHRoZSBzbmFwc2hvdFxuICogdmFsdWUgZGlmZmVycyBmcm9tIHRoZSBwcmV2aW91cyBvbmUgZm9yIHRoZSBzYW1lIGF0dGFjaG1lbnQuXG4gKi9cbmV4cG9ydCBjb25zdCBUZXh0RXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJ0ZXh0XCIpLFxuICB0ZXh0OiB6LnN0cmluZygpLFxufSk7XG4vKiogTmFycmF0aXZlIGFuc3dlciBmcmFnbWVudCBlbWl0dGVkIGZyb20gYSBHZW5pZSB0ZXh0IGF0dGFjaG1lbnQuICovXG5leHBvcnQgdHlwZSBUZXh0RXZlbnQgPSB6LmluZmVyPHR5cGVvZiBUZXh0RXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIFNRTCB3YXMgZmluYWxpemVkIG9uIGEgcXVlcnkgYXR0YWNobWVudFxuICogKGBhdHRhY2htZW50c1tpXS5xdWVyeS5xdWVyeWApLiBGaXJlcyBvbmNlIHdoZW4gdGhlIFNRTCBzdHJpbmdcbiAqIHRyYW5zaXRpb25zIGZyb20gdW5kZWZpbmVkIHRvIGRlZmluZWQsIGFuZCBhZ2FpbiBpZiBHZW5pZSBldmVyXG4gKiByZXdyaXRlcyBpdC4gYHRpdGxlYCBhbmQgYGRlc2NyaXB0aW9uYCBhcmUgZGVub3JtYWxpc2VkIG9mZiB0aGVcbiAqIGF0dGFjaG1lbnQncyBgcXVlcnkudGl0bGVgIC8gYHF1ZXJ5LmRlc2NyaXB0aW9uYCBzbyBjb25zdW1lcnNcbiAqIGNhbiBsYWJlbCB0aGUgU1FMIHBpbGwgd2l0aG91dCByZS13YWxraW5nIHRoZSBtZXNzYWdlLlxuICovXG5leHBvcnQgY29uc3QgUXVlcnlFdmVudFNjaGVtYSA9IEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInF1ZXJ5XCIpLFxuICBzcWw6IHouc3RyaW5nKCksXG4gIHRpdGxlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcbi8qKiBGaW5hbGl6ZWQgb3IgcmV3cml0dGVuIFNRTCBlbWl0dGVkIGZvciBhIEdlbmllIHF1ZXJ5IGF0dGFjaG1lbnQuICovXG5leHBvcnQgdHlwZSBRdWVyeUV2ZW50ID0gei5pbmZlcjx0eXBlb2YgUXVlcnlFdmVudFNjaGVtYT47XG5cbi8qKlxuICogU1FMIHdhcyBzdWJtaXR0ZWQgdG8gYSBTUUwgd2FyZWhvdXNlIGFuZCBhIHN0YXRlbWVudCBpZCB3YXNcbiAqIGFzc2lnbmVkIChgYXR0YWNobWVudHNbaV0ucXVlcnkuc3RhdGVtZW50X2lkYCkuIEZpcmVzIHdoZW4gdGhlXG4gKiBzdGF0ZW1lbnQgaWQgdHJhbnNpdGlvbnMgZnJvbSB1bmRlZmluZWQgdG8gZGVmaW5lZCAtIHRoaXMgaXMgdGhlXG4gKiBwb2ludCBhdCB3aGljaCBgY2xpZW50LnN0YXRlbWVudEV4ZWN1dGlvbi5nZXRTdGF0ZW1lbnQoeyBzdGF0ZW1lbnRfaWQgfSlgXG4gKiBiZWNvbWVzIGEgdmFsaWQgY2FsbC5cbiAqL1xuZXhwb3J0IGNvbnN0IFN0YXRlbWVudEV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwic3RhdGVtZW50XCIpLFxuICBzdGF0ZW1lbnRfaWQ6IHouc3RyaW5nKCksXG59KTtcbi8qKiBFdmVudCBpbmRpY2F0aW5nIHRoYXQgYSBxdWVyeSByZWNlaXZlZCBhbiBleGVjdXRhYmxlIHN0YXRlbWVudCBpZC4gKi9cbmV4cG9ydCB0eXBlIFN0YXRlbWVudEV2ZW50ID0gei5pbmZlcjx0eXBlb2YgU3RhdGVtZW50RXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIFJvdyBjb3VudCBmb3IgYSBxdWVyeSBhdHRhY2htZW50J3MgcmVzdWx0IGNoYW5nZWRcbiAqIChgYXR0YWNobWVudHNbaV0ucXVlcnkucXVlcnlfcmVzdWx0X21ldGFkYXRhLnJvd19jb3VudGApLiBGaXJlc1xuICogb24gZXZlcnkgY2hhbmdlLCBpbmNsdWRpbmcgdGhlIGluaXRpYWwgYHVuZGVmaW5lZCAtPiAwYCBhbmQgdGhlXG4gKiBsYXRlciBgMCAtPiBOYCBvbmNlIHRoZSB3YXJlaG91c2UgZmluaXNoZXMgZXhlY3V0aW9uLlxuICovXG5leHBvcnQgY29uc3QgUm93c0V2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwicm93c1wiKSxcbiAgcm93X2NvdW50OiB6Lm51bWJlcigpLFxuICBwcmV2aW91c19yb3dfY291bnQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgc3RhdGVtZW50X2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcbi8qKiBSb3ctY291bnQgdHJhbnNpdGlvbiBmb3IgYSBHZW5pZSBxdWVyeSByZXN1bHQuICovXG5leHBvcnQgdHlwZSBSb3dzRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBSb3dzRXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIEdlbmllIHByb2R1Y2VkIGEgZm9sbG93LXVwIHN1Z2dlc3RlZC1xdWVzdGlvbnMgbGlzdFxuICogKGBhdHRhY2htZW50c1tpXS5zdWdnZXN0ZWRfcXVlc3Rpb25zLnF1ZXN0aW9uc1tdYCkuIEZpcmVzIG9uY2VcbiAqIHdoZW4gdGhlIGxpc3QgYXBwZWFycywgYW5kIGFnYWluIGlmIEdlbmllIHJld3JpdGVzIGl0LlxuICovXG5leHBvcnQgY29uc3QgU3VnZ2VzdGVkUXVlc3Rpb25zRXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJzdWdnZXN0ZWRfcXVlc3Rpb25zXCIpLFxuICBxdWVzdGlvbnM6IHouYXJyYXkoei5zdHJpbmcoKSksXG59KTtcbi8qKiBGb2xsb3ctdXAgcXVlc3Rpb24gbGlzdCBlbWl0dGVkIHdoZW4gR2VuaWUgYWRkcyBvciByZXdyaXRlcyBzdWdnZXN0aW9ucy4gKi9cbmV4cG9ydCB0eXBlIFN1Z2dlc3RlZFF1ZXN0aW9uc0V2ZW50ID0gei5pbmZlcjx0eXBlb2YgU3VnZ2VzdGVkUXVlc3Rpb25zRXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIFRoZSBhY3RpdmUgdHVybiByZWFjaGVkIGEgdGVybWluYWwgc3RhdHVzLiBBbHdheXMgZmlyZXMgb25jZVxuICogcGVyIHR1cm4gKGltbWVkaWF0ZWx5IGFmdGVyIHRoZSB0ZXJtaW5hbCBgbWVzc2FnZWAgZXZlbnQpLlxuICogQ2FycmllcyB0aGUgZmluYWwgYEdlbmllTWVzc2FnZWAgc25hcHNob3QgaW5saW5lIHNvIHN1YnNjcmliZXJzXG4gKiBkb24ndCBuZWVkIHRvIGtlZXAgdGhlaXIgb3duIGNvcHkgb2YgdGhlIGxhc3QgbWVzc2FnZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFJlc3VsdEV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEub21pdCh7XG4gIGF0dGFjaG1lbnRfaWQ6IHRydWUsXG59KS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJyZXN1bHRcIiksXG4gIHN0YXR1czogVGVybWluYWxTdGF0dXNTY2hlbWEsXG4gIG1lc3NhZ2U6IEdlbmllTWVzc2FnZVNjaGVtYSxcbn0pO1xuLyoqIEZpbmFsIGV2ZW50IGZvciBhIEdlbmllIHR1cm4sIGNhcnJ5aW5nIGl0cyB0ZXJtaW5hbCBzdGF0dXMgYW5kIG1lc3NhZ2Ugc25hcHNob3QuICovXG5leHBvcnQgdHlwZSBSZXN1bHRFdmVudCA9IHouaW5mZXI8dHlwZW9mIFJlc3VsdEV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBEaXNjcmltaW5hdGVkIHVuaW9uIHlpZWxkZWQgYnkgYGdlbmllRXZlbnRDaGF0YC4gRWFjaCB2YXJpYW50XG4gKiBpcyBhIHNpbmdsZSBmbGF0IG9iamVjdCB3aXRoIGB0eXBlYCBhcyB0aGUgZGlzY3JpbWluYXRvciBhbmRcbiAqIHRoZSBwYXlsb2FkIGZpZWxkcyBob2lzdGVkIGRpcmVjdGx5IHRvIHRoZSB0b3AgbGV2ZWwgLSBub1xuICogYHBheWxvYWRgIHdyYXBwZXIuIENvbnN1bWVycyBuYXJyb3cgb24gYHR5cGVgIGFuZCByZWFkIGZpZWxkc1xuICogaW5saW5lOlxuICpcbiAqIEBleGFtcGxlXG4gKiBmb3IgYXdhaXQgKGNvbnN0IGV2ZW50IG9mIGdlbmllRXZlbnRDaGF0KHNwYWNlSWQsIFwiVG9wIHN0b3Jlcz9cIikpIHtcbiAqICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gKiAgICAgY2FzZSBcInRoaW5raW5nXCI6XG4gKiAgICAgICBjb25zb2xlLmxvZyhldmVudC50aG91Z2h0X3R5cGUsIGV2ZW50LnRleHQpO1xuICogICAgICAgYnJlYWs7XG4gKiAgICAgY2FzZSBcInJlc3VsdFwiOlxuICogICAgICAgY29uc29sZS5sb2coXCJkb25lOlwiLCBldmVudC5zdGF0dXMpO1xuICogICAgICAgYnJlYWs7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBTdHJlYW0gb3JkZXIgcGVyIHR1cm46XG4gKlxuICogICAxLiBgcXVlc3Rpb25gLCBlbWl0dGVkIHdpdGggdGhlIGZpcnN0IGBtZXNzYWdlYCB5aWVsZCAoZGVmZXJyZWQgc29cbiAqICAgICAgdGhlIGFzc2lnbmVkIGBtZXNzYWdlX2lkYCBpcyBhdmFpbGFibGUpLCBjYXJyeWluZyB0aGUgcHJvbXB0XG4gKiAgICAgIHRoaXMgdHVybiBzZW50IHRvIEdlbmllLlxuICogICAyLiBgbWVzc2FnZWAgZm9yIGV2ZXJ5IHBvbGwgeWllbGQgKHJhdyBgR2VuaWVNZXNzYWdlYCBvblxuICogICAgICBgZXZlbnQubWVzc2FnZWApLlxuICogICAzLiBBbnkgZGVyaXZlZCBldmVudHMgdGhlIHNuYXBzaG90IGRpZmYgcHJvZHVjZWQgKGBzdGF0dXNgLFxuICogICAgICBgYXR0YWNobWVudGAsIGB0aGlua2luZ2AsIGB0ZXh0YCwgYHF1ZXJ5YCwgYHN0YXRlbWVudGAsXG4gKiAgICAgIGByb3dzYCwgYHN1Z2dlc3RlZF9xdWVzdGlvbnNgKSBpbiB0aGF0IGZpeGVkIG9yZGVyLlxuICogICA0LiBPbiB0aGUgdGVybWluYWwgc25hcHNob3QsIGEgZmluYWwgYHJlc3VsdGAgZXZlbnQuXG4gKlxuICogRXJyb3JzIHByb3BhZ2F0ZSB2aWEgdGhlIGdlbmVyYXRvciB0aHJvd2luZyAoYHRyeWAvYGNhdGNoYCB0aGVcbiAqIGBmb3IgYXdhaXRgKSwgbm90IHZpYSBhbiBgZXJyb3JgIHZhcmlhbnQgb24gdGhpcyB1bmlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllQ2hhdEV2ZW50U2NoZW1hID0gei5kaXNjcmltaW5hdGVkVW5pb24oXCJ0eXBlXCIsIFtcbiAgUXVlc3Rpb25FdmVudFNjaGVtYSxcbiAgTWVzc2FnZUV2ZW50U2NoZW1hLFxuICBTdGF0dXNFdmVudFNjaGVtYSxcbiAgQXR0YWNobWVudEV2ZW50U2NoZW1hLFxuICBUaGlua2luZ0V2ZW50U2NoZW1hLFxuICBUZXh0RXZlbnRTY2hlbWEsXG4gIFF1ZXJ5RXZlbnRTY2hlbWEsXG4gIFN0YXRlbWVudEV2ZW50U2NoZW1hLFxuICBSb3dzRXZlbnRTY2hlbWEsXG4gIFN1Z2dlc3RlZFF1ZXN0aW9uc0V2ZW50U2NoZW1hLFxuICBSZXN1bHRFdmVudFNjaGVtYSxcbl0pO1xuLyoqIE9yZGVyZWQgZXZlbnQgdW5pb24geWllbGRlZCBieSBgZ2VuaWVFdmVudENoYXRgOyBmYWlsdXJlcyBhcmUgdGhyb3duLCBub3QgZW1pdHRlZC4gKi9cbmV4cG9ydCB0eXBlIEdlbmllQ2hhdEV2ZW50ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVDaGF0RXZlbnRTY2hlbWE+O1xuXG4vKiogRGlzY3JpbWluYXRvciB0eXBlIGZvciB7QGxpbmsgR2VuaWVDaGF0RXZlbnR9LiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVDaGF0RXZlbnRUeXBlID0gR2VuaWVDaGF0RXZlbnRbXCJ0eXBlXCJdO1xuXG4vKipcbiAqIEZpZWxkIHNldCBmb3IgYSBnaXZlbiB7QGxpbmsgR2VuaWVDaGF0RXZlbnRUeXBlfSAtIHRoZSB2YXJpYW50XG4gKiB3aXRoIHRoZSBgdHlwZWAgZGlzY3JpbWluYXRvciBzdHJpcHBlZC4gVXNlZCBieSBkZXRlY3RvcnMgaW5cbiAqIGBldmVudC50c2Agc28gZWFjaCBkZXRlY3RvciByZXR1cm5zIGp1c3QgdGhlIHBheWxvYWQgZmllbGRzIGFuZFxuICogdGhlIG9yY2hlc3RyYXRvciBzdGFtcHMgYHR5cGVgIGF0IHlpZWxkIHRpbWUuXG4gKi9cbmV4cG9ydCB0eXBlIEdlbmllQ2hhdEV2ZW50RmllbGRzPFQgZXh0ZW5kcyBHZW5pZUNoYXRFdmVudFR5cGU+ID0gT21pdDxcbiAgRXh0cmFjdDxHZW5pZUNoYXRFdmVudCwgeyB0eXBlOiBUIH0+LFxuICBcInR5cGVcIlxuPjtcbiJdfQ==
|
|
542
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuaWUtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuaWUtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0NHO0FBRUgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUN4QixPQUFPLEtBQUssVUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLGtGQUFrRjtBQUNsRixpRkFBaUY7QUFDakYsNkRBQTZEO0FBQzdELE1BQU0sRUFDSixxQkFBcUIsRUFBRSx3QkFBd0IsRUFDL0Msa0JBQWtCLEVBQUUscUJBQXFCLEVBQ3pDLDBCQUEwQixFQUFFLDZCQUE2QixFQUN6RCxnQkFBZ0IsRUFBRSxtQkFBbUIsR0FDdEMsR0FBRyxVQUFVLENBQUM7QUFVZix3RkFBd0Y7QUFDeEYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsVUFBVSxDQUFDLG1CQUFtQixDQUFDO0FBRWxFLHlFQUF5RTtBQUV6RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQztLQUNwQyxNQUFNLEVBQUU7S0FDUixRQUFRLENBQUMsa0RBQWtELENBQUMsQ0FBQztBQUloRTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3pDLFlBQVksRUFBRSxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsOENBQThDLENBQUM7SUFDN0YsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsMENBQTBDLENBQUM7Q0FDekUsQ0FBQyxDQUFDO0FBSUgsNkVBQTZFO0FBRTdFOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxDQUFDLE1B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bEIsaUJBQWlCO0lBQ2pCLHFCQUFxQjtJQUNyQixtQkFBbUI7SUFDbkIsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixvQkFBb0I7SUFDcEIsZUFBZTtJQUNmLDZCQUE2QjtJQUM3QixpQkFBaUI7Q0FDbEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBXaXJlLWZvcm1hdCB6b2Qgc2NoZW1hcyArIHR5cGVzIGFuZCBoaWdoLWxldmVsIGV2ZW50IHZvY2FidWxhcnlcbiAqIGZvciB0aGUgR2VuaWUgY2hhdCBkcml2ZXIuXG4gKlxuICogVHdvIHJlbGF0ZWQgbGF5ZXJzIGxpdmUgaGVyZTpcbiAqXG4gKiAgIDEuIEdlbmllIHdpcmUgc2hhcGVzIGRlcml2ZWQgZnJvbSB0aGlzIHBhY2thZ2UncyBvd24gZ2VuZXJhdGVkXG4gKiAgICAgIGBkYXNoYm9hcmRzYCBzY2hlbWFzIChyZWdlbmVyYXRlZCBmcm9tIHRoZSB1cHN0cmVhbVxuICogICAgICBgQGRhdGFicmlja3Mvc2RrLWV4cGVyaW1lbnRhbGAgYGFwaXMvZGFzaGJvYXJkcy9tb2RlbC5kLnRzYFxuICogICAgICBieSB0aGUgZW5naW5lJ3MgY29kZWdlbiBvbiBzeW50aCkuIFdlIGV4dGVuZCB0aGUgU0RLIHNjaGVtYXMgd2hlcmUgR2VuaWVcbiAqICAgICAgc2hpcHMgZmllbGRzIG9uIHRoZSB3aXJlIHRoYXQgdGhlIFNESyBkb2Vzbid0IGN1cnJlbnRseSB0eXBlOlxuICpcbiAqICAgICAgICAtIGBHZW5pZU1lc3NhZ2UuYXV0b19yZWdlbmVyYXRlX2NvdW50OiBudW1iZXJgIChzdGFtcGVkXG4gKiAgICAgICAgICBvbiBldmVyeSB3aXJlIG1lc3NhZ2UsIG9taXR0ZWQgZnJvbSB0aGUgU0RLIHNoYXBlKS5cbiAqICAgICAgICAtIGBHZW5pZVF1ZXJ5QXR0YWNobWVudC50aG91Z2h0czogR2VuaWVUaG91Z2h0W11gICh0aGVcbiAqICAgICAgICAgIHN0cmVhbWVkIHJlYXNvbmluZyBwYXlsb2FkIHdpdGggYERFU0NSSVBUSU9OYCxcbiAqICAgICAgICAgIGBEQVRBX1NPVVJDSU5HYCwgYFNURVBTYCwgYW5kIGBVTkRFUlNUQU5ESU5HYCB0aG91Z2h0XG4gKiAgICAgICAgICBraW5kcykuXG4gKiAgICAgICAgLSBgR2VuaWVBdHRhY2htZW50LmF0dGFjaG1lbnRfdHlwZTogQXR0YWNobWVudFR5cGVgXG4gKiAgICAgICAgICAoYW4gb3B0aW9uYWwgZGlzY3JpbWluYXRvciBsaXRlcmFsIHNvIGNhbGxlcnMgY2FuXG4gKiAgICAgICAgICBgc3dpdGNoIChhdHQuYXR0YWNobWVudF90eXBlKWAgaW5zdGVhZCBvZiBwcm9iaW5nXG4gKiAgICAgICAgICB3aGljaCBzdWIta2V5IGlzIHBvcHVsYXRlZDsgY29tcHV0ZSBpdCB3aXRoXG4gKiAgICAgICAgICB7QGxpbmsgZGV0ZWN0QXR0YWNobWVudFR5cGV9KS5cbiAqXG4gKiAgIDIuIEV2ZW50IHZvY2FidWxhcnkgZm9yIHRoZSBoaWdoLWxldmVsIGBnZW5pZUV2ZW50Q2hhdGBcbiAqICAgICAgZHJpdmVyLiBFYWNoIGV2ZW50IGlzIGEgZmxhdCBgei5vYmplY3RgIHdpdGggYSBgdHlwZWBcbiAqICAgICAgbGl0ZXJhbCBkaXNjcmltaW5hdG9yIGFuZCBzbmFrZV9jYXNlIHBheWxvYWQgZmllbGRzIGhvaXN0ZWRcbiAqICAgICAgdG8gdGhlIHRvcCBsZXZlbCAobm8gYHBheWxvYWRgIHdyYXBwZXIpLiBFdmVudHMgdGhhdCBzaGFyZVxuICogICAgICB0aGUgYXR0YWNobWVudC1zY29wZWQgbG9jYXRpb24gdXNlXG4gKiAgICAgIHtAbGluayBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYX0gYXMgYSBiYXNlOyBldmVudHMgdGhhdFxuICogICAgICBkb24ndCBjYXJyeSBhbiBgYXR0YWNobWVudF9pZGAgKHN0YXR1cywgcmVzdWx0KSBvbWl0IGl0LlxuICogICAgICB7QGxpbmsgR2VuaWVDaGF0RXZlbnRTY2hlbWF9IGJ1bmRsZXMgdGhlIHZhcmlhbnRzIGludG8gb25lXG4gKiAgICAgIGRpc2NyaW1pbmF0ZWQgdW5pb24uXG4gKlxuICogUHVyZSB0eXBlczogbm8gcnVudGltZSBpbXBvcnRzIGJleW9uZCB6b2QgKyB0aGUgZ2VuZXJhdGVkXG4gKiBgZGFzaGJvYXJkc2Agc2NoZW1hcywgbm8gTm9kZS1vbmx5IGNvZGUsIHNhZmUgZm9yIGJyb3dzZXIgYnVuZGxlcy5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgdG9rZW5pemVXaXRoT3B0aW9ucyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0ICogYXMgZGFzaGJvYXJkcyBmcm9tIFwiLi9kYXNoYm9hcmRzLnRzXCI7XG5cbi8vIFRoZSBnZW5lcmF0ZWQgU0RLIHNjaGVtYXMgbGl2ZSBpbiB0aGUgc2libGluZyBgLi9kYXNoYm9hcmRzLnRzYCwgd3JpdHRlbiBieSB0aGVcbi8vIGVuZ2luZSdzIGNvZGVnZW4gZnJvbSB0aGUgdXBzdHJlYW0gYC5kLnRzYC4gQWxpYXMgdGhlIGhhbmRmdWwgR2VuaWUgZXh0ZW5kcyBzb1xuLy8gdGhlIHdpZGVuZWQgc2NoZW1hcyBiZWxvdyByZWFkIGFnYWluc3Qgc2hvcnQsIGxvY2FsIG5hbWVzLlxuY29uc3Qge1xuICBnZW5pZUF0dGFjaG1lbnRTY2hlbWE6IFNES0dlbmllQXR0YWNobWVudFNjaGVtYSxcbiAgZ2VuaWVNZXNzYWdlU2NoZW1hOiBTREtHZW5pZU1lc3NhZ2VTY2hlbWEsXG4gIGdlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hOiBTREtHZW5pZVF1ZXJ5QXR0YWNobWVudFNjaGVtYSxcbiAgZ2VuaWVTcGFjZVNjaGVtYTogU0RLR2VuaWVTcGFjZVNjaGVtYSxcbn0gPSBkYXNoYm9hcmRzO1xuXG4vKipcbiAqIFRoZSBTREsncyBgTWVzc2FnZVN0YXR1c2AgdHlwZSwgcmUtZXhwb3J0ZWQgc28gY29uc3VtZXJzIG9mIHRoZVxuICogR2VuaWUgY29udHJhY3QgZ2V0IHRoZSBmdWxsIHdpcmUgdm9jYWJ1bGFyeSBmcm9tIGEgc2luZ2xlIGltcG9ydFxuICogcGF0aCAtIG1pcnJvcnMgdGhlIHJlLWV4cG9ydHMgb2YgdGhlIG90aGVyIFNESy1kZXJpdmVkIHNjaGVtYXNcbiAqIGJlbG93LlxuICovXG5leHBvcnQgdHlwZSBNZXNzYWdlU3RhdHVzID0gZGFzaGJvYXJkcy5NZXNzYWdlU3RhdHVzO1xuXG4vKiogUnVudGltZSB2YWxpZGF0b3IgZm9yIGEgcmF3IEdlbmllIG1lc3NhZ2Ugc3RhdHVzIGZyb20gdGhlIGdlbmVyYXRlZCBTREsgY29udHJhY3QuICovXG5leHBvcnQgY29uc3QgTWVzc2FnZVN0YXR1c1NjaGVtYSA9IGRhc2hib2FyZHMubWVzc2FnZVN0YXR1c1NjaGVtYTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gdGhvdWdodHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIEdlbmllJ3MgcGVyLXF1ZXJ5IFwidGhvdWdodHNcIiBzdXJmYWNlLiBUaGVzZSBhcHBlYXIgb24gdGhlXG4gKiBgL21lc3NhZ2VzL3tpZH1gIHdpcmUgdW5kZXIgYGF0dGFjaG1lbnRzW2ldLnF1ZXJ5LnRob3VnaHRzW11gIGJ1dFxuICogYXJlIG5vdCB0eXBlZCBvbiB0aGUgU0RLJ3MgYEdlbmllUXVlcnlBdHRhY2htZW50YCBhdCB2MC4xNy5cbiAqXG4gKiBLbm93biB0aG91Z2h0IHR5cGVzIG9ic2VydmVkIGluIHByb2R1Y3Rpb24gcG9sbHM6XG4gKlxuICogICAtIGBUSE9VR0hUX1RZUEVfREVTQ1JJUFRJT05gOiBhIG9uZS1wYXJhZ3JhcGggcmVzdGF0ZW1lbnQgb2ZcbiAqICAgICB3aGF0IHRoZSB1c2VyIGFza2VkLiBUaGUgZmluYWwgYHF1ZXJ5LmRlc2NyaXB0aW9uYCBmaWVsZCBvblxuICogICAgIHRoZSBhdHRhY2htZW50IGNhcnJpZXMgdGhlIHNhbWUgdGV4dC5cbiAqICAgLSBgVEhPVUdIVF9UWVBFX0RBVEFfU09VUkNJTkdgOiBtYXJrZG93biBidWxsZXRzIG9mIHRoZVxuICogICAgIGZ1bGx5LXF1YWxpZmllZCBgY2F0YWxvZy5zY2hlbWEudGFibGVgIHNvdXJjZXMgR2VuaWUgY2hvc2UuXG4gKiAgIC0gYFRIT1VHSFRfVFlQRV9TVEVQU2A6IHRoZSBoaWdoLWxldmVsIHBsYW4gR2VuaWUgd3JvdGUgYmVmb3JlXG4gKiAgICAgcnVubmluZyBTUUwgKG9uZSBidWxsZXQgcGVyIHN0ZXApLlxuICogICAtIGBUSE9VR0hUX1RZUEVfVU5ERVJTVEFORElOR2A6IGFtYmlndWl0eSAvIGludGVycHJldGF0aW9uXG4gKiAgICAgbm90ZXMgKGUuZy4gXCIncmV2ZW51ZScgY291bGQgYmUgaW50ZXJwcmV0ZWQgYXMgZ3Jvc3MsXG4gKiAgICAgbmV0LCBvciByZWNvZ25pemVkIHJldmVudWUuLi5cIikuXG4gKlxuICogT3BlbiBhdCB0aGUgdHlwZSBsZXZlbCAoYHwgKHN0cmluZyAmIHt9KWApIHNvIGEgbmV3IHNlcnZlci1zaWRlXG4gKiB0aG91Z2h0IHR5cGUgZG9lc24ndCBicmVhayBjb21waWxhdGlvbjsgdGhlIGZvdXIga25vd24gdHlwZXNcbiAqIHN0aWxsIG5hcnJvdyBjb3JyZWN0bHkgdW5kZXIgYHN3aXRjaGAuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVRob3VnaHRUeXBlU2NoZW1hID0gelxuICAuc3RyaW5nKClcbiAgLmRlc2NyaWJlKFwiRm9yd2FyZC1jb21wYXRpYmxlIEdlbmllIHJlYXNvbmluZyB0aG91Z2h0IHR5cGUuXCIpO1xuXG5leHBvcnQgdHlwZSBHZW5pZVRob3VnaHRUeXBlID0gei5pbmZlcjx0eXBlb2YgR2VuaWVUaG91Z2h0VHlwZVNjaGVtYT47XG5cbi8qKlxuICogT25lIHJlYXNvbmluZyBzdGVwIG9uIGEgcXVlcnkgYXR0YWNobWVudC4gU2VlXG4gKiB7QGxpbmsgR2VuaWVUaG91Z2h0VHlwZX0gZm9yIHRoZSBrbm93biBgdGhvdWdodF90eXBlYCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVRob3VnaHRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHRob3VnaHRfdHlwZTogR2VuaWVUaG91Z2h0VHlwZVNjaGVtYS5kZXNjcmliZShcIktpbmQgb2YgcmVhc29uaW5nIHJlcHJlc2VudGVkIGJ5IHRoaXMgZW50cnkuXCIpLFxuICBjb250ZW50OiB6LnN0cmluZygpLmRlc2NyaWJlKFwiUmVhc29uaW5nIHRleHQgZW1pdHRlZCBmb3IgdGhpcyB0aG91Z2h0LlwiKSxcbn0pO1xuLyoqIE9uZSB0eXBlZCByZWFzb25pbmcgZW50cnkgYXR0YWNoZWQgdG8gYSBHZW5pZSBxdWVyeS4gKi9cbmV4cG9ydCB0eXBlIEdlbmllVGhvdWdodCA9IHouaW5mZXI8dHlwZW9mIEdlbmllVGhvdWdodFNjaGVtYT47XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGF0dGFjaG1lbnQgZGlzY3JpbWluYXRvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogRGlzY3JpbWluYXRvciBmb3Igd2hhdCdzIGluc2lkZSBhIGBHZW5pZUF0dGFjaG1lbnRgLiBHZW5pZSBvbmx5XG4gKiBldmVyIHBvcHVsYXRlcyBvbmUgb2YgYHF1ZXJ5YCAvIGB0ZXh0YCAvIGBzdWdnZXN0ZWRfcXVlc3Rpb25zYFxuICogcGVyIGF0dGFjaG1lbnQuIE9wZW4gdmlhIGAoc3RyaW5nICYge30pYCBzbyBhIG5ldyBzZXJ2ZXItc2lkZVxuICogdHlwZSBkb2Vzbid0IGJyZWFrIGNvbXBpbGF0aW9uOyB0aGUgdGhyZWUga25vd24gdHlwZXMgc3RpbGxcbiAqIG5hcnJvdyBjb3JyZWN0bHkgdW5kZXIgYHN3aXRjaGAuXG4gKlxuICogTGlmdGVkIGludG8gdGhlIHNjaGVtYSBhcyB0aGUgb3B0aW9uYWxcbiAqIHtAbGluayBHZW5pZUF0dGFjaG1lbnRTY2hlbWF9LmBhdHRhY2htZW50X3R5cGVgIGZpZWxkIChjb21wdXRlXG4gKiBpdCB3aXRoIHtAbGluayBkZXRlY3RBdHRhY2htZW50VHlwZX0pIHNvIGNvbnN1bWVycyBjYW4gYnJhbmNoXG4gKiBvbiBhIGxpdGVyYWwgaW5zdGVhZCBvZiBwcm9iaW5nIHdoaWNoIHN1Yi1vYmplY3Qga2V5IGlzXG4gKiBwcmVzZW50LiBBbHNvIHN1cmZhY2VkIG9uIHtAbGluayBBdHRhY2htZW50RXZlbnR9J3MgcGF5bG9hZCBhc1xuICogYGF0dGFjaG1lbnRfdHlwZWAgKHZzIGEgYmFyZSBgdHlwZWApIHRvIGtlZXAgdGhlIGZpZWxkIGNsZWFyIG9mXG4gKiB0aGUgZXZlbnQtdW5pb24gZGlzY3JpbWluYXRvciBrZXkuXG4gKi9cbmV4cG9ydCBjb25zdCBBVFRBQ0hNRU5UX1RZUEVTID0gW1xuICBcInF1ZXJ5XCIsXG4gIFwidGV4dFwiLFxuICBcInN1Z2dlc3RlZF9xdWVzdGlvbnNcIixcbiAgXCJ2aXpcIixcbl0gYXMgY29uc3Qgc2F0aXNmaWVzIHJlYWRvbmx5IHN0cmluZ1tdO1xuXG5leHBvcnQgY29uc3QgS25vd25BdHRhY2htZW50VHlwZVNjaGVtYSA9IHpcbiAgLmVudW0oQVRUQUNITUVOVF9UWVBFUylcbiAgLmRlc2NyaWJlKFwiQXR0YWNobWVudCBkaXNjcmltaW5hdG9yIHZhbHVlcyB1bmRlcnN0b29kIGJ5IHRoaXMgcGFja2FnZSB2ZXJzaW9uLlwiKTtcblxuZXhwb3J0IHR5cGUgS25vd25BdHRhY2htZW50VHlwZSA9IHouaW5mZXI8dHlwZW9mIEtub3duQXR0YWNobWVudFR5cGVTY2hlbWE+O1xuXG5leHBvcnQgY29uc3QgQXR0YWNobWVudFR5cGVTY2hlbWEgPSB6XG4gIC5zdHJpbmcoKVxuICAuZGVzY3JpYmUoXCJGb3J3YXJkLWNvbXBhdGlibGUgR2VuaWUgYXR0YWNobWVudCBkaXNjcmltaW5hdG9yLlwiKTtcblxuZXhwb3J0IHR5cGUgQXR0YWNobWVudFR5cGUgPSB6LmluZmVyPHR5cGVvZiBBdHRhY2htZW50VHlwZVNjaGVtYT47XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0gd2lkZW5lZCB3aXJlIHNjaGVtYXMgKyB0eXBlcyAtLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBgR2VuaWVRdWVyeUF0dGFjaG1lbnRgIHdpZGVuZWQgd2l0aCB0aGUgYHRob3VnaHRzW11gIGZpZWxkIHRoZVxuICogR2VuaWUgd2lyZSBleHBvc2VzIGJ1dCB0aGUgU0RLIGRvZXNuJ3QgY3VycmVudGx5IHR5cGUuIEV2ZXJ5XG4gKiBvdGhlciBmaWVsZCAoYGRlc2NyaXB0aW9uYCwgYHF1ZXJ5YCwgYHN0YXRlbWVudF9pZGAsXG4gKiBgcXVlcnlfcmVzdWx0X21ldGFkYXRhYCwgYHRpdGxlYCwgYHBhcmFtZXRlcnNgLFxuICogYGxhc3RfdXBkYXRlZF90aW1lc3RhbXBgLCBgaWRgKSBmbG93cyB0aHJvdWdoIHZlcmJhdGltIGZyb21cbiAqIHRoZSBTREsgc2NoZW1hLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVRdWVyeUF0dGFjaG1lbnRTY2hlbWEgPSBTREtHZW5pZVF1ZXJ5QXR0YWNobWVudFNjaGVtYS5leHRlbmQoe1xuICB0aG91Z2h0czogei5hcnJheShHZW5pZVRob3VnaHRTY2hlbWEpLm9wdGlvbmFsKCksXG59KTtcbi8qKiBRdWVyeSBhdHRhY2htZW50IHdpZGVuZWQgd2l0aCBHZW5pZSdzIHN0cmVhbWVkIHJlYXNvbmluZyB0aG91Z2h0cy4gKi9cbmV4cG9ydCB0eXBlIEdlbmllUXVlcnlBdHRhY2htZW50ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVRdWVyeUF0dGFjaG1lbnRTY2hlbWE+O1xuXG4vKipcbiAqIFB1cnBvc2UgYXR0YWNoZWQgdG8gYSBHZW5pZSB0ZXh0IHJlc3BvbnNlLlxuICpcbiAqIFRoZSBnZW5lcmF0ZWQgRGF0YWJyaWNrcyBTREsgc2NoZW1hIGN1cnJlbnRseSBrbm93cyBvbmx5XG4gKiBgRk9MTE9XX1VQX1FVRVNUSU9OYCwgd2hpbGUgdGhlIGxpdmUgR2VuaWUgQVBJIGFsc28gZW1pdHNcbiAqIGBURVhUX0FUVEFDSE1FTlRfUFVSUE9TRV9BTlNXRVJgIGZvciB0aGUgcHJpbWFyeSBhbnN3ZXIgdGV4dC4gS2VlcCB0aGVcbiAqIGtub3duIHZhbHVlcyBkaXNjb3ZlcmFibGUgYW5kIGFjY2VwdCBmdXR1cmUgc3RyaW5nIHZhbHVlcyBzbyBhbiBhZGRpdGl2ZVxuICogc2VydmVyLXNpZGUgZW51bSBjaGFuZ2UgY2Fubm90IGludmFsaWRhdGUgYW4gb3RoZXJ3aXNlIGNvbXBsZXRlIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVRleHRBdHRhY2htZW50UHVycG9zZVNjaGVtYSA9IHpcbiAgLnN0cmluZygpXG4gIC5kZXNjcmliZShcIkZvcndhcmQtY29tcGF0aWJsZSBzZW1hbnRpYyBwdXJwb3NlIGZvciBhIEdlbmllIHRleHQgYXR0YWNobWVudC5cIik7XG5cbmV4cG9ydCB0eXBlIEdlbmllVGV4dEF0dGFjaG1lbnRQdXJwb3NlID0gei5pbmZlcjx0eXBlb2YgR2VuaWVUZXh0QXR0YWNobWVudFB1cnBvc2VTY2hlbWE+O1xuXG4vKipcbiAqIFRleHQgYXR0YWNobWVudCB3aWRlbmVkIGZvciBmb3J3YXJkLWNvbXBhdGlibGUgcHVycG9zZSB2YWx1ZXMgYW5kIG9wdGlvbmFsXG4gKiBBZ2VudCBNb2RlIHRhYmxlIG1ldGFkYXRhLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVUZXh0QXR0YWNobWVudFNjaGVtYSA9IGRhc2hib2FyZHMudGV4dEF0dGFjaG1lbnRTY2hlbWEuZXh0ZW5kKHtcbiAgcHVycG9zZTogR2VuaWVUZXh0QXR0YWNobWVudFB1cnBvc2VTY2hlbWEub3B0aW9uYWwoKSxcbiAgbWV0YWRhdGE6IHoudW5rbm93bigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBZ2VudCBNb2RlIG1ldGFkYXRhIGF0dGFjaGVkIHRvIHRoaXMgdGV4dCByZXNwb25zZS5cIiksXG59KTtcbi8qKiBOYXJyYXRpdmUgdGV4dCBhdHRhY2htZW50LCBpbmNsdWRpbmcgaXRzIG9wdGlvbmFsIHNlbWFudGljIHB1cnBvc2UuICovXG5leHBvcnQgdHlwZSBHZW5pZVRleHRBdHRhY2htZW50ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVUZXh0QXR0YWNobWVudFNjaGVtYT47XG5cbi8qKlxuICogVmlzdWFsaXphdGlvbiBHZW5pZSByZXF1ZXN0ZWQgZm9yIG9uZSBvZiBpdHMgcXVlcnkgcmVzdWx0cy4gR2VuaWUgc3RvcmVzIG9ubHlcbiAqIHRoZSB0aXRsZSBhbmQgdGhlIHF1ZXJ5IGF0dGFjaG1lbnQgaXQgY2hhcnRzOyB0aGUgY2xpZW50IGRyYXdzIHRoZSBjaGFydCBmcm9tXG4gKiB0aGF0IHF1ZXJ5J3Mgc3RhdGVtZW50IHJvd3MuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVZpekF0dGFjaG1lbnRTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHRpdGxlOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJEaXNwbGF5IHRpdGxlIEdlbmllIGNob3NlIGZvciB0aGUgY2hhcnQuXCIpLFxuICAgIHF1ZXJ5X2F0dGFjaG1lbnRfaWQ6IHpcbiAgICAgIC5zdHJpbmcoKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcImBhdHRhY2htZW50X2lkYCBvZiB0aGUgcXVlcnkgYXR0YWNobWVudCB3aG9zZSByb3dzIHRoZSBjaGFydCBwbG90cy5cIiksXG4gIH0pXG4gIC5kZXNjcmliZShcIkdlbmllIHZpc3VhbGl6YXRpb24gcmVxdWVzdCBvdmVyIG9uZSBxdWVyeSBhdHRhY2htZW50LlwiKTtcbi8qKiBHZW5pZSB2aXN1YWxpemF0aW9uIHJlcXVlc3Qgb3ZlciBvbmUgcXVlcnkgYXR0YWNobWVudC4gKi9cbmV4cG9ydCB0eXBlIEdlbmllVml6QXR0YWNobWVudCA9IHouaW5mZXI8dHlwZW9mIEdlbmllVml6QXR0YWNobWVudFNjaGVtYT47XG5cbi8qKlxuICogYEdlbmllQXR0YWNobWVudGAgd2l0aDpcbiAqXG4gKiAgIC0gYHF1ZXJ5YCByZS10eXBlZCB0byB0aGUgdGhvdWdodHMtYXdhcmVcbiAqICAgICB7QGxpbmsgR2VuaWVRdWVyeUF0dGFjaG1lbnRTY2hlbWF9LlxuICogICAtIGBhdHRhY2htZW50X3R5cGVgIGRpc2NyaW1pbmF0b3IgbGl0ZXJhbFxuICogICAgICh7QGxpbmsgQXR0YWNobWVudFR5cGV9KSBzbyBjb25zdW1lcnMgY2FuIGBzd2l0Y2hcbiAqICAgICAoYXR0LmF0dGFjaG1lbnRfdHlwZSlgIHRvIG5hcnJvdyB3aGljaCBzdWItb2JqZWN0IGlzXG4gKiAgICAgcG9wdWxhdGVkLiBPcHRpb25hbCBvbiB0aGUgd2lyZSAoR2VuaWUgZG9lc24ndCBzZW5kIGl0KTtcbiAqICAgICBjYWxsZXJzIGNvbXB1dGUgaXQgd2l0aCB7QGxpbmsgZGV0ZWN0QXR0YWNobWVudFR5cGV9IHdoZW5cbiAqICAgICB0aGV5IHdhbnQgdGhlIGxpdGVyYWwgdXAtZnJvbnQuXG4gKlxuICogYHRleHRgIGlzIHJlLXR5cGVkIHRvIHRoZSBmb3J3YXJkLWNvbXBhdGlibGVcbiAqIHtAbGluayBHZW5pZVRleHRBdHRhY2htZW50U2NoZW1hfS4gYGF0dGFjaG1lbnRfaWRgIGFuZFxuICogYHN1Z2dlc3RlZF9xdWVzdGlvbnNgIHBhc3MgdGhyb3VnaCB1bmNoYW5nZWQuIGBhdHRhY2htZW50X2lkYCBpcyBnZW51aW5lbHlcbiAqIG9wdGlvbmFsIG9uIHRoZSB3aXJlOlxuICogdGhlIGZpcnN0IHRleHQgYXR0YWNobWVudCBHZW5pZSBlbWl0cyBwZXIgdHVybiAodGhlIFwibWFpblxuICogYW5zd2VyIHRleHRcIikgYXJyaXZlcyB3aXRoIG5vIGlkLCBvbmx5IHRoZSBmb2xsb3ctdXAgdGV4dFxuICogYXR0YWNobWVudCBnZXRzIG9uZS5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllQXR0YWNobWVudFNjaGVtYSA9IFNES0dlbmllQXR0YWNobWVudFNjaGVtYS5leHRlbmQoe1xuICBxdWVyeTogR2VuaWVRdWVyeUF0dGFjaG1lbnRTY2hlbWEub3B0aW9uYWwoKSxcbiAgdGV4dDogR2VuaWVUZXh0QXR0YWNobWVudFNjaGVtYS5vcHRpb25hbCgpLFxuICB2aXo6IEdlbmllVml6QXR0YWNobWVudFNjaGVtYS5vcHRpb25hbCgpLFxuICBhdHRhY2htZW50X3R5cGU6IEF0dGFjaG1lbnRUeXBlU2NoZW1hLm9wdGlvbmFsKCksXG59KTtcbi8qKiBHZW5pZSBtZXNzYWdlIGF0dGFjaG1lbnQgd2l0aCBhbiBvcHRpb25hbCBjb21wdXRlZCBkaXNjcmltaW5hdG9yLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVBdHRhY2htZW50ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVBdHRhY2htZW50U2NoZW1hPjtcblxuLyoqXG4gKiBgR2VuaWVNZXNzYWdlYCB3aWRlbmVkIHdpdGg6XG4gKlxuICogICAtIGBhdXRvX3JlZ2VuZXJhdGVfY291bnRgOiBudW1iZXIgc3RhbXBlZCBvbiBldmVyeSB3aXJlXG4gKiAgICAgbWVzc2FnZSB0aGF0IHRoZSBTREsgdHlwZSBvbWl0cyBhdCB2MC4xNy5cbiAqICAgLSBgYXR0YWNobWVudHNgOiByZS10eXBlZCB0byB0aGUgbG9jYWxcbiAqICAgICB7QGxpbmsgR2VuaWVBdHRhY2htZW50U2NoZW1hfSBzb1xuICogICAgIGBhdHRhY2htZW50LnF1ZXJ5Py50aG91Z2h0c2AgKGFuZCB0aGVcbiAqICAgICBgYXR0YWNobWVudF90eXBlYCBkaXNjcmltaW5hdG9yKSBpcyByZWFjaGFibGUgd2l0aG91dCBhXG4gKiAgICAgY2FzdC5cbiAqXG4gKiBFdmVyeSBvdGhlciBmaWVsZCAoYGlkYCwgYHNwYWNlX2lkYCwgYGNvbnZlcnNhdGlvbl9pZGAsXG4gKiBgdXNlcl9pZGAsIGBjcmVhdGVkX3RpbWVzdGFtcGAsIGBsYXN0X3VwZGF0ZWRfdGltZXN0YW1wYCxcbiAqIGBzdGF0dXNgLCBgY29udGVudGAsIGBtZXNzYWdlX2lkYCwgYHF1ZXJ5X3Jlc3VsdGAsIGBlcnJvcmAsXG4gKiBgZmVlZGJhY2tgKSBwYXNzZXMgdGhyb3VnaCBmcm9tIHRoZSBTREsgc2NoZW1hLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVNZXNzYWdlU2NoZW1hID0gU0RLR2VuaWVNZXNzYWdlU2NoZW1hLmV4dGVuZCh7XG4gIGF0dGFjaG1lbnRzOiB6LmFycmF5KEdlbmllQXR0YWNobWVudFNjaGVtYSkub3B0aW9uYWwoKSxcbiAgYXV0b19yZWdlbmVyYXRlX2NvdW50OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG59KTtcbi8qKiBHZW5pZSBtZXNzYWdlIHNuYXBzaG90IHdpZGVuZWQgd2l0aCB0eXBlZCBhdHRhY2htZW50cyBhbmQgcmVnZW5lcmF0aW9uIGNvdW50LiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVNZXNzYWdlID0gei5pbmZlcjx0eXBlb2YgR2VuaWVNZXNzYWdlU2NoZW1hPjtcblxuLyoqXG4gKiBEb21haW4gcHJvamVjdGlvbiBvZiB7QGxpbmsgR2VuaWVNZXNzYWdlU2NoZW1hfSB0aGF0IGRyb3BzIGV2ZXJ5XG4gKiB0dXJuLWxldmVsIGZpZWxkIChgaWRgLCBgc3RhdHVzYCwgYGNyZWF0ZWRfdGltZXN0YW1wYCxcbiAqIGBxdWVyeV9yZXN1bHRgLCAuLi4pIGFuZCB5aWVsZHMganVzdCB0aGUgcmVzcG9uc2UgcGF5bG9hZCBhcyBhXG4gKiBmbGF0IGBHZW5pZUF0dGFjaG1lbnRbXWAuIFBhcnNlcyB0aGUgc2FtZSB3aXJlIHNoYXBlIGFzXG4gKiB7QGxpbmsgR2VuaWVNZXNzYWdlU2NoZW1hfTsgbWlzc2luZyBgYXR0YWNobWVudHNgIGRlZmF1bHRzIHRvXG4gKiBgW11gIHNvIHRoZSBvdXRwdXQgaXMgYWx3YXlzIGFuIGFycmF5LlxuICpcbiAqIFVzZSB3aGVuIGNvbnN1bWVycyBvbmx5IGNhcmUgYWJvdXQgdGhlIG1vZGVsJ3MgcmVzcG9uc2VcbiAqIGF0dGFjaG1lbnRzIGFuZCBub3QgdGhlIHN1cnJvdW5kaW5nIG1lc3NhZ2UgZW52ZWxvcGUuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVJlc3BvbnNlU2NoZW1hID0gR2VuaWVNZXNzYWdlU2NoZW1hLnRyYW5zZm9ybSgobSkgPT4gbS5hdHRhY2htZW50cyA/PyBbXSk7XG4vKiogTm9ybWFsaXplZCBhdHRhY2htZW50IGFycmF5IGV4dHJhY3RlZCBmcm9tIGEgR2VuaWUgbWVzc2FnZSByZXNwb25zZS4gKi9cbmV4cG9ydCB0eXBlIEdlbmllUmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBHZW5pZVJlc3BvbnNlU2NoZW1hPjtcblxuLyoqXG4gKiBgR2VuaWVTcGFjZWAgd2lkZW5lZCB3aXRoIGFuIG9wdGlvbmFsIGBzZXJpYWxpemVkX3NwYWNlYCBmaWVsZFxuICogY2FycnlpbmcgYSBKU09OLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgc3BhY2UncyBmdWxsXG4gKiBkZWZpbml0aW9uIChjYXRhbG9ncywgc2NoZW1hcywgdGFibGVzLCBzYW1wbGUgcXVlc3Rpb25zLCBwcm9tcHRzLFxuICogZXRjLikgYXMgZXhwb3J0ZWQgYnkgdGhlIHdvcmtzcGFjZSBleHBvcnQgZW5kcG9pbnQuXG4gKlxuICogVGhlIGJhc2UgU0RLIHNoYXBlIChgZGVzY3JpcHRpb25gLCBgc3BhY2VfaWRgLCBgdGl0bGVgLFxuICogYHdhcmVob3VzZV9pZGApIGNvdmVycyB0aGUgZGlyZWN0b3J5LWxpc3Rpbmcgc3VyZmFjZSAtIGVub3VnaCB0b1xuICogcm91dGUgYSBjaGF0LiBgc2VyaWFsaXplZF9zcGFjZWAgaXMgb3B0LWluIHNvIGNhbGxlcnMgdGhhdCBuZWVkXG4gKiB0aGUgZnVsbCBzcGFjZSBzY2hlbWEgKGUuZy4gdG8gc2VlZCBhIHN5c3RlbSBwcm9tcHQgb3IgdG8gc2hpcFxuICogdGhlIGRlZmluaXRpb24gdG8gYW4gYWdlbnQpIGNhbiBhdHRhY2ggaXQgd2l0aG91dCBhIHNlY29uZCB0eXBlLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVTcGFjZVNjaGVtYSA9IFNES0dlbmllU3BhY2VTY2hlbWEuZXh0ZW5kKHtcbiAgc2VyaWFsaXplZF9zcGFjZTogelxuICAgIC5zdHJpbmcoKVxuICAgIC5vcHRpb25hbCgpXG4gICAgLmRlc2NyaWJlKFxuICAgICAgXCJUaGUgY29udGVudHMgb2YgdGhlIEdlbmllIFNwYWNlIGluIHNlcmlhbGl6ZWQgc3RyaW5nIGZvcm0uIFRoaXMgZmllbGQgaXMgZXhjbHVkZWQgaW4gTGlzdCBHZW5pZSBzcGFjZXMgcmVzcG9uc2VzLiBUaGlzIGZpZWxkIHByb3ZpZGVzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIEpTT04gc3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGUgc3BhY2UncyBsYXlvdXQgYW5kIGNvbXBvbmVudHMuXCIsXG4gICAgKSxcbn0pO1xuLyoqIEdlbmllIHNwYWNlIG1ldGFkYXRhIHdpdGggdGhlIGlkZW50aWZpZXJzIHJlcXVpcmVkIGJ5IGNoYXQgY29uc3VtZXJzLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVTcGFjZSA9IHouaW5mZXI8dHlwZW9mIEdlbmllU3BhY2VTY2hlbWE+O1xuXG4vKiogUmVxdWVzdCBhY2NlcHRlZCBieSB0aGUgR0EgR2VuaWUgc3BhY2UgY3JlYXRlIGVuZHBvaW50LiAqL1xuZXhwb3J0IGNvbnN0IENyZWF0ZUdlbmllU3BhY2VSZXF1ZXN0U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICB3YXJlaG91c2VfaWQ6IHouc3RyaW5nKCkudHJpbSgpLm1pbigxKS5kZXNjcmliZShcIkFzc29jaWF0ZWQgU1FMIHdhcmVob3VzZSBJRC5cIiksXG4gICAgc2VyaWFsaXplZF9zcGFjZTogei5zdHJpbmcoKS50cmltKCkubWluKDEpLmRlc2NyaWJlKFwiU2VyaWFsaXplZCBHZW5pZSBzcGFjZSBkZWZpbml0aW9uLlwiKSxcbiAgICB0aXRsZTogei5zdHJpbmcoKS50cmltKCkubWluKDEpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJHZW5pZSBzcGFjZSB0aXRsZS5cIiksXG4gICAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkudHJpbSgpLm1pbigxKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiR2VuaWUgc3BhY2UgZGVzY3JpcHRpb24uXCIpLFxuICAgIHBhcmVudF9wYXRoOiB6LnN0cmluZygpLnRyaW0oKS5taW4oMSkub3B0aW9uYWwoKS5kZXNjcmliZShcIlBhcmVudCB3b3Jrc3BhY2UgZm9sZGVyLlwiKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIkdBIEdlbmllIHNwYWNlIGNyZWF0aW9uIHJlcXVlc3QuXCIpO1xuXG4vKiogR0EgR2VuaWUgc3BhY2UgY3JlYXRpb24gcmVxdWVzdC4gKi9cbmV4cG9ydCB0eXBlIENyZWF0ZUdlbmllU3BhY2VSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgQ3JlYXRlR2VuaWVTcGFjZVJlcXVlc3RTY2hlbWE+O1xuXG4vKiogRmVlZGJhY2sgcmVxdWVzdCBhY2NlcHRlZCBieSBHZW5pZSBjaGF0LW1vZGUgYW5kIGFnZW50LW1vZGUgbWVzc2FnZXMuICovXG5leHBvcnQgY29uc3QgR2VuaWVNZXNzYWdlRmVlZGJhY2tSZXF1ZXN0U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBzcGFjZV9pZDogei5zdHJpbmcoKS50cmltKCkubWluKDEpLmRlc2NyaWJlKFwiR2VuaWUgc3BhY2UgSUQuXCIpLFxuICAgIGNvbnZlcnNhdGlvbl9pZDogei5zdHJpbmcoKS50cmltKCkubWluKDEpLmRlc2NyaWJlKFwiR2VuaWUgY29udmVyc2F0aW9uIElELlwiKSxcbiAgICBtZXNzYWdlX2lkOiB6LnN0cmluZygpLnRyaW0oKS5taW4oMSkuZGVzY3JpYmUoXCJHZW5pZSBtZXNzYWdlIElELlwiKSxcbiAgICByYXRpbmc6IHouZW51bShbXCJQT1NJVElWRVwiLCBcIk5FR0FUSVZFXCIsIFwiTk9ORVwiXSkuZGVzY3JpYmUoXCJHZW5pZSBmZWVkYmFjayByYXRpbmcuXCIpLFxuICAgIGNvbW1lbnQ6IHouc3RyaW5nKCkudHJpbSgpLm1heCg1XzAwMCkub3B0aW9uYWwoKS5kZXNjcmliZShcIk9wdGlvbmFsIEdlbmllIGZlZWRiYWNrIGNvbW1lbnQuXCIpLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLmRlc2NyaWJlKFwiRmVlZGJhY2sgYXR0YWNoZWQgdG8gb25lIEdlbmllIGNvbnZlcnNhdGlvbiBtZXNzYWdlLlwiKTtcblxuLyoqIEZlZWRiYWNrIGF0dGFjaGVkIHRvIG9uZSBHZW5pZSBjb252ZXJzYXRpb24gbWVzc2FnZS4gKi9cbmV4cG9ydCB0eXBlIEdlbmllTWVzc2FnZUZlZWRiYWNrUmVxdWVzdCA9IHouaW5mZXI8dHlwZW9mIEdlbmllTWVzc2FnZUZlZWRiYWNrUmVxdWVzdFNjaGVtYT47XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB0ZXJtaW5hbCBoZWxwZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBUZXJtaW5hbCBHZW5pZSBtZXNzYWdlIHN0YXR1c2VzLiBUaGUgcG9sbGluZyBsb29wIGluIHRoZSBjaGF0XG4gKiBkcml2ZXIgc3RvcHMgYXMgc29vbiBhcyB0aGUgbGF0ZXN0IG1lc3NhZ2UgaGFzIG9uZSBvZiB0aGVzZVxuICogc3RhdHVzZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBURVJNSU5BTF9TVEFUVVNFUyA9IFtcIkNPTVBMRVRFRFwiLCBcIkZBSUxFRFwiLCBcIkNBTkNFTExFRFwiXSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IFRlcm1pbmFsU3RhdHVzU2NoZW1hID0gelxuICAuZW51bShURVJNSU5BTF9TVEFUVVNFUylcbiAgLmRlc2NyaWJlKFwiTWVzc2FnZSBzdGF0dXMgdGhhdCBlbmRzIGEgR2VuaWUgdHVybiBhbmQgcHJvZHVjZXMgYSBmaW5hbCByZXN1bHQgZXZlbnQuXCIpO1xuXG5leHBvcnQgdHlwZSBUZXJtaW5hbFN0YXR1cyA9IHouaW5mZXI8dHlwZW9mIFRlcm1pbmFsU3RhdHVzU2NoZW1hPjtcblxuLyoqIE5hcnJvdyBgTWVzc2FnZVN0YXR1cyB8IHVuZGVmaW5lZGAgdG8gYSB7QGxpbmsgVGVybWluYWxTdGF0dXN9LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVGVybWluYWxTdGF0dXMoczogTWVzc2FnZVN0YXR1cyB8IHVuZGVmaW5lZCk6IHMgaXMgVGVybWluYWxTdGF0dXMge1xuICByZXR1cm4gcyAhPT0gdW5kZWZpbmVkICYmIChURVJNSU5BTF9TVEFUVVNFUyBhcyByZWFkb25seSBzdHJpbmdbXSkuaW5jbHVkZXMocyk7XG59XG5cbi8qKlxuICogQ29udmVydCBhIHJhdyBHZW5pZSB3aXJlIHN0YXR1cyAoYEZFVENISU5HX01FVEFEQVRBYCxcbiAqIGBBU0tJTkdfQUlgLCBgRVhFQ1VUSU5HX1FVRVJZYCwgLi4uKSBpbnRvIGEgc2hvcnQsIHNlbnRlbmNlLWNhc2VkXG4gKiBsYWJlbCBzYWZlIHRvIGRyb3AgaW50byBhIFVJIHBpbGwuIEtub3duIHN0YXRlcyBnZXQgYSBjdXJhdGVkXG4gKiBsYWJlbDsgdW5rbm93biBzdGF0ZXMgZmFsbCBiYWNrIHRvIGBzdHJpbmdVdGlscy50b2tlbml6ZVdpdGhPcHRpb25zYFxuICogc28gbmV3IHN0YXRlcyBzdGlsbCByZW5kZXIgY2xlYW5seSB3aXRob3V0IGNvZGUgY2hhbmdlcy5cbiAqXG4gKiBQdXJlIChubyBOb2RlLW9ubHkgZGVwcyksIHNhZmUgZm9yIGJyb3dzZXIgYnVuZGxlcy4gQm90aCB0aGVcbiAqIEdlbmllIGFnZW50IChzZXJ2ZXIpIGFuZCBhbnkgVUkgdGhhdCBzdWJzY3JpYmVzIHRvIHN0YXR1cyBldmVudHNcbiAqIGNhbGwgdGhpcyBzbyBsYWJlbHMgc3RheSBpbiBsb2NrLXN0ZXAgYWNyb3NzIHRoZSB3aXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaHVtYW5pemVTdGF0dXMoc3RhdHVzOiBNZXNzYWdlU3RhdHVzKTogc3RyaW5nIHtcbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICBjYXNlIFwiRkVUQ0hJTkdfTUVUQURBVEFcIjpcbiAgICAgIHJldHVybiBcIkZldGNoaW5nIG1ldGFkYXRhXCI7XG4gICAgY2FzZSBcIkFTS0lOR19BSVwiOlxuICAgICAgcmV0dXJuIFwiQXNraW5nIEdlbmllXCI7XG4gICAgY2FzZSBcIkVYRUNVVElOR19RVUVSWVwiOlxuICAgICAgcmV0dXJuIFwiUnVubmluZyBTUUwgcXVlcnlcIjtcbiAgICBjYXNlIFwiRklMVEVSSU5HX0NPTlRFWFRcIjpcbiAgICAgIHJldHVybiBcIkZpbHRlcmluZyBjb250ZXh0XCI7XG4gICAgY2FzZSBcIlBFTkRJTkdfV0FSRUhPVVNFXCI6XG4gICAgICByZXR1cm4gXCJXYWl0aW5nIGZvciB3YXJlaG91c2VcIjtcbiAgICBjYXNlIFwiQ09NUExFVEVEXCI6XG4gICAgICByZXR1cm4gXCJDb21wbGV0ZWRcIjtcbiAgICBjYXNlIFwiRkFJTEVEXCI6XG4gICAgICByZXR1cm4gXCJGYWlsZWRcIjtcbiAgICBjYXNlIFwiQ0FOQ0VMTEVEXCI6XG4gICAgICByZXR1cm4gXCJDYW5jZWxsZWRcIjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFsuLi50b2tlbml6ZVdpdGhPcHRpb25zKHsgY2FwaXRhbGl6ZTogdHJ1ZSwgbG93ZXJDYXNlOiB0cnVlIH0sIHN0YXR1cyldLmpvaW4oXCIgXCIpO1xuICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGF0dGFjaG1lbnQgdHlwZSBoZWxwZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIEluc3BlY3QgYSB7QGxpbmsgR2VuaWVBdHRhY2htZW50fSBhbmQgcmV0dXJuIHRoZVxuICoge0BsaW5rIEF0dGFjaG1lbnRUeXBlfSBvZiBwYXlsb2FkIGl0IGNhcnJpZXMuIFJldHVybnMgdGhlIGZpcnN0XG4gKiBrbm93biBzdWItb2JqZWN0IHRoYXQncyBwcmVzZW50OyBpZiBub25lIG9mIHRoZSBrbm93biBvbmVzIGFyZVxuICogcG9wdWxhdGVkLCBmYWxscyBiYWNrIHRvIHRoZSBmaXJzdCBub24tYm9va2tlZXBpbmcga2V5XG4gKiAoZm9yd2FyZC1jb21wYXQgZm9yIHR5cGVzIHdlIGRvbid0IG1vZGVsIHlldCksIGVsc2UgYFwidW5rbm93blwiYC5cbiAqXG4gKiBIb25vcnMgYSBwcmUtc2V0IGBhdHRhY2htZW50X3R5cGVgIGlmIG9uZSBpcyBhbHJlYWR5IG9uIHRoZVxuICogdmFsdWUsIHNvIHRoaXMgaXMgaWRlbXBvdGVudCBhY3Jvc3MgcmUtZGV0ZWN0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRldGVjdEF0dGFjaG1lbnRUeXBlKGF0dDogR2VuaWVBdHRhY2htZW50KTogQXR0YWNobWVudFR5cGUge1xuICBpZiAoYXR0LmF0dGFjaG1lbnRfdHlwZSkgcmV0dXJuIGF0dC5hdHRhY2htZW50X3R5cGU7XG4gIGlmIChhdHQucXVlcnkpIHJldHVybiBcInF1ZXJ5XCI7XG4gIGlmIChhdHQudGV4dCkgcmV0dXJuIFwidGV4dFwiO1xuICBpZiAoYXR0LnN1Z2dlc3RlZF9xdWVzdGlvbnMpIHJldHVybiBcInN1Z2dlc3RlZF9xdWVzdGlvbnNcIjtcbiAgaWYgKGF0dC52aXopIHJldHVybiBcInZpelwiO1xuICBmb3IgKGNvbnN0IGsgb2YgT2JqZWN0LmtleXMoYXR0KSkge1xuICAgIGlmIChrICE9PSBcImF0dGFjaG1lbnRfaWRcIiAmJiBrICE9PSBcImF0dGFjaG1lbnRfdHlwZVwiKSByZXR1cm4gaztcbiAgfVxuICByZXR1cm4gXCJ1bmtub3duXCI7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gR2VuaWVDaGF0IGV2ZW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBXaGVyZSBvbiB0aGUgd2lyZSBhbiBldmVudCB3YXMgb2JzZXJ2ZWQuIFNwcmVhZCBpbnRvIGV2ZXJ5XG4gKiBhdHRhY2htZW50LXNjb3BlZCBldmVudCBwYXlsb2FkIHNvIHN1YnNjcmliZXJzIGNhbiByb3V0ZSwgbG9nLFxuICogb3IgY29ycmVsYXRlIHdpdGhvdXQgcmUtd2Fsa2luZyB0aGUgbWVzc2FnZS5cbiAqXG4gKiBGaWVsZHM6XG4gKiAgIC0gYHNwYWNlX2lkYDogdGhlIEdlbmllIHNwYWNlIHRoZSBjb252ZXJzYXRpb24gbGl2ZXMgaW4uXG4gKiAgIC0gYGNvbnZlcnNhdGlvbl9pZGA6IGNvbnZlcnNhdGlvbiBpZCBvbmNlIEdlbmllIGhhcyBhc3NpZ25lZCBvbmUuXG4gKiAgIC0gYG1lc3NhZ2VfaWRgOiBHZW5pZSBtZXNzYWdlIGlkIGZvciB0aGUgYWN0aXZlIHR1cm4uXG4gKiAgIC0gYGF0dGFjaG1lbnRfaWRgOiBhdHRhY2htZW50IHRoZSBldmVudCBjYW1lIGZyb20uIE9wdGlvbmFsXG4gKiAgICAgYmVjYXVzZSBHZW5pZSBzb21ldGltZXMgZW1pdHMgYW4gYW5vbnltb3VzIG1haW4tYW5zd2VyXG4gKiAgICAgYXR0YWNobWVudCB3aXRob3V0IGFuIGlkOyB0aG9zZSBzdGlsbCBnZXQgZXZlbnRzLCBqdXN0IHdpdGhcbiAqICAgICBgYXR0YWNobWVudF9pZGAgdW5kZWZpbmVkLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHNwYWNlX2lkOiB6LnN0cmluZygpLFxuICBjb252ZXJzYXRpb25faWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgbWVzc2FnZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBhdHRhY2htZW50X2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcbi8qKiBDb252ZXJzYXRpb24sIG1lc3NhZ2UsIGFuZCBhdHRhY2htZW50IGNvb3JkaW5hdGVzIHNoYXJlZCBieSBhdHRhY2htZW50IGV2ZW50cy4gKi9cbmV4cG9ydCB0eXBlIEdlbmllQ2hhdExvY2F0aW9uID0gei5pbmZlcjx0eXBlb2YgR2VuaWVDaGF0TG9jYXRpb25TY2hlbWE+O1xuXG4vKipcbiAqIExpZmVjeWNsZSBldmVudDogdGhlIHF1ZXN0aW9uIHRoaXMgdHVybiBpcyBhc2tpbmcgR2VuaWUuIEZpcmVzXG4gKiBvbmNlIHBlciBgZ2VuaWVFdmVudENoYXRgIGNhbGwsIHRoZSBmaXJzdCB0aW1lIHRoZSB1bmRlcmx5aW5nXG4gKiBgZ2VuaWVDaGF0YCBsb29wIHlpZWxkcyBhIGBHZW5pZU1lc3NhZ2VgLiBDYXJyaWVzIHRoZSBwcm9tcHRcbiAqIHRleHQgR2VuaWUgZWNob2VkIGJhY2sgb24gYG1lc3NhZ2UuY29udGVudGAgYW5kIHRoZSBhc3NpZ25lZFxuICogYG1lc3NhZ2VfaWRgIHNvIHN1YnNjcmliZXJzIGNhbiBncm91cCBldmVyeSBzdWJzZXF1ZW50IGV2ZW50XG4gKiBmb3IgdGhpcyB0dXJuIHVuZGVyIG9uZSBzdGFibGUga2V5LiBgY29udmVyc2F0aW9uX2lkYCBpc1xuICogcG9wdWxhdGVkIGZvciBib3RoIG9wZW5pbmcgYW5kIGZvbGxvdy11cCB0dXJucyAoR2VuaWUgYXNzaWduc1xuICogaXQgb24gYHN0YXJ0Q29udmVyc2F0aW9uYCkuXG4gKlxuICogRGVmZXJyZWQgKGluc3RlYWQgb2YgZmlyZWQgc3luY2hyb25vdXNseSBvbiBlbnRyeSkgc28gdGhlXG4gKiBgbWVzc2FnZV9pZGAgaXMgYXZhaWxhYmxlIHdoZW4gdGhlIGV2ZW50IGxhbmRzIC0gdGhhdCBvbmUgcm91bmRcbiAqIHRyaXAgY29zdHMgfjIwMG1zIGJ1dCBsZXRzIFVJcyByZW5kZXIgcXVlc3Rpb24gLyB0aGlua2luZyAvXG4gKiBxdWVyeSAvIHRleHQgYXMgYSBzaW5nbGUgZ3JvdXBlZCBibG9jayBwZXIgR2VuaWUgY2FsbCBpbnN0ZWFkXG4gKiBvZiBhIGZsYXQgc3RyZWFtLlxuICpcbiAqIGBhdHRhY2htZW50X2lkYCBpcyBpbnRlbnRpb25hbGx5IGFic2VudCAtIHF1ZXN0aW9ucyBhcmUgdHVyblxuICogc2NvcGVkLCBub3QgYXR0YWNobWVudCBzY29wZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBRdWVzdGlvbkV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEub21pdCh7XG4gIGF0dGFjaG1lbnRfaWQ6IHRydWUsXG59KS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJxdWVzdGlvblwiKSxcbiAgY29udGVudDogei5zdHJpbmcoKSxcbn0pO1xuLyoqIEluaXRpYWwgZXZlbnQgY2FycnlpbmcgdGhlIHVzZXIncyBxdWVzdGlvbiBhZnRlciBHZW5pZSBhc3NpZ25zIGEgbWVzc2FnZSBpZC4gKi9cbmV4cG9ydCB0eXBlIFF1ZXN0aW9uRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBRdWVzdGlvbkV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBMaWZlY3ljbGUgZXZlbnQ6IHJhdyBgR2VuaWVNZXNzYWdlYCBzbmFwc2hvdCBmb3IgdGhlIGFjdGl2ZVxuICogdHVybi4gRmlyZXMgb25jZSBwZXIgcG9sbCB5aWVsZC4gVGhlIGZ1bGwgbWVzc2FnZSBzaGFwZVxuICogKGluY2x1ZGluZyB0aGUgd2lkZW5lZCB0aG91Z2h0IC8gcmVnZW4gLyBhdHRhY2htZW50LXR5cGVcbiAqIGZpZWxkcykgaXMgZXhwb3NlZCBpbmxpbmUgYXMgYG1lc3NhZ2VgOyBjb25zdW1lcnMgbmFycm93IG9uXG4gKiBgZXZlbnQudHlwZSA9PT0gXCJtZXNzYWdlXCJgIGFuZCByZWFjaCBmb3IgYGV2ZW50Lm1lc3NhZ2VgLlxuICovXG5leHBvcnQgY29uc3QgTWVzc2FnZUV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEub21pdCh7XG4gIGF0dGFjaG1lbnRfaWQ6IHRydWUsXG59KS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJtZXNzYWdlXCIpLFxuICBtZXNzYWdlOiBHZW5pZU1lc3NhZ2VTY2hlbWEsXG59KTtcbi8qKiBSYXcgR2VuaWUgbWVzc2FnZSBzbmFwc2hvdCBlbWl0dGVkIG9uIGV2ZXJ5IHBvbGwgaXRlcmF0aW9uLiAqL1xuZXhwb3J0IHR5cGUgTWVzc2FnZUV2ZW50ID0gei5pbmZlcjx0eXBlb2YgTWVzc2FnZUV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBUb3AtbGV2ZWwgYG1lc3NhZ2Uuc3RhdHVzYCB0cmFuc2l0aW9uZWQuIEZpcmVzIGZvciBldmVyeVxuICogZGlzdGluY3Qgc3RhdHVzIHNlZW4gb24gdGhlIHdpcmUgKGUuZy4gYFNVQk1JVFRFRGAgLT5cbiAqIGBGSUxURVJJTkdfQ09OVEVYVGAgLT4gYEFTS0lOR19BSWAgLT4gYFBFTkRJTkdfV0FSRUhPVVNFYCAtPlxuICogYEFTS0lOR19BSWAgLT4gYENPTVBMRVRFRGApLlxuICovXG5leHBvcnQgY29uc3QgU3RhdHVzRXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5vbWl0KHtcbiAgYXR0YWNobWVudF9pZDogdHJ1ZSxcbn0pLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInN0YXR1c1wiKSxcbiAgc3RhdHVzOiBNZXNzYWdlU3RhdHVzU2NoZW1hLFxuICBwcmV2aW91c19zdGF0dXM6IE1lc3NhZ2VTdGF0dXNTY2hlbWEub3B0aW9uYWwoKSxcbn0pO1xuLyoqIE1lc3NhZ2Utc3RhdHVzIHRyYW5zaXRpb24sIGluY2x1ZGluZyB0aGUgcHJldmlvdXMgc3RhdHVzIHdoZW4gYXZhaWxhYmxlLiAqL1xuZXhwb3J0IHR5cGUgU3RhdHVzRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBTdGF0dXNFdmVudFNjaGVtYT47XG5cbi8qKlxuICogQSBuZXcgYXR0YWNobWVudCBzbG90IGFwcGVhcmVkIGluIGBtZXNzYWdlLmF0dGFjaG1lbnRzW11gLlxuICogRmlyZXMgZXhhY3RseSBvbmNlIHBlciBhdHRhY2htZW50IChtYXRjaGVkIGJ5IGBhdHRhY2htZW50X2lkYCxcbiAqIHBvc2l0aW9uYWxseSBmb3IgYW5vbnltb3VzIGF0dGFjaG1lbnRzKSB0aGUgZmlyc3QgdGltZSB3ZSBzZWVcbiAqIGl0LiBUaGUgc2xvdCdzIHBheWxvYWQga2luZCBsYW5kcyBpbiBgYXR0YWNobWVudF90eXBlYCBzbyB0aGVcbiAqIG91dGVyIGB0eXBlYCBkaXNjcmltaW5hdG9yIHN0YXlzIHVuYW1iaWd1b3VzLlxuICovXG5leHBvcnQgY29uc3QgQXR0YWNobWVudEV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwiYXR0YWNobWVudFwiKSxcbiAgaW5kZXg6IHoubnVtYmVyKCksXG4gIGF0dGFjaG1lbnRfdHlwZTogQXR0YWNobWVudFR5cGVTY2hlbWEsXG59KTtcbi8qKiBFdmVudCBlbWl0dGVkIHdoZW4gYSBuZXcgdHlwZWQgYXR0YWNobWVudCBhcHBlYXJzIG9uIHRoZSBtZXNzYWdlLiAqL1xuZXhwb3J0IHR5cGUgQXR0YWNobWVudEV2ZW50ID0gei5pbmZlcjx0eXBlb2YgQXR0YWNobWVudEV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBBIG5ldyByZWFzb25pbmcgc3RlcCBhcHBlYXJlZCBvbiBhIHF1ZXJ5IGF0dGFjaG1lbnRcbiAqIChgYXR0YWNobWVudHNbaV0ucXVlcnkudGhvdWdodHNbaV1gKS4gRGVkdXBsaWNhdGVkIHBlclxuICogYCh0aG91Z2h0X3R5cGUsIGNvbnRlbnQpYCB0dXBsZSB3aXRoaW4gYW4gYXR0YWNobWVudCBzb1xuICogc3Vic2NyaWJlcnMgZG9uJ3Qgc2VlIHRoZSBzYW1lIHRob3VnaHQgbXVsdGlwbGUgdGltZXMgLSBHZW5pZVxuICogc29tZXRpbWVzIG11dGF0ZXMgZXhpc3RpbmcgdGhvdWdodCBzbG90cyBpbiBwbGFjZSwgc28gdGhlIGRpZmZcbiAqIGlzIHZhbHVlLWJhc2VkIHJhdGhlciB0aGFuIHBvc2l0aW9uYWwuXG4gKi9cbmV4cG9ydCBjb25zdCBUaGlua2luZ0V2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwidGhpbmtpbmdcIiksXG4gIHRleHQ6IHouc3RyaW5nKCksXG4gIHRob3VnaHRfdHlwZTogR2VuaWVUaG91Z2h0VHlwZVNjaGVtYSxcbn0pO1xuLyoqIEluY3JlbWVudGFsIEdlbmllIHJlYXNvbmluZyBldmVudCBkZXJpdmVkIGZyb20gcXVlcnkgdGhvdWdodHMuICovXG5leHBvcnQgdHlwZSBUaGlua2luZ0V2ZW50ID0gei5pbmZlcjx0eXBlb2YgVGhpbmtpbmdFdmVudFNjaGVtYT47XG5cbi8qKlxuICogQSB0ZXh0LWF0dGFjaG1lbnQgYGNvbnRlbnRgIGZpZWxkIGFwcGVhcmVkIG9yIGNoYW5nZWRcbiAqIChgYXR0YWNobWVudHNbaV0udGV4dC5jb250ZW50YCkuIEZpcmVzIHdoZW5ldmVyIHRoZSBzbmFwc2hvdFxuICogdmFsdWUgZGlmZmVycyBmcm9tIHRoZSBwcmV2aW91cyBvbmUgZm9yIHRoZSBzYW1lIGF0dGFjaG1lbnQuXG4gKi9cbmV4cG9ydCBjb25zdCBUZXh0RXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJ0ZXh0XCIpLFxuICB0ZXh0OiB6LnN0cmluZygpLFxufSk7XG4vKiogTmFycmF0aXZlIGFuc3dlciBmcmFnbWVudCBlbWl0dGVkIGZyb20gYSBHZW5pZSB0ZXh0IGF0dGFjaG1lbnQuICovXG5leHBvcnQgdHlwZSBUZXh0RXZlbnQgPSB6LmluZmVyPHR5cGVvZiBUZXh0RXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIFNRTCB3YXMgZmluYWxpemVkIG9uIGEgcXVlcnkgYXR0YWNobWVudFxuICogKGBhdHRhY2htZW50c1tpXS5xdWVyeS5xdWVyeWApLiBGaXJlcyBvbmNlIHdoZW4gdGhlIFNRTCBzdHJpbmdcbiAqIHRyYW5zaXRpb25zIGZyb20gdW5kZWZpbmVkIHRvIGRlZmluZWQsIGFuZCBhZ2FpbiBpZiBHZW5pZSBldmVyXG4gKiByZXdyaXRlcyBpdC4gYHRpdGxlYCBhbmQgYGRlc2NyaXB0aW9uYCBhcmUgZGVub3JtYWxpc2VkIG9mZiB0aGVcbiAqIGF0dGFjaG1lbnQncyBgcXVlcnkudGl0bGVgIC8gYHF1ZXJ5LmRlc2NyaXB0aW9uYCBzbyBjb25zdW1lcnNcbiAqIGNhbiBsYWJlbCB0aGUgU1FMIHBpbGwgd2l0aG91dCByZS13YWxraW5nIHRoZSBtZXNzYWdlLlxuICovXG5leHBvcnQgY29uc3QgUXVlcnlFdmVudFNjaGVtYSA9IEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInF1ZXJ5XCIpLFxuICBzcWw6IHouc3RyaW5nKCksXG4gIHRpdGxlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcbi8qKiBGaW5hbGl6ZWQgb3IgcmV3cml0dGVuIFNRTCBlbWl0dGVkIGZvciBhIEdlbmllIHF1ZXJ5IGF0dGFjaG1lbnQuICovXG5leHBvcnQgdHlwZSBRdWVyeUV2ZW50ID0gei5pbmZlcjx0eXBlb2YgUXVlcnlFdmVudFNjaGVtYT47XG5cbi8qKlxuICogU1FMIHdhcyBzdWJtaXR0ZWQgdG8gYSBTUUwgd2FyZWhvdXNlIGFuZCBhIHN0YXRlbWVudCBpZCB3YXNcbiAqIGFzc2lnbmVkIChgYXR0YWNobWVudHNbaV0ucXVlcnkuc3RhdGVtZW50X2lkYCkuIEZpcmVzIHdoZW4gdGhlXG4gKiBzdGF0ZW1lbnQgaWQgdHJhbnNpdGlvbnMgZnJvbSB1bmRlZmluZWQgdG8gZGVmaW5lZCAtIHRoaXMgaXMgdGhlXG4gKiBwb2ludCBhdCB3aGljaCBgY2xpZW50LnN0YXRlbWVudEV4ZWN1dGlvbi5nZXRTdGF0ZW1lbnQoeyBzdGF0ZW1lbnRfaWQgfSlgXG4gKiBiZWNvbWVzIGEgdmFsaWQgY2FsbC5cbiAqL1xuZXhwb3J0IGNvbnN0IFN0YXRlbWVudEV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwic3RhdGVtZW50XCIpLFxuICBzdGF0ZW1lbnRfaWQ6IHouc3RyaW5nKCksXG59KTtcbi8qKiBFdmVudCBpbmRpY2F0aW5nIHRoYXQgYSBxdWVyeSByZWNlaXZlZCBhbiBleGVjdXRhYmxlIHN0YXRlbWVudCBpZC4gKi9cbmV4cG9ydCB0eXBlIFN0YXRlbWVudEV2ZW50ID0gei5pbmZlcjx0eXBlb2YgU3RhdGVtZW50RXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIFJvdyBjb3VudCBmb3IgYSBxdWVyeSBhdHRhY2htZW50J3MgcmVzdWx0IGNoYW5nZWRcbiAqIChgYXR0YWNobWVudHNbaV0ucXVlcnkucXVlcnlfcmVzdWx0X21ldGFkYXRhLnJvd19jb3VudGApLiBGaXJlc1xuICogb24gZXZlcnkgY2hhbmdlLCBpbmNsdWRpbmcgdGhlIGluaXRpYWwgYHVuZGVmaW5lZCAtPiAwYCBhbmQgdGhlXG4gKiBsYXRlciBgMCAtPiBOYCBvbmNlIHRoZSB3YXJlaG91c2UgZmluaXNoZXMgZXhlY3V0aW9uLlxuICovXG5leHBvcnQgY29uc3QgUm93c0V2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwicm93c1wiKSxcbiAgcm93X2NvdW50OiB6Lm51bWJlcigpLFxuICBwcmV2aW91c19yb3dfY291bnQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgc3RhdGVtZW50X2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcbi8qKiBSb3ctY291bnQgdHJhbnNpdGlvbiBmb3IgYSBHZW5pZSBxdWVyeSByZXN1bHQuICovXG5leHBvcnQgdHlwZSBSb3dzRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBSb3dzRXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIEdlbmllIHByb2R1Y2VkIGEgZm9sbG93LXVwIHN1Z2dlc3RlZC1xdWVzdGlvbnMgbGlzdFxuICogKGBhdHRhY2htZW50c1tpXS5zdWdnZXN0ZWRfcXVlc3Rpb25zLnF1ZXN0aW9uc1tdYCkuIEZpcmVzIG9uY2VcbiAqIHdoZW4gdGhlIGxpc3QgYXBwZWFycywgYW5kIGFnYWluIGlmIEdlbmllIHJld3JpdGVzIGl0LlxuICovXG5leHBvcnQgY29uc3QgU3VnZ2VzdGVkUXVlc3Rpb25zRXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJzdWdnZXN0ZWRfcXVlc3Rpb25zXCIpLFxuICBxdWVzdGlvbnM6IHouYXJyYXkoei5zdHJpbmcoKSksXG59KTtcbi8qKiBGb2xsb3ctdXAgcXVlc3Rpb24gbGlzdCBlbWl0dGVkIHdoZW4gR2VuaWUgYWRkcyBvciByZXdyaXRlcyBzdWdnZXN0aW9ucy4gKi9cbmV4cG9ydCB0eXBlIFN1Z2dlc3RlZFF1ZXN0aW9uc0V2ZW50ID0gei5pbmZlcjx0eXBlb2YgU3VnZ2VzdGVkUXVlc3Rpb25zRXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIFRoZSBhY3RpdmUgdHVybiByZWFjaGVkIGEgdGVybWluYWwgc3RhdHVzLiBBbHdheXMgZmlyZXMgb25jZVxuICogcGVyIHR1cm4gKGltbWVkaWF0ZWx5IGFmdGVyIHRoZSB0ZXJtaW5hbCBgbWVzc2FnZWAgZXZlbnQpLlxuICogQ2FycmllcyB0aGUgZmluYWwgYEdlbmllTWVzc2FnZWAgc25hcHNob3QgaW5saW5lIHNvIHN1YnNjcmliZXJzXG4gKiBkb24ndCBuZWVkIHRvIGtlZXAgdGhlaXIgb3duIGNvcHkgb2YgdGhlIGxhc3QgbWVzc2FnZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFJlc3VsdEV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEub21pdCh7XG4gIGF0dGFjaG1lbnRfaWQ6IHRydWUsXG59KS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJyZXN1bHRcIiksXG4gIHN0YXR1czogVGVybWluYWxTdGF0dXNTY2hlbWEsXG4gIG1lc3NhZ2U6IEdlbmllTWVzc2FnZVNjaGVtYSxcbn0pO1xuLyoqIEZpbmFsIGV2ZW50IGZvciBhIEdlbmllIHR1cm4sIGNhcnJ5aW5nIGl0cyB0ZXJtaW5hbCBzdGF0dXMgYW5kIG1lc3NhZ2Ugc25hcHNob3QuICovXG5leHBvcnQgdHlwZSBSZXN1bHRFdmVudCA9IHouaW5mZXI8dHlwZW9mIFJlc3VsdEV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBEaXNjcmltaW5hdGVkIHVuaW9uIHlpZWxkZWQgYnkgYGdlbmllRXZlbnRDaGF0YC4gRWFjaCB2YXJpYW50XG4gKiBpcyBhIHNpbmdsZSBmbGF0IG9iamVjdCB3aXRoIGB0eXBlYCBhcyB0aGUgZGlzY3JpbWluYXRvciBhbmRcbiAqIHRoZSBwYXlsb2FkIGZpZWxkcyBob2lzdGVkIGRpcmVjdGx5IHRvIHRoZSB0b3AgbGV2ZWwgLSBub1xuICogYHBheWxvYWRgIHdyYXBwZXIuIENvbnN1bWVycyBuYXJyb3cgb24gYHR5cGVgIGFuZCByZWFkIGZpZWxkc1xuICogaW5saW5lOlxuICpcbiAqIEBleGFtcGxlXG4gKiBmb3IgYXdhaXQgKGNvbnN0IGV2ZW50IG9mIGdlbmllRXZlbnRDaGF0KHNwYWNlSWQsIFwiVG9wIHN0b3Jlcz9cIikpIHtcbiAqICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gKiAgICAgY2FzZSBcInRoaW5raW5nXCI6XG4gKiAgICAgICBjb25zb2xlLmxvZyhldmVudC50aG91Z2h0X3R5cGUsIGV2ZW50LnRleHQpO1xuICogICAgICAgYnJlYWs7XG4gKiAgICAgY2FzZSBcInJlc3VsdFwiOlxuICogICAgICAgY29uc29sZS5sb2coXCJkb25lOlwiLCBldmVudC5zdGF0dXMpO1xuICogICAgICAgYnJlYWs7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBTdHJlYW0gb3JkZXIgcGVyIHR1cm46XG4gKlxuICogICAxLiBgcXVlc3Rpb25gLCBlbWl0dGVkIHdpdGggdGhlIGZpcnN0IGBtZXNzYWdlYCB5aWVsZCAoZGVmZXJyZWQgc29cbiAqICAgICAgdGhlIGFzc2lnbmVkIGBtZXNzYWdlX2lkYCBpcyBhdmFpbGFibGUpLCBjYXJyeWluZyB0aGUgcHJvbXB0XG4gKiAgICAgIHRoaXMgdHVybiBzZW50IHRvIEdlbmllLlxuICogICAyLiBgbWVzc2FnZWAgZm9yIGV2ZXJ5IHBvbGwgeWllbGQgKHJhdyBgR2VuaWVNZXNzYWdlYCBvblxuICogICAgICBgZXZlbnQubWVzc2FnZWApLlxuICogICAzLiBBbnkgZGVyaXZlZCBldmVudHMgdGhlIHNuYXBzaG90IGRpZmYgcHJvZHVjZWQgKGBzdGF0dXNgLFxuICogICAgICBgYXR0YWNobWVudGAsIGB0aGlua2luZ2AsIGB0ZXh0YCwgYHF1ZXJ5YCwgYHN0YXRlbWVudGAsXG4gKiAgICAgIGByb3dzYCwgYHN1Z2dlc3RlZF9xdWVzdGlvbnNgKSBpbiB0aGF0IGZpeGVkIG9yZGVyLlxuICogICA0LiBPbiB0aGUgdGVybWluYWwgc25hcHNob3QsIGEgZmluYWwgYHJlc3VsdGAgZXZlbnQuXG4gKlxuICogRXJyb3JzIHByb3BhZ2F0ZSB2aWEgdGhlIGdlbmVyYXRvciB0aHJvd2luZyAoYHRyeWAvYGNhdGNoYCB0aGVcbiAqIGBmb3IgYXdhaXRgKSwgbm90IHZpYSBhbiBgZXJyb3JgIHZhcmlhbnQgb24gdGhpcyB1bmlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllQ2hhdEV2ZW50U2NoZW1hID0gei5kaXNjcmltaW5hdGVkVW5pb24oXCJ0eXBlXCIsIFtcbiAgUXVlc3Rpb25FdmVudFNjaGVtYSxcbiAgTWVzc2FnZUV2ZW50U2NoZW1hLFxuICBTdGF0dXNFdmVudFNjaGVtYSxcbiAgQXR0YWNobWVudEV2ZW50U2NoZW1hLFxuICBUaGlua2luZ0V2ZW50U2NoZW1hLFxuICBUZXh0RXZlbnRTY2hlbWEsXG4gIFF1ZXJ5RXZlbnRTY2hlbWEsXG4gIFN0YXRlbWVudEV2ZW50U2NoZW1hLFxuICBSb3dzRXZlbnRTY2hlbWEsXG4gIFN1Z2dlc3RlZFF1ZXN0aW9uc0V2ZW50U2NoZW1hLFxuICBSZXN1bHRFdmVudFNjaGVtYSxcbl0pO1xuLyoqIE9yZGVyZWQgZXZlbnQgdW5pb24geWllbGRlZCBieSBgZ2VuaWVFdmVudENoYXRgOyBmYWlsdXJlcyBhcmUgdGhyb3duLCBub3QgZW1pdHRlZC4gKi9cbmV4cG9ydCB0eXBlIEdlbmllQ2hhdEV2ZW50ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVDaGF0RXZlbnRTY2hlbWE+O1xuXG4vKiogRGlzY3JpbWluYXRvciB0eXBlIGZvciB7QGxpbmsgR2VuaWVDaGF0RXZlbnR9LiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVDaGF0RXZlbnRUeXBlID0gR2VuaWVDaGF0RXZlbnRbXCJ0eXBlXCJdO1xuXG4vKipcbiAqIEZpZWxkIHNldCBmb3IgYSBnaXZlbiB7QGxpbmsgR2VuaWVDaGF0RXZlbnRUeXBlfSAtIHRoZSB2YXJpYW50XG4gKiB3aXRoIHRoZSBgdHlwZWAgZGlzY3JpbWluYXRvciBzdHJpcHBlZC4gVXNlZCBieSBkZXRlY3RvcnMgaW5cbiAqIGBldmVudC50c2Agc28gZWFjaCBkZXRlY3RvciByZXR1cm5zIGp1c3QgdGhlIHBheWxvYWQgZmllbGRzIGFuZFxuICogdGhlIG9yY2hlc3RyYXRvciBzdGFtcHMgYHR5cGVgIGF0IHlpZWxkIHRpbWUuXG4gKi9cbmV4cG9ydCB0eXBlIEdlbmllQ2hhdEV2ZW50RmllbGRzPFQgZXh0ZW5kcyBHZW5pZUNoYXRFdmVudFR5cGU+ID0gT21pdDxcbiAgRXh0cmFjdDxHZW5pZUNoYXRFdmVudCwgeyB0eXBlOiBUIH0+LFxuICBcInR5cGVcIlxuPjtcbiJdfQ==
|
package/package.json
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"typescript": "^5.9.3"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@dbx-tools/shared-core": "^0.9.
|
|
26
|
+
"@dbx-tools/shared-core": "^0.9.157",
|
|
27
27
|
"zod": "4.3.6"
|
|
28
28
|
},
|
|
29
29
|
"main": "./lib/index.js",
|
|
@@ -37,30 +37,10 @@
|
|
|
37
37
|
"types": "./lib/index.d.ts",
|
|
38
38
|
"default": "./lib/index.js"
|
|
39
39
|
},
|
|
40
|
-
"./agent-mode": {
|
|
41
|
-
"types": "./lib/src/agent-mode.d.ts",
|
|
42
|
-
"default": "./lib/src/agent-mode.js"
|
|
43
|
-
},
|
|
44
|
-
"./dashboards": {
|
|
45
|
-
"types": "./lib/src/dashboards.d.ts",
|
|
46
|
-
"default": "./lib/src/dashboards.js"
|
|
47
|
-
},
|
|
48
|
-
"./event": {
|
|
49
|
-
"types": "./lib/src/event.d.ts",
|
|
50
|
-
"default": "./lib/src/event.js"
|
|
51
|
-
},
|
|
52
|
-
"./genie-model": {
|
|
53
|
-
"types": "./lib/src/genie-model.d.ts",
|
|
54
|
-
"default": "./lib/src/genie-model.js"
|
|
55
|
-
},
|
|
56
|
-
"./*": {
|
|
57
|
-
"types": "./lib/src/*/index.d.ts",
|
|
58
|
-
"default": "./lib/src/*/index.js"
|
|
59
|
-
},
|
|
60
40
|
"./package.json": "./package.json"
|
|
61
41
|
}
|
|
62
42
|
},
|
|
63
|
-
"version": "0.9.
|
|
43
|
+
"version": "0.9.157",
|
|
64
44
|
"types": "./lib/index.d.ts",
|
|
65
45
|
"dbxToolsConfig": {
|
|
66
46
|
"tags": [
|
|
@@ -76,30 +56,10 @@
|
|
|
76
56
|
"types": "./lib/index.d.ts",
|
|
77
57
|
"default": "./lib/index.js"
|
|
78
58
|
},
|
|
79
|
-
"./agent-mode": {
|
|
80
|
-
"types": "./lib/src/agent-mode.d.ts",
|
|
81
|
-
"default": "./lib/src/agent-mode.js"
|
|
82
|
-
},
|
|
83
|
-
"./dashboards": {
|
|
84
|
-
"types": "./lib/src/dashboards.d.ts",
|
|
85
|
-
"default": "./lib/src/dashboards.js"
|
|
86
|
-
},
|
|
87
|
-
"./event": {
|
|
88
|
-
"types": "./lib/src/event.d.ts",
|
|
89
|
-
"default": "./lib/src/event.js"
|
|
90
|
-
},
|
|
91
|
-
"./genie-model": {
|
|
92
|
-
"types": "./lib/src/genie-model.d.ts",
|
|
93
|
-
"default": "./lib/src/genie-model.js"
|
|
94
|
-
},
|
|
95
|
-
"./*": {
|
|
96
|
-
"types": "./lib/src/*/index.d.ts",
|
|
97
|
-
"default": "./lib/src/*/index.js"
|
|
98
|
-
},
|
|
99
59
|
"./package.json": "./package.json"
|
|
100
60
|
},
|
|
101
61
|
"files": [
|
|
102
|
-
"index
|
|
62
|
+
"index*.ts",
|
|
103
63
|
"src",
|
|
104
64
|
"lib"
|
|
105
65
|
],
|
package/src/agent-mode.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import {
|
|
10
|
+
import { parseRecord, isRecord } from "@dbx-tools/shared-core";
|
|
11
11
|
import { z } from "zod";
|
|
12
12
|
|
|
13
13
|
import {
|
|
@@ -152,7 +152,7 @@ export function projectAgentModeMessage(
|
|
|
152
152
|
response: GenieAgentResponse,
|
|
153
153
|
items: GenieAgentOutputItem[],
|
|
154
154
|
): GenieMessage {
|
|
155
|
-
const errorValue =
|
|
155
|
+
const errorValue = isRecord(response.error) ? response.error : undefined;
|
|
156
156
|
const errorMessage =
|
|
157
157
|
typeof errorValue?.message === "string"
|
|
158
158
|
? errorValue.message
|
|
@@ -220,7 +220,7 @@ export function projectAgentModeConversation(
|
|
|
220
220
|
}
|
|
221
221
|
|
|
222
222
|
function itemMetadata(item: GenieAgentOutputItem): Record<string, unknown> | undefined {
|
|
223
|
-
return
|
|
223
|
+
return isRecord(item.metadata) ? item.metadata : undefined;
|
|
224
224
|
}
|
|
225
225
|
|
|
226
226
|
function itemMessageId(item: GenieAgentOutputItem): string | undefined {
|
|
@@ -271,7 +271,7 @@ function itemAttachments(item: GenieAgentOutputItem): GenieAttachment[] {
|
|
|
271
271
|
}
|
|
272
272
|
if (item.type === "function_call") {
|
|
273
273
|
const callId = item.call_id ?? item.id;
|
|
274
|
-
const argumentsValue =
|
|
274
|
+
const argumentsValue = parseRecord(item.arguments);
|
|
275
275
|
const query =
|
|
276
276
|
typeof argumentsValue?.sql === "string"
|
|
277
277
|
? argumentsValue.sql
|
|
@@ -295,7 +295,7 @@ function itemAttachments(item: GenieAgentOutputItem): GenieAttachment[] {
|
|
|
295
295
|
}
|
|
296
296
|
if (item.type === "function_call_output" && item.output !== undefined) {
|
|
297
297
|
const viz = itemMetadata(item)?.viz;
|
|
298
|
-
if (
|
|
298
|
+
if (isRecord(viz) && typeof viz.attachment_id === "string") {
|
|
299
299
|
return [
|
|
300
300
|
{
|
|
301
301
|
attachment_id: viz.attachment_id,
|
|
@@ -323,7 +323,7 @@ function itemAttachments(item: GenieAgentOutputItem): GenieAttachment[] {
|
|
|
323
323
|
}
|
|
324
324
|
|
|
325
325
|
function visualizationAttachmentId(metadata: unknown): string | undefined {
|
|
326
|
-
if (!
|
|
326
|
+
if (!isRecord(metadata) || !isRecord(metadata.viz)) return undefined;
|
|
327
327
|
return typeof metadata.viz.attachment_id === "string" ? metadata.viz.attachment_id : undefined;
|
|
328
328
|
}
|
|
329
329
|
|
package/src/event.ts
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
* @module
|
|
26
26
|
*/
|
|
27
27
|
|
|
28
|
-
import {
|
|
28
|
+
import { deepEqual } from "@dbx-tools/shared-core";
|
|
29
29
|
|
|
30
30
|
import {
|
|
31
31
|
detectAttachmentType,
|
|
@@ -245,7 +245,7 @@ export const detectSuggestedQuestions = eventDetector(
|
|
|
245
245
|
const curr = current.suggested_questions?.questions;
|
|
246
246
|
const prev = previous?.suggested_questions?.questions;
|
|
247
247
|
if (!curr || curr.length === 0) return;
|
|
248
|
-
if (
|
|
248
|
+
if (deepEqual(curr, prev)) return;
|
|
249
249
|
return { ...location, questions: curr };
|
|
250
250
|
},
|
|
251
251
|
);
|
package/src/genie-model.ts
CHANGED
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
* @module
|
|
39
39
|
*/
|
|
40
40
|
|
|
41
|
-
import {
|
|
41
|
+
import { tokenizeWithOptions } from "@dbx-tools/shared-core";
|
|
42
42
|
import { z } from "zod";
|
|
43
43
|
import * as dashboards from "./dashboards.ts";
|
|
44
44
|
|
|
@@ -369,9 +369,7 @@ export function humanizeStatus(status: MessageStatus): string {
|
|
|
369
369
|
case "CANCELLED":
|
|
370
370
|
return "Cancelled";
|
|
371
371
|
default:
|
|
372
|
-
return [
|
|
373
|
-
...stringUtils.tokenizeWithOptions({ capitalize: true, lowerCase: true }, status),
|
|
374
|
-
].join(" ");
|
|
372
|
+
return [...tokenizeWithOptions({ capitalize: true, lowerCase: true }, status)].join(" ");
|
|
375
373
|
}
|
|
376
374
|
}
|
|
377
375
|
|