@projectcor/maia-components 2.11.90-4 → 2.11.90-6
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/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +4 -6
- package/lib/components/atoms/MAIAInput/MAIAInput.js +3 -3
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +14 -5
- package/lib/constants/plannerSyncEvents.js +1 -2
- package/lib/context/cor-user.js +1 -60
- package/lib/hooks/useChatManager/useChatManager.js +3 -64
- package/lib/hooks/useChatMessages/useChatMessages.js +1 -14
- package/lib/hooks/useContextPinPopover.js +1 -8
- package/lib/services/maia/Orchestrator/orchestrator.js +1 -7
- package/lib/types/userType.d.js +1 -1
- package/lib/utils/hoursPlannerQuickActionType.js +65 -0
- package/package.json +1 -1
|
@@ -12,7 +12,7 @@ import { useT } from '../../../hooks/useT';
|
|
|
12
12
|
import { EVENTS, useEvent } from '../../../hooks/useEvent';
|
|
13
13
|
import { SCCAIHomeContainer, SCCAIHomeContent, SCCAIHomeContentInner, SCCAIHomeGradientTop, SCCAIHomeGradientBottom, SCCAIHomeHeader, SCCAIHomeGreeting, SCCAIHomeAgentInfoContainer, SCCAIHomeAgentInfo, SCCAIHomeProjectSummary, SCCAIHomeProjectSummaryContent, SCCAIHomeProjectSummaryTitle, SCCAIHomeProjectSummaryDescription, SCCAHWrapperSummaryProject, SCCAIHomeIntroduction, SCCAIHomeCreatedByContainer, SCCAIHomeCreatedByText, SCCAIHomeCreatedByTextName, SCCAIHomeIconContainer, SCCAIHomeLogoWrapper, SCCAIHomeMaiaHeaderStack, SCCAIHomeTitle, SCCAIHomeTitleBlock, SCCAIHomeSubtitle, SCCAIHomeDynamicSection, SCCAIHomeRecentContexts, SCCAIHomeRecentContextsList, SCCAIHomeRecentContextsSectionHeader, SCCAIHomeRecentContextsSectionTitle, SCCAIHomeRecentContextsSectionSubtitle, SCCAIHomeCollaboratorSection, SCCAIHomeRecentContextPill, SCCAIHomeRecentContextPillIcon, SCCAIHomeRecentContextPillText, SCCAIHomeRecentContextPillSkeleton, MAIA_HEADER_COLLABORATOR_HOME_CONTENT_WIDTH_PX } from './styles';
|
|
14
14
|
import { useGlobalContext } from '../../../context/global-context';
|
|
15
|
-
import { useUser, CORUserRole, isCollaboratorRole
|
|
15
|
+
import { useUser, CORUserRole, isCollaboratorRole } from '../../../context/cor-user';
|
|
16
16
|
import { useResizeListener } from '../../../hooks/useResize';
|
|
17
17
|
import { getContextMentionIcon } from '../../../utils/contextMentionIcons';
|
|
18
18
|
import { orchestratorHasHoursSubagent } from '../../../utils/orchestratorSubagents';
|
|
@@ -140,7 +140,7 @@ export var ChatAIHome = function ChatAIHome(_ref2) {
|
|
|
140
140
|
var hasPinnedContext = !!(task !== null && task !== void 0 && task.id || chipsProject !== null && chipsProject !== void 0 && chipsProject.projectId || client !== null && client !== void 0 && client.id || project !== null && project !== void 0 && project.id);
|
|
141
141
|
var isRecentContextsStep = isOrchestrator && !hasPinnedContext && !isPlannerHome;
|
|
142
142
|
var isHeaderCollaboratorHome = section === 'header' && isCollaboratorRole(user.role_id) && isRecentContextsStep;
|
|
143
|
-
var isHeaderCollaboratorHoursHome = isHeaderCollaboratorHome && orchestratorHasHoursSubagent(agent)
|
|
143
|
+
var isHeaderCollaboratorHoursHome = isHeaderCollaboratorHome && orchestratorHasHoursSubagent(agent);
|
|
144
144
|
var isContextHomeStep = isHeaderHome && hasPinnedContext;
|
|
145
145
|
|
|
146
146
|
// Contexto activo para derivar FAQs/acciones (paso 2). Preferimos el pill clickeado;
|
|
@@ -250,7 +250,9 @@ export var ChatAIHome = function ChatAIHome(_ref2) {
|
|
|
250
250
|
var showRecentContextsBlock = isRecentContextsStep && (recentContextsLoading || recentContexts.length > 0);
|
|
251
251
|
var shouldShowFaqs = !isRecentContextsStep && !isFuasOnlyHome && (isContextHomeStep || !isHeaderHome && faqsAccess) && !isMaiaker && (faqs.length > 0 || faqsAreLoading);
|
|
252
252
|
var shouldShowFuas = !isRecentContextsStep && !isMaiaker && (isContextHomeStep || !isHeaderHome) && (fuas.length > 0 || fuasAreLoading);
|
|
253
|
-
var
|
|
253
|
+
var shouldShowPlannerFuasLoading = isHeaderCollaboratorHoursHome && plannerFuasLoading && plannerFuas.length === 0;
|
|
254
|
+
var shouldShowPlannerFuasContent = isHeaderCollaboratorHoursHome && plannerFuas.length > 0;
|
|
255
|
+
var shouldShowPlannerFuas = shouldShowPlannerFuasLoading || shouldShowPlannerFuasContent;
|
|
254
256
|
var showProjectSummaryCard = showProjectSummary && (agent === null || agent === void 0 ? void 0 : agent.entity) === 'project';
|
|
255
257
|
var showFAQs = !!(showRecentContextsBlock || shouldShowFaqs || shouldShowFuas || shouldShowPlannerFuas || showProjectSummaryCard || isMaiaker);
|
|
256
258
|
var homeScrollableLayout = showFAQs;
|
|
@@ -539,7 +541,14 @@ export var ChatAIHome = function ChatAIHome(_ref2) {
|
|
|
539
541
|
}), showDynamicSection && /*#__PURE__*/_jsxs(SCCAIHomeDynamicSection, {
|
|
540
542
|
$grow: isMaiaker,
|
|
541
543
|
$alignStart: isHeaderCollaboratorHome,
|
|
542
|
-
children: [
|
|
544
|
+
children: [shouldShowPlannerFuasLoading ? /*#__PURE__*/_jsx(FrequentlyUsedActions, {
|
|
545
|
+
variant: "planner",
|
|
546
|
+
onStartChat: onStartChat,
|
|
547
|
+
agentId: agent === null || agent === void 0 ? void 0 : agent.id,
|
|
548
|
+
isScrolling: isScrolling,
|
|
549
|
+
actions: plannerFuas,
|
|
550
|
+
loading: plannerFuasLoading
|
|
551
|
+
}) : null, shouldShowPlannerFuasContent ? /*#__PURE__*/_jsxs(SCCAIHomeCollaboratorSection, {
|
|
543
552
|
children: [/*#__PURE__*/_jsx(SCCAIHomeRecentContextsSectionTitle, {
|
|
544
553
|
children: t('homeMenu.contextHome.hoursSection.title')
|
|
545
554
|
}), /*#__PURE__*/_jsx(FrequentlyUsedActions, {
|
|
@@ -575,4 +584,4 @@ export var ChatAIHome = function ChatAIHome(_ref2) {
|
|
|
575
584
|
})]
|
|
576
585
|
});
|
|
577
586
|
};
|
|
578
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsIlRvb2x0aXAiLCJMaXN0Q2hlY2tsaXN0IiwidXNlVCIsIkVWRU5UUyIsInVzZUV2ZW50IiwiU0NDQUlIb21lQ29udGFpbmVyIiwiU0NDQUlIb21lQ29udGVudCIsIlNDQ0FJSG9tZUNvbnRlbnRJbm5lciIsIlNDQ0FJSG9tZUdyYWRpZW50VG9wIiwiU0NDQUlIb21lR3JhZGllbnRCb3R0b20iLCJTQ0NBSUhvbWVIZWFkZXIiLCJTQ0NBSUhvbWVHcmVldGluZyIsIlNDQ0FJSG9tZUFnZW50SW5mb0NvbnRhaW5lciIsIlNDQ0FJSG9tZUFnZW50SW5mbyIsIlNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5IiwiU0NDQUlIb21lUHJvamVjdFN1bW1hcnlDb250ZW50IiwiU0NDQUlIb21lUHJvamVjdFN1bW1hcnlUaXRsZSIsIlNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24iLCJTQ0NBSFdyYXBwZXJTdW1tYXJ5UHJvamVjdCIsIlNDQ0FJSG9tZUludHJvZHVjdGlvbiIsIlNDQ0FJSG9tZUNyZWF0ZWRCeUNvbnRhaW5lciIsIlNDQ0FJSG9tZUNyZWF0ZWRCeVRleHQiLCJTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZSIsIlNDQ0FJSG9tZUljb25Db250YWluZXIiLCJTQ0NBSUhvbWVMb2dvV3JhcHBlciIsIlNDQ0FJSG9tZU1haWFIZWFkZXJTdGFjayIsIlNDQ0FJSG9tZVRpdGxlIiwiU0NDQUlIb21lVGl0bGVCbG9jayIsIlNDQ0FJSG9tZVN1YnRpdGxlIiwiU0NDQUlIb21lRHluYW1pY1NlY3Rpb24iLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0cyIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzTGlzdCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvbkhlYWRlciIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvblRpdGxlIiwiU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uU3VidGl0bGUiLCJTQ0NBSUhvbWVDb2xsYWJvcmF0b3JTZWN0aW9uIiwiU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGwiLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbEljb24iLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbFRleHQiLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbFNrZWxldG9uIiwiTUFJQV9IRUFERVJfQ09MTEFCT1JBVE9SX0hPTUVfQ09OVEVOVF9XSURUSF9QWCIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VVc2VyIiwiQ09SVXNlclJvbGUiLCJpc0NvbGxhYm9yYXRvclJvbGUiLCJoYXNQbGFubmVyVmlld0FjY2VzcyIsInVzZVJlc2l6ZUxpc3RlbmVyIiwiZ2V0Q29udGV4dE1lbnRpb25JY29uIiwib3JjaGVzdHJhdG9ySGFzSG91cnNTdWJhZ2VudCIsInZhbGlkYXRlSXNNYWlhIiwiaXNNYWlha2VyQWdlbnQiLCJGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMiLCJGcmVxdWVudGx5VXNlZEFjdGlvbnMiLCJ1c2VGcmVxdWVudGx5VXNlZEFjdGlvbnMiLCJ1c2VGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMiLCJ1c2VSZWNlbnRDb250ZXh0cyIsIk1BSUFJc29sb2dvIiwiVGVtcGxhdGVHcmFkaWVudEljb24iLCJDaGF0QUlIb21lTWFpYWtlciIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIkZyZXF1ZW50UXVlc3Rpb25zIiwiUkVDRU5UX0NPTlRFWFRTX0xJTUlUIiwiUkVDRU5UX0NPTlRFWFRfSUNPTl9DT0xPUiIsIlJFQ0VOVF9DT05URVhUX1NLRUxFVE9OX0tFWVMiLCJSZWNlbnRDb250ZXh0UGlsbCIsIl9yZWYiLCJjb250ZXh0IiwibGFiZWwiLCJvbkNsaWNrIiwiX3JlZiRmdWxsV2lkdGgiLCJmdWxsV2lkdGgiLCJ0ZXh0UmVmIiwiX3VzZVJlc2l6ZUxpc3RlbmVyIiwic2hvd1Rvb2x0aXAiLCJ0eXBlIiwiJGZ1bGxXaWR0aCIsImNoaWxkcmVuIiwiY29sb3IiLCJ3aWR0aCIsImhlaWdodCIsInVuZGVmaW5lZCIsInJlZiIsInRpdGxlIiwicGFyc2VOdW1lcmljSWQiLCJ2YWx1ZSIsInBhcnNlZCIsIk51bWJlciIsImlzRmluaXRlIiwiZ2V0QWxsb3dlZFJlY2VudENvbnRleHRUeXBlcyIsInJvbGVJZCIsIm5vcm1hbGl6ZWRSb2xlSWQiLCJDTEVWRUwiLCJESVJFQ1RPUiIsIlBST0pFQ1RfTUFOQUdFUiIsIlNldCIsIkNoYXRBSUhvbWUiLCJfcmVmMiIsImhhbmRsZXJzIiwib25TdGFydENoYXQiLCJleHBhbmRlZCIsImZsb2F0aW5nIiwiX3VzZVQiLCJ0IiwiaTE4biIsImV2ZW50IiwidXNlciIsIl91c2VHbG9iYWxDb250ZXh0IiwiYWdlbnQiLCJzZWN0aW9uIiwiY2xpZW50IiwicHJvamVjdCIsInRhc2siLCJjaGlwc1Byb2plY3QiLCJzZXRDbGllbnQiLCJzZXRQcm9qZWN0Iiwic2V0VGFzayIsInNldENoaXBzUHJvamVjdCIsImlzTUFJQSIsImZsb2F0aW5nQ3VzdG9tQ2VudGVyIiwibGFuZyIsImxhbmd1YWdlIiwic3VtbWFyeVByb2plY3RBY2Nlc3MiLCJ3aW5kb3ciLCJTdHJpbmciLCJNQUlBX1BST0pFQ1RfU1VNTUFSWV9GRUFUVVJFX0FDQ0VTUyIsInRvTG93ZXJDYXNlIiwibWFpYVByb2plY3RTdW1tYXJ5QWNjZXNzIiwiZmFxc0FjY2VzcyIsInNob3dQcm9qZWN0U3VtbWFyeSIsImlzTWFpYWtlciIsImlzSGVhZGVySG9tZSIsImlzUGxhbm5lckhvbWUiLCJpc09yY2hlc3RyYXRvciIsImFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMiLCJyb2xlX2lkIiwiX3VzZVJlY2VudENvbnRleHRzIiwiZW5hYmxlZCIsImxpbWl0IiwiZmV0Y2hlZFJlY2VudENvbnRleHRzIiwiY29udGV4dHMiLCJyZWNlbnRDb250ZXh0c0xvYWRpbmciLCJsb2FkaW5nIiwicmVjZW50Q29udGV4dHMiLCJmaWx0ZXIiLCJoYXMiLCJoYXNQaW5uZWRDb250ZXh0IiwiaWQiLCJwcm9qZWN0SWQiLCJpc1JlY2VudENvbnRleHRzU3RlcCIsImlzSGVhZGVyQ29sbGFib3JhdG9ySG9tZSIsImlzSGVhZGVyQ29sbGFib3JhdG9ySG91cnNIb21lIiwiaXNDb250ZXh0SG9tZVN0ZXAiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJzZWxlY3RlZENvbnRleHQiLCJzZXRTZWxlY3RlZENvbnRleHQiLCJhY3RpdmVDb250ZXh0IiwibmFtZSIsInByb2plY3ROYW1lIiwicGlubmVkRW50aXR5VHlwZSIsImlzVGFza0NvbnRleHQiLCJpc0Z1YXNPbmx5SG9tZSIsImZ1YXNTZWN0aW9uIiwicmVhbExpc3RzQWdlbnRJZCIsInJlYWxMaXN0c0VudGl0eVR5cGUiLCJfdXNlRnJlcXVlbnRseVVzZWRBY3QiLCJhZ2VudEZ1YXMiLCJhY3Rpb25zIiwiZnVhc0xvYWRpbmciLCJfdXNlRnJlcXVlbnRseVVzZWRBY3QyIiwicGxhbm5lckZ1YXMiLCJwbGFubmVyRnVhc0xvYWRpbmciLCJfdXNlRnJlcXVlbnRseUFza2VkUXUiLCJhZ2VudEZhcXMiLCJmYXFzIiwiZmFxc0xvYWRpbmciLCJoYW5kbGVHZXRGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMiLCJmYXFzRmV0Y2hSZWYiLCJfZmFxc0ZldGNoUmVmJGN1cnJlbnQiLCJjdXJyZW50S2V5IiwiY29uY2F0IiwibGFzdEtleSIsImN1cnJlbnQiLCJhZ2VudElkIiwiZW50aXR5VHlwZSIsImZ1YXMiLCJmYXFzQXJlTG9hZGluZyIsImZ1YXNBcmVMb2FkaW5nIiwic2hvd1JlY2VudENvbnRleHRzQmxvY2siLCJsZW5ndGgiLCJzaG91bGRTaG93RmFxcyIsInNob3VsZFNob3dGdWFzIiwic2hvdWxkU2hvd1BsYW5uZXJGdWFzIiwic2hvd1Byb2plY3RTdW1tYXJ5Q2FyZCIsImVudGl0eSIsInNob3dGQVFzIiwiaG9tZVNjcm9sbGFibGVMYXlvdXQiLCJzaG93RHluYW1pY1NlY3Rpb24iLCJjb250ZW50Q29udGFpbmVyUmVmIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJzaG93VG9wR3JhZGllbnQiLCJzZXRTaG93VG9wR3JhZGllbnQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInNob3dCb3R0b21HcmFkaWVudCIsInNldFNob3dCb3R0b21HcmFkaWVudCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaXNTY3JvbGxpbmciLCJzZXRJc1Njcm9sbGluZyIsInNjcm9sbFRpbWVvdXRSZWYiLCJncmVldGluZyIsImludHJvIiwiaW50cm9kdWN0aW9uIiwiQXJyYXkiLCJpc0FycmF5IiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwiaGFuZGxlU2VsZWN0UmVjZW50Q29udGV4dCIsIm9yZGVyIiwiX2NvbnRleHQkcGFyZW50cyIsIl9jb250ZXh0JHBhcmVudHMyIiwiX2NvbnRleHQkcGFyZW50czMiLCJfY29udGV4dCRwYXJlbnRzNCIsImFpQ2hhdENvbnRleHRTZWxlY3RlZCIsImNvbnRleHRJZCIsImNsaWVudElkIiwicGFyZW50cyIsImNsaWVudF9pZCIsInByb2plY3RfaWQiLCJjbGllbnROYW1lIiwiY2xpZW50X25hbWUiLCJwcm9qZWN0X25hbWUiLCJfb2JqZWN0U3ByZWFkIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiZG9jdW1lbnQiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJyZW5kZXJSZWNlbnRDb250ZXh0cyIsIiRmaXhlZENvbnRlbnRXaWR0aCIsIiRjb250ZW50R2FwIiwiJGZsdXNoUGlsbHMiLCJtYXAiLCJrZXkiLCJpbmRleCIsInRyaW0iLCJjaGVja1Njcm9sbCIsImNvbnRhaW5lciIsInNjcm9sbFRvcCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsImlzU2Nyb2xsYWJsZSIsImlzQXRUb3AiLCJpc0F0Qm90dG9tIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsImFkZEV2ZW50TGlzdGVuZXIiLCJ0aW1lb3V0SWQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicmVuZGVySGVhZGVyQ29udGVudCIsIl9hZ2VudCRjcmVhdGVkX2J5IiwiX2FnZW50JGNyZWF0ZWRfYnkyIiwiZW1vamkiLCJjcmVhdGVkX2J5IiwiaXNfZGVsZXRlZCIsIiRub0dhcCIsIiRhbGlnbiIsIiRzaXplIiwiZmlyc3ROYW1lIiwiJGNvbGxhYm9yYXRvckhvbWUiLCIkc2hvdyIsIiRpc0FnZW50VmlldyIsIiRmbG9hdGluZ0N1c3RvbUNlbnRlciIsIiRjZW50ZXJWZXJ0aWNhbGx5IiwiJGFsaWduU3RhcnQiLCIkaGVhZGVyQ29sbGFib3JhdG9ySG9tZSIsIiRnYXAiLCIkbWF4V2lkdGgiLCJwcm9qZWN0U3VtbWFyeSIsIiRncm93IiwidmFyaWFudCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlIb21lL0NoYXRBSUhvbWUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgTGlzdENoZWNrbGlzdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0xpc3RDaGVja2xpc3QnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcblxuaW1wb3J0IHsgb3B0aW9ucyB9IGZyb20gJy4uL0NoYXRBSU1vZGFsL2NvbnN0YW50cydcblxuaW1wb3J0IHtcbiAgU0NDQUlIb21lQ29udGFpbmVyLFxuICBTQ0NBSUhvbWVDb250ZW50LFxuICBTQ0NBSUhvbWVDb250ZW50SW5uZXIsXG4gIFNDQ0FJSG9tZUdyYWRpZW50VG9wLFxuICBTQ0NBSUhvbWVHcmFkaWVudEJvdHRvbSxcbiAgU0NDQUlIb21lSGVhZGVyLFxuICBTQ0NBSUhvbWVHcmVldGluZyxcbiAgU0NDQUlIb21lQWdlbnRJbmZvQ29udGFpbmVyLFxuICBTQ0NBSUhvbWVBZ2VudEluZm8sXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5LFxuICBTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeUNvbnRlbnQsXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5VGl0bGUsXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24sXG4gIFNDQ0FIV3JhcHBlclN1bW1hcnlQcm9qZWN0LFxuICBTQ0NBSUhvbWVJbnRyb2R1Y3Rpb24sXG4gIFNDQ0FJSG9tZUNyZWF0ZWRCeUNvbnRhaW5lcixcbiAgU0NDQUlIb21lQ3JlYXRlZEJ5VGV4dCxcbiAgU0NDQUlIb21lQ3JlYXRlZEJ5VGV4dE5hbWUsXG4gIFNDQ0FJSG9tZUljb25Db250YWluZXIsXG4gIFNDQ0FJSG9tZUxvZ29XcmFwcGVyLFxuICBTQ0NBSUhvbWVNYWlhSGVhZGVyU3RhY2ssXG4gIFNDQ0FJSG9tZVRpdGxlLFxuICBTQ0NBSUhvbWVUaXRsZUJsb2NrLFxuICBTQ0NBSUhvbWVTdWJ0aXRsZSxcbiAgU0NDQUlIb21lRHluYW1pY1NlY3Rpb24sXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRzLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c0xpc3QsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvbkhlYWRlcixcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uVGl0bGUsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvblN1YnRpdGxlLFxuICBTQ0NBSUhvbWVDb2xsYWJvcmF0b3JTZWN0aW9uLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbCxcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxJY29uLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbFRleHQsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsU2tlbGV0b24sXG4gIE1BSUFfSEVBREVSX0NPTExBQk9SQVRPUl9IT01FX0NPTlRFTlRfV0lEVEhfUFgsXG59IGZyb20gJy4vc3R5bGVzJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCwgdHlwZSBTZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVVzZXIsIENPUlVzZXJSb2xlLCBpc0NvbGxhYm9yYXRvclJvbGUsIGhhc1BsYW5uZXJWaWV3QWNjZXNzIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IHVzZVJlc2l6ZUxpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlUmVzaXplJ1xuaW1wb3J0IHsgZ2V0Q29udGV4dE1lbnRpb25JY29uIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY29udGV4dE1lbnRpb25JY29ucydcbmltcG9ydCB7IG9yY2hlc3RyYXRvckhhc0hvdXJzU3ViYWdlbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9vcmNoZXN0cmF0b3JTdWJhZ2VudHMnXG5pbXBvcnQgeyB2YWxpZGF0ZUlzTWFpYSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxzL3ZhbGlkYXRlSXNNYWlhJ1xuaW1wb3J0IHsgaXNNYWlha2VyQWdlbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9hZ2VudERpc3BsYXlOYW1lJ1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIH0gZnJvbSAnLi4vLi4vYXRvbXMvRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zJ1xuaW1wb3J0IHsgRnJlcXVlbnRseVVzZWRBY3Rpb25zIH0gZnJvbSAnLi4vLi4vYXRvbXMvRnJlcXVlbnRseVVzZWRBY3Rpb25zJ1xuaW1wb3J0IHsgdXNlRnJlcXVlbnRseVVzZWRBY3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRnJlcXVlbnRseVVzZWRBY3Rpb25zJ1xuaW1wb3J0IHsgdXNlRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zJ1xuaW1wb3J0IHsgdXNlUmVjZW50Q29udGV4dHMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VSZWNlbnRDb250ZXh0cydcbmltcG9ydCB0eXBlIHsgUmVjZW50Q29udGV4dEl0ZW0sIFJlY2VudENvbnRleHRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9SZWNlbnRDb250ZXh0cydcbmltcG9ydCB7IE1BSUFJc29sb2dvIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMvTUFJQUlzb2xvZ28nXG5pbXBvcnQgeyBUZW1wbGF0ZUdyYWRpZW50SWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL1RlbXBsYXRlR3JhZGllbnRJY29uJ1xuaW1wb3J0IHsgQ2hhdEFJSG9tZU1haWFrZXIgfSBmcm9tICcuL0NoYXRBSUhvbWVNYWlha2VyJ1xuXG50eXBlIENoYXRBSUhvbWVQcm9wcyA9IHtcbiAgb25TdGFydENoYXQ6IChcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdIHwgbnVsbCxcbiAgICBmYXFJZD86IHN0cmluZyxcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICBtZW50aW9ucz86IG51bGwsXG4gICAgZnVhSWQ/OiBzdHJpbmdcbiAgKSA9PiB2b2lkXG4gIGhhbmRsZXJzOiBSZWNvcmQ8b3B0aW9ucywgKCkgPT4gdm9pZD5cbiAgZXhwYW5kZWQ/OiBib29sZWFuXG4gIGZsb2F0aW5nPzogYm9vbGVhblxufVxuXG5leHBvcnQgZW51bSBGcmVxdWVudFF1ZXN0aW9ucyB7XG4gIHJlbnRhYmlsaWRhZF9wcm95ZWN0byA9ICdyZW50YWJpbGlkYWRfcHJveWVjdG8nLFxuICBhdmFuY2VfcHJveWVjdG8gPSAnYXZhbmNlX3Byb3llY3RvJyxcbn1cblxuY29uc3QgUkVDRU5UX0NPTlRFWFRTX0xJTUlUID0gOVxuY29uc3QgUkVDRU5UX0NPTlRFWFRfSUNPTl9DT0xPUiA9ICcjNEQ0RDREJ1xuY29uc3QgUkVDRU5UX0NPTlRFWFRfU0tFTEVUT05fS0VZUyA9IFtcbiAgJ3JlY2VudC1jb250ZXh0LXNrZWxldG9uLTEnLFxuICAncmVjZW50LWNvbnRleHQtc2tlbGV0b24tMicsXG4gICdyZWNlbnQtY29udGV4dC1za2VsZXRvbi0zJyxcbl1cblxuY29uc3QgUmVjZW50Q29udGV4dFBpbGwgPSAoe1xuICBjb250ZXh0LFxuICBsYWJlbCxcbiAgb25DbGljayxcbiAgZnVsbFdpZHRoID0gZmFsc2UsXG59OiB7XG4gIGNvbnRleHQ6IFJlY2VudENvbnRleHRJdGVtXG4gIGxhYmVsOiBzdHJpbmdcbiAgb25DbGljazogKCkgPT4gdm9pZFxuICBmdWxsV2lkdGg/OiBib29sZWFuXG59KSA9PiB7XG4gIGNvbnN0IHRleHRSZWYgPSB1c2VSZWY8SFRNTFNwYW5FbGVtZW50PihudWxsKVxuICBjb25zdCB7IHNob3dUb29sdGlwIH0gPSB1c2VSZXNpemVMaXN0ZW5lcih0ZXh0UmVmLCBbbGFiZWxdKVxuXG4gIHJldHVybiAoXG4gICAgPFNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtvbkNsaWNrfSAkZnVsbFdpZHRoPXtmdWxsV2lkdGh9PlxuICAgICAgPFNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsSWNvbj5cbiAgICAgICAge2NvbnRleHQudHlwZSA9PT0gJ3Rhc2snID8gKFxuICAgICAgICAgIDxMaXN0Q2hlY2tsaXN0IGNvbG9yPXtSRUNFTlRfQ09OVEVYVF9JQ09OX0NPTE9SfSB3aWR0aD1cIjE0cHhcIiBoZWlnaHQ9XCIxNHB4XCIgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBnZXRDb250ZXh0TWVudGlvbkljb24oY29udGV4dC50eXBlLCBSRUNFTlRfQ09OVEVYVF9JQ09OX0NPTE9SLCB1bmRlZmluZWQsIDE0KVxuICAgICAgICApfVxuICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbEljb24+XG4gICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxUZXh0IHJlZj17dGV4dFJlZn0+XG4gICAgICAgIHtzaG93VG9vbHRpcCA/IChcbiAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17bGFiZWx9PlxuICAgICAgICAgICAgPHNwYW4+e2xhYmVsfTwvc3Bhbj5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgbGFiZWxcbiAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxUZXh0PlxuICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGw+XG4gIClcbn1cblxuY29uc3QgcGFyc2VOdW1lcmljSWQgPSAodmFsdWU/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsKTogbnVtYmVyIHwgbnVsbCA9PiB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykgcmV0dXJuIG51bGxcbiAgY29uc3QgcGFyc2VkID0gTnVtYmVyKHZhbHVlKVxuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiBudWxsXG59XG5cbmNvbnN0IGdldEFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMgPSAocm9sZUlkPzogQ09SVXNlclJvbGUgfCBudW1iZXIgfCBzdHJpbmcpOiBTZXQ8UmVjZW50Q29udGV4dFR5cGU+ID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZFJvbGVJZCA9IE51bWJlcihyb2xlSWQpXG4gIGlmIChcbiAgICBub3JtYWxpemVkUm9sZUlkID09PSBDT1JVc2VyUm9sZS5DTEVWRUwgfHxcbiAgICBub3JtYWxpemVkUm9sZUlkID09PSBDT1JVc2VyUm9sZS5ESVJFQ1RPUiB8fFxuICAgIG5vcm1hbGl6ZWRSb2xlSWQgPT09IENPUlVzZXJSb2xlLlBST0pFQ1RfTUFOQUdFUlxuICApIHtcbiAgICByZXR1cm4gbmV3IFNldChbJ2NsaWVudCcsICdwcm9qZWN0JywgJ3Rhc2snXSlcbiAgfVxuICBpZiAoaXNDb2xsYWJvcmF0b3JSb2xlKHJvbGVJZCkpIHtcbiAgICByZXR1cm4gbmV3IFNldChbJ3Rhc2snXSlcbiAgfVxuICByZXR1cm4gbmV3IFNldCgpXG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUlIb21lID0gKHsgaGFuZGxlcnMsIG9uU3RhcnRDaGF0LCBleHBhbmRlZCwgZmxvYXRpbmcgfTogQ2hhdEFJSG9tZVByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCwgaTE4biB9ID0gdXNlVCgpXG4gIGNvbnN0IGV2ZW50ID0gdXNlRXZlbnQoKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHsgYWdlbnQsIHNlY3Rpb24sIGNsaWVudCwgcHJvamVjdCwgdGFzaywgY2hpcHNQcm9qZWN0LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2ssIHNldENoaXBzUHJvamVjdCB9ID1cbiAgICB1c2VHbG9iYWxDb250ZXh0KClcblxuICBjb25zdCBpc01BSUEgPSB2YWxpZGF0ZUlzTWFpYShhZ2VudCBhcyBBZ2VudClcbiAgY29uc3QgZmxvYXRpbmdDdXN0b21DZW50ZXIgPSAhIShmbG9hdGluZyAmJiBhZ2VudD8udHlwZSA9PT0gJ2N1c3RvbScpXG4gIGNvbnN0IGxhbmcgPSBpMThuLmxhbmd1YWdlID09PSAnYnInID8gJ3B0JyA6IGkxOG4ubGFuZ3VhZ2VcblxuICBjb25zdCBzdW1tYXJ5UHJvamVjdEFjY2VzcyA9XG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAoU3RyaW5nKHdpbmRvdy5NQUlBX1BST0pFQ1RfU1VNTUFSWV9GRUFUVVJFX0FDQ0VTUykudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnIHx8XG4gICAgICBTdHJpbmcod2luZG93Lm1haWFQcm9qZWN0U3VtbWFyeUFjY2VzcykudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnKVxuICBjb25zdCBmYXFzQWNjZXNzID0gdHJ1ZVxuICBjb25zdCBzaG93UHJvamVjdFN1bW1hcnkgPSAhIShpc01BSUEgJiYgc3VtbWFyeVByb2plY3RBY2Nlc3MpXG4gIC8vIEVsIG9yY2hlc3RyYXRvciAodHlwZSA9PT0gJ29yY2hlc3RyYXRvcicpIG11ZXN0cmEgRkFRcy9GVUFzIGFncmVnYWRhcyBkZSBzdXMgc3ViYWdlbnRlcyxcbiAgLy8gYXPDrSBxdWUgTk8gc2UgdHJhdGEgY29tbyBtYWlha2VyIGFjw6EuXG4gIGNvbnN0IGlzTWFpYWtlciA9IGlzTWFpYWtlckFnZW50KGFnZW50KVxuICBjb25zdCBpc0hlYWRlckhvbWUgPSBpc01BSUEgJiYgc2VjdGlvbiA9PT0gJ2hlYWRlcicgJiYgYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InXG4gIC8vIFBsYW5uZXI6IGhvbWUgZGUgRlVBcyBzaW4gc2VsZWN0b3IgZGUgY29udGV4dG9zIChtaXNtbyBwYXRyw7NuIHF1ZSB0YXNrLCBjb24gc2VjdGlvbiBBUEkgYHBsYW5uZXJgKS5cbiAgY29uc3QgaXNQbGFubmVySG9tZSA9IHNlY3Rpb24gPT09ICdwbGFubmVyJ1xuICAvLyBFbCBvcmNoZXN0cmF0b3IgdXNhIGVsIGhvbWUgZW4gMiBwYXNvcyAoY29udGV4dG9zIHJlY2llbnRlcyDihpQgRkFRcy9GVUFzKSBlbiBoZWFkZXIvcHJvamVjdC9jbGllbnQvdGFzay5cbiAgLy8gRW4gcHJvamVjdC9jbGllbnQvdGFzaywgYWwgbGltcGlhciBlbCBjb250ZXh0byAocC4gZWouIGFsIHJlc2VsZWNjaW9uYXIgTUFJQVxuICAvLyBkZXNkZSBlbCBsaXN0YWRvIGRlIGFnZW50ZXMpIHNlIG11ZXN0cmEgZWwgc2VsZWN0b3IgZGUgY29udGV4dG9zIHJlY2llbnRlcyBlbiBsdWdhciBkZSB1biBob21lIHZhY8Otby5cbiAgY29uc3QgaXNPcmNoZXN0cmF0b3IgPSBpc01BSUEgJiYgYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InXG4gIGNvbnN0IGFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMgPSB1c2VNZW1vKCgpID0+IGdldEFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXModXNlci5yb2xlX2lkKSwgW3VzZXIucm9sZV9pZF0pXG4gIGNvbnN0IHsgY29udGV4dHM6IGZldGNoZWRSZWNlbnRDb250ZXh0cywgbG9hZGluZzogcmVjZW50Q29udGV4dHNMb2FkaW5nIH0gPSB1c2VSZWNlbnRDb250ZXh0cyh7XG4gICAgZW5hYmxlZDogaXNPcmNoZXN0cmF0b3IgJiYgIWlzUGxhbm5lckhvbWUsXG4gICAgbGltaXQ6IFJFQ0VOVF9DT05URVhUU19MSU1JVCxcbiAgfSlcbiAgY29uc3QgcmVjZW50Q29udGV4dHMgPSB1c2VNZW1vKFxuICAgICgpID0+IGZldGNoZWRSZWNlbnRDb250ZXh0cy5maWx0ZXIoY29udGV4dCA9PiBhbGxvd2VkUmVjZW50Q29udGV4dFR5cGVzLmhhcyhjb250ZXh0LnR5cGUpKSxcbiAgICBbZmV0Y2hlZFJlY2VudENvbnRleHRzLCBhbGxvd2VkUmVjZW50Q29udGV4dFR5cGVzXVxuICApXG5cbiAgLy8gSG9tZSBkZWwgb3JjaGVzdHJhdG9yIGVuIDIgcGFzb3M6XG4gIC8vICAtIFBhc28gMSAoc2luIGNvbnRleHRvIHBpbmVhZG8pOiBzZSBtdWVzdHJhbiBzb2xvIGxvcyBjb250ZXh0b3MgcmVjaWVudGVzLlxuICAvLyAgLSBQYXNvIDIgKGNvbnRleHRvIHBpbmVhZG8pOiBzZSBtdWVzdHJhbiBsYXMgRkFRcy9hY2Npb25lcyBxdWUgcmVmZXJlbmNpYW4gZXNlIGNvbnRleHRvLlxuICAvLyBWb2x2ZXIgYWwgcGFzbyAxID0gcXVpdGFyIGVsIGNoaXAgKGxpbXBpYSBlbCBjb250ZXh0byBnbG9iYWwpLlxuICAvLyBQbGFubmVyIG5vIHVzYSBlc3RlIGZsdWpvOiBzaWVtcHJlIGhvbWUgZGUgRlVBcy5cbiAgY29uc3QgaGFzUGlubmVkQ29udGV4dCA9ICEhKHRhc2s/LmlkIHx8IGNoaXBzUHJvamVjdD8ucHJvamVjdElkIHx8IGNsaWVudD8uaWQgfHwgcHJvamVjdD8uaWQpXG4gIGNvbnN0IGlzUmVjZW50Q29udGV4dHNTdGVwID0gaXNPcmNoZXN0cmF0b3IgJiYgIWhhc1Bpbm5lZENvbnRleHQgJiYgIWlzUGxhbm5lckhvbWVcbiAgY29uc3QgaXNIZWFkZXJDb2xsYWJvcmF0b3JIb21lID0gc2VjdGlvbiA9PT0gJ2hlYWRlcicgJiYgaXNDb2xsYWJvcmF0b3JSb2xlKHVzZXIucm9sZV9pZCkgJiYgaXNSZWNlbnRDb250ZXh0c1N0ZXBcbiAgY29uc3QgaXNIZWFkZXJDb2xsYWJvcmF0b3JIb3Vyc0hvbWUgPVxuICAgIGlzSGVhZGVyQ29sbGFib3JhdG9ySG9tZSAmJiBvcmNoZXN0cmF0b3JIYXNIb3Vyc1N1YmFnZW50KGFnZW50KSAmJiBoYXNQbGFubmVyVmlld0FjY2Vzcyh1c2VyKVxuICBjb25zdCBpc0NvbnRleHRIb21lU3RlcCA9IGlzSGVhZGVySG9tZSAmJiBoYXNQaW5uZWRDb250ZXh0XG5cbiAgLy8gQ29udGV4dG8gYWN0aXZvIHBhcmEgZGVyaXZhciBGQVFzL2FjY2lvbmVzIChwYXNvIDIpLiBQcmVmZXJpbW9zIGVsIHBpbGwgY2xpY2tlYWRvO1xuICAvLyBzaSBubywgbG8gcmVjb25zdHJ1aW1vcyBkZXNkZSBlbCBjb250ZXh0byBnbG9iYWwuXG4gIGNvbnN0IFtzZWxlY3RlZENvbnRleHQsIHNldFNlbGVjdGVkQ29udGV4dF0gPSB1c2VTdGF0ZTxSZWNlbnRDb250ZXh0SXRlbSB8IG51bGw+KG51bGwpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFoYXNQaW5uZWRDb250ZXh0KSBzZXRTZWxlY3RlZENvbnRleHQobnVsbClcbiAgfSwgW2hhc1Bpbm5lZENvbnRleHRdKVxuXG4gIGNvbnN0IGFjdGl2ZUNvbnRleHQgPSB1c2VNZW1vPFJlY2VudENvbnRleHRJdGVtIHwgbnVsbD4oKCkgPT4ge1xuICAgIGlmIChzZWxlY3RlZENvbnRleHQpIHJldHVybiBzZWxlY3RlZENvbnRleHRcbiAgICBpZiAoIWlzQ29udGV4dEhvbWVTdGVwKSByZXR1cm4gbnVsbFxuICAgIGlmICh0YXNrPy5pZCkgcmV0dXJuIHsgdHlwZTogJ3Rhc2snLCBpZDogdGFzay5pZCwgbmFtZTogdGFzay5uYW1lIH1cbiAgICBpZiAoY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQpIHJldHVybiB7IHR5cGU6ICdwcm9qZWN0JywgaWQ6IGNoaXBzUHJvamVjdC5wcm9qZWN0SWQsIG5hbWU6IGNoaXBzUHJvamVjdC5wcm9qZWN0TmFtZSB9XG4gICAgaWYgKGNsaWVudD8uaWQpIHJldHVybiB7IHR5cGU6ICdjbGllbnQnLCBpZDogY2xpZW50LmlkLCBuYW1lOiBjbGllbnQubmFtZSB9XG4gICAgcmV0dXJuIG51bGxcbiAgfSwgW1xuICAgIHNlbGVjdGVkQ29udGV4dCxcbiAgICBpc0NvbnRleHRIb21lU3RlcCxcbiAgICB0YXNrPy5pZCxcbiAgICB0YXNrPy5uYW1lLFxuICAgIGNoaXBzUHJvamVjdD8ucHJvamVjdElkLFxuICAgIGNoaXBzUHJvamVjdD8ucHJvamVjdE5hbWUsXG4gICAgY2xpZW50Py5pZCxcbiAgICBjbGllbnQ/Lm5hbWUsXG4gIF0pXG5cbiAgLy8gZW50aXR5X3R5cGUgZGVsIGNvbnRleHRvIHBpbmVhZG8gKHByb2plY3QvY2xpZW50L3Rhc2spLCB0b21hZG8gZGVsIGNvbnRleHRvIGdsb2JhbC5cbiAgLy8gQXBsaWNhIHRhbnRvIGFsIGFicmlyIE1BSUEgZGVzZGUgdW5hIHNlY2Npw7NuIGVzcGVjw61maWNhIGNvbW8gYWwgY2FtYmlhciBkZSBjb252ZXJzYWNpw7NuLlxuICBjb25zdCBwaW5uZWRFbnRpdHlUeXBlID0gdXNlTWVtbzxSZWNlbnRDb250ZXh0VHlwZSB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICAgIGlmICh0YXNrPy5pZCkgcmV0dXJuICd0YXNrJ1xuICAgIGlmIChjaGlwc1Byb2plY3Q/LnByb2plY3RJZCB8fCBwcm9qZWN0Py5pZCkgcmV0dXJuICdwcm9qZWN0J1xuICAgIGlmIChjbGllbnQ/LmlkKSByZXR1cm4gJ2NsaWVudCdcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH0sIFt0YXNrPy5pZCwgY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQsIHByb2plY3Q/LmlkLCBjbGllbnQ/LmlkXSlcblxuICAvLyBFbiBwcm9qZWN0L2NsaWVudC90YXNrLCBjb24gZWwgcmVpbmljaW8gZGUgY29udGV4dG8gZWwgdXN1YXJpbyBwdWVkZSBwaW5lYXIgdW4gY29udGV4dG8gZGUgdW5cbiAgLy8gdGlwbyBkaXN0aW50byBhbCBkZSBsYSBzZWNjacOzbiBkZSBhcGVydHVyYSAocC4gZWouIHVuIHByb2plY3QgYWJyaWVuZG8gZGVzZGUgdW5hIHRhcmVhLCBvXG4gIC8vIHZpY2V2ZXJzYSkuIExhcyBGQVFzL0ZVQXMgZGViZW4gZGVwZW5kZXIgZGVsIGNvbnRleHRvIHJlYWxtZW50ZSBwaW5lYWRvLCBubyBkZSBsYSBzZWNjacOzbiBmaWphLlxuICAvLyBFbiBlbCBoZWFkZXIgc2UgbWFudGllbmUgbGEgbMOzZ2ljYSBleGlzdGVudGUgKGJhc2FkYSBlbiBlbCBjb250ZXh0byBzZWxlY2Npb25hZG8gLyBhY3RpdmVDb250ZXh0KS5cbiAgY29uc3QgaXNUYXNrQ29udGV4dCA9ICFpc0hlYWRlckhvbWUgJiYgcGlubmVkRW50aXR5VHlwZSA9PT0gJ3Rhc2snXG4gIC8vIFNvbG8gRlVBcyAoc2luIEZBUXMpOiB0YXNrIHBhbmVsIG8gcGxhbm5lci5cbiAgY29uc3QgaXNGdWFzT25seUhvbWUgPSBpc1BsYW5uZXJIb21lIHx8IGlzVGFza0NvbnRleHRcbiAgLy8gYHNlY3Rpb25gIHF1ZSBzZSBjb25zdWx0YSBwYXJhIGxhcyBGVUFzOiBlbiBuby1oZWFkZXIgc2lndWUgZWwgdGlwbyBkZSBjb250ZXh0byBwaW5lYWRvLlxuICAvLyBFbiBwbGFubmVyIHNlIGZ1ZXJ6YSBsYSBzZWN0aW9uIEFQSSBgcGxhbm5lcmAuXG4gIGNvbnN0IGZ1YXNTZWN0aW9uOiBTZWN0aW9uID0gKCgpID0+IHtcbiAgICBpZiAoaXNQbGFubmVySG9tZSkgcmV0dXJuICdwbGFubmVyJ1xuICAgIGlmICghaXNIZWFkZXJIb21lICYmIHBpbm5lZEVudGl0eVR5cGUpIHJldHVybiBwaW5uZWRFbnRpdHlUeXBlXG4gICAgcmV0dXJuIHNlY3Rpb25cbiAgfSkoKVxuXG4gIC8vIEZBUXMvYWNjaW9uZXM6XG4gIC8vICAtIGhlYWRlci1ob21lIChvcmNoZXN0cmF0b3IpLCBwYXNvIDI6IGZpbHRyYWRhcyBwb3IgYGVudGl0eV90eXBlYCBkZWwgY29udGV4dG8gc2VsZWNjaW9uYWRvLlxuICAvLyAgLSBob21lcyBkZSBwcm95ZWN0by9jbGllbnRlL3RhcmVhIChzZWNjacOzbik6IGZpbHRyYWRhcyBwb3IgZWwgYGVudGl0eV90eXBlYCBkZWwgY29udGV4dG8gc2V0ZWFkby5cbiAgLy8gIC0gcGxhbm5lcjogRlVBcyBjb24gc2VjdGlvbj1wbGFubmVyLCBzaW4gZW50aXR5X3R5cGUgbmkgRkFRcy5cbiAgY29uc3QgcmVhbExpc3RzQWdlbnRJZCA9ICgoKSA9PiB7XG4gICAgaWYgKCFpc01BSUEgfHwgaXNNYWlha2VyKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgLy8gUGFzbyAxIChjb250ZXh0b3MgcmVjaWVudGVzLCBzaW4gY29udGV4dG8pOiBubyBzZSBwaWRlbiBGQVFzL0ZVQXMuXG4gICAgaWYgKGlzUmVjZW50Q29udGV4dHNTdGVwKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgaWYgKGlzSGVhZGVySG9tZSkgcmV0dXJuIGlzQ29udGV4dEhvbWVTdGVwID8gYWdlbnQ/LmlkIDogdW5kZWZpbmVkXG4gICAgcmV0dXJuIGFnZW50Py5pZFxuICB9KSgpXG4gIGNvbnN0IHJlYWxMaXN0c0VudGl0eVR5cGUgPSAoKCkgPT4ge1xuICAgIGlmIChpc1BsYW5uZXJIb21lKSByZXR1cm4gJ3BsYW5uZXInXG4gICAgaWYgKCFpc0hlYWRlckhvbWUpIHJldHVybiBwaW5uZWRFbnRpdHlUeXBlXG4gICAgcmV0dXJuIGlzQ29udGV4dEhvbWVTdGVwID8gYWN0aXZlQ29udGV4dD8udHlwZSA6IHVuZGVmaW5lZFxuICB9KSgpXG4gIGNvbnN0IHsgYWN0aW9uczogYWdlbnRGdWFzLCBsb2FkaW5nOiBmdWFzTG9hZGluZyB9ID0gdXNlRnJlcXVlbnRseVVzZWRBY3Rpb25zKFxuICAgIHJlYWxMaXN0c0FnZW50SWQsXG4gICAgZnVhc1NlY3Rpb24sXG4gICAgcmVhbExpc3RzRW50aXR5VHlwZVxuICApXG4gIGNvbnN0IHsgYWN0aW9uczogcGxhbm5lckZ1YXMsIGxvYWRpbmc6IHBsYW5uZXJGdWFzTG9hZGluZyB9ID0gdXNlRnJlcXVlbnRseVVzZWRBY3Rpb25zKFxuICAgIGlzSGVhZGVyQ29sbGFib3JhdG9ySG91cnNIb21lID8gYWdlbnQ/LmlkIDogdW5kZWZpbmVkLFxuICAgICdwbGFubmVyJ1xuICApXG4gIGNvbnN0IHtcbiAgICBmYXFzOiBhZ2VudEZhcXMsXG4gICAgbG9hZGluZzogZmFxc0xvYWRpbmcsXG4gICAgaGFuZGxlR2V0RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zLFxuICB9ID0gdXNlRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zKHJlYWxMaXN0c0FnZW50SWQsIGxhbmcsIHJlYWxMaXN0c0VudGl0eVR5cGUpXG4gIGNvbnN0IGZhcXNGZXRjaFJlZiA9IHVzZVJlZjx7IGFnZW50SWQ6IHN0cmluZzsgbGFuZzogc3RyaW5nOyBlbnRpdHlUeXBlPzogc3RyaW5nIH0gfCBudWxsPihudWxsKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFRhc2sgLyBwbGFubmVyOiBzb2xvIEZVQXMsIHNpbiBGQVFzLlxuICAgIGlmICghcmVhbExpc3RzQWdlbnRJZCB8fCBpc0Z1YXNPbmx5SG9tZSkgcmV0dXJuXG4gICAgY29uc3QgY3VycmVudEtleSA9IGAke3JlYWxMaXN0c0FnZW50SWR9LSR7bGFuZ30tJHtyZWFsTGlzdHNFbnRpdHlUeXBlID8/ICdhbGwnfWBcbiAgICBjb25zdCBsYXN0S2V5ID0gZmFxc0ZldGNoUmVmLmN1cnJlbnRcbiAgICAgID8gYCR7ZmFxc0ZldGNoUmVmLmN1cnJlbnQuYWdlbnRJZH0tJHtmYXFzRmV0Y2hSZWYuY3VycmVudC5sYW5nfS0ke2ZhcXNGZXRjaFJlZi5jdXJyZW50LmVudGl0eVR5cGUgPz8gJ2FsbCd9YFxuICAgICAgOiBudWxsXG4gICAgaWYgKGN1cnJlbnRLZXkgIT09IGxhc3RLZXkpIHtcbiAgICAgIGZhcXNGZXRjaFJlZi5jdXJyZW50ID0geyBhZ2VudElkOiByZWFsTGlzdHNBZ2VudElkLCBsYW5nLCBlbnRpdHlUeXBlOiByZWFsTGlzdHNFbnRpdHlUeXBlIH1cbiAgICAgIGhhbmRsZUdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyh7IGFnZW50SWQ6IHJlYWxMaXN0c0FnZW50SWQsIGxhbmcsIGVudGl0eVR5cGU6IHJlYWxMaXN0c0VudGl0eVR5cGUgfSlcbiAgICB9XG4gIH0sIFtyZWFsTGlzdHNBZ2VudElkLCByZWFsTGlzdHNFbnRpdHlUeXBlLCBpc0Z1YXNPbmx5SG9tZSwgbGFuZywgaGFuZGxlR2V0RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zXSlcblxuICBjb25zdCBmYXFzID0gYWdlbnRGYXFzXG4gIGNvbnN0IGZ1YXMgPSBhZ2VudEZ1YXNcbiAgY29uc3QgZmFxc0FyZUxvYWRpbmcgPSBmYXFzTG9hZGluZ1xuICBjb25zdCBmdWFzQXJlTG9hZGluZyA9IGZ1YXNMb2FkaW5nXG5cbiAgY29uc3Qgc2hvd1JlY2VudENvbnRleHRzQmxvY2sgPSBpc1JlY2VudENvbnRleHRzU3RlcCAmJiAocmVjZW50Q29udGV4dHNMb2FkaW5nIHx8IHJlY2VudENvbnRleHRzLmxlbmd0aCA+IDApXG4gIGNvbnN0IHNob3VsZFNob3dGYXFzID1cbiAgICAhaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiZcbiAgICAhaXNGdWFzT25seUhvbWUgJiZcbiAgICAoaXNDb250ZXh0SG9tZVN0ZXAgfHwgKCFpc0hlYWRlckhvbWUgJiYgZmFxc0FjY2VzcykpICYmXG4gICAgIWlzTWFpYWtlciAmJlxuICAgIChmYXFzLmxlbmd0aCA+IDAgfHwgZmFxc0FyZUxvYWRpbmcpXG4gIGNvbnN0IHNob3VsZFNob3dGdWFzID1cbiAgICAhaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiYgIWlzTWFpYWtlciAmJiAoaXNDb250ZXh0SG9tZVN0ZXAgfHwgIWlzSGVhZGVySG9tZSkgJiYgKGZ1YXMubGVuZ3RoID4gMCB8fCBmdWFzQXJlTG9hZGluZylcbiAgY29uc3Qgc2hvdWxkU2hvd1BsYW5uZXJGdWFzID0gaXNIZWFkZXJDb2xsYWJvcmF0b3JIb3Vyc0hvbWUgJiYgKHBsYW5uZXJGdWFzLmxlbmd0aCA+IDAgfHwgcGxhbm5lckZ1YXNMb2FkaW5nKVxuXG4gIGNvbnN0IHNob3dQcm9qZWN0U3VtbWFyeUNhcmQgPSBzaG93UHJvamVjdFN1bW1hcnkgJiYgYWdlbnQ/LmVudGl0eSA9PT0gJ3Byb2plY3QnXG4gIGNvbnN0IHNob3dGQVFzID0gISEoXG4gICAgc2hvd1JlY2VudENvbnRleHRzQmxvY2sgfHxcbiAgICBzaG91bGRTaG93RmFxcyB8fFxuICAgIHNob3VsZFNob3dGdWFzIHx8XG4gICAgc2hvdWxkU2hvd1BsYW5uZXJGdWFzIHx8XG4gICAgc2hvd1Byb2plY3RTdW1tYXJ5Q2FyZCB8fFxuICAgIGlzTWFpYWtlclxuICApXG4gIGNvbnN0IGhvbWVTY3JvbGxhYmxlTGF5b3V0ID0gc2hvd0ZBUXNcbiAgY29uc3Qgc2hvd0R5bmFtaWNTZWN0aW9uID1cbiAgICBzaG93UmVjZW50Q29udGV4dHNCbG9jayB8fCBzaG91bGRTaG93RmFxcyB8fCBzaG91bGRTaG93RnVhcyB8fCBzaG91bGRTaG93UGxhbm5lckZ1YXMgfHwgaXNNYWlha2VyXG5cbiAgLy8gTMOzZ2ljYSBkZWwgc2Nyb2xsIGNvbiBncmFkaWVudGVzXG4gIGNvbnN0IGNvbnRlbnRDb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzaG93VG9wR3JhZGllbnQsIHNldFNob3dUb3BHcmFkaWVudF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3Nob3dCb3R0b21HcmFkaWVudCwgc2V0U2hvd0JvdHRvbUdyYWRpZW50XSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNTY3JvbGxpbmcsIHNldElzU2Nyb2xsaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBzY3JvbGxUaW1lb3V0UmVmID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbD4obnVsbClcblxuICAvLyBTYWx1ZG8gZmlqbyBwb3IgdGlwbyBkZSBjb250ZXh0byAoaTE4bikuIEN1c3RvbSBhZ2VudHMgc2lndWVuIHVzYW5kbyBhZ2VudC5pbnRyb2R1Y3Rpb24uXG4gIC8vIFBsYW5uZXIgdXNhIHTDrXR1bG8gKyBiYWphZGEgcHJvcGlvcyAoYHBsYW5uZXJIb21lYCksIG5vIGVzdGUgZ3JlZXRpbmcuXG4gIGNvbnN0IGdyZWV0aW5nID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGlzTWFpYWtlciB8fCBpc1BsYW5uZXJIb21lIHx8IGlzUmVjZW50Q29udGV4dHNTdGVwKSByZXR1cm4gJydcblxuICAgIGlmIChpc01BSUEgJiYgcGlubmVkRW50aXR5VHlwZSkge1xuICAgICAgcmV0dXJuIHQoYGhvbWVNZW51LmNvbnRleHRIb21lLmNvbnRleHRHcmVldGluZy4ke3Bpbm5lZEVudGl0eVR5cGV9YClcbiAgICB9XG5cbiAgICBjb25zdCBpbnRybyA9IGFnZW50Py5pbnRyb2R1Y3Rpb25cbiAgICBpZiAoIWludHJvKSByZXR1cm4gJydcbiAgICBpZiAoQXJyYXkuaXNBcnJheShpbnRybykgJiYgaW50cm8ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGludHJvW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGludHJvLmxlbmd0aCldXG4gICAgfVxuICAgIHJldHVybiB0eXBlb2YgaW50cm8gPT09ICdzdHJpbmcnID8gaW50cm8gOiAnJ1xuICB9LCBbYWdlbnQ/LmlkLCBhZ2VudD8uaW50cm9kdWN0aW9uLCBpc01haWFrZXIsIGlzUGxhbm5lckhvbWUsIGlzTUFJQSwgcGlubmVkRW50aXR5VHlwZSwgaXNSZWNlbnRDb250ZXh0c1N0ZXAsIHRdKVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdFJlY2VudENvbnRleHQgPSB1c2VDYWxsYmFjayhcbiAgICAoY29udGV4dDogUmVjZW50Q29udGV4dEl0ZW0sIG9yZGVyOiBudW1iZXIpID0+IHtcbiAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRDb250ZXh0U2VsZWN0ZWQsIHsgb3JkZXIsIHR5cGU6IGNvbnRleHQudHlwZSB9KVxuXG4gICAgICBjb25zdCBjb250ZXh0SWQgPSBwYXJzZU51bWVyaWNJZChjb250ZXh0LmlkKVxuICAgICAgY29uc3QgY2xpZW50SWQgPSBwYXJzZU51bWVyaWNJZChjb250ZXh0LnBhcmVudHM/LmNsaWVudF9pZClcbiAgICAgIGNvbnN0IHByb2plY3RJZCA9IHBhcnNlTnVtZXJpY0lkKGNvbnRleHQucGFyZW50cz8ucHJvamVjdF9pZClcbiAgICAgIGNvbnN0IGNsaWVudE5hbWUgPSBjb250ZXh0LnBhcmVudHM/LmNsaWVudF9uYW1lIHx8ICcnXG4gICAgICBjb25zdCBwcm9qZWN0TmFtZSA9IGNvbnRleHQucGFyZW50cz8ucHJvamVjdF9uYW1lIHx8ICcnXG5cbiAgICAgIHNldFNlbGVjdGVkQ29udGV4dChjb250ZXh0KVxuICAgICAgc2V0VGFzayhudWxsKVxuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuXG4gICAgICBpZiAoY29udGV4dC50eXBlID09PSAnY2xpZW50Jykge1xuICAgICAgICBpZiAoY29udGV4dElkID09IG51bGwpIHJldHVyblxuICAgICAgICBzZXRDbGllbnQ/Lih7IGlkOiBjb250ZXh0SWQsIG5hbWU6IGNvbnRleHQubmFtZSB9KVxuICAgICAgfSBlbHNlIGlmIChjb250ZXh0LnR5cGUgPT09ICdwcm9qZWN0Jykge1xuICAgICAgICBpZiAoY29udGV4dElkID09IG51bGwpIHJldHVyblxuICAgICAgICBzZXRQcm9qZWN0KHtcbiAgICAgICAgICBpZDogY29udGV4dElkLFxuICAgICAgICAgIG5hbWU6IGNvbnRleHQubmFtZSxcbiAgICAgICAgICAuLi4oY2xpZW50SWQgIT0gbnVsbCA/IHsgY2xpZW50SWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oY2xpZW50SWQgIT0gbnVsbCA/IHsgY2xpZW50OiB7IGlkOiBjbGllbnRJZCwgbmFtZTogY2xpZW50TmFtZSB9IH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcoY29udGV4dElkKSxcbiAgICAgICAgICBwcm9qZWN0TmFtZTogY29udGV4dC5uYW1lLFxuICAgICAgICAgIGNsaWVudE5hbWUsXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKGNvbnRleHQudHlwZSA9PT0gJ3Rhc2snKSB7XG4gICAgICAgIHNldFRhc2soe1xuICAgICAgICAgIGlkOiBjb250ZXh0LmlkLFxuICAgICAgICAgIG5hbWU6IGNvbnRleHQubmFtZSxcbiAgICAgICAgICAuLi4ocHJvamVjdElkICE9IG51bGwgPyB7IHByb2plY3RJZCB9IDoge30pLFxuICAgICAgICAgIC4uLihjbGllbnRJZCAhPSBudWxsID8geyBjbGllbnRJZCB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgICBpZiAoY2xpZW50SWQgIT0gbnVsbCkge1xuICAgICAgICAgIHNldENsaWVudD8uKHsgaWQ6IGNsaWVudElkLCBuYW1lOiBjbGllbnROYW1lIH0pXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb2plY3RJZCAhPSBudWxsKSB7XG4gICAgICAgICAgc2V0UHJvamVjdCh7XG4gICAgICAgICAgICBpZDogcHJvamVjdElkLFxuICAgICAgICAgICAgbmFtZTogcHJvamVjdE5hbWUgfHwgYCR7dCgnaG9tZU1lbnUucmVjZW50Q29udGV4dHMudHlwZXMucHJvamVjdCcpfSAke3Byb2plY3RJZH1gLFxuICAgICAgICAgICAgLi4uKGNsaWVudElkICE9IG51bGwgPyB7IGNsaWVudElkIH0gOiB7fSksXG4gICAgICAgICAgICAuLi4oY2xpZW50SWQgIT0gbnVsbCA/IHsgY2xpZW50OiB7IGlkOiBjbGllbnRJZCwgbmFtZTogY2xpZW50TmFtZSB9IH0gOiB7fSksXG4gICAgICAgICAgfSlcbiAgICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcocHJvamVjdElkKSxcbiAgICAgICAgICAgIHByb2plY3ROYW1lOiBwcm9qZWN0TmFtZSB8fCBgJHt0KCdob21lTWVudS5yZWNlbnRDb250ZXh0cy50eXBlcy5wcm9qZWN0Jyl9ICR7cHJvamVjdElkfWAsXG4gICAgICAgICAgICBjbGllbnROYW1lLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ21haWEtaW5wdXQtcmVmb2N1cycpKVxuICAgICAgfSlcbiAgICB9LFxuICAgIFtldmVudCwgc2V0Q2hpcHNQcm9qZWN0LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2ssIHRdXG4gIClcblxuICBjb25zdCByZW5kZXJSZWNlbnRDb250ZXh0cyA9ICgpID0+IHtcbiAgICBpZiAoIWlzUmVjZW50Q29udGV4dHNTdGVwKSByZXR1cm4gbnVsbFxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1xuICAgICAgICAkZml4ZWRDb250ZW50V2lkdGg9e2lzSGVhZGVyQ29sbGFib3JhdG9ySG9tZSA/IE1BSUFfSEVBREVSX0NPTExBQk9SQVRPUl9IT01FX0NPTlRFTlRfV0lEVEhfUFggOiB1bmRlZmluZWR9XG4gICAgICAgICRjb250ZW50R2FwPXtpc0hlYWRlckNvbGxhYm9yYXRvckhvdXJzSG9tZSA/IDggOiB1bmRlZmluZWR9XG4gICAgICA+XG4gICAgICAgIHtpc0hlYWRlckNvbGxhYm9yYXRvckhvdXJzSG9tZSA/IChcbiAgICAgICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uSGVhZGVyPlxuICAgICAgICAgICAgPFNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvblRpdGxlPlxuICAgICAgICAgICAgICB7dCgnaG9tZU1lbnUuY29udGV4dEhvbWUucmVjZW50VGFza3NTZWN0aW9uLnRpdGxlJyl9XG4gICAgICAgICAgICA8L1NDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvblRpdGxlPlxuICAgICAgICAgICAgPFNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvblN1YnRpdGxlPlxuICAgICAgICAgICAgICB7dCgnaG9tZU1lbnUuY29udGV4dEhvbWUucmVjZW50VGFza3NTZWN0aW9uLnN1YnRpdGxlJyl9XG4gICAgICAgICAgICA8L1NDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvblN1YnRpdGxlPlxuICAgICAgICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uSGVhZGVyPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPFNDQ0FJSG9tZVJlY2VudENvbnRleHRzTGlzdCAkZmx1c2hQaWxscz17aXNIZWFkZXJDb2xsYWJvcmF0b3JIb21lfT5cbiAgICAgICAgICB7cmVjZW50Q29udGV4dHNMb2FkaW5nICYmXG4gICAgICAgICAgICBSRUNFTlRfQ09OVEVYVF9TS0VMRVRPTl9LRVlTLm1hcChrZXkgPT4gPFNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsU2tlbGV0b24ga2V5PXtrZXl9IC8+KX1cbiAgICAgICAgICB7IXJlY2VudENvbnRleHRzTG9hZGluZyAmJlxuICAgICAgICAgICAgcmVjZW50Q29udGV4dHMubWFwKChjb250ZXh0LCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICA8UmVjZW50Q29udGV4dFBpbGxcbiAgICAgICAgICAgICAgICBrZXk9e2Ake2NvbnRleHQudHlwZX0tJHtjb250ZXh0LmlkfWB9XG4gICAgICAgICAgICAgICAgY29udGV4dD17Y29udGV4dH1cbiAgICAgICAgICAgICAgICBsYWJlbD17Y29udGV4dC5uYW1lLnRyaW0oKX1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWxlY3RSZWNlbnRDb250ZXh0KGNvbnRleHQsIGluZGV4ICsgMSl9XG4gICAgICAgICAgICAgICAgZnVsbFdpZHRoPXtpc0hlYWRlckNvbGxhYm9yYXRvckhvbWV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0c0xpc3Q+XG4gICAgICA8L1NDQ0FJSG9tZVJlY2VudENvbnRleHRzPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGNoZWNrU2Nyb2xsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGNvbnRlbnRDb250YWluZXJSZWYuY3VycmVudFxuICAgIGlmICghY29udGFpbmVyIHx8ICFob21lU2Nyb2xsYWJsZUxheW91dCkgcmV0dXJuXG5cbiAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IGNvbnRhaW5lclxuICAgIGNvbnN0IGlzU2Nyb2xsYWJsZSA9IHNjcm9sbEhlaWdodCA+IGNsaWVudEhlaWdodFxuICAgIGNvbnN0IGlzQXRUb3AgPSBzY3JvbGxUb3AgPT09IDBcbiAgICBjb25zdCBpc0F0Qm90dG9tID0gc2Nyb2xsVG9wICsgY2xpZW50SGVpZ2h0ID49IHNjcm9sbEhlaWdodCAtIDFcblxuICAgIHNldFNob3dUb3BHcmFkaWVudChpc1Njcm9sbGFibGUgJiYgIWlzQXRUb3ApXG4gICAgc2V0U2hvd0JvdHRvbUdyYWRpZW50KGlzU2Nyb2xsYWJsZSAmJiAhaXNBdEJvdHRvbSlcbiAgICBzZXRJc1Njcm9sbGluZyh0cnVlKVxuXG4gICAgaWYgKHNjcm9sbFRpbWVvdXRSZWYuY3VycmVudCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHNjcm9sbFRpbWVvdXRSZWYuY3VycmVudClcbiAgICB9XG5cbiAgICBzY3JvbGxUaW1lb3V0UmVmLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldElzU2Nyb2xsaW5nKGZhbHNlKVxuICAgIH0sIDE1MClcbiAgfSwgW2hvbWVTY3JvbGxhYmxlTGF5b3V0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaG9tZVNjcm9sbGFibGVMYXlvdXQpIHtcbiAgICAgIHNldFNob3dUb3BHcmFkaWVudChmYWxzZSlcbiAgICAgIHNldFNob3dCb3R0b21HcmFkaWVudChmYWxzZSlcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZXIgPSBjb250ZW50Q29udGFpbmVyUmVmLmN1cnJlbnRcbiAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNoZWNrU2Nyb2xsKClcbiAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgY2hlY2tTY3JvbGwpXG5cbiAgICBjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KGNoZWNrU2Nyb2xsLCAxMDApXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGNoZWNrU2Nyb2xsKVxuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZClcbiAgICAgIGlmIChzY3JvbGxUaW1lb3V0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHNjcm9sbFRpbWVvdXRSZWYuY3VycmVudClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtob21lU2Nyb2xsYWJsZUxheW91dCwgY2hlY2tTY3JvbGxdKVxuXG4gIGNvbnN0IHJlbmRlckhlYWRlckNvbnRlbnQgPSAoKSA9PiB7XG4gICAgaWYgKCFpc01BSUEpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTQ0NBSUhvbWVBZ2VudEluZm9Db250YWluZXI+XG4gICAgICAgICAgPFNDQ0FJSG9tZUFnZW50SW5mbz5cbiAgICAgICAgICAgIHthZ2VudD8uZW1vaml9IHthZ2VudD8ubmFtZX1cbiAgICAgICAgICA8L1NDQ0FJSG9tZUFnZW50SW5mbz5cbiAgICAgICAgICB7YWdlbnQ/LmNyZWF0ZWRfYnkgJiYgIWlzTUFJQSAmJiAoXG4gICAgICAgICAgICA8U0NDQUlIb21lQ3JlYXRlZEJ5Q29udGFpbmVyPlxuICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgIHRpdGxlPXtcbiAgICAgICAgICAgICAgICAgIGFnZW50Py5jcmVhdGVkX2J5Py5pc19kZWxldGVkID8gdCgnaG9tZU1lbnUuY3JlYXRlZEJ5VG9vbHRpcERlbGV0ZWQnKSA6IHQoJ2hvbWVNZW51LmNyZWF0ZWRCeVRvb2x0aXAnKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0PlxuICAgICAgICAgICAgICAgICAge3QoJ2hvbWVNZW51LmNyZWF0ZWRCeScpfXsnICd9XG4gICAgICAgICAgICAgICAgICA8U0NDQUlIb21lQ3JlYXRlZEJ5VGV4dE5hbWU+e2FnZW50Py5jcmVhdGVkX2J5Py5uYW1lfTwvU0NDQUlIb21lQ3JlYXRlZEJ5VGV4dE5hbWU+XG4gICAgICAgICAgICAgICAgPC9TQ0NBSUhvbWVDcmVhdGVkQnlUZXh0PlxuICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICA8L1NDQ0FJSG9tZUNyZWF0ZWRCeUNvbnRhaW5lcj5cbiAgICAgICAgICApfVxuICAgICAgICA8L1NDQ0FJSG9tZUFnZW50SW5mb0NvbnRhaW5lcj5cbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNDQ0FJSG9tZU1haWFIZWFkZXJTdGFja1xuICAgICAgICAkbm9HYXA9eyFpc1JlY2VudENvbnRleHRzU3RlcCAmJiAhaXNQbGFubmVySG9tZSAmJiAhZ3JlZXRpbmd9XG4gICAgICAgICRhbGlnbj17aXNQbGFubmVySG9tZSB8fCBpc0hlYWRlckNvbGxhYm9yYXRvckhvbWUgPyAnc3RhcnQnIDogJ2NlbnRlcid9XG4gICAgICA+XG4gICAgICAgIHshaXNQbGFubmVySG9tZSAmJiAhaXNIZWFkZXJDb2xsYWJvcmF0b3JIb21lICYmIChcbiAgICAgICAgICA8U0NDQUlIb21lSWNvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVMb2dvV3JhcHBlcj5cbiAgICAgICAgICAgICAgPE1BSUFJc29sb2dvIC8+XG4gICAgICAgICAgICA8L1NDQ0FJSG9tZUxvZ29XcmFwcGVyPlxuICAgICAgICAgIDwvU0NDQUlIb21lSWNvbkNvbnRhaW5lcj5cbiAgICAgICAgKX1cbiAgICAgICAge2lzUGxhbm5lckhvbWUgJiYgKFxuICAgICAgICAgIDxTQ0NBSUhvbWVUaXRsZUJsb2NrICRhbGlnbj1cInN0YXJ0XCI+XG4gICAgICAgICAgICA8U0NDQUlIb21lVGl0bGUgJHNpemU9XCJtZFwiICRhbGlnbj1cInN0YXJ0XCI+XG4gICAgICAgICAgICAgIHt0KCdob21lTWVudS5wbGFubmVySG9tZS50aXRsZScpfVxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVUaXRsZT5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVTdWJ0aXRsZSAkYWxpZ249XCJzdGFydFwiPnt0KCdob21lTWVudS5wbGFubmVySG9tZS5zdWJ0aXRsZScpfTwvU0NDQUlIb21lU3VidGl0bGU+XG4gICAgICAgICAgPC9TQ0NBSUhvbWVUaXRsZUJsb2NrPlxuICAgICAgICApfVxuICAgICAgICB7IWlzUGxhbm5lckhvbWUgJiYgaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiYgaXNIZWFkZXJDb2xsYWJvcmF0b3JIb21lICYmIChcbiAgICAgICAgICA8U0NDQUlIb21lVGl0bGVCbG9jayAkYWxpZ249XCJzdGFydFwiICRmdWxsV2lkdGg+XG4gICAgICAgICAgICA8U0NDQUlIb21lVGl0bGUgJHNpemU9XCJjb250ZXh0XCIgJGFsaWduPVwic3RhcnRcIiAkZnVsbFdpZHRoPlxuICAgICAgICAgICAgICB7dCgnaG9tZU1lbnUuY29udGV4dEhvbWUuZ3JlZXRpbmcnLCB7IG5hbWU6IHVzZXIuZmlyc3ROYW1lIH0pfVxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVUaXRsZT5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVTdWJ0aXRsZSAkYWxpZ249XCJzdGFydFwiICRjb2xsYWJvcmF0b3JIb21lPlxuICAgICAgICAgICAgICB7dChcbiAgICAgICAgICAgICAgICBpc0hlYWRlckNvbGxhYm9yYXRvckhvdXJzSG9tZVxuICAgICAgICAgICAgICAgICAgPyAnaG9tZU1lbnUuY29udGV4dEhvbWUuc3VidGl0bGVDb2xsYWJvcmF0b3JXaXRoSG91cnMnXG4gICAgICAgICAgICAgICAgICA6ICdob21lTWVudS5jb250ZXh0SG9tZS5zdWJ0aXRsZUNvbGxhYm9yYXRvcidcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lU3VidGl0bGU+XG4gICAgICAgICAgPC9TQ0NBSUhvbWVUaXRsZUJsb2NrPlxuICAgICAgICApfVxuICAgICAgICB7IWlzUGxhbm5lckhvbWUgJiYgaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiYgIWlzSGVhZGVyQ29sbGFib3JhdG9ySG9tZSAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVUaXRsZT57dCgnaG9tZU1lbnUuY29udGV4dEhvbWUuZ3JlZXRpbmcnLCB7IG5hbWU6IHVzZXIuZmlyc3ROYW1lIH0pfTwvU0NDQUlIb21lVGl0bGU+XG4gICAgICAgICAgICA8U0NDQUlIb21lU3VidGl0bGU+XG4gICAgICAgICAgICAgIHt0KFxuICAgICAgICAgICAgICAgIGlzQ29sbGFib3JhdG9yUm9sZSh1c2VyLnJvbGVfaWQpXG4gICAgICAgICAgICAgICAgICA/ICdob21lTWVudS5jb250ZXh0SG9tZS5zdWJ0aXRsZUNvbGxhYm9yYXRvcidcbiAgICAgICAgICAgICAgICAgIDogJ2hvbWVNZW51LmNvbnRleHRIb21lLnN1YnRpdGxlJ1xuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVTdWJ0aXRsZT5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgICAgeyFpc1BsYW5uZXJIb21lICYmICFpc1JlY2VudENvbnRleHRzU3RlcCAmJiBncmVldGluZyAmJiA8U0NDQUlIb21lR3JlZXRpbmc+e2dyZWV0aW5nfTwvU0NDQUlIb21lR3JlZXRpbmc+fVxuICAgICAgPC9TQ0NBSUhvbWVNYWlhSGVhZGVyU3RhY2s+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NDQUlIb21lQ29udGFpbmVyIHNob3dGQVFzPXtzaG93RkFRc30+XG4gICAgICB7aG9tZVNjcm9sbGFibGVMYXlvdXQgJiYgPFNDQ0FJSG9tZUdyYWRpZW50VG9wICRzaG93PXtzaG93VG9wR3JhZGllbnR9IC8+fVxuICAgICAgPFNDQ0FJSG9tZUNvbnRlbnRcbiAgICAgICAgcmVmPXtjb250ZW50Q29udGFpbmVyUmVmfVxuICAgICAgICBzaG93RkFRcz17aG9tZVNjcm9sbGFibGVMYXlvdXR9XG4gICAgICAgICRpc0FnZW50Vmlldz17IWlzTUFJQX1cbiAgICAgICAgJGZsb2F0aW5nQ3VzdG9tQ2VudGVyPXtmbG9hdGluZ0N1c3RvbUNlbnRlcn1cbiAgICAgICAgJGNlbnRlclZlcnRpY2FsbHk9e2lzUGxhbm5lckhvbWV9XG4gICAgICAgICRmaXhlZENvbnRlbnRXaWR0aD17aXNIZWFkZXJDb2xsYWJvcmF0b3JIb21lID8gTUFJQV9IRUFERVJfQ09MTEFCT1JBVE9SX0hPTUVfQ09OVEVOVF9XSURUSF9QWCA6IHVuZGVmaW5lZH1cbiAgICAgID5cbiAgICAgICAgPFNDQ0FJSG9tZUNvbnRlbnRJbm5lclxuICAgICAgICAgIHNob3dGQVFzPXtob21lU2Nyb2xsYWJsZUxheW91dH1cbiAgICAgICAgICAkaXNBZ2VudFZpZXc9eyFpc01BSUF9XG4gICAgICAgICAgJGZsb2F0aW5nQ3VzdG9tQ2VudGVyPXtmbG9hdGluZ0N1c3RvbUNlbnRlcn1cbiAgICAgICAgICAkY2VudGVyVmVydGljYWxseT17aXNQbGFubmVySG9tZX1cbiAgICAgICAgICAkYWxpZ25TdGFydD17aXNIZWFkZXJDb2xsYWJvcmF0b3JIb21lfVxuICAgICAgICAgICRoZWFkZXJDb2xsYWJvcmF0b3JIb21lPXtpc0hlYWRlckNvbGxhYm9yYXRvckhvbWV9XG4gICAgICAgID5cbiAgICAgICAgICA8U0NDQUlIb21lSGVhZGVyXG4gICAgICAgICAgICAkZ2FwPXtpc01BSUEgJiYgc2VjdGlvbiAhPT0gJ3Byb2plY3QnID8gJzhweCcgOiAnMjBweCd9XG4gICAgICAgICAgICAkbWF4V2lkdGg9e2lzTUFJQSA/ICcxMDAlJyA6ICczODBweCd9XG4gICAgICAgICAgICAkaXNBZ2VudFZpZXc9eyFpc01BSUF9XG4gICAgICAgICAgICAkYWxpZ249e2lzUGxhbm5lckhvbWUgfHwgaXNIZWFkZXJDb2xsYWJvcmF0b3JIb21lID8gJ3N0YXJ0JyA6ICdjZW50ZXInfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtyZW5kZXJIZWFkZXJDb250ZW50KCl9XG5cbiAgICAgICAgICAgIHtzZWN0aW9uICE9PSAncHJvamVjdCcgJiYgKFxuICAgICAgICAgICAgICA8U0NDQUlIb21lSW50cm9kdWN0aW9uIGV4cGFuZGVkPXtleHBhbmRlZH0+eyFpc01BSUEgJiYgYWdlbnQ/LmludHJvZHVjdGlvbn08L1NDQ0FJSG9tZUludHJvZHVjdGlvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9TQ0NBSUhvbWVIZWFkZXI+XG4gICAgICAgICAge3Nob3dQcm9qZWN0U3VtbWFyeUNhcmQgJiYgKFxuICAgICAgICAgICAgPFNDQ0FIV3JhcHBlclN1bW1hcnlQcm9qZWN0IG9uQ2xpY2s9e2hhbmRsZXJzLnByb2plY3RTdW1tYXJ5fT5cbiAgICAgICAgICAgICAgPFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5PlxuICAgICAgICAgICAgICAgIDxUZW1wbGF0ZUdyYWRpZW50SWNvbiBoZWlnaHQ9ezI0fSB3aWR0aD17MjR9IC8+XG4gICAgICAgICAgICAgIDwvU0NDQUlIb21lUHJvamVjdFN1bW1hcnk+XG4gICAgICAgICAgICAgIDxTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5VGl0bGU+e3QoJ2hvbWVNZW51LnByb2plY3RTdW1tYXJ5LnRpdGxlJyl9PC9TQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeVRpdGxlPlxuICAgICAgICAgICAgICAgIDxTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeURlc2NyaXB0aW9uPlxuICAgICAgICAgICAgICAgICAge3QoJ2hvbWVNZW51LnByb2plY3RTdW1tYXJ5LmRlc2NyaXB0aW9uJyl9XG4gICAgICAgICAgICAgICAgPC9TQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeURlc2NyaXB0aW9uPlxuICAgICAgICAgICAgICA8L1NDQ0FJSG9tZVByb2plY3RTdW1tYXJ5Q29udGVudD5cbiAgICAgICAgICAgIDwvU0NDQUhXcmFwcGVyU3VtbWFyeVByb2plY3Q+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7c2hvd0R5bmFtaWNTZWN0aW9uICYmIChcbiAgICAgICAgICAgIDxTQ0NBSUhvbWVEeW5hbWljU2VjdGlvbiAkZ3Jvdz17aXNNYWlha2VyfSAkYWxpZ25TdGFydD17aXNIZWFkZXJDb2xsYWJvcmF0b3JIb21lfT5cbiAgICAgICAgICAgICAge3Nob3VsZFNob3dQbGFubmVyRnVhcyA/IChcbiAgICAgICAgICAgICAgICA8U0NDQUlIb21lQ29sbGFib3JhdG9yU2VjdGlvbj5cbiAgICAgICAgICAgICAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25UaXRsZT5cbiAgICAgICAgICAgICAgICAgICAge3QoJ2hvbWVNZW51LmNvbnRleHRIb21lLmhvdXJzU2VjdGlvbi50aXRsZScpfVxuICAgICAgICAgICAgICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25UaXRsZT5cbiAgICAgICAgICAgICAgICAgIDxGcmVxdWVudGx5VXNlZEFjdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInBsYW5uZXJcIlxuICAgICAgICAgICAgICAgICAgICBvblN0YXJ0Q2hhdD17b25TdGFydENoYXR9XG4gICAgICAgICAgICAgICAgICAgIGFnZW50SWQ9e2FnZW50Py5pZH1cbiAgICAgICAgICAgICAgICAgICAgaXNTY3JvbGxpbmc9e2lzU2Nyb2xsaW5nfVxuICAgICAgICAgICAgICAgICAgICBhY3Rpb25zPXtwbGFubmVyRnVhc31cbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZz17cGxhbm5lckZ1YXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1NDQ0FJSG9tZUNvbGxhYm9yYXRvclNlY3Rpb24+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICB7cmVuZGVyUmVjZW50Q29udGV4dHMoKX1cbiAgICAgICAgICAgICAge3Nob3VsZFNob3dGYXFzICYmIChcbiAgICAgICAgICAgICAgICA8RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zXG4gICAgICAgICAgICAgICAgICBvblN0YXJ0Q2hhdD17b25TdGFydENoYXR9XG4gICAgICAgICAgICAgICAgICBzaG93RkFRcz17c2hvd0ZBUXN9XG4gICAgICAgICAgICAgICAgICBzaG93UHJvamVjdFN1bW1hcnk9e3Nob3dQcm9qZWN0U3VtbWFyeX1cbiAgICAgICAgICAgICAgICAgIGFnZW50SWQ9e2FnZW50Py5pZH1cbiAgICAgICAgICAgICAgICAgIGxhbmc9e2xhbmd9XG4gICAgICAgICAgICAgICAgICBpc1Njcm9sbGluZz17aXNTY3JvbGxpbmd9XG4gICAgICAgICAgICAgICAgICBmYXFzPXtmYXFzfVxuICAgICAgICAgICAgICAgICAgbG9hZGluZz17ZmFxc0FyZUxvYWRpbmd9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge3Nob3VsZFNob3dGdWFzICYmIChcbiAgICAgICAgICAgICAgICA8RnJlcXVlbnRseVVzZWRBY3Rpb25zXG4gICAgICAgICAgICAgICAgICBvblN0YXJ0Q2hhdD17b25TdGFydENoYXR9XG4gICAgICAgICAgICAgICAgICBhZ2VudElkPXthZ2VudD8uaWR9XG4gICAgICAgICAgICAgICAgICBpc1Njcm9sbGluZz17aXNTY3JvbGxpbmd9XG4gICAgICAgICAgICAgICAgICBhY3Rpb25zPXtmdWFzfVxuICAgICAgICAgICAgICAgICAgbG9hZGluZz17ZnVhc0FyZUxvYWRpbmd9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge2lzTWFpYWtlciA/IDxDaGF0QUlIb21lTWFpYWtlciBvblN0YXJ0Q2hhdD17b25TdGFydENoYXR9IC8+IDogbnVsbH1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lRHluYW1pY1NlY3Rpb24+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TQ0NBSUhvbWVDb250ZW50SW5uZXI+XG4gICAgICA8L1NDQ0FJSG9tZUNvbnRlbnQ+XG4gICAgICB7aG9tZVNjcm9sbGFibGVMYXlvdXQgJiYgPFNDQ0FJSG9tZUdyYWRpZW50Qm90dG9tICRzaG93PXtzaG93Qm90dG9tR3JhZGllbnR9IC8+fVxuICAgIDwvU0NDQUlIb21lQ29udGFpbmVyPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLE9BQU8sUUFBUSxPQUFPO0FBRXpFLFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FBU0MsYUFBYSxRQUFRLGdEQUFnRDtBQUM5RSxTQUFTQyxJQUFJLFFBQVEscUJBQXFCO0FBQzFDLFNBQVNDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLHlCQUF5QjtBQUkxRCxTQUNFQyxrQkFBa0IsRUFDbEJDLGdCQUFnQixFQUNoQkMscUJBQXFCLEVBQ3JCQyxvQkFBb0IsRUFDcEJDLHVCQUF1QixFQUN2QkMsZUFBZSxFQUNmQyxpQkFBaUIsRUFDakJDLDJCQUEyQixFQUMzQkMsa0JBQWtCLEVBQ2xCQyx1QkFBdUIsRUFDdkJDLDhCQUE4QixFQUM5QkMsNEJBQTRCLEVBQzVCQyxrQ0FBa0MsRUFDbENDLDBCQUEwQixFQUMxQkMscUJBQXFCLEVBQ3JCQywyQkFBMkIsRUFDM0JDLHNCQUFzQixFQUN0QkMsMEJBQTBCLEVBQzFCQyxzQkFBc0IsRUFDdEJDLG9CQUFvQixFQUNwQkMsd0JBQXdCLEVBQ3hCQyxjQUFjLEVBQ2RDLG1CQUFtQixFQUNuQkMsaUJBQWlCLEVBQ2pCQyx1QkFBdUIsRUFDdkJDLHVCQUF1QixFQUN2QkMsMkJBQTJCLEVBQzNCQyxvQ0FBb0MsRUFDcENDLG1DQUFtQyxFQUNuQ0Msc0NBQXNDLEVBQ3RDQyw0QkFBNEIsRUFDNUJDLDBCQUEwQixFQUMxQkMsOEJBQThCLEVBQzlCQyw4QkFBOEIsRUFDOUJDLGtDQUFrQyxF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
|
|
587
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsIlRvb2x0aXAiLCJMaXN0Q2hlY2tsaXN0IiwidXNlVCIsIkVWRU5UUyIsInVzZUV2ZW50IiwiU0NDQUlIb21lQ29udGFpbmVyIiwiU0NDQUlIb21lQ29udGVudCIsIlNDQ0FJSG9tZUNvbnRlbnRJbm5lciIsIlNDQ0FJSG9tZUdyYWRpZW50VG9wIiwiU0NDQUlIb21lR3JhZGllbnRCb3R0b20iLCJTQ0NBSUhvbWVIZWFkZXIiLCJTQ0NBSUhvbWVHcmVldGluZyIsIlNDQ0FJSG9tZUFnZW50SW5mb0NvbnRhaW5lciIsIlNDQ0FJSG9tZUFnZW50SW5mbyIsIlNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5IiwiU0NDQUlIb21lUHJvamVjdFN1bW1hcnlDb250ZW50IiwiU0NDQUlIb21lUHJvamVjdFN1bW1hcnlUaXRsZSIsIlNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24iLCJTQ0NBSFdyYXBwZXJTdW1tYXJ5UHJvamVjdCIsIlNDQ0FJSG9tZUludHJvZHVjdGlvbiIsIlNDQ0FJSG9tZUNyZWF0ZWRCeUNvbnRhaW5lciIsIlNDQ0FJSG9tZUNyZWF0ZWRCeVRleHQiLCJTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZSIsIlNDQ0FJSG9tZUljb25Db250YWluZXIiLCJTQ0NBSUhvbWVMb2dvV3JhcHBlciIsIlNDQ0FJSG9tZU1haWFIZWFkZXJTdGFjayIsIlNDQ0FJSG9tZVRpdGxlIiwiU0NDQUlIb21lVGl0bGVCbG9jayIsIlNDQ0FJSG9tZVN1YnRpdGxlIiwiU0NDQUlIb21lRHluYW1pY1NlY3Rpb24iLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0cyIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzTGlzdCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvbkhlYWRlciIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvblRpdGxlIiwiU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uU3VidGl0bGUiLCJTQ0NBSUhvbWVDb2xsYWJvcmF0b3JTZWN0aW9uIiwiU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGwiLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbEljb24iLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbFRleHQiLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbFNrZWxldG9uIiwiTUFJQV9IRUFERVJfQ09MTEFCT1JBVE9SX0hPTUVfQ09OVEVOVF9XSURUSF9QWCIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VVc2VyIiwiQ09SVXNlclJvbGUiLCJpc0NvbGxhYm9yYXRvclJvbGUiLCJ1c2VSZXNpemVMaXN0ZW5lciIsImdldENvbnRleHRNZW50aW9uSWNvbiIsIm9yY2hlc3RyYXRvckhhc0hvdXJzU3ViYWdlbnQiLCJ2YWxpZGF0ZUlzTWFpYSIsImlzTWFpYWtlckFnZW50IiwiRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIiwiRnJlcXVlbnRseVVzZWRBY3Rpb25zIiwidXNlRnJlcXVlbnRseVVzZWRBY3Rpb25zIiwidXNlRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIiwidXNlUmVjZW50Q29udGV4dHMiLCJNQUlBSXNvbG9nbyIsIlRlbXBsYXRlR3JhZGllbnRJY29uIiwiQ2hhdEFJSG9tZU1haWFrZXIiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJGcmVxdWVudFF1ZXN0aW9ucyIsIlJFQ0VOVF9DT05URVhUU19MSU1JVCIsIlJFQ0VOVF9DT05URVhUX0lDT05fQ09MT1IiLCJSRUNFTlRfQ09OVEVYVF9TS0VMRVRPTl9LRVlTIiwiUmVjZW50Q29udGV4dFBpbGwiLCJfcmVmIiwiY29udGV4dCIsImxhYmVsIiwib25DbGljayIsIl9yZWYkZnVsbFdpZHRoIiwiZnVsbFdpZHRoIiwidGV4dFJlZiIsIl91c2VSZXNpemVMaXN0ZW5lciIsInNob3dUb29sdGlwIiwidHlwZSIsIiRmdWxsV2lkdGgiLCJjaGlsZHJlbiIsImNvbG9yIiwid2lkdGgiLCJoZWlnaHQiLCJ1bmRlZmluZWQiLCJyZWYiLCJ0aXRsZSIsInBhcnNlTnVtZXJpY0lkIiwidmFsdWUiLCJwYXJzZWQiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImdldEFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMiLCJyb2xlSWQiLCJub3JtYWxpemVkUm9sZUlkIiwiQ0xFVkVMIiwiRElSRUNUT1IiLCJQUk9KRUNUX01BTkFHRVIiLCJTZXQiLCJDaGF0QUlIb21lIiwiX3JlZjIiLCJoYW5kbGVycyIsIm9uU3RhcnRDaGF0IiwiZXhwYW5kZWQiLCJmbG9hdGluZyIsIl91c2VUIiwidCIsImkxOG4iLCJldmVudCIsInVzZXIiLCJfdXNlR2xvYmFsQ29udGV4dCIsImFnZW50Iiwic2VjdGlvbiIsImNsaWVudCIsInByb2plY3QiLCJ0YXNrIiwiY2hpcHNQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2V0UHJvamVjdCIsInNldFRhc2siLCJzZXRDaGlwc1Byb2plY3QiLCJpc01BSUEiLCJmbG9hdGluZ0N1c3RvbUNlbnRlciIsImxhbmciLCJsYW5ndWFnZSIsInN1bW1hcnlQcm9qZWN0QWNjZXNzIiwid2luZG93IiwiU3RyaW5nIiwiTUFJQV9QUk9KRUNUX1NVTU1BUllfRkVBVFVSRV9BQ0NFU1MiLCJ0b0xvd2VyQ2FzZSIsIm1haWFQcm9qZWN0U3VtbWFyeUFjY2VzcyIsImZhcXNBY2Nlc3MiLCJzaG93UHJvamVjdFN1bW1hcnkiLCJpc01haWFrZXIiLCJpc0hlYWRlckhvbWUiLCJpc1BsYW5uZXJIb21lIiwiaXNPcmNoZXN0cmF0b3IiLCJhbGxvd2VkUmVjZW50Q29udGV4dFR5cGVzIiwicm9sZV9pZCIsIl91c2VSZWNlbnRDb250ZXh0cyIsImVuYWJsZWQiLCJsaW1pdCIsImZldGNoZWRSZWNlbnRDb250ZXh0cyIsImNvbnRleHRzIiwicmVjZW50Q29udGV4dHNMb2FkaW5nIiwibG9hZGluZyIsInJlY2VudENvbnRleHRzIiwiZmlsdGVyIiwiaGFzIiwiaGFzUGlubmVkQ29udGV4dCIsImlkIiwicHJvamVjdElkIiwiaXNSZWNlbnRDb250ZXh0c1N0ZXAiLCJpc0hlYWRlckNvbGxhYm9yYXRvckhvbWUiLCJpc0hlYWRlckNvbGxhYm9yYXRvckhvdXJzSG9tZSIsImlzQ29udGV4dEhvbWVTdGVwIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2VsZWN0ZWRDb250ZXh0Iiwic2V0U2VsZWN0ZWRDb250ZXh0IiwiYWN0aXZlQ29udGV4dCIsIm5hbWUiLCJwcm9qZWN0TmFtZSIsInBpbm5lZEVudGl0eVR5cGUiLCJpc1Rhc2tDb250ZXh0IiwiaXNGdWFzT25seUhvbWUiLCJmdWFzU2VjdGlvbiIsInJlYWxMaXN0c0FnZW50SWQiLCJyZWFsTGlzdHNFbnRpdHlUeXBlIiwiX3VzZUZyZXF1ZW50bHlVc2VkQWN0IiwiYWdlbnRGdWFzIiwiYWN0aW9ucyIsImZ1YXNMb2FkaW5nIiwiX3VzZUZyZXF1ZW50bHlVc2VkQWN0MiIsInBsYW5uZXJGdWFzIiwicGxhbm5lckZ1YXNMb2FkaW5nIiwiX3VzZUZyZXF1ZW50bHlBc2tlZFF1IiwiYWdlbnRGYXFzIiwiZmFxcyIsImZhcXNMb2FkaW5nIiwiaGFuZGxlR2V0RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIiwiZmFxc0ZldGNoUmVmIiwiX2ZhcXNGZXRjaFJlZiRjdXJyZW50IiwiY3VycmVudEtleSIsImNvbmNhdCIsImxhc3RLZXkiLCJjdXJyZW50IiwiYWdlbnRJZCIsImVudGl0eVR5cGUiLCJmdWFzIiwiZmFxc0FyZUxvYWRpbmciLCJmdWFzQXJlTG9hZGluZyIsInNob3dSZWNlbnRDb250ZXh0c0Jsb2NrIiwibGVuZ3RoIiwic2hvdWxkU2hvd0ZhcXMiLCJzaG91bGRTaG93RnVhcyIsInNob3VsZFNob3dQbGFubmVyRnVhc0xvYWRpbmciLCJzaG91bGRTaG93UGxhbm5lckZ1YXNDb250ZW50Iiwic2hvdWxkU2hvd1BsYW5uZXJGdWFzIiwic2hvd1Byb2plY3RTdW1tYXJ5Q2FyZCIsImVudGl0eSIsInNob3dGQVFzIiwiaG9tZVNjcm9sbGFibGVMYXlvdXQiLCJzaG93RHluYW1pY1NlY3Rpb24iLCJjb250ZW50Q29udGFpbmVyUmVmIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJzaG93VG9wR3JhZGllbnQiLCJzZXRTaG93VG9wR3JhZGllbnQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInNob3dCb3R0b21HcmFkaWVudCIsInNldFNob3dCb3R0b21HcmFkaWVudCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaXNTY3JvbGxpbmciLCJzZXRJc1Njcm9sbGluZyIsInNjcm9sbFRpbWVvdXRSZWYiLCJncmVldGluZyIsImludHJvIiwiaW50cm9kdWN0aW9uIiwiQXJyYXkiLCJpc0FycmF5IiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwiaGFuZGxlU2VsZWN0UmVjZW50Q29udGV4dCIsIm9yZGVyIiwiX2NvbnRleHQkcGFyZW50cyIsIl9jb250ZXh0JHBhcmVudHMyIiwiX2NvbnRleHQkcGFyZW50czMiLCJfY29udGV4dCRwYXJlbnRzNCIsImFpQ2hhdENvbnRleHRTZWxlY3RlZCIsImNvbnRleHRJZCIsImNsaWVudElkIiwicGFyZW50cyIsImNsaWVudF9pZCIsInByb2plY3RfaWQiLCJjbGllbnROYW1lIiwiY2xpZW50X25hbWUiLCJwcm9qZWN0X25hbWUiLCJfb2JqZWN0U3ByZWFkIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiZG9jdW1lbnQiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJyZW5kZXJSZWNlbnRDb250ZXh0cyIsIiRmaXhlZENvbnRlbnRXaWR0aCIsIiRjb250ZW50R2FwIiwiJGZsdXNoUGlsbHMiLCJtYXAiLCJrZXkiLCJpbmRleCIsInRyaW0iLCJjaGVja1Njcm9sbCIsImNvbnRhaW5lciIsInNjcm9sbFRvcCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsImlzU2Nyb2xsYWJsZSIsImlzQXRUb3AiLCJpc0F0Qm90dG9tIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsImFkZEV2ZW50TGlzdGVuZXIiLCJ0aW1lb3V0SWQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicmVuZGVySGVhZGVyQ29udGVudCIsIl9hZ2VudCRjcmVhdGVkX2J5IiwiX2FnZW50JGNyZWF0ZWRfYnkyIiwiZW1vamkiLCJjcmVhdGVkX2J5IiwiaXNfZGVsZXRlZCIsIiRub0dhcCIsIiRhbGlnbiIsIiRzaXplIiwiZmlyc3ROYW1lIiwiJGNvbGxhYm9yYXRvckhvbWUiLCIkc2hvdyIsIiRpc0FnZW50VmlldyIsIiRmbG9hdGluZ0N1c3RvbUNlbnRlciIsIiRjZW50ZXJWZXJ0aWNhbGx5IiwiJGFsaWduU3RhcnQiLCIkaGVhZGVyQ29sbGFib3JhdG9ySG9tZSIsIiRnYXAiLCIkbWF4V2lkdGgiLCJwcm9qZWN0U3VtbWFyeSIsIiRncm93IiwidmFyaWFudCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlIb21lL0NoYXRBSUhvbWUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgTGlzdENoZWNrbGlzdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0xpc3RDaGVja2xpc3QnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcblxuaW1wb3J0IHsgb3B0aW9ucyB9IGZyb20gJy4uL0NoYXRBSU1vZGFsL2NvbnN0YW50cydcblxuaW1wb3J0IHtcbiAgU0NDQUlIb21lQ29udGFpbmVyLFxuICBTQ0NBSUhvbWVDb250ZW50LFxuICBTQ0NBSUhvbWVDb250ZW50SW5uZXIsXG4gIFNDQ0FJSG9tZUdyYWRpZW50VG9wLFxuICBTQ0NBSUhvbWVHcmFkaWVudEJvdHRvbSxcbiAgU0NDQUlIb21lSGVhZGVyLFxuICBTQ0NBSUhvbWVHcmVldGluZyxcbiAgU0NDQUlIb21lQWdlbnRJbmZvQ29udGFpbmVyLFxuICBTQ0NBSUhvbWVBZ2VudEluZm8sXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5LFxuICBTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeUNvbnRlbnQsXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5VGl0bGUsXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24sXG4gIFNDQ0FIV3JhcHBlclN1bW1hcnlQcm9qZWN0LFxuICBTQ0NBSUhvbWVJbnRyb2R1Y3Rpb24sXG4gIFNDQ0FJSG9tZUNyZWF0ZWRCeUNvbnRhaW5lcixcbiAgU0NDQUlIb21lQ3JlYXRlZEJ5VGV4dCxcbiAgU0NDQUlIb21lQ3JlYXRlZEJ5VGV4dE5hbWUsXG4gIFNDQ0FJSG9tZUljb25Db250YWluZXIsXG4gIFNDQ0FJSG9tZUxvZ29XcmFwcGVyLFxuICBTQ0NBSUhvbWVNYWlhSGVhZGVyU3RhY2ssXG4gIFNDQ0FJSG9tZVRpdGxlLFxuICBTQ0NBSUhvbWVUaXRsZUJsb2NrLFxuICBTQ0NBSUhvbWVTdWJ0aXRsZSxcbiAgU0NDQUlIb21lRHluYW1pY1NlY3Rpb24sXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRzLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c0xpc3QsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvbkhlYWRlcixcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uVGl0bGUsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvblN1YnRpdGxlLFxuICBTQ0NBSUhvbWVDb2xsYWJvcmF0b3JTZWN0aW9uLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbCxcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxJY29uLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbFRleHQsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsU2tlbGV0b24sXG4gIE1BSUFfSEVBREVSX0NPTExBQk9SQVRPUl9IT01FX0NPTlRFTlRfV0lEVEhfUFgsXG59IGZyb20gJy4vc3R5bGVzJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCwgdHlwZSBTZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVVzZXIsIENPUlVzZXJSb2xlLCBpc0NvbGxhYm9yYXRvclJvbGUgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgdXNlUmVzaXplTGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VSZXNpemUnXG5pbXBvcnQgeyBnZXRDb250ZXh0TWVudGlvbkljb24gfSBmcm9tICcuLi8uLi8uLi91dGlscy9jb250ZXh0TWVudGlvbkljb25zJ1xuaW1wb3J0IHsgb3JjaGVzdHJhdG9ySGFzSG91cnNTdWJhZ2VudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL29yY2hlc3RyYXRvclN1YmFnZW50cydcbmltcG9ydCB7IHZhbGlkYXRlSXNNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMvdmFsaWRhdGVJc01haWEnXG5pbXBvcnQgeyBpc01haWFrZXJBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FnZW50RGlzcGxheU5hbWUnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMgfSBmcm9tICcuLi8uLi9hdG9tcy9GcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMnXG5pbXBvcnQgeyBGcmVxdWVudGx5VXNlZEFjdGlvbnMgfSBmcm9tICcuLi8uLi9hdG9tcy9GcmVxdWVudGx5VXNlZEFjdGlvbnMnXG5pbXBvcnQgeyB1c2VGcmVxdWVudGx5VXNlZEFjdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VGcmVxdWVudGx5VXNlZEFjdGlvbnMnXG5pbXBvcnQgeyB1c2VGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMnXG5pbXBvcnQgeyB1c2VSZWNlbnRDb250ZXh0cyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVJlY2VudENvbnRleHRzJ1xuaW1wb3J0IHR5cGUgeyBSZWNlbnRDb250ZXh0SXRlbSwgUmVjZW50Q29udGV4dFR5cGUgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL1JlY2VudENvbnRleHRzJ1xuaW1wb3J0IHsgTUFJQUlzb2xvZ28gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9NQUlBSXNvbG9nbydcbmltcG9ydCB7IFRlbXBsYXRlR3JhZGllbnRJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMvVGVtcGxhdGVHcmFkaWVudEljb24nXG5pbXBvcnQgeyBDaGF0QUlIb21lTWFpYWtlciB9IGZyb20gJy4vQ2hhdEFJSG9tZU1haWFrZXInXG5cbnR5cGUgQ2hhdEFJSG9tZVByb3BzID0ge1xuICBvblN0YXJ0Q2hhdDogKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10gfCBudWxsLFxuICAgIGZhcUlkPzogc3RyaW5nLFxuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgIG1lbnRpb25zPzogbnVsbCxcbiAgICBmdWFJZD86IHN0cmluZ1xuICApID0+IHZvaWRcbiAgaGFuZGxlcnM6IFJlY29yZDxvcHRpb25zLCAoKSA9PiB2b2lkPlxuICBleHBhbmRlZD86IGJvb2xlYW5cbiAgZmxvYXRpbmc/OiBib29sZWFuXG59XG5cbmV4cG9ydCBlbnVtIEZyZXF1ZW50UXVlc3Rpb25zIHtcbiAgcmVudGFiaWxpZGFkX3Byb3llY3RvID0gJ3JlbnRhYmlsaWRhZF9wcm95ZWN0bycsXG4gIGF2YW5jZV9wcm95ZWN0byA9ICdhdmFuY2VfcHJveWVjdG8nLFxufVxuXG5jb25zdCBSRUNFTlRfQ09OVEVYVFNfTElNSVQgPSA5XG5jb25zdCBSRUNFTlRfQ09OVEVYVF9JQ09OX0NPTE9SID0gJyM0RDRENEQnXG5jb25zdCBSRUNFTlRfQ09OVEVYVF9TS0VMRVRPTl9LRVlTID0gW1xuICAncmVjZW50LWNvbnRleHQtc2tlbGV0b24tMScsXG4gICdyZWNlbnQtY29udGV4dC1za2VsZXRvbi0yJyxcbiAgJ3JlY2VudC1jb250ZXh0LXNrZWxldG9uLTMnLFxuXVxuXG5jb25zdCBSZWNlbnRDb250ZXh0UGlsbCA9ICh7XG4gIGNvbnRleHQsXG4gIGxhYmVsLFxuICBvbkNsaWNrLFxuICBmdWxsV2lkdGggPSBmYWxzZSxcbn06IHtcbiAgY29udGV4dDogUmVjZW50Q29udGV4dEl0ZW1cbiAgbGFiZWw6IHN0cmluZ1xuICBvbkNsaWNrOiAoKSA9PiB2b2lkXG4gIGZ1bGxXaWR0aD86IGJvb2xlYW5cbn0pID0+IHtcbiAgY29uc3QgdGV4dFJlZiA9IHVzZVJlZjxIVE1MU3BhbkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHsgc2hvd1Rvb2x0aXAgfSA9IHVzZVJlc2l6ZUxpc3RlbmVyKHRleHRSZWYsIFtsYWJlbF0pXG5cbiAgcmV0dXJuIChcbiAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGwgdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e29uQ2xpY2t9ICRmdWxsV2lkdGg9e2Z1bGxXaWR0aH0+XG4gICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxJY29uPlxuICAgICAgICB7Y29udGV4dC50eXBlID09PSAndGFzaycgPyAoXG4gICAgICAgICAgPExpc3RDaGVja2xpc3QgY29sb3I9e1JFQ0VOVF9DT05URVhUX0lDT05fQ09MT1J9IHdpZHRoPVwiMTRweFwiIGhlaWdodD1cIjE0cHhcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIGdldENvbnRleHRNZW50aW9uSWNvbihjb250ZXh0LnR5cGUsIFJFQ0VOVF9DT05URVhUX0lDT05fQ09MT1IsIHVuZGVmaW5lZCwgMTQpXG4gICAgICAgICl9XG4gICAgICA8L1NDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsSWNvbj5cbiAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbFRleHQgcmVmPXt0ZXh0UmVmfT5cbiAgICAgICAge3Nob3dUb29sdGlwID8gKFxuICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtsYWJlbH0+XG4gICAgICAgICAgICA8c3Bhbj57bGFiZWx9PC9zcGFuPlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBsYWJlbFxuICAgICAgICApfVxuICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbFRleHQ+XG4gICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbD5cbiAgKVxufVxuXG5jb25zdCBwYXJzZU51bWVyaWNJZCA9ICh2YWx1ZT86IHN0cmluZyB8IG51bWJlciB8IG51bGwpOiBudW1iZXIgfCBudWxsID0+IHtcbiAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSByZXR1cm4gbnVsbFxuICBjb25zdCBwYXJzZWQgPSBOdW1iZXIodmFsdWUpXG4gIHJldHVybiBOdW1iZXIuaXNGaW5pdGUocGFyc2VkKSA/IHBhcnNlZCA6IG51bGxcbn1cblxuY29uc3QgZ2V0QWxsb3dlZFJlY2VudENvbnRleHRUeXBlcyA9IChyb2xlSWQ/OiBDT1JVc2VyUm9sZSB8IG51bWJlciB8IHN0cmluZyk6IFNldDxSZWNlbnRDb250ZXh0VHlwZT4gPT4ge1xuICBjb25zdCBub3JtYWxpemVkUm9sZUlkID0gTnVtYmVyKHJvbGVJZClcbiAgaWYgKFxuICAgIG5vcm1hbGl6ZWRSb2xlSWQgPT09IENPUlVzZXJSb2xlLkNMRVZFTCB8fFxuICAgIG5vcm1hbGl6ZWRSb2xlSWQgPT09IENPUlVzZXJSb2xlLkRJUkVDVE9SIHx8XG4gICAgbm9ybWFsaXplZFJvbGVJZCA9PT0gQ09SVXNlclJvbGUuUFJPSkVDVF9NQU5BR0VSXG4gICkge1xuICAgIHJldHVybiBuZXcgU2V0KFsnY2xpZW50JywgJ3Byb2plY3QnLCAndGFzayddKVxuICB9XG4gIGlmIChpc0NvbGxhYm9yYXRvclJvbGUocm9sZUlkKSkge1xuICAgIHJldHVybiBuZXcgU2V0KFsndGFzayddKVxuICB9XG4gIHJldHVybiBuZXcgU2V0KClcbn1cblxuZXhwb3J0IGNvbnN0IENoYXRBSUhvbWUgPSAoeyBoYW5kbGVycywgb25TdGFydENoYXQsIGV4cGFuZGVkLCBmbG9hdGluZyB9OiBDaGF0QUlIb21lUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0LCBpMThuIH0gPSB1c2VUKClcbiAgY29uc3QgZXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgeyBhZ2VudCwgc2VjdGlvbiwgY2xpZW50LCBwcm9qZWN0LCB0YXNrLCBjaGlwc1Byb2plY3QsIHNldENsaWVudCwgc2V0UHJvamVjdCwgc2V0VGFzaywgc2V0Q2hpcHNQcm9qZWN0IH0gPVxuICAgIHVzZUdsb2JhbENvbnRleHQoKVxuXG4gIGNvbnN0IGlzTUFJQSA9IHZhbGlkYXRlSXNNYWlhKGFnZW50IGFzIEFnZW50KVxuICBjb25zdCBmbG9hdGluZ0N1c3RvbUNlbnRlciA9ICEhKGZsb2F0aW5nICYmIGFnZW50Py50eXBlID09PSAnY3VzdG9tJylcbiAgY29uc3QgbGFuZyA9IGkxOG4ubGFuZ3VhZ2UgPT09ICdicicgPyAncHQnIDogaTE4bi5sYW5ndWFnZVxuXG4gIGNvbnN0IHN1bW1hcnlQcm9qZWN0QWNjZXNzID1cbiAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIChTdHJpbmcod2luZG93Lk1BSUFfUFJPSkVDVF9TVU1NQVJZX0ZFQVRVUkVfQUNDRVNTKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScgfHxcbiAgICAgIFN0cmluZyh3aW5kb3cubWFpYVByb2plY3RTdW1tYXJ5QWNjZXNzKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScpXG4gIGNvbnN0IGZhcXNBY2Nlc3MgPSB0cnVlXG4gIGNvbnN0IHNob3dQcm9qZWN0U3VtbWFyeSA9ICEhKGlzTUFJQSAmJiBzdW1tYXJ5UHJvamVjdEFjY2VzcylcbiAgLy8gRWwgb3JjaGVzdHJhdG9yICh0eXBlID09PSAnb3JjaGVzdHJhdG9yJykgbXVlc3RyYSBGQVFzL0ZVQXMgYWdyZWdhZGFzIGRlIHN1cyBzdWJhZ2VudGVzLFxuICAvLyBhc8OtIHF1ZSBOTyBzZSB0cmF0YSBjb21vIG1haWFrZXIgYWPDoS5cbiAgY29uc3QgaXNNYWlha2VyID0gaXNNYWlha2VyQWdlbnQoYWdlbnQpXG4gIGNvbnN0IGlzSGVhZGVySG9tZSA9IGlzTUFJQSAmJiBzZWN0aW9uID09PSAnaGVhZGVyJyAmJiBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcidcbiAgLy8gUGxhbm5lcjogaG9tZSBkZSBGVUFzIHNpbiBzZWxlY3RvciBkZSBjb250ZXh0b3MgKG1pc21vIHBhdHLDs24gcXVlIHRhc2ssIGNvbiBzZWN0aW9uIEFQSSBgcGxhbm5lcmApLlxuICBjb25zdCBpc1BsYW5uZXJIb21lID0gc2VjdGlvbiA9PT0gJ3BsYW5uZXInXG4gIC8vIEVsIG9yY2hlc3RyYXRvciB1c2EgZWwgaG9tZSBlbiAyIHBhc29zIChjb250ZXh0b3MgcmVjaWVudGVzIOKGlCBGQVFzL0ZVQXMpIGVuIGhlYWRlci9wcm9qZWN0L2NsaWVudC90YXNrLlxuICAvLyBFbiBwcm9qZWN0L2NsaWVudC90YXNrLCBhbCBsaW1waWFyIGVsIGNvbnRleHRvIChwLiBlai4gYWwgcmVzZWxlY2Npb25hciBNQUlBXG4gIC8vIGRlc2RlIGVsIGxpc3RhZG8gZGUgYWdlbnRlcykgc2UgbXVlc3RyYSBlbCBzZWxlY3RvciBkZSBjb250ZXh0b3MgcmVjaWVudGVzIGVuIGx1Z2FyIGRlIHVuIGhvbWUgdmFjw61vLlxuICBjb25zdCBpc09yY2hlc3RyYXRvciA9IGlzTUFJQSAmJiBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcidcbiAgY29uc3QgYWxsb3dlZFJlY2VudENvbnRleHRUeXBlcyA9IHVzZU1lbW8oKCkgPT4gZ2V0QWxsb3dlZFJlY2VudENvbnRleHRUeXBlcyh1c2VyLnJvbGVfaWQpLCBbdXNlci5yb2xlX2lkXSlcbiAgY29uc3QgeyBjb250ZXh0czogZmV0Y2hlZFJlY2VudENvbnRleHRzLCBsb2FkaW5nOiByZWNlbnRDb250ZXh0c0xvYWRpbmcgfSA9IHVzZVJlY2VudENvbnRleHRzKHtcbiAgICBlbmFibGVkOiBpc09yY2hlc3RyYXRvciAmJiAhaXNQbGFubmVySG9tZSxcbiAgICBsaW1pdDogUkVDRU5UX0NPTlRFWFRTX0xJTUlULFxuICB9KVxuICBjb25zdCByZWNlbnRDb250ZXh0cyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZmV0Y2hlZFJlY2VudENvbnRleHRzLmZpbHRlcihjb250ZXh0ID0+IGFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMuaGFzKGNvbnRleHQudHlwZSkpLFxuICAgIFtmZXRjaGVkUmVjZW50Q29udGV4dHMsIGFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXNdXG4gIClcblxuICAvLyBIb21lIGRlbCBvcmNoZXN0cmF0b3IgZW4gMiBwYXNvczpcbiAgLy8gIC0gUGFzbyAxIChzaW4gY29udGV4dG8gcGluZWFkbyk6IHNlIG11ZXN0cmFuIHNvbG8gbG9zIGNvbnRleHRvcyByZWNpZW50ZXMuXG4gIC8vICAtIFBhc28gMiAoY29udGV4dG8gcGluZWFkbyk6IHNlIG11ZXN0cmFuIGxhcyBGQVFzL2FjY2lvbmVzIHF1ZSByZWZlcmVuY2lhbiBlc2UgY29udGV4dG8uXG4gIC8vIFZvbHZlciBhbCBwYXNvIDEgPSBxdWl0YXIgZWwgY2hpcCAobGltcGlhIGVsIGNvbnRleHRvIGdsb2JhbCkuXG4gIC8vIFBsYW5uZXIgbm8gdXNhIGVzdGUgZmx1am86IHNpZW1wcmUgaG9tZSBkZSBGVUFzLlxuICBjb25zdCBoYXNQaW5uZWRDb250ZXh0ID0gISEodGFzaz8uaWQgfHwgY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgfHwgY2xpZW50Py5pZCB8fCBwcm9qZWN0Py5pZClcbiAgY29uc3QgaXNSZWNlbnRDb250ZXh0c1N0ZXAgPSBpc09yY2hlc3RyYXRvciAmJiAhaGFzUGlubmVkQ29udGV4dCAmJiAhaXNQbGFubmVySG9tZVxuICBjb25zdCBpc0hlYWRlckNvbGxhYm9yYXRvckhvbWUgPSBzZWN0aW9uID09PSAnaGVhZGVyJyAmJiBpc0NvbGxhYm9yYXRvclJvbGUodXNlci5yb2xlX2lkKSAmJiBpc1JlY2VudENvbnRleHRzU3RlcFxuICBjb25zdCBpc0hlYWRlckNvbGxhYm9yYXRvckhvdXJzSG9tZSA9IGlzSGVhZGVyQ29sbGFib3JhdG9ySG9tZSAmJiBvcmNoZXN0cmF0b3JIYXNIb3Vyc1N1YmFnZW50KGFnZW50KVxuICBjb25zdCBpc0NvbnRleHRIb21lU3RlcCA9IGlzSGVhZGVySG9tZSAmJiBoYXNQaW5uZWRDb250ZXh0XG5cbiAgLy8gQ29udGV4dG8gYWN0aXZvIHBhcmEgZGVyaXZhciBGQVFzL2FjY2lvbmVzIChwYXNvIDIpLiBQcmVmZXJpbW9zIGVsIHBpbGwgY2xpY2tlYWRvO1xuICAvLyBzaSBubywgbG8gcmVjb25zdHJ1aW1vcyBkZXNkZSBlbCBjb250ZXh0byBnbG9iYWwuXG4gIGNvbnN0IFtzZWxlY3RlZENvbnRleHQsIHNldFNlbGVjdGVkQ29udGV4dF0gPSB1c2VTdGF0ZTxSZWNlbnRDb250ZXh0SXRlbSB8IG51bGw+KG51bGwpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFoYXNQaW5uZWRDb250ZXh0KSBzZXRTZWxlY3RlZENvbnRleHQobnVsbClcbiAgfSwgW2hhc1Bpbm5lZENvbnRleHRdKVxuXG4gIGNvbnN0IGFjdGl2ZUNvbnRleHQgPSB1c2VNZW1vPFJlY2VudENvbnRleHRJdGVtIHwgbnVsbD4oKCkgPT4ge1xuICAgIGlmIChzZWxlY3RlZENvbnRleHQpIHJldHVybiBzZWxlY3RlZENvbnRleHRcbiAgICBpZiAoIWlzQ29udGV4dEhvbWVTdGVwKSByZXR1cm4gbnVsbFxuICAgIGlmICh0YXNrPy5pZCkgcmV0dXJuIHsgdHlwZTogJ3Rhc2snLCBpZDogdGFzay5pZCwgbmFtZTogdGFzay5uYW1lIH1cbiAgICBpZiAoY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQpIHJldHVybiB7IHR5cGU6ICdwcm9qZWN0JywgaWQ6IGNoaXBzUHJvamVjdC5wcm9qZWN0SWQsIG5hbWU6IGNoaXBzUHJvamVjdC5wcm9qZWN0TmFtZSB9XG4gICAgaWYgKGNsaWVudD8uaWQpIHJldHVybiB7IHR5cGU6ICdjbGllbnQnLCBpZDogY2xpZW50LmlkLCBuYW1lOiBjbGllbnQubmFtZSB9XG4gICAgcmV0dXJuIG51bGxcbiAgfSwgW1xuICAgIHNlbGVjdGVkQ29udGV4dCxcbiAgICBpc0NvbnRleHRIb21lU3RlcCxcbiAgICB0YXNrPy5pZCxcbiAgICB0YXNrPy5uYW1lLFxuICAgIGNoaXBzUHJvamVjdD8ucHJvamVjdElkLFxuICAgIGNoaXBzUHJvamVjdD8ucHJvamVjdE5hbWUsXG4gICAgY2xpZW50Py5pZCxcbiAgICBjbGllbnQ/Lm5hbWUsXG4gIF0pXG5cbiAgLy8gZW50aXR5X3R5cGUgZGVsIGNvbnRleHRvIHBpbmVhZG8gKHByb2plY3QvY2xpZW50L3Rhc2spLCB0b21hZG8gZGVsIGNvbnRleHRvIGdsb2JhbC5cbiAgLy8gQXBsaWNhIHRhbnRvIGFsIGFicmlyIE1BSUEgZGVzZGUgdW5hIHNlY2Npw7NuIGVzcGVjw61maWNhIGNvbW8gYWwgY2FtYmlhciBkZSBjb252ZXJzYWNpw7NuLlxuICBjb25zdCBwaW5uZWRFbnRpdHlUeXBlID0gdXNlTWVtbzxSZWNlbnRDb250ZXh0VHlwZSB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICAgIGlmICh0YXNrPy5pZCkgcmV0dXJuICd0YXNrJ1xuICAgIGlmIChjaGlwc1Byb2plY3Q/LnByb2plY3RJZCB8fCBwcm9qZWN0Py5pZCkgcmV0dXJuICdwcm9qZWN0J1xuICAgIGlmIChjbGllbnQ/LmlkKSByZXR1cm4gJ2NsaWVudCdcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH0sIFt0YXNrPy5pZCwgY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQsIHByb2plY3Q/LmlkLCBjbGllbnQ/LmlkXSlcblxuICAvLyBFbiBwcm9qZWN0L2NsaWVudC90YXNrLCBjb24gZWwgcmVpbmljaW8gZGUgY29udGV4dG8gZWwgdXN1YXJpbyBwdWVkZSBwaW5lYXIgdW4gY29udGV4dG8gZGUgdW5cbiAgLy8gdGlwbyBkaXN0aW50byBhbCBkZSBsYSBzZWNjacOzbiBkZSBhcGVydHVyYSAocC4gZWouIHVuIHByb2plY3QgYWJyaWVuZG8gZGVzZGUgdW5hIHRhcmVhLCBvXG4gIC8vIHZpY2V2ZXJzYSkuIExhcyBGQVFzL0ZVQXMgZGViZW4gZGVwZW5kZXIgZGVsIGNvbnRleHRvIHJlYWxtZW50ZSBwaW5lYWRvLCBubyBkZSBsYSBzZWNjacOzbiBmaWphLlxuICAvLyBFbiBlbCBoZWFkZXIgc2UgbWFudGllbmUgbGEgbMOzZ2ljYSBleGlzdGVudGUgKGJhc2FkYSBlbiBlbCBjb250ZXh0byBzZWxlY2Npb25hZG8gLyBhY3RpdmVDb250ZXh0KS5cbiAgY29uc3QgaXNUYXNrQ29udGV4dCA9ICFpc0hlYWRlckhvbWUgJiYgcGlubmVkRW50aXR5VHlwZSA9PT0gJ3Rhc2snXG4gIC8vIFNvbG8gRlVBcyAoc2luIEZBUXMpOiB0YXNrIHBhbmVsIG8gcGxhbm5lci5cbiAgY29uc3QgaXNGdWFzT25seUhvbWUgPSBpc1BsYW5uZXJIb21lIHx8IGlzVGFza0NvbnRleHRcbiAgLy8gYHNlY3Rpb25gIHF1ZSBzZSBjb25zdWx0YSBwYXJhIGxhcyBGVUFzOiBlbiBuby1oZWFkZXIgc2lndWUgZWwgdGlwbyBkZSBjb250ZXh0byBwaW5lYWRvLlxuICAvLyBFbiBwbGFubmVyIHNlIGZ1ZXJ6YSBsYSBzZWN0aW9uIEFQSSBgcGxhbm5lcmAuXG4gIGNvbnN0IGZ1YXNTZWN0aW9uOiBTZWN0aW9uID0gKCgpID0+IHtcbiAgICBpZiAoaXNQbGFubmVySG9tZSkgcmV0dXJuICdwbGFubmVyJ1xuICAgIGlmICghaXNIZWFkZXJIb21lICYmIHBpbm5lZEVudGl0eVR5cGUpIHJldHVybiBwaW5uZWRFbnRpdHlUeXBlXG4gICAgcmV0dXJuIHNlY3Rpb25cbiAgfSkoKVxuXG4gIC8vIEZBUXMvYWNjaW9uZXM6XG4gIC8vICAtIGhlYWRlci1ob21lIChvcmNoZXN0cmF0b3IpLCBwYXNvIDI6IGZpbHRyYWRhcyBwb3IgYGVudGl0eV90eXBlYCBkZWwgY29udGV4dG8gc2VsZWNjaW9uYWRvLlxuICAvLyAgLSBob21lcyBkZSBwcm95ZWN0by9jbGllbnRlL3RhcmVhIChzZWNjacOzbik6IGZpbHRyYWRhcyBwb3IgZWwgYGVudGl0eV90eXBlYCBkZWwgY29udGV4dG8gc2V0ZWFkby5cbiAgLy8gIC0gcGxhbm5lcjogRlVBcyBjb24gc2VjdGlvbj1wbGFubmVyLCBzaW4gZW50aXR5X3R5cGUgbmkgRkFRcy5cbiAgY29uc3QgcmVhbExpc3RzQWdlbnRJZCA9ICgoKSA9PiB7XG4gICAgaWYgKCFpc01BSUEgfHwgaXNNYWlha2VyKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgLy8gUGFzbyAxIChjb250ZXh0b3MgcmVjaWVudGVzLCBzaW4gY29udGV4dG8pOiBubyBzZSBwaWRlbiBGQVFzL0ZVQXMuXG4gICAgaWYgKGlzUmVjZW50Q29udGV4dHNTdGVwKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgaWYgKGlzSGVhZGVySG9tZSkgcmV0dXJuIGlzQ29udGV4dEhvbWVTdGVwID8gYWdlbnQ/LmlkIDogdW5kZWZpbmVkXG4gICAgcmV0dXJuIGFnZW50Py5pZFxuICB9KSgpXG4gIGNvbnN0IHJlYWxMaXN0c0VudGl0eVR5cGUgPSAoKCkgPT4ge1xuICAgIGlmIChpc1BsYW5uZXJIb21lKSByZXR1cm4gJ3BsYW5uZXInXG4gICAgaWYgKCFpc0hlYWRlckhvbWUpIHJldHVybiBwaW5uZWRFbnRpdHlUeXBlXG4gICAgcmV0dXJuIGlzQ29udGV4dEhvbWVTdGVwID8gYWN0aXZlQ29udGV4dD8udHlwZSA6IHVuZGVmaW5lZFxuICB9KSgpXG4gIGNvbnN0IHsgYWN0aW9uczogYWdlbnRGdWFzLCBsb2FkaW5nOiBmdWFzTG9hZGluZyB9ID0gdXNlRnJlcXVlbnRseVVzZWRBY3Rpb25zKFxuICAgIHJlYWxMaXN0c0FnZW50SWQsXG4gICAgZnVhc1NlY3Rpb24sXG4gICAgcmVhbExpc3RzRW50aXR5VHlwZVxuICApXG4gIGNvbnN0IHsgYWN0aW9uczogcGxhbm5lckZ1YXMsIGxvYWRpbmc6IHBsYW5uZXJGdWFzTG9hZGluZyB9ID0gdXNlRnJlcXVlbnRseVVzZWRBY3Rpb25zKFxuICAgIGlzSGVhZGVyQ29sbGFib3JhdG9ySG91cnNIb21lID8gYWdlbnQ/LmlkIDogdW5kZWZpbmVkLFxuICAgICdwbGFubmVyJ1xuICApXG4gIGNvbnN0IHtcbiAgICBmYXFzOiBhZ2VudEZhcXMsXG4gICAgbG9hZGluZzogZmFxc0xvYWRpbmcsXG4gICAgaGFuZGxlR2V0RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zLFxuICB9ID0gdXNlRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zKHJlYWxMaXN0c0FnZW50SWQsIGxhbmcsIHJlYWxMaXN0c0VudGl0eVR5cGUpXG4gIGNvbnN0IGZhcXNGZXRjaFJlZiA9IHVzZVJlZjx7IGFnZW50SWQ6IHN0cmluZzsgbGFuZzogc3RyaW5nOyBlbnRpdHlUeXBlPzogc3RyaW5nIH0gfCBudWxsPihudWxsKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFRhc2sgLyBwbGFubmVyOiBzb2xvIEZVQXMsIHNpbiBGQVFzLlxuICAgIGlmICghcmVhbExpc3RzQWdlbnRJZCB8fCBpc0Z1YXNPbmx5SG9tZSkgcmV0dXJuXG4gICAgY29uc3QgY3VycmVudEtleSA9IGAke3JlYWxMaXN0c0FnZW50SWR9LSR7bGFuZ30tJHtyZWFsTGlzdHNFbnRpdHlUeXBlID8/ICdhbGwnfWBcbiAgICBjb25zdCBsYXN0S2V5ID0gZmFxc0ZldGNoUmVmLmN1cnJlbnRcbiAgICAgID8gYCR7ZmFxc0ZldGNoUmVmLmN1cnJlbnQuYWdlbnRJZH0tJHtmYXFzRmV0Y2hSZWYuY3VycmVudC5sYW5nfS0ke2ZhcXNGZXRjaFJlZi5jdXJyZW50LmVudGl0eVR5cGUgPz8gJ2FsbCd9YFxuICAgICAgOiBudWxsXG4gICAgaWYgKGN1cnJlbnRLZXkgIT09IGxhc3RLZXkpIHtcbiAgICAgIGZhcXNGZXRjaFJlZi5jdXJyZW50ID0geyBhZ2VudElkOiByZWFsTGlzdHNBZ2VudElkLCBsYW5nLCBlbnRpdHlUeXBlOiByZWFsTGlzdHNFbnRpdHlUeXBlIH1cbiAgICAgIGhhbmRsZUdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyh7IGFnZW50SWQ6IHJlYWxMaXN0c0FnZW50SWQsIGxhbmcsIGVudGl0eVR5cGU6IHJlYWxMaXN0c0VudGl0eVR5cGUgfSlcbiAgICB9XG4gIH0sIFtyZWFsTGlzdHNBZ2VudElkLCByZWFsTGlzdHNFbnRpdHlUeXBlLCBpc0Z1YXNPbmx5SG9tZSwgbGFuZywgaGFuZGxlR2V0RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zXSlcblxuICBjb25zdCBmYXFzID0gYWdlbnRGYXFzXG4gIGNvbnN0IGZ1YXMgPSBhZ2VudEZ1YXNcbiAgY29uc3QgZmFxc0FyZUxvYWRpbmcgPSBmYXFzTG9hZGluZ1xuICBjb25zdCBmdWFzQXJlTG9hZGluZyA9IGZ1YXNMb2FkaW5nXG5cbiAgY29uc3Qgc2hvd1JlY2VudENvbnRleHRzQmxvY2sgPSBpc1JlY2VudENvbnRleHRzU3RlcCAmJiAocmVjZW50Q29udGV4dHNMb2FkaW5nIHx8IHJlY2VudENvbnRleHRzLmxlbmd0aCA+IDApXG4gIGNvbnN0IHNob3VsZFNob3dGYXFzID1cbiAgICAhaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiZcbiAgICAhaXNGdWFzT25seUhvbWUgJiZcbiAgICAoaXNDb250ZXh0SG9tZVN0ZXAgfHwgKCFpc0hlYWRlckhvbWUgJiYgZmFxc0FjY2VzcykpICYmXG4gICAgIWlzTWFpYWtlciAmJlxuICAgIChmYXFzLmxlbmd0aCA+IDAgfHwgZmFxc0FyZUxvYWRpbmcpXG4gIGNvbnN0IHNob3VsZFNob3dGdWFzID1cbiAgICAhaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiYgIWlzTWFpYWtlciAmJiAoaXNDb250ZXh0SG9tZVN0ZXAgfHwgIWlzSGVhZGVySG9tZSkgJiYgKGZ1YXMubGVuZ3RoID4gMCB8fCBmdWFzQXJlTG9hZGluZylcbiAgY29uc3Qgc2hvdWxkU2hvd1BsYW5uZXJGdWFzTG9hZGluZyA9IGlzSGVhZGVyQ29sbGFib3JhdG9ySG91cnNIb21lICYmIHBsYW5uZXJGdWFzTG9hZGluZyAmJiBwbGFubmVyRnVhcy5sZW5ndGggPT09IDBcbiAgY29uc3Qgc2hvdWxkU2hvd1BsYW5uZXJGdWFzQ29udGVudCA9IGlzSGVhZGVyQ29sbGFib3JhdG9ySG91cnNIb21lICYmIHBsYW5uZXJGdWFzLmxlbmd0aCA+IDBcbiAgY29uc3Qgc2hvdWxkU2hvd1BsYW5uZXJGdWFzID0gc2hvdWxkU2hvd1BsYW5uZXJGdWFzTG9hZGluZyB8fCBzaG91bGRTaG93UGxhbm5lckZ1YXNDb250ZW50XG5cbiAgY29uc3Qgc2hvd1Byb2plY3RTdW1tYXJ5Q2FyZCA9IHNob3dQcm9qZWN0U3VtbWFyeSAmJiBhZ2VudD8uZW50aXR5ID09PSAncHJvamVjdCdcbiAgY29uc3Qgc2hvd0ZBUXMgPSAhIShcbiAgICBzaG93UmVjZW50Q29udGV4dHNCbG9jayB8fFxuICAgIHNob3VsZFNob3dGYXFzIHx8XG4gICAgc2hvdWxkU2hvd0Z1YXMgfHxcbiAgICBzaG91bGRTaG93UGxhbm5lckZ1YXMgfHxcbiAgICBzaG93UHJvamVjdFN1bW1hcnlDYXJkIHx8XG4gICAgaXNNYWlha2VyXG4gIClcbiAgY29uc3QgaG9tZVNjcm9sbGFibGVMYXlvdXQgPSBzaG93RkFRc1xuICBjb25zdCBzaG93RHluYW1pY1NlY3Rpb24gPVxuICAgIHNob3dSZWNlbnRDb250ZXh0c0Jsb2NrIHx8IHNob3VsZFNob3dGYXFzIHx8IHNob3VsZFNob3dGdWFzIHx8IHNob3VsZFNob3dQbGFubmVyRnVhcyB8fCBpc01haWFrZXJcblxuICAvLyBMw7NnaWNhIGRlbCBzY3JvbGwgY29uIGdyYWRpZW50ZXNcbiAgY29uc3QgY29udGVudENvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW3Nob3dUb3BHcmFkaWVudCwgc2V0U2hvd1RvcEdyYWRpZW50XSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2hvd0JvdHRvbUdyYWRpZW50LCBzZXRTaG93Qm90dG9tR3JhZGllbnRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1Njcm9sbGluZywgc2V0SXNTY3JvbGxpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHNjcm9sbFRpbWVvdXRSZWYgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsPihudWxsKVxuXG4gIC8vIFNhbHVkbyBmaWpvIHBvciB0aXBvIGRlIGNvbnRleHRvIChpMThuKS4gQ3VzdG9tIGFnZW50cyBzaWd1ZW4gdXNhbmRvIGFnZW50LmludHJvZHVjdGlvbi5cbiAgLy8gUGxhbm5lciB1c2EgdMOtdHVsbyArIGJhamFkYSBwcm9waW9zIChgcGxhbm5lckhvbWVgKSwgbm8gZXN0ZSBncmVldGluZy5cbiAgY29uc3QgZ3JlZXRpbmcgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoaXNNYWlha2VyIHx8IGlzUGxhbm5lckhvbWUgfHwgaXNSZWNlbnRDb250ZXh0c1N0ZXApIHJldHVybiAnJ1xuXG4gICAgaWYgKGlzTUFJQSAmJiBwaW5uZWRFbnRpdHlUeXBlKSB7XG4gICAgICByZXR1cm4gdChgaG9tZU1lbnUuY29udGV4dEhvbWUuY29udGV4dEdyZWV0aW5nLiR7cGlubmVkRW50aXR5VHlwZX1gKVxuICAgIH1cblxuICAgIGNvbnN0IGludHJvID0gYWdlbnQ/LmludHJvZHVjdGlvblxuICAgIGlmICghaW50cm8pIHJldHVybiAnJ1xuICAgIGlmIChBcnJheS5pc0FycmF5KGludHJvKSAmJiBpbnRyby5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gaW50cm9bTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogaW50cm8ubGVuZ3RoKV1cbiAgICB9XG4gICAgcmV0dXJuIHR5cGVvZiBpbnRybyA9PT0gJ3N0cmluZycgPyBpbnRybyA6ICcnXG4gIH0sIFthZ2VudD8uaWQsIGFnZW50Py5pbnRyb2R1Y3Rpb24sIGlzTWFpYWtlciwgaXNQbGFubmVySG9tZSwgaXNNQUlBLCBwaW5uZWRFbnRpdHlUeXBlLCBpc1JlY2VudENvbnRleHRzU3RlcCwgdF0pXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0UmVjZW50Q29udGV4dCA9IHVzZUNhbGxiYWNrKFxuICAgIChjb250ZXh0OiBSZWNlbnRDb250ZXh0SXRlbSwgb3JkZXI6IG51bWJlcikgPT4ge1xuICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdENvbnRleHRTZWxlY3RlZCwgeyBvcmRlciwgdHlwZTogY29udGV4dC50eXBlIH0pXG5cbiAgICAgIGNvbnN0IGNvbnRleHRJZCA9IHBhcnNlTnVtZXJpY0lkKGNvbnRleHQuaWQpXG4gICAgICBjb25zdCBjbGllbnRJZCA9IHBhcnNlTnVtZXJpY0lkKGNvbnRleHQucGFyZW50cz8uY2xpZW50X2lkKVxuICAgICAgY29uc3QgcHJvamVjdElkID0gcGFyc2VOdW1lcmljSWQoY29udGV4dC5wYXJlbnRzPy5wcm9qZWN0X2lkKVxuICAgICAgY29uc3QgY2xpZW50TmFtZSA9IGNvbnRleHQucGFyZW50cz8uY2xpZW50X25hbWUgfHwgJydcbiAgICAgIGNvbnN0IHByb2plY3ROYW1lID0gY29udGV4dC5wYXJlbnRzPy5wcm9qZWN0X25hbWUgfHwgJydcblxuICAgICAgc2V0U2VsZWN0ZWRDb250ZXh0KGNvbnRleHQpXG4gICAgICBzZXRUYXNrKG51bGwpXG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG5cbiAgICAgIGlmIChjb250ZXh0LnR5cGUgPT09ICdjbGllbnQnKSB7XG4gICAgICAgIGlmIChjb250ZXh0SWQgPT0gbnVsbCkgcmV0dXJuXG4gICAgICAgIHNldENsaWVudD8uKHsgaWQ6IGNvbnRleHRJZCwgbmFtZTogY29udGV4dC5uYW1lIH0pXG4gICAgICB9IGVsc2UgaWYgKGNvbnRleHQudHlwZSA9PT0gJ3Byb2plY3QnKSB7XG4gICAgICAgIGlmIChjb250ZXh0SWQgPT0gbnVsbCkgcmV0dXJuXG4gICAgICAgIHNldFByb2plY3Qoe1xuICAgICAgICAgIGlkOiBjb250ZXh0SWQsXG4gICAgICAgICAgbmFtZTogY29udGV4dC5uYW1lLFxuICAgICAgICAgIC4uLihjbGllbnRJZCAhPSBudWxsID8geyBjbGllbnRJZCB9IDoge30pLFxuICAgICAgICAgIC4uLihjbGllbnRJZCAhPSBudWxsID8geyBjbGllbnQ6IHsgaWQ6IGNsaWVudElkLCBuYW1lOiBjbGllbnROYW1lIH0gfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHtcbiAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhjb250ZXh0SWQpLFxuICAgICAgICAgIHByb2plY3ROYW1lOiBjb250ZXh0Lm5hbWUsXG4gICAgICAgICAgY2xpZW50TmFtZSxcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAoY29udGV4dC50eXBlID09PSAndGFzaycpIHtcbiAgICAgICAgc2V0VGFzayh7XG4gICAgICAgICAgaWQ6IGNvbnRleHQuaWQsXG4gICAgICAgICAgbmFtZTogY29udGV4dC5uYW1lLFxuICAgICAgICAgIC4uLihwcm9qZWN0SWQgIT0gbnVsbCA/IHsgcHJvamVjdElkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGNsaWVudElkICE9IG51bGwgPyB7IGNsaWVudElkIH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChjbGllbnRJZCAhPSBudWxsKSB7XG4gICAgICAgICAgc2V0Q2xpZW50Py4oeyBpZDogY2xpZW50SWQsIG5hbWU6IGNsaWVudE5hbWUgfSlcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvamVjdElkICE9IG51bGwpIHtcbiAgICAgICAgICBzZXRQcm9qZWN0KHtcbiAgICAgICAgICAgIGlkOiBwcm9qZWN0SWQsXG4gICAgICAgICAgICBuYW1lOiBwcm9qZWN0TmFtZSB8fCBgJHt0KCdob21lTWVudS5yZWNlbnRDb250ZXh0cy50eXBlcy5wcm9qZWN0Jyl9ICR7cHJvamVjdElkfWAsXG4gICAgICAgICAgICAuLi4oY2xpZW50SWQgIT0gbnVsbCA/IHsgY2xpZW50SWQgfSA6IHt9KSxcbiAgICAgICAgICAgIC4uLihjbGllbnRJZCAhPSBudWxsID8geyBjbGllbnQ6IHsgaWQ6IGNsaWVudElkLCBuYW1lOiBjbGllbnROYW1lIH0gfSA6IHt9KSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhwcm9qZWN0SWQpLFxuICAgICAgICAgICAgcHJvamVjdE5hbWU6IHByb2plY3ROYW1lIHx8IGAke3QoJ2hvbWVNZW51LnJlY2VudENvbnRleHRzLnR5cGVzLnByb2plY3QnKX0gJHtwcm9qZWN0SWR9YCxcbiAgICAgICAgICAgIGNsaWVudE5hbWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbWFpYS1pbnB1dC1yZWZvY3VzJykpXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2V2ZW50LCBzZXRDaGlwc1Byb2plY3QsIHNldENsaWVudCwgc2V0UHJvamVjdCwgc2V0VGFzaywgdF1cbiAgKVxuXG4gIGNvbnN0IHJlbmRlclJlY2VudENvbnRleHRzID0gKCkgPT4ge1xuICAgIGlmICghaXNSZWNlbnRDb250ZXh0c1N0ZXApIHJldHVybiBudWxsXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNDQ0FJSG9tZVJlY2VudENvbnRleHRzXG4gICAgICAgICRmaXhlZENvbnRlbnRXaWR0aD17aXNIZWFkZXJDb2xsYWJvcmF0b3JIb21lID8gTUFJQV9IRUFERVJfQ09MTEFCT1JBVE9SX0hPTUVfQ09OVEVOVF9XSURUSF9QWCA6IHVuZGVmaW5lZH1cbiAgICAgICAgJGNvbnRlbnRHYXA9e2lzSGVhZGVyQ29sbGFib3JhdG9ySG91cnNIb21lID8gOCA6IHVuZGVmaW5lZH1cbiAgICAgID5cbiAgICAgICAge2lzSGVhZGVyQ29sbGFib3JhdG9ySG91cnNIb21lID8gKFxuICAgICAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICAgIHt0KCdob21lTWVudS5jb250ZXh0SG9tZS5yZWNlbnRUYXNrc1NlY3Rpb24udGl0bGUnKX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uU3VidGl0bGU+XG4gICAgICAgICAgICAgIHt0KCdob21lTWVudS5jb250ZXh0SG9tZS5yZWNlbnRUYXNrc1NlY3Rpb24uc3VidGl0bGUnKX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uU3VidGl0bGU+XG4gICAgICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dHNMaXN0ICRmbHVzaFBpbGxzPXtpc0hlYWRlckNvbGxhYm9yYXRvckhvbWV9PlxuICAgICAgICAgIHtyZWNlbnRDb250ZXh0c0xvYWRpbmcgJiZcbiAgICAgICAgICAgIFJFQ0VOVF9DT05URVhUX1NLRUxFVE9OX0tFWVMubWFwKGtleSA9PiA8U0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxTa2VsZXRvbiBrZXk9e2tleX0gLz4pfVxuICAgICAgICAgIHshcmVjZW50Q29udGV4dHNMb2FkaW5nICYmXG4gICAgICAgICAgICByZWNlbnRDb250ZXh0cy5tYXAoKGNvbnRleHQsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgIDxSZWNlbnRDb250ZXh0UGlsbFxuICAgICAgICAgICAgICAgIGtleT17YCR7Y29udGV4dC50eXBlfS0ke2NvbnRleHQuaWR9YH1cbiAgICAgICAgICAgICAgICBjb250ZXh0PXtjb250ZXh0fVxuICAgICAgICAgICAgICAgIGxhYmVsPXtjb250ZXh0Lm5hbWUudHJpbSgpfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlbGVjdFJlY2VudENvbnRleHQoY29udGV4dCwgaW5kZXggKyAxKX1cbiAgICAgICAgICAgICAgICBmdWxsV2lkdGg9e2lzSGVhZGVyQ29sbGFib3JhdG9ySG9tZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICA8L1NDQ0FJSG9tZVJlY2VudENvbnRleHRzTGlzdD5cbiAgICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dHM+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgY2hlY2tTY3JvbGwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyID0gY29udGVudENvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgaWYgKCFjb250YWluZXIgfHwgIWhvbWVTY3JvbGxhYmxlTGF5b3V0KSByZXR1cm5cblxuICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY29udGFpbmVyXG4gICAgY29uc3QgaXNTY3JvbGxhYmxlID0gc2Nyb2xsSGVpZ2h0ID4gY2xpZW50SGVpZ2h0XG4gICAgY29uc3QgaXNBdFRvcCA9IHNjcm9sbFRvcCA9PT0gMFxuICAgIGNvbnN0IGlzQXRCb3R0b20gPSBzY3JvbGxUb3AgKyBjbGllbnRIZWlnaHQgPj0gc2Nyb2xsSGVpZ2h0IC0gMVxuXG4gICAgc2V0U2hvd1RvcEdyYWRpZW50KGlzU2Nyb2xsYWJsZSAmJiAhaXNBdFRvcClcbiAgICBzZXRTaG93Qm90dG9tR3JhZGllbnQoaXNTY3JvbGxhYmxlICYmICFpc0F0Qm90dG9tKVxuICAgIHNldElzU2Nyb2xsaW5nKHRydWUpXG5cbiAgICBpZiAoc2Nyb2xsVGltZW91dFJlZi5jdXJyZW50KSB7XG4gICAgICBjbGVhclRpbWVvdXQoc2Nyb2xsVGltZW91dFJlZi5jdXJyZW50KVxuICAgIH1cblxuICAgIHNjcm9sbFRpbWVvdXRSZWYuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0SXNTY3JvbGxpbmcoZmFsc2UpXG4gICAgfSwgMTUwKVxuICB9LCBbaG9tZVNjcm9sbGFibGVMYXlvdXRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFob21lU2Nyb2xsYWJsZUxheW91dCkge1xuICAgICAgc2V0U2hvd1RvcEdyYWRpZW50KGZhbHNlKVxuICAgICAgc2V0U2hvd0JvdHRvbUdyYWRpZW50KGZhbHNlKVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGNvbnRlbnRDb250YWluZXJSZWYuY3VycmVudFxuICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY2hlY2tTY3JvbGwoKVxuICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBjaGVja1Njcm9sbClcblxuICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoY2hlY2tTY3JvbGwsIDEwMClcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgY2hlY2tTY3JvbGwpXG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKVxuICAgICAgaWYgKHNjcm9sbFRpbWVvdXRSZWYuY3VycmVudCkge1xuICAgICAgICBjbGVhclRpbWVvdXQoc2Nyb2xsVGltZW91dFJlZi5jdXJyZW50KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2hvbWVTY3JvbGxhYmxlTGF5b3V0LCBjaGVja1Njcm9sbF0pXG5cbiAgY29uc3QgcmVuZGVySGVhZGVyQ29udGVudCA9ICgpID0+IHtcbiAgICBpZiAoIWlzTUFJQSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFNDQ0FJSG9tZUFnZW50SW5mb0NvbnRhaW5lcj5cbiAgICAgICAgICA8U0NDQUlIb21lQWdlbnRJbmZvPlxuICAgICAgICAgICAge2FnZW50Py5lbW9qaX0ge2FnZW50Py5uYW1lfVxuICAgICAgICAgIDwvU0NDQUlIb21lQWdlbnRJbmZvPlxuICAgICAgICAgIHthZ2VudD8uY3JlYXRlZF9ieSAmJiAhaXNNQUlBICYmIChcbiAgICAgICAgICAgIDxTQ0NBSUhvbWVDcmVhdGVkQnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgYWdlbnQ/LmNyZWF0ZWRfYnk/LmlzX2RlbGV0ZWQgPyB0KCdob21lTWVudS5jcmVhdGVkQnlUb29sdGlwRGVsZXRlZCcpIDogdCgnaG9tZU1lbnUuY3JlYXRlZEJ5VG9vbHRpcCcpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNDQ0FJSG9tZUNyZWF0ZWRCeVRleHQ+XG4gICAgICAgICAgICAgICAgICB7dCgnaG9tZU1lbnUuY3JlYXRlZEJ5Jyl9eycgJ31cbiAgICAgICAgICAgICAgICAgIDxTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZT57YWdlbnQ/LmNyZWF0ZWRfYnk/Lm5hbWV9PC9TQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZT5cbiAgICAgICAgICAgICAgICA8L1NDQ0FJSG9tZUNyZWF0ZWRCeVRleHQ+XG4gICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgIDwvU0NDQUlIb21lQ3JlYXRlZEJ5Q29udGFpbmVyPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NDQUlIb21lQWdlbnRJbmZvQ29udGFpbmVyPlxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8U0NDQUlIb21lTWFpYUhlYWRlclN0YWNrXG4gICAgICAgICRub0dhcD17IWlzUmVjZW50Q29udGV4dHNTdGVwICYmICFpc1BsYW5uZXJIb21lICYmICFncmVldGluZ31cbiAgICAgICAgJGFsaWduPXtpc1BsYW5uZXJIb21lIHx8IGlzSGVhZGVyQ29sbGFib3JhdG9ySG9tZSA/ICdzdGFydCcgOiAnY2VudGVyJ31cbiAgICAgID5cbiAgICAgICAgeyFpc1BsYW5uZXJIb21lICYmICFpc0hlYWRlckNvbGxhYm9yYXRvckhvbWUgJiYgKFxuICAgICAgICAgIDxTQ0NBSUhvbWVJY29uQ29udGFpbmVyPlxuICAgICAgICAgICAgPFNDQ0FJSG9tZUxvZ29XcmFwcGVyPlxuICAgICAgICAgICAgICA8TUFJQUlzb2xvZ28gLz5cbiAgICAgICAgICAgIDwvU0NDQUlIb21lTG9nb1dyYXBwZXI+XG4gICAgICAgICAgPC9TQ0NBSUhvbWVJY29uQ29udGFpbmVyPlxuICAgICAgICApfVxuICAgICAgICB7aXNQbGFubmVySG9tZSAmJiAoXG4gICAgICAgICAgPFNDQ0FJSG9tZVRpdGxlQmxvY2sgJGFsaWduPVwic3RhcnRcIj5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVUaXRsZSAkc2l6ZT1cIm1kXCIgJGFsaWduPVwic3RhcnRcIj5cbiAgICAgICAgICAgICAge3QoJ2hvbWVNZW51LnBsYW5uZXJIb21lLnRpdGxlJyl9XG4gICAgICAgICAgICA8L1NDQ0FJSG9tZVRpdGxlPlxuICAgICAgICAgICAgPFNDQ0FJSG9tZVN1YnRpdGxlICRhbGlnbj1cInN0YXJ0XCI+e3QoJ2hvbWVNZW51LnBsYW5uZXJIb21lLnN1YnRpdGxlJyl9PC9TQ0NBSUhvbWVTdWJ0aXRsZT5cbiAgICAgICAgICA8L1NDQ0FJSG9tZVRpdGxlQmxvY2s+XG4gICAgICAgICl9XG4gICAgICAgIHshaXNQbGFubmVySG9tZSAmJiBpc1JlY2VudENvbnRleHRzU3RlcCAmJiBpc0hlYWRlckNvbGxhYm9yYXRvckhvbWUgJiYgKFxuICAgICAgICAgIDxTQ0NBSUhvbWVUaXRsZUJsb2NrICRhbGlnbj1cInN0YXJ0XCIgJGZ1bGxXaWR0aD5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVUaXRsZSAkc2l6ZT1cImNvbnRleHRcIiAkYWxpZ249XCJzdGFydFwiICRmdWxsV2lkdGg+XG4gICAgICAgICAgICAgIHt0KCdob21lTWVudS5jb250ZXh0SG9tZS5ncmVldGluZycsIHsgbmFtZTogdXNlci5maXJzdE5hbWUgfSl9XG4gICAgICAgICAgICA8L1NDQ0FJSG9tZVRpdGxlPlxuICAgICAgICAgICAgPFNDQ0FJSG9tZVN1YnRpdGxlICRhbGlnbj1cInN0YXJ0XCIgJGNvbGxhYm9yYXRvckhvbWU+XG4gICAgICAgICAgICAgIHt0KFxuICAgICAgICAgICAgICAgIGlzSGVhZGVyQ29sbGFib3JhdG9ySG91cnNIb21lXG4gICAgICAgICAgICAgICAgICA/ICdob21lTWVudS5jb250ZXh0SG9tZS5zdWJ0aXRsZUNvbGxhYm9yYXRvcldpdGhIb3VycydcbiAgICAgICAgICAgICAgICAgIDogJ2hvbWVNZW51LmNvbnRleHRIb21lLnN1YnRpdGxlQ29sbGFib3JhdG9yJ1xuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVTdWJ0aXRsZT5cbiAgICAgICAgICA8L1NDQ0FJSG9tZVRpdGxlQmxvY2s+XG4gICAgICAgICl9XG4gICAgICAgIHshaXNQbGFubmVySG9tZSAmJiBpc1JlY2VudENvbnRleHRzU3RlcCAmJiAhaXNIZWFkZXJDb2xsYWJvcmF0b3JIb21lICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPFNDQ0FJSG9tZVRpdGxlPnt0KCdob21lTWVudS5jb250ZXh0SG9tZS5ncmVldGluZycsIHsgbmFtZTogdXNlci5maXJzdE5hbWUgfSl9PC9TQ0NBSUhvbWVUaXRsZT5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVTdWJ0aXRsZT5cbiAgICAgICAgICAgICAge3QoXG4gICAgICAgICAgICAgICAgaXNDb2xsYWJvcmF0b3JSb2xlKHVzZXIucm9sZV9pZClcbiAgICAgICAgICAgICAgICAgID8gJ2hvbWVNZW51LmNvbnRleHRIb21lLnN1YnRpdGxlQ29sbGFib3JhdG9yJ1xuICAgICAgICAgICAgICAgICAgOiAnaG9tZU1lbnUuY29udGV4dEhvbWUuc3VidGl0bGUnXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1NDQ0FJSG9tZVN1YnRpdGxlPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgICB7IWlzUGxhbm5lckhvbWUgJiYgIWlzUmVjZW50Q29udGV4dHNTdGVwICYmIGdyZWV0aW5nICYmIDxTQ0NBSUhvbWVHcmVldGluZz57Z3JlZXRpbmd9PC9TQ0NBSUhvbWVHcmVldGluZz59XG4gICAgICA8L1NDQ0FJSG9tZU1haWFIZWFkZXJTdGFjaz5cbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ0NBSUhvbWVDb250YWluZXIgc2hvd0ZBUXM9e3Nob3dGQVFzfT5cbiAgICAgIHtob21lU2Nyb2xsYWJsZUxheW91dCAmJiA8U0NDQUlIb21lR3JhZGllbnRUb3AgJHNob3c9e3Nob3dUb3BHcmFkaWVudH0gLz59XG4gICAgICA8U0NDQUlIb21lQ29udGVudFxuICAgICAgICByZWY9e2NvbnRlbnRDb250YWluZXJSZWZ9XG4gICAgICAgIHNob3dGQVFzPXtob21lU2Nyb2xsYWJsZUxheW91dH1cbiAgICAgICAgJGlzQWdlbnRWaWV3PXshaXNNQUlBfVxuICAgICAgICAkZmxvYXRpbmdDdXN0b21DZW50ZXI9e2Zsb2F0aW5nQ3VzdG9tQ2VudGVyfVxuICAgICAgICAkY2VudGVyVmVydGljYWxseT17aXNQbGFubmVySG9tZX1cbiAgICAgICAgJGZpeGVkQ29udGVudFdpZHRoPXtpc0hlYWRlckNvbGxhYm9yYXRvckhvbWUgPyBNQUlBX0hFQURFUl9DT0xMQUJPUkFUT1JfSE9NRV9DT05URU5UX1dJRFRIX1BYIDogdW5kZWZpbmVkfVxuICAgICAgPlxuICAgICAgICA8U0NDQUlIb21lQ29udGVudElubmVyXG4gICAgICAgICAgc2hvd0ZBUXM9e2hvbWVTY3JvbGxhYmxlTGF5b3V0fVxuICAgICAgICAgICRpc0FnZW50Vmlldz17IWlzTUFJQX1cbiAgICAgICAgICAkZmxvYXRpbmdDdXN0b21DZW50ZXI9e2Zsb2F0aW5nQ3VzdG9tQ2VudGVyfVxuICAgICAgICAgICRjZW50ZXJWZXJ0aWNhbGx5PXtpc1BsYW5uZXJIb21lfVxuICAgICAgICAgICRhbGlnblN0YXJ0PXtpc0hlYWRlckNvbGxhYm9yYXRvckhvbWV9XG4gICAgICAgICAgJGhlYWRlckNvbGxhYm9yYXRvckhvbWU9e2lzSGVhZGVyQ29sbGFib3JhdG9ySG9tZX1cbiAgICAgICAgPlxuICAgICAgICAgIDxTQ0NBSUhvbWVIZWFkZXJcbiAgICAgICAgICAgICRnYXA9e2lzTUFJQSAmJiBzZWN0aW9uICE9PSAncHJvamVjdCcgPyAnOHB4JyA6ICcyMHB4J31cbiAgICAgICAgICAgICRtYXhXaWR0aD17aXNNQUlBID8gJzEwMCUnIDogJzM4MHB4J31cbiAgICAgICAgICAgICRpc0FnZW50Vmlldz17IWlzTUFJQX1cbiAgICAgICAgICAgICRhbGlnbj17aXNQbGFubmVySG9tZSB8fCBpc0hlYWRlckNvbGxhYm9yYXRvckhvbWUgPyAnc3RhcnQnIDogJ2NlbnRlcid9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3JlbmRlckhlYWRlckNvbnRlbnQoKX1cblxuICAgICAgICAgICAge3NlY3Rpb24gIT09ICdwcm9qZWN0JyAmJiAoXG4gICAgICAgICAgICAgIDxTQ0NBSUhvbWVJbnRyb2R1Y3Rpb24gZXhwYW5kZWQ9e2V4cGFuZGVkfT57IWlzTUFJQSAmJiBhZ2VudD8uaW50cm9kdWN0aW9ufTwvU0NDQUlIb21lSW50cm9kdWN0aW9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L1NDQ0FJSG9tZUhlYWRlcj5cbiAgICAgICAgICB7c2hvd1Byb2plY3RTdW1tYXJ5Q2FyZCAmJiAoXG4gICAgICAgICAgICA8U0NDQUhXcmFwcGVyU3VtbWFyeVByb2plY3Qgb25DbGljaz17aGFuZGxlcnMucHJvamVjdFN1bW1hcnl9PlxuICAgICAgICAgICAgICA8U0NDQUlIb21lUHJvamVjdFN1bW1hcnk+XG4gICAgICAgICAgICAgICAgPFRlbXBsYXRlR3JhZGllbnRJY29uIGhlaWdodD17MjR9IHdpZHRoPXsyNH0gLz5cbiAgICAgICAgICAgICAgPC9TQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeT5cbiAgICAgICAgICAgICAgPFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5Q29udGVudD5cbiAgICAgICAgICAgICAgICA8U0NDQUlIb21lUHJvamVjdFN1bW1hcnlUaXRsZT57dCgnaG9tZU1lbnUucHJvamVjdFN1bW1hcnkudGl0bGUnKX08L1NDQ0FJSG9tZVByb2plY3RTdW1tYXJ5VGl0bGU+XG4gICAgICAgICAgICAgICAgPFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24+XG4gICAgICAgICAgICAgICAgICB7dCgnaG9tZU1lbnUucHJvamVjdFN1bW1hcnkuZGVzY3JpcHRpb24nKX1cbiAgICAgICAgICAgICAgICA8L1NDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24+XG4gICAgICAgICAgICAgIDwvU0NDQUlIb21lUHJvamVjdFN1bW1hcnlDb250ZW50PlxuICAgICAgICAgICAgPC9TQ0NBSFdyYXBwZXJTdW1tYXJ5UHJvamVjdD5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtzaG93RHluYW1pY1NlY3Rpb24gJiYgKFxuICAgICAgICAgICAgPFNDQ0FJSG9tZUR5bmFtaWNTZWN0aW9uICRncm93PXtpc01haWFrZXJ9ICRhbGlnblN0YXJ0PXtpc0hlYWRlckNvbGxhYm9yYXRvckhvbWV9PlxuICAgICAgICAgICAgICB7c2hvdWxkU2hvd1BsYW5uZXJGdWFzTG9hZGluZyA/IChcbiAgICAgICAgICAgICAgICA8RnJlcXVlbnRseVVzZWRBY3Rpb25zXG4gICAgICAgICAgICAgICAgICB2YXJpYW50PVwicGxhbm5lclwiXG4gICAgICAgICAgICAgICAgICBvblN0YXJ0Q2hhdD17b25TdGFydENoYXR9XG4gICAgICAgICAgICAgICAgICBhZ2VudElkPXthZ2VudD8uaWR9XG4gICAgICAgICAgICAgICAgICBpc1Njcm9sbGluZz17aXNTY3JvbGxpbmd9XG4gICAgICAgICAgICAgICAgICBhY3Rpb25zPXtwbGFubmVyRnVhc31cbiAgICAgICAgICAgICAgICAgIGxvYWRpbmc9e3BsYW5uZXJGdWFzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAge3Nob3VsZFNob3dQbGFubmVyRnVhc0NvbnRlbnQgPyAoXG4gICAgICAgICAgICAgICAgPFNDQ0FJSG9tZUNvbGxhYm9yYXRvclNlY3Rpb24+XG4gICAgICAgICAgICAgICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIHt0KCdob21lTWVudS5jb250ZXh0SG9tZS5ob3Vyc1NlY3Rpb24udGl0bGUnKX1cbiAgICAgICAgICAgICAgICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICAgICAgICA8RnJlcXVlbnRseVVzZWRBY3Rpb25zXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwbGFubmVyXCJcbiAgICAgICAgICAgICAgICAgICAgb25TdGFydENoYXQ9e29uU3RhcnRDaGF0fVxuICAgICAgICAgICAgICAgICAgICBhZ2VudElkPXthZ2VudD8uaWR9XG4gICAgICAgICAgICAgICAgICAgIGlzU2Nyb2xsaW5nPXtpc1Njcm9sbGluZ31cbiAgICAgICAgICAgICAgICAgICAgYWN0aW9ucz17cGxhbm5lckZ1YXN9XG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9e3BsYW5uZXJGdWFzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9TQ0NBSUhvbWVDb2xsYWJvcmF0b3JTZWN0aW9uPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAge3JlbmRlclJlY2VudENvbnRleHRzKCl9XG4gICAgICAgICAgICAgIHtzaG91bGRTaG93RmFxcyAmJiAoXG4gICAgICAgICAgICAgICAgPEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc1xuICAgICAgICAgICAgICAgICAgb25TdGFydENoYXQ9e29uU3RhcnRDaGF0fVxuICAgICAgICAgICAgICAgICAgc2hvd0ZBUXM9e3Nob3dGQVFzfVxuICAgICAgICAgICAgICAgICAgc2hvd1Byb2plY3RTdW1tYXJ5PXtzaG93UHJvamVjdFN1bW1hcnl9XG4gICAgICAgICAgICAgICAgICBhZ2VudElkPXthZ2VudD8uaWR9XG4gICAgICAgICAgICAgICAgICBsYW5nPXtsYW5nfVxuICAgICAgICAgICAgICAgICAgaXNTY3JvbGxpbmc9e2lzU2Nyb2xsaW5nfVxuICAgICAgICAgICAgICAgICAgZmFxcz17ZmFxc31cbiAgICAgICAgICAgICAgICAgIGxvYWRpbmc9e2ZhcXNBcmVMb2FkaW5nfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHtzaG91bGRTaG93RnVhcyAmJiAoXG4gICAgICAgICAgICAgICAgPEZyZXF1ZW50bHlVc2VkQWN0aW9uc1xuICAgICAgICAgICAgICAgICAgb25TdGFydENoYXQ9e29uU3RhcnRDaGF0fVxuICAgICAgICAgICAgICAgICAgYWdlbnRJZD17YWdlbnQ/LmlkfVxuICAgICAgICAgICAgICAgICAgaXNTY3JvbGxpbmc9e2lzU2Nyb2xsaW5nfVxuICAgICAgICAgICAgICAgICAgYWN0aW9ucz17ZnVhc31cbiAgICAgICAgICAgICAgICAgIGxvYWRpbmc9e2Z1YXNBcmVMb2FkaW5nfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHtpc01haWFrZXIgPyA8Q2hhdEFJSG9tZU1haWFrZXIgb25TdGFydENoYXQ9e29uU3RhcnRDaGF0fSAvPiA6IG51bGx9XG4gICAgICAgICAgICA8L1NDQ0FJSG9tZUR5bmFtaWNTZWN0aW9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NDQUlIb21lQ29udGVudElubmVyPlxuICAgICAgPC9TQ0NBSUhvbWVDb250ZW50PlxuICAgICAge2hvbWVTY3JvbGxhYmxlTGF5b3V0ICYmIDxTQ0NBSUhvbWVHcmFkaWVudEJvdHRvbSAkc2hvdz17c2hvd0JvdHRvbUdyYWRpZW50fSAvPn1cbiAgICA8L1NDQ0FJSG9tZUNvbnRhaW5lcj5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsU0FBUyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsRUFBRUMsV0FBVyxFQUFFQyxPQUFPLFFBQVEsT0FBTztBQUV6RSxTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBQ3RFLFNBQVND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
|
|
@@ -8,9 +8,8 @@ export var isHoursChargeTool = function isHoursChargeTool(toolName) {
|
|
|
8
8
|
return HOURS_CHARGE_TOOLS.includes(toolName.toLowerCase());
|
|
9
9
|
};
|
|
10
10
|
export var dispatchMaiaHoursCharged = function dispatchMaiaHoursCharged(detail) {
|
|
11
|
-
console.info('[MAIA][hours-sync] dispatch', MAIA_HOURS_CHARGED_EVENT, detail);
|
|
12
11
|
window.dispatchEvent(new CustomEvent(MAIA_HOURS_CHARGED_EVENT, {
|
|
13
12
|
detail: detail
|
|
14
13
|
}));
|
|
15
14
|
};
|
|
16
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNQUlBX0hPVVJTX0NIQVJHRURfRVZFTlQiLCJIT1VSU19DSEFSR0VfVE9PTFMiLCJpc0hvdXJzQ2hhcmdlVG9vbCIsInRvb2xOYW1lIiwiaW5jbHVkZXMiLCJ0b0xvd2VyQ2FzZSIsImRpc3BhdGNoTWFpYUhvdXJzQ2hhcmdlZCIsImRldGFpbCIsIndpbmRvdyIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25zdGFudHMvcGxhbm5lclN5bmNFdmVudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEV2ZW50byBxdWUgZWwgUGxhbm5lciBlc2N1Y2hhIHBhcmEgcmVoaWRyYXRhciBiYXJyYXMvY2hpcHMgZGUgaG9yYXMgdHJhcyBjYXJnYSB2w61hIE1BSUEuICovXG5leHBvcnQgY29uc3QgTUFJQV9IT1VSU19DSEFSR0VEX0VWRU5UID0gJ21haWEtaG91cnMtY2hhcmdlZCdcblxuLyoqIFRvb2xzIGRlc3RydWN0aXZhcyBkZSBjYXJnYSBkZSBob3JhcyAoSElUTCkuIEluY2x1eWUgYWxpYXMgc2luZ3VsYXIvcGx1cmFsLiAqL1xuZXhwb3J0IGNvbnN0IEhPVVJTX0NIQVJHRV9UT09MUyA9IFsnY3JlYXRlX2hvdXJzJywgJ2NyZWF0ZV9ob3VyJ10gYXMgY29uc3RcblxuZXhwb3J0IHR5cGUgSG91cnNDaGFyZ2VUb29sTmFtZSA9ICh0eXBlb2YgSE9VUlNfQ0hBUkdFX1RPT0xTKVtudW1iZXJdXG5cbmV4cG9ydCB0eXBlIE1haWFIb3Vyc0NoYXJnZWREZXRhaWwgPSB7XG4gIHNvdXJjZTogJ21haWEnXG4gIHRvb2xzOiBzdHJpbmdbXVxuICBzZXNzaW9uSWQ/OiBzdHJpbmcgfCBudWxsXG59XG5cbmV4cG9ydCBjb25zdCBpc0hvdXJzQ2hhcmdlVG9vbCA9ICh0b29sTmFtZT86IHN0cmluZyB8IG51bGwpOiBib29sZWFuID0+IHtcbiAgaWYgKCF0b29sTmFtZSkgcmV0dXJuIGZhbHNlXG4gIHJldHVybiAoSE9VUlNfQ0hBUkdFX1RPT0xTIGFzIHJlYWRvbmx5IHN0cmluZ1tdKS5pbmNsdWRlcyh0b29sTmFtZS50b0xvd2VyQ2FzZSgpKVxufVxuXG5leHBvcnQgY29uc3QgZGlzcGF0Y2hNYWlhSG91cnNDaGFyZ2VkID0gKGRldGFpbDogTWFpYUhvdXJzQ2hhcmdlZERldGFpbCk6IHZvaWQgPT4ge1xuICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoTUFJQV9IT1VSU19DSEFSR0VEX0VWRU5ULCB7IGRldGFpbCB9KSlcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxPQUFPLElBQU1BLHdCQUF3QixHQUFHLG9CQUFvQjs7QUFFNUQ7QUFDQSxPQUFPLElBQU1DLGtCQUFrQixHQUFHLENBQUMsY0FBYyxFQUFFLGFBQWEsQ0FBVTtBQVUxRSxPQUFPLElBQU1DLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBaUJBLENBQUlDLFFBQXdCLEVBQWM7RUFDdEUsSUFBSSxDQUFDQSxRQUFRLEVBQUUsT0FBTyxLQUFLO0VBQzNCLE9BQVFGLGtCQUFrQixDQUF1QkcsUUFBUSxDQUFDRCxRQUFRLENBQUNFLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFDbkYsQ0FBQztBQUVELE9BQU8sSUFBTUMsd0JBQXdCLEdBQUcsU0FBM0JBLHdCQUF3QkEsQ0FBSUMsTUFBOEIsRUFBVztFQUNoRkMsTUFBTSxDQUFDQyxhQUFhLENBQUMsSUFBSUMsV0FBVyxDQUFDVix3QkFBd0IsRUFBRTtJQUFFTyxNQUFNLEVBQU5BO0VBQU8sQ0FBQyxDQUFDLENBQUM7QUFDN0UsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
package/lib/context/cor-user.js
CHANGED
|
@@ -24,63 +24,4 @@ export var normalizeUserRoleId = function normalizeUserRoleId(roleId) {
|
|
|
24
24
|
export var isCollaboratorRole = function isCollaboratorRole(roleId) {
|
|
25
25
|
return normalizeUserRoleId(roleId) === CORUserRole.COLLABORATOR;
|
|
26
26
|
};
|
|
27
|
-
|
|
28
|
-
if (raw == null || raw === '') return undefined;
|
|
29
|
-
return raw;
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
/** Fuente principal en web: `userInfo.access.planner_view` (global inyectado por COR). */
|
|
33
|
-
var readUserInfoAccessPlannerView = function readUserInfoAccessPlannerView() {
|
|
34
|
-
var _window$userInfo;
|
|
35
|
-
if (typeof window === 'undefined') return undefined;
|
|
36
|
-
return normalizePlannerViewRaw((_window$userInfo = window.userInfo) === null || _window$userInfo === void 0 || (_window$userInfo = _window$userInfo.access) === null || _window$userInfo === void 0 ? void 0 : _window$userInfo.planner_view);
|
|
37
|
-
};
|
|
38
|
-
var getPlannerViewSources = function getPlannerViewSources(user) {
|
|
39
|
-
var _user$permissions, _user$access_type;
|
|
40
|
-
var userInfoAccess = readUserInfoAccessPlannerView();
|
|
41
|
-
var permissionsPlannerView = normalizePlannerViewRaw((_user$permissions = user.permissions) === null || _user$permissions === void 0 ? void 0 : _user$permissions.planner_view);
|
|
42
|
-
var accessTypePlannerView = normalizePlannerViewRaw((_user$access_type = user.access_type) === null || _user$access_type === void 0 ? void 0 : _user$access_type.planner_view);
|
|
43
|
-
return {
|
|
44
|
-
userInfoAccess: userInfoAccess,
|
|
45
|
-
permissions: permissionsPlannerView,
|
|
46
|
-
access_type: accessTypePlannerView
|
|
47
|
-
};
|
|
48
|
-
};
|
|
49
|
-
var readPlannerViewRaw = function readPlannerViewRaw(user) {
|
|
50
|
-
var _ref, _sources$userInfoAcce;
|
|
51
|
-
var sources = getPlannerViewSources(user);
|
|
52
|
-
return (_ref = (_sources$userInfoAcce = sources.userInfoAccess) !== null && _sources$userInfoAcce !== void 0 ? _sources$userInfoAcce : sources.permissions) !== null && _ref !== void 0 ? _ref : sources.access_type;
|
|
53
|
-
};
|
|
54
|
-
export var getPlannerViewAccessDetails = function getPlannerViewAccessDetails(user) {
|
|
55
|
-
var sources = getPlannerViewSources(user);
|
|
56
|
-
var resolvedFrom = 'none';
|
|
57
|
-
var raw;
|
|
58
|
-
if (sources.userInfoAccess != null) {
|
|
59
|
-
resolvedFrom = 'userInfo.access';
|
|
60
|
-
raw = sources.userInfoAccess;
|
|
61
|
-
} else if (sources.permissions != null) {
|
|
62
|
-
resolvedFrom = 'permissions';
|
|
63
|
-
raw = sources.permissions;
|
|
64
|
-
} else if (sources.access_type != null) {
|
|
65
|
-
resolvedFrom = 'access_type';
|
|
66
|
-
raw = sources.access_type;
|
|
67
|
-
}
|
|
68
|
-
var parsed = Number(raw);
|
|
69
|
-
var value = Number.isFinite(parsed) ? parsed : 0;
|
|
70
|
-
return {
|
|
71
|
-
value: value,
|
|
72
|
-
hasAccess: value !== 0,
|
|
73
|
-
raw: raw,
|
|
74
|
-
resolvedFrom: resolvedFrom,
|
|
75
|
-
sources: sources
|
|
76
|
-
};
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
/** Valor numérico de `planner_view` (0 = sin acceso, 1 = all, 2 = only). */
|
|
80
|
-
export var getPlannerViewAccess = function getPlannerViewAccess(user) {
|
|
81
|
-
return getPlannerViewAccessDetails(user).value;
|
|
82
|
-
};
|
|
83
|
-
export var hasPlannerViewAccess = function hasPlannerViewAccess(user) {
|
|
84
|
-
return getPlannerViewAccess(user) !== 0;
|
|
85
|
-
};
|
|
86
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDb250ZXh0IiwiVXNlckNvbnRleHQiLCJDT1JVc2VyUm9sZSIsInVzZVVzZXIiLCJ1c2VyIiwiRXJyb3IiLCJub3JtYWxpemVVc2VyUm9sZUlkIiwicm9sZUlkIiwidW5kZWZpbmVkIiwicGFyc2VkIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJpc0NvbGxhYm9yYXRvclJvbGUiLCJDT0xMQUJPUkFUT1IiLCJub3JtYWxpemVQbGFubmVyVmlld1JhdyIsInJhdyIsInJlYWRVc2VySW5mb0FjY2Vzc1BsYW5uZXJWaWV3IiwiX3dpbmRvdyR1c2VySW5mbyIsIndpbmRvdyIsInVzZXJJbmZvIiwiYWNjZXNzIiwicGxhbm5lcl92aWV3IiwiZ2V0UGxhbm5lclZpZXdTb3VyY2VzIiwiX3VzZXIkcGVybWlzc2lvbnMiLCJfdXNlciRhY2Nlc3NfdHlwZSIsInVzZXJJbmZvQWNjZXNzIiwicGVybWlzc2lvbnNQbGFubmVyVmlldyIsInBlcm1pc3Npb25zIiwiYWNjZXNzVHlwZVBsYW5uZXJWaWV3IiwiYWNjZXNzX3R5cGUiLCJyZWFkUGxhbm5lclZpZXdSYXciLCJfcmVmIiwiX3NvdXJjZXMkdXNlckluZm9BY2NlIiwic291cmNlcyIsImdldFBsYW5uZXJWaWV3QWNjZXNzRGV0YWlscyIsInJlc29sdmVkRnJvbSIsInZhbHVlIiwiaGFzQWNjZXNzIiwiZ2V0UGxhbm5lclZpZXdBY2Nlc3MiLCJoYXNQbGFubmVyVmlld0FjY2VzcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L2Nvci11c2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFVzZXJDb250ZXh0IH0gZnJvbSAnQHByb2plY3Rjb3IvY29yLWNvbW1vbnMvbGliL3Byb3ZpZGVycy9Vc2VyUHJvdmlkZXInXG5cbmV4cG9ydCBlbnVtIENPUlVzZXJSb2xlIHtcbiAgQ0xFVkVMID0gMSxcbiAgRElSRUNUT1IgPSAyLFxuICBQUk9KRUNUX01BTkFHRVIgPSAzLFxuICBDT0xMQUJPUkFUT1IgPSA0LFxuICBGUkVFTEFOQ0VSID0gNSxcbiAgQ0xJRU5UID0gNixcbn1cblxudHlwZSBQZXJtaXNzaW9uQWN0aW9uID1cbiAgfCAndmlldydcbiAgfCAnZWRpdCdcbiAgfCAnY3JlYXRlJ1xuICB8ICdkZWxldGUnXG4gIHwgJ2FyY2hpdmUnXG4gIHwgJ2RlbGV0ZUZpbGUnXG4gIHwgJ2ludm9pY2UnXG4gIHwgJ3ZpZXdVc2VyQ2FwYWNpdHknXG4gIHwgJ3ZpZXdIb3VycydcbiAgfCAnY3JlYXRlU3ViVGFza3MnXG4gIHwgJ3ZpZXdUYXNrc09wdGlvbnMnXG4gIHwgJ3VwZGF0ZURlc2NyaXB0aW9uJ1xuXG50eXBlIFBlcm1pc3Npb25Nb2R1bGUgPVxuICB8ICdxdW90YXRpb25zJ1xuICB8ICdwcm95ZWN0b3MnXG4gIHwgJ3Rhc2tzJ1xuICB8ICd0YXNrc19kZWFkbGluZSdcbiAgfCAnY2xpZW50cydcbiAgfCAndXNlcnMnXG4gIHwgJ2xlYXZlcydcbiAgfCAncHJvamVjdF9nYW50dCdcbiAgfCAnc2V0dGluZ3MnXG4gIHwgJ3Bhc3N3b3JkcydcbiAgfCAnbm90aWZpY2F0aW9ucydcbiAgfCAnaG91cnMnXG4gIHwgJ3Byb2plY3RfdGVtcGxhdGVzJ1xuICB8ICdtZXRyaWNzJ1xuICB8ICdkYXNoYm9hcmRzJ1xuICB8ICdnYW50dCdcbiAgfCAnc2FsYXJ5J1xuICB8ICdhaV9hZ2VudHMnXG5cbnR5cGUgQWNjZXNzVHlwZU1vZHVsZSA9IFBlcm1pc3Npb25Nb2R1bGUgfCAncGxhbm5lcl92aWV3JyB8ICdwbGFubmVyX2VkaXQnXG5cbnR5cGUgVXNlclBvc2l0aW9uID0ge1xuICBpZD86IG51bWJlclxuICB1c2VyX3Bvc2l0aW9uc191bmlmaWVkX2lkPzogbnVtYmVyXG4gIGxhbmc/OiBzdHJpbmdcbiAgY29tcGFueV9pZD86IG51bWJlclxuICBjcmVhdGVkX2F0Pzogc3RyaW5nXG4gIG5hbWU/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgQ09SVXNlciA9IHtcbiAgdXNlcl9wb3NpdGlvbj86IHN0cmluZyB8IFVzZXJQb3NpdGlvblxuICBjb21wYW55X2lkOiBudW1iZXJcbiAgaWQ6IG51bWJlclxuICBmaXJzdE5hbWU6IHN0cmluZ1xuICBsYXN0TmFtZTogc3RyaW5nXG4gIC8qKiBQcmVzZW50ZSBlbiBydW50aW1lIHbDrWEgYFVzZXJQcm92aWRlcmA7IHVzYWRvIHAuIGVqLiBlbiB0b29sdGlwIGRlIG1lbmNpw7NuIOKAnFlv4oCdLiAqL1xuICBlbWFpbD86IHN0cmluZ1xuICBwaWN0dXJlOiBzdHJpbmdcbiAgcm9sZTogc3RyaW5nXG4gIGNvbXBhbnk6IHN0cmluZ1xuICByb2xlX2lkOiBDT1JVc2VyUm9sZVxuICBsYW5nOiBzdHJpbmdcbiAgcGVybWlzc2lvbnM/OiB7XG4gICAgW00gaW4gUGVybWlzc2lvbk1vZHVsZV0/OiBQYXJ0aWFsPFJlY29yZDxQZXJtaXNzaW9uQWN0aW9uLCBib29sZWFuPj5cbiAgfVxuICBhY2Nlc3NfdHlwZT86IHtcbiAgICBbTSBpbiBBY2Nlc3NUeXBlTW9kdWxlXT86IHN0cmluZ1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCB1c2VVc2VyID0gKCkgPT4ge1xuICBjb25zdCB1c2VyID0gdXNlQ29udGV4dChVc2VyQ29udGV4dClcblxuICBpZiAoIXVzZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VzZXJDb250ZXh0IG5vdCBmb3VuZCcpXG4gIH1cblxuICByZXR1cm4gdXNlciBhcyBDT1JVc2VyXG59XG5cbmV4cG9ydCBjb25zdCBub3JtYWxpemVVc2VyUm9sZUlkID0gKHJvbGVJZDogQ09SVXNlclsncm9sZV9pZCddIHwgdW5kZWZpbmVkKTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKHJvbGVJZCA9PSBudWxsKSByZXR1cm4gdW5kZWZpbmVkXG4gIGNvbnN0IHBhcnNlZCA9IE51bWJlcihyb2xlSWQpXG4gIHJldHVybiBOdW1iZXIuaXNGaW5pdGUocGFyc2VkKSA/IHBhcnNlZCA6IHVuZGVmaW5lZFxufVxuXG5leHBvcnQgY29uc3QgaXNDb2xsYWJvcmF0b3JSb2xlID0gKHJvbGVJZDogQ09SVXNlclsncm9sZV9pZCddIHwgc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkKTogYm9vbGVhbiA9PlxuICBub3JtYWxpemVVc2VyUm9sZUlkKHJvbGVJZCBhcyBDT1JVc2VyWydyb2xlX2lkJ10pID09PSBDT1JVc2VyUm9sZS5DT0xMQUJPUkFUT1JcblxudHlwZSBVc2VyV2l0aFBsYW5uZXJBY2Nlc3MgPSBQaWNrPENPUlVzZXIsICdhY2Nlc3NfdHlwZScgfCAncGVybWlzc2lvbnMnPlxuXG50eXBlIFBsYW5uZXJWaWV3QWNjZXNzU291cmNlID0gJ3VzZXJJbmZvLmFjY2VzcycgfCAncGVybWlzc2lvbnMnIHwgJ2FjY2Vzc190eXBlJyB8ICdub25lJ1xuXG5leHBvcnQgdHlwZSBQbGFubmVyVmlld0FjY2Vzc0RldGFpbHMgPSB7XG4gIHZhbHVlOiBudW1iZXJcbiAgaGFzQWNjZXNzOiBib29sZWFuXG4gIHJhdzogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkXG4gIHJlc29sdmVkRnJvbTogUGxhbm5lclZpZXdBY2Nlc3NTb3VyY2VcbiAgc291cmNlczoge1xuICAgIHVzZXJJbmZvQWNjZXNzOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWRcbiAgICBwZXJtaXNzaW9uczogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkXG4gICAgYWNjZXNzX3R5cGU6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZFxuICB9XG59XG5cbmNvbnN0IG5vcm1hbGl6ZVBsYW5uZXJWaWV3UmF3ID0gKHJhdzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChyYXcgPT0gbnVsbCB8fCByYXcgPT09ICcnKSByZXR1cm4gdW5kZWZpbmVkXG4gIHJldHVybiByYXdcbn1cblxuLyoqIEZ1ZW50ZSBwcmluY2lwYWwgZW4gd2ViOiBgdXNlckluZm8uYWNjZXNzLnBsYW5uZXJfdmlld2AgKGdsb2JhbCBpbnllY3RhZG8gcG9yIENPUikuICovXG5jb25zdCByZWFkVXNlckluZm9BY2Nlc3NQbGFubmVyVmlldyA9ICgpOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybiB1bmRlZmluZWRcbiAgcmV0dXJuIG5vcm1hbGl6ZVBsYW5uZXJWaWV3UmF3KHdpbmRvdy51c2VySW5mbz8uYWNjZXNzPy5wbGFubmVyX3ZpZXcpXG59XG5cbmNvbnN0IGdldFBsYW5uZXJWaWV3U291cmNlcyA9ICh1c2VyOiBVc2VyV2l0aFBsYW5uZXJBY2Nlc3MpID0+IHtcbiAgY29uc3QgdXNlckluZm9BY2Nlc3MgPSByZWFkVXNlckluZm9BY2Nlc3NQbGFubmVyVmlldygpXG5cbiAgY29uc3QgcGVybWlzc2lvbnNQbGFubmVyVmlldyA9IG5vcm1hbGl6ZVBsYW5uZXJWaWV3UmF3KFxuICAgICh1c2VyLnBlcm1pc3Npb25zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkKT8ucGxhbm5lcl92aWV3IGFzIHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZFxuICApXG5cbiAgY29uc3QgYWNjZXNzVHlwZVBsYW5uZXJWaWV3ID0gbm9ybWFsaXplUGxhbm5lclZpZXdSYXcodXNlci5hY2Nlc3NfdHlwZT8ucGxhbm5lcl92aWV3KVxuXG4gIHJldHVybiB7XG4gICAgdXNlckluZm9BY2Nlc3MsXG4gICAgcGVybWlzc2lvbnM6IHBlcm1pc3Npb25zUGxhbm5lclZpZXcsXG4gICAgYWNjZXNzX3R5cGU6IGFjY2Vzc1R5cGVQbGFubmVyVmlldyxcbiAgfVxufVxuXG5jb25zdCByZWFkUGxhbm5lclZpZXdSYXcgPSAodXNlcjogVXNlcldpdGhQbGFubmVyQWNjZXNzKTogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3Qgc291cmNlcyA9IGdldFBsYW5uZXJWaWV3U291cmNlcyh1c2VyKVxuICByZXR1cm4gc291cmNlcy51c2VySW5mb0FjY2VzcyA/PyBzb3VyY2VzLnBlcm1pc3Npb25zID8/IHNvdXJjZXMuYWNjZXNzX3R5cGVcbn1cblxuZXhwb3J0IGNvbnN0IGdldFBsYW5uZXJWaWV3QWNjZXNzRGV0YWlscyA9ICh1c2VyOiBVc2VyV2l0aFBsYW5uZXJBY2Nlc3MpOiBQbGFubmVyVmlld0FjY2Vzc0RldGFpbHMgPT4ge1xuICBjb25zdCBzb3VyY2VzID0gZ2V0UGxhbm5lclZpZXdTb3VyY2VzKHVzZXIpXG4gIGxldCByZXNvbHZlZEZyb206IFBsYW5uZXJWaWV3QWNjZXNzU291cmNlID0gJ25vbmUnXG4gIGxldCByYXc6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZFxuXG4gIGlmIChzb3VyY2VzLnVzZXJJbmZvQWNjZXNzICE9IG51bGwpIHtcbiAgICByZXNvbHZlZEZyb20gPSAndXNlckluZm8uYWNjZXNzJ1xuICAgIHJhdyA9IHNvdXJjZXMudXNlckluZm9BY2Nlc3NcbiAgfSBlbHNlIGlmIChzb3VyY2VzLnBlcm1pc3Npb25zICE9IG51bGwpIHtcbiAgICByZXNvbHZlZEZyb20gPSAncGVybWlzc2lvbnMnXG4gICAgcmF3ID0gc291cmNlcy5wZXJtaXNzaW9uc1xuICB9IGVsc2UgaWYgKHNvdXJjZXMuYWNjZXNzX3R5cGUgIT0gbnVsbCkge1xuICAgIHJlc29sdmVkRnJvbSA9ICdhY2Nlc3NfdHlwZSdcbiAgICByYXcgPSBzb3VyY2VzLmFjY2Vzc190eXBlXG4gIH1cblxuICBjb25zdCBwYXJzZWQgPSBOdW1iZXIocmF3KVxuICBjb25zdCB2YWx1ZSA9IE51bWJlci5pc0Zpbml0ZShwYXJzZWQpID8gcGFyc2VkIDogMFxuXG4gIHJldHVybiB7XG4gICAgdmFsdWUsXG4gICAgaGFzQWNjZXNzOiB2YWx1ZSAhPT0gMCxcbiAgICByYXcsXG4gICAgcmVzb2x2ZWRGcm9tLFxuICAgIHNvdXJjZXMsXG4gIH1cbn1cblxuLyoqIFZhbG9yIG51bcOpcmljbyBkZSBgcGxhbm5lcl92aWV3YCAoMCA9IHNpbiBhY2Nlc28sIDEgPSBhbGwsIDIgPSBvbmx5KS4gKi9cbmV4cG9ydCBjb25zdCBnZXRQbGFubmVyVmlld0FjY2VzcyA9ICh1c2VyOiBVc2VyV2l0aFBsYW5uZXJBY2Nlc3MpOiBudW1iZXIgPT4gZ2V0UGxhbm5lclZpZXdBY2Nlc3NEZXRhaWxzKHVzZXIpLnZhbHVlXG5cbmV4cG9ydCBjb25zdCBoYXNQbGFubmVyVmlld0FjY2VzcyA9ICh1c2VyOiBVc2VyV2l0aFBsYW5uZXJBY2Nlc3MpOiBib29sZWFuID0+IGdldFBsYW5uZXJWaWV3QWNjZXNzKHVzZXIpICE9PSAwXG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFVBQVUsUUFBUSxPQUFPO0FBQ2xDLFNBQVNDLFdBQVcsUUFBUSxvREFBb0Q7QUFFaEYsV0FBWUMsV0FBVywwQkFBWEEsV0FBVztFQUFYQSxXQUFXLENBQVhBLFdBQVc7RUFBWEEsV0FBVyxDQUFYQSxXQUFXO0VBQVhBLFdBQVcsQ0FBWEEsV0FBVztFQUFYQSxXQUFXLENBQVhBLFdBQVc7RUFBWEEsV0FBVyxDQUFYQSxXQUFXO0VBQVhBLFdBQVcsQ0FBWEEsV0FBVztFQUFBLE9BQVhBLFdBQVc7QUFBQTtBQTJFdkIsT0FBTyxJQUFNQyxPQUFPLEdBQUcsU0FBVkEsT0FBT0EsQ0FBQSxFQUFTO0VBQzNCLElBQU1DLElBQUksR0FBR0osVUFBVSxDQUFDQyxXQUFXLENBQUM7RUFFcEMsSUFBSSxDQUFDRyxJQUFJLEVBQUU7SUFDVCxNQUFNLElBQUlDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQztFQUMxQztFQUVBLE9BQU9ELElBQUk7QUFDYixDQUFDO0FBRUQsT0FBTyxJQUFNRSxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUFJQyxNQUFzQyxFQUF5QjtFQUNqRyxJQUFJQSxNQUFNLElBQUksSUFBSSxFQUFFLE9BQU9DLFNBQVM7RUFDcEMsSUFBTUMsTUFBTSxHQUFHQyxNQUFNLENBQUNILE1BQU0sQ0FBQztF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
|
|
27
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDb250ZXh0IiwiVXNlckNvbnRleHQiLCJDT1JVc2VyUm9sZSIsInVzZVVzZXIiLCJ1c2VyIiwiRXJyb3IiLCJub3JtYWxpemVVc2VyUm9sZUlkIiwicm9sZUlkIiwidW5kZWZpbmVkIiwicGFyc2VkIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJpc0NvbGxhYm9yYXRvclJvbGUiLCJDT0xMQUJPUkFUT1IiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udGV4dC9jb3ItdXNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBVc2VyQ29udGV4dCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2Nvci1jb21tb25zL2xpYi9wcm92aWRlcnMvVXNlclByb3ZpZGVyJ1xuXG5leHBvcnQgZW51bSBDT1JVc2VyUm9sZSB7XG4gIENMRVZFTCA9IDEsXG4gIERJUkVDVE9SID0gMixcbiAgUFJPSkVDVF9NQU5BR0VSID0gMyxcbiAgQ09MTEFCT1JBVE9SID0gNCxcbiAgRlJFRUxBTkNFUiA9IDUsXG4gIENMSUVOVCA9IDYsXG59XG5cbnR5cGUgUGVybWlzc2lvbkFjdGlvbiA9XG4gIHwgJ3ZpZXcnXG4gIHwgJ2VkaXQnXG4gIHwgJ2NyZWF0ZSdcbiAgfCAnZGVsZXRlJ1xuICB8ICdhcmNoaXZlJ1xuICB8ICdkZWxldGVGaWxlJ1xuICB8ICdpbnZvaWNlJ1xuICB8ICd2aWV3VXNlckNhcGFjaXR5J1xuICB8ICd2aWV3SG91cnMnXG4gIHwgJ2NyZWF0ZVN1YlRhc2tzJ1xuICB8ICd2aWV3VGFza3NPcHRpb25zJ1xuICB8ICd1cGRhdGVEZXNjcmlwdGlvbidcblxudHlwZSBQZXJtaXNzaW9uTW9kdWxlID1cbiAgfCAncXVvdGF0aW9ucydcbiAgfCAncHJveWVjdG9zJ1xuICB8ICd0YXNrcydcbiAgfCAndGFza3NfZGVhZGxpbmUnXG4gIHwgJ2NsaWVudHMnXG4gIHwgJ3VzZXJzJ1xuICB8ICdsZWF2ZXMnXG4gIHwgJ3Byb2plY3RfZ2FudHQnXG4gIHwgJ3NldHRpbmdzJ1xuICB8ICdwYXNzd29yZHMnXG4gIHwgJ25vdGlmaWNhdGlvbnMnXG4gIHwgJ2hvdXJzJ1xuICB8ICdwcm9qZWN0X3RlbXBsYXRlcydcbiAgfCAnbWV0cmljcydcbiAgfCAnZGFzaGJvYXJkcydcbiAgfCAnZ2FudHQnXG4gIHwgJ3NhbGFyeSdcbiAgfCAnYWlfYWdlbnRzJ1xuXG50eXBlIEFjY2Vzc1R5cGVNb2R1bGUgPSBQZXJtaXNzaW9uTW9kdWxlIHwgJ3BsYW5uZXJfdmlldycgfCAncGxhbm5lcl9lZGl0J1xuXG50eXBlIFVzZXJQb3NpdGlvbiA9IHtcbiAgaWQ/OiBudW1iZXJcbiAgdXNlcl9wb3NpdGlvbnNfdW5pZmllZF9pZD86IG51bWJlclxuICBsYW5nPzogc3RyaW5nXG4gIGNvbXBhbnlfaWQ/OiBudW1iZXJcbiAgY3JlYXRlZF9hdD86IHN0cmluZ1xuICBuYW1lPzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIENPUlVzZXIgPSB7XG4gIHVzZXJfcG9zaXRpb24/OiBzdHJpbmcgfCBVc2VyUG9zaXRpb25cbiAgY29tcGFueV9pZDogbnVtYmVyXG4gIGlkOiBudW1iZXJcbiAgZmlyc3ROYW1lOiBzdHJpbmdcbiAgbGFzdE5hbWU6IHN0cmluZ1xuICAvKiogUHJlc2VudGUgZW4gcnVudGltZSB2w61hIGBVc2VyUHJvdmlkZXJgOyB1c2FkbyBwLiBlai4gZW4gdG9vbHRpcCBkZSBtZW5jacOzbiDigJxZb+KAnS4gKi9cbiAgZW1haWw/OiBzdHJpbmdcbiAgcGljdHVyZTogc3RyaW5nXG4gIHJvbGU6IHN0cmluZ1xuICBjb21wYW55OiBzdHJpbmdcbiAgcm9sZV9pZDogQ09SVXNlclJvbGVcbiAgbGFuZzogc3RyaW5nXG4gIHBlcm1pc3Npb25zPzoge1xuICAgIFtNIGluIFBlcm1pc3Npb25Nb2R1bGVdPzogUGFydGlhbDxSZWNvcmQ8UGVybWlzc2lvbkFjdGlvbiwgYm9vbGVhbj4+XG4gIH1cbiAgYWNjZXNzX3R5cGU/OiB7XG4gICAgW00gaW4gQWNjZXNzVHlwZU1vZHVsZV0/OiBzdHJpbmdcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgdXNlVXNlciA9ICgpID0+IHtcbiAgY29uc3QgdXNlciA9IHVzZUNvbnRleHQoVXNlckNvbnRleHQpXG5cbiAgaWYgKCF1c2VyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVc2VyQ29udGV4dCBub3QgZm91bmQnKVxuICB9XG5cbiAgcmV0dXJuIHVzZXIgYXMgQ09SVXNlclxufVxuXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplVXNlclJvbGVJZCA9IChyb2xlSWQ6IENPUlVzZXJbJ3JvbGVfaWQnXSB8IHVuZGVmaW5lZCk6IG51bWJlciB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChyb2xlSWQgPT0gbnVsbCkgcmV0dXJuIHVuZGVmaW5lZFxuICBjb25zdCBwYXJzZWQgPSBOdW1iZXIocm9sZUlkKVxuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiB1bmRlZmluZWRcbn1cblxuZXhwb3J0IGNvbnN0IGlzQ29sbGFib3JhdG9yUm9sZSA9IChyb2xlSWQ6IENPUlVzZXJbJ3JvbGVfaWQnXSB8IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT5cbiAgbm9ybWFsaXplVXNlclJvbGVJZChyb2xlSWQgYXMgQ09SVXNlclsncm9sZV9pZCddKSA9PT0gQ09SVXNlclJvbGUuQ09MTEFCT1JBVE9SXG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFVBQVUsUUFBUSxPQUFPO0FBQ2xDLFNBQVNDLFdBQVcsUUFBUSxvREFBb0Q7QUFFaEYsV0FBWUMsV0FBVywwQkFBWEEsV0FBVztFQUFYQSxXQUFXLENBQVhBLFdBQVc7RUFBWEEsV0FBVyxDQUFYQSxXQUFXO0VBQVhBLFdBQVcsQ0FBWEEsV0FBVztFQUFYQSxXQUFXLENBQVhBLFdBQVc7RUFBWEEsV0FBVyxDQUFYQSxXQUFXO0VBQVhBLFdBQVcsQ0FBWEEsV0FBVztFQUFBLE9BQVhBLFdBQVc7QUFBQTtBQTJFdkIsT0FBTyxJQUFNQyxPQUFPLEdBQUcsU0FBVkEsT0FBT0EsQ0FBQSxFQUFTO0VBQzNCLElBQU1DLElBQUksR0FBR0osVUFBVSxDQUFDQyxXQUFXLENBQUM7RUFFcEMsSUFBSSxDQUFDRyxJQUFJLEVBQUU7SUFDVCxNQUFNLElBQUlDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQztFQUMxQztFQUVBLE9BQU9ELElBQUk7QUFDYixDQUFDO0FBRUQsT0FBTyxJQUFNRSxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUFJQyxNQUFzQyxFQUF5QjtFQUNqRyxJQUFJQSxNQUFNLElBQUksSUFBSSxFQUFFLE9BQU9DLFNBQVM7RUFDcEMsSUFBTUMsTUFBTSxHQUFHQyxNQUFNLENBQUNILE1BQU0sQ0FBQztFQUM3QixPQUFPRyxNQUFNLENBQUNDLFFBQVEsQ0FBQ0YsTUFBTSxDQUFDLEdBQUdBLE1BQU0sR0FBR0QsU0FBUztBQUNyRCxDQUFDO0FBRUQsT0FBTyxJQUFNSSxrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFJTCxNQUF3RDtFQUFBLE9BQ3pGRCxtQkFBbUIsQ0FBQ0MsTUFBNEIsQ0FBQyxLQUFLTCxXQUFXLENBQUNXLFlBQVk7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|