@librechat/client 0.4.56 → 0.4.58

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/dist/index.js CHANGED
@@ -32,7 +32,7 @@ var DOMPurify = require('dompurify');
32
32
  var framerMotion = require('framer-motion');
33
33
  var ProgressPrimitive = require('@radix-ui/react-progress');
34
34
  var inputOtp = require('input-otp');
35
- var ResizablePrimitive = require('react-resizable-panels');
35
+ var reactResizablePanels = require('react-resizable-panels');
36
36
  var SelectPrimitive = require('@radix-ui/react-select');
37
37
  var Select$1 = require('@ariakit/react/select');
38
38
  var reactVirtual = require('@tanstack/react-virtual');
@@ -74,7 +74,6 @@ var SwitchPrimitives__namespace = /*#__PURE__*/_interopNamespaceDefault(SwitchPr
74
74
  var TabsPrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(TabsPrimitive);
75
75
  var RadixToast__namespace = /*#__PURE__*/_interopNamespaceDefault(RadixToast);
76
76
  var ProgressPrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(ProgressPrimitive);
77
- var ResizablePrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(ResizablePrimitive);
78
77
  var SelectPrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(SelectPrimitive);
79
78
  var Select__namespace = /*#__PURE__*/_interopNamespaceDefault(Select$1);
80
79
 
@@ -317,7 +316,6 @@ exports.NotificationSeverity = void 0;
317
316
  NotificationSeverity["ERROR"] = "error";
318
317
  })(exports.NotificationSeverity || (exports.NotificationSeverity = {}));
319
318
 
320
- const langAtom = jotai.atom('en');
321
319
  const chatDirectionAtom = jotai.atom('ltr');
322
320
  const fontSizeAtom = jotai.atom('text-base');
323
321
  const toastState = jotai.atom({
@@ -448,15 +446,10 @@ function useCombobox({ value, options, }) {
448
446
  };
449
447
  }
450
448
 
449
+ /** Language lifecycle is managed by the host app — do not add i18n.changeLanguage() calls here. */
451
450
  function useLocalize() {
452
- const lang = jotai.useAtomValue(langAtom);
453
- const { t, i18n } = reactI18next.useTranslation();
454
- React.useEffect(() => {
455
- if (i18n.language !== lang) {
456
- i18n.changeLanguage(lang);
457
- }
458
- }, [lang, i18n]);
459
- return (phraseKey, options) => t(phraseKey, options);
451
+ const { t } = reactI18next.useTranslation();
452
+ return React.useCallback((phraseKey, options) => t(phraseKey, options), [t]);
460
453
  }
461
454
 
462
455
  function useMediaQuery(query) {
@@ -675,7 +668,7 @@ SecretInput.displayName = 'SecretInput';
675
668
  * />
676
669
  */
677
670
  const FilterInput = React__namespace.forwardRef(({ className, label, inputId, containerClassName, ...props }, ref) => {
678
- return (jsxRuntime.jsxs("div", { className: cn('relative', containerClassName), children: [jsxRuntime.jsx("input", { id: inputId, ref: ref, placeholder: " ", "aria-label": label, className: cn('peer flex h-10 w-full rounded-lg border border-border-light bg-transparent px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50', className), ...props }), jsxRuntime.jsx("label", { htmlFor: inputId, className: "pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-sm text-text-secondary transition-all duration-200 peer-focus:top-0 peer-focus:bg-background peer-focus:px-1 peer-focus:text-xs peer-[:not(:placeholder-shown)]:top-0 peer-[:not(:placeholder-shown)]:bg-background peer-[:not(:placeholder-shown)]:px-1 peer-[:not(:placeholder-shown)]:text-xs", children: label })] }));
671
+ return (jsxRuntime.jsxs("div", { className: cn('relative', containerClassName), children: [jsxRuntime.jsx("input", { id: inputId, ref: ref, placeholder: " ", "aria-label": label, className: cn('peer flex h-9 w-full rounded-lg border border-border-light bg-transparent px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50', className), ...props }), jsxRuntime.jsx("label", { htmlFor: inputId, className: "pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-sm text-text-secondary transition-all duration-200 peer-focus:top-0 peer-focus:bg-background peer-focus:px-1 peer-focus:text-xs peer-[:not(:placeholder-shown)]:top-0 peer-[:not(:placeholder-shown)]:bg-background peer-[:not(:placeholder-shown)]:px-1 peer-[:not(:placeholder-shown)]:text-xs", children: label })] }));
679
672
  });
680
673
  FilterInput.displayName = 'FilterInput';
681
674
 
@@ -884,10 +877,13 @@ function Toast() {
884
877
  var css_248z$2 = ".tooltip {\n z-index: 150;\n cursor: pointer;\n pointer-events: auto;\n border-radius: 0.275rem;\n background-color: var(--surface-primary);\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n font-size: 1rem;\n line-height: 1.5rem;\n color: black;\n box-shadow: 0 2px 4px 0 rgb(0 0 0 / 0.25);\n /* Enhanced layout for longer descriptions */\n max-width: 320px;\n word-wrap: break-word;\n text-align: left;\n}\n\n@media (max-width: 640px) {\n .tooltip {\n max-width: 200px;\n }\n}\n\n.tooltip:where(.dark, .dark *) {\n background-color: var(--surface-primary);\n color: white;\n box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.35);\n}\n";
885
878
  styleInject(css_248z$2);
886
879
 
887
- const TooltipAnchor = React.forwardRef(function TooltipAnchor({ description, side = 'top', className, role, enableHTML = false, ...props }, ref) {
888
- const tooltip = Ariakit__namespace.useTooltipStore({ placement: side });
889
- const mounted = Ariakit__namespace.useStoreState(tooltip, (state) => state.mounted);
890
- const placement = Ariakit__namespace.useStoreState(tooltip, (state) => state.placement);
880
+ /**
881
+ * Isolated component that subscribes to tooltip store state independently,
882
+ * so the anchor element never re-renders when the tooltip mounts/unmounts.
883
+ */
884
+ const TooltipPopup = React.memo(function TooltipPopup({ store, description, enableHTML, }) {
885
+ const mounted = Ariakit__namespace.useStoreState(store, (state) => state.mounted);
886
+ const placement = Ariakit__namespace.useStoreState(store, (state) => state.placement);
891
887
  const sanitizer = React.useMemo(() => {
892
888
  const instance = DOMPurify();
893
889
  instance.addHook('afterSanitizeAttributes', (node) => {
@@ -930,15 +926,19 @@ const TooltipAnchor = React.forwardRef(function TooltipAnchor({ description, sid
930
926
  return { x: 0, y: 0 };
931
927
  }
932
928
  }, [placement]);
933
- const handleKeyDown = (event) => {
929
+ return (jsxRuntime.jsx(framerMotion.AnimatePresence, { children: mounted === true && (jsxRuntime.jsxs(Ariakit__namespace.Tooltip, { gutter: 4, alwaysVisible: true, className: "tooltip", render: jsxRuntime.jsx(framerMotion.motion.div, { initial: { opacity: 0, x, y }, animate: { opacity: 1, x: 0, y: 0 }, exit: { opacity: 0, x, y } }), children: [jsxRuntime.jsx(Ariakit__namespace.TooltipArrow, {}), enableHTML ? (jsxRuntime.jsx("div", { dangerouslySetInnerHTML: {
930
+ __html: sanitizedHTML,
931
+ } })) : (description)] })) }));
932
+ });
933
+ const TooltipAnchor = React.forwardRef(function TooltipAnchor({ description, side = 'top', className, role, enableHTML = false, ...props }, ref) {
934
+ const tooltip = Ariakit__namespace.useTooltipStore({ placement: side });
935
+ const handleKeyDown = React.useCallback((event) => {
934
936
  if (role === 'button' && event.key === 'Enter') {
935
937
  event.preventDefault();
936
938
  event.target.click();
937
939
  }
938
- };
939
- return (jsxRuntime.jsxs(Ariakit__namespace.TooltipProvider, { store: tooltip, hideTimeout: 0, children: [jsxRuntime.jsx(Ariakit__namespace.TooltipAnchor, { ...props, ref: ref, role: role, onKeyDown: handleKeyDown, className: cn('cursor-pointer', className) }), jsxRuntime.jsx(framerMotion.AnimatePresence, { children: mounted === true && (jsxRuntime.jsxs(Ariakit__namespace.Tooltip, { gutter: 4, alwaysVisible: true, className: "tooltip", render: jsxRuntime.jsx(framerMotion.motion.div, { initial: { opacity: 0, x, y }, animate: { opacity: 1, x: 0, y: 0 }, exit: { opacity: 0, x, y } }), children: [jsxRuntime.jsx(Ariakit__namespace.TooltipArrow, {}), enableHTML ? (jsxRuntime.jsx("div", { dangerouslySetInnerHTML: {
940
- __html: sanitizedHTML,
941
- } })) : (description)] })) })] }));
940
+ }, [role]);
941
+ return (jsxRuntime.jsxs(Ariakit__namespace.TooltipProvider, { store: tooltip, hideTimeout: 0, children: [jsxRuntime.jsx(Ariakit__namespace.TooltipAnchor, { ...props, ref: ref, role: role, onKeyDown: handleKeyDown, className: cn('cursor-pointer', className) }), jsxRuntime.jsx(TooltipPopup, { store: tooltip, description: description, enableHTML: enableHTML })] }));
942
942
  });
943
943
 
944
944
  const Pagination = ({ className, ...props }) => (jsxRuntime.jsx("nav", { role: "navigation", "aria-label": "pagination", className: cn('mx-auto flex w-full justify-center', className), ...props }));
@@ -1042,10 +1042,10 @@ function useMultiSearch({ availableOptions = [], placeholder, getTextKeyOverride
1042
1042
  return [filteredOptions, searchRender];
1043
1043
  }
1044
1044
 
1045
- const ResizablePanelGroup = ({ className = '', ...props }) => (jsxRuntime.jsx(ResizablePrimitive__namespace.PanelGroup, { className: cn('flex h-full w-full data-[panel-group-direction=vertical]:flex-col', className), ...props }));
1046
- const ResizablePanel = ResizablePrimitive__namespace.Panel;
1047
- const ResizableHandle = ({ withHandle, className = '', ...props }) => (jsxRuntime.jsx(ResizablePrimitive__namespace.PanelResizeHandle, { className: cn('relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90', className), ...props, children: withHandle && (jsxRuntime.jsx("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border", children: jsxRuntime.jsx(lucideReact.GripVertical, { className: "h-2.5 w-2.5" }) })) }));
1048
- const ResizableHandleAlt = ({ withHandle, className = '', ...props }) => (jsxRuntime.jsx(ResizablePrimitive__namespace.PanelResizeHandle, { className: cn('group relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90', className), ...props, children: withHandle && (jsxRuntime.jsx("div", { className: "invisible z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border group-hover:visible group-active:visible group-data-[resize-handle-active]:visible", children: jsxRuntime.jsx(lucideReact.GripVertical, { className: "h-2.5 w-2.5" }) })) }));
1045
+ const ResizablePanelGroup = ({ className = '', ...props }) => (jsxRuntime.jsx(reactResizablePanels.Group, { className: cn('h-full w-full', className), ...props }));
1046
+ const ResizablePanel = reactResizablePanels.Panel;
1047
+ const ResizableHandle = ({ withHandle, className = '', ...props }) => (jsxRuntime.jsx(reactResizablePanels.Separator, { className: cn('relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1', className), ...props, children: withHandle && (jsxRuntime.jsx("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border", children: jsxRuntime.jsx(lucideReact.GripVertical, { className: "h-2.5 w-2.5" }) })) }));
1048
+ const ResizableHandleAlt = ({ withHandle, className = '', ...props }) => (jsxRuntime.jsx(reactResizablePanels.Separator, { className: cn('group relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1', className), ...props, children: withHandle && (jsxRuntime.jsx("div", { className: "invisible z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border group-hover:visible group-active:visible group-data-[separator=active]:visible", children: jsxRuntime.jsx(lucideReact.GripVertical, { className: "h-2.5 w-2.5" }) })) }));
1049
1049
 
1050
1050
  // @ts-ignore - Radix UI type conflicts with React types
1051
1051
  const Select = SelectPrimitive__namespace.Root;
@@ -1072,7 +1072,7 @@ SelectItem.displayName = SelectPrimitive__namespace.Item.displayName;
1072
1072
  const SelectSeparator = React__namespace.forwardRef(({ className = '', ...props }, ref) => (jsxRuntime.jsx(SelectPrimitive__namespace.Separator, { ref: ref, className: cn('-mx-1 my-1 h-px bg-muted', className), ...props })));
1073
1073
  SelectSeparator.displayName = SelectPrimitive__namespace.Separator.displayName;
1074
1074
 
1075
- const Radio = React.memo(function Radio({ options, value, onChange, disabled = false, className = '', fullWidth = false, 'aria-labelledby': ariaLabelledBy, }) {
1075
+ const Radio = React.memo(function Radio({ options, value, onChange, disabled = false, className = '', buttonClassName = '', fullWidth = false, 'aria-labelledby': ariaLabelledBy, }) {
1076
1076
  const localize = useLocalize();
1077
1077
  const buttonRefs = React.useRef([]);
1078
1078
  const [isMounted, setIsMounted] = React.useState(false);
@@ -1090,7 +1090,7 @@ const Radio = React.memo(function Radio({ options, value, onChange, disabled = f
1090
1090
  if (selectedButton && container) {
1091
1091
  const containerRect = container.getBoundingClientRect();
1092
1092
  const buttonRect = selectedButton.getBoundingClientRect();
1093
- const offsetLeft = buttonRect.left - containerRect.left - 4;
1093
+ const offsetLeft = buttonRect.left - containerRect.left;
1094
1094
  setBackgroundStyle({
1095
1095
  width: `${buttonRect.width}px`,
1096
1096
  transform: `translateX(${offsetLeft}px)`,
@@ -1120,9 +1120,9 @@ const Radio = React.memo(function Radio({ options, value, onChange, disabled = f
1120
1120
  return (jsxRuntime.jsx("div", { className: "relative inline-flex items-center rounded-lg bg-muted p-1 opacity-50", role: "radiogroup", "aria-labelledby": ariaLabelledBy, children: jsxRuntime.jsx("span", { className: "px-4 py-2 text-xs text-muted-foreground", children: localize('com_ui_no_options') }) }));
1121
1121
  }
1122
1122
  const selectedIndex = options.findIndex((opt) => opt.value === currentValue);
1123
- return (jsxRuntime.jsxs("div", { className: `relative ${fullWidth ? 'flex' : 'inline-flex'} items-center rounded-lg bg-muted p-1 ${className}`, role: "radiogroup", "aria-labelledby": ariaLabelledBy, children: [selectedIndex >= 0 && isMounted && (jsxRuntime.jsx("div", { className: "pointer-events-none absolute inset-y-1 rounded-md border border-border/50 bg-background shadow-sm transition-all duration-300 ease-out", style: backgroundStyle })), options.map((option, index) => (jsxRuntime.jsxs("button", { ref: (el) => {
1123
+ return (jsxRuntime.jsxs("div", { className: `relative ${fullWidth ? 'flex' : 'inline-flex'} items-center rounded-lg bg-muted ${className}`, role: "radiogroup", "aria-labelledby": ariaLabelledBy, children: [selectedIndex >= 0 && isMounted && (jsxRuntime.jsx("div", { className: "pointer-events-none absolute inset-y-0 rounded-md border border-border/50 bg-background shadow-sm transition-all duration-300 ease-out", style: backgroundStyle })), options.map((option, index) => (jsxRuntime.jsxs("button", { ref: (el) => {
1124
1124
  buttonRefs.current[index] = el;
1125
- }, type: "button", role: "radio", "aria-checked": currentValue === option.value, onClick: () => handleChange(option.value), disabled: disabled, className: `relative z-10 flex h-[34px] items-center justify-center gap-2 rounded-md px-4 text-sm font-medium transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring ${currentValue === option.value ? 'text-foreground' : 'text-foreground'} ${disabled ? 'cursor-not-allowed opacity-50' : ''} ${fullWidth ? 'flex-1' : ''}`, children: [option.icon && (jsxRuntime.jsx("span", { className: "flex-shrink-0", "aria-hidden": "true", children: option.icon })), jsxRuntime.jsx("span", { className: "whitespace-nowrap", children: option.label })] }, option.value)))] }));
1125
+ }, type: "button", role: "radio", "aria-checked": currentValue === option.value, onClick: () => handleChange(option.value), disabled: disabled, className: `relative z-10 flex h-[34px] items-center justify-center gap-2 rounded-md px-4 text-sm font-medium transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring ${currentValue === option.value ? 'text-foreground' : 'text-foreground'} ${disabled ? 'cursor-not-allowed opacity-50' : ''} ${fullWidth ? 'flex-1' : ''} ${buttonClassName}`, children: [option.icon && (jsxRuntime.jsx("span", { className: "flex-shrink-0", "aria-hidden": "true", children: option.icon })), jsxRuntime.jsx("span", { className: "whitespace-nowrap", children: option.label })] }, option.value)))] }));
1126
1126
  });
1127
1127
 
1128
1128
  function Badge({ icon: Icon, label, id, isActive = false, isEditing = false, isDragging = false, isAvailable = true, isInChat = false, onBadgeAction, onToggle, className, ...props }) {
@@ -1398,7 +1398,7 @@ function LockIcon() {
1398
1398
  }
1399
1399
 
1400
1400
  function NewChatIcon({ className = '' }) {
1401
- return (jsxRuntime.jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: cn('text-black dark:text-white', className), "aria-hidden": "true", "aria-hidden": "true", children: jsxRuntime.jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M16.7929 2.79289C18.0118 1.57394 19.9882 1.57394 21.2071 2.79289C22.4261 4.01184 22.4261 5.98815 21.2071 7.20711L12.7071 15.7071C12.5196 15.8946 12.2652 16 12 16H9C8.44772 16 8 15.5523 8 15V12C8 11.7348 8.10536 11.4804 8.29289 11.2929L16.7929 2.79289ZM19.7929 4.20711C19.355 3.7692 18.645 3.7692 18.2071 4.2071L10 12.4142V14H11.5858L19.7929 5.79289C20.2308 5.35499 20.2308 4.64501 19.7929 4.20711ZM6 5C5.44772 5 5 5.44771 5 6V18C5 18.5523 5.44772 19 6 19H18C18.5523 19 19 18.5523 19 18V14C19 13.4477 19.4477 13 20 13C20.5523 13 21 13.4477 21 14V18C21 19.6569 19.6569 21 18 21H6C4.34315 21 3 19.6569 3 18V6C3 4.34314 4.34315 3 6 3H10C10.5523 3 11 3.44771 11 4C11 4.55228 10.5523 5 10 5H6Z", fill: "currentColor" }) }));
1401
+ return (jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: cn('text-black dark:text-white', className), "aria-hidden": "true", children: jsxRuntime.jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M16.7929 2.79289C18.0118 1.57394 19.9882 1.57394 21.2071 2.79289C22.4261 4.01184 22.4261 5.98815 21.2071 7.20711L12.7071 15.7071C12.5196 15.8946 12.2652 16 12 16H9C8.44772 16 8 15.5523 8 15V12C8 11.7348 8.10536 11.4804 8.29289 11.2929L16.7929 2.79289ZM19.7929 4.20711C19.355 3.7692 18.645 3.7692 18.2071 4.2071L10 12.4142V14H11.5858L19.7929 5.79289C20.2308 5.35499 20.2308 4.64501 19.7929 4.20711ZM6 5C5.44772 5 5 5.44771 5 6V18C5 18.5523 5.44772 19 6 19H18C18.5523 19 19 18.5523 19 18V14C19 13.4477 19.4477 13 20 13C20.5523 13 21 13.4477 21 14V18C21 19.6569 19.6569 21 18 21H6C4.34315 21 3 19.6569 3 18V6C3 4.34314 4.34315 3 6 3H10C10.5523 3 11 3.44771 11 4C11 4.55228 10.5523 5 10 5H6Z", fill: "currentColor" }) }));
1402
1402
  }
1403
1403
 
1404
1404
  function ExperimentIcon() {
@@ -1457,7 +1457,7 @@ function PersonalizationIcon({ className = '' }) {
1457
1457
  }
1458
1458
 
1459
1459
  function MCPIcon({ className }) {
1460
- return (jsxRuntime.jsxs("svg", { width: "195", height: "195", viewBox: "0 2 195 195", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: className, "aria-hidden": "true", children: [jsxRuntime.jsx("path", { d: "M25 97.8528L92.8823 29.9706C102.255 20.598 117.451 20.598 126.823 29.9706V29.9706C136.196 39.3431 136.196 54.5391 126.823 63.9117L75.5581 115.177", stroke: "currentColor", strokeWidth: "12", strokeLinecap: "round" }), jsxRuntime.jsx("path", { d: "M76.2653 114.47L126.823 63.9117C136.196 54.5391 151.392 54.5391 160.765 63.9117L161.118 64.2652C170.491 73.6378 170.491 88.8338 161.118 98.2063L99.7248 159.6C96.6006 162.724 96.6006 167.789 99.7248 170.913L112.331 183.52", stroke: "currentColor", strokeWidth: "12", strokeLinecap: "round" }), jsxRuntime.jsx("path", { d: "M109.853 46.9411L59.6482 97.1457C50.2757 106.518 50.2757 121.714 59.6482 131.087V131.087C69.0208 140.459 84.2168 140.459 93.5894 131.087L143.794 80.8822", stroke: "currentColor", strokeWidth: "12", strokeLinecap: "round" })] }));
1460
+ return (jsxRuntime.jsxs("svg", { width: "195", height: "195", viewBox: "0 2 195 195", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: className, "aria-hidden": "true", children: [jsxRuntime.jsx("path", { d: "M25 97.8528L92.8823 29.9706C102.255 20.598 117.451 20.598 126.823 29.9706V29.9706C136.196 39.3431 136.196 54.5391 126.823 63.9117L75.5581 115.177", stroke: "currentColor", strokeWidth: "16", strokeLinecap: "round" }), jsxRuntime.jsx("path", { d: "M76.2653 114.47L126.823 63.9117C136.196 54.5391 151.392 54.5391 160.765 63.9117L161.118 64.2652C170.491 73.6378 170.491 88.8338 161.118 98.2063L99.7248 159.6C96.6006 162.724 96.6006 167.789 99.7248 170.913L112.331 183.52", stroke: "currentColor", strokeWidth: "16", strokeLinecap: "round" }), jsxRuntime.jsx("path", { d: "M109.853 46.9411L59.6482 97.1457C50.2757 106.518 50.2757 121.714 59.6482 131.087V131.087C69.0208 140.459 84.2168 140.459 93.5894 131.087L143.794 80.8822", stroke: "currentColor", strokeWidth: "16", strokeLinecap: "round" })] }));
1461
1461
  }
1462
1462
 
1463
1463
  function VectorIcon({ className }) {
@@ -1623,13 +1623,13 @@ const Dropdown = ({ value: selectedValue, label = '', onChange, options, classNa
1623
1623
  const option = getOptionObject(currentValue);
1624
1624
  return option ? option.label : currentValue;
1625
1625
  };
1626
- return (jsxRuntime.jsxs("div", { className: cn('relative', className), children: [jsxRuntime.jsxs(Select__namespace.Select, { store: selectProps, className: cn('focus:ring-offset-ring-offset relative inline-flex items-center justify-between rounded-xl border border-input bg-background px-3 py-2 text-sm text-text-primary transition-all duration-200 ease-in-out hover:bg-accent hover:text-accent-foreground focus:ring-ring-primary', iconOnly ? 'h-full w-10' : 'w-fit gap-2', className), "data-testid": testId, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, children: [jsxRuntime.jsxs("div", { className: "flex w-full items-center gap-2", children: [icon, !iconOnly && (jsxRuntime.jsxs("span", { className: "block truncate", children: [label, (() => {
1626
+ return (jsxRuntime.jsxs("div", { className: cn('relative', className), children: [jsxRuntime.jsxs(Select__namespace.Select, { store: selectProps, className: cn('focus:ring-offset-ring-offset relative inline-flex items-center justify-between rounded-xl border border-input bg-background px-3 py-2 text-sm text-text-primary transition-all duration-200 ease-in-out hover:bg-accent hover:text-accent-foreground focus:ring-ring-primary', iconOnly ? 'size-10' : 'w-fit gap-2', className), "data-testid": testId, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, children: [jsxRuntime.jsxs("div", { className: "flex w-full items-center gap-2", children: [icon, !iconOnly && (jsxRuntime.jsxs("span", { className: "block truncate", children: [label, (() => {
1627
1627
  const matchedOption = getOptionObject(selectedValue);
1628
1628
  if (matchedOption && renderValue) {
1629
1629
  return renderValue(matchedOption);
1630
1630
  }
1631
1631
  return getOptionLabel(selectedValue);
1632
- })()] }))] }), !iconOnly && jsxRuntime.jsx(Select__namespace.SelectArrow, {})] }), jsxRuntime.jsx(Select__namespace.SelectPopover, { portal: portal, store: selectProps, className: cn('popover-ui z-40', sizeClasses, className, 'max-h-[80vh] overflow-y-auto', '[pointer-events:auto]'), children: options.map((item, index) => {
1632
+ })()] }))] }), !iconOnly && jsxRuntime.jsx(Select__namespace.SelectArrow, {})] }), jsxRuntime.jsx(Select__namespace.SelectPopover, { portal: portal, store: selectProps, className: cn('popover-ui z-40 text-sm', sizeClasses, className, 'max-h-[80vh] overflow-y-auto', '[pointer-events:auto]'), children: options.map((item, index) => {
1633
1633
  if (isDivider(item)) {
1634
1634
  return jsxRuntime.jsx("div", { className: "my-1 border-t border-border-heavy" }, `divider-${index}`);
1635
1635
  }
@@ -2912,7 +2912,7 @@ function ControlCombobox({ selectedValue, displayValue, items, setValue, ariaLab
2912
2912
  }, [isCollapsed]);
2913
2913
  const selectIconClassName = cn('flex h-5 w-5 items-center justify-center overflow-hidden rounded-full', iconClassName);
2914
2914
  const optionIconClassName = cn('mr-2 flex h-5 w-5 items-center justify-center overflow-hidden rounded-full', iconClassName);
2915
- return (jsxRuntime.jsxs("div", { className: cn('flex w-full items-center justify-center px-1', containerClassName), children: [jsxRuntime.jsx(Ariakit__namespace.SelectLabel, { store: select, className: "sr-only", children: ariaLabel }), jsxRuntime.jsxs(Ariakit__namespace.Select, { ref: buttonRef, store: select, id: selectId, disabled: disabled, className: cn('flex items-center justify-center gap-2 rounded-full bg-surface-secondary', 'text-text-primary hover:bg-surface-tertiary', 'border border-border-light', isCollapsed ? 'h-10 w-10' : 'h-10 w-full rounded-xl px-3 py-2 text-sm', className), children: [SelectIcon != null && iconSide === 'left' && (jsxRuntime.jsx("div", { className: selectIconClassName, children: SelectIcon })), !isCollapsed && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("span", { className: "flex-grow truncate text-left", children: displayValue != null
2915
+ return (jsxRuntime.jsxs("div", { className: cn('flex w-full items-center justify-center px-1', containerClassName), children: [jsxRuntime.jsx(Ariakit__namespace.SelectLabel, { store: select, className: "sr-only", children: ariaLabel }), jsxRuntime.jsxs(Ariakit__namespace.Select, { ref: buttonRef, store: select, id: selectId, disabled: disabled, className: cn('flex items-center justify-center gap-2 rounded-full bg-surface-secondary', 'text-text-primary hover:bg-surface-tertiary', 'border border-border-light', isCollapsed ? 'h-9 w-9' : 'h-9 w-full rounded-xl px-3 py-2 text-sm', className), children: [SelectIcon != null && iconSide === 'left' && (jsxRuntime.jsx("div", { className: selectIconClassName, children: SelectIcon })), !isCollapsed && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("span", { className: "flex-grow truncate text-left", children: displayValue != null
2916
2916
  ? displayValue || selectPlaceholder
2917
2917
  : selectedValue || selectPlaceholder }), SelectIcon != null && iconSide === 'right' && (jsxRuntime.jsx("div", { className: selectIconClassName, children: SelectIcon })), showCarat && jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4 text-text-secondary" })] }))] }), jsxRuntime.jsxs(Ariakit__namespace.SelectPopover, { store: select, gutter: 4, portal: true, className: cn('animate-popover z-40 overflow-hidden rounded-xl border border-border-light bg-surface-secondary shadow-lg'), style: { width: isCollapsed ? '300px' : (buttonWidth ?? '300px') }, children: [jsxRuntime.jsx("div", { className: "py-1.5", children: jsxRuntime.jsxs("div", { className: "relative", children: [jsxRuntime.jsx(lucideReact.Search, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-primary" }), jsxRuntime.jsx(Ariakit__namespace.Combobox, { store: combobox, autoSelect: true, placeholder: searchPlaceholder, className: "w-full rounded-md bg-surface-secondary py-2 pl-9 pr-3 text-sm text-text-primary focus:outline-none" })] }) }), jsxRuntime.jsx("div", { className: "max-h-[300px] overflow-auto", children: jsxRuntime.jsx(Ariakit__namespace.ComboboxList, { store: combobox, children: jsxRuntime.jsx(selectRenderer.SelectRenderer, { store: select, items: matches, itemSize: ROW_HEIGHT, overscan: 5, children: ({ value, icon, label, ...item }) => (jsxRuntime.jsxs(Ariakit__namespace.ComboboxItem, { ...item, className: cn('flex w-full cursor-pointer items-center px-3 text-sm', 'text-text-primary hover:bg-surface-tertiary', 'data-[active-item]:bg-surface-tertiary'), render: jsxRuntime.jsx(Ariakit__namespace.SelectItem, { value: value }), children: [icon != null && iconSide === 'left' && (jsxRuntime.jsx("div", { className: optionIconClassName, children: icon })), jsxRuntime.jsx("span", { className: "flex-grow truncate text-left", children: label }), icon != null && iconSide === 'right' && (jsxRuntime.jsx("div", { className: optionIconClassName, children: icon }))] }, item.id)) }) }) })] })] }));
2918
2918
  }
@@ -2934,9 +2934,8 @@ const OGDialogTemplate = React.forwardRef((props, ref) => {
2934
2934
  const localize = useLocalize();
2935
2935
  const { title, main, buttons, selection, className, leftButtons, description = '', mainClassName, headerClassName, footerClassName, showCloseButton = false, overlayClassName, showCancelButton = true, } = props;
2936
2936
  const isLegacySelection = isSelectionProps(selection);
2937
- const { selectHandler, selectClasses, selectText, isLoading } = isLegacySelection
2938
- ? selection
2939
- : {};
2937
+ const legacySelection = isLegacySelection ? selection : null;
2938
+ const { selectHandler, selectClasses, selectText, isLoading } = legacySelection ?? {};
2940
2939
  const defaultSelect = 'bg-gray-800 text-white transition-colors hover:bg-gray-700 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-gray-200 dark:text-gray-800 dark:hover:bg-gray-200';
2941
2940
  let selectionContent = null;
2942
2941
  if (isLegacySelection) {
@@ -3261,7 +3260,6 @@ exports.defaultTheme = defaultTheme;
3261
3260
  exports.fontSizeAtom = fontSizeAtom;
3262
3261
  exports.getInitialTheme = getInitialTheme$1;
3263
3262
  exports.isDark = isDark;
3264
- exports.langAtom = langAtom;
3265
3263
  exports.logger = logger;
3266
3264
  exports.themeColorsAtom = themeColorsAtom;
3267
3265
  exports.themeModeAtom = themeModeAtom;
@@ -3277,4 +3275,4 @@ exports.useOnClickOutside = useOnClickOutside;
3277
3275
  exports.useTheme = useTheme;
3278
3276
  exports.useToast = useToast;
3279
3277
  exports.useToastContext = useToastContext;
3280
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy91dGlscy50cyIsIi4uL3NyYy91dGlscy90aGVtZS50cyIsIi4uL3NyYy91dGlscy9sb2dnZXIudHMiLCIuLi9zcmMvY29tcG9uZW50cy9BY2NvcmRpb24udHN4IiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWluamVjdC9kaXN0L3N0eWxlLWluamVjdC5lcy5qcyIsIi4uL3NyYy9jb21wb25lbnRzL0FuaW1hdGVkVGFicy50c3giLCIuLi9zcmMvY29tcG9uZW50cy9BbGVydERpYWxvZy50c3giLCIuLi9zcmMvY29tcG9uZW50cy9CcmVhZGNydW1iLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0J1dHRvbi50c3giLCIuLi9zcmMvY29tcG9uZW50cy9DaGVja2JveC50c3giLCIuLi9zcmMvY29tbW9uL2VudW0udHMiLCIuLi9zcmMvc3RvcmUudHMiLCIuLi9zcmMvaG9va3MvdXNlVG9hc3QudHMiLCIuLi9zcmMvaG9va3MvdXNlQXZhdGFyLnRzIiwiLi4vc3JjL2hvb2tzL3VzZUNvbWJvYm94LnRzIiwiLi4vc3JjL2hvb2tzL3VzZUxvY2FsaXplLnRzIiwiLi4vc3JjL2hvb2tzL3VzZU1lZGlhUXVlcnkudHN4IiwiLi4vc3JjL2hvb2tzL3VzZURlbGF5ZWRSZW5kZXIudHN4IiwiLi4vc3JjL2hvb2tzL3VzZU9uQ2xpY2tPdXRzaWRlLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvRGlhbG9nLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0Ryb3Bkb3duTWVudS50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Ib3ZlckNhcmQudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvSW5wdXQudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvSW5wdXROdW1iZXIudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvU2VjcmV0SW5wdXQudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvRmlsdGVySW5wdXQudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvTGFiZWwudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvT3JpZ2luYWxEaWFsb2cudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvUXVlc3Rpb25NYXJrLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL1NsaWRlci50c3giLCIuLi9zcmMvY29tcG9uZW50cy9TZXBhcmF0b3IudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvSW5wdXRDb21ib2JveC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Ta2VsZXRvbi50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Td2l0Y2gudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvVGFibGUudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvVGFicy50c3giLCIuLi9zcmMvY29tcG9uZW50cy9UYWcudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvVGV4dGFyZWEudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvVGV4dGFyZWFBdXRvc2l6ZS50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Ub2FzdC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Ub29sdGlwLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL1BhZ2luYXRpb24udHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvUHJvZ3Jlc3MudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvSW5wdXRPVFAudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvTXVsdGlTZWFyY2gudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvUmVzaXphYmxlLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL1NlbGVjdC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9SYWRpby50c3giLCIuLi9zcmMvY29tcG9uZW50cy9CYWRnZS50c3giLCIuLi9zcmMvc3Zncy9BcmNoaXZlSWNvbi50c3giLCIuLi9zcmMvc3Zncy9CbG9ja3MudHN4IiwiLi4vc3JjL3N2Z3MvUGx1Z2luLnRzeCIsIi4uL3NyYy9zdmdzL0dQVEljb24udHN4IiwiLi4vc3JjL3N2Z3MvRWRpdEljb24udHN4IiwiLi4vc3JjL3N2Z3MvRGF0YUljb24udHN4IiwiLi4vc3JjL3N2Z3MvU2lkZWJhci50c3giLCIuLi9zcmMvc3Zncy9Nb2JpbGVTaWRlYmFyLnRzeCIsIi4uL3NyYy9zdmdzL1NwaW5uZXIudHN4IiwiLi4vc3JjL3N2Z3MvQ2xpcGJvYXJkLnRzeCIsIi4uL3NyYy9zdmdzL0NoZWNrTWFyay50c3giLCIuLi9zcmMvc3Zncy9Dcm9zc0ljb24udHN4IiwiLi4vc3JjL3N2Z3MvTG9nT3V0SWNvbi50c3giLCIuLi9zcmMvc3Zncy9DdXN0b21NaW5pbWFsSWNvbi50c3giLCIuLi9zcmMvc3Zncy9MaWdodG5pbmdJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0F0dGFjaG1lbnRJY29uLnRzeCIsIi4uL3NyYy9zdmdzL01lc3NhZ2VzU3F1YXJlZC50c3giLCIuLi9zcmMvc3Zncy9TdG9wR2VuZXJhdGluZ0ljb24udHN4IiwiLi4vc3JjL3N2Z3MvUmVnZW5lcmF0ZUljb24udHN4IiwiLi4vc3JjL3N2Z3MvQ29udGludWVJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0dvb2dsZUljb24udHN4IiwiLi4vc3JjL3N2Z3MvRmFjZWJvb2tJY29uLnRzeCIsIi4uL3NyYy9zdmdzL09wZW5JREljb24udHN4IiwiLi4vc3JjL3N2Z3MvR2l0aHViSWNvbi50c3giLCIuLi9zcmMvc3Zncy9EaXNjb3JkSWNvbi50c3giLCIuLi9zcmMvc3Zncy9BcHBsZUljb24udHN4IiwiLi4vc3JjL3N2Z3MvU2FtbEljb24udHN4IiwiLi4vc3JjL3N2Z3MvQW50aHJvcGljSWNvbi50c3giLCIuLi9zcmMvc3Zncy9TZW5kSWNvbi50c3giLCIuLi9zcmMvc3Zncy9MaW5rSWNvbi50c3giLCIuLi9zcmMvc3Zncy9Eb3RzSWNvbi50c3giLCIuLi9zcmMvc3Zncy9HZWFySWNvbi50c3giLCIuLi9zcmMvc3Zncy9QaW5JY29uLnRzeCIsIi4uL3NyYy9zdmdzL1RyYXNoSWNvbi50c3giLCIuLi9zcmMvc3Zncy9NaW5pbWFsUGx1Z2luLnRzeCIsIi4uL3NyYy9zdmdzL0F6dXJlTWluaW1hbEljb24udHN4IiwiLi4vc3JjL3N2Z3MvT3BlbkFJTWluaW1hbEljb24udHN4IiwiLi4vc3JjL3N2Z3MvQ2hhdEdQVE1pbmltYWxJY29uLnRzeCIsIi4uL3NyYy9zdmdzL1BhTE1pbmltYWxJY29uLnRzeCIsIi4uL3NyYy9zdmdzL1BhTE1JY29uLnRzeCIsIi4uL3NyYy9zdmdzL0NvZGV5SWNvbi50c3giLCIuLi9zcmMvc3Zncy9HZW1pbmlJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0dvb2dsZU1pbmltYWxJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0FudGhyb3BpY01pbmltYWxJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0xpc3RlbmluZ0ljb24udHN4IiwiLi4vc3JjL3N2Z3MvVm9sdW1lSWNvbi50c3giLCIuLi9zcmMvc3Zncy9Wb2x1bWVNdXRlSWNvbi50c3giLCIuLi9zcmMvc3Zncy9TZW5kTWVzc2FnZUljb24udHN4IiwiLi4vc3JjL3N2Z3MvVXNlckljb24udHN4IiwiLi4vc3JjL3N2Z3MvTG9ja0ljb24udHN4IiwiLi4vc3JjL3N2Z3MvTmV3Q2hhdEljb24udHN4IiwiLi4vc3JjL3N2Z3MvRXhwZXJpbWVudEljb24udHN4IiwiLi4vc3JjL3N2Z3MvR29vZ2xlSWNvbkNoYXQudHN4IiwiLi4vc3JjL3N2Z3MvQmlydGhkYXlJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0Fzc2lzdGFudEljb24udHN4IiwiLi4vc3JjL3N2Z3MvU3BhcmtsZXMudHN4IiwiLi4vc3JjL3N2Z3MvU3BlZWNoSWNvbi50c3giLCIuLi9zcmMvc3Zncy9TYXZlSWNvbi50c3giLCIuLi9zcmMvc3Zncy9DaXJjbGVIZWxwSWNvbi50c3giLCIuLi9zcmMvc3Zncy9CZWRyb2NrSWNvbi50c3giLCIuLi9zcmMvc3Zncy9UaHVtYlVwSWNvbi50c3giLCIuLi9zcmMvc3Zncy9UaHVtYkRvd25JY29uLnRzeCIsIi4uL3NyYy9zdmdzL1hBSWNvbi50c3giLCIuLi9zcmMvc3Zncy9QZXJzb25hbGl6YXRpb25JY29uLnRzeCIsIi4uL3NyYy9zdmdzL01DUEljb24udHN4IiwiLi4vc3JjL3N2Z3MvVmVjdG9ySWNvbi50c3giLCIuLi9zcmMvc3Zncy9TcXVpcmNsZVBsdXNJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0F1ZGlvUGF0aHMudHN4IiwiLi4vc3JjL3N2Z3MvQ29kZVBhdGhzLnRzeCIsIi4uL3NyYy9zdmdzL0ZpbGVJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0ZpbGVQYXRocy50c3giLCIuLi9zcmMvc3Zncy9TaGVldFBhdGhzLnRzeCIsIi4uL3NyYy9zdmdzL1RleHRQYXRocy50c3giLCIuLi9zcmMvc3Zncy9WaWRlb1BhdGhzLnRzeCIsIi4uL3NyYy9zdmdzL1NoYXJlUG9pbnRJY29uLnRzeCIsIi4uL3NyYy9zdmdzL01vb25zaG90SWNvbi50c3giLCIuLi9zcmMvY29tcG9uZW50cy9BdmF0YXIudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvQ29tYm9ib3gudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvRHJvcGRvd24udHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvQW5pbWF0ZWRTZWFyY2hJbnB1dC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9EYXRhVGFibGUudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvU3BsaXRUZXh0LnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0Zvcm1JbnB1dC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9QaXhlbENhcmQudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvRmlsZVVwbG9hZC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9NdWx0aVNlbGVjdC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Ecm9wZG93blBvcHVwLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0RlbGF5ZWRSZW5kZXIudHN4IiwiLi4vc3JjL3RoZW1lL3V0aWxzL2FwcGx5VGhlbWUudHMiLCIuLi9zcmMvdGhlbWUvY29udGV4dC9UaGVtZVByb3ZpZGVyLnRzeCIsIi4uL3NyYy90aGVtZS9hdG9tcy90aGVtZUF0b21zLnRzIiwiLi4vc3JjL3RoZW1lL3RoZW1lcy9kZWZhdWx0LnRzIiwiLi4vc3JjL3RoZW1lL3RoZW1lcy9kYXJrLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGhlbWVTZWxlY3Rvci50c3giLCIuLi9zcmMvY29tcG9uZW50cy9JbmZvSG92ZXJDYXJkLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0NoZWNrYm94QnV0dG9uLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0RpYWxvZ1RlbXBsYXRlLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL1NlbGVjdERyb3BEb3duLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0NvbnRyb2xDb21ib2JveC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9PR0RpYWxvZ1RlbXBsYXRlLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0lucHV0V2l0aERyb3BEb3duLnRzeCIsIi4uL3NyYy9Qcm92aWRlcnMvVG9hc3RDb250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBFU00gdXRpbGl0eSBmdW5jdGlvbnNcbmltcG9ydCB7IHR5cGUgQ2xhc3NWYWx1ZSwgY2xzeCB9IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcblxuZXhwb3J0IGNvbnN0IGNuID0gKC4uLmlucHV0czogQ2xhc3NWYWx1ZVtdKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIHR3TWVyZ2UoY2xzeChpbnB1dHMpKTtcbn07XG4iLCJleHBvcnQgY29uc3QgYXBwbHlGb250U2l6ZSA9ICh2YWw6IHN0cmluZykgPT4ge1xuICBjb25zdCByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICBjb25zdCBzaXplID0gdmFsLnNwbGl0KCctJylbMV07IC8vIFRoaXMgd2lsbCBiZSAneHMnLCAnc20nLCAnYmFzZScsICdsZycsIG9yICd4bCdcblxuICBzd2l0Y2ggKHNpemUpIHtcbiAgICBjYXNlICd4cyc6XG4gICAgICByb290LnN0eWxlLnNldFByb3BlcnR5KCctLW1hcmtkb3duLWZvbnQtc2l6ZScsICcwLjc1cmVtJyk7IC8vIDEycHhcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3NtJzpcbiAgICAgIHJvb3Quc3R5bGUuc2V0UHJvcGVydHkoJy0tbWFya2Rvd24tZm9udC1zaXplJywgJzAuODc1cmVtJyk7IC8vIDE0cHhcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2Jhc2UnOlxuICAgICAgcm9vdC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1tYXJrZG93bi1mb250LXNpemUnLCAnMXJlbScpOyAvLyAxNnB4XG4gICAgICBicmVhaztcbiAgICBjYXNlICdsZyc6XG4gICAgICByb290LnN0eWxlLnNldFByb3BlcnR5KCctLW1hcmtkb3duLWZvbnQtc2l6ZScsICcxLjEyNXJlbScpOyAvLyAxOHB4XG4gICAgICBicmVhaztcbiAgICBjYXNlICd4bCc6XG4gICAgICByb290LnN0eWxlLnNldFByb3BlcnR5KCctLW1hcmtkb3duLWZvbnQtc2l6ZScsICcxLjI1cmVtJyk7IC8vIDIwcHhcbiAgICAgIGJyZWFrO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SW5pdGlhbFRoZW1lID0gKCkgPT4ge1xuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmxvY2FsU3RvcmFnZSkge1xuICAgIGNvbnN0IHN0b3JlZFByZWZzID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjb2xvci10aGVtZScpO1xuICAgIGlmICh0eXBlb2Ygc3RvcmVkUHJlZnMgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gc3RvcmVkUHJlZnM7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlck1lZGlhID0gd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKTtcbiAgICBpZiAodXNlck1lZGlhLm1hdGNoZXMpIHtcbiAgICAgIHJldHVybiAnZGFyayc7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICdsaWdodCc7XG59O1xuIiwiY29uc3QgaXNEZXZlbG9wbWVudCA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnO1xuY29uc3QgaXNMb2dnZXJFbmFibGVkID0gcHJvY2Vzcy5lbnYuVklURV9FTkFCTEVfTE9HR0VSID09PSAndHJ1ZSc7XG5jb25zdCBsb2dnZXJGaWx0ZXIgPSBwcm9jZXNzLmVudi5WSVRFX0xPR0dFUl9GSUxURVIgfHwgJyc7XG5cbnR5cGUgTG9nRnVuY3Rpb24gPSAoLi4uYXJnczogdW5rbm93bltdKSA9PiB2b2lkO1xuXG5jb25zdCBjcmVhdGVMb2dGdW5jdGlvbiA9IChcbiAgY29uc29sZU1ldGhvZDogTG9nRnVuY3Rpb24sXG4gIHR5cGU/OiAnbG9nJyB8ICd3YXJuJyB8ICdlcnJvcicgfCAnaW5mbycgfCAnZGVidWcnIHwgJ2RpcicsXG4pOiBMb2dGdW5jdGlvbiA9PiB7XG4gIHJldHVybiAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgaWYgKGlzRGV2ZWxvcG1lbnQgfHwgaXNMb2dnZXJFbmFibGVkKSB7XG4gICAgICBjb25zdCB0YWcgPSB0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycgPyBhcmdzWzBdIDogJyc7XG4gICAgICBpZiAoc2hvdWxkTG9nKHRhZykpIHtcbiAgICAgICAgaWYgKHRhZyAmJiB0eXBlb2YgYXJnc1sxXSA9PT0gJ3N0cmluZycgJiYgdHlwZSA9PT0gJ2Vycm9yJykge1xuICAgICAgICAgIGNvbnNvbGVNZXRob2QoYFske3RhZ31dICR7YXJnc1sxXX1gLCAuLi5hcmdzLnNsaWNlKDIpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0YWcgJiYgYXJncy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgY29uc29sZU1ldGhvZChgWyR7dGFnfV1gLCAuLi5hcmdzLnNsaWNlKDEpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlTWV0aG9kKC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuY29uc3QgbG9nZ2VyID0ge1xuICBsb2c6IGNyZWF0ZUxvZ0Z1bmN0aW9uKGNvbnNvbGUubG9nLCAnbG9nJyksXG4gIGRpcjogY3JlYXRlTG9nRnVuY3Rpb24oY29uc29sZS5kaXIsICdkaXInKSxcbiAgd2FybjogY3JlYXRlTG9nRnVuY3Rpb24oY29uc29sZS53YXJuLCAnd2FybicpLFxuICBpbmZvOiBjcmVhdGVMb2dGdW5jdGlvbihjb25zb2xlLmluZm8sICdpbmZvJyksXG4gIGVycm9yOiBjcmVhdGVMb2dGdW5jdGlvbihjb25zb2xlLmVycm9yLCAnZXJyb3InKSxcbiAgZGVidWc6IGNyZWF0ZUxvZ0Z1bmN0aW9uKGNvbnNvbGUuZGVidWcsICdkZWJ1ZycpLFxufTtcblxuZnVuY3Rpb24gc2hvdWxkTG9nKHRhZzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghbG9nZ2VyRmlsdGVyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLyogSWYgbm8gdGFnIGlzIHByb3ZpZGVkLCBhbHdheXMgbG9nICovXG4gIGlmICghdGFnKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGxvZ2dlckZpbHRlclxuICAgIC5zcGxpdCgnLCcpXG4gICAgLnNvbWUoKGZpbHRlcikgPT4gdGFnLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyLnRyaW0oKS50b0xvd2VyQ2FzZSgpKSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGxvZ2dlcjtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIEFjY29yZGlvblByaW1pdGl2ZSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtYWNjb3JkaW9uJztcbmltcG9ydCB7IENoZXZyb25Eb3duSWNvbiB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1pY29ucyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5jb25zdCBBY2NvcmRpb24gPSBBY2NvcmRpb25QcmltaXRpdmUuUm9vdDtcblxuY29uc3QgQWNjb3JkaW9uSXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIEFjY29yZGlvblByaW1pdGl2ZS5JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBBY2NvcmRpb25QcmltaXRpdmUuSXRlbT5cbj4oKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8QWNjb3JkaW9uUHJpbWl0aXZlLkl0ZW0gcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oJ2JvcmRlci1iJywgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuKSk7XG5BY2NvcmRpb25JdGVtLmRpc3BsYXlOYW1lID0gJ0FjY29yZGlvbkl0ZW0nO1xuXG5jb25zdCBBY2NvcmRpb25UcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQWNjb3JkaW9uUHJpbWl0aXZlLlRyaWdnZXI+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEFjY29yZGlvblByaW1pdGl2ZS5UcmlnZ2VyPlxuPigoeyBjbGFzc05hbWUgPSAnJywgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8QWNjb3JkaW9uUHJpbWl0aXZlLkhlYWRlciBjbGFzc05hbWU9XCJmbGV4XCI+XG4gICAgPEFjY29yZGlvblByaW1pdGl2ZS5UcmlnZ2VyXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdmbGV4IGZsZXgtMSBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB5LTQgdGV4dC1zbSBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWFsbCBob3Zlcjp1bmRlcmxpbmUgWyZbZGF0YS1zdGF0ZT1vcGVuXT5zdmddOnJvdGF0ZS0xODAnLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDxDaGV2cm9uRG93bkljb24gY2xhc3NOYW1lPVwiaC00IHctNCBzaHJpbmstMCB0ZXh0LW11dGVkLWZvcmVncm91bmQgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMjAwXCIgLz5cbiAgICA8L0FjY29yZGlvblByaW1pdGl2ZS5UcmlnZ2VyPlxuICA8L0FjY29yZGlvblByaW1pdGl2ZS5IZWFkZXI+XG4pKTtcbkFjY29yZGlvblRyaWdnZXIuZGlzcGxheU5hbWUgPSBBY2NvcmRpb25QcmltaXRpdmUuVHJpZ2dlci5kaXNwbGF5TmFtZTtcblxuY29uc3QgQWNjb3JkaW9uQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIEFjY29yZGlvblByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBBY2NvcmRpb25QcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lID0gJycsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPEFjY29yZGlvblByaW1pdGl2ZS5Db250ZW50XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPVwib3ZlcmZsb3cteS1oaWRkZW4gb3ZlcmZsb3cteC12aXNpYmxlIHRleHQtc20gdHJhbnNpdGlvbi1vcGFjaXR5IGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1hY2NvcmRpb24tdXAgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1hY2NvcmRpb24tZG93biBkYXRhLVtzdGF0ZT1jbG9zZWRdOm9wYWNpdHktMCBkYXRhLVtzdGF0ZT1vcGVuXTpvcGFjaXR5LTEwMFwiXG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPGRpdiBjbGFzc05hbWU9e2NuKCdwYi00IHB0LTAnLCBjbGFzc05hbWUpfT57Y2hpbGRyZW59PC9kaXY+XG4gIDwvQWNjb3JkaW9uUHJpbWl0aXZlLkNvbnRlbnQ+XG4pKTtcbkFjY29yZGlvbkNvbnRlbnQuZGlzcGxheU5hbWUgPSBBY2NvcmRpb25QcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgQWNjb3JkaW9uLCBBY2NvcmRpb25JdGVtLCBBY2NvcmRpb25UcmlnZ2VyLCBBY2NvcmRpb25Db250ZW50IH07XG4iLCJmdW5jdGlvbiBzdHlsZUluamVjdChjc3MsIHJlZikge1xuICBpZiAoIHJlZiA9PT0gdm9pZCAwICkgcmVmID0ge307XG4gIHZhciBpbnNlcnRBdCA9IHJlZi5pbnNlcnRBdDtcblxuICBpZiAoIWNzcyB8fCB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7IHJldHVybjsgfVxuXG4gIHZhciBoZWFkID0gZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICBzdHlsZS50eXBlID0gJ3RleHQvY3NzJztcblxuICBpZiAoaW5zZXJ0QXQgPT09ICd0b3AnKSB7XG4gICAgaWYgKGhlYWQuZmlyc3RDaGlsZCkge1xuICAgICAgaGVhZC5pbnNlcnRCZWZvcmUoc3R5bGUsIGhlYWQuZmlyc3RDaGlsZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgfVxuXG4gIGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHN0eWxlSW5qZWN0O1xuIiwiaW1wb3J0ICogYXMgQXJpYWtpdCBmcm9tICdAYXJpYWtpdC9yZWFjdCc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgRWxlbWVudFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5pbXBvcnQgJy4vQW5pbWF0ZWRUYWJzLmNzcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFiSXRlbSB7XG4gIGlkPzogc3RyaW5nO1xuICBsYWJlbDogUmVhY3QuUmVhY3ROb2RlO1xuICBjb250ZW50OiBSZWFjdC5SZWFjdE5vZGU7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbmltYXRlZFRhYnNQcm9wcyB7XG4gIHRhYnM6IFRhYkl0ZW1bXTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICB0YWJMaXN0Q2xhc3NOYW1lPzogc3RyaW5nO1xuICB0YWJDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHRhYlBhbmVsQ2xhc3NOYW1lPzogc3RyaW5nO1xuICB0YWJMaXN0UHJvcHM/OiBBcmlha2l0LlRhYkxpc3RQcm9wcztcbiAgY29udGFpbmVyQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBkZWZhdWx0U2VsZWN0ZWRJZD86IHN0cmluZztcbn1cblxuZnVuY3Rpb24gdXNlUHJldmlvdXM8VD4odmFsdWU6IFQpIHtcbiAgY29uc3QgcmVmID0gdXNlUmVmPFQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgfSwgW3ZhbHVlXSk7XG4gIHJldHVybiByZWYuY3VycmVudDtcbn1cblxuY29uc3QgVGFiID0gZm9yd2FyZFJlZjxFbGVtZW50UmVmPHR5cGVvZiBBcmlha2l0LlRhYj4sIEFyaWFraXQuVGFiUHJvcHM+KGZ1bmN0aW9uIFRhYihwcm9wcywgcmVmKSB7XG4gIGNvbnN0IHRhYlJlZiA9IHVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHRhYkVsZW1lbnQgPSB0YWJSZWYuY3VycmVudDtcbiAgICBpZiAoIXRhYkVsZW1lbnQpIHJldHVybjtcblxuICAgIGNvbnN0IHVwZGF0ZVN0YXRlID0gKCkgPT4ge1xuICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IHRhYkVsZW1lbnQuZ2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJykgPT09ICd0cnVlJztcbiAgICAgIHRhYkVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLXN0YXRlJywgaXNTZWxlY3RlZCA/ICdhY3RpdmUnIDogJ2luYWN0aXZlJyk7XG4gICAgfTtcblxuICAgIHVwZGF0ZVN0YXRlKCk7XG5cbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHVwZGF0ZVN0YXRlKTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKHRhYkVsZW1lbnQsIHsgYXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRlRmlsdGVyOiBbJ2FyaWEtc2VsZWN0ZWQnXSB9KTtcblxuICAgIHJldHVybiAoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH0sIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDxBcmlha2l0LlRhYlxuICAgICAgcmVmPXsobm9kZSkgPT4ge1xuICAgICAgICAvLyBGb3J3YXJkIHRoZSByZWYgdG8gYm90aCBvdXIgbG9jYWwgcmVmIGFuZCB0aGUgcHJvdmlkZWQgcmVmXG4gICAgICAgIHRhYlJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgaWYgKHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicpIHJlZihub2RlKTtcbiAgICAgICAgZWxzZSBpZiAocmVmKSByZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICB9fVxuICAgICAgey4uLnByb3BzfVxuICAgICAgY2xhc3NOYW1lPXtgYW5pbWF0ZWQtdGFiIGFyaWEtc2VsZWN0ZWQ6dGV4dC10b2tlbi10ZXh0LXByaW1hcnkgZmxleCBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTIgd2hpdGVzcGFjZS1ub3dyYXAgYm9yZGVyLW5vbmUgdGV4dC1zbSBmb250LW1lZGl1bSBvdXRsaW5lLW5vbmUgdHJhbnNpdGlvbi1jb2xvcnMgYXJpYS1kaXNhYmxlZDpvcGFjaXR5LTUwICR7cHJvcHMuY2xhc3NOYW1lIHx8ICcnfWB9XG4gICAgLz5cbiAgKTtcbn0pO1xuXG5jb25zdCBUYWJQYW5lbCA9IGZvcndhcmRSZWY8RWxlbWVudFJlZjx0eXBlb2YgQXJpYWtpdC5UYWJQYW5lbD4sIEFyaWFraXQuVGFiUGFuZWxQcm9wcz4oXG4gIGZ1bmN0aW9uIFRhYlBhbmVsKHByb3BzLCByZWYpIHtcbiAgICBjb25zdCB0YWIgPSBBcmlha2l0LnVzZVRhYkNvbnRleHQoKTtcbiAgICBjb25zdCBwcmV2aW91c1RhYklkID0gdXNlUHJldmlvdXMoQXJpYWtpdC51c2VTdG9yZVN0YXRlKHRhYiwgJ3NlbGVjdGVkSWQnKSk7XG4gICAgY29uc3Qgd2FzT3BlbiA9IHByb3BzLnRhYklkICYmIHByZXZpb3VzVGFiSWQgPT09IHByb3BzLnRhYklkO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxBcmlha2l0LlRhYlBhbmVsXG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIGRhdGEtd2FzLW9wZW49e3dhc09wZW4gfHwgdW5kZWZpbmVkfVxuICAgICAgICBjbGFzc05hbWU9e2BhbmltYXRlZC10YWItcGFuZWwgbWF4LXctZnVsbCAke3Byb3BzLmNsYXNzTmFtZSB8fCAnJ31gfVxuICAgICAgLz5cbiAgICApO1xuICB9LFxuKTtcblxuZXhwb3J0IGZ1bmN0aW9uIEFuaW1hdGVkVGFicyh7XG4gIHRhYnMsXG4gIGNsYXNzTmFtZSA9ICcnLFxuICB0YWJMaXN0Q2xhc3NOYW1lID0gJycsXG4gIHRhYkNsYXNzTmFtZSA9ICcnLFxuICB0YWJQYW5lbENsYXNzTmFtZSA9ICcnLFxuICBjb250YWluZXJDbGFzc05hbWUgPSAnJyxcbiAgdGFiTGlzdFByb3BzID0ge30sXG4gIGRlZmF1bHRTZWxlY3RlZElkLFxufTogQW5pbWF0ZWRUYWJzUHJvcHMpIHtcbiAgY29uc3QgdGFiSWRzID0gdGFicy5tYXAoKHRhYiwgaW5kZXgpID0+IHRhYi5pZCB8fCBgdGFiLSR7aW5kZXh9YCk7XG4gIGNvbnN0IGZpcnN0VGFiSWQgPSBkZWZhdWx0U2VsZWN0ZWRJZCB8fCB0YWJJZHNbMF07XG4gIGNvbnN0IHRhYkxpc3RSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHRhYkxpc3QgPSB0YWJMaXN0UmVmLmN1cnJlbnQ7XG4gICAgaWYgKCF0YWJMaXN0KSByZXR1cm47XG5cbiAgICAvLyBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHVuZGVybGluZSBwb3NpdGlvblxuICAgIGNvbnN0IHVwZGF0ZVVuZGVybGluZSA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGFjdGl2ZVRhYiA9IHRhYkxpc3QucXVlcnlTZWxlY3RvcignW2RhdGEtc3RhdGU9XCJhY3RpdmVcIl0nKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGlmICghYWN0aXZlVGFiKSByZXR1cm47XG5cbiAgICAgIHRhYkxpc3Quc3R5bGUuc2V0UHJvcGVydHkoJy0tdGFiLWxlZnQnLCBgJHthY3RpdmVUYWIub2Zmc2V0TGVmdH1weGApO1xuICAgICAgdGFiTGlzdC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS10YWItd2lkdGgnLCBgJHthY3RpdmVUYWIub2Zmc2V0V2lkdGh9cHhgKTtcbiAgICB9O1xuXG4gICAgdXBkYXRlVW5kZXJsaW5lKCk7XG5cbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHVwZGF0ZVVuZGVybGluZSk7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0YWJMaXN0LCB7IGF0dHJpYnV0ZXM6IHRydWUsIHN1YnRyZWU6IHRydWUsIGF0dHJpYnV0ZUZpbHRlcjogWydkYXRhLXN0YXRlJ10gfSk7XG5cbiAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICB9LCBbdGFic10pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2B3LWZ1bGwgJHtjbGFzc05hbWV9YH0+XG4gICAgICA8QXJpYWtpdC5UYWJQcm92aWRlciBkZWZhdWx0U2VsZWN0ZWRJZD17Zmlyc3RUYWJJZH0+XG4gICAgICAgIDxBcmlha2l0LlRhYkxpc3RcbiAgICAgICAgICByZWY9e3RhYkxpc3RSZWZ9XG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlRhYnNcIlxuICAgICAgICAgIGNsYXNzTmFtZT17YGFuaW1hdGVkLXRhYi1saXN0IGZsZXggcHktMSAke3RhYkxpc3RDbGFzc05hbWV9YH1cbiAgICAgICAgICB7Li4udGFiTGlzdFByb3BzfVxuICAgICAgICA+XG4gICAgICAgICAge3RhYnMubWFwKCh0YWIsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8VGFiXG4gICAgICAgICAgICAgIGtleT17dGFiSWRzW2luZGV4XX1cbiAgICAgICAgICAgICAgaWQ9e3RhYklkc1tpbmRleF19XG4gICAgICAgICAgICAgIGRpc2FibGVkPXt0YWIuZGlzYWJsZWR9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17dGFiQ2xhc3NOYW1lfVxuICAgICAgICAgICAgICBkYXRhLXN0YXRlPXt0YWJJZHNbaW5kZXhdID09PSBmaXJzdFRhYklkID8gJ2FjdGl2ZScgOiAnaW5hY3RpdmUnfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7LyogVHlwZVNjcmlwdCB3b3JrYXJvdW5kIGZvciBSZWFjdCBpMThuZXh0IGNoaWxkcmVuIHR5cGUgY29tcGF0aWJpbGl0eSAqL31cbiAgICAgICAgICAgICAge3RhYi5sYWJlbH1cbiAgICAgICAgICAgIDwvVGFiPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0FyaWFraXQuVGFiTGlzdD5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICdhbmltYXRlZC1wYW5lbHMgcmVsYXRpdmUgZmxleCB3LWZ1bGwgZmxleC1jb2wgaXRlbXMtY2VudGVyIG92ZXJmbG93LWhpZGRlbiBwLTAnLFxuICAgICAgICAgICAgY29udGFpbmVyQ2xhc3NOYW1lLFxuICAgICAgICAgICl9XG4gICAgICAgID5cbiAgICAgICAgICB7dGFicy5tYXAoKHRhYiwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxUYWJQYW5lbFxuICAgICAgICAgICAgICBrZXk9e2BwYW5lbC0ke3RhYklkc1tpbmRleF19YH1cbiAgICAgICAgICAgICAgaWQ9e2BwYW5lbC0ke3RhYklkc1tpbmRleF19YH1cbiAgICAgICAgICAgICAgdGFiSWQ9e3RhYklkc1tpbmRleF19XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17dGFiUGFuZWxDbGFzc05hbWV9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsvKiBUeXBlU2NyaXB0IHdvcmthcm91bmQgZm9yIFJlYWN0IGkxOG5leHQgY2hpbGRyZW4gdHlwZSBjb21wYXRpYmlsaXR5ICovfVxuICAgICAgICAgICAgICB7dGFiLmNvbnRlbnR9XG4gICAgICAgICAgICA8L1RhYlBhbmVsPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvQXJpYWtpdC5UYWJQcm92aWRlcj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIEFsZXJ0RGlhbG9nUHJpbWl0aXZlIGZyb20gJ0ByYWRpeC11aS9yZWFjdC1hbGVydC1kaWFsb2cnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuY29uc3QgQWxlcnREaWFsb2cgPSBBbGVydERpYWxvZ1ByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBBbGVydERpYWxvZ1RyaWdnZXIgPSBBbGVydERpYWxvZ1ByaW1pdGl2ZS5UcmlnZ2VyO1xuXG50eXBlIEFsZXJ0UG9ydGFsUHJvcHMgPSBBbGVydERpYWxvZ1ByaW1pdGl2ZS5BbGVydERpYWxvZ1BvcnRhbFByb3BzICYgeyBjbGFzc05hbWU/OiBzdHJpbmcgfTtcblxuY29uc3QgQWxlcnREaWFsb2dQb3J0YWwgPSAoeyBjbGFzc05hbWUgPSAnJywgY2hpbGRyZW4sIC4uLnByb3BzIH06IEFsZXJ0UG9ydGFsUHJvcHMpID0+IChcbiAgPEFsZXJ0RGlhbG9nUHJpbWl0aXZlLlBvcnRhbCBjbGFzc05hbWU9e2NuKGNsYXNzTmFtZSl9IHsuLi4ocHJvcHMgYXMgQWxlcnRQb3J0YWxQcm9wcyl9PlxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZml4ZWQgaW5zZXQtMCB6LTUwIGZsZXggaXRlbXMtZW5kIGp1c3RpZnktY2VudGVyIHNtOml0ZW1zLWNlbnRlclwiPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvZGl2PlxuICA8L0FsZXJ0RGlhbG9nUHJpbWl0aXZlLlBvcnRhbD5cbik7XG5BbGVydERpYWxvZ1BvcnRhbC5kaXNwbGF5TmFtZSA9IEFsZXJ0RGlhbG9nUHJpbWl0aXZlLlBvcnRhbC5kaXNwbGF5TmFtZTtcblxuY29uc3QgQWxlcnREaWFsb2dPdmVybGF5ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuT3ZlcmxheT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuT3ZlcmxheT5cbj4oKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8QWxlcnREaWFsb2dQcmltaXRpdmUuT3ZlcmxheVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAnZml4ZWQgaW5zZXQtMCB6LTUwIGJnLWdyYXktNTAwLzkwIHRyYW5zaXRpb24tb3BhY2l0eSBhbmltYXRlLWluIGZhZGUtaW4gZGFyazpiZy1ncmF5LTgwMC85MCcsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gICAgcmVmPXtyZWZ9XG4gIC8+XG4pKTtcbkFsZXJ0RGlhbG9nT3ZlcmxheS5kaXNwbGF5TmFtZSA9IEFsZXJ0RGlhbG9nUHJpbWl0aXZlLk92ZXJsYXkuZGlzcGxheU5hbWU7XG5cbmNvbnN0IEFsZXJ0RGlhbG9nQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPEFsZXJ0RGlhbG9nUG9ydGFsPlxuICAgIDxBbGVydERpYWxvZ092ZXJsYXkgLz5cbiAgICA8QWxlcnREaWFsb2dQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAnZml4ZWQgei01MCBncmlkIHctZnVsbCBtYXgtdy1sZyBzY2FsZS0xMDAgZ2FwLTQgYmctd2hpdGUgcC02IG9wYWNpdHktMTAwIGFuaW1hdGUtaW4gZmFkZS1pbi05MCBzbGlkZS1pbi1mcm9tLWJvdHRvbS0xMCBzbTpyb3VuZGVkLWxnIHNtOnpvb20taW4tOTAgc206c2xpZGUtaW4tZnJvbS1ib3R0b20tMCBtZDp3LWZ1bGwnLFxuICAgICAgICAnZGFyazpiZy1ncmF5LTkwMCcsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9BbGVydERpYWxvZ1BvcnRhbD5cbikpO1xuQWxlcnREaWFsb2dDb250ZW50LmRpc3BsYXlOYW1lID0gQWxlcnREaWFsb2dQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgQWxlcnREaWFsb2dIZWFkZXIgPSAoeyBjbGFzc05hbWUgPSAnJywgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPXtjbignZmxleCBmbGV4LWNvbCBzcGFjZS15LTIgdGV4dC1jZW50ZXIgc206dGV4dC1sZWZ0JywgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuKTtcbkFsZXJ0RGlhbG9nSGVhZGVyLmRpc3BsYXlOYW1lID0gJ0FsZXJ0RGlhbG9nSGVhZGVyJztcblxuY29uc3QgQWxlcnREaWFsb2dGb290ZXIgPSAoeyBjbGFzc05hbWUgPSAnJywgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSA9PiAoXG4gIDxkaXZcbiAgICBjbGFzc05hbWU9e2NuKCdmbGV4IGZsZXgtY29sLXJldmVyc2Ugc206ZmxleC1yb3cgc206anVzdGlmeS1lbmQgc206c3BhY2UteC0yJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuQWxlcnREaWFsb2dGb290ZXIuZGlzcGxheU5hbWUgPSAnQWxlcnREaWFsb2dGb290ZXInO1xuXG5jb25zdCBBbGVydERpYWxvZ1RpdGxlID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuVGl0bGU+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLlRpdGxlPlxuPigoeyBjbGFzc05hbWUgPSAnJywgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxBbGVydERpYWxvZ1ByaW1pdGl2ZS5UaXRsZVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oJ3RleHQtbGcgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwJywgJ2Rhcms6dGV4dC1ncmF5LTUwJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkFsZXJ0RGlhbG9nVGl0bGUuZGlzcGxheU5hbWUgPSBBbGVydERpYWxvZ1ByaW1pdGl2ZS5UaXRsZS5kaXNwbGF5TmFtZTtcblxuY29uc3QgQWxlcnREaWFsb2dEZXNjcmlwdGlvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBBbGVydERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvbj5cbj4oKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8QWxlcnREaWFsb2dQcmltaXRpdmUuRGVzY3JpcHRpb25cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKCd0ZXh0LXNtIHRleHQtZ3JheS01MDAnLCAnZGFyazp0ZXh0LWdyYXktNDAwJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkFsZXJ0RGlhbG9nRGVzY3JpcHRpb24uZGlzcGxheU5hbWUgPSBBbGVydERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgQWxlcnREaWFsb2dBY3Rpb24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBBbGVydERpYWxvZ1ByaW1pdGl2ZS5BY3Rpb24+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkFjdGlvbj5cbj4oKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8QWxlcnREaWFsb2dQcmltaXRpdmUuQWN0aW9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICdpbmxpbmUtZmxleCBoLTEwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLW1kIGJnLWdyYXktOTAwIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyBob3ZlcjpiZy1ncmF5LTgwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctZ3JheS00MDAgZm9jdXM6cmluZy1vZmZzZXQtMiBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCBkYXJrOmJnLWdyYXktMTAwIGRhcms6dGV4dC1ncmF5LTkwMCBkYXJrOmhvdmVyOmJnLWdyYXktMTAwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTQwMCBkYXJrOmZvY3VzOnJpbmctb2Zmc2V0LWdyYXktOTAwJyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQWxlcnREaWFsb2dBY3Rpb24uZGlzcGxheU5hbWUgPSBBbGVydERpYWxvZ1ByaW1pdGl2ZS5BY3Rpb24uZGlzcGxheU5hbWU7XG5cbmNvbnN0IEFsZXJ0RGlhbG9nQ2FuY2VsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuQ2FuY2VsPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBBbGVydERpYWxvZ1ByaW1pdGl2ZS5DYW5jZWw+XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkNhbmNlbFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAnbXQtMiBpbmxpbmUtZmxleCBoLTEwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctdHJhbnNwYXJlbnQgcHgtNCBweS0yIHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIHRyYW5zaXRpb24tY29sb3JzIGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1ncmF5LTQwMCBmb2N1czpyaW5nLW9mZnNldC0yIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwIGRhcms6Ym9yZGVyLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTEwMCBkYXJrOmhvdmVyOmJnLWdyYXktODAwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTQwMCBkYXJrOmZvY3VzOnJpbmctb2Zmc2V0LWdyYXktOTAwIHNtOm10LTAnLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5BbGVydERpYWxvZ0NhbmNlbC5kaXNwbGF5TmFtZSA9IEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkNhbmNlbC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHtcbiAgQWxlcnREaWFsb2csXG4gIEFsZXJ0RGlhbG9nVHJpZ2dlcixcbiAgQWxlcnREaWFsb2dDb250ZW50LFxuICBBbGVydERpYWxvZ0hlYWRlcixcbiAgQWxlcnREaWFsb2dGb290ZXIsXG4gIEFsZXJ0RGlhbG9nVGl0bGUsXG4gIEFsZXJ0RGlhbG9nRGVzY3JpcHRpb24sXG4gIEFsZXJ0RGlhbG9nQWN0aW9uLFxuICBBbGVydERpYWxvZ0NhbmNlbCxcbn07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTbG90IH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXNsb3QnO1xuaW1wb3J0IHsgQ2hldnJvblJpZ2h0LCBNb3JlSG9yaXpvbnRhbCB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5jb25zdCBCcmVhZGNydW1iID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTEVsZW1lbnQsXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnbmF2Jz4gJiB7XG4gICAgc2VwYXJhdG9yPzogUmVhY3QuUmVhY3ROb2RlO1xuICB9XG4+KCh7IC4uLnByb3BzIH0sIHJlZikgPT4gPG5hdiByZWY9e3JlZn0gYXJpYS1sYWJlbD1cImJyZWFkY3J1bWJcIiB7Li4ucHJvcHN9IC8+KTtcbkJyZWFkY3J1bWIuZGlzcGxheU5hbWUgPSAnQnJlYWRjcnVtYic7XG5cbmNvbnN0IEJyZWFkY3J1bWJMaXN0ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MT0xpc3RFbGVtZW50LCBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J29sJz4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxvbFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAnZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC0xLjUgYnJlYWstd29yZHMgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmQgc206Z2FwLTIuNScsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKSxcbik7XG5CcmVhZGNydW1iTGlzdC5kaXNwbGF5TmFtZSA9ICdCcmVhZGNydW1iTGlzdCc7XG5cbmNvbnN0IEJyZWFkY3J1bWJJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MTElFbGVtZW50LCBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J2xpJz4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxsaSByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbignaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUnLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICksXG4pO1xuQnJlYWRjcnVtYkl0ZW0uZGlzcGxheU5hbWUgPSAnQnJlYWRjcnVtYkl0ZW0nO1xuXG5jb25zdCBCcmVhZGNydW1iTGluayA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxBbmNob3JFbGVtZW50LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J2EnPiAmIHtcbiAgICBhc0NoaWxkPzogYm9vbGVhbjtcbiAgfVxuPigoeyBhc0NoaWxkLCBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICBjb25zdCBDb21wID0gYXNDaGlsZCA/IFNsb3QgOiAnYSc7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29tcFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKCd0cmFuc2l0aW9uLWNvbG9ycyBob3Zlcjp0ZXh0LWZvcmVncm91bmQnLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICk7XG59KTtcbkJyZWFkY3J1bWJMaW5rLmRpc3BsYXlOYW1lID0gJ0JyZWFkY3J1bWJMaW5rJztcblxuY29uc3QgQnJlYWRjcnVtYlBhZ2UgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxTcGFuRWxlbWVudCwgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPCdzcGFuJz4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxzcGFuXG4gICAgICByZWY9e3JlZn1cbiAgICAgIHJvbGU9XCJsaW5rXCJcbiAgICAgIGFyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJcbiAgICAgIGFyaWEtY3VycmVudD1cInBhZ2VcIlxuICAgICAgY2xhc3NOYW1lPXtjbignZm9udC1ub3JtYWwgdGV4dC1mb3JlZ3JvdW5kJywgY2xhc3NOYW1lKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApLFxuKTtcbkJyZWFkY3J1bWJQYWdlLmRpc3BsYXlOYW1lID0gJ0JyZWFkY3J1bWJQYWdlJztcblxuY29uc3QgQnJlYWRjcnVtYlNlcGFyYXRvciA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPCdsaSc+KSA9PiAoXG4gIDxsaVxuICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgY2xhc3NOYW1lPXtjbignWyY+c3ZnXTpzaXplLTMuNScsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAge2NoaWxkcmVuID8/IDxDaGV2cm9uUmlnaHQgLz59XG4gIDwvbGk+XG4pO1xuQnJlYWRjcnVtYlNlcGFyYXRvci5kaXNwbGF5TmFtZSA9ICdCcmVhZGNydW1iU2VwYXJhdG9yJztcblxuY29uc3QgQnJlYWRjcnVtYkVsbGlwc2lzID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5Db21wb25lbnRQcm9wczwnc3Bhbic+KSA9PiAoXG4gIDxzcGFuXG4gICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICBjbGFzc05hbWU9e2NuKCdmbGV4IGgtOSB3LTkgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8TW9yZUhvcml6b250YWwgY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwic3Itb25seVwiPk1vcmU8L3NwYW4+XG4gIDwvc3Bhbj5cbik7XG5CcmVhZGNydW1iRWxsaXBzaXMuZGlzcGxheU5hbWUgPSAnQnJlYWRjcnVtYkVsaXBzc2lzJztcblxuZXhwb3J0IHtcbiAgQnJlYWRjcnVtYixcbiAgQnJlYWRjcnVtYkxpc3QsXG4gIEJyZWFkY3J1bWJJdGVtLFxuICBCcmVhZGNydW1iTGluayxcbiAgQnJlYWRjcnVtYlBhZ2UsXG4gIEJyZWFkY3J1bWJTZXBhcmF0b3IsXG4gIEJyZWFkY3J1bWJFbGxpcHNpcyxcbn07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTbG90IH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXNsb3QnO1xuaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gJ2NsYXNzLXZhcmlhbmNlLWF1dGhvcml0eSc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5jb25zdCBidXR0b25WYXJpYW50cyA9IGN2YShcbiAgJ2lubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMiB3aGl0ZXNwYWNlLW5vd3JhcCByb3VuZGVkLWxnIHRleHQtc20gZm9udC1tZWRpdW0gcmluZy1vZmZzZXQtYmFja2dyb3VuZCB0cmFuc2l0aW9uLWNvbG9ycyBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmluZyBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTIgZGlzYWJsZWQ6cG9pbnRlci1ldmVudHMtbm9uZSBkaXNhYmxlZDpvcGFjaXR5LTUwJyxcbiAge1xuICAgIHZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiB7XG4gICAgICAgIGRlZmF1bHQ6ICdiZy1wcmltYXJ5IHRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIGhvdmVyOmJnLXByaW1hcnkvOTAnLFxuICAgICAgICBkZXN0cnVjdGl2ZTpcbiAgICAgICAgICAnYmctc3VyZmFjZS1kZXN0cnVjdGl2ZSB0ZXh0LWRlc3RydWN0aXZlLWZvcmVncm91bmQgaG92ZXI6Ymctc3VyZmFjZS1kZXN0cnVjdGl2ZS1ob3ZlcicsXG4gICAgICAgIG91dGxpbmU6XG4gICAgICAgICAgJ3RleHQtdGV4dC1wcmltYXJ5IGJvcmRlciBib3JkZXItYm9yZGVyLWxpZ2h0IGJnLXRyYW5zcGFyZW50IGhvdmVyOmJnLWFjY2VudCBob3Zlcjp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kJyxcbiAgICAgICAgc2Vjb25kYXJ5OiAnYmctc2Vjb25kYXJ5IHRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmQgaG92ZXI6Ymctc2Vjb25kYXJ5LzgwJyxcbiAgICAgICAgZ2hvc3Q6ICdob3ZlcjpiZy1zdXJmYWNlLWhvdmVyIGhvdmVyOnRleHQtYWNjZW50LWZvcmVncm91bmQnLFxuICAgICAgICBsaW5rOiAndGV4dC1wcmltYXJ5IHVuZGVybGluZS1vZmZzZXQtNCBob3Zlcjp1bmRlcmxpbmUnLFxuICAgICAgICAvLyBoYXJkY29kZWQgdGV4dCBjb2xvciBiZWNhdXNlIG9mIFdDQUcgY29udHJhc3QgaXNzdWVzICh0ZXh0LXdoaXRlKVxuICAgICAgICBzdWJtaXQ6ICdiZy1zdXJmYWNlLXN1Ym1pdCB0ZXh0LXdoaXRlIGhvdmVyOmJnLXN1cmZhY2Utc3VibWl0LWhvdmVyJyxcbiAgICAgIH0sXG4gICAgICBzaXplOiB7XG4gICAgICAgIGRlZmF1bHQ6ICdoLTEwIHB4LTQgcHktMicsXG4gICAgICAgIHNtOiAnaC05IHJvdW5kZWQtbGcgcHgtMycsXG4gICAgICAgIGxnOiAnaC0xMSByb3VuZGVkLWxnIHB4LTgnLFxuICAgICAgICBpY29uOiAnc2l6ZS0xMCcsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVmYXVsdFZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiAnZGVmYXVsdCcsXG4gICAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgfSxcbiAgfSxcbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnV0dG9uUHJvcHNcbiAgZXh0ZW5kcyBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sXG4gICAgVmFyaWFudFByb3BzPHR5cGVvZiBidXR0b25WYXJpYW50cz4ge1xuICBhc0NoaWxkPzogYm9vbGVhbjtcbn1cblxuY29uc3QgQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MQnV0dG9uRWxlbWVudCwgQnV0dG9uUHJvcHM+KFxuICAoeyBjbGFzc05hbWUsIHZhcmlhbnQsIHNpemUsIGFzQ2hpbGQgPSBmYWxzZSwgdHlwZSA9ICdidXR0b24nLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCBDb21wID0gYXNDaGlsZCA/IFNsb3QgOiAnYnV0dG9uJztcbiAgICByZXR1cm4gKFxuICAgICAgPENvbXBcbiAgICAgICAgdHlwZT17YXNDaGlsZCA/IHVuZGVmaW5lZCA6IHR5cGV9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oYnV0dG9uVmFyaWFudHMoeyB2YXJpYW50LCBzaXplLCBjbGFzc05hbWUgfSkpfVxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgLz5cbiAgICApO1xuICB9LFxuKTtcbkJ1dHRvbi5kaXNwbGF5TmFtZSA9ICdCdXR0b24nO1xuXG5leHBvcnQgeyBCdXR0b24sIGJ1dHRvblZhcmlhbnRzIH07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBDaGVjayB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgKiBhcyBDaGVja2JveFByaW1pdGl2ZSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtY2hlY2tib3gnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxudHlwZSBCYXNlQ2hlY2tib3hQcm9wcyA9IE9taXQ8XG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ2hlY2tib3hQcmltaXRpdmUuUm9vdD4sXG4gICdhcmlhLWxhYmVsJyB8ICdhcmlhLWxhYmVsbGVkYnknXG4+ICYge1xuICBhc0NoaWxkPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIENoZWNrYm94UHJvcHMgPVxuICB8IChCYXNlQ2hlY2tib3hQcm9wcyAmIHtcbiAgICAgICdhcmlhLWxhYmVsJzogc3RyaW5nO1xuICAgICAgJ2FyaWEtbGFiZWxsZWRieSc/OiBuZXZlcjtcbiAgICB9KVxuICB8IChCYXNlQ2hlY2tib3hQcm9wcyAmIHtcbiAgICAgICdhcmlhLWxhYmVsbGVkYnknOiBzdHJpbmc7XG4gICAgICAnYXJpYS1sYWJlbCc/OiBuZXZlcjtcbiAgICB9KTtcblxuY29uc3QgQ2hlY2tib3ggPSBSZWFjdC5mb3J3YXJkUmVmPFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENoZWNrYm94UHJpbWl0aXZlLlJvb3Q+LCBDaGVja2JveFByb3BzPihcbiAgKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxDaGVja2JveFByaW1pdGl2ZS5Sb290XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdwZWVyIGgtNCB3LTQgc2hyaW5rLTAgcm91bmRlZC1zbSBib3JkZXIgYm9yZGVyLWJvcmRlci14aGVhdnkgcmluZy1vZmZzZXQtYmFja2dyb3VuZCBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmluZyBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTIgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTAgZGF0YS1bc3RhdGU9Y2hlY2tlZF06YmctcHJpbWFyeSBkYXRhLVtzdGF0ZT1jaGVja2VkXTp0ZXh0LXByaW1hcnktZm9yZWdyb3VuZCcsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAgPENoZWNrYm94UHJpbWl0aXZlLkluZGljYXRvciBjbGFzc05hbWU9e2NuKCdmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlcicpfT5cbiAgICAgICAgPENoZWNrIGNsYXNzTmFtZT1cImgtNCB3LTRcIiAvPlxuICAgICAgPC9DaGVja2JveFByaW1pdGl2ZS5JbmRpY2F0b3I+XG4gICAgPC9DaGVja2JveFByaW1pdGl2ZS5Sb290PlxuICApLFxuKTtcbkNoZWNrYm94LmRpc3BsYXlOYW1lID0gQ2hlY2tib3hQcmltaXRpdmUuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgQ2hlY2tib3ggfTtcbiIsImV4cG9ydCBlbnVtIEVTaWRlIHtcbiAgVG9wID0gJ3RvcCcsXG4gIFJpZ2h0ID0gJ3JpZ2h0JyxcbiAgQm90dG9tID0gJ2JvdHRvbScsXG4gIExlZnQgPSAnbGVmdCcsXG59XG5cbmV4cG9ydCBlbnVtIE5vdGlmaWNhdGlvblNldmVyaXR5IHtcbiAgSU5GTyA9ICdpbmZvJyxcbiAgU1VDQ0VTUyA9ICdzdWNjZXNzJyxcbiAgV0FSTklORyA9ICd3YXJuaW5nJyxcbiAgRVJST1IgPSAnZXJyb3InLFxufVxuIiwiaW1wb3J0IHsgYXRvbSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNldmVyaXR5IH0gZnJvbSAnfi9jb21tb24nO1xuXG5leHBvcnQgY29uc3QgbGFuZ0F0b20gPSBhdG9tPHN0cmluZz4oJ2VuJyk7XG5leHBvcnQgY29uc3QgY2hhdERpcmVjdGlvbkF0b20gPSBhdG9tPHN0cmluZz4oJ2x0cicpO1xuZXhwb3J0IGNvbnN0IGZvbnRTaXplQXRvbSA9IGF0b208c3RyaW5nPigndGV4dC1iYXNlJyk7XG5cbmV4cG9ydCB0eXBlIFRvYXN0U3RhdGUgPSB7XG4gIG9wZW46IGJvb2xlYW47XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc2V2ZXJpdHk6IE5vdGlmaWNhdGlvblNldmVyaXR5O1xuICBzaG93SWNvbjogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCB0b2FzdFN0YXRlID0gYXRvbTxUb2FzdFN0YXRlPih7XG4gIG9wZW46IGZhbHNlLFxuICBtZXNzYWdlOiAnJyxcbiAgc2V2ZXJpdHk6IE5vdGlmaWNhdGlvblNldmVyaXR5LlNVQ0NFU1MsXG4gIHNob3dJY29uOiB0cnVlLFxufSk7XG4iLCJpbXBvcnQgeyB1c2VBdG9tIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7IFRTaG93VG9hc3QgfSBmcm9tICd+L2NvbW1vbic7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXZlcml0eSB9IGZyb20gJ34vY29tbW9uJztcbmltcG9ydCB7IHRvYXN0U3RhdGUsIHR5cGUgVG9hc3RTdGF0ZSB9IGZyb20gJ34vc3RvcmUnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VUb2FzdChzaG93RGVsYXkgPSAxMDApIHtcbiAgY29uc3QgW3RvYXN0LCBzZXRUb2FzdF0gPSB1c2VBdG9tKHRvYXN0U3RhdGUpO1xuICBjb25zdCBzaG93VGltZXJSZWYgPSB1c2VSZWY8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGhpZGVUaW1lclJlZiA9IHVzZVJlZjxudW1iZXIgfCBudWxsPihudWxsKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoc2hvd1RpbWVyUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHNob3dUaW1lclJlZi5jdXJyZW50KTtcbiAgICAgIH1cbiAgICAgIGlmIChoaWRlVGltZXJSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgICBjbGVhclRpbWVvdXQoaGlkZVRpbWVyUmVmLmN1cnJlbnQpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtdKTtcblxuICBjb25zdCBzaG93VG9hc3QgPSAoe1xuICAgIG1lc3NhZ2UsXG4gICAgc2V2ZXJpdHkgPSBOb3RpZmljYXRpb25TZXZlcml0eS5TVUNDRVNTLFxuICAgIHNob3dJY29uID0gdHJ1ZSxcbiAgICBkdXJhdGlvbiA9IDMwMDAsIC8vIGRlZmF1bHQgZHVyYXRpb24gZm9yIHRoZSB0b2FzdCB0byBiZSB2aXNpYmxlXG4gICAgc3RhdHVzLFxuICB9OiBUU2hvd1RvYXN0KSA9PiB7XG4gICAgLy8gQ2xlYXIgZXhpc3RpbmcgdGltZW91dHNcbiAgICBpZiAoc2hvd1RpbWVyUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgIGNsZWFyVGltZW91dChzaG93VGltZXJSZWYuY3VycmVudCk7XG4gICAgfVxuICAgIGlmIChoaWRlVGltZXJSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgY2xlYXJUaW1lb3V0KGhpZGVUaW1lclJlZi5jdXJyZW50KTtcbiAgICB9XG5cbiAgICAvLyBUaW1lb3V0IHRvIHNob3cgdGhlIHRvYXN0XG4gICAgc2hvd1RpbWVyUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZXRUb2FzdCh7XG4gICAgICAgIG9wZW46IHRydWUsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIHNldmVyaXR5OiAoc3RhdHVzIGFzIE5vdGlmaWNhdGlvblNldmVyaXR5KSA/PyBzZXZlcml0eSxcbiAgICAgICAgc2hvd0ljb24sXG4gICAgICB9KTtcbiAgICAgIC8vIEhpZGVzIHRoZSB0b2FzdCBhZnRlciB0aGUgc3BlY2lmaWVkIGR1cmF0aW9uXG4gICAgICBoaWRlVGltZXJSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0VG9hc3QoKHByZXZUb2FzdDogVG9hc3RTdGF0ZSkgPT4gKHsgLi4ucHJldlRvYXN0LCBvcGVuOiBmYWxzZSB9KSk7XG4gICAgICB9LCBkdXJhdGlvbik7XG4gICAgfSwgc2hvd0RlbGF5KTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHRvYXN0LFxuICAgIG9uT3BlbkNoYW5nZTogKG9wZW46IGJvb2xlYW4pID0+IHNldFRvYXN0KHsgLi4udG9hc3QsIG9wZW4gfSksXG4gICAgc2hvd1RvYXN0LFxuICB9O1xufVxuIiwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNyZWF0ZUF2YXRhciB9IGZyb20gJ0BkaWNlYmVhci9jb3JlJztcbmltcG9ydCB7IGluaXRpYWxzIH0gZnJvbSAnQGRpY2ViZWFyL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHR5cGUgeyBUVXNlciB9IGZyb20gJ2xpYnJlY2hhdC1kYXRhLXByb3ZpZGVyJztcblxuY29uc3QgYXZhdGFyQ2FjaGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuY29uc3QgdXNlQXZhdGFyID0gKHVzZXI6IFRVc2VyIHwgdW5kZWZpbmVkKSA9PiB7XG4gIHJldHVybiB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IHVzZXJuYW1lLCBuYW1lIH0gPSB1c2VyID8/IHt9O1xuICAgIGNvbnN0IHNlZWQgPSBuYW1lIHx8IHVzZXJuYW1lO1xuICAgIGlmICghc2VlZCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGlmICh1c2VyPy5hdmF0YXIgJiYgdXNlcj8uYXZhdGFyICE9PSAnJykge1xuICAgICAgcmV0dXJuIHVzZXIuYXZhdGFyO1xuICAgIH1cblxuICAgIGlmIChhdmF0YXJDYWNoZVtzZWVkXSkge1xuICAgICAgcmV0dXJuIGF2YXRhckNhY2hlW3NlZWRdO1xuICAgIH1cblxuICAgIGNvbnN0IGF2YXRhciA9IGNyZWF0ZUF2YXRhcihpbml0aWFscywge1xuICAgICAgc2VlZCxcbiAgICAgIGZvbnRGYW1pbHk6IFsnVmVyZGFuYSddLFxuICAgICAgZm9udFNpemU6IDM2LFxuICAgICAgYmFja2dyb3VuZFR5cGU6IFsnc29saWQnXSxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogW1xuICAgICAgICAnZDgxYjYwJyxcbiAgICAgICAgJzhlMjRhYScsXG4gICAgICAgICc1ZTM1YjEnLFxuICAgICAgICAnMzk0OWFiJyxcbiAgICAgICAgJ0RCMzczMycsXG4gICAgICAgICcxQjc5Q0MnLFxuICAgICAgICAnMDI3Q0I4JyxcbiAgICAgICAgJzAwODI5MScsXG4gICAgICAgICcwMDg1NzcnLFxuICAgICAgICAnNTg4MDJGJyxcbiAgICAgICAgJzhBNzYxRCcsXG4gICAgICAgICc5QzZEMDAnLFxuICAgICAgICAnQjA2MjAwJyxcbiAgICAgICAgJ0QxNDUxQScsXG4gICAgICBdLFxuICAgICAgdGV4dENvbG9yOiBbJ2ZmZmZmZiddLFxuICAgIH0pO1xuXG4gICAgbGV0IGF2YXRhckRhdGFVcmkgPSAnJztcbiAgICB0cnkge1xuICAgICAgYXZhdGFyRGF0YVVyaSA9IGF2YXRhci50b0RhdGFVcmkoKTtcbiAgICAgIGlmIChhdmF0YXJEYXRhVXJpKSB7XG4gICAgICAgIGF2YXRhckNhY2hlW3NlZWRdID0gYXZhdGFyRGF0YVVyaTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGdlbmVyYXRlIGF2YXRhcjonLCBlcnJvcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF2YXRhckRhdGFVcmk7XG4gIH0sIFt1c2VyXSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1c2VBdmF0YXI7XG4iLCJpbXBvcnQgeyB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IG1hdGNoU29ydGVyIH0gZnJvbSAnbWF0Y2gtc29ydGVyJztcbmltcG9ydCB0eXBlIHsgT3B0aW9uV2l0aEljb24sIE1lbnRpb25PcHRpb24gfSBmcm9tICd+L2NvbW1vbic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUNvbWJvYm94KHtcbiAgdmFsdWUsXG4gIG9wdGlvbnMsXG59OiB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIG9wdGlvbnM6IEFycmF5PE9wdGlvbldpdGhJY29uIHwgTWVudGlvbk9wdGlvbj47XG59KSB7XG4gIGNvbnN0IFtvcGVuLCBzZXRPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3NlYXJjaFZhbHVlLCBzZXRTZWFyY2hWYWx1ZV0gPSB1c2VTdGF0ZSgnJyk7XG5cbiAgY29uc3QgbWF0Y2hlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghc2VhcmNoVmFsdWUpIHtcbiAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cbiAgICBjb25zdCBrZXlzID0gWydsYWJlbCcsICd2YWx1ZSddO1xuICAgIGNvbnN0IG1hdGNoZXMgPSBtYXRjaFNvcnRlcihvcHRpb25zLCBzZWFyY2hWYWx1ZSwgeyBrZXlzIH0pO1xuICAgIC8vIFJhZGl4IFNlbGVjdCBkb2VzIG5vdCB3b3JrIGlmIHdlIGRvbid0IHJlbmRlciB0aGUgc2VsZWN0ZWQgaXRlbSwgc28gd2VcbiAgICAvLyBtYWtlIHN1cmUgdG8gaW5jbHVkZSBpdCBpbiB0aGUgbGlzdCBvZiBtYXRjaGVzLlxuICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IG9wdGlvbnMuZmluZCgoY3VycmVudEl0ZW0pID0+IGN1cnJlbnRJdGVtLnZhbHVlID09PSB2YWx1ZSk7XG4gICAgaWYgKHNlbGVjdGVkSXRlbSAmJiAhbWF0Y2hlcy5pbmNsdWRlcyhzZWxlY3RlZEl0ZW0pKSB7XG4gICAgICBtYXRjaGVzLnB1c2goc2VsZWN0ZWRJdGVtKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hdGNoZXM7XG4gIH0sIFtzZWFyY2hWYWx1ZSwgdmFsdWUsIG9wdGlvbnNdKTtcblxuICByZXR1cm4ge1xuICAgIG9wZW4sXG4gICAgc2V0T3BlbixcbiAgICBzZWFyY2hWYWx1ZSxcbiAgICBzZXRTZWFyY2hWYWx1ZSxcbiAgICBtYXRjaGVzLFxuICB9O1xufVxuIiwiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgVE9wdGlvbnMgfSBmcm9tICdpMThuZXh0JztcbmltcG9ydCB7IHVzZUF0b21WYWx1ZSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XG5pbXBvcnQgeyByZXNvdXJjZXMgfSBmcm9tICd+L2xvY2FsZXMvaTE4bic7XG5pbXBvcnQgeyBsYW5nQXRvbSB9IGZyb20gJ34vc3RvcmUnO1xuXG5leHBvcnQgdHlwZSBUcmFuc2xhdGlvbktleXMgPSBrZXlvZiB0eXBlb2YgcmVzb3VyY2VzLmVuLnRyYW5zbGF0aW9uO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VMb2NhbGl6ZSgpIHtcbiAgY29uc3QgbGFuZyA9IHVzZUF0b21WYWx1ZShsYW5nQXRvbSk7XG4gIGNvbnN0IHsgdCwgaTE4biB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpMThuLmxhbmd1YWdlICE9PSBsYW5nKSB7XG4gICAgICBpMThuLmNoYW5nZUxhbmd1YWdlKGxhbmcpO1xuICAgIH1cbiAgfSwgW2xhbmcsIGkxOG5dKTtcblxuICByZXR1cm4gKHBocmFzZUtleTogVHJhbnNsYXRpb25LZXlzLCBvcHRpb25zPzogVE9wdGlvbnMpID0+IHQocGhyYXNlS2V5LCBvcHRpb25zKTtcbn1cbiIsImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZU1lZGlhUXVlcnkocXVlcnk6IHN0cmluZykge1xuICBjb25zdCBbbWF0Y2hlcywgc2V0TWF0Y2hlc10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBtZWRpYSA9IHdpbmRvdy5tYXRjaE1lZGlhKHF1ZXJ5KTtcbiAgICBpZiAobWVkaWEubWF0Y2hlcyAhPT0gbWF0Y2hlcykge1xuICAgICAgc2V0TWF0Y2hlcyhtZWRpYS5tYXRjaGVzKTtcbiAgICB9XG4gICAgY29uc3QgbGlzdGVuZXIgPSAoKSA9PiBzZXRNYXRjaGVzKG1lZGlhLm1hdGNoZXMpO1xuICAgIG1lZGlhLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKTtcbiAgICByZXR1cm4gKCkgPT4gbWVkaWEucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpO1xuICB9LCBbbWF0Y2hlcywgcXVlcnldKTtcblxuICByZXR1cm4gbWF0Y2hlcztcbn1cbiIsImltcG9ydCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCB1c2VEZWxheWVkUmVuZGVyID0gKGRlbGF5OiBudW1iZXIpID0+IHtcbiAgY29uc3QgW2RlbGF5ZWQsIHNldERlbGF5ZWRdID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IHRpbWVyUHJvbWlzZVJlZiA9IHVzZVJlZjxQcm9taXNlPHZvaWQ+IHwgbnVsbD4obnVsbCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZGVsYXllZCkge1xuICAgICAgY29uc3QgdGltZXJQcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHNldERlbGF5ZWQoZmFsc2UpO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSwgZGVsYXkpO1xuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICAgIHRpbWVyUHJvbWlzZVJlZi5jdXJyZW50ID0gdGltZXJQcm9taXNlO1xuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB0aW1lclByb21pc2VSZWYuY3VycmVudCA9IG51bGw7XG4gICAgfTtcbiAgfSwgW2RlbGF5LCBkZWxheWVkXSk7XG5cbiAgcmV0dXJuIChmbjogKCkgPT4gUmVhY3ROb2RlKSA9PiB7XG4gICAgaWYgKGRlbGF5ZWQgJiYgdGltZXJQcm9taXNlUmVmLmN1cnJlbnQpIHtcbiAgICAgIHRocm93IHRpbWVyUHJvbWlzZVJlZi5jdXJyZW50O1xuICAgIH1cbiAgICByZXR1cm4gZm4oKTtcbiAgfTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVzZURlbGF5ZWRSZW5kZXI7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QsIFJlZk9iamVjdCB9IGZyb20gJ3JlYWN0JztcbnR5cGUgSGFuZGxlciA9ICgpID0+IHZvaWQ7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZU9uQ2xpY2tPdXRzaWRlKFxuICByZWY6IFJlZk9iamVjdDxIVE1MRWxlbWVudD4sXG4gIGhhbmRsZXI6IEhhbmRsZXIsXG4gIGV4Y2x1ZGVJZHM6IHN0cmluZ1tdLFxuICBjdXN0b21Db25kaXRpb24/OiAodGFyZ2V0OiBFdmVudFRhcmdldCB8IEVsZW1lbnQgfCBudWxsKSA9PiBib29sZWFuLFxuKTogdm9pZCB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgTm9kZSB8IG51bGw7XG5cbiAgICAgIGlmICh0YXJnZXQgJiYgJ2lkJyBpbiB0YXJnZXQgJiYgZXhjbHVkZUlkcy5pbmNsdWRlcygodGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5pZCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIHRhcmdldD8ucGFyZW50Tm9kZSAmJlxuICAgICAgICAnaWQnIGluIHRhcmdldC5wYXJlbnROb2RlICYmXG4gICAgICAgIGV4Y2x1ZGVJZHMuaW5jbHVkZXMoKHRhcmdldC5wYXJlbnROb2RlIGFzIEhUTUxFbGVtZW50KS5pZClcbiAgICAgICkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChjdXN0b21Db25kaXRpb24gJiYgY3VzdG9tQ29uZGl0aW9uKHRhcmdldCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVmLmN1cnJlbnQgJiYgIXJlZi5jdXJyZW50LmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgICAgaGFuZGxlcigpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpO1xuICAgIH07XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbcmVmLCBoYW5kbGVyXSk7XG59XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBEaWFsb2dQcmltaXRpdmUgZnJvbSAnQHJhZGl4LXVpL3JlYWN0LWRpYWxvZyc7XG5pbXBvcnQgeyB1c2VNZWRpYVF1ZXJ5IH0gZnJvbSAnfi9ob29rcyc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuL0J1dHRvbic7XG5pbXBvcnQgeyBYIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmNvbnN0IERpYWxvZyA9IERpYWxvZ1ByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBEaWFsb2dUcmlnZ2VyID0gRGlhbG9nUHJpbWl0aXZlLlRyaWdnZXI7XG5cbnR5cGUgRGlhbG9nUG9ydGFsUHJvcHMgPSBEaWFsb2dQcmltaXRpdmUuRGlhbG9nUG9ydGFsUHJvcHMgJiB7IGNsYXNzTmFtZT86IHN0cmluZyB9O1xuXG5jb25zdCBEaWFsb2dQb3J0YWwgPSAoeyBjbGFzc05hbWUgPSAnJywgY2hpbGRyZW4sIC4uLnByb3BzIH06IERpYWxvZ1BvcnRhbFByb3BzKSA9PiAoXG4gIDxEaWFsb2dQcmltaXRpdmUuUG9ydGFsIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lKX0gey4uLihwcm9wcyBhcyBEaWFsb2dQb3J0YWxQcm9wcyl9PlxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZml4ZWQgaW5zZXQtMCB6LVs5OTldIGZsZXggaXRlbXMtc3RhcnQganVzdGlmeS1jZW50ZXIgc206aXRlbXMtY2VudGVyXCI+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gIDwvRGlhbG9nUHJpbWl0aXZlLlBvcnRhbD5cbik7XG5EaWFsb2dQb3J0YWwuZGlzcGxheU5hbWUgPSBEaWFsb2dQcmltaXRpdmUuUG9ydGFsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEaWFsb2dPdmVybGF5ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLk92ZXJsYXk+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5PdmVybGF5PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RGlhbG9nUHJpbWl0aXZlLk92ZXJsYXlcbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgJ2ZpeGVkIGluc2V0LTAgei1bOTk5XSBiZy1ncmF5LTYwMC82NSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0xMDAgZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0IGRhdGEtW3N0YXRlPW9wZW5dOmZhZGUtaW4gZGFyazpiZy1ibGFjay84MCcsXG4gICAgICBjbGFzc05hbWUgPz8gJycsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gICAgcmVmPXtyZWZ9XG4gIC8+XG4pKTtcbkRpYWxvZ092ZXJsYXkuZGlzcGxheU5hbWUgPSBEaWFsb2dQcmltaXRpdmUuT3ZlcmxheS5kaXNwbGF5TmFtZTtcblxudHlwZSBEaWFsb2dDb250ZW50UHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5Db250ZW50PiAmIHtcbiAgc2hvd0Nsb3NlQnV0dG9uPzogYm9vbGVhbjtcbiAgZGlzYWJsZVNjcm9sbD86IGJvb2xlYW47XG59O1xuXG5jb25zdCBEaWFsb2dDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBEaWFsb2dDb250ZW50UHJvcHNcbj4oXG4gIChcbiAgICB7IGNsYXNzTmFtZSwgY2hpbGRyZW4gPSB0cnVlLCBzaG93Q2xvc2VCdXR0b24gPSB0cnVlLCBkaXNhYmxlU2Nyb2xsID0gZmFsc2UsIC4uLnByb3BzIH0sXG4gICAgcmVmLFxuICApID0+IHtcbiAgICBjb25zdCBpc1NtYWxsU2NyZWVuID0gdXNlTWVkaWFRdWVyeSgnKG1heC13aWR0aDogNzY4cHgpJyk7XG4gICAgcmV0dXJuIChcbiAgICAgIDxEaWFsb2dQb3J0YWw+XG4gICAgICAgIDxEaWFsb2dPdmVybGF5IC8+XG4gICAgICAgIDxEaWFsb2dQcmltaXRpdmUuQ29udGVudFxuICAgICAgICAgIHJlZj17cmVmfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAnZml4ZWQgei1bOTk5XSBncmlkIHctZnVsbCBnYXAtNCByb3VuZGVkLWItbGcgYmctd2hpdGUgcGItNiBhbmltYXRlLWluIGRhdGEtW3N0YXRlPW9wZW5dOmZhZGUtaW4tOTAgZGF0YS1bc3RhdGU9b3Blbl06c2xpZGUtaW4tZnJvbS1ib3R0b20tMTAgc206cm91bmRlZC1sZycsXG4gICAgICAgICAgICAnZGFyazpiZy1ncmF5LTcwMCcsXG4gICAgICAgICAgICBpc1NtYWxsU2NyZWVuXG4gICAgICAgICAgICAgID8gJ2ZpeGVkIGxlZnQtMS8yIHRvcC0xLzIgei1bOTk5XSBtLWF1dG8gZ3JpZCB3LTExLzEyIC10cmFuc2xhdGUteC0xLzIgLXRyYW5zbGF0ZS15LTEvMiBnYXAtNCByb3VuZGVkLXhsIGJnLXdoaXRlIHBiLTYnXG4gICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICBkaXNhYmxlU2Nyb2xsID8gJ292ZXJmbG93LWhpZGRlbicgOiAnJyxcbiAgICAgICAgICAgIGNsYXNzTmFtZSA/PyAnJyxcbiAgICAgICAgICApfVxuICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICB7c2hvd0Nsb3NlQnV0dG9uICYmIChcbiAgICAgICAgICAgIDxEaWFsb2dQcmltaXRpdmUuQ2xvc2UgY2xhc3NOYW1lPVwiYWJzb2x1dGUgcmlnaHQtNiB0b3AtWzEuNnJlbV0gcm91bmRlZC1zbSBvcGFjaXR5LTcwIHRyYW5zaXRpb24tb3BhY2l0eSBob3ZlcjpvcGFjaXR5LTEwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctZ3JheS00MDAgZm9jdXM6cmluZy1vZmZzZXQtMiBkaXNhYmxlZDpwb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW3N0YXRlPW9wZW5dOmJnLWdyYXktMTAwIGRhcms6Zm9jdXM6cmluZy13aGl0ZSBkYXJrOmZvY3VzOnJpbmctb2Zmc2V0LWdyYXktNzAwIGRhcms6ZGF0YS1bc3RhdGU9b3Blbl06YmctZ3JheS04MDBcIj5cbiAgICAgICAgICAgICAgPFggY2xhc3NOYW1lPVwiaC01IHctNSB0ZXh0LWJsYWNrIGRhcms6dGV4dC13aGl0ZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInNyLW9ubHlcIj5DbG9zZTwvc3Bhbj5cbiAgICAgICAgICAgIDwvRGlhbG9nUHJpbWl0aXZlLkNsb3NlPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvRGlhbG9nUHJpbWl0aXZlLkNvbnRlbnQ+XG4gICAgICA8L0RpYWxvZ1BvcnRhbD5cbiAgICApO1xuICB9LFxuKTtcbkRpYWxvZ0NvbnRlbnQuZGlzcGxheU5hbWUgPSBEaWFsb2dQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgRGlhbG9nSGVhZGVyID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4pID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAnZmxleCBmbGV4LWNvbCBzcGFjZS15LTIgYm9yZGVyLWIgYm9yZGVyLWJsYWNrLzEwIHAtNiBwYi00IHRleHQtbGVmdCBkYXJrOmJvcmRlci13aGl0ZS8xMCcsXG4gICAgICBjbGFzc05hbWUgPz8gJycsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuRGlhbG9nSGVhZGVyLmRpc3BsYXlOYW1lID0gJ0RpYWxvZ0hlYWRlcic7XG5cbmNvbnN0IERpYWxvZ0Zvb3RlciA9ICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSA9PiAoXG4gIDxkaXZcbiAgICBjbGFzc05hbWU9e2NuKCdmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlbiBzcGFjZS14LTIgcHgtNiBweS00JywgY2xhc3NOYW1lID8/ICcnKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuRGlhbG9nRm9vdGVyLmRpc3BsYXlOYW1lID0gJ0RpYWxvZ0Zvb3Rlcic7XG5cbmNvbnN0IERpYWxvZ1RpdGxlID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLlRpdGxlPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuVGl0bGU+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEaWFsb2dQcmltaXRpdmUuVGl0bGVcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKCd0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTkwMCcsICdkYXJrOnRleHQtZ3JheS01MCcsIGNsYXNzTmFtZSA/PyAnJyl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5EaWFsb2dUaXRsZS5kaXNwbGF5TmFtZSA9IERpYWxvZ1ByaW1pdGl2ZS5UaXRsZS5kaXNwbGF5TmFtZTtcblxuY29uc3QgRGlhbG9nRGVzY3JpcHRpb24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuRGVzY3JpcHRpb24+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvbj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvblxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oJ3RleHQtc20gdGV4dC1ncmF5LTUwMCcsICdkYXJrOnRleHQtZ3JheS00MDAnLCBjbGFzc05hbWUgPz8gJycpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRGlhbG9nRGVzY3JpcHRpb24uZGlzcGxheU5hbWUgPSBEaWFsb2dQcmltaXRpdmUuRGVzY3JpcHRpb24uZGlzcGxheU5hbWU7XG5cbmNvbnN0IERpYWxvZ0Nsb3NlID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLkNsb3NlPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuQ2xvc2U+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEaWFsb2dQcmltaXRpdmUuQ2xvc2VcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgJ210LTIgaW5saW5lLWZsZXggaC0xMCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWdyYXktMjAwIGJnLXRyYW5zcGFyZW50IHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTkwMCB0cmFuc2l0aW9uLWNvbG9ycyBob3ZlcjpiZy1ncmF5LTEwMCBmb2N1czpvdXRsaW5lLW5vbmUgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTAgZGFyazpib3JkZXItZ3JheS03MDAgZGFyazp0ZXh0LWdyYXktMTAwIGRhcms6aG92ZXI6YmctZ3JheS04MDAgc206bXQtMCcsXG4gICAgICBjbGFzc05hbWUgPz8gJycsXG4gICAgICAvKiBJbXBvcnRhbnQ6IGZvciBhY2Nlc3NpYmlsaXR5ICovXG4gICAgICAnZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctZ3JheS00MDAgZm9jdXM6cmluZy1vZmZzZXQtMiBkYXJrOmZvY3VzOnJpbmctZ3JheS00MDAgZGFyazpmb2N1czpyaW5nLW9mZnNldC1ncmF5LTkwMCcsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRpYWxvZ0Nsb3NlLmRpc3BsYXlOYW1lID0gRGlhbG9nUHJpbWl0aXZlLlRpdGxlLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEaWFsb2dCdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBCdXR0b24+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEJ1dHRvbj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPEJ1dHRvblxuICAgIHJlZj17cmVmfVxuICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgJ210LTIgaW5saW5lLWZsZXggaC0xMCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWdyYXktMjAwIGJnLXRyYW5zcGFyZW50IHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTkwMCB0cmFuc2l0aW9uLWNvbG9ycyBob3ZlcjpiZy1ncmF5LTEwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctZ3JheS00MDAgZm9jdXM6cmluZy1vZmZzZXQtMiBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCBkYXJrOmJvcmRlci1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS0xMDAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS00MDAgZGFyazpmb2N1czpyaW5nLW9mZnNldC1ncmF5LTkwMCBzbTptdC0wJyxcbiAgICAgIGNsYXNzTmFtZSA/PyAnJyxcbiAgICAgIC8qIEltcG9ydGFudDogZm9yIGFjY2Vzc2liaWxpdHkgKi9cbiAgICAgICdmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1ncmF5LTQwMCBmb2N1czpyaW5nLW9mZnNldC0yIGRhcms6Zm9jdXM6cmluZy1ncmF5LTQwMCBkYXJrOmZvY3VzOnJpbmctb2Zmc2V0LWdyYXktOTAwJyxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRGlhbG9nQnV0dG9uLmRpc3BsYXlOYW1lID0gRGlhbG9nUHJpbWl0aXZlLlRpdGxlLmRpc3BsYXlOYW1lO1xuXG5leHBvcnQge1xuICBEaWFsb2csXG4gIERpYWxvZ1RyaWdnZXIsXG4gIERpYWxvZ0NvbnRlbnQsXG4gIERpYWxvZ0hlYWRlcixcbiAgRGlhbG9nRm9vdGVyLFxuICBEaWFsb2dUaXRsZSxcbiAgRGlhbG9nRGVzY3JpcHRpb24sXG4gIERpYWxvZ0Nsb3NlLFxuICBEaWFsb2dCdXR0b24sXG59O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgRHJvcGRvd25NZW51UHJpbWl0aXZlIGZyb20gJ0ByYWRpeC11aS9yZWFjdC1kcm9wZG93bi1tZW51JztcbmltcG9ydCB7IENoZWNrSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgQ2lyY2xlSWNvbiB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5mdW5jdGlvbiBEcm9wZG93bk1lbnUoeyAuLi5wcm9wcyB9OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlJvb3Q+KSB7XG4gIHJldHVybiA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlJvb3QgZGF0YS1zbG90PVwiZHJvcGRvd24tbWVudVwiIHsuLi5wcm9wc30gLz47XG59XG5cbmZ1bmN0aW9uIERyb3Bkb3duTWVudVBvcnRhbCh7XG4gIC4uLnByb3BzXG59OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbD4pIHtcbiAgcmV0dXJuIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuUG9ydGFsIGRhdGEtc2xvdD1cImRyb3Bkb3duLW1lbnUtcG9ydGFsXCIgey4uLnByb3BzfSAvPjtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51VHJpZ2dlcih7XG4gIC4uLnByb3BzXG59OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlRyaWdnZXI+KSB7XG4gIHJldHVybiA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlRyaWdnZXIgZGF0YS1zbG90PVwiZHJvcGRvd24tbWVudS10cmlnZ2VyXCIgey4uLnByb3BzfSAvPjtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51Q29udGVudCh7XG4gIGNsYXNzTmFtZSxcbiAgc2lkZU9mZnNldCA9IDQsXG4gIC4uLnByb3BzXG59OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnQ+KSB7XG4gIHJldHVybiAoXG4gICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgICAgZGF0YS1zbG90PVwiZHJvcGRvd24tbWVudS1jb250ZW50XCJcbiAgICAgICAgc2lkZU9mZnNldD17c2lkZU9mZnNldH1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAnbWF4LWgtKC0tcmFkaXgtZHJvcGRvd24tbWVudS1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQpIG9yaWdpbi0oLS1yYWRpeC1kcm9wZG93bi1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbikgei00MCBtaW4tdy1bOHJlbV0gb3ZlcmZsb3cteS1hdXRvIG92ZXJmbG93LXgtaGlkZGVuIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ib3JkZXItbWVkaXVtIGJnLXN1cmZhY2UtcHJpbWFyeSBwLTEgdGV4dC10ZXh0LXByaW1hcnkgc2hhZG93LW1kIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06em9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06em9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06c2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpzbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06c2xpZGUtaW4tZnJvbS1ib3R0b20tMicsXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAvPlxuICAgIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbD5cbiAgKTtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51R3JvdXAoeyAuLi5wcm9wcyB9OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkdyb3VwPikge1xuICByZXR1cm4gPERyb3Bkb3duTWVudVByaW1pdGl2ZS5Hcm91cCBkYXRhLXNsb3Q9XCJkcm9wZG93bi1tZW51LWdyb3VwXCIgey4uLnByb3BzfSAvPjtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51SXRlbSh7XG4gIGNsYXNzTmFtZSxcbiAgaW5zZXQsXG4gIHZhcmlhbnQgPSAnZGVmYXVsdCcsXG4gIC4uLnByb3BzXG59OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW0+ICYge1xuICBpbnNldD86IGJvb2xlYW47XG4gIHZhcmlhbnQ/OiAnZGVmYXVsdCcgfCAnZGVzdHJ1Y3RpdmUnO1xufSkge1xuICByZXR1cm4gKFxuICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbVxuICAgICAgZGF0YS1zbG90PVwiZHJvcGRvd24tbWVudS1pdGVtXCJcbiAgICAgIGRhdGEtaW5zZXQ9e2luc2V0fVxuICAgICAgZGF0YS12YXJpYW50PXt2YXJpYW50fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJkYXRhLVt2YXJpYW50PWRlc3RydWN0aXZlXToqOltzdmddOiF0ZXh0LWRlc3RydWN0aXZlIG91dGxpbmUtaGlkZGVuIHJlbGF0aXZlIGZsZXggY3Vyc29yLWRlZmF1bHQgc2VsZWN0LW5vbmUgaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQtc20gcHgtMiBweS0xLjUgdGV4dC1zbSBmb2N1czpiZy1hY2NlbnQgZm9jdXM6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtpbnNldF06cGwtOCBkYXRhLVt2YXJpYW50PWRlc3RydWN0aXZlXTp0ZXh0LWRlc3RydWN0aXZlIGRhdGEtW2Rpc2FibGVkXTpvcGFjaXR5LTUwIGRhdGEtW3ZhcmlhbnQ9ZGVzdHJ1Y3RpdmVdOmZvY3VzOmJnLWRlc3RydWN0aXZlLzEwIGRhdGEtW3ZhcmlhbnQ9ZGVzdHJ1Y3RpdmVdOmZvY3VzOnRleHQtZGVzdHJ1Y3RpdmUgZGFyazpkYXRhLVt2YXJpYW50PWRlc3RydWN0aXZlXTpmb2N1czpiZy1kZXN0cnVjdGl2ZS8yMCBbJl9zdmc6bm90KFtjbGFzcyo9J3NpemUtJ10pXTpzaXplLTQgWyZfc3ZnOm5vdChbY2xhc3MqPSd0ZXh0LSddKV06dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIFsmX3N2Z106cG9pbnRlci1ldmVudHMtbm9uZSBbJl9zdmddOnNocmluay0wXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtKHtcbiAgY2xhc3NOYW1lLFxuICBjaGlsZHJlbixcbiAgY2hlY2tlZCxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPikge1xuICByZXR1cm4gKFxuICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtXG4gICAgICBkYXRhLXNsb3Q9XCJkcm9wZG93bi1tZW51LWNoZWNrYm94LWl0ZW1cIlxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJvdXRsaW5lLWhpZGRlbiByZWxhdGl2ZSBmbGV4IGN1cnNvci1kZWZhdWx0IHNlbGVjdC1ub25lIGl0ZW1zLWNlbnRlciBnYXAtMiByb3VuZGVkLXNtIHB5LTEuNSBwbC04IHByLTIgdGV4dC1zbSBmb2N1czpiZy1hY2NlbnQgZm9jdXM6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06b3BhY2l0eS01MCBbJl9zdmc6bm90KFtjbGFzcyo9J3NpemUtJ10pXTpzaXplLTQgWyZfc3ZnXTpwb2ludGVyLWV2ZW50cy1ub25lIFsmX3N2Z106c2hyaW5rLTBcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSBsZWZ0LTIgZmxleCBzaXplLTMuNSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICAgIDxDaGVja0ljb24gY2xhc3NOYW1lPVwic2l6ZS00XCIgLz5cbiAgICAgICAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+XG4gICk7XG59XG5cbmZ1bmN0aW9uIERyb3Bkb3duTWVudVJhZGlvR3JvdXAoe1xuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0dyb3VwPikge1xuICByZXR1cm4gPERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0dyb3VwIGRhdGEtc2xvdD1cImRyb3Bkb3duLW1lbnUtcmFkaW8tZ3JvdXBcIiB7Li4ucHJvcHN9IC8+O1xufVxuXG5mdW5jdGlvbiBEcm9wZG93bk1lbnVSYWRpb0l0ZW0oe1xuICBjbGFzc05hbWUsXG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+KSB7XG4gIHJldHVybiAoXG4gICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW1cbiAgICAgIGRhdGEtc2xvdD1cImRyb3Bkb3duLW1lbnUtcmFkaW8taXRlbVwiXG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcIm91dGxpbmUtaGlkZGVuIHJlbGF0aXZlIGZsZXggY3Vyc29yLWRlZmF1bHQgc2VsZWN0LW5vbmUgaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQtc20gcHktMS41IHBsLTggcHItMiB0ZXh0LXNtIGZvY3VzOmJnLWFjY2VudCBmb2N1czp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpvcGFjaXR5LTUwIFsmX3N2Zzpub3QoW2NsYXNzKj0nc2l6ZS0nXSldOnNpemUtNCBbJl9zdmddOnBvaW50ZXItZXZlbnRzLW5vbmUgWyZfc3ZnXTpzaHJpbmstMFwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgbGVmdC0yIGZsZXggc2l6ZS0zLjUgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgICA8Q2lyY2xlSWNvbiBjbGFzc05hbWU9XCJzaXplLTIgZmlsbC1jdXJyZW50XCIgLz5cbiAgICAgICAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+XG4gICk7XG59XG5cbmZ1bmN0aW9uIERyb3Bkb3duTWVudUxhYmVsKHtcbiAgY2xhc3NOYW1lLFxuICBpbnNldCxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWw+ICYge1xuICBpbnNldD86IGJvb2xlYW47XG59KSB7XG4gIHJldHVybiAoXG4gICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbFxuICAgICAgZGF0YS1zbG90PVwiZHJvcGRvd24tbWVudS1sYWJlbFwiXG4gICAgICBkYXRhLWluc2V0PXtpbnNldH1cbiAgICAgIGNsYXNzTmFtZT17Y24oJ3B4LTIgcHktMS41IHRleHQtc20gZm9udC1tZWRpdW0gZGF0YS1baW5zZXRdOnBsLTgnLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICk7XG59XG5cbmZ1bmN0aW9uIERyb3Bkb3duTWVudVNlcGFyYXRvcih7XG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPikge1xuICByZXR1cm4gKFxuICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yXG4gICAgICBkYXRhLXNsb3Q9XCJkcm9wZG93bi1tZW51LXNlcGFyYXRvclwiXG4gICAgICBjbGFzc05hbWU9e2NuKCctbXgtMSBteS0xIGgtcHggYmctc3VyZmFjZS1ob3ZlcicsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51U2hvcnRjdXQoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPCdzcGFuJz4pIHtcbiAgcmV0dXJuIChcbiAgICA8c3BhblxuICAgICAgZGF0YS1zbG90PVwiZHJvcGRvd24tbWVudS1zaG9ydGN1dFwiXG4gICAgICBjbGFzc05hbWU9e2NuKCdtbC1hdXRvIHRleHQteHMgdHJhY2tpbmctd2lkZXN0IHRleHQtbXV0ZWQtZm9yZWdyb3VuZCcsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51U3ViKHsgLi4ucHJvcHMgfTogUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWI+KSB7XG4gIHJldHVybiA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YiBkYXRhLXNsb3Q9XCJkcm9wZG93bi1tZW51LXN1YlwiIHsuLi5wcm9wc30gLz47XG59XG5cbmZ1bmN0aW9uIERyb3Bkb3duTWVudVN1YlRyaWdnZXIoe1xuICBjbGFzc05hbWUsXG4gIGluc2V0LFxuICBjaGlsZHJlbixcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj4gJiB7XG4gIGluc2V0PzogYm9vbGVhbjtcbn0pIHtcbiAgcmV0dXJuIChcbiAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXJcbiAgICAgIGRhdGEtc2xvdD1cImRyb3Bkb3duLW1lbnUtc3ViLXRyaWdnZXJcIlxuICAgICAgZGF0YS1pbnNldD17aW5zZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAnb3V0bGluZS1oaWRkZW4gZmxleCBjdXJzb3ItZGVmYXVsdCBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIgcm91bmRlZC1zbSBweC0yIHB5LTEuNSB0ZXh0LXNtIGZvY3VzOmJnLWFjY2VudCBmb2N1czp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW3N0YXRlPW9wZW5dOmJnLWFjY2VudCBkYXRhLVtpbnNldF06cGwtOCBkYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgICA8Q2hldnJvblJpZ2h0SWNvbiBjbGFzc05hbWU9XCJtbC1hdXRvIHNpemUtNFwiIC8+XG4gICAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51U3ViQ29udGVudCh7XG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudD4pIHtcbiAgcmV0dXJuIChcbiAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnRcbiAgICAgIGRhdGEtc2xvdD1cImRyb3Bkb3duLW1lbnUtc3ViLWNvbnRlbnRcIlxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ29yaWdpbi0oLS1yYWRpeC1kcm9wZG93bi1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbikgei00MCBtaW4tdy1bOHJlbV0gb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ib3JkZXItbWVkaXVtIGJnLXN1cmZhY2UtcHJpbWFyeSBwLTEgdGV4dC10ZXh0LXByaW1hcnkgc2hhZG93LWxnIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06em9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06em9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06c2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpzbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06c2xpZGUtaW4tZnJvbS1ib3R0b20tMicsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn1cblxuZXhwb3J0IHtcbiAgRHJvcGRvd25NZW51LFxuICBEcm9wZG93bk1lbnVQb3J0YWwsXG4gIERyb3Bkb3duTWVudVRyaWdnZXIsXG4gIERyb3Bkb3duTWVudUNvbnRlbnQsXG4gIERyb3Bkb3duTWVudUdyb3VwLFxuICBEcm9wZG93bk1lbnVMYWJlbCxcbiAgRHJvcGRvd25NZW51SXRlbSxcbiAgRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtLFxuICBEcm9wZG93bk1lbnVSYWRpb0dyb3VwLFxuICBEcm9wZG93bk1lbnVSYWRpb0l0ZW0sXG4gIERyb3Bkb3duTWVudVNlcGFyYXRvcixcbiAgRHJvcGRvd25NZW51U2hvcnRjdXQsXG4gIERyb3Bkb3duTWVudVN1YixcbiAgRHJvcGRvd25NZW51U3ViVHJpZ2dlcixcbiAgRHJvcGRvd25NZW51U3ViQ29udGVudCxcbn07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBIb3ZlckNhcmRQcmltaXRpdmUgZnJvbSAnQHJhZGl4LXVpL3JlYWN0LWhvdmVyLWNhcmQnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuY29uc3QgSG92ZXJDYXJkID0gSG92ZXJDYXJkUHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IEhvdmVyQ2FyZFRyaWdnZXIgPSBIb3ZlckNhcmRQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgSG92ZXJDYXJkUG9ydGFsID0gSG92ZXJDYXJkUHJpbWl0aXZlLlBvcnRhbDtcblxuY29uc3QgSG92ZXJDYXJkQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIEhvdmVyQ2FyZFByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBIb3ZlckNhcmRQcmltaXRpdmUuQ29udGVudD4gJiB7IGRpc2FibGVkPzogYm9vbGVhbiB9XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCBhbGlnbiA9ICdjZW50ZXInLCBzaWRlT2Zmc2V0ID0gNiwgZGlzYWJsZWQgPSBmYWxzZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gIGlmIChkaXNhYmxlZCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8SG92ZXJDYXJkUHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgYWxpZ249e2FsaWdufVxuICAgICAgc2lkZU9mZnNldD17c2lkZU9mZnNldH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICd6LTUwIHctNjQgb3JpZ2luLVstLXJhZGl4LWhvdmVyLWNhcmQtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXSByb3VuZGVkLXhsIGJvcmRlciBib3JkZXItYm9yZGVyLWxpZ2h0IGJnLXN1cmZhY2Utc2Vjb25kYXJ5IHAtNCB0ZXh0LXRleHQtcHJpbWFyeSBzaGFkb3ctbWQgb3V0bGluZS1ub25lIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06em9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06em9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06c2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpzbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06c2xpZGUtaW4tZnJvbS1ib3R0b20tMicsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn0pO1xuSG92ZXJDYXJkQ29udGVudC5kaXNwbGF5TmFtZSA9IEhvdmVyQ2FyZFByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBIb3ZlckNhcmQsIEhvdmVyQ2FyZFRyaWdnZXIsIEhvdmVyQ2FyZENvbnRlbnQsIEhvdmVyQ2FyZFBvcnRhbCB9O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IHR5cGUgSW5wdXRQcm9wcyA9IFJlYWN0LklucHV0SFRNTEF0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD47XG5cbmNvbnN0IElucHV0ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MSW5wdXRFbGVtZW50LCBJbnB1dFByb3BzPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICByZXR1cm4gKFxuICAgIDxpbnB1dFxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ2ZsZXggaC0xMCB3LWZ1bGwgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWJvcmRlci1saWdodCBiZy10cmFuc3BhcmVudCBweC0zIHB5LTIgdGV4dC1zbSByaW5nLW9mZnNldC1iYWNrZ3JvdW5kIHBsYWNlaG9sZGVyOnRleHQtbXV0ZWQtZm9yZWdyb3VuZCBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCcsXG4gICAgICAgIGNsYXNzTmFtZSA/PyAnJyxcbiAgICAgICl9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufSk7XG5cbklucHV0LmRpc3BsYXlOYW1lID0gJ0lucHV0JztcblxuZXhwb3J0IHsgSW5wdXQgfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxuLy8gaW1wb3J0IHsgTnVtZXJpY0Zvcm1hdCB9IGZyb20gJ3JlYWN0LW51bWJlci1mb3JtYXQnO1xuXG5pbXBvcnQgUkNJbnB1dE51bWJlciBmcm9tICdyYy1pbnB1dC1udW1iZXInO1xuaW1wb3J0ICogYXMgSW5wdXROdW1iZXJQcmltaXRpdmUgZnJvbSAncmMtaW5wdXQtbnVtYmVyJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbi8vIFRPRE8gaGVscCBuZWVkZWRcbi8vIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIExhYmVsUHJpbWl0aXZlLlJvb3Q+LFxuLy8gUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBMYWJlbFByaW1pdGl2ZS5Sb290PlxuXG5jb25zdCBJbnB1dE51bWJlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFJDSW5wdXROdW1iZXI+LFxuICBJbnB1dE51bWJlclByaW1pdGl2ZS5JbnB1dE51bWJlclByb3BzXG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gIHJldHVybiAoXG4gICAgPFJDSW5wdXROdW1iZXJcbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdmbGV4IG1heC1oLTUgdy1mdWxsIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy10cmFuc3BhcmVudCBweC0zIHB5LTIgdGV4dC1zbSBwbGFjZWhvbGRlcjp0ZXh0LWdyYXktNDAwIGZvY3VzOm91dGxpbmUtbm9uZSBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCBkYXJrOmJvcmRlci1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS01MCcsXG4gICAgICAgIGNsYXNzTmFtZSA/PyAnJyxcbiAgICAgICl9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufSk7XG5JbnB1dE51bWJlci5kaXNwbGF5TmFtZSA9ICdJbnB1dCc7XG5cbi8vIGNvbnNvbGUubG9nKF9JbnB1dE51bWJlcik7XG5cbi8vIGNvbnN0IElucHV0TnVtYmVyID0gUmVhY3QuZm9yd2FyZFJlZigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuLy8gICByZXR1cm4gKFxuLy8gICAgIDxOdW1lcmljRm9ybWF0XG4vLyAgICAgICBjbGFzc05hbWU9e2NuKFxuLy8gICAgICAgICAnZmxleCBoLTEwIHctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZ3JheS0zMDAgYmctdHJhbnNwYXJlbnQgcHktMiBweC0zIHRleHQtc20gcGxhY2Vob2xkZXI6dGV4dC1ncmF5LTQwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctZ3JheS00MDAgZm9jdXM6cmluZy1vZmZzZXQtMiBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCBkYXJrOmJvcmRlci1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS01MCBkYXJrOmZvY3VzOnJpbmctZ3JheS00MDAgZGFyazpmb2N1czpyaW5nLW9mZnNldC1ncmF5LTkwMCcsXG4vLyAgICAgICAgIGNsYXNzTmFtZVxuLy8gICAgICAgKX1cbi8vICAgICAgIHJlZj17cmVmfVxuLy8gICAgICAgey4uLnByb3BzfVxuLy8gICAgIC8+XG4vLyAgICk7XG4vLyB9KTtcblxuZXhwb3J0IHsgSW5wdXROdW1iZXIgfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEV5ZSwgRXllT2ZmLCBDb3B5LCBDaGVjayB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3JldElucHV0UHJvcHNcbiAgZXh0ZW5kcyBPbWl0PFJlYWN0LklucHV0SFRNTEF0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD4sICd0eXBlJz4ge1xuICAvKiogU2hvdyBjb3B5IGJ1dHRvbiAqL1xuICBzaG93Q29weT86IGJvb2xlYW47XG4gIC8qKiBDYWxsYmFjayB3aGVuIHZhbHVlIGlzIGNvcGllZCAqL1xuICBvbkNvcHk/OiAoKSA9PiB2b2lkO1xuICAvKiogRHVyYXRpb24gaW4gbXMgdG8gc2hvdyBjaGVja21hcmsgYWZ0ZXIgY29weSAoZGVmYXVsdDogMjAwMCkgKi9cbiAgY29weUZlZWRiYWNrRHVyYXRpb24/OiBudW1iZXI7XG59XG5cbmNvbnN0IFNlY3JldElucHV0ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MSW5wdXRFbGVtZW50LCBTZWNyZXRJbnB1dFByb3BzPihcbiAgKFxuICAgIHsgY2xhc3NOYW1lLCBzaG93Q29weSA9IGZhbHNlLCBvbkNvcHksIGNvcHlGZWVkYmFja0R1cmF0aW9uID0gMjAwMCwgZGlzYWJsZWQsIHZhbHVlLCAuLi5wcm9wcyB9LFxuICAgIHJlZixcbiAgKSA9PiB7XG4gICAgY29uc3QgW2lzVmlzaWJsZSwgc2V0SXNWaXNpYmxlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbaXNDb3BpZWQsIHNldElzQ29waWVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICAgIGNvbnN0IHRvZ2dsZVZpc2liaWxpdHkgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRJc1Zpc2libGUoKHByZXYpID0+ICFwcmV2KTtcbiAgICB9LCBbXSk7XG5cbiAgICBjb25zdCBoYW5kbGVDb3B5ID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKGlzQ29waWVkIHx8IGRpc2FibGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGV4dFRvQ29weSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6ICcnO1xuICAgICAgaWYgKCF0ZXh0VG9Db3B5KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dFRvQ29weSk7XG4gICAgICAgIHNldElzQ29waWVkKHRydWUpO1xuICAgICAgICBvbkNvcHk/LigpO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHNldElzQ29waWVkKGZhbHNlKTtcbiAgICAgICAgfSwgY29weUZlZWRiYWNrRHVyYXRpb24pO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBjb3B5OicsIGVycik7XG4gICAgICB9XG4gICAgfSwgW3ZhbHVlLCBpc0NvcGllZCwgZGlzYWJsZWQsIG9uQ29weSwgY29weUZlZWRiYWNrRHVyYXRpb25dKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9e2lzVmlzaWJsZSA/ICd0ZXh0JyA6ICdwYXNzd29yZCd9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICdmbGV4IGgtMTAgdy1mdWxsIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1pbnB1dCBiZy10cmFuc3BhcmVudCBweC0zIHB5LTIgdGV4dC1zbSByaW5nLW9mZnNldC1iYWNrZ3JvdW5kIHBsYWNlaG9sZGVyOnRleHQtbXV0ZWQtZm9yZWdyb3VuZCBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCcsXG4gICAgICAgICAgICBzaG93Q29weSA/ICdwci0yMCcgOiAncHItMTAnLFxuICAgICAgICAgICAgY2xhc3NOYW1lID8/ICcnLFxuICAgICAgICAgICl9XG4gICAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgIHNwZWxsQ2hlY2s9e2ZhbHNlfVxuICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgLz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSByaWdodC0xIGZsZXggaXRlbXMtY2VudGVyIGdhcC0wLjVcIj5cbiAgICAgICAgICB7c2hvd0NvcHkgJiYgKFxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQ29weX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkIHx8ICF2YWx1ZX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAnZmxleCBzaXplLTggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbWQgdGV4dC10ZXh0LXNlY29uZGFyeSB0cmFuc2l0aW9uLWNvbG9ycycsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQgfHwgIXZhbHVlXG4gICAgICAgICAgICAgICAgICA/ICdjdXJzb3Itbm90LWFsbG93ZWQgb3BhY2l0eS01MCdcbiAgICAgICAgICAgICAgICAgIDogJ2hvdmVyOmJnLXN1cmZhY2UtaG92ZXIgaG92ZXI6dGV4dC10ZXh0LXByaW1hcnknLFxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtpc0NvcGllZCA/ICdDb3BpZWQnIDogJ0NvcHkgdG8gY2xpcGJvYXJkJ31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2lzQ29waWVkID8gPENoZWNrIGNsYXNzTmFtZT1cInNpemUtNFwiIC8+IDogPENvcHkgY2xhc3NOYW1lPVwic2l6ZS00XCIgLz59XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgb25DbGljaz17dG9nZ2xlVmlzaWJpbGl0eX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICdmbGV4IHNpemUtOCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1tZCB0ZXh0LXRleHQtc2Vjb25kYXJ5IHRyYW5zaXRpb24tY29sb3JzJyxcbiAgICAgICAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgICAgICAgICA/ICdjdXJzb3Itbm90LWFsbG93ZWQgb3BhY2l0eS01MCdcbiAgICAgICAgICAgICAgICA6ICdob3ZlcjpiZy1zdXJmYWNlLWhvdmVyIGhvdmVyOnRleHQtdGV4dC1wcmltYXJ5JyxcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICBhcmlhLWxhYmVsPXtpc1Zpc2libGUgPyAnSGlkZSBwYXNzd29yZCcgOiAnU2hvdyBwYXNzd29yZCd9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2lzVmlzaWJsZSA/IDxFeWVPZmYgY2xhc3NOYW1lPVwic2l6ZS00XCIgLz4gOiA8RXllIGNsYXNzTmFtZT1cInNpemUtNFwiIC8+fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH0sXG4pO1xuXG5TZWNyZXRJbnB1dC5kaXNwbGF5TmFtZSA9ICdTZWNyZXRJbnB1dCc7XG5cbmV4cG9ydCB7IFNlY3JldElucHV0IH07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlcklucHV0UHJvcHNcbiAgZXh0ZW5kcyBPbWl0PFJlYWN0LklucHV0SFRNTEF0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD4sICdwbGFjZWhvbGRlcic+IHtcbiAgLyoqIFRoZSBsYWJlbCB0ZXh0IHNob3duIGluIHRoZSBmbG9hdGluZyBsYWJlbCAqL1xuICBsYWJlbDogc3RyaW5nO1xuICAvKiogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBpbnB1dCAtIHVzZWQgdG8gbGluayBsYWJlbCAqL1xuICBpbnB1dElkOiBzdHJpbmc7XG4gIC8qKiBDb250YWluZXIgY2xhc3NOYW1lIGZvciBjdXN0b20gc3R5bGluZyAqL1xuICBjb250YWluZXJDbGFzc05hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBzdGFuZGFyZGl6ZWQgZmlsdGVyL3NlYXJjaCBpbnB1dCBjb21wb25lbnQgd2l0aCBhIGZsb2F0aW5nIGxhYmVsXG4gKiB0aGF0IGFuaW1hdGVzIHVwIHdoZW4gZm9jdXNlZCBvciBoYXMgYSB2YWx1ZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogPEZpbHRlcklucHV0XG4gKiAgIGlucHV0SWQ9XCJib29rbWFya3MtZmlsdGVyXCJcbiAqICAgbGFiZWw9e2xvY2FsaXplKCdjb21fdWlfYm9va21hcmtzX2ZpbHRlcicpfVxuICogICB2YWx1ZT17c2VhcmNoUXVlcnl9XG4gKiAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0U2VhcmNoUXVlcnkoZS50YXJnZXQudmFsdWUpfVxuICogLz5cbiAqL1xuY29uc3QgRmlsdGVySW5wdXQgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxJbnB1dEVsZW1lbnQsIEZpbHRlcklucHV0UHJvcHM+KFxuICAoeyBjbGFzc05hbWUsIGxhYmVsLCBpbnB1dElkLCBjb250YWluZXJDbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y24oJ3JlbGF0aXZlJywgY29udGFpbmVyQ2xhc3NOYW1lKX0+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGlkPXtpbnB1dElkfVxuICAgICAgICAgIHJlZj17cmVmfVxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiIFwiXG4gICAgICAgICAgYXJpYS1sYWJlbD17bGFiZWx9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICdwZWVyIGZsZXggaC0xMCB3LWZ1bGwgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWJvcmRlci1saWdodCBiZy10cmFuc3BhcmVudCBweC0zIHB5LTIgdGV4dC1zbSByaW5nLW9mZnNldC1iYWNrZ3JvdW5kIHBsYWNlaG9sZGVyOnRleHQtbXV0ZWQtZm9yZWdyb3VuZCBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCcsXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgKX1cbiAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIC8+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIGh0bWxGb3I9e2lucHV0SWR9XG4gICAgICAgICAgY2xhc3NOYW1lPVwicG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSBsZWZ0LTMgdG9wLTEvMiAtdHJhbnNsYXRlLXktMS8yIHRleHQtc20gdGV4dC10ZXh0LXNlY29uZGFyeSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDAgcGVlci1mb2N1czp0b3AtMCBwZWVyLWZvY3VzOmJnLWJhY2tncm91bmQgcGVlci1mb2N1czpweC0xIHBlZXItZm9jdXM6dGV4dC14cyBwZWVyLVs6bm90KDpwbGFjZWhvbGRlci1zaG93bildOnRvcC0wIHBlZXItWzpub3QoOnBsYWNlaG9sZGVyLXNob3duKV06YmctYmFja2dyb3VuZCBwZWVyLVs6bm90KDpwbGFjZWhvbGRlci1zaG93bildOnB4LTEgcGVlci1bOm5vdCg6cGxhY2Vob2xkZXItc2hvd24pXTp0ZXh0LXhzXCJcbiAgICAgICAgPlxuICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH0sXG4pO1xuXG5GaWx0ZXJJbnB1dC5kaXNwbGF5TmFtZSA9ICdGaWx0ZXJJbnB1dCc7XG5cbmV4cG9ydCB7IEZpbHRlcklucHV0IH07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBMYWJlbFByaW1pdGl2ZSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtbGFiZWwnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuY29uc3QgTGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBMYWJlbFByaW1pdGl2ZS5Sb290PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBMYWJlbFByaW1pdGl2ZS5Sb290PiAmIHtcbiAgICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIH1cbj4oKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8TGFiZWxQcmltaXRpdmUuUm9vdFxuICAgIHJlZj17cmVmfVxuICAgIHsuLi5wcm9wc31cbiAgICB7Li4ue1xuICAgICAgY2xhc3NOYW1lOiBjbihcbiAgICAgICAgJ2Jsb2NrIHctZnVsbCBicmVhay1hbGwgdGV4dC1zbSBsZWFkaW5nLW5vbmUgcGVlci1kaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgcGVlci1kaXNhYmxlZDpvcGFjaXR5LTcwIGRhcms6dGV4dC1ncmF5LTIwMCcsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICksXG4gICAgfX1cbiAgLz5cbikpO1xuTGFiZWwuZGlzcGxheU5hbWUgPSBMYWJlbFByaW1pdGl2ZS5Sb290LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBMYWJlbCB9O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgRGlhbG9nUHJpbWl0aXZlIGZyb20gJ0ByYWRpeC11aS9yZWFjdC1kaWFsb2cnO1xuaW1wb3J0IHsgWCB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5jb25zdCBEaWFsb2dEZXB0aENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KDApO1xuXG5pbnRlcmZhY2UgT0dEaWFsb2dQcm9wcyBleHRlbmRzIERpYWxvZ1ByaW1pdGl2ZS5EaWFsb2dQcm9wcyB7XG4gIHRyaWdnZXJSZWY/OiBSZWFjdC5SZWZPYmplY3Q8SFRNTEJ1dHRvbkVsZW1lbnQgfCBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTERpdkVsZW1lbnQgfCBudWxsPjtcbiAgdHJpZ2dlclJlZnM/OiBSZWFjdC5SZWZPYmplY3Q8SFRNTEJ1dHRvbkVsZW1lbnQgfCBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTERpdkVsZW1lbnQgfCBudWxsPltdO1xufVxuXG5jb25zdCBEaWFsb2cgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxEaXZFbGVtZW50LCBPR0RpYWxvZ1Byb3BzPihcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAoeyBjaGlsZHJlbiwgdHJpZ2dlclJlZiwgdHJpZ2dlclJlZnMsIG9uT3BlbkNoYW5nZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgcGFyZW50RGVwdGggPSBSZWFjdC51c2VDb250ZXh0KERpYWxvZ0RlcHRoQ29udGV4dCk7XG4gICAgY29uc3QgY3VycmVudERlcHRoID0gcGFyZW50RGVwdGggKyAxO1xuXG4gICAgY29uc3QgaGFuZGxlT3BlbkNoYW5nZSA9IChvcGVuOiBib29sZWFuKSA9PiB7XG4gICAgICBpZiAoIW9wZW4gJiYgdHJpZ2dlclJlZj8uY3VycmVudCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0cmlnZ2VyUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICAgIH0sIDApO1xuICAgICAgfVxuICAgICAgaWYgKHRyaWdnZXJSZWZzPy5sZW5ndGgpIHtcbiAgICAgICAgdHJpZ2dlclJlZnMuZm9yRWFjaCgocmVmKSA9PiB7XG4gICAgICAgICAgaWYgKHJlZj8uY3VycmVudCkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIG9uT3BlbkNoYW5nZT8uKG9wZW4pO1xuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPERpYWxvZ0RlcHRoQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17Y3VycmVudERlcHRofT5cbiAgICAgICAgPERpYWxvZ1ByaW1pdGl2ZS5Sb290IHsuLi5wcm9wc30gb25PcGVuQ2hhbmdlPXtoYW5kbGVPcGVuQ2hhbmdlfT5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvRGlhbG9nUHJpbWl0aXZlLlJvb3Q+XG4gICAgICA8L0RpYWxvZ0RlcHRoQ29udGV4dC5Qcm92aWRlcj5cbiAgICApO1xuICB9LFxuKTtcblxuY29uc3QgRGlhbG9nVHJpZ2dlciA9IERpYWxvZ1ByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBEaWFsb2dQb3J0YWwgPSBEaWFsb2dQcmltaXRpdmUuUG9ydGFsO1xuXG5jb25zdCBEaWFsb2dDbG9zZSA9IERpYWxvZ1ByaW1pdGl2ZS5DbG9zZTtcblxuZXhwb3J0IGNvbnN0IERpYWxvZ092ZXJsYXkgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuT3ZlcmxheT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLk92ZXJsYXk+XG4+KCh7IGNsYXNzTmFtZSwgc3R5bGUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICBjb25zdCBkZXB0aCA9IFJlYWN0LnVzZUNvbnRleHQoRGlhbG9nRGVwdGhDb250ZXh0KTtcbiAgY29uc3Qgb3ZlcmxheVpJbmRleCA9IDEzMCArIChkZXB0aCAtIDEpICogNjA7XG5cbiAgcmV0dXJuIChcbiAgICA8RGlhbG9nUHJpbWl0aXZlLk92ZXJsYXlcbiAgICAgIHJlZj17cmVmfVxuICAgICAgc3R5bGU9e3sgLi4uc3R5bGUsIHpJbmRleDogb3ZlcmxheVpJbmRleCB9fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ2ZpeGVkIGluc2V0LTAgYmctYmxhY2svODAgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTAnLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICk7XG59KTtcbkRpYWxvZ092ZXJsYXkuZGlzcGxheU5hbWUgPSBEaWFsb2dQcmltaXRpdmUuT3ZlcmxheS5kaXNwbGF5TmFtZTtcblxudHlwZSBEaWFsb2dDb250ZW50UHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5Db250ZW50PiAmIHtcbiAgc2hvd0Nsb3NlQnV0dG9uPzogYm9vbGVhbjtcbiAgZGlzYWJsZVNjcm9sbD86IGJvb2xlYW47XG4gIG92ZXJsYXlDbGFzc05hbWU/OiBzdHJpbmc7XG59O1xuXG5jb25zdCBEaWFsb2dDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBEaWFsb2dDb250ZW50UHJvcHNcbj4oXG4gIChcbiAgICB7XG4gICAgICBjbGFzc05hbWUsXG4gICAgICBvdmVybGF5Q2xhc3NOYW1lLFxuICAgICAgc2hvd0Nsb3NlQnV0dG9uID0gdHJ1ZSxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgc3R5bGUsXG4gICAgICBvbkVzY2FwZUtleURvd246IHByb3BzT25Fc2NhcGVLZXlEb3duLFxuICAgICAgLi4ucHJvcHNcbiAgICB9LFxuICAgIHJlZixcbiAgKSA9PiB7XG4gICAgY29uc3QgZGVwdGggPSBSZWFjdC51c2VDb250ZXh0KERpYWxvZ0RlcHRoQ29udGV4dCk7XG4gICAgY29uc3QgY29udGVudFpJbmRleCA9IDE0MCArIChkZXB0aCAtIDEpICogNjA7XG5cbiAgICAvKiBIYW5kbGUgRXNjYXBlIGtleSB0byBwcmV2ZW50IGNsb3NpbmcgZGlhbG9nIGlmIGEgdG9vbHRpcCBvciBkcm9wZG93biBoYXMgZm9jdXNcbiAgICAodGhpcyBpcyBhIHdvcmthcm91bmQgaW4gb3JkZXIgdG8gYWNoaWV2ZSBXQ0FHIGNvbXBsaWFuY2Ugd2hpY2ggcmVxdWlyZXNcbiAgICB0aGF0IG91ciB0b29sdGlwcyBiZSBkaXNtaXNzYWJsZSB3aXRoIEVzY2FwZSBrZXkpICovXG4gICAgY29uc3QgaGFuZGxlRXNjYXBlS2V5RG93biA9IFJlYWN0LnVzZUNhbGxiYWNrKFxuICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuXG4gICAgICAgIC8vIENoZWNrIGlmIGFjdGl2ZSBlbGVtZW50IGlzIGEgdHJpZ2dlciB3aXRoIGFuIG9wZW4gcG9wb3ZlciAoYXJpYS1leHBhbmRlZD1cInRydWVcIilcbiAgICAgICAgaWYgKGFjdGl2ZUVsZW1lbnQ/LmdldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcpID09PSAndHJ1ZScpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGlmIGEgZHJvcGRvd24gbWVudSwgbGlzdGJveCwgb3IgY29tYm9ib3ggaGFzIGZvY3VzIChmb2N1cyBpcyB3aXRoaW4gaXQpXG4gICAgICAgIGNvbnN0IHBvcG92ZXJFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgICAgJ1tyb2xlPVwibWVudVwiXSwgW3JvbGU9XCJsaXN0Ym94XCJdLCBbcm9sZT1cImNvbWJvYm94XCJdJyxcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBwb3BvdmVyIG9mIHBvcG92ZXJFbGVtZW50cykge1xuICAgICAgICAgIGlmIChwb3BvdmVyLmNvbnRhaW5zKGFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGlmIGEgdG9vbHRpcCBoYXMgZm9jdXMgKGZvY3VzIGlzIHdpdGhpbiBpdClcbiAgICAgICAgY29uc3QgdG9vbHRpcHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudG9vbHRpcCcpO1xuICAgICAgICBmb3IgKGNvbnN0IHRvb2x0aXAgb2YgdG9vbHRpcHMpIHtcbiAgICAgICAgICBpZiAodG9vbHRpcC5jb250YWlucyhhY3RpdmVFbGVtZW50KSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBwcm9wc09uRXNjYXBlS2V5RG93bj8uKGV2ZW50KTtcbiAgICAgIH0sXG4gICAgICBbcHJvcHNPbkVzY2FwZUtleURvd25dLFxuICAgICk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPERpYWxvZ1BvcnRhbD5cbiAgICAgICAgPERpYWxvZ092ZXJsYXkgY2xhc3NOYW1lPXtvdmVybGF5Q2xhc3NOYW1lfSAvPlxuICAgICAgICA8RGlhbG9nUHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgICBzdHlsZT17eyAuLi5zdHlsZSwgekluZGV4OiBjb250ZW50WkluZGV4IH19XG4gICAgICAgICAgb25Fc2NhcGVLZXlEb3duPXtoYW5kbGVFc2NhcGVLZXlEb3dufVxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAnbWF4LXctMTEvMTIgZml4ZWQgbGVmdC1bNTAlXSB0b3AtWzUwJV0gZ3JpZCBtYXgtaC1bOTB2aF0gdy1mdWxsIHRyYW5zbGF0ZS14LVstNTAlXSB0cmFuc2xhdGUteS1bLTUwJV0gZ2FwLTQgb3ZlcmZsb3cteS1hdXRvIHJvdW5kZWQtMnhsIGJnLWJhY2tncm91bmQgcC02IHRleHQtdGV4dC1wcmltYXJ5IHNoYWRvdy1sZyBkdXJhdGlvbi0yMDAgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTp6b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTp6b29tLWluLTk1IGRhdGEtW3N0YXRlPWNsb3NlZF06c2xpZGUtb3V0LXRvLWxlZnQtMS8yIGRhdGEtW3N0YXRlPWNsb3NlZF06c2xpZGUtb3V0LXRvLXRvcC1bNDglXSBkYXRhLVtzdGF0ZT1vcGVuXTpzbGlkZS1pbi1mcm9tLWxlZnQtMS8yIGRhdGEtW3N0YXRlPW9wZW5dOnNsaWRlLWluLWZyb20tdG9wLVs0OCVdJyxcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICApfVxuICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICB7c2hvd0Nsb3NlQnV0dG9uICYmIChcbiAgICAgICAgICAgIDxEaWFsb2dQcmltaXRpdmUuQ2xvc2UgY2xhc3NOYW1lPVwiYWJzb2x1dGUgcmlnaHQtNCB0b3AtNCByb3VuZGVkLXNtIG9wYWNpdHktNzAgcmluZy1yaW5nLXByaW1hcnkgcmluZy1vZmZzZXQtYmFja2dyb3VuZCB0cmFuc2l0aW9uLW9wYWNpdHkgaG92ZXI6b3BhY2l0eS0xMDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLXJpbmcgZm9jdXM6cmluZy1vZmZzZXQtMiBkaXNhYmxlZDpwb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW3N0YXRlPW9wZW5dOmJnLWFjY2VudCBkYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICAgICAgPFggY2xhc3NOYW1lPVwiaC02IHctNlwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInNyLW9ubHlcIj5DbG9zZTwvc3Bhbj5cbiAgICAgICAgICAgIDwvRGlhbG9nUHJpbWl0aXZlLkNsb3NlPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvRGlhbG9nUHJpbWl0aXZlLkNvbnRlbnQ+XG4gICAgICA8L0RpYWxvZ1BvcnRhbD5cbiAgICApO1xuICB9LFxuKTtcbkRpYWxvZ0NvbnRlbnQuZGlzcGxheU5hbWUgPSBEaWFsb2dQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgRGlhbG9nSGVhZGVyID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4pID0+IChcbiAgPGRpdiBjbGFzc05hbWU9e2NuKCdmbGV4IGZsZXgtY29sIHNwYWNlLXktMS41IHRleHQtY2VudGVyIHNtOnRleHQtbGVmdCcsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbik7XG5EaWFsb2dIZWFkZXIuZGlzcGxheU5hbWUgPSAnRGlhbG9nSGVhZGVyJztcblxuY29uc3QgRGlhbG9nRm9vdGVyID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4pID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17Y24oJ2ZsZXggZmxleC1jb2wtcmV2ZXJzZSBzbTpmbGV4LXJvdyBzbTpqdXN0aWZ5LWVuZCBzbTpzcGFjZS14LTInLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5EaWFsb2dGb290ZXIuZGlzcGxheU5hbWUgPSAnRGlhbG9nRm9vdGVyJztcblxuY29uc3QgRGlhbG9nVGl0bGUgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuVGl0bGU+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5UaXRsZT5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERpYWxvZ1ByaW1pdGl2ZS5UaXRsZVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oJ3RleHQtbGcgZm9udC1zZW1pYm9sZCBsZWFkaW5nLW5vbmUgdHJhY2tpbmctdGlnaHQnLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRGlhbG9nVGl0bGUuZGlzcGxheU5hbWUgPSBEaWFsb2dQcmltaXRpdmUuVGl0bGUuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERpYWxvZ0Rlc2NyaXB0aW9uID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuRGVzY3JpcHRpb24+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEaWFsb2dQcmltaXRpdmUuRGVzY3JpcHRpb25cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKCd0ZXh0LXNtIHRleHQtdGV4dC1zZWNvbmRhcnknLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRGlhbG9nRGVzY3JpcHRpb24uZGlzcGxheU5hbWUgPSBEaWFsb2dQcmltaXRpdmUuRGVzY3JpcHRpb24uZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7XG4gIERpYWxvZyBhcyBPR0RpYWxvZyxcbiAgRGlhbG9nUG9ydGFsIGFzIE9HRGlhbG9nUG9ydGFsLFxuICBEaWFsb2dPdmVybGF5IGFzIE9HRGlhbG9nT3ZlcmxheSxcbiAgRGlhbG9nQ2xvc2UgYXMgT0dEaWFsb2dDbG9zZSxcbiAgRGlhbG9nVHJpZ2dlciBhcyBPR0RpYWxvZ1RyaWdnZXIsXG4gIERpYWxvZ0NvbnRlbnQgYXMgT0dEaWFsb2dDb250ZW50LFxuICBEaWFsb2dIZWFkZXIgYXMgT0dEaWFsb2dIZWFkZXIsXG4gIERpYWxvZ0Zvb3RlciBhcyBPR0RpYWxvZ0Zvb3RlcixcbiAgRGlhbG9nVGl0bGUgYXMgT0dEaWFsb2dUaXRsZSxcbiAgRGlhbG9nRGVzY3JpcHRpb24gYXMgT0dEaWFsb2dEZXNjcmlwdGlvbixcbn07XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgUXVlc3Rpb25NYXJrID0gKHsgY2xhc3NOYW1lID0gJycgfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxzcGFuPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICdib3JkZXItdG9rZW4tYm9yZGVyLW1lZGl1bSB0ZXh0LXRva2VuLXRleHQtdGVydGlhcnkgbWwtMiBmbGV4IGgtMy41IHctMy41IGN1cnNvci1kZWZhdWx0IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWZ1bGwgYm9yZGVyIHRleHQtWzAuNXJlbV0gZm9udC1tZWRpdW0gbGVhZGluZy1ub25lJyxcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICA+XG4gICAgICAgID9cbiAgICAgIDwvZGl2PlxuICAgIDwvc3Bhbj5cbiAgKTtcbn07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBTbGlkZXJQcmltaXRpdmUgZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXNsaWRlcic7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG50eXBlIFNsaWRlclByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTbGlkZXJQcmltaXRpdmUuUm9vdD4gJiB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgb25Eb3VibGVDbGljaz86ICgpID0+IHZvaWQ7XG4gICdhcmlhLWRlc2NyaWJlZGJ5Jz86IHN0cmluZztcbn0gJiAoXG4gICAgfCB7ICdhcmlhLWxhYmVsJzogc3RyaW5nOyAnYXJpYS1sYWJlbGxlZGJ5Jz86IG5ldmVyIH1cbiAgICB8IHsgJ2FyaWEtbGFiZWxsZWRieSc6IHN0cmluZzsgJ2FyaWEtbGFiZWwnPzogbmV2ZXIgfVxuICAgIHwgeyAnYXJpYS1sYWJlbCc6IHN0cmluZzsgJ2FyaWEtbGFiZWxsZWRieSc6IHN0cmluZyB9XG4gICk7XG5cbmNvbnN0IFNsaWRlciA9IFJlYWN0LmZvcndhcmRSZWY8UmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2xpZGVyUHJpbWl0aXZlLlJvb3Q+LCBTbGlkZXJQcm9wcz4oXG4gIChcbiAgICB7XG4gICAgICBjbGFzc05hbWUsXG4gICAgICBvbkRvdWJsZUNsaWNrLFxuICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IGFyaWFMYWJlbGxlZEJ5LFxuICAgICAgJ2FyaWEtbGFiZWwnOiBhcmlhTGFiZWwsXG4gICAgICAnYXJpYS1kZXNjcmliZWRieSc6IGFyaWFEZXNjcmliZWRCeSxcbiAgICAgIC4uLnByb3BzXG4gICAgfSxcbiAgICByZWYsXG4gICkgPT4gKFxuICAgIDxTbGlkZXJQcmltaXRpdmUuUm9vdFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgICB7Li4ue1xuICAgICAgICBjbGFzc05hbWU6IGNuKFxuICAgICAgICAgICdyZWxhdGl2ZSBmbGV4IHctZnVsbCBjdXJzb3ItcG9pbnRlciB0b3VjaC1ub25lIHNlbGVjdC1ub25lIGl0ZW1zLWNlbnRlcicsXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApLFxuICAgICAgICBvbkRvdWJsZUNsaWNrLFxuICAgICAgfX1cbiAgICA+XG4gICAgICA8U2xpZGVyUHJpbWl0aXZlLlRyYWNrXG4gICAgICAgIHsuLi57IGNsYXNzTmFtZTogJ3JlbGF0aXZlIGgtMiB3LWZ1bGwgZ3JvdyBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1mdWxsIGJnLXNlY29uZGFyeScgfX1cbiAgICAgID5cbiAgICAgICAgPFNsaWRlclByaW1pdGl2ZS5SYW5nZSB7Li4ueyBjbGFzc05hbWU6ICdhYnNvbHV0ZSBoLWZ1bGwgYmctcHJpbWFyeScgfX0gLz5cbiAgICAgIDwvU2xpZGVyUHJpbWl0aXZlLlRyYWNrPlxuICAgICAgPFNsaWRlclByaW1pdGl2ZS5UaHVtYlxuICAgICAgICB7Li4ue1xuICAgICAgICAgIGNsYXNzTmFtZTpcbiAgICAgICAgICAgICdibG9jayBoLTUgdy01IHJvdW5kZWQtZnVsbCBib3JkZXItMiBib3JkZXItcHJpbWFyeSBiZy1iYWNrZ3JvdW5kIHJpbmctb2Zmc2V0LWJhY2tncm91bmQgdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcgZm9jdXMtdmlzaWJsZTpyaW5nLW9mZnNldC0yIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgZGlzYWJsZWQ6b3BhY2l0eS01MCcsXG4gICAgICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IGFyaWFMYWJlbGxlZEJ5LFxuICAgICAgICAgICdhcmlhLWxhYmVsJzogYXJpYUxhYmVsLFxuICAgICAgICAgICdhcmlhLWRlc2NyaWJlZGJ5JzogYXJpYURlc2NyaWJlZEJ5LFxuICAgICAgICB9fVxuICAgICAgLz5cbiAgICA8L1NsaWRlclByaW1pdGl2ZS5Sb290PlxuICApLFxuKTtcblNsaWRlci5kaXNwbGF5TmFtZSA9IFNsaWRlclByaW1pdGl2ZS5Sb290LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBTbGlkZXIgfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFNlcGFyYXRvclByaW1pdGl2ZSBmcm9tICdAcmFkaXgtdWkvcmVhY3Qtc2VwYXJhdG9yJztcblxuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuY29uc3QgU2VwYXJhdG9yID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VwYXJhdG9yUHJpbWl0aXZlLlJvb3Q+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlcGFyYXRvclByaW1pdGl2ZS5Sb290PiAmIHtcbiAgICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIH1cbj4oKHsgY2xhc3NOYW1lID0gJycsIG9yaWVudGF0aW9uID0gJ2hvcml6b250YWwnLCBkZWNvcmF0aXZlID0gdHJ1ZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZXBhcmF0b3JQcmltaXRpdmUuUm9vdFxuICAgIHJlZj17cmVmfVxuICAgIHsuLi5wcm9wc31cbiAgICB7Li4ue1xuICAgICAgZGVjb3JhdGl2ZSxcbiAgICAgIG9yaWVudGF0aW9uLFxuICAgICAgY2xhc3NOYW1lOiBjbihcbiAgICAgICAgJ3Nocmluay0wIGJnLWJvcmRlci1saWdodCcsXG4gICAgICAgIG9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcgPyAnaC1bMXB4XSB3LWZ1bGwnIDogJ2gtZnVsbCB3LVsxcHhdJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKSxcbiAgICB9fVxuICAvPlxuKSk7XG5TZXBhcmF0b3IuZGlzcGxheU5hbWUgPSBTZXBhcmF0b3JQcmltaXRpdmUuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgU2VwYXJhdG9yIH07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgQXJpYWtpdCBmcm9tICdAYXJpYWtpdC9yZWFjdCc7XG5pbXBvcnQgdHlwZSB7IE9wdGlvbldpdGhJY29uIH0gZnJvbSAnfi9jb21tb24nO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxudHlwZSBDb21ib2JveFByb3BzID0ge1xuICBsYWJlbD86IHN0cmluZztcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIG9wdGlvbnM6IE9wdGlvbldpdGhJY29uW10gfCBzdHJpbmdbXTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBsYWJlbENsYXNzTmFtZT86IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICBvbkJsdXI6ICgpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgY29uc3QgSW5wdXRDb21ib2JveDogUmVhY3QuRkM8Q29tYm9ib3hQcm9wcz4gPSAoe1xuICBsYWJlbCxcbiAgbGFiZWxDbGFzc05hbWUsXG4gIHBsYWNlaG9sZGVyID0gJ1NlbGVjdCBhbiBvcHRpb24nLFxuICBvcHRpb25zLFxuICBjbGFzc05hbWUsXG4gIHZhbHVlLFxuICBvbkNoYW5nZSxcbiAgb25CbHVyLFxufSkgPT4ge1xuICBjb25zdCBpc09wdGlvbk9iamVjdCA9IChvcHRpb246IHVua25vd24pOiBvcHRpb24gaXMgT3B0aW9uV2l0aEljb24gPT4ge1xuICAgIHJldHVybiBvcHRpb24gIT0gbnVsbCAmJiB0eXBlb2Ygb3B0aW9uID09PSAnb2JqZWN0JyAmJiAndmFsdWUnIGluIG9wdGlvbjtcbiAgfTtcblxuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbaW5wdXRWYWx1ZSwgc2V0SW5wdXRWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZSh2YWx1ZSk7XG4gIGNvbnN0IFtpc0tleWJvYXJkRm9jdXMsIHNldElzS2V5Ym9hcmRGb2N1c10gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRJbnB1dFZhbHVlKHZhbHVlKTtcbiAgfSwgW3ZhbHVlXSk7XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKG5ld1ZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBzZXRJbnB1dFZhbHVlKG5ld1ZhbHVlKTtcbiAgICBvbkNoYW5nZShuZXdWYWx1ZSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8QXJpYWtpdC5Db21ib2JveFByb3ZpZGVyIHZhbHVlPXtpbnB1dFZhbHVlfSBzZXRWYWx1ZT17aGFuZGxlQ2hhbmdlfT5cbiAgICAgIHtsYWJlbCAhPSBudWxsICYmIChcbiAgICAgICAgPEFyaWFraXQuQ29tYm9ib3hMYWJlbFxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oJ21iLTIgYmxvY2sgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LXRleHQtcHJpbWFyeScsIGxhYmVsQ2xhc3NOYW1lID8/ICcnKX1cbiAgICAgICAgPlxuICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgPC9Bcmlha2l0LkNvbWJvYm94TGFiZWw+XG4gICAgICApfVxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKCdyZWxhdGl2ZScsIGlzS2V5Ym9hcmRGb2N1cyA/ICdyb3VuZGVkLW1kIHJpbmctMiByaW5nLXJpbmctcHJpbWFyeScgOiAnJyl9PlxuICAgICAgICA8QXJpYWtpdC5Db21ib2JveFxuICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ2gtMTAgdy1mdWxsIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ib3JkZXItbGlnaHQgYmctc3VyZmFjZS1wcmltYXJ5IHB4LTMgcHktMiB0ZXh0LXNtJyxcbiAgICAgICAgICAgICdwbGFjZWhvbGRlci10ZXh0LXNlY29uZGFyeSBob3ZlcjpiZy1zdXJmYWNlLWhvdmVyJyxcbiAgICAgICAgICAgICdmb2N1czpvdXRsaW5lLW5vbmUnLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICl9XG4gICAgICAgICAgb25DaGFuZ2U9eyhldmVudCkgPT4gaGFuZGxlQ2hhbmdlKGV2ZW50LnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgb25CbHVyPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXRJc0tleWJvYXJkRm9jdXMoZmFsc2UpO1xuICAgICAgICAgICAgb25CbHVyKCk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkZvY3VzVmlzaWJsZT17KCkgPT4ge1xuICAgICAgICAgICAgc2V0SXNLZXlib2FyZEZvY3VzKHRydWUpO1xuICAgICAgICAgICAgc2V0SXNPcGVuKHRydWUpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHtcbiAgICAgICAgICAgIHNldElzS2V5Ym9hcmRGb2N1cyhmYWxzZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPEFyaWFraXQuQ29tYm9ib3hQb3BvdmVyXG4gICAgICAgIGd1dHRlcj17NH1cbiAgICAgICAgc2FtZVdpZHRoXG4gICAgICAgIG9wZW49e2lzT3Blbn1cbiAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0SXNPcGVuKGZhbHNlKX1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAnei01MCBtYXgtaC02MCB3LWZ1bGwgb3ZlcmZsb3ctYXV0byByb3VuZGVkLW1kIGJnLXN1cmZhY2UtcHJpbWFyeSBwLTEgc2hhZG93LWxnJyxcbiAgICAgICAgICAnYW5pbWF0ZS1pbiBmYWRlLWluLTAgem9vbS1pbi05NScsXG4gICAgICAgICl9XG4gICAgICA+XG4gICAgICAgIHtvcHRpb25zLm1hcCgob3B0aW9uOiBzdHJpbmcgfCBPcHRpb25XaXRoSWNvbiwgaW5kZXg6IG51bWJlcikgPT4gKFxuICAgICAgICAgIDxBcmlha2l0LkNvbWJvYm94SXRlbVxuICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICdyZWxhdGl2ZSBmbGV4IGN1cnNvci1kZWZhdWx0IHNlbGVjdC1ub25lIGl0ZW1zLWNlbnRlciByb3VuZGVkLXNtIHB4LTIgcHktMS41IHRleHQtc20gb3V0bGluZS1ub25lJyxcbiAgICAgICAgICAgICAgJ2N1cnNvci1wb2ludGVyIGhvdmVyOmJnLXN1cmZhY2UtdGVydGlhcnkgaG92ZXI6dGV4dC10ZXh0LXByaW1hcnknLFxuICAgICAgICAgICAgICAnZGF0YS1bYWN0aXZlLWl0ZW1dOmJnLXN1cmZhY2UtdGVydGlhcnkgZGF0YS1bYWN0aXZlLWl0ZW1dOnRleHQtdGV4dC1wcmltYXJ5JyxcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB2YWx1ZT17aXNPcHRpb25PYmplY3Qob3B0aW9uKSA/IGAke29wdGlvbi52YWx1ZSA/PyAnJ31gIDogb3B0aW9ufVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpc09wdGlvbk9iamVjdChvcHRpb24pICYmIG9wdGlvbi5pY29uICE9IG51bGwgJiYgKFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtci0yIGZsZXgtc2hyaW5rLTBcIj57b3B0aW9uLmljb259PC9zcGFuPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHtpc09wdGlvbk9iamVjdChvcHRpb24pID8gb3B0aW9uLmxhYmVsIDogb3B0aW9ufVxuICAgICAgICAgIDwvQXJpYWtpdC5Db21ib2JveEl0ZW0+XG4gICAgICAgICkpfVxuICAgICAgPC9Bcmlha2l0LkNvbWJvYm94UG9wb3Zlcj5cbiAgICA8L0FyaWFraXQuQ29tYm9ib3hQcm92aWRlcj5cbiAgKTtcbn07XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5mdW5jdGlvbiBTa2VsZXRvbih7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ2FuaW1hdGUtcHVsc2Ugcm91bmRlZC1tZCBiZy1zdXJmYWNlLXRlcnRpYXJ5IG9wYWNpdHktNTAgZGFyazpvcGFjaXR5LTI1JyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufVxuXG5leHBvcnQgeyBTa2VsZXRvbiB9O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgU3dpdGNoUHJpbWl0aXZlcyBmcm9tICdAcmFkaXgtdWkvcmVhY3Qtc3dpdGNoJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbnR5cGUgQmFzZVN3aXRjaFByb3BzID0gT21pdDxcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTd2l0Y2hQcmltaXRpdmVzLlJvb3Q+LFxuICAnYXJpYS1sYWJlbCcgfCAnYXJpYS1sYWJlbGxlZGJ5J1xuPjtcblxudHlwZSBTd2l0Y2hQcm9wcyA9XG4gIHwgKEJhc2VTd2l0Y2hQcm9wcyAmIHtcbiAgICAgICdhcmlhLWxhYmVsJzogc3RyaW5nO1xuICAgICAgJ2FyaWEtbGFiZWxsZWRieSc/OiBuZXZlcjtcbiAgICB9KVxuICB8IChCYXNlU3dpdGNoUHJvcHMgJiB7XG4gICAgICAnYXJpYS1sYWJlbGxlZGJ5Jzogc3RyaW5nO1xuICAgICAgJ2FyaWEtbGFiZWwnPzogbmV2ZXI7XG4gICAgfSk7XG5cbmNvbnN0IFN3aXRjaCA9IFJlYWN0LmZvcndhcmRSZWY8UmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU3dpdGNoUHJpbWl0aXZlcy5Sb290PiwgU3dpdGNoUHJvcHM+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxTd2l0Y2hQcmltaXRpdmVzLlJvb3RcbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdwZWVyIGlubGluZS1mbGV4IGgtNiB3LTExIHNocmluay0wIGN1cnNvci1wb2ludGVyIGl0ZW1zLWNlbnRlciByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLXRyYW5zcGFyZW50IHRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1yaW5nIGZvY3VzLXZpc2libGU6cmluZy1vZmZzZXQtMiBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LWJhY2tncm91bmQgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTAgZGF0YS1bc3RhdGU9Y2hlY2tlZF06YmctcHJpbWFyeSBkYXRhLVtzdGF0ZT11bmNoZWNrZWRdOmJnLXN3aXRjaC11bmNoZWNrZWQnLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgICAgcmVmPXtyZWZ9XG4gICAgPlxuICAgICAgPFN3aXRjaFByaW1pdGl2ZXMuVGh1bWJcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAncG9pbnRlci1ldmVudHMtbm9uZSBibG9jayBoLTUgdy01IHJvdW5kZWQtZnVsbCBiZy1iYWNrZ3JvdW5kIHNoYWRvdy1sZyByaW5nLTAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZGF0YS1bc3RhdGU9Y2hlY2tlZF06dHJhbnNsYXRlLXgtNSBkYXRhLVtzdGF0ZT11bmNoZWNrZWRdOnRyYW5zbGF0ZS14LTAnLFxuICAgICAgICApfVxuICAgICAgLz5cbiAgICA8L1N3aXRjaFByaW1pdGl2ZXMuUm9vdD5cbiAgKSxcbik7XG5Td2l0Y2guZGlzcGxheU5hbWUgPSBTd2l0Y2hQcmltaXRpdmVzLlJvb3QuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IFN3aXRjaCB9O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuaW50ZXJmYWNlIFRhYmxlUHJvcHMgZXh0ZW5kcyBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVFbGVtZW50PiB7XG4gIHVud3JhcHBlZD86IGJvb2xlYW47XG59XG5cbmNvbnN0IFRhYmxlID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVFbGVtZW50LCBUYWJsZVByb3BzPihcbiAgKHsgY2xhc3NOYW1lLCB1bndyYXBwZWQgPSBmYWxzZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgdGFibGVFbGVtZW50ID0gKFxuICAgICAgPHRhYmxlIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKCd3LWZ1bGwgY2FwdGlvbi1ib3R0b20gdGV4dC1zbScsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgICApO1xuXG4gICAgaWYgKHVud3JhcHBlZCkge1xuICAgICAgcmV0dXJuIHRhYmxlRWxlbWVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSB3LWZ1bGwgb3ZlcmZsb3ctYXV0b1wiPnt0YWJsZUVsZW1lbnR9PC9kaXY+O1xuICB9LFxuKTtcblRhYmxlLmRpc3BsYXlOYW1lID0gJ1RhYmxlJztcblxuY29uc3QgVGFibGVIZWFkZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MVGFibGVTZWN0aW9uRWxlbWVudCxcbiAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDx0aGVhZCByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbignWyZfdHJdOmJvcmRlci1iJywgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuKSk7XG5UYWJsZUhlYWRlci5kaXNwbGF5TmFtZSA9ICdUYWJsZUhlYWRlcic7XG5cbmNvbnN0IFRhYmxlQm9keSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LFxuICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPHRib2R5IHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKCdbJl90cjpsYXN0LWNoaWxkXTpib3JkZXItMCcsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbikpO1xuVGFibGVCb2R5LmRpc3BsYXlOYW1lID0gJ1RhYmxlQm9keSc7XG5cbmNvbnN0IFRhYmxlRm9vdGVyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQsXG4gIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8dGZvb3RcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKCdib3JkZXItdCBiZy1tdXRlZC81MCBmb250LW1lZGl1bSBbJj50cl06bGFzdDpib3JkZXItYi0wJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcblRhYmxlRm9vdGVyLmRpc3BsYXlOYW1lID0gJ1RhYmxlRm9vdGVyJztcblxuY29uc3QgVGFibGVSb3cgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZVJvd0VsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVJvd0VsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8dHJcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ2JvcmRlci1iIGJvcmRlci1ib3JkZXItbGlnaHQgdHJhbnNpdGlvbi1jb2xvcnMgaG92ZXI6YmctbXV0ZWQvNTAgZGF0YS1bc3RhdGU9c2VsZWN0ZWRdOmJnLW11dGVkJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApLFxuKTtcblRhYmxlUm93LmRpc3BsYXlOYW1lID0gJ1RhYmxlUm93JztcblxuY29uc3QgVGFibGVIZWFkID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTFRhYmxlQ2VsbEVsZW1lbnQsXG4gIFJlYWN0LlRoSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDx0aFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAnaC0xMiBweC00IHRleHQtbGVmdCBhbGlnbi1taWRkbGUgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIFsmOmhhcyhbcm9sZT1jaGVja2JveF0pXTpwci0wJyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuVGFibGVIZWFkLmRpc3BsYXlOYW1lID0gJ1RhYmxlSGVhZCc7XG5cbmNvbnN0IFRhYmxlQ2VsbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxUYWJsZUNlbGxFbGVtZW50LFxuICBSZWFjdC5UZEhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUNlbGxFbGVtZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8dGRcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKCdwLTQgYWxpZ24tbWlkZGxlIFsmOmhhcyhbcm9sZT1jaGVja2JveF0pXTpwci0wJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcblRhYmxlQ2VsbC5kaXNwbGF5TmFtZSA9ICdUYWJsZUNlbGwnO1xuXG5jb25zdCBUYWJsZVJvd0hlYWRlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxUYWJsZUNlbGxFbGVtZW50LFxuICBSZWFjdC5UaEhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUNlbGxFbGVtZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8dGhcbiAgICByZWY9e3JlZn1cbiAgICBzY29wZT1cInJvd1wiXG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICdwLTQgdGV4dC1sZWZ0IGFsaWduLW1pZGRsZSBmb250LW1lZGl1bSBbJjpoYXMoW3JvbGU9Y2hlY2tib3hdKV06cHItMCcsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcblRhYmxlUm93SGVhZGVyLmRpc3BsYXlOYW1lID0gJ1RhYmxlUm93SGVhZGVyJztcblxuY29uc3QgVGFibGVDYXB0aW9uID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQsXG4gIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUNhcHRpb25FbGVtZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Y2FwdGlvbiByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbignbXQtNCB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCcsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbikpO1xuVGFibGVDYXB0aW9uLmRpc3BsYXlOYW1lID0gJ1RhYmxlQ2FwdGlvbic7XG5cbmV4cG9ydCB7XG4gIFRhYmxlLFxuICBUYWJsZUhlYWRlcixcbiAgVGFibGVCb2R5LFxuICBUYWJsZUZvb3RlcixcbiAgVGFibGVIZWFkLFxuICBUYWJsZVJvdyxcbiAgVGFibGVDZWxsLFxuICBUYWJsZVJvd0hlYWRlcixcbiAgVGFibGVDYXB0aW9uLFxufTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFRhYnNQcmltaXRpdmUgZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXRhYnMnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuY29uc3QgVGFicyA9IFRhYnNQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgVGFic0xpc3QgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBUYWJzUHJpbWl0aXZlLkxpc3Q+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFRhYnNQcmltaXRpdmUuTGlzdD5cbj4oKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8VGFic1ByaW1pdGl2ZS5MaXN0XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICdpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1tZCBiZy1zdXJmYWNlLXByaW1hcnknLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5UYWJzTGlzdC5kaXNwbGF5TmFtZSA9IFRhYnNQcmltaXRpdmUuTGlzdC5kaXNwbGF5TmFtZTtcblxuY29uc3QgVGFic1RyaWdnZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBUYWJzUHJpbWl0aXZlLlRyaWdnZXI+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFRhYnNQcmltaXRpdmUuVHJpZ2dlcj5cbj4oKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8VGFic1ByaW1pdGl2ZS5UcmlnZ2VyXG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICdpbmxpbmUtZmxleCBtaW4tdy1bMTAwcHhdIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLVswLjE4NXJlbV0gcHgtMyBweS0xLjUgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNzAwIHRyYW5zaXRpb24tYWxsIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgZGlzYWJsZWQ6b3BhY2l0eS01MCBkYXRhLVtzdGF0ZT1hY3RpdmVdOmJnLXdoaXRlIGRhdGEtW3N0YXRlPWFjdGl2ZV06dGV4dC1ncmF5LTgwMCBkYXRhLVtzdGF0ZT1hY3RpdmVdOnNoYWRvdy1zbSBkYXJrOmRhdGEtW3N0YXRlPWFjdGl2ZV06YmctZ3JheS03MDAgZGFyazpkYXRhLVtzdGF0ZT1hY3RpdmVdOnRleHQtZ3JheS0yMDAnLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAgIHJlZj17cmVmfVxuICAvPlxuKSk7XG5UYWJzVHJpZ2dlci5kaXNwbGF5TmFtZSA9IFRhYnNQcmltaXRpdmUuVHJpZ2dlci5kaXNwbGF5TmFtZTtcblxuY29uc3QgVGFic0NvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBUYWJzUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFRhYnNQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8VGFic1ByaW1pdGl2ZS5Db250ZW50IGNsYXNzTmFtZT17Y24oJ210LTIgcm91bmRlZC1tZCBwLTYnLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IHJlZj17cmVmfSAvPlxuKSk7XG5UYWJzQ29udGVudC5kaXNwbGF5TmFtZSA9IFRhYnNQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgVGFicywgVGFic0xpc3QsIFRhYnNUcmlnZ2VyLCBUYWJzQ29udGVudCB9O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgWCB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG50eXBlIFRhZ1Byb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPCdkaXYnPiAmIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgbGFiZWxDbGFzc05hbWU/OiBzdHJpbmc7XG4gIENhbmNlbEJ1dHRvbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgTGFiZWxOb2RlPzogUmVhY3QuUmVhY3ROb2RlO1xuICBvblJlbW92ZT86IChlOiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4gdm9pZDtcbn07XG5cbmNvbnN0IFRhZ1ByaW1pdGl2ZVJvb3QgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxEaXZFbGVtZW50LCBUYWdQcm9wcz4oXG4gIChcbiAgICB7IENhbmNlbEJ1dHRvbiwgTGFiZWxOb2RlLCBsYWJlbCwgb25SZW1vdmUsIGNsYXNzTmFtZSA9ICcnLCBsYWJlbENsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9LFxuICAgIHJlZixcbiAgKSA9PiAoXG4gICAgPGRpdlxuICAgICAgcmVmPXtyZWZ9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAnZmxleCBtYXgtaC04IGl0ZW1zLWNlbnRlciBvdmVyZmxvdy15LWhpZGRlbiByb3VuZGVkLTN4bCBib3JkZXItMiBib3JkZXItZ3JlZW4tNjAwIGJnLWdyZWVuLTYwMC8yMCB0ZXh0LXhzIHRleHQtZ3JlZW4tNjAwIGRhcms6dGV4dC13aGl0ZScsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKCdtbC0xIHdoaXRlc3BhY2UtcHJlLXdyYXAgcHgtMiBweS0xJywgbGFiZWxDbGFzc05hbWUpfT5cbiAgICAgICAge0xhYmVsTm9kZSA/IDw+e0xhYmVsTm9kZX0gPC8+IDogbnVsbH1cbiAgICAgICAge2xhYmVsfVxuICAgICAgPC9kaXY+XG4gICAgICB7Q2FuY2VsQnV0dG9uXG4gICAgICAgID8gQ2FuY2VsQnV0dG9uXG4gICAgICAgIDogb25SZW1vdmUgJiYgKFxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgb25SZW1vdmUoZSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInJvdW5kZWQtZnVsbCBiZy1ncmVlbi02MDAvNTBcIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtgUmVtb3ZlICR7bGFiZWx9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFggY2xhc3NOYW1lPVwibS1bMS41cHhdIHAtMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICApfVxuICAgIDwvZGl2PlxuICApLFxuKTtcblxuVGFnUHJpbWl0aXZlUm9vdC5kaXNwbGF5TmFtZSA9ICdUYWcnO1xuXG5leHBvcnQgY29uc3QgVGFnID0gUmVhY3QubWVtbyhUYWdQcmltaXRpdmVSb290KTtcbiIsIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVGV4dGFyZWFBdXRvc2l6ZSBmcm9tICdyZWFjdC10ZXh0YXJlYS1hdXRvc2l6ZSc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRleHRhcmVhUHJvcHMgZXh0ZW5kcyBSZWFjdC5UZXh0YXJlYUhUTUxBdHRyaWJ1dGVzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+IHt9XG5cbmNvbnN0IFRleHRhcmVhID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGV4dEFyZWFFbGVtZW50LCBUZXh0YXJlYVByb3BzPihcbiAgKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAnZmxleCBoLTIwIHctZnVsbCByZXNpemUtbm9uZSByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZ3JheS0zMDAgYmctdHJhbnNwYXJlbnQgcHgtMyBweS0yIHRleHQtc20gcGxhY2Vob2xkZXI6dGV4dC1ncmF5LTQwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctZ3JheS00MDAgZm9jdXM6cmluZy1vZmZzZXQtMiBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCBkYXJrOmJvcmRlci1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS01MCBkYXJrOmZvY3VzOnJpbmctZ3JheS00MDAgZGFyazpmb2N1czpyaW5nLW9mZnNldC1ncmF5LTkwMCcsXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApfVxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgLz5cbiAgICApO1xuICB9LFxuKTtcblRleHRhcmVhLmRpc3BsYXlOYW1lID0gJ1RleHRhcmVhJztcblxuZXhwb3J0IHsgVGV4dGFyZWEgfTtcbiIsImltcG9ydCB7IHVzZUF0b21WYWx1ZSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7IGZvcndhcmRSZWYsIHVzZUxheW91dEVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RUZXh0YXJlYUF1dG9zaXplIGZyb20gJ3JlYWN0LXRleHRhcmVhLWF1dG9zaXplJztcbmltcG9ydCB0eXBlIHsgVGV4dGFyZWFBdXRvc2l6ZVByb3BzIH0gZnJvbSAncmVhY3QtdGV4dGFyZWEtYXV0b3NpemUnO1xuaW1wb3J0IHsgY2hhdERpcmVjdGlvbkF0b20gfSBmcm9tICd+L3N0b3JlJztcblxudHlwZSBCYXNlVGV4dGFyZWFBdXRvc2l6ZVByb3BzID0gT21pdDxUZXh0YXJlYUF1dG9zaXplUHJvcHMsICdhcmlhLWxhYmVsJyB8ICdhcmlhLWxhYmVsbGVkYnknPjtcblxuZXhwb3J0IHR5cGUgVGV4dGFyZWFBdXRvc2l6ZVByb3BzV2l0aEFyaWEgPVxuICB8IChCYXNlVGV4dGFyZWFBdXRvc2l6ZVByb3BzICYge1xuICAgICAgJ2FyaWEtbGFiZWwnOiBzdHJpbmc7XG4gICAgICAnYXJpYS1sYWJlbGxlZGJ5Jz86IG5ldmVyO1xuICAgIH0pXG4gIHwgKEJhc2VUZXh0YXJlYUF1dG9zaXplUHJvcHMgJiB7XG4gICAgICAnYXJpYS1sYWJlbGxlZGJ5Jzogc3RyaW5nO1xuICAgICAgJ2FyaWEtbGFiZWwnPzogbmV2ZXI7XG4gICAgfSk7XG5cbmV4cG9ydCBjb25zdCBUZXh0YXJlYUF1dG9zaXplID0gZm9yd2FyZFJlZjxIVE1MVGV4dEFyZWFFbGVtZW50LCBUZXh0YXJlYUF1dG9zaXplUHJvcHNXaXRoQXJpYT4oXG4gIChwcm9wcywgcmVmKSA9PiB7XG4gICAgY29uc3QgWywgc2V0SXNSZXJlbmRlcmVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBjaGF0RGlyZWN0aW9uID0gdXNlQXRvbVZhbHVlKGNoYXREaXJlY3Rpb25BdG9tKS50b0xvd2VyQ2FzZSgpO1xuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiBzZXRJc1JlcmVuZGVyZWQodHJ1ZSksIFtdKTtcbiAgICByZXR1cm4gPFJlYWN0VGV4dGFyZWFBdXRvc2l6ZSBkaXI9e2NoYXREaXJlY3Rpb259IHsuLi5wcm9wc30gcmVmPXtyZWZ9IC8+O1xuICB9LFxuKTtcbiIsImltcG9ydCAqIGFzIFJhZGl4VG9hc3QgZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXRvYXN0JztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNldmVyaXR5IH0gZnJvbSAnfi9jb21tb24nO1xuaW1wb3J0IHsgdXNlVG9hc3QgfSBmcm9tICd+L2hvb2tzJztcblxuZXhwb3J0IGZ1bmN0aW9uIFRvYXN0KCkge1xuICBjb25zdCB7IHRvYXN0LCBvbk9wZW5DaGFuZ2UgfSA9IHVzZVRvYXN0KCk7XG4gIGNvbnN0IHNldmVyaXR5Q2xhc3NOYW1lID0ge1xuICAgIC8qIEdvaW5nIHVwIGJ5IDEwMCB1bml0cyBpbiB0ZXJtcyBvZiBkYXJrbmVzcyAoZWcgYmctZ3JlZW4tNTAwIHRvIGJnLWdyZWVuLTYwMCkgZm9yXG4gICAgICogYmcgY29sb3JzIHByb2R1Y2VzIGNvbG9ycyB0aGF0IGFyZSB0b28gdmlzdWFsbHkgZGlzc2ltaWxhciB0byBMaWJyZUNoYXQncyBzdGFuZGFyZCBjb2xvciBwYWxldHRlLlxuICAgICAqIFRoZXNlIGNvbG9ycyB3ZXJlIGRlcml2ZWQgYnkgYWRqdXN0aW5nIHRoZSB2YWx1ZXMgaW4gdGhlIEhTViBjb2xvciBzcGFjZSB1c2luZyBDQ0FcbiAgICAgKiB1bnRpbCB0aGUgNC41OjEgY29udHJhc3QgcmF0aW8gdGhyZXNob2xkIHdhcyBtZXQgYWdhaW5zdCB3aGl0ZSB0ZXh0IHdoaWxlIG1haW50YWluaW5nXG4gICAgICogYSByZWxhdGl2ZWx5IHJlY29nbml6YWJsZSBjb2xvciBzY2hlbWUgZm9yIHRvYXN0cyB3aXRob3V0IGNvbXByb21pc2luZyBhY2Nlc3NpYmlsaXR5LlxuICAgICAqICovXG4gICAgW05vdGlmaWNhdGlvblNldmVyaXR5LklORk9dOiAnYm9yZGVyLWdyYXktNTAwIGJnLWdyYXktNTAwJyxcbiAgICBbTm90aWZpY2F0aW9uU2V2ZXJpdHkuU1VDQ0VTU106ICdib3JkZXItWyMwMjg1NUVdIGJnLVsjMDI4NTVFXScsXG4gICAgW05vdGlmaWNhdGlvblNldmVyaXR5LldBUk5JTkddOiAnYm9yZGVyLVsjQzc1MjA5XSBiZy1bI0M3NTIwOV0nLFxuICAgIFtOb3RpZmljYXRpb25TZXZlcml0eS5FUlJPUl06ICdib3JkZXItWyNFMDJGMUZdIGJnLVsjRTAyRjFGXScsXG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8UmFkaXhUb2FzdC5Sb290XG4gICAgICBvcGVuPXt0b2FzdC5vcGVufVxuICAgICAgb25PcGVuQ2hhbmdlPXtvbk9wZW5DaGFuZ2V9XG4gICAgICBjbGFzc05hbWU9XCJ0b2FzdC1yb290XCJcbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIGhlaWdodDogJzc0cHgnLFxuICAgICAgICBtYXJnaW5Cb3R0b206ICcwcHgnLFxuICAgICAgfX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBwLTEgdGV4dC1jZW50ZXIgbWQ6dy1hdXRvIG1kOnRleHQtanVzdGlmeVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtgYWxlcnQtcm9vdCBwb2ludGVyLWV2ZW50cy1hdXRvIGlubGluZS1mbGV4IGZsZXgtcm93IGdhcC0yIHJvdW5kZWQtbWQgYm9yZGVyIHB4LTMgcHktMiBmb250LWJvbGQgdGV4dC13aGl0ZSAke1xuICAgICAgICAgICAgc2V2ZXJpdHlDbGFzc05hbWVbdG9hc3Quc2V2ZXJpdHldXG4gICAgICAgICAgfWB9XG4gICAgICAgID5cbiAgICAgICAgICB7dG9hc3Quc2hvd0ljb24gJiYgKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0xIGZsZXgtc2hyaW5rLTAgZmxleC1ncm93LTBcIj5cbiAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpY29uLXNtXCJcbiAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxZW1cIlxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz1cIjcuODYgMiAxNi4xNCAyIDIyIDcuODYgMjIgMTYuMTQgMTYuMTQgMjIgNy44NiAyMiAyIDE2LjE0IDIgNy44NiA3Ljg2IDJcIiAvPlxuICAgICAgICAgICAgICAgIDxsaW5lIHgxPVwiMTJcIiB5MT1cIjhcIiB4Mj1cIjEyXCIgeTI9XCIxMlwiIC8+XG4gICAgICAgICAgICAgICAgPGxpbmUgeDE9XCIxMlwiIHkxPVwiMTZcIiB4Mj1cIjEyLjAxXCIgeTI9XCIxNlwiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8UmFkaXhUb2FzdC5EZXNjcmlwdGlvbiBjbGFzc05hbWU9XCJmbGV4LTEganVzdGlmeS1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwid2hpdGVzcGFjZS1wcmUtd3JhcCB0ZXh0LWxlZnRcIj57dG9hc3QubWVzc2FnZX08L2Rpdj5cbiAgICAgICAgICA8L1JhZGl4VG9hc3QuRGVzY3JpcHRpb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9SYWRpeFRvYXN0LlJvb3Q+XG4gICk7XG59XG4iLCJpbXBvcnQgRE9NUHVyaWZ5IGZyb20gJ2RvbXB1cmlmeSc7XG5pbXBvcnQgKiBhcyBBcmlha2l0IGZyb20gJ0Bhcmlha2l0L3JlYWN0JztcbmltcG9ydCB7IGZvcndhcmRSZWYsIHVzZUlkLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQW5pbWF0ZVByZXNlbmNlLCBtb3Rpb24gfSBmcm9tICdmcmFtZXItbW90aW9uJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5pbXBvcnQgJy4vVG9vbHRpcC5jc3MnO1xuXG5pbnRlcmZhY2UgVG9vbHRpcEFuY2hvclByb3BzIGV4dGVuZHMgQXJpYWtpdC5Ub29sdGlwQW5jaG9yUHJvcHMge1xuICByb2xlPzogc3RyaW5nO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGVuYWJsZUhUTUw/OiBib29sZWFuO1xuICBzaWRlPzogJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCc7XG59XG5cbmV4cG9ydCBjb25zdCBUb29sdGlwQW5jaG9yID0gZm9yd2FyZFJlZjxIVE1MRGl2RWxlbWVudCwgVG9vbHRpcEFuY2hvclByb3BzPihmdW5jdGlvbiBUb29sdGlwQW5jaG9yKFxuICB7IGRlc2NyaXB0aW9uLCBzaWRlID0gJ3RvcCcsIGNsYXNzTmFtZSwgcm9sZSwgZW5hYmxlSFRNTCA9IGZhbHNlLCAuLi5wcm9wcyB9LFxuICByZWYsXG4pIHtcbiAgY29uc3QgdG9vbHRpcCA9IEFyaWFraXQudXNlVG9vbHRpcFN0b3JlKHsgcGxhY2VtZW50OiBzaWRlIH0pO1xuICBjb25zdCBtb3VudGVkID0gQXJpYWtpdC51c2VTdG9yZVN0YXRlKHRvb2x0aXAsIChzdGF0ZSkgPT4gc3RhdGUubW91bnRlZCk7XG4gIGNvbnN0IHBsYWNlbWVudCA9IEFyaWFraXQudXNlU3RvcmVTdGF0ZSh0b29sdGlwLCAoc3RhdGUpID0+IHN0YXRlLnBsYWNlbWVudCk7XG5cbiAgY29uc3Qgc2FuaXRpemVyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBET01QdXJpZnkoKTtcbiAgICBpbnN0YW5jZS5hZGRIb29rKCdhZnRlclNhbml0aXplQXR0cmlidXRlcycsIChub2RlKSA9PiB7XG4gICAgICBpZiAobm9kZS50YWdOYW1lICYmIG5vZGUudGFnTmFtZSA9PT0gJ0EnKSB7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCd0YXJnZXQnLCAnX2JsYW5rJyk7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdyZWwnLCAnbm9vcGVuZXIgbm9yZWZlcnJlcicpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IHNhbml0aXplZEhUTUwgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIWVuYWJsZUhUTUwpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBzYW5pdGl6ZXIuc2FuaXRpemUoZGVzY3JpcHRpb24sIHtcbiAgICAgICAgQUxMT1dFRF9UQUdTOiBbJ2EnLCAnc3Ryb25nJywgJ2InLCAnZW0nLCAnaScsICdicicsICdjb2RlJ10sXG4gICAgICAgIEFMTE9XRURfQVRUUjogWydocmVmJywgJ2NsYXNzJywgJ3RhcmdldCcsICdyZWwnXSxcbiAgICAgICAgQUxMT1dfREFUQV9BVFRSOiBmYWxzZSxcbiAgICAgICAgQUxMT1dfQVJJQV9BVFRSOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdTYW5pdGl6YXRpb24gZmFpbGVkJywgZXJyb3IpO1xuICAgICAgcmV0dXJuIGRlc2NyaXB0aW9uO1xuICAgIH1cbiAgfSwgW2VuYWJsZUhUTUwsIGRlc2NyaXB0aW9uLCBzYW5pdGl6ZXJdKTtcblxuICBjb25zdCB7IHgsIHkgfSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGRpciA9IHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xuICAgIHN3aXRjaCAoZGlyKSB7XG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICByZXR1cm4geyB4OiAwLCB5OiAtOCB9O1xuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgcmV0dXJuIHsgeDogMCwgeTogOCB9O1xuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIHJldHVybiB7IHg6IC04LCB5OiAwIH07XG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIHJldHVybiB7IHg6IDgsIHk6IDAgfTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB7IHg6IDAsIHk6IDAgfTtcbiAgICB9XG4gIH0sIFtwbGFjZW1lbnRdKTtcblxuICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGlmIChyb2xlID09PSAnYnV0dG9uJyAmJiBldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAoZXZlbnQudGFyZ2V0IGFzIEhUTUxEaXZFbGVtZW50KS5jbGljaygpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxBcmlha2l0LlRvb2x0aXBQcm92aWRlciBzdG9yZT17dG9vbHRpcH0gaGlkZVRpbWVvdXQ9ezB9PlxuICAgICAgPEFyaWFraXQuVG9vbHRpcEFuY2hvclxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICByb2xlPXtyb2xlfVxuICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICAgIGNsYXNzTmFtZT17Y24oJ2N1cnNvci1wb2ludGVyJywgY2xhc3NOYW1lKX1cbiAgICAgIC8+XG4gICAgICA8QW5pbWF0ZVByZXNlbmNlPlxuICAgICAgICB7bW91bnRlZCA9PT0gdHJ1ZSAmJiAoXG4gICAgICAgICAgPEFyaWFraXQuVG9vbHRpcFxuICAgICAgICAgICAgZ3V0dGVyPXs0fVxuICAgICAgICAgICAgYWx3YXlzVmlzaWJsZVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwidG9vbHRpcFwiXG4gICAgICAgICAgICByZW5kZXI9e1xuICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCwgeCwgeSB9fVxuICAgICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgeDogMCwgeTogMCB9fVxuICAgICAgICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCwgeCwgeSB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxBcmlha2l0LlRvb2x0aXBBcnJvdyAvPlxuICAgICAgICAgICAge2VuYWJsZUhUTUwgPyAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17e1xuICAgICAgICAgICAgICAgICAgX19odG1sOiBzYW5pdGl6ZWRIVE1MLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvblxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0FyaWFraXQuVG9vbHRpcD5cbiAgICAgICAgKX1cbiAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuICAgIDwvQXJpYWtpdC5Ub29sdGlwUHJvdmlkZXI+XG4gICk7XG59KTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IENoZXZyb25MZWZ0LCBDaGV2cm9uUmlnaHQsIE1vcmVIb3Jpem9udGFsIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IEJ1dHRvblByb3BzLCBidXR0b25WYXJpYW50cyB9IGZyb20gJy4vQnV0dG9uJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmNvbnN0IFBhZ2luYXRpb24gPSAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPCduYXYnPikgPT4gKFxuICA8bmF2XG4gICAgcm9sZT1cIm5hdmlnYXRpb25cIlxuICAgIGFyaWEtbGFiZWw9XCJwYWdpbmF0aW9uXCJcbiAgICBjbGFzc05hbWU9e2NuKCdteC1hdXRvIGZsZXggdy1mdWxsIGp1c3RpZnktY2VudGVyJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuUGFnaW5hdGlvbi5kaXNwbGF5TmFtZSA9ICdQYWdpbmF0aW9uJztcblxuY29uc3QgUGFnaW5hdGlvbkNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxVTGlzdEVsZW1lbnQsIFJlYWN0LkNvbXBvbmVudFByb3BzPCd1bCc+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8dWwgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oJ2ZsZXggZmxleC1yb3cgaXRlbXMtY2VudGVyIGdhcC0xJywgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuICApLFxuKTtcblBhZ2luYXRpb25Db250ZW50LmRpc3BsYXlOYW1lID0gJ1BhZ2luYXRpb25Db250ZW50JztcblxuY29uc3QgUGFnaW5hdGlvbkl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxMSUVsZW1lbnQsIFJlYWN0LkNvbXBvbmVudFByb3BzPCdsaSc+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IDxsaSByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbignJywgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPixcbik7XG5QYWdpbmF0aW9uSXRlbS5kaXNwbGF5TmFtZSA9ICdQYWdpbmF0aW9uSXRlbSc7XG5cbnR5cGUgUGFnaW5hdGlvbkxpbmtQcm9wcyA9IHtcbiAgaXNBY3RpdmU/OiBib29sZWFuO1xufSAmIFBpY2s8QnV0dG9uUHJvcHMsICdzaXplJz4gJlxuICBSZWFjdC5Db21wb25lbnRQcm9wczwnYSc+O1xuXG5jb25zdCBQYWdpbmF0aW9uTGluayA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgaXNBY3RpdmUgPSBmYWxzZSxcbiAgc2l6ZSA9ICdpY29uJyxcbiAgY2hpbGRyZW4sXG4gIC4uLnByb3BzXG59OiBQYWdpbmF0aW9uTGlua1Byb3BzKSA9PiAoXG4gIDxhXG4gICAgYXJpYS1jdXJyZW50PXtpc0FjdGl2ZSA/ICdwYWdlJyA6IHVuZGVmaW5lZH1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgYnV0dG9uVmFyaWFudHMoe1xuICAgICAgICB2YXJpYW50OiBpc0FjdGl2ZSA/ICdvdXRsaW5lJyA6ICdnaG9zdCcsXG4gICAgICAgIHNpemUsXG4gICAgICB9KSxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIHtjaGlsZHJlbiB8fCA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+UGFnZSBsaW5rPC9zcGFuPn1cbiAgPC9hPlxuKTtcblBhZ2luYXRpb25MaW5rLmRpc3BsYXlOYW1lID0gJ1BhZ2luYXRpb25MaW5rJztcblxuY29uc3QgUGFnaW5hdGlvblByZXZpb3VzID0gKHtcbiAgY2xhc3NOYW1lLFxuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFBhZ2luYXRpb25MaW5rPikgPT4gKFxuICA8UGFnaW5hdGlvbkxpbmtcbiAgICBhcmlhLWxhYmVsPVwiR28gdG8gcHJldmlvdXMgcGFnZVwiXG4gICAgc2l6ZT1cImRlZmF1bHRcIlxuICAgIGNsYXNzTmFtZT17Y24oJ2dhcC0xIHBsLTIuNScsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPENoZXZyb25MZWZ0IGNsYXNzTmFtZT1cImgtNCB3LTRcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgIDxzcGFuPlByZXZpb3VzPC9zcGFuPlxuICA8L1BhZ2luYXRpb25MaW5rPlxuKTtcblBhZ2luYXRpb25QcmV2aW91cy5kaXNwbGF5TmFtZSA9ICdQYWdpbmF0aW9uUHJldmlvdXMnO1xuXG5jb25zdCBQYWdpbmF0aW9uTmV4dCA9ICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFBhZ2luYXRpb25MaW5rPikgPT4gKFxuICA8UGFnaW5hdGlvbkxpbmtcbiAgICBhcmlhLWxhYmVsPVwiR28gdG8gbmV4dCBwYWdlXCJcbiAgICBzaXplPVwiZGVmYXVsdFwiXG4gICAgY2xhc3NOYW1lPXtjbignZ2FwLTEgcHItMi41JywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3Bhbj5OZXh0PC9zcGFuPlxuICAgIDxDaGV2cm9uUmlnaHQgY2xhc3NOYW1lPVwiaC00IHctNFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gIDwvUGFnaW5hdGlvbkxpbms+XG4pO1xuUGFnaW5hdGlvbk5leHQuZGlzcGxheU5hbWUgPSAnUGFnaW5hdGlvbk5leHQnO1xuXG5jb25zdCBQYWdpbmF0aW9uRWxsaXBzaXMgPSAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPCdzcGFuJz4pID0+IChcbiAgPHNwYW5cbiAgICBhcmlhLWhpZGRlblxuICAgIGNsYXNzTmFtZT17Y24oJ2ZsZXggaC05IHctOSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXInLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxNb3JlSG9yaXpvbnRhbCBjbGFzc05hbWU9XCJoLTQgdy00XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+TW9yZSBwYWdlczwvc3Bhbj5cbiAgPC9zcGFuPlxuKTtcblBhZ2luYXRpb25FbGxpcHNpcy5kaXNwbGF5TmFtZSA9ICdQYWdpbmF0aW9uRWxsaXBzaXMnO1xuXG5leHBvcnQge1xuICBQYWdpbmF0aW9uLFxuICBQYWdpbmF0aW9uQ29udGVudCxcbiAgUGFnaW5hdGlvbkVsbGlwc2lzLFxuICBQYWdpbmF0aW9uSXRlbSxcbiAgUGFnaW5hdGlvbkxpbmssXG4gIFBhZ2luYXRpb25OZXh0LFxuICBQYWdpbmF0aW9uUHJldmlvdXMsXG59O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgUHJvZ3Jlc3NQcmltaXRpdmUgZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXByb2dyZXNzJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmNvbnN0IFByb2dyZXNzID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUHJvZ3Jlc3NQcmltaXRpdmUuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUHJvZ3Jlc3NQcmltaXRpdmUuUm9vdD5cbj4oKHsgY2xhc3NOYW1lLCB2YWx1ZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxQcm9ncmVzc1ByaW1pdGl2ZS5Sb290XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbigncmVsYXRpdmUgaC0yIHctZnVsbCBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1mdWxsIGJnLXByaW1hcnkvMjAnLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxQcm9ncmVzc1ByaW1pdGl2ZS5JbmRpY2F0b3JcbiAgICAgIGNsYXNzTmFtZT1cImgtZnVsbCB3LWZ1bGwgZmxleC0xIGJnLXByaW1hcnkgdHJhbnNpdGlvbi1hbGxcIlxuICAgICAgc3R5bGU9e3sgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWCgtJHsxMDAgLSAodmFsdWUgfHwgMCl9JSlgIH19XG4gICAgLz5cbiAgPC9Qcm9ncmVzc1ByaW1pdGl2ZS5Sb290PlxuKSk7XG5Qcm9ncmVzcy5kaXNwbGF5TmFtZSA9IFByb2dyZXNzUHJpbWl0aXZlLlJvb3QuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IFByb2dyZXNzIH07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBPVFBJbnB1dCwgT1RQSW5wdXRDb250ZXh0IH0gZnJvbSAnaW5wdXQtb3RwJztcbmltcG9ydCB7IE1pbnVzIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmNvbnN0IElucHV0T1RQID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgT1RQSW5wdXQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIE9UUElucHV0PlxuPigoeyBjbGFzc05hbWUsIGNvbnRhaW5lckNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxPVFBJbnB1dFxuICAgIHJlZj17cmVmfVxuICAgIGNvbnRhaW5lckNsYXNzTmFtZT17Y24oXG4gICAgICAnZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgaGFzLVs6ZGlzYWJsZWRdOm9wYWNpdHktNTAnLFxuICAgICAgY29udGFpbmVyQ2xhc3NOYW1lLFxuICAgICl9XG4gICAgY2xhc3NOYW1lPXtjbignZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbklucHV0T1RQLmRpc3BsYXlOYW1lID0gJ0lucHV0T1RQJztcblxuY29uc3QgSW5wdXRPVFBHcm91cCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8J2Rpdic+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J2Rpdic+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxkaXYgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oJ2ZsZXggaXRlbXMtY2VudGVyJywgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuKSk7XG5JbnB1dE9UUEdyb3VwLmRpc3BsYXlOYW1lID0gJ0lucHV0T1RQR3JvdXAnO1xuXG5jb25zdCBJbnB1dE9UUFNsb3QgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPCdkaXYnPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPCdkaXYnPiAmIHsgaW5kZXg6IG51bWJlciB9XG4+KCh7IGluZGV4LCBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICBjb25zdCBpbnB1dE9UUENvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KE9UUElucHV0Q29udGV4dCk7XG5cbiAgaWYgKCFpbnB1dE9UUENvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0lucHV0T1RQU2xvdCBtdXN0IGJlIHVzZWQgd2l0aGluIGFuIE9UUElucHV0Jyk7XG4gIH1cblxuICBjb25zdCB7IGNoYXIsIGhhc0Zha2VDYXJldCwgaXNBY3RpdmUgfSA9IGlucHV0T1RQQ29udGV4dC5zbG90c1tpbmRleF07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICd0ZXh0LW1kIHJlbGF0aXZlIGZsZXggaC0xMSB3LTExIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBib3JkZXIteSBib3JkZXItciBib3JkZXItaW5wdXQgc2hhZG93LXNtIHRyYW5zaXRpb24tYWxsIGZpcnN0OnJvdW5kZWQtbC14bCBmaXJzdDpib3JkZXItbCBsYXN0OnJvdW5kZWQtci14bCcsXG4gICAgICAgIGlzQWN0aXZlICYmICd6LTEwIHJpbmctMSByaW5nLXJpbmcnLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIHtjaGFyfVxuICAgICAge2hhc0Zha2VDYXJldCAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSBpbnNldC0wIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhbmltYXRlLWNhcmV0LWJsaW5rIGgtNCB3LXB4IGJnLWZvcmVncm91bmQgZHVyYXRpb24tMTAwMFwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn0pO1xuSW5wdXRPVFBTbG90LmRpc3BsYXlOYW1lID0gJ0lucHV0T1RQU2xvdCc7XG5cbmNvbnN0IElucHV0T1RQU2VwYXJhdG9yID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjwnZGl2Jz4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnZGl2Jz5cbj4oKHsgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxkaXYgcmVmPXtyZWZ9IHJvbGU9XCJzZXBhcmF0b3JcIiB7Li4ucHJvcHN9PlxuICAgIDxNaW51cyAvPlxuICA8L2Rpdj5cbikpO1xuSW5wdXRPVFBTZXBhcmF0b3IuZGlzcGxheU5hbWUgPSAnSW5wdXRPVFBTZXBhcmF0b3InO1xuXG5leHBvcnQgeyBJbnB1dE9UUCwgSW5wdXRPVFBHcm91cCwgSW5wdXRPVFBTbG90LCBJbnB1dE9UUFNlcGFyYXRvciB9O1xuIiwiaW1wb3J0IHsgU2VhcmNoLCBYIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlTWVtbywgdXNlQ2FsbGJhY2ssIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbi8qKiBUaGlzIGlzIGEgZ2VuZXJpYyB0aGF0IGNhbiBiZSBhZGRlZCB0byBNZW51IGFuZCBTZWxlY3QgY29tcG9uZW50cyAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTXVsdGlTZWFyY2goe1xuICB2YWx1ZSxcbiAgb25DaGFuZ2UsXG4gIHBsYWNlaG9sZGVyLFxuICBjbGFzc05hbWUgPSAnJyxcbn06IHtcbiAgdmFsdWU6IHN0cmluZyB8IG51bGw7XG4gIG9uQ2hhbmdlOiAoZmlsdGVyOiBzdHJpbmcpID0+IHZvaWQ7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuXG4gIGNvbnN0IG9uQ2hhbmdlSGFuZGxlcjogUmVhY3QuQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gdXNlQ2FsbGJhY2soXG4gICAgKGUpID0+IG9uQ2hhbmdlKGUudGFyZ2V0LnZhbHVlKSxcbiAgICBbb25DaGFuZ2VdLFxuICApO1xuXG4gIGNvbnN0IGNsZWFyU2VhcmNoID0gKCkgPT4ge1xuICAgIG9uQ2hhbmdlKCcnKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgfSwgMCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAnZm9jdXM6dG8tc3VyZmFjZS1wcmltYXJ5LzUwIGdyb3VwIHN0aWNreSBsZWZ0LTAgdG9wLTAgei0xMCBmbGV4IGgtMTIgaXRlbXMtY2VudGVyIGdhcC0yIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1zdXJmYWNlLXRlcnRpYXJ5LWFsdCBmcm9tLTY1JSB0by10cmFuc3BhcmVudCBweC0zIHB5LTIgdGV4dC10ZXh0LXByaW1hcnkgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMzAwIGZvY3VzOmJnLWdyYWRpZW50LXRvLWIgZm9jdXM6ZnJvbS1zdXJmYWNlLXByaW1hcnknLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgID5cbiAgICAgIDxTZWFyY2hcbiAgICAgICAgY2xhc3NOYW1lPVwiaC00IHctNCB0ZXh0LXRleHQtc2Vjb25kYXJ5LWFsdCB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0zMDBcIlxuICAgICAgICBhcmlhLWhpZGRlbj17J3RydWUnfVxuICAgICAgLz5cbiAgICAgIDxpbnB1dFxuICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIHZhbHVlPXt2YWx1ZSA/PyAnJ31cbiAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlSGFuZGxlcn1cbiAgICAgICAgcGxhY2Vob2xkZXI9e1N0cmluZyhwbGFjZWhvbGRlciA/PyAnU2VhcmNoLi4uJyl9XG4gICAgICAgIGFyaWEtbGFiZWw9XCJTZWFyY2ggTW9kZWxcIlxuICAgICAgICBjbGFzc05hbWU9XCJmbGV4LTEgcm91bmRlZC1tZCBib3JkZXItbm9uZSBiZy10cmFuc3BhcmVudCBweC0yLjUgcHktMiB0ZXh0LXNtIHBsYWNlaG9sZGVyLXRleHQtc2Vjb25kYXJ5IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTEgZm9jdXM6cmluZy1yaW5nLXByaW1hcnlcIlxuICAgICAgLz5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAncmVsYXRpdmUgZmxleCBoLTUgdy01IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCByb3VuZGVkLW1kIHRleHQtdGV4dC1zZWNvbmRhcnktYWx0JyxcbiAgICAgICAgICAodmFsdWU/Lmxlbmd0aCA/PyAwKSA/ICdjdXJzb3ItcG9pbnRlciBvcGFjaXR5LTEwMCcgOiAnaGlkZGVuJyxcbiAgICAgICAgKX1cbiAgICAgICAgYXJpYS1sYWJlbD17J0NsZWFyIHNlYXJjaCd9XG4gICAgICAgIG9uQ2xpY2s9e2NsZWFyU2VhcmNofVxuICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgID5cbiAgICAgICAgPFhcbiAgICAgICAgICBhcmlhLWhpZGRlbj17J3RydWUnfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAndGV4dC10ZXh0LXNlY29uZGFyeS1hbHQnLFxuICAgICAgICAgICAgKHZhbHVlPy5sZW5ndGggPz8gMCkgPyAnY3Vyc29yLXBvaW50ZXIgb3BhY2l0eS0xMDAnIDogJ29wYWNpdHktMCcsXG4gICAgICAgICAgKX1cbiAgICAgICAgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0aGF0IHdpbGwgdGFrZSBhIG11bHRpU2VhcmNoIGlucHV0XG4gKiBAcGFyYW0gbm9kZVxuICovXG5mdW5jdGlvbiBkZWZhdWx0R2V0U3RyaW5nS2V5KG5vZGU6IHVua25vd24pOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIG5vZGUgPT09ICdzdHJpbmcnKSB7XG4gICAgLy8gQlVHRklYOiBEZXRlY3QgcHNlZGVvIHNlcGFyYXRvcnMgYW5kIG1ha2Ugc3VyZSB0aGV5IGRvbid0IGFwcGVhciBpbiB0aGUgbGlzdCB3aGVuIGZpbHRlcmluZyBpdGVtc1xuICAgIC8vIGl0IG1ha2VzIHN1cmUgKGZvciB0aGUgbW9zdCBwYXJ0KSB0aGF0IHRoZSBtb2RlbCBuYW1lIHN0YXJ0cyBhbmQgZW5kcyB3aXRoIGRhc2hlc1xuICAgIC8vIFRoZSBsb25nLXRlcm0gZml4IGhlcmUgd291bGQgYmUgdG8gZW5hYmxlIHNlcGVyYXRvcnMgKG1vZGVsIGdyb3VwaW5ncykgYnV0IHRoZXJlJ3Mgbm9cbiAgICAvLyBmZWF0dXJlIG1vY2tzIGZvciBzdWNoIGEgdGhpbmcgeWV0XG4gICAgaWYgKG5vZGUuc3RhcnRzV2l0aCgnLS0tJykgJiYgbm9kZS5lbmRzV2l0aCgnLS0tJykpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZS50b1VwcGVyQ2FzZSgpO1xuICB9XG4gIC8vIFRoaXMgc2hvdWxkIGJlIGEgbm9vcCwgYnV0IGl0J3MgaGVyZSBmb3IgcmVkdW5kYW5jeVxuICByZXR1cm4gJyc7XG59XG5cbi8qKlxuICogSG9vayBmb3IgY29uZGl0aW9uYWxseSBtYWtpbmcgYSBtdWx0aS1lbGVtZW50IGxpc3QgY29tcG9uZW50IGludG8gYSBzb3J0YWJsZSBjb21wb25lbnRcbiAqIFJldHVybnMgYSBSZW5kZXJOb2RlIGZvciBzZWFyY2ggaW5wdXQgd2hlbiBzZWFyY2ggZnVuY3Rpb25hbGl0eSBpcyBhdmFpbGFibGVcbiAqIEBwYXJhbSBhdmFpbGFibGVPcHRpb25zXG4gKiBAcGFyYW0gcGxhY2Vob2xkZXJcbiAqIEBwYXJhbSBnZXRUZXh0S2V5T3ZlcnJpZGVcbiAqIEBwYXJhbSBjbGFzc05hbWUgLSBBZGRpdGlvbmFsIGNsYXNzbmFtZXMgdG8gYWRkIHRvIHRoZSBzZWFyY2ggY29udGFpbmVyXG4gKiBAcGFyYW0gZGlzYWJsZWQgLSBJZiB0aGUgc2VhcmNoIHNob3VsZCBiZSBkaXNhYmxlZFxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU11bHRpU2VhcmNoPE9wdGlvbnNUeXBlIGV4dGVuZHMgdW5rbm93bltdPih7XG4gIGF2YWlsYWJsZU9wdGlvbnMgPSBbXSBhcyB1bmtub3duIGFzIE9wdGlvbnNUeXBlLFxuICBwbGFjZWhvbGRlcixcbiAgZ2V0VGV4dEtleU92ZXJyaWRlLFxuICBjbGFzc05hbWUsXG4gIGRpc2FibGVkID0gZmFsc2UsXG59OiB7XG4gIGF2YWlsYWJsZU9wdGlvbnM/OiBPcHRpb25zVHlwZTtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIGdldFRleHRLZXlPdmVycmlkZT86IChub2RlOiBPcHRpb25zVHlwZVswXSkgPT4gc3RyaW5nO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn0pOiBbT3B0aW9uc1R5cGUsIFJlYWN0LlJlYWN0Tm9kZV0ge1xuICBjb25zdCBbZmlsdGVyVmFsdWUsIHNldEZpbHRlclZhbHVlXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIC8vIFdlIGNvbmRpdGlvbmFsbHkgc2hvdyB0aGUgc2VhcmNoIHdoZW4gdGhlcmUncyBtb3JlIHRoYW4gMTAgZWxlbWVudHMgaW4gdGhlIG1lbnVcbiAgY29uc3Qgc2hvdWxkU2hvd1NlYXJjaCA9IGF2YWlsYWJsZU9wdGlvbnMubGVuZ3RoID4gMTAgJiYgIWRpc2FibGVkO1xuXG4gIC8vIERlZmluZSB0aGUgaGVscGVyIGZ1bmN0aW9uIHVzZWQgdG8gZW5hYmxlIHNlYXJjaFxuICAvLyBJZiB0aGlzIGlzIGludmFsaWRseSBkZXNjcmliZWQsIHdlIHdpbGwgYXNzdW1lIGRldmVsb3BlciBlcnJvciAtIHRmLiBhdm9pZCByZW5kZXJpbmdcbiAgY29uc3QgZ2V0VGV4dEtleUhlbHBlciA9IGdldFRleHRLZXlPdmVycmlkZSB8fCBkZWZhdWx0R2V0U3RyaW5nS2V5O1xuXG4gIC8vIEl0ZXJhdGUgc2FpZCBvcHRpb25zXG4gIGNvbnN0IGZpbHRlcmVkT3B0aW9ucyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRGaWx0ZXIgPSBmaWx0ZXJWYWx1ZSA/PyAnJztcbiAgICBpZiAoIXNob3VsZFNob3dTZWFyY2ggfHwgIWN1cnJlbnRGaWx0ZXIgfHwgIWF2YWlsYWJsZU9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAvLyBEb24ndCByZW5kZXIgaWYgYXZhaWxhYmxlIG9wdGlvbnMgYXJlbid0IHByZXNlbnQsIHRoZXJlJ3Mgbm8gZmlsdGVyIGFjdGl2ZVxuICAgICAgcmV0dXJuIGF2YWlsYWJsZU9wdGlvbnM7XG4gICAgfVxuICAgIC8vIEZpbHRlciB0aHJvdWdoIHRoZSB2YWx1ZXMsIHVzaW5nIGEgc2ltcGxlIHRleHQtYmFzZWQgc2VhcmNoXG4gICAgLy8gbm90aGluZyB0b28gZmFuY3ksIGJ1dCB3ZSBjYW4gYWRkIGEgYmV0dGVyIHNlYXJjaCBhbGdvIGxhdGVyIGlmIHdlIG5lZWRcbiAgICBjb25zdCB1cHBlckZpbHRlclZhbHVlID0gY3VycmVudEZpbHRlci50b1VwcGVyQ2FzZSgpO1xuXG4gICAgcmV0dXJuIGF2YWlsYWJsZU9wdGlvbnMuZmlsdGVyKCh2YWx1ZSkgPT5cbiAgICAgIGdldFRleHRLZXlIZWxwZXIodmFsdWUpLmluY2x1ZGVzKHVwcGVyRmlsdGVyVmFsdWUpLFxuICAgICkgYXMgT3B0aW9uc1R5cGU7XG4gIH0sIFthdmFpbGFibGVPcHRpb25zLCBnZXRUZXh0S2V5SGVscGVyLCBmaWx0ZXJWYWx1ZSwgc2hvdWxkU2hvd1NlYXJjaF0pO1xuXG4gIGNvbnN0IG9uU2VhcmNoQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKG5leHRGaWx0ZXJWYWx1ZTogc3RyaW5nKSA9PiBzZXRGaWx0ZXJWYWx1ZShuZXh0RmlsdGVyVmFsdWUpLFxuICAgIFtdLFxuICApO1xuXG4gIGNvbnN0IHNlYXJjaFJlbmRlciA9IHNob3VsZFNob3dTZWFyY2ggPyAoXG4gICAgPE11bHRpU2VhcmNoXG4gICAgICB2YWx1ZT17ZmlsdGVyVmFsdWV9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIG9uQ2hhbmdlPXtvblNlYXJjaENoYW5nZX1cbiAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAvPlxuICApIDogbnVsbDtcblxuICByZXR1cm4gW2ZpbHRlcmVkT3B0aW9ucywgc2VhcmNoUmVuZGVyXTtcbn1cbiIsImltcG9ydCB7IEdyaXBWZXJ0aWNhbCB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgKiBhcyBSZXNpemFibGVQcmltaXRpdmUgZnJvbSAncmVhY3QtcmVzaXphYmxlLXBhbmVscyc7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmNvbnN0IFJlc2l6YWJsZVBhbmVsR3JvdXAgPSAoe1xuICBjbGFzc05hbWUgPSAnJyxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBSZXNpemFibGVQcmltaXRpdmUuUGFuZWxHcm91cD4pID0+IChcbiAgPFJlc2l6YWJsZVByaW1pdGl2ZS5QYW5lbEdyb3VwXG4gICAgY2xhc3NOYW1lPXtjbignZmxleCBoLWZ1bGwgdy1mdWxsIGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06ZmxleC1jb2wnLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5cbmNvbnN0IFJlc2l6YWJsZVBhbmVsID0gUmVzaXphYmxlUHJpbWl0aXZlLlBhbmVsO1xuXG5jb25zdCBSZXNpemFibGVIYW5kbGUgPSAoe1xuICB3aXRoSGFuZGxlLFxuICBjbGFzc05hbWUgPSAnJyxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBSZXNpemFibGVQcmltaXRpdmUuUGFuZWxSZXNpemVIYW5kbGU+ICYge1xuICB3aXRoSGFuZGxlPzogYm9vbGVhbjtcbn0pID0+IChcbiAgPFJlc2l6YWJsZVByaW1pdGl2ZS5QYW5lbFJlc2l6ZUhhbmRsZVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAncmVsYXRpdmUgZmxleCB3LXB4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1ib3JkZXIgYWZ0ZXI6YWJzb2x1dGUgYWZ0ZXI6aW5zZXQteS0wIGFmdGVyOmxlZnQtMS8yIGFmdGVyOnctMSBhZnRlcjotdHJhbnNsYXRlLXgtMS8yIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0xIGZvY3VzLXZpc2libGU6cmluZy1yaW5nIGZvY3VzLXZpc2libGU6cmluZy1vZmZzZXQtMSBkYXRhLVtwYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxdOmgtcHggZGF0YS1bcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXTp3LWZ1bGwgZGF0YS1bcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXTphZnRlcjpsZWZ0LTAgZGF0YS1bcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXTphZnRlcjpoLTEgZGF0YS1bcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXTphZnRlcjp3LWZ1bGwgZGF0YS1bcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXTphZnRlcjotdHJhbnNsYXRlLXktMS8yIGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06YWZ0ZXI6dHJhbnNsYXRlLXgtMCBbJltkYXRhLXBhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF0+ZGl2XTpyb3RhdGUtOTAnLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAge3dpdGhIYW5kbGUgJiYgKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ6LTEwIGZsZXggaC00IHctMyBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1zbSBib3JkZXIgYmctYm9yZGVyXCI+XG4gICAgICAgIDxHcmlwVmVydGljYWwgY2xhc3NOYW1lPVwiaC0yLjUgdy0yLjVcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgKX1cbiAgPC9SZXNpemFibGVQcmltaXRpdmUuUGFuZWxSZXNpemVIYW5kbGU+XG4pO1xuXG5jb25zdCBSZXNpemFibGVIYW5kbGVBbHQgPSAoe1xuICB3aXRoSGFuZGxlLFxuICBjbGFzc05hbWUgPSAnJyxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBSZXNpemFibGVQcmltaXRpdmUuUGFuZWxSZXNpemVIYW5kbGU+ICYge1xuICB3aXRoSGFuZGxlPzogYm9vbGVhbjtcbn0pID0+IChcbiAgPFJlc2l6YWJsZVByaW1pdGl2ZS5QYW5lbFJlc2l6ZUhhbmRsZVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAnZ3JvdXAgcmVsYXRpdmUgZmxleCB3LXB4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1ib3JkZXIgYWZ0ZXI6YWJzb2x1dGUgYWZ0ZXI6aW5zZXQteS0wIGFmdGVyOmxlZnQtMS8yIGFmdGVyOnctMSBhZnRlcjotdHJhbnNsYXRlLXgtMS8yIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0xIGZvY3VzLXZpc2libGU6cmluZy1yaW5nIGZvY3VzLXZpc2libGU6cmluZy1vZmZzZXQtMSBkYXRhLVtwYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxdOmgtcHggZGF0YS1bcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXTp3LWZ1bGwgZGF0YS1bcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXTphZnRlcjpsZWZ0LTAgZGF0YS1bcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXTphZnRlcjpoLTEgZGF0YS1bcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXTphZnRlcjp3LWZ1bGwgZGF0YS1bcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXTphZnRlcjotdHJhbnNsYXRlLXktMS8yIGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06YWZ0ZXI6dHJhbnNsYXRlLXgtMCBbJltkYXRhLXBhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF0+ZGl2XTpyb3RhdGUtOTAnLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAge3dpdGhIYW5kbGUgJiYgKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbnZpc2libGUgei0xMCBmbGV4IGgtNCB3LTMgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtc20gYm9yZGVyIGJnLWJvcmRlciBncm91cC1ob3Zlcjp2aXNpYmxlIGdyb3VwLWFjdGl2ZTp2aXNpYmxlIGdyb3VwLWRhdGEtW3Jlc2l6ZS1oYW5kbGUtYWN0aXZlXTp2aXNpYmxlXCI+XG4gICAgICAgIDxHcmlwVmVydGljYWwgY2xhc3NOYW1lPVwiaC0yLjUgdy0yLjVcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgKX1cbiAgPC9SZXNpemFibGVQcmltaXRpdmUuUGFuZWxSZXNpemVIYW5kbGU+XG4pO1xuXG5leHBvcnQgeyBSZXNpemFibGVQYW5lbEdyb3VwLCBSZXNpemFibGVQYW5lbCwgUmVzaXphYmxlSGFuZGxlLCBSZXNpemFibGVIYW5kbGVBbHQgfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFNlbGVjdFByaW1pdGl2ZSBmcm9tICdAcmFkaXgtdWkvcmVhY3Qtc2VsZWN0JztcbmltcG9ydCB7IENhcmV0U29ydEljb24sIENoZWNrSWNvbiwgQ2hldnJvbkRvd25JY29uLCBDaGV2cm9uVXBJY29uIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LWljb25zJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbi8vIEB0cy1pZ25vcmUgLSBSYWRpeCBVSSB0eXBlIGNvbmZsaWN0cyB3aXRoIFJlYWN0IHR5cGVzXG5jb25zdCBTZWxlY3QgPSBTZWxlY3RQcmltaXRpdmUuUm9vdDtcblxuLy8gQHRzLWlnbm9yZSAtIFJhZGl4IFVJIHR5cGUgY29uZmxpY3RzIHdpdGggUmVhY3QgdHlwZXNcbmNvbnN0IFNlbGVjdEdyb3VwID0gU2VsZWN0UHJpbWl0aXZlLkdyb3VwO1xuXG5jb25zdCBTZWxlY3RWYWx1ZSA9IFNlbGVjdFByaW1pdGl2ZS5WYWx1ZTtcblxuLy8gQHRzLWlnbm9yZSAtIFJhZGl4IFVJIHR5cGUgY29uZmxpY3RzIHdpdGggUmVhY3QgdHlwZXNcbmNvbnN0IFNlbGVjdFRyaWdnZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuVHJpZ2dlcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuVHJpZ2dlclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAnZmxleCBoLTkgdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gd2hpdGVzcGFjZS1ub3dyYXAgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWdyYXktMjAwIGJvcmRlci1pbnB1dCBiZy10cmFuc3BhcmVudCBweC0zIHB5LTIgdGV4dC1zbSBzaGFkb3ctc20gcmluZy1vZmZzZXQtYmFja2dyb3VuZCBwbGFjZWhvbGRlcjp0ZXh0LW11dGVkLWZvcmVncm91bmQgZm9jdXM6b3V0bGluZS1ub25lIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwIGRhcms6Ym9yZGVyLWdyYXktNjAwIFsmPnNwYW5dOmxpbmUtY2xhbXAtMScsXG4gICAgICAncm91bmRlZC1sZyBob3ZlcjpiZy1ncmF5LTEwMC81MCBkYXJrOmhvdmVyOmJnLWdyYXktNzAwJyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIHtjaGlsZHJlbn1cbiAgICA8U2VsZWN0UHJpbWl0aXZlLkljb24gYXNDaGlsZD5cbiAgICAgIDxDYXJldFNvcnRJY29uIGNsYXNzTmFtZT1cImgtNCB3LTQgb3BhY2l0eS01MFwiIC8+XG4gICAgPC9TZWxlY3RQcmltaXRpdmUuSWNvbj5cbiAgPC9TZWxlY3RQcmltaXRpdmUuVHJpZ2dlcj5cbikpO1xuU2VsZWN0VHJpZ2dlci5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RTY3JvbGxVcEJ1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uPlxuPigoeyBjbGFzc05hbWUgPSAnJywgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b25cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgJ2ZsZXggY3Vyc29yLWRlZmF1bHQgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB5LTEgZGFyazp0ZXh0LXdoaXRlJyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxDaGV2cm9uVXBJY29uIC8+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uPlxuKSk7XG5TZWxlY3RTY3JvbGxVcEJ1dHRvbi5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbj5cbj4oKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b25cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgJ2ZsZXggY3Vyc29yLWRlZmF1bHQgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB5LTEgZGFyazp0ZXh0LXdoaXRlJyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxDaGV2cm9uRG93bkljb24gLz5cbiAgPC9TZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbj5cbikpO1xuU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbi5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUgPSAnJywgY2hpbGRyZW4sIHBvc2l0aW9uID0gJ3BvcHBlcicsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8U2VsZWN0UHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ2JnLXBvcG92ZXIgdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcmVsYXRpdmUgei00MCBtYXgtaC05NiBtaW4tdy1bOHJlbV0gb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCBzaGFkb3ctbWQgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTp6b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTp6b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yIGRhcms6Ym9yZGVyLWdyYXktNjAwJyxcbiAgICAgICAgcG9zaXRpb24gPT09ICdwb3BwZXInXG4gICAgICAgICAgPyAnZGF0YS1bc2lkZT1ib3R0b21dOnRyYW5zbGF0ZS15LTEgZGF0YS1bc2lkZT1sZWZ0XTotdHJhbnNsYXRlLXgtMSBkYXRhLVtzaWRlPXJpZ2h0XTp0cmFuc2xhdGUteC0xIGRhdGEtW3NpZGU9dG9wXTotdHJhbnNsYXRlLXktMSdcbiAgICAgICAgICA6ICcnLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgcG9zaXRpb249e3Bvc2l0aW9ufVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIDxTZWxlY3RTY3JvbGxVcEJ1dHRvbiAvPlxuICAgICAgPFNlbGVjdFByaW1pdGl2ZS5WaWV3cG9ydFxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICdwLTEnLFxuICAgICAgICAgIHBvc2l0aW9uID09PSAncG9wcGVyJ1xuICAgICAgICAgICAgPyAnaC1bdmFyKC0tcmFkaXgtc2VsZWN0LXRyaWdnZXItaGVpZ2h0KV0gdy1mdWxsIG1pbi13LVt2YXIoLS1yYWRpeC1zZWxlY3QtdHJpZ2dlci13aWR0aCldJ1xuICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgKX1cbiAgICAgID5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9TZWxlY3RQcmltaXRpdmUuVmlld3BvcnQ+XG4gICAgICA8U2VsZWN0U2Nyb2xsRG93bkJ1dHRvbiAvPlxuICAgIDwvU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQ+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuU2VsZWN0Q29udGVudC5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RMYWJlbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5MYWJlbD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkxhYmVsPlxuPigoeyBjbGFzc05hbWUgPSAnJywgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuTGFiZWxcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKCdweC0yIHB5LTEuNSB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQnLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuU2VsZWN0TGFiZWwuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuTGFiZWwuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdEl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkl0ZW0+XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAncmVsYXRpdmUgZmxleCB3LWZ1bGwgY3Vyc29yLXBvaW50ZXIgc2VsZWN0LW5vbmUgaXRlbXMtY2VudGVyIHJvdW5kZWQtc20gcHktMS41IHBsLTIgcHItOCB0ZXh0LXNtIG91dGxpbmUtbm9uZSBmb2N1czpiZy1hY2NlbnQgZm9jdXM6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06b3BhY2l0eS01MCcsXG4gICAgICAncm91bmRlZC1sZyBob3ZlcjpiZy1ncmF5LTEwMC81MCBkYXJrOmhvdmVyOmJnLWdyYXktNzAwJyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cImFic29sdXRlIHJpZ2h0LTIgZmxleCBoLTMuNSB3LTMuNSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxTZWxlY3RQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENoZWNrSWNvbiBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz5cbiAgICAgIDwvU2VsZWN0UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIDxTZWxlY3RQcmltaXRpdmUuSXRlbVRleHQ+e2NoaWxkcmVufTwvU2VsZWN0UHJpbWl0aXZlLkl0ZW1UZXh0PlxuICA8L1NlbGVjdFByaW1pdGl2ZS5JdGVtPlxuKSk7XG5TZWxlY3RJdGVtLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkl0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdFNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TZXBhcmF0b3I+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TZXBhcmF0b3I+XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5TZXBhcmF0b3JcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKCctbXgtMSBteS0xIGgtcHggYmctbXV0ZWQnLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuU2VsZWN0U2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvci5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHtcbiAgU2VsZWN0LFxuICBTZWxlY3RHcm91cCxcbiAgU2VsZWN0VmFsdWUsXG4gIFNlbGVjdFRyaWdnZXIsXG4gIFNlbGVjdENvbnRlbnQsXG4gIFNlbGVjdExhYmVsLFxuICBTZWxlY3RJdGVtLFxuICBTZWxlY3RTZXBhcmF0b3IsXG4gIFNlbGVjdFNjcm9sbFVwQnV0dG9uLFxuICBTZWxlY3RTY3JvbGxEb3duQnV0dG9uLFxufTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VMYXlvdXRFZmZlY3QsIHVzZUVmZmVjdCwgdXNlQ2FsbGJhY2ssIG1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VMb2NhbGl6ZSB9IGZyb20gJ34vaG9va3MnO1xuXG5pbnRlcmZhY2UgT3B0aW9uIHtcbiAgdmFsdWU6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgaWNvbj86IFJlYWN0LlJlYWN0Tm9kZTtcbn1cblxuaW50ZXJmYWNlIFJhZGlvUHJvcHMge1xuICBvcHRpb25zOiBPcHRpb25bXTtcbiAgdmFsdWU/OiBzdHJpbmc7XG4gIG9uQ2hhbmdlPzogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBmdWxsV2lkdGg/OiBib29sZWFuO1xuICAnYXJpYS1sYWJlbGxlZGJ5Jz86IHN0cmluZztcbn1cblxuY29uc3QgUmFkaW8gPSBtZW1vKGZ1bmN0aW9uIFJhZGlvKHtcbiAgb3B0aW9ucyxcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBkaXNhYmxlZCA9IGZhbHNlLFxuICBjbGFzc05hbWUgPSAnJyxcbiAgZnVsbFdpZHRoID0gZmFsc2UsXG4gICdhcmlhLWxhYmVsbGVkYnknOiBhcmlhTGFiZWxsZWRCeSxcbn06IFJhZGlvUHJvcHMpIHtcbiAgY29uc3QgbG9jYWxpemUgPSB1c2VMb2NhbGl6ZSgpO1xuICBjb25zdCBidXR0b25SZWZzID0gdXNlUmVmPChIVE1MQnV0dG9uRWxlbWVudCB8IG51bGwpW10+KFtdKTtcbiAgY29uc3QgW2lzTW91bnRlZCwgc2V0SXNNb3VudGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2N1cnJlbnRWYWx1ZSwgc2V0Q3VycmVudFZhbHVlXSA9IHVzZVN0YXRlPHN0cmluZz4odmFsdWUgPz8gJycpO1xuICBjb25zdCBbYmFja2dyb3VuZFN0eWxlLCBzZXRCYWNrZ3JvdW5kU3R5bGVdID0gdXNlU3RhdGU8UmVhY3QuQ1NTUHJvcGVydGllcz4oe30pO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChuZXdWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgc2V0Q3VycmVudFZhbHVlKG5ld1ZhbHVlKTtcbiAgICBvbkNoYW5nZT8uKG5ld1ZhbHVlKTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVCYWNrZ3JvdW5kU3R5bGUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IG9wdGlvbnMuZmluZEluZGV4KChvcHQpID0+IG9wdC52YWx1ZSA9PT0gY3VycmVudFZhbHVlKTtcbiAgICBpZiAoc2VsZWN0ZWRJbmRleCA+PSAwICYmIGJ1dHRvblJlZnMuY3VycmVudFtzZWxlY3RlZEluZGV4XSkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRCdXR0b24gPSBidXR0b25SZWZzLmN1cnJlbnRbc2VsZWN0ZWRJbmRleF07XG4gICAgICBjb25zdCBjb250YWluZXIgPSBzZWxlY3RlZEJ1dHRvbj8ucGFyZW50RWxlbWVudDtcbiAgICAgIGlmIChzZWxlY3RlZEJ1dHRvbiAmJiBjb250YWluZXIpIHtcbiAgICAgICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgYnV0dG9uUmVjdCA9IHNlbGVjdGVkQnV0dG9uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBvZmZzZXRMZWZ0ID0gYnV0dG9uUmVjdC5sZWZ0IC0gY29udGFpbmVyUmVjdC5sZWZ0IC0gNDtcbiAgICAgICAgc2V0QmFja2dyb3VuZFN0eWxlKHtcbiAgICAgICAgICB3aWR0aDogYCR7YnV0dG9uUmVjdC53aWR0aH1weGAsXG4gICAgICAgICAgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWCgke29mZnNldExlZnR9cHgpYCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbY3VycmVudFZhbHVlLCBvcHRpb25zXSk7XG5cbiAgLy8gTWFyayBhcyBtb3VudGVkIGFmdGVyIGRpYWxvZyBhbmltYXRpb25zIHNldHRsZVxuICAvLyBUaW1lb3V0IGVuc3VyZXMgd2Ugd2FpdCBmb3IgQ1NTIHRyYW5zaXRpb25zIHRvIGNvbXBsZXRlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0SXNNb3VudGVkKHRydWUpO1xuICAgIH0sIDUwKTtcblxuICAgIHJldHVybiAoKSA9PiBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gIH0sIFtdKTtcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc01vdW50ZWQpIHtcbiAgICAgIHVwZGF0ZUJhY2tncm91bmRTdHlsZSgpO1xuICAgIH1cbiAgfSwgW2lzTW91bnRlZCwgdXBkYXRlQmFja2dyb3VuZFN0eWxlXSk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgc2V0Q3VycmVudFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH0sIFt2YWx1ZV0pO1xuXG4gIGlmIChvcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT1cInJlbGF0aXZlIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciByb3VuZGVkLWxnIGJnLW11dGVkIHAtMSBvcGFjaXR5LTUwXCJcbiAgICAgICAgcm9sZT1cInJhZGlvZ3JvdXBcIlxuICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2FyaWFMYWJlbGxlZEJ5fVxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJweC00IHB5LTIgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICB7bG9jYWxpemUoJ2NvbV91aV9ub19vcHRpb25zJyl9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICBjb25zdCBzZWxlY3RlZEluZGV4ID0gb3B0aW9ucy5maW5kSW5kZXgoKG9wdCkgPT4gb3B0LnZhbHVlID09PSBjdXJyZW50VmFsdWUpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtgcmVsYXRpdmUgJHtmdWxsV2lkdGggPyAnZmxleCcgOiAnaW5saW5lLWZsZXgnfSBpdGVtcy1jZW50ZXIgcm91bmRlZC1sZyBiZy1tdXRlZCBwLTEgJHtjbGFzc05hbWV9YH1cbiAgICAgIHJvbGU9XCJyYWRpb2dyb3VwXCJcbiAgICAgIGFyaWEtbGFiZWxsZWRieT17YXJpYUxhYmVsbGVkQnl9XG4gICAgPlxuICAgICAge3NlbGVjdGVkSW5kZXggPj0gMCAmJiBpc01vdW50ZWQgJiYgKFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPVwicG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSBpbnNldC15LTEgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWJvcmRlci81MCBiZy1iYWNrZ3JvdW5kIHNoYWRvdy1zbSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgZWFzZS1vdXRcIlxuICAgICAgICAgIHN0eWxlPXtiYWNrZ3JvdW5kU3R5bGV9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAge29wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICByZWY9eyhlbCkgPT4ge1xuICAgICAgICAgICAgYnV0dG9uUmVmcy5jdXJyZW50W2luZGV4XSA9IGVsO1xuICAgICAgICAgIH19XG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cInJhZGlvXCJcbiAgICAgICAgICBhcmlhLWNoZWNrZWQ9e2N1cnJlbnRWYWx1ZSA9PT0gb3B0aW9uLnZhbHVlfVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUNoYW5nZShvcHRpb24udmFsdWUpfVxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICBjbGFzc05hbWU9e2ByZWxhdGl2ZSB6LTEwIGZsZXggaC1bMzRweF0gaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yIHJvdW5kZWQtbWQgcHgtNCB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTE1MCBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmluZyAke1xuICAgICAgICAgICAgY3VycmVudFZhbHVlID09PSBvcHRpb24udmFsdWUgPyAndGV4dC1mb3JlZ3JvdW5kJyA6ICd0ZXh0LWZvcmVncm91bmQnXG4gICAgICAgICAgfSAke2Rpc2FibGVkID8gJ2N1cnNvci1ub3QtYWxsb3dlZCBvcGFjaXR5LTUwJyA6ICcnfSAke2Z1bGxXaWR0aCA/ICdmbGV4LTEnIDogJyd9YH1cbiAgICAgICAgPlxuICAgICAgICAgIHtvcHRpb24uaWNvbiAmJiAoXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmbGV4LXNocmluay0wXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgIHtvcHRpb24uaWNvbn1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIndoaXRlc3BhY2Utbm93cmFwXCI+e29wdGlvbi5sYWJlbH08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgKSl9XG4gICAgPC9kaXY+XG4gICk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgUmFkaW87XG4iLCJpbXBvcnQgdHlwZSBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBYLCBQbHVzIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IG1vdGlvbiB9IGZyb20gJ2ZyYW1lci1tb3Rpb24nO1xuaW1wb3J0IHR5cGUgeyBCdXR0b25IVE1MQXR0cmlidXRlcyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgTHVjaWRlSWNvbiB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5pbnRlcmZhY2UgQmFkZ2VQcm9wc1xuICBleHRlbmRzIE9taXQ8XG4gICAgQnV0dG9uSFRNTEF0dHJpYnV0ZXM8SFRNTEJ1dHRvbkVsZW1lbnQ+LFxuICAgICdvbkFuaW1hdGlvblN0YXJ0JyB8ICdvbkRyYWdTdGFydCcgfCAnb25EcmFnRW5kJyB8ICdvbkRyYWcnXG4gID4ge1xuICBpY29uPzogTHVjaWRlSWNvbjtcbiAgbGFiZWw6IHN0cmluZztcbiAgaWQ/OiBzdHJpbmc7XG4gIGlzQWN0aXZlPzogYm9vbGVhbjtcbiAgaXNFZGl0aW5nPzogYm9vbGVhbjtcbiAgaXNEcmFnZ2luZz86IGJvb2xlYW47XG4gIGlzQXZhaWxhYmxlOiBib29sZWFuO1xuICBpc0luQ2hhdD86IGJvb2xlYW47XG4gIG9uQmFkZ2VBY3Rpb24/OiAoKSA9PiB2b2lkO1xuICBvblRvZ2dsZT86ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEJhZGdlKHtcbiAgaWNvbjogSWNvbixcbiAgbGFiZWwsXG4gIGlkLFxuICBpc0FjdGl2ZSA9IGZhbHNlLFxuICBpc0VkaXRpbmcgPSBmYWxzZSxcbiAgaXNEcmFnZ2luZyA9IGZhbHNlLFxuICBpc0F2YWlsYWJsZSA9IHRydWUsXG4gIGlzSW5DaGF0ID0gZmFsc2UsXG4gIG9uQmFkZ2VBY3Rpb24sXG4gIG9uVG9nZ2xlLFxuICBjbGFzc05hbWUsXG4gIC4uLnByb3BzXG59OiBCYWRnZVByb3BzKSB7XG4gIGNvbnN0IGlzTW92ZWFibGUgPSBpc0VkaXRpbmcgJiYgaXNBdmFpbGFibGU7XG4gIGNvbnN0IGlzRGlzYWJsZWQgPSBpZCA9PT0gJzEnICYmIGlzSW5DaGF0O1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrOiBSZWFjdC5Nb3VzZUV2ZW50SGFuZGxlcjxIVE1MQnV0dG9uRWxlbWVudD4gPSAoZSkgPT4ge1xuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghaXNFZGl0aW5nICYmIG9uVG9nZ2xlKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgb25Ub2dnbGUoKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZ2V0V2hpbGVUYXBTY2FsZSA9ICgpID0+IHtcbiAgICBpZiAoaXNEcmFnZ2luZykge1xuICAgICAgcmV0dXJuIDEuMTtcbiAgICB9XG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICByZXR1cm4gMC45NztcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxtb3Rpb24uYnV0dG9uXG4gICAgICBvbkNsaWNrPXtoYW5kbGVDbGlja31cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdncm91cCByZWxhdGl2ZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSByb3VuZGVkLWZ1bGwgcHgtNCBweS0xLjUnLFxuICAgICAgICAnYm9yZGVyIGJvcmRlci1ib3JkZXItbWVkaXVtIHRleHQtc20gZm9udC1tZWRpdW0gdHJhbnNpdGlvbi1zaGFkb3cnLFxuICAgICAgICAnQGNvbnRhaW5lci1bNjAwcHhdOnctZnVsbCBzaXplLTkgcC0yJyxcbiAgICAgICAgaXNBY3RpdmVcbiAgICAgICAgICA/ICdiZy1zdXJmYWNlLWFjdGl2ZSBzaGFkb3ctbWQnXG4gICAgICAgICAgOiAnYmctc3VyZmFjZS1jaGF0IHNoYWRvdy1zbSBob3ZlcjpiZy1zdXJmYWNlLWhvdmVyIGhvdmVyOnNoYWRvdy1tZCcsXG4gICAgICAgICdhY3RpdmU6c2NhbGUtOTUgYWN0aXZlOnNoYWRvdy1pbm5lcicsXG4gICAgICAgIGlzTW92ZWFibGUgJiYgJ2N1cnNvci1tb3ZlJyxcbiAgICAgICAgaXNEaXNhYmxlZCAmJiAnY3Vyc29yLW5vdC1hbGxvd2VkIG9wYWNpdHktNTAgaG92ZXI6c2hhZG93LXNtJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIGFuaW1hdGU9e3tcbiAgICAgICAgc2NhbGU6IGlzRHJhZ2dpbmcgPyAxLjEgOiAxLFxuICAgICAgICBib3hTaGFkb3c6IGlzRHJhZ2dpbmcgPyAnMCAxMHB4IDI1cHggcmdiYSgwLDAsMCwwLjEpJyA6IHVuZGVmaW5lZCxcbiAgICAgIH19XG4gICAgICB3aGlsZVRhcD17eyBzY2FsZTogZ2V0V2hpbGVUYXBTY2FsZSgpIH19XG4gICAgICB0cmFuc2l0aW9uPXt7IHR5cGU6ICd0d2VlbicsIGR1cmF0aW9uOiAwLjEsIGVhc2U6ICdlYXNlT3V0JyB9fVxuICAgICAgey4uLihwcm9wcyBhcyBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgbW90aW9uLmJ1dHRvbj4pfVxuICAgID5cbiAgICAgIHtJY29uICYmIChcbiAgICAgICAgPEljb25cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ0Bjb250YWluZXItWzYwMHB4XTpoLTQgQGNvbnRhaW5lci1bNjAwcHhdOnctNCByZWxhdGl2ZSBoLTUgdy01JyxcbiAgICAgICAgICAgICFsYWJlbCAmJiAnbXgtYXV0bycsXG4gICAgICAgICAgKX1cbiAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIkBjb250YWluZXItWzYwMHB4XTppbmxpbmUgcmVsYXRpdmUgaGlkZGVuXCI+e2xhYmVsfTwvc3Bhbj5cblxuICAgICAge2lzRWRpdGluZyAmJiAhaXNEcmFnZ2luZyAmJiAoXG4gICAgICAgIDxtb3Rpb24uYnV0dG9uXG4gICAgICAgICAgY2xhc3NOYW1lPVwiQGNvbnRhaW5lci1bNjAwcHhdOmgtNSBAY29udGFpbmVyLVs2MDBweF06dy01IGFic29sdXRlIC1yaWdodC0xIC10b3AtMSBmbGV4IGgtNiB3LTYgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBiZy1zdXJmYWNlLXNlY29uZGFyeS1hbHQgdGV4dC10ZXh0LXByaW1hcnkgc2hhZG93LXNtXCJcbiAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHNjYWxlOiAwLjggfX1cbiAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHNjYWxlOiAxIH19XG4gICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCBzY2FsZTogMC44IH19XG4gICAgICAgICAgd2hpbGVUYXA9e3sgc2NhbGU6IDAuOSB9fVxuICAgICAgICAgIG9uTW91c2VEb3duPXsoZSkgPT4gZS5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIG9uQmFkZ2VBY3Rpb24/LigpO1xuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7aXNBdmFpbGFibGUgPyA8WCBjbGFzc05hbWU9XCJoLTMgdy0zXCIgLz4gOiA8UGx1cyBjbGFzc05hbWU9XCJoLTMgdy0zXCIgLz59XG4gICAgICAgIDwvbW90aW9uLmJ1dHRvbj5cbiAgICAgICl9XG4gICAgPC9tb3Rpb24uYnV0dG9uPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXJjaGl2ZUljb24oeyBjbGFzc05hbWUgPSAnaWNvbi1tZCcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMThcIlxuICAgICAgaGVpZ2h0PVwiMThcIlxuICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTMuNjIxODggMy4wNzkxOEMzLjg3NTk3IDIuNTcxIDQuMzk1MzcgMi4yNSA0Ljk2MzUzIDIuMjVIMTMuMDM2NUMxMy42MDQ2IDIuMjUgMTQuMTI0IDIuNTcxIDE0LjM3ODEgMy4wNzkxOEwxNS43NSA1LjgyMjk1VjEzLjVDMTUuNzUgMTQuNzQyNiAxNC43NDI2IDE1Ljc1IDEzLjUgMTUuNzVINC41QzMuMjU3MzYgMTUuNzUgMi4yNSAxNC43NDI2IDIuMjUgMTMuNVY1LjgyMjk1TDMuNjIxODggMy4wNzkxOFpNMTMuMDM2NSAzLjc1SDQuOTYzNTNMNC4yMTM1MyA1LjI1SDEzLjc4NjVMMTMuMDM2NSAzLjc1Wk0xNC4yNSA2Ljc1SDMuNzVWMTMuNUMzLjc1IDEzLjkxNDIgNC4wODU3OSAxNC4yNSA0LjUgMTQuMjVIMTMuNUMxMy45MTQyIDE0LjI1IDE0LjI1IDEzLjkxNDIgMTQuMjUgMTMuNVY2Ljc1Wk02Ljc1IDlDNi43NSA4LjU4NTc5IDcuMDg1NzkgOC4yNSA3LjUgOC4yNUgxMC41QzEwLjkxNDIgOC4yNSAxMS4yNSA4LjU4NTc5IDExLjI1IDlDMTEuMjUgOS40MTQyMSAxMC45MTQyIDkuNzUgMTAuNSA5Ljc1SDcuNUM3LjA4NTc5IDkuNzUgNi43NSA5LjQxNDIxIDYuNzUgOVpcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQmxvY2tzKHsgY2xhc3NOYW1lID0gJycgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbignbHVjaWRlIGx1Y2lkZS1ibG9ja3MnLCBjbGFzc05hbWUpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cmVjdCB3aWR0aD1cIjdcIiBoZWlnaHQ9XCI3XCIgeD1cIjE0XCIgeT1cIjNcIiByeD1cIjFcIiAvPlxuICAgICAgPHBhdGggZD1cIk0xMCAyMVY4YTEgMSAwIDAgMC0xLTFINGExIDEgMCAwIDAtMSAxdjEyYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMXYtNWExIDEgMCAwIDAtMS0xSDNcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBsdWdpbih7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2gtNCB3LTQnLCBjbGFzc05hbWUpfVxuICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8ZyBmaWxsPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgIDxwYXRoIGQ9XCJNMTMuMTY0Ljk4YS43LjcgMCAwIDAtMS4zMjggMGwtLjQ3OCAxLjQzNWEuNy43IDAgMCAxLS40NDMuNDQzbC0xLjQzNi40NzhhLjcuNyAwIDAgMCAwIDEuMzI4bDEuNDM2LjQ3OWEuNy43IDAgMCAxIC40NDMuNDQybC40NzggMS40MzZhLjcuNyAwIDAgMCAxLjMyOCAwbC40NzgtMS40MzZhLjcuNyAwIDAgMSAuNDQzLS40NDNsMS40MzYtLjQ3OGEuNy43IDAgMCAwIDAtMS4zMjhsLTEuNDM2LS40NzhhLjcuNyAwIDAgMS0uNDQzLS40NDNMMTMuMTY0Ljk3OVpcIiAvPlxuICAgICAgICA8cGF0aCBkPVwiTTEzLjIzNyAxMC41MzRjLS4yMjgtLjI0NS0uNTEzLS40Ni0uODQ3LS40NmEuODIzLjgyMyAwIDAgMC0uODI4Ljg0OWMuMDQgMS4wNC4xMjggMi4wNjcuMjYzIDMuMDhhLjYxOS42MTkgMCAwIDEtLjUyOC42OTVjLS44NzIuMTIxLTEuNzQ4LjIwOC0yLjYyNi4yNjJhLjguOCAwIDAgMS0uODQ1LS44MDVjMC0uMzI1LjIxLS42MDIuNDUtLjgyLjIzNS0uMjE1LjM3NS0uNDg4LjM3NS0uNzg3IDAtLjY4My0uNzM4LTEuMjM3LTEuNjUtMS4yMzctLjkxMSAwLTEuNjUuNTU0LTEuNjUgMS4yMzcgMCAuMjk0LjEzNy41NjMuMzY0Ljc3NS4yNDUuMjI5LjQ2MS41MTMuNDYxLjg0OGEuODIzLjgyMyAwIDAgMS0uODUuODI5IDMzLjgwOSAzMy44MDkgMCAwIDEtMy4yNjYtLjI3OC42MTkuNjE5IDAgMCAxLS41MzItLjUzMiAzNC4wOTkgMzQuMDk5IDAgMCAxLS4yNzgtMy4yNjcuODIzLjgyMyAwIDAgMSAuODMtLjg1Yy4zMzMgMCAuNjE5LjIxNi44NDYuNDYxLjIxMi4yMjguNDgyLjM2NC43NzYuMzY0LjY4MyAwIDEuMjM3LS43MzggMS4yMzctMS42NSAwLS45MS0uNTU0LTEuNjUtMS4yMzctMS42NS0uMjk5IDAtLjU3Mi4xNDItLjc4Ni4zNzYtLjIxOS4yNC0uNDk2LjQ1LS44MjEuNDVhLjguOCAwIDAgMS0uODA1LS44NDVjLjA1NC0uODg1LjE0Mi0xLjc2LjI2Mi0yLjYyNmEuNjE5LjYxOSAwIDAgMSAuNjk1LS41MjhjMS4wMjIuMTM2IDIuMDUuMjI0IDMuMDguMjYzYS44MjIuODIyIDAgMCAwIC44NS0uODI4YzAtLjMzNC0uMjE3LS42Mi0uNDYyLS44NDctLjIyNy0uMjEyLS4zNjMtLjQ4Mi0uMzYzLS43NzZDNS4zNTIgMS41NTQgNi4wOSAxIDcuMDAyIDFjLjkxIDAgMS42NDkuNTU0IDEuNjQ5IDEuMjM3IDAgLjE3My0uMDEyLjMyNy0uMDI5LjQ3M0M4LjI1OCAzIDggMy40MSA4IDRjMCAxLjUgMS42NjcgMS44MzMgMi41IDIgLjE2Ny44MzMuNSAyLjUgMiAyLjUuNzMyIDAgMS4xODYtLjM5NyAxLjQ3OS0uOWwuMDM0LS4wMDFjLjY4MyAwIDEuMjM3LjczOCAxLjIzNyAxLjY1IDAgLjkxMS0uNTU0IDEuNjUtMS4yMzcgMS42NS0uMjk0IDAtLjU2NC0uMTM3LS43NzYtLjM2NFpcIiAvPlxuICAgICAgPC9nPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEdQVEljb24oe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICcnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIGNvbnN0IHVuaXQgPSAnNDEnO1xuICBjb25zdCBoZWlnaHQgPSBzaXplO1xuICBjb25zdCB3aWR0aCA9IHNpemU7XG5cbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB3aWR0aD17d2lkdGh9XG4gICAgICBoZWlnaHQ9e2hlaWdodH1cbiAgICAgIHZpZXdCb3g9e2AwIDAgJHt1bml0fSAke3VuaXR9YH1cbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIxLjVcIlxuICAgICAgY2xhc3NOYW1lPXtjbihjbGFzc05hbWUsICcnKX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0zNy41MzI0IDE2Ljg3MDdDMzcuOTgwOCAxNS41MjQxIDM4LjEzNjMgMTQuMDk3NCAzNy45ODg2IDEyLjY4NTlDMzcuODQwOSAxMS4yNzQ0IDM3LjM5MzQgOS45MTA3NiAzNi42NzYgOC42ODYyMkMzNS42MTI2IDYuODM0MDQgMzMuOTg4MiA1LjM2NzYgMzIuMDM3MyA0LjQ5ODVDMzAuMDg2NCAzLjYyOTQxIDI3LjkwOTggMy40MDI1OSAyNS44MjE1IDMuODUwNzhDMjQuODc5NiAyLjc4OTMgMjMuNzIxOSAxLjk0MTI1IDIyLjQyNTcgMS4zNjM0MUMyMS4xMjk1IDAuNzg1NTc1IDE5LjcyNDkgMC40OTEyNjkgMTguMzA1OCAwLjUwMDE5N0MxNi4xNzA4IDAuNDk1MDQ0IDE0LjA4OTMgMS4xNjgwMyAxMi4zNjE0IDIuNDIyMTRDMTAuNjMzNSAzLjY3NjI0IDkuMzQ4NTMgNS40NDY2NiA4LjY5MTcgNy40NzgxNUM3LjMwMDg1IDcuNzYyODYgNS45ODY4NiA4LjM0MTQgNC44Mzc3IDkuMTc1MDVDMy42ODg1NCAxMC4wMDg3IDIuNzMwNzMgMTEuMDc4MiAyLjAyODM5IDEyLjMxMkMwLjk1NjQ2NCAxNC4xNTkxIDAuNDk4OTA1IDE2LjI5ODggMC43MjE2OTggMTguNDIyOEMwLjk0NDQ5MiAyMC41NDY3IDEuODM2MTIgMjIuNTQ0OSAzLjI2OCAyNC4xMjkzQzIuODE5NjYgMjUuNDc1OSAyLjY2NDEzIDI2LjkwMjYgMi44MTE4MiAyOC4zMTQxQzIuOTU5NTEgMjkuNzI1NiAzLjQwNzAxIDMxLjA4OTIgNC4xMjQzNyAzMi4zMTM4QzUuMTg3OTEgMzQuMTY1OSA2LjgxMjMgMzUuNjMyMiA4Ljc2MzIxIDM2LjUwMTNDMTAuNzE0MSAzNy4zNzA0IDEyLjg5MDcgMzcuNTk3MyAxNC45Nzg5IDM3LjE0OTJDMTUuOTIwOCAzOC4yMTA3IDE3LjA3ODYgMzkuMDU4NyAxOC4zNzQ3IDM5LjYzNjZDMTkuNjcwOSA0MC4yMTQ0IDIxLjA3NTUgNDAuNTA4NyAyMi40OTQ2IDQwLjQ5OThDMjQuNjMwNyA0MC41MDU0IDI2LjcxMzMgMzkuODMyMSAyOC40NDE4IDM4LjU3NzJDMzAuMTcwNCAzNy4zMjIzIDMxLjQ1NTYgMzUuNTUwNiAzMi4xMTE5IDMzLjUxNzlDMzMuNTAyNyAzMy4yMzMyIDM0LjgxNjcgMzIuNjU0NyAzNS45NjU5IDMxLjgyMUMzNy4xMTUgMzAuOTg3NCAzOC4wNzI4IDI5LjkxNzggMzguNzc1MiAyOC42ODRDMzkuODQ1OCAyNi44MzcxIDQwLjMwMjMgMjQuNjk3OSA0MC4wNzg5IDIyLjU3NDhDMzkuODU1NiAyMC40NTE3IDM4Ljk2MzkgMTguNDU0NCAzNy41MzI0IDE2Ljg3MDdaTTIyLjQ5NzggMzcuODg0OUMyMC43NDQzIDM3Ljg4NzQgMTkuMDQ1OSAzNy4yNzMzIDE3LjY5OTQgMzYuMTUwMUMxNy43NjAxIDM2LjExNyAxNy44NjY2IDM2LjA1ODYgMTcuOTM2IDM2LjAxNjFMMjUuOTAwNCAzMS40MTU2QzI2LjEwMDMgMzEuMzAxOSAyNi4yNjYzIDMxLjEzNyAyNi4zODEzIDMwLjkzNzhDMjYuNDk2NCAzMC43Mzg2IDI2LjU1NjMgMzAuNTEyNCAyNi41NTQ5IDMwLjI4MjVWMTkuMDU0MkwyOS45MjEzIDIwLjk5OEMyOS45Mzg5IDIxLjAwNjggMjkuOTU0MSAyMS4wMTk4IDI5Ljk2NTYgMjEuMDM1OUMyOS45NzcgMjEuMDUyIDI5Ljk4NDIgMjEuMDcwNyAyOS45ODY3IDIxLjA5MDJWMzAuMzg4OUMyOS45ODQyIDMyLjM3NSAyOS4xOTQ2IDM0LjI3OTEgMjcuNzkwOSAzNS42ODQxQzI2LjM4NzIgMzcuMDg5MiAyNC40ODM4IDM3Ljg4MDYgMjIuNDk3OCAzNy44ODQ5Wk02LjM5MjI3IDMxLjAwNjRDNS41MTM5NyAyOS40ODg4IDUuMTk3NDIgMjcuNzEwNyA1LjQ5ODA0IDI1Ljk4MzJDNS41NTcxOCAyNi4wMTg3IDUuNjYwNDggMjYuMDgxOCA1LjczNDYxIDI2LjEyNDRMMTMuNjk5IDMwLjcyNDhDMTMuODk3NSAzMC44NDA4IDE0LjEyMzMgMzAuOTAyIDE0LjM1MzIgMzAuOTAyQzE0LjU4MyAzMC45MDIgMTQuODA4OCAzMC44NDA4IDE1LjAwNzMgMzAuNzI0OEwyNC43MzEgMjUuMTEwM1YyOC45OTc5QzI0LjczMjEgMjkuMDE3NyAyNC43MjgzIDI5LjAzNzYgMjQuNzE5OSAyOS4wNTU2QzI0LjcxMTUgMjkuMDczNiAyNC42OTg4IDI5LjA4OTMgMjQuNjgyOSAyOS4xMDEyTDE2LjYzMTcgMzMuNzQ5N0MxNC45MDk2IDM0Ljc0MTYgMTIuODY0MyAzNS4wMDk3IDEwLjk0NDcgMzQuNDk1NEM5LjAyNTA2IDMzLjk4MTEgNy4zODc4NSAzMi43MjYzIDYuMzkyMjcgMzEuMDA2NFpNNC4yOTcwNyAxMy42MTk0QzUuMTcxNTYgMTIuMDk5OCA2LjU1Mjc5IDEwLjkzNjQgOC4xOTg4NSAxMC4zMzI3QzguMTk4ODUgMTAuNDAxMyA4LjE5NDkxIDEwLjUyMjggOC4xOTQ5MSAxMC42MDcxVjE5LjgwOEM4LjE5MzUxIDIwLjAzNzggOC4yNTMzNCAyMC4yNjM4IDguMzY4MjMgMjAuNDYyOUM4LjQ4MzEyIDIwLjY2MTkgOC42NDg5MyAyMC44MjY3IDguODQ4NjMgMjAuOTQwNEwxOC41NzIzIDI2LjU1NDJMMTUuMjA2IDI4LjQ5NzlDMTUuMTg5NCAyOC41MDg5IDE1LjE3MDMgMjguNTE1NSAxNS4xNTA1IDI4LjUxNzNDMTUuMTMwNyAyOC41MTkxIDE1LjExMDcgMjguNTE2IDE1LjA5MjQgMjguNTA4Mkw3LjA0MDQ2IDIzLjg1NTdDNS4zMjEzNSAyMi44NjAxIDQuMDY3MTYgMjEuMjIzNSAzLjU1Mjg5IDE5LjMwNDZDMy4wMzg2MiAxNy4zODU4IDMuMzA2MjQgMTUuMzQxMyA0LjI5NzA3IDEzLjYxOTRaTTMxLjk1NSAyMC4wNTU2TDIyLjIzMTIgMTQuNDQxMUwyNS41OTc2IDEyLjQ5ODFDMjUuNjE0MiAxMi40ODcyIDI1LjYzMzMgMTIuNDgwNSAyNS42NTMxIDEyLjQ3ODdDMjUuNjcyOSAxMi40NzY5IDI1LjY5MjggMTIuNDgwMSAyNS43MTExIDEyLjQ4NzlMMzMuNzYzMSAxNy4xMzY0QzM0Ljk5NjcgMTcuODQ5IDM2LjAwMTcgMTguODk4MiAzNi42NjA2IDIwLjE2MTNDMzcuMzE5NCAyMS40MjQ0IDM3LjYwNDcgMjIuODQ5IDM3LjQ4MzIgMjQuMjY4NEMzNy4zNjE3IDI1LjY4NzggMzYuODM4MiAyNy4wNDMyIDM1Ljk3NDMgMjguMTc1OUMzNS4xMTAzIDI5LjMwODYgMzMuOTQxNSAzMC4xNzE3IDMyLjYwNDcgMzAuNjY0MUMzMi42MDQ3IDMwLjU5NDcgMzIuNjA0NyAzMC40NzMzIDMyLjYwNDcgMzAuMzg4OVYyMS4xODhDMzIuNjA2NiAyMC45NTg2IDMyLjU0NzQgMjAuNzMyOCAzMi40MzMyIDIwLjUzMzhDMzIuMzE5IDIwLjMzNDggMzIuMTU0IDIwLjE2OTggMzEuOTU1IDIwLjA1NTZaTTM1LjMwNTUgMTUuMDEyOEMzNS4yNDY0IDE0Ljk3NjUgMzUuMTQzMSAxNC45MTQyIDM1LjA2OSAxNC44NzE3TDI3LjEwNDUgMTAuMjcxMkMyNi45MDYgMTAuMTU1NCAyNi42ODAzIDEwLjA5NDMgMjYuNDUwNCAxMC4wOTQzQzI2LjIyMDYgMTAuMDk0MyAyNS45OTQ4IDEwLjE1NTQgMjUuNzk2MyAxMC4yNzEyTDE2LjA3MjYgMTUuODg1OFYxMS45OTgyQzE2LjA3MTUgMTEuOTc4MyAxNi4wNzUzIDExLjk1ODUgMTYuMDgzNyAxMS45NDA1QzE2LjA5MjEgMTEuOTIyNSAxNi4xMDQ4IDExLjkwNjggMTYuMTIwNyAxMS44OTQ5TDI0LjE3MTkgNy4yNTAyNUMyNS40MDUzIDYuNTM5MDMgMjYuODE1OCA2LjE5Mzc2IDI4LjIzODMgNi4yNTQ4MkMyOS42NjA4IDYuMzE1ODkgMzEuMDM2NCA2Ljc4MDc3IDMyLjIwNDQgNy41OTUwOEMzMy4zNzIzIDguNDA5MzkgMzQuMjg0MiA5LjUzOTQ1IDM0LjgzMzQgMTAuODUzMUMzNS4zODI2IDEyLjE2NjcgMzUuNTQ2NCAxMy42MDk1IDM1LjMwNTUgMTUuMDEyOFpNMTQuMjQyNCAyMS45NDE5TDEwLjg3NTIgMTkuOTk4MUMxMC44NTc2IDE5Ljk4OTMgMTAuODQyMyAxOS45NzYzIDEwLjgzMDkgMTkuOTYwMkMxMC44MTk1IDE5Ljk0NDEgMTAuODEyMiAxOS45MjU0IDEwLjgwOTggMTkuOTA1OFYxMC42MDcxQzEwLjgxMDcgOS4xODI5NSAxMS4yMTczIDcuNzg4NDggMTEuOTgxOSA2LjU4Njk2QzEyLjc0NjYgNS4zODU0NCAxMy44Mzc3IDQuNDI2NTkgMTUuMTI3NSAzLjgyMjY0QzE2LjQxNzMgMy4yMTg2OSAxNy44NTI0IDIuOTk0NjQgMTkuMjY0OSAzLjE3NjdDMjAuNjc3NSAzLjM1ODc2IDIyLjAwODkgMy45Mzk0MSAyMy4xMDM0IDQuODUwNjdDMjMuMDQyNyA0Ljg4Mzc5IDIyLjkzNyA0Ljk0MjE1IDIyLjg2NjggNC45ODQ3M0wxNC45MDI0IDkuNTg1MTdDMTQuNzAyNSA5LjY5ODc4IDE0LjUzNjYgOS44NjM1NiAxNC40MjE1IDEwLjA2MjZDMTQuMzA2NSAxMC4yNjE2IDE0LjI0NjYgMTAuNDg3NyAxNC4yNDc5IDEwLjcxNzVMMTQuMjQyNCAyMS45NDE5Wk0xNi4wNzEgMTcuOTk5MUwyMC40MDE4IDE1LjQ5NzhMMjQuNzMyNSAxNy45OTc1VjIyLjk5ODVMMjAuNDAxOCAyNS40OTgzTDE2LjA3MSAyMi45OTg1VjE3Ljk5OTFaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbnR5cGUgSWNvblByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNpemU/OiBzdHJpbmc7XG59O1xuXG5jb25zdCBFZGl0SWNvbiA9IFJlYWN0LmZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPigocHJvcHM6IEljb25Qcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY2xhc3NOYW1lID0gJ2ljb24tbWQnLCBzaXplID0gJzEuMmVtJyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgcmVmPXtyZWZ9XG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGhlaWdodD17c2l6ZX1cbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgY2xhc3NOYW1lPXtjbihjbGFzc05hbWUpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTEzLjI5MjkgNC4yOTI5MUMxNS4wNjQxIDIuNTIxNjcgMTcuOTM1OSAyLjUyMTY3IDE5LjcwNzEgNC4yOTI5QzIxLjQ3ODMgNi4wNjQxNCAyMS40NzgzIDguOTM1ODggMTkuNzA3MSAxMC43MDcxTDE4LjcwNzMgMTEuNzA2OUwxMS4xNjAzIDE5LjI1MzlDMTAuNzE4MiAxOS42OTYgMTAuMTQ4OSAxOS45ODkgOS41MzIxOSAyMC4wOTE4TDQuMTY0NCAyMC45ODY0QzMuODQ1ODQgMjEuMDM5NSAzLjUyMTI1IDIwLjkzNTUgMy4yOTI4OSAyMC43MDcxQzMuMDY0NTMgMjAuNDc4OCAyLjk2MDUxIDIwLjE1NDIgMy4wMTM2IDE5LjgzNTZMMy45MDgyNCAxNC40Njc4QzQuMDExMDMgMTMuODUxMSA0LjMwMzk2IDEzLjI4MTggNC43NDYxIDEyLjgzOTdMMTMuMjkyOSA0LjI5MjkxWk0xMyA3LjQxNDIyTDYuMTYwMzEgMTQuMjUzOUM2LjAxMjkzIDE0LjQwMTMgNS45MTUyOSAxNC41OTEgNS44ODEwMiAxNC43OTY2TDUuMjE2NTUgMTguNzgzNUw5LjIwMzM5IDE4LjExOUM5LjQwODk4IDE4LjA4NDcgOS41OTg3MiAxNy45ODcxIDkuNzQ2MSAxNy44Mzk3TDE2LjU4NTggMTFMMTMgNy40MTQyMlpNMTggOS41ODU4TDE0LjQxNDIgNi4wMDAwMUwxNC43MDcxIDUuNzA3MTJDMTUuNjk3MyA0LjcxNjkzIDE3LjMwMjcgNC43MTY5MyAxOC4yOTI5IDUuNzA3MTJDMTkuMjgzMSA2LjY5NzMxIDE5LjI4MzEgOC4zMDI3MiAxOC4yOTI5IDkuMjkyOTFMMTggOS41ODU4WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBFZGl0SWNvbjtcbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhdGFJY29uKHsgY2xhc3NOYW1lID0gJ2ljb24tc20nIH06IHsgY2xhc3NOYW1lPzogc3RyaW5nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB3aWR0aD1cIjE4XCJcbiAgICAgIGhlaWdodD1cIjE4XCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgY2xpcFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgZD1cIk02LjAwNjMzIDUuNUM2LjAyMzIxIDUuNTMzMTkgNi4wNzA0MiA1LjYwMzY2IDYuMTk1MjUgNS43MDkwNkM2LjQyNDU4IDUuOTAyNyA2LjgxNTczIDYuMTIyMTUgNy4zODY1OSA2LjMyNjAzQzguNTE5NiA2LjczMDY3IDEwLjE1MDYgNyAxMiA3QzEzLjg0OTQgNyAxNS40ODA0IDYuNzMwNjcgMTYuNjEzNCA2LjMyNjAzQzE3LjE4NDMgNi4xMjIxNSAxNy41NzU0IDUuOTAyNyAxNy44MDQ4IDUuNzA5MDZDMTcuOTI5NiA1LjYwMzY2IDE3Ljk3NjggNS41MzMxOSAxNy45OTM3IDUuNUMxNy45NzY4IDUuNDY2ODEgMTcuOTI5NiA1LjM5NjM0IDE3LjgwNDggNS4yOTA5NEMxNy41NzU0IDUuMDk3MyAxNy4xODQzIDQuODc3ODUgMTYuNjEzNCA0LjY3Mzk3QzE1LjQ4MDQgNC4yNjkzMyAxMy44NDk0IDQgMTIgNEMxMC4xNTA2IDQgOC41MTk2IDQuMjY5MzMgNy4zODY1OSA0LjY3Mzk3QzYuODE1NzMgNC44Nzc4NSA2LjQyNDU4IDUuMDk3MyA2LjE5NTI1IDUuMjkwOTRDNi4wNzA0MiA1LjM5NjM0IDYuMDIzMjEgNS40NjY4MSA2LjAwNjMzIDUuNVpNMTggNy45MTcyNkMxNy43NzI2IDguMDI0MDMgMTcuNTMzMyA4LjEyMTIzIDE3LjI4NjEgOC4yMDk1MUMxNS44ODU2IDguNzA5NjggMTQuMDE2NiA5IDEyIDlDOS45ODM0MSA5IDguMTE0NCA4LjcwOTY4IDYuNzEzOTIgOC4yMDk1MUM2LjQ2Njc0IDguMTIxMjMgNi4yMjczOCA4LjAyNDAzIDYgNy45MTcyNlYxMS45ODY2QzYuMDA4MTMgMTIuMDA3MyA2LjAzOTMxIDEyLjA2NjEgNi4xNDI1OSAxMi4xNjI0QzYuMzE5NzYgMTIuMzI3NyA2LjYzMTgxIDEyLjUyNTIgNy4xMDYwOSAxMi43MTg5QzguMDQ4MzcgMTMuMTAzOSA5LjQzMDI3IDEzLjM5MzIgMTEuMDUxIDEzLjQ3NkMxMS42MDI2IDEzLjUwNDIgMTIuMDI2OSAxMy45NzQxIDExLjk5ODcgMTQuNTI1N0MxMS45NzA1IDE1LjA3NzMgMTEuNTAwNSAxNS41MDE2IDEwLjk0OSAxNS40NzM0QzkuMTc3NDQgMTUuMzgyOSA3LjU1OTM0IDE1LjA2NDYgNi4zNDk2OSAxNC41NzA0QzYuMjMwOTcgMTQuNTIxOSA2LjExNDE5IDE0LjQ3MDkgNiAxNC40MTczVjE4LjQ4NjZDNi4wMDgxMyAxOC41MDczIDYuMDM5MzEgMTguNTY2MSA2LjE0MjU5IDE4LjY2MjRDNi4zMTk3NiAxOC44Mjc3IDYuNjMxODEgMTkuMDI1MiA3LjEwNjA5IDE5LjIxODlDOC4wNDgzNyAxOS42MDM5IDkuNDMwMjcgMTkuODkzMiAxMS4wNTEgMTkuOTc2QzExLjYwMjYgMjAuMDA0MiAxMi4wMjY5IDIwLjQ3NDEgMTEuOTk4NyAyMS4wMjU3QzExLjk3MDUgMjEuNTc3MyAxMS41MDA1IDIyLjAwMTYgMTAuOTQ5IDIxLjk3MzRDOS4xNzc0NCAyMS44ODI5IDcuNTU5MzQgMjEuNTY0NiA2LjM0OTY5IDIxLjA3MDRDNS43NDgwMSAyMC44MjQ2IDUuMTk2MTEgMjAuNTE0NiA0Ljc3ODMzIDIwLjEyNDlDNC4zNTk0OCAxOS43MzQxIDQgMTkuMTg2NiA0IDE4LjVWNS41QzQgNC43NDYzMSA0LjQzMDQ4IDQuMTYzNDYgNC45MDQ5NCAzLjc2MjgzQzUuMzg0MDUgMy4zNTgyOSA2LjAxODAzIDMuMDM5MDIgNi43MTM5MiAyLjc5MDQ5QzguMTE0NCAyLjI5MDMyIDkuOTgzNDEgMiAxMiAyQzE0LjAxNjYgMiAxNS44ODU2IDIuMjkwMzIgMTcuMjg2MSAyLjc5MDQ5QzE3Ljk4MiAzLjAzOTAyIDE4LjYxNiAzLjM1ODI5IDE5LjA5NTEgMy43NjI4M0MxOS41Njk1IDQuMTYzNDYgMjAgNC43NDYzMSAyMCA1LjVWMTBDMjAgMTAuNTUyMyAxOS41NTIzIDExIDE5IDExQzE4LjQ0NzcgMTEgMTggMTAuNTUyMyAxOCAxMFY3LjkxNzI2Wk0xNy41IDEzQzE4LjA1MjMgMTMgMTguNSAxMy40NDc3IDE4LjUgMTRWMTQuNjcwN0MxOC44NTEgMTQuNzk0OCAxOS4xNzIgMTQuOTgyMyAxOS40NDkyIDE1LjIxOTVMMjAuMDMwOCAxNC44ODM3QzIwLjUwOTEgMTQuNjA3NSAyMS4xMjA3IDE0Ljc3MTQgMjEuMzk2OCAxNS4yNDk3QzIxLjY3MyAxNS43MjggMjEuNTA5MSAxNi4zMzk2IDIxLjAzMDggMTYuNjE1N0wyMC40NDk5IDE2Ljk1MTFDMjAuNDgyOCAxNy4xMjkxIDIwLjUgMTcuMzEyNSAyMC41IDE3LjVDMjAuNSAxNy42ODczIDIwLjQ4MjggMTcuODcwNyAyMC40NSAxOC4wNDg1TDIxLjAzMDggMTguMzgzOEMyMS41MDkxIDE4LjY1OTkgMjEuNjcyOSAxOS4yNzE1IDIxLjM5NjggMTkuNzQ5OEMyMS4xMjA2IDIwLjIyODEgMjAuNTA5MSAyMC4zOTIgMjAuMDMwOCAyMC4xMTU4TDE5LjQ0OTUgMTkuNzgwM0MxOS4xNzIyIDIwLjAxNzYgMTguODUxMSAyMC4yMDUyIDE4LjUgMjAuMzI5M1YyMUMxOC41IDIxLjU1MjMgMTguMDUyMyAyMiAxNy41IDIyQzE2Ljk0NzcgMjIgMTYuNSAyMS41NTIzIDE2LjUgMjFWMjAuMzI5M0MxNi4xNDg5IDIwLjIwNTIgMTUuODI3NyAyMC4wMTc2IDE1LjU1MDQgMTkuNzgwMkwxNC45NjkgMjAuMTE1OUMxNC40OTA3IDIwLjM5MiAxMy44NzkxIDIwLjIyODIgMTMuNjAzIDE5Ljc0OTlDMTMuMzI2OSAxOS4yNzE2IDEzLjQ5MDcgMTguNjYgMTMuOTY5IDE4LjM4MzlMMTQuNTUgMTguMDQ4NEMxNC41MTcyIDE3Ljg3MDYgMTQuNSAxNy42ODczIDE0LjUgMTcuNUMxNC41IDE3LjMxMjcgMTQuNTE3MiAxNy4xMjk0IDE0LjU1IDE2Ljk1MTVMMTMuOTY5MSAxNi42MTYxQzEzLjQ5MDggMTYuMzQgMTMuMzI2OSAxNS43Mjg0IDEzLjYwMzEgMTUuMjUwMUMxMy44NzkyIDE0Ljc3MTggMTQuNDkwOCAxNC42MDggMTQuOTY5MSAxNC44ODQxTDE1LjU1MDQgMTUuMjE5N0MxNS44Mjc4IDE0Ljk4MjQgMTYuMTQ4OSAxNC43OTQ4IDE2LjUgMTQuNjcwN1YxNEMxNi41IDEzLjQ0NzcgMTYuOTQ3NyAxMyAxNy41IDEzWk0xNi42MjQgMTcuMDE3NEMxNi42Mjc0IDE3LjAxMTcgMTYuNjMwOCAxNy4wMDU5IDE2LjYzNDIgMTcuMDAwMUMxNi42Mzc0IDE2Ljk5NDYgMTYuNjQwNSAxNi45ODkgMTYuNjQzNiAxNi45ODM0QzE2LjgxODcgMTYuNjkzNyAxNy4xMzY3IDE2LjUgMTcuNSAxNi41QzE3Ljg2NDUgMTYuNSAxOC4xODM1IDE2LjY5NTEgMTguMzU4MyAxNi45ODY1QzE4LjM2MDcgMTYuOTkwOSAxOC4zNjMyIDE2Ljk5NTMgMTguMzY1OCAxNi45OTk3QzE4LjM2ODUgMTcuMDA0NCAxOC4zNzEzIDE3LjAwOTEgMTguMzc0MSAxNy4wMTM4QzE4LjQ1NDMgMTcuMTU3NyAxOC41IDE3LjMyMzUgMTguNSAxNy41QzE4LjUgMTcuNjczNyAxOC40NTU3IDE3LjgzNzEgMTguMzc3OCAxNy45Nzk0QzE4LjM3MzcgMTcuOTg2MSAxOC4zNjk3IDE3Ljk5MjkgMTguMzY1NyAxNy45OTk4QzE4LjM2MTkgMTguMDA2NCAxOC4zNTgxIDE4LjAxMzEgMTguMzU0NSAxOC4wMTk4QzE4LjE3ODkgMTguMzA3NyAxNy44NjE5IDE4LjUgMTcuNSAxOC41QzE3LjEzNjIgMTguNSAxNi44MTc4IDE4LjMwNTggMTYuNjQyOCAxOC4wMTU0QzE2LjY0IDE4LjAxMDIgMTYuNjM3MSAxOC4wMDUgMTYuNjM0MSAxNy45OTk5QzE2LjYzMSAxNy45OTQ1IDE2LjYyNzggMTcuOTg5MSAxNi42MjQ2IDE3Ljk4MzhDMTYuNTQ1MiAxNy44NDA0IDE2LjUgMTcuNjc1NSAxNi41IDE3LjVDMTYuNSAxNy4zMjUgMTYuNTQ1IDE3LjE2MDUgMTYuNjI0IDE3LjAxNzRaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2lkZWJhcih7IGNsYXNzTmFtZSB9OiB7IGNsYXNzTmFtZT86IHN0cmluZyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNOC44NTcxOSAzSDE1LjE0MjhDMTYuMjI2NiAyLjk5OTk5IDE3LjEwMDcgMi45OTk5OCAxNy44MDg2IDMuMDU3ODJDMTguNTM3NSAzLjExNzM3IDE5LjE3NzcgMy4yNDMxOCAxOS43NyAzLjU0NDk3QzIwLjcxMDggNC4wMjQzMyAyMS40NzU3IDQuNzg5MjQgMjEuOTU1IDUuNzMwMDVDMjIuMjU2OCA2LjMyMjM0IDIyLjM4MjYgNi45NjI1MyAyMi40NDIyIDcuNjkxMzhDMjIuNSA4LjM5OTI1IDIyLjUgOS4yNzMzOSAyMi41IDEwLjM1NzJWMTMuNjQyOEMyMi41IDE0LjcyNjYgMjIuNSAxNS42MDA4IDIyLjQ0MjIgMTYuMzA4NkMyMi4zODI2IDE3LjAzNzUgMjIuMjU2OCAxNy42Nzc3IDIxLjk1NSAxOC4yN0MyMS40NzU3IDE5LjIxMDggMjAuNzEwOCAxOS45NzU3IDE5Ljc3IDIwLjQ1NUMxOS4xNzc3IDIwLjc1NjggMTguNTM3NSAyMC44ODI2IDE3LjgwODYgMjAuOTQyMkMxNy4xMDA4IDIxIDE2LjIyNjYgMjEgMTUuMTQyOCAyMUg4Ljg1NzE3QzcuNzczMzkgMjEgNi44OTkyNSAyMSA2LjE5MTM4IDIwLjk0MjJDNS40NjI1MyAyMC44ODI2IDQuODIyMzQgMjAuNzU2OCA0LjIzMDA1IDIwLjQ1NUMzLjI4OTI0IDE5Ljk3NTcgMi41MjQzMyAxOS4yMTA4IDIuMDQ0OTcgMTguMjdDMS43NDMxOCAxNy42Nzc3IDEuNjE3MzcgMTcuMDM3NSAxLjU1NzgyIDE2LjMwODZDMS40OTk5OCAxNS42MDA3IDEuNDk5OTkgMTQuNzI2NiAxLjUgMTMuNjQyOFYxMC4zNTcyQzEuNDk5OTkgOS4yNzM0MSAxLjQ5OTk4IDguMzk5MjYgMS41NTc4MiA3LjY5MTM4QzEuNjE3MzcgNi45NjI1MyAxLjc0MzE4IDYuMzIyMzQgMi4wNDQ5NyA1LjczMDA1QzIuNTI0MzMgNC43ODkyNCAzLjI4OTI0IDQuMDI0MzMgNC4yMzAwNSAzLjU0NDk3QzQuODIyMzQgMy4yNDMxOCA1LjQ2MjUzIDMuMTE3MzcgNi4xOTEzOCAzLjA1NzgyQzYuODk5MjYgMi45OTk5OCA3Ljc3MzQxIDIuOTk5OTkgOC44NTcxOSAzWk02LjM1NDI0IDUuMDUxMThDNS43NDkwNyA1LjEwMDYyIDUuNDAxMzggNS4xOTI3OSA1LjEzODAzIDUuMzI2OThDNC41NzM1NCA1LjYxNDYgNC4xMTQ2IDYuMDczNTQgMy44MjY5OCA2LjYzODAzQzMuNjkyNzkgNi45MDEzOCAzLjYwMDYyIDcuMjQ5MDcgMy41NTExOCA3Ljg1NDI0QzMuNTAwNzggOC40NzEwOCAzLjUgOS4yNjMzOSAzLjUgMTAuNFYxMy42QzMuNSAxNC43MzY2IDMuNTAwNzggMTUuNTI4OSAzLjU1MTE4IDE2LjE0NThDMy42MDA2MiAxNi43NTA5IDMuNjkyNzkgMTcuMDk4NiAzLjgyNjk4IDE3LjM2MkM0LjExNDYgMTcuOTI2NSA0LjU3MzU0IDE4LjM4NTQgNS4xMzgwMyAxOC42NzNDNS40MDEzOCAxOC44MDcyIDUuNzQ5MDcgMTguODk5NCA2LjM1NDI0IDE4Ljk0ODhDNi45NzEwOCAxOC45OTkyIDcuNzYzMzkgMTkgOC45IDE5SDkuNVY1SDguOUM3Ljc2MzM5IDUgNi45NzEwOCA1LjAwMDc4IDYuMzU0MjQgNS4wNTExOFpNMTEuNSA1VjE5SDE1LjFDMTYuMjM2NiAxOSAxNy4wMjg5IDE4Ljk5OTIgMTcuNjQ1OCAxOC45NDg4QzE4LjI1MDkgMTguODk5NCAxOC41OTg2IDE4LjgwNzIgMTguODYyIDE4LjY3M0MxOS40MjY1IDE4LjM4NTQgMTkuODg1NCAxNy45MjY1IDIwLjE3MyAxNy4zNjJDMjAuMzA3MiAxNy4wOTg2IDIwLjM5OTQgMTYuNzUwOSAyMC40NDg4IDE2LjE0NThDMjAuNDk5MiAxNS41Mjg5IDIwLjUgMTQuNzM2NiAyMC41IDEzLjZWMTAuNEMyMC41IDkuMjYzMzkgMjAuNDk5MiA4LjQ3MTA4IDIwLjQ0ODggNy44NTQyNEMyMC4zOTk0IDcuMjQ5MDcgMjAuMzA3MiA2LjkwMTM4IDIwLjE3MyA2LjYzODAzQzE5Ljg4NTQgNi4wNzM1NCAxOS40MjY1IDUuNjE0NiAxOC44NjIgNS4zMjY5OEMxOC41OTg2IDUuMTkyNzkgMTguMjUwOSA1LjEwMDYyIDE3LjY0NTggNS4wNTExOEMxNy4wMjg5IDUuMDAwNzggMTYuMjM2NiA1IDE1LjEgNUgxMS41Wk01IDguNUM1IDcuOTQ3NzIgNS40NDc3MiA3LjUgNiA3LjVIN0M3LjU1MjI5IDcuNSA4IDcuOTQ3NzIgOCA4LjVDOCA5LjA1MjI5IDcuNTUyMjkgOS41IDcgOS41SDZDNS40NDc3MiA5LjUgNSA5LjA1MjI5IDUgOC41Wk01IDEyQzUgMTEuNDQ3NyA1LjQ0NzcyIDExIDYgMTFIN0M3LjU1MjI5IDExIDggMTEuNDQ3NyA4IDEyQzggMTIuNTUyMyA3LjU1MjI5IDEzIDcgMTNINkM1LjQ0NzcyIDEzIDUgMTIuNTUyMyA1IDEyWlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1vYmlsZVNpZGViYXIoeyBjbGFzc05hbWUgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTMgOEMzIDcuNDQ3NzIgMy40NDc3MiA3IDQgN0gyMEMyMC41NTIzIDcgMjEgNy40NDc3MiAyMSA4QzIxIDguNTUyMjggMjAuNTUyMyA5IDIwIDlINEMzLjQ0NzcyIDkgMyA4LjU1MjI4IDMgOFpNMyAxNkMzIDE1LjQ0NzcgMy40NDc3MiAxNSA0IDE1SDE0QzE0LjU1MjMgMTUgMTUgMTUuNDQ3NyAxNSAxNkMxNSAxNi41NTIzIDE0LjU1MjMgMTcgMTQgMTdINEMzLjQ0NzcyIDE3IDMgMTYuNTUyMyAzIDE2WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscy8nO1xuXG5pbnRlcmZhY2UgU3Bpbm5lclByb3BzIHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBzaXplPzogc3RyaW5nIHwgbnVtYmVyO1xuICBjb2xvcj86IHN0cmluZztcbiAgYmdPcGFjaXR5PzogbnVtYmVyO1xuICBzcGVlZD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU3Bpbm5lcih7XG4gIGNsYXNzTmFtZSA9ICdtLWF1dG8nLFxuICBzaXplID0gMjAsXG4gIGNvbG9yID0gJ2N1cnJlbnRDb2xvcicsXG4gIGJnT3BhY2l0eSA9IDAuMSxcbiAgc3BlZWQgPSAwLjc1LFxufTogU3Bpbm5lclByb3BzKSB7XG4gIGNvbnN0IGNzc1ZhcnMgPSB7XG4gICAgJy0tc3Bpbm5lci1zcGVlZCc6IGAke3NwZWVkfXNgLFxuICB9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXM7XG5cbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICBjbGFzc05hbWU9e2NuKGNsYXNzTmFtZSwgJ3NwaW5uZXInKX1cbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgdmlld0JveD1cIjAgMCA0MCA0MFwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHN0eWxlPXtjc3NWYXJzfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8ZGVmcz5cbiAgICAgICAgPHN0eWxlIHR5cGU9XCJ0ZXh0L2Nzc1wiPntgXG4gICAgICAgICAgLnNwaW5uZXIge1xuICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgICAgICBhbmltYXRpb246IHNwaW5uZXItcm90YXRlIHZhcigtLXNwaW5uZXItc3BlZWQpIGxpbmVhciBpbmZpbml0ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgQGtleWZyYW1lcyBzcGlubmVyLXJvdGF0ZSB7XG4gICAgICAgICAgICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cbiAgICAgICAgICB9XG4gICAgICAgIGB9PC9zdHlsZT5cbiAgICAgIDwvZGVmcz5cblxuICAgICAgPGNpcmNsZVxuICAgICAgICBjeD1cIjIwXCJcbiAgICAgICAgY3k9XCIyMFwiXG4gICAgICAgIHI9XCIxNC41XCJcbiAgICAgICAgcGF0aExlbmd0aD1cIjEwMFwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiNVwiXG4gICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgc3Ryb2tlPXtjb2xvcn1cbiAgICAgICAgc3Ryb2tlT3BhY2l0eT17YmdPcGFjaXR5fVxuICAgICAgLz5cbiAgICAgIDxjaXJjbGVcbiAgICAgICAgY3g9XCIyMFwiXG4gICAgICAgIGN5PVwiMjBcIlxuICAgICAgICByPVwiMTQuNVwiXG4gICAgICAgIHBhdGhMZW5ndGg9XCIxMDBcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjVcIlxuICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgIHN0cm9rZT17Y29sb3J9XG4gICAgICAgIHN0cm9rZURhc2hhcnJheT1cIjI1IDc1XCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMvJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ2xpcGJvYXJkKHsgY2xhc3NOYW1lID0gJ2ljb24tbWQtaGVhdnknLCBzaXplID0gJzFlbScgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lKX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNNyA1YTMgMyAwIDAgMSAzLTNoOWEzIDMgMCAwIDEgMyAzdjlhMyAzIDAgMCAxLTMgM2gtMnYyYTMgMyAwIDAgMS0zIDNINWEzIDMgMCAwIDEtMy0zdi05YTMgMyAwIDAgMSAzLTNoMnptMiAyaDVhMyAzIDAgMCAxIDMgM3Y1aDJhMSAxIDAgMCAwIDEtMVY1YTEgMSAwIDAgMC0xLTFoLTlhMSAxIDAgMCAwLTEgMXpNNSA5YTEgMSAwIDAgMC0xIDF2OWExIDEgMCAwIDAgMSAxaDlhMSAxIDAgMCAwIDEtMXYtOWExIDEgMCAwIDAtMS0xelwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ2hlY2tNYXJrKHsgY2xhc3NOYW1lID0gJycgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2gtNCB3LTQnLCBjbGFzc05hbWUpfVxuICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTE4LjA2MzMgNS42NzM3NUMxOC41MTk2IDUuOTg0ODcgMTguNjM3NCA2LjYwNyAxOC4zMjYyIDcuMDYzMzFMMTAuODI2MiAxOC4wNjMzQzEwLjY1ODUgMTguMzA5MyAxMC4zODk4IDE4LjQ2NzggMTAuMDkzNCAxOC40OTU2QzkuNzk2ODggMTguNTIzNCA5LjUwMzQ1IDE4LjQxNzYgOS4yOTI4OSAxOC4yMDcxTDQuNzkyODkgMTMuNzA3MUM0LjQwMjM3IDEzLjMxNjYgNC40MDIzNyAxMi42ODM0IDQuNzkyODkgMTIuMjkyOUM1LjE4MzQyIDExLjkwMjMgNS44MTY1OCAxMS45MDIzIDYuMjA3MTEgMTIuMjkyOUw5Ljg1MzY4IDE1LjkzOTRMMTYuNjczOCA1LjkzNjY0QzE2Ljk4NDkgNS40ODAzMyAxNy42MDcgNS4zNjI2MyAxOC4wNjMzIDUuNjczNzVaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscy8nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDcm9zc0ljb24oeyBjbGFzc05hbWUgPSAnJyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lLCAnaC00IHctNCcpfVxuICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8bGluZSB4MT1cIjE4XCIgeTE9XCI2XCIgeDI9XCI2XCIgeTI9XCIxOFwiIC8+XG4gICAgICA8bGluZSB4MT1cIjZcIiB5MT1cIjZcIiB4Mj1cIjE4XCIgeTI9XCIxOFwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMb2dPdXRJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMThcIlxuICAgICAgaGVpZ2h0PVwiMThcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT1cImljb24tbWRcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTExIDNIN0M1Ljg5NTQzIDMgNSAzLjg5NTQzIDUgNVYxOUM1IDIwLjEwNDYgNS44OTU0MyAyMSA3IDIxSDExXCJcbiAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgID48L3BhdGg+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTIwIDEySDExTTIwIDEyTDE2IDE2TTIwIDEyTDE2IDhcIlxuICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ3VzdG9tTWluaW1hbEljb24oe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICcnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB3aWR0aD17c2l6ZX1cbiAgICAgIGhlaWdodD17c2l6ZX1cbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBjbGFzc05hbWU9e2NuKCdsdWNpZGUgbHVjaWRlLWJvdCcsIGNsYXNzTmFtZSl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJNMTIgOFY0SDhcIiAvPlxuICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjEyXCIgeD1cIjRcIiB5PVwiOFwiIHJ4PVwiMlwiIC8+XG4gICAgICA8cGF0aCBkPVwiTTIgMTRoMlwiIC8+XG4gICAgICA8cGF0aCBkPVwiTTIwIDE0aDJcIiAvPlxuICAgICAgPHBhdGggZD1cIk0xNSAxM3YyXCIgLz5cbiAgICAgIDxwYXRoIGQ9XCJNOSAxM3YyXCIgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIExpZ2h0bmluZ0ljb24oeyBjbGFzc05hbWUgPSAnJyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMS41XCJcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgY2xhc3NOYW1lPXtjbignaC02IHctNicsIGNsYXNzTmFtZSl9XG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIGQ9XCJNMy43NSAxMy41bDEwLjUtMTEuMjVMMTIgMTAuNWg4LjI1TDkuNzUgMjEuNzUgMTIgMTMuNUgzLjc1elwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXR0YWNobWVudEljb24oeyBjbGFzc05hbWUgPSAnJyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNOSA3QzkgNC4yMzg1OCAxMS4yMzg2IDIgMTQgMkMxNi43NjE0IDIgMTkgNC4yMzg1OCAxOSA3VjE1QzE5IDE4Ljg2NiAxNS44NjYgMjIgMTIgMjJDOC4xMzQwMSAyMiA1IDE4Ljg2NiA1IDE1VjlDNSA4LjQ0NzcyIDUuNDQ3NzIgOCA2IDhDNi41NTIyOCA4IDcgOC40NDc3MiA3IDlWMTVDNyAxNy43NjE0IDkuMjM4NTggMjAgMTIgMjBDMTQuNzYxNCAyMCAxNyAxNy43NjE0IDE3IDE1VjdDMTcgNS4zNDMxNSAxNS42NTY5IDQgMTQgNEMxMi4zNDMxIDQgMTEgNS4zNDMxNSAxMSA3VjE1QzExIDE1LjU1MjMgMTEuNDQ3NyAxNiAxMiAxNkMxMi41NTIzIDE2IDEzIDE1LjU1MjMgMTMgMTVWOUMxMyA4LjQ0NzcyIDEzLjQ0NzcgOCAxNCA4QzE0LjU1MjMgOCAxNSA4LjQ0NzcyIDE1IDlWMTVDMTUgMTYuNjU2OSAxMy42NTY5IDE4IDEyIDE4QzEwLjM0MzEgMTggOSAxNi42NTY5IDkgMTVWN1pcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMvJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTWVzc2FnZXNTcXVhcmVkKHsgY2xhc3NOYW1lIH06IHsgY2xhc3NOYW1lPzogc3RyaW5nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lID8/ICcnLCAnbHVjaWRlIGx1Y2lkZS1tZXNzYWdlcy1zcXVhcmUnKX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGggZD1cIk0xNCA5YTIgMiAwIDAgMS0yIDJINmwtNCA0VjRjMC0xLjEuOS0yIDItMmg4YTIgMiAwIDAgMSAyIDJ2NVpcIiAvPlxuICAgICAgPHBhdGggZD1cIk0xOCA5aDJhMiAyIDAgMCAxIDIgMnYxMWwtNC00aC02YTIgMiAwIDAgMS0yLTJ2LTFcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU3RvcEdlbmVyYXRpbmdJY29uKHsgY2xhc3NOYW1lID0gJycgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2VXaWR0aD1cIjIuNVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2gtMyB3LTMgdGV4dC1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS00MDAnLCBjbGFzc05hbWUpfVxuICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cmVjdCB4PVwiM1wiIHk9XCIzXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgcng9XCIyXCIgcnk9XCIyXCI+PC9yZWN0PlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUmVnZW5lcmF0ZUljb24oeyBjbGFzc05hbWUgPSAnJywgc2l6ZSA9ICcxZW0nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGhlaWdodD17c2l6ZX1cbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBjbGFzc05hbWU9e2NuKCdpY29uLW1kLWhlYXZ5JywgY2xhc3NOYW1lKX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIGQ9XCJNMy4wNyAxMC44NzZDMy42MjMgNi40MzYgNy40MSAzIDEyIDNhOS4xNSA5LjE1IDAgMCAxIDYuMDEyIDIuMjU0VjRhMSAxIDAgMSAxIDIgMHY0YTEgMSAwIDAgMS0xIDFIMTVhMSAxIDAgMSAxIDAtMmgxLjk1N0E3LjE1IDcuMTUgMCAwIDAgMTIgNWE3IDcgMCAwIDAtNi45NDYgNi4xMjQgMSAxIDAgMSAxLTEuOTg0LS4yNDhtMTYuOTkyIDEuMTMyYTEgMSAwIDAgMSAuODY4IDEuMTE2QzIwLjM3NyAxNy41NjQgMTYuNTkgMjEgMTIgMjFhOS4xNSA5LjE1IDAgMCAxLTYtMi4yNDRWMjBhMSAxIDAgMSAxLTIgMHYtNGExIDEgMCAwIDEgMS0xaDRhMSAxIDAgMSAxIDAgMkg3LjA0M0E3LjE1IDcuMTUgMCAwIDAgMTIgMTlhNyA3IDAgMCAwIDYuOTQ2LTYuMTI0IDEgMSAwIDAgMSAxLjExNi0uODY4XCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb250aW51ZUljb24oeyBjbGFzc05hbWUgPSAnJyB9OiB7IGNsYXNzTmFtZT86IHN0cmluZyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2gtMyB3LTMgLXJvdGF0ZS0xODAnLCBjbGFzc05hbWUpfVxuICAgICAgaGVpZ2h0PVwiMTlcIlxuICAgICAgd2lkdGg9XCIxOVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBvbHlnb24gcG9pbnRzPVwiMTEgMTkgMiAxMiAxMSA1IDExIDE5XCIgLz5cbiAgICAgIDxwb2x5Z29uIHBvaW50cz1cIjIyIDE5IDEzIDEyIDIyIDUgMjIgMTlcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gR29vZ2xlSWNvbigpIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgNTEyIDUxMlwiXG4gICAgICBpZD1cImdvb2dsZVwiXG4gICAgICBjbGFzc05hbWU9XCJoLTUgdy01XCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cIiNmYmJiMDBcIlxuICAgICAgICBkPVwiTTExMy40NyAzMDkuNDA4IDk1LjY0OCAzNzUuOTRsLTY1LjEzOSAxLjM3OEMxMS4wNDIgMzQxLjIxMSAwIDI5OS45IDAgMjU2YzAtNDIuNDUxIDEwLjMyNC04Mi40ODMgMjguNjI0LTExNy43MzJoLjAxNEw4Ni42MyAxNDguOWwyNS40MDQgNTcuNjQ0Yy01LjMxNyAxNS41MDEtOC4yMTUgMzIuMTQxLTguMjE1IDQ5LjQ1Ni4wMDIgMTguNzkyIDMuNDA2IDM2Ljc5NyA5LjY1MSA1My40MDh6XCJcbiAgICAgID48L3BhdGg+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsPVwiIzUxOGVmOFwiXG4gICAgICAgIGQ9XCJNNTA3LjUyNyAyMDguMTc2QzUxMC40NjcgMjIzLjY2MiA1MTIgMjM5LjY1NSA1MTIgMjU2YzAgMTguMzI4LTEuOTI3IDM2LjIwNi01LjU5OCA1My40NTEtMTIuNDYyIDU4LjY4My00NS4wMjUgMTA5LjkyNS05MC4xMzQgMTQ2LjE4N2wtLjAxNC0uMDE0LTczLjA0NC0zLjcyNy0xMC4zMzgtNjQuNTM1YzI5LjkzMi0xNy41NTQgNTMuMzI0LTQ1LjAyNSA2NS42NDYtNzcuOTExaC0xMzYuODlWMjA4LjE3NmgyNDUuODk5elwiXG4gICAgICA+PC9wYXRoPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cIiMyOGI0NDZcIlxuICAgICAgICBkPVwibTQxNi4yNTMgNDU1LjYyNC4wMTQuMDE0QzM3Mi4zOTYgNDkwLjkwMSAzMTYuNjY2IDUxMiAyNTYgNTEyYy05Ny40OTEgMC0xODIuMjUyLTU0LjQ5MS0yMjUuNDkxLTEzNC42ODFsODIuOTYxLTY3LjkxYzIxLjYxOSA1Ny42OTggNzcuMjc4IDk4Ljc3MSAxNDIuNTMgOTguNzcxIDI4LjA0NyAwIDU0LjMyMy03LjU4MiA3Ni44Ny0yMC44MThsODMuMzgzIDY4LjI2MnpcIlxuICAgICAgPjwvcGF0aD5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGw9XCIjZjE0MzM2XCJcbiAgICAgICAgZD1cIm00MTkuNDA0IDU4LjkzNi04Mi45MzMgNjcuODk2QzMxMy4xMzYgMTEyLjI0NiAyODUuNTUyIDEwMy44MiAyNTYgMTAzLjgyYy02Ni43MjkgMC0xMjMuNDI5IDQyLjk1Ny0xNDMuOTY1IDEwMi43MjRsLTgzLjM5Ny02OC4yNzZoLS4wMTRDNzEuMjMgNTYuMTIzIDE1Ny4wNiAwIDI1NiAwYzYyLjExNSAwIDExOS4wNjggMjIuMTI2IDE2My40MDQgNTguOTM2elwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRmFjZWJvb2tJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmcgdmlld0JveD1cIjAgMCA0MCA0MFwiIHdpZHRoPVwiMjVcIiBoZWlnaHQ9XCIyNVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgPGxpbmVhckdyYWRpZW50XG4gICAgICAgIGlkPVwiYVwiXG4gICAgICAgIHgxPXstMjc3LjM3NX1cbiAgICAgICAgeDI9ey0yNzcuMzc1fVxuICAgICAgICB5MT17NDA2LjYwMn1cbiAgICAgICAgeTI9ezQwNy41NzN9XG4gICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDQwIDAgMCAtMzkuNzc3OCAxMTExNS4wMDEgMTYyMTIuMzM0KVwiXG4gICAgICAgIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiXG4gICAgICA+XG4gICAgICAgIDxzdG9wIG9mZnNldD17MH0gc3RvcENvbG9yPVwiIzAwNjJlMFwiIC8+XG4gICAgICAgIDxzdG9wIG9mZnNldD17MX0gc3RvcENvbG9yPVwiIzE5YWZmZlwiIC8+XG4gICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cInVybCgjYSlcIlxuICAgICAgICBkPVwiTTE2LjcgMzkuOEM3LjIgMzguMSAwIDI5LjkgMCAyMCAwIDkgOSAwIDIwIDBzMjAgOSAyMCAyMGMwIDkuOS03LjIgMTguMS0xNi43IDE5LjhsLTEuMS0uOWgtNC40bC0xLjEuOXpcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGw9XCIjZmZmXCJcbiAgICAgICAgZD1cIm0yNy44IDI1LjYuOS01LjZoLTUuM3YtMy45YzAtMS42LjYtMi44IDMtMi44SDI5VjguMmMtMS40LS4yLTMtLjQtNC40LS40LTQuNiAwLTcuOCAyLjgtNy44IDcuOFYyMGgtNXY1LjZoNXYxNC4xYzEuMS4yIDIuMi4zIDMuMy4zIDEuMSAwIDIuMi0uMSAzLjMtLjNWMjUuNmg0LjR6XCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBPcGVuSURJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgdmlld0JveD1cIjAgMCA0NDggNTEyXCJcbiAgICAgIGlkPVwib3BlbmlkXCJcbiAgICAgIGNsYXNzTmFtZT1cImgtNSB3LTVcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgZD1cIk0yNzEuNSA0MzJsLTY4IDMyQzg4LjUgNDUzLjcgMCAzOTIuNSAwIDMxOC4yYzAtNzEuNSA4Mi41LTEzMSAxOTEuNy0xNDQuM3Y0M2MtNzEuNSAxMi41LTEyNCA1My0xMjQgMTAxLjMgMCA1MSA1OC41IDkzLjMgMTM1LjcgMTAzdi0zNDBsNjgtMzMuMnYzODR6TTQ0OCAyOTFsLTEzMS4zLTI4LjUgMzYuOC0yMC43Yy0xOS41LTExLjUtNDMuNS0yMC03MC0yNC44di00M2M0Ni4yIDUuNSA4Ny43IDE5LjUgMTIwLjMgMzkuM2wzNS0xOS44TDQ0OCAyOTF6XCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBHaXRodWJJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjVcIiBoZWlnaHQ9XCIyNVwiIGZpbGw9XCJub25lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgZD1cIk0xMiAwYTEyIDEyIDAgMCAwLTMuODQgMjMuMzk5Yy42MDguMTEyLjgzMi0uMjU2LjgzMi0uNTc2di0yLjAxNWMtMy4zOTUuNzM2LTQuMTE1LTEuNjMyLTQuMTE1LTEuNjMyYTMuMjQxIDMuMjQxIDAgMCAwLTEuMzU5LTEuNzkyYy0xLjEwNC0uNzM2LjA2NC0uNzM2LjA2NC0uNzM2YTIuNTY2IDIuNTY2IDAgMCAxIDEuODI0IDEuMjE2YTIuNjM4IDIuNjM4IDAgMCAwIDMuNjE2IDEuMDI0YTIuNjA3IDIuNjA3IDAgMCAxIC43NjgtMS42Yy0yLjY4OC0uMzItNS41MDQtMS4zNDQtNS41MDQtNS45ODRhNC42NzcgNC42NzcgMCAwIDEgMS4yMTYtMy4xNjhhNC4zODMgNC4zODMgMCAwIDEgLjEyOC0zLjEzNnMxLjAyNC0uMzIgMy4zNiAxLjIxNmExMS42NiAxMS42NiAwIDAgMSA2LjExMiAwYzIuMzM2LTEuNTM2IDMuMzYtMS4yMTYgMy4zNi0xLjIxNmE0LjM1NCA0LjM1NCAwIDAgMSAuMTI4IDMuMTM2YTQuNjI4IDQuNjI4IDAgMCAxIDEuMjE2IDMuMTY4YzAgNC42NzItMi44NDggNS42NjQtNS41MzYgNS45NTJhMi44ODEgMi44ODEgMCAwIDEgLjgzMiAyLjI0djMuMzZjMCAuMzIuMjI0LjY3Mi44MzIuNTc2QTEyIDEyIDAgMCAwIDEyIDB6XCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEaXNjb3JkSWNvbigpIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMTAyNCAxMDI0XCJcbiAgICAgIGlkPVwiZGlzY29yZFwiXG4gICAgICBjbGFzc05hbWU9XCJoLTYgdy02XCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPGNpcmNsZSBjeD1cIjUxMlwiIGN5PVwiNTEyXCIgcj1cIjUxMlwiIGZpbGw9XCIjNTg2NWYyXCIgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGw9XCIjZmZmXCJcbiAgICAgICAgZD1cIk02ODkuNDMgMzQ5YTQyMi4yMSA0MjIuMjEgMCAwIDAtMTA0LjIyLTMyLjMyIDEuNTggMS41OCAwIDAgMC0xLjY4Ljc5IDI5NC4xMSAyOTQuMTEgMCAwIDAtMTMgMjYuNjYgMzg5Ljc4IDM4OS43OCAwIDAgMC0xMTcuMDUgMCAyNjkuNzUgMjY5Ljc1IDAgMCAwLTEzLjE4LTI2LjY2IDEuNjQgMS42NCAwIDAgMC0xLjY4LS43OUE0MjEgNDIxIDAgMCAwIDMzNC40NCAzNDlhMS40OSAxLjQ5IDAgMCAwLS42OS41OWMtNjYuMzcgOTkuMTctODQuNTUgMTk1LjktNzUuNjMgMjkxLjQxYTEuNzYgMS43NiAwIDAgMCAuNjcgMS4yIDQyNC41OCA0MjQuNTggMCAwIDAgMTI3Ljg1IDY0LjYzIDEuNjYgMS42NiAwIDAgMCAxLjgtLjU5IDMwMy40NSAzMDMuNDUgMCAwIDAgMjYuMTUtNDIuNTQgMS42MiAxLjYyIDAgMCAwLS44OS0yLjI1IDI3OS42IDI3OS42IDAgMCAxLTM5Ljk0LTE5IDEuNjQgMS42NCAwIDAgMS0uMTYtMi43MmMyLjY4LTIgNS4zNy00LjEgNy45My02LjIyYTEuNTggMS41OCAwIDAgMSAxLjY1LS4yMmM4My43OSAzOC4yNiAxNzQuNTEgMzguMjYgMjU3LjMxIDBhMS41OCAxLjU4IDAgMCAxIDEuNjguMmMyLjU2IDIuMTEgNS4yNSA0LjIzIDggNi4yNGExLjY0IDEuNjQgMCAwIDEtLjE0IDIuNzIgMjYyLjM3IDI2Mi4zNyAwIDAgMS00MCAxOSAxLjYzIDEuNjMgMCAwIDAtLjg3IDIuMjggMzQwLjcyIDM0MC43MiAwIDAgMCAyNi4xMyA0Mi41MiAxLjYyIDEuNjIgMCAwIDAgMS44LjYxIDQyMy4xNyA0MjMuMTcgMCAwIDAgMTI4LTY0LjYzIDEuNjQgMS42NCAwIDAgMCAuNjctMS4xOGMxMC42OC0xMTAuNDQtMTcuODgtMjA2LjM4LTc1LjctMjkxLjQyYTEuMyAxLjMgMCAwIDAtLjYzLS42M3pNNDI3LjA5IDU4Mi44NWMtMjUuMjMgMC00Ni0yMy4xNi00Ni01MS42czIwLjM4LTUxLjYgNDYtNTEuNmMyNS44MyAwIDQ2LjQyIDIzLjM2IDQ2IDUxLjYuMDIgMjguNDQtMjAuMzcgNTEuNi00NiA1MS42em0xNzAuMTMgMGMtMjUuMjMgMC00Ni0yMy4xNi00Ni01MS42czIwLjM4LTUxLjYgNDYtNTEuNmMyNS44MyAwIDQ2LjQyIDIzLjM2IDQ2IDUxLjYuMDEgMjguNDQtMjAuMTcgNTEuNi00NiA1MS42elwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXBwbGVJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgeG1sU3BhY2U9XCJwcmVzZXJ2ZVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDgxNCAxMDAwXCJcbiAgICAgIGlkPVwiYXBwbGVcIlxuICAgICAgY2xhc3NOYW1lPVwiaC02IHctNlwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNNzg4LjEgMzQwLjljLTUuOCA0LjUtMTA4LjIgNjIuMi0xMDguMiAxOTAuNSAwIDE0OC40IDEzMC4zIDIwMC45IDEzNC4yIDIwMi4yLS42IDMuMi0yMC43IDcxLjktNjguNyAxNDEuOS00Mi44IDYxLjYtODcuNSAxMjMuMS0xNTUuNSAxMjMuMXMtODUuNS0zOS41LTE2NC0zOS41Yy03Ni41IDAtMTAzLjcgNDAuOC0xNjUuOSA0MC44cy0xMDUuNi01Ny0xNTUuNS0xMjdDNDYuNyA3OTAuNyAwIDY2MyAwIDU0MS44YzAtMTk0LjQgMTI2LjQtMjk3LjUgMjUwLjgtMjk3LjUgNjYuMSAwIDEyMS4yIDQzLjQgMTYyLjcgNDMuNCAzOS41IDAgMTAxLjEtNDYgMTc2LjMtNDYgMjguNSAwIDEzMC45IDIuNiAxOTguMyA5OS4yem0tMjM0LTE4MS41YzMxLjEtMzYuOSA1My4xLTg4LjEgNTMuMS0xMzkuMyAwLTcuMS0uNi0xNC4zLTEuOS0yMC4xLTUwLjYgMS45LTExMC44IDMzLjctMTQ3LjEgNzUuOC0yOC41IDMyLjQtNTUuMSA4My42LTU1LjEgMTM1LjUgMCA3LjggMS4zIDE1LjYgMS45IDE4LjEgMy4yLjYgOC40IDEuMyAxMy42IDEuMyA0NS40IDAgMTAyLjUtMzAuNCAxMzUuNS03MS4zelwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsIi8qKlxuICogU2FtbEljb24gQ29tcG9uZW50XG4gKlxuICogU291cmNlOiBTVkcgUmVwb1xuICogVVJMOiBodHRwczovL3d3dy5zdmdyZXBvLmNvbS9zdmcvNDQ4NTkwL3NhbWxcbiAqICAtIENPTExFQ1RJT046IEhhc2hpY29ycCBMaW5lIEludGVyZmFjZSBJY29uc1xuICogIC0gTElDRU5TRTogTUxQIExpY2Vuc2VcbiAqICAtIEFVVEhPUjogSGFzaGlDb3JwXG4gKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNhbWxJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiODAwcHhcIlxuICAgICAgaGVpZ2h0PVwiODAwcHhcIlxuICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIGNsYXNzTmFtZT1cImgtNSB3LTVcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8ZyBmaWxsPVwiIzAwMDAwMFwiPlxuICAgICAgICA8cGF0aCBkPVwiTTcuNzU0IDJsLjQ2My40MWMuMzQzLjMwNC42ODcuNjA3IDEuMDI2LjkxNUMxMS40NCA1LjMyIDEzLjMgNy41NjUgMTQuNyAxMC4xNDljLjA3Mi4xMzIuMTM3LjI2OC4yMDIuNDAzbC4wOTguMjAzLS4xMDguMDU3LS4wODEtLjExNS0uMjEtLjI5OS0uMTQ3LS4yMTRjLTEuMDE5LTEuNDc5LTIuMDQtMi45Ni0zLjQ0Mi00LjE0NWE2LjU2MyA2LjU2MyAwIDAwLTEuMzkzLS45MDRjLTEuMDE0LS40ODUtMS45MTYtLjI5MS0yLjY5LjUwNS0uNzM2Ljc1Ny0xLjExOCAxLjY5Ny0xLjQ2MyAyLjY1My0uMDQ1LjEyMy0uMDkyLjI0NS0uMTM5LjM2N2wtLjA4Mi4yMTUtLjE3Mi0uMDU1Yy4xLS4zNDguMTkyLS42OTguMjg0LTEuMDQ5LjIxLS43OTUuNDItMS41OS43MTItMi4zNTYuMzEtLjgxNi43MDItMS42MDMgMS4wOTMtMi4zOS4xNjktLjM0MS4zMzgtLjY4Mi41LTEuMDI1aC4wOTJ6XCIgLz5cblxuICAgICAgICA8cGF0aCBkPVwiTTguNDQ4IDExLjgyMmMtMS42MjYuNzctNS41NiAxLjU2NC03LjQyNiAxLjM2Qy43MTcgMTEuNTc2IDMuNzEgNC4wNSA1LjE4IDIuOTFsLS4wOTUuMjE4YTQuNjM4IDQuNjM4IDAgMDEtLjEzOC4zMDNsLS4wNjYuMTI5Yy0uNzYgMS40NjItMS41MTkgMi45MjYtMS45MDggNC41M2E3LjQ4MiA3LjQ4MiAwIDAwLS4yMjggMS42ODljLS4wMSAxLjM0LjgyNCAyLjI1MiAyLjIxNyAyLjMwOS42Ny4wMjcgMS4zNDctLjA0MyAyLjAyMy0uMTE0LjI5NC0uMDMuNTg3LS4wNjEuODgtLjA4NC4xMDgtLjAwOC4yMTQtLjAyMS4zNTItLjAzOWwuMjMxLS4wMjh6XCIgLz5cblxuICAgICAgICA8cGF0aCBkPVwiTTMuODI1IDE0Ljc4MWMtLjQ0NS4wMzQtLjg5LjA2OC0xLjMzMy4xMDggNC4wOTcuMzkgOC4wMy0uMjc3IDExLjkxLTEuNjQ0LTEuMjY1LTIuMjMtMi45Ny0zLjk5MS00Ljk1Mi01LjUyMi4wMjYuMDk4LjA4NC4xNjkuMTQxLjIzOWwuMDQ4LjA2Yy4xNy4yMjYuMzQ4LjQ0OC41MjcuNjcuNDA5LjUwOS44MTggMS4wMTggMS4xMjYgMS41NzguNzc4IDEuNDIuMzU2IDIuNjQ4LTEuMTY4IDMuMjk2LTEuMDAyLjQyNy0yLjA5Ny43MTgtMy4xOC44OTItMS4wMy4xNjQtMi4wNzUuMjQzLTMuMTE5LjMyM3pcIiAvPlxuICAgICAgPC9nPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFudGhyb3BpY0ljb24oe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICcnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgdmlld0JveD1cIjAgMCAyNCAxNlwiXG4gICAgICBvdmVyZmxvdz1cInZpc2libGVcIlxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICBjbGFzc05hbWU9e2NuKCdmaWxsLWN1cnJlbnQgdGV4dC1ibGFjaycsIGNsYXNzTmFtZSl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxnXG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxM3B4KSByb3RhdGVaKDBkZWcpJyxcbiAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW46ICc0Ljc3NXB4IDcuNzM1MDFweCcsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgc2hhcGVSZW5kZXJpbmc9XCJnZW9tZXRyaWNQcmVjaXNpb25cIlxuICAgICAgICAgIC8vIGZpbGw9XCJyZ2IoMjQsMjQsMjQpXCJcbiAgICAgICAgICBmaWxsT3BhY2l0eT1cIjFcIlxuICAgICAgICAgIGQ9XCIgTTAsMCBDMCwwIDYuMTY3NzA5MzUwNTg1OTM3NSwxNS40NzAwMjIyMDE1MzgwODYgNi4xNjc3MDkzNTA1ODU5Mzc1LDE1LjQ3MDAyMjIwMTUzODA4NiBDNi4xNjc3MDkzNTA1ODU5Mzc1LDE1LjQ3MDAyMjIwMTUzODA4NiA5LjU1MDAwNDAwNTQzMjEyOSwxNS40NzAwMjIyMDE1MzgwODYgOS41NTAwMDQwMDU0MzIxMjksMTUuNDcwMDIyMjAxNTM4MDg2IEM5LjU1MDAwNDAwNTQzMjEyOSwxNS40NzAwMjIyMDE1MzgwODYgMy4zODIyOTQxNzgwMDkwMzMsMCAzLjM4MjI5NDE3ODAwOTAzMywwIEMzLjM4MjI5NDE3ODAwOTAzMywwIDAsMCAwLDAgQzAsMCAwLDAgMCwwelwiXG4gICAgICAgID48L3BhdGg+XG4gICAgICA8L2c+XG4gICAgICA8Z1xuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIHRyYW5zZm9ybTogJ25vbmUnLFxuICAgICAgICAgIHRyYW5zZm9ybU9yaWdpbjogJzcuOTM1cHggNy43MzUwMXB4JyxcbiAgICAgICAgfX1cbiAgICAgICAgb3BhY2l0eT1cIjFcIlxuICAgICAgPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIHNoYXBlUmVuZGVyaW5nPVwiZ2VvbWV0cmljUHJlY2lzaW9uXCJcbiAgICAgICAgICAvLyBmaWxsPVwicmdiKDI0LDI0LDI0KVwiXG4gICAgICAgICAgZmlsbE9wYWNpdHk9XCIxXCJcbiAgICAgICAgICBkPVwiIE01LjgyNDYwNTQ2NDkzNTMwMyw5LjM0ODI5NjE2NTQ2NjMwOSBDNS44MjQ2MDU0NjQ5MzUzMDMsOS4zNDgyOTYxNjU0NjYzMDkgNy45MzUwMDI4MDM4MDI0OSwzLjkxMTY5NDI4ODI1Mzc4NCA3LjkzNTAwMjgwMzgwMjQ5LDMuOTExNjk0Mjg4MjUzNzg0IEM3LjkzNTAwMjgwMzgwMjQ5LDMuOTExNjk0Mjg4MjUzNzg0IDEwLjA0NTQwMDYxOTUwNjgzNiw5LjM0ODI5NjE2NTQ2NjMwOSAxMC4wNDU0MDA2MTk1MDY4MzYsOS4zNDgyOTYxNjU0NjYzMDkgQzEwLjA0NTQwMDYxOTUwNjgzNiw5LjM0ODI5NjE2NTQ2NjMwOSA1LjgyNDYwNTQ2NDkzNTMwMyw5LjM0ODI5NjE2NTQ2NjMwOSA1LjgyNDYwNTQ2NDkzNTMwMyw5LjM0ODI5NjE2NTQ2NjMwOSBDNS44MjQ2MDU0NjQ5MzUzMDMsOS4zNDgyOTYxNjU0NjYzMDkgNS44MjQ2MDU0NjQ5MzUzMDMsOS4zNDgyOTYxNjU0NjYzMDkgNS44MjQ2MDU0NjQ5MzUzMDMsOS4zNDgyOTYxNjU0NjYzMDl6IE02LjE2Njc1NTE5OTQzMjM3MywwIEM2LjE2Njc1NTE5OTQzMjM3MywwIDAsMTUuNDcwMDIyMjAxNTM4MDg2IDAsMTUuNDcwMDIyMjAxNTM4MDg2IEMwLDE1LjQ3MDAyMjIwMTUzODA4NiAzLjQ0ODA3NzIwMTg0MzI2MTcsMTUuNDcwMDIyMjAxNTM4MDg2IDMuNDQ4MDc3MjAxODQzMjYxNywxNS40NzAwMjIyMDE1MzgwODYgQzMuNDQ4MDc3MjAxODQzMjYxNywxNS40NzAwMjIyMDE1MzgwODYgNC43MDkyNzg1ODM1MjY2MTEsMTIuMjIxMzAwMTI1MTIyMDcgNC43MDkyNzg1ODM1MjY2MTEsMTIuMjIxMzAwMTI1MTIyMDcgQzQuNzA5Mjc4NTgzNTI2NjExLDEyLjIyMTMwMDEyNTEyMjA3IDExLjE2MDkzNjM1NTU5MDgyLDEyLjIyMTMwMDEyNTEyMjA3IDExLjE2MDkzNjM1NTU5MDgyLDEyLjIyMTMwMDEyNTEyMjA3IEMxMS4xNjA5MzYzNTU1OTA4MiwxMi4yMjEzMDAxMjUxMjIwNyAxMi40MjE5Mjg0MDU3NjE3MTksMTUuNDcwMDIyMjAxNTM4MDg2IDEyLjQyMTkyODQwNTc2MTcxOSwxNS40NzAwMjIyMDE1MzgwODYgQzEyLjQyMTkyODQwNTc2MTcxOSwxNS40NzAwMjIyMDE1MzgwODYgMTUuODcwMDA1NjA3NjA0OTgsMTUuNDcwMDIyMjAxNTM4MDg2IDE1Ljg3MDAwNTYwNzYwNDk4LDE1LjQ3MDAyMjIwMTUzODA4NiBDMTUuODcwMDA1NjA3NjA0OTgsMTUuNDcwMDIyMjAxNTM4MDg2IDkuNzAzMjUwODg1MDA5NzY2LDAgOS43MDMyNTA4ODUwMDk3NjYsMCBDOS43MDMyNTA4ODUwMDk3NjYsMCA2LjE2Njc1NTE5OTQzMjM3MywwIDYuMTY2NzU1MTk5NDMyMzczLDAgQzYuMTY2NzU1MTk5NDMyMzczLDAgNi4xNjY3NTUxOTk0MzIzNzMsMCA2LjE2Njc1NTE5OTQzMjM3MywwelwiXG4gICAgICAgID48L3BhdGg+XG4gICAgICA8L2c+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTZW5kSWNvbih7IHNpemUgPSAyNCwgY2xhc3NOYW1lID0gJycgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgdmlld0JveD17JzAgMCAyNCAyNCd9XG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBjbGFzc05hbWU9e2NuKCd0ZXh0LXdoaXRlIGRhcms6dGV4dC1ibGFjaycsIGNsYXNzTmFtZSl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNNyAxMUwxMiA2TDE3IDExTTEyIDE4VjdcIlxuICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMaW5rSWNvbigpIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB3aWR0aD1cIjE4XCJcbiAgICAgIGhlaWdodD1cIjE4XCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBjbGFzc05hbWU9XCJpY29uLW1kXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgY2xpcFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgZD1cIk0xNSA1QzE0LjQ0NzcgNSAxNCA0LjU1MjI4IDE0IDRDMTQgMy40NDc3MiAxNC40NDc3IDMgMTUgM0gyMEMyMC41NTIzIDMgMjEgMy40NDc3MiAyMSA0VjlDMjEgOS41NTIyOCAyMC41NTIzIDEwIDIwIDEwQzE5LjQ0NzcgMTAgMTkgOS41NTIyOCAxOSA5VjYuNDE0MjFMMTMuNzA3MSAxMS43MDcxQzEzLjMxNjYgMTIuMDk3NiAxMi42ODM0IDEyLjA5NzYgMTIuMjkyOSAxMS43MDcxQzExLjkwMjQgMTEuMzE2NiAxMS45MDI0IDEwLjY4MzQgMTIuMjkyOSAxMC4yOTI5TDE3LjU4NTggNUgxNVpNNCA3QzQgNS4zNDMxNSA1LjM0MzE1IDQgNyA0SDEwQzEwLjU1MjMgNCAxMSA0LjQ0NzcyIDExIDVDMTEgNS41NTIyOCAxMC41NTIzIDYgMTAgNkg3QzYuNDQ3NzIgNiA2IDYuNDQ3NzIgNiA3VjE3QzYgMTcuNTUyMyA2LjQ0NzcyIDE4IDcgMThIMTdDMTcuNTUyMyAxOCAxOCAxNy41NTIzIDE4IDE3VjE0QzE4IDEzLjQ0NzcgMTguNDQ3NyAxMyAxOSAxM0MxOS41NTIzIDEzIDIwIDEzLjQ0NzcgMjAgMTRWMTdDMjAgMTguNjU2OSAxOC42NTY5IDIwIDE3IDIwSDdDNS4zNDMxNSAyMCA0IDE4LjY1NjkgNCAxN1Y3WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERvdHNJY29uKHtcbiAgY2xhc3NOYW1lID0gJ2gtNCB3LTQgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXktNTAwJyxcbn06IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIGhlaWdodD1cIjFlbVwiXG4gICAgICB3aWR0aD1cIjFlbVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxXCIgLz5cbiAgICAgIDxjaXJjbGUgY3g9XCIxOVwiIGN5PVwiMTJcIiByPVwiMVwiIC8+XG4gICAgICA8Y2lyY2xlIGN4PVwiNVwiIGN5PVwiMTJcIiByPVwiMVwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbnRlcmZhY2UgR2Vhckljb25Qcm9wcyB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn1cblxuY29uc3QgR2Vhckljb246IFJlYWN0LkZDPEdlYXJJY29uUHJvcHM+ID0gKHsgY2xhc3NOYW1lID0gJycgfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgd2lkdGg9XCIxN1wiXG4gICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTExLjY0MzkgM0MxMC45MzUyIDMgMTAuMjc5NCAzLjM3NTA4IDkuOTIwMDIgMy45ODU5Nkw5LjQ5NjQ0IDQuNzA2MDVDOC45NjE4NCA1LjYxNDg3IDcuOTg5MzggNi4xNzYzMiA2LjkzNTAxIDYuMTg0ODlMNi4wOTk2NyA2LjE5MTY4QzUuMzkwOTYgNi4xOTc0NCA0LjczODIzIDYuNTc3ODMgNC4zODM4NiA3LjE5MTYxTDQuMDI3NzYgNy44MDg0MUMzLjY3MzM5IDguNDIyMTkgMy42NzAzMiA5LjE3NzY3IDQuMDE5NjkgOS43OTQzTDQuNDMxNTEgMTAuNTIxMkM0Ljk1MTI3IDExLjQzODYgNC45NTEyNyAxMi41NjE1IDQuNDMxNTEgMTMuNDc4OEw0LjAxOTY5IDE0LjIwNTdDMy42NzAzMiAxNC44MjI0IDMuNjczMzkgMTUuNTc3OCA0LjAyNzc2IDE2LjE5MTZMNC4zODM4NiAxNi44MDg0QzQuNzM4MjMgMTcuNDIyMiA1LjM5MDk2IDE3LjgwMjYgNi4wOTk2NiAxNy44MDgzTDYuOTM1MDIgMTcuODE1MUM3Ljk4OTM5IDE3LjgyMzcgOC45NjE4NSAxOC4zODUxIDkuNDk2NDUgMTkuMjk0TDkuOTIwMDIgMjAuMDE0QzEwLjI3OTQgMjAuNjI0OSAxMC45MzUyIDIxIDExLjY0MzkgMjFIMTIuMzU2MUMxMy4wNjQ4IDIxIDEzLjcyMDYgMjAuNjI0OSAxNC4wOCAyMC4wMTRMMTQuNTAzNSAxOS4yOTRDMTUuMDM4MSAxOC4zODUxIDE2LjAxMDYgMTcuODIzNyAxNy4wNjUgMTcuODE1MUwxNy45MDA0IDE3LjgwODNDMTguNjA5MSAxNy44MDI2IDE5LjI2MTggMTcuNDIyMiAxOS42MTYyIDE2LjgwODRMMTkuOTcyMyAxNi4xOTE2QzIwLjMyNjcgMTUuNTc3OCAyMC4zMjk4IDE0LjgyMjQgMTkuOTgwNCAxNC4yMDU3TDE5LjU2ODYgMTMuNDc4OEMxOS4wNDg4IDEyLjU2MTUgMTkuMDQ4OCAxMS40Mzg2IDE5LjU2ODYgMTAuNTIxMkwxOS45ODA0IDkuNzk0M0MyMC4zMjk4IDkuMTc3NjcgMjAuMzI2NyA4LjQyMjE5IDE5Ljk3MjMgNy44MDg0MUwxOS42MTYyIDcuMTkxNjFDMTkuMjYxOCA2LjU3NzgzIDE4LjYwOTEgNi4xOTc0NCAxNy45MDA0IDYuMTkxNjhMMTcuMDY1IDYuMTg0ODlDMTYuMDEwNiA2LjE3NjMyIDE1LjAzODIgNS42MTQ4NyAxNC41MDM2IDQuNzA2MDVMMTQuMDggMy45ODU5NkMxMy43MjA2IDMuMzc1MDggMTMuMDY0OCAzIDEyLjM1NjEgM0gxMS42NDM5WlwiXG4gICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgPjwvcGF0aD5cbiAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMi41XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIyXCI+PC9jaXJjbGU+XG4gICAgPC9zdmc+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBHZWFySWNvbjtcbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBpbkljb24oeyB1bnBpbiA9IGZhbHNlIH06IHsgdW5waW4/OiBib29sZWFuIH0pIHtcbiAgaWYgKHVucGluKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxzdmdcbiAgICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICAgIGhlaWdodD1cIjI0XCJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIGNsYXNzTmFtZT1cImljb24tc21cIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTUgMTVWMTcuNTU4NUMxNSAxOC40MTkzIDE0LjQ0OTEgMTkuMTgzNiAxMy42MzI1IDE5LjQ1NThMMTMuMTcyNiAxOS42MDkxQzEyLjQ1NCAxOS44NDg3IDExLjY2MTYgMTkuNjYxNiAxMS4xMjYgMTkuMTI2TDQuODc0MDMgMTIuODc0QzQuMzM4MzcgMTIuMzM4NCA0LjE1MTMyIDExLjU0NiA0LjM5MDg4IDEwLjgyNzRMNC41NDQxNSAxMC4zNjc1QzQuODE2MzggOS41NTA4NiA1LjU4MDY2IDkgNi40NDE1MiA5SDlNMTIgNi4yTDEzLjYyNzcgMy45MjExNkMxNC4zNDYxIDIuOTE1NDkgMTUuNzk1NSAyLjc5NTUyIDE2LjY2OTQgMy42Njk0MkwyMC4zMzA2IDcuMzMwNThDMjEuMjA0NSA4LjIwNDQ4IDIxLjA4NDUgOS42NTM5MiAyMC4wNzg4IDEwLjM3MjNMMTggMTEuODU3MVwiXG4gICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZD1cIk04IDE2TDMgMjFcIlxuICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNNCA0TDIwIDIwXCJcbiAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgICk7XG4gIH1cbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICBjbGFzc05hbWU9XCJpY29uLXNtXCJcbiAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTE3LjQ4NDUgMi44Nzk4QzE2LjE3NzMgMS41NzI1OCAxNC4wMTA3IDEuNzQ1MzQgMTIuOTI3MiAzLjI0MzE4TDkuNzk3NzIgNy41NjkyM0M5LjYwOTQ1IDcuODI5NDggOS4zMDc3NSA3Ljk4MzYgOC45ODY1NCA3Ljk4MzZINi40NDY3M0MzLjc0MDYxIDcuOTgzNiAyLjI3NDE0IDExLjY3NTkgNC4xNjk0OCAxMy41NzEzTDYuNTkxMTYgMTUuOTkzTDIuMjkzMjQgMjAuMjkwOUMxLjkwMjI1IDIwLjY4MTkgMS45MDIyNSAyMS4zMTU4IDIuMjkzMjQgMjEuNzA2OEMyLjY4NDIyIDIyLjA5NzcgMy4zMTgxMiAyMi4wOTc3IDMuNzA5MTEgMjEuNzA2OEw4LjAwNzAzIDE3LjQwODhMMTAuNDI4NyAxOS44MzA1QzEyLjMyNDEgMjEuNzI1OSAxNi4wMTY0IDIwLjI1OTQgMTYuMDE2NCAxNy41NTMzVjE1LjAxMzVDMTYuMDE2NCAxNC42OTIzIDE2LjE3MDUgMTQuMzkwNiAxNi40MzA4IDE0LjIwMjNMMjAuNzU2OCAxMS4wNzI4QzIyLjI1NDcgOS45ODkyNiAyMi40Mjc0IDcuODIyNyAyMS4xMjAyIDYuNTE1NDlMMTcuNDg0NSAyLjg3OThaTTExLjg0NDYgMTguNDE0N0MxMi40OTk0IDE5LjA2OTQgMTQuMDE0MSAxOC40OTI4IDE0LjAxNDEgMTcuNTUzM1YxNS4wMTM1QzE0LjAxNDEgMTQuMDQ5OSAxNC40NzY0IDEzLjE0NDcgMTUuMjU3MiAxMi41OEwxOS41ODMyIDkuNDUwNDdDMjAuMDgyNSA5LjA4OTI4IDIwLjE0MDEgOC4zNjcxIDE5LjcwNDMgNy45MzEzNkwxNi4wNjg2IDQuMjk1NjdDMTUuNjMyOSAzLjg1OTkzIDE0LjkxMDcgMy45MTc1MSAxNC41NDk1IDQuNDE2OEwxMS40MjAxIDguNzQyODVDMTAuODU1MyA5LjUyMzU5IDkuOTUwMTYgOS45ODU5NCA4Ljk4NjU0IDkuOTg1OTRINi40NDY3M0M1LjUwNzIgOS45ODU5NCA0LjkzMDU5IDExLjUwMDYgNS41ODUzNSAxMi4xNTU0TDExLjg0NDYgMTguNDE0N1pcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG50eXBlIFRyYXNoSWNvblByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUcmFzaEljb24oeyBjbGFzc05hbWUgPSAnJyB9OiBUcmFzaEljb25Qcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2ljb24tbWQgaC00IHctNCcsIGNsYXNzTmFtZSl9XG4gICAgICBoZWlnaHQ9XCIxZW1cIlxuICAgICAgd2lkdGg9XCIxZW1cIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTAuNTU1NSA0QzEwLjA5OSA0IDkuNzAwNTIgNC4zMDkwNiA5LjU4NjkzIDQuNzUxMTRMOS4yOTM4MiA1Ljg5MTlIMTQuNzE1TDE0LjQyMTkgNC43NTExNEMxNC4zMDgzIDQuMzA5MDYgMTMuOTA5OCA0IDEzLjQ1MzMgNEgxMC41NTU1Wk0xNi43Nzk5IDUuODkxOUwxNi4zNTg5IDQuMjUzNDJDMTYuMDE4MiAyLjkyNzE5IDE0LjgyMjYgMiAxMy40NTMzIDJIMTAuNTU1NUM5LjE4NjE2IDIgNy45OTA2MiAyLjkyNzE5IDcuNjQ5ODUgNC4yNTM0Mkw3LjIyODg2IDUuODkxOUg0QzMuNDQ3NzIgNS44OTE5IDMgNi4zMzk2MSAzIDYuODkxOUMzIDcuNDQ0MTggMy40NDc3MiA3Ljg5MTkgNCA3Ljg5MTlINC4xMDA2OUw1LjMxNTQ0IDE5LjMxNzJDNS40Nzc2MyAyMC44NDI3IDYuNzY0NTUgMjIgOC4yOTg2MyAyMkgxNS43MDE0QzE3LjIzNTQgMjIgMTguNTIyNCAyMC44NDI3IDE4LjY4NDYgMTkuMzE3MkwxOS44OTkzIDcuODkxOUgyMEMyMC41NTIzIDcuODkxOSAyMSA3LjQ0NDE4IDIxIDYuODkxOUMyMSA2LjMzOTYxIDIwLjU1MjMgNS44OTE5IDIwIDUuODkxOUgxNi43Nzk5Wk0xNy44ODggNy44OTE5SDYuMTExOTZMNy4zMDQyMyAxOS4xMDU3QzcuMzU4MyAxOS42MTQyIDcuNzg3MjcgMjAgOC4yOTg2MyAyMEgxNS43MDE0QzE2LjIxMjcgMjAgMTYuNjQxNyAxOS42MTQyIDE2LjY5NTggMTkuMTA1N0wxNy44ODggNy44OTE5Wk0xMCAxMEMxMC41NTIzIDEwIDExIDEwLjQ0NzcgMTEgMTFWMTZDMTEgMTYuNTUyMyAxMC41NTIzIDE3IDEwIDE3QzkuNDQ3NzIgMTcgOSAxNi41NTIzIDkgMTZWMTFDOSAxMC40NDc3IDkuNDQ3NzIgMTAgMTAgMTBaTTE0IDEwQzE0LjU1MjMgMTAgMTUgMTAuNDQ3NyAxNSAxMVYxNkMxNSAxNi41NTIzIDE0LjU1MjMgMTcgMTQgMTdDMTMuNDQ3NyAxNyAxMyAxNi41NTIzIDEzIDE2VjExQzEzIDEwLjQ0NzcgMTMuNDQ3NyAxMCAxNCAxMFpcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNaW5pbWFsUGx1Z2luKHtcbiAgc2l6ZSxcbiAgY2xhc3NOYW1lID0gJ2ljb24tbWQnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTUuNDY0NiAxOUMxNS4yMjE5IDIwLjY5NjEgMTMuNzYzMiAyMiAxMiAyMkMxMC4yMzY4IDIyIDguNzc4MDYgMjAuNjk2MSA4LjUzNTQ0IDE5SDZDNC4zNDMxNSAxOSAzIDE3LjY1NjkgMyAxNlYxMy41QzMgMTIuOTQ3NyAzLjQ0NzcyIDEyLjUgNCAxMi41SDQuNUM1LjMyODQzIDEyLjUgNiAxMS44Mjg0IDYgMTFDNiAxMC4xNzE2IDUuMzI4NDMgOS41IDQuNSA5LjVINEMzLjQ0NzcyIDkuNSAzIDkuMDUyMjkgMyA4LjVMMyA2QzMgNC4zNDMxNSA0LjM0MzE1IDMgNiAzTDE4IDNDMTkuNjU2OSAzIDIxIDQuMzQzMTUgMjEgNkwyMSAxNkMyMSAxNy42NTY5IDE5LjY1NjkgMTkgMTggMTlIMTUuNDY0NlpNMTIgMjBDMTIuODI4NCAyMCAxMy41IDE5LjMyODQgMTMuNSAxOC41VjE4QzEzLjUgMTcuNDQ3NyAxMy45NDc3IDE3IDE0LjUgMTdIMThDMTguNTUyMyAxNyAxOSAxNi41NTIzIDE5IDE2TDE5IDZDMTkgNS40NDc3MiAxOC41NTIzIDUgMTggNUw2IDVDNS40NDc3MiA1IDUgNS40NDc3MiA1IDZWNy41MzU0NEM2LjY5NjE1IDcuNzc4MDYgOCA5LjIzNjc2IDggMTFDOCAxMi43NjMyIDYuNjk2MTUgMTQuMjIxOSA1IDE0LjQ2NDZMNSAxNkM1IDE2LjU1MjMgNS40NDc3MSAxNyA2IDE3SDkuNUMxMC4wNTIzIDE3IDEwLjUgMTcuNDQ3NyAxMC41IDE4VjE4LjVDMTAuNSAxOS4zMjg0IDExLjE3MTYgMjAgMTIgMjBaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEF6dXJlTWluaW1hbEljb24oe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICdoLTQgdy00Jyxcbn06IHtcbiAgc2l6ZT86IG51bWJlcjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSkge1xuICBjb25zdCBoZWlnaHQgPSBzaXplO1xuICBjb25zdCB3aWR0aCA9IHNpemU7XG5cbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgY2xhc3NOYW1lPXtjbihjbGFzc05hbWUsICcnKX1cbiAgICAgIHdpZHRoPXt3aWR0aH1cbiAgICAgIGhlaWdodD17aGVpZ2h0fVxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJtOC4wNDU4IDAuODE5ODFhMS4xMTk3IDEuMTE5NyAwIDAgMC0xLjA2MDggMC43NjE4NGwtNi43OTEyIDIwLjEyM2ExLjExNzggMS4xMTc4IDAgMCAwIDEuMDU5MiAxLjQ3NTFoNS40NjQ3YTEuMTE5NyAxLjExOTcgMCAwIDAgMS4wNjA4LTAuNzYxNWwxLjM1MjgtNC4wMDg0LTIuMzY4NC0yLjIxMDdhMC41MTUzNiAwLjUxNTM2IDAgMCAxIDAuMzUxOTMtMC44OTIzaDMuMDYzOWwxLjgyMTMtNS4zOTY2LTIuODExMS04LjMyOTRhMS4xMTgxIDEuMTE4MSAwIDAgMC0xLjA1OTUtMC43NjA0OWgtMC4wODM2elwiIC8+XG4gICAgICA8cGF0aCBkPVwibTcuMTE0NyAxNS4zMDdhMC41MTUzNiAwLjUxNTM2IDAgMCAwLTAuMzUxOTMgMC44OTIzbDcuMTU1MiA2LjY3ODJhMS4xMjQ4IDEuMTI0OCAwIDAgMCAwLjc2NzI0IDAuMzAyMzhoMC4yNDE3YTEuMTE4MSAxLjExODEgMCAwIDAgMS4wNTM0LTEuNDc1NWwtMi4xNTkxLTYuMzk3NHpcIiAvPlxuICAgICAgPHBhdGggZD1cIm0xNy4wMTUgMS41ODA3YTEuMTE3OCAxLjExNzggMCAwIDAtMS4wNTkzLTAuNzYwNDloLTcuODI1OGExLjExODEgMS4xMTgxIDAgMCAxIDEuMDU5MyAwLjc2MDQ5bDYuNzkxNiAyMC4xMjNhMS4xMTgxIDEuMTE4MSAwIDAgMS0xLjA1OTMgMS40NzU3aDcuODI2MWExLjExODEgMS4xMTgxIDAgMCAwIDEuMDU5LTEuNDc1N3pcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gT3BlbkFJTWluaW1hbEljb24oeyBjbGFzc05hbWUgPSAnaC00IHctNCcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDQwIDQwXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aCBkPVwiTTM3LjUzMjQgMTYuODcwN0MzNy45ODA4IDE1LjUyNDEgMzguMTM2MyAxNC4wOTc0IDM3Ljk4ODYgMTIuNjg1OUMzNy44NDA5IDExLjI3NDQgMzcuMzkzNCA5LjkxMDc2IDM2LjY3NiA4LjY4NjIyQzM1LjYxMjYgNi44MzQwNCAzMy45ODgyIDUuMzY3NiAzMi4wMzczIDQuNDk4NUMzMC4wODY0IDMuNjI5NDEgMjcuOTA5OCAzLjQwMjU5IDI1LjgyMTUgMy44NTA3OEMyNC44Nzk2IDIuNzg5MyAyMy43MjE5IDEuOTQxMjUgMjIuNDI1NyAxLjM2MzQxQzIxLjEyOTUgMC43ODU1NzUgMTkuNzI0OSAwLjQ5MTI2OSAxOC4zMDU4IDAuNTAwMTk3QzE2LjE3MDggMC40OTUwNDQgMTQuMDg5MyAxLjE2ODAzIDEyLjM2MTQgMi40MjIxNEMxMC42MzM1IDMuNjc2MjQgOS4zNDg1MyA1LjQ0NjY2IDguNjkxNyA3LjQ3ODE1QzcuMzAwODUgNy43NjI4NiA1Ljk4Njg2IDguMzQxNCA0LjgzNzcgOS4xNzUwNUMzLjY4ODU0IDEwLjAwODcgMi43MzA3MyAxMS4wNzgyIDIuMDI4MzkgMTIuMzEyQzAuOTU2NDY0IDE0LjE1OTEgMC40OTg5MDUgMTYuMjk4OCAwLjcyMTY5OCAxOC40MjI4QzAuOTQ0NDkyIDIwLjU0NjcgMS44MzYxMiAyMi41NDQ5IDMuMjY4IDI0LjEyOTNDMi44MTk2NiAyNS40NzU5IDIuNjY0MTMgMjYuOTAyNiAyLjgxMTgyIDI4LjMxNDFDMi45NTk1MSAyOS43MjU2IDMuNDA3MDEgMzEuMDg5MiA0LjEyNDM3IDMyLjMxMzhDNS4xODc5MSAzNC4xNjU5IDYuODEyMyAzNS42MzIyIDguNzYzMjEgMzYuNTAxM0MxMC43MTQxIDM3LjM3MDQgMTIuODkwNyAzNy41OTczIDE0Ljk3ODkgMzcuMTQ5MkMxNS45MjA4IDM4LjIxMDcgMTcuMDc4NiAzOS4wNTg3IDE4LjM3NDcgMzkuNjM2NkMxOS42NzA5IDQwLjIxNDQgMjEuMDc1NSA0MC41MDg3IDIyLjQ5NDYgNDAuNDk5OEMyNC42MzA3IDQwLjUwNTQgMjYuNzEzMyAzOS44MzIxIDI4LjQ0MTggMzguNTc3MkMzMC4xNzA0IDM3LjMyMjMgMzEuNDU1NiAzNS41NTA2IDMyLjExMTkgMzMuNTE3OUMzMy41MDI3IDMzLjIzMzIgMzQuODE2NyAzMi42NTQ3IDM1Ljk2NTkgMzEuODIxQzM3LjExNSAzMC45ODc0IDM4LjA3MjggMjkuOTE3OCAzOC43NzUyIDI4LjY4NEMzOS44NDU4IDI2LjgzNzEgNDAuMzAyMyAyNC42OTc5IDQwLjA3ODkgMjIuNTc0OEMzOS44NTU2IDIwLjQ1MTcgMzguOTYzOSAxOC40NTQ0IDM3LjUzMjQgMTYuODcwN1pNMjIuNDk3OCAzNy44ODQ5QzIwLjc0NDMgMzcuODg3NCAxOS4wNDU5IDM3LjI3MzMgMTcuNjk5NCAzNi4xNTAxQzE3Ljc2MDEgMzYuMTE3IDE3Ljg2NjYgMzYuMDU4NiAxNy45MzYgMzYuMDE2MUwyNS45MDA0IDMxLjQxNTZDMjYuMTAwMyAzMS4zMDE5IDI2LjI2NjMgMzEuMTM3IDI2LjM4MTMgMzAuOTM3OEMyNi40OTY0IDMwLjczODYgMjYuNTU2MyAzMC41MTI0IDI2LjU1NDkgMzAuMjgyNVYxOS4wNTQyTDI5LjkyMTMgMjAuOTk4QzI5LjkzODkgMjEuMDA2OCAyOS45NTQxIDIxLjAxOTggMjkuOTY1NiAyMS4wMzU5QzI5Ljk3NyAyMS4wNTIgMjkuOTg0MiAyMS4wNzA3IDI5Ljk4NjcgMjEuMDkwMlYzMC4zODg5QzI5Ljk4NDIgMzIuMzc1IDI5LjE5NDYgMzQuMjc5MSAyNy43OTA5IDM1LjY4NDFDMjYuMzg3MiAzNy4wODkyIDI0LjQ4MzggMzcuODgwNiAyMi40OTc4IDM3Ljg4NDlaTTYuMzkyMjcgMzEuMDA2NEM1LjUxMzk3IDI5LjQ4ODggNS4xOTc0MiAyNy43MTA3IDUuNDk4MDQgMjUuOTgzMkM1LjU1NzE4IDI2LjAxODcgNS42NjA0OCAyNi4wODE4IDUuNzM0NjEgMjYuMTI0NEwxMy42OTkgMzAuNzI0OEMxMy44OTc1IDMwLjg0MDggMTQuMTIzMyAzMC45MDIgMTQuMzUzMiAzMC45MDJDMTQuNTgzIDMwLjkwMiAxNC44MDg4IDMwLjg0MDggMTUuMDA3MyAzMC43MjQ4TDI0LjczMSAyNS4xMTAzVjI4Ljk5NzlDMjQuNzMyMSAyOS4wMTc3IDI0LjcyODMgMjkuMDM3NiAyNC43MTk5IDI5LjA1NTZDMjQuNzExNSAyOS4wNzM2IDI0LjY5ODggMjkuMDg5MyAyNC42ODI5IDI5LjEwMTJMMTYuNjMxNyAzMy43NDk3QzE0LjkwOTYgMzQuNzQxNiAxMi44NjQzIDM1LjAwOTcgMTAuOTQ0NyAzNC40OTU0QzkuMDI1MDYgMzMuOTgxMSA3LjM4Nzg1IDMyLjcyNjMgNi4zOTIyNyAzMS4wMDY0Wk00LjI5NzA3IDEzLjYxOTRDNS4xNzE1NiAxMi4wOTk4IDYuNTUyNzkgMTAuOTM2NCA4LjE5ODg1IDEwLjMzMjdDOC4xOTg4NSAxMC40MDEzIDguMTk0OTEgMTAuNTIyOCA4LjE5NDkxIDEwLjYwNzFWMTkuODA4QzguMTkzNTEgMjAuMDM3OCA4LjI1MzM0IDIwLjI2MzggOC4zNjgyMyAyMC40NjI5QzguNDgzMTIgMjAuNjYxOSA4LjY0ODkzIDIwLjgyNjcgOC44NDg2MyAyMC45NDA0TDE4LjU3MjMgMjYuNTU0MkwxNS4yMDYgMjguNDk3OUMxNS4xODk0IDI4LjUwODkgMTUuMTcwMyAyOC41MTU1IDE1LjE1MDUgMjguNTE3M0MxNS4xMzA3IDI4LjUxOTEgMTUuMTEwNyAyOC41MTYgMTUuMDkyNCAyOC41MDgyTDcuMDQwNDYgMjMuODU1N0M1LjMyMTM1IDIyLjg2MDEgNC4wNjcxNiAyMS4yMjM1IDMuNTUyODkgMTkuMzA0NkMzLjAzODYyIDE3LjM4NTggMy4zMDYyNCAxNS4zNDEzIDQuMjk3MDcgMTMuNjE5NFpNMzEuOTU1IDIwLjA1NTZMMjIuMjMxMiAxNC40NDExTDI1LjU5NzYgMTIuNDk4MUMyNS42MTQyIDEyLjQ4NzIgMjUuNjMzMyAxMi40ODA1IDI1LjY1MzEgMTIuNDc4N0MyNS42NzI5IDEyLjQ3NjkgMjUuNjkyOCAxMi40ODAxIDI1LjcxMTEgMTIuNDg3OUwzMy43NjMxIDE3LjEzNjRDMzQuOTk2NyAxNy44NDkgMzYuMDAxNyAxOC44OTgyIDM2LjY2MDYgMjAuMTYxM0MzNy4zMTk0IDIxLjQyNDQgMzcuNjA0NyAyMi44NDkgMzcuNDgzMiAyNC4yNjg0QzM3LjM2MTcgMjUuNjg3OCAzNi44MzgyIDI3LjA0MzIgMzUuOTc0MyAyOC4xNzU5QzM1LjExMDMgMjkuMzA4NiAzMy45NDE1IDMwLjE3MTcgMzIuNjA0NyAzMC42NjQxQzMyLjYwNDcgMzAuNTk0NyAzMi42MDQ3IDMwLjQ3MzMgMzIuNjA0NyAzMC4zODg5VjIxLjE4OEMzMi42MDY2IDIwLjk1ODYgMzIuNTQ3NCAyMC43MzI4IDMyLjQzMzIgMjAuNTMzOEMzMi4zMTkgMjAuMzM0OCAzMi4xNTQgMjAuMTY5OCAzMS45NTUgMjAuMDU1NlpNMzUuMzA1NSAxNS4wMTI4QzM1LjI0NjQgMTQuOTc2NSAzNS4xNDMxIDE0LjkxNDIgMzUuMDY5IDE0Ljg3MTdMMjcuMTA0NSAxMC4yNzEyQzI2LjkwNiAxMC4xNTU0IDI2LjY4MDMgMTAuMDk0MyAyNi40NTA0IDEwLjA5NDNDMjYuMjIwNiAxMC4wOTQzIDI1Ljk5NDggMTAuMTU1NCAyNS43OTYzIDEwLjI3MTJMMTYuMDcyNiAxNS44ODU4VjExLjk5ODJDMTYuMDcxNSAxMS45NzgzIDE2LjA3NTMgMTEuOTU4NSAxNi4wODM3IDExLjk0MDVDMTYuMDkyMSAxMS45MjI1IDE2LjEwNDggMTEuOTA2OCAxNi4xMjA3IDExLjg5NDlMMjQuMTcxOSA3LjI1MDI1QzI1LjQwNTMgNi41MzkwMyAyNi44MTU4IDYuMTkzNzYgMjguMjM4MyA2LjI1NDgyQzI5LjY2MDggNi4zMTU4OSAzMS4wMzY0IDYuNzgwNzcgMzIuMjA0NCA3LjU5NTA4QzMzLjM3MjMgOC40MDkzOSAzNC4yODQyIDkuNTM5NDUgMzQuODMzNCAxMC44NTMxQzM1LjM4MjYgMTIuMTY2NyAzNS41NDY0IDEzLjYwOTUgMzUuMzA1NSAxNS4wMTI4Wk0xNC4yNDI0IDIxLjk0MTlMMTAuODc1MiAxOS45OTgxQzEwLjg1NzYgMTkuOTg5MyAxMC44NDIzIDE5Ljk3NjMgMTAuODMwOSAxOS45NjAyQzEwLjgxOTUgMTkuOTQ0MSAxMC44MTIyIDE5LjkyNTQgMTAuODA5OCAxOS45MDU4VjEwLjYwNzFDMTAuODEwNyA5LjE4Mjk1IDExLjIxNzMgNy43ODg0OCAxMS45ODE5IDYuNTg2OTZDMTIuNzQ2NiA1LjM4NTQ0IDEzLjgzNzcgNC40MjY1OSAxNS4xMjc1IDMuODIyNjRDMTYuNDE3MyAzLjIxODY5IDE3Ljg1MjQgMi45OTQ2NCAxOS4yNjQ5IDMuMTc2N0MyMC42Nzc1IDMuMzU4NzYgMjIuMDA4OSAzLjkzOTQxIDIzLjEwMzQgNC44NTA2N0MyMy4wNDI3IDQuODgzNzkgMjIuOTM3IDQuOTQyMTUgMjIuODY2OCA0Ljk4NDczTDE0LjkwMjQgOS41ODUxN0MxNC43MDI1IDkuNjk4NzggMTQuNTM2NiA5Ljg2MzU2IDE0LjQyMTUgMTAuMDYyNkMxNC4zMDY1IDEwLjI2MTYgMTQuMjQ2NiAxMC40ODc3IDE0LjI0NzkgMTAuNzE3NUwxNC4yNDI0IDIxLjk0MTlaTTE2LjA3MSAxNy45OTkxTDIwLjQwMTggMTUuNDk3OEwyNC43MzI1IDE3Ljk5NzVWMjIuOTk4NUwyMC40MDE4IDI1LjQ5ODNMMTYuMDcxIDIyLjk5ODVWMTcuOTk5MVpcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ2hhdEdQVE1pbmltYWxJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT1cImx1Y2lkZSBsdWNpZGUtYm90XCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjEwXCIgeD1cIjNcIiB5PVwiMTFcIiByeD1cIjJcIiAvPlxuICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCI1XCIgcj1cIjJcIiAvPlxuICAgICAgPHBhdGggZD1cIk0xMiA3djRcIiAvPlxuICAgICAgPGxpbmUgeDE9XCI4XCIgeDI9XCI4XCIgeTE9XCIxNlwiIHkyPVwiMTZcIiAvPlxuICAgICAgPGxpbmUgeDE9XCIxNlwiIHgyPVwiMTZcIiB5MT1cIjE2XCIgeTI9XCIxNlwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGFMTWluaW1hbEljb24oeyBjbGFzc05hbWUgPSAnJyB9OiB7IGNsYXNzTmFtZT86IHN0cmluZyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDMyIDMyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2gtNCB3LTQnLCBjbGFzc05hbWUpfVxuICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aCBkPVwibTE2IDMwLjIzOGMxLjIyOTggMCAyLjIyNTktMC45OTYwOCAyLjIyNTktMi4yMjU5di0xMS40NmMtMC42MzUxMy0wLjU2NDI5LTEuNjU1My0xLjY4MDUtMi4yMjU5LTIuMjUxLTAuNzk4NTggMC44Mzc5My0xLjM1OTkgMS4zNTk5LTIuMjI1OSAyLjI1MXYxMS40NmMwIDEuMjI5OCAwLjk5NjA4IDIuMjI1OSAyLjIyNTkgMi4yMjU5elwiIC8+XG4gICAgICA8cGF0aCBkPVwibTI0Ljg2OCAxNS43NjFjLTAuNjE2OTEtMC42MTY0My0xLjMxMjEtMS4xMDY1LTIuMDUzNi0xLjQ3MDMtNi44MTQ3IDAuMDEwNDY3IDAuMTMzMDQgMC4wMzEwMjYtNi44MTQ3IDAuMDEwNDY3bDkuNTI4NiA5LjUyODZjMC4zOTMyNCAwLjM5MzI0IDEuMDcwMyAwLjIzNzQzIDEuMjM3Mi0wLjI5MTIyIDAuODM4NDEtMi42NTQ0IDAuMjA1ODktNS42NzIzLTEuODk3Ni03Ljc3NzZ6XCIgLz5cbiAgICAgIDxwYXRoIGQ9XCJtNy4xMzE4IDE1Ljc2MWMwLjU5MDItMC41ODk3NSAxLjI1MjEtMS4wNjM5IDEuOTU3NS0xLjQyMjQgNi45MTA3LTAuMDM3NDI3LTAuMTE4MTItMC4wNTcyODggNi45MTA3LTAuMDM3NDI3bC05LjUyODYgOS41Mjg2Yy0wLjM5MzI0IDAuMzkzMjQtMS4wNzAzIDAuMjM3NDMtMS4yMzcyLTAuMjkxMjItMC44Mzg0MS0yLjY1NDMtMC4yMDU4OS01LjY3MjMgMS44OTc2LTcuNzc3NnpcIiAvPlxuICAgICAgPHBhdGggZD1cIm0yNC4xNjIgOC4zNjU1Yy0wLjkzMTY5IDAtMS44Mjg4IDAuMTUwMDktMi42NjkxIDAuNDI3NzItNS40OTI0IDUuNTA3OSAwIDAtNS40OTI0IDUuNTA3OWgxNS4wNjljMC42MTc2NyAwIDEuMDI5NS0wLjY1MjkyIDAuNzQ5MzgtMS4yMDM4LTEuNDMyLTIuODEwMi00LjMyMTktNC43MzE4LTcuNjU3LTQuNzMxOHpcIiAvPlxuICAgICAgPHBhdGggZD1cIm0xNy41NzUgNC4zMzNjLTAuNjI2MTMgMC42MjYxMy0xLjEzNDMgMS4zMjU3LTEuNTI0OCAyLjA3MTggMS42NzY3IDQuMTE3NCAwLjUzNTE4IDYuMzkwOS0wLjA1MDAzIDcuODk2NGwxMC42NTYtMTAuNjU2YzAuNDM3NzUtMC40Mzc3NSAwLjI2NzEtMS4xOTA4LTAuMzIwOS0xLjM4MTktMy4wMDEyLTAuOTczODItNi40MDMxLTAuMjg3NTEtOC43NjA3IDIuMDcwMXpcIiAvPlxuICAgICAgPHBhdGggZD1cIm0xNC40MjUgNC4zMzNjMi42ODIyIDIuNjgyMiAzLjE5OTcgNi43MTI5IDEuNTc0OCA5Ljk2ODJsLTEwLjY1Ni0xMC42NTZjLTAuNDM3NzUtMC40Mzc3NS0wLjI2NzEtMS4xOTA4IDAuMzIwOS0xLjM4MTkgMy4wMDEyLTAuOTczODIgNi40MDMxLTAuMjg3NTEgOC43NjA3IDIuMDcwMXpcIiAvPlxuICAgICAgPHBhdGggZD1cIm03LjgzODUgOC4zNjU1YzAuOTEyMSAwIDEuNzkxIDAuMTQzODUgMi42MTYgMC40MTAzNyA1LjU0NTUgNS41MjUzLTAuMDYxNzczIDAuMDExNjc1IDUuNTQ1NSA1LjUyNTNoLTE1LjA2OWMtMC42MTc2OCAwLTEuMDI5NS0wLjY1MjkyLTAuNzQ5MzgtMS4yMDM4IDEuNDMyLTIuODEwMiA0LjMyMTktNC43MzE4IDcuNjU3LTQuNzMxOHpcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGFMTUljb24oe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICcnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgLy8gd2lkdGg9XCIxMDAlXCJcbiAgICAgIC8vIGhlaWdodD1cIjEwMCVcIlxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIHZpZXdCb3g9XCIwIDAgMTkgMTdcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz1cInhNaWRZTWlkIG1lZXRcIlxuICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTkuNjI2NzQgMTYuMjIwMkg5LjcwNDlDMTAuNDIyNSAxNi4yMjAyIDExLjAwMTYgMTUuNjQxMiAxMS4wMDE2IDE0LjkyMzZWNC4wNDIyNEg4LjMzMDA4VjE0LjkyQzguMzMwMDggMTUuNjM3NiA4LjkwOTE0IDE2LjIyMDIgOS42MjY3NCAxNi4yMjAyWlwiXG4gICAgICAgIGZpbGw9XCIjRjlBQjAwXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTE0LjY4MTkgOC4wMjgxM0MxMy4zMjQ5IDYuNjY3NTIgMTEuMjk2NCA2LjM5Mzk4IDkuNjY1NzcgNy4yMDA0TDE1LjA1ODUgMTIuNTkzMUMxNS4yODIzIDEyLjgxNjkgMTUuNjYyNCAxMi43MjgxIDE1Ljc1ODMgMTIuNDI5N0MxNi4yMzA4IDEwLjkyNyAxNS44NzU2IDkuMjE4MjIgMTQuNjgxOSA4LjAyODEzWlwiXG4gICAgICAgIGZpbGw9XCIjNUJCOTc0XCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTQuNjQ5NTMgOC4wMjgxM0M2LjAwNjU5IDYuNjY3NTIgOC4wMzUwNyA2LjM5Mzk4IDkuNjY1NjcgNy4yMDA0TDQuMjcyOTcgMTIuNTkzMUM0LjA0OTE2IDEyLjgxNjkgMy42NjkwNCAxMi43MjgxIDMuNTczMTIgMTIuNDI5N0MzLjEwMDY0IDEwLjkyNyAzLjQ1NTg5IDkuMjE4MjIgNC42NDk1MyA4LjAyODEzWlwiXG4gICAgICAgIGZpbGw9XCIjMTI5RUFGXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTE0LjI4NCAzLjg0MzI2QzEyLjEzODMgMy44NDMyNiAxMC4zMTU5IDUuMjUwMDUgOS42NjU3NyA3LjIwMDM4SDE4LjE5MThDMTguNTM5OSA3LjIwMDM4IDE4Ljc3NDQgNi44MzA5MiAxOC42MTQ1IDYuNTE4M0MxNy44MDgxIDQuOTMwMzMgMTYuMTcwNCAzLjg0MzI2IDE0LjI4NCAzLjg0MzI2WlwiXG4gICAgICAgIGZpbGw9XCIjQUY1Q0Y3XCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTEwLjU1NzQgMS41NTkwMUM5LjA0MDUzIDMuMDc1OTMgOC43NDU2NyA1LjM2MDE5IDkuNjY1NzcgNy4yMDAzOUwxNS42OTQ0IDEuMTcxNzlDMTUuOTQzIDAuOTIzMTEzIDE1Ljg0MzYgMC40OTY4MTQgMTUuNTEzMiAwLjM5MDIzOUMxMy44MTUxIC0wLjE2MDQgMTEuODg5NiAwLjIyNjgyMiAxMC41NTc0IDEuNTU5MDFaXCJcbiAgICAgICAgZmlsbD1cIiNGRjhCQ0JcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNOC43NzQwOCAxLjU1OTAxQzEwLjI5MSAzLjA3NTkzIDEwLjU4NTkgNS4zNjAxOSA5LjY2NTc2IDcuMjAwMzlMMy42MzcxNiAxLjE3MTc5QzMuMzg4NDggMC45MjMxMTMgMy40ODc5NSAwLjQ5NjgxNCAzLjgxODMzIDAuMzkwMjM5QzUuNTE2NDMgLTAuMTYwNCA3LjQ0MTg5IDAuMjI2ODIyIDguNzc0MDggMS41NTkwMVpcIlxuICAgICAgICBmaWxsPVwiI0ZBN0IxN1wiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk01LjA0NzUyIDMuODQzMjZDNy4xOTMyMyAzLjg0MzI2IDkuMDE1NjYgNS4yNTAwNSA5LjY2NTc3IDcuMjAwMzhIMS4xMzk3NkMwLjc5MTYxNiA3LjIwMDM4IDAuNTU3MTUgNi44MzA5MiAwLjcxNzAxMyA2LjUxODNDMS41MjM0MyA0LjkzMDMzIDMuMTYxMTQgMy44NDMyNiA1LjA0NzUyIDMuODQzMjZaXCJcbiAgICAgICAgZmlsbD1cIiM0Mjg1RjRcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb2RleUljb24oe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICcnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgLy8gd2lkdGg9XCIxMDAlXCJcbiAgICAgIC8vIGhlaWdodD1cIjEwMCVcIlxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICBjbGFzc05hbWU9e2NuKCdkYXJrOmZpbGwtd2hpdGUnLCBjbGFzc05hbWUpfVxuICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiXG4gICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWQgbWVldFwiXG4gICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMiA0LjAwNkMyIDIuODk4IDIuODk3IDIgNC4wMDYgMmg5Ljk4OEMxNS4xMDIgMiAxNiAyLjg5NyAxNiA0LjAwNnY5Ljk4OEEyLjAwNSAyLjAwNSAwIDAgMSAxMy45OTQgMTZINC4wMDZBMi4wMDUgMi4wMDUgMCAwIDEgMiAxMy45OTRWNC4wMDZ6TTEzLjk5MiA5bC4wMDMtLjAwM0wxMC45OTcgNiA5Ljc1IDcuMjQ3IDExLjUwMyA5IDkuNzUgMTAuNzUzIDEwLjk5NyAxMmwyLjk5Ny0yLjk5N0wxMy45OTIgOXptLTkuOTkgMEw0IDguOTk3IDYuOTk3IDZsMS4yNDcgMS4yNDdMNi40OTIgOWwxLjc1MyAxLjc1M0w2Ljk5NyAxMiA0IDkuMDAzIDQuMDAzIDl6XCJcbiAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBHZW1pbmlJY29uKHtcbiAgc2l6ZSA9IDI1LFxuICBjbGFzc05hbWUgPSAnJyxcbn06IHtcbiAgc2l6ZT86IG51bWJlcjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICB2aWV3Qm94PVwiMCAwIDE4IDE4XCJcbiAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWlkWU1pZCBtZWV0XCJcbiAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cInVybCgjXzRyaWZfcGFpbnQwX3JhZGlhbF84OTdfNDIpXCJcbiAgICAgICAgZD1cIk05IDE4YzAtMS4yNDUtLjI0LTIuNDE1LS43Mi0zLjUxYTguOTM0IDguOTM0IDAgMDAtMS45MTItMi44NTdBOC45MzQgOC45MzQgMCAwMDMuNTEgOS43MiA4LjY0NiA4LjY0NiAwIDAwMCA5YTguODg2IDguODg2IDAgMDAzLjUxLS42OTcgOS4yNDcgOS4yNDcgMCAwMDIuODU3LTEuOTM2QTguOTM0IDguOTM0IDAgMDA4LjI4IDMuNTFDOC43NiAyLjQxNSA5IDEuMjQ1IDkgMGMwIDEuMjQ1LjIzMiAyLjQxNS42OTcgMy41MWE5LjI0NyA5LjI0NyAwIDAwMS45MzYgMi44NTcgOS4yNDcgOS4yNDcgMCAwMDIuODU3IDEuOTM2QTguODg2IDguODg2IDAgMDAxOCA5Yy0xLjI0NSAwLTIuNDE1LjI0LTMuNTEuNzJhOC45MzQgOC45MzQgMCAwMC0yLjg1NyAxLjkxMiA5LjI0NyA5LjI0NyAwIDAwLTEuOTM1IDIuODU4QTguODg2IDguODg2IDAgMDA5IDE4elwiXG4gICAgICAvPlxuICAgICAgPGRlZnM+XG4gICAgICAgIDxyYWRpYWxHcmFkaWVudFxuICAgICAgICAgIGlkPVwiXzRyaWZfcGFpbnQwX3JhZGlhbF84OTdfNDJcIlxuICAgICAgICAgIGN4PVwiMFwiXG4gICAgICAgICAgY3k9XCIwXCJcbiAgICAgICAgICByPVwiMVwiXG4gICAgICAgICAgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCJcbiAgICAgICAgICBncmFkaWVudFRyYW5zZm9ybT1cInJvdGF0ZSgxMzUgOSAzLjcyOCkgc2NhbGUoMjUuNDU1OCAxMi43Mjc5KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIuMzI1XCIgc3RvcENvbG9yPVwiI0ZGRERCN1wiPjwvc3RvcD5cbiAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIuNzA2XCIgc3RvcENvbG9yPVwiIzA3NkVGRlwiPjwvc3RvcD5cbiAgICAgICAgPC9yYWRpYWxHcmFkaWVudD5cbiAgICAgIDwvZGVmcz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBHb29nbGVNaW5pbWFsSWNvbih7IGNsYXNzTmFtZSA9ICcnIH06IHsgY2xhc3NOYW1lPzogc3RyaW5nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgd2lkdGg9XCI4MDBweFwiXG4gICAgICBoZWlnaHQ9XCI4MDBweFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIlxuICAgICAgY2xhc3NOYW1lPXtjbignaC00IHctNCcsIGNsYXNzTmFtZSl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJNNDczLjE2LDIyMS40OGwtMi4yNi05LjU5SDI2Mi40NnY4OC4yMkgzODdjLTEyLjkzLDYxLjQtNzIuOTMsOTMuNzItMTIxLjk0LDkzLjcyLTM1LjY2LDAtNzMuMjUtMTUtOTguMTMtMzkuMTFhMTQwLjA4LDE0MC4wOCwwLDAsMS00MS44LTk4Ljg4YzAtMzcuMTYsMTYuNy03NC4zMyw0MS05OC43OHM2MS0zOC4xMyw5Ny40OS0zOC4xM2M0MS43OSwwLDcxLjc0LDIyLjE5LDgyLjk0LDMyLjMxbDYyLjY5LTYyLjM2QzM5MC44Niw3Mi43MiwzNDAuMzQsMzIsMjYxLjYsMzJoMGMtNjAuNzUsMC0xMTksMjMuMjctMTYxLjU4LDY1LjcxQzU4LDEzOS41LDM2LjI1LDE5OS45MywzNi4yNSwyNTZTNTYuODMsMzY5LjQ4LDk3LjU1LDQxMS42QzE0MS4wNiw0NTYuNTIsMjAyLjY4LDQ4MCwyNjYuMTMsNDgwYzU3LjczLDAsMTEyLjQ1LTIyLjYyLDE1MS40NS02My42NiwzOC4zNC00MC40LDU4LjE3LTk2LjMsNTguMTctMTU0LjlDNDc1Ljc1LDIzNi43Nyw0NzMuMjcsMjIyLjEyLDQ3My4xNiwyMjEuNDhaXCIgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFudGhyb3BpY01pbmltYWxJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2VXaWR0aD1cIjFcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBjbGFzc05hbWU9XCJoLTQgdy00XCJcbiAgICAgIGhlaWdodD1cIjFlbVwiXG4gICAgICB3aWR0aD1cIjFlbVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGggZD1cIm0xNy4zMDQgMy41NDcyaC0zLjY3MThsNi42OTU5IDE2LjkwNmgzLjY3MTh6bS0xMC42MDggMC02LjY5NTkgMTYuOTA2aDMuNzQ0MmwxLjM2OTMtMy41NTAyaDcuMDA1MmwxLjM2OTMgMy41NTAyaDMuNzQ0MmwtNi42OTU5LTE2LjkwNnptLTAuMzcxMTQgMTAuMjE2IDIuMjkxNC01Ljk0MTMgMi4yOTE0IDUuOTQxM3pcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5cbnR5cGUgTGlzdGVuaW5nSWNvblByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMaXN0ZW5pbmdJY29uKHsgY2xhc3NOYW1lIH06IExpc3RlbmluZ0ljb25Qcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lKX1cbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJNMTIgMmEzIDMgMCAwIDAtMyAzdjdhMyAzIDAgMCAwIDYgMFY1YTMgMyAwIDAgMC0zLTNaXCIgLz5cbiAgICAgIDxwYXRoIGQ9XCJNMTkgMTB2MmE3IDcgMCAwIDEtMTQgMHYtMlwiIC8+XG4gICAgICA8bGluZSB4MT1cIjEyXCIgeDI9XCIxMlwiIHkxPVwiMTlcIiB5Mj1cIjIyXCIgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFZvbHVtZUljb24oeyBjbGFzc05hbWUgPSAnJywgc2l6ZSA9ICcxZW0nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBjbGFzc05hbWU9e2NuKGNsYXNzTmFtZSl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTEgNC45MDk5QzExIDQuNDc0ODUgMTAuNDgyOCA0LjI0NzM0IDEwLjE2MjEgNC41NDEzMkw2LjY3NTcyIDcuNzM3MkM2LjQ5MTI5IDcuOTA2MjYgNi4yNTAxOSA4LjAwMDA1IDYgOC4wMDAwNUg0QzMuNDQ3NzIgOC4wMDAwNSAzIDguNDQ3NzYgMyA5LjAwMDA1VjE1QzMgMTUuNTUyMyAzLjQ0NzcyIDE2IDQgMTZINkM2LjI1MDE5IDE2IDYuNDkxMjkgMTYuMDkzOCA2LjY3NTcyIDE2LjI2MjlMMTAuMTYyMSAxOS40NTg4QzEwLjQ4MjggMTkuNzUyNyAxMSAxOS41MjUyIDExIDE5LjA5MDJWNC45MDk5Wk04LjgxMDY5IDMuMDY3MDFDMTAuNDE0MiAxLjU5NzE0IDEzIDIuNzM0NjMgMTMgNC45MDk5VjE5LjA5MDJDMTMgMjEuMjY1NSAxMC40MTQyIDIyLjQwMyA4LjgxMDY5IDIwLjkzMzFMNS42MTEwMiAxOEg0QzIuMzQzMTUgMTggMSAxNi42NTY5IDEgMTVWOS4wMDAwNUMxIDcuMzQzMTkgMi4zNDMxNSA2LjAwMDA1IDQgNi4wMDAwNUg1LjYxMTAyTDguODEwNjkgMy4wNjcwMVpNMjAuMzE2NiA2LjM1NjY1QzIwLjgwMTkgNi4wOTMxMyAyMS40MDkgNi4yNzI5NiAyMS42NzI1IDYuNzU4MzNDMjIuNTE5MSA4LjMxNzYgMjIuOTk5NiAxMC4xMDQyIDIyLjk5OTYgMTIuMDAwMUMyMi45OTk2IDEzLjg1MDcgMjIuNTQxOCAxNS41OTc0IDIxLjczMjMgMTcuMTMwMkMyMS40NzQ0IDE3LjYxODUgMjAuODY5NSAxNy44MDU0IDIwLjM4MTEgMTcuNTQ3NUMxOS44OTI3IDE3LjI4OTYgMTkuNzA1OSAxNi42ODQ2IDE5Ljk2MzggMTYuMTk2MkMyMC42MjQ5IDE0Ljk0NDQgMjAuOTk5NiAxMy41MTc1IDIwLjk5OTYgMTIuMDAwMUMyMC45OTk2IDEwLjQ0NTggMjAuNjA2NCA4Ljk4NjI3IDE5LjkxNDkgNy43MTI2MkMxOS42NTE0IDcuMjI3MjYgMTkuODMxMiA2LjYyMDE3IDIwLjMxNjYgNi4zNTY2NVpNMTUuNzk5NCA3LjkwMDQ5QzE2LjI0MSA3LjU2ODggMTYuODY3OSA3LjY1Nzg5IDE3LjE5OTUgOC4wOTk0N0MxOC4wMTU2IDkuMTg1OTMgMTguNDk5NiAxMC41Mzc5IDE4LjQ5OTYgMTIuMDAwMUMxOC40OTk2IDEzLjMxMjcgMTguMTA5NCAxNC41MzcyIDE3LjQzODUgMTUuNTYwNEMxNy4xMzU3IDE2LjAyMjIgMTYuNTE1OCAxNi4xNTExIDE2LjA1MzkgMTUuODQ4M0MxNS41OTIxIDE1LjU0NTUgMTUuNDYzMiAxNC45MjU1IDE1Ljc2NiAxNC40NjM3QzE2LjIyOTggMTMuNzU2NCAxNi40OTk2IDEyLjkxMTMgMTYuNDk5NiAxMi4wMDAxQzE2LjQ5OTYgMTAuOTg1OSAxNi4xNjUzIDEwLjA1MjYgMTUuNjAwNCA5LjMwMDYzQzE1LjI2ODcgOC44NTkwNSAxNS4zNTc4IDguMjMyMTggMTUuNzk5NCA3LjkwMDQ5WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFZvbHVtZU11dGVJY29uKHsgY2xhc3NOYW1lID0gJycsIHNpemUgPSAnMWVtJyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGhlaWdodD17c2l6ZX1cbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgY2xhc3NOYW1lPXtjbihjbGFzc05hbWUpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTIgMTJDMiA2LjQ3NzE1IDYuNDc3MTUgMiAxMiAyQzE3LjUyMjggMiAyMiA2LjQ3NzE1IDIyIDEyQzIyIDE3LjUyMjggMTcuNTIyOCAyMiAxMiAyMkM2LjQ3NzE1IDIyIDIgMTcuNTIyOCAyIDEyWk05LjUgOC41QzguOTQ3NzIgOC41IDguNSA4Ljk0NzcyIDguNSA5LjVWMTQuNUM4LjUgMTUuMDUyMyA4Ljk0NzcyIDE1LjUgOS41IDE1LjVIMTQuNUMxNS4wNTIzIDE1LjUgMTUuNSAxNS4wNTIzIDE1LjUgMTQuNVY5LjVDMTUuNSA4Ljk0NzcyIDE1LjA1MjMgOC41IDE0LjUgOC41SDkuNVpcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTZW5kTWVzc2FnZUljb24oKSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIGNsYXNzTmFtZT1cImljb24tc20gbS0xIG1kOm0tMFwiXG4gICAgICBzdHlsZT17eyB3aWR0aDogJzFlbScsIGhlaWdodDogJzFlbScsIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnIH19XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNLjUgMS4xNjNBMSAxIDAgMCAxIDEuOTcuMjhsMTIuODY4IDYuODM3YTEgMSAwIDAgMSAwIDEuNzY2TDEuOTY5IDE1LjcyQTEgMSAwIDAgMSAuNSAxNC44MzZWMTAuMzNhMSAxIDAgMCAxIC44MTYtLjk4M0w4LjUgOCAxLjMxNiA2LjY1M0ExIDEgMCAwIDEgLjUgNS42N1YxLjE2M1pcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBVc2VySWNvbigpIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHdpZHRoPVwiMThcIlxuICAgICAgaGVpZ2h0PVwiMThcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGggZD1cIk0xOSAyMXYtMmE0IDQgMCAwIDAtNC00SDlhNCA0IDAgMCAwLTQgNHYyXCIgLz5cbiAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiN1wiIHI9XCI0XCIgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIExvY2tJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgY2xhc3NOYW1lPVwibHVjaWRlIGx1Y2lkZS1sb2NrXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjExXCIgeD1cIjNcIiB5PVwiMTFcIiByeD1cIjJcIiByeT1cIjJcIiAvPlxuICAgICAgPHBhdGggZD1cIk03IDExVjdhNSA1IDAgMCAxIDEwIDB2NFwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTmV3Q2hhdEljb24oeyBjbGFzc05hbWUgPSAnJyB9OiB7IGNsYXNzTmFtZT86IHN0cmluZyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbigndGV4dC1ibGFjayBkYXJrOnRleHQtd2hpdGUnLCBjbGFzc05hbWUpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgY2xpcFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgZD1cIk0xNi43OTI5IDIuNzkyODlDMTguMDExOCAxLjU3Mzk0IDE5Ljk4ODIgMS41NzM5NCAyMS4yMDcxIDIuNzkyODlDMjIuNDI2MSA0LjAxMTg0IDIyLjQyNjEgNS45ODgxNSAyMS4yMDcxIDcuMjA3MTFMMTIuNzA3MSAxNS43MDcxQzEyLjUxOTYgMTUuODk0NiAxMi4yNjUyIDE2IDEyIDE2SDlDOC40NDc3MiAxNiA4IDE1LjU1MjMgOCAxNVYxMkM4IDExLjczNDggOC4xMDUzNiAxMS40ODA0IDguMjkyODkgMTEuMjkyOUwxNi43OTI5IDIuNzkyODlaTTE5Ljc5MjkgNC4yMDcxMUMxOS4zNTUgMy43NjkyIDE4LjY0NSAzLjc2OTIgMTguMjA3MSA0LjIwNzFMMTAgMTIuNDE0MlYxNEgxMS41ODU4TDE5Ljc5MjkgNS43OTI4OUMyMC4yMzA4IDUuMzU0OTkgMjAuMjMwOCA0LjY0NTAxIDE5Ljc5MjkgNC4yMDcxMVpNNiA1QzUuNDQ3NzIgNSA1IDUuNDQ3NzEgNSA2VjE4QzUgMTguNTUyMyA1LjQ0NzcyIDE5IDYgMTlIMThDMTguNTUyMyAxOSAxOSAxOC41NTIzIDE5IDE4VjE0QzE5IDEzLjQ0NzcgMTkuNDQ3NyAxMyAyMCAxM0MyMC41NTIzIDEzIDIxIDEzLjQ0NzcgMjEgMTRWMThDMjEgMTkuNjU2OSAxOS42NTY5IDIxIDE4IDIxSDZDNC4zNDMxNSAyMSAzIDE5LjY1NjkgMyAxOFY2QzMgNC4zNDMxNCA0LjM0MzE1IDMgNiAzSDEwQzEwLjU1MjMgMyAxMSAzLjQ0NzcxIDExIDRDMTEgNC41NTIyOCAxMC41NTIzIDUgMTAgNUg2WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEV4cGVyaW1lbnRJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT1cImljb24tc21cIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTkgM0gxNU05IDNWOS4yNzU5QzkgOS43NDM3NyA4LjgzNTk3IDEwLjE5NjggOC41MzY0NCAxMC41NTYzTDQuODUwODUgMTQuOTc5QzQuMzAxMDggMTUuNjM4NyA0IDE2LjQ3MDMgNCAxNy4zMjkxVjE3LjMyOTFDNCAxOS4zNTY1IDUuNjQzNTMgMjEgNy42NzA5NCAyMUgxNi4zMjkxQzE4LjM1NjUgMjEgMjAgMTkuMzU2NSAyMCAxNy4zMjkxVjE3LjMyOTFDMjAgMTYuNDcwMyAxOS42OTg5IDE1LjYzODcgMTkuMTQ5MiAxNC45NzlMMTUuNDYzNiAxMC41NTYzQzE1LjE2NCAxMC4xOTY4IDE1IDkuNzQzNzcgMTUgOS4yNzU5VjNNOSAzSDhNMTUgM0gxNlwiXG4gICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgPjwvcGF0aD5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNNSAxNC43NzRDMTEuNSAxMi44MzkgMTIuMTUgMTYuNzA4OSAxOCAxNFwiXG4gICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscy8nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBHb29nbGUoe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICcnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIGNvbnN0IHVuaXQgPSAnNDEnO1xuICBjb25zdCBoZWlnaHQgPSBzaXplO1xuICBjb25zdCB3aWR0aCA9IHNpemU7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHdpZHRoPVwiMjRweFwiXG4gICAgICBoZWlnaHQ9XCIyNHB4XCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgNTEyIDUxMlwiXG4gICAgICBzdHJva2VXaWR0aD1cIjEuNVwiXG4gICAgICBjbGFzc05hbWU9e2NuKGNsYXNzTmFtZSwgJycpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aCBkPVwiTTQ3My4xNiwyMjEuNDhsLTIuMjYtOS41OUgyNjIuNDZ2ODguMjJIMzg3Yy0xMi45Myw2MS40LTcyLjkzLDkzLjcyLTEyMS45NCw5My43Mi0zNS42NiwwLTczLjI1LTE1LTk4LjEzLTM5LjExYTE0MC4wOCwxNDAuMDgsMCwwLDEtNDEuOC05OC44OGMwLTM3LjE2LDE2LjctNzQuMzMsNDEtOTguNzhzNjEtMzguMTMsOTcuNDktMzguMTNjNDEuNzksMCw3MS43NCwyMi4xOSw4Mi45NCwzMi4zMWw2Mi42OS02Mi4zNkMzOTAuODYsNzIuNzIsMzQwLjM0LDMyLDI2MS42LDMyaDBjLTYwLjc1LDAtMTE5LDIzLjI3LTE2MS41OCw2NS43MUM1OCwxMzkuNSwzNi4yNSwxOTkuOTMsMzYuMjUsMjU2UzU2LjgzLDM2OS40OCw5Ny41NSw0MTEuNkMxNDEuMDYsNDU2LjUyLDIwMi42OCw0ODAsMjY2LjEzLDQ4MGM1Ny43MywwLDExMi40NS0yMi42MiwxNTEuNDUtNjMuNjYsMzguMzQtNDAuNCw1OC4xNy05Ni4zLDU4LjE3LTE1NC45QzQ3NS43NSwyMzYuNzcsNDczLjI3LDIyMi4xMiw0NzMuMTYsMjIxLjQ4WlwiPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMvJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQmlydGhkYXlJY29uKHsgY2xhc3NOYW1lID0gJycgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHZlcnNpb249XCIxLjFcIlxuICAgICAgdmlld0JveD1cIjAgMCAyMzMuMzMgMjkwXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgeG1sbnNYbGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIlxuICAgICAgY2xhc3NOYW1lPXtjbignaC05IHctOScsIGNsYXNzTmFtZSl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxkZWZzPlxuICAgICAgICA8bGluZWFyR3JhZGllbnRcbiAgICAgICAgICBpZD1cImxpbmVhckdyYWRpZW50MTg0MlwiXG4gICAgICAgICAgeDE9XCIxNjMuOTJcIlxuICAgICAgICAgIHgyPVwiMTczLjY2XCJcbiAgICAgICAgICB5MT1cIjIyLjIxMlwiXG4gICAgICAgICAgeTI9XCItNi41Nzg0XCJcbiAgICAgICAgICBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSguMTAzOTEgLjA1MDE0MylcIlxuICAgICAgICAgIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3RvcCBzdG9wQ29sb3I9XCIjNjQwYTYyXCIgb2Zmc2V0PVwiMFwiIC8+XG4gICAgICAgICAgPHN0b3Agc3RvcENvbG9yPVwiIzg1MjI4M1wiIG9mZnNldD1cIi40OTkxN1wiIC8+XG4gICAgICAgICAgPHN0b3Agc3RvcENvbG9yPVwiIzY0MGE2MlwiIG9mZnNldD1cIjFcIiAvPlxuICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgPC9kZWZzPlxuICAgICAgPGc+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgdHJhbnNmb3JtPVwibWF0cml4KC40MzQxNiAuOTAwODQgLS44OTk2NiAuNDM2NiAwIDApXCJcbiAgICAgICAgICBkPVwibTI1OS4yOS0xMjYuMDNhMjMyLjIgMjM3LjU2IDAgMCAxLTE3LjQxMiAyMzEuMzRsLTE5My4zMi0xMzEuNTl6XCJcbiAgICAgICAgICBmaWxsPVwidXJsKCNsaW5lYXJHcmFkaWVudDE4NDIpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICB0cmFuc2Zvcm09XCJtYXRyaXgoLjY5NjcgLjA1MTkyNiAtLjA1MTkyNiAuNjk2NyAzNS41NzggMjMuMTk2KVwiXG4gICAgICAgICAgZD1cIm01MC44MTggMzEuNDE1Yy0xLjQ2NTQgMi40NzQ5LTEwLjgzOCAyLjQxOTUtMTIuOTk3IDQuMzIwNC0yLjE1ODQgMS45MDA5LTMuMjg4IDExLjIwNi01LjkyODIgMTIuMzQ3LTIuNjQwMiAxLjE0MDktMTAuMTkxLTQuNDEzMi0xMy4wNTQtNC4xNDQxLTIuODYzNiAwLjI2OTE3LTkuMjQ2NiA3LjEzMy0xMi4wNTMgNi41MDQxLTIuODA2Ni0wLjYyODg5LTUuNjUwMy05LjU2MDItOC4xMjUyLTExLjAyNi0yLjQ3NDktMS40NjU0LTExLjY3MyAwLjMzNTcyLTEzLjU3NC0xLjgyMjdzMS4wNDgyLTExLjA1Ni0wLjA5MjctMTMuNjk2Yy0xLjE0MDktMi42NDAyLTkuNjQxMi02LjU4OTgtOS45MTA0LTkuNDUzMy0wLjI2OTE3LTIuODYzNiA3LjM0NjMtOC4zMjggNy45NzUyLTExLjEzNSAwLjYyODg5LTIuODA2Ni0zLjkyNjUtMTAuOTk4LTIuNDYxMi0xMy40NzMgMS40NjU0LTIuNDc0OSAxMC44MzgtMi40MTk1IDEyLjk5Ny00LjMyMDQgMi4xNTg0LTEuOTAwOSAzLjI4OC0xMS4yMDYgNS45MjgyLTEyLjM0NyAyLjY0MDItMS4xNDA5IDEwLjE5MSA0LjQxMzIgMTMuMDU0IDQuMTQ0MSAyLjg2MzYtMC4yNjkxNyA5LjI0NjYtNy4xMzMgMTIuMDUzLTYuNTA0MSAyLjgwNjYgMC42Mjg4OSA1LjY1MDMgOS41NjAyIDguMTI1MiAxMS4wMjZzMTEuNjczLTAuMzM1NzIgMTMuNTc0IDEuODIyN2MxLjkwMDkgMi4xNTg0LTEuMDQ4MiAxMS4wNTYgMC4wOTI3IDEzLjY5NiAxLjE0MDkgMi42NDAyIDkuNjQxMiA2LjU4OTggOS45MTA0IDkuNDUzMyAwLjI2OTE3IDIuODYzNS03LjM0NjMgOC4zMjgtNy45NzUyIDExLjEzNS0wLjYyODg5IDIuODA2NiAzLjkyNjUgMTAuOTk4IDIuNDYxMiAxMy40NzN6XCJcbiAgICAgICAgICBmaWxsPVwiI2ZmOWQ3OFwiXG4gICAgICAgICAgc3Ryb2tlPVwiI2YyOTQ3MlwiXG4gICAgICAgICAgc3Ryb2tlV2lkdGg9XCI0Ljc4NzdcIlxuICAgICAgICAvPlxuICAgICAgICA8Y2lyY2xlIGN4PVwiMTcwLjM2XCIgY3k9XCIyMTUuNzZcIiByPVwiMTIuOTAzXCIgZmlsbD1cIiNjZmZmZmZcIiAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJtMjIwLjc3IDE3NC43N2MtODguNTI2IDEwMS4wMy0xOTEuMjEgODUuNzMxLTIwOS41IDgyLjE0Mi0yLjIxMDEtMmUtNSAtMi42Njg2IDAuNDI0MjYtMy40MzcgMi4wMDIxbC0xLjcwNDIgNy41MDI4YzAuMDU2MTk3IDIuMzYwMyAwLjM3NTQ0IDIuNjQyOCAxLjkxMjEgMy41NDA5IDE4LjM5NiAzLjM3NDYgMTMwLjI3IDE5LjQ4OCAyMjMuNDYtODYuODgxIDAuNjQwMTEtMS41MDk1IDAuNDY2NTMtMy4xMzI0LTAuNTkxMzctNC43MzM3bC01LjE1NTgtMy42NDgyYy0xLjU4Ni0wLjg3NDMtMy45NTI0LTAuOTQzMzItNC45ODM3IDAuMDc1MXpcIlxuICAgICAgICAgIGNvbG9yPVwiIzAwMDAwMFwiXG4gICAgICAgICAgZmlsbD1cIiNmZjlkNzhcIlxuICAgICAgICAgIHN0cm9rZT1cIiNmMjk0NzJcIlxuICAgICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgIHN0cm9rZVdpZHRoPVwiMi44OTEzXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGcgZmlsbD1cIiNjZmZmZmZcIj5cbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiNzIuNjg0XCIgY3k9XCI5OS40N1wiIHI9XCIxMi45MDNcIiAvPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI5OS4xNDRcIiBjeT1cIjE3Mi4zMlwiIHI9XCIxMi45MDNcIiAvPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI1OS42MTdcIiBjeT1cIjIxNC43OFwiIHI9XCIxMi45MDNcIiAvPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMzUuNFwiIGN5PVwiMTE4LjQyXCIgcj1cIjEyLjkwM1wiIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIHRyYW5zZm9ybT1cInJvdGF0ZSgzOC42NilcIlxuICAgICAgICAgICAgZD1cIm0yNTQuMjEtMS45NjA4YTEyLjkwMyAxMi45MDMgMCAwIDEtNi40ODUyIDExLjE5NCAxMi45MDMgMTIuOTAzIDAgMCAxLTEyLjkzNy0wLjA1ODIgMTIuOTAzIDEyLjkwMyAwIDAgMS02LjM4NDMtMTEuMjUybDEyLjkwMyAwLjExNjF6XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJtMjkuNDc2IDE1OC4xNmExMi45MDMgMTIuOTAzIDAgMCAwLTMuNjU2MiAwLjUyOTNsLTMuMzY5MSAyMy4xODlhMTIuOTAzIDEyLjkwMyAwIDAgMCA3LjAyNTQgMi4wODc5IDEyLjkwMyAxMi45MDMgMCAwIDAgMTIuOTA0LTEyLjkwNCAxMi45MDMgMTIuOTAzIDAgMCAwLTEyLjkwNC0xMi45MDJ6XCIgLz5cbiAgICAgICAgPC9nPlxuICAgICAgPC9nPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXNzaXN0YW50SWNvbih7XG4gIGNsYXNzTmFtZSA9ICcnLFxuICBzaXplID0gJzFlbScsXG59OiB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgc2l6ZT86IHN0cmluZyB8IG51bWJlcjtcbn0pIHtcbiAgY29uc3QgdW5pdCA9IDI0O1xuICBjb25zdCBoZWlnaHQgPSBzaXplO1xuICBjb25zdCB3aWR0aCA9IHNpemU7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgaGVpZ2h0PXtoZWlnaHR9XG4gICAgICB2aWV3Qm94PXtgMCAwICR7dW5pdH0gJHt1bml0fWB9XG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ3RleHQtdG9rZW4tc2Vjb25kYXJ5IGgtMi8zIHctMi8zJywgY2xhc3NOYW1lKX1cbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aCBkPVwiTTIxIDE2VjhhMiAyIDAgMCAwLTEtMS43M2wtNy00YTIgMiAwIDAgMC0yIDBsLTcgNEEyIDIgMCAwIDAgMyA4djhhMiAyIDAgMCAwIDEgMS43M2w3IDRhMiAyIDAgMCAwIDIgMGw3LTRBMiAyIDAgMCAwIDIxIDE2elwiIC8+XG4gICAgICA8cG9seWxpbmUgcG9pbnRzPVwiMy4yNyA2Ljk2IDEyIDEyLjAxIDIwLjczIDYuOTZcIiAvPlxuICAgICAgPGxpbmUgeDE9XCIxMlwiIHkxPVwiMjIuMDhcIiB4Mj1cIjEyXCIgeTI9XCIxMlwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTcGFya2xlcyh7IGNsYXNzTmFtZSA9ICcnLCBzaXplID0gMjQgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2ljb24tbWQgc2hyaW5rLTAnLCBjbGFzc05hbWUpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTE5LjM5NzUgMS4zNTQ5OEMxOS4zNzQ2IDEuMTUyOTMgMTkuMjAzNyAxLjAwMDIxIDE5LjAwMDQgMUMxOC43OTcxIDAuOTk5NzkzIDE4LjYyNTkgMS4xNTIxNyAxOC42MDI2IDEuMzU0MTdDMTguNDc5OCAyLjQxODk0IDE4LjE2MjcgMy4xNTY5MiAxNy42NTk4IDMuNjU5ODNDMTcuMTU2OSA0LjE2Mjc0IDE2LjQxODkgNC40Nzk4MyAxNS4zNTQyIDQuNjAyNjRDMTUuMTUyMiA0LjYyNTkzIDE0Ljk5OTggNC43OTcwNyAxNSA1LjAwMDQxQzE1LjAwMDIgNS4yMDM3NSAxNS4xNTI5IDUuMzc0NTcgMTUuMzU1IDUuMzk3NDZDMTYuNDAxOSA1LjUxNjA1IDE3LjE1NjIgNS44MzMwNCAxNy42NzE2IDYuMzM5MDZDMTguMTg0NSA2Ljg0MjY5IDE4LjUwNzggNy41Nzk5OCAxOC42MDE2IDguNjM1MzlDMTguNjE5OSA4Ljg0MTk1IDE4Ljc5MzEgOS4wMDAyMyAxOS4wMDA1IDlDMTkuMjA3OCA4Ljk5OTc3IDE5LjM4MDYgOC44NDEwOSAxOS4zOTg1IDguNjM0NUMxOS40ODgzIDcuNTk2NzMgMTkuODExNCA2Ljg0MzI4IDIwLjMyNzMgNi4zMjczNUMyMC44NDMzIDUuODExNDIgMjEuNTk2NyA1LjQ4ODM0IDIyLjYzNDUgNS4zOTg1MUMyMi44NDExIDUuMzgwNjMgMjIuOTk5OCA1LjIwNzgyIDIzIDUuMDAwNDVDMjMuMDAwMiA0Ljc5MzA4IDIyLjg0MiA0LjYxOTkyIDIyLjYzNTQgNC42MDE1N0MyMS41OCA0LjUwNzgyIDIwLjg0MjcgNC4xODQ0NyAyMC4zMzkxIDMuNjcxNTdDMTkuODMzIDMuMTU2MjMgMTkuNTE2IDIuNDAxOTIgMTkuMzk3NSAxLjM1NDk4WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTEgM0MxMS40ODMzIDMgMTEuODk3NCAzLjM0NTYyIDExLjk4MzkgMy44MjExMUMxMi40NjM3IDYuNDYwNDMgMTMuMjc5IDguMjM5ODMgMTQuNTE5NiA5LjQ4MDM5QzE1Ljc2MDIgMTAuNzIxIDE3LjUzOTYgMTEuNTM2MyAyMC4xNzg5IDEyLjAxNjFDMjAuNjU0NCAxMi4xMDI2IDIxIDEyLjUxNjcgMjEgMTNDMjEgMTMuNDgzMyAyMC42NTQ0IDEzLjg5NzQgMjAuMTc4OSAxMy45ODM5QzE3LjUzOTYgMTQuNDYzNyAxNS43NjAyIDE1LjI3OSAxNC41MTk2IDE2LjUxOTZDMTMuMjc5IDE3Ljc2MDIgMTIuNDYzNyAxOS41Mzk2IDExLjk4MzkgMjIuMTc4OUMxMS44OTc0IDIyLjY1NDQgMTEuNDgzMyAyMyAxMSAyM0MxMC41MTY3IDIzIDEwLjEwMjYgMjIuNjU0NCAxMC4wMTYxIDIyLjE3ODlDOS41MzYyNSAxOS41Mzk2IDguNzIwOTYgMTcuNzYwMiA3LjQ4MDM5IDE2LjUxOTZDNi4yMzk4MyAxNS4yNzkgNC40NjA0MyAxNC40NjM3IDEuODIxMTEgMTMuOTgzOUMxLjM0NTYyIDEzLjg5NzQgMSAxMy40ODMzIDEgMTNDMSAxMi41MTY3IDEuMzQ1NjIgMTIuMTAyNiAxLjgyMTExIDEyLjAxNjFDNC40NjA0MyAxMS41MzYzIDYuMjM5ODMgMTAuNzIxIDcuNDgwMzkgOS40ODAzOUM4LjcyMDk2IDguMjM5ODMgOS41MzYyNSA2LjQ2MDQzIDEwLjAxNjEgMy44MjExMUMxMC4xMDI2IDMuMzQ1NjIgMTAuNTE2NyAzIDExIDNaTTUuNjY2MTggMTNDNi45MjQ3IDEzLjUyMjYgNy45OTc4OCAxNC4yMDg3IDguODk0NjEgMTUuMTA1NEM5Ljc5MTM0IDE2LjAwMjEgMTAuNDc3NCAxNy4wNzUzIDExIDE4LjMzMzhDMTEuNTIyNiAxNy4wNzUzIDEyLjIwODcgMTYuMDAyMSAxMy4xMDU0IDE1LjEwNTRDMTQuMDAyMSAxNC4yMDg3IDE1LjA3NTMgMTMuNTIyNiAxNi4zMzM4IDEzQzE1LjA3NTMgMTIuNDc3NCAxNC4wMDIxIDExLjc5MTMgMTMuMTA1NCAxMC44OTQ2QzEyLjIwODcgOS45OTc4OCAxMS41MjI2IDguOTI0NyAxMSA3LjY2NjE4QzEwLjQ3NzQgOC45MjQ3IDkuNzkxMzQgOS45OTc4OCA4Ljg5NDYxIDEwLjg5NDZDNy45OTc4OCAxMS43OTEzIDYuOTI0NyAxMi40Nzc0IDUuNjY2MTggMTNaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5cbnR5cGUgU3BlZWNoSWNvblByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTcGVlY2hJY29uKHsgY2xhc3NOYW1lIH06IFNwZWVjaEljb25Qcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgY2xhc3NOYW1lPXtjbihjbGFzc05hbWUpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aCBkPVwiTTIgMTB2M1wiIC8+XG4gICAgICA8cGF0aCBkPVwiTTYgNnYxMVwiIC8+XG4gICAgICA8cGF0aCBkPVwiTTEwIDN2MThcIiAvPlxuICAgICAgPHBhdGggZD1cIk0xNCA4djdcIiAvPlxuICAgICAgPHBhdGggZD1cIk0xOCA1djEzXCIgLz5cbiAgICAgIDxwYXRoIGQ9XCJNMjIgMTB2M1wiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJ0eXBlIFNhdmVJY29uUHJvcHMgPSB7XG4gIHNpemU/OiBzdHJpbmcgfCBudW1iZXI7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNhdmVJY29uKHsgc2l6ZSA9ICcxZW0nLCBjbGFzc05hbWUgfTogU2F2ZUljb25Qcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHZpZXdCb3g9XCI2NCA2NCA4OTYgODk2XCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMi41XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aCBkPVwiTTg5My4zIDI5My4zTDczMC43IDEzMC43Yy03LjUtNy41LTE2LjctMTMtMjYuNy0xNlYxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMzOC41YzAtMTctNi43LTMzLjItMTguNy00NS4yek0zODQgMTg0aDI1NnYxMDRIMzg0VjE4NHptNDU2IDY1NkgxODRWMTg0aDEzNnYxMzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIwNS44bDEzNiAxMzZWODQwek01MTIgNDQyYy03OS41IDAtMTQ0IDY0LjUtMTQ0IDE0NHM2NC41IDE0NCAxNDQgMTQ0IDE0NC02NC41IDE0NC0xNDQtNjQuNS0xNDQtMTQ0LTE0NHptMCAyMjRjLTQ0LjIgMC04MC0zNS44LTgwLTgwczM1LjgtODAgODAtODAgODAgMzUuOCA4MCA4MC0zNS44IDgwLTgwIDgwelwiPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscy8nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDaXJjbGVIZWxwSWNvbih7IGNsYXNzTmFtZSA9ICdpY29uLW1kLWhlYXZ5Jywgc2l6ZSA9ICcxZW0nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGhlaWdodD17c2l6ZX1cbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lKX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIC8+XG4gICAgICA8cGF0aCBkPVwiTTkuMDkgOWEzIDMgMCAwIDEgNS44MyAxYzAgMi0zIDMtMyAzXCIgLz5cbiAgICAgIDxwYXRoIGQ9XCJNMTIgMTdoLjAxXCIgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEJlZHJvY2tJY29uKHtcbiAgc2l6ZSA9IDI1LFxuICBjbGFzc05hbWUgPSAnJyxcbn06IHtcbiAgc2l6ZT86IG51bWJlcjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2ZpbGwtY3VycmVudCB0ZXh0LWJsYWNrJywgY2xhc3NOYW1lKX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPGcgZmlsbD1cImN1cnJlbnRDb2xvclwiPlxuICAgICAgICA8cGF0aCBkPVwiTTEyLDE4LjEzOTcwMTQgTDkuNTc0LDE4Ljk0ODcwMTQgTDguNjI4LDE4LjMxNzcwMTQgTDkuNjU4LDE3Ljk3MzcwMTQgTDkuMzQyLDE3LjAyNTcwMTQgTDcuNTc0LDE3LjYxNDcwMTQgTDcsMTcuMjMyNzAxNCBMNywxNC40OTk3MDE0IEM3LDE0LjMxMDcwMTQgNi44OTMsMTQuMTM3NzAxNCA2LjcyNCwxNC4wNTI3MDE0IEw1LDEzLjE5MDcwMTQgTDUsMTAuODA4NzAxNCBMNi41LDEwLjA1ODcwMTQgTDgsMTAuODA4NzAxNCBMOCwxMi40OTk3MDE0IEM4LDEyLjY4OTcwMTQgOC4xMDcsMTIuODYyNzAxNCA4LjI3NiwxMi45NDc3MDE0IEwxMC4yNzYsMTMuOTQ3NzAxNCBMMTAuNzI0LDEzLjA1MjcwMTQgTDksMTIuMTkwNzAxNCBMOSwxMC44MDg3MDE0IEwxMC43MjQsOS45NDc3MDEzNiBDMTAuODkzLDkuODYyNzAxMzYgMTEsOS42ODk3MDEzNiAxMSw5LjQ5OTcwMTM2IEwxMSw3Ljk5OTcwMTM2IEwxMCw3Ljk5OTcwMTM2IEwxMCw5LjE5MDcwMTM2IEw4LjUsOS45NDA3MDEzNiBMNyw5LjE5MDcwMTM2IEw3LDYuNzY3NzAxMzYgTDgsNi4xMDA3MDEzNiBMOCw3Ljk5OTcwMTM2IEw5LDcuOTk5NzAxMzYgTDksNS40MzQ3MDEzNiBMOS41NzQsNS4wNTE3MDEzNiBMMTIsNS44NjA3MDEzNiBMMTIsMTguMTM5NzAxNCBaIE0xNy41LDE2Ljk5OTcwMTQgQzE3Ljc3NSwxNi45OTk3MDE0IDE4LDE3LjIyMzcwMTQgMTgsMTcuNDk5NzAxNCBDMTgsMTcuNzc1NzAxNCAxNy43NzUsMTcuOTk5NzAxNCAxNy41LDE3Ljk5OTcwMTQgQzE3LjIyNSwxNy45OTk3MDE0IDE3LDE3Ljc3NTcwMTQgMTcsMTcuNDk5NzAxNCBDMTcsMTcuMjIzNzAxNCAxNy4yMjUsMTYuOTk5NzAxNCAxNy41LDE2Ljk5OTcwMTQgTDE3LjUsMTYuOTk5NzAxNCBaIE0xNi41LDUuOTk5NzAxMzYgQzE2Ljc3NSw1Ljk5OTcwMTM2IDE3LDYuMjIzNzAxMzYgMTcsNi40OTk3MDEzNiBDMTcsNi43NzU3MDEzNiAxNi43NzUsNi45OTk3MDEzNiAxNi41LDYuOTk5NzAxMzYgQzE2LjIyNSw2Ljk5OTcwMTM2IDE2LDYuNzc1NzAxMzYgMTYsNi40OTk3MDEzNiBDMTYsNi4yMjM3MDEzNiAxNi4yMjUsNS45OTk3MDEzNiAxNi41LDUuOTk5NzAxMzYgTDE2LjUsNS45OTk3MDEzNiBaIE0xOC41LDExLjk5OTcwMTQgQzE4Ljc3NSwxMS45OTk3MDE0IDE5LDEyLjIyMzcwMTQgMTksMTIuNDk5NzAxNCBDMTksMTIuNzc1NzAxNCAxOC43NzUsMTIuOTk5NzAxNCAxOC41LDEyLjk5OTcwMTQgQzE4LjIyNSwxMi45OTk3MDE0IDE4LDEyLjc3NTcwMTQgMTgsMTIuNDk5NzAxNCBDMTgsMTIuMjIzNzAxNCAxOC4yMjUsMTEuOTk5NzAxNCAxOC41LDExLjk5OTcwMTQgTDE4LjUsMTEuOTk5NzAxNCBaIE0xNy4wOTIsMTIuOTk5NzAxNCBDMTcuMjk5LDEzLjU4MDcwMTQgMTcuODQ5LDEzLjk5OTcwMTQgMTguNSwxMy45OTk3MDE0IEMxOS4zMjcsMTMuOTk5NzAxNCAyMCwxMy4zMjc3MDE0IDIwLDEyLjQ5OTcwMTQgQzIwLDExLjY3MjcwMTQgMTkuMzI3LDEwLjk5OTcwMTQgMTguNSwxMC45OTk3MDE0IEMxNy44NDksMTAuOTk5NzAxNCAxNy4yOTksMTEuNDE5NzAxNCAxNy4wOTIsMTEuOTk5NzAxNCBMMTMsMTEuOTk5NzAxNCBMMTMsOS45OTk3MDEzNiBMMTYuNSw5Ljk5OTcwMTM2IEMxNi43NzYsOS45OTk3MDEzNiAxNyw5Ljc3NjcwMTM2IDE3LDkuNDk5NzAxMzYgTDE3LDcuOTA3NzAxMzYgQzE3LjU4MSw3LjcwMDcwMTM2IDE4LDcuMTUwNzAxMzYgMTgsNi40OTk3MDEzNiBDMTgsNS42NzI3MDEzNiAxNy4zMjcsNC45OTk3MDEzNiAxNi41LDQuOTk5NzAxMzYgQzE1LjY3Myw0Ljk5OTcwMTM2IDE1LDUuNjcyNzAxMzYgMTUsNi40OTk3MDEzNiBDMTUsNy4xNTA3MDEzNiAxNS40MTksNy43MDA3MDEzNiAxNiw3LjkwNzcwMTM2IEwxNiw4Ljk5OTcwMTM2IEwxMyw4Ljk5OTcwMTM2IEwxMyw1LjQ5OTcwMTM2IEMxMyw1LjI4NDcwMTM2IDEyLjg2Miw1LjA5MzcwMTM2IDEyLjY1OCw1LjAyNTcwMTM2IEw5LjY1OCw0LjAyNTcwMTM2IEM5LjUxMSwzLjk3NjcwMTM2IDkuMzUxLDMuOTk4NzAxMzYgOS4yMjMsNC4wODM3MDEzNiBMNi4yMjMsNi4wODM3MDEzNiBDNi4wODQsNi4xNzY3MDEzNiA2LDYuMzMyNzAxMzYgNiw2LjQ5OTcwMTM2IEw2LDkuMTkwNzAxMzYgTDQuMjc2LDEwLjA1MjcwMTQgQzQuMTA3LDEwLjEzNzcwMTQgNCwxMC4zMTA3MDE0IDQsMTAuNDk5NzAxNCBMNCwxMy40OTk3MDE0IEM0LDEzLjY4OTcwMTQgNC4xMDcsMTMuODYyNzAxNCA0LjI3NiwxMy45NDc3MDE0IEw2LDE0LjgwODcwMTQgTDYsMTcuNDk5NzAxNCBDNiwxNy42NjY3MDE0IDYuMDg0LDE3LjgyMzcwMTQgNi4yMjMsMTcuOTE1NzAxNCBMOS4yMjMsMTkuOTE1NzAxNCBDOS4zMDYsMTkuOTcxNzAxNCA5LjQwMiwxOS45OTk3MDE0IDkuNSwxOS45OTk3MDE0IEM5LjU1MywxOS45OTk3MDE0IDkuNjA2LDE5Ljk5MTcwMTQgOS42NTgsMTkuOTczNzAxNCBMMTIuNjU4LDE4Ljk3MzcwMTQgQzEyLjg2MiwxOC45MDY3MDE0IDEzLDE4LjcxNTcwMTQgMTMsMTguNDk5NzAxNCBMMTMsMTUuOTk5NzAxNCBMMTUuMjkzLDE1Ljk5OTcwMTQgTDE2LjE0NiwxNi44NTM3MDE0IEwxNi4xNTksMTYuODQwNzAxNCBDMTYuMDYxLDE3LjA0MDcwMTQgMTYsMTcuMjYyNzAxNCAxNiwxNy40OTk3MDE0IEMxNiwxOC4zMjY3MDE0IDE2LjY3MywxOC45OTk3MDE0IDE3LjUsMTguOTk5NzAxNCBDMTguMzI3LDE4Ljk5OTcwMTQgMTksMTguMzI2NzAxNCAxOSwxNy40OTk3MDE0IEMxOSwxNi42NzI3MDE0IDE4LjMyNywxNS45OTk3MDE0IDE3LjUsMTUuOTk5NzAxNCBDMTcuMjYyLDE1Ljk5OTcwMTQgMTcuMDQsMTYuMDYwNzAxNCAxNi44NDEsMTYuMTU5NzAxNCBMMTYuODU0LDE2LjE0NjcwMTQgTDE1Ljg1NCwxNS4xNDY3MDE0IEMxNS43NiwxNS4wNTI3MDE0IDE1LjYzMywxNC45OTk3MDE0IDE1LjUsMTQuOTk5NzAxNCBMMTMsMTQuOTk5NzAxNCBMMTMsMTIuOTk5NzAxNCBMMTcuMDkyLDEyLjk5OTcwMTQgWlwiIC8+XG4gICAgICA8L2c+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUaHVtYlVwSWNvbih7IGNsYXNzTmFtZSA9ICcnLCBzaXplID0gJzFlbScsIGJvbGQgPSBmYWxzZSB9KSB7XG4gIHJldHVybiBib2xkID8gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTEyLjU5MiAyLjUwMzg2QzEyLjgwNDcgMi4xMzAxNCAxMy4yMzE3IDEuOTM1IDEzLjY1MiAyLjAxOTQyQzE1LjU2MjcgMi40MDMxNCAxNi43MjQ2IDQuMzYwNzkgMTYuMTUxNiA2LjIzMDg1TDE1LjMwMyA5TDE3LjAxNDIgOUMxOS42NDA5IDkgMjEuNTQ4NSAxMS41MDc5IDIwLjg1NzQgMTQuMDUyNUwxOS40OTk0IDE5LjA1MjVDMTkuMDI2NyAyMC43OTI3IDE3LjQ1MjYgMjIgMTUuNjU2MiAyMkg5Ljk2NzIxQzguODY5IDIxLjk5NzkgNy45NzkzOSAyMS4xMDMzIDcuOTc5MzkgMjBWOUg4LjMxNzM0QzguNjc0NzIgOSA5LjAwNDcgOC44MDc3MSA5LjE4MjAxIDguNDk2MTNMMTIuNTkyIDIuNTAzODZaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA+PC9wYXRoPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk01Ljk4NzYzIDlDNC4zMzc2MSA5IDMgMTAuMzQzMSAzIDEyVjE5QzMgMjAuNjU2OSA0LjMzNzYxIDIyIDUuOTg3NjMgMjJINi41MjA1NUM2LjE4MTYyIDIxLjQxMTYgNS45ODc2MyAyMC43Mjg2IDUuOTg3NjMgMjBWOVpcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICkgOiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICB3aWR0aD17c2l6ZX1cbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTIuMTMxOCAyLjUwMzg5QzEyLjMzMjEgMi4xNTMzOCAxMi43MjM1IDEuOTU3NjggMTMuMTI0IDIuMDA3NzVMMTMuNTc3OCAyLjA2NDQ3QzE2LjA0NDkgMi4zNzI4NiAxNy42MzYgNC44MzM1MyAxNi45MDQ4IDcuMjA5OTNMMTYuMzU0IDguOTk5OTlIMTcuMDcyMkMxOS43MDk3IDguOTk5OTkgMjEuNjI1MyAxMS41MDc5IDIwLjkzMTMgMTQuMDUyNUwxOS41Njc3IDE5LjA1MjVDMTkuMDkzMSAyMC43OTI3IDE3LjUxMjQgMjIgMTUuNzA4NiAyMkg2QzQuMzQzMTUgMjIgMyAyMC42NTY4IDMgMTlWMTJDMyAxMC4zNDMxIDQuMzQzMTUgOC45OTk5OSA2IDguOTk5OTlIOEM4LjI1OTUyIDguOTk5OTkgOC40OTkxNCA4Ljg2MDk0IDguNjI3OSA4LjYzNTYxTDEyLjEzMTggMi41MDM4OVpNMTAgMjBIMTUuNzA4NkMxNi42MTA1IDIwIDE3LjQwMDggMTkuMzk2NCAxNy42MzgxIDE4LjUyNjJMMTkuMDAxOCAxMy41MjYyQzE5LjM0ODggMTIuMjUzOSAxOC4zOTEgMTEgMTcuMDcyMiAxMUgxNUMxNC42ODI3IDExIDE0LjM4NDEgMTAuODQ5NCAxNC4xOTU2IDEwLjU5NDFDMTQuMDA3MSAxMC4zMzg4IDEzLjk1MDkgMTAuMDA5MiAxNC4wNDQyIDkuNzA1OTFMMTQuOTkzMiA2LjYyMTc1QzE1LjMzODQgNS40OTk4NCAxNC42NDg0IDQuMzQwMzYgMTMuNTMxOSA0LjA4NDY4TDEwLjM2NDQgOS42Mjc4OUMxMC4wNTIyIDEwLjE3NDIgOS41NjY5MSAxMC41ODU5IDkgMTAuODA5OFYxOUM5IDE5LjU1MjMgOS40NDc3MiAyMCAxMCAyMFpNNyAxMVYxOUM3IDE5LjM1MDYgNy4wNjAxNSAxOS42ODcyIDcuMTcwNzEgMjBINkM1LjQ0NzcyIDIwIDUgMTkuNTUyMyA1IDE5VjEyQzUgMTEuNDQ3NyA1LjQ0NzcyIDExIDYgMTFIN1pcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUaHVtYkRvd25JY29uKHsgY2xhc3NOYW1lID0gJycsIHNpemUgPSAnMWVtJywgYm9sZCA9IGZhbHNlIH0pIHtcbiAgcmV0dXJuIGJvbGQgPyAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICB3aWR0aD17c2l6ZX1cbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTEuNDA3OSAyMS40OTYxQzExLjE5NTMgMjEuODY5OCAxMC43NjgzIDIyLjA2NDkgMTAuMzQ4IDIxLjk4MDVDOC40MzczIDIxLjU5NjggNy4yNzU0MSAxOS42MzkxIDcuODQ4NDQgMTcuNzY5MUw4LjY5Njk3IDE0Ljk5OTlMNi45ODU3NyAxNC45OTk5QzQuMzU5MTUgMTQuOTk5OSAyLjQ1MTUxIDEyLjQ5MiAzLjE0MjYyIDkuOTQ3NDdMNC41MDA2MyA0Ljk0NzQ3QzQuOTczMjkgMy4yMDcyMiA2LjU0NzQxIDEuOTk5OTQgOC4zNDM3OCAxLjk5OTk0SDE0LjAzMjhDMTUuMTMxIDIuMDAyMDcgMTYuMDIwNiAyLjg5NjY4IDE2LjAyMDYgMy45OTk5NFYxNC45OTk5SDE1LjY4MjdDMTUuMzI1MyAxNC45OTk5IDE0Ljk5NTMgMTUuMTkyMiAxNC44MTggMTUuNTAzOEwxMS40MDc5IDIxLjQ5NjFaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA+PC9wYXRoPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0xOC4wMTI0IDE0Ljk5OTlDMTkuNjYyNCAxNC45OTk5IDIxIDEzLjY1NjggMjEgMTEuOTk5OVY0Ljk5OTk0QzIxIDMuMzQzMDggMTkuNjYyNCAxLjk5OTk0IDE4LjAxMjQgMS45OTk5NEgxNy40Nzk0QzE3LjgxODQgMi41ODgyOSAxOC4wMTI0IDMuMjcxMzYgMTguMDEyNCAzLjk5OTk0VjE0Ljk5OTlaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApIDogKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTExLjg3MjcgMjEuNDk2MUMxMS42NzI1IDIxLjg0NjYgMTEuMjgxMSAyMi4wNDIzIDEwLjg4MDUgMjEuOTkyMkwxMC40MjY3IDIxLjkzNTVDNy45NTk1OCAyMS42MjcxIDYuMzY4NTUgMTkuMTY2NSA3LjA5OTc1IDE2Ljc5MDFMNy42NTA1NCAxNUg2LjkzMjI2QzQuMjk0NzYgMTUgMi4zNzkyMyAxMi40OTIxIDMuMDczMiA5Ljk0NzUzTDQuNDM2ODQgNC45NDc1M0M0LjkxMTQ1IDMuMjA3MjggNi40OTIwOSAyIDguMjk1ODkgMkgxOC4wMDQ1QzE5LjY2MTQgMiAyMS4wMDQ1IDMuMzQzMTUgMjEuMDA0NSA1VjEyQzIxLjAwNDUgMTMuNjU2OSAxOS42NjE0IDE1IDE4LjAwNDUgMTVIMTYuMDA0NUMxNS43NDUgMTUgMTUuNTA1NCAxNS4xMzkxIDE1LjM3NjYgMTUuMzY0NEwxMS44NzI3IDIxLjQ5NjFaTTE0LjAwNDUgNEg4LjI5NTg5QzcuMzkzOTkgNCA2LjYwMzY3IDQuNjAzNjQgNi4zNjYzNyA1LjQ3Mzc2TDUuMDAyNzMgMTAuNDczOEM0LjY1NTc0IDExLjc0NiA1LjYxMzUxIDEzIDYuOTMyMjYgMTNIOS4wMDQ1MUM5LjMyMTg1IDEzIDkuNjIwMzYgMTMuMTUwNiA5LjgwODkgMTMuNDA1OUM5Ljk5NzQzIDEzLjY2MTIgMTAuMDUzNiAxMy45OTA4IDkuOTYwMjggMTQuMjk0MUw5LjAxMTMxIDE3LjM3ODJDOC42NjYxIDE4LjUwMDIgOS4zNTYwOCAxOS42NTk2IDEwLjQ3MjYgMTkuOTE1M0wxMy42NDAxIDE0LjM3MjFDMTMuOTUyMyAxMy44MjU4IDE0LjQzNzYgMTMuNDE0MSAxNS4wMDQ1IDEzLjE5MDJWNUMxNS4wMDQ1IDQuNDQ3NzIgMTQuNTU2OCA0IDE0LjAwNDUgNFpNMTcuMDA0NSAxM1Y1QzE3LjAwNDUgNC42NDkzNyAxNi45NDQ0IDQuMzEyNzggMTYuODMzOCA0SDE4LjAwNDVDMTguNTU2OCA0IDE5LjAwNDUgNC40NDc3MiAxOS4wMDQ1IDVWMTJDMTkuMDA0NSAxMi41NTIzIDE4LjU1NjggMTMgMTguMDA0NSAxM0gxNy4wMDQ1WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFhBSWNvbih7IGNsYXNzTmFtZSA9ICcnIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgPlxuICAgICAgPHBhdGggZD1cIm0zLjAwNSA4Ljg1OCA4Ljc4MyAxMi41NDRoMy45MDRMNi45MDggOC44NTh6TTYuOTA1IDE1LjgyNSAzIDIxLjQwMmgzLjkwN2wxLjk1MS0yLjc4OHpNMTYuNTg1IDJsLTYuNzUgOS42NCAxLjk1MyAyLjc5TDIwLjQ5MiAyek0xNy4yOTIgNy45NjV2MTMuNDM3aDMuMlYzLjM5NXpcIj48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQZXJzb25hbGl6YXRpb25JY29uKHsgY2xhc3NOYW1lID0gJycgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT17YGljb24tc20gJHtjbGFzc05hbWV9YH1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgY2xpcFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgZD1cIk0xMiA0QzEwLjM0MzEgNCA5IDUuMzQzMTUgOSA3QzkgOC42NTY4NSAxMC4zNDMxIDEwIDEyIDEwQzEzLjY1NjkgMTAgMTUgOC42NTY4NSAxNSA3QzE1IDUuMzQzMTUgMTMuNjU2OSA0IDEyIDRaTTcgN0M3IDQuMjM4NTggOS4yMzg1OCAyIDEyIDJDMTQuNzYxNCAyIDE3IDQuMjM4NTggMTcgN0MxNyA5Ljc2MTQyIDE0Ljc2MTQgMTIgMTIgMTJDOS4yMzg1OCAxMiA3IDkuNzYxNDIgNyA3Wk0xOS4wMjc3IDE1LjYyNTVDMTguNjg1OSAxNS41NjQ2IDE4LjE5NDEgMTUuNjUzNCAxNy42ODIgMTYuMTgyOUMxNy40OTM2IDE2LjM3NzcgMTcuMjM0MiAxNi40ODc3IDE2Ljk2MzIgMTYuNDg3N0MxNi42OTIyIDE2LjQ4NzcgMTYuNDMyOCAxNi4zNzc3IDE2LjI0NDQgMTYuMTgyOUMxNS43MzIyIDE1LjY1MzQgMTUuMjQwNSAxNS41NjQ2IDE0Ljg5ODcgMTUuNjI1NUMxNC41MzgxIDE1LjY4OTcgMTQuMjE3OSAxNS45Mzg0IDE0LjA2MjMgMTYuMzI3NUMxMy44MDQ4IDE2Ljk3MTMgMTMuOTAxNCAxOC42NjIgMTYuOTYzMiAyMC40NjE3QzIwLjAyNDkgMTguNjYyIDIwLjEyMTYgMTYuOTcxMyAxOS44NjQgMTYuMzI3NUMxOS43MDg0IDE1LjkzODQgMTkuMzg4MiAxNS42ODk3IDE5LjAyNzcgMTUuNjI1NVpNMjEuNzIxIDE1LjU4NDdDMjIuNTc0OCAxNy43MTkxIDIxLjI2NTQgMjAuNDI5IDE3LjQzNyAyMi40ODkyQzE3LjE0MTIgMjIuNjQ4NCAxNi43ODUyIDIyLjY0ODQgMTYuNDg5MyAyMi40ODkyQzEyLjY2MDkgMjAuNDI5MSAxMS4zNTE2IDE3LjcxOTEgMTIuMjA1MyAxNS41ODQ3QzEyLjYxMTcgMTQuNTY4OSAxMy40OTE3IDEzLjg0NDYgMTQuNTQ4MSAxMy42NTY1QzE1LjM1NjcgMTMuNTEyNSAxNi4yMDMyIDEzLjY5MTUgMTYuOTYzMiAxNC4xOTI0QzE3LjcyMzIgMTMuNjkxNSAxOC41Njk3IDEzLjUxMjUgMTkuMzc4MyAxMy42NTY1QzIwLjQzNDcgMTMuODQ0NiAyMS4zMTQ3IDE0LjU2ODkgMjEuNzIxIDE1LjU4NDdaTTkuOTI1OTcgMTQuMjA0OUMxMC4xMzQ1IDE0LjcxNjMgOS44ODkgMTUuMjk5OSA5LjM3NzYgMTUuNTA4NEM3LjA2MTMxIDE2LjQ1MyA1LjUgMTguNTgxMyA1LjUgMjAuOTk5OUM1LjUgMjEuNTUyMiA1LjA1MjI4IDIxLjk5OTkgNC41IDIxLjk5OTlDMy45NDc3MiAyMS45OTk5IDMuNSAyMS41NTIyIDMuNSAyMC45OTk5QzMuNSAxNy42Nzc3IDUuNjQxIDE0Ljg3MjMgOC42MjI0IDEzLjY1NjVDOS4xMzM4IDEzLjQ0OCA5LjcxNzQzIDEzLjY5MzUgOS45MjU5NyAxNC4yMDQ5WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1DUEljb24oeyBjbGFzc05hbWUgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMTk1XCJcbiAgICAgIGhlaWdodD1cIjE5NVwiXG4gICAgICB2aWV3Qm94PVwiMCAyIDE5NSAxOTVcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0yNSA5Ny44NTI4TDkyLjg4MjMgMjkuOTcwNkMxMDIuMjU1IDIwLjU5OCAxMTcuNDUxIDIwLjU5OCAxMjYuODIzIDI5Ljk3MDZWMjkuOTcwNkMxMzYuMTk2IDM5LjM0MzEgMTM2LjE5NiA1NC41MzkxIDEyNi44MjMgNjMuOTExN0w3NS41NTgxIDExNS4xNzdcIlxuICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjEyXCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTc2LjI2NTMgMTE0LjQ3TDEyNi44MjMgNjMuOTExN0MxMzYuMTk2IDU0LjUzOTEgMTUxLjM5MiA1NC41MzkxIDE2MC43NjUgNjMuOTExN0wxNjEuMTE4IDY0LjI2NTJDMTcwLjQ5MSA3My42Mzc4IDE3MC40OTEgODguODMzOCAxNjEuMTE4IDk4LjIwNjNMOTkuNzI0OCAxNTkuNkM5Ni42MDA2IDE2Mi43MjQgOTYuNjAwNiAxNjcuNzg5IDk5LjcyNDggMTcwLjkxM0wxMTIuMzMxIDE4My41MlwiXG4gICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMTJcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTA5Ljg1MyA0Ni45NDExTDU5LjY0ODIgOTcuMTQ1N0M1MC4yNzU3IDEwNi41MTggNTAuMjc1NyAxMjEuNzE0IDU5LjY0ODIgMTMxLjA4N1YxMzEuMDg3QzY5LjAyMDggMTQwLjQ1OSA4NC4yMTY4IDE0MC40NTkgOTMuNTg5NCAxMzEuMDg3TDE0My43OTQgODAuODgyMlwiXG4gICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMTJcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFZlY3Rvckljb24oeyBjbGFzc05hbWUgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMjBcIlxuICAgICAgaGVpZ2h0PVwiMjBcIlxuICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJNNy40NTk5NiAxNC4zNzVDNy40NTk5NiAxMy4zNjE2IDYuNjM4NDQgMTIuNTQgNS42MjUgMTIuNTRDNC42MTE1NiAxMi41NCAzLjc5MDA0IDEzLjM2MTYgMy43OTAwNCAxNC4zNzVDMy43OTAwNCAxNS4zODg0IDQuNjExNTYgMTYuMjEgNS42MjUgMTYuMjFDNi42Mzg0NCAxNi4yMSA3LjQ1OTk2IDE1LjM4ODQgNy40NTk5NiAxNC4zNzVaTTE2LjIxIDE0LjM3NUMxNi4yMSAxMy4zNjE2IDE1LjM4ODQgMTIuNTQgMTQuMzc1IDEyLjU0QzEzLjM2MTYgMTIuNTQgMTIuNTQgMTMuMzYxNiAxMi41NCAxNC4zNzVDMTIuNTQgMTUuMzg4NCAxMy4zNjE2IDE2LjIxIDE0LjM3NSAxNi4yMUMxNS4zODg0IDE2LjIxIDE2LjIxIDE1LjM4ODQgMTYuMjEgMTQuMzc1Wk03LjQ1OTk2IDUuNjI1QzcuNDU5OTYgNC42MTE1NiA2LjYzODQ0IDMuNzkwMDQgNS42MjUgMy43OTAwNEM0LjYxMTU2IDMuNzkwMDQgMy43OTAwNCA0LjYxMTU2IDMuNzkwMDQgNS42MjVDMy43OTAwNCA2LjYzODQ0IDQuNjExNTYgNy40NTk5NiA1LjYyNSA3LjQ1OTk2QzYuNjM4NDQgNy40NTk5NiA3LjQ1OTk2IDYuNjM4NDQgNy40NTk5NiA1LjYyNVpNMTYuMjEgNS42MjVDMTYuMjEgNC42MTE1NiAxNS4zODg0IDMuNzkwMDQgMTQuMzc1IDMuNzkwMDRDMTMuMzYxNiAzLjc5MDA0IDEyLjU0IDQuNjExNTYgMTIuNTQgNS42MjVDMTIuNTQgNi42Mzg0NCAxMy4zNjE2IDcuNDU5OTYgMTQuMzc1IDcuNDU5OTZDMTUuMzg4NCA3LjQ1OTk2IDE2LjIxIDYuNjM4NDQgMTYuMjEgNS42MjVaTTE3LjU0IDE0LjM3NUMxNy41NCAxNi4xMjMgMTYuMTIzIDE3LjU0IDE0LjM3NSAxNy41NEMxMi42MjcgMTcuNTQgMTEuMjEgMTYuMTIzIDExLjIxIDE0LjM3NUMxMS4yMSAxMi42MjcgMTIuNjI3IDExLjIxIDE0LjM3NSAxMS4yMUMxNi4xMjMgMTEuMjEgMTcuNTQgMTIuNjI3IDE3LjU0IDE0LjM3NVpNOC43OTAwNCA1LjYyNUM4Ljc5MDA0IDcuMzcyOTggNy4zNzI5OCA4Ljc5MDA0IDUuNjI1IDguNzkwMDRDMy44NzcwMiA4Ljc5MDA0IDIuNDU5OTYgNy4zNzI5OCAyLjQ1OTk2IDUuNjI1QzIuNDU5OTYgMy44NzcwMiAzLjg3NzAyIDIuNDU5OTYgNS42MjUgMi40NTk5NkM3LjM3Mjk4IDIuNDU5OTYgOC43OTAwNCAzLjg3NzAyIDguNzkwMDQgNS42MjVaTTE3LjU0IDUuNjI1QzE3LjU0IDcuMzcyOTggMTYuMTIzIDguNzkwMDQgMTQuMzc1IDguNzkwMDRDMTMuNzQxNiA4Ljc5MDA0IDEzLjE1MyA4LjYwMTczIDEyLjY1ODIgOC4yODEyNUw4LjI4MTI1IDEyLjY1ODJDOC42MDE3MyAxMy4xNTMgOC43OTAwNCAxMy43NDE2IDguNzkwMDQgMTQuMzc1QzguNzkwMDQgMTYuMTIzIDcuMzcyOTggMTcuNTQgNS42MjUgMTcuNTRDMy44NzcwMiAxNy41NCAyLjQ1OTk2IDE2LjEyMyAyLjQ1OTk2IDE0LjM3NUMyLjQ1OTk2IDEyLjYyNyAzLjg3NzAyIDExLjIxIDUuNjI1IDExLjIxQzYuMjU3OTQgMTEuMjEgNi44NDYyMyAxMS4zOTc3IDcuMzQwODIgMTEuNzE3OEwxMS43MTc4IDcuMzQwODJDMTEuMzk3NyA2Ljg0NjIzIDExLjIxIDYuMjU3OTQgMTEuMjEgNS42MjVDMTEuMjEgMy44NzcwMiAxMi42MjcgMi40NTk5NiAxNC4zNzUgMi40NTk5NkMxNi4xMjMgMi40NTk5NiAxNy41NCAzLjg3NzAyIDE3LjU0IDUuNjI1WlwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTcXVpcmNsZVBsdXNJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBjbGFzc05hbWU9XCJ0ZXh0LTN4bFwiXG4gICAgICBoZWlnaHQ9XCIxZW1cIlxuICAgICAgd2lkdGg9XCIxZW1cIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxsaW5lIHgxPVwiMTJcIiB5MT1cIjVcIiB4Mj1cIjEyXCIgeTI9XCIxOVwiIC8+XG4gICAgICA8bGluZSB4MT1cIjVcIiB5MT1cIjEyXCIgeDI9XCIxOVwiIHkyPVwiMTJcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXVkaW9QYXRocygpIHtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk04IDE1djZcIlxuICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTMgOHYyMFwiXG4gICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0xOCAxMHYxNlwiXG4gICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0yMyA2djI0XCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTI4IDEydjEyXCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb2RlUGF0aHMoKSB7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMjEuMzMzIDIzTDI2LjMzMyAxOEwyMS4zMzMgMTNcIlxuICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMS42NjY2N1wiXG4gICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTQuNjY3IDEzTDkuNjY2OTkgMThMMTQuNjY3IDIzXCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjEuNjY2NjdcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCJpbXBvcnQgdHlwZSB7IFRGaWxlIH0gZnJvbSAnbGlicmVjaGF0LWRhdGEtcHJvdmlkZXInO1xuaW1wb3J0IHR5cGUgeyBFeHRlbmRlZEZpbGUgfSBmcm9tICd+L2NvbW1vbic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEZpbGVJY29uKHtcbiAgZmlsZSxcbiAgZmlsZVR5cGUsXG59OiB7XG4gIGZpbGU/OiBQYXJ0aWFsPEV4dGVuZGVkRmlsZSB8IFRGaWxlPjtcbiAgZmlsZVR5cGU6IHtcbiAgICBmaWxsOiBzdHJpbmc7XG4gICAgcGF0aHM6IFJlYWN0LkZDO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gIH07XG59KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB2aWV3Qm94PVwiMCAwIDM2IDM2XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIGNsYXNzTmFtZT1cImgtMTAgdy0xMCBmbGV4LXNocmluay0wXCJcbiAgICAgIHdpZHRoPVwiMzZcIlxuICAgICAgaGVpZ2h0PVwiMzZcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cmVjdCB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiByeD1cIjZcIiBmaWxsPXtmaWxlVHlwZS5maWxsfSAvPlxuICAgICAgeyhmaWxlPy5bJ3Byb2dyZXNzJ10gPz8gMSkgPj0gMSAmJiA8Pns8ZmlsZVR5cGUucGF0aHMgLz59PC8+fVxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRmlsZVBhdGhzKCkge1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTE4LjgzMyA5LjY2NjYzSDEyLjk5OTdDMTIuNTU3NiA5LjY2NjYzIDEyLjEzMzcgOS44NDIyMiAxMS44MjEyIDEwLjE1NDhDMTEuNTA4NiAxMC40NjczIDExLjMzMyAxMC44OTEzIDExLjMzMyAxMS4zMzMzVjI0LjY2NjZDMTEuMzMzIDI1LjEwODcgMTEuNTA4NiAyNS41MzI2IDExLjgyMTIgMjUuODQ1MUMxMi4xMzM3IDI2LjE1NzcgMTIuNTU3NiAyNi4zMzMzIDEyLjk5OTcgMjYuMzMzM0gyMi45OTk3QzIzLjQ0MTcgMjYuMzMzMyAyMy44NjU2IDI2LjE1NzcgMjQuMTc4MiAyNS44NDUxQzI0LjQ5MDcgMjUuNTMyNiAyNC42NjYzIDI1LjEwODcgMjQuNjY2MyAyNC42NjY2VjE1LjVMMTguODMzIDkuNjY2NjNaXCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjEuNjY2NjdcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTE4LjgzMyA5LjY2NjYzVjE1LjVIMjQuNjY2M1wiXG4gICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIxLjY2NjY3XCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2hlZXRQYXRocygpIHtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0xNS41IDEwLjVIMTIuMTY2N0MxMS4yNDYyIDEwLjUgMTAuNSAxMS4yNDYyIDEwLjUgMTIuMTY2N1YxMy41VjE4TTE1LjUgMTAuNUgyMy44MzMzQzI0Ljc1MzggMTAuNSAyNS41IDExLjI0NjIgMjUuNSAxMi4xNjY3VjEzLjVWMThNMTUuNSAxMC41VjI1LjVNMTUuNSAyNS41SDE4SDIzLjgzMzNDMjQuNzUzOCAyNS41IDI1LjUgMjQuNzUzOCAyNS41IDIzLjgzMzNWMThNMTUuNSAyNS41SDEyLjE2NjdDMTEuMjQ2MiAyNS41IDEwLjUgMjQuNzUzOCAxMC41IDIzLjgzMzNWMThNMTAuNSAxOEgyNS41XCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjEuNjY2NjdcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUZXh0UGF0aHMoKSB7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTkuNjY2MyA5LjY2NjYzSDEyLjk5OTdDMTIuNTU3NiA5LjY2NjYzIDEyLjEzMzcgOS44NDIyMiAxMS44MjEyIDEwLjE1NDhDMTEuNTA4NiAxMC40NjczIDExLjMzMyAxMC44OTEzIDExLjMzMyAxMS4zMzMzVjI0LjY2NjZDMTEuMzMzIDI1LjEwODcgMTEuNTA4NiAyNS41MzI2IDExLjgyMTIgMjUuODQ1MUMxMi4xMzM3IDI2LjE1NzcgMTIuNTU3NiAyNi4zMzMzIDEyLjk5OTcgMjYuMzMzM0gyMi45OTk3QzIzLjQ0MTcgMjYuMzMzMyAyMy44NjU2IDI2LjE1NzcgMjQuMTc4MiAyNS44NDUxQzI0LjQ5MDcgMjUuNTMyNiAyNC42NjYzIDI1LjEwODcgMjQuNjY2MyAyNC42NjY2VjE0LjY2NjZMMTkuNjY2MyA5LjY2NjYzWlwiXG4gICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIxLjY2NjY3XCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0xOS42NjcgOS42NjY2M1YxNC42NjY2SDI0LjY2N1wiXG4gICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIxLjY2NjY3XCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0yMS4zMzM3IDE4LjgzMzRIMTQuNjY3XCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjEuNjY2NjdcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTIxLjMzMzcgMjIuMTY2NkgxNC42NjdcIlxuICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMS42NjY2N1wiXG4gICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTYuMzMzNyAxNS41SDE1LjUwMDNIMTQuNjY3XCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjEuNjY2NjdcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBWaWRlb1BhdGhzKCkge1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7LyogVmlkZW8gY29udGFpbmVyIC0gcm91bmRlZCByZWN0YW5nbGUgKG5vdCBmaWxsZWQpICovfVxuICAgICAgPHJlY3QgeD1cIjhcIiB5PVwiMTBcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTZcIiByeD1cIjNcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZVdpZHRoPVwiMlwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgIHsvKiBQbGF5IGJ1dHRvbiAtIGNlbnRlcmVkIGFuZCBwb2ludGluZyByaWdodCAqL31cbiAgICAgIDxwYXRoIGQ9XCJNMjIgMThsLTYgNHYtOEwyMiAxOHpcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgIDwvPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNoYXJlUG9pbnRJY29uKHsgY2xhc3NOYW1lID0gJycgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aCBkPVwiTTI0IDEzLjVxMCAxLjI0Mi0uNDc1IDIuMzMyLS40NzQgMS4wOS0xLjI4OSAxLjkwNC0uODE0LjgxNS0xLjkwNCAxLjI5LTEuMDkuNDc0LTIuMzMyLjQ3NC0uNzYyIDAtMS41MjMtLjItLjEwNi45OTctLjU1NyAxLjg1OC0uNDUxLjg2Mi0xLjE1NCAxLjQ5NC0uNzA0LjYzMy0xLjYwNi45OS0uOTAyLjM1OC0xLjkxLjM1OC0xLjA5IDAtMi4wNDUtLjQxNi0uOTU1LS40MTYtMS42NjQtMS4xMjUtLjcwOS0uNzA5LTEuMTI1LTEuNjY0UTYgMTkuODQgNiAxOC43NXEwLS4xODguMDE4LS4zNzUuMDE3LS4xODguMDQtLjM3NUguOTk3cS0uNDEgMC0uNzAzLS4yOTNUMCAxNy4wMDRWNi45OTZxMC0uNDEuMjkzLS43MDNULjk5NiA2aDMuNTRxLjE0LTEuMjc3LjcyNi0yLjM3My41ODYtMS4wOTYgMS40ODgtMS45MDRRNy42NTIuOTE0IDguODA3LjQ1NyA5Ljk2IDAgMTEuMjUgMHExLjM5NSAwIDIuNjI1LjUzM1QxNi4wMiAxLjk4cS45MTQuOTE1IDEuNDQ3IDIuMTQ1VDE4IDYuNzVxMCAuMTg4LS4wMTIuMzc1LS4wMTEuMTg4LS4wMzUuMzc1IDEuMjQyIDAgMi4zNDQuNDY5IDEuMTAxLjQ2OCAxLjkyOCAxLjI3Ny44MjYuODA5IDEuMyAxLjkwNFEyNCAxMi4yNDYgMjQgMTMuNXptLTEyLjc1LTEycS0uOTczIDAtMS44NTcuMzQtLjg4NS4zNC0xLjU3Ny45NDMtLjY5MS42MDQtMS4xNTQgMS40M1E2LjIgNS4wMzkgNi4wNiA2aDQuOTQ1cS40MSAwIC43MDMuMjkzdC4yOTMuNzAzdjQuOTQ1bC4yMS0uMDM1cS4yMTItLjc1LjYxLTEuNDI0LjM5OS0uNjczLjk0NC0xLjIxOC41NDUtLjU0NSAxLjIxMy0uOTQ0LjY2OC0uMzk4IDEuNDMtLjYxLjA5My0uNTAzLjA5My0uOTYgMC0xLjA5LS40MTYtMi4wNDUtLjQxNi0uOTU1LTEuMTI1LTEuNjY0LS43MDktLjcwOS0xLjY2NC0xLjEyNVExMi4zNCAxLjUgMTEuMjUgMS41ek02LjExNyAxNS45MDJxLjU0IDAgMS4wNi0uMTExLjUyMi0uMTExLjkzMi0uMzcuNDEtLjI1Ny42NjItLjY3OS4yNTItLjQyMi4yNTItMS4wNTUgMC0uNjMyLS4yNjMtMS4wNTQtLjI2NC0uNDIyLS42NjItLjcwMy0uMzk5LS4yODItLjg1Ni0uNDYzbC0uODU1LS4zNHEtLjM5OS0uMTU4LS42NjItLjMzNC0uMjY0LS4xNzYtLjI2NC0uNDQ1IDAtLjIuMTQtLjMyMy4xNDEtLjEyMy4zMzUtLjE5My4xOTMtLjA3LjQwNC0uMDk0LjIxLS4wMjMuMzUxLS4wMjMuNTk4IDAgMS4wNTUuMTUyLjQ1Ny4xNTMuOTUuNDU3VjguNTQzcS0uMjgyLS4wODItLjUyMi0uMTQtLjI0LS4wNi0uNDc1LS4xLS4yMzQtLjA0MS0uNDg2LS4wNTktLjI1Mi0uMDE3LS41NTctLjAxNy0uNTE1IDAtMS4wNTQuMTE3LS41NC4xMTctLjk3OS4zNzUtLjQ0LjI1OC0uNzE1LjY4LS4yNzUuNDIxLS4yNzUgMS4wMyAwIC41OTguMjYzLjk5Ny4yNjQuMzk4LjY2My42OC4zOTguMjguODU1LjQ3NGwuODU2LjM2M3EuMzk4LjE3LjY2Mi4zNTguMjYzLjE4Ny4yNjMuNDU3IDAgLjIyMi0uMTIzLjM1MS0uMTIzLjEzLS4zMS4yLS4xODguMDctLjM5My4wODctLjIwNS4wMTgtLjM2OS4wMTgtLjcwMyAwLTEuMjQ4LS4yMzQtLjU0NS0uMjM1LTEuMTA3LS42MjF2MS44NzVxMS4xOTUuNDY4IDIuNDcyLjQ2OHpNMTEuMjUgMjIuNXEuNzczIDAgMS40NTMtLjI5M3QxLjE5LS44MDNxLjUxLS41MS44MDgtMS4xOTUuMjk5LS42ODYuMjk5LTEuNDU5IDAtLjY2OC0uMjIzLTEuMjc3LS4yMjItLjYxLS42Mi0xLjA5Ni0uNC0uNDg2LS45NS0uODI2LS41NS0uMzQtMS4yMDctLjQ4djEuOTMzcTAgLjQxLS4yOTMuNzAzdC0uNzAzLjI5M0g3LjU3cS0uMDcuMzc1LS4wNy43NSAwIC43NzMuMjkzIDEuNDU5dC44MDMgMS4xOTVxLjUxLjUxIDEuMTk1LjgwMy42ODYuMjkzIDEuNDU5LjI5M3pNMTggMThxLjkyNiAwIDEuNzQ2LS4zNTIuODItLjM1MSAxLjQzNi0uOTY2LjYxNS0uNjE2Ljk2Ni0xLjQzLjM1Mi0uODE1LjM1Mi0xLjc1MiAwLS45MjYtLjM1Mi0xLjc0Ni0uMzUxLS44Mi0uOTY2LTEuNDM2LS42MTYtLjYxNS0xLjQzNi0uOTY2UTE4LjkyNiA5IDE4IDl0LTEuNzQuMzU3cS0uODE1LjM1OC0xLjQzLjk3M3QtLjk3MyAxLjQzcS0uMzU3LjgxNC0uMzU3IDEuNzQgMCAuMTI5LjAwNi4yNTh0LjAxNy4yNThxLjU1MS4yNyAxLjAyLjY1dC44MzguODU1cS4zNjkuNDc1LjYyNyAxLjAyNi4yNTguNTUuMzg3IDEuMTQ4UTE3LjE4IDE4IDE4IDE4WlwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNb29uc2hvdEljb24oeyBjbGFzc05hbWUgPSAnJyB9OiB7IGNsYXNzTmFtZT86IHN0cmluZyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJNMS4wNTIgMTYuOTE2bDkuNTM5IDIuNTUyYTIxLjAwNyAyMS4wMDcgMCAwMC4wNiAyLjAzM2w1Ljk1NiAxLjU5M2ExMS45OTcgMTEuOTk3IDAgMDEtNS41ODYuODY1bC0uMTgtLjAxNi0uMDQ0LS4wMDQtLjA4NC0uMDA5LS4wOTQtLjAxYTExLjYwNSAxMS42MDUgMCAwMS0uMTU3LS4wMmwtLjEwNy0uMDE0LS4xMS0uMDE2YTExLjk2MiAxMS45NjIgMCAwMS0uMzItLjA1MWwtLjA0Mi0uMDA4LS4wNzUtLjAxMy0uMTA3LS4wMi0uMDctLjAxNS0uMDkzLS4wMTktLjA3NS0uMDE2LS4wOTUtLjAyLS4wOTctLjAyMy0uMDk0LS4wMjItLjA2OC0uMDE3LS4wODgtLjAyMi0uMDktLjAyNC0uMDk1LS4wMjUtLjA4Mi0uMDIzLS4xMDktLjAzLS4wNjItLjAyLS4wODQtLjAyNS0uMDkzLS4wMjgtLjEwNS0uMDM0LS4wNTgtLjAxOS0uMDgtLjAyNi0uMDktLjAzMS0uMDY2LS4wMjRhNi4yOTMgNi4yOTMgMCAwMS0uMDQ0LS4wMTVsLS4wNjgtLjAyNS0uMTAxLS4wMzctLjA1Ny0uMDIyLS4wOC0uMDMtLjA4Ny0uMDM1LS4wODgtLjAzNS0uMDc5LS4wMzItLjA5NS0uMDQtLjA2My0uMDI4LS4wNjMtLjAyN2E1LjY1NSA1LjY1NSAwIDAxLS4wNDEtLjAxOGwtLjA2Ni0uMDMtLjEwMy0uMDQ3LS4wNTItLjAyNC0uMDk2LS4wNDYtLjA2Mi0uMDMtLjA4NC0uMDQtLjA4Ni0uMDQ0LS4wOTMtLjA0Ny0uMDUyLS4wMjctLjEwMy0uMDU1LS4wNTctLjAzLS4wNTgtLjAzMmE2LjQ5IDYuNDkgMCAwMS0uMDQ2LS4wMjZsLS4wOTQtLjA1My0uMDYtLjAzNC0uMDUxLS4wMy0uMDcyLS4wNDEtLjA4Mi0uMDUtLjA5My0uMDU2LS4wNTItLjAzMi0uMDg0LS4wNTMtLjA2MS0uMDM5LS4wNzktLjA1LS4wNy0uMDQ3LS4wNTMtLjAzNWE3Ljc4NSA3Ljc4NSAwIDAxLS4wNTQtLjAzNmwtLjA0NC0uMDMtLjA0NC0uMDNhNi4wNjYgNi4wNjYgMCAwMS0uMDQtLjAyOGwtLjA1Ny0uMDQtLjA3Ni0uMDU0LS4wNjktLjA1LS4wNzQtLjA1NC0uMDU2LS4wNDItLjA3Ni0uMDU3LS4wNzYtLjA1OS0uMDg2LS4wNjctLjA0NS0uMDM1LS4wNjQtLjA1Mi0uMDc0LS4wNi0uMDg5LS4wNzMtLjA0Ni0uMDM5LS4wNDYtLjAzOWE3LjUxNiA3LjUxNiAwIDAxLS4wNDMtLjAzN2wtLjA0NS0uMDQtLjA2MS0uMDUzLS4wNy0uMDYyLS4wNjgtLjA2LS4wNjItLjA1OC0uMDY3LS4wNjItLjA1My0uMDUtLjA4OC0uMDg0YTEzLjI4IDEzLjI4IDAgMDEtLjA5OS0uMDk3bC0uMDI5LS4wMjgtLjA0MS0uMDQyLS4wNjktLjA3LS4wNS0uMDUxLS4wNS0uMDUzYTYuNDU3IDYuNDU3IDAgMDEtLjE2OC0uMTc5bC0uMDgtLjA4OC0uMDYyLS4wNy0uMDcxLS4wOC0uMDQyLS4wNDktLjA1My0uMDYyLS4wNTgtLjA2OC0uMDQ2LS4wNTZhNy4xNzUgNy4xNzUgMCAwMS0uMDI3LS4wMzNsLS4wNDUtLjA1NS0uMDY2LS4wODItLjA0MS0uMDUyLS4wNS0uMDY0LS4wMi0uMDI1YTExLjk5IDExLjk5IDAgMDEtMS40NC0yLjQwMnptLTEuMDItNS43OTRsMTEuMzUzIDMuMDM3YTIwLjQ2OCAyMC40NjggMCAwMC0uNDY5IDIuMDExbDEwLjgxNyAyLjg5NGExMi4wNzYgMTIuMDc2IDAgMDEtMS44NDUgMi4wMDVMLjY1NyAxNS45MjNsLS4wMTYtLjA0Ni0uMDM1LS4xMDRhMTEuOTY1IDExLjk2NSAwIDAxLS4wNS0uMTUzbC0uMDA3LS4wMjNhMTEuODk2IDExLjg5NiAwIDAxLS4yMDctLjc0MWwtLjAzLS4xMjYtLjAxOC0uMDgtLjAyMS0uMDk3LS4wMTgtLjA4MS0uMDE4LS4wOS0uMDE3LS4wODQtLjAxOC0uMDk0Yy0uMDI2LS4xNDEtLjA1LS4yODMtLjA3MS0uNDI2bC0uMDE3LS4xMTgtLjAxMS0uMDgzLS4wMTMtLjEwMmExMi4wMSAxMi4wMSAwIDAxLS4wMTktLjE2MWwtLjAwNS0uMDQ3YTEyLjEyIDEyLjEyIDAgMDEtLjAzNC0yLjE0NXptMS41OTMtNS4xNWwxMS45NDggMy4xOTZjLS4zNjguNjA1LS43MDUgMS4yMzEtMS4wMSAxLjg3NWwxMS4yOTUgMy4wMjJjLS4xNDIuODItLjM2OCAxLjYxMi0uNjY4IDIuMzY1bC0xMS41NS0zLjA5TC4xMjQgMTAuMjZsLjAxNS0uMS4wMDgtLjA0OS4wMS0uMDY3LjAxNS0uMDg3LjAxOC0uMDk4Yy4wMjYtLjE0OC4wNTYtLjI5NS4wODgtLjQ0MmwuMDI4LS4xMjQuMDItLjA4NS4wMjQtLjA5N2MuMDIyLS4wOS4wNDUtLjE4LjA3LS4yNjhsLjAyOC0uMTAyLjAyMy0uMDgzLjAzLS4xLjAyNS0uMDgyLjAzLS4wOTYuMDI2LS4wODIuMDMxLS4wOTVhMTEuODk2IDExLjg5NiAwIDAxMS4wMS0yLjIzMnptNC40NDItNC40TDE3LjM1MiA0LjU5YTIwLjc3IDIwLjc3IDAgMDAtMS42ODggMS43MjFsNy44MjMgMi4wOTNjLjI2Ny44NTIuNDQyIDEuNzQ0LjUxMyAyLjY2NUwyLjEwNiA1LjIxM2wuMDQ1LS4wNjUuMDI3LS4wNC4wNC0uMDU1LjA0Ni0uMDY1LjA1NS0uMDc2LjA1NC0uMDcyLjA2NC0uMDg2LjA1LS4wNjUuMDU3LS4wNzMuMDU1LS4wNy4wNi0uMDc0LjA1NS0uMDY5LjA2NS0uMDc3LjA1NC0uMDY2LjA2Ni0uMDc3LjA1My0uMDYuMDcyLS4wODIuMDUzLS4wNi4wNjctLjA3NC4wNTQtLjA1OC4wNzMtLjA3OC4wNTgtLjA2LjA2My0uMDY3LjE2OC0uMTcuMS0uMDk4LjA1OS0uMDU2LjA3Ni0uMDcxYTEyLjA4NCAxMi4wODQgMCAwMTIuMjcyLTEuNjc3ek0xMi4wMTcgMGguMDk3bC4wODIuMDAxLjA2OS4wMDEuMDU0LjAwMi4wNjguMDAyLjA0Ni4wMDEuMDc2LjAwMy4wNDcuMDAyLjA2LjAwMy4wNTQuMDAyLjA4Ny4wMDUuMTA1LjAwNy4xNDQuMDExLjA4OC4wMDcuMDQ0LjAwNC4wNzcuMDA4LjA4Mi4wMDguMDQ3LjAwNS4xMDIuMDEyLjA1LjAwNi4xMDguMDE0LjA4MS4wMS4wNDIuMDA2LjA2NS4wMS4yMDcuMDMyLjA3LjAxMi4wNjUuMDExLjE0LjAyNi4wOTIuMDE4LjExLjAyMi4wNDYuMDEuMDc1LjAxNi4wNDEuMDFMMTQuNy4zbC4wNDIuMDEuMDY1LjAxNS4wNDkuMDEyLjA3MS4wMTcuMDk2LjAyNC4xMTIuMDMuMTEzLjAzLjExMy4wMzIuMDUuMDE1LjA3LjAyLjA3OC4wMjQuMDczLjAyMy4wNS4wMTYuMDUuMDE2LjA3Ni4wMjUuMDk5LjAzMy4xMDIuMDM2LjA0OC4wMTcuMDY0LjAyMy4wOTMuMDM0LjExLjA0MS4xMTYuMDQ1LjEuMDQuMDQ3LjAyLjA2LjAyNC4wNDEuMDE4LjA2My4wMjYuMDQuMDE4LjA1Ny4wMjUuMTEuMDQ4LjEuMDQ2LjA3NC4wMzUuMDc1LjAzNi4wNi4wMjguMDkyLjA0Ni4wOTEuMDQ1LjEwMi4wNTIuMDUzLjAyOC4wNDkuMDI2LjA0Ni4wMjQuMDYuMDMzLjA0MS4wMjIuMDUyLjAyOS4wODguMDUuMTA2LjA2LjA4Ny4wNTEuMDU3LjAzNC4wNTMuMDMyLjA5Ni4wNTkuMDg4LjA1NS4wOTguMDYyLjAzNi4wMjQuMDY0LjA0MS4wODQuMDU2LjA0LjAyNy4wNjIuMDQyLjA2Mi4wNDMuMDIzLjAxN2MuMDU0LjAzNy4xMDguMDc1LjE2MS4xMTRsLjA4My4wNi4wNjUuMDQ4LjA1Ni4wNDMuMDg2LjA2NS4wODIuMDY0LjA0LjAzLjA1LjA0MS4wODYuMDY5LjA3OS4wNjUuMDg1LjA3MWMuNzEyLjYgMS4zNTMgMS4yODMgMS45MDkgMi4wMzFMNy4yMjIuOTk0bC4wNjItLjAyNy4wNjUtLjAyOC4wODEtLjAzNC4wODYtLjAzNWMuMTEzLS4wNDUuMjI3LS4wOS4zNDEtLjEzMWwuMDk2LS4wMzUuMDkzLS4wMzMuMDg0LS4wMy4wOTYtLjAzMWMuMDg3LS4wMy4xNzYtLjA1OC4yNjQtLjA4NWwuMDkxLS4wMjcuMDg2LS4wMjUuMTAyLS4wMy4wODUtLjAyMy4xLS4wMjZMOS4wNC4zN2wuMDktLjAyMy4wOTEtLjAyMi4wOTUtLjAyMi4wOS0uMDIuMDk4LS4wMjEuMDkxLS4wMi4wOTUtLjAxOC4wOTItLjAxOC4xLS4wMTguMDkxLS4wMTYuMDk4LS4wMTcuMDkyLS4wMTQuMDk3LS4wMTUuMDkyLS4wMTMuMTAyLS4wMTMuMDkxLS4wMTIuMTA1LS4wMTIuMDktLjAxLjEwNS0uMDFjLjA5My0uMDEuMTg2LS4wMTguMjgtLjAyNGwuMTA2LS4wMDguMDktLjAwNS4xMS0uMDA2LjA5My0uMDA0LjEtLjAwNC4wOTctLjAwMi4wOTktLjAwMi4xOTctLjAwMnpcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VNZW1vLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgVFVzZXIgfSBmcm9tICdsaWJyZWNoYXQtZGF0YS1wcm92aWRlcic7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4vU2tlbGV0b24nO1xuaW1wb3J0IHsgdXNlQXZhdGFyIH0gZnJvbSAnfi9ob29rcyc7XG5pbXBvcnQgeyBVc2VySWNvbiB9IGZyb20gJ34vc3Zncyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXZhdGFyUHJvcHMge1xuICB1c2VyPzogVFVzZXI7XG4gIHNpemU/OiBudW1iZXI7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgYWx0Pzogc3RyaW5nO1xuICBzaG93RGVmYXVsdFdoZW5FbXB0eT86IGJvb2xlYW47XG59XG5cbmNvbnN0IEF2YXRhcjogUmVhY3QuRkM8QXZhdGFyUHJvcHM+ID0gKHtcbiAgdXNlcixcbiAgc2l6ZSA9IDMyLFxuICBjbGFzc05hbWUgPSAnJyxcbiAgYWx0LFxuICBzaG93RGVmYXVsdFdoZW5FbXB0eSA9IHRydWUsXG59KSA9PiB7XG4gIGNvbnN0IGF2YXRhclNyYyA9IHVzZUF2YXRhcih1c2VyKTtcbiAgY29uc3QgW2ltYWdlTG9hZGVkLCBzZXRJbWFnZUxvYWRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtpbWFnZUVycm9yLCBzZXRJbWFnZUVycm9yXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBhdmF0YXJTZWVkID0gdXNlTWVtbyhcbiAgICAoKSA9PiB1c2VyPy5hdmF0YXIgfHwgdXNlcj8udXNlcm5hbWUgfHwgdXNlcj8uZW1haWwgfHwgJycsXG4gICAgW3VzZXI/LmF2YXRhciwgdXNlcj8udXNlcm5hbWUsIHVzZXI/LmVtYWlsXSxcbiAgKTtcblxuICBjb25zdCBhbHRUZXh0ID0gdXNlTWVtbyhcbiAgICAoKSA9PiBhbHQgfHwgYCR7dXNlcj8ubmFtZSB8fCB1c2VyPy51c2VybmFtZSB8fCB1c2VyPy5lbWFpbCB8fCAnJ30ncyBhdmF0YXJgLFxuICAgIFthbHQsIHVzZXI/Lm5hbWUsIHVzZXI/LnVzZXJuYW1lLCB1c2VyPy5lbWFpbF0sXG4gICk7XG5cbiAgY29uc3QgaW1hZ2VTcmMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIWF2YXRhclNlZWQgfHwgaW1hZ2VFcnJvcikgcmV0dXJuICcnO1xuICAgIHJldHVybiAodXNlcj8uYXZhdGFyID8/ICcnKSB8fCBhdmF0YXJTcmMgfHwgJyc7XG4gIH0sIFt1c2VyPy5hdmF0YXIsIGF2YXRhclNyYywgYXZhdGFyU2VlZCwgaW1hZ2VFcnJvcl0pO1xuXG4gIGNvbnN0IGhhbmRsZUltYWdlTG9hZCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRJbWFnZUxvYWRlZCh0cnVlKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGhhbmRsZUltYWdlRXJyb3IgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SW1hZ2VFcnJvcih0cnVlKTtcbiAgICBzZXRJbWFnZUxvYWRlZChmYWxzZSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBEZWZhdWx0QXZhdGFyID0gdXNlQ2FsbGJhY2soXG4gICAgKCkgPT4gKFxuICAgICAgPGRpdlxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYigxMjEsIDEzNywgMjU1KScsXG4gICAgICAgICAgd2lkdGg6IGAke3NpemV9cHhgLFxuICAgICAgICAgIGhlaWdodDogYCR7c2l6ZX1weGAsXG4gICAgICAgICAgYm94U2hhZG93OiAncmdiYSgyNDAsIDI0NiwgMjUyLCAwLjEpIDBweCAwcHggMHB4IDFweCcsXG4gICAgICAgIH19XG4gICAgICAgIGNsYXNzTmFtZT17YHJlbGF0aXZlIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBwLTEgdGV4dC10ZXh0LXByaW1hcnkgJHtjbGFzc05hbWV9YH1cbiAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgID5cbiAgICAgICAgPFVzZXJJY29uIC8+XG4gICAgICA8L2Rpdj5cbiAgICApLFxuICAgIFtzaXplLCBjbGFzc05hbWVdLFxuICApO1xuXG4gIGlmIChhdmF0YXJTZWVkLmxlbmd0aCA9PT0gMCAmJiBzaG93RGVmYXVsdFdoZW5FbXB0eSkge1xuICAgIHJldHVybiA8RGVmYXVsdEF2YXRhciAvPjtcbiAgfVxuXG4gIGlmIChhdmF0YXJTZWVkLmxlbmd0aCA+IDAgJiYgIWltYWdlRXJyb3IpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiIHN0eWxlPXt7IHdpZHRoOiBgJHtzaXplfXB4YCwgaGVpZ2h0OiBgJHtzaXplfXB4YCB9fT5cbiAgICAgICAgeyFpbWFnZUxvYWRlZCAmJiAoXG4gICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cInJvdW5kZWQtZnVsbFwiIHN0eWxlPXt7IHdpZHRoOiBgJHtzaXplfXB4YCwgaGVpZ2h0OiBgJHtzaXplfXB4YCB9fSAvPlxuICAgICAgICApfVxuXG4gICAgICAgIDxpbWdcbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgd2lkdGg6IGAke3NpemV9cHhgLFxuICAgICAgICAgICAgaGVpZ2h0OiBgJHtzaXplfXB4YCxcbiAgICAgICAgICAgIGRpc3BsYXk6IGltYWdlTG9hZGVkID8gJ2Jsb2NrJyA6ICdub25lJyxcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNsYXNzTmFtZT17YHJvdW5kZWQtZnVsbCAke2NsYXNzTmFtZX1gfVxuICAgICAgICAgIHNyYz17aW1hZ2VTcmN9XG4gICAgICAgICAgYWx0PXthbHRUZXh0fVxuICAgICAgICAgIG9uTG9hZD17aGFuZGxlSW1hZ2VMb2FkfVxuICAgICAgICAgIG9uRXJyb3I9e2hhbmRsZUltYWdlRXJyb3J9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgaWYgKGltYWdlRXJyb3IgJiYgc2hvd0RlZmF1bHRXaGVuRW1wdHkpIHtcbiAgICByZXR1cm4gPERlZmF1bHRBdmF0YXIgLz47XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF2YXRhcjtcbiIsImltcG9ydCB7IHN0YXJ0VHJhbnNpdGlvbiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFNlYXJjaCBhcyBTZWFyY2hJY29uIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCAqIGFzIFJhZGl4U2VsZWN0IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1zZWxlY3QnO1xuaW1wb3J0IHsgQ2hlY2tJY29uLCBDaGV2cm9uRG93bkljb24gfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtaWNvbnMnO1xuaW1wb3J0IHtcbiAgQ29tYm9ib3gsXG4gIENvbWJvYm94SXRlbSxcbiAgQ29tYm9ib3hMaXN0LFxuICBDb21ib2JveFByb3ZpZGVyLFxuICBDb21ib2JveENhbmNlbCxcbn0gZnJvbSAnQGFyaWFraXQvcmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBPcHRpb25XaXRoSWNvbiB9IGZyb20gJ34vY29tbW9uJztcbmltcG9ydCB7IFNlbGVjdFRyaWdnZXIsIFNlbGVjdFZhbHVlLCBTZWxlY3RTY3JvbGxEb3duQnV0dG9uIH0gZnJvbSAnLi9TZWxlY3QnO1xuaW1wb3J0IHsgdXNlQ29tYm9ib3ggfSBmcm9tICd+L2hvb2tzJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENvbWJvYm94Q29tcG9uZW50KHtcbiAgc2VsZWN0ZWRWYWx1ZSxcbiAgZGlzcGxheVZhbHVlLFxuICBpdGVtcyxcbiAgc2V0VmFsdWUsXG4gIGFyaWFMYWJlbCxcbiAgc2VhcmNoUGxhY2Vob2xkZXIsXG4gIHNlbGVjdFBsYWNlaG9sZGVyLFxuICBpc0NvbGxhcHNlZCxcbiAgU2VsZWN0SWNvbixcbn06IHtcbiAgYXJpYUxhYmVsOiBzdHJpbmc7XG4gIGRpc3BsYXlWYWx1ZT86IHN0cmluZztcbiAgc2VsZWN0ZWRWYWx1ZTogc3RyaW5nO1xuICBzZWFyY2hQbGFjZWhvbGRlcj86IHN0cmluZztcbiAgc2VsZWN0UGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIGl0ZW1zOiBPcHRpb25XaXRoSWNvbltdIHwgc3RyaW5nW107XG4gIHNldFZhbHVlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgaXNDb2xsYXBzZWQ6IGJvb2xlYW47XG4gIFNlbGVjdEljb24/OiBSZWFjdC5SZWFjdE5vZGU7XG59KSB7XG4gIGNvbnN0IG9wdGlvbnM6IE9wdGlvbldpdGhJY29uW10gPSAoaXRlbXMgPz8gW10pLm1hcCgob3B0aW9uOiBzdHJpbmcgfCBPcHRpb25XaXRoSWNvbikgPT4ge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHsgbGFiZWw6IG9wdGlvbiwgdmFsdWU6IG9wdGlvbiB9O1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9uO1xuICB9KTtcblxuICBjb25zdCB7IG9wZW4sIHNldE9wZW4sIHNldFNlYXJjaFZhbHVlLCBtYXRjaGVzIH0gPSB1c2VDb21ib2JveCh7XG4gICAgdmFsdWU6IHNlbGVjdGVkVmFsdWUsXG4gICAgb3B0aW9ucyxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8UmFkaXhTZWxlY3QuUm9vdFxuICAgICAgdmFsdWU9e3NlbGVjdGVkVmFsdWV9XG4gICAgICBvblZhbHVlQ2hhbmdlPXtzZXRWYWx1ZX1cbiAgICAgIG9wZW49e29wZW59XG4gICAgICAvKiogSGFja3kgZml4IGZvciByYWRpeC11aSBBbmRyb2lkIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vcmFkaXgtdWkvcHJpbWl0aXZlcy9pc3N1ZXMvMTY1OCAgKi9cbiAgICAgIG9uT3BlbkNoYW5nZT17KCkgPT4ge1xuICAgICAgICBpZiAob3BlbiA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHNldE9wZW4oZmFsc2UpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBzZXRPcGVuKCFvcGVuKTtcbiAgICAgICAgfSwgNzUpO1xuICAgICAgfX1cbiAgICA+XG4gICAgICA8Q29tYm9ib3hQcm92aWRlclxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBzZXRPcGVuPXtzZXRPcGVufVxuICAgICAgICByZXNldFZhbHVlT25IaWRlXG4gICAgICAgIGluY2x1ZGVzQmFzZUVsZW1lbnQ9e2ZhbHNlfVxuICAgICAgICBzZXRWYWx1ZT17KHZhbHVlKSA9PiB7XG4gICAgICAgICAgc3RhcnRUcmFuc2l0aW9uKCgpID0+IHtcbiAgICAgICAgICAgIHNldFNlYXJjaFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPFNlbGVjdFRyaWdnZXJcbiAgICAgICAgICBhcmlhLWxhYmVsPXthcmlhTGFiZWx9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICdmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBbJj5zcGFuXTpsaW5lLWNsYW1wLTEgWyY+c3Bhbl06ZmxleCBbJj5zcGFuXTp3LWZ1bGwgWyY+c3Bhbl06aXRlbXMtY2VudGVyIFsmPnNwYW5dOmdhcC0xIFsmPnNwYW5dOnRydW5jYXRlIFsmX3N2Z106aC00IFsmX3N2Z106dy00IFsmX3N2Z106c2hyaW5rLTAnLFxuICAgICAgICAgICAgaXNDb2xsYXBzZWRcbiAgICAgICAgICAgICAgPyAnZmxleCBoLTkgdy05IHNocmluay0wIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBwLTAgWyY+c3Bhbl06dy1hdXRvIFsmPnN2Z106aGlkZGVuJ1xuICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICAgICAgJ2JnLXdoaXRlIHRleHQtYmxhY2sgaG92ZXI6YmctZ3JheS01MCBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctZ3JheS01MDAgZGFyazpiZy1ncmF5LTg1MCBkYXJrOnRleHQtd2hpdGUnLFxuICAgICAgICAgICl9XG4gICAgICAgID5cbiAgICAgICAgICA8U2VsZWN0VmFsdWUgcGxhY2Vob2xkZXI9e3NlbGVjdFBsYWNlaG9sZGVyfT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXNzaXN0YW50LWl0ZW0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtZnVsbFwiPlxuICAgICAgICAgICAgICB7U2VsZWN0SWNvbiA/IFNlbGVjdEljb24gOiA8Q2hldnJvbkRvd25JY29uIC8+fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKCdtbC0yJywgaXNDb2xsYXBzZWQgPyAnaGlkZGVuJyA6ICcnKX1cbiAgICAgICAgICAgICAgc3R5bGU9e3sgdXNlclNlbGVjdDogJ25vbmUnIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtzZWxlY3RlZFZhbHVlXG4gICAgICAgICAgICAgICAgPyAoZGlzcGxheVZhbHVlID8/IHNlbGVjdGVkVmFsdWUpXG4gICAgICAgICAgICAgICAgOiBzZWxlY3RQbGFjZWhvbGRlciAmJiBzZWxlY3RQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L1NlbGVjdFZhbHVlPlxuICAgICAgICA8L1NlbGVjdFRyaWdnZXI+XG4gICAgICAgIDxSYWRpeFNlbGVjdC5Qb3J0YWw+XG4gICAgICAgICAgPFJhZGl4U2VsZWN0LkNvbnRlbnRcbiAgICAgICAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD17YXJpYUxhYmVsICsgJ3MnfVxuICAgICAgICAgICAgcG9zaXRpb249XCJwb3BwZXJcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgJ2JnLXBvcG92ZXIgdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcmVsYXRpdmUgei00MCBtYXgtaC1bNTJ2aF0gbWluLXctWzhyZW1dIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZ3JheS0yMDAgc2hhZG93LW1kIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06em9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06em9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06c2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpzbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06c2xpZGUtaW4tZnJvbS1ib3R0b20tMiBkYXJrOmJvcmRlci1ncmF5LTYwMCcsXG4gICAgICAgICAgICAgICdkYXRhLVtzaWRlPWJvdHRvbV06dHJhbnNsYXRlLXktMSBkYXRhLVtzaWRlPWxlZnRdOi10cmFuc2xhdGUteC0xIGRhdGEtW3NpZGU9cmlnaHRdOnRyYW5zbGF0ZS14LTEgZGF0YS1bc2lkZT10b3BdOi10cmFuc2xhdGUteS0xJyxcbiAgICAgICAgICAgICAgJ2JnLXdoaXRlIGRhcms6YmctZ3JheS03MDAnLFxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8UmFkaXhTZWxlY3QuVmlld3BvcnQgY2xhc3NOYW1lPVwibWItNSBoLVt2YXIoLS1yYWRpeC1zZWxlY3QtdHJpZ2dlci1oZWlnaHQpXSB3LWZ1bGwgbWluLXctW3ZhcigtLXJhZGl4LXNlbGVjdC10cmlnZ2VyLXdpZHRoKV1cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncm91cCBzdGlja3kgbGVmdC0wIHRvcC0wIHotMTAgZmxleCBoLTEyIGl0ZW1zLWNlbnRlciBnYXAtMiBiZy13aGl0ZSBweC0zIHB5LTIgdGV4dC1ibGFjayBkdXJhdGlvbi0zMDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGVcIj5cbiAgICAgICAgICAgICAgICA8U2VhcmNoSWNvbiBjbGFzc05hbWU9XCJoLTQgdy00IHRleHQtZ3JheS01MDAgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMzAwIGRhcms6Z3JvdXAtZm9jdXMtd2l0aGluOnRleHQtZ3JheS0zMDAgZGFyazpncm91cC1ob3Zlcjp0ZXh0LWdyYXktMzAwXCIgLz5cbiAgICAgICAgICAgICAgICA8Q29tYm9ib3hcbiAgICAgICAgICAgICAgICAgIGF1dG9TZWxlY3RcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgtMSByb3VuZGVkLW1kIGJvcmRlci1ub25lIGJnLXRyYW5zcGFyZW50IHB4LTIuNSBweS0yIHRleHQtc20gZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMSBmb2N1czpyaW5nLWdyYXktNzAwLzEwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTIwMC8xMFwiXG4gICAgICAgICAgICAgICAgICAvLyBBcmlha2l0J3MgQ29tYm9ib3ggbWFudWFsbHkgdHJpZ2dlcnMgYSBibHVyIGV2ZW50IG9uIHZpcnR1YWxseVxuICAgICAgICAgICAgICAgICAgLy8gYmx1cnJlZCBpdGVtcywgbWFraW5nIHRoZW0gd29yayBhcyBpZiB0aGV5IGhhZCBhY3R1YWwgRE9NXG4gICAgICAgICAgICAgICAgICAvLyBmb2N1cy4gVGhlc2UgYmx1ciBldmVudHMgbWlnaHQgaGFwcGVuIGFmdGVyIHRoZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICAgICAvLyBmb2N1cyBldmVudHMgaW4gdGhlIGNhcHR1cmUgcGhhc2UsIGxlYWRpbmcgUmFkaXggU2VsZWN0IHRvXG4gICAgICAgICAgICAgICAgICAvLyBjbG9zZSB0aGUgcG9wb3Zlci4gVGhpcyBoYXBwZW5zIGJlY2F1c2UgUmFkaXggU2VsZWN0IHJlbGllcyBvblxuICAgICAgICAgICAgICAgICAgLy8gdGhlIG9yZGVyIG9mIHRoZXNlIGNhcHR1cmVkIGV2ZW50cyB0byBkaXNjZXJuIGlmIHRoZSBmb2N1cyB3YXNcbiAgICAgICAgICAgICAgICAgIC8vIG91dHNpZGUgdGhlIGVsZW1lbnQuIFNpbmNlIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIHRoZVxuICAgICAgICAgICAgICAgICAgLy8gb25JbnRlcmFjdE91dHNpZGUgcHJvcCBpbiB0aGUgUmFkaXggU2VsZWN0Q29udGVudCBjb21wb25lbnQgdG9cbiAgICAgICAgICAgICAgICAgIC8vIHN0b3AgdGhpcyBiZWhhdmlvciwgd2UgY2FuIHR1cm4gb2ZmIEFyaWFraXQncyBiZWhhdmlvciBoZXJlLlxuICAgICAgICAgICAgICAgICAgb25CbHVyQ2FwdHVyZT17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxDb21ib2JveENhbmNlbFxuICAgICAgICAgICAgICAgICAgaGlkZVdoZW5FbXB0eT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInJlbGF0aXZlIGZsZXggaC01IHctNSBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgdGV4dC1ncmF5LTUwMCB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0zMDAgZGFyazpncm91cC1mb2N1cy13aXRoaW46dGV4dC1ncmF5LTMwMCBkYXJrOmdyb3VwLWhvdmVyOnRleHQtZ3JheS0zMDBcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8Q29tYm9ib3hMaXN0IGNsYXNzTmFtZT1cIm92ZXJmbG93LXktYXV0byBwLTEgcHktMlwiPlxuICAgICAgICAgICAgICAgIHttYXRjaGVzLm1hcCgoeyBsYWJlbCwgdmFsdWUsIGljb24gfSkgPT4gKFxuICAgICAgICAgICAgICAgICAgPFJhZGl4U2VsZWN0Lkl0ZW0ga2V5PXt2YWx1ZX0gdmFsdWU9e2Ake3ZhbHVlID8/ICcnfWB9IGFzQ2hpbGQ+XG4gICAgICAgICAgICAgICAgICAgIDxDb21ib2JveEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbGF0aXZlIGZsZXggdy1mdWxsIGN1cnNvci1wb2ludGVyIHNlbGVjdC1ub25lIGl0ZW1zLWNlbnRlciByb3VuZGVkLXNtIHB5LTEuNSBwbC0yIHByLTggdGV4dC1zbSBvdXRsaW5lLW5vbmUgZm9jdXM6YmctYWNjZW50IGZvY3VzOnRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOm9wYWNpdHktNTAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3JvdW5kZWQtbGcgaG92ZXI6YmctZ3JheS0xMDAvNTAgaG92ZXI6YmctZ3JheS01MCBkYXJrOnRleHQtd2hpdGUgZGFyazpob3ZlcjpiZy1ncmF5LTYwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAvKiogSGFja3kgZml4IGZvciByYWRpeC11aSBBbmRyb2lkIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vcmFkaXgtdWkvcHJpbWl0aXZlcy9pc3N1ZXMvMTY1OCAgKi9cbiAgICAgICAgICAgICAgICAgICAgICBvblRvdWNoRW5kPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShgJHt2YWx1ZSA/PyAnJ31gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldE9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJhYnNvbHV0ZSByaWdodC0yIGZsZXggaC0zLjUgdy0zLjUgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UmFkaXhTZWxlY3QuSXRlbUluZGljYXRvcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrSWNvbiBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUmFkaXhTZWxlY3QuSXRlbUluZGljYXRvcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPFJhZGl4U2VsZWN0Lkl0ZW1UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMyBkYXJrOnRleHQtd2hpdGUgWyZfc3ZnXTpoLTQgWyZfc3ZnXTp3LTQgWyZfc3ZnXTpzaHJpbmstMCBbJl9zdmddOnRleHQtZm9yZWdyb3VuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFzc2lzdGFudC1pdGVtIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aWNvbiAmJiBpY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2xhYmVsfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9SYWRpeFNlbGVjdC5JdGVtVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPC9Db21ib2JveEl0ZW0+XG4gICAgICAgICAgICAgICAgICA8L1JhZGl4U2VsZWN0Lkl0ZW0+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvQ29tYm9ib3hMaXN0PlxuICAgICAgICAgICAgPC9SYWRpeFNlbGVjdC5WaWV3cG9ydD5cbiAgICAgICAgICAgIDxTZWxlY3RTY3JvbGxEb3duQnV0dG9uIGNsYXNzTmFtZT1cImFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCByaWdodC0wXCIgLz5cbiAgICAgICAgICA8L1JhZGl4U2VsZWN0LkNvbnRlbnQ+XG4gICAgICAgIDwvUmFkaXhTZWxlY3QuUG9ydGFsPlxuICAgICAgPC9Db21ib2JveFByb3ZpZGVyPlxuICAgIDwvUmFkaXhTZWxlY3QuUm9vdD5cbiAgKTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBTZWxlY3QgZnJvbSAnQGFyaWFraXQvcmVhY3Qvc2VsZWN0JztcbmltcG9ydCB0eXBlIHsgT3B0aW9uIH0gZnJvbSAnfi9jb21tb24nO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5pbXBvcnQgJy4vRHJvcGRvd24uY3NzJztcblxuaW50ZXJmYWNlIERyb3Bkb3duUHJvcHMge1xuICB2YWx1ZT86IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgb3B0aW9uczogKHN0cmluZyB8IE9wdGlvbiB8IHsgZGl2aWRlcjogdHJ1ZSB9KVtdO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNpemVDbGFzc2VzPzogc3RyaW5nO1xuICB0ZXN0SWQ/OiBzdHJpbmc7XG4gIGljb24/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIGljb25Pbmx5PzogYm9vbGVhbjtcbiAgcmVuZGVyVmFsdWU/OiAob3B0aW9uOiBPcHRpb24pID0+IFJlYWN0LlJlYWN0Tm9kZTtcbiAgYXJpYUxhYmVsPzogc3RyaW5nO1xuICAnYXJpYS1sYWJlbGxlZGJ5Jz86IHN0cmluZztcbiAgcG9ydGFsPzogYm9vbGVhbjtcbn1cblxuY29uc3QgaXNEaXZpZGVyID0gKGl0ZW06IHN0cmluZyB8IE9wdGlvbiB8IHsgZGl2aWRlcjogdHJ1ZSB9KTogaXRlbSBpcyB7IGRpdmlkZXI6IHRydWUgfSA9PlxuICB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgJ2RpdmlkZXInIGluIGl0ZW07XG5cbmNvbnN0IGlzT3B0aW9uID0gKGl0ZW06IHN0cmluZyB8IE9wdGlvbiB8IHsgZGl2aWRlcjogdHJ1ZSB9KTogaXRlbSBpcyBPcHRpb24gPT5cbiAgdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmICd2YWx1ZScgaW4gaXRlbSAmJiAnbGFiZWwnIGluIGl0ZW07XG5cbmNvbnN0IERyb3Bkb3duOiBSZWFjdC5GQzxEcm9wZG93blByb3BzPiA9ICh7XG4gIHZhbHVlOiBzZWxlY3RlZFZhbHVlLFxuICBsYWJlbCA9ICcnLFxuICBvbkNoYW5nZSxcbiAgb3B0aW9ucyxcbiAgY2xhc3NOYW1lID0gJycsXG4gIHNpemVDbGFzc2VzLFxuICB0ZXN0SWQgPSAnZHJvcGRvd24tbWVudScsXG4gIGljb24sXG4gIGljb25Pbmx5ID0gZmFsc2UsXG4gIHJlbmRlclZhbHVlLFxuICBhcmlhTGFiZWwsXG4gICdhcmlhLWxhYmVsbGVkYnknOiBhcmlhTGFiZWxsZWRCeSxcbiAgcG9ydGFsID0gdHJ1ZSxcbn0pID0+IHtcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gIH07XG5cbiAgY29uc3Qgc2VsZWN0UHJvcHMgPSBTZWxlY3QudXNlU2VsZWN0U3RvcmUoe1xuICAgIHZhbHVlOiBzZWxlY3RlZFZhbHVlLFxuICAgIHNldFZhbHVlOiBoYW5kbGVDaGFuZ2UsXG4gIH0pO1xuXG4gIGNvbnN0IGdldE9wdGlvbk9iamVjdCA9ICh2YWw6IHN0cmluZyB8IHVuZGVmaW5lZCk6IE9wdGlvbiB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKHZhbCA9PSBudWxsIHx8IHZhbCA9PT0gJycpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zXG4gICAgICAuZmlsdGVyKChvKSA9PiAhaXNEaXZpZGVyKG8pKVxuICAgICAgLm1hcCgobykgPT4gKHR5cGVvZiBvID09PSAnc3RyaW5nJyA/IHsgdmFsdWU6IG8sIGxhYmVsOiBvIH0gOiBvKSlcbiAgICAgIC5maW5kKChvKSA9PiBpc09wdGlvbihvKSAmJiBvLnZhbHVlID09PSB2YWwpIGFzIE9wdGlvbiB8IHVuZGVmaW5lZDtcbiAgfTtcblxuICBjb25zdCBnZXRPcHRpb25MYWJlbCA9IChjdXJyZW50VmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT4ge1xuICAgIGlmIChjdXJyZW50VmFsdWUgPT0gbnVsbCB8fCBjdXJyZW50VmFsdWUgPT09ICcnKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNvbnN0IG9wdGlvbiA9IGdldE9wdGlvbk9iamVjdChjdXJyZW50VmFsdWUpO1xuICAgIHJldHVybiBvcHRpb24gPyBvcHRpb24ubGFiZWwgOiBjdXJyZW50VmFsdWU7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y24oJ3JlbGF0aXZlJywgY2xhc3NOYW1lKX0+XG4gICAgICA8U2VsZWN0LlNlbGVjdFxuICAgICAgICBzdG9yZT17c2VsZWN0UHJvcHN9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgJ2ZvY3VzOnJpbmctb2Zmc2V0LXJpbmctb2Zmc2V0IHJlbGF0aXZlIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcm91bmRlZC14bCBib3JkZXIgYm9yZGVyLWlucHV0IGJnLWJhY2tncm91bmQgcHgtMyBweS0yIHRleHQtc20gdGV4dC10ZXh0LXByaW1hcnkgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwIGVhc2UtaW4tb3V0IGhvdmVyOmJnLWFjY2VudCBob3Zlcjp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGZvY3VzOnJpbmctcmluZy1wcmltYXJ5JyxcbiAgICAgICAgICBpY29uT25seSA/ICdoLWZ1bGwgdy0xMCcgOiAndy1maXQgZ2FwLTInLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9e3Rlc3RJZH1cbiAgICAgICAgYXJpYS1sYWJlbD17YXJpYUxhYmVsfVxuICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2FyaWFMYWJlbGxlZEJ5fVxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgIHtpY29ufVxuICAgICAgICAgIHshaWNvbk9ubHkgJiYgKFxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYmxvY2sgdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAge2xhYmVsfVxuICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGVkT3B0aW9uID0gZ2V0T3B0aW9uT2JqZWN0KHNlbGVjdGVkVmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmIChtYXRjaGVkT3B0aW9uICYmIHJlbmRlclZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyVmFsdWUobWF0Y2hlZE9wdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBnZXRPcHRpb25MYWJlbChzZWxlY3RlZFZhbHVlKTtcbiAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgeyFpY29uT25seSAmJiA8U2VsZWN0LlNlbGVjdEFycm93IC8+fVxuICAgICAgPC9TZWxlY3QuU2VsZWN0PlxuICAgICAgPFNlbGVjdC5TZWxlY3RQb3BvdmVyXG4gICAgICAgIHBvcnRhbD17cG9ydGFsfVxuICAgICAgICBzdG9yZT17c2VsZWN0UHJvcHN9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgJ3BvcG92ZXItdWkgei00MCcsXG4gICAgICAgICAgc2l6ZUNsYXNzZXMsXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICdtYXgtaC1bODB2aF0gb3ZlcmZsb3cteS1hdXRvJyxcbiAgICAgICAgICAnW3BvaW50ZXItZXZlbnRzOmF1dG9dJywgLy8gT3ZlcnJpZGUgYm9keSdzIHBvaW50ZXItZXZlbnRzOm5vbmUgd2hlbiBpbiBtb2RhbFxuICAgICAgICApfVxuICAgICAgPlxuICAgICAgICB7b3B0aW9ucy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKGlzRGl2aWRlcihpdGVtKSkge1xuICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtgZGl2aWRlci0ke2luZGV4fWB9IGNsYXNzTmFtZT1cIm15LTEgYm9yZGVyLXQgYm9yZGVyLWJvcmRlci1oZWF2eVwiIC8+O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IG9wdGlvbiA9IHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyA/IHsgdmFsdWU6IGl0ZW0sIGxhYmVsOiBpdGVtIH0gOiBpdGVtO1xuICAgICAgICAgIGlmICghaXNPcHRpb24ob3B0aW9uKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxTZWxlY3QuU2VsZWN0SXRlbVxuICAgICAgICAgICAgICBrZXk9e2BvcHRpb24tJHtpbmRleH1gfVxuICAgICAgICAgICAgICB2YWx1ZT17U3RyaW5nKG9wdGlvbi52YWx1ZSl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInNlbGVjdC1pdGVtXCJcbiAgICAgICAgICAgICAgZGF0YS10aGVtZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgIHtvcHRpb24uaWNvbiAhPSBudWxsICYmIDxzcGFuPntvcHRpb24uaWNvbiBhcyBSZWFjdC5SZWFjdE5vZGV9PC9zcGFuPn1cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJibG9jayB0cnVuY2F0ZVwiPntvcHRpb24ubGFiZWx9PC9zcGFuPlxuICAgICAgICAgICAgICAgIHtzZWxlY3RlZFZhbHVlID09PSBvcHRpb24udmFsdWUgJiYgKFxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWwtYXV0byBwbC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImljb24tbWQgYmxvY2sgZ3JvdXAtaG92ZXI6aGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xpcFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMiAxMkMyIDYuNDc3MTUgNi40NzcxNSAyIDEyIDJDMTcuNTIyOCAyIDIyIDYuNDc3MTUgMjIgMTJDMjIgMTcuNTIyOCAxNy41MjI4IDIyIDEyIDIyQzYuNDc3MTUgMjIgMiAxNy41MjI4IDIgMTJaTTE2LjA3NTUgNy45MzIxOUMxNi41MjcyIDguMjUwMDMgMTYuNjM1NiA4Ljg3MzgzIDE2LjMxNzggOS4zMjU0OUwxMS41Njc4IDE2LjA3NTVDMTEuMzkzMSAxNi4zMjM3IDExLjExNTIgMTYuNDc5MiAxMC44MTIzIDE2LjQ5ODFDMTAuNTA5MyAxNi41MTcgMTAuMjE0MiAxNi4zOTczIDEwLjAxMDEgMTYuMTcyN0w3LjUxMDA2IDEzLjQyMjdDNy4xMzg1NSAxMy4wMTQgNy4xNjg2NyAxMi4zODE2IDcuNTc3MzMgMTIuMDEwMUM3Ljk4NTk4IDExLjYzODYgOC42MTg0MyAxMS42Njg3IDguOTg5OTQgMTIuMDc3M0wxMC42NTA0IDEzLjkwMzlMMTQuNjgyMiA4LjE3NDUxQzE1IDcuNzIyODQgMTUuNjIzOCA3LjYxNDM2IDE2LjA3NTUgNy45MzIxOVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L1NlbGVjdC5TZWxlY3RJdGVtPlxuICAgICAgICAgICk7XG4gICAgICAgIH0pfVxuICAgICAgPC9TZWxlY3QuU2VsZWN0UG9wb3Zlcj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFNlYXJjaCB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyBUcmFuc2xhdGlvbktleXMsIHVzZUxvY2FsaXplIH0gZnJvbSAnfi9ob29rcyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5jb25zdCBBbmltYXRlZFNlYXJjaElucHV0ID0gKHtcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBpc1NlYXJjaGluZzogc2VhcmNoaW5nLFxuICBwbGFjZWhvbGRlcixcbn06IHtcbiAgdmFsdWU/OiBzdHJpbmc7XG4gIG9uQ2hhbmdlOiAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHZvaWQ7XG4gIGlzU2VhcmNoaW5nPzogYm9vbGVhbjtcbiAgcGxhY2Vob2xkZXI6IHN0cmluZztcbn0pID0+IHtcbiAgY29uc3QgaXNTZWFyY2hpbmcgPSBzZWFyY2hpbmcgPT09IHRydWU7XG4gIGNvbnN0IGhhc1ZhbHVlID0gdmFsdWUgIT0gbnVsbCAmJiB2YWx1ZS5sZW5ndGggPiAwO1xuICBjb25zdCBsb2NhbGl6ZSA9IHVzZUxvY2FsaXplKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHctZnVsbFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSByb3VuZGVkLWxnIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMCBlYXNlLWluLW91dFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlXCI+XG4gICAgICAgICAgey8qIEljb24gb24gdGhlIGxlZnQgKi99XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBsZWZ0LTMgdG9wLTEvMiB6LTUwIC10cmFuc2xhdGUteS0xLzJcIj5cbiAgICAgICAgICAgIDxTZWFyY2hcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICBgaC00IHctNCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDAgZWFzZS1pbi1vdXRgLFxuICAgICAgICAgICAgICAgIGlzU2VhcmNoaW5nICYmIGhhc1ZhbHVlID8gJ3RleHQtYmx1ZS00MDAnIDogJ3RleHQtZ3JheS01MDAnLFxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIHsvKiBJbnB1dCBmaWVsZCAqL31cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9e2xvY2FsaXplKCdjb21fdWlfc2VhcmNoJyl9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2BwZWVyIHJlbGF0aXZlIHotMjAgdy1mdWxsIHJvdW5kZWQtbGcgYmctc3VyZmFjZS1zZWNvbmRhcnkgcHktMiBwbC0xMCBvdXRsaW5lLW5vbmUgYmFja2Ryb3AtYmx1ci1zbSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDAgZWFzZS1pbi1vdXQgcGxhY2Vob2xkZXI6dGV4dC1ncmF5LTUwMCBmb2N1czpyaW5nLXJpbmdgfVxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICB7LyogR3JhZGllbnQgb3ZlcmxheSAqL31cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9e2Bwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIGluc2V0LTAgei0yMCByb3VuZGVkLWxnIGJnLWdyYWRpZW50LXRvLXIgZnJvbS1ibHVlLTUwMC8yMCB2aWEtcHVycGxlLTUwMC8yMCB0by1ibHVlLTUwMC8yMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDAgZWFzZS1pbi1vdXQgJHtpc1NlYXJjaGluZyAmJiBoYXNWYWx1ZSA/ICdvcGFjaXR5LTEwMCBibHVyLXNtJyA6ICdvcGFjaXR5LTAgYmx1ci1ub25lJ30gYH1cbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgey8qIEFuaW1hdGVkIGxvYWRpbmcgaW5kaWNhdG9yICovfVxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YGFic29sdXRlIHJpZ2h0LTMgdG9wLTEvMiB6LTIwIC10cmFuc2xhdGUteS0xLzIgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwIGVhc2UtaW4tb3V0ICR7aXNTZWFyY2hpbmcgJiYgaGFzVmFsdWUgPyAnc2NhbGUtMTAwIG9wYWNpdHktMTAwJyA6ICdzY2FsZS0wIG9wYWNpdHktMCd9IGB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBoLTIgdy0yXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCBhbmltYXRlLXBpbmcgcm91bmRlZC1mdWxsIGJnLWJsdWUtNTAwLzYwXCIgLz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIHJvdW5kZWQtZnVsbCBiZy1ibHVlLTUwMFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIE91dGVyIGdsb3cgZWZmZWN0ICovfVxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2BhYnNvbHV0ZSAtaW5zZXQtOCAtei0xMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi03MDAgZWFzZS1pbi1vdXQgJHtpc1NlYXJjaGluZyAmJiBoYXNWYWx1ZSA/ICdzY2FsZS0xMDUgb3BhY2l0eS0xMDAnIDogJ3NjYWxlLTEwMCBvcGFjaXR5LTAnfSBgfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTBcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9e2BiZy1ncmFkaWVudC1yYWRpYWwgYWJzb2x1dGUgaW5zZXQtMCBmcm9tLWJsdWUtNTAwLzEwIHRvLXRyYW5zcGFyZW50IHRyYW5zaXRpb24tb3BhY2l0eSBkdXJhdGlvbi03MDAgZWFzZS1pbi1vdXQgJHtpc1NlYXJjaGluZyAmJiBoYXNWYWx1ZSA/ICdhbmltYXRlLXB1bHNlLXNsb3cgb3BhY2l0eS0xMDAnIDogJ29wYWNpdHktMCd9IGB9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9e2BhYnNvbHV0ZSBpbnNldC0wIGJnLWdyYWRpZW50LXRvLXIgZnJvbS1wdXJwbGUtNTAwLzUgdmlhLWJsdWUtNTAwLzUgdG8tcHVycGxlLTUwMC81IGJsdXIteGwgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNzAwIGVhc2UtaW4tb3V0ICR7aXNTZWFyY2hpbmcgJiYgaGFzVmFsdWUgPyAnYW5pbWF0ZS1ncmFkaWVudC14IG9wYWNpdHktMTAwJyA6ICdvcGFjaXR5LTAnfSBgfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17YGFic29sdXRlIGluc2V0LTAgLXotMjAgc2NhbGUtMTAwIGJnLWdyYWRpZW50LXRvLXIgZnJvbS1ibHVlLTUwMC8xMCB2aWEtcHVycGxlLTUwMC8xMCB0by1ibHVlLTUwMC8xMCBvcGFjaXR5LTAgYmx1ci14bCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDAgZWFzZS1pbi1vdXQgcGVlci1mb2N1czpzY2FsZS0xMDUgcGVlci1mb2N1czpvcGFjaXR5LTEwMGB9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQW5pbWF0ZWRTZWFyY2hJbnB1dDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlLCBtZW1vLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVmlydHVhbGl6ZXIgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtdmlydHVhbCc7XG5pbXBvcnQge1xuICBSb3csXG4gIENvbHVtbkRlZixcbiAgZmxleFJlbmRlcixcbiAgU29ydGluZ1N0YXRlLFxuICB1c2VSZWFjdFRhYmxlLFxuICBnZXRDb3JlUm93TW9kZWwsXG4gIFZpc2liaWxpdHlTdGF0ZSxcbiAgZ2V0U29ydGVkUm93TW9kZWwsXG4gIENvbHVtbkZpbHRlcnNTdGF0ZSxcbiAgZ2V0RmlsdGVyZWRSb3dNb2RlbCxcbn0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXRhYmxlJztcbmltcG9ydCB0eXBlIHsgVGFibGUgYXMgVFRhYmxlIH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXRhYmxlJztcbmltcG9ydCB7IFRhYmxlLCBUYWJsZVJvdywgVGFibGVCb2R5LCBUYWJsZUNlbGwsIFRhYmxlSGVhZCwgVGFibGVIZWFkZXIgfSBmcm9tICcuL1RhYmxlJztcbmltcG9ydCB7IHVzZU1lZGlhUXVlcnksIHVzZUxvY2FsaXplLCBUcmFuc2xhdGlvbktleXMgfSBmcm9tICd+L2hvb2tzJztcbmltcG9ydCBBbmltYXRlZFNlYXJjaElucHV0IGZyb20gJy4vQW5pbWF0ZWRTZWFyY2hJbnB1dCc7XG5pbXBvcnQgeyBUcmFzaEljb24sIFNwaW5uZXIgfSBmcm9tICd+L3N2Z3MnO1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tICcuL1NrZWxldG9uJztcbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSAnLi9DaGVja2JveCc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuL0J1dHRvbic7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG50eXBlIFRhYmxlQ29sdW1uPFREYXRhLCBUVmFsdWU+ID0gQ29sdW1uRGVmPFREYXRhLCBUVmFsdWU+ICYge1xuICBtZXRhPzoge1xuICAgIHNpemU/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgbW9iaWxlU2l6ZT86IHN0cmluZyB8IG51bWJlcjtcbiAgICBtaW5XaWR0aD86IHN0cmluZyB8IG51bWJlcjtcbiAgfTtcbn07XG5cbmNvbnN0IFNlbGVjdGlvbkNoZWNrYm94ID0gbWVtbyhcbiAgKHtcbiAgICBjaGVja2VkLFxuICAgIG9uQ2hhbmdlLFxuICAgIGFyaWFMYWJlbCxcbiAgfToge1xuICAgIGNoZWNrZWQ6IGJvb2xlYW47XG4gICAgb25DaGFuZ2U6ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZDtcbiAgICBhcmlhTGFiZWw6IHN0cmluZztcbiAgfSkgPT4gKFxuICAgIDxkaXZcbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICBvbktleURvd249eyhlKSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpfVxuICAgICAgY2xhc3NOYW1lPVwiZmxleCBoLWZ1bGwgdy1bMzBweF0gaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCJcbiAgICAgIG9uQ2xpY2s9eyhlKSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpfVxuICAgID5cbiAgICAgIDxDaGVja2JveCBjaGVja2VkPXtjaGVja2VkfSBvbkNoZWNrZWRDaGFuZ2U9e29uQ2hhbmdlfSBhcmlhLWxhYmVsPXthcmlhTGFiZWx9IC8+XG4gICAgPC9kaXY+XG4gICksXG4pO1xuXG5TZWxlY3Rpb25DaGVja2JveC5kaXNwbGF5TmFtZSA9ICdTZWxlY3Rpb25DaGVja2JveCc7XG5cbmludGVyZmFjZSBEYXRhVGFibGVQcm9wczxURGF0YSwgVFZhbHVlPiB7XG4gIGNvbHVtbnM6IFRhYmxlQ29sdW1uPFREYXRhLCBUVmFsdWU+W107XG4gIGRhdGE6IFREYXRhW107XG4gIG9uRGVsZXRlPzogKHNlbGVjdGVkUm93czogVERhdGFbXSkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZmlsdGVyQ29sdW1uPzogc3RyaW5nO1xuICBkZWZhdWx0U29ydD86IFNvcnRpbmdTdGF0ZTtcbiAgY29sdW1uVmlzaWJpbGl0eU1hcD86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgcGFnZVNpemU/OiBudW1iZXI7XG4gIGlzRmV0Y2hpbmdOZXh0UGFnZT86IGJvb2xlYW47XG4gIGhhc05leHRQYWdlPzogYm9vbGVhbjtcbiAgZmV0Y2hOZXh0UGFnZT86IChvcHRpb25zPzogdW5rbm93bikgPT4gUHJvbWlzZTx1bmtub3duPjtcbiAgZW5hYmxlUm93U2VsZWN0aW9uPzogYm9vbGVhbjtcbiAgc2hvd0NoZWNrYm94ZXM/OiBib29sZWFuO1xuICBvbkZpbHRlckNoYW5nZT86ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICBmaWx0ZXJWYWx1ZT86IHN0cmluZztcbiAgaXNMb2FkaW5nPzogYm9vbGVhbjtcbiAgZW5hYmxlU2VhcmNoPzogYm9vbGVhbjtcbn1cblxuY29uc3QgVGFibGVSb3dDb21wb25lbnQgPSA8VERhdGEsIFRWYWx1ZT4oe1xuICByb3csXG4gIGlzU21hbGxTY3JlZW4sXG4gIG9uU2VsZWN0aW9uQ2hhbmdlLFxuICBpbmRleCxcbiAgaXNTZWFyY2hpbmcsXG59OiB7XG4gIHJvdzogUm93PFREYXRhPjtcbiAgaXNTbWFsbFNjcmVlbjogYm9vbGVhbjtcbiAgb25TZWxlY3Rpb25DaGFuZ2U/OiAocm93SWQ6IHN0cmluZywgc2VsZWN0ZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIGluZGV4OiBudW1iZXI7XG4gIGlzU2VhcmNoaW5nOiBib29sZWFuO1xufSkgPT4ge1xuICBjb25zdCBoYW5kbGVTZWxlY3Rpb24gPSB1c2VDYWxsYmFjayhcbiAgICAodmFsdWU6IGJvb2xlYW4pID0+IHtcbiAgICAgIHJvdy50b2dnbGVTZWxlY3RlZCh2YWx1ZSk7XG4gICAgICBvblNlbGVjdGlvbkNoYW5nZT8uKHJvdy5pZCwgdmFsdWUpO1xuICAgIH0sXG4gICAgW3Jvdywgb25TZWxlY3Rpb25DaGFuZ2VdLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPFRhYmxlUm93XG4gICAgICBkYXRhLXN0YXRlPXtyb3cuZ2V0SXNTZWxlY3RlZCgpID8gJ3NlbGVjdGVkJyA6IHVuZGVmaW5lZH1cbiAgICAgIGNsYXNzTmFtZT1cIm1vdGlvbi1zYWZlOmFuaW1hdGUtZmFkZUluIGJvcmRlci1iIGJvcmRlci1ib3JkZXItbGlnaHQgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwIGVhc2Utb3V0IGhvdmVyOmJnLXN1cmZhY2Utc2Vjb25kYXJ5XCJcbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIGFuaW1hdGlvbkRlbGF5OiBgJHtpbmRleCAqIDIwfW1zYCxcbiAgICAgICAgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWSgke2lzU2VhcmNoaW5nID8gJzRweCcgOiAnMCd9KWAsXG4gICAgICAgIG9wYWNpdHk6IGlzU2VhcmNoaW5nID8gMC41IDogMSxcbiAgICAgIH19XG4gICAgPlxuICAgICAge3Jvdy5nZXRWaXNpYmxlQ2VsbHMoKS5tYXAoKGNlbGwpID0+IHtcbiAgICAgICAgaWYgKGNlbGwuY29sdW1uLmlkID09PSAnc2VsZWN0Jykge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8VGFibGVDZWxsIGtleT17Y2VsbC5pZH0gY2xhc3NOYW1lPVwicHgtMiBweS0xIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMFwiPlxuICAgICAgICAgICAgICA8U2VsZWN0aW9uQ2hlY2tib3hcbiAgICAgICAgICAgICAgICBjaGVja2VkPXtyb3cuZ2V0SXNTZWxlY3RlZCgpfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVTZWxlY3Rpb259XG4gICAgICAgICAgICAgICAgYXJpYUxhYmVsPVwiU2VsZWN0IHJvd1wiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNlbGwuY29sdW1uLmlkID09PSAndGl0bGUnKSB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxUYWJsZUhlYWRcbiAgICAgICAgICAgICAga2V5PXtjZWxsLmlkfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTAgbWF4LXctMCBweC0yIHB5LTEgYWxpZ24tbWlkZGxlIHRleHQteHMgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwIHNtOnB4LTQgc206cHktMiBzbTp0ZXh0LXNtXCJcbiAgICAgICAgICAgICAgc3R5bGU9e2dldENvbHVtblN0eWxlKFxuICAgICAgICAgICAgICAgIGNlbGwuY29sdW1uLmNvbHVtbkRlZiBhcyBUYWJsZUNvbHVtbjxURGF0YSwgVFZhbHVlPixcbiAgICAgICAgICAgICAgICBpc1NtYWxsU2NyZWVuLFxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICBzY29wZT1cInJvd1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwib3ZlcmZsb3ctdmlzaWJsZSB0ZXh0LWVsbGlwc2lzXCI+XG4gICAgICAgICAgICAgICAge2ZsZXhSZW5kZXIoY2VsbC5jb2x1bW4uY29sdW1uRGVmLmNlbGwsIGNlbGwuZ2V0Q29udGV4dCgpKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L1RhYmxlSGVhZD5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8VGFibGVDZWxsXG4gICAgICAgICAgICBrZXk9e2NlbGwuaWR9XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTAgbWF4LXctMCBvdmVyZmxvdy12aXNpYmxlIHB4LTIgcHktMSBhbGlnbi1taWRkbGUgdGV4dC14cyB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgc206cHgtNCBzbTpweS0yIHNtOnRleHQtc21cIlxuICAgICAgICAgICAgc3R5bGU9e2dldENvbHVtblN0eWxlKFxuICAgICAgICAgICAgICBjZWxsLmNvbHVtbi5jb2x1bW5EZWYgYXMgVGFibGVDb2x1bW48VERhdGEsIFRWYWx1ZT4sXG4gICAgICAgICAgICAgIGlzU21hbGxTY3JlZW4sXG4gICAgICAgICAgICApfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwib3ZlcmZsb3ctdmlzaWJsZSB0ZXh0LWVsbGlwc2lzXCI+XG4gICAgICAgICAgICAgIHtmbGV4UmVuZGVyKGNlbGwuY29sdW1uLmNvbHVtbkRlZi5jZWxsLCBjZWxsLmdldENvbnRleHQoKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgKTtcbiAgICAgIH0pfVxuICAgIDwvVGFibGVSb3c+XG4gICk7XG59O1xuXG5jb25zdCBNZW1vaXplZFRhYmxlUm93ID0gbWVtbyhUYWJsZVJvd0NvbXBvbmVudCkgYXMgdHlwZW9mIFRhYmxlUm93Q29tcG9uZW50O1xuXG5mdW5jdGlvbiBnZXRDb2x1bW5TdHlsZTxURGF0YSwgVFZhbHVlPihcbiAgY29sdW1uOiBUYWJsZUNvbHVtbjxURGF0YSwgVFZhbHVlPixcbiAgaXNTbWFsbFNjcmVlbjogYm9vbGVhbixcbik6IFJlYWN0LkNTU1Byb3BlcnRpZXMge1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiBpc1NtYWxsU2NyZWVuID8gY29sdW1uLm1ldGE/Lm1vYmlsZVNpemUgOiBjb2x1bW4ubWV0YT8uc2l6ZSxcbiAgICBtaW5XaWR0aDogY29sdW1uLm1ldGE/Lm1pbldpZHRoLFxuICAgIG1heFdpZHRoOiBjb2x1bW4ubWV0YT8uc2l6ZSxcbiAgfTtcbn1cblxuY29uc3QgRGVsZXRlQnV0dG9uID0gbWVtbyhcbiAgKHtcbiAgICBvbkRlbGV0ZSxcbiAgICBpc0RlbGV0aW5nLFxuICAgIGRpc2FibGVkLFxuICAgIGlzU21hbGxTY3JlZW4sXG4gICAgYXJpYUxhYmVsLFxuICB9OiB7XG4gICAgb25EZWxldGU/OiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuICAgIGlzRGVsZXRpbmc6IGJvb2xlYW47XG4gICAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgaXNTbWFsbFNjcmVlbjogYm9vbGVhbjtcbiAgICBhcmlhTGFiZWw6IHN0cmluZztcbiAgfSkgPT4ge1xuICAgIGlmICghb25EZWxldGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPEJ1dHRvblxuICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgIG9uQ2xpY2s9e29uRGVsZXRlfVxuICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oJ21pbi13LVs0MHB4XSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDAnLCBpc1NtYWxsU2NyZWVuICYmICdweC0yIHB5LTEnKX1cbiAgICAgICAgYXJpYS1sYWJlbD17YXJpYUxhYmVsfVxuICAgICAgPlxuICAgICAgICB7aXNEZWxldGluZyA/IChcbiAgICAgICAgICA8U3Bpbm5lciBjbGFzc05hbWU9XCJzaXplLTRcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8VHJhc2hJY29uIGNsYXNzTmFtZT1cInNpemUtMy41IHRleHQtcmVkLTQwMCBzbTpzaXplLTRcIiAvPlxuICAgICAgICAgICAgeyFpc1NtYWxsU2NyZWVuICYmIDxzcGFuIGNsYXNzTmFtZT1cIm1sLTJcIj5EZWxldGU8L3NwYW4+fVxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9CdXR0b24+XG4gICAgKTtcbiAgfSxcbik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhdGFUYWJsZTxURGF0YSwgVFZhbHVlPih7XG4gIGNvbHVtbnMsXG4gIGRhdGEsXG4gIG9uRGVsZXRlLFxuICBmaWx0ZXJDb2x1bW4sXG4gIGRlZmF1bHRTb3J0ID0gW10sXG4gIGNsYXNzTmFtZSA9ICcnLFxuICBpc0ZldGNoaW5nTmV4dFBhZ2UgPSBmYWxzZSxcbiAgaGFzTmV4dFBhZ2UgPSBmYWxzZSxcbiAgZmV0Y2hOZXh0UGFnZSxcbiAgZW5hYmxlUm93U2VsZWN0aW9uID0gdHJ1ZSxcbiAgc2hvd0NoZWNrYm94ZXMgPSB0cnVlLFxuICBvbkZpbHRlckNoYW5nZSxcbiAgZmlsdGVyVmFsdWUsXG4gIGlzTG9hZGluZyxcbiAgZW5hYmxlU2VhcmNoID0gdHJ1ZSxcbn06IERhdGFUYWJsZVByb3BzPFREYXRhLCBUVmFsdWU+KSB7XG4gIGNvbnN0IGxvY2FsaXplID0gdXNlTG9jYWxpemUoKTtcbiAgY29uc3QgaXNTbWFsbFNjcmVlbiA9IHVzZU1lZGlhUXVlcnkoJyhtYXgtd2lkdGg6IDc2OHB4KScpO1xuICBjb25zdCB0YWJsZUNvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG5cbiAgY29uc3QgW2lzRGVsZXRpbmcsIHNldElzRGVsZXRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbcm93U2VsZWN0aW9uLCBzZXRSb3dTZWxlY3Rpb25dID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KHt9KTtcbiAgY29uc3QgW3NvcnRpbmcsIHNldFNvcnRpbmddID0gdXNlU3RhdGU8U29ydGluZ1N0YXRlPihkZWZhdWx0U29ydCk7XG4gIGNvbnN0IFtjb2x1bW5GaWx0ZXJzLCBzZXRDb2x1bW5GaWx0ZXJzXSA9IHVzZVN0YXRlPENvbHVtbkZpbHRlcnNTdGF0ZT4oW10pO1xuICBjb25zdCBbY29sdW1uVmlzaWJpbGl0eSwgc2V0Q29sdW1uVmlzaWJpbGl0eV0gPSB1c2VTdGF0ZTxWaXNpYmlsaXR5U3RhdGU+KHt9KTtcbiAgY29uc3QgW3NlYXJjaFRlcm0sIHNldFNlYXJjaFRlcm1dID0gdXNlU3RhdGUoZmlsdGVyVmFsdWUgPz8gJycpO1xuICBjb25zdCBbaXNTZWFyY2hpbmcsIHNldElzU2VhcmNoaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3NlYXJjaFJlc3VsdHNBbm5vdW5jZW1lbnQsIHNldFNlYXJjaFJlc3VsdHNBbm5vdW5jZW1lbnRdID0gdXNlU3RhdGUoJycpO1xuXG4gIGNvbnN0IHRhYmxlQ29sdW1ucyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghZW5hYmxlUm93U2VsZWN0aW9uIHx8ICFzaG93Q2hlY2tib3hlcykge1xuICAgICAgcmV0dXJuIGNvbHVtbnM7XG4gICAgfVxuICAgIGNvbnN0IHNlbGVjdENvbHVtbiA9IHtcbiAgICAgIGlkOiAnc2VsZWN0JyxcbiAgICAgIGhlYWRlcjogKHsgdGFibGUgfTogeyB0YWJsZTogVFRhYmxlPFREYXRhPiB9KSA9PiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBoLWZ1bGwgdy1bMzBweF0gaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICBjaGVja2VkPXt0YWJsZS5nZXRJc0FsbFBhZ2VSb3dzU2VsZWN0ZWQoKX1cbiAgICAgICAgICAgIG9uQ2hlY2tlZENoYW5nZT17KHZhbHVlKSA9PiB0YWJsZS50b2dnbGVBbGxQYWdlUm93c1NlbGVjdGVkKEJvb2xlYW4odmFsdWUpKX1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJTZWxlY3QgYWxsXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICksXG4gICAgICBjZWxsOiAoeyByb3cgfTogeyByb3c6IFJvdzxURGF0YT4gfSkgPT4gKFxuICAgICAgICA8U2VsZWN0aW9uQ2hlY2tib3hcbiAgICAgICAgICBjaGVja2VkPXtyb3cuZ2V0SXNTZWxlY3RlZCgpfVxuICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHJvdy50b2dnbGVTZWxlY3RlZCh2YWx1ZSl9XG4gICAgICAgICAgYXJpYUxhYmVsPVwiU2VsZWN0IHJvd1wiXG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgbWV0YTogeyBzaXplOiAnNTBweCcgfSxcbiAgICB9O1xuICAgIHJldHVybiBbc2VsZWN0Q29sdW1uLCAuLi5jb2x1bW5zXTtcbiAgfSwgW2NvbHVtbnMsIGVuYWJsZVJvd1NlbGVjdGlvbiwgc2hvd0NoZWNrYm94ZXNdKTtcblxuICBjb25zdCB0YWJsZSA9IHVzZVJlYWN0VGFibGUoe1xuICAgIGRhdGEsXG4gICAgY29sdW1uczogdGFibGVDb2x1bW5zLFxuICAgIGdldENvcmVSb3dNb2RlbDogZ2V0Q29yZVJvd01vZGVsKCksXG4gICAgZ2V0U29ydGVkUm93TW9kZWw6IGdldFNvcnRlZFJvd01vZGVsKCksXG4gICAgZ2V0RmlsdGVyZWRSb3dNb2RlbDogZ2V0RmlsdGVyZWRSb3dNb2RlbCgpLFxuICAgIGVuYWJsZVJvd1NlbGVjdGlvbixcbiAgICBlbmFibGVNdWx0aVJvd1NlbGVjdGlvbjogdHJ1ZSxcbiAgICBzdGF0ZToge1xuICAgICAgc29ydGluZyxcbiAgICAgIGNvbHVtbkZpbHRlcnMsXG4gICAgICBjb2x1bW5WaXNpYmlsaXR5LFxuICAgICAgcm93U2VsZWN0aW9uLFxuICAgIH0sXG4gICAgb25Tb3J0aW5nQ2hhbmdlOiBzZXRTb3J0aW5nLFxuICAgIG9uQ29sdW1uRmlsdGVyc0NoYW5nZTogc2V0Q29sdW1uRmlsdGVycyxcbiAgICBvbkNvbHVtblZpc2liaWxpdHlDaGFuZ2U6IHNldENvbHVtblZpc2liaWxpdHksXG4gICAgb25Sb3dTZWxlY3Rpb25DaGFuZ2U6IHNldFJvd1NlbGVjdGlvbixcbiAgfSk7XG5cbiAgY29uc3QgeyByb3dzIH0gPSB0YWJsZS5nZXRSb3dNb2RlbCgpO1xuXG4gIGNvbnN0IHJvd1ZpcnR1YWxpemVyID0gdXNlVmlydHVhbGl6ZXIoe1xuICAgIGNvdW50OiByb3dzLmxlbmd0aCxcbiAgICBnZXRTY3JvbGxFbGVtZW50OiAoKSA9PiB0YWJsZUNvbnRhaW5lclJlZi5jdXJyZW50LFxuICAgIGVzdGltYXRlU2l6ZTogdXNlQ2FsbGJhY2soKCkgPT4gNDgsIFtdKSxcbiAgICBvdmVyc2NhbjogMTAsXG4gIH0pO1xuXG4gIGNvbnN0IHZpcnR1YWxSb3dzID0gcm93VmlydHVhbGl6ZXIuZ2V0VmlydHVhbEl0ZW1zKCk7XG4gIGNvbnN0IHRvdGFsU2l6ZSA9IHJvd1ZpcnR1YWxpemVyLmdldFRvdGFsU2l6ZSgpO1xuICBjb25zdCBwYWRkaW5nVG9wID0gdmlydHVhbFJvd3MubGVuZ3RoID4gMCA/IHZpcnR1YWxSb3dzWzBdLnN0YXJ0IDogMDtcbiAgY29uc3QgcGFkZGluZ0JvdHRvbSA9XG4gICAgdmlydHVhbFJvd3MubGVuZ3RoID4gMCA/IHRvdGFsU2l6ZSAtIHZpcnR1YWxSb3dzW3ZpcnR1YWxSb3dzLmxlbmd0aCAtIDFdLmVuZCA6IDA7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBzY3JvbGxFbGVtZW50ID0gdGFibGVDb250YWluZXJSZWYuY3VycmVudDtcbiAgICBpZiAoIXNjcm9sbEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVTY3JvbGwgPSBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoIWhhc05leHRQYWdlIHx8IGlzRmV0Y2hpbmdOZXh0UGFnZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IHNjcm9sbEVsZW1lbnQ7XG4gICAgICBpZiAoc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIDw9IGNsaWVudEhlaWdodCAqIDEuNSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFNhZmVseSBmZXRjaCBuZXh0IHBhZ2Ugd2l0aG91dCBicmVha2luZyBpZiBsYXN0UGFnZSBpcyB1bmRlZmluZWRcbiAgICAgICAgICBhd2FpdCBmZXRjaE5leHRQYWdlPy4oKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdVbmFibGUgdG8gZmV0Y2ggbmV4dCBwYWdlOicsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBzY3JvbGxFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIHJldHVybiAoKSA9PiBzY3JvbGxFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gIH0sIFtoYXNOZXh0UGFnZSwgaXNGZXRjaGluZ05leHRQYWdlLCBmZXRjaE5leHRQYWdlXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRJc1NlYXJjaGluZyh0cnVlKTtcbiAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBvbkZpbHRlckNoYW5nZT8uKHNlYXJjaFRlcm0pO1xuICAgICAgc2V0SXNTZWFyY2hpbmcoZmFsc2UpO1xuICAgIH0sIDMwMCk7XG4gICAgcmV0dXJuICgpID0+IGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgfSwgW3NlYXJjaFRlcm0sIG9uRmlsdGVyQ2hhbmdlXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNlYXJjaFRlcm0udHJpbSgpIHx8IGlzU2VhcmNoaW5nKSB7XG4gICAgICBzZXRTZWFyY2hSZXN1bHRzQW5ub3VuY2VtZW50KCcnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHRDb3VudCA9IHJvd3MubGVuZ3RoO1xuICAgIGNvbnN0IGFubm91bmNlbWVudCA9XG4gICAgICByZXN1bHRDb3VudCA9PT0gMVxuICAgICAgICA/IGxvY2FsaXplKCdjb21fdWlfcmVzdWx0X2ZvdW5kJyBhcyBUcmFuc2xhdGlvbktleXMsIHtcbiAgICAgICAgICAgIGNvdW50OiByZXN1bHRDb3VudCxcbiAgICAgICAgICB9KVxuICAgICAgICA6IGxvY2FsaXplKCdjb21fdWlfcmVzdWx0c19mb3VuZCcgYXMgVHJhbnNsYXRpb25LZXlzLCB7XG4gICAgICAgICAgICBjb3VudDogcmVzdWx0Q291bnQsXG4gICAgICAgICAgfSk7XG5cbiAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZXRTZWFyY2hSZXN1bHRzQW5ub3VuY2VtZW50KGFubm91bmNlbWVudCk7XG4gICAgfSwgMzAwKTtcblxuICAgIHJldHVybiAoKSA9PiBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gIH0sIFtyb3dzLmxlbmd0aCwgc2VhcmNoVGVybSwgaXNTZWFyY2hpbmcsIGxvY2FsaXplXSk7XG5cbiAgY29uc3QgaGFuZGxlRGVsZXRlID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGlmICghb25EZWxldGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXRJc0RlbGV0aW5nKHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBpdGVtc1RvRGVsZXRlID0gdGFibGUuZ2V0RmlsdGVyZWRTZWxlY3RlZFJvd01vZGVsKCkucm93cy5tYXAoKHIpID0+IHIub3JpZ2luYWwpO1xuICAgICAgYXdhaXQgb25EZWxldGUoaXRlbXNUb0RlbGV0ZSk7XG4gICAgICBzZXRSb3dTZWxlY3Rpb24oe30pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRJc0RlbGV0aW5nKGZhbHNlKTtcbiAgICB9XG4gIH0sIFtvbkRlbGV0ZSwgdGFibGVdKTtcblxuICBjb25zdCBnZXRSYW5kb21XaWR0aCA9ICgpID0+IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqICg0MTAgLSAxNzAgKyAxKSkgKyAxNzA7XG5cbiAgY29uc3Qgc2tlbGV0b25zID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogMTMgfSwgKF8sIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcmFuZG9tV2lkdGggPSBnZXRSYW5kb21XaWR0aCgpO1xuICAgIGNvbnN0IGZpcnN0RGF0YUNvbHVtbkluZGV4ID0gdGFibGVDb2x1bW5zWzBdPy5pZCA9PT0gJ3NlbGVjdCcgPyAxIDogMDtcblxuICAgIHJldHVybiAoXG4gICAgICA8VGFibGVSb3cga2V5PXtpbmRleH0gY2xhc3NOYW1lPVwibW90aW9uLXNhZmU6YW5pbWF0ZS1mYWRlSW4gYm9yZGVyLWIgYm9yZGVyLWJvcmRlci1saWdodFwiPlxuICAgICAgICB7dGFibGVDb2x1bW5zLm1hcCgoY29sdW1uLCBjb2x1bW5JbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0eWxlID0gZ2V0Q29sdW1uU3R5bGUoY29sdW1uIGFzIFRhYmxlQ29sdW1uPFREYXRhLCBUVmFsdWU+LCBpc1NtYWxsU2NyZWVuKTtcbiAgICAgICAgICBjb25zdCBpc0ZpcnN0RGF0YUNvbHVtbiA9IGNvbHVtbkluZGV4ID09PSBmaXJzdERhdGFDb2x1bW5JbmRleDtcblxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8VGFibGVDZWxsIGtleT17Y29sdW1uLmlkfSBjbGFzc05hbWU9XCJweC0yIHB5LTEgc206cHgtNCBzbTpweS0yXCIgc3R5bGU9e3N0eWxlfT5cbiAgICAgICAgICAgICAgPFNrZWxldG9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC02XCJcbiAgICAgICAgICAgICAgICBzdHlsZT17aXNGaXJzdERhdGFDb2x1bW4gPyB7IHdpZHRoOiBgJHtyYW5kb21XaWR0aH1weGAgfSA6IHsgd2lkdGg6ICcxMDAlJyB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICAgKTtcbiAgICAgICAgfSl9XG4gICAgICA8L1RhYmxlUm93PlxuICAgICk7XG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NuKCdmbGV4IGgtZnVsbCBmbGV4LWNvbCBnYXAtNCcsIGNsYXNzTmFtZSl9PlxuICAgICAgPGRpdiBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIiBhcmlhLWF0b21pYz1cInRydWVcIiBjbGFzc05hbWU9XCJzci1vbmx5XCI+XG4gICAgICAgIHtzZWFyY2hSZXN1bHRzQW5ub3VuY2VtZW50fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBUYWJsZSBjb250cm9scyAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC0yIHNtOmdhcC00XCI+XG4gICAgICAgIHtlbmFibGVSb3dTZWxlY3Rpb24gJiYgc2hvd0NoZWNrYm94ZXMgJiYgKFxuICAgICAgICAgIDxEZWxldGVCdXR0b25cbiAgICAgICAgICAgIG9uRGVsZXRlPXtoYW5kbGVEZWxldGV9XG4gICAgICAgICAgICBpc0RlbGV0aW5nPXtpc0RlbGV0aW5nfVxuICAgICAgICAgICAgZGlzYWJsZWQ9eyF0YWJsZS5nZXRGaWx0ZXJlZFNlbGVjdGVkUm93TW9kZWwoKS5yb3dzLmxlbmd0aCB8fCBpc0RlbGV0aW5nfVxuICAgICAgICAgICAgaXNTbWFsbFNjcmVlbj17aXNTbWFsbFNjcmVlbn1cbiAgICAgICAgICAgIGFyaWFMYWJlbD17bG9jYWxpemUoJ2NvbV91aV9kZWxldGVfc2VsZWN0ZWRfaXRlbXMnKX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7ZmlsdGVyQ29sdW1uICE9PSB1bmRlZmluZWQgJiYgdGFibGUuZ2V0Q29sdW1uKGZpbHRlckNvbHVtbikgJiYgZW5hYmxlU2VhcmNoICYmIChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIGZsZXgtMVwiPlxuICAgICAgICAgICAgPEFuaW1hdGVkU2VhcmNoSW5wdXRcbiAgICAgICAgICAgICAgdmFsdWU9e3NlYXJjaFRlcm19XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0U2VhcmNoVGVybShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgIGlzU2VhcmNoaW5nPXtpc1NlYXJjaGluZ31cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogVmlydHVhbGl6ZWQgdGFibGUgKi99XG4gICAgICA8ZGl2XG4gICAgICAgIHJlZj17dGFibGVDb250YWluZXJSZWZ9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgJ3JlbGF0aXZlIG1pbi1oLTAgbWF4LXctZnVsbCBmbGV4LTEgb3ZlcmZsb3cteC1hdXRvIG92ZXJmbG93LXktYXV0byByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYmxhY2svMTAgZGFyazpib3JkZXItd2hpdGUvMTAnLFxuICAgICAgICAgICd0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgZWFzZS1vdXQnLFxuICAgICAgICAgIGlzU2VhcmNoaW5nICYmICdiZy1zdXJmYWNlLXNlY29uZGFyeS81MCcsXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApfVxuICAgICAgPlxuICAgICAgICA8VGFibGUgY2xhc3NOYW1lPVwidy1mdWxsIG1pbi13LVszMDBweF0gdGFibGUtZml4ZWQgYm9yZGVyLXNlcGFyYXRlIGJvcmRlci1zcGFjaW5nLTBcIj5cbiAgICAgICAgICA8VGFibGVIZWFkZXIgY2xhc3NOYW1lPVwic3RpY2t5IHRvcC0wIHotNTAgYmctc3VyZmFjZS1zZWNvbmRhcnlcIj5cbiAgICAgICAgICAgIHt0YWJsZS5nZXRIZWFkZXJHcm91cHMoKS5tYXAoKGhlYWRlckdyb3VwKSA9PiAoXG4gICAgICAgICAgICAgIDxUYWJsZVJvdyBrZXk9e2hlYWRlckdyb3VwLmlkfSBjbGFzc05hbWU9XCJib3JkZXItYiBib3JkZXItYm9yZGVyLWxpZ2h0XCI+XG4gICAgICAgICAgICAgICAge2hlYWRlckdyb3VwLmhlYWRlcnMubWFwKChoZWFkZXIpID0+IChcbiAgICAgICAgICAgICAgICAgIDxUYWJsZUhlYWRcbiAgICAgICAgICAgICAgICAgICAga2V5PXtoZWFkZXIuaWR9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIndoaXRlc3BhY2Utbm93cmFwIGJnLXN1cmZhY2Utc2Vjb25kYXJ5IHB4LTIgcHktMiB0ZXh0LWxlZnQgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LXRleHQtc2Vjb25kYXJ5IHNtOnB4LTRcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17Z2V0Q29sdW1uU3R5bGUoXG4gICAgICAgICAgICAgICAgICAgICAgaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWYgYXMgVGFibGVDb2x1bW48VERhdGEsIFRWYWx1ZT4sXG4gICAgICAgICAgICAgICAgICAgICAgaXNTbWFsbFNjcmVlbixcbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17XG4gICAgICAgICAgICAgICAgICAgICAgaGVhZGVyLmNvbHVtbi5nZXRDYW5Tb3J0KClcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaGVhZGVyLmNvbHVtbi5nZXRUb2dnbGVTb3J0aW5nSGFuZGxlcigpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNjb3BlPVwiY29sXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2hlYWRlci5pc1BsYWNlaG9sZGVyXG4gICAgICAgICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbGV4UmVuZGVyKGhlYWRlci5jb2x1bW4uY29sdW1uRGVmLmhlYWRlciwgaGVhZGVyLmdldENvbnRleHQoKSl9XG4gICAgICAgICAgICAgICAgICA8L1RhYmxlSGVhZD5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvVGFibGVIZWFkZXI+XG5cbiAgICAgICAgICA8VGFibGVCb2R5PlxuICAgICAgICAgICAge3BhZGRpbmdUb3AgPiAwICYmIChcbiAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT17eyBoZWlnaHQ6IGAke3BhZGRpbmdUb3B9cHhgIH19IC8+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7aXNMb2FkaW5nICYmIHNrZWxldG9uc31cblxuICAgICAgICAgICAge3ZpcnR1YWxSb3dzLm1hcCgodmlydHVhbFJvdykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCByb3cgPSByb3dzW3ZpcnR1YWxSb3cuaW5kZXhdO1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxNZW1vaXplZFRhYmxlUm93XG4gICAgICAgICAgICAgICAgICBrZXk9e3Jvdy5pZH1cbiAgICAgICAgICAgICAgICAgIHJvdz17cm93fVxuICAgICAgICAgICAgICAgICAgaXNTbWFsbFNjcmVlbj17aXNTbWFsbFNjcmVlbn1cbiAgICAgICAgICAgICAgICAgIGluZGV4PXt2aXJ0dWFsUm93LmluZGV4fVxuICAgICAgICAgICAgICAgICAgaXNTZWFyY2hpbmc9e2lzU2VhcmNoaW5nfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KX1cblxuICAgICAgICAgICAgeyF2aXJ0dWFsUm93cy5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICA8VGFibGVSb3cgY2xhc3NOYW1lPVwiaG92ZXI6YmctdHJhbnNwYXJlbnRcIj5cbiAgICAgICAgICAgICAgICA8VGFibGVDZWxsIGNvbFNwYW49e2NvbHVtbnMubGVuZ3RofSBjbGFzc05hbWU9XCJwLTQgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIE5vIGRhdGEgYXZhaWxhYmxlXG4gICAgICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICAgICAgIDwvVGFibGVSb3c+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7cGFkZGluZ0JvdHRvbSA+IDAgJiYgKFxuICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgPHRkIHN0eWxlPXt7IGhlaWdodDogYCR7cGFkZGluZ0JvdHRvbX1weGAgfX0gLz5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHsvKiBMb2FkaW5nIGluZGljYXRvciAqL31cbiAgICAgICAgICAgIHsoaXNGZXRjaGluZ05leHRQYWdlIHx8IGhhc05leHRQYWdlKSAmJiAoXG4gICAgICAgICAgICAgIDxUYWJsZVJvdyBjbGFzc05hbWU9XCJob3ZlcjpiZy10cmFuc3BhcmVudFwiPlxuICAgICAgICAgICAgICAgIDxUYWJsZUNlbGwgY29sU3Bhbj17Y29sdW1ucy5sZW5ndGh9IGNsYXNzTmFtZT1cInAtNFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGgtZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAge2lzRmV0Y2hpbmdOZXh0UGFnZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8U3Bpbm5lciBjbGFzc05hbWU9XCJzaXplLTRcIiAvPlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgIGhhc05leHRQYWdlICYmIDxkaXYgY2xhc3NOYW1lPVwiaC02XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L1RhYmxlQm9keT5cbiAgICAgICAgPC9UYWJsZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwiaW1wb3J0IHsgdXNlU3ByaW5ncywgYW5pbWF0ZWQsIFNwcmluZ0NvbmZpZyB9IGZyb20gJ0ByZWFjdC1zcHJpbmcvd2ViJztcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuaW50ZXJmYWNlIFNlZ21lbnRlck9wdGlvbnMge1xuICBncmFudWxhcml0eT86ICdncmFwaGVtZScgfCAnd29yZCcgfCAnc2VudGVuY2UnO1xuICBsb2NhbGVNYXRjaGVyPzogJ2xvb2t1cCcgfCAnYmVzdCBmaXQnO1xufVxuXG5pbnRlcmZhY2UgU2VnbWVudERhdGEge1xuICBzZWdtZW50OiBzdHJpbmc7XG4gIGluZGV4OiBudW1iZXI7XG4gIGlucHV0OiBzdHJpbmc7XG4gIGlzV29yZExpa2U/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgU2VnbWVudHMge1xuICBbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYWJsZUl0ZXJhdG9yPFNlZ21lbnREYXRhPjtcbn1cblxuaW50ZXJmYWNlIEludGxTZWdtZW50ZXIge1xuICBzZWdtZW50KGlucHV0OiBzdHJpbmcpOiBTZWdtZW50cztcbn1cblxuaW50ZXJmYWNlIEludGxTZWdtZW50ZXJDb25zdHJ1Y3RvciB7XG4gIG5ldyAobG9jYWxlcz86IHN0cmluZyB8IHN0cmluZ1tdLCBvcHRpb25zPzogU2VnbWVudGVyT3B0aW9ucyk6IEludGxTZWdtZW50ZXI7XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEludGwge1xuICAgIFNlZ21lbnRlcjogSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yO1xuICB9XG59XG5cbmludGVyZmFjZSBTcGxpdFRleHRQcm9wcyB7XG4gIHRleHQ/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgZGVsYXk/OiBudW1iZXI7XG4gIGFuaW1hdGlvbkZyb20/OiB7IG9wYWNpdHk6IG51bWJlcjsgdHJhbnNmb3JtOiBzdHJpbmcgfTtcbiAgYW5pbWF0aW9uVG8/OiB7IG9wYWNpdHk6IG51bWJlcjsgdHJhbnNmb3JtOiBzdHJpbmcgfTtcbiAgZWFzaW5nPzogU3ByaW5nQ29uZmlnWydlYXNpbmcnXTtcbiAgdGhyZXNob2xkPzogbnVtYmVyO1xuICByb290TWFyZ2luPzogc3RyaW5nO1xuICB0ZXh0QWxpZ24/OiAnbGVmdCcgfCAncmlnaHQnIHwgJ2NlbnRlcicgfCAnanVzdGlmeScgfCAnc3RhcnQnIHwgJ2VuZCc7XG4gIG9uTGV0dGVyQW5pbWF0aW9uQ29tcGxldGU/OiAoKSA9PiB2b2lkO1xuICBvbkxpbmVDb3VudENoYW5nZT86IChsaW5lQ291bnQ6IG51bWJlcikgPT4gdm9pZDtcbn1cblxuY29uc3Qgc3BsaXRHcmFwaGVtZXMgPSAodGV4dDogc3RyaW5nKTogc3RyaW5nW10gPT4ge1xuICBpZiAodHlwZW9mIEludGwgIT09ICd1bmRlZmluZWQnICYmICdTZWdtZW50ZXInIGluIEludGwpIHtcbiAgICBjb25zdCBzZWdtZW50ZXIgPSBuZXcgKEludGwgYXMgdHlwZW9mIEludGwgJiB7IFNlZ21lbnRlcjogSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yIH0pLlNlZ21lbnRlcihcbiAgICAgICdlbicsXG4gICAgICB7IGdyYW51bGFyaXR5OiAnZ3JhcGhlbWUnIH0sXG4gICAgKTtcbiAgICBjb25zdCBzZWdtZW50cyA9IHNlZ21lbnRlci5zZWdtZW50KHRleHQpO1xuICAgIHJldHVybiBBcnJheS5mcm9tKHNlZ21lbnRzKS5tYXAoKHM6IFNlZ21lbnREYXRhKSA9PiBzLnNlZ21lbnQpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBbLi4udGV4dF07XG4gIH1cbn07XG5cbmNvbnN0IFNwbGl0VGV4dDogUmVhY3QuRkM8U3BsaXRUZXh0UHJvcHM+ID0gKHtcbiAgdGV4dCA9ICcnLFxuICBjbGFzc05hbWUgPSAnJyxcbiAgZGVsYXkgPSAxMDAsXG4gIGFuaW1hdGlvbkZyb20gPSB7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZTNkKDAsNDBweCwwKScgfSxcbiAgYW5pbWF0aW9uVG8gPSB7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZTNkKDAsMCwwKScgfSxcbiAgZWFzaW5nID0gKHQ6IG51bWJlcikgPT4gdCxcbiAgdGhyZXNob2xkID0gMC4xLFxuICByb290TWFyZ2luID0gJy0xMDBweCcsXG4gIHRleHRBbGlnbiA9ICdjZW50ZXInLFxuICBvbkxldHRlckFuaW1hdGlvbkNvbXBsZXRlLFxuICBvbkxpbmVDb3VudENoYW5nZSxcbn0pID0+IHtcbiAgY29uc3Qgd29yZHMgPSB0ZXh0LnNwbGl0KCcgJykubWFwKHNwbGl0R3JhcGhlbWVzKTtcbiAgY29uc3QgbGV0dGVycyA9IHdvcmRzLmZsYXQoKTtcbiAgY29uc3QgW2luVmlldywgc2V0SW5WaWV3XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgcmVmID0gdXNlUmVmPEhUTUxQYXJhZ3JhcGhFbGVtZW50PihudWxsKTtcbiAgY29uc3QgYW5pbWF0ZWRDb3VudCA9IHVzZVJlZigwKTtcblxuICBjb25zdCBbc3ByaW5nc10gPSB1c2VTcHJpbmdzKFxuICAgIGxldHRlcnMubGVuZ3RoLFxuICAgIChpKSA9PiAoe1xuICAgICAgZnJvbTogYW5pbWF0aW9uRnJvbSxcbiAgICAgIHRvOiBpblZpZXdcbiAgICAgICAgPyBhc3luYyAobmV4dCkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgbmV4dChhbmltYXRpb25Ubyk7XG4gICAgICAgICAgICBhbmltYXRlZENvdW50LmN1cnJlbnQgKz0gMTtcbiAgICAgICAgICAgIGlmIChhbmltYXRlZENvdW50LmN1cnJlbnQgPT09IGxldHRlcnMubGVuZ3RoICYmIG9uTGV0dGVyQW5pbWF0aW9uQ29tcGxldGUpIHtcbiAgICAgICAgICAgICAgb25MZXR0ZXJBbmltYXRpb25Db21wbGV0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgOiBhbmltYXRpb25Gcm9tLFxuICAgICAgZGVsYXk6IGkgKiBkZWxheSxcbiAgICAgIGNvbmZpZzogeyBlYXNpbmcgfSxcbiAgICB9KSxcbiAgICBbaW5WaWV3LCB0ZXh0LCBkZWxheSwgYW5pbWF0aW9uRnJvbSwgYW5pbWF0aW9uVG8sIGVhc2luZywgb25MZXR0ZXJBbmltYXRpb25Db21wbGV0ZV0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihcbiAgICAgIChbZW50cnldKSA9PiB7XG4gICAgICAgIGlmIChlbnRyeS5pc0ludGVyc2VjdGluZykge1xuICAgICAgICAgIHNldEluVmlldyh0cnVlKTtcbiAgICAgICAgICBpZiAocmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIG9ic2VydmVyLnVub2JzZXJ2ZShyZWYuY3VycmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyB0aHJlc2hvbGQsIHJvb3RNYXJnaW4gfSxcbiAgICApO1xuXG4gICAgaWYgKHJlZi5jdXJyZW50KSB7XG4gICAgICBvYnNlcnZlci5vYnNlcnZlKHJlZi5jdXJyZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICB9LCBbdGhyZXNob2xkLCByb290TWFyZ2luXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVmLmN1cnJlbnQgJiYgaW5WaWV3KSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gcmVmLmN1cnJlbnQ7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgbGluZUhlaWdodCA9XG4gICAgICAgICAgcGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5saW5lSGVpZ2h0KSB8fFxuICAgICAgICAgIHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZm9udFNpemUpICogMS4yO1xuICAgICAgICBjb25zdCBoZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgY29uc3QgbGluZXMgPSBNYXRoLnJvdW5kKGhlaWdodCAvIGxpbmVIZWlnaHQpO1xuXG4gICAgICAgIGlmIChvbkxpbmVDb3VudENoYW5nZSkge1xuICAgICAgICAgIG9uTGluZUNvdW50Q2hhbmdlKGxpbmVzKTtcbiAgICAgICAgfVxuICAgICAgfSwgMTAwKTtcbiAgICB9XG4gIH0sIFtpblZpZXcsIHRleHQsIG9uTGluZUNvdW50Q2hhbmdlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwic3Itb25seVwiPnt0ZXh0fTwvc3Bhbj5cbiAgICAgIDxwXG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICBjbGFzc05hbWU9e2BzcGxpdC1wYXJlbnQgaW5saW5lIG92ZXJmbG93LWhpZGRlbiAke2NsYXNzTmFtZX1gfVxuICAgICAgICBzdHlsZT17eyB0ZXh0QWxpZ24sIHdoaXRlU3BhY2U6ICdub3JtYWwnLCB3b3JkV3JhcDogJ2JyZWFrLXdvcmQnIH19XG4gICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICA+XG4gICAgICAgIHt3b3Jkcy5tYXAoKHdvcmQsIHdvcmRJbmRleCkgPT4gKFxuICAgICAgICAgIDxzcGFuIGtleT17d29yZEluZGV4fSBzdHlsZT17eyBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJywgd2hpdGVTcGFjZTogJ25vd3JhcCcgfX0+XG4gICAgICAgICAgICB7d29yZC5tYXAoKGxldHRlciwgbGV0dGVySW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaW5kZXggPVxuICAgICAgICAgICAgICAgIHdvcmRzLnNsaWNlKDAsIHdvcmRJbmRleCkucmVkdWNlKChhY2MsIHcpID0+IGFjYyArIHcubGVuZ3RoLCAwKSArIGxldHRlckluZGV4O1xuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPGFuaW1hdGVkLnNwYW5cbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICBzdHlsZT17c3ByaW5nc1tpbmRleF19XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpbmxpbmUtYmxvY2sgdHJhbnNmb3JtIHRyYW5zaXRpb24tb3BhY2l0eSB3aWxsLWNoYW5nZS10cmFuc2Zvcm1cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtsZXR0ZXJ9XG4gICAgICAgICAgICAgICAgPC9hbmltYXRlZC5zcGFuPlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICB7d29yZEluZGV4IDwgd29yZHMubGVuZ3RoIC0gMSAmJiAoXG4gICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLCB3aWR0aDogJzAuM2VtJyB9fT4mbmJzcDs8L3NwYW4+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgKSl9XG4gICAgICA8L3A+XG4gICAgPC8+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTcGxpdFRleHQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBDb250cm9sbGVyUmVuZGVyUHJvcHMsIEZpZWxkVmFsdWVzLCBGaWVsZFBhdGggfSBmcm9tICdyZWFjdC1ob29rLWZvcm0nO1xuaW1wb3J0IHsgTGFiZWwgfSBmcm9tICcuL0xhYmVsJztcbmltcG9ydCB7IElucHV0IH0gZnJvbSAnLi9JbnB1dCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBGb3JtSW5wdXQ8XG4gIFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzID0gRmllbGRWYWx1ZXMsXG4gIFROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4gPSBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPixcbj4oe1xuICBmaWVsZCxcbiAgbGFiZWwsXG4gIGxhYmVsQ2xhc3MsXG4gIGlucHV0Q2xhc3MsXG4gIGNvbnRhaW5lckNsYXNzLFxuICBsYWJlbEFkamFjZW50LFxuICBwbGFjZWhvbGRlciA9ICcnLFxuICB0eXBlID0gJ3N0cmluZycsXG59OiB7XG4gIGZpZWxkOiBDb250cm9sbGVyUmVuZGVyUHJvcHM8VEZpZWxkVmFsdWVzLCBUTmFtZT47XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGxhYmVsQ2xhc3M/OiBzdHJpbmc7XG4gIGlucHV0Q2xhc3M/OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBjb250YWluZXJDbGFzcz86IHN0cmluZztcbiAgdHlwZT86ICdzdHJpbmcnIHwgJ251bWJlcic7XG4gIGxhYmVsQWRqYWNlbnQ/OiBSZWFjdC5SZWFjdE5vZGU7XG59KSB7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gZS50YXJnZXQudmFsdWU7XG5cbiAgICBpZiAodHlwZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIGZpZWxkLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgICBmaWVsZC5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgfSBlbHNlIGlmICghaXNOYU4oTnVtYmVyKHZhbHVlKSkpIHtcbiAgICAgIGZpZWxkLm9uQ2hhbmdlKE51bWJlcih2YWx1ZSkpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbignZmxleCB3LWZ1bGwgZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC0yJywgY29udGFpbmVyQ2xhc3MpfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnQgZ2FwLTJcIj5cbiAgICAgICAgPExhYmVsXG4gICAgICAgICAgaHRtbEZvcj17YCR7ZmllbGQubmFtZX0taW5wdXRgfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oJ3RleHQtbGVmdCB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC10ZXh0LXByaW1hcnknLCBsYWJlbENsYXNzKX1cbiAgICAgICAgPlxuICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgPC9MYWJlbD5cbiAgICAgICAge2xhYmVsQWRqYWNlbnR9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dFxuICAgICAgICBpZD17YCR7ZmllbGQubmFtZX0taW5wdXRgfVxuICAgICAgICB2YWx1ZT17ZmllbGQudmFsdWUgPz8gJyd9XG4gICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAnZmxleCBoLTEwIG1heC1oLTEwIHctZnVsbCByZXNpemUtbm9uZSBib3JkZXItbm9uZSBiZy1zdXJmYWNlLXNlY29uZGFyeSBweC0zIHB5LTInLFxuICAgICAgICAgIGlucHV0Q2xhc3MsXG4gICAgICAgICl9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuY2xhc3MgUGl4ZWwge1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICBjb2xvcjogc3RyaW5nO1xuICBzcGVlZDogbnVtYmVyO1xuICBzaXplOiBudW1iZXI7XG4gIHNpemVTdGVwOiBudW1iZXI7XG4gIG1pblNpemU6IG51bWJlcjtcbiAgbWF4U2l6ZUludGVnZXI6IG51bWJlcjtcbiAgbWF4U2l6ZTogbnVtYmVyO1xuICBkZWxheTogbnVtYmVyO1xuICBjb3VudGVyOiBudW1iZXI7XG4gIGNvdW50ZXJTdGVwOiBudW1iZXI7XG4gIGlzSWRsZTogYm9vbGVhbjtcbiAgaXNSZXZlcnNlOiBib29sZWFuO1xuICBpc1NoaW1tZXI6IGJvb2xlYW47XG4gIGFjdGl2YXRpb25UaHJlc2hvbGQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50LFxuICAgIGNvbnRleHQ6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCxcbiAgICB4OiBudW1iZXIsXG4gICAgeTogbnVtYmVyLFxuICAgIGNvbG9yOiBzdHJpbmcsXG4gICAgc3BlZWQ6IG51bWJlcixcbiAgICBkZWxheTogbnVtYmVyLFxuICAgIGFjdGl2YXRpb25UaHJlc2hvbGQ6IG51bWJlcixcbiAgKSB7XG4gICAgdGhpcy53aWR0aCA9IGNhbnZhcy53aWR0aDtcbiAgICB0aGlzLmhlaWdodCA9IGNhbnZhcy5oZWlnaHQ7XG4gICAgdGhpcy5jdHggPSBjb250ZXh0O1xuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgICB0aGlzLmNvbG9yID0gY29sb3I7XG4gICAgdGhpcy5zcGVlZCA9IHRoaXMucmFuZG9tKDAuMSwgMC45KSAqIHNwZWVkO1xuICAgIHRoaXMuc2l6ZSA9IDA7XG4gICAgdGhpcy5zaXplU3RlcCA9IE1hdGgucmFuZG9tKCkgKiAwLjQ7XG4gICAgdGhpcy5taW5TaXplID0gMC41O1xuICAgIHRoaXMubWF4U2l6ZUludGVnZXIgPSAyO1xuICAgIHRoaXMubWF4U2l6ZSA9IHRoaXMucmFuZG9tKHRoaXMubWluU2l6ZSwgdGhpcy5tYXhTaXplSW50ZWdlcik7XG4gICAgdGhpcy5kZWxheSA9IGRlbGF5O1xuICAgIHRoaXMuY291bnRlciA9IDA7XG4gICAgdGhpcy5jb3VudGVyU3RlcCA9IE1hdGgucmFuZG9tKCkgKiA0ICsgKHRoaXMud2lkdGggKyB0aGlzLmhlaWdodCkgKiAwLjAxO1xuICAgIHRoaXMuaXNJZGxlID0gZmFsc2U7XG4gICAgdGhpcy5pc1JldmVyc2UgPSBmYWxzZTtcbiAgICB0aGlzLmlzU2hpbW1lciA9IGZhbHNlO1xuICAgIHRoaXMuYWN0aXZhdGlvblRocmVzaG9sZCA9IGFjdGl2YXRpb25UaHJlc2hvbGQ7XG4gIH1cblxuICBwcml2YXRlIHJhbmRvbShtaW46IG51bWJlciwgbWF4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pICsgbWluO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3KCkge1xuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMubWF4U2l6ZUludGVnZXIgKiAwLjUgLSB0aGlzLnNpemUgKiAwLjU7XG4gICAgdGhpcy5jdHguZmlsbFN0eWxlID0gdGhpcy5jb2xvcjtcbiAgICB0aGlzLmN0eC5maWxsUmVjdCh0aGlzLnggKyBvZmZzZXQsIHRoaXMueSArIG9mZnNldCwgdGhpcy5zaXplLCB0aGlzLnNpemUpO1xuICB9XG5cbiAgYXBwZWFyKCkge1xuICAgIHRoaXMuaXNJZGxlID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuY291bnRlciA8PSB0aGlzLmRlbGF5KSB7XG4gICAgICB0aGlzLmNvdW50ZXIgKz0gdGhpcy5jb3VudGVyU3RlcDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2l6ZSA+PSB0aGlzLm1heFNpemUpIHtcbiAgICAgIHRoaXMuaXNTaGltbWVyID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNTaGltbWVyKSB7XG4gICAgICB0aGlzLnNoaW1tZXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaXplICs9IHRoaXMuc2l6ZVN0ZXA7XG4gICAgfVxuICAgIHRoaXMuZHJhdygpO1xuICB9XG5cbiAgYXBwZWFyV2l0aFByb2dyZXNzKHByb2dyZXNzOiBudW1iZXIpIHtcbiAgICBjb25zdCBkaWZmID0gcHJvZ3Jlc3MgLSB0aGlzLmFjdGl2YXRpb25UaHJlc2hvbGQ7XG4gICAgaWYgKGRpZmYgPD0gMCkge1xuICAgICAgdGhpcy5pc0lkbGUgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb3VudGVyIDw9IHRoaXMuZGVsYXkpIHtcbiAgICAgIHRoaXMuY291bnRlciArPSB0aGlzLmNvdW50ZXJTdGVwO1xuICAgICAgdGhpcy5pc0lkbGUgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2l6ZSA+PSB0aGlzLm1heFNpemUpIHtcbiAgICAgIHRoaXMuaXNTaGltbWVyID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNTaGltbWVyKSB7XG4gICAgICB0aGlzLnNoaW1tZXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaXplICs9IHRoaXMuc2l6ZVN0ZXA7XG4gICAgfVxuICAgIHRoaXMuaXNJZGxlID0gZmFsc2U7XG4gICAgdGhpcy5kcmF3KCk7XG4gIH1cblxuICBkaXNhcHBlYXIoKSB7XG4gICAgdGhpcy5pc1NoaW1tZXIgPSBmYWxzZTtcbiAgICB0aGlzLmNvdW50ZXIgPSAwO1xuICAgIGlmICh0aGlzLnNpemUgPD0gMCkge1xuICAgICAgdGhpcy5pc0lkbGUgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNpemUgLT0gMC4xO1xuICAgIHRoaXMuZHJhdygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaGltbWVyKCkge1xuICAgIGlmICh0aGlzLnNpemUgPj0gdGhpcy5tYXhTaXplKSB7XG4gICAgICB0aGlzLmlzUmV2ZXJzZSA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNpemUgPD0gdGhpcy5taW5TaXplKSB7XG4gICAgICB0aGlzLmlzUmV2ZXJzZSA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLnNpemUgKz0gdGhpcy5pc1JldmVyc2UgPyAtdGhpcy5zcGVlZCA6IHRoaXMuc3BlZWQ7XG4gIH1cbn1cblxuY29uc3QgZ2V0RWZmZWN0aXZlU3BlZWQgPSAodmFsdWU6IG51bWJlciwgcmVkdWNlZE1vdGlvbjogYm9vbGVhbikgPT4ge1xuICBjb25zdCBwYXJzZWQgPSBwYXJzZUludChTdHJpbmcodmFsdWUpLCAxMCk7XG4gIGNvbnN0IHRocm90dGxlID0gMC4wMDE7XG4gIGlmIChwYXJzZWQgPD0gMCB8fCByZWR1Y2VkTW90aW9uKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgaWYgKHBhcnNlZCA+PSAxMDApIHtcbiAgICByZXR1cm4gMTAwICogdGhyb3R0bGU7XG4gIH1cbiAgcmV0dXJuIHBhcnNlZCAqIHRocm90dGxlO1xufTtcblxuY29uc3QgY2xhbXAgPSAobjogbnVtYmVyLCBtaW4gPSAwLCBtYXggPSAxKSA9PiBNYXRoLm1pbihNYXRoLm1heChuLCBtaW4pLCBtYXgpO1xuXG5jb25zdCBWQVJJQU5UUyA9IHtcbiAgZGVmYXVsdDogeyBnYXA6IDUsIHNwZWVkOiAzNSwgY29sb3JzOiAnI2Y4ZmFmYywjZjFmNWY5LCNjYmQ1ZTEnLCBub0ZvY3VzOiBmYWxzZSB9LFxuICBibHVlOiB7IGdhcDogMTAsIHNwZWVkOiAyNSwgY29sb3JzOiAnI2UwZjJmZSwjN2RkM2ZjLCMwZWE1ZTknLCBub0ZvY3VzOiBmYWxzZSB9LFxuICB5ZWxsb3c6IHsgZ2FwOiAzLCBzcGVlZDogMjAsIGNvbG9yczogJyNmZWYwOGEsI2ZkZTA0NywjZWFiMzA4Jywgbm9Gb2N1czogZmFsc2UgfSxcbiAgcGluazogeyBnYXA6IDYsIHNwZWVkOiA4MCwgY29sb3JzOiAnI2ZlY2RkMywjZmRhNGFmLCNlMTFkNDgnLCBub0ZvY3VzOiB0cnVlIH0sXG59IGFzIGNvbnN0O1xuXG5pbnRlcmZhY2UgUGl4ZWxDYXJkUHJvcHMge1xuICB2YXJpYW50Pzoga2V5b2YgdHlwZW9mIFZBUklBTlRTO1xuICBnYXA/OiBudW1iZXI7XG4gIHNwZWVkPzogbnVtYmVyO1xuICBjb2xvcnM/OiBzdHJpbmc7XG4gIG5vRm9jdXM/OiBib29sZWFuO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHByb2dyZXNzPzogbnVtYmVyO1xuICByYW5kb21uZXNzPzogbnVtYmVyO1xuICB3aWR0aD86IHN0cmluZztcbiAgaGVpZ2h0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQaXhlbENhcmQoe1xuICB2YXJpYW50ID0gJ2RlZmF1bHQnLFxuICBnYXAsXG4gIHNwZWVkLFxuICBjb2xvcnMsXG4gIG5vRm9jdXMsXG4gIGNsYXNzTmFtZSA9ICcnLFxuICBwcm9ncmVzcyxcbiAgcmFuZG9tbmVzcyA9IDAuMyxcbiAgd2lkdGgsXG4gIGhlaWdodCxcbn06IFBpeGVsQ2FyZFByb3BzKSB7XG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGNhbnZhc1JlZiA9IHVzZVJlZjxIVE1MQ2FudmFzRWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IHBpeGVsc1JlZiA9IHVzZVJlZjxQaXhlbFtdPihbXSk7XG4gIGNvbnN0IGFuaW1hdGlvblJlZiA9IHVzZVJlZjxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IHRpbWVQcmV2UmVmID0gdXNlUmVmKHBlcmZvcm1hbmNlLm5vdygpKTtcbiAgY29uc3QgcHJvZ3Jlc3NSZWYgPSB1c2VSZWY8bnVtYmVyIHwgdW5kZWZpbmVkPihwcm9ncmVzcyk7XG4gIGNvbnN0IHJlZHVjZWRNb3Rpb24gPSB1c2VSZWYoXG4gICAgd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpJykubWF0Y2hlcyxcbiAgKS5jdXJyZW50O1xuXG4gIGNvbnN0IGNmZyA9IFZBUklBTlRTW3ZhcmlhbnRdO1xuICBjb25zdCBnID0gZ2FwID8/IGNmZy5nYXA7XG4gIGNvbnN0IHMgPSBzcGVlZCA/PyBjZmcuc3BlZWQ7XG4gIGNvbnN0IHBhbGV0dGUgPSBjb2xvcnMgPz8gY2ZnLmNvbG9ycztcbiAgY29uc3QgZGlzYWJsZUZvY3VzID0gbm9Gb2N1cyA/PyBjZmcubm9Gb2N1cztcblxuICBjb25zdCB1cGRhdGVDYW52YXNPcGFjaXR5ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghY2FudmFzUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHByb2dyZXNzUmVmLmN1cnJlbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY2FudmFzUmVmLmN1cnJlbnQuc3R5bGUub3BhY2l0eSA9ICcxJztcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZmFkZVN0YXJ0ID0gMC45O1xuICAgIGNvbnN0IGFscGhhID1cbiAgICAgIHByb2dyZXNzUmVmLmN1cnJlbnQgPj0gZmFkZVN0YXJ0ID8gMSAtIChwcm9ncmVzc1JlZi5jdXJyZW50IC0gZmFkZVN0YXJ0KSAvIDAuMSA6IDE7XG4gICAgY2FudmFzUmVmLmN1cnJlbnQuc3R5bGUub3BhY2l0eSA9IFN0cmluZyhjbGFtcChhbHBoYSkpO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgYW5pbWF0ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChtZXRob2Q6IGtleW9mIFBpeGVsKSA9PiB7XG4gICAgICBhbmltYXRpb25SZWYuY3VycmVudCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiBhbmltYXRlKG1ldGhvZCkpO1xuXG4gICAgICBjb25zdCBub3cgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICAgIGNvbnN0IGVsYXBzZWQgPSBub3cgLSB0aW1lUHJldlJlZi5jdXJyZW50O1xuICAgICAgaWYgKGVsYXBzZWQgPCAxMDAwIC8gNjApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGltZVByZXZSZWYuY3VycmVudCA9IG5vdyAtIChlbGFwc2VkICUgKDEwMDAgLyA2MCkpO1xuXG4gICAgICBjb25zdCBjdHggPSBjYW52YXNSZWYuY3VycmVudD8uZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgIGlmICghY3R4IHx8ICFjYW52YXNSZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGN0eC5jbGVhclJlY3QoMCwgMCwgY2FudmFzUmVmLmN1cnJlbnQud2lkdGgsIGNhbnZhc1JlZi5jdXJyZW50LmhlaWdodCk7XG5cbiAgICAgIGxldCBpZGxlID0gdHJ1ZTtcbiAgICAgIGZvciAoY29uc3QgcCBvZiBwaXhlbHNSZWYuY3VycmVudCkge1xuICAgICAgICBpZiAobWV0aG9kID09PSAnYXBwZWFyV2l0aFByb2dyZXNzJykge1xuICAgICAgICAgIGlmIChwcm9ncmVzc1JlZi5jdXJyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHAuYXBwZWFyV2l0aFByb2dyZXNzKHByb2dyZXNzUmVmLmN1cnJlbnQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwLmlzSWRsZSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmUgZHluYW1pYyBkaXNwYXRjaFxuICAgICAgICAgIHBbbWV0aG9kXSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcC5pc0lkbGUpIHtcbiAgICAgICAgICBpZGxlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdXBkYXRlQ2FudmFzT3BhY2l0eSgpO1xuICAgICAgaWYgKGlkbGUpIHtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uUmVmLmN1cnJlbnQhKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFt1cGRhdGVDYW52YXNPcGFjaXR5XSxcbiAgKTtcblxuICBjb25zdCBzdGFydEFuaW0gPSB1c2VDYWxsYmFjayhcbiAgICAobToga2V5b2YgUGl4ZWwpID0+IHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvblJlZi5jdXJyZW50ISk7XG4gICAgICBhbmltYXRpb25SZWYuY3VycmVudCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiBhbmltYXRlKG0pKTtcbiAgICB9LFxuICAgIFthbmltYXRlXSxcbiAgKTtcblxuICBjb25zdCBpbml0UGl4ZWxzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghY29udGFpbmVyUmVmLmN1cnJlbnQgfHwgIWNhbnZhc1JlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyB3aWR0aDogY3csIGhlaWdodDogY2ggfSA9IGNvbnRhaW5lclJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGN0eCA9IGNhbnZhc1JlZi5jdXJyZW50LmdldENvbnRleHQoJzJkJyk7XG4gICAgY2FudmFzUmVmLmN1cnJlbnQud2lkdGggPSBNYXRoLmZsb29yKGN3KTtcbiAgICBjYW52YXNSZWYuY3VycmVudC5oZWlnaHQgPSBNYXRoLmZsb29yKGNoKTtcblxuICAgIGNvbnN0IGNvbHMgPSBwYWxldHRlLnNwbGl0KCcsJyk7XG4gICAgY29uc3QgcHg6IFBpeGVsW10gPSBbXTtcblxuICAgIGNvbnN0IGN4ID0gY3cgLyAyO1xuICAgIGNvbnN0IGN5ID0gY2ggLyAyO1xuICAgIGNvbnN0IG1heERpc3QgPSBNYXRoLmh5cG90KGN4LCBjeSk7XG5cbiAgICBmb3IgKGxldCB4ID0gMDsgeCA8IGN3OyB4ICs9IGcpIHtcbiAgICAgIGZvciAobGV0IHkgPSAwOyB5IDwgY2g7IHkgKz0gZykge1xuICAgICAgICBjb25zdCBjb2xvciA9IGNvbHNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY29scy5sZW5ndGgpXTtcbiAgICAgICAgY29uc3QgZGlzdE5vcm0gPSBNYXRoLmh5cG90KHggLSBjeCwgeSAtIGN5KSAvIG1heERpc3Q7XG4gICAgICAgIGNvbnN0IHRocmVzaG9sZCA9IGNsYW1wKGRpc3ROb3JtICogKDEgLSByYW5kb21uZXNzKSArIE1hdGgucmFuZG9tKCkgKiByYW5kb21uZXNzKTtcbiAgICAgICAgY29uc3QgZGVsYXkgPSByZWR1Y2VkTW90aW9uID8gMCA6IGRpc3ROb3JtICogbWF4RGlzdDtcbiAgICAgICAgaWYgKCFjdHgpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBweC5wdXNoKFxuICAgICAgICAgIG5ldyBQaXhlbChcbiAgICAgICAgICAgIGNhbnZhc1JlZi5jdXJyZW50LFxuICAgICAgICAgICAgY3R4LFxuICAgICAgICAgICAgeCxcbiAgICAgICAgICAgIHksXG4gICAgICAgICAgICBjb2xvcixcbiAgICAgICAgICAgIGdldEVmZmVjdGl2ZVNwZWVkKHMsIHJlZHVjZWRNb3Rpb24pLFxuICAgICAgICAgICAgZGVsYXksXG4gICAgICAgICAgICB0aHJlc2hvbGQsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcGl4ZWxzUmVmLmN1cnJlbnQgPSBweDtcblxuICAgIGlmIChwcm9ncmVzc1JlZi5jdXJyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHN0YXJ0QW5pbSgnYXBwZWFyV2l0aFByb2dyZXNzJyk7XG4gICAgfVxuICB9LCBbZywgcGFsZXR0ZSwgcywgcmFuZG9tbmVzcywgcmVkdWNlZE1vdGlvbiwgc3RhcnRBbmltXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBwcm9ncmVzc1JlZi5jdXJyZW50ID0gcHJvZ3Jlc3M7XG4gICAgaWYgKHByb2dyZXNzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHN0YXJ0QW5pbSgnYXBwZWFyV2l0aFByb2dyZXNzJyk7XG4gICAgfVxuICB9LCBbcHJvZ3Jlc3MsIHN0YXJ0QW5pbV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHByb2dyZXNzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvblJlZi5jdXJyZW50ISk7XG4gICAgfVxuICB9LCBbcHJvZ3Jlc3NdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGluaXRQaXhlbHMoKTtcbiAgICBjb25zdCBvYnMgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoaW5pdFBpeGVscyk7XG4gICAgaWYgKGNvbnRhaW5lclJlZi5jdXJyZW50KSB7XG4gICAgICBvYnMub2JzZXJ2ZShjb250YWluZXJSZWYuY3VycmVudCk7XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBvYnMuZGlzY29ubmVjdCgpO1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uUmVmLmN1cnJlbnQhKTtcbiAgICB9O1xuICB9LCBbaW5pdFBpeGVsc10pO1xuXG4gIGNvbnN0IGhvdmVySW4gPSAoKSA9PiBwcm9ncmVzc1JlZi5jdXJyZW50ID09PSB1bmRlZmluZWQgJiYgc3RhcnRBbmltKCdhcHBlYXInKTtcbiAgY29uc3QgaG92ZXJPdXQgPSAoKSA9PiBwcm9ncmVzc1JlZi5jdXJyZW50ID09PSB1bmRlZmluZWQgJiYgc3RhcnRBbmltKCdkaXNhcHBlYXInKTtcbiAgY29uc3QgZm9jdXNJbjogUmVhY3QuRm9jdXNFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+ID0gKGUpID0+IHtcbiAgICBpZiAoXG4gICAgICAhZGlzYWJsZUZvY3VzICYmXG4gICAgICAhZS5jdXJyZW50VGFyZ2V0LmNvbnRhaW5zKGUucmVsYXRlZFRhcmdldCkgJiZcbiAgICAgIHByb2dyZXNzUmVmLmN1cnJlbnQgPT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgc3RhcnRBbmltKCdhcHBlYXInKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGZvY3VzT3V0OiBSZWFjdC5Gb2N1c0V2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD4gPSAoZSkgPT4ge1xuICAgIGlmIChcbiAgICAgICFkaXNhYmxlRm9jdXMgJiZcbiAgICAgICFlLmN1cnJlbnRUYXJnZXQuY29udGFpbnMoZS5yZWxhdGVkVGFyZ2V0KSAmJlxuICAgICAgcHJvZ3Jlc3NSZWYuY3VycmVudCA9PT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBzdGFydEFuaW0oJ2Rpc2FwcGVhcicpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHJlZj17Y29udGFpbmVyUmVmfVxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgd2lkdGg6IHdpZHRoIHx8ICcxMDAlJyxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQgfHwgJzEwMCUnLFxuICAgICAgfX1cbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgJ3JlbGF0aXZlIGlzb2xhdGUgZ3JpZCBzZWxlY3Qtbm9uZSBwbGFjZS1pdGVtcy1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ib3JkZXItbGlnaHQgc2hhZG93LW1kIHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTIwMCBlYXNlLWluLW91dCcsXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApfVxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgdHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOiAnY3ViaWMtYmV6aWVyKDAuNSwgMSwgMC44OSwgMSknLFxuICAgICAgICB9fVxuICAgICAgICBvbk1vdXNlRW50ZXI9e2hvdmVySW59XG4gICAgICAgIG9uTW91c2VMZWF2ZT17aG92ZXJPdXR9XG4gICAgICAgIG9uRm9jdXM9e2Rpc2FibGVGb2N1cyA/IHVuZGVmaW5lZCA6IGZvY3VzSW59XG4gICAgICAgIG9uQmx1cj17ZGlzYWJsZUZvY3VzID8gdW5kZWZpbmVkIDogZm9jdXNPdXR9XG4gICAgICAgIHRhYkluZGV4PXtkaXNhYmxlRm9jdXMgPyAtMSA6IDB9XG4gICAgICA+XG4gICAgICAgIDxjYW52YXNcbiAgICAgICAgICByZWY9e2NhbnZhc1JlZn1cbiAgICAgICAgICBjbGFzc05hbWU9XCJwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIGluc2V0LTAgYmxvY2tcIlxuICAgICAgICAgIHdpZHRoPXt3aWR0aCAmJiB3aWR0aCAhPT0gJ2F1dG8nID8gcGFyc2VJbnQoU3RyaW5nKHdpZHRoKSkgOiB1bmRlZmluZWR9XG4gICAgICAgICAgaGVpZ2h0PXtoZWlnaHQgJiYgaGVpZ2h0ICE9PSAnYXV0bycgPyBwYXJzZUludChTdHJpbmcoaGVpZ2h0KSkgOiB1bmRlZmluZWR9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsImltcG9ydCBSZWFjdCwgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuXG50eXBlIEZpbGVVcGxvYWRQcm9wcyA9IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBvbkNsaWNrPzogKCkgPT4gdm9pZDtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbiAgaGFuZGxlRmlsZUNoYW5nZTogKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4gdm9pZDtcbn07XG5cbmNvbnN0IEZpbGVVcGxvYWQgPSBmb3J3YXJkUmVmPEhUTUxJbnB1dEVsZW1lbnQsIEZpbGVVcGxvYWRQcm9wcz4oXG4gICh7IGNoaWxkcmVuLCBoYW5kbGVGaWxlQ2hhbmdlIH0sIHJlZikgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHJlZj17cmVmfVxuICAgICAgICAgIG11bHRpcGxlXG4gICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6ICdub25lJyB9fVxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVGaWxlQ2hhbmdlfVxuICAgICAgICAvPlxuICAgICAgPC8+XG4gICAgKTtcbiAgfSxcbik7XG5cbkZpbGVVcGxvYWQuZGlzcGxheU5hbWUgPSAnRmlsZVVwbG9hZCc7XG5cbmV4cG9ydCBkZWZhdWx0IEZpbGVVcGxvYWQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7XG4gIFNlbGVjdCxcbiAgU2VsZWN0QXJyb3csXG4gIFNlbGVjdEl0ZW0sXG4gIFNlbGVjdEl0ZW1DaGVjayxcbiAgU2VsZWN0TGFiZWwsXG4gIFNlbGVjdFBvcG92ZXIsXG4gIFNlbGVjdFByb3ZpZGVyLFxufSBmcm9tICdAYXJpYWtpdC9yZWFjdCc7XG5pbXBvcnQgJy4vQW5pbWF0ZVBvcG92ZXIuY3NzJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbnR5cGUgTXVsdGlTZWxlY3RJdGVtPFQgZXh0ZW5kcyBzdHJpbmc+ID0gVCB8IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IFQgfTtcblxuZnVuY3Rpb24gZ2V0SXRlbVZhbHVlPFQgZXh0ZW5kcyBzdHJpbmc+KGl0ZW06IE11bHRpU2VsZWN0SXRlbTxUPik6IFQge1xuICByZXR1cm4gdHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnID8gaXRlbSA6IGl0ZW0udmFsdWU7XG59XG5cbmZ1bmN0aW9uIGdldEl0ZW1MYWJlbDxUIGV4dGVuZHMgc3RyaW5nPihpdGVtOiBNdWx0aVNlbGVjdEl0ZW08VD4pOiBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnID8gaXRlbSA6IGl0ZW0ubGFiZWw7XG59XG5cbmludGVyZmFjZSBNdWx0aVNlbGVjdFByb3BzPFQgZXh0ZW5kcyBzdHJpbmc+IHtcbiAgaXRlbXM6IE11bHRpU2VsZWN0SXRlbTxUPltdO1xuICBsYWJlbD86IHN0cmluZztcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIG9uU2VsZWN0ZWRWYWx1ZXNDaGFuZ2U/OiAodmFsdWVzOiBUW10pID0+IHZvaWQ7XG4gIHJlbmRlclNlbGVjdGVkVmFsdWVzPzogKFxuICAgIHZhbHVlczogVFtdLFxuICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nLFxuICAgIGl0ZW1zPzogTXVsdGlTZWxlY3RJdGVtPFQ+W10sXG4gICkgPT4gUmVhY3QuUmVhY3ROb2RlO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGl0ZW1DbGFzc05hbWU/OiBzdHJpbmc7XG4gIGxhYmVsQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBzZWxlY3RDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNlbGVjdEljb24/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIHBvcG92ZXJDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNlbGVjdEl0ZW1zQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBzZWxlY3RlZFZhbHVlczogVFtdO1xuICBzZXRTZWxlY3RlZFZhbHVlczogKHZhbHVlczogVFtdKSA9PiB2b2lkO1xuICByZW5kZXJJdGVtQ29udGVudD86IChcbiAgICB2YWx1ZTogVCxcbiAgICBkZWZhdWx0Q29udGVudDogUmVhY3QuUmVhY3ROb2RlLFxuICAgIGlzU2VsZWN0ZWQ6IGJvb2xlYW4sXG4gICkgPT4gUmVhY3QuUmVhY3ROb2RlO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0UmVuZGVyPFQgZXh0ZW5kcyBzdHJpbmc+KFxuICB2YWx1ZXM6IFRbXSxcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmcsXG4gIGl0ZW1zPzogTXVsdGlTZWxlY3RJdGVtPFQ+W10sXG4pIHtcbiAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gcGxhY2Vob2xkZXIgfHwgJ1NlbGVjdC4uLic7XG4gIH1cbiAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDEpIHtcbiAgICAvLyBGaW5kIHRoZSBpdGVtIHRvIGdldCBpdHMgbGFiZWxcbiAgICBpZiAoaXRlbXMpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtcy5maW5kKChpdGVtKSA9PiBnZXRJdGVtVmFsdWUoaXRlbSkgPT09IHZhbHVlc1swXSk7XG4gICAgICBpZiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gZ2V0SXRlbUxhYmVsKGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWVzWzBdO1xuICB9XG4gIHJldHVybiBgJHt2YWx1ZXMubGVuZ3RofSBpdGVtcyBzZWxlY3RlZGA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE11bHRpU2VsZWN0PFQgZXh0ZW5kcyBzdHJpbmc+KHtcbiAgaXRlbXMsXG4gIGxhYmVsLFxuICBwbGFjZWhvbGRlciA9ICdTZWxlY3QuLi4nLFxuICBvblNlbGVjdGVkVmFsdWVzQ2hhbmdlLFxuICByZW5kZXJTZWxlY3RlZFZhbHVlcyA9IGRlZmF1bHRSZW5kZXIsXG4gIGNsYXNzTmFtZSxcbiAgc2VsZWN0SWNvbixcbiAgaXRlbUNsYXNzTmFtZSxcbiAgbGFiZWxDbGFzc05hbWUsXG4gIHNlbGVjdENsYXNzTmFtZSxcbiAgcG9wb3ZlckNsYXNzTmFtZSxcbiAgc2VsZWN0SXRlbXNDbGFzc05hbWUsXG4gIHNlbGVjdGVkVmFsdWVzID0gW10sXG4gIHNldFNlbGVjdGVkVmFsdWVzLFxuICByZW5kZXJJdGVtQ29udGVudCxcbn06IE11bHRpU2VsZWN0UHJvcHM8VD4pIHtcbiAgY29uc3Qgc2VsZWN0UmVmID0gdXNlUmVmPEhUTUxCdXR0b25FbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2lzUG9wb3Zlck9wZW4sIHNldElzUG9wb3Zlck9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGhhbmRsZVZhbHVlQ2hhbmdlID0gKHZhbHVlczogVFtdKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWRWYWx1ZXModmFsdWVzKTtcbiAgICBpZiAob25TZWxlY3RlZFZhbHVlc0NoYW5nZSkge1xuICAgICAgb25TZWxlY3RlZFZhbHVlc0NoYW5nZSh2YWx1ZXMpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWV9PlxuICAgICAgPFNlbGVjdFByb3ZpZGVyXG4gICAgICAgIHZhbHVlPXtzZWxlY3RlZFZhbHVlc31cbiAgICAgICAgc2V0VmFsdWU9e2hhbmRsZVZhbHVlQ2hhbmdlfVxuICAgICAgICBvcGVuPXtpc1BvcG92ZXJPcGVufVxuICAgICAgICBzZXRPcGVuPXtzZXRJc1BvcG92ZXJPcGVufVxuICAgICAgPlxuICAgICAgICB7bGFiZWwgJiYgKFxuICAgICAgICAgIDxTZWxlY3RMYWJlbCBjbGFzc05hbWU9e2NuKCdtYi0xIGJsb2NrIHRleHQtc20gdGV4dC10ZXh0LXByaW1hcnknLCBsYWJlbENsYXNzTmFtZSl9PlxuICAgICAgICAgICAge2xhYmVsfVxuICAgICAgICAgIDwvU2VsZWN0TGFiZWw+XG4gICAgICAgICl9XG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICByZWY9e3NlbGVjdFJlZn1cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ2ZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiByb3VuZGVkLXhsIHB4LTMgcHktMiB0ZXh0LXNtJyxcbiAgICAgICAgICAgICdiZy1zdXJmYWNlLXRlcnRpYXJ5IHRleHQtdGV4dC1wcmltYXJ5IHNoYWRvdy1zbSBob3ZlcjpjdXJzb3ItcG9pbnRlciBob3ZlcjpiZy1zdXJmYWNlLWhvdmVyJyxcbiAgICAgICAgICAgICdvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXdoaXRlJyxcbiAgICAgICAgICAgIHNlbGVjdENsYXNzTmFtZSxcbiAgICAgICAgICAgIHNlbGVjdGVkVmFsdWVzLmxlbmd0aCA+IDAgJiYgc2VsZWN0SXRlbXNDbGFzc05hbWUgIT0gbnVsbCAmJiBzZWxlY3RJdGVtc0NsYXNzTmFtZSxcbiAgICAgICAgICApfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gZS5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICAgICAgPlxuICAgICAgICAgIHtzZWxlY3RJY29uICYmIDxzcGFuPntzZWxlY3RJY29uIGFzIFJlYWN0LkpTWC5FbGVtZW50fTwvc3Bhbj59XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibXItYXV0byBoaWRkZW4gdHJ1bmNhdGUgbWQ6YmxvY2tcIj5cbiAgICAgICAgICAgIHtyZW5kZXJTZWxlY3RlZFZhbHVlcyhzZWxlY3RlZFZhbHVlcywgcGxhY2Vob2xkZXIsIGl0ZW1zKX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPFNlbGVjdEFycm93XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAnbWwtMSBoaWRkZW4gc3Ryb2tlLTEgdGV4dC1iYXNlIG9wYWNpdHktNzUgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIG1kOmJsb2NrJyxcbiAgICAgICAgICAgICAgaXNQb3BvdmVyT3BlbiAmJiAncm90YXRlLTE4MCcsXG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU2VsZWN0PlxuICAgICAgICA8U2VsZWN0UG9wb3ZlclxuICAgICAgICAgIGd1dHRlcj17NH1cbiAgICAgICAgICBzYW1lV2lkdGhcbiAgICAgICAgICBtb2RhbFxuICAgICAgICAgIHVubW91bnRPbkhpZGVcbiAgICAgICAgICBmaW5hbEZvY3VzPXtzZWxlY3RSZWZ9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICdhbmltYXRlLXBvcG92ZXIgei00MCBmbGV4IG1heC1oLVszMDBweF0nLFxuICAgICAgICAgICAgJ2ZsZXgtY29sIG92ZXJmbG93LWF1dG8gb3ZlcnNjcm9sbC1jb250YWluIHJvdW5kZWQteGwnLFxuICAgICAgICAgICAgJ2JnLXN1cmZhY2Utc2Vjb25kYXJ5IHB4LTEuNSBweS0xIHRleHQtdGV4dC1wcmltYXJ5IHNoYWRvdy1sZycsXG4gICAgICAgICAgICAnYm9yZGVyIGJvcmRlci1ib3JkZXItbGlnaHQnLFxuICAgICAgICAgICAgJ291dGxpbmUtbm9uZScsXG4gICAgICAgICAgICBwb3BvdmVyQ2xhc3NOYW1lLFxuICAgICAgICAgICl9XG4gICAgICAgID5cbiAgICAgICAgICB7aXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGdldEl0ZW1WYWx1ZShpdGVtKTtcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gZ2V0SXRlbUxhYmVsKGl0ZW0pO1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdENvbnRlbnQgPSAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPFNlbGVjdEl0ZW1DaGVjayBjbGFzc05hbWU9XCJtci0wLjUgdGV4dC1wcmltYXJ5XCIgLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0cnVuY2F0ZVwiPntsYWJlbH08L3NwYW4+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGlzQ3VycmVudEl0ZW1TZWxlY3RlZCA9IHNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtXG4gICAgICAgICAgICAgICAga2V5PXt2YWx1ZX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICdmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiByb3VuZGVkLWxnIHB4LTIgcHktMS41IGhvdmVyOmN1cnNvci1wb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICdzY3JvbGwtbS0xIG91dGxpbmUtbm9uZSB0cmFuc2l0aW9uLWNvbG9ycycsXG4gICAgICAgICAgICAgICAgICAnaG92ZXI6YmctYmxhY2svWzAuMDc1XSBkYXJrOmhvdmVyOmJnLXdoaXRlLzEwJyxcbiAgICAgICAgICAgICAgICAgICdkYXRhLVthY3RpdmUtaXRlbV06YmctYmxhY2svWzAuMDc1XSBkYXJrOmRhdGEtW2FjdGl2ZS1pdGVtXTpiZy13aGl0ZS8xMCcsXG4gICAgICAgICAgICAgICAgICAndy1mdWxsIG1pbi13LTAgdGV4dC1zbScsXG4gICAgICAgICAgICAgICAgICBpdGVtQ2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7cmVuZGVySXRlbUNvbnRlbnRcbiAgICAgICAgICAgICAgICAgID8gKHJlbmRlckl0ZW1Db250ZW50KFxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRDb250ZW50LFxuICAgICAgICAgICAgICAgICAgICAgIGlzQ3VycmVudEl0ZW1TZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgKSBhcyBSZWFjdC5KU1guRWxlbWVudClcbiAgICAgICAgICAgICAgICAgIDogKGRlZmF1bHRDb250ZW50IGFzIFJlYWN0LkpTWC5FbGVtZW50KX1cbiAgICAgICAgICAgICAgPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9TZWxlY3RQb3BvdmVyPlxuICAgICAgPC9TZWxlY3RQcm92aWRlcj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBBcmlha2l0IGZyb20gJ0Bhcmlha2l0L3JlYWN0JztcbmltcG9ydCB0eXBlICogYXMgdCBmcm9tICd+L2NvbW1vbic7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuaW1wb3J0ICcuL0Ryb3Bkb3duLmNzcyc7XG5cbmludGVyZmFjZSBEcm9wZG93blByb3BzIHtcbiAga2V5UHJlZml4Pzogc3RyaW5nO1xuICB0cmlnZ2VyOiBSZWFjdC5SZWFjdE5vZGU7XG4gIGl0ZW1zOiB0Lk1lbnVJdGVtUHJvcHNbXTtcbiAgaXNPcGVuOiBib29sZWFuO1xuICBzZXRJc09wZW46IChpc09wZW46IGJvb2xlYW4pID0+IHZvaWQ7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaWNvbkNsYXNzTmFtZT86IHN0cmluZztcbiAgaXRlbUNsYXNzTmFtZT86IHN0cmluZztcbiAgc2FtZVdpZHRoPzogYm9vbGVhbjtcbiAgYW5jaG9yPzogeyB4OiBzdHJpbmc7IHk6IHN0cmluZyB9O1xuICBndXR0ZXI/OiBudW1iZXI7XG4gIG1vZGFsPzogYm9vbGVhbjtcbiAgcG9ydGFsPzogYm9vbGVhbjtcbiAgcHJlc2VydmVUYWJPcmRlcj86IGJvb2xlYW47XG4gIGZvY3VzTG9vcD86IGJvb2xlYW47XG4gIG1lbnVJZDogc3RyaW5nO1xuICBtb3VudEJ5U3RhdGU/OiBib29sZWFuO1xuICB1bm1vdW50T25IaWRlPzogYm9vbGVhbjtcbiAgZmluYWxGb2N1cz86IFJlYWN0LlJlZk9iamVjdDxIVE1MRWxlbWVudD47XG59XG5cbnR5cGUgTWVudVByb3BzID0gT21pdDxcbiAgRHJvcGRvd25Qcm9wcyxcbiAgJ3RyaWdnZXInIHwgJ2lzT3BlbicgfCAnc2V0SXNPcGVuJyB8ICdmb2N1c0xvb3AnIHwgJ21vdW50QnlTdGF0ZSdcbj4gJlxuICBBcmlha2l0Lk1lbnVQcm9wcztcblxuY29uc3QgRHJvcGRvd25Qb3B1cDogUmVhY3QuRkM8RHJvcGRvd25Qcm9wcz4gPSAoe1xuICB0cmlnZ2VyLFxuICBpc09wZW4sXG4gIHNldElzT3BlbixcbiAgZm9jdXNMb29wLFxuICBtb3VudEJ5U3RhdGUsXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IG1lbnUgPSBBcmlha2l0LnVzZU1lbnVTdG9yZSh7IG9wZW46IGlzT3Blbiwgc2V0T3Blbjogc2V0SXNPcGVuLCBmb2N1c0xvb3AgfSk7XG4gIGlmIChtb3VudEJ5U3RhdGUpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEFyaWFraXQuTWVudVByb3ZpZGVyIHN0b3JlPXttZW51fT5cbiAgICAgICAge3RyaWdnZXJ9XG4gICAgICAgIHtpc09wZW4gJiYgPE1lbnUgey4uLnByb3BzfSAvPn1cbiAgICAgIDwvQXJpYWtpdC5NZW51UHJvdmlkZXI+XG4gICAgKTtcbiAgfVxuICByZXR1cm4gKFxuICAgIDxBcmlha2l0Lk1lbnVQcm92aWRlciBzdG9yZT17bWVudX0+XG4gICAgICB7dHJpZ2dlcn1cbiAgICAgIDxNZW51IHsuLi5wcm9wc30gLz5cbiAgICA8L0FyaWFraXQuTWVudVByb3ZpZGVyPlxuICApO1xufTtcblxuY29uc3QgTWVudTogUmVhY3QuRkM8TWVudVByb3BzPiA9ICh7XG4gIGl0ZW1zLFxuICBtZW51SWQsXG4gIGtleVByZWZpeCxcbiAgY2xhc3NOYW1lLFxuICBpY29uQ2xhc3NOYW1lLFxuICBpdGVtQ2xhc3NOYW1lLFxuICBtb2RhbCxcbiAgcG9ydGFsLFxuICBzYW1lV2lkdGgsXG4gIGd1dHRlciA9IDgsXG4gIGZpbmFsRm9jdXMsXG4gIHVubW91bnRPbkhpZGUsXG4gIHByZXNlcnZlVGFiT3JkZXIsXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IG1lbnVTdG9yZSA9IEFyaWFraXQudXNlTWVudVN0b3JlKCk7XG4gIGNvbnN0IG1lbnUgPSBBcmlha2l0LnVzZU1lbnVDb250ZXh0KCk7XG4gIHJldHVybiAoXG4gICAgPEFyaWFraXQuTWVudVxuICAgICAgaWQ9e21lbnVJZH1cbiAgICAgIG1vZGFsPXttb2RhbH1cbiAgICAgIGd1dHRlcj17Z3V0dGVyfVxuICAgICAgcG9ydGFsPXtwb3J0YWx9XG4gICAgICBzYW1lV2lkdGg9e3NhbWVXaWR0aH1cbiAgICAgIGZpbmFsRm9jdXM9e2ZpbmFsRm9jdXN9XG4gICAgICB1bm1vdW50T25IaWRlPXt1bm1vdW50T25IaWRlfVxuICAgICAgcHJlc2VydmVUYWJPcmRlcj17cHJlc2VydmVUYWJPcmRlcn1cbiAgICAgIGNsYXNzTmFtZT17Y24oJ3BvcG92ZXItdWkgei00MCcsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAge2l0ZW1zXG4gICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uc2hvdyAhPT0gZmFsc2UpXG4gICAgICAgIC5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBzdWJJdGVtcyB9ID0gaXRlbTtcbiAgICAgICAgICBpZiAoaXRlbS5zZXBhcmF0ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIDxBcmlha2l0Lk1lbnVTZXBhcmF0b3Iga2V5PXtpbmRleH0gY2xhc3NOYW1lPVwibXktMSBoLXB4IGJvcmRlci1ib3JkZXItbWVkaXVtXCIgLz47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzdWJJdGVtcyAmJiBzdWJJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8QXJpYWtpdC5NZW51UHJvdmlkZXJcbiAgICAgICAgICAgICAgICBzdG9yZT17bWVudVN0b3JlfVxuICAgICAgICAgICAgICAgIGtleT17YCR7a2V5UHJlZml4ID8/ICcnfSR7aW5kZXh9LSR7aXRlbS5pZCA/PyAnJ30tcHJvdmlkZXJgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEFyaWFraXQuTWVudUJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgJ2dyb3VwIGZsZXggdy1mdWxsIGN1cnNvci1wb2ludGVyIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTIgcm91bmRlZC1sZyBweC0zIHB5LTMuNSB0ZXh0LXNtIHRleHQtdGV4dC1wcmltYXJ5IG91dGxpbmUtbm9uZSBob3ZlcjpiZy1zdXJmYWNlLWhvdmVyIGZvY3VzOmJnLXN1cmZhY2UtaG92ZXIgbWQ6cHgtMi41IG1kOnB5LTInLFxuICAgICAgICAgICAgICAgICAgICBpdGVtQ2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpdGVtLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgaWQ9e2l0ZW0uaWR9XG4gICAgICAgICAgICAgICAgICByZW5kZXI9e2l0ZW0ucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgcmVmPXtpdGVtLnJlZn1cbiAgICAgICAgICAgICAgICAgIC8vIGhpZGVPbkNsaWNrPXtpdGVtLmhpZGVPbkNsaWNrfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIHtpdGVtLmljb24gIT0gbnVsbCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtjbignbXItMiBzaXplLTQnLCBpY29uQ2xhc3NOYW1lKX0gYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aXRlbS5pY29ufVxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAge2l0ZW0ubGFiZWx9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8QXJpYWtpdC5NZW51QnV0dG9uQXJyb3cgY2xhc3NOYW1lPVwic3Ryb2tlLTEgdGV4dC1iYXNlIG9wYWNpdHktNzVcIiAvPlxuICAgICAgICAgICAgICAgIDwvQXJpYWtpdC5NZW51QnV0dG9uPlxuICAgICAgICAgICAgICAgIDxNZW51XG4gICAgICAgICAgICAgICAgICBpdGVtcz17c3ViSXRlbXN9XG4gICAgICAgICAgICAgICAgICBtZW51SWQ9e2Ake21lbnVJZH0tJHtpbmRleH1gfVxuICAgICAgICAgICAgICAgICAga2V5PXtgJHtrZXlQcmVmaXggPz8gJyd9JHtpbmRleH0tJHtpdGVtLmlkID8/ICcnfWB9XG4gICAgICAgICAgICAgICAgICBndXR0ZXI9ezEyfVxuICAgICAgICAgICAgICAgICAgcG9ydGFsPXt0cnVlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQXJpYWtpdC5NZW51UHJvdmlkZXI+XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QXJpYWtpdC5NZW51SXRlbVxuICAgICAgICAgICAgICBrZXk9e2Ake2tleVByZWZpeCA/PyAnJ30ke2luZGV4fS0ke2l0ZW0uaWQgPz8gJyd9YH1cbiAgICAgICAgICAgICAgaWQ9e2l0ZW0uaWR9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgJ2dyb3VwIGZsZXggdy1mdWxsIGN1cnNvci1wb2ludGVyIGl0ZW1zLWNlbnRlciBnYXAtMiByb3VuZGVkLWxnIHB4LTMgcHktMy41IHRleHQtc20gdGV4dC10ZXh0LXByaW1hcnkgb3V0bGluZS1ub25lIGhvdmVyOmJnLXN1cmZhY2UtaG92ZXIgZm9jdXM6Ymctc3VyZmFjZS1ob3ZlciBtZDpweC0yLjUgbWQ6cHktMicsXG4gICAgICAgICAgICAgICAgaXRlbUNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICBpdGVtLmNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2l0ZW0uZGlzYWJsZWR9XG4gICAgICAgICAgICAgIHJlbmRlcj17aXRlbS5yZW5kZXJ9XG4gICAgICAgICAgICAgIHJlZj17aXRlbS5yZWZ9XG4gICAgICAgICAgICAgIGhpZGVPbkNsaWNrPXtpdGVtLmhpZGVPbkNsaWNrfVxuICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPXtpdGVtLmFyaWFIYXNQb3B1cH1cbiAgICAgICAgICAgICAgYXJpYS1jb250cm9scz17aXRlbS5hcmlhQ29udHJvbHN9XG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2l0ZW0uYXJpYUxhYmVsfVxuICAgICAgICAgICAgICBhcmlhLWNoZWNrZWQ9e2l0ZW0uYXJpYUNoZWNrZWR9XG4gICAgICAgICAgICAgIHsuLi4oaXRlbS5hcmlhQ2hlY2tlZCAhPT0gdW5kZWZpbmVkID8geyByb2xlOiAnbWVudWl0ZW1jaGVja2JveCcgfSA6IHt9KX1cbiAgICAgICAgICAgICAgb25DbGljaz17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5vbkNsaWNrKSB7XG4gICAgICAgICAgICAgICAgICBpdGVtLm9uQ2xpY2soZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5oaWRlT25DbGljayA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWVudT8uaGlkZSgpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aXRlbS5pY29uICE9IG51bGwgJiYgKFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y24oJ21yLTIgc2l6ZS00JywgaWNvbkNsYXNzTmFtZSl9IGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAge2l0ZW0uaWNvbn1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHtpdGVtLmxhYmVsfVxuICAgICAgICAgICAgICB7aXRlbS5rYmQgIT0gbnVsbCAmJiAoXG4gICAgICAgICAgICAgICAgPGtiZCBjbGFzc05hbWU9XCJtbC1hdXRvIGhpZGRlbiBmb250LXNhbnMgdGV4dC14cyB0ZXh0LWJsYWNrLzUwIGdyb3VwLWhvdmVyOmlubGluZSBncm91cC1mb2N1czppbmxpbmUgZGFyazp0ZXh0LXdoaXRlLzUwXCI+XG4gICAgICAgICAgICAgICAgICDijJh7aXRlbS5rYmR9XG4gICAgICAgICAgICAgICAgPC9rYmQ+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0FyaWFraXQuTWVudUl0ZW0+XG4gICAgICAgICAgKTtcbiAgICAgICAgfSl9XG4gICAgPC9Bcmlha2l0Lk1lbnU+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEcm9wZG93blBvcHVwO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZURlbGF5ZWRSZW5kZXIgfSBmcm9tICd+L2hvb2tzJztcblxuaW50ZXJmYWNlIERlbGF5ZWRSZW5kZXJQcm9wcyB7XG4gIGRlbGF5OiBudW1iZXI7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59XG5cbmNvbnN0IERlbGF5ZWRSZW5kZXIgPSAoeyBkZWxheSwgY2hpbGRyZW4gfTogRGVsYXllZFJlbmRlclByb3BzKSA9PlxuICB1c2VEZWxheWVkUmVuZGVyKGRlbGF5KSgoKSA9PiBjaGlsZHJlbik7XG5cbmV4cG9ydCBkZWZhdWx0IERlbGF5ZWRSZW5kZXI7XG4iLCJpbXBvcnQgeyBJVGhlbWVSR0IsIElUaGVtZVZhcmlhYmxlcyB9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBWYWxpZGF0ZXMgUkdCIHN0cmluZyBmb3JtYXQgKGUuZy4sIFwiMjU1IDI1NSAyNTVcIilcbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVSR0IocmdiOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCFyZ2IpIHJldHVybiB0cnVlO1xuICBjb25zdCByZ2JSZWdleCA9IC9eKFxcZHsxLDN9KVxccysoXFxkezEsM30pXFxzKyhcXGR7MSwzfSkkLztcbiAgY29uc3QgbWF0Y2ggPSByZ2IubWF0Y2gocmdiUmVnZXgpO1xuXG4gIGlmICghbWF0Y2gpIHJldHVybiBmYWxzZTtcblxuICAvLyBDaGVjayB0aGF0IGVhY2ggdmFsdWUgaXMgYmV0d2VlbiAwLTI1NVxuICBjb25zdCBbLCByLCBnLCBiXSA9IG1hdGNoO1xuICByZXR1cm4gW3IsIGcsIGJdLmV2ZXJ5KCh2YWwpID0+IHtcbiAgICBjb25zdCBudW0gPSBwYXJzZUludCh2YWwsIDEwKTtcbiAgICByZXR1cm4gbnVtID49IDAgJiYgbnVtIDw9IDI1NTtcbiAgfSk7XG59XG5cbi8qKlxuICogTWFwcyB0aGVtZSBSR0IgdmFsdWVzIHRvIENTUyB2YXJpYWJsZXNcbiAqL1xuZnVuY3Rpb24gbWFwVGhlbWUocmdiOiBJVGhlbWVSR0IpOiBQYXJ0aWFsPElUaGVtZVZhcmlhYmxlcz4ge1xuICBjb25zdCB2YXJpYWJsZXM6IFBhcnRpYWw8SVRoZW1lVmFyaWFibGVzPiA9IHt9O1xuXG4gIC8vIE1hcCBlYWNoIFJHQiB2YWx1ZSB0byBpdHMgY29ycmVzcG9uZGluZyBDU1MgdmFyaWFibGVcbiAgY29uc3QgbWFwcGluZ3M6IFJlY29yZDxrZXlvZiBJVGhlbWVSR0IsIGtleW9mIElUaGVtZVZhcmlhYmxlcz4gPSB7XG4gICAgJ3JnYi10ZXh0LXByaW1hcnknOiAnLS10ZXh0LXByaW1hcnknLFxuICAgICdyZ2ItdGV4dC1zZWNvbmRhcnknOiAnLS10ZXh0LXNlY29uZGFyeScsXG4gICAgJ3JnYi10ZXh0LXNlY29uZGFyeS1hbHQnOiAnLS10ZXh0LXNlY29uZGFyeS1hbHQnLFxuICAgICdyZ2ItdGV4dC10ZXJ0aWFyeSc6ICctLXRleHQtdGVydGlhcnknLFxuICAgICdyZ2ItdGV4dC13YXJuaW5nJzogJy0tdGV4dC13YXJuaW5nJyxcbiAgICAncmdiLXJpbmctcHJpbWFyeSc6ICctLXJpbmctcHJpbWFyeScsXG4gICAgJ3JnYi1oZWFkZXItcHJpbWFyeSc6ICctLWhlYWRlci1wcmltYXJ5JyxcbiAgICAncmdiLWhlYWRlci1ob3Zlcic6ICctLWhlYWRlci1ob3ZlcicsXG4gICAgJ3JnYi1oZWFkZXItYnV0dG9uLWhvdmVyJzogJy0taGVhZGVyLWJ1dHRvbi1ob3ZlcicsXG4gICAgJ3JnYi1zdXJmYWNlLWFjdGl2ZSc6ICctLXN1cmZhY2UtYWN0aXZlJyxcbiAgICAncmdiLXN1cmZhY2UtYWN0aXZlLWFsdCc6ICctLXN1cmZhY2UtYWN0aXZlLWFsdCcsXG4gICAgJ3JnYi1zdXJmYWNlLWhvdmVyJzogJy0tc3VyZmFjZS1ob3ZlcicsXG4gICAgJ3JnYi1zdXJmYWNlLWhvdmVyLWFsdCc6ICctLXN1cmZhY2UtaG92ZXItYWx0JyxcbiAgICAncmdiLXN1cmZhY2UtcHJpbWFyeSc6ICctLXN1cmZhY2UtcHJpbWFyeScsXG4gICAgJ3JnYi1zdXJmYWNlLXByaW1hcnktYWx0JzogJy0tc3VyZmFjZS1wcmltYXJ5LWFsdCcsXG4gICAgJ3JnYi1zdXJmYWNlLXByaW1hcnktY29udHJhc3QnOiAnLS1zdXJmYWNlLXByaW1hcnktY29udHJhc3QnLFxuICAgICdyZ2Itc3VyZmFjZS1zZWNvbmRhcnknOiAnLS1zdXJmYWNlLXNlY29uZGFyeScsXG4gICAgJ3JnYi1zdXJmYWNlLXNlY29uZGFyeS1hbHQnOiAnLS1zdXJmYWNlLXNlY29uZGFyeS1hbHQnLFxuICAgICdyZ2Itc3VyZmFjZS10ZXJ0aWFyeSc6ICctLXN1cmZhY2UtdGVydGlhcnknLFxuICAgICdyZ2Itc3VyZmFjZS10ZXJ0aWFyeS1hbHQnOiAnLS1zdXJmYWNlLXRlcnRpYXJ5LWFsdCcsXG4gICAgJ3JnYi1zdXJmYWNlLWRpYWxvZyc6ICctLXN1cmZhY2UtZGlhbG9nJyxcbiAgICAncmdiLXN1cmZhY2Utc3VibWl0JzogJy0tc3VyZmFjZS1zdWJtaXQnLFxuICAgICdyZ2Itc3VyZmFjZS1zdWJtaXQtaG92ZXInOiAnLS1zdXJmYWNlLXN1Ym1pdC1ob3ZlcicsXG4gICAgJ3JnYi1zdXJmYWNlLWRlc3RydWN0aXZlJzogJy0tc3VyZmFjZS1kZXN0cnVjdGl2ZScsXG4gICAgJ3JnYi1zdXJmYWNlLWRlc3RydWN0aXZlLWhvdmVyJzogJy0tc3VyZmFjZS1kZXN0cnVjdGl2ZS1ob3ZlcicsXG4gICAgJ3JnYi1zdXJmYWNlLWNoYXQnOiAnLS1zdXJmYWNlLWNoYXQnLFxuICAgICdyZ2ItYm9yZGVyLWxpZ2h0JzogJy0tYm9yZGVyLWxpZ2h0JyxcbiAgICAncmdiLWJvcmRlci1tZWRpdW0nOiAnLS1ib3JkZXItbWVkaXVtJyxcbiAgICAncmdiLWJvcmRlci1tZWRpdW0tYWx0JzogJy0tYm9yZGVyLW1lZGl1bS1hbHQnLFxuICAgICdyZ2ItYm9yZGVyLWhlYXZ5JzogJy0tYm9yZGVyLWhlYXZ5JyxcbiAgICAncmdiLWJvcmRlci14aGVhdnknOiAnLS1ib3JkZXIteGhlYXZ5JyxcbiAgICAncmdiLWJyYW5kLXB1cnBsZSc6ICctLWJyYW5kLXB1cnBsZScsXG4gICAgJ3JnYi1wcmVzZW50YXRpb24nOiAnLS1wcmVzZW50YXRpb24nLFxuXG4gICAgLy8gVXRpbGl0eSBjb2xvcnNcbiAgICAncmdiLWJhY2tncm91bmQnOiAnLS1iYWNrZ3JvdW5kJyxcbiAgICAncmdiLWZvcmVncm91bmQnOiAnLS1mb3JlZ3JvdW5kJyxcbiAgICAncmdiLXByaW1hcnknOiAnLS1wcmltYXJ5JyxcbiAgICAncmdiLXByaW1hcnktZm9yZWdyb3VuZCc6ICctLXByaW1hcnktZm9yZWdyb3VuZCcsXG4gICAgJ3JnYi1zZWNvbmRhcnknOiAnLS1zZWNvbmRhcnknLFxuICAgICdyZ2Itc2Vjb25kYXJ5LWZvcmVncm91bmQnOiAnLS1zZWNvbmRhcnktZm9yZWdyb3VuZCcsXG4gICAgJ3JnYi1tdXRlZCc6ICctLW11dGVkJyxcbiAgICAncmdiLW11dGVkLWZvcmVncm91bmQnOiAnLS1tdXRlZC1mb3JlZ3JvdW5kJyxcbiAgICAncmdiLWFjY2VudCc6ICctLWFjY2VudCcsXG4gICAgJ3JnYi1hY2NlbnQtZm9yZWdyb3VuZCc6ICctLWFjY2VudC1mb3JlZ3JvdW5kJyxcbiAgICAncmdiLWRlc3RydWN0aXZlLWZvcmVncm91bmQnOiAnLS1kZXN0cnVjdGl2ZS1mb3JlZ3JvdW5kJyxcbiAgICAncmdiLWJvcmRlcic6ICctLWJvcmRlcicsXG4gICAgJ3JnYi1pbnB1dCc6ICctLWlucHV0JyxcbiAgICAncmdiLXJpbmcnOiAnLS1yaW5nJyxcbiAgICAncmdiLWNhcmQnOiAnLS1jYXJkJyxcbiAgICAncmdiLWNhcmQtZm9yZWdyb3VuZCc6ICctLWNhcmQtZm9yZWdyb3VuZCcsXG4gIH07XG5cbiAgT2JqZWN0LmVudHJpZXMobWFwcGluZ3MpLmZvckVhY2goKFtyZ2JLZXksIGNzc1Zhcl0pID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IHJnYltyZ2JLZXkgYXMga2V5b2YgSVRoZW1lUkdCXTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHZhcmlhYmxlc1tjc3NWYXJdID0gdmFsdWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdmFyaWFibGVzO1xufVxuXG4vKipcbiAqIEFwcGxpZXMgdGhlbWUgdG8gdGhlIGRvY3VtZW50IHJvb3RcbiAqIFNldHMgQ1NTIHZhcmlhYmxlcyBhcyByZ2IoKSB2YWx1ZXMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBleGlzdGluZyBDU1NcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYXBwbHlUaGVtZSh0aGVtZVJHQj86IElUaGVtZVJHQikge1xuICBpZiAoIXRoZW1lUkdCKSByZXR1cm47XG5cbiAgY29uc3QgdGhlbWVPYmplY3QgPSBtYXBUaGVtZSh0aGVtZVJHQik7XG4gIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgT2JqZWN0LmVudHJpZXModGhlbWVPYmplY3QpLmZvckVhY2goKFtjc3NWYXIsIHZhbHVlXSkgPT4ge1xuICAgIGlmICghdmFsdWUpIHJldHVybjtcblxuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0ZVJHQih2YWx1ZSk7XG4gICAgaWYgKCF2YWxpZGF0aW9uKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBJbnZhbGlkIFJHQiB2YWx1ZSBmb3IgJHtjc3NWYXJ9OiAke3ZhbHVlfWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNldCB0aGUgQ1NTIHZhcmlhYmxlIGFzIHJnYigpIHZhbHVlIGZvciBjb21wYXRpYmlsaXR5XG4gICAgLy8gVGhpcyBlbnN1cmVzIGV4aXN0aW5nIENTUyB0aGF0IGV4cGVjdHMgY29sb3IgdmFsdWVzIChub3Qgc3BhY2Utc2VwYXJhdGVkIFJHQikgY29udGludWVzIHRvIHdvcmtcbiAgICByb290LnN0eWxlLnNldFByb3BlcnR5KGNzc1ZhciwgYHJnYigke3ZhbHVlfSlgKTtcbiAgfSk7XG59XG4iLCJpbXBvcnQgUmVhY3QsIHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VDYWxsYmFjaywgdXNlU3RhdGUsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IElUaGVtZVJHQiB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCBhcHBseVRoZW1lIGZyb20gJy4uL3V0aWxzL2FwcGx5VGhlbWUnO1xuXG5jb25zdCBUSEVNRV9LRVkgPSAnY29sb3ItdGhlbWUnO1xuY29uc3QgVEhFTUVfQ09MT1JTX0tFWSA9ICd0aGVtZS1jb2xvcnMnO1xuY29uc3QgVEhFTUVfTkFNRV9LRVkgPSAndGhlbWUtbmFtZSc7XG5cbnR5cGUgVGhlbWVDb250ZXh0VHlwZSA9IHtcbiAgdGhlbWU6IHN0cmluZzsgLy8gJ2xpZ2h0JyB8ICdkYXJrJyB8ICdzeXN0ZW0nXG4gIHNldFRoZW1lOiAodGhlbWU6IHN0cmluZykgPT4gdm9pZDtcbiAgdGhlbWVSR0I/OiBJVGhlbWVSR0I7XG4gIHNldFRoZW1lUkdCOiAoY29sb3JzPzogSVRoZW1lUkdCKSA9PiB2b2lkO1xuICB0aGVtZU5hbWU/OiBzdHJpbmc7XG4gIHNldFRoZW1lTmFtZTogKG5hbWU/OiBzdHJpbmcpID0+IHZvaWQ7XG4gIHJlc2V0VGhlbWU6ICgpID0+IHZvaWQ7XG59O1xuXG4vLyBFeHBvcnQgVGhlbWVDb250ZXh0IHNvIGl0IGNhbiBiZSBpbXBvcnRlZCBmcm9tIGhvb2tzXG5leHBvcnQgY29uc3QgVGhlbWVDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxUaGVtZUNvbnRleHRUeXBlPih7XG4gIHRoZW1lOiAnc3lzdGVtJyxcbiAgc2V0VGhlbWU6ICgpID0+IHVuZGVmaW5lZCxcbiAgc2V0VGhlbWVSR0I6ICgpID0+IHVuZGVmaW5lZCxcbiAgc2V0VGhlbWVOYW1lOiAoKSA9PiB1bmRlZmluZWQsXG4gIHJlc2V0VGhlbWU6ICgpID0+IHVuZGVmaW5lZCxcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRoZW1lUHJvdmlkZXJQcm9wcyB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG4gIHRoZW1lUkdCPzogSVRoZW1lUkdCO1xuICB0aGVtZU5hbWU/OiBzdHJpbmc7XG4gIGluaXRpYWxUaGVtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGVtZSBpcyBkYXJrXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RhcmsgPSAodGhlbWU6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICBpZiAodGhlbWUgPT09ICdzeXN0ZW0nKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJykubWF0Y2hlcztcbiAgfVxuICByZXR1cm4gdGhlbWUgPT09ICdkYXJrJztcbn07XG5cbi8qKlxuICogVmFsaWRhdGUgdGhhdCBhIHBhcnNlZCB2YWx1ZSBsb29rcyBsaWtlIGFuIElUaGVtZVJHQiBvYmplY3RcbiAqL1xuY29uc3QgaXNWYWxpZFRoZW1lQ29sb3JzID0gKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgSVRoZW1lUkdCID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgdmFsdWUgPT09IG51bGwgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModmFsdWUpKSB7XG4gICAgY29uc3QgdmFsID0gKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtrZXldO1xuICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgdmFsICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8qKlxuICogR2V0IGluaXRpYWwgdGhlbWUgZnJvbSBsb2NhbFN0b3JhZ2Ugb3IgZGVmYXVsdCB0byAnc3lzdGVtJ1xuICovXG5jb25zdCBnZXRJbml0aWFsVGhlbWUgPSAoKTogc3RyaW5nID0+IHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gJ3N5c3RlbSc7XG4gIHRyeSB7XG4gICAgY29uc3Qgc3RvcmVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oVEhFTUVfS0VZKTtcbiAgICBpZiAoc3RvcmVkICYmIFsnbGlnaHQnLCAnZGFyaycsICdzeXN0ZW0nXS5pbmNsdWRlcyhzdG9yZWQpKSB7XG4gICAgICByZXR1cm4gc3RvcmVkO1xuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgLy8gbG9jYWxTdG9yYWdlIG5vdCBhdmFpbGFibGVcbiAgfVxuICByZXR1cm4gJ3N5c3RlbSc7XG59O1xuXG4vKipcbiAqIEdldCBpbml0aWFsIHRoZW1lIGNvbG9ycyBmcm9tIGxvY2FsU3RvcmFnZVxuICovXG5jb25zdCBnZXRJbml0aWFsVGhlbWVDb2xvcnMgPSAoKTogSVRoZW1lUkdCIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gdW5kZWZpbmVkO1xuICB0cnkge1xuICAgIGNvbnN0IHN0b3JlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFRIRU1FX0NPTE9SU19LRVkpO1xuICAgIGlmIChzdG9yZWQpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2Uoc3RvcmVkKTtcbiAgICAgIGlmIChpc1ZhbGlkVGhlbWVDb2xvcnMocGFyc2VkKSkge1xuICAgICAgICByZXR1cm4gcGFyc2VkO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgLy8gbG9jYWxTdG9yYWdlIG5vdCBhdmFpbGFibGUgb3IgaW52YWxpZCBKU09OXG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogR2V0IGluaXRpYWwgdGhlbWUgbmFtZSBmcm9tIGxvY2FsU3RvcmFnZVxuICovXG5jb25zdCBnZXRJbml0aWFsVGhlbWVOYW1lID0gKCk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgdHJ5IHtcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oVEhFTUVfTkFNRV9LRVkpIHx8IHVuZGVmaW5lZDtcbiAgfSBjYXRjaCB7XG4gICAgLy8gbG9jYWxTdG9yYWdlIG5vdCBhdmFpbGFibGVcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuLyoqXG4gKiBUaGVtZVByb3ZpZGVyIGNvbXBvbmVudCB0aGF0IGhhbmRsZXMgYm90aCBkYXJrL2xpZ2h0IG1vZGUgc3dpdGNoaW5nXG4gKiBhbmQgZHluYW1pYyBjb2xvciB0aGVtZXMgdmlhIENTUyB2YXJpYWJsZXMgd2l0aCBsb2NhbFN0b3JhZ2UgcGVyc2lzdGVuY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFRoZW1lUHJvdmlkZXIoe1xuICBjaGlsZHJlbixcbiAgdGhlbWVSR0I6IHByb3BUaGVtZVJHQixcbiAgdGhlbWVOYW1lOiBwcm9wVGhlbWVOYW1lLFxuICBpbml0aWFsVGhlbWUsXG59OiBUaGVtZVByb3ZpZGVyUHJvcHMpIHtcbiAgY29uc3QgW3RoZW1lLCBzZXRUaGVtZVN0YXRlXSA9IHVzZVN0YXRlPHN0cmluZz4oZ2V0SW5pdGlhbFRoZW1lKTtcbiAgY29uc3QgW3RoZW1lUkdCLCBzZXRUaGVtZVJHQlN0YXRlXSA9IHVzZVN0YXRlPElUaGVtZVJHQiB8IHVuZGVmaW5lZD4oZ2V0SW5pdGlhbFRoZW1lQ29sb3JzKTtcbiAgY29uc3QgW3RoZW1lTmFtZSwgc2V0VGhlbWVOYW1lU3RhdGVdID0gdXNlU3RhdGU8c3RyaW5nIHwgdW5kZWZpbmVkPihnZXRJbml0aWFsVGhlbWVOYW1lKTtcblxuICAvLyBUcmFjayBpZiBwcm9wcyBoYXZlIGJlZW4gaW5pdGlhbGl6ZWRcbiAgY29uc3QgaW5pdGlhbGl6ZWQgPSB1c2VSZWYoZmFsc2UpO1xuXG4gIGNvbnN0IHNldFRoZW1lID0gdXNlQ2FsbGJhY2soKG5ld1RoZW1lOiBzdHJpbmcpID0+IHtcbiAgICBzZXRUaGVtZVN0YXRlKG5ld1RoZW1lKTtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oVEhFTUVfS0VZLCBuZXdUaGVtZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBsb2NhbFN0b3JhZ2Ugbm90IGF2YWlsYWJsZVxuICAgIH1cbiAgfSwgW10pO1xuXG4gIGNvbnN0IHNldFRoZW1lUkdCID0gdXNlQ2FsbGJhY2soKGNvbG9ycz86IElUaGVtZVJHQikgPT4ge1xuICAgIHNldFRoZW1lUkdCU3RhdGUoY29sb3JzKTtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgaWYgKGNvbG9ycykge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShUSEVNRV9DT0xPUlNfS0VZLCBKU09OLnN0cmluZ2lmeShjb2xvcnMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFRIRU1FX0NPTE9SU19LRVkpO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gbG9jYWxTdG9yYWdlIG5vdCBhdmFpbGFibGVcbiAgICB9XG4gIH0sIFtdKTtcblxuICBjb25zdCBzZXRUaGVtZU5hbWUgPSB1c2VDYWxsYmFjaygobmFtZT86IHN0cmluZykgPT4ge1xuICAgIHNldFRoZW1lTmFtZVN0YXRlKG5hbWUpO1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuICAgIHRyeSB7XG4gICAgICBpZiAobmFtZSkge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShUSEVNRV9OQU1FX0tFWSwgbmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShUSEVNRV9OQU1FX0tFWSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBsb2NhbFN0b3JhZ2Ugbm90IGF2YWlsYWJsZVxuICAgIH1cbiAgfSwgW10pO1xuXG4gIC8vIEluaXRpYWxpemUgZnJvbSBwcm9wcyBvbmx5IG9uY2Ugb24gbW91bnRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5pdGlhbGl6ZWQuY3VycmVudCkgcmV0dXJuO1xuICAgIGluaXRpYWxpemVkLmN1cnJlbnQgPSB0cnVlO1xuXG4gICAgLy8gU2V0IGluaXRpYWwgdGhlbWUgaWYgcHJvdmlkZWRcbiAgICBpZiAoaW5pdGlhbFRoZW1lKSB7XG4gICAgICBzZXRUaGVtZShpbml0aWFsVGhlbWUpO1xuICAgIH1cblxuICAgIC8vIFNldCBpbml0aWFsIHRoZW1lIGNvbG9ycyBpZiBwcm92aWRlZFxuICAgIGlmIChwcm9wVGhlbWVSR0IpIHtcbiAgICAgIHNldFRoZW1lUkdCKHByb3BUaGVtZVJHQik7XG4gICAgfVxuXG4gICAgLy8gU2V0IGluaXRpYWwgdGhlbWUgbmFtZSBpZiBwcm92aWRlZFxuICAgIGlmIChwcm9wVGhlbWVOYW1lKSB7XG4gICAgICBzZXRUaGVtZU5hbWUocHJvcFRoZW1lTmFtZSk7XG4gICAgfVxuICB9LCBbaW5pdGlhbFRoZW1lLCBwcm9wVGhlbWVSR0IsIHByb3BUaGVtZU5hbWUsIHNldFRoZW1lLCBzZXRUaGVtZVJHQiwgc2V0VGhlbWVOYW1lXSk7XG5cbiAgLy8gQXBwbHkgY2xhc3MtYmFzZWQgZGFyayBtb2RlXG4gIGNvbnN0IGFwcGx5VGhlbWVNb2RlID0gdXNlQ2FsbGJhY2soKGN1cnJlbnRUaGVtZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgcm9vdCA9IHdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgY29uc3QgZGFya01vZGUgPSBpc0RhcmsoY3VycmVudFRoZW1lKTtcblxuICAgIHJvb3QuY2xhc3NMaXN0LnJlbW92ZShkYXJrTW9kZSA/ICdsaWdodCcgOiAnZGFyaycpO1xuICAgIHJvb3QuY2xhc3NMaXN0LmFkZChkYXJrTW9kZSA/ICdkYXJrJyA6ICdsaWdodCcpO1xuICB9LCBbXSk7XG5cbiAgLy8gQXBwbHkgdGhlbWUgbW9kZSB3aGVuZXZlciB0aGVtZSBjaGFuZ2VzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgYXBwbHlUaGVtZU1vZGUodGhlbWUpO1xuICB9LCBbdGhlbWUsIGFwcGx5VGhlbWVNb2RlXSk7XG5cbiAgLy8gTGlzdGVuIGZvciBzeXN0ZW0gdGhlbWUgY2hhbmdlcyB3aGVuIHRoZW1lIGlzICdzeXN0ZW0nXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRoZW1lICE9PSAnc3lzdGVtJykgcmV0dXJuO1xuXG4gICAgY29uc3QgbWVkaWFRdWVyeSA9IHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJyk7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgYXBwbHlUaGVtZU1vZGUoJ3N5c3RlbScpO1xuICAgIH07XG5cbiAgICBtZWRpYVF1ZXJ5LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGhhbmRsZUNoYW5nZSk7XG4gICAgcmV0dXJuICgpID0+IG1lZGlhUXVlcnkucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgaGFuZGxlQ2hhbmdlKTtcbiAgfSwgW3RoZW1lLCBhcHBseVRoZW1lTW9kZV0pO1xuXG4gIC8vIEFwcGx5IGR5bmFtaWMgY29sb3IgdGhlbWVcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGhlbWVSR0IpIHtcbiAgICAgIGFwcGx5VGhlbWUodGhlbWVSR0IpO1xuICAgIH1cbiAgfSwgW3RoZW1lUkdCXSk7XG5cbiAgLy8gUmVzZXQgdGhlbWUgZnVuY3Rpb25cbiAgY29uc3QgcmVzZXRUaGVtZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRUaGVtZSgnc3lzdGVtJyk7XG4gICAgc2V0VGhlbWVSR0IodW5kZWZpbmVkKTtcbiAgICBzZXRUaGVtZU5hbWUodW5kZWZpbmVkKTtcbiAgICAvLyBSZW1vdmUgYW55IGN1c3RvbSBDU1MgdmFyaWFibGVzXG4gICAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBjb25zdCBjdXN0b21Qcm9wcyA9IEFycmF5LmZyb20ocm9vdC5zdHlsZSkuZmlsdGVyKChwcm9wKSA9PiBwcm9wLnN0YXJ0c1dpdGgoJy0tJykpO1xuICAgIGN1c3RvbVByb3BzLmZvckVhY2goKHByb3ApID0+IHJvb3Quc3R5bGUucmVtb3ZlUHJvcGVydHkocHJvcCkpO1xuICB9LCBbc2V0VGhlbWUsIHNldFRoZW1lUkdCLCBzZXRUaGVtZU5hbWVdKTtcblxuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIHRoZW1lLFxuICAgICAgc2V0VGhlbWUsXG4gICAgICB0aGVtZVJHQixcbiAgICAgIHNldFRoZW1lUkdCLFxuICAgICAgdGhlbWVOYW1lLFxuICAgICAgc2V0VGhlbWVOYW1lLFxuICAgICAgcmVzZXRUaGVtZSxcbiAgICB9KSxcbiAgICBbdGhlbWUsIHNldFRoZW1lLCB0aGVtZVJHQiwgc2V0VGhlbWVSR0IsIHRoZW1lTmFtZSwgc2V0VGhlbWVOYW1lLCByZXNldFRoZW1lXSxcbiAgKTtcblxuICByZXR1cm4gPFRoZW1lQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dmFsdWV9PntjaGlsZHJlbn08L1RoZW1lQ29udGV4dC5Qcm92aWRlcj47XG59XG5cbi8qKlxuICogSG9vayB0byBhY2Nlc3MgdGhlIGN1cnJlbnQgdGhlbWUgY29udGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlVGhlbWUoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcigndXNlVGhlbWUgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIFRoZW1lUHJvdmlkZXInKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgVGhlbWVQcm92aWRlcjtcbiIsIi8vIFRoaXMgZmlsZSBpcyBrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGJ1dCBpcyBubyBsb25nZXIgdXNlZCBpbnRlcm5hbGx5LlxuLy8gVGhlbWUgc3RhdGUgaXMgbm93IG1hbmFnZWQgdmlhIFJlYWN0IHVzZVN0YXRlICsgbG9jYWxTdG9yYWdlIGluIFRoZW1lUHJvdmlkZXIuXG5cbmltcG9ydCB7IGF0b21XaXRoU3RvcmFnZSB9IGZyb20gJ2pvdGFpL3V0aWxzJztcbmltcG9ydCB7IElUaGVtZVJHQiB9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgVGhlbWVDb250ZXh0IGluc3RlYWQuIFRoaXMgYXRvbSBpcyBubyBsb25nZXIgdXNlZCBpbnRlcm5hbGx5LlxuICovXG5leHBvcnQgY29uc3QgdGhlbWVNb2RlQXRvbSA9IGF0b21XaXRoU3RvcmFnZTxzdHJpbmc+KCdjb2xvci10aGVtZScsICdzeXN0ZW0nLCB1bmRlZmluZWQsIHtcbiAgZ2V0T25Jbml0OiB0cnVlLFxufSk7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIFRoZW1lQ29udGV4dCBpbnN0ZWFkLiBUaGlzIGF0b20gaXMgbm8gbG9uZ2VyIHVzZWQgaW50ZXJuYWxseS5cbiAqL1xuZXhwb3J0IGNvbnN0IHRoZW1lQ29sb3JzQXRvbSA9IGF0b21XaXRoU3RvcmFnZTxJVGhlbWVSR0IgfCB1bmRlZmluZWQ+KFxuICAndGhlbWUtY29sb3JzJyxcbiAgdW5kZWZpbmVkLFxuICB1bmRlZmluZWQsXG4gIHtcbiAgICBnZXRPbkluaXQ6IHRydWUsXG4gIH0sXG4pO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBUaGVtZUNvbnRleHQgaW5zdGVhZC4gVGhpcyBhdG9tIGlzIG5vIGxvbmdlciB1c2VkIGludGVybmFsbHkuXG4gKi9cbmV4cG9ydCBjb25zdCB0aGVtZU5hbWVBdG9tID0gYXRvbVdpdGhTdG9yYWdlPHN0cmluZyB8IHVuZGVmaW5lZD4oXG4gICd0aGVtZS1uYW1lJyxcbiAgdW5kZWZpbmVkLFxuICB1bmRlZmluZWQsXG4gIHtcbiAgICBnZXRPbkluaXQ6IHRydWUsXG4gIH0sXG4pO1xuIiwiaW1wb3J0IHsgSVRoZW1lUkdCIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vKipcbiAqIERlZmF1bHQgbGlnaHQgdGhlbWVcbiAqIFJHQiB2YWx1ZXMgZXh0cmFjdGVkIGZyb20gdGhlIGV4aXN0aW5nIENTUyB2YXJpYWJsZXNcbiAqL1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRUaGVtZTogSVRoZW1lUkdCID0ge1xuICAvLyBUZXh0IGNvbG9yc1xuICAncmdiLXRleHQtcHJpbWFyeSc6ICczMyAzMyAzMycsIC8vICMyMTIxMjEgKGdyYXktODAwKVxuICAncmdiLXRleHQtc2Vjb25kYXJ5JzogJzY2IDY2IDY2JywgLy8gIzQyNDI0MiAoZ3JheS02MDApXG4gICdyZ2ItdGV4dC1zZWNvbmRhcnktYWx0JzogJzg5IDg5IDg5JywgLy8gIzU5NTk1OSAoZ3JheS01MDApXG4gICdyZ2ItdGV4dC10ZXJ0aWFyeSc6ICc4OSA4OSA4OScsIC8vICM1OTU5NTkgKGdyYXktNTAwKVxuICAncmdiLXRleHQtd2FybmluZyc6ICcyNDUgMTU4IDExJywgLy8gI2Y1OWUwYiAoYW1iZXItNTAwKVxuXG4gIC8vIFJpbmcgY29sb3JzXG4gICdyZ2ItcmluZy1wcmltYXJ5JzogJzg5IDg5IDg5JywgLy8gIzU5NTk1OSAoZ3JheS01MDApXG5cbiAgLy8gSGVhZGVyIGNvbG9yc1xuICAncmdiLWhlYWRlci1wcmltYXJ5JzogJzI1NSAyNTUgMjU1JywgLy8gI2ZmZiAod2hpdGUpXG4gICdyZ2ItaGVhZGVyLWhvdmVyJzogJzI0NyAyNDcgMjQ4JywgLy8gI2Y3ZjdmOCAoZ3JheS01MClcbiAgJ3JnYi1oZWFkZXItYnV0dG9uLWhvdmVyJzogJzI0NyAyNDcgMjQ4JywgLy8gI2Y3ZjdmOCAoZ3JheS01MClcblxuICAvLyBTdXJmYWNlIGNvbG9yc1xuICAncmdiLXN1cmZhY2UtYWN0aXZlJzogJzIzNiAyMzYgMjM2JywgLy8gI2VjZWNlYyAoZ3JheS0xMDApXG4gICdyZ2Itc3VyZmFjZS1hY3RpdmUtYWx0JzogJzIyNyAyMjcgMjI3JywgLy8gI2UzZTNlMyAoZ3JheS0yMDApXG4gICdyZ2Itc3VyZmFjZS1ob3Zlcic6ICcyMjcgMjI3IDIyNycsIC8vICNlM2UzZTMgKGdyYXktMjAwKVxuICAncmdiLXN1cmZhY2UtaG92ZXItYWx0JzogJzIwNSAyMDUgMjA1JywgLy8gI2NkY2RjZCAoZ3JheS0zMDApXG4gICdyZ2Itc3VyZmFjZS1wcmltYXJ5JzogJzI1NSAyNTUgMjU1JywgLy8gI2ZmZiAod2hpdGUpXG4gICdyZ2Itc3VyZmFjZS1wcmltYXJ5LWFsdCc6ICcyNDcgMjQ3IDI0OCcsIC8vICNmN2Y3ZjggKGdyYXktNTApXG4gICdyZ2Itc3VyZmFjZS1wcmltYXJ5LWNvbnRyYXN0JzogJzIzNiAyMzYgMjM2JywgLy8gI2VjZWNlYyAoZ3JheS0xMDApXG4gICdyZ2Itc3VyZmFjZS1zZWNvbmRhcnknOiAnMjQ3IDI0NyAyNDgnLCAvLyAjZjdmN2Y4IChncmF5LTUwKVxuICAncmdiLXN1cmZhY2Utc2Vjb25kYXJ5LWFsdCc6ICcyMjcgMjI3IDIyNycsIC8vICNlM2UzZTMgKGdyYXktMjAwKVxuICAncmdiLXN1cmZhY2UtdGVydGlhcnknOiAnMjM2IDIzNiAyMzYnLCAvLyAjZWNlY2VjIChncmF5LTEwMClcbiAgJ3JnYi1zdXJmYWNlLXRlcnRpYXJ5LWFsdCc6ICcyNTUgMjU1IDI1NScsIC8vICNmZmYgKHdoaXRlKVxuICAncmdiLXN1cmZhY2UtZGlhbG9nJzogJzI1NSAyNTUgMjU1JywgLy8gI2ZmZiAod2hpdGUpXG4gICdyZ2Itc3VyZmFjZS1zdWJtaXQnOiAnNCAxMjAgODcnLCAvLyAjMDQ3ODU3IChncmVlbi03MDApXG4gICdyZ2Itc3VyZmFjZS1zdWJtaXQtaG92ZXInOiAnNiA5NSA3MCcsIC8vICMwNjVmNDYgKGdyZWVuLTgwMClcbiAgJ3JnYi1zdXJmYWNlLWRlc3RydWN0aXZlJzogJzE4NSAyOCAyOCcsIC8vICNiOTFjMWMgKHJlZC03MDApXG4gICdyZ2Itc3VyZmFjZS1kZXN0cnVjdGl2ZS1ob3Zlcic6ICcxNTMgMjcgMjcnLCAvLyAjOTkxYjFiIChyZWQtODAwKVxuICAncmdiLXN1cmZhY2UtY2hhdCc6ICcyNTUgMjU1IDI1NScsIC8vICNmZmYgKHdoaXRlKVxuXG4gIC8vIEJvcmRlciBjb2xvcnNcbiAgJ3JnYi1ib3JkZXItbGlnaHQnOiAnMjI3IDIyNyAyMjcnLCAvLyAjZTNlM2UzIChncmF5LTIwMClcbiAgJ3JnYi1ib3JkZXItbWVkaXVtJzogJzIwNSAyMDUgMjA1JywgLy8gI2NkY2RjZCAoZ3JheS0zMDApXG4gICdyZ2ItYm9yZGVyLW1lZGl1bS1hbHQnOiAnMjA1IDIwNSAyMDUnLCAvLyAjY2RjZGNkIChncmF5LTMwMClcbiAgJ3JnYi1ib3JkZXItaGVhdnknOiAnMTUzIDE1MCAxNTAnLCAvLyAjOTk5Njk2IChncmF5LTQwMClcbiAgJ3JnYi1ib3JkZXIteGhlYXZ5JzogJzg5IDg5IDg5JywgLy8gIzU5NTk1OSAoZ3JheS01MDApXG5cbiAgLy8gQnJhbmQgY29sb3JzXG4gICdyZ2ItYnJhbmQtcHVycGxlJzogJzE3MSAxMDQgMjU1JywgLy8gI2FiNjhmZlxuXG4gIC8vIFByZXNlbnRhdGlvblxuICAncmdiLXByZXNlbnRhdGlvbic6ICcyNTUgMjU1IDI1NScsIC8vICNmZmYgKHdoaXRlKVxuXG4gIC8vIFV0aWxpdHkgY29sb3JzIChtYXBwZWQgdG8gZXhpc3RpbmcgY29sb3JzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSlcbiAgJ3JnYi1iYWNrZ3JvdW5kJzogJzI1NSAyNTUgMjU1JywgLy8gU2FtZSBhcyBzdXJmYWNlLXByaW1hcnlcbiAgJ3JnYi1mb3JlZ3JvdW5kJzogJzE3IDE3IDE3JywgLy8gU2FtZSBhcyB0ZXh0LXByaW1hcnlcbiAgJ3JnYi1wcmltYXJ5JzogJzIzNSAyMzUgMjM1JywgLy8gU2FtZSBhcyBzdXJmYWNlLWFjdGl2ZVxuICAncmdiLXByaW1hcnktZm9yZWdyb3VuZCc6ICcwIDAgMCcsIC8vIFNhbWUgYXMgc3VyZmFjZS1wcmltYXJ5LWNvbnRyYXN0XG4gICdyZ2Itc2Vjb25kYXJ5JzogJzI0NyAyNDcgMjQ4JywgLy8gU2FtZSBhcyBzdXJmYWNlLXNlY29uZGFyeVxuICAncmdiLXNlY29uZGFyeS1mb3JlZ3JvdW5kJzogJzY2IDY2IDY2JywgLy8gU2FtZSBhcyB0ZXh0LXNlY29uZGFyeVxuICAncmdiLW11dGVkJzogJzI1MCAyNTAgMjUwJywgLy8gU2FtZSBhcyBzdXJmYWNlLXRlcnRpYXJ5XG4gICdyZ2ItbXV0ZWQtZm9yZWdyb3VuZCc6ICcxMjAgMTIwIDEyMCcsIC8vIFNhbWUgYXMgdGV4dC10ZXJ0aWFyeVxuICAncmdiLWFjY2VudCc6ICcyNDUgMjQ1IDI0NScsIC8vIFNhbWUgYXMgc3VyZmFjZS1hY3RpdmUtYWx0XG4gICdyZ2ItYWNjZW50LWZvcmVncm91bmQnOiAnMTcgMTcgMTcnLCAvLyBTYW1lIGFzIHRleHQtcHJpbWFyeVxuICAncmdiLWRlc3RydWN0aXZlLWZvcmVncm91bmQnOiAnMTcgMTcgMTcnLCAvLyBTYW1lIGFzIHRleHQtcHJpbWFyeVxuICAncmdiLWJvcmRlcic6ICcyMTUgMjE1IDIxNScsIC8vIFNhbWUgYXMgYm9yZGVyLW1lZGl1bVxuICAncmdiLWlucHV0JzogJzIzMCAyMzAgMjMwJywgLy8gU2FtZSBhcyBib3JkZXItbGlnaHRcbiAgJ3JnYi1yaW5nJzogJzE4MCAxODAgMTgwJywgLy8gU2FtZSBhcyByaW5nLXByaW1hcnlcbiAgJ3JnYi1jYXJkJzogJzI0NyAyNDcgMjQ4JywgLy8gU2FtZSBhcyBzdXJmYWNlLXNlY29uZGFyeVxuICAncmdiLWNhcmQtZm9yZWdyb3VuZCc6ICcxNyAxNyAxNycsIC8vIFNhbWUgYXMgdGV4dC1wcmltYXJ5XG59O1xuIiwiaW1wb3J0IHsgSVRoZW1lUkdCIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vKipcbiAqIERhcmsgdGhlbWVcbiAqIFJHQiB2YWx1ZXMgZXh0cmFjdGVkIGZyb20gdGhlIGV4aXN0aW5nIGRhcmsgbW9kZSBDU1MgdmFyaWFibGVzXG4gKi9cbmV4cG9ydCBjb25zdCBkYXJrVGhlbWU6IElUaGVtZVJHQiA9IHtcbiAgLy8gVGV4dCBjb2xvcnNcbiAgJ3JnYi10ZXh0LXByaW1hcnknOiAnMjM2IDIzNiAyMzYnLCAvLyAjZWNlY2VjIChncmF5LTEwMClcbiAgJ3JnYi10ZXh0LXNlY29uZGFyeSc6ICcyMDUgMjA1IDIwNScsIC8vICNjZGNkY2QgKGdyYXktMzAwKVxuICAncmdiLXRleHQtc2Vjb25kYXJ5LWFsdCc6ICcxNTMgMTUwIDE1MCcsIC8vICM5OTk2OTYgKGdyYXktNDAwKVxuICAncmdiLXRleHQtdGVydGlhcnknOiAnODkgODkgODknLCAvLyAjNTk1OTU5IChncmF5LTUwMClcbiAgJ3JnYi10ZXh0LXdhcm5pbmcnOiAnMjQ1IDE1OCAxMScsIC8vICNmNTllMGIgKGFtYmVyLTUwMClcblxuICAvLyBSaW5nIGNvbG9ycyAobm90IGRlZmluZWQgaW4gZGFyayBtb2RlLCB1c2luZyBkZWZhdWx0KVxuICAncmdiLXJpbmctcHJpbWFyeSc6ICc4OSA4OSA4OScsIC8vICM1OTU5NTkgKGdyYXktNTAwKVxuXG4gIC8vIEhlYWRlciBjb2xvcnNcbiAgJ3JnYi1oZWFkZXItcHJpbWFyeSc6ICc0NyA0NyA0NycsIC8vICMyZjJmMmYgKGdyYXktNzAwKVxuICAncmdiLWhlYWRlci1ob3Zlcic6ICc2NiA2NiA2NicsIC8vICM0MjQyNDIgKGdyYXktNjAwKVxuICAncmdiLWhlYWRlci1idXR0b24taG92ZXInOiAnNDcgNDcgNDcnLCAvLyAjMmYyZjJmIChncmF5LTcwMClcblxuICAvLyBTdXJmYWNlIGNvbG9yc1xuICAncmdiLXN1cmZhY2UtYWN0aXZlJzogJzg5IDg5IDg5JywgLy8gIzU5NTk1OSAoZ3JheS01MDApXG4gICdyZ2Itc3VyZmFjZS1hY3RpdmUtYWx0JzogJzQ3IDQ3IDQ3JywgLy8gIzJmMmYyZiAoZ3JheS03MDApXG4gICdyZ2Itc3VyZmFjZS1ob3Zlcic6ICc2NiA2NiA2NicsIC8vICM0MjQyNDIgKGdyYXktNjAwKVxuICAncmdiLXN1cmZhY2UtaG92ZXItYWx0JzogJzY2IDY2IDY2JywgLy8gIzQyNDI0MiAoZ3JheS02MDApXG4gICdyZ2Itc3VyZmFjZS1wcmltYXJ5JzogJzEzIDEzIDEzJywgLy8gIzBkMGQwZCAoZ3JheS05MDApXG4gICdyZ2Itc3VyZmFjZS1wcmltYXJ5LWFsdCc6ICcyMyAyMyAyMycsIC8vICMxNzE3MTcgKGdyYXktODUwKVxuICAncmdiLXN1cmZhY2UtcHJpbWFyeS1jb250cmFzdCc6ICcyMyAyMyAyMycsIC8vICMxNzE3MTcgKGdyYXktODUwKVxuICAncmdiLXN1cmZhY2Utc2Vjb25kYXJ5JzogJzMzIDMzIDMzJywgLy8gIzIxMjEyMSAoZ3JheS04MDApXG4gICdyZ2Itc3VyZmFjZS1zZWNvbmRhcnktYWx0JzogJzMzIDMzIDMzJywgLy8gIzIxMjEyMSAoZ3JheS04MDApXG4gICdyZ2Itc3VyZmFjZS10ZXJ0aWFyeSc6ICc0NyA0NyA0NycsIC8vICMyZjJmMmYgKGdyYXktNzAwKVxuICAncmdiLXN1cmZhY2UtdGVydGlhcnktYWx0JzogJzQ3IDQ3IDQ3JywgLy8gIzJmMmYyZiAoZ3JheS03MDApXG4gICdyZ2Itc3VyZmFjZS1kaWFsb2cnOiAnMjMgMjMgMjMnLCAvLyAjMTcxNzE3IChncmF5LTg1MClcbiAgJ3JnYi1zdXJmYWNlLXN1Ym1pdCc6ICc0IDEyMCA4NycsIC8vICMwNDc4NTcgKGdyZWVuLTcwMClcbiAgJ3JnYi1zdXJmYWNlLXN1Ym1pdC1ob3Zlcic6ICc2IDk1IDcwJywgLy8gIzA2NWY0NiAoZ3JlZW4tODAwKVxuICAncmdiLXN1cmZhY2UtZGVzdHJ1Y3RpdmUnOiAnMTUzIDI3IDI3JywgLy8gIzk5MWIxYiAocmVkLTgwMClcbiAgJ3JnYi1zdXJmYWNlLWRlc3RydWN0aXZlLWhvdmVyJzogJzEyNyAyOSAyOScsIC8vICM3ZjFkMWQgKHJlZC05MDApXG4gICdyZ2Itc3VyZmFjZS1jaGF0JzogJzQ3IDQ3IDQ3JywgLy8gIzJmMmYyZiAoZ3JheS03MDApXG5cbiAgLy8gQm9yZGVyIGNvbG9yc1xuICAncmdiLWJvcmRlci1saWdodCc6ICc0NyA0NyA0NycsIC8vICMyZjJmMmYgKGdyYXktNzAwKVxuICAncmdiLWJvcmRlci1tZWRpdW0nOiAnNjYgNjYgNjYnLCAvLyAjNDI0MjQyIChncmF5LTYwMClcbiAgJ3JnYi1ib3JkZXItbWVkaXVtLWFsdCc6ICc2NiA2NiA2NicsIC8vICM0MjQyNDIgKGdyYXktNjAwKVxuICAncmdiLWJvcmRlci1oZWF2eSc6ICc4OSA4OSA4OScsIC8vICM1OTU5NTkgKGdyYXktNTAwKVxuICAncmdiLWJvcmRlci14aGVhdnknOiAnMTUzIDE1MCAxNTAnLCAvLyAjOTk5Njk2IChncmF5LTQwMClcblxuICAvLyBCcmFuZCBjb2xvcnNcbiAgJ3JnYi1icmFuZC1wdXJwbGUnOiAnMTcxIDEwNCAyNTUnLCAvLyAjYWI2OGZmXG5cbiAgLy8gUHJlc2VudGF0aW9uXG4gICdyZ2ItcHJlc2VudGF0aW9uJzogJzMzIDMzIDMzJywgLy8gIzIxMjEyMSAoZ3JheS04MDApXG5cbiAgLy8gVXRpbGl0eSBjb2xvcnMgKG1hcHBlZCB0byBleGlzdGluZyBjb2xvcnMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5KVxuICAncmdiLWJhY2tncm91bmQnOiAnMzMgMzMgMzMnLCAvLyBTYW1lIGFzIHN1cmZhY2UtcHJpbWFyeVxuICAncmdiLWZvcmVncm91bmQnOiAnMjU1IDI1NSAyNTUnLCAvLyBTYW1lIGFzIHRleHQtcHJpbWFyeVxuICAncmdiLXByaW1hcnknOiAnNjYgNjYgNjYnLCAvLyBTYW1lIGFzIHN1cmZhY2UtYWN0aXZlXG4gICdyZ2ItcHJpbWFyeS1mb3JlZ3JvdW5kJzogJzI1NSAyNTUgMjU1JywgLy8gU2FtZSBhcyBzdXJmYWNlLXByaW1hcnktY29udHJhc3RcbiAgJ3JnYi1zZWNvbmRhcnknOiAnNDIgNDIgNDInLCAvLyBTYW1lIGFzIHN1cmZhY2Utc2Vjb25kYXJ5XG4gICdyZ2Itc2Vjb25kYXJ5LWZvcmVncm91bmQnOiAnMTkzIDE5MyAxOTMnLCAvLyBTYW1lIGFzIHRleHQtc2Vjb25kYXJ5XG4gICdyZ2ItbXV0ZWQnOiAnNTYgNTYgNTYnLCAvLyBTYW1lIGFzIHN1cmZhY2UtdGVydGlhcnlcbiAgJ3JnYi1tdXRlZC1mb3JlZ3JvdW5kJzogJzE0MCAxNDAgMTQwJywgLy8gU2FtZSBhcyB0ZXh0LXRlcnRpYXJ5XG4gICdyZ2ItYWNjZW50JzogJzgyIDgyIDgyJywgLy8gU2FtZSBhcyBzdXJmYWNlLWFjdGl2ZS1hbHRcbiAgJ3JnYi1hY2NlbnQtZm9yZWdyb3VuZCc6ICcyNTUgMjU1IDI1NScsIC8vIFNhbWUgYXMgdGV4dC1wcmltYXJ5XG4gICdyZ2ItZGVzdHJ1Y3RpdmUtZm9yZWdyb3VuZCc6ICcyNTUgMjU1IDI1NScsIC8vIFNhbWUgYXMgdGV4dC1wcmltYXJ5XG4gICdyZ2ItYm9yZGVyJzogJzgyIDgyIDgyJywgLy8gU2FtZSBhcyBib3JkZXItbWVkaXVtXG4gICdyZ2ItaW5wdXQnOiAnNjYgNjYgNjYnLCAvLyBTYW1lIGFzIGJvcmRlci1saWdodFxuICAncmdiLXJpbmcnOiAnMjU1IDI1NSAyNTUnLCAvLyBTYW1lIGFzIHJpbmctcHJpbWFyeVxuICAncmdiLWNhcmQnOiAnNDIgNDIgNDInLCAvLyBTYW1lIGFzIHN1cmZhY2Utc2Vjb25kYXJ5XG4gICdyZ2ItY2FyZC1mb3JlZ3JvdW5kJzogJzI1NSAyNTUgMjU1JywgLy8gU2FtZSBhcyB0ZXh0LXByaW1hcnlcbn07XG4iLCJpbXBvcnQgeyB1c2VDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFN1biwgTW9vbiwgTW9uaXRvciB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyBUaGVtZUNvbnRleHQsIGlzRGFyayB9IGZyb20gJy4uL3RoZW1lJztcbmltcG9ydCB7IHVzZUxvY2FsaXplIH0gZnJvbSAnLi4vaG9va3MnO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIGxhc3RUaGVtZUNoYW5nZT86IG51bWJlcjtcbiAgfVxufVxuXG50eXBlIFRoZW1lVHlwZSA9ICdzeXN0ZW0nIHwgJ2RhcmsnIHwgJ2xpZ2h0JztcblxuY29uc3QgVGhlbWUgPSAoeyB0aGVtZSwgb25DaGFuZ2UgfTogeyB0aGVtZTogc3RyaW5nOyBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgfSkgPT4ge1xuICBjb25zdCBsb2NhbGl6ZSA9IHVzZUxvY2FsaXplKCk7XG5cbiAgY29uc3QgdGhlbWVJY29uczogUmVjb3JkPFRoZW1lVHlwZSwgSlNYLkVsZW1lbnQ+ID0ge1xuICAgIHN5c3RlbTogPE1vbml0b3IgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz4sXG4gICAgZGFyazogPE1vb24gYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz4sXG4gICAgbGlnaHQ6IDxTdW4gYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz4sXG4gIH07XG5cbiAgY29uc3QgbmV4dFRoZW1lID0gaXNEYXJrKHRoZW1lKSA/ICdsaWdodCcgOiAnZGFyayc7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVLZXlQcmVzcyA9IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICBpZiAoZS5jdHJsS2V5ICYmIGUuc2hpZnRLZXkgJiYgZS5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3QnKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgb25DaGFuZ2UobmV4dFRoZW1lKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlS2V5UHJlc3MpO1xuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleVByZXNzKTtcbiAgfSwgW25leHRUaGVtZSwgb25DaGFuZ2VdKTtcblxuICByZXR1cm4gKFxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQtbGcgcC0yIHRleHQtdGV4dC1wcmltYXJ5IHRyYW5zaXRpb24tY29sb3JzIGhvdmVyOmJnLXN1cmZhY2UtaG92ZXIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWJsdWUtNjAwIGZvY3VzLXZpc2libGU6cmluZy1vZmZzZXQtMiBkYXJrOmZvY3VzLXZpc2libGU6cmluZy0wXCJcbiAgICAgIGFyaWEtbGFiZWw9e2xvY2FsaXplKCdjb21fdWlfdG9nZ2xlX3RoZW1lJyl9XG4gICAgICBhcmlhLWtleXNob3J0Y3V0cz1cIkN0cmwrU2hpZnQrVFwiXG4gICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG9uQ2hhbmdlKG5leHRUaGVtZSk7XG4gICAgICB9fVxuICAgICAgb25LZXlEb3duPXsoZSkgPT4ge1xuICAgICAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicgfHwgZS5rZXkgPT09ICcgJykge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBvbkNoYW5nZShuZXh0VGhlbWUpO1xuICAgICAgICB9XG4gICAgICB9fVxuICAgID5cbiAgICAgIHt0aGVtZUljb25zW3RoZW1lIGFzIFRoZW1lVHlwZV19XG4gICAgPC9idXR0b24+XG4gICk7XG59O1xuXG5jb25zdCBUaGVtZVNlbGVjdG9yID0gKHsgcmV0dXJuVGhlbWVPbmx5IH06IHsgcmV0dXJuVGhlbWVPbmx5PzogYm9vbGVhbiB9KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWUsIHNldFRoZW1lIH0gPSB1c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XG4gIGNvbnN0IFthbm5vdW5jZW1lbnQsIHNldEFubm91bmNlbWVudF0gPSB1c2VTdGF0ZSgnJyk7XG4gIGNvbnN0IGxvY2FsaXplID0gdXNlTG9jYWxpemUoKTtcblxuICBjb25zdCBjaGFuZ2VUaGVtZSA9IHVzZUNhbGxiYWNrKFxuICAgICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgaWYgKHR5cGVvZiB3aW5kb3cubGFzdFRoZW1lQ2hhbmdlID09PSAnbnVtYmVyJyAmJiBub3cgLSB3aW5kb3cubGFzdFRoZW1lQ2hhbmdlIDwgNTAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHdpbmRvdy5sYXN0VGhlbWVDaGFuZ2UgPSBub3c7XG5cbiAgICAgIHNldFRoZW1lKHZhbHVlKTtcbiAgICAgIHNldEFubm91bmNlbWVudChcbiAgICAgICAgaXNEYXJrKHZhbHVlKVxuICAgICAgICAgID8gbG9jYWxpemUoJ2NvbV91aV9kYXJrX3RoZW1lX2VuYWJsZWQnKVxuICAgICAgICAgIDogbG9jYWxpemUoJ2NvbV91aV9saWdodF90aGVtZV9lbmFibGVkJyksXG4gICAgICApO1xuICAgIH0sXG4gICAgW3NldFRoZW1lLCBsb2NhbGl6ZV0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYW5ub3VuY2VtZW50KSB7XG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiBzZXRBbm5vdW5jZW1lbnQoJycpLCAxMDAwKTtcbiAgICAgIHJldHVybiAoKSA9PiBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgfVxuICB9LCBbYW5ub3VuY2VtZW50XSk7XG5cbiAgaWYgKHJldHVyblRoZW1lT25seSA9PT0gdHJ1ZSkge1xuICAgIHJldHVybiA8VGhlbWUgdGhlbWU9e3RoZW1lfSBvbkNoYW5nZT17Y2hhbmdlVGhlbWV9IC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJnLXdoaXRlIHB0LTYgZGFyazpiZy1ncmF5LTkwMCBzbTpwdC0wXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCBtLTRcIj5cbiAgICAgICAgPFRoZW1lIHRoZW1lPXt0aGVtZX0gb25DaGFuZ2U9e2NoYW5nZVRoZW1lfSAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IHJvbGU9XCJhbGVydFwiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiIGFyaWEtYXRvbWljPVwidHJ1ZVwiIGNsYXNzTmFtZT1cInNyLW9ubHlcIj5cbiAgICAgICAge2Fubm91bmNlbWVudH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGhlbWVTZWxlY3RvcjtcbiIsImltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQ2lyY2xlSGVscEljb24gfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHsgSG92ZXJDYXJkLCBIb3ZlckNhcmRUcmlnZ2VyLCBIb3ZlckNhcmRQb3J0YWwsIEhvdmVyQ2FyZENvbnRlbnQgfSBmcm9tICcuL0hvdmVyQ2FyZCc7XG5pbXBvcnQgeyBFU2lkZSB9IGZyb20gJ34vY29tbW9uJztcblxudHlwZSBJbmZvSG92ZXJDYXJkUHJvcHMgPSB7XG4gIHNpZGU/OiBFU2lkZTtcbiAgdGV4dDogc3RyaW5nO1xufTtcblxuY29uc3QgSW5mb0hvdmVyQ2FyZCA9ICh7IHNpZGUsIHRleHQgfTogSW5mb0hvdmVyQ2FyZFByb3BzKSA9PiB7XG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgcmV0dXJuIChcbiAgICA8SG92ZXJDYXJkIG9wZW5EZWxheT17NTB9IG9wZW49e2lzT3Blbn0gb25PcGVuQ2hhbmdlPXtzZXRJc09wZW59PlxuICAgICAgPEhvdmVyQ2FyZFRyaWdnZXJcbiAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgIGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGN1cnNvci1oZWxwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLXNtIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1yaW5nLXByaW1hcnkgZm9jdXMtdmlzaWJsZTpyaW5nLW9mZnNldC0yXCJcbiAgICAgICAgb25Gb2N1cz17KCkgPT4gc2V0SXNPcGVuKHRydWUpfVxuICAgICAgICBvbkJsdXI9eygpID0+IHNldElzT3BlbihmYWxzZSl9XG4gICAgICAgIGFyaWEtbGFiZWw9e3RleHR9XG4gICAgICA+XG4gICAgICAgIDxDaXJjbGVIZWxwSWNvbiBjbGFzc05hbWU9XCJoLTUgdy01IHRleHQtdGV4dC10ZXJ0aWFyeVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICA8L0hvdmVyQ2FyZFRyaWdnZXI+XG4gICAgICA8SG92ZXJDYXJkUG9ydGFsPlxuICAgICAgICA8SG92ZXJDYXJkQ29udGVudCBzaWRlPXtzaWRlfSBjbGFzc05hbWU9XCJ6LVs5OTldIHctODBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC1oLVs4MHZoXSBzcGFjZS15LTIgb3ZlcmZsb3cteS1hdXRvXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtdGV4dC1zZWNvbmRhcnlcIj57dGV4dH08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvSG92ZXJDYXJkQ29udGVudD5cbiAgICAgIDwvSG92ZXJDYXJkUG9ydGFsPlxuICAgIDwvSG92ZXJDYXJkPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgSW5mb0hvdmVyQ2FyZDtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IENoZWNrYm94LCB1c2VTdG9yZVN0YXRlLCB1c2VDaGVja2JveFN0b3JlIH0gZnJvbSAnQGFyaWFraXQvcmVhY3QnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuY29uc3QgQ2hlY2tib3hCdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MSW5wdXRFbGVtZW50LFxuICB7XG4gICAgaWNvbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIGNsYXNzTmFtZT86IHN0cmluZztcbiAgICBjaGVja2VkPzogYm9vbGVhbjtcbiAgICBkZWZhdWx0Q2hlY2tlZD86IGJvb2xlYW47XG4gICAgaXNDaGVja2VkQ2xhc3NOYW1lPzogc3RyaW5nO1xuICAgIHNldFZhbHVlPzogKHZhbHVlczoge1xuICAgICAgZT86IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+O1xuICAgICAgdmFsdWU6IGJvb2xlYW4gfCBzdHJpbmc7XG4gICAgfSkgPT4gdm9pZDtcbiAgfVxuPigoeyBpY29uLCBsYWJlbCwgc2V0VmFsdWUsIGNsYXNzTmFtZSwgY2hlY2tlZCwgZGVmYXVsdENoZWNrZWQsIGlzQ2hlY2tlZENsYXNzTmFtZSB9LCByZWYpID0+IHtcbiAgY29uc3QgY2hlY2tib3ggPSB1c2VDaGVja2JveFN0b3JlKCk7XG4gIGNvbnN0IGlzQ2hlY2tlZCA9IHVzZVN0b3JlU3RhdGUoY2hlY2tib3gsIChzdGF0ZSkgPT4gc3RhdGU/LnZhbHVlKTtcbiAgY29uc3Qgb25DaGFuZ2UgPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICh0eXBlb2YgaXNDaGVja2VkICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2V0VmFsdWU/Lih7IGUsIHZhbHVlOiAhaXNDaGVja2VkIH0pO1xuICB9O1xuXG4gIC8vIFN5bmMgd2l0aCBjb250cm9sbGVkIGNoZWNrZWQgcHJvcFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjaGVja2VkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNoZWNrYm94LnNldFZhbHVlKGNoZWNrZWQpO1xuICAgIH1cbiAgfSwgW2NoZWNrZWQsIGNoZWNrYm94XSk7XG5cbiAgLy8gU2V0IGluaXRpYWwgdmFsdWUgZnJvbSBkZWZhdWx0Q2hlY2tlZFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkZWZhdWx0Q2hlY2tlZCAhPT0gdW5kZWZpbmVkICYmIGNoZWNrZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY2hlY2tib3guc2V0VmFsdWUoZGVmYXVsdENoZWNrZWQpO1xuICAgIH1cbiAgfSwgW2RlZmF1bHRDaGVja2VkLCBjaGVja2VkLCBjaGVja2JveF0pO1xuXG4gIHJldHVybiAoXG4gICAgPENoZWNrYm94XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHN0b3JlPXtjaGVja2JveH1cbiAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIC8vIEJhc2Ugc3R5bGluZyBmcm9tIE11bHRpU2VsZWN0J3Mgc2VsZWN0Q2xhc3NOYW1lXG4gICAgICAgICdncm91cCByZWxhdGl2ZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTEuNScsXG4gICAgICAgICdyb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1ib3JkZXItbWVkaXVtIHRleHQtc20gZm9udC1tZWRpdW0nLFxuICAgICAgICAnc2l6ZS05IHAtMiB0cmFuc2l0aW9uLWFsbCBtZDp3LWZ1bGwgbWQ6cC0zJyxcbiAgICAgICAgJ2JnLXRyYW5zcGFyZW50IHNoYWRvdy1zbSBob3ZlcjpiZy1zdXJmYWNlLWhvdmVyIGhvdmVyOnNoYWRvdy1tZCBhY3RpdmU6c2hhZG93LWlubmVyJyxcblxuICAgICAgICAvLyBDaGVja2VkIHN0YXRlIHN0eWxpbmdcbiAgICAgICAgaXNDaGVja2VkICYmIGlzQ2hlY2tlZENsYXNzTmFtZSAmJiBpc0NoZWNrZWRDbGFzc05hbWUsXG5cbiAgICAgICAgLy8gQWRkaXRpb25hbCBjdXN0b20gY2xhc3Nlc1xuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgcmVuZGVyPXs8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBhcmlhLWxhYmVsPXtsYWJlbH0gLz59XG4gICAgPlxuICAgICAgey8qIEljb24gaWYgcHJvdmlkZWQgKi99XG4gICAgICB7aWNvbiAmJiA8c3BhbiBjbGFzc05hbWU9XCJpY29uLW1kIHRleHQtdGV4dC1wcmltYXJ5XCI+e2ljb24gYXMgUmVhY3QuSlNYLkVsZW1lbnR9PC9zcGFuPn1cblxuICAgICAgey8qIFNob3cgdGhlIGxhYmVsIG9uIGxhcmdlciBzY3JlZW5zICovfVxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiaGlkZGVuIHRydW5jYXRlIG1kOmJsb2NrXCI+e2xhYmVsfTwvc3Bhbj5cbiAgICA8L0NoZWNrYm94PlxuICApO1xufSk7XG5cbkNoZWNrYm94QnV0dG9uLmRpc3BsYXlOYW1lID0gJ0NoZWNrYm94QnV0dG9uJztcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hCdXR0b247XG4iLCJpbXBvcnQgeyBmb3J3YXJkUmVmLCBSZWFjdE5vZGUsIFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7XG4gIERpYWxvZ0Nsb3NlLFxuICBEaWFsb2dDb250ZW50LFxuICBEaWFsb2dEZXNjcmlwdGlvbixcbiAgRGlhbG9nRm9vdGVyLFxuICBEaWFsb2dIZWFkZXIsXG4gIERpYWxvZ1RpdGxlLFxufSBmcm9tICcuL0RpYWxvZyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMvJztcblxudHlwZSBTZWxlY3Rpb25Qcm9wcyA9IHtcbiAgc2VsZWN0SGFuZGxlcj86ICgpID0+IHZvaWQ7XG4gIHNlbGVjdENsYXNzZXM/OiBzdHJpbmc7XG4gIHNlbGVjdFRleHQ/OiBzdHJpbmc7XG59O1xuXG50eXBlIERpYWxvZ1RlbXBsYXRlUHJvcHMgPSB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBtYWluPzogUmVhY3ROb2RlO1xuICBidXR0b25zPzogUmVhY3ROb2RlO1xuICBsZWZ0QnV0dG9ucz86IFJlYWN0Tm9kZTtcbiAgc2VsZWN0aW9uPzogU2VsZWN0aW9uUHJvcHM7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaGVhZGVyQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBmb290ZXJDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNob3dDbG9zZUJ1dHRvbj86IGJvb2xlYW47XG4gIHNob3dDYW5jZWxCdXR0b24/OiBib29sZWFuO1xufTtcblxuY29uc3QgRGlhbG9nVGVtcGxhdGUgPSBmb3J3YXJkUmVmKChwcm9wczogRGlhbG9nVGVtcGxhdGVQcm9wcywgcmVmOiBSZWY8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gIGNvbnN0IHtcbiAgICB0aXRsZSxcbiAgICBkZXNjcmlwdGlvbixcbiAgICBtYWluLFxuICAgIGJ1dHRvbnMsXG4gICAgbGVmdEJ1dHRvbnMsXG4gICAgc2VsZWN0aW9uLFxuICAgIGNsYXNzTmFtZSxcbiAgICBoZWFkZXJDbGFzc05hbWUsXG4gICAgZm9vdGVyQ2xhc3NOYW1lLFxuICAgIHNob3dDbG9zZUJ1dHRvbixcbiAgICBzaG93Q2FuY2VsQnV0dG9uID0gdHJ1ZSxcbiAgfSA9IHByb3BzO1xuICBjb25zdCB7IHNlbGVjdEhhbmRsZXIsIHNlbGVjdENsYXNzZXMsIHNlbGVjdFRleHQgfSA9IHNlbGVjdGlvbiB8fCB7fTtcbiAgY29uc3QgQ2FuY2VsID0gJ2NhbmNlbCc7XG5cbiAgY29uc3QgZGVmYXVsdFNlbGVjdCA9XG4gICAgJ2JnLWdyYXktODAwIHRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMgaG92ZXI6YmctZ3JheS03MDAgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTAgZGFyazpiZy1ncmF5LTIwMCBkYXJrOnRleHQtZ3JheS04MDAgZGFyazpob3ZlcjpiZy1ncmF5LTIwMCc7XG4gIHJldHVybiAoXG4gICAgPERpYWxvZ0NvbnRlbnRcbiAgICAgIHNob3dDbG9zZUJ1dHRvbj17c2hvd0Nsb3NlQnV0dG9ufVxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKCdzaGFkb3ctMnhsIGRhcms6YmctZ3JheS03MDAnLCBjbGFzc05hbWUgfHwgJycpfVxuICAgICAgb25DbGljaz17KGUpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgPlxuICAgICAgPERpYWxvZ0hlYWRlciBjbGFzc05hbWU9e2NuKGhlYWRlckNsYXNzTmFtZSA/PyAnJyl9PlxuICAgICAgICA8RGlhbG9nVGl0bGUgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LW1lZGl1bSBsZWFkaW5nLTYgdGV4dC1ncmF5LTgwMCBkYXJrOnRleHQtZ3JheS0yMDBcIj5cbiAgICAgICAgICB7dGl0bGV9XG4gICAgICAgIDwvRGlhbG9nVGl0bGU+XG4gICAgICAgIHtkZXNjcmlwdGlvbiAmJiAoXG4gICAgICAgICAgPERpYWxvZ0Rlc2NyaXB0aW9uIGNsYXNzTmFtZT1cInRleHQtZ3JheS02MDAgZGFyazp0ZXh0LWdyYXktMzAwXCI+XG4gICAgICAgICAgICB7ZGVzY3JpcHRpb259XG4gICAgICAgICAgPC9EaWFsb2dEZXNjcmlwdGlvbj5cbiAgICAgICAgKX1cbiAgICAgIDwvRGlhbG9nSGVhZGVyPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJweC02XCI+e21haW4gPyBtYWluIDogbnVsbH08L2Rpdj5cbiAgICAgIDxEaWFsb2dGb290ZXIgY2xhc3NOYW1lPXtmb290ZXJDbGFzc05hbWV9PlxuICAgICAgICA8ZGl2PntsZWZ0QnV0dG9ucyA/IGxlZnRCdXR0b25zIDogbnVsbH08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGgtYXV0byBnYXAtM1wiPlxuICAgICAgICAgIHtzaG93Q2FuY2VsQnV0dG9uICYmIChcbiAgICAgICAgICAgIDxEaWFsb2dDbG9zZSBjbGFzc05hbWU9XCJib3JkZXItZ3JheS0xMDAgaG92ZXI6YmctZ3JheS0xMDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpob3ZlcjpiZy1ncmF5LTYwMFwiPlxuICAgICAgICAgICAgICB7Q2FuY2VsfVxuICAgICAgICAgICAgPC9EaWFsb2dDbG9zZT5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtidXR0b25zID8gYnV0dG9ucyA6IG51bGx9XG4gICAgICAgICAge3NlbGVjdGlvbiA/IChcbiAgICAgICAgICAgIDxEaWFsb2dDbG9zZVxuICAgICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RIYW5kbGVyfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake1xuICAgICAgICAgICAgICAgIHNlbGVjdENsYXNzZXMgfHwgZGVmYXVsdFNlbGVjdFxuICAgICAgICAgICAgICB9IGlubGluZS1mbGV4IGgtMTAgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbGcgYm9yZGVyLW5vbmUgcHgtNCBweS0yIHRleHQtc21gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7c2VsZWN0VGV4dH1cbiAgICAgICAgICAgIDwvRGlhbG9nQ2xvc2U+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9EaWFsb2dGb290ZXI+XG4gICAgPC9EaWFsb2dDb250ZW50PlxuICApO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IERpYWxvZ1RlbXBsYXRlO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7XG4gIExhYmVsLFxuICBMaXN0Ym94LFxuICBUcmFuc2l0aW9uLFxuICBMaXN0Ym94QnV0dG9uLFxuICBMaXN0Ym94T3B0aW9uLFxuICBMaXN0Ym94T3B0aW9ucyxcbn0gZnJvbSAnQGhlYWRsZXNzdWkvcmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBPcHRpb24sIE9wdGlvbldpdGhJY29uLCBEcm9wZG93blZhbHVlU2V0dGVyIH0gZnJvbSAnfi9jb21tb24nO1xuaW1wb3J0IHsgdXNlTXVsdGlTZWFyY2ggfSBmcm9tICcuL011bHRpU2VhcmNoJztcbmltcG9ydCB7IENoZWNrTWFyayB9IGZyb20gJ34vc3Zncyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG50eXBlIFNlbGVjdERyb3BEb3duUHJvcHMgPSB7XG4gIGlkPzogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICB2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IE9wdGlvbiB8IE9wdGlvbldpdGhJY29uO1xuICBzZXRWYWx1ZTogRHJvcGRvd25WYWx1ZVNldHRlciB8ICgodmFsdWU6IHN0cmluZykgPT4gdm9pZCk7XG4gIHRhYkluZGV4PzogbnVtYmVyO1xuICBhdmFpbGFibGVWYWx1ZXM/OiBzdHJpbmdbXSB8IE9wdGlvbltdIHwgT3B0aW9uV2l0aEljb25bXTtcbiAgZW1wdHlUaXRsZT86IGJvb2xlYW47XG4gIHNob3dBYm92ZT86IGJvb2xlYW47XG4gIHNob3dMYWJlbD86IGJvb2xlYW47XG4gIGljb25TaWRlPzogJ2xlZnQnIHwgJ3JpZ2h0JztcbiAgb3B0aW9uSWNvblNpZGU/OiAnbGVmdCcgfCAncmlnaHQnO1xuICByZW5kZXJPcHRpb24/OiAoKSA9PiBSZWFjdC5SZWFjdE5vZGU7XG4gIGNvbnRhaW5lckNsYXNzTmFtZT86IHN0cmluZztcbiAgY3VycmVudFZhbHVlQ2xhc3M/OiBzdHJpbmc7XG4gIG9wdGlvbnNMaXN0Q2xhc3M/OiBzdHJpbmc7XG4gIG9wdGlvbnNDbGFzcz86IHN0cmluZztcbiAgc3ViQ29udGFpbmVyQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBzZWFyY2hDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNlYXJjaFBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBzaG93T3B0aW9uSWNvbj86IGJvb2xlYW47XG59O1xuXG5mdW5jdGlvbiBnZXRPcHRpb25UZXh0KG9wdGlvbjogc3RyaW5nIHwgT3B0aW9uIHwgT3B0aW9uV2l0aEljb24pOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gb3B0aW9uO1xuICB9XG4gIGlmICgnbGFiZWwnIGluIG9wdGlvbikge1xuICAgIHJldHVybiBvcHRpb24ubGFiZWwgPz8gJyc7XG4gIH1cbiAgaWYgKCd2YWx1ZScgaW4gb3B0aW9uKSB7XG4gICAgcmV0dXJuIChvcHRpb24udmFsdWUgPz8gJycpICsgJyc7XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG5mdW5jdGlvbiBTZWxlY3REcm9wRG93bih7XG4gIHRpdGxlOiBfdGl0bGUsXG4gIHZhbHVlLFxuICBkaXNhYmxlZCxcbiAgc2V0VmFsdWUsXG4gIGF2YWlsYWJsZVZhbHVlcyxcbiAgc2hvd0Fib3ZlID0gZmFsc2UsXG4gIHNob3dMYWJlbCA9IHRydWUsXG4gIGVtcHR5VGl0bGUgPSBmYWxzZSxcbiAgaWNvblNpZGUgPSAncmlnaHQnLFxuICBvcHRpb25JY29uU2lkZSA9ICdsZWZ0JyxcbiAgcGxhY2Vob2xkZXIsXG4gIGNvbnRhaW5lckNsYXNzTmFtZSxcbiAgb3B0aW9uc0xpc3RDbGFzcyxcbiAgb3B0aW9uc0NsYXNzLFxuICBjdXJyZW50VmFsdWVDbGFzcyxcbiAgc3ViQ29udGFpbmVyQ2xhc3NOYW1lLFxuICBjbGFzc05hbWUsXG4gIHJlbmRlck9wdGlvbixcbiAgc2VhcmNoQ2xhc3NOYW1lLFxuICBzZWFyY2hQbGFjZWhvbGRlcixcbiAgc2hvd09wdGlvbkljb24gPSBmYWxzZSxcbn06IFNlbGVjdERyb3BEb3duUHJvcHMpIHtcbiAgY29uc3QgdHJhbnNpdGlvblByb3BzID0geyBjbGFzc05hbWU6ICd0b3AtZnVsbCBtdC0zJyB9O1xuICBpZiAoc2hvd0Fib3ZlKSB7XG4gICAgdHJhbnNpdGlvblByb3BzLmNsYXNzTmFtZSA9ICdib3R0b20tZnVsbCBtYi0zJztcbiAgfVxuXG4gIGxldCB0aXRsZSA9IF90aXRsZTtcbiAgaWYgKGVtcHR5VGl0bGUpIHtcbiAgICB0aXRsZSA9ICcnO1xuICB9XG5cbiAgY29uc3QgdmFsdWVzID0gYXZhaWxhYmxlVmFsdWVzID8/IFtdO1xuXG4gIC8vIEVuYWJsZSBzZWFyY2hhYmxlIHNlbGVjdCBpZiBlbm91Z2ggaXRlbXMgYXJlIHByb3ZpZGVkLlxuICBjb25zdCBbZmlsdGVyZWRWYWx1ZXMsIHNlYXJjaFJlbmRlcl0gPSB1c2VNdWx0aVNlYXJjaDxzdHJpbmdbXSB8IE9wdGlvbltdPih7XG4gICAgYXZhaWxhYmxlT3B0aW9uczogdmFsdWVzLFxuICAgIHBsYWNlaG9sZGVyOiBzZWFyY2hQbGFjZWhvbGRlcixcbiAgICBnZXRUZXh0S2V5T3ZlcnJpZGU6IChvcHRpb24pID0+IGdldE9wdGlvblRleHQob3B0aW9uKS50b1VwcGVyQ2FzZSgpLFxuICAgIGNsYXNzTmFtZTogc2VhcmNoQ2xhc3NOYW1lLFxuICAgIGRpc2FibGVkLFxuICB9KTtcbiAgY29uc3QgaGFzU2VhcmNoUmVuZGVyID0gc2VhcmNoUmVuZGVyICE9IG51bGw7XG4gIGNvbnN0IG9wdGlvbnMgPSBoYXNTZWFyY2hSZW5kZXIgPyBmaWx0ZXJlZFZhbHVlcyA6IHZhbHVlcztcbiAgY29uc3QgcmVuZGVySWNvbiA9IHNob3dPcHRpb25JY29uICYmIHZhbHVlICE9IG51bGwgJiYgKHZhbHVlIGFzIE9wdGlvbldpdGhJY29uKS5pY29uICE9IG51bGw7XG5cbiAgY29uc3QgYnV0dG9uUmVmID0gdXNlUmVmPEhUTUxCdXR0b25FbGVtZW50PihudWxsKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbignZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTInLCBjb250YWluZXJDbGFzc05hbWUgPz8gJycpfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbigncmVsYXRpdmUgdy1mdWxsJywgc3ViQ29udGFpbmVyQ2xhc3NOYW1lID8/ICcnKX0+XG4gICAgICAgIDxMaXN0Ym94IHZhbHVlPXt2YWx1ZX0gb25DaGFuZ2U9e3NldFZhbHVlfSBkaXNhYmxlZD17ZGlzYWJsZWR9PlxuICAgICAgICAgIHsoeyBvcGVuIH0pID0+IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxMaXN0Ym94QnV0dG9uXG4gICAgICAgICAgICAgICAgcmVmPXtidXR0b25SZWZ9XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtZHJvcGRvd24tYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW9wZW4gJiYgYnV0dG9uUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBidXR0b25SZWYuY3VycmVudC5jbGljaygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgJ3JlbGF0aXZlIGZsZXggdy1mdWxsIGN1cnNvci1kZWZhdWx0IGZsZXgtY29sIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ibGFjay8xMCBiZy13aGl0ZSBweS0yIHBsLTMgcHItMTAgdGV4dC1sZWZ0IGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1yaW5nIGZvY3VzLXZpc2libGU6cmluZy1vZmZzZXQtMiBkaXNhYmxlZDpiZy13aGl0ZSBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNzAwIHNtOnRleHQtc20nLFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lID8/ICcnLFxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7c2hvd0xhYmVsICYmIChcbiAgICAgICAgICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXhzIHRleHQtZ3JheS03MDAgZGFyazp0ZXh0LWdyYXktNTAwXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoZWFkbGVzc3VpLWxpc3Rib3gtbGFiZWwtOnIxOlwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtaGVhZGxlc3N1aS1zdGF0ZT1cIlwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt0aXRsZX1cbiAgICAgICAgICAgICAgICAgIDwvTGFiZWw+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCB3LWZ1bGwgdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgJ2ZsZXggaC02IGl0ZW1zLWNlbnRlciBnYXAtMSB0cnVuY2F0ZSB0ZXh0LXNtIHRleHQtZ3JheS04MDAgZGFyazp0ZXh0LXdoaXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAhc2hvd0xhYmVsID8gJ3RleHQteHMnIDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlQ2xhc3MgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHshc2hvd0xhYmVsICYmICFlbXB0eVRpdGxlICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtZ3JheS03MDAgZGFyazp0ZXh0LWdyYXktNTAwXCI+e3RpdGxlfTo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIHtyZW5kZXJJY29uICYmIG9wdGlvbkljb25TaWRlICE9PSAncmlnaHQnICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJpY29uLW1kIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7KHZhbHVlIGFzIE9wdGlvbldpdGhJY29uKS5pY29ufVxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAge3JlbmRlckljb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImljb24tbWQgYWJzb2x1dGUgcmlnaHQtMCBtci04IGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7KHZhbHVlIGFzIE9wdGlvbldpdGhJY29uKS5pY29ufVxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtdGV4dC1zZWNvbmRhcnlcIj57cGxhY2Vob2xkZXJ9PC9zcGFuPjtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5sYWJlbCA/PyAnJztcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIGluc2V0LXktMCByaWdodC0wIGZsZXggaXRlbXMtY2VudGVyIHByLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtNCB3LTQgdGV4dC1ncmF5LTQwMFwiXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXtzaG93QWJvdmUgPyB7IHRyYW5zZm9ybTogJ3NjYWxlWSgtMSknIH0gOiB7fX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHBvbHlsaW5lIHBvaW50cz1cIjYgOSAxMiAxNSAxOCA5XCI+PC9wb2x5bGluZT5cbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9MaXN0Ym94QnV0dG9uPlxuICAgICAgICAgICAgICA8VHJhbnNpdGlvblxuICAgICAgICAgICAgICAgIHNob3c9e29wZW59XG4gICAgICAgICAgICAgICAgYXM9XCJkaXZcIlxuICAgICAgICAgICAgICAgIGxlYXZlPVwidHJhbnNpdGlvbiBlYXNlLWluIGR1cmF0aW9uLTEwMFwiXG4gICAgICAgICAgICAgICAgbGVhdmVGcm9tPVwib3BhY2l0eS0xMDBcIlxuICAgICAgICAgICAgICAgIGxlYXZlVG89XCJvcGFjaXR5LTBcIlxuICAgICAgICAgICAgICAgIHsuLi50cmFuc2l0aW9uUHJvcHN9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8TGlzdGJveE9wdGlvbnNcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICdhYnNvbHV0ZSB6LTEwIG10LTIgbWF4LWgtNjAgdy1mdWxsIG92ZXJmbG93LWF1dG8gcm91bmRlZCBib3JkZXIgYmctd2hpdGUgdGV4dC14cyByaW5nLWJsYWNrLzEwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6YmctZ3JheS03MDAgZGFyazpyaW5nLXdoaXRlLzIwIG1kOnctWzEwMCVdJyxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uc0xpc3RDbGFzcyA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3JlbmRlck9wdGlvbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxMaXN0Ym94T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXsnbGlzdGJveC1yZW5kZXItb3B0aW9uJ31cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2dyb3VwIHJlbGF0aXZlIGZsZXggaC1bNDJweF0gY3Vyc29yLXBvaW50ZXIgc2VsZWN0LW5vbmUgaXRlbXMtY2VudGVyIG92ZXJmbG93LWhpZGRlbiBwbC0zIHByLTkgdGV4dC1ncmF5LTgwMCBob3ZlcjpiZy1ncmF5LTIwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmhvdmVyOmJnLWdyYXktNzAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnNDbGFzcyA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3JlbmRlck9wdGlvbigpIGFzIFJlYWN0LkpTWC5FbGVtZW50fVxuICAgICAgICAgICAgICAgICAgICA8L0xpc3Rib3hPcHRpb24+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAge3NlYXJjaFJlbmRlciBhcyBSZWFjdC5KU1guRWxlbWVudH1cbiAgICAgICAgICAgICAgICAgIHtvcHRpb25zLm1hcCgob3B0aW9uOiBzdHJpbmcgfCBPcHRpb24sIGk6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRMYWJlbCA9XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycgPyBvcHRpb24gOiAob3B0aW9uLmxhYmVsID8/IG9wdGlvbi52YWx1ZSA/PyAnJyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gb3B0aW9uIDogKG9wdGlvbi52YWx1ZSA/PyAnJyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJY29uID1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICgob3B0aW9uLmljb24gYXMgUmVhY3QuUmVhY3ROb2RlKSA/PyBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFjdGl2ZVZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgT3B0aW9uID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYWN0aXZlVmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgYWN0aXZlVmFsdWUgPSBhY3RpdmVWYWx1ZT8udmFsdWUgPz8gJyc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICA8TGlzdGJveE9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17KHsgYWN0aXZlIH0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdncm91cCByZWxhdGl2ZSBmbGV4IGgtWzQycHhdIGN1cnNvci1wb2ludGVyIHNlbGVjdC1ub25lIGl0ZW1zLWNlbnRlciBvdmVyZmxvdy1oaWRkZW4gcGwtMyBwci05IHRleHQtZ3JheS04MDAgaG92ZXI6YmctZ3JheS0yMCBkYXJrOnRleHQtd2hpdGUgZGFyazpob3ZlcjpiZy1ncmF5LTYwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlID8gJ2JnLXN1cmZhY2UtYWN0aXZlIHRleHQtdGV4dC1wcmltYXJ5JyA6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnNDbGFzcyA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZsZXggaC02IGl0ZW1zLWNlbnRlciBnYXAtMSB0ZXh0LWdyYXktODAwIGRhcms6dGV4dC1ncmF5LTIwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24gPT09IHZhbHVlID8gJ2ZvbnQtc2VtaWJvbGQnIDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uU2lkZSA9PT0gJ2xlZnQnID8gJ21sLTQnIDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjdXJyZW50SWNvbiAhPSBudWxsICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21yLTEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbkljb25TaWRlID09PSAncmlnaHQnID8gJ2Fic29sdXRlIHJpZ2h0LTAgcHItMicgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRJY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRMYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Y3VycmVudFZhbHVlID09PSBhY3RpdmVWYWx1ZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhYnNvbHV0ZSBpbnNldC15LTAgZmxleCBpdGVtcy1jZW50ZXIgdGV4dC1ncmF5LTgwMCBkYXJrOnRleHQtZ3JheS0yMDAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uU2lkZSA9PT0gJ2xlZnQnID8gJ2xlZnQtMCBwbC0yJyA6ICdyaWdodC0wIHByLTMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hlY2tNYXJrIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvTGlzdGJveE9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIDwvTGlzdGJveE9wdGlvbnM+XG4gICAgICAgICAgICAgIDwvVHJhbnNpdGlvbj5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvTGlzdGJveD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBTZWxlY3REcm9wRG93bjtcbiIsImltcG9ydCAqIGFzIEFyaWFraXQgZnJvbSAnQGFyaWFraXQvcmVhY3QnO1xuaW1wb3J0IHsgbWF0Y2hTb3J0ZXIgfSBmcm9tICdtYXRjaC1zb3J0ZXInO1xuaW1wb3J0IHsgU2VhcmNoLCBDaGV2cm9uRG93biB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyB1c2VNZW1vLCB1c2VTdGF0ZSwgdXNlUmVmLCBtZW1vLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTZWxlY3RSZW5kZXJlciB9IGZyb20gJ0Bhcmlha2l0L3JlYWN0LWNvcmUvc2VsZWN0L3NlbGVjdC1yZW5kZXJlcic7XG5pbXBvcnQgdHlwZSB7IE9wdGlvbldpdGhJY29uIH0gZnJvbSAnfi9jb21tb24nO1xuaW1wb3J0ICcuL0FuaW1hdGVQb3BvdmVyLmNzcyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5pbnRlcmZhY2UgQ29udHJvbENvbWJvYm94UHJvcHMge1xuICBzZWxlY3RlZFZhbHVlOiBzdHJpbmc7XG4gIGRpc3BsYXlWYWx1ZT86IHN0cmluZztcbiAgaXRlbXM6IE9wdGlvbldpdGhJY29uW107XG4gIHNldFZhbHVlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgYXJpYUxhYmVsOiBzdHJpbmc7XG4gIHNlYXJjaFBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBzZWxlY3RQbGFjZWhvbGRlcj86IHN0cmluZztcbiAgaXNDb2xsYXBzZWQ6IGJvb2xlYW47XG4gIFNlbGVjdEljb24/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIGNvbnRhaW5lckNsYXNzTmFtZT86IHN0cmluZztcbiAgaWNvbkNsYXNzTmFtZT86IHN0cmluZztcbiAgc2hvd0NhcmF0PzogYm9vbGVhbjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGljb25TaWRlPzogJ2xlZnQnIHwgJ3JpZ2h0JztcbiAgc2VsZWN0SWQ/OiBzdHJpbmc7XG59XG5cbmNvbnN0IFJPV19IRUlHSFQgPSAzNjtcblxuZnVuY3Rpb24gQ29udHJvbENvbWJvYm94KHtcbiAgc2VsZWN0ZWRWYWx1ZSxcbiAgZGlzcGxheVZhbHVlLFxuICBpdGVtcyxcbiAgc2V0VmFsdWUsXG4gIGFyaWFMYWJlbCxcbiAgc2VhcmNoUGxhY2Vob2xkZXIsXG4gIHNlbGVjdFBsYWNlaG9sZGVyLFxuICBjb250YWluZXJDbGFzc05hbWUsXG4gIGlzQ29sbGFwc2VkLFxuICBTZWxlY3RJY29uLFxuICBzaG93Q2FyYXQsXG4gIGNsYXNzTmFtZSxcbiAgZGlzYWJsZWQsXG4gIGljb25DbGFzc05hbWUsXG4gIGljb25TaWRlID0gJ2xlZnQnLFxuICBzZWxlY3RJZCxcbn06IENvbnRyb2xDb21ib2JveFByb3BzKSB7XG4gIGNvbnN0IFtzZWFyY2hWYWx1ZSwgc2V0U2VhcmNoVmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBidXR0b25SZWYgPSB1c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBbYnV0dG9uV2lkdGgsIHNldEJ1dHRvbldpZHRoXSA9IHVzZVN0YXRlPG51bWJlciB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IGdldEl0ZW0gPSAob3B0aW9uOiBPcHRpb25XaXRoSWNvbikgPT4gKHtcbiAgICBpZDogYGl0ZW0tJHtvcHRpb24udmFsdWV9YCxcbiAgICB2YWx1ZTogb3B0aW9uLnZhbHVlIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogb3B0aW9uLmxhYmVsLFxuICAgIGljb246IG9wdGlvbi5pY29uLFxuICB9KTtcblxuICBjb25zdCBjb21ib2JveCA9IEFyaWFraXQudXNlQ29tYm9ib3hTdG9yZSh7XG4gICAgZGVmYXVsdEl0ZW1zOiBpdGVtcy5tYXAoZ2V0SXRlbSksXG4gICAgcmVzZXRWYWx1ZU9uSGlkZTogdHJ1ZSxcbiAgICB2YWx1ZTogc2VhcmNoVmFsdWUsXG4gICAgc2V0VmFsdWU6IHNldFNlYXJjaFZhbHVlLFxuICB9KTtcblxuICBjb25zdCBzZWxlY3QgPSBBcmlha2l0LnVzZVNlbGVjdFN0b3JlKHtcbiAgICBjb21ib2JveCxcbiAgICBkZWZhdWx0SXRlbXM6IGl0ZW1zLm1hcChnZXRJdGVtKSxcbiAgICB2YWx1ZTogc2VsZWN0ZWRWYWx1ZSxcbiAgICBzZXRWYWx1ZSxcbiAgfSk7XG5cbiAgY29uc3QgbWF0Y2hlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGZpbHRlcmVkSXRlbXMgPSBtYXRjaFNvcnRlcihpdGVtcywgc2VhcmNoVmFsdWUsIHtcbiAgICAgIGtleXM6IFsndmFsdWUnLCAnbGFiZWwnXSxcbiAgICAgIGJhc2VTb3J0OiAoYSwgYikgPT4gKGEuaW5kZXggPCBiLmluZGV4ID8gLTEgOiAxKSxcbiAgICB9KTtcbiAgICByZXR1cm4gZmlsdGVyZWRJdGVtcy5tYXAoZ2V0SXRlbSk7XG4gIH0sIFtzZWFyY2hWYWx1ZSwgaXRlbXNdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChidXR0b25SZWYuY3VycmVudCAmJiAhaXNDb2xsYXBzZWQpIHtcbiAgICAgIHNldEJ1dHRvbldpZHRoKGJ1dHRvblJlZi5jdXJyZW50Lm9mZnNldFdpZHRoKTtcbiAgICB9XG4gIH0sIFtpc0NvbGxhcHNlZF0pO1xuXG4gIGNvbnN0IHNlbGVjdEljb25DbGFzc05hbWUgPSBjbihcbiAgICAnZmxleCBoLTUgdy01IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1mdWxsJyxcbiAgICBpY29uQ2xhc3NOYW1lLFxuICApO1xuICBjb25zdCBvcHRpb25JY29uQ2xhc3NOYW1lID0gY24oXG4gICAgJ21yLTIgZmxleCBoLTUgdy01IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1mdWxsJyxcbiAgICBpY29uQ2xhc3NOYW1lLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NuKCdmbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHgtMScsIGNvbnRhaW5lckNsYXNzTmFtZSl9PlxuICAgICAgPEFyaWFraXQuU2VsZWN0TGFiZWwgc3RvcmU9e3NlbGVjdH0gY2xhc3NOYW1lPVwic3Itb25seVwiPlxuICAgICAgICB7YXJpYUxhYmVsfVxuICAgICAgPC9Bcmlha2l0LlNlbGVjdExhYmVsPlxuICAgICAgPEFyaWFraXQuU2VsZWN0XG4gICAgICAgIHJlZj17YnV0dG9uUmVmfVxuICAgICAgICBzdG9yZT17c2VsZWN0fVxuICAgICAgICBpZD17c2VsZWN0SWR9XG4gICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAnZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTIgcm91bmRlZC1mdWxsIGJnLXN1cmZhY2Utc2Vjb25kYXJ5JyxcbiAgICAgICAgICAndGV4dC10ZXh0LXByaW1hcnkgaG92ZXI6Ymctc3VyZmFjZS10ZXJ0aWFyeScsXG4gICAgICAgICAgJ2JvcmRlciBib3JkZXItYm9yZGVyLWxpZ2h0JyxcbiAgICAgICAgICBpc0NvbGxhcHNlZCA/ICdoLTEwIHctMTAnIDogJ2gtMTAgdy1mdWxsIHJvdW5kZWQteGwgcHgtMyBweS0yIHRleHQtc20nLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgID5cbiAgICAgICAge1NlbGVjdEljb24gIT0gbnVsbCAmJiBpY29uU2lkZSA9PT0gJ2xlZnQnICYmIChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c2VsZWN0SWNvbkNsYXNzTmFtZX0+e1NlbGVjdEljb259PC9kaXY+XG4gICAgICAgICl9XG4gICAgICAgIHshaXNDb2xsYXBzZWQgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmbGV4LWdyb3cgdHJ1bmNhdGUgdGV4dC1sZWZ0XCI+XG4gICAgICAgICAgICAgIHtkaXNwbGF5VmFsdWUgIT0gbnVsbFxuICAgICAgICAgICAgICAgID8gZGlzcGxheVZhbHVlIHx8IHNlbGVjdFBsYWNlaG9sZGVyXG4gICAgICAgICAgICAgICAgOiBzZWxlY3RlZFZhbHVlIHx8IHNlbGVjdFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAge1NlbGVjdEljb24gIT0gbnVsbCAmJiBpY29uU2lkZSA9PT0gJ3JpZ2h0JyAmJiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzZWxlY3RJY29uQ2xhc3NOYW1lfT57U2VsZWN0SWNvbn08L2Rpdj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7c2hvd0NhcmF0ICYmIDxDaGV2cm9uRG93biBjbGFzc05hbWU9XCJoLTQgdy00IHRleHQtdGV4dC1zZWNvbmRhcnlcIiAvPn1cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvQXJpYWtpdC5TZWxlY3Q+XG4gICAgICA8QXJpYWtpdC5TZWxlY3RQb3BvdmVyXG4gICAgICAgIHN0b3JlPXtzZWxlY3R9XG4gICAgICAgIGd1dHRlcj17NH1cbiAgICAgICAgcG9ydGFsXG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgJ2FuaW1hdGUtcG9wb3ZlciB6LTQwIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLXhsIGJvcmRlciBib3JkZXItYm9yZGVyLWxpZ2h0IGJnLXN1cmZhY2Utc2Vjb25kYXJ5IHNoYWRvdy1sZycsXG4gICAgICAgICl9XG4gICAgICAgIHN0eWxlPXt7IHdpZHRoOiBpc0NvbGxhcHNlZCA/ICczMDBweCcgOiAoYnV0dG9uV2lkdGggPz8gJzMwMHB4JykgfX1cbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJweS0xLjVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlXCI+XG4gICAgICAgICAgICA8U2VhcmNoIGNsYXNzTmFtZT1cImFic29sdXRlIGxlZnQtMyB0b3AtMS8yIGgtNCB3LTQgLXRyYW5zbGF0ZS15LTEvMiB0ZXh0LXRleHQtcHJpbWFyeVwiIC8+XG4gICAgICAgICAgICA8QXJpYWtpdC5Db21ib2JveFxuICAgICAgICAgICAgICBzdG9yZT17Y29tYm9ib3h9XG4gICAgICAgICAgICAgIGF1dG9TZWxlY3RcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3NlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgcm91bmRlZC1tZCBiZy1zdXJmYWNlLXNlY29uZGFyeSBweS0yIHBsLTkgcHItMyB0ZXh0LXNtIHRleHQtdGV4dC1wcmltYXJ5IGZvY3VzOm91dGxpbmUtbm9uZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtaC1bMzAwcHhdIG92ZXJmbG93LWF1dG9cIj5cbiAgICAgICAgICA8QXJpYWtpdC5Db21ib2JveExpc3Qgc3RvcmU9e2NvbWJvYm94fT5cbiAgICAgICAgICAgIDxTZWxlY3RSZW5kZXJlciBzdG9yZT17c2VsZWN0fSBpdGVtcz17bWF0Y2hlc30gaXRlbVNpemU9e1JPV19IRUlHSFR9IG92ZXJzY2FuPXs1fT5cbiAgICAgICAgICAgICAgeyh7IHZhbHVlLCBpY29uLCBsYWJlbCwgLi4uaXRlbSB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPEFyaWFraXQuQ29tYm9ib3hJdGVtXG4gICAgICAgICAgICAgICAgICBrZXk9e2l0ZW0uaWR9XG4gICAgICAgICAgICAgICAgICB7Li4uaXRlbX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICdmbGV4IHctZnVsbCBjdXJzb3ItcG9pbnRlciBpdGVtcy1jZW50ZXIgcHgtMyB0ZXh0LXNtJyxcbiAgICAgICAgICAgICAgICAgICAgJ3RleHQtdGV4dC1wcmltYXJ5IGhvdmVyOmJnLXN1cmZhY2UtdGVydGlhcnknLFxuICAgICAgICAgICAgICAgICAgICAnZGF0YS1bYWN0aXZlLWl0ZW1dOmJnLXN1cmZhY2UtdGVydGlhcnknLFxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIHJlbmRlcj17PEFyaWFraXQuU2VsZWN0SXRlbSB2YWx1ZT17dmFsdWV9IC8+fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtpY29uICE9IG51bGwgJiYgaWNvblNpZGUgPT09ICdsZWZ0JyAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtvcHRpb25JY29uQ2xhc3NOYW1lfT57aWNvbn08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmbGV4LWdyb3cgdHJ1bmNhdGUgdGV4dC1sZWZ0XCI+e2xhYmVsfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIHtpY29uICE9IG51bGwgJiYgaWNvblNpZGUgPT09ICdyaWdodCcgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17b3B0aW9uSWNvbkNsYXNzTmFtZX0+e2ljb259PC9kaXY+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvQXJpYWtpdC5Db21ib2JveEl0ZW0+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1NlbGVjdFJlbmRlcmVyPlxuICAgICAgICAgIDwvQXJpYWtpdC5Db21ib2JveExpc3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9Bcmlha2l0LlNlbGVjdFBvcG92ZXI+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG1lbW8oQ29udHJvbENvbWJvYm94KTtcbiIsImltcG9ydCB7IGZvcndhcmRSZWYsIGlzVmFsaWRFbGVtZW50LCBSZWFjdE5vZGUsIFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7XG4gIE9HRGlhbG9nVGl0bGUsXG4gIE9HRGlhbG9nQ2xvc2UsXG4gIE9HRGlhbG9nRm9vdGVyLFxuICBPR0RpYWxvZ0hlYWRlcixcbiAgT0dEaWFsb2dDb250ZW50LFxuICBPR0RpYWxvZ0Rlc2NyaXB0aW9uLFxufSBmcm9tICcuL09yaWdpbmFsRGlhbG9nJztcbmltcG9ydCB7IHVzZUxvY2FsaXplIH0gZnJvbSAnfi9ob29rcyc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuL0J1dHRvbic7XG5pbXBvcnQgeyBTcGlubmVyIH0gZnJvbSAnfi9zdmdzJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscy8nO1xuXG50eXBlIFNlbGVjdGlvblByb3BzID0ge1xuICBzZWxlY3RIYW5kbGVyPzogKCkgPT4gdm9pZDtcbiAgc2VsZWN0Q2xhc3Nlcz86IHN0cmluZztcbiAgc2VsZWN0VGV4dD86IHN0cmluZyB8IFJlYWN0Tm9kZTtcbiAgaXNMb2FkaW5nPzogYm9vbGVhbjtcbn07XG5cbi8qKlxuICogVHlwZSBndWFyZCB0byBjaGVjayBpZiBzZWxlY3Rpb24gaXMgYSBsZWdhY3kgU2VsZWN0aW9uUHJvcHMgb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIGlzU2VsZWN0aW9uUHJvcHMoc2VsZWN0aW9uOiB1bmtub3duKTogc2VsZWN0aW9uIGlzIFNlbGVjdGlvblByb3BzIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2Ygc2VsZWN0aW9uID09PSAnb2JqZWN0JyAmJlxuICAgIHNlbGVjdGlvbiAhPT0gbnVsbCAmJlxuICAgICFpc1ZhbGlkRWxlbWVudChzZWxlY3Rpb24pICYmXG4gICAgKCdzZWxlY3RIYW5kbGVyJyBpbiBzZWxlY3Rpb24gfHxcbiAgICAgICdzZWxlY3RDbGFzc2VzJyBpbiBzZWxlY3Rpb24gfHxcbiAgICAgICdzZWxlY3RUZXh0JyBpbiBzZWxlY3Rpb24gfHxcbiAgICAgICdpc0xvYWRpbmcnIGluIHNlbGVjdGlvbilcbiAgKTtcbn1cblxudHlwZSBEaWFsb2dUZW1wbGF0ZVByb3BzID0ge1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgbWFpbj86IFJlYWN0Tm9kZTtcbiAgYnV0dG9ucz86IFJlYWN0Tm9kZTtcbiAgbGVmdEJ1dHRvbnM/OiBSZWFjdE5vZGU7XG4gIC8qKlxuICAgKiBTZWxlY3Rpb24gYnV0dG9uIGNvbmZpZ3VyYXRpb24uIENhbiBiZSBlaXRoZXI6XG4gICAqIC0gQW4gb2JqZWN0IHdpdGggc2VsZWN0SGFuZGxlciwgc2VsZWN0Q2xhc3Nlcywgc2VsZWN0VGV4dCwgaXNMb2FkaW5nIChsZWdhY3kpXG4gICAqIC0gQSBSZWFjdE5vZGUgZm9yIGN1c3RvbSBzZWxlY3Rpb24gY29tcG9uZW50XG4gICAqIEBleGFtcGxlXG4gICAqIC8vIExlZ2FjeSB1c2FnZVxuICAgKiBzZWxlY3Rpb249e3sgc2VsZWN0SGFuZGxlcjogKCkgPT4ge30sIHNlbGVjdFRleHQ6ICdDb25maXJtJyB9fVxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBDdXN0b20gY29tcG9uZW50XG4gICAqIHNlbGVjdGlvbj17PEJ1dHRvbiBvbkNsaWNrPXtoYW5kbGVDb25maXJtfT5Db25maXJtPC9CdXR0b24+fVxuICAgKi9cbiAgc2VsZWN0aW9uPzogU2VsZWN0aW9uUHJvcHMgfCBSZWFjdE5vZGU7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgb3ZlcmxheUNsYXNzTmFtZT86IHN0cmluZztcbiAgaGVhZGVyQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBtYWluQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBmb290ZXJDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNob3dDbG9zZUJ1dHRvbj86IGJvb2xlYW47XG4gIHNob3dDYW5jZWxCdXR0b24/OiBib29sZWFuO1xuICBvbkNsb3NlPzogKCkgPT4gdm9pZDtcbn07XG5cbmNvbnN0IE9HRGlhbG9nVGVtcGxhdGUgPSBmb3J3YXJkUmVmKChwcm9wczogRGlhbG9nVGVtcGxhdGVQcm9wcywgcmVmOiBSZWY8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gIGNvbnN0IGxvY2FsaXplID0gdXNlTG9jYWxpemUoKTtcbiAgY29uc3Qge1xuICAgIHRpdGxlLFxuICAgIG1haW4sXG4gICAgYnV0dG9ucyxcbiAgICBzZWxlY3Rpb24sXG4gICAgY2xhc3NOYW1lLFxuICAgIGxlZnRCdXR0b25zLFxuICAgIGRlc2NyaXB0aW9uID0gJycsXG4gICAgbWFpbkNsYXNzTmFtZSxcbiAgICBoZWFkZXJDbGFzc05hbWUsXG4gICAgZm9vdGVyQ2xhc3NOYW1lLFxuICAgIHNob3dDbG9zZUJ1dHRvbiA9IGZhbHNlLFxuICAgIG92ZXJsYXlDbGFzc05hbWUsXG4gICAgc2hvd0NhbmNlbEJ1dHRvbiA9IHRydWUsXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgaXNMZWdhY3lTZWxlY3Rpb24gPSBpc1NlbGVjdGlvblByb3BzKHNlbGVjdGlvbik7XG4gIGNvbnN0IHsgc2VsZWN0SGFuZGxlciwgc2VsZWN0Q2xhc3Nlcywgc2VsZWN0VGV4dCwgaXNMb2FkaW5nIH0gPSBpc0xlZ2FjeVNlbGVjdGlvblxuICAgID8gc2VsZWN0aW9uXG4gICAgOiB7fTtcblxuICBjb25zdCBkZWZhdWx0U2VsZWN0ID1cbiAgICAnYmctZ3JheS04MDAgdGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyBob3ZlcjpiZy1ncmF5LTcwMCBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCBkYXJrOmJnLWdyYXktMjAwIGRhcms6dGV4dC1ncmF5LTgwMCBkYXJrOmhvdmVyOmJnLWdyYXktMjAwJztcblxuICBsZXQgc2VsZWN0aW9uQ29udGVudCA9IG51bGw7XG4gIGlmIChpc0xlZ2FjeVNlbGVjdGlvbikge1xuICAgIHNlbGVjdGlvbkNvbnRlbnQgPSAoXG4gICAgICA8T0dEaWFsb2dDbG9zZVxuICAgICAgICBvbkNsaWNrPXtzZWxlY3RIYW5kbGVyfVxuICAgICAgICBkaXNhYmxlZD17aXNMb2FkaW5nfVxuICAgICAgICBjbGFzc05hbWU9e2Ake1xuICAgICAgICAgIHNlbGVjdENsYXNzZXMgPz8gZGVmYXVsdFNlbGVjdFxuICAgICAgICB9IGZsZXggaC0xMCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1sZyBib3JkZXItbm9uZSBweC00IHB5LTIgdGV4dC1zbSBkaXNhYmxlZDpvcGFjaXR5LTgwIG1heC1zbTpvcmRlci1maXJzdCBtYXgtc206dy1mdWxsIHNtOm9yZGVyLW5vbmVgfVxuICAgICAgPlxuICAgICAgICB7aXNMb2FkaW5nID09PSB0cnVlID8gKFxuICAgICAgICAgIDxTcGlubmVyIGNsYXNzTmFtZT1cInNpemUtNCB0ZXh0LXRleHQtcHJpbWFyeVwiIC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgKHNlbGVjdFRleHQgYXMgUmVhY3QuSlNYLkVsZW1lbnQpXG4gICAgICAgICl9XG4gICAgICA8L09HRGlhbG9nQ2xvc2U+XG4gICAgKTtcbiAgfSBlbHNlIGlmIChzZWxlY3Rpb24pIHtcbiAgICBzZWxlY3Rpb25Db250ZW50ID0gc2VsZWN0aW9uO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8T0dEaWFsb2dDb250ZW50XG4gICAgICBvdmVybGF5Q2xhc3NOYW1lPXtvdmVybGF5Q2xhc3NOYW1lfVxuICAgICAgc2hvd0Nsb3NlQnV0dG9uPXtzaG93Q2xvc2VCdXR0b259XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oJ3ctMTEvMTIgYm9yZGVyLW5vbmUgYmctYmFja2dyb3VuZCB0ZXh0LWZvcmVncm91bmQnLCBjbGFzc05hbWUgPz8gJycpfVxuICAgICAgb25DbGljaz17KGUpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgPlxuICAgICAgPE9HRGlhbG9nSGVhZGVyIGNsYXNzTmFtZT17Y24oaGVhZGVyQ2xhc3NOYW1lID8/ICcnKX0+XG4gICAgICAgIDxPR0RpYWxvZ1RpdGxlPnt0aXRsZX08L09HRGlhbG9nVGl0bGU+XG4gICAgICAgIHtkZXNjcmlwdGlvbiAmJiAoXG4gICAgICAgICAgPE9HRGlhbG9nRGVzY3JpcHRpb24gY2xhc3NOYW1lPVwiaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICB7ZGVzY3JpcHRpb259XG4gICAgICAgICAgPC9PR0RpYWxvZ0Rlc2NyaXB0aW9uPlxuICAgICAgICApfVxuICAgICAgPC9PR0RpYWxvZ0hlYWRlcj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbigncHgtMCBweS0yJywgbWFpbkNsYXNzTmFtZSl9PnttYWluICE9IG51bGwgPyBtYWluIDogbnVsbH08L2Rpdj5cbiAgICAgIDxPR0RpYWxvZ0Zvb3RlciBjbGFzc05hbWU9e2Zvb3RlckNsYXNzTmFtZX0+XG4gICAgICAgIHtsZWZ0QnV0dG9ucyAhPSBudWxsID8gKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXItYXV0byBmbGV4IGZsZXgtcm93IGdhcC0yXCI+e2xlZnRCdXR0b25zfTwvZGl2PlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAge3Nob3dDYW5jZWxCdXR0b24gJiYgKFxuICAgICAgICAgIDxPR0RpYWxvZ0Nsb3NlIGFzQ2hpbGQ+XG4gICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgYXJpYS1sYWJlbD17bG9jYWxpemUoJ2NvbV91aV9jYW5jZWwnKX0+XG4gICAgICAgICAgICAgIHtsb2NhbGl6ZSgnY29tX3VpX2NhbmNlbCcpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9PR0RpYWxvZ0Nsb3NlPlxuICAgICAgICApfVxuICAgICAgICB7YnV0dG9ucyAhPSBudWxsID8gYnV0dG9ucyA6IG51bGx9XG4gICAgICAgIHtzZWxlY3Rpb25Db250ZW50fVxuICAgICAgPC9PR0RpYWxvZ0Zvb3Rlcj5cbiAgICA8L09HRGlhbG9nQ29udGVudD5cbiAgKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBPR0RpYWxvZ1RlbXBsYXRlO1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSW5wdXQgfSBmcm9tICcuL0lucHV0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCB0eXBlIElucHV0V2l0aERyb3Bkb3duUHJvcHMgPSBSZWFjdC5JbnB1dEhUTUxBdHRyaWJ1dGVzPEhUTUxJbnB1dEVsZW1lbnQ+ICYge1xuICBvcHRpb25zOiBzdHJpbmdbXTtcbiAgb25TZWxlY3Q/OiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbn07XG5cbmNvbnN0IElucHV0V2l0aERyb3Bkb3duID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MSW5wdXRFbGVtZW50LCBJbnB1dFdpdGhEcm9wZG93blByb3BzPihcbiAgKHsgY2xhc3NOYW1lLCBvcHRpb25zLCBvblNlbGVjdCwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbaW5wdXRWYWx1ZSwgc2V0SW5wdXRWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZSgocHJvcHMudmFsdWUgYXMgc3RyaW5nKSB8fCAnJyk7XG4gICAgY29uc3QgW2hpZ2hsaWdodGVkSW5kZXgsIHNldEhpZ2hsaWdodGVkSW5kZXhdID0gUmVhY3QudXNlU3RhdGUoLTEpO1xuICAgIGNvbnN0IGlucHV0UmVmID0gUmVhY3QudXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuXG4gICAgY29uc3QgaGFuZGxlU2VsZWN0ID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIHNldElucHV0VmFsdWUodmFsdWUpO1xuICAgICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgICAgIHNldEhpZ2hsaWdodGVkSW5kZXgoLTEpO1xuICAgICAgaWYgKG9uU2VsZWN0KSB7XG4gICAgICAgIG9uU2VsZWN0KHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy5vbkNoYW5nZSkge1xuICAgICAgICBwcm9wcy5vbkNoYW5nZSh7IHRhcmdldDogeyB2YWx1ZSB9IH0gYXMgUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVJbnB1dENoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgc2V0SW5wdXRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XG4gICAgICBpZiAocHJvcHMub25DaGFuZ2UpIHtcbiAgICAgICAgcHJvcHMub25DaGFuZ2UoZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgc3dpdGNoIChlLmtleSkge1xuICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBpZiAoIWlzT3Blbikge1xuICAgICAgICAgICAgc2V0SXNPcGVuKHRydWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRIaWdobGlnaHRlZEluZGV4KChwcmV2SW5kZXgpID0+XG4gICAgICAgICAgICAgIHByZXZJbmRleCA8IG9wdGlvbnMubGVuZ3RoIC0gMSA/IHByZXZJbmRleCArIDEgOiBwcmV2SW5kZXgsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHNldEhpZ2hsaWdodGVkSW5kZXgoKHByZXZJbmRleCkgPT4gKHByZXZJbmRleCA+IDAgPyBwcmV2SW5kZXggLSAxIDogMCkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGlmIChpc09wZW4gJiYgaGlnaGxpZ2h0ZWRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGhhbmRsZVNlbGVjdChvcHRpb25zW2hpZ2hsaWdodGVkSW5kZXhdKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgICBzZXRJc09wZW4oZmFsc2UpO1xuICAgICAgICAgIHNldEhpZ2hsaWdodGVkSW5kZXgoLTEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChpbnB1dFJlZi5jdXJyZW50ICYmICFpbnB1dFJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgICAgIHNldElzT3BlbihmYWxzZSk7XG4gICAgICAgICAgc2V0SGlnaGxpZ2h0ZWRJbmRleCgtMSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpO1xuICAgICAgfTtcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiIHJlZj17aW5wdXRSZWZ9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlXCI+XG4gICAgICAgICAgPElucHV0XG4gICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVJbnB1dENoYW5nZX1cbiAgICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJkcm9wZG93bi1saXN0XCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oJ2JnLXN1cmZhY2Utc2Vjb25kYXJ5JywgY2xhc3NOYW1lID8/ICcnKX1cbiAgICAgICAgICAgIHJlZj17cmVmfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXRlcnRpYXJ5IGFic29sdXRlIGluc2V0LXktMCByaWdodC0wIGZsZXggaXRlbXMtY2VudGVyIHJvdW5kZWQtbWQgcHgtMiBob3Zlcjp0ZXh0LXNlY29uZGFyeSBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMSBmb2N1cy12aXNpYmxlOnJpbmctcmluZy1wcmltYXJ5XCJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzT3BlbighaXNPcGVuKX1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9e2lzT3BlbiA/ICdDbG9zZSBkcm9wZG93bicgOiAnT3BlbiBkcm9wZG93bid9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLTUgdy01XCJcbiAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17Mn1cbiAgICAgICAgICAgICAgICBkPVwiTTE5IDlsLTcgNy03LTdcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7aXNPcGVuICYmIChcbiAgICAgICAgICA8dWxcbiAgICAgICAgICAgIGlkPVwiZHJvcGRvd24tbGlzdFwiXG4gICAgICAgICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSB6LTEwIG10LTEgbWF4LWgtNjAgdy1mdWxsIG92ZXJmbG93LWF1dG8gcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWJvcmRlci1tZWRpdW0gYmctc3VyZmFjZS1zZWNvbmRhcnkgc2hhZG93LWxnIGZvY3VzOnJpbmctMSBmb2N1czpyaW5nLWluc2V0IGZvY3VzOnJpbmctcmluZy1wcmltYXJ5XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7b3B0aW9ucy5tYXAoKG9wdGlvbiwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtpbmRleCA9PT0gaGlnaGxpZ2h0ZWRJbmRleH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgJ2N1cnNvci1wb2ludGVyIHJvdW5kZWQtbWQgcHgtMyBweS0yJyxcbiAgICAgICAgICAgICAgICAgICdmb2N1czpiZy1zdXJmYWNlLXRlcnRpYXJ5IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTEgZm9jdXM6cmluZy1pbnNldCBmb2N1czpyaW5nLXJpbmctcHJpbWFyeScsXG4gICAgICAgICAgICAgICAgICBpbmRleCA9PT0gaGlnaGxpZ2h0ZWRJbmRleFxuICAgICAgICAgICAgICAgICAgICA/ICdiZy1zdXJmYWNlLWFjdGl2ZSB0ZXh0LXByaW1hcnknXG4gICAgICAgICAgICAgICAgICAgIDogJ3RleHQtc2Vjb25kYXJ5IGhvdmVyOmJnLXN1cmZhY2UtdGVydGlhcnknLFxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlU2VsZWN0KG9wdGlvbil9XG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInIHx8IGUua2V5ID09PSAnICcpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3Qob3B0aW9uKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge29wdGlvbn1cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvdWw+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9LFxuKTtcblxuSW5wdXRXaXRoRHJvcGRvd24uZGlzcGxheU5hbWUgPSAnSW5wdXRXaXRoRHJvcGRvd24nO1xuXG5leHBvcnQgZGVmYXVsdCBJbnB1dFdpdGhEcm9wZG93bjtcbiIsImltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgVFNob3dUb2FzdCB9IGZyb20gJ34vY29tbW9uJztcbmltcG9ydCB1c2VUb2FzdCBmcm9tICd+L2hvb2tzL3VzZVRvYXN0JztcblxudHlwZSBUb2FzdENvbnRleHRUeXBlID0ge1xuICBzaG93VG9hc3Q6ICh7IG1lc3NhZ2UsIHNldmVyaXR5LCBzaG93SWNvbiwgZHVyYXRpb24gfTogVFNob3dUb2FzdCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCBjb25zdCBUb2FzdENvbnRleHQgPSBjcmVhdGVDb250ZXh0PFRvYXN0Q29udGV4dFR5cGU+KHtcbiAgc2hvd1RvYXN0OiAoKSA9PiAoe30pLFxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VUb2FzdENvbnRleHQoKSB7XG4gIHJldHVybiB1c2VDb250ZXh0KFRvYXN0Q29udGV4dCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFRvYXN0UHJvdmlkZXIoeyBjaGlsZHJlbiB9OiB7IGNoaWxkcmVuOiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCB7IHNob3dUb2FzdCB9ID0gdXNlVG9hc3QoKTtcblxuICByZXR1cm4gPFRvYXN0Q29udGV4dC5Qcm92aWRlciB2YWx1ZT17eyBzaG93VG9hc3QgfX0+e2NoaWxkcmVufTwvVG9hc3RDb250ZXh0LlByb3ZpZGVyPjtcbn1cbiJdLCJuYW1lcyI6WyJ0d01lcmdlIiwiY2xzeCIsImdldEluaXRpYWxUaGVtZSIsIkFjY29yZGlvblByaW1pdGl2ZSIsIlJlYWN0IiwiX2pzeCIsIl9qc3hzIiwiQ2hldnJvbkRvd25JY29uIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiZm9yd2FyZFJlZiIsIkFyaWFraXQiLCJBbGVydERpYWxvZ1ByaW1pdGl2ZSIsIlNsb3QiLCJDaGV2cm9uUmlnaHQiLCJNb3JlSG9yaXpvbnRhbCIsImN2YSIsIkNoZWNrYm94UHJpbWl0aXZlIiwiQ2hlY2siLCJFU2lkZSIsIk5vdGlmaWNhdGlvblNldmVyaXR5IiwiYXRvbSIsInVzZUF0b20iLCJ1c2VNZW1vIiwiY3JlYXRlQXZhdGFyIiwiaW5pdGlhbHMiLCJ1c2VTdGF0ZSIsIm1hdGNoU29ydGVyIiwidXNlQXRvbVZhbHVlIiwidXNlVHJhbnNsYXRpb24iLCJEaWFsb2ciLCJEaWFsb2dQcmltaXRpdmUiLCJEaWFsb2dUcmlnZ2VyIiwiRGlhbG9nUG9ydGFsIiwiRGlhbG9nT3ZlcmxheSIsIkRpYWxvZ0NvbnRlbnQiLCJYIiwiRGlhbG9nSGVhZGVyIiwiRGlhbG9nRm9vdGVyIiwiRGlhbG9nVGl0bGUiLCJEaWFsb2dEZXNjcmlwdGlvbiIsIkRpYWxvZ0Nsb3NlIiwiRHJvcGRvd25NZW51UHJpbWl0aXZlIiwiQ2hlY2tJY29uIiwiQ2lyY2xlSWNvbiIsIkNoZXZyb25SaWdodEljb24iLCJIb3ZlckNhcmRQcmltaXRpdmUiLCJ1c2VDYWxsYmFjayIsIkNvcHkiLCJFeWVPZmYiLCJFeWUiLCJMYWJlbFByaW1pdGl2ZSIsIlNsaWRlclByaW1pdGl2ZSIsIlNlcGFyYXRvclByaW1pdGl2ZSIsIlN3aXRjaFByaW1pdGl2ZXMiLCJUYWJzUHJpbWl0aXZlIiwidXNlTGF5b3V0RWZmZWN0IiwiUmFkaXhUb2FzdCIsIkFuaW1hdGVQcmVzZW5jZSIsIm1vdGlvbiIsIkNoZXZyb25MZWZ0IiwiUHJvZ3Jlc3NQcmltaXRpdmUiLCJPVFBJbnB1dCIsIk9UUElucHV0Q29udGV4dCIsIk1pbnVzIiwiU2VhcmNoIiwiUmVzaXphYmxlUHJpbWl0aXZlIiwiR3JpcFZlcnRpY2FsIiwiU2VsZWN0UHJpbWl0aXZlIiwiQ2FyZXRTb3J0SWNvbiIsIkNoZXZyb25VcEljb24iLCJtZW1vIiwiUGx1cyIsIl9GcmFnbWVudCIsIlJhZGl4U2VsZWN0IiwiQ29tYm9ib3hQcm92aWRlciIsInN0YXJ0VHJhbnNpdGlvbiIsIlNlYXJjaEljb24iLCJDb21ib2JveCIsIkNvbWJvYm94Q2FuY2VsIiwiQ29tYm9ib3hMaXN0IiwiQ29tYm9ib3hJdGVtIiwiU2VsZWN0IiwiZmxleFJlbmRlciIsInVzZVJlYWN0VGFibGUiLCJnZXRDb3JlUm93TW9kZWwiLCJnZXRTb3J0ZWRSb3dNb2RlbCIsImdldEZpbHRlcmVkUm93TW9kZWwiLCJ1c2VWaXJ0dWFsaXplciIsInVzZVNwcmluZ3MiLCJhbmltYXRlZCIsIlNlbGVjdFByb3ZpZGVyIiwiU2VsZWN0TGFiZWwiLCJTZWxlY3RBcnJvdyIsIlNlbGVjdFBvcG92ZXIiLCJTZWxlY3RJdGVtQ2hlY2siLCJTZWxlY3RJdGVtIiwiY3JlYXRlQ29udGV4dCIsInVzZUNvbnRleHQiLCJhdG9tV2l0aFN0b3JhZ2UiLCJNb25pdG9yIiwiTW9vbiIsIlN1biIsIkNpcmNsZUhlbHBJY29uIiwidXNlQ2hlY2tib3hTdG9yZSIsInVzZVN0b3JlU3RhdGUiLCJDaGVja2JveCIsIkxpc3Rib3giLCJMaXN0Ym94QnV0dG9uIiwiTGFiZWwiLCJUcmFuc2l0aW9uIiwiTGlzdGJveE9wdGlvbnMiLCJMaXN0Ym94T3B0aW9uIiwiQ2hldnJvbkRvd24iLCJTZWxlY3RSZW5kZXJlciIsImlzVmFsaWRFbGVtZW50IiwiT0dEaWFsb2dDbG9zZSIsIk9HRGlhbG9nQ29udGVudCIsIk9HRGlhbG9nSGVhZGVyIiwiT0dEaWFsb2dUaXRsZSIsIk9HRGlhbG9nRGVzY3JpcHRpb24iLCJPR0RpYWxvZ0Zvb3RlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtNQUlhLEVBQUUsR0FBRyxDQUFDLEdBQUcsTUFBb0IsS0FBWTtBQUNwRCxJQUFBLE9BQU9BLHFCQUFPLENBQUNDLFNBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM5Qjs7QUNOTyxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQVcsS0FBSTtBQUMzQyxJQUFBLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxlQUFlO0FBQ3JDLElBQUEsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUvQixRQUFRLElBQUk7QUFDVixRQUFBLEtBQUssSUFBSTtZQUNQLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLHNCQUFzQixFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzFEO0FBQ0YsUUFBQSxLQUFLLElBQUk7WUFDUCxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUMzRDtBQUNGLFFBQUEsS0FBSyxNQUFNO1lBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxDQUFDLENBQUM7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
3278
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy91dGlscy50cyIsIi4uL3NyYy91dGlscy90aGVtZS50cyIsIi4uL3NyYy91dGlscy9sb2dnZXIudHMiLCIuLi9zcmMvY29tcG9uZW50cy9BY2NvcmRpb24udHN4IiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWluamVjdC9kaXN0L3N0eWxlLWluamVjdC5lcy5qcyIsIi4uL3NyYy9jb21wb25lbnRzL0FuaW1hdGVkVGFicy50c3giLCIuLi9zcmMvY29tcG9uZW50cy9BbGVydERpYWxvZy50c3giLCIuLi9zcmMvY29tcG9uZW50cy9CcmVhZGNydW1iLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0J1dHRvbi50c3giLCIuLi9zcmMvY29tcG9uZW50cy9DaGVja2JveC50c3giLCIuLi9zcmMvY29tbW9uL2VudW0udHMiLCIuLi9zcmMvc3RvcmUudHMiLCIuLi9zcmMvaG9va3MvdXNlVG9hc3QudHMiLCIuLi9zcmMvaG9va3MvdXNlQXZhdGFyLnRzIiwiLi4vc3JjL2hvb2tzL3VzZUNvbWJvYm94LnRzIiwiLi4vc3JjL2hvb2tzL3VzZUxvY2FsaXplLnRzIiwiLi4vc3JjL2hvb2tzL3VzZU1lZGlhUXVlcnkudHN4IiwiLi4vc3JjL2hvb2tzL3VzZURlbGF5ZWRSZW5kZXIudHN4IiwiLi4vc3JjL2hvb2tzL3VzZU9uQ2xpY2tPdXRzaWRlLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvRGlhbG9nLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0Ryb3Bkb3duTWVudS50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Ib3ZlckNhcmQudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvSW5wdXQudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvSW5wdXROdW1iZXIudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvU2VjcmV0SW5wdXQudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvRmlsdGVySW5wdXQudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvTGFiZWwudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvT3JpZ2luYWxEaWFsb2cudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvUXVlc3Rpb25NYXJrLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL1NsaWRlci50c3giLCIuLi9zcmMvY29tcG9uZW50cy9TZXBhcmF0b3IudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvSW5wdXRDb21ib2JveC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Ta2VsZXRvbi50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Td2l0Y2gudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvVGFibGUudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvVGFicy50c3giLCIuLi9zcmMvY29tcG9uZW50cy9UYWcudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvVGV4dGFyZWEudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvVGV4dGFyZWFBdXRvc2l6ZS50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Ub2FzdC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Ub29sdGlwLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL1BhZ2luYXRpb24udHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvUHJvZ3Jlc3MudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvSW5wdXRPVFAudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvTXVsdGlTZWFyY2gudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvUmVzaXphYmxlLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL1NlbGVjdC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9SYWRpby50c3giLCIuLi9zcmMvY29tcG9uZW50cy9CYWRnZS50c3giLCIuLi9zcmMvc3Zncy9BcmNoaXZlSWNvbi50c3giLCIuLi9zcmMvc3Zncy9CbG9ja3MudHN4IiwiLi4vc3JjL3N2Z3MvUGx1Z2luLnRzeCIsIi4uL3NyYy9zdmdzL0dQVEljb24udHN4IiwiLi4vc3JjL3N2Z3MvRWRpdEljb24udHN4IiwiLi4vc3JjL3N2Z3MvRGF0YUljb24udHN4IiwiLi4vc3JjL3N2Z3MvU2lkZWJhci50c3giLCIuLi9zcmMvc3Zncy9Nb2JpbGVTaWRlYmFyLnRzeCIsIi4uL3NyYy9zdmdzL1NwaW5uZXIudHN4IiwiLi4vc3JjL3N2Z3MvQ2xpcGJvYXJkLnRzeCIsIi4uL3NyYy9zdmdzL0NoZWNrTWFyay50c3giLCIuLi9zcmMvc3Zncy9Dcm9zc0ljb24udHN4IiwiLi4vc3JjL3N2Z3MvTG9nT3V0SWNvbi50c3giLCIuLi9zcmMvc3Zncy9DdXN0b21NaW5pbWFsSWNvbi50c3giLCIuLi9zcmMvc3Zncy9MaWdodG5pbmdJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0F0dGFjaG1lbnRJY29uLnRzeCIsIi4uL3NyYy9zdmdzL01lc3NhZ2VzU3F1YXJlZC50c3giLCIuLi9zcmMvc3Zncy9TdG9wR2VuZXJhdGluZ0ljb24udHN4IiwiLi4vc3JjL3N2Z3MvUmVnZW5lcmF0ZUljb24udHN4IiwiLi4vc3JjL3N2Z3MvQ29udGludWVJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0dvb2dsZUljb24udHN4IiwiLi4vc3JjL3N2Z3MvRmFjZWJvb2tJY29uLnRzeCIsIi4uL3NyYy9zdmdzL09wZW5JREljb24udHN4IiwiLi4vc3JjL3N2Z3MvR2l0aHViSWNvbi50c3giLCIuLi9zcmMvc3Zncy9EaXNjb3JkSWNvbi50c3giLCIuLi9zcmMvc3Zncy9BcHBsZUljb24udHN4IiwiLi4vc3JjL3N2Z3MvU2FtbEljb24udHN4IiwiLi4vc3JjL3N2Z3MvQW50aHJvcGljSWNvbi50c3giLCIuLi9zcmMvc3Zncy9TZW5kSWNvbi50c3giLCIuLi9zcmMvc3Zncy9MaW5rSWNvbi50c3giLCIuLi9zcmMvc3Zncy9Eb3RzSWNvbi50c3giLCIuLi9zcmMvc3Zncy9HZWFySWNvbi50c3giLCIuLi9zcmMvc3Zncy9QaW5JY29uLnRzeCIsIi4uL3NyYy9zdmdzL1RyYXNoSWNvbi50c3giLCIuLi9zcmMvc3Zncy9NaW5pbWFsUGx1Z2luLnRzeCIsIi4uL3NyYy9zdmdzL0F6dXJlTWluaW1hbEljb24udHN4IiwiLi4vc3JjL3N2Z3MvT3BlbkFJTWluaW1hbEljb24udHN4IiwiLi4vc3JjL3N2Z3MvQ2hhdEdQVE1pbmltYWxJY29uLnRzeCIsIi4uL3NyYy9zdmdzL1BhTE1pbmltYWxJY29uLnRzeCIsIi4uL3NyYy9zdmdzL1BhTE1JY29uLnRzeCIsIi4uL3NyYy9zdmdzL0NvZGV5SWNvbi50c3giLCIuLi9zcmMvc3Zncy9HZW1pbmlJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0dvb2dsZU1pbmltYWxJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0FudGhyb3BpY01pbmltYWxJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0xpc3RlbmluZ0ljb24udHN4IiwiLi4vc3JjL3N2Z3MvVm9sdW1lSWNvbi50c3giLCIuLi9zcmMvc3Zncy9Wb2x1bWVNdXRlSWNvbi50c3giLCIuLi9zcmMvc3Zncy9TZW5kTWVzc2FnZUljb24udHN4IiwiLi4vc3JjL3N2Z3MvVXNlckljb24udHN4IiwiLi4vc3JjL3N2Z3MvTG9ja0ljb24udHN4IiwiLi4vc3JjL3N2Z3MvTmV3Q2hhdEljb24udHN4IiwiLi4vc3JjL3N2Z3MvRXhwZXJpbWVudEljb24udHN4IiwiLi4vc3JjL3N2Z3MvR29vZ2xlSWNvbkNoYXQudHN4IiwiLi4vc3JjL3N2Z3MvQmlydGhkYXlJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0Fzc2lzdGFudEljb24udHN4IiwiLi4vc3JjL3N2Z3MvU3BhcmtsZXMudHN4IiwiLi4vc3JjL3N2Z3MvU3BlZWNoSWNvbi50c3giLCIuLi9zcmMvc3Zncy9TYXZlSWNvbi50c3giLCIuLi9zcmMvc3Zncy9DaXJjbGVIZWxwSWNvbi50c3giLCIuLi9zcmMvc3Zncy9CZWRyb2NrSWNvbi50c3giLCIuLi9zcmMvc3Zncy9UaHVtYlVwSWNvbi50c3giLCIuLi9zcmMvc3Zncy9UaHVtYkRvd25JY29uLnRzeCIsIi4uL3NyYy9zdmdzL1hBSWNvbi50c3giLCIuLi9zcmMvc3Zncy9QZXJzb25hbGl6YXRpb25JY29uLnRzeCIsIi4uL3NyYy9zdmdzL01DUEljb24udHN4IiwiLi4vc3JjL3N2Z3MvVmVjdG9ySWNvbi50c3giLCIuLi9zcmMvc3Zncy9TcXVpcmNsZVBsdXNJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0F1ZGlvUGF0aHMudHN4IiwiLi4vc3JjL3N2Z3MvQ29kZVBhdGhzLnRzeCIsIi4uL3NyYy9zdmdzL0ZpbGVJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0ZpbGVQYXRocy50c3giLCIuLi9zcmMvc3Zncy9TaGVldFBhdGhzLnRzeCIsIi4uL3NyYy9zdmdzL1RleHRQYXRocy50c3giLCIuLi9zcmMvc3Zncy9WaWRlb1BhdGhzLnRzeCIsIi4uL3NyYy9zdmdzL1NoYXJlUG9pbnRJY29uLnRzeCIsIi4uL3NyYy9zdmdzL01vb25zaG90SWNvbi50c3giLCIuLi9zcmMvY29tcG9uZW50cy9BdmF0YXIudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvQ29tYm9ib3gudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvRHJvcGRvd24udHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvQW5pbWF0ZWRTZWFyY2hJbnB1dC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9EYXRhVGFibGUudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvU3BsaXRUZXh0LnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0Zvcm1JbnB1dC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9QaXhlbENhcmQudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvRmlsZVVwbG9hZC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9NdWx0aVNlbGVjdC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Ecm9wZG93blBvcHVwLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0RlbGF5ZWRSZW5kZXIudHN4IiwiLi4vc3JjL3RoZW1lL3V0aWxzL2FwcGx5VGhlbWUudHMiLCIuLi9zcmMvdGhlbWUvY29udGV4dC9UaGVtZVByb3ZpZGVyLnRzeCIsIi4uL3NyYy90aGVtZS9hdG9tcy90aGVtZUF0b21zLnRzIiwiLi4vc3JjL3RoZW1lL3RoZW1lcy9kZWZhdWx0LnRzIiwiLi4vc3JjL3RoZW1lL3RoZW1lcy9kYXJrLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGhlbWVTZWxlY3Rvci50c3giLCIuLi9zcmMvY29tcG9uZW50cy9JbmZvSG92ZXJDYXJkLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0NoZWNrYm94QnV0dG9uLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0RpYWxvZ1RlbXBsYXRlLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL1NlbGVjdERyb3BEb3duLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0NvbnRyb2xDb21ib2JveC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9PR0RpYWxvZ1RlbXBsYXRlLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0lucHV0V2l0aERyb3BEb3duLnRzeCIsIi4uL3NyYy9Qcm92aWRlcnMvVG9hc3RDb250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBFU00gdXRpbGl0eSBmdW5jdGlvbnNcbmltcG9ydCB7IHR5cGUgQ2xhc3NWYWx1ZSwgY2xzeCB9IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcblxuZXhwb3J0IGNvbnN0IGNuID0gKC4uLmlucHV0czogQ2xhc3NWYWx1ZVtdKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIHR3TWVyZ2UoY2xzeChpbnB1dHMpKTtcbn07XG4iLCJleHBvcnQgY29uc3QgYXBwbHlGb250U2l6ZSA9ICh2YWw6IHN0cmluZykgPT4ge1xuICBjb25zdCByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICBjb25zdCBzaXplID0gdmFsLnNwbGl0KCctJylbMV07IC8vIFRoaXMgd2lsbCBiZSAneHMnLCAnc20nLCAnYmFzZScsICdsZycsIG9yICd4bCdcblxuICBzd2l0Y2ggKHNpemUpIHtcbiAgICBjYXNlICd4cyc6XG4gICAgICByb290LnN0eWxlLnNldFByb3BlcnR5KCctLW1hcmtkb3duLWZvbnQtc2l6ZScsICcwLjc1cmVtJyk7IC8vIDEycHhcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3NtJzpcbiAgICAgIHJvb3Quc3R5bGUuc2V0UHJvcGVydHkoJy0tbWFya2Rvd24tZm9udC1zaXplJywgJzAuODc1cmVtJyk7IC8vIDE0cHhcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2Jhc2UnOlxuICAgICAgcm9vdC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1tYXJrZG93bi1mb250LXNpemUnLCAnMXJlbScpOyAvLyAxNnB4XG4gICAgICBicmVhaztcbiAgICBjYXNlICdsZyc6XG4gICAgICByb290LnN0eWxlLnNldFByb3BlcnR5KCctLW1hcmtkb3duLWZvbnQtc2l6ZScsICcxLjEyNXJlbScpOyAvLyAxOHB4XG4gICAgICBicmVhaztcbiAgICBjYXNlICd4bCc6XG4gICAgICByb290LnN0eWxlLnNldFByb3BlcnR5KCctLW1hcmtkb3duLWZvbnQtc2l6ZScsICcxLjI1cmVtJyk7IC8vIDIwcHhcbiAgICAgIGJyZWFrO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SW5pdGlhbFRoZW1lID0gKCkgPT4ge1xuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmxvY2FsU3RvcmFnZSkge1xuICAgIGNvbnN0IHN0b3JlZFByZWZzID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjb2xvci10aGVtZScpO1xuICAgIGlmICh0eXBlb2Ygc3RvcmVkUHJlZnMgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gc3RvcmVkUHJlZnM7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlck1lZGlhID0gd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKTtcbiAgICBpZiAodXNlck1lZGlhLm1hdGNoZXMpIHtcbiAgICAgIHJldHVybiAnZGFyayc7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICdsaWdodCc7XG59O1xuIiwiY29uc3QgaXNEZXZlbG9wbWVudCA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnO1xuY29uc3QgaXNMb2dnZXJFbmFibGVkID0gcHJvY2Vzcy5lbnYuVklURV9FTkFCTEVfTE9HR0VSID09PSAndHJ1ZSc7XG5jb25zdCBsb2dnZXJGaWx0ZXIgPSBwcm9jZXNzLmVudi5WSVRFX0xPR0dFUl9GSUxURVIgfHwgJyc7XG5cbnR5cGUgTG9nRnVuY3Rpb24gPSAoLi4uYXJnczogdW5rbm93bltdKSA9PiB2b2lkO1xuXG5jb25zdCBjcmVhdGVMb2dGdW5jdGlvbiA9IChcbiAgY29uc29sZU1ldGhvZDogTG9nRnVuY3Rpb24sXG4gIHR5cGU/OiAnbG9nJyB8ICd3YXJuJyB8ICdlcnJvcicgfCAnaW5mbycgfCAnZGVidWcnIHwgJ2RpcicsXG4pOiBMb2dGdW5jdGlvbiA9PiB7XG4gIHJldHVybiAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgaWYgKGlzRGV2ZWxvcG1lbnQgfHwgaXNMb2dnZXJFbmFibGVkKSB7XG4gICAgICBjb25zdCB0YWcgPSB0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycgPyBhcmdzWzBdIDogJyc7XG4gICAgICBpZiAoc2hvdWxkTG9nKHRhZykpIHtcbiAgICAgICAgaWYgKHRhZyAmJiB0eXBlb2YgYXJnc1sxXSA9PT0gJ3N0cmluZycgJiYgdHlwZSA9PT0gJ2Vycm9yJykge1xuICAgICAgICAgIGNvbnNvbGVNZXRob2QoYFske3RhZ31dICR7YXJnc1sxXX1gLCAuLi5hcmdzLnNsaWNlKDIpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0YWcgJiYgYXJncy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgY29uc29sZU1ldGhvZChgWyR7dGFnfV1gLCAuLi5hcmdzLnNsaWNlKDEpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlTWV0aG9kKC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuY29uc3QgbG9nZ2VyID0ge1xuICBsb2c6IGNyZWF0ZUxvZ0Z1bmN0aW9uKGNvbnNvbGUubG9nLCAnbG9nJyksXG4gIGRpcjogY3JlYXRlTG9nRnVuY3Rpb24oY29uc29sZS5kaXIsICdkaXInKSxcbiAgd2FybjogY3JlYXRlTG9nRnVuY3Rpb24oY29uc29sZS53YXJuLCAnd2FybicpLFxuICBpbmZvOiBjcmVhdGVMb2dGdW5jdGlvbihjb25zb2xlLmluZm8sICdpbmZvJyksXG4gIGVycm9yOiBjcmVhdGVMb2dGdW5jdGlvbihjb25zb2xlLmVycm9yLCAnZXJyb3InKSxcbiAgZGVidWc6IGNyZWF0ZUxvZ0Z1bmN0aW9uKGNvbnNvbGUuZGVidWcsICdkZWJ1ZycpLFxufTtcblxuZnVuY3Rpb24gc2hvdWxkTG9nKHRhZzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghbG9nZ2VyRmlsdGVyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLyogSWYgbm8gdGFnIGlzIHByb3ZpZGVkLCBhbHdheXMgbG9nICovXG4gIGlmICghdGFnKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGxvZ2dlckZpbHRlclxuICAgIC5zcGxpdCgnLCcpXG4gICAgLnNvbWUoKGZpbHRlcikgPT4gdGFnLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyLnRyaW0oKS50b0xvd2VyQ2FzZSgpKSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGxvZ2dlcjtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIEFjY29yZGlvblByaW1pdGl2ZSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtYWNjb3JkaW9uJztcbmltcG9ydCB7IENoZXZyb25Eb3duSWNvbiB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1pY29ucyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5jb25zdCBBY2NvcmRpb24gPSBBY2NvcmRpb25QcmltaXRpdmUuUm9vdDtcblxuY29uc3QgQWNjb3JkaW9uSXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIEFjY29yZGlvblByaW1pdGl2ZS5JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBBY2NvcmRpb25QcmltaXRpdmUuSXRlbT5cbj4oKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8QWNjb3JkaW9uUHJpbWl0aXZlLkl0ZW0gcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oJ2JvcmRlci1iJywgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuKSk7XG5BY2NvcmRpb25JdGVtLmRpc3BsYXlOYW1lID0gJ0FjY29yZGlvbkl0ZW0nO1xuXG5jb25zdCBBY2NvcmRpb25UcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQWNjb3JkaW9uUHJpbWl0aXZlLlRyaWdnZXI+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEFjY29yZGlvblByaW1pdGl2ZS5UcmlnZ2VyPlxuPigoeyBjbGFzc05hbWUgPSAnJywgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8QWNjb3JkaW9uUHJpbWl0aXZlLkhlYWRlciBjbGFzc05hbWU9XCJmbGV4XCI+XG4gICAgPEFjY29yZGlvblByaW1pdGl2ZS5UcmlnZ2VyXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdmbGV4IGZsZXgtMSBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB5LTQgdGV4dC1zbSBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWFsbCBob3Zlcjp1bmRlcmxpbmUgWyZbZGF0YS1zdGF0ZT1vcGVuXT5zdmddOnJvdGF0ZS0xODAnLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDxDaGV2cm9uRG93bkljb24gY2xhc3NOYW1lPVwiaC00IHctNCBzaHJpbmstMCB0ZXh0LW11dGVkLWZvcmVncm91bmQgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMjAwXCIgLz5cbiAgICA8L0FjY29yZGlvblByaW1pdGl2ZS5UcmlnZ2VyPlxuICA8L0FjY29yZGlvblByaW1pdGl2ZS5IZWFkZXI+XG4pKTtcbkFjY29yZGlvblRyaWdnZXIuZGlzcGxheU5hbWUgPSBBY2NvcmRpb25QcmltaXRpdmUuVHJpZ2dlci5kaXNwbGF5TmFtZTtcblxuY29uc3QgQWNjb3JkaW9uQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIEFjY29yZGlvblByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBBY2NvcmRpb25QcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lID0gJycsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPEFjY29yZGlvblByaW1pdGl2ZS5Db250ZW50XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPVwib3ZlcmZsb3cteS1oaWRkZW4gb3ZlcmZsb3cteC12aXNpYmxlIHRleHQtc20gdHJhbnNpdGlvbi1vcGFjaXR5IGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1hY2NvcmRpb24tdXAgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1hY2NvcmRpb24tZG93biBkYXRhLVtzdGF0ZT1jbG9zZWRdOm9wYWNpdHktMCBkYXRhLVtzdGF0ZT1vcGVuXTpvcGFjaXR5LTEwMFwiXG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPGRpdiBjbGFzc05hbWU9e2NuKCdwYi00IHB0LTAnLCBjbGFzc05hbWUpfT57Y2hpbGRyZW59PC9kaXY+XG4gIDwvQWNjb3JkaW9uUHJpbWl0aXZlLkNvbnRlbnQ+XG4pKTtcbkFjY29yZGlvbkNvbnRlbnQuZGlzcGxheU5hbWUgPSBBY2NvcmRpb25QcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgQWNjb3JkaW9uLCBBY2NvcmRpb25JdGVtLCBBY2NvcmRpb25UcmlnZ2VyLCBBY2NvcmRpb25Db250ZW50IH07XG4iLCJmdW5jdGlvbiBzdHlsZUluamVjdChjc3MsIHJlZikge1xuICBpZiAoIHJlZiA9PT0gdm9pZCAwICkgcmVmID0ge307XG4gIHZhciBpbnNlcnRBdCA9IHJlZi5pbnNlcnRBdDtcblxuICBpZiAoIWNzcyB8fCB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7IHJldHVybjsgfVxuXG4gIHZhciBoZWFkID0gZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICBzdHlsZS50eXBlID0gJ3RleHQvY3NzJztcblxuICBpZiAoaW5zZXJ0QXQgPT09ICd0b3AnKSB7XG4gICAgaWYgKGhlYWQuZmlyc3RDaGlsZCkge1xuICAgICAgaGVhZC5pbnNlcnRCZWZvcmUoc3R5bGUsIGhlYWQuZmlyc3RDaGlsZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgfVxuXG4gIGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHN0eWxlSW5qZWN0O1xuIiwiaW1wb3J0ICogYXMgQXJpYWtpdCBmcm9tICdAYXJpYWtpdC9yZWFjdCc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgRWxlbWVudFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5pbXBvcnQgJy4vQW5pbWF0ZWRUYWJzLmNzcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFiSXRlbSB7XG4gIGlkPzogc3RyaW5nO1xuICBsYWJlbDogUmVhY3QuUmVhY3ROb2RlO1xuICBjb250ZW50OiBSZWFjdC5SZWFjdE5vZGU7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbmltYXRlZFRhYnNQcm9wcyB7XG4gIHRhYnM6IFRhYkl0ZW1bXTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICB0YWJMaXN0Q2xhc3NOYW1lPzogc3RyaW5nO1xuICB0YWJDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHRhYlBhbmVsQ2xhc3NOYW1lPzogc3RyaW5nO1xuICB0YWJMaXN0UHJvcHM/OiBBcmlha2l0LlRhYkxpc3RQcm9wcztcbiAgY29udGFpbmVyQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBkZWZhdWx0U2VsZWN0ZWRJZD86IHN0cmluZztcbn1cblxuZnVuY3Rpb24gdXNlUHJldmlvdXM8VD4odmFsdWU6IFQpIHtcbiAgY29uc3QgcmVmID0gdXNlUmVmPFQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgfSwgW3ZhbHVlXSk7XG4gIHJldHVybiByZWYuY3VycmVudDtcbn1cblxuY29uc3QgVGFiID0gZm9yd2FyZFJlZjxFbGVtZW50UmVmPHR5cGVvZiBBcmlha2l0LlRhYj4sIEFyaWFraXQuVGFiUHJvcHM+KGZ1bmN0aW9uIFRhYihwcm9wcywgcmVmKSB7XG4gIGNvbnN0IHRhYlJlZiA9IHVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHRhYkVsZW1lbnQgPSB0YWJSZWYuY3VycmVudDtcbiAgICBpZiAoIXRhYkVsZW1lbnQpIHJldHVybjtcblxuICAgIGNvbnN0IHVwZGF0ZVN0YXRlID0gKCkgPT4ge1xuICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IHRhYkVsZW1lbnQuZ2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJykgPT09ICd0cnVlJztcbiAgICAgIHRhYkVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLXN0YXRlJywgaXNTZWxlY3RlZCA/ICdhY3RpdmUnIDogJ2luYWN0aXZlJyk7XG4gICAgfTtcblxuICAgIHVwZGF0ZVN0YXRlKCk7XG5cbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHVwZGF0ZVN0YXRlKTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKHRhYkVsZW1lbnQsIHsgYXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRlRmlsdGVyOiBbJ2FyaWEtc2VsZWN0ZWQnXSB9KTtcblxuICAgIHJldHVybiAoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH0sIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDxBcmlha2l0LlRhYlxuICAgICAgcmVmPXsobm9kZSkgPT4ge1xuICAgICAgICAvLyBGb3J3YXJkIHRoZSByZWYgdG8gYm90aCBvdXIgbG9jYWwgcmVmIGFuZCB0aGUgcHJvdmlkZWQgcmVmXG4gICAgICAgIHRhYlJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgaWYgKHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicpIHJlZihub2RlKTtcbiAgICAgICAgZWxzZSBpZiAocmVmKSByZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICB9fVxuICAgICAgey4uLnByb3BzfVxuICAgICAgY2xhc3NOYW1lPXtgYW5pbWF0ZWQtdGFiIGFyaWEtc2VsZWN0ZWQ6dGV4dC10b2tlbi10ZXh0LXByaW1hcnkgZmxleCBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTIgd2hpdGVzcGFjZS1ub3dyYXAgYm9yZGVyLW5vbmUgdGV4dC1zbSBmb250LW1lZGl1bSBvdXRsaW5lLW5vbmUgdHJhbnNpdGlvbi1jb2xvcnMgYXJpYS1kaXNhYmxlZDpvcGFjaXR5LTUwICR7cHJvcHMuY2xhc3NOYW1lIHx8ICcnfWB9XG4gICAgLz5cbiAgKTtcbn0pO1xuXG5jb25zdCBUYWJQYW5lbCA9IGZvcndhcmRSZWY8RWxlbWVudFJlZjx0eXBlb2YgQXJpYWtpdC5UYWJQYW5lbD4sIEFyaWFraXQuVGFiUGFuZWxQcm9wcz4oXG4gIGZ1bmN0aW9uIFRhYlBhbmVsKHByb3BzLCByZWYpIHtcbiAgICBjb25zdCB0YWIgPSBBcmlha2l0LnVzZVRhYkNvbnRleHQoKTtcbiAgICBjb25zdCBwcmV2aW91c1RhYklkID0gdXNlUHJldmlvdXMoQXJpYWtpdC51c2VTdG9yZVN0YXRlKHRhYiwgJ3NlbGVjdGVkSWQnKSk7XG4gICAgY29uc3Qgd2FzT3BlbiA9IHByb3BzLnRhYklkICYmIHByZXZpb3VzVGFiSWQgPT09IHByb3BzLnRhYklkO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxBcmlha2l0LlRhYlBhbmVsXG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIGRhdGEtd2FzLW9wZW49e3dhc09wZW4gfHwgdW5kZWZpbmVkfVxuICAgICAgICBjbGFzc05hbWU9e2BhbmltYXRlZC10YWItcGFuZWwgbWF4LXctZnVsbCAke3Byb3BzLmNsYXNzTmFtZSB8fCAnJ31gfVxuICAgICAgLz5cbiAgICApO1xuICB9LFxuKTtcblxuZXhwb3J0IGZ1bmN0aW9uIEFuaW1hdGVkVGFicyh7XG4gIHRhYnMsXG4gIGNsYXNzTmFtZSA9ICcnLFxuICB0YWJMaXN0Q2xhc3NOYW1lID0gJycsXG4gIHRhYkNsYXNzTmFtZSA9ICcnLFxuICB0YWJQYW5lbENsYXNzTmFtZSA9ICcnLFxuICBjb250YWluZXJDbGFzc05hbWUgPSAnJyxcbiAgdGFiTGlzdFByb3BzID0ge30sXG4gIGRlZmF1bHRTZWxlY3RlZElkLFxufTogQW5pbWF0ZWRUYWJzUHJvcHMpIHtcbiAgY29uc3QgdGFiSWRzID0gdGFicy5tYXAoKHRhYiwgaW5kZXgpID0+IHRhYi5pZCB8fCBgdGFiLSR7aW5kZXh9YCk7XG4gIGNvbnN0IGZpcnN0VGFiSWQgPSBkZWZhdWx0U2VsZWN0ZWRJZCB8fCB0YWJJZHNbMF07XG4gIGNvbnN0IHRhYkxpc3RSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHRhYkxpc3QgPSB0YWJMaXN0UmVmLmN1cnJlbnQ7XG4gICAgaWYgKCF0YWJMaXN0KSByZXR1cm47XG5cbiAgICAvLyBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHVuZGVybGluZSBwb3NpdGlvblxuICAgIGNvbnN0IHVwZGF0ZVVuZGVybGluZSA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGFjdGl2ZVRhYiA9IHRhYkxpc3QucXVlcnlTZWxlY3RvcignW2RhdGEtc3RhdGU9XCJhY3RpdmVcIl0nKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGlmICghYWN0aXZlVGFiKSByZXR1cm47XG5cbiAgICAgIHRhYkxpc3Quc3R5bGUuc2V0UHJvcGVydHkoJy0tdGFiLWxlZnQnLCBgJHthY3RpdmVUYWIub2Zmc2V0TGVmdH1weGApO1xuICAgICAgdGFiTGlzdC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS10YWItd2lkdGgnLCBgJHthY3RpdmVUYWIub2Zmc2V0V2lkdGh9cHhgKTtcbiAgICB9O1xuXG4gICAgdXBkYXRlVW5kZXJsaW5lKCk7XG5cbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHVwZGF0ZVVuZGVybGluZSk7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0YWJMaXN0LCB7IGF0dHJpYnV0ZXM6IHRydWUsIHN1YnRyZWU6IHRydWUsIGF0dHJpYnV0ZUZpbHRlcjogWydkYXRhLXN0YXRlJ10gfSk7XG5cbiAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICB9LCBbdGFic10pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2B3LWZ1bGwgJHtjbGFzc05hbWV9YH0+XG4gICAgICA8QXJpYWtpdC5UYWJQcm92aWRlciBkZWZhdWx0U2VsZWN0ZWRJZD17Zmlyc3RUYWJJZH0+XG4gICAgICAgIDxBcmlha2l0LlRhYkxpc3RcbiAgICAgICAgICByZWY9e3RhYkxpc3RSZWZ9XG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlRhYnNcIlxuICAgICAgICAgIGNsYXNzTmFtZT17YGFuaW1hdGVkLXRhYi1saXN0IGZsZXggcHktMSAke3RhYkxpc3RDbGFzc05hbWV9YH1cbiAgICAgICAgICB7Li4udGFiTGlzdFByb3BzfVxuICAgICAgICA+XG4gICAgICAgICAge3RhYnMubWFwKCh0YWIsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8VGFiXG4gICAgICAgICAgICAgIGtleT17dGFiSWRzW2luZGV4XX1cbiAgICAgICAgICAgICAgaWQ9e3RhYklkc1tpbmRleF19XG4gICAgICAgICAgICAgIGRpc2FibGVkPXt0YWIuZGlzYWJsZWR9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17dGFiQ2xhc3NOYW1lfVxuICAgICAgICAgICAgICBkYXRhLXN0YXRlPXt0YWJJZHNbaW5kZXhdID09PSBmaXJzdFRhYklkID8gJ2FjdGl2ZScgOiAnaW5hY3RpdmUnfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7LyogVHlwZVNjcmlwdCB3b3JrYXJvdW5kIGZvciBSZWFjdCBpMThuZXh0IGNoaWxkcmVuIHR5cGUgY29tcGF0aWJpbGl0eSAqL31cbiAgICAgICAgICAgICAge3RhYi5sYWJlbH1cbiAgICAgICAgICAgIDwvVGFiPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0FyaWFraXQuVGFiTGlzdD5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICdhbmltYXRlZC1wYW5lbHMgcmVsYXRpdmUgZmxleCB3LWZ1bGwgZmxleC1jb2wgaXRlbXMtY2VudGVyIG92ZXJmbG93LWhpZGRlbiBwLTAnLFxuICAgICAgICAgICAgY29udGFpbmVyQ2xhc3NOYW1lLFxuICAgICAgICAgICl9XG4gICAgICAgID5cbiAgICAgICAgICB7dGFicy5tYXAoKHRhYiwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxUYWJQYW5lbFxuICAgICAgICAgICAgICBrZXk9e2BwYW5lbC0ke3RhYklkc1tpbmRleF19YH1cbiAgICAgICAgICAgICAgaWQ9e2BwYW5lbC0ke3RhYklkc1tpbmRleF19YH1cbiAgICAgICAgICAgICAgdGFiSWQ9e3RhYklkc1tpbmRleF19XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17dGFiUGFuZWxDbGFzc05hbWV9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsvKiBUeXBlU2NyaXB0IHdvcmthcm91bmQgZm9yIFJlYWN0IGkxOG5leHQgY2hpbGRyZW4gdHlwZSBjb21wYXRpYmlsaXR5ICovfVxuICAgICAgICAgICAgICB7dGFiLmNvbnRlbnR9XG4gICAgICAgICAgICA8L1RhYlBhbmVsPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvQXJpYWtpdC5UYWJQcm92aWRlcj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIEFsZXJ0RGlhbG9nUHJpbWl0aXZlIGZyb20gJ0ByYWRpeC11aS9yZWFjdC1hbGVydC1kaWFsb2cnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuY29uc3QgQWxlcnREaWFsb2cgPSBBbGVydERpYWxvZ1ByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBBbGVydERpYWxvZ1RyaWdnZXIgPSBBbGVydERpYWxvZ1ByaW1pdGl2ZS5UcmlnZ2VyO1xuXG50eXBlIEFsZXJ0UG9ydGFsUHJvcHMgPSBBbGVydERpYWxvZ1ByaW1pdGl2ZS5BbGVydERpYWxvZ1BvcnRhbFByb3BzICYgeyBjbGFzc05hbWU/OiBzdHJpbmcgfTtcblxuY29uc3QgQWxlcnREaWFsb2dQb3J0YWwgPSAoeyBjbGFzc05hbWUgPSAnJywgY2hpbGRyZW4sIC4uLnByb3BzIH06IEFsZXJ0UG9ydGFsUHJvcHMpID0+IChcbiAgPEFsZXJ0RGlhbG9nUHJpbWl0aXZlLlBvcnRhbCBjbGFzc05hbWU9e2NuKGNsYXNzTmFtZSl9IHsuLi4ocHJvcHMgYXMgQWxlcnRQb3J0YWxQcm9wcyl9PlxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZml4ZWQgaW5zZXQtMCB6LTUwIGZsZXggaXRlbXMtZW5kIGp1c3RpZnktY2VudGVyIHNtOml0ZW1zLWNlbnRlclwiPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvZGl2PlxuICA8L0FsZXJ0RGlhbG9nUHJpbWl0aXZlLlBvcnRhbD5cbik7XG5BbGVydERpYWxvZ1BvcnRhbC5kaXNwbGF5TmFtZSA9IEFsZXJ0RGlhbG9nUHJpbWl0aXZlLlBvcnRhbC5kaXNwbGF5TmFtZTtcblxuY29uc3QgQWxlcnREaWFsb2dPdmVybGF5ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuT3ZlcmxheT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuT3ZlcmxheT5cbj4oKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8QWxlcnREaWFsb2dQcmltaXRpdmUuT3ZlcmxheVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAnZml4ZWQgaW5zZXQtMCB6LTUwIGJnLWdyYXktNTAwLzkwIHRyYW5zaXRpb24tb3BhY2l0eSBhbmltYXRlLWluIGZhZGUtaW4gZGFyazpiZy1ncmF5LTgwMC85MCcsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gICAgcmVmPXtyZWZ9XG4gIC8+XG4pKTtcbkFsZXJ0RGlhbG9nT3ZlcmxheS5kaXNwbGF5TmFtZSA9IEFsZXJ0RGlhbG9nUHJpbWl0aXZlLk92ZXJsYXkuZGlzcGxheU5hbWU7XG5cbmNvbnN0IEFsZXJ0RGlhbG9nQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPEFsZXJ0RGlhbG9nUG9ydGFsPlxuICAgIDxBbGVydERpYWxvZ092ZXJsYXkgLz5cbiAgICA8QWxlcnREaWFsb2dQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAnZml4ZWQgei01MCBncmlkIHctZnVsbCBtYXgtdy1sZyBzY2FsZS0xMDAgZ2FwLTQgYmctd2hpdGUgcC02IG9wYWNpdHktMTAwIGFuaW1hdGUtaW4gZmFkZS1pbi05MCBzbGlkZS1pbi1mcm9tLWJvdHRvbS0xMCBzbTpyb3VuZGVkLWxnIHNtOnpvb20taW4tOTAgc206c2xpZGUtaW4tZnJvbS1ib3R0b20tMCBtZDp3LWZ1bGwnLFxuICAgICAgICAnZGFyazpiZy1ncmF5LTkwMCcsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9BbGVydERpYWxvZ1BvcnRhbD5cbikpO1xuQWxlcnREaWFsb2dDb250ZW50LmRpc3BsYXlOYW1lID0gQWxlcnREaWFsb2dQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgQWxlcnREaWFsb2dIZWFkZXIgPSAoeyBjbGFzc05hbWUgPSAnJywgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPXtjbignZmxleCBmbGV4LWNvbCBzcGFjZS15LTIgdGV4dC1jZW50ZXIgc206dGV4dC1sZWZ0JywgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuKTtcbkFsZXJ0RGlhbG9nSGVhZGVyLmRpc3BsYXlOYW1lID0gJ0FsZXJ0RGlhbG9nSGVhZGVyJztcblxuY29uc3QgQWxlcnREaWFsb2dGb290ZXIgPSAoeyBjbGFzc05hbWUgPSAnJywgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSA9PiAoXG4gIDxkaXZcbiAgICBjbGFzc05hbWU9e2NuKCdmbGV4IGZsZXgtY29sLXJldmVyc2Ugc206ZmxleC1yb3cgc206anVzdGlmeS1lbmQgc206c3BhY2UteC0yJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuQWxlcnREaWFsb2dGb290ZXIuZGlzcGxheU5hbWUgPSAnQWxlcnREaWFsb2dGb290ZXInO1xuXG5jb25zdCBBbGVydERpYWxvZ1RpdGxlID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuVGl0bGU+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLlRpdGxlPlxuPigoeyBjbGFzc05hbWUgPSAnJywgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxBbGVydERpYWxvZ1ByaW1pdGl2ZS5UaXRsZVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oJ3RleHQtbGcgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwJywgJ2Rhcms6dGV4dC1ncmF5LTUwJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkFsZXJ0RGlhbG9nVGl0bGUuZGlzcGxheU5hbWUgPSBBbGVydERpYWxvZ1ByaW1pdGl2ZS5UaXRsZS5kaXNwbGF5TmFtZTtcblxuY29uc3QgQWxlcnREaWFsb2dEZXNjcmlwdGlvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBBbGVydERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvbj5cbj4oKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8QWxlcnREaWFsb2dQcmltaXRpdmUuRGVzY3JpcHRpb25cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKCd0ZXh0LXNtIHRleHQtZ3JheS01MDAnLCAnZGFyazp0ZXh0LWdyYXktNDAwJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkFsZXJ0RGlhbG9nRGVzY3JpcHRpb24uZGlzcGxheU5hbWUgPSBBbGVydERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgQWxlcnREaWFsb2dBY3Rpb24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBBbGVydERpYWxvZ1ByaW1pdGl2ZS5BY3Rpb24+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkFjdGlvbj5cbj4oKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8QWxlcnREaWFsb2dQcmltaXRpdmUuQWN0aW9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICdpbmxpbmUtZmxleCBoLTEwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLW1kIGJnLWdyYXktOTAwIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyBob3ZlcjpiZy1ncmF5LTgwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctZ3JheS00MDAgZm9jdXM6cmluZy1vZmZzZXQtMiBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCBkYXJrOmJnLWdyYXktMTAwIGRhcms6dGV4dC1ncmF5LTkwMCBkYXJrOmhvdmVyOmJnLWdyYXktMTAwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTQwMCBkYXJrOmZvY3VzOnJpbmctb2Zmc2V0LWdyYXktOTAwJyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQWxlcnREaWFsb2dBY3Rpb24uZGlzcGxheU5hbWUgPSBBbGVydERpYWxvZ1ByaW1pdGl2ZS5BY3Rpb24uZGlzcGxheU5hbWU7XG5cbmNvbnN0IEFsZXJ0RGlhbG9nQ2FuY2VsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuQ2FuY2VsPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBBbGVydERpYWxvZ1ByaW1pdGl2ZS5DYW5jZWw+XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkNhbmNlbFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAnbXQtMiBpbmxpbmUtZmxleCBoLTEwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctdHJhbnNwYXJlbnQgcHgtNCBweS0yIHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIHRyYW5zaXRpb24tY29sb3JzIGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1ncmF5LTQwMCBmb2N1czpyaW5nLW9mZnNldC0yIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwIGRhcms6Ym9yZGVyLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTEwMCBkYXJrOmhvdmVyOmJnLWdyYXktODAwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTQwMCBkYXJrOmZvY3VzOnJpbmctb2Zmc2V0LWdyYXktOTAwIHNtOm10LTAnLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5BbGVydERpYWxvZ0NhbmNlbC5kaXNwbGF5TmFtZSA9IEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkNhbmNlbC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHtcbiAgQWxlcnREaWFsb2csXG4gIEFsZXJ0RGlhbG9nVHJpZ2dlcixcbiAgQWxlcnREaWFsb2dDb250ZW50LFxuICBBbGVydERpYWxvZ0hlYWRlcixcbiAgQWxlcnREaWFsb2dGb290ZXIsXG4gIEFsZXJ0RGlhbG9nVGl0bGUsXG4gIEFsZXJ0RGlhbG9nRGVzY3JpcHRpb24sXG4gIEFsZXJ0RGlhbG9nQWN0aW9uLFxuICBBbGVydERpYWxvZ0NhbmNlbCxcbn07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTbG90IH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXNsb3QnO1xuaW1wb3J0IHsgQ2hldnJvblJpZ2h0LCBNb3JlSG9yaXpvbnRhbCB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5jb25zdCBCcmVhZGNydW1iID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTEVsZW1lbnQsXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnbmF2Jz4gJiB7XG4gICAgc2VwYXJhdG9yPzogUmVhY3QuUmVhY3ROb2RlO1xuICB9XG4+KCh7IC4uLnByb3BzIH0sIHJlZikgPT4gPG5hdiByZWY9e3JlZn0gYXJpYS1sYWJlbD1cImJyZWFkY3J1bWJcIiB7Li4ucHJvcHN9IC8+KTtcbkJyZWFkY3J1bWIuZGlzcGxheU5hbWUgPSAnQnJlYWRjcnVtYic7XG5cbmNvbnN0IEJyZWFkY3J1bWJMaXN0ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MT0xpc3RFbGVtZW50LCBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J29sJz4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxvbFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAnZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC0xLjUgYnJlYWstd29yZHMgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmQgc206Z2FwLTIuNScsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKSxcbik7XG5CcmVhZGNydW1iTGlzdC5kaXNwbGF5TmFtZSA9ICdCcmVhZGNydW1iTGlzdCc7XG5cbmNvbnN0IEJyZWFkY3J1bWJJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MTElFbGVtZW50LCBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J2xpJz4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxsaSByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbignaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUnLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICksXG4pO1xuQnJlYWRjcnVtYkl0ZW0uZGlzcGxheU5hbWUgPSAnQnJlYWRjcnVtYkl0ZW0nO1xuXG5jb25zdCBCcmVhZGNydW1iTGluayA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxBbmNob3JFbGVtZW50LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J2EnPiAmIHtcbiAgICBhc0NoaWxkPzogYm9vbGVhbjtcbiAgfVxuPigoeyBhc0NoaWxkLCBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICBjb25zdCBDb21wID0gYXNDaGlsZCA/IFNsb3QgOiAnYSc7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29tcFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKCd0cmFuc2l0aW9uLWNvbG9ycyBob3Zlcjp0ZXh0LWZvcmVncm91bmQnLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICk7XG59KTtcbkJyZWFkY3J1bWJMaW5rLmRpc3BsYXlOYW1lID0gJ0JyZWFkY3J1bWJMaW5rJztcblxuY29uc3QgQnJlYWRjcnVtYlBhZ2UgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxTcGFuRWxlbWVudCwgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPCdzcGFuJz4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxzcGFuXG4gICAgICByZWY9e3JlZn1cbiAgICAgIHJvbGU9XCJsaW5rXCJcbiAgICAgIGFyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJcbiAgICAgIGFyaWEtY3VycmVudD1cInBhZ2VcIlxuICAgICAgY2xhc3NOYW1lPXtjbignZm9udC1ub3JtYWwgdGV4dC1mb3JlZ3JvdW5kJywgY2xhc3NOYW1lKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApLFxuKTtcbkJyZWFkY3J1bWJQYWdlLmRpc3BsYXlOYW1lID0gJ0JyZWFkY3J1bWJQYWdlJztcblxuY29uc3QgQnJlYWRjcnVtYlNlcGFyYXRvciA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPCdsaSc+KSA9PiAoXG4gIDxsaVxuICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgY2xhc3NOYW1lPXtjbignWyY+c3ZnXTpzaXplLTMuNScsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAge2NoaWxkcmVuID8/IDxDaGV2cm9uUmlnaHQgLz59XG4gIDwvbGk+XG4pO1xuQnJlYWRjcnVtYlNlcGFyYXRvci5kaXNwbGF5TmFtZSA9ICdCcmVhZGNydW1iU2VwYXJhdG9yJztcblxuY29uc3QgQnJlYWRjcnVtYkVsbGlwc2lzID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5Db21wb25lbnRQcm9wczwnc3Bhbic+KSA9PiAoXG4gIDxzcGFuXG4gICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICBjbGFzc05hbWU9e2NuKCdmbGV4IGgtOSB3LTkgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8TW9yZUhvcml6b250YWwgY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwic3Itb25seVwiPk1vcmU8L3NwYW4+XG4gIDwvc3Bhbj5cbik7XG5CcmVhZGNydW1iRWxsaXBzaXMuZGlzcGxheU5hbWUgPSAnQnJlYWRjcnVtYkVsaXBzc2lzJztcblxuZXhwb3J0IHtcbiAgQnJlYWRjcnVtYixcbiAgQnJlYWRjcnVtYkxpc3QsXG4gIEJyZWFkY3J1bWJJdGVtLFxuICBCcmVhZGNydW1iTGluayxcbiAgQnJlYWRjcnVtYlBhZ2UsXG4gIEJyZWFkY3J1bWJTZXBhcmF0b3IsXG4gIEJyZWFkY3J1bWJFbGxpcHNpcyxcbn07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTbG90IH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXNsb3QnO1xuaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gJ2NsYXNzLXZhcmlhbmNlLWF1dGhvcml0eSc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5jb25zdCBidXR0b25WYXJpYW50cyA9IGN2YShcbiAgJ2lubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMiB3aGl0ZXNwYWNlLW5vd3JhcCByb3VuZGVkLWxnIHRleHQtc20gZm9udC1tZWRpdW0gcmluZy1vZmZzZXQtYmFja2dyb3VuZCB0cmFuc2l0aW9uLWNvbG9ycyBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmluZyBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTIgZGlzYWJsZWQ6cG9pbnRlci1ldmVudHMtbm9uZSBkaXNhYmxlZDpvcGFjaXR5LTUwJyxcbiAge1xuICAgIHZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiB7XG4gICAgICAgIGRlZmF1bHQ6ICdiZy1wcmltYXJ5IHRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIGhvdmVyOmJnLXByaW1hcnkvOTAnLFxuICAgICAgICBkZXN0cnVjdGl2ZTpcbiAgICAgICAgICAnYmctc3VyZmFjZS1kZXN0cnVjdGl2ZSB0ZXh0LWRlc3RydWN0aXZlLWZvcmVncm91bmQgaG92ZXI6Ymctc3VyZmFjZS1kZXN0cnVjdGl2ZS1ob3ZlcicsXG4gICAgICAgIG91dGxpbmU6XG4gICAgICAgICAgJ3RleHQtdGV4dC1wcmltYXJ5IGJvcmRlciBib3JkZXItYm9yZGVyLWxpZ2h0IGJnLXRyYW5zcGFyZW50IGhvdmVyOmJnLWFjY2VudCBob3Zlcjp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kJyxcbiAgICAgICAgc2Vjb25kYXJ5OiAnYmctc2Vjb25kYXJ5IHRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmQgaG92ZXI6Ymctc2Vjb25kYXJ5LzgwJyxcbiAgICAgICAgZ2hvc3Q6ICdob3ZlcjpiZy1zdXJmYWNlLWhvdmVyIGhvdmVyOnRleHQtYWNjZW50LWZvcmVncm91bmQnLFxuICAgICAgICBsaW5rOiAndGV4dC1wcmltYXJ5IHVuZGVybGluZS1vZmZzZXQtNCBob3Zlcjp1bmRlcmxpbmUnLFxuICAgICAgICAvLyBoYXJkY29kZWQgdGV4dCBjb2xvciBiZWNhdXNlIG9mIFdDQUcgY29udHJhc3QgaXNzdWVzICh0ZXh0LXdoaXRlKVxuICAgICAgICBzdWJtaXQ6ICdiZy1zdXJmYWNlLXN1Ym1pdCB0ZXh0LXdoaXRlIGhvdmVyOmJnLXN1cmZhY2Utc3VibWl0LWhvdmVyJyxcbiAgICAgIH0sXG4gICAgICBzaXplOiB7XG4gICAgICAgIGRlZmF1bHQ6ICdoLTEwIHB4LTQgcHktMicsXG4gICAgICAgIHNtOiAnaC05IHJvdW5kZWQtbGcgcHgtMycsXG4gICAgICAgIGxnOiAnaC0xMSByb3VuZGVkLWxnIHB4LTgnLFxuICAgICAgICBpY29uOiAnc2l6ZS0xMCcsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVmYXVsdFZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiAnZGVmYXVsdCcsXG4gICAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgfSxcbiAgfSxcbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnV0dG9uUHJvcHNcbiAgZXh0ZW5kcyBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sXG4gICAgVmFyaWFudFByb3BzPHR5cGVvZiBidXR0b25WYXJpYW50cz4ge1xuICBhc0NoaWxkPzogYm9vbGVhbjtcbn1cblxuY29uc3QgQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MQnV0dG9uRWxlbWVudCwgQnV0dG9uUHJvcHM+KFxuICAoeyBjbGFzc05hbWUsIHZhcmlhbnQsIHNpemUsIGFzQ2hpbGQgPSBmYWxzZSwgdHlwZSA9ICdidXR0b24nLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCBDb21wID0gYXNDaGlsZCA/IFNsb3QgOiAnYnV0dG9uJztcbiAgICByZXR1cm4gKFxuICAgICAgPENvbXBcbiAgICAgICAgdHlwZT17YXNDaGlsZCA/IHVuZGVmaW5lZCA6IHR5cGV9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oYnV0dG9uVmFyaWFudHMoeyB2YXJpYW50LCBzaXplLCBjbGFzc05hbWUgfSkpfVxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgLz5cbiAgICApO1xuICB9LFxuKTtcbkJ1dHRvbi5kaXNwbGF5TmFtZSA9ICdCdXR0b24nO1xuXG5leHBvcnQgeyBCdXR0b24sIGJ1dHRvblZhcmlhbnRzIH07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBDaGVjayB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgKiBhcyBDaGVja2JveFByaW1pdGl2ZSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtY2hlY2tib3gnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxudHlwZSBCYXNlQ2hlY2tib3hQcm9wcyA9IE9taXQ8XG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ2hlY2tib3hQcmltaXRpdmUuUm9vdD4sXG4gICdhcmlhLWxhYmVsJyB8ICdhcmlhLWxhYmVsbGVkYnknXG4+ICYge1xuICBhc0NoaWxkPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIENoZWNrYm94UHJvcHMgPVxuICB8IChCYXNlQ2hlY2tib3hQcm9wcyAmIHtcbiAgICAgICdhcmlhLWxhYmVsJzogc3RyaW5nO1xuICAgICAgJ2FyaWEtbGFiZWxsZWRieSc/OiBuZXZlcjtcbiAgICB9KVxuICB8IChCYXNlQ2hlY2tib3hQcm9wcyAmIHtcbiAgICAgICdhcmlhLWxhYmVsbGVkYnknOiBzdHJpbmc7XG4gICAgICAnYXJpYS1sYWJlbCc/OiBuZXZlcjtcbiAgICB9KTtcblxuY29uc3QgQ2hlY2tib3ggPSBSZWFjdC5mb3J3YXJkUmVmPFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENoZWNrYm94UHJpbWl0aXZlLlJvb3Q+LCBDaGVja2JveFByb3BzPihcbiAgKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxDaGVja2JveFByaW1pdGl2ZS5Sb290XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdwZWVyIGgtNCB3LTQgc2hyaW5rLTAgcm91bmRlZC1zbSBib3JkZXIgYm9yZGVyLWJvcmRlci14aGVhdnkgcmluZy1vZmZzZXQtYmFja2dyb3VuZCBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmluZyBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTIgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTAgZGF0YS1bc3RhdGU9Y2hlY2tlZF06YmctcHJpbWFyeSBkYXRhLVtzdGF0ZT1jaGVja2VkXTp0ZXh0LXByaW1hcnktZm9yZWdyb3VuZCcsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAgPENoZWNrYm94UHJpbWl0aXZlLkluZGljYXRvciBjbGFzc05hbWU9e2NuKCdmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlcicpfT5cbiAgICAgICAgPENoZWNrIGNsYXNzTmFtZT1cImgtNCB3LTRcIiAvPlxuICAgICAgPC9DaGVja2JveFByaW1pdGl2ZS5JbmRpY2F0b3I+XG4gICAgPC9DaGVja2JveFByaW1pdGl2ZS5Sb290PlxuICApLFxuKTtcbkNoZWNrYm94LmRpc3BsYXlOYW1lID0gQ2hlY2tib3hQcmltaXRpdmUuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgQ2hlY2tib3ggfTtcbiIsImV4cG9ydCBlbnVtIEVTaWRlIHtcbiAgVG9wID0gJ3RvcCcsXG4gIFJpZ2h0ID0gJ3JpZ2h0JyxcbiAgQm90dG9tID0gJ2JvdHRvbScsXG4gIExlZnQgPSAnbGVmdCcsXG59XG5cbmV4cG9ydCBlbnVtIE5vdGlmaWNhdGlvblNldmVyaXR5IHtcbiAgSU5GTyA9ICdpbmZvJyxcbiAgU1VDQ0VTUyA9ICdzdWNjZXNzJyxcbiAgV0FSTklORyA9ICd3YXJuaW5nJyxcbiAgRVJST1IgPSAnZXJyb3InLFxufVxuIiwiaW1wb3J0IHsgYXRvbSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNldmVyaXR5IH0gZnJvbSAnfi9jb21tb24nO1xuXG5leHBvcnQgY29uc3QgY2hhdERpcmVjdGlvbkF0b20gPSBhdG9tPHN0cmluZz4oJ2x0cicpO1xuZXhwb3J0IGNvbnN0IGZvbnRTaXplQXRvbSA9IGF0b208c3RyaW5nPigndGV4dC1iYXNlJyk7XG5cbmV4cG9ydCB0eXBlIFRvYXN0U3RhdGUgPSB7XG4gIG9wZW46IGJvb2xlYW47XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc2V2ZXJpdHk6IE5vdGlmaWNhdGlvblNldmVyaXR5O1xuICBzaG93SWNvbjogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCB0b2FzdFN0YXRlID0gYXRvbTxUb2FzdFN0YXRlPih7XG4gIG9wZW46IGZhbHNlLFxuICBtZXNzYWdlOiAnJyxcbiAgc2V2ZXJpdHk6IE5vdGlmaWNhdGlvblNldmVyaXR5LlNVQ0NFU1MsXG4gIHNob3dJY29uOiB0cnVlLFxufSk7XG4iLCJpbXBvcnQgeyB1c2VBdG9tIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7IFRTaG93VG9hc3QgfSBmcm9tICd+L2NvbW1vbic7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXZlcml0eSB9IGZyb20gJ34vY29tbW9uJztcbmltcG9ydCB7IHRvYXN0U3RhdGUsIHR5cGUgVG9hc3RTdGF0ZSB9IGZyb20gJ34vc3RvcmUnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VUb2FzdChzaG93RGVsYXkgPSAxMDApIHtcbiAgY29uc3QgW3RvYXN0LCBzZXRUb2FzdF0gPSB1c2VBdG9tKHRvYXN0U3RhdGUpO1xuICBjb25zdCBzaG93VGltZXJSZWYgPSB1c2VSZWY8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGhpZGVUaW1lclJlZiA9IHVzZVJlZjxudW1iZXIgfCBudWxsPihudWxsKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoc2hvd1RpbWVyUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHNob3dUaW1lclJlZi5jdXJyZW50KTtcbiAgICAgIH1cbiAgICAgIGlmIChoaWRlVGltZXJSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgICBjbGVhclRpbWVvdXQoaGlkZVRpbWVyUmVmLmN1cnJlbnQpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtdKTtcblxuICBjb25zdCBzaG93VG9hc3QgPSAoe1xuICAgIG1lc3NhZ2UsXG4gICAgc2V2ZXJpdHkgPSBOb3RpZmljYXRpb25TZXZlcml0eS5TVUNDRVNTLFxuICAgIHNob3dJY29uID0gdHJ1ZSxcbiAgICBkdXJhdGlvbiA9IDMwMDAsIC8vIGRlZmF1bHQgZHVyYXRpb24gZm9yIHRoZSB0b2FzdCB0byBiZSB2aXNpYmxlXG4gICAgc3RhdHVzLFxuICB9OiBUU2hvd1RvYXN0KSA9PiB7XG4gICAgLy8gQ2xlYXIgZXhpc3RpbmcgdGltZW91dHNcbiAgICBpZiAoc2hvd1RpbWVyUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgIGNsZWFyVGltZW91dChzaG93VGltZXJSZWYuY3VycmVudCk7XG4gICAgfVxuICAgIGlmIChoaWRlVGltZXJSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgY2xlYXJUaW1lb3V0KGhpZGVUaW1lclJlZi5jdXJyZW50KTtcbiAgICB9XG5cbiAgICAvLyBUaW1lb3V0IHRvIHNob3cgdGhlIHRvYXN0XG4gICAgc2hvd1RpbWVyUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZXRUb2FzdCh7XG4gICAgICAgIG9wZW46IHRydWUsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIHNldmVyaXR5OiAoc3RhdHVzIGFzIE5vdGlmaWNhdGlvblNldmVyaXR5KSA/PyBzZXZlcml0eSxcbiAgICAgICAgc2hvd0ljb24sXG4gICAgICB9KTtcbiAgICAgIC8vIEhpZGVzIHRoZSB0b2FzdCBhZnRlciB0aGUgc3BlY2lmaWVkIGR1cmF0aW9uXG4gICAgICBoaWRlVGltZXJSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0VG9hc3QoKHByZXZUb2FzdDogVG9hc3RTdGF0ZSkgPT4gKHsgLi4ucHJldlRvYXN0LCBvcGVuOiBmYWxzZSB9KSk7XG4gICAgICB9LCBkdXJhdGlvbik7XG4gICAgfSwgc2hvd0RlbGF5KTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHRvYXN0LFxuICAgIG9uT3BlbkNoYW5nZTogKG9wZW46IGJvb2xlYW4pID0+IHNldFRvYXN0KHsgLi4udG9hc3QsIG9wZW4gfSksXG4gICAgc2hvd1RvYXN0LFxuICB9O1xufVxuIiwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNyZWF0ZUF2YXRhciB9IGZyb20gJ0BkaWNlYmVhci9jb3JlJztcbmltcG9ydCB7IGluaXRpYWxzIH0gZnJvbSAnQGRpY2ViZWFyL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHR5cGUgeyBUVXNlciB9IGZyb20gJ2xpYnJlY2hhdC1kYXRhLXByb3ZpZGVyJztcblxuY29uc3QgYXZhdGFyQ2FjaGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuY29uc3QgdXNlQXZhdGFyID0gKHVzZXI6IFRVc2VyIHwgdW5kZWZpbmVkKSA9PiB7XG4gIHJldHVybiB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IHVzZXJuYW1lLCBuYW1lIH0gPSB1c2VyID8/IHt9O1xuICAgIGNvbnN0IHNlZWQgPSBuYW1lIHx8IHVzZXJuYW1lO1xuICAgIGlmICghc2VlZCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGlmICh1c2VyPy5hdmF0YXIgJiYgdXNlcj8uYXZhdGFyICE9PSAnJykge1xuICAgICAgcmV0dXJuIHVzZXIuYXZhdGFyO1xuICAgIH1cblxuICAgIGlmIChhdmF0YXJDYWNoZVtzZWVkXSkge1xuICAgICAgcmV0dXJuIGF2YXRhckNhY2hlW3NlZWRdO1xuICAgIH1cblxuICAgIGNvbnN0IGF2YXRhciA9IGNyZWF0ZUF2YXRhcihpbml0aWFscywge1xuICAgICAgc2VlZCxcbiAgICAgIGZvbnRGYW1pbHk6IFsnVmVyZGFuYSddLFxuICAgICAgZm9udFNpemU6IDM2LFxuICAgICAgYmFja2dyb3VuZFR5cGU6IFsnc29saWQnXSxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogW1xuICAgICAgICAnZDgxYjYwJyxcbiAgICAgICAgJzhlMjRhYScsXG4gICAgICAgICc1ZTM1YjEnLFxuICAgICAgICAnMzk0OWFiJyxcbiAgICAgICAgJ0RCMzczMycsXG4gICAgICAgICcxQjc5Q0MnLFxuICAgICAgICAnMDI3Q0I4JyxcbiAgICAgICAgJzAwODI5MScsXG4gICAgICAgICcwMDg1NzcnLFxuICAgICAgICAnNTg4MDJGJyxcbiAgICAgICAgJzhBNzYxRCcsXG4gICAgICAgICc5QzZEMDAnLFxuICAgICAgICAnQjA2MjAwJyxcbiAgICAgICAgJ0QxNDUxQScsXG4gICAgICBdLFxuICAgICAgdGV4dENvbG9yOiBbJ2ZmZmZmZiddLFxuICAgIH0pO1xuXG4gICAgbGV0IGF2YXRhckRhdGFVcmkgPSAnJztcbiAgICB0cnkge1xuICAgICAgYXZhdGFyRGF0YVVyaSA9IGF2YXRhci50b0RhdGFVcmkoKTtcbiAgICAgIGlmIChhdmF0YXJEYXRhVXJpKSB7XG4gICAgICAgIGF2YXRhckNhY2hlW3NlZWRdID0gYXZhdGFyRGF0YVVyaTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGdlbmVyYXRlIGF2YXRhcjonLCBlcnJvcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF2YXRhckRhdGFVcmk7XG4gIH0sIFt1c2VyXSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1c2VBdmF0YXI7XG4iLCJpbXBvcnQgeyB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IG1hdGNoU29ydGVyIH0gZnJvbSAnbWF0Y2gtc29ydGVyJztcbmltcG9ydCB0eXBlIHsgT3B0aW9uV2l0aEljb24sIE1lbnRpb25PcHRpb24gfSBmcm9tICd+L2NvbW1vbic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUNvbWJvYm94KHtcbiAgdmFsdWUsXG4gIG9wdGlvbnMsXG59OiB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIG9wdGlvbnM6IEFycmF5PE9wdGlvbldpdGhJY29uIHwgTWVudGlvbk9wdGlvbj47XG59KSB7XG4gIGNvbnN0IFtvcGVuLCBzZXRPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3NlYXJjaFZhbHVlLCBzZXRTZWFyY2hWYWx1ZV0gPSB1c2VTdGF0ZSgnJyk7XG5cbiAgY29uc3QgbWF0Y2hlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghc2VhcmNoVmFsdWUpIHtcbiAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cbiAgICBjb25zdCBrZXlzID0gWydsYWJlbCcsICd2YWx1ZSddO1xuICAgIGNvbnN0IG1hdGNoZXMgPSBtYXRjaFNvcnRlcihvcHRpb25zLCBzZWFyY2hWYWx1ZSwgeyBrZXlzIH0pO1xuICAgIC8vIFJhZGl4IFNlbGVjdCBkb2VzIG5vdCB3b3JrIGlmIHdlIGRvbid0IHJlbmRlciB0aGUgc2VsZWN0ZWQgaXRlbSwgc28gd2VcbiAgICAvLyBtYWtlIHN1cmUgdG8gaW5jbHVkZSBpdCBpbiB0aGUgbGlzdCBvZiBtYXRjaGVzLlxuICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IG9wdGlvbnMuZmluZCgoY3VycmVudEl0ZW0pID0+IGN1cnJlbnRJdGVtLnZhbHVlID09PSB2YWx1ZSk7XG4gICAgaWYgKHNlbGVjdGVkSXRlbSAmJiAhbWF0Y2hlcy5pbmNsdWRlcyhzZWxlY3RlZEl0ZW0pKSB7XG4gICAgICBtYXRjaGVzLnB1c2goc2VsZWN0ZWRJdGVtKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hdGNoZXM7XG4gIH0sIFtzZWFyY2hWYWx1ZSwgdmFsdWUsIG9wdGlvbnNdKTtcblxuICByZXR1cm4ge1xuICAgIG9wZW4sXG4gICAgc2V0T3BlbixcbiAgICBzZWFyY2hWYWx1ZSxcbiAgICBzZXRTZWFyY2hWYWx1ZSxcbiAgICBtYXRjaGVzLFxuICB9O1xufVxuIiwiaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBUT3B0aW9ucyB9IGZyb20gJ2kxOG5leHQnO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0JztcbmltcG9ydCB7IHJlc291cmNlcyB9IGZyb20gJ34vbG9jYWxlcy9pMThuJztcblxuZXhwb3J0IHR5cGUgVHJhbnNsYXRpb25LZXlzID0ga2V5b2YgdHlwZW9mIHJlc291cmNlcy5lbi50cmFuc2xhdGlvbjtcblxuLyoqIExhbmd1YWdlIGxpZmVjeWNsZSBpcyBtYW5hZ2VkIGJ5IHRoZSBob3N0IGFwcCDigJQgZG8gbm90IGFkZCBpMThuLmNoYW5nZUxhbmd1YWdlKCkgY2FsbHMgaGVyZS4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUxvY2FsaXplKCkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIHVzZUNhbGxiYWNrKFxuICAgIChwaHJhc2VLZXk6IFRyYW5zbGF0aW9uS2V5cywgb3B0aW9ucz86IFRPcHRpb25zKSA9PiB0KHBocmFzZUtleSwgb3B0aW9ucyksXG4gICAgW3RdLFxuICApO1xufVxuIiwiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTWVkaWFRdWVyeShxdWVyeTogc3RyaW5nKSB7XG4gIGNvbnN0IFttYXRjaGVzLCBzZXRNYXRjaGVzXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG1lZGlhID0gd2luZG93Lm1hdGNoTWVkaWEocXVlcnkpO1xuICAgIGlmIChtZWRpYS5tYXRjaGVzICE9PSBtYXRjaGVzKSB7XG4gICAgICBzZXRNYXRjaGVzKG1lZGlhLm1hdGNoZXMpO1xuICAgIH1cbiAgICBjb25zdCBsaXN0ZW5lciA9ICgpID0+IHNldE1hdGNoZXMobWVkaWEubWF0Y2hlcyk7XG4gICAgbWVkaWEuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpO1xuICAgIHJldHVybiAoKSA9PiBtZWRpYS5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lcik7XG4gIH0sIFttYXRjaGVzLCBxdWVyeV0pO1xuXG4gIHJldHVybiBtYXRjaGVzO1xufVxuIiwiaW1wb3J0IHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IHVzZURlbGF5ZWRSZW5kZXIgPSAoZGVsYXk6IG51bWJlcikgPT4ge1xuICBjb25zdCBbZGVsYXllZCwgc2V0RGVsYXllZF0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgY29uc3QgdGltZXJQcm9taXNlUmVmID0gdXNlUmVmPFByb21pc2U8dm9pZD4gfCBudWxsPihudWxsKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkZWxheWVkKSB7XG4gICAgICBjb25zdCB0aW1lclByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgc2V0RGVsYXllZChmYWxzZSk7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9LCBkZWxheSk7XG5cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgdGltZXJQcm9taXNlUmVmLmN1cnJlbnQgPSB0aW1lclByb21pc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHRpbWVyUHJvbWlzZVJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICB9O1xuICB9LCBbZGVsYXksIGRlbGF5ZWRdKTtcblxuICByZXR1cm4gKGZuOiAoKSA9PiBSZWFjdE5vZGUpID0+IHtcbiAgICBpZiAoZGVsYXllZCAmJiB0aW1lclByb21pc2VSZWYuY3VycmVudCkge1xuICAgICAgdGhyb3cgdGltZXJQcm9taXNlUmVmLmN1cnJlbnQ7XG4gICAgfVxuICAgIHJldHVybiBmbigpO1xuICB9O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgdXNlRGVsYXllZFJlbmRlcjtcbiIsImltcG9ydCB7IHVzZUVmZmVjdCwgUmVmT2JqZWN0IH0gZnJvbSAncmVhY3QnO1xudHlwZSBIYW5kbGVyID0gKCkgPT4gdm9pZDtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlT25DbGlja091dHNpZGUoXG4gIHJlZjogUmVmT2JqZWN0PEhUTUxFbGVtZW50PixcbiAgaGFuZGxlcjogSGFuZGxlcixcbiAgZXhjbHVkZUlkczogc3RyaW5nW10sXG4gIGN1c3RvbUNvbmRpdGlvbj86ICh0YXJnZXQ6IEV2ZW50VGFyZ2V0IHwgRWxlbWVudCB8IG51bGwpID0+IGJvb2xlYW4sXG4pOiB2b2lkIHtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBOb2RlIHwgbnVsbDtcblxuICAgICAgaWYgKHRhcmdldCAmJiAnaWQnIGluIHRhcmdldCAmJiBleGNsdWRlSWRzLmluY2x1ZGVzKCh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmlkKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgdGFyZ2V0Py5wYXJlbnROb2RlICYmXG4gICAgICAgICdpZCcgaW4gdGFyZ2V0LnBhcmVudE5vZGUgJiZcbiAgICAgICAgZXhjbHVkZUlkcy5pbmNsdWRlcygodGFyZ2V0LnBhcmVudE5vZGUgYXMgSFRNTEVsZW1lbnQpLmlkKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGN1c3RvbUNvbmRpdGlvbiAmJiBjdXN0b21Db25kaXRpb24odGFyZ2V0KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWYuY3VycmVudCAmJiAhcmVmLmN1cnJlbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICBoYW5kbGVyKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSk7XG4gICAgfTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtyZWYsIGhhbmRsZXJdKTtcbn1cbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIERpYWxvZ1ByaW1pdGl2ZSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtZGlhbG9nJztcbmltcG9ydCB7IHVzZU1lZGlhUXVlcnkgfSBmcm9tICd+L2hvb2tzJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4vQnV0dG9uJztcbmltcG9ydCB7IFggfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuY29uc3QgRGlhbG9nID0gRGlhbG9nUHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IERpYWxvZ1RyaWdnZXIgPSBEaWFsb2dQcmltaXRpdmUuVHJpZ2dlcjtcblxudHlwZSBEaWFsb2dQb3J0YWxQcm9wcyA9IERpYWxvZ1ByaW1pdGl2ZS5EaWFsb2dQb3J0YWxQcm9wcyAmIHsgY2xhc3NOYW1lPzogc3RyaW5nIH07XG5cbmNvbnN0IERpYWxvZ1BvcnRhbCA9ICh7IGNsYXNzTmFtZSA9ICcnLCBjaGlsZHJlbiwgLi4ucHJvcHMgfTogRGlhbG9nUG9ydGFsUHJvcHMpID0+IChcbiAgPERpYWxvZ1ByaW1pdGl2ZS5Qb3J0YWwgY2xhc3NOYW1lPXtjbihjbGFzc05hbWUpfSB7Li4uKHByb3BzIGFzIERpYWxvZ1BvcnRhbFByb3BzKX0+XG4gICAgPGRpdiBjbGFzc05hbWU9XCJmaXhlZCBpbnNldC0wIHotWzk5OV0gZmxleCBpdGVtcy1zdGFydCBqdXN0aWZ5LWNlbnRlciBzbTppdGVtcy1jZW50ZXJcIj5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgPC9EaWFsb2dQcmltaXRpdmUuUG9ydGFsPlxuKTtcbkRpYWxvZ1BvcnRhbC5kaXNwbGF5TmFtZSA9IERpYWxvZ1ByaW1pdGl2ZS5Qb3J0YWwuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERpYWxvZ092ZXJsYXkgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuT3ZlcmxheT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLk92ZXJsYXk+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEaWFsb2dQcmltaXRpdmUuT3ZlcmxheVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAnZml4ZWQgaW5zZXQtMCB6LVs5OTldIGJnLWdyYXktNjAwLzY1IHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTEwMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbiBkYXJrOmJnLWJsYWNrLzgwJyxcbiAgICAgIGNsYXNzTmFtZSA/PyAnJyxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgICByZWY9e3JlZn1cbiAgLz5cbikpO1xuRGlhbG9nT3ZlcmxheS5kaXNwbGF5TmFtZSA9IERpYWxvZ1ByaW1pdGl2ZS5PdmVybGF5LmRpc3BsYXlOYW1lO1xuXG50eXBlIERpYWxvZ0NvbnRlbnRQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLkNvbnRlbnQ+ICYge1xuICBzaG93Q2xvc2VCdXR0b24/OiBib29sZWFuO1xuICBkaXNhYmxlU2Nyb2xsPzogYm9vbGVhbjtcbn07XG5cbmNvbnN0IERpYWxvZ0NvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuQ29udGVudD4sXG4gIERpYWxvZ0NvbnRlbnRQcm9wc1xuPihcbiAgKFxuICAgIHsgY2xhc3NOYW1lLCBjaGlsZHJlbiA9IHRydWUsIHNob3dDbG9zZUJ1dHRvbiA9IHRydWUsIGRpc2FibGVTY3JvbGwgPSBmYWxzZSwgLi4ucHJvcHMgfSxcbiAgICByZWYsXG4gICkgPT4ge1xuICAgIGNvbnN0IGlzU21hbGxTY3JlZW4gPSB1c2VNZWRpYVF1ZXJ5KCcobWF4LXdpZHRoOiA3NjhweCknKTtcbiAgICByZXR1cm4gKFxuICAgICAgPERpYWxvZ1BvcnRhbD5cbiAgICAgICAgPERpYWxvZ092ZXJsYXkgLz5cbiAgICAgICAgPERpYWxvZ1ByaW1pdGl2ZS5Db250ZW50XG4gICAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICdmaXhlZCB6LVs5OTldIGdyaWQgdy1mdWxsIGdhcC00IHJvdW5kZWQtYi1sZyBiZy13aGl0ZSBwYi02IGFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi05MCBkYXRhLVtzdGF0ZT1vcGVuXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0xMCBzbTpyb3VuZGVkLWxnJyxcbiAgICAgICAgICAgICdkYXJrOmJnLWdyYXktNzAwJyxcbiAgICAgICAgICAgIGlzU21hbGxTY3JlZW5cbiAgICAgICAgICAgICAgPyAnZml4ZWQgbGVmdC0xLzIgdG9wLTEvMiB6LVs5OTldIG0tYXV0byBncmlkIHctMTEvMTIgLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yIGdhcC00IHJvdW5kZWQteGwgYmctd2hpdGUgcGItNidcbiAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgIGRpc2FibGVTY3JvbGwgPyAnb3ZlcmZsb3ctaGlkZGVuJyA6ICcnLFxuICAgICAgICAgICAgY2xhc3NOYW1lID8/ICcnLFxuICAgICAgICAgICl9XG4gICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgIHtzaG93Q2xvc2VCdXR0b24gJiYgKFxuICAgICAgICAgICAgPERpYWxvZ1ByaW1pdGl2ZS5DbG9zZSBjbGFzc05hbWU9XCJhYnNvbHV0ZSByaWdodC02IHRvcC1bMS42cmVtXSByb3VuZGVkLXNtIG9wYWNpdHktNzAgdHJhbnNpdGlvbi1vcGFjaXR5IGhvdmVyOm9wYWNpdHktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1ncmF5LTQwMCBmb2N1czpyaW5nLW9mZnNldC0yIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bc3RhdGU9b3Blbl06YmctZ3JheS0xMDAgZGFyazpmb2N1czpyaW5nLXdoaXRlIGRhcms6Zm9jdXM6cmluZy1vZmZzZXQtZ3JheS03MDAgZGFyazpkYXRhLVtzdGF0ZT1vcGVuXTpiZy1ncmF5LTgwMFwiPlxuICAgICAgICAgICAgICA8WCBjbGFzc05hbWU9XCJoLTUgdy01IHRleHQtYmxhY2sgZGFyazp0ZXh0LXdoaXRlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxuICAgICAgICAgICAgPC9EaWFsb2dQcmltaXRpdmUuQ2xvc2U+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9EaWFsb2dQcmltaXRpdmUuQ29udGVudD5cbiAgICAgIDwvRGlhbG9nUG9ydGFsPlxuICAgICk7XG4gIH0sXG4pO1xuRGlhbG9nQ29udGVudC5kaXNwbGF5TmFtZSA9IERpYWxvZ1ByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEaWFsb2dIZWFkZXIgPSAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PikgPT4gKFxuICA8ZGl2XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICdmbGV4IGZsZXgtY29sIHNwYWNlLXktMiBib3JkZXItYiBib3JkZXItYmxhY2svMTAgcC02IHBiLTQgdGV4dC1sZWZ0IGRhcms6Ym9yZGVyLXdoaXRlLzEwJyxcbiAgICAgIGNsYXNzTmFtZSA/PyAnJyxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5EaWFsb2dIZWFkZXIuZGlzcGxheU5hbWUgPSAnRGlhbG9nSGVhZGVyJztcblxuY29uc3QgRGlhbG9nRm9vdGVyID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4pID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17Y24oJ2ZsZXggZmxleC1yb3cganVzdGlmeS1iZXR3ZWVuIHNwYWNlLXgtMiBweC02IHB5LTQnLCBjbGFzc05hbWUgPz8gJycpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5EaWFsb2dGb290ZXIuZGlzcGxheU5hbWUgPSAnRGlhbG9nRm9vdGVyJztcblxuY29uc3QgRGlhbG9nVGl0bGUgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuVGl0bGU+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5UaXRsZT5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERpYWxvZ1ByaW1pdGl2ZS5UaXRsZVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oJ3RleHQtbGcgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwJywgJ2Rhcms6dGV4dC1ncmF5LTUwJywgY2xhc3NOYW1lID8/ICcnKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRpYWxvZ1RpdGxlLmRpc3BsYXlOYW1lID0gRGlhbG9nUHJpbWl0aXZlLlRpdGxlLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEaWFsb2dEZXNjcmlwdGlvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvbj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbigndGV4dC1zbSB0ZXh0LWdyYXktNTAwJywgJ2Rhcms6dGV4dC1ncmF5LTQwMCcsIGNsYXNzTmFtZSA/PyAnJyl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5EaWFsb2dEZXNjcmlwdGlvbi5kaXNwbGF5TmFtZSA9IERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgRGlhbG9nQ2xvc2UgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuQ2xvc2U+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5DbG9zZT5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERpYWxvZ1ByaW1pdGl2ZS5DbG9zZVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAnbXQtMiBpbmxpbmUtZmxleCBoLTEwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctdHJhbnNwYXJlbnQgcHgtNCBweS0yIHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIHRyYW5zaXRpb24tY29sb3JzIGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCBkYXJrOmJvcmRlci1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS0xMDAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMCBzbTptdC0wJyxcbiAgICAgIGNsYXNzTmFtZSA/PyAnJyxcbiAgICAgIC8qIEltcG9ydGFudDogZm9yIGFjY2Vzc2liaWxpdHkgKi9cbiAgICAgICdmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1ncmF5LTQwMCBmb2N1czpyaW5nLW9mZnNldC0yIGRhcms6Zm9jdXM6cmluZy1ncmF5LTQwMCBkYXJrOmZvY3VzOnJpbmctb2Zmc2V0LWdyYXktOTAwJyxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRGlhbG9nQ2xvc2UuZGlzcGxheU5hbWUgPSBEaWFsb2dQcmltaXRpdmUuVGl0bGUuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERpYWxvZ0J1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIEJ1dHRvbj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQnV0dG9uPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8QnV0dG9uXG4gICAgcmVmPXtyZWZ9XG4gICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAnbXQtMiBpbmxpbmUtZmxleCBoLTEwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctdHJhbnNwYXJlbnQgcHgtNCBweS0yIHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIHRyYW5zaXRpb24tY29sb3JzIGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1ncmF5LTQwMCBmb2N1czpyaW5nLW9mZnNldC0yIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwIGRhcms6Ym9yZGVyLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTEwMCBkYXJrOmhvdmVyOmJnLWdyYXktODAwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTQwMCBkYXJrOmZvY3VzOnJpbmctb2Zmc2V0LWdyYXktOTAwIHNtOm10LTAnLFxuICAgICAgY2xhc3NOYW1lID8/ICcnLFxuICAgICAgLyogSW1wb3J0YW50OiBmb3IgYWNjZXNzaWJpbGl0eSAqL1xuICAgICAgJ2ZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWdyYXktNDAwIGZvY3VzOnJpbmctb2Zmc2V0LTIgZGFyazpmb2N1czpyaW5nLWdyYXktNDAwIGRhcms6Zm9jdXM6cmluZy1vZmZzZXQtZ3JheS05MDAnLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5EaWFsb2dCdXR0b24uZGlzcGxheU5hbWUgPSBEaWFsb2dQcmltaXRpdmUuVGl0bGUuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7XG4gIERpYWxvZyxcbiAgRGlhbG9nVHJpZ2dlcixcbiAgRGlhbG9nQ29udGVudCxcbiAgRGlhbG9nSGVhZGVyLFxuICBEaWFsb2dGb290ZXIsXG4gIERpYWxvZ1RpdGxlLFxuICBEaWFsb2dEZXNjcmlwdGlvbixcbiAgRGlhbG9nQ2xvc2UsXG4gIERpYWxvZ0J1dHRvbixcbn07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBEcm9wZG93bk1lbnVQcmltaXRpdmUgZnJvbSAnQHJhZGl4LXVpL3JlYWN0LWRyb3Bkb3duLW1lbnUnO1xuaW1wb3J0IHsgQ2hlY2tJY29uLCBDaGV2cm9uUmlnaHRJY29uLCBDaXJjbGVJY29uIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmZ1bmN0aW9uIERyb3Bkb3duTWVudSh7IC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuUm9vdD4pIHtcbiAgcmV0dXJuIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuUm9vdCBkYXRhLXNsb3Q9XCJkcm9wZG93bi1tZW51XCIgey4uLnByb3BzfSAvPjtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51UG9ydGFsKHtcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuUG9ydGFsPikge1xuICByZXR1cm4gPERyb3Bkb3duTWVudVByaW1pdGl2ZS5Qb3J0YWwgZGF0YS1zbG90PVwiZHJvcGRvd24tbWVudS1wb3J0YWxcIiB7Li4ucHJvcHN9IC8+O1xufVxuXG5mdW5jdGlvbiBEcm9wZG93bk1lbnVUcmlnZ2VyKHtcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuVHJpZ2dlcj4pIHtcbiAgcmV0dXJuIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuVHJpZ2dlciBkYXRhLXNsb3Q9XCJkcm9wZG93bi1tZW51LXRyaWdnZXJcIiB7Li4ucHJvcHN9IC8+O1xufVxuXG5mdW5jdGlvbiBEcm9wZG93bk1lbnVDb250ZW50KHtcbiAgY2xhc3NOYW1lLFxuICBzaWRlT2Zmc2V0ID0gNCxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ29udGVudD4pIHtcbiAgcmV0dXJuIChcbiAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbD5cbiAgICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuQ29udGVudFxuICAgICAgICBkYXRhLXNsb3Q9XCJkcm9wZG93bi1tZW51LWNvbnRlbnRcIlxuICAgICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICdtYXgtaC0oLS1yYWRpeC1kcm9wZG93bi1tZW51LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCkgb3JpZ2luLSgtLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luKSB6LTQwIG1pbi13LVs4cmVtXSBvdmVyZmxvdy15LWF1dG8gb3ZlcmZsb3cteC1oaWRkZW4gcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWJvcmRlci1tZWRpdW0gYmctc3VyZmFjZS1wcmltYXJ5IHAtMSB0ZXh0LXRleHQtcHJpbWFyeSBzaGFkb3ctbWQgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTp6b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTp6b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yJyxcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgIC8+XG4gICAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuUG9ydGFsPlxuICApO1xufVxuXG5mdW5jdGlvbiBEcm9wZG93bk1lbnVHcm91cCh7IC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuR3JvdXA+KSB7XG4gIHJldHVybiA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkdyb3VwIGRhdGEtc2xvdD1cImRyb3Bkb3duLW1lbnUtZ3JvdXBcIiB7Li4ucHJvcHN9IC8+O1xufVxuXG5mdW5jdGlvbiBEcm9wZG93bk1lbnVJdGVtKHtcbiAgY2xhc3NOYW1lLFxuICBpbnNldCxcbiAgdmFyaWFudCA9ICdkZWZhdWx0JyxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbT4gJiB7XG4gIGluc2V0PzogYm9vbGVhbjtcbiAgdmFyaWFudD86ICdkZWZhdWx0JyB8ICdkZXN0cnVjdGl2ZSc7XG59KSB7XG4gIHJldHVybiAoXG4gICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtXG4gICAgICBkYXRhLXNsb3Q9XCJkcm9wZG93bi1tZW51LWl0ZW1cIlxuICAgICAgZGF0YS1pbnNldD17aW5zZXR9XG4gICAgICBkYXRhLXZhcmlhbnQ9e3ZhcmlhbnR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcImRhdGEtW3ZhcmlhbnQ9ZGVzdHJ1Y3RpdmVdOio6W3N2Z106IXRleHQtZGVzdHJ1Y3RpdmUgb3V0bGluZS1oaWRkZW4gcmVsYXRpdmUgZmxleCBjdXJzb3ItZGVmYXVsdCBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIgZ2FwLTIgcm91bmRlZC1zbSBweC0yIHB5LTEuNSB0ZXh0LXNtIGZvY3VzOmJnLWFjY2VudCBmb2N1czp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2luc2V0XTpwbC04IGRhdGEtW3ZhcmlhbnQ9ZGVzdHJ1Y3RpdmVdOnRleHQtZGVzdHJ1Y3RpdmUgZGF0YS1bZGlzYWJsZWRdOm9wYWNpdHktNTAgZGF0YS1bdmFyaWFudD1kZXN0cnVjdGl2ZV06Zm9jdXM6YmctZGVzdHJ1Y3RpdmUvMTAgZGF0YS1bdmFyaWFudD1kZXN0cnVjdGl2ZV06Zm9jdXM6dGV4dC1kZXN0cnVjdGl2ZSBkYXJrOmRhdGEtW3ZhcmlhbnQ9ZGVzdHJ1Y3RpdmVdOmZvY3VzOmJnLWRlc3RydWN0aXZlLzIwIFsmX3N2Zzpub3QoW2NsYXNzKj0nc2l6ZS0nXSldOnNpemUtNCBbJl9zdmc6bm90KFtjbGFzcyo9J3RleHQtJ10pXTp0ZXh0LW11dGVkLWZvcmVncm91bmQgWyZfc3ZnXTpwb2ludGVyLWV2ZW50cy1ub25lIFsmX3N2Z106c2hyaW5rLTBcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufVxuXG5mdW5jdGlvbiBEcm9wZG93bk1lbnVDaGVja2JveEl0ZW0oe1xuICBjbGFzc05hbWUsXG4gIGNoaWxkcmVuLFxuICBjaGVja2VkLFxuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+KSB7XG4gIHJldHVybiAoXG4gICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW1cbiAgICAgIGRhdGEtc2xvdD1cImRyb3Bkb3duLW1lbnUtY2hlY2tib3gtaXRlbVwiXG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcIm91dGxpbmUtaGlkZGVuIHJlbGF0aXZlIGZsZXggY3Vyc29yLWRlZmF1bHQgc2VsZWN0LW5vbmUgaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQtc20gcHktMS41IHBsLTggcHItMiB0ZXh0LXNtIGZvY3VzOmJnLWFjY2VudCBmb2N1czp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpvcGFjaXR5LTUwIFsmX3N2Zzpub3QoW2NsYXNzKj0nc2l6ZS0nXSldOnNpemUtNCBbJl9zdmddOnBvaW50ZXItZXZlbnRzLW5vbmUgWyZfc3ZnXTpzaHJpbmstMFwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgY2hlY2tlZD17Y2hlY2tlZH1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIGxlZnQtMiBmbGV4IHNpemUtMy41IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgICAgPENoZWNrSWNvbiBjbGFzc05hbWU9XCJzaXplLTRcIiAvPlxuICAgICAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgPC9zcGFuPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT5cbiAgKTtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51UmFkaW9Hcm91cCh7XG4gIC4uLnByb3BzXG59OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvR3JvdXA+KSB7XG4gIHJldHVybiA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvR3JvdXAgZGF0YS1zbG90PVwiZHJvcGRvd24tbWVudS1yYWRpby1ncm91cFwiIHsuLi5wcm9wc30gLz47XG59XG5cbmZ1bmN0aW9uIERyb3Bkb3duTWVudVJhZGlvSXRlbSh7XG4gIGNsYXNzTmFtZSxcbiAgY2hpbGRyZW4sXG4gIC4uLnByb3BzXG59OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbT4pIHtcbiAgcmV0dXJuIChcbiAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbVxuICAgICAgZGF0YS1zbG90PVwiZHJvcGRvd24tbWVudS1yYWRpby1pdGVtXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwib3V0bGluZS1oaWRkZW4gcmVsYXRpdmUgZmxleCBjdXJzb3ItZGVmYXVsdCBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIgZ2FwLTIgcm91bmRlZC1zbSBweS0xLjUgcGwtOCBwci0yIHRleHQtc20gZm9jdXM6YmctYWNjZW50IGZvY3VzOnRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOm9wYWNpdHktNTAgWyZfc3ZnOm5vdChbY2xhc3MqPSdzaXplLSddKV06c2l6ZS00IFsmX3N2Z106cG9pbnRlci1ldmVudHMtbm9uZSBbJl9zdmddOnNocmluay0wXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSBsZWZ0LTIgZmxleCBzaXplLTMuNSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICAgIDxDaXJjbGVJY29uIGNsYXNzTmFtZT1cInNpemUtMiBmaWxsLWN1cnJlbnRcIiAvPlxuICAgICAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgPC9zcGFuPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbT5cbiAgKTtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51TGFiZWwoe1xuICBjbGFzc05hbWUsXG4gIGluc2V0LFxuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbD4gJiB7XG4gIGluc2V0PzogYm9vbGVhbjtcbn0pIHtcbiAgcmV0dXJuIChcbiAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsXG4gICAgICBkYXRhLXNsb3Q9XCJkcm9wZG93bi1tZW51LWxhYmVsXCJcbiAgICAgIGRhdGEtaW5zZXQ9e2luc2V0fVxuICAgICAgY2xhc3NOYW1lPXtjbigncHgtMiBweS0xLjUgdGV4dC1zbSBmb250LW1lZGl1bSBkYXRhLVtpbnNldF06cGwtOCcsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51U2VwYXJhdG9yKHtcbiAgY2xhc3NOYW1lLFxuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+KSB7XG4gIHJldHVybiAoXG4gICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3JcbiAgICAgIGRhdGEtc2xvdD1cImRyb3Bkb3duLW1lbnUtc2VwYXJhdG9yXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJy1teC0xIG15LTEgaC1weCBiZy1zdXJmYWNlLWhvdmVyJywgY2xhc3NOYW1lKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufVxuXG5mdW5jdGlvbiBEcm9wZG93bk1lbnVTaG9ydGN1dCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuQ29tcG9uZW50UHJvcHM8J3NwYW4nPikge1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICBkYXRhLXNsb3Q9XCJkcm9wZG93bi1tZW51LXNob3J0Y3V0XCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ21sLWF1dG8gdGV4dC14cyB0cmFja2luZy13aWRlc3QgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kJywgY2xhc3NOYW1lKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufVxuXG5mdW5jdGlvbiBEcm9wZG93bk1lbnVTdWIoeyAuLi5wcm9wcyB9OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1Yj4pIHtcbiAgcmV0dXJuIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViIGRhdGEtc2xvdD1cImRyb3Bkb3duLW1lbnUtc3ViXCIgey4uLnByb3BzfSAvPjtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51U3ViVHJpZ2dlcih7XG4gIGNsYXNzTmFtZSxcbiAgaW5zZXQsXG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPiAmIHtcbiAgaW5zZXQ/OiBib29sZWFuO1xufSkge1xuICByZXR1cm4gKFxuICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlclxuICAgICAgZGF0YS1zbG90PVwiZHJvcGRvd24tbWVudS1zdWItdHJpZ2dlclwiXG4gICAgICBkYXRhLWluc2V0PXtpbnNldH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdvdXRsaW5lLWhpZGRlbiBmbGV4IGN1cnNvci1kZWZhdWx0IHNlbGVjdC1ub25lIGl0ZW1zLWNlbnRlciByb3VuZGVkLXNtIHB4LTIgcHktMS41IHRleHQtc20gZm9jdXM6YmctYWNjZW50IGZvY3VzOnRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bc3RhdGU9b3Blbl06YmctYWNjZW50IGRhdGEtW2luc2V0XTpwbC04IGRhdGEtW3N0YXRlPW9wZW5dOnRleHQtYWNjZW50LWZvcmVncm91bmQnLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDxDaGV2cm9uUmlnaHRJY29uIGNsYXNzTmFtZT1cIm1sLWF1dG8gc2l6ZS00XCIgLz5cbiAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPlxuICApO1xufVxuXG5mdW5jdGlvbiBEcm9wZG93bk1lbnVTdWJDb250ZW50KHtcbiAgY2xhc3NOYW1lLFxuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJDb250ZW50Pikge1xuICByZXR1cm4gKFxuICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudFxuICAgICAgZGF0YS1zbG90PVwiZHJvcGRvd24tbWVudS1zdWItY29udGVudFwiXG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAnb3JpZ2luLSgtLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luKSB6LTQwIG1pbi13LVs4cmVtXSBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWJvcmRlci1tZWRpdW0gYmctc3VyZmFjZS1wcmltYXJ5IHAtMSB0ZXh0LXRleHQtcHJpbWFyeSBzaGFkb3ctbGcgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTp6b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTp6b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufVxuXG5leHBvcnQge1xuICBEcm9wZG93bk1lbnUsXG4gIERyb3Bkb3duTWVudVBvcnRhbCxcbiAgRHJvcGRvd25NZW51VHJpZ2dlcixcbiAgRHJvcGRvd25NZW51Q29udGVudCxcbiAgRHJvcGRvd25NZW51R3JvdXAsXG4gIERyb3Bkb3duTWVudUxhYmVsLFxuICBEcm9wZG93bk1lbnVJdGVtLFxuICBEcm9wZG93bk1lbnVDaGVja2JveEl0ZW0sXG4gIERyb3Bkb3duTWVudVJhZGlvR3JvdXAsXG4gIERyb3Bkb3duTWVudVJhZGlvSXRlbSxcbiAgRHJvcGRvd25NZW51U2VwYXJhdG9yLFxuICBEcm9wZG93bk1lbnVTaG9ydGN1dCxcbiAgRHJvcGRvd25NZW51U3ViLFxuICBEcm9wZG93bk1lbnVTdWJUcmlnZ2VyLFxuICBEcm9wZG93bk1lbnVTdWJDb250ZW50LFxufTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIEhvdmVyQ2FyZFByaW1pdGl2ZSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtaG92ZXItY2FyZCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5jb25zdCBIb3ZlckNhcmQgPSBIb3ZlckNhcmRQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgSG92ZXJDYXJkVHJpZ2dlciA9IEhvdmVyQ2FyZFByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBIb3ZlckNhcmRQb3J0YWwgPSBIb3ZlckNhcmRQcmltaXRpdmUuUG9ydGFsO1xuXG5jb25zdCBIb3ZlckNhcmRDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgSG92ZXJDYXJkUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEhvdmVyQ2FyZFByaW1pdGl2ZS5Db250ZW50PiAmIHsgZGlzYWJsZWQ/OiBib29sZWFuIH1cbj4oKHsgY2xhc3NOYW1lID0gJycsIGFsaWduID0gJ2NlbnRlcicsIHNpZGVPZmZzZXQgPSA2LCBkaXNhYmxlZCA9IGZhbHNlLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgaWYgKGRpc2FibGVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxIb3ZlckNhcmRQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBhbGlnbj17YWxpZ259XG4gICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ3otNTAgdy02NCBvcmlnaW4tWy0tcmFkaXgtaG92ZXItY2FyZC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dIHJvdW5kZWQteGwgYm9yZGVyIGJvcmRlci1ib3JkZXItbGlnaHQgYmctc3VyZmFjZS1zZWNvbmRhcnkgcC00IHRleHQtdGV4dC1wcmltYXJ5IHNoYWRvdy1tZCBvdXRsaW5lLW5vbmUgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTp6b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTp6b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufSk7XG5Ib3ZlckNhcmRDb250ZW50LmRpc3BsYXlOYW1lID0gSG92ZXJDYXJkUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IEhvdmVyQ2FyZCwgSG92ZXJDYXJkVHJpZ2dlciwgSG92ZXJDYXJkQ29udGVudCwgSG92ZXJDYXJkUG9ydGFsIH07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5leHBvcnQgdHlwZSBJbnB1dFByb3BzID0gUmVhY3QuSW5wdXRIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50PjtcblxuY29uc3QgSW5wdXQgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxJbnB1dEVsZW1lbnQsIElucHV0UHJvcHM+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGlucHV0XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAnZmxleCBoLTEwIHctZnVsbCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItYm9yZGVyLWxpZ2h0IGJnLXRyYW5zcGFyZW50IHB4LTMgcHktMiB0ZXh0LXNtIHJpbmctb2Zmc2V0LWJhY2tncm91bmQgcGxhY2Vob2xkZXI6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwJyxcbiAgICAgICAgY2xhc3NOYW1lID8/ICcnLFxuICAgICAgKX1cbiAgICAgIHJlZj17cmVmfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICk7XG59KTtcblxuSW5wdXQuZGlzcGxheU5hbWUgPSAnSW5wdXQnO1xuXG5leHBvcnQgeyBJbnB1dCB9O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG4vLyBpbXBvcnQgeyBOdW1lcmljRm9ybWF0IH0gZnJvbSAncmVhY3QtbnVtYmVyLWZvcm1hdCc7XG5cbmltcG9ydCBSQ0lucHV0TnVtYmVyIGZyb20gJ3JjLWlucHV0LW51bWJlcic7XG5pbXBvcnQgKiBhcyBJbnB1dE51bWJlclByaW1pdGl2ZSBmcm9tICdyYy1pbnB1dC1udW1iZXInO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuLy8gVE9ETyBoZWxwIG5lZWRlZFxuLy8gUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4sXG4vLyBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIExhYmVsUHJpbWl0aXZlLlJvb3Q+XG5cbmNvbnN0IElucHV0TnVtYmVyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUkNJbnB1dE51bWJlcj4sXG4gIElucHV0TnVtYmVyUHJpbWl0aXZlLklucHV0TnVtYmVyUHJvcHNcbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8UkNJbnB1dE51bWJlclxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ2ZsZXggbWF4LWgtNSB3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWdyYXktMzAwIGJnLXRyYW5zcGFyZW50IHB4LTMgcHktMiB0ZXh0LXNtIHBsYWNlaG9sZGVyOnRleHQtZ3JheS00MDAgZm9jdXM6b3V0bGluZS1ub25lIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwIGRhcms6Ym9yZGVyLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTUwJyxcbiAgICAgICAgY2xhc3NOYW1lID8/ICcnLFxuICAgICAgKX1cbiAgICAgIHJlZj17cmVmfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICk7XG59KTtcbklucHV0TnVtYmVyLmRpc3BsYXlOYW1lID0gJ0lucHV0JztcblxuLy8gY29uc29sZS5sb2coX0lucHV0TnVtYmVyKTtcblxuLy8gY29uc3QgSW5wdXROdW1iZXIgPSBSZWFjdC5mb3J3YXJkUmVmKCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4vLyAgIHJldHVybiAoXG4vLyAgICAgPE51bWVyaWNGb3JtYXRcbi8vICAgICAgIGNsYXNzTmFtZT17Y24oXG4vLyAgICAgICAgICdmbGV4IGgtMTAgdy1mdWxsIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy10cmFuc3BhcmVudCBweS0yIHB4LTMgdGV4dC1zbSBwbGFjZWhvbGRlcjp0ZXh0LWdyYXktNDAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1ncmF5LTQwMCBmb2N1czpyaW5nLW9mZnNldC0yIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwIGRhcms6Ym9yZGVyLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTUwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTQwMCBkYXJrOmZvY3VzOnJpbmctb2Zmc2V0LWdyYXktOTAwJyxcbi8vICAgICAgICAgY2xhc3NOYW1lXG4vLyAgICAgICApfVxuLy8gICAgICAgcmVmPXtyZWZ9XG4vLyAgICAgICB7Li4ucHJvcHN9XG4vLyAgICAgLz5cbi8vICAgKTtcbi8vIH0pO1xuXG5leHBvcnQgeyBJbnB1dE51bWJlciB9O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgRXllLCBFeWVPZmYsIENvcHksIENoZWNrIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjcmV0SW5wdXRQcm9wc1xuICBleHRlbmRzIE9taXQ8UmVhY3QuSW5wdXRIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50PiwgJ3R5cGUnPiB7XG4gIC8qKiBTaG93IGNvcHkgYnV0dG9uICovXG4gIHNob3dDb3B5PzogYm9vbGVhbjtcbiAgLyoqIENhbGxiYWNrIHdoZW4gdmFsdWUgaXMgY29waWVkICovXG4gIG9uQ29weT86ICgpID0+IHZvaWQ7XG4gIC8qKiBEdXJhdGlvbiBpbiBtcyB0byBzaG93IGNoZWNrbWFyayBhZnRlciBjb3B5IChkZWZhdWx0OiAyMDAwKSAqL1xuICBjb3B5RmVlZGJhY2tEdXJhdGlvbj86IG51bWJlcjtcbn1cblxuY29uc3QgU2VjcmV0SW5wdXQgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxJbnB1dEVsZW1lbnQsIFNlY3JldElucHV0UHJvcHM+KFxuICAoXG4gICAgeyBjbGFzc05hbWUsIHNob3dDb3B5ID0gZmFsc2UsIG9uQ29weSwgY29weUZlZWRiYWNrRHVyYXRpb24gPSAyMDAwLCBkaXNhYmxlZCwgdmFsdWUsIC4uLnByb3BzIH0sXG4gICAgcmVmLFxuICApID0+IHtcbiAgICBjb25zdCBbaXNWaXNpYmxlLCBzZXRJc1Zpc2libGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpc0NvcGllZCwgc2V0SXNDb3BpZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gICAgY29uc3QgdG9nZ2xlVmlzaWJpbGl0eSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIHNldElzVmlzaWJsZSgocHJldikgPT4gIXByZXYpO1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IGhhbmRsZUNvcHkgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoaXNDb3BpZWQgfHwgZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0ZXh0VG9Db3B5ID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogJyc7XG4gICAgICBpZiAoIXRleHRUb0NvcHkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0VG9Db3B5KTtcbiAgICAgICAgc2V0SXNDb3BpZWQodHJ1ZSk7XG4gICAgICAgIG9uQ29weT8uKCk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgc2V0SXNDb3BpZWQoZmFsc2UpO1xuICAgICAgICB9LCBjb3B5RmVlZGJhY2tEdXJhdGlvbik7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGNvcHk6JywgZXJyKTtcbiAgICAgIH1cbiAgICB9LCBbdmFsdWUsIGlzQ29waWVkLCBkaXNhYmxlZCwgb25Db3B5LCBjb3B5RmVlZGJhY2tEdXJhdGlvbl0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT17aXNWaXNpYmxlID8gJ3RleHQnIDogJ3Bhc3N3b3JkJ31cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ2ZsZXggaC0xMCB3LWZ1bGwgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWlucHV0IGJnLXRyYW5zcGFyZW50IHB4LTMgcHktMiB0ZXh0LXNtIHJpbmctb2Zmc2V0LWJhY2tncm91bmQgcGxhY2Vob2xkZXI6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwJyxcbiAgICAgICAgICAgIHNob3dDb3B5ID8gJ3ByLTIwJyA6ICdwci0xMCcsXG4gICAgICAgICAgICBjbGFzc05hbWUgPz8gJycsXG4gICAgICAgICAgKX1cbiAgICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgIGF1dG9Db21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgc3BlbGxDaGVjaz17ZmFsc2V9XG4gICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAvPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHJpZ2h0LTEgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTAuNVwiPlxuICAgICAgICAgIHtzaG93Q29weSAmJiAoXG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDb3B5fVxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWQgfHwgIXZhbHVlfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICdmbGV4IHNpemUtOCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1tZCB0ZXh0LXRleHQtc2Vjb25kYXJ5IHRyYW5zaXRpb24tY29sb3JzJyxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZCB8fCAhdmFsdWVcbiAgICAgICAgICAgICAgICAgID8gJ2N1cnNvci1ub3QtYWxsb3dlZCBvcGFjaXR5LTUwJ1xuICAgICAgICAgICAgICAgICAgOiAnaG92ZXI6Ymctc3VyZmFjZS1ob3ZlciBob3Zlcjp0ZXh0LXRleHQtcHJpbWFyeScsXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2lzQ29waWVkID8gJ0NvcGllZCcgOiAnQ29weSB0byBjbGlwYm9hcmQnfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aXNDb3BpZWQgPyA8Q2hlY2sgY2xhc3NOYW1lPVwic2l6ZS00XCIgLz4gOiA8Q29weSBjbGFzc05hbWU9XCJzaXplLTRcIiAvPn1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBvbkNsaWNrPXt0b2dnbGVWaXNpYmlsaXR5fVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgJ2ZsZXggc2l6ZS04IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLW1kIHRleHQtdGV4dC1zZWNvbmRhcnkgdHJhbnNpdGlvbi1jb2xvcnMnLFxuICAgICAgICAgICAgICBkaXNhYmxlZFxuICAgICAgICAgICAgICAgID8gJ2N1cnNvci1ub3QtYWxsb3dlZCBvcGFjaXR5LTUwJ1xuICAgICAgICAgICAgICAgIDogJ2hvdmVyOmJnLXN1cmZhY2UtaG92ZXIgaG92ZXI6dGV4dC10ZXh0LXByaW1hcnknLFxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9e2lzVmlzaWJsZSA/ICdIaWRlIHBhc3N3b3JkJyA6ICdTaG93IHBhc3N3b3JkJ31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aXNWaXNpYmxlID8gPEV5ZU9mZiBjbGFzc05hbWU9XCJzaXplLTRcIiAvPiA6IDxFeWUgY2xhc3NOYW1lPVwic2l6ZS00XCIgLz59XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfSxcbik7XG5cblNlY3JldElucHV0LmRpc3BsYXlOYW1lID0gJ1NlY3JldElucHV0JztcblxuZXhwb3J0IHsgU2VjcmV0SW5wdXQgfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVySW5wdXRQcm9wc1xuICBleHRlbmRzIE9taXQ8UmVhY3QuSW5wdXRIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50PiwgJ3BsYWNlaG9sZGVyJz4ge1xuICAvKiogVGhlIGxhYmVsIHRleHQgc2hvd24gaW4gdGhlIGZsb2F0aW5nIGxhYmVsICovXG4gIGxhYmVsOiBzdHJpbmc7XG4gIC8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGlucHV0IC0gdXNlZCB0byBsaW5rIGxhYmVsICovXG4gIGlucHV0SWQ6IHN0cmluZztcbiAgLyoqIENvbnRhaW5lciBjbGFzc05hbWUgZm9yIGN1c3RvbSBzdHlsaW5nICovXG4gIGNvbnRhaW5lckNsYXNzTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHN0YW5kYXJkaXplZCBmaWx0ZXIvc2VhcmNoIGlucHV0IGNvbXBvbmVudCB3aXRoIGEgZmxvYXRpbmcgbGFiZWxcbiAqIHRoYXQgYW5pbWF0ZXMgdXAgd2hlbiBmb2N1c2VkIG9yIGhhcyBhIHZhbHVlLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8RmlsdGVySW5wdXRcbiAqICAgaW5wdXRJZD1cImJvb2ttYXJrcy1maWx0ZXJcIlxuICogICBsYWJlbD17bG9jYWxpemUoJ2NvbV91aV9ib29rbWFya3NfZmlsdGVyJyl9XG4gKiAgIHZhbHVlPXtzZWFyY2hRdWVyeX1cbiAqICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTZWFyY2hRdWVyeShlLnRhcmdldC52YWx1ZSl9XG4gKiAvPlxuICovXG5jb25zdCBGaWx0ZXJJbnB1dCA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTElucHV0RWxlbWVudCwgRmlsdGVySW5wdXRQcm9wcz4oXG4gICh7IGNsYXNzTmFtZSwgbGFiZWwsIGlucHV0SWQsIGNvbnRhaW5lckNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbigncmVsYXRpdmUnLCBjb250YWluZXJDbGFzc05hbWUpfT5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgaWQ9e2lucHV0SWR9XG4gICAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCIgXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPXtsYWJlbH1cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ3BlZXIgZmxleCBoLTkgdy1mdWxsIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ib3JkZXItbGlnaHQgYmctdHJhbnNwYXJlbnQgcHgtMyBweS0yIHRleHQtc20gcmluZy1vZmZzZXQtYmFja2dyb3VuZCBwbGFjZWhvbGRlcjp0ZXh0LW11dGVkLWZvcmVncm91bmQgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTAnLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICl9XG4gICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAvPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICBodG1sRm9yPXtpbnB1dElkfVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgbGVmdC0zIHRvcC0xLzIgLXRyYW5zbGF0ZS15LTEvMiB0ZXh0LXNtIHRleHQtdGV4dC1zZWNvbmRhcnkgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwIHBlZXItZm9jdXM6dG9wLTAgcGVlci1mb2N1czpiZy1iYWNrZ3JvdW5kIHBlZXItZm9jdXM6cHgtMSBwZWVyLWZvY3VzOnRleHQteHMgcGVlci1bOm5vdCg6cGxhY2Vob2xkZXItc2hvd24pXTp0b3AtMCBwZWVyLVs6bm90KDpwbGFjZWhvbGRlci1zaG93bildOmJnLWJhY2tncm91bmQgcGVlci1bOm5vdCg6cGxhY2Vob2xkZXItc2hvd24pXTpweC0xIHBlZXItWzpub3QoOnBsYWNlaG9sZGVyLXNob3duKV06dGV4dC14c1wiXG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9LFxuKTtcblxuRmlsdGVySW5wdXQuZGlzcGxheU5hbWUgPSAnRmlsdGVySW5wdXQnO1xuXG5leHBvcnQgeyBGaWx0ZXJJbnB1dCB9O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgTGFiZWxQcmltaXRpdmUgZnJvbSAnQHJhZGl4LXVpL3JlYWN0LWxhYmVsJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmNvbnN0IExhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4gJiB7XG4gICAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICB9XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPExhYmVsUHJpbWl0aXZlLlJvb3RcbiAgICByZWY9e3JlZn1cbiAgICB7Li4ucHJvcHN9XG4gICAgey4uLntcbiAgICAgIGNsYXNzTmFtZTogY24oXG4gICAgICAgICdibG9jayB3LWZ1bGwgYnJlYWstYWxsIHRleHQtc20gbGVhZGluZy1ub25lIHBlZXItZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIHBlZXItZGlzYWJsZWQ6b3BhY2l0eS03MCBkYXJrOnRleHQtZ3JheS0yMDAnLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApLFxuICAgIH19XG4gIC8+XG4pKTtcbkxhYmVsLmRpc3BsYXlOYW1lID0gTGFiZWxQcmltaXRpdmUuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgTGFiZWwgfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIERpYWxvZ1ByaW1pdGl2ZSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtZGlhbG9nJztcbmltcG9ydCB7IFggfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuY29uc3QgRGlhbG9nRGVwdGhDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dCgwKTtcblxuaW50ZXJmYWNlIE9HRGlhbG9nUHJvcHMgZXh0ZW5kcyBEaWFsb2dQcmltaXRpdmUuRGlhbG9nUHJvcHMge1xuICB0cmlnZ2VyUmVmPzogUmVhY3QuUmVmT2JqZWN0PEhUTUxCdXR0b25FbGVtZW50IHwgSFRNTElucHV0RWxlbWVudCB8IEhUTUxEaXZFbGVtZW50IHwgbnVsbD47XG4gIHRyaWdnZXJSZWZzPzogUmVhY3QuUmVmT2JqZWN0PEhUTUxCdXR0b25FbGVtZW50IHwgSFRNTElucHV0RWxlbWVudCB8IEhUTUxEaXZFbGVtZW50IHwgbnVsbD5bXTtcbn1cblxuY29uc3QgRGlhbG9nID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MRGl2RWxlbWVudCwgT0dEaWFsb2dQcm9wcz4oXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgKHsgY2hpbGRyZW4sIHRyaWdnZXJSZWYsIHRyaWdnZXJSZWZzLCBvbk9wZW5DaGFuZ2UsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHBhcmVudERlcHRoID0gUmVhY3QudXNlQ29udGV4dChEaWFsb2dEZXB0aENvbnRleHQpO1xuICAgIGNvbnN0IGN1cnJlbnREZXB0aCA9IHBhcmVudERlcHRoICsgMTtcblxuICAgIGNvbnN0IGhhbmRsZU9wZW5DaGFuZ2UgPSAob3BlbjogYm9vbGVhbikgPT4ge1xuICAgICAgaWYgKCFvcGVuICYmIHRyaWdnZXJSZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdHJpZ2dlclJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgICB9LCAwKTtcbiAgICAgIH1cbiAgICAgIGlmICh0cmlnZ2VyUmVmcz8ubGVuZ3RoKSB7XG4gICAgICAgIHRyaWdnZXJSZWZzLmZvckVhY2goKHJlZikgPT4ge1xuICAgICAgICAgIGlmIChyZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICByZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBvbk9wZW5DaGFuZ2U/LihvcGVuKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxEaWFsb2dEZXB0aENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2N1cnJlbnREZXB0aH0+XG4gICAgICAgIDxEaWFsb2dQcmltaXRpdmUuUm9vdCB7Li4ucHJvcHN9IG9uT3BlbkNoYW5nZT17aGFuZGxlT3BlbkNoYW5nZX0+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L0RpYWxvZ1ByaW1pdGl2ZS5Sb290PlxuICAgICAgPC9EaWFsb2dEZXB0aENvbnRleHQuUHJvdmlkZXI+XG4gICAgKTtcbiAgfSxcbik7XG5cbmNvbnN0IERpYWxvZ1RyaWdnZXIgPSBEaWFsb2dQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgRGlhbG9nUG9ydGFsID0gRGlhbG9nUHJpbWl0aXZlLlBvcnRhbDtcblxuY29uc3QgRGlhbG9nQ2xvc2UgPSBEaWFsb2dQcmltaXRpdmUuQ2xvc2U7XG5cbmV4cG9ydCBjb25zdCBEaWFsb2dPdmVybGF5ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLk92ZXJsYXk+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5PdmVybGF5PlxuPigoeyBjbGFzc05hbWUsIHN0eWxlLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgY29uc3QgZGVwdGggPSBSZWFjdC51c2VDb250ZXh0KERpYWxvZ0RlcHRoQ29udGV4dCk7XG4gIGNvbnN0IG92ZXJsYXlaSW5kZXggPSAxMzAgKyAoZGVwdGggLSAxKSAqIDYwO1xuXG4gIHJldHVybiAoXG4gICAgPERpYWxvZ1ByaW1pdGl2ZS5PdmVybGF5XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHN0eWxlPXt7IC4uLnN0eWxlLCB6SW5kZXg6IG92ZXJsYXlaSW5kZXggfX1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdmaXhlZCBpbnNldC0wIGJnLWJsYWNrLzgwIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufSk7XG5EaWFsb2dPdmVybGF5LmRpc3BsYXlOYW1lID0gRGlhbG9nUHJpbWl0aXZlLk92ZXJsYXkuZGlzcGxheU5hbWU7XG5cbnR5cGUgRGlhbG9nQ29udGVudFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuQ29udGVudD4gJiB7XG4gIHNob3dDbG9zZUJ1dHRvbj86IGJvb2xlYW47XG4gIGRpc2FibGVTY3JvbGw/OiBib29sZWFuO1xuICBvdmVybGF5Q2xhc3NOYW1lPzogc3RyaW5nO1xufTtcblxuY29uc3QgRGlhbG9nQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5Db250ZW50PixcbiAgRGlhbG9nQ29udGVudFByb3BzXG4+KFxuICAoXG4gICAge1xuICAgICAgY2xhc3NOYW1lLFxuICAgICAgb3ZlcmxheUNsYXNzTmFtZSxcbiAgICAgIHNob3dDbG9zZUJ1dHRvbiA9IHRydWUsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIHN0eWxlLFxuICAgICAgb25Fc2NhcGVLZXlEb3duOiBwcm9wc09uRXNjYXBlS2V5RG93bixcbiAgICAgIC4uLnByb3BzXG4gICAgfSxcbiAgICByZWYsXG4gICkgPT4ge1xuICAgIGNvbnN0IGRlcHRoID0gUmVhY3QudXNlQ29udGV4dChEaWFsb2dEZXB0aENvbnRleHQpO1xuICAgIGNvbnN0IGNvbnRlbnRaSW5kZXggPSAxNDAgKyAoZGVwdGggLSAxKSAqIDYwO1xuXG4gICAgLyogSGFuZGxlIEVzY2FwZSBrZXkgdG8gcHJldmVudCBjbG9zaW5nIGRpYWxvZyBpZiBhIHRvb2x0aXAgb3IgZHJvcGRvd24gaGFzIGZvY3VzXG4gICAgKHRoaXMgaXMgYSB3b3JrYXJvdW5kIGluIG9yZGVyIHRvIGFjaGlldmUgV0NBRyBjb21wbGlhbmNlIHdoaWNoIHJlcXVpcmVzXG4gICAgdGhhdCBvdXIgdG9vbHRpcHMgYmUgZGlzbWlzc2FibGUgd2l0aCBFc2NhcGUga2V5KSAqL1xuICAgIGNvbnN0IGhhbmRsZUVzY2FwZUtleURvd24gPSBSZWFjdC51c2VDYWxsYmFjayhcbiAgICAgIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBhY3RpdmVFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblxuICAgICAgICAvLyBDaGVjayBpZiBhY3RpdmUgZWxlbWVudCBpcyBhIHRyaWdnZXIgd2l0aCBhbiBvcGVuIHBvcG92ZXIgKGFyaWEtZXhwYW5kZWQ9XCJ0cnVlXCIpXG4gICAgICAgIGlmIChhY3RpdmVFbGVtZW50Py5nZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnKSA9PT0gJ3RydWUnKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBpZiBhIGRyb3Bkb3duIG1lbnUsIGxpc3Rib3gsIG9yIGNvbWJvYm94IGhhcyBmb2N1cyAoZm9jdXMgaXMgd2l0aGluIGl0KVxuICAgICAgICBjb25zdCBwb3BvdmVyRWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICdbcm9sZT1cIm1lbnVcIl0sIFtyb2xlPVwibGlzdGJveFwiXSwgW3JvbGU9XCJjb21ib2JveFwiXScsXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3QgcG9wb3ZlciBvZiBwb3BvdmVyRWxlbWVudHMpIHtcbiAgICAgICAgICBpZiAocG9wb3Zlci5jb250YWlucyhhY3RpdmVFbGVtZW50KSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBpZiBhIHRvb2x0aXAgaGFzIGZvY3VzIChmb2N1cyBpcyB3aXRoaW4gaXQpXG4gICAgICAgIGNvbnN0IHRvb2x0aXBzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvb2x0aXAnKTtcbiAgICAgICAgZm9yIChjb25zdCB0b29sdGlwIG9mIHRvb2x0aXBzKSB7XG4gICAgICAgICAgaWYgKHRvb2x0aXAuY29udGFpbnMoYWN0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcHJvcHNPbkVzY2FwZUtleURvd24/LihldmVudCk7XG4gICAgICB9LFxuICAgICAgW3Byb3BzT25Fc2NhcGVLZXlEb3duXSxcbiAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxEaWFsb2dQb3J0YWw+XG4gICAgICAgIDxEaWFsb2dPdmVybGF5IGNsYXNzTmFtZT17b3ZlcmxheUNsYXNzTmFtZX0gLz5cbiAgICAgICAgPERpYWxvZ1ByaW1pdGl2ZS5Db250ZW50XG4gICAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgICAgc3R5bGU9e3sgLi4uc3R5bGUsIHpJbmRleDogY29udGVudFpJbmRleCB9fVxuICAgICAgICAgIG9uRXNjYXBlS2V5RG93bj17aGFuZGxlRXNjYXBlS2V5RG93bn1cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ21heC13LTExLzEyIGZpeGVkIGxlZnQtWzUwJV0gdG9wLVs1MCVdIGdyaWQgbWF4LWgtWzkwdmhdIHctZnVsbCB0cmFuc2xhdGUteC1bLTUwJV0gdHJhbnNsYXRlLXktWy01MCVdIGdhcC00IG92ZXJmbG93LXktYXV0byByb3VuZGVkLTJ4bCBiZy1iYWNrZ3JvdW5kIHAtNiB0ZXh0LXRleHQtcHJpbWFyeSBzaGFkb3ctbGcgZHVyYXRpb24tMjAwIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06em9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06em9vbS1pbi05NSBkYXRhLVtzdGF0ZT1jbG9zZWRdOnNsaWRlLW91dC10by1sZWZ0LTEvMiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnNsaWRlLW91dC10by10b3AtWzQ4JV0gZGF0YS1bc3RhdGU9b3Blbl06c2xpZGUtaW4tZnJvbS1sZWZ0LTEvMiBkYXRhLVtzdGF0ZT1vcGVuXTpzbGlkZS1pbi1mcm9tLXRvcC1bNDglXScsXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgKX1cbiAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAge3Nob3dDbG9zZUJ1dHRvbiAmJiAoXG4gICAgICAgICAgICA8RGlhbG9nUHJpbWl0aXZlLkNsb3NlIGNsYXNzTmFtZT1cImFic29sdXRlIHJpZ2h0LTQgdG9wLTQgcm91bmRlZC1zbSBvcGFjaXR5LTcwIHJpbmctcmluZy1wcmltYXJ5IHJpbmctb2Zmc2V0LWJhY2tncm91bmQgdHJhbnNpdGlvbi1vcGFjaXR5IGhvdmVyOm9wYWNpdHktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1yaW5nIGZvY3VzOnJpbmctb2Zmc2V0LTIgZGlzYWJsZWQ6cG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtzdGF0ZT1vcGVuXTpiZy1hY2NlbnQgZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICAgIDxYIGNsYXNzTmFtZT1cImgtNiB3LTZcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XG4gICAgICAgICAgICA8L0RpYWxvZ1ByaW1pdGl2ZS5DbG9zZT5cbiAgICAgICAgICApfVxuICAgICAgICA8L0RpYWxvZ1ByaW1pdGl2ZS5Db250ZW50PlxuICAgICAgPC9EaWFsb2dQb3J0YWw+XG4gICAgKTtcbiAgfSxcbik7XG5EaWFsb2dDb250ZW50LmRpc3BsYXlOYW1lID0gRGlhbG9nUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERpYWxvZ0hlYWRlciA9ICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPXtjbignZmxleCBmbGV4LWNvbCBzcGFjZS15LTEuNSB0ZXh0LWNlbnRlciBzbTp0ZXh0LWxlZnQnLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pO1xuRGlhbG9nSGVhZGVyLmRpc3BsYXlOYW1lID0gJ0RpYWxvZ0hlYWRlcic7XG5cbmNvbnN0IERpYWxvZ0Zvb3RlciA9ICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSA9PiAoXG4gIDxkaXZcbiAgICBjbGFzc05hbWU9e2NuKCdmbGV4IGZsZXgtY29sLXJldmVyc2Ugc206ZmxleC1yb3cgc206anVzdGlmeS1lbmQgc206c3BhY2UteC0yJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuRGlhbG9nRm9vdGVyLmRpc3BsYXlOYW1lID0gJ0RpYWxvZ0Zvb3Rlcic7XG5cbmNvbnN0IERpYWxvZ1RpdGxlID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLlRpdGxlPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuVGl0bGU+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEaWFsb2dQcmltaXRpdmUuVGl0bGVcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKCd0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgbGVhZGluZy1ub25lIHRyYWNraW5nLXRpZ2h0JywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRpYWxvZ1RpdGxlLmRpc3BsYXlOYW1lID0gRGlhbG9nUHJpbWl0aXZlLlRpdGxlLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEaWFsb2dEZXNjcmlwdGlvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvbj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbigndGV4dC1zbSB0ZXh0LXRleHQtc2Vjb25kYXJ5JywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRpYWxvZ0Rlc2NyaXB0aW9uLmRpc3BsYXlOYW1lID0gRGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uLmRpc3BsYXlOYW1lO1xuXG5leHBvcnQge1xuICBEaWFsb2cgYXMgT0dEaWFsb2csXG4gIERpYWxvZ1BvcnRhbCBhcyBPR0RpYWxvZ1BvcnRhbCxcbiAgRGlhbG9nT3ZlcmxheSBhcyBPR0RpYWxvZ092ZXJsYXksXG4gIERpYWxvZ0Nsb3NlIGFzIE9HRGlhbG9nQ2xvc2UsXG4gIERpYWxvZ1RyaWdnZXIgYXMgT0dEaWFsb2dUcmlnZ2VyLFxuICBEaWFsb2dDb250ZW50IGFzIE9HRGlhbG9nQ29udGVudCxcbiAgRGlhbG9nSGVhZGVyIGFzIE9HRGlhbG9nSGVhZGVyLFxuICBEaWFsb2dGb290ZXIgYXMgT0dEaWFsb2dGb290ZXIsXG4gIERpYWxvZ1RpdGxlIGFzIE9HRGlhbG9nVGl0bGUsXG4gIERpYWxvZ0Rlc2NyaXB0aW9uIGFzIE9HRGlhbG9nRGVzY3JpcHRpb24sXG59O1xuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uTWFyayA9ICh7IGNsYXNzTmFtZSA9ICcnIH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8c3Bhbj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAnYm9yZGVyLXRva2VuLWJvcmRlci1tZWRpdW0gdGV4dC10b2tlbi10ZXh0LXRlcnRpYXJ5IG1sLTIgZmxleCBoLTMuNSB3LTMuNSBjdXJzb3ItZGVmYXVsdCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1mdWxsIGJvcmRlciB0ZXh0LVswLjVyZW1dIGZvbnQtbWVkaXVtIGxlYWRpbmctbm9uZScsXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApfVxuICAgICAgPlxuICAgICAgICA/XG4gICAgICA8L2Rpdj5cbiAgICA8L3NwYW4+XG4gICk7XG59O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgU2xpZGVyUHJpbWl0aXZlIGZyb20gJ0ByYWRpeC11aS9yZWFjdC1zbGlkZXInO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxudHlwZSBTbGlkZXJQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2xpZGVyUHJpbWl0aXZlLlJvb3Q+ICYge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIG9uRG91YmxlQ2xpY2s/OiAoKSA9PiB2b2lkO1xuICAnYXJpYS1kZXNjcmliZWRieSc/OiBzdHJpbmc7XG59ICYgKFxuICAgIHwgeyAnYXJpYS1sYWJlbCc6IHN0cmluZzsgJ2FyaWEtbGFiZWxsZWRieSc/OiBuZXZlciB9XG4gICAgfCB7ICdhcmlhLWxhYmVsbGVkYnknOiBzdHJpbmc7ICdhcmlhLWxhYmVsJz86IG5ldmVyIH1cbiAgICB8IHsgJ2FyaWEtbGFiZWwnOiBzdHJpbmc7ICdhcmlhLWxhYmVsbGVkYnknOiBzdHJpbmcgfVxuICApO1xuXG5jb25zdCBTbGlkZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNsaWRlclByaW1pdGl2ZS5Sb290PiwgU2xpZGVyUHJvcHM+KFxuICAoXG4gICAge1xuICAgICAgY2xhc3NOYW1lLFxuICAgICAgb25Eb3VibGVDbGljayxcbiAgICAgICdhcmlhLWxhYmVsbGVkYnknOiBhcmlhTGFiZWxsZWRCeSxcbiAgICAgICdhcmlhLWxhYmVsJzogYXJpYUxhYmVsLFxuICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiBhcmlhRGVzY3JpYmVkQnksXG4gICAgICAuLi5wcm9wc1xuICAgIH0sXG4gICAgcmVmLFxuICApID0+IChcbiAgICA8U2xpZGVyUHJpbWl0aXZlLlJvb3RcbiAgICAgIHJlZj17cmVmfVxuICAgICAgey4uLnByb3BzfVxuICAgICAgey4uLntcbiAgICAgICAgY2xhc3NOYW1lOiBjbihcbiAgICAgICAgICAncmVsYXRpdmUgZmxleCB3LWZ1bGwgY3Vyc29yLXBvaW50ZXIgdG91Y2gtbm9uZSBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXInLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKSxcbiAgICAgICAgb25Eb3VibGVDbGljayxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPFNsaWRlclByaW1pdGl2ZS5UcmFja1xuICAgICAgICB7Li4ueyBjbGFzc05hbWU6ICdyZWxhdGl2ZSBoLTIgdy1mdWxsIGdyb3cgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtZnVsbCBiZy1zZWNvbmRhcnknIH19XG4gICAgICA+XG4gICAgICAgIDxTbGlkZXJQcmltaXRpdmUuUmFuZ2Ugey4uLnsgY2xhc3NOYW1lOiAnYWJzb2x1dGUgaC1mdWxsIGJnLXByaW1hcnknIH19IC8+XG4gICAgICA8L1NsaWRlclByaW1pdGl2ZS5UcmFjaz5cbiAgICAgIDxTbGlkZXJQcmltaXRpdmUuVGh1bWJcbiAgICAgICAgey4uLntcbiAgICAgICAgICBjbGFzc05hbWU6XG4gICAgICAgICAgICAnYmxvY2sgaC01IHctNSByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLXByaW1hcnkgYmctYmFja2dyb3VuZCByaW5nLW9mZnNldC1iYWNrZ3JvdW5kIHRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1yaW5nIGZvY3VzLXZpc2libGU6cmluZy1vZmZzZXQtMiBkaXNhYmxlZDpwb2ludGVyLWV2ZW50cy1ub25lIGRpc2FibGVkOm9wYWNpdHktNTAnLFxuICAgICAgICAgICdhcmlhLWxhYmVsbGVkYnknOiBhcmlhTGFiZWxsZWRCeSxcbiAgICAgICAgICAnYXJpYS1sYWJlbCc6IGFyaWFMYWJlbCxcbiAgICAgICAgICAnYXJpYS1kZXNjcmliZWRieSc6IGFyaWFEZXNjcmliZWRCeSxcbiAgICAgICAgfX1cbiAgICAgIC8+XG4gICAgPC9TbGlkZXJQcmltaXRpdmUuUm9vdD5cbiAgKSxcbik7XG5TbGlkZXIuZGlzcGxheU5hbWUgPSBTbGlkZXJQcmltaXRpdmUuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgU2xpZGVyIH07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBTZXBhcmF0b3JQcmltaXRpdmUgZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXNlcGFyYXRvcic7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmNvbnN0IFNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlcGFyYXRvclByaW1pdGl2ZS5Sb290PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZXBhcmF0b3JQcmltaXRpdmUuUm9vdD4gJiB7XG4gICAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICB9XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCBvcmllbnRhdGlvbiA9ICdob3Jpem9udGFsJywgZGVjb3JhdGl2ZSA9IHRydWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VwYXJhdG9yUHJpbWl0aXZlLlJvb3RcbiAgICByZWY9e3JlZn1cbiAgICB7Li4ucHJvcHN9XG4gICAgey4uLntcbiAgICAgIGRlY29yYXRpdmUsXG4gICAgICBvcmllbnRhdGlvbixcbiAgICAgIGNsYXNzTmFtZTogY24oXG4gICAgICAgICdzaHJpbmstMCBiZy1ib3JkZXItbGlnaHQnLFxuICAgICAgICBvcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnID8gJ2gtWzFweF0gdy1mdWxsJyA6ICdoLWZ1bGwgdy1bMXB4XScsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICksXG4gICAgfX1cbiAgLz5cbikpO1xuU2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gU2VwYXJhdG9yUHJpbWl0aXZlLlJvb3QuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IFNlcGFyYXRvciB9O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIEFyaWFraXQgZnJvbSAnQGFyaWFraXQvcmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBPcHRpb25XaXRoSWNvbiB9IGZyb20gJ34vY29tbW9uJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbnR5cGUgQ29tYm9ib3hQcm9wcyA9IHtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBvcHRpb25zOiBPcHRpb25XaXRoSWNvbltdIHwgc3RyaW5nW107XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgbGFiZWxDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgb25CbHVyOiAoKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IGNvbnN0IElucHV0Q29tYm9ib3g6IFJlYWN0LkZDPENvbWJvYm94UHJvcHM+ID0gKHtcbiAgbGFiZWwsXG4gIGxhYmVsQ2xhc3NOYW1lLFxuICBwbGFjZWhvbGRlciA9ICdTZWxlY3QgYW4gb3B0aW9uJyxcbiAgb3B0aW9ucyxcbiAgY2xhc3NOYW1lLFxuICB2YWx1ZSxcbiAgb25DaGFuZ2UsXG4gIG9uQmx1cixcbn0pID0+IHtcbiAgY29uc3QgaXNPcHRpb25PYmplY3QgPSAob3B0aW9uOiB1bmtub3duKTogb3B0aW9uIGlzIE9wdGlvbldpdGhJY29uID0+IHtcbiAgICByZXR1cm4gb3B0aW9uICE9IG51bGwgJiYgdHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcgJiYgJ3ZhbHVlJyBpbiBvcHRpb247XG4gIH07XG5cbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2lucHV0VmFsdWUsIHNldElucHV0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUodmFsdWUpO1xuICBjb25zdCBbaXNLZXlib2FyZEZvY3VzLCBzZXRJc0tleWJvYXJkRm9jdXNdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0SW5wdXRWYWx1ZSh2YWx1ZSk7XG4gIH0sIFt2YWx1ZV0pO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChuZXdWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgc2V0SW5wdXRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgb25DaGFuZ2UobmV3VmFsdWUpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEFyaWFraXQuQ29tYm9ib3hQcm92aWRlciB2YWx1ZT17aW5wdXRWYWx1ZX0gc2V0VmFsdWU9e2hhbmRsZUNoYW5nZX0+XG4gICAgICB7bGFiZWwgIT0gbnVsbCAmJiAoXG4gICAgICAgIDxBcmlha2l0LkNvbWJvYm94TGFiZWxcbiAgICAgICAgICBjbGFzc05hbWU9e2NuKCdtYi0yIGJsb2NrIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC10ZXh0LXByaW1hcnknLCBsYWJlbENsYXNzTmFtZSA/PyAnJyl9XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQXJpYWtpdC5Db21ib2JveExhYmVsPlxuICAgICAgKX1cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbigncmVsYXRpdmUnLCBpc0tleWJvYXJkRm9jdXMgPyAncm91bmRlZC1tZCByaW5nLTIgcmluZy1yaW5nLXByaW1hcnknIDogJycpfT5cbiAgICAgICAgPEFyaWFraXQuQ29tYm9ib3hcbiAgICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICdoLTEwIHctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYm9yZGVyLWxpZ2h0IGJnLXN1cmZhY2UtcHJpbWFyeSBweC0zIHB5LTIgdGV4dC1zbScsXG4gICAgICAgICAgICAncGxhY2Vob2xkZXItdGV4dC1zZWNvbmRhcnkgaG92ZXI6Ymctc3VyZmFjZS1ob3ZlcicsXG4gICAgICAgICAgICAnZm9jdXM6b3V0bGluZS1ub25lJyxcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICApfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZXZlbnQpID0+IGhhbmRsZUNoYW5nZShldmVudC50YXJnZXQudmFsdWUpfVxuICAgICAgICAgIG9uQmx1cj17KCkgPT4ge1xuICAgICAgICAgICAgc2V0SXNLZXlib2FyZEZvY3VzKGZhbHNlKTtcbiAgICAgICAgICAgIG9uQmx1cigpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25Gb2N1c1Zpc2libGU9eygpID0+IHtcbiAgICAgICAgICAgIHNldElzS2V5Ym9hcmRGb2N1cyh0cnVlKTtcbiAgICAgICAgICAgIHNldElzT3Blbih0cnVlKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXRJc0tleWJvYXJkRm9jdXMoZmFsc2UpO1xuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxBcmlha2l0LkNvbWJvYm94UG9wb3ZlclxuICAgICAgICBndXR0ZXI9ezR9XG4gICAgICAgIHNhbWVXaWR0aFxuICAgICAgICBvcGVuPXtpc09wZW59XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldElzT3BlbihmYWxzZSl9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgJ3otNTAgbWF4LWgtNjAgdy1mdWxsIG92ZXJmbG93LWF1dG8gcm91bmRlZC1tZCBiZy1zdXJmYWNlLXByaW1hcnkgcC0xIHNoYWRvdy1sZycsXG4gICAgICAgICAgJ2FuaW1hdGUtaW4gZmFkZS1pbi0wIHpvb20taW4tOTUnLFxuICAgICAgICApfVxuICAgICAgPlxuICAgICAgICB7b3B0aW9ucy5tYXAoKG9wdGlvbjogc3RyaW5nIHwgT3B0aW9uV2l0aEljb24sIGluZGV4OiBudW1iZXIpID0+IChcbiAgICAgICAgICA8QXJpYWtpdC5Db21ib2JveEl0ZW1cbiAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAncmVsYXRpdmUgZmxleCBjdXJzb3ItZGVmYXVsdCBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIgcm91bmRlZC1zbSBweC0yIHB5LTEuNSB0ZXh0LXNtIG91dGxpbmUtbm9uZScsXG4gICAgICAgICAgICAgICdjdXJzb3ItcG9pbnRlciBob3ZlcjpiZy1zdXJmYWNlLXRlcnRpYXJ5IGhvdmVyOnRleHQtdGV4dC1wcmltYXJ5JyxcbiAgICAgICAgICAgICAgJ2RhdGEtW2FjdGl2ZS1pdGVtXTpiZy1zdXJmYWNlLXRlcnRpYXJ5IGRhdGEtW2FjdGl2ZS1pdGVtXTp0ZXh0LXRleHQtcHJpbWFyeScsXG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgdmFsdWU9e2lzT3B0aW9uT2JqZWN0KG9wdGlvbikgPyBgJHtvcHRpb24udmFsdWUgPz8gJyd9YCA6IG9wdGlvbn1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aXNPcHRpb25PYmplY3Qob3B0aW9uKSAmJiBvcHRpb24uaWNvbiAhPSBudWxsICYmIChcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibXItMiBmbGV4LXNocmluay0wXCI+e29wdGlvbi5pY29ufTwvc3Bhbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7aXNPcHRpb25PYmplY3Qob3B0aW9uKSA/IG9wdGlvbi5sYWJlbCA6IG9wdGlvbn1cbiAgICAgICAgICA8L0FyaWFraXQuQ29tYm9ib3hJdGVtPlxuICAgICAgICApKX1cbiAgICAgIDwvQXJpYWtpdC5Db21ib2JveFBvcG92ZXI+XG4gICAgPC9Bcmlha2l0LkNvbWJvYm94UHJvdmlkZXI+XG4gICk7XG59O1xuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZnVuY3Rpb24gU2tlbGV0b24oeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50Pikge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdhbmltYXRlLXB1bHNlIHJvdW5kZWQtbWQgYmctc3VyZmFjZS10ZXJ0aWFyeSBvcGFjaXR5LTUwIGRhcms6b3BhY2l0eS0yNScsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn1cblxuZXhwb3J0IHsgU2tlbGV0b24gfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFN3aXRjaFByaW1pdGl2ZXMgZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXN3aXRjaCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG50eXBlIEJhc2VTd2l0Y2hQcm9wcyA9IE9taXQ8XG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU3dpdGNoUHJpbWl0aXZlcy5Sb290PixcbiAgJ2FyaWEtbGFiZWwnIHwgJ2FyaWEtbGFiZWxsZWRieSdcbj47XG5cbnR5cGUgU3dpdGNoUHJvcHMgPVxuICB8IChCYXNlU3dpdGNoUHJvcHMgJiB7XG4gICAgICAnYXJpYS1sYWJlbCc6IHN0cmluZztcbiAgICAgICdhcmlhLWxhYmVsbGVkYnknPzogbmV2ZXI7XG4gICAgfSlcbiAgfCAoQmFzZVN3aXRjaFByb3BzICYge1xuICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IHN0cmluZztcbiAgICAgICdhcmlhLWxhYmVsJz86IG5ldmVyO1xuICAgIH0pO1xuXG5jb25zdCBTd2l0Y2ggPSBSZWFjdC5mb3J3YXJkUmVmPFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFN3aXRjaFByaW1pdGl2ZXMuUm9vdD4sIFN3aXRjaFByb3BzPihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8U3dpdGNoUHJpbWl0aXZlcy5Sb290XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAncGVlciBpbmxpbmUtZmxleCBoLTYgdy0xMSBzaHJpbmstMCBjdXJzb3ItcG9pbnRlciBpdGVtcy1jZW50ZXIgcm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci10cmFuc3BhcmVudCB0cmFuc2l0aW9uLWNvbG9ycyBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmluZyBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpyaW5nLW9mZnNldC1iYWNrZ3JvdW5kIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwIGRhdGEtW3N0YXRlPWNoZWNrZWRdOmJnLXByaW1hcnkgZGF0YS1bc3RhdGU9dW5jaGVja2VkXTpiZy1zd2l0Y2gtdW5jaGVja2VkJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAgIHJlZj17cmVmfVxuICAgID5cbiAgICAgIDxTd2l0Y2hQcmltaXRpdmVzLlRodW1iXG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgJ3BvaW50ZXItZXZlbnRzLW5vbmUgYmxvY2sgaC01IHctNSByb3VuZGVkLWZ1bGwgYmctYmFja2dyb3VuZCBzaGFkb3ctbGcgcmluZy0wIHRyYW5zaXRpb24tdHJhbnNmb3JtIGRhdGEtW3N0YXRlPWNoZWNrZWRdOnRyYW5zbGF0ZS14LTUgZGF0YS1bc3RhdGU9dW5jaGVja2VkXTp0cmFuc2xhdGUteC0wJyxcbiAgICAgICAgKX1cbiAgICAgIC8+XG4gICAgPC9Td2l0Y2hQcmltaXRpdmVzLlJvb3Q+XG4gICksXG4pO1xuU3dpdGNoLmRpc3BsYXlOYW1lID0gU3dpdGNoUHJpbWl0aXZlcy5Sb290LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBTd2l0Y2ggfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmludGVyZmFjZSBUYWJsZVByb3BzIGV4dGVuZHMgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlRWxlbWVudD4ge1xuICB1bndyYXBwZWQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBUYWJsZSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlRWxlbWVudCwgVGFibGVQcm9wcz4oXG4gICh7IGNsYXNzTmFtZSwgdW53cmFwcGVkID0gZmFsc2UsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRhYmxlRWxlbWVudCA9IChcbiAgICAgIDx0YWJsZSByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbigndy1mdWxsIGNhcHRpb24tYm90dG9tIHRleHQtc20nLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICAgKTtcblxuICAgIGlmICh1bndyYXBwZWQpIHtcbiAgICAgIHJldHVybiB0YWJsZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgdy1mdWxsIG92ZXJmbG93LWF1dG9cIj57dGFibGVFbGVtZW50fTwvZGl2PjtcbiAgfSxcbik7XG5UYWJsZS5kaXNwbGF5TmFtZSA9ICdUYWJsZSc7XG5cbmNvbnN0IFRhYmxlSGVhZGVyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQsXG4gIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8dGhlYWQgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oJ1smX3RyXTpib3JkZXItYicsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbikpO1xuVGFibGVIZWFkZXIuZGlzcGxheU5hbWUgPSAnVGFibGVIZWFkZXInO1xuXG5jb25zdCBUYWJsZUJvZHkgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MVGFibGVTZWN0aW9uRWxlbWVudCxcbiAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDx0Ym9keSByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbignWyZfdHI6bGFzdC1jaGlsZF06Ym9yZGVyLTAnLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pKTtcblRhYmxlQm9keS5kaXNwbGF5TmFtZSA9ICdUYWJsZUJvZHknO1xuXG5jb25zdCBUYWJsZUZvb3RlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LFxuICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPHRmb290XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbignYm9yZGVyLXQgYmctbXV0ZWQvNTAgZm9udC1tZWRpdW0gWyY+dHJdOmxhc3Q6Ym9yZGVyLWItMCcsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5UYWJsZUZvb3Rlci5kaXNwbGF5TmFtZSA9ICdUYWJsZUZvb3Rlcic7XG5cbmNvbnN0IFRhYmxlUm93ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVSb3dFbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVSb3dFbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHRyXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdib3JkZXItYiBib3JkZXItYm9yZGVyLWxpZ2h0IHRyYW5zaXRpb24tY29sb3JzIGhvdmVyOmJnLW11dGVkLzUwIGRhdGEtW3N0YXRlPXNlbGVjdGVkXTpiZy1tdXRlZCcsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKSxcbik7XG5UYWJsZVJvdy5kaXNwbGF5TmFtZSA9ICdUYWJsZVJvdyc7XG5cbmNvbnN0IFRhYmxlSGVhZCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxUYWJsZUNlbGxFbGVtZW50LFxuICBSZWFjdC5UaEhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUNlbGxFbGVtZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8dGhcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgJ2gtMTIgcHgtNCB0ZXh0LWxlZnQgYWxpZ24tbWlkZGxlIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBbJjpoYXMoW3JvbGU9Y2hlY2tib3hdKV06cHItMCcsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcblRhYmxlSGVhZC5kaXNwbGF5TmFtZSA9ICdUYWJsZUhlYWQnO1xuXG5jb25zdCBUYWJsZUNlbGwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MVGFibGVDZWxsRWxlbWVudCxcbiAgUmVhY3QuVGRIVE1MQXR0cmlidXRlczxIVE1MVGFibGVDZWxsRWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPHRkXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbigncC00IGFsaWduLW1pZGRsZSBbJjpoYXMoW3JvbGU9Y2hlY2tib3hdKV06cHItMCcsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5UYWJsZUNlbGwuZGlzcGxheU5hbWUgPSAnVGFibGVDZWxsJztcblxuY29uc3QgVGFibGVSb3dIZWFkZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MVGFibGVDZWxsRWxlbWVudCxcbiAgUmVhY3QuVGhIVE1MQXR0cmlidXRlczxIVE1MVGFibGVDZWxsRWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPHRoXG4gICAgcmVmPXtyZWZ9XG4gICAgc2NvcGU9XCJyb3dcIlxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAncC00IHRleHQtbGVmdCBhbGlnbi1taWRkbGUgZm9udC1tZWRpdW0gWyY6aGFzKFtyb2xlPWNoZWNrYm94XSldOnByLTAnLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5UYWJsZVJvd0hlYWRlci5kaXNwbGF5TmFtZSA9ICdUYWJsZVJvd0hlYWRlcic7XG5cbmNvbnN0IFRhYmxlQ2FwdGlvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxUYWJsZUNhcHRpb25FbGVtZW50LFxuICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVDYXB0aW9uRWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPGNhcHRpb24gcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oJ210LTQgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmQnLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pKTtcblRhYmxlQ2FwdGlvbi5kaXNwbGF5TmFtZSA9ICdUYWJsZUNhcHRpb24nO1xuXG5leHBvcnQge1xuICBUYWJsZSxcbiAgVGFibGVIZWFkZXIsXG4gIFRhYmxlQm9keSxcbiAgVGFibGVGb290ZXIsXG4gIFRhYmxlSGVhZCxcbiAgVGFibGVSb3csXG4gIFRhYmxlQ2VsbCxcbiAgVGFibGVSb3dIZWFkZXIsXG4gIFRhYmxlQ2FwdGlvbixcbn07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBUYWJzUHJpbWl0aXZlIGZyb20gJ0ByYWRpeC11aS9yZWFjdC10YWJzJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmNvbnN0IFRhYnMgPSBUYWJzUHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IFRhYnNMaXN0ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgVGFic1ByaW1pdGl2ZS5MaXN0PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBUYWJzUHJpbWl0aXZlLkxpc3Q+XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFRhYnNQcmltaXRpdmUuTGlzdFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAnaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbWQgYmctc3VyZmFjZS1wcmltYXJ5JyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuVGFic0xpc3QuZGlzcGxheU5hbWUgPSBUYWJzUHJpbWl0aXZlLkxpc3QuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFRhYnNUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgVGFic1ByaW1pdGl2ZS5UcmlnZ2VyPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBUYWJzUHJpbWl0aXZlLlRyaWdnZXI+XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFRhYnNQcmltaXRpdmUuVHJpZ2dlclxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAnaW5saW5lLWZsZXggbWluLXctWzEwMHB4XSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1bMC4xODVyZW1dIHB4LTMgcHktMS41IHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTcwMCB0cmFuc2l0aW9uLWFsbCBkaXNhYmxlZDpwb2ludGVyLWV2ZW50cy1ub25lIGRpc2FibGVkOm9wYWNpdHktNTAgZGF0YS1bc3RhdGU9YWN0aXZlXTpiZy13aGl0ZSBkYXRhLVtzdGF0ZT1hY3RpdmVdOnRleHQtZ3JheS04MDAgZGF0YS1bc3RhdGU9YWN0aXZlXTpzaGFkb3ctc20gZGFyazpkYXRhLVtzdGF0ZT1hY3RpdmVdOmJnLWdyYXktNzAwIGRhcms6ZGF0YS1bc3RhdGU9YWN0aXZlXTp0ZXh0LWdyYXktMjAwJyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgICByZWY9e3JlZn1cbiAgLz5cbikpO1xuVGFic1RyaWdnZXIuZGlzcGxheU5hbWUgPSBUYWJzUHJpbWl0aXZlLlRyaWdnZXIuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFRhYnNDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgVGFic1ByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBUYWJzUHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFRhYnNQcmltaXRpdmUuQ29udGVudCBjbGFzc05hbWU9e2NuKCdtdC0yIHJvdW5kZWQtbWQgcC02JywgY2xhc3NOYW1lKX0gey4uLnByb3BzfSByZWY9e3JlZn0gLz5cbikpO1xuVGFic0NvbnRlbnQuZGlzcGxheU5hbWUgPSBUYWJzUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IFRhYnMsIFRhYnNMaXN0LCBUYWJzVHJpZ2dlciwgVGFic0NvbnRlbnQgfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFggfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxudHlwZSBUYWdQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnZGl2Jz4gJiB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGxhYmVsQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBDYW5jZWxCdXR0b24/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIExhYmVsTm9kZT86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgb25SZW1vdmU/OiAoZTogUmVhY3QuTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHZvaWQ7XG59O1xuXG5jb25zdCBUYWdQcmltaXRpdmVSb290ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MRGl2RWxlbWVudCwgVGFnUHJvcHM+KFxuICAoXG4gICAgeyBDYW5jZWxCdXR0b24sIExhYmVsTm9kZSwgbGFiZWwsIG9uUmVtb3ZlLCBjbGFzc05hbWUgPSAnJywgbGFiZWxDbGFzc05hbWUgPSAnJywgLi4ucHJvcHMgfSxcbiAgICByZWYsXG4gICkgPT4gKFxuICAgIDxkaXZcbiAgICAgIHJlZj17cmVmfVxuICAgICAgey4uLnByb3BzfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ2ZsZXggbWF4LWgtOCBpdGVtcy1jZW50ZXIgb3ZlcmZsb3cteS1oaWRkZW4gcm91bmRlZC0zeGwgYm9yZGVyLTIgYm9yZGVyLWdyZWVuLTYwMCBiZy1ncmVlbi02MDAvMjAgdGV4dC14cyB0ZXh0LWdyZWVuLTYwMCBkYXJrOnRleHQtd2hpdGUnLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbignbWwtMSB3aGl0ZXNwYWNlLXByZS13cmFwIHB4LTIgcHktMScsIGxhYmVsQ2xhc3NOYW1lKX0+XG4gICAgICAgIHtMYWJlbE5vZGUgPyA8PntMYWJlbE5vZGV9IDwvPiA6IG51bGx9XG4gICAgICAgIHtsYWJlbH1cbiAgICAgIDwvZGl2PlxuICAgICAge0NhbmNlbEJ1dHRvblxuICAgICAgICA/IENhbmNlbEJ1dHRvblxuICAgICAgICA6IG9uUmVtb3ZlICYmIChcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIG9uUmVtb3ZlKGUpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyb3VuZGVkLWZ1bGwgYmctZ3JlZW4tNjAwLzUwXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17YFJlbW92ZSAke2xhYmVsfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxYIGNsYXNzTmFtZT1cIm0tWzEuNXB4XSBwLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKSxcbik7XG5cblRhZ1ByaW1pdGl2ZVJvb3QuZGlzcGxheU5hbWUgPSAnVGFnJztcblxuZXhwb3J0IGNvbnN0IFRhZyA9IFJlYWN0Lm1lbW8oVGFnUHJpbWl0aXZlUm9vdCk7XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFRleHRhcmVhQXV0b3NpemUgZnJvbSAncmVhY3QtdGV4dGFyZWEtYXV0b3NpemUnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBUZXh0YXJlYVByb3BzIGV4dGVuZHMgUmVhY3QuVGV4dGFyZWFIVE1MQXR0cmlidXRlczxIVE1MVGV4dEFyZWFFbGVtZW50PiB7fVxuXG5jb25zdCBUZXh0YXJlYSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRleHRBcmVhRWxlbWVudCwgVGV4dGFyZWFQcm9wcz4oXG4gICh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgJ2ZsZXggaC0yMCB3LWZ1bGwgcmVzaXplLW5vbmUgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWdyYXktMzAwIGJnLXRyYW5zcGFyZW50IHB4LTMgcHktMiB0ZXh0LXNtIHBsYWNlaG9sZGVyOnRleHQtZ3JheS00MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWdyYXktNDAwIGZvY3VzOnJpbmctb2Zmc2V0LTIgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTAgZGFyazpib3JkZXItZ3JheS03MDAgZGFyazp0ZXh0LWdyYXktNTAgZGFyazpmb2N1czpyaW5nLWdyYXktNDAwIGRhcms6Zm9jdXM6cmluZy1vZmZzZXQtZ3JheS05MDAnLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgIC8+XG4gICAgKTtcbiAgfSxcbik7XG5UZXh0YXJlYS5kaXNwbGF5TmFtZSA9ICdUZXh0YXJlYSc7XG5cbmV4cG9ydCB7IFRleHRhcmVhIH07XG4iLCJpbXBvcnQgeyB1c2VBdG9tVmFsdWUgfSBmcm9tICdqb3RhaSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCB1c2VMYXlvdXRFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0VGV4dGFyZWFBdXRvc2l6ZSBmcm9tICdyZWFjdC10ZXh0YXJlYS1hdXRvc2l6ZSc7XG5pbXBvcnQgdHlwZSB7IFRleHRhcmVhQXV0b3NpemVQcm9wcyB9IGZyb20gJ3JlYWN0LXRleHRhcmVhLWF1dG9zaXplJztcbmltcG9ydCB7IGNoYXREaXJlY3Rpb25BdG9tIH0gZnJvbSAnfi9zdG9yZSc7XG5cbnR5cGUgQmFzZVRleHRhcmVhQXV0b3NpemVQcm9wcyA9IE9taXQ8VGV4dGFyZWFBdXRvc2l6ZVByb3BzLCAnYXJpYS1sYWJlbCcgfCAnYXJpYS1sYWJlbGxlZGJ5Jz47XG5cbmV4cG9ydCB0eXBlIFRleHRhcmVhQXV0b3NpemVQcm9wc1dpdGhBcmlhID1cbiAgfCAoQmFzZVRleHRhcmVhQXV0b3NpemVQcm9wcyAmIHtcbiAgICAgICdhcmlhLWxhYmVsJzogc3RyaW5nO1xuICAgICAgJ2FyaWEtbGFiZWxsZWRieSc/OiBuZXZlcjtcbiAgICB9KVxuICB8IChCYXNlVGV4dGFyZWFBdXRvc2l6ZVByb3BzICYge1xuICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IHN0cmluZztcbiAgICAgICdhcmlhLWxhYmVsJz86IG5ldmVyO1xuICAgIH0pO1xuXG5leHBvcnQgY29uc3QgVGV4dGFyZWFBdXRvc2l6ZSA9IGZvcndhcmRSZWY8SFRNTFRleHRBcmVhRWxlbWVudCwgVGV4dGFyZWFBdXRvc2l6ZVByb3BzV2l0aEFyaWE+KFxuICAocHJvcHMsIHJlZikgPT4ge1xuICAgIGNvbnN0IFssIHNldElzUmVyZW5kZXJlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgY2hhdERpcmVjdGlvbiA9IHVzZUF0b21WYWx1ZShjaGF0RGlyZWN0aW9uQXRvbSkudG9Mb3dlckNhc2UoKTtcbiAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4gc2V0SXNSZXJlbmRlcmVkKHRydWUpLCBbXSk7XG4gICAgcmV0dXJuIDxSZWFjdFRleHRhcmVhQXV0b3NpemUgZGlyPXtjaGF0RGlyZWN0aW9ufSB7Li4ucHJvcHN9IHJlZj17cmVmfSAvPjtcbiAgfSxcbik7XG4iLCJpbXBvcnQgKiBhcyBSYWRpeFRvYXN0IGZyb20gJ0ByYWRpeC11aS9yZWFjdC10b2FzdCc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXZlcml0eSB9IGZyb20gJ34vY29tbW9uJztcbmltcG9ydCB7IHVzZVRvYXN0IH0gZnJvbSAnfi9ob29rcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBUb2FzdCgpIHtcbiAgY29uc3QgeyB0b2FzdCwgb25PcGVuQ2hhbmdlIH0gPSB1c2VUb2FzdCgpO1xuICBjb25zdCBzZXZlcml0eUNsYXNzTmFtZSA9IHtcbiAgICAvKiBHb2luZyB1cCBieSAxMDAgdW5pdHMgaW4gdGVybXMgb2YgZGFya25lc3MgKGVnIGJnLWdyZWVuLTUwMCB0byBiZy1ncmVlbi02MDApIGZvclxuICAgICAqIGJnIGNvbG9ycyBwcm9kdWNlcyBjb2xvcnMgdGhhdCBhcmUgdG9vIHZpc3VhbGx5IGRpc3NpbWlsYXIgdG8gTGlicmVDaGF0J3Mgc3RhbmRhcmQgY29sb3IgcGFsZXR0ZS5cbiAgICAgKiBUaGVzZSBjb2xvcnMgd2VyZSBkZXJpdmVkIGJ5IGFkanVzdGluZyB0aGUgdmFsdWVzIGluIHRoZSBIU1YgY29sb3Igc3BhY2UgdXNpbmcgQ0NBXG4gICAgICogdW50aWwgdGhlIDQuNToxIGNvbnRyYXN0IHJhdGlvIHRocmVzaG9sZCB3YXMgbWV0IGFnYWluc3Qgd2hpdGUgdGV4dCB3aGlsZSBtYWludGFpbmluZ1xuICAgICAqIGEgcmVsYXRpdmVseSByZWNvZ25pemFibGUgY29sb3Igc2NoZW1lIGZvciB0b2FzdHMgd2l0aG91dCBjb21wcm9taXNpbmcgYWNjZXNzaWJpbGl0eS5cbiAgICAgKiAqL1xuICAgIFtOb3RpZmljYXRpb25TZXZlcml0eS5JTkZPXTogJ2JvcmRlci1ncmF5LTUwMCBiZy1ncmF5LTUwMCcsXG4gICAgW05vdGlmaWNhdGlvblNldmVyaXR5LlNVQ0NFU1NdOiAnYm9yZGVyLVsjMDI4NTVFXSBiZy1bIzAyODU1RV0nLFxuICAgIFtOb3RpZmljYXRpb25TZXZlcml0eS5XQVJOSU5HXTogJ2JvcmRlci1bI0M3NTIwOV0gYmctWyNDNzUyMDldJyxcbiAgICBbTm90aWZpY2F0aW9uU2V2ZXJpdHkuRVJST1JdOiAnYm9yZGVyLVsjRTAyRjFGXSBiZy1bI0UwMkYxRl0nLFxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPFJhZGl4VG9hc3QuUm9vdFxuICAgICAgb3Blbj17dG9hc3Qub3Blbn1cbiAgICAgIG9uT3BlbkNoYW5nZT17b25PcGVuQ2hhbmdlfVxuICAgICAgY2xhc3NOYW1lPVwidG9hc3Qtcm9vdFwiXG4gICAgICBzdHlsZT17e1xuICAgICAgICBoZWlnaHQ6ICc3NHB4JyxcbiAgICAgICAgbWFyZ2luQm90dG9tOiAnMHB4JyxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgcC0xIHRleHQtY2VudGVyIG1kOnctYXV0byBtZDp0ZXh0LWp1c3RpZnlcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17YGFsZXJ0LXJvb3QgcG9pbnRlci1ldmVudHMtYXV0byBpbmxpbmUtZmxleCBmbGV4LXJvdyBnYXAtMiByb3VuZGVkLW1kIGJvcmRlciBweC0zIHB5LTIgZm9udC1ib2xkIHRleHQtd2hpdGUgJHtcbiAgICAgICAgICAgIHNldmVyaXR5Q2xhc3NOYW1lW3RvYXN0LnNldmVyaXR5XVxuICAgICAgICAgIH1gfVxuICAgICAgICA+XG4gICAgICAgICAge3RvYXN0LnNob3dJY29uICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMSBmbGV4LXNocmluay0wIGZsZXgtZ3Jvdy0wXCI+XG4gICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaWNvbi1zbVwiXG4gICAgICAgICAgICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjFlbVwiXG4gICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9XCI3Ljg2IDIgMTYuMTQgMiAyMiA3Ljg2IDIyIDE2LjE0IDE2LjE0IDIyIDcuODYgMjIgMiAxNi4xNCAyIDcuODYgNy44NiAyXCIgLz5cbiAgICAgICAgICAgICAgICA8bGluZSB4MT1cIjEyXCIgeTE9XCI4XCIgeDI9XCIxMlwiIHkyPVwiMTJcIiAvPlxuICAgICAgICAgICAgICAgIDxsaW5lIHgxPVwiMTJcIiB5MT1cIjE2XCIgeDI9XCIxMi4wMVwiIHkyPVwiMTZcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgICAgPFJhZGl4VG9hc3QuRGVzY3JpcHRpb24gY2xhc3NOYW1lPVwiZmxleC0xIGp1c3RpZnktY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIndoaXRlc3BhY2UtcHJlLXdyYXAgdGV4dC1sZWZ0XCI+e3RvYXN0Lm1lc3NhZ2V9PC9kaXY+XG4gICAgICAgICAgPC9SYWRpeFRvYXN0LkRlc2NyaXB0aW9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvUmFkaXhUb2FzdC5Sb290PlxuICApO1xufVxuIiwiaW1wb3J0IERPTVB1cmlmeSBmcm9tICdkb21wdXJpZnknO1xuaW1wb3J0ICogYXMgQXJpYWtpdCBmcm9tICdAYXJpYWtpdC9yZWFjdCc7XG5pbXBvcnQgeyBtZW1vLCBmb3J3YXJkUmVmLCB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSwgbW90aW9uIH0gZnJvbSAnZnJhbWVyLW1vdGlvbic7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuaW1wb3J0ICcuL1Rvb2x0aXAuY3NzJztcblxuaW50ZXJmYWNlIFRvb2x0aXBBbmNob3JQcm9wcyBleHRlbmRzIEFyaWFraXQuVG9vbHRpcEFuY2hvclByb3BzIHtcbiAgcm9sZT86IHN0cmluZztcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBlbmFibGVIVE1MPzogYm9vbGVhbjtcbiAgc2lkZT86ICd0b3AnIHwgJ2JvdHRvbScgfCAnbGVmdCcgfCAncmlnaHQnO1xufVxuXG4vKipcbiAqIElzb2xhdGVkIGNvbXBvbmVudCB0aGF0IHN1YnNjcmliZXMgdG8gdG9vbHRpcCBzdG9yZSBzdGF0ZSBpbmRlcGVuZGVudGx5LFxuICogc28gdGhlIGFuY2hvciBlbGVtZW50IG5ldmVyIHJlLXJlbmRlcnMgd2hlbiB0aGUgdG9vbHRpcCBtb3VudHMvdW5tb3VudHMuXG4gKi9cbmNvbnN0IFRvb2x0aXBQb3B1cCA9IG1lbW8oZnVuY3Rpb24gVG9vbHRpcFBvcHVwKHtcbiAgc3RvcmUsXG4gIGRlc2NyaXB0aW9uLFxuICBlbmFibGVIVE1MLFxufToge1xuICBzdG9yZTogQXJpYWtpdC5Ub29sdGlwU3RvcmU7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGVuYWJsZUhUTUw6IGJvb2xlYW47XG59KSB7XG4gIGNvbnN0IG1vdW50ZWQgPSBBcmlha2l0LnVzZVN0b3JlU3RhdGUoc3RvcmUsIChzdGF0ZSkgPT4gc3RhdGUubW91bnRlZCk7XG4gIGNvbnN0IHBsYWNlbWVudCA9IEFyaWFraXQudXNlU3RvcmVTdGF0ZShzdG9yZSwgKHN0YXRlKSA9PiBzdGF0ZS5wbGFjZW1lbnQpO1xuXG4gIGNvbnN0IHNhbml0aXplciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGluc3RhbmNlID0gRE9NUHVyaWZ5KCk7XG4gICAgaW5zdGFuY2UuYWRkSG9vaygnYWZ0ZXJTYW5pdGl6ZUF0dHJpYnV0ZXMnLCAobm9kZSkgPT4ge1xuICAgICAgaWYgKG5vZGUudGFnTmFtZSAmJiBub2RlLnRhZ05hbWUgPT09ICdBJykge1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpO1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgncmVsJywgJ25vb3BlbmVyIG5vcmVmZXJyZXInKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH0sIFtdKTtcblxuICBjb25zdCBzYW5pdGl6ZWRIVE1MID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVIVE1MKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gc2FuaXRpemVyLnNhbml0aXplKGRlc2NyaXB0aW9uLCB7XG4gICAgICAgIEFMTE9XRURfVEFHUzogWydhJywgJ3N0cm9uZycsICdiJywgJ2VtJywgJ2knLCAnYnInLCAnY29kZSddLFxuICAgICAgICBBTExPV0VEX0FUVFI6IFsnaHJlZicsICdjbGFzcycsICd0YXJnZXQnLCAncmVsJ10sXG4gICAgICAgIEFMTE9XX0RBVEFfQVRUUjogZmFsc2UsXG4gICAgICAgIEFMTE9XX0FSSUFfQVRUUjogZmFsc2UsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignU2FuaXRpemF0aW9uIGZhaWxlZCcsIGVycm9yKTtcbiAgICAgIHJldHVybiBkZXNjcmlwdGlvbjtcbiAgICB9XG4gIH0sIFtlbmFibGVIVE1MLCBkZXNjcmlwdGlvbiwgc2FuaXRpemVyXSk7XG5cbiAgY29uc3QgeyB4LCB5IH0gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBkaXIgPSBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbiAgICBzd2l0Y2ggKGRpcikge1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgcmV0dXJuIHsgeDogMCwgeTogLTggfTtcbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIHJldHVybiB7IHg6IDAsIHk6IDggfTtcbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICByZXR1cm4geyB4OiAtOCwgeTogMCB9O1xuICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICByZXR1cm4geyB4OiA4LCB5OiAwIH07XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4geyB4OiAwLCB5OiAwIH07XG4gICAgfVxuICB9LCBbcGxhY2VtZW50XSk7XG5cbiAgcmV0dXJuIChcbiAgICA8QW5pbWF0ZVByZXNlbmNlPlxuICAgICAge21vdW50ZWQgPT09IHRydWUgJiYgKFxuICAgICAgICA8QXJpYWtpdC5Ub29sdGlwXG4gICAgICAgICAgZ3V0dGVyPXs0fVxuICAgICAgICAgIGFsd2F5c1Zpc2libGVcbiAgICAgICAgICBjbGFzc05hbWU9XCJ0b29sdGlwXCJcbiAgICAgICAgICByZW5kZXI9e1xuICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwLCB4LCB5IH19XG4gICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgeDogMCwgeTogMCB9fVxuICAgICAgICAgICAgICBleGl0PXt7IG9wYWNpdHk6IDAsIHgsIHkgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICA+XG4gICAgICAgICAgPEFyaWFraXQuVG9vbHRpcEFycm93IC8+XG4gICAgICAgICAge2VuYWJsZUhUTUwgPyAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7XG4gICAgICAgICAgICAgICAgX19odG1sOiBzYW5pdGl6ZWRIVE1MLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgZGVzY3JpcHRpb25cbiAgICAgICAgICApfVxuICAgICAgICA8L0FyaWFraXQuVG9vbHRpcD5cbiAgICAgICl9XG4gICAgPC9BbmltYXRlUHJlc2VuY2U+XG4gICk7XG59KTtcblxuZXhwb3J0IGNvbnN0IFRvb2x0aXBBbmNob3IgPSBmb3J3YXJkUmVmPEhUTUxEaXZFbGVtZW50LCBUb29sdGlwQW5jaG9yUHJvcHM+KGZ1bmN0aW9uIFRvb2x0aXBBbmNob3IoXG4gIHsgZGVzY3JpcHRpb24sIHNpZGUgPSAndG9wJywgY2xhc3NOYW1lLCByb2xlLCBlbmFibGVIVE1MID0gZmFsc2UsIC4uLnByb3BzIH0sXG4gIHJlZixcbikge1xuICBjb25zdCB0b29sdGlwID0gQXJpYWtpdC51c2VUb29sdGlwU3RvcmUoeyBwbGFjZW1lbnQ6IHNpZGUgfSk7XG5cbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGlmIChyb2xlID09PSAnYnV0dG9uJyAmJiBldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgKGV2ZW50LnRhcmdldCBhcyBIVE1MRGl2RWxlbWVudCkuY2xpY2soKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtyb2xlXSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxBcmlha2l0LlRvb2x0aXBQcm92aWRlciBzdG9yZT17dG9vbHRpcH0gaGlkZVRpbWVvdXQ9ezB9PlxuICAgICAgPEFyaWFraXQuVG9vbHRpcEFuY2hvclxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICByb2xlPXtyb2xlfVxuICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICAgIGNsYXNzTmFtZT17Y24oJ2N1cnNvci1wb2ludGVyJywgY2xhc3NOYW1lKX1cbiAgICAgIC8+XG4gICAgICA8VG9vbHRpcFBvcHVwIHN0b3JlPXt0b29sdGlwfSBkZXNjcmlwdGlvbj17ZGVzY3JpcHRpb259IGVuYWJsZUhUTUw9e2VuYWJsZUhUTUx9IC8+XG4gICAgPC9Bcmlha2l0LlRvb2x0aXBQcm92aWRlcj5cbiAgKTtcbn0pO1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQ2hldnJvbkxlZnQsIENoZXZyb25SaWdodCwgTW9yZUhvcml6b250YWwgfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHsgQnV0dG9uUHJvcHMsIGJ1dHRvblZhcmlhbnRzIH0gZnJvbSAnLi9CdXR0b24nO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuY29uc3QgUGFnaW5hdGlvbiA9ICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuQ29tcG9uZW50UHJvcHM8J25hdic+KSA9PiAoXG4gIDxuYXZcbiAgICByb2xlPVwibmF2aWdhdGlvblwiXG4gICAgYXJpYS1sYWJlbD1cInBhZ2luYXRpb25cIlxuICAgIGNsYXNzTmFtZT17Y24oJ214LWF1dG8gZmxleCB3LWZ1bGwganVzdGlmeS1jZW50ZXInLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5QYWdpbmF0aW9uLmRpc3BsYXlOYW1lID0gJ1BhZ2luYXRpb24nO1xuXG5jb25zdCBQYWdpbmF0aW9uQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFVMaXN0RWxlbWVudCwgUmVhY3QuQ29tcG9uZW50UHJvcHM8J3VsJz4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDx1bCByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbignZmxleCBmbGV4LXJvdyBpdGVtcy1jZW50ZXIgZ2FwLTEnLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICksXG4pO1xuUGFnaW5hdGlvbkNvbnRlbnQuZGlzcGxheU5hbWUgPSAnUGFnaW5hdGlvbkNvbnRlbnQnO1xuXG5jb25zdCBQYWdpbmF0aW9uSXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTExJRWxlbWVudCwgUmVhY3QuQ29tcG9uZW50UHJvcHM8J2xpJz4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gPGxpIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKCcnLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+LFxuKTtcblBhZ2luYXRpb25JdGVtLmRpc3BsYXlOYW1lID0gJ1BhZ2luYXRpb25JdGVtJztcblxudHlwZSBQYWdpbmF0aW9uTGlua1Byb3BzID0ge1xuICBpc0FjdGl2ZT86IGJvb2xlYW47XG59ICYgUGljazxCdXR0b25Qcm9wcywgJ3NpemUnPiAmXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzPCdhJz47XG5cbmNvbnN0IFBhZ2luYXRpb25MaW5rID0gKHtcbiAgY2xhc3NOYW1lLFxuICBpc0FjdGl2ZSA9IGZhbHNlLFxuICBzaXplID0gJ2ljb24nLFxuICBjaGlsZHJlbixcbiAgLi4ucHJvcHNcbn06IFBhZ2luYXRpb25MaW5rUHJvcHMpID0+IChcbiAgPGFcbiAgICBhcmlhLWN1cnJlbnQ9e2lzQWN0aXZlID8gJ3BhZ2UnIDogdW5kZWZpbmVkfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBidXR0b25WYXJpYW50cyh7XG4gICAgICAgIHZhcmlhbnQ6IGlzQWN0aXZlID8gJ291dGxpbmUnIDogJ2dob3N0JyxcbiAgICAgICAgc2l6ZSxcbiAgICAgIH0pLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAge2NoaWxkcmVuIHx8IDxzcGFuIGNsYXNzTmFtZT1cInNyLW9ubHlcIj5QYWdlIGxpbms8L3NwYW4+fVxuICA8L2E+XG4pO1xuUGFnaW5hdGlvbkxpbmsuZGlzcGxheU5hbWUgPSAnUGFnaW5hdGlvbkxpbmsnO1xuXG5jb25zdCBQYWdpbmF0aW9uUHJldmlvdXMgPSAoe1xuICBjbGFzc05hbWUsXG4gIC4uLnByb3BzXG59OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgUGFnaW5hdGlvbkxpbms+KSA9PiAoXG4gIDxQYWdpbmF0aW9uTGlua1xuICAgIGFyaWEtbGFiZWw9XCJHbyB0byBwcmV2aW91cyBwYWdlXCJcbiAgICBzaXplPVwiZGVmYXVsdFwiXG4gICAgY2xhc3NOYW1lPXtjbignZ2FwLTEgcGwtMi41JywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8Q2hldnJvbkxlZnQgY2xhc3NOYW1lPVwiaC00IHctNFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgPHNwYW4+UHJldmlvdXM8L3NwYW4+XG4gIDwvUGFnaW5hdGlvbkxpbms+XG4pO1xuUGFnaW5hdGlvblByZXZpb3VzLmRpc3BsYXlOYW1lID0gJ1BhZ2luYXRpb25QcmV2aW91cyc7XG5cbmNvbnN0IFBhZ2luYXRpb25OZXh0ID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgUGFnaW5hdGlvbkxpbms+KSA9PiAoXG4gIDxQYWdpbmF0aW9uTGlua1xuICAgIGFyaWEtbGFiZWw9XCJHbyB0byBuZXh0IHBhZ2VcIlxuICAgIHNpemU9XCJkZWZhdWx0XCJcbiAgICBjbGFzc05hbWU9e2NuKCdnYXAtMSBwci0yLjUnLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuPk5leHQ8L3NwYW4+XG4gICAgPENoZXZyb25SaWdodCBjbGFzc05hbWU9XCJoLTQgdy00XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgPC9QYWdpbmF0aW9uTGluaz5cbik7XG5QYWdpbmF0aW9uTmV4dC5kaXNwbGF5TmFtZSA9ICdQYWdpbmF0aW9uTmV4dCc7XG5cbmNvbnN0IFBhZ2luYXRpb25FbGxpcHNpcyA9ICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuQ29tcG9uZW50UHJvcHM8J3NwYW4nPikgPT4gKFxuICA8c3BhblxuICAgIGFyaWEtaGlkZGVuXG4gICAgY2xhc3NOYW1lPXtjbignZmxleCBoLTkgdy05IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlcicsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPE1vcmVIb3Jpem9udGFsIGNsYXNzTmFtZT1cImgtNCB3LTRcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInNyLW9ubHlcIj5Nb3JlIHBhZ2VzPC9zcGFuPlxuICA8L3NwYW4+XG4pO1xuUGFnaW5hdGlvbkVsbGlwc2lzLmRpc3BsYXlOYW1lID0gJ1BhZ2luYXRpb25FbGxpcHNpcyc7XG5cbmV4cG9ydCB7XG4gIFBhZ2luYXRpb24sXG4gIFBhZ2luYXRpb25Db250ZW50LFxuICBQYWdpbmF0aW9uRWxsaXBzaXMsXG4gIFBhZ2luYXRpb25JdGVtLFxuICBQYWdpbmF0aW9uTGluayxcbiAgUGFnaW5hdGlvbk5leHQsXG4gIFBhZ2luYXRpb25QcmV2aW91cyxcbn07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBQcm9ncmVzc1ByaW1pdGl2ZSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtcHJvZ3Jlc3MnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuY29uc3QgUHJvZ3Jlc3MgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBQcm9ncmVzc1ByaW1pdGl2ZS5Sb290PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQcm9ncmVzc1ByaW1pdGl2ZS5Sb290PlxuPigoeyBjbGFzc05hbWUsIHZhbHVlLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFByb2dyZXNzUHJpbWl0aXZlLlJvb3RcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKCdyZWxhdGl2ZSBoLTIgdy1mdWxsIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLWZ1bGwgYmctcHJpbWFyeS8yMCcsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPFByb2dyZXNzUHJpbWl0aXZlLkluZGljYXRvclxuICAgICAgY2xhc3NOYW1lPVwiaC1mdWxsIHctZnVsbCBmbGV4LTEgYmctcHJpbWFyeSB0cmFuc2l0aW9uLWFsbFwiXG4gICAgICBzdHlsZT17eyB0cmFuc2Zvcm06IGB0cmFuc2xhdGVYKC0kezEwMCAtICh2YWx1ZSB8fCAwKX0lKWAgfX1cbiAgICAvPlxuICA8L1Byb2dyZXNzUHJpbWl0aXZlLlJvb3Q+XG4pKTtcblByb2dyZXNzLmRpc3BsYXlOYW1lID0gUHJvZ3Jlc3NQcmltaXRpdmUuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgUHJvZ3Jlc3MgfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IE9UUElucHV0LCBPVFBJbnB1dENvbnRleHQgfSBmcm9tICdpbnB1dC1vdHAnO1xuaW1wb3J0IHsgTWludXMgfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuY29uc3QgSW5wdXRPVFAgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBPVFBJbnB1dD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgT1RQSW5wdXQ+XG4+KCh7IGNsYXNzTmFtZSwgY29udGFpbmVyQ2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPE9UUElucHV0XG4gICAgcmVmPXtyZWZ9XG4gICAgY29udGFpbmVyQ2xhc3NOYW1lPXtjbihcbiAgICAgICdmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBoYXMtWzpkaXNhYmxlZF06b3BhY2l0eS01MCcsXG4gICAgICBjb250YWluZXJDbGFzc05hbWUsXG4gICAgKX1cbiAgICBjbGFzc05hbWU9e2NuKCdkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQnLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuSW5wdXRPVFAuZGlzcGxheU5hbWUgPSAnSW5wdXRPVFAnO1xuXG5jb25zdCBJbnB1dE9UUEdyb3VwID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjwnZGl2Jz4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnZGl2Jz5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPGRpdiByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbignZmxleCBpdGVtcy1jZW50ZXInLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pKTtcbklucHV0T1RQR3JvdXAuZGlzcGxheU5hbWUgPSAnSW5wdXRPVFBHcm91cCc7XG5cbmNvbnN0IElucHV0T1RQU2xvdCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8J2Rpdic+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J2Rpdic+ICYgeyBpbmRleDogbnVtYmVyIH1cbj4oKHsgaW5kZXgsIGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gIGNvbnN0IGlucHV0T1RQQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoT1RQSW5wdXRDb250ZXh0KTtcblxuICBpZiAoIWlucHV0T1RQQ29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW5wdXRPVFBTbG90IG11c3QgYmUgdXNlZCB3aXRoaW4gYW4gT1RQSW5wdXQnKTtcbiAgfVxuXG4gIGNvbnN0IHsgY2hhciwgaGFzRmFrZUNhcmV0LCBpc0FjdGl2ZSB9ID0gaW5wdXRPVFBDb250ZXh0LnNsb3RzW2luZGV4XTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ3RleHQtbWQgcmVsYXRpdmUgZmxleCBoLTExIHctMTEgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJvcmRlci15IGJvcmRlci1yIGJvcmRlci1pbnB1dCBzaGFkb3ctc20gdHJhbnNpdGlvbi1hbGwgZmlyc3Q6cm91bmRlZC1sLXhsIGZpcnN0OmJvcmRlci1sIGxhc3Q6cm91bmRlZC1yLXhsJyxcbiAgICAgICAgaXNBY3RpdmUgJiYgJ3otMTAgcmluZy0xIHJpbmctcmluZycsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAge2NoYXJ9XG4gICAgICB7aGFzRmFrZUNhcmV0ICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIGluc2V0LTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFuaW1hdGUtY2FyZXQtYmxpbmsgaC00IHctcHggYmctZm9yZWdyb3VuZCBkdXJhdGlvbi0xMDAwXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufSk7XG5JbnB1dE9UUFNsb3QuZGlzcGxheU5hbWUgPSAnSW5wdXRPVFBTbG90JztcblxuY29uc3QgSW5wdXRPVFBTZXBhcmF0b3IgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPCdkaXYnPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPCdkaXYnPlxuPigoeyAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPGRpdiByZWY9e3JlZn0gcm9sZT1cInNlcGFyYXRvclwiIHsuLi5wcm9wc30+XG4gICAgPE1pbnVzIC8+XG4gIDwvZGl2PlxuKSk7XG5JbnB1dE9UUFNlcGFyYXRvci5kaXNwbGF5TmFtZSA9ICdJbnB1dE9UUFNlcGFyYXRvcic7XG5cbmV4cG9ydCB7IElucHV0T1RQLCBJbnB1dE9UUEdyb3VwLCBJbnB1dE9UUFNsb3QsIElucHV0T1RQU2VwYXJhdG9yIH07XG4iLCJpbXBvcnQgeyBTZWFyY2gsIFggfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VNZW1vLCB1c2VDYWxsYmFjaywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuLyoqIFRoaXMgaXMgYSBnZW5lcmljIHRoYXQgY2FuIGJlIGFkZGVkIHRvIE1lbnUgYW5kIFNlbGVjdCBjb21wb25lbnRzICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNdWx0aVNlYXJjaCh7XG4gIHZhbHVlLFxuICBvbkNoYW5nZSxcbiAgcGxhY2Vob2xkZXIsXG4gIGNsYXNzTmFtZSA9ICcnLFxufToge1xuICB2YWx1ZTogc3RyaW5nIHwgbnVsbDtcbiAgb25DaGFuZ2U6IChmaWx0ZXI6IHN0cmluZykgPT4gdm9pZDtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn0pIHtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XG5cbiAgY29uc3Qgb25DaGFuZ2VIYW5kbGVyOiBSZWFjdC5DaGFuZ2VFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD4gPSB1c2VDYWxsYmFjayhcbiAgICAoZSkgPT4gb25DaGFuZ2UoZS50YXJnZXQudmFsdWUpLFxuICAgIFtvbkNoYW5nZV0sXG4gICk7XG5cbiAgY29uc3QgY2xlYXJTZWFyY2ggPSAoKSA9PiB7XG4gICAgb25DaGFuZ2UoJycpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaW5wdXRSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICB9LCAwKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdmb2N1czp0by1zdXJmYWNlLXByaW1hcnkvNTAgZ3JvdXAgc3RpY2t5IGxlZnQtMCB0b3AtMCB6LTEwIGZsZXggaC0xMiBpdGVtcy1jZW50ZXIgZ2FwLTIgYmctZ3JhZGllbnQtdG8tYiBmcm9tLXN1cmZhY2UtdGVydGlhcnktYWx0IGZyb20tNjUlIHRvLXRyYW5zcGFyZW50IHB4LTMgcHktMiB0ZXh0LXRleHQtcHJpbWFyeSB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0zMDAgZm9jdXM6YmctZ3JhZGllbnQtdG8tYiBmb2N1czpmcm9tLXN1cmZhY2UtcHJpbWFyeScsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgPlxuICAgICAgPFNlYXJjaFxuICAgICAgICBjbGFzc05hbWU9XCJoLTQgdy00IHRleHQtdGV4dC1zZWNvbmRhcnktYWx0IHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTMwMFwiXG4gICAgICAgIGFyaWEtaGlkZGVuPXsndHJ1ZSd9XG4gICAgICAvPlxuICAgICAgPGlucHV0XG4gICAgICAgIHJlZj17aW5wdXRSZWZ9XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgdmFsdWU9e3ZhbHVlID8/ICcnfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VIYW5kbGVyfVxuICAgICAgICBwbGFjZWhvbGRlcj17U3RyaW5nKHBsYWNlaG9sZGVyID8/ICdTZWFyY2guLi4nKX1cbiAgICAgICAgYXJpYS1sYWJlbD1cIlNlYXJjaCBNb2RlbFwiXG4gICAgICAgIGNsYXNzTmFtZT1cImZsZXgtMSByb3VuZGVkLW1kIGJvcmRlci1ub25lIGJnLXRyYW5zcGFyZW50IHB4LTIuNSBweS0yIHRleHQtc20gcGxhY2Vob2xkZXItdGV4dC1zZWNvbmRhcnkgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMSBmb2N1czpyaW5nLXJpbmctcHJpbWFyeVwiXG4gICAgICAvPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICdyZWxhdGl2ZSBmbGV4IGgtNSB3LTUgaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIHJvdW5kZWQtbWQgdGV4dC10ZXh0LXNlY29uZGFyeS1hbHQnLFxuICAgICAgICAgICh2YWx1ZT8ubGVuZ3RoID8/IDApID8gJ2N1cnNvci1wb2ludGVyIG9wYWNpdHktMTAwJyA6ICdoaWRkZW4nLFxuICAgICAgICApfVxuICAgICAgICBhcmlhLWxhYmVsPXsnQ2xlYXIgc2VhcmNoJ31cbiAgICAgICAgb25DbGljaz17Y2xlYXJTZWFyY2h9XG4gICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgPlxuICAgICAgICA8WFxuICAgICAgICAgIGFyaWEtaGlkZGVuPXsndHJ1ZSd9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICd0ZXh0LXRleHQtc2Vjb25kYXJ5LWFsdCcsXG4gICAgICAgICAgICAodmFsdWU/Lmxlbmd0aCA/PyAwKSA/ICdjdXJzb3ItcG9pbnRlciBvcGFjaXR5LTEwMCcgOiAnb3BhY2l0eS0wJyxcbiAgICAgICAgICApfVxuICAgICAgICAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIHRoYXQgd2lsbCB0YWtlIGEgbXVsdGlTZWFyY2ggaW5wdXRcbiAqIEBwYXJhbSBub2RlXG4gKi9cbmZ1bmN0aW9uIGRlZmF1bHRHZXRTdHJpbmdLZXkobm9kZTogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBCVUdGSVg6IERldGVjdCBwc2VkZW8gc2VwYXJhdG9ycyBhbmQgbWFrZSBzdXJlIHRoZXkgZG9uJ3QgYXBwZWFyIGluIHRoZSBsaXN0IHdoZW4gZmlsdGVyaW5nIGl0ZW1zXG4gICAgLy8gaXQgbWFrZXMgc3VyZSAoZm9yIHRoZSBtb3N0IHBhcnQpIHRoYXQgdGhlIG1vZGVsIG5hbWUgc3RhcnRzIGFuZCBlbmRzIHdpdGggZGFzaGVzXG4gICAgLy8gVGhlIGxvbmctdGVybSBmaXggaGVyZSB3b3VsZCBiZSB0byBlbmFibGUgc2VwZXJhdG9ycyAobW9kZWwgZ3JvdXBpbmdzKSBidXQgdGhlcmUncyBub1xuICAgIC8vIGZlYXR1cmUgbW9ja3MgZm9yIHN1Y2ggYSB0aGluZyB5ZXRcbiAgICBpZiAobm9kZS5zdGFydHNXaXRoKCctLS0nKSAmJiBub2RlLmVuZHNXaXRoKCctLS0nKSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlLnRvVXBwZXJDYXNlKCk7XG4gIH1cbiAgLy8gVGhpcyBzaG91bGQgYmUgYSBub29wLCBidXQgaXQncyBoZXJlIGZvciByZWR1bmRhbmN5XG4gIHJldHVybiAnJztcbn1cblxuLyoqXG4gKiBIb29rIGZvciBjb25kaXRpb25hbGx5IG1ha2luZyBhIG11bHRpLWVsZW1lbnQgbGlzdCBjb21wb25lbnQgaW50byBhIHNvcnRhYmxlIGNvbXBvbmVudFxuICogUmV0dXJucyBhIFJlbmRlck5vZGUgZm9yIHNlYXJjaCBpbnB1dCB3aGVuIHNlYXJjaCBmdW5jdGlvbmFsaXR5IGlzIGF2YWlsYWJsZVxuICogQHBhcmFtIGF2YWlsYWJsZU9wdGlvbnNcbiAqIEBwYXJhbSBwbGFjZWhvbGRlclxuICogQHBhcmFtIGdldFRleHRLZXlPdmVycmlkZVxuICogQHBhcmFtIGNsYXNzTmFtZSAtIEFkZGl0aW9uYWwgY2xhc3NuYW1lcyB0byBhZGQgdG8gdGhlIHNlYXJjaCBjb250YWluZXJcbiAqIEBwYXJhbSBkaXNhYmxlZCAtIElmIHRoZSBzZWFyY2ggc2hvdWxkIGJlIGRpc2FibGVkXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlTXVsdGlTZWFyY2g8T3B0aW9uc1R5cGUgZXh0ZW5kcyB1bmtub3duW10+KHtcbiAgYXZhaWxhYmxlT3B0aW9ucyA9IFtdIGFzIHVua25vd24gYXMgT3B0aW9uc1R5cGUsXG4gIHBsYWNlaG9sZGVyLFxuICBnZXRUZXh0S2V5T3ZlcnJpZGUsXG4gIGNsYXNzTmFtZSxcbiAgZGlzYWJsZWQgPSBmYWxzZSxcbn06IHtcbiAgYXZhaWxhYmxlT3B0aW9ucz86IE9wdGlvbnNUeXBlO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgZ2V0VGV4dEtleU92ZXJyaWRlPzogKG5vZGU6IE9wdGlvbnNUeXBlWzBdKSA9PiBzdHJpbmc7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xufSk6IFtPcHRpb25zVHlwZSwgUmVhY3QuUmVhY3ROb2RlXSB7XG4gIGNvbnN0IFtmaWx0ZXJWYWx1ZSwgc2V0RmlsdGVyVmFsdWVdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgLy8gV2UgY29uZGl0aW9uYWxseSBzaG93IHRoZSBzZWFyY2ggd2hlbiB0aGVyZSdzIG1vcmUgdGhhbiAxMCBlbGVtZW50cyBpbiB0aGUgbWVudVxuICBjb25zdCBzaG91bGRTaG93U2VhcmNoID0gYXZhaWxhYmxlT3B0aW9ucy5sZW5ndGggPiAxMCAmJiAhZGlzYWJsZWQ7XG5cbiAgLy8gRGVmaW5lIHRoZSBoZWxwZXIgZnVuY3Rpb24gdXNlZCB0byBlbmFibGUgc2VhcmNoXG4gIC8vIElmIHRoaXMgaXMgaW52YWxpZGx5IGRlc2NyaWJlZCwgd2Ugd2lsbCBhc3N1bWUgZGV2ZWxvcGVyIGVycm9yIC0gdGYuIGF2b2lkIHJlbmRlcmluZ1xuICBjb25zdCBnZXRUZXh0S2V5SGVscGVyID0gZ2V0VGV4dEtleU92ZXJyaWRlIHx8IGRlZmF1bHRHZXRTdHJpbmdLZXk7XG5cbiAgLy8gSXRlcmF0ZSBzYWlkIG9wdGlvbnNcbiAgY29uc3QgZmlsdGVyZWRPcHRpb25zID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEZpbHRlciA9IGZpbHRlclZhbHVlID8/ICcnO1xuICAgIGlmICghc2hvdWxkU2hvd1NlYXJjaCB8fCAhY3VycmVudEZpbHRlciB8fCAhYXZhaWxhYmxlT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIC8vIERvbid0IHJlbmRlciBpZiBhdmFpbGFibGUgb3B0aW9ucyBhcmVuJ3QgcHJlc2VudCwgdGhlcmUncyBubyBmaWx0ZXIgYWN0aXZlXG4gICAgICByZXR1cm4gYXZhaWxhYmxlT3B0aW9ucztcbiAgICB9XG4gICAgLy8gRmlsdGVyIHRocm91Z2ggdGhlIHZhbHVlcywgdXNpbmcgYSBzaW1wbGUgdGV4dC1iYXNlZCBzZWFyY2hcbiAgICAvLyBub3RoaW5nIHRvbyBmYW5jeSwgYnV0IHdlIGNhbiBhZGQgYSBiZXR0ZXIgc2VhcmNoIGFsZ28gbGF0ZXIgaWYgd2UgbmVlZFxuICAgIGNvbnN0IHVwcGVyRmlsdGVyVmFsdWUgPSBjdXJyZW50RmlsdGVyLnRvVXBwZXJDYXNlKCk7XG5cbiAgICByZXR1cm4gYXZhaWxhYmxlT3B0aW9ucy5maWx0ZXIoKHZhbHVlKSA9PlxuICAgICAgZ2V0VGV4dEtleUhlbHBlcih2YWx1ZSkuaW5jbHVkZXModXBwZXJGaWx0ZXJWYWx1ZSksXG4gICAgKSBhcyBPcHRpb25zVHlwZTtcbiAgfSwgW2F2YWlsYWJsZU9wdGlvbnMsIGdldFRleHRLZXlIZWxwZXIsIGZpbHRlclZhbHVlLCBzaG91bGRTaG93U2VhcmNoXSk7XG5cbiAgY29uc3Qgb25TZWFyY2hDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAobmV4dEZpbHRlclZhbHVlOiBzdHJpbmcpID0+IHNldEZpbHRlclZhbHVlKG5leHRGaWx0ZXJWYWx1ZSksXG4gICAgW10sXG4gICk7XG5cbiAgY29uc3Qgc2VhcmNoUmVuZGVyID0gc2hvdWxkU2hvd1NlYXJjaCA/IChcbiAgICA8TXVsdGlTZWFyY2hcbiAgICAgIHZhbHVlPXtmaWx0ZXJWYWx1ZX1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgb25DaGFuZ2U9e29uU2VhcmNoQ2hhbmdlfVxuICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgIC8+XG4gICkgOiBudWxsO1xuXG4gIHJldHVybiBbZmlsdGVyZWRPcHRpb25zLCBzZWFyY2hSZW5kZXJdO1xufVxuIiwiaW1wb3J0IHsgR3JpcFZlcnRpY2FsIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IEdyb3VwLCBQYW5lbCwgU2VwYXJhdG9yIH0gZnJvbSAncmVhY3QtcmVzaXphYmxlLXBhbmVscyc7XG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudFByb3BzIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuY29uc3QgUmVzaXphYmxlUGFuZWxHcm91cCA9ICh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9OiBDb21wb25lbnRQcm9wczx0eXBlb2YgR3JvdXA+KSA9PiAoXG4gIDxHcm91cCBjbGFzc05hbWU9e2NuKCdoLWZ1bGwgdy1mdWxsJywgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuKTtcblxuY29uc3QgUmVzaXphYmxlUGFuZWwgPSBQYW5lbDtcblxuY29uc3QgUmVzaXphYmxlSGFuZGxlID0gKHtcbiAgd2l0aEhhbmRsZSxcbiAgY2xhc3NOYW1lID0gJycsXG4gIC4uLnByb3BzXG59OiBDb21wb25lbnRQcm9wczx0eXBlb2YgU2VwYXJhdG9yPiAmIHtcbiAgd2l0aEhhbmRsZT86IGJvb2xlYW47XG59KSA9PiAoXG4gIDxTZXBhcmF0b3JcbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgJ3JlbGF0aXZlIGZsZXggdy1weCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctYm9yZGVyIGFmdGVyOmFic29sdXRlIGFmdGVyOmluc2V0LXktMCBhZnRlcjpsZWZ0LTEvMiBhZnRlcjp3LTEgYWZ0ZXI6LXRyYW5zbGF0ZS14LTEvMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMSBmb2N1cy12aXNpYmxlOnJpbmctcmluZyBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTEnLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAge3dpdGhIYW5kbGUgJiYgKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ6LTEwIGZsZXggaC00IHctMyBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1zbSBib3JkZXIgYmctYm9yZGVyXCI+XG4gICAgICAgIDxHcmlwVmVydGljYWwgY2xhc3NOYW1lPVwiaC0yLjUgdy0yLjVcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgKX1cbiAgPC9TZXBhcmF0b3I+XG4pO1xuXG5jb25zdCBSZXNpemFibGVIYW5kbGVBbHQgPSAoe1xuICB3aXRoSGFuZGxlLFxuICBjbGFzc05hbWUgPSAnJyxcbiAgLi4ucHJvcHNcbn06IENvbXBvbmVudFByb3BzPHR5cGVvZiBTZXBhcmF0b3I+ICYge1xuICB3aXRoSGFuZGxlPzogYm9vbGVhbjtcbn0pID0+IChcbiAgPFNlcGFyYXRvclxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAnZ3JvdXAgcmVsYXRpdmUgZmxleCB3LXB4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1ib3JkZXIgYWZ0ZXI6YWJzb2x1dGUgYWZ0ZXI6aW5zZXQteS0wIGFmdGVyOmxlZnQtMS8yIGFmdGVyOnctMSBhZnRlcjotdHJhbnNsYXRlLXgtMS8yIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0xIGZvY3VzLXZpc2libGU6cmluZy1yaW5nIGZvY3VzLXZpc2libGU6cmluZy1vZmZzZXQtMScsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICB7d2l0aEhhbmRsZSAmJiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImludmlzaWJsZSB6LTEwIGZsZXggaC00IHctMyBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1zbSBib3JkZXIgYmctYm9yZGVyIGdyb3VwLWhvdmVyOnZpc2libGUgZ3JvdXAtYWN0aXZlOnZpc2libGUgZ3JvdXAtZGF0YS1bc2VwYXJhdG9yPWFjdGl2ZV06dmlzaWJsZVwiPlxuICAgICAgICA8R3JpcFZlcnRpY2FsIGNsYXNzTmFtZT1cImgtMi41IHctMi41XCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICl9XG4gIDwvU2VwYXJhdG9yPlxuKTtcblxuZXhwb3J0IHsgUmVzaXphYmxlUGFuZWxHcm91cCwgUmVzaXphYmxlUGFuZWwsIFJlc2l6YWJsZUhhbmRsZSwgUmVzaXphYmxlSGFuZGxlQWx0IH07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBTZWxlY3RQcmltaXRpdmUgZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXNlbGVjdCc7XG5pbXBvcnQgeyBDYXJldFNvcnRJY29uLCBDaGVja0ljb24sIENoZXZyb25Eb3duSWNvbiwgQ2hldnJvblVwSWNvbiB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1pY29ucyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG4vLyBAdHMtaWdub3JlIC0gUmFkaXggVUkgdHlwZSBjb25mbGljdHMgd2l0aCBSZWFjdCB0eXBlc1xuY29uc3QgU2VsZWN0ID0gU2VsZWN0UHJpbWl0aXZlLlJvb3Q7XG5cbi8vIEB0cy1pZ25vcmUgLSBSYWRpeCBVSSB0eXBlIGNvbmZsaWN0cyB3aXRoIFJlYWN0IHR5cGVzXG5jb25zdCBTZWxlY3RHcm91cCA9IFNlbGVjdFByaW1pdGl2ZS5Hcm91cDtcblxuY29uc3QgU2VsZWN0VmFsdWUgPSBTZWxlY3RQcmltaXRpdmUuVmFsdWU7XG5cbi8vIEB0cy1pZ25vcmUgLSBSYWRpeCBVSSB0eXBlIGNvbmZsaWN0cyB3aXRoIFJlYWN0IHR5cGVzXG5jb25zdCBTZWxlY3RUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyPlxuPigoeyBjbGFzc05hbWUgPSAnJywgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlRyaWdnZXJcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgJ2ZsZXggaC05IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHdoaXRlc3BhY2Utbm93cmFwIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCBib3JkZXItaW5wdXQgYmctdHJhbnNwYXJlbnQgcHgtMyBweS0yIHRleHQtc20gc2hhZG93LXNtIHJpbmctb2Zmc2V0LWJhY2tncm91bmQgcGxhY2Vob2xkZXI6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZvY3VzOm91dGxpbmUtbm9uZSBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCBkYXJrOmJvcmRlci1ncmF5LTYwMCBbJj5zcGFuXTpsaW5lLWNsYW1wLTEnLFxuICAgICAgJ3JvdW5kZWQtbGcgaG92ZXI6YmctZ3JheS0xMDAvNTAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCcsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICB7Y2hpbGRyZW59XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5JY29uIGFzQ2hpbGQ+XG4gICAgICA8Q2FyZXRTb3J0SWNvbiBjbGFzc05hbWU9XCJoLTQgdy00IG9wYWNpdHktNTBcIiAvPlxuICAgIDwvU2VsZWN0UHJpbWl0aXZlLkljb24+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+XG4pKTtcblNlbGVjdFRyaWdnZXIuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuVHJpZ2dlci5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0U2Nyb2xsVXBCdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbj5cbj4oKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICdmbGV4IGN1cnNvci1kZWZhdWx0IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweS0xIGRhcms6dGV4dC13aGl0ZScsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8Q2hldnJvblVwSWNvbiAvPlxuICA8L1NlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbj5cbikpO1xuU2VsZWN0U2Nyb2xsVXBCdXR0b24uZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24uZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdFNjcm9sbERvd25CdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24+XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICdmbGV4IGN1cnNvci1kZWZhdWx0IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweS0xIGRhcms6dGV4dC13aGl0ZScsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8Q2hldnJvbkRvd25JY29uIC8+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24+XG4pKTtcblNlbGVjdFNjcm9sbERvd25CdXR0b24uZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0Q29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lID0gJycsIGNoaWxkcmVuLCBwb3NpdGlvbiA9ICdwb3BwZXInLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdiZy1wb3BvdmVyIHRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHJlbGF0aXZlIHotNDAgbWF4LWgtOTYgbWluLXctWzhyZW1dIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZ3JheS0yMDAgc2hhZG93LW1kIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06em9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06em9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06c2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpzbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06c2xpZGUtaW4tZnJvbS1ib3R0b20tMiBkYXJrOmJvcmRlci1ncmF5LTYwMCcsXG4gICAgICAgIHBvc2l0aW9uID09PSAncG9wcGVyJ1xuICAgICAgICAgID8gJ2RhdGEtW3NpZGU9Ym90dG9tXTp0cmFuc2xhdGUteS0xIGRhdGEtW3NpZGU9bGVmdF06LXRyYW5zbGF0ZS14LTEgZGF0YS1bc2lkZT1yaWdodF06dHJhbnNsYXRlLXgtMSBkYXRhLVtzaWRlPXRvcF06LXRyYW5zbGF0ZS15LTEnXG4gICAgICAgICAgOiAnJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHBvc2l0aW9uPXtwb3NpdGlvbn1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8U2VsZWN0U2Nyb2xsVXBCdXR0b24gLz5cbiAgICAgIDxTZWxlY3RQcmltaXRpdmUuVmlld3BvcnRcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAncC0xJyxcbiAgICAgICAgICBwb3NpdGlvbiA9PT0gJ3BvcHBlcidcbiAgICAgICAgICAgID8gJ2gtW3ZhcigtLXJhZGl4LXNlbGVjdC10cmlnZ2VyLWhlaWdodCldIHctZnVsbCBtaW4tdy1bdmFyKC0tcmFkaXgtc2VsZWN0LXRyaWdnZXItd2lkdGgpXSdcbiAgICAgICAgICAgIDogJycsXG4gICAgICAgICl9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvU2VsZWN0UHJpbWl0aXZlLlZpZXdwb3J0PlxuICAgICAgPFNlbGVjdFNjcm9sbERvd25CdXR0b24gLz5cbiAgICA8L1NlbGVjdFByaW1pdGl2ZS5Db250ZW50PlxuICA8L1NlbGVjdFByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcblNlbGVjdENvbnRlbnQuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0TGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuTGFiZWw+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5MYWJlbD5cbj4oKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLkxhYmVsXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbigncHgtMiBweS0xLjUgdGV4dC1zbSBmb250LXNlbWlib2xkJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcblNlbGVjdExhYmVsLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkxhYmVsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5JdGVtPlxuPigoeyBjbGFzc05hbWUgPSAnJywgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLkl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgJ3JlbGF0aXZlIGZsZXggdy1mdWxsIGN1cnNvci1wb2ludGVyIHNlbGVjdC1ub25lIGl0ZW1zLWNlbnRlciByb3VuZGVkLXNtIHB5LTEuNSBwbC0yIHByLTggdGV4dC1zbSBvdXRsaW5lLW5vbmUgZm9jdXM6YmctYWNjZW50IGZvY3VzOnRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOm9wYWNpdHktNTAnLFxuICAgICAgJ3JvdW5kZWQtbGcgaG92ZXI6YmctZ3JheS0xMDAvNTAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCcsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJhYnNvbHV0ZSByaWdodC0yIGZsZXggaC0zLjUgdy0zLjUgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8U2VsZWN0UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgIDxDaGVja0ljb24gY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgICA8L1NlbGVjdFByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICA8U2VsZWN0UHJpbWl0aXZlLkl0ZW1UZXh0PntjaGlsZHJlbn08L1NlbGVjdFByaW1pdGl2ZS5JdGVtVGV4dD5cbiAgPC9TZWxlY3RQcmltaXRpdmUuSXRlbT5cbikpO1xuU2VsZWN0SXRlbS5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RTZXBhcmF0b3IgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yPlxuPigoeyBjbGFzc05hbWUgPSAnJywgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbignLW14LTEgbXktMSBoLXB4IGJnLW11dGVkJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcblNlbGVjdFNlcGFyYXRvci5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5TZXBhcmF0b3IuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7XG4gIFNlbGVjdCxcbiAgU2VsZWN0R3JvdXAsXG4gIFNlbGVjdFZhbHVlLFxuICBTZWxlY3RUcmlnZ2VyLFxuICBTZWxlY3RDb250ZW50LFxuICBTZWxlY3RMYWJlbCxcbiAgU2VsZWN0SXRlbSxcbiAgU2VsZWN0U2VwYXJhdG9yLFxuICBTZWxlY3RTY3JvbGxVcEJ1dHRvbixcbiAgU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbixcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlTGF5b3V0RWZmZWN0LCB1c2VFZmZlY3QsIHVzZUNhbGxiYWNrLCBtZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlTG9jYWxpemUgfSBmcm9tICd+L2hvb2tzJztcblxuaW50ZXJmYWNlIE9wdGlvbiB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGljb24/OiBSZWFjdC5SZWFjdE5vZGU7XG59XG5cbmludGVyZmFjZSBSYWRpb1Byb3BzIHtcbiAgb3B0aW9uczogT3B0aW9uW107XG4gIHZhbHVlPzogc3RyaW5nO1xuICBvbkNoYW5nZT86ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgYnV0dG9uQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBmdWxsV2lkdGg/OiBib29sZWFuO1xuICAnYXJpYS1sYWJlbGxlZGJ5Jz86IHN0cmluZztcbn1cblxuY29uc3QgUmFkaW8gPSBtZW1vKGZ1bmN0aW9uIFJhZGlvKHtcbiAgb3B0aW9ucyxcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBkaXNhYmxlZCA9IGZhbHNlLFxuICBjbGFzc05hbWUgPSAnJyxcbiAgYnV0dG9uQ2xhc3NOYW1lID0gJycsXG4gIGZ1bGxXaWR0aCA9IGZhbHNlLFxuICAnYXJpYS1sYWJlbGxlZGJ5JzogYXJpYUxhYmVsbGVkQnksXG59OiBSYWRpb1Byb3BzKSB7XG4gIGNvbnN0IGxvY2FsaXplID0gdXNlTG9jYWxpemUoKTtcbiAgY29uc3QgYnV0dG9uUmVmcyA9IHVzZVJlZjwoSFRNTEJ1dHRvbkVsZW1lbnQgfCBudWxsKVtdPihbXSk7XG4gIGNvbnN0IFtpc01vdW50ZWQsIHNldElzTW91bnRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtjdXJyZW50VmFsdWUsIHNldEN1cnJlbnRWYWx1ZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KHZhbHVlID8/ICcnKTtcbiAgY29uc3QgW2JhY2tncm91bmRTdHlsZSwgc2V0QmFja2dyb3VuZFN0eWxlXSA9IHVzZVN0YXRlPFJlYWN0LkNTU1Byb3BlcnRpZXM+KHt9KTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAobmV3VmFsdWU6IHN0cmluZykgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgb25DaGFuZ2U/LihuZXdWYWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlQmFja2dyb3VuZFN0eWxlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSBvcHRpb25zLmZpbmRJbmRleCgob3B0KSA9PiBvcHQudmFsdWUgPT09IGN1cnJlbnRWYWx1ZSk7XG4gICAgaWYgKHNlbGVjdGVkSW5kZXggPj0gMCAmJiBidXR0b25SZWZzLmN1cnJlbnRbc2VsZWN0ZWRJbmRleF0pIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkQnV0dG9uID0gYnV0dG9uUmVmcy5jdXJyZW50W3NlbGVjdGVkSW5kZXhdO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gc2VsZWN0ZWRCdXR0b24/LnBhcmVudEVsZW1lbnQ7XG4gICAgICBpZiAoc2VsZWN0ZWRCdXR0b24gJiYgY29udGFpbmVyKSB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGJ1dHRvblJlY3QgPSBzZWxlY3RlZEJ1dHRvbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qgb2Zmc2V0TGVmdCA9IGJ1dHRvblJlY3QubGVmdCAtIGNvbnRhaW5lclJlY3QubGVmdDtcbiAgICAgICAgc2V0QmFja2dyb3VuZFN0eWxlKHtcbiAgICAgICAgICB3aWR0aDogYCR7YnV0dG9uUmVjdC53aWR0aH1weGAsXG4gICAgICAgICAgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWCgke29mZnNldExlZnR9cHgpYCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbY3VycmVudFZhbHVlLCBvcHRpb25zXSk7XG5cbiAgLy8gTWFyayBhcyBtb3VudGVkIGFmdGVyIGRpYWxvZyBhbmltYXRpb25zIHNldHRsZVxuICAvLyBUaW1lb3V0IGVuc3VyZXMgd2Ugd2FpdCBmb3IgQ1NTIHRyYW5zaXRpb25zIHRvIGNvbXBsZXRlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0SXNNb3VudGVkKHRydWUpO1xuICAgIH0sIDUwKTtcblxuICAgIHJldHVybiAoKSA9PiBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gIH0sIFtdKTtcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc01vdW50ZWQpIHtcbiAgICAgIHVwZGF0ZUJhY2tncm91bmRTdHlsZSgpO1xuICAgIH1cbiAgfSwgW2lzTW91bnRlZCwgdXBkYXRlQmFja2dyb3VuZFN0eWxlXSk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgc2V0Q3VycmVudFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH0sIFt2YWx1ZV0pO1xuXG4gIGlmIChvcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT1cInJlbGF0aXZlIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciByb3VuZGVkLWxnIGJnLW11dGVkIHAtMSBvcGFjaXR5LTUwXCJcbiAgICAgICAgcm9sZT1cInJhZGlvZ3JvdXBcIlxuICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2FyaWFMYWJlbGxlZEJ5fVxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJweC00IHB5LTIgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICB7bG9jYWxpemUoJ2NvbV91aV9ub19vcHRpb25zJyl9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICBjb25zdCBzZWxlY3RlZEluZGV4ID0gb3B0aW9ucy5maW5kSW5kZXgoKG9wdCkgPT4gb3B0LnZhbHVlID09PSBjdXJyZW50VmFsdWUpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtgcmVsYXRpdmUgJHtmdWxsV2lkdGggPyAnZmxleCcgOiAnaW5saW5lLWZsZXgnfSBpdGVtcy1jZW50ZXIgcm91bmRlZC1sZyBiZy1tdXRlZCAke2NsYXNzTmFtZX1gfVxuICAgICAgcm9sZT1cInJhZGlvZ3JvdXBcIlxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PXthcmlhTGFiZWxsZWRCeX1cbiAgICA+XG4gICAgICB7c2VsZWN0ZWRJbmRleCA+PSAwICYmIGlzTW91bnRlZCAmJiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIGluc2V0LXktMCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYm9yZGVyLzUwIGJnLWJhY2tncm91bmQgc2hhZG93LXNtIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCBlYXNlLW91dFwiXG4gICAgICAgICAgc3R5bGU9e2JhY2tncm91bmRTdHlsZX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7b3B0aW9ucy5tYXAoKG9wdGlvbiwgaW5kZXgpID0+IChcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGtleT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgIHJlZj17KGVsKSA9PiB7XG4gICAgICAgICAgICBidXR0b25SZWZzLmN1cnJlbnRbaW5kZXhdID0gZWw7XG4gICAgICAgICAgfX1cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwicmFkaW9cIlxuICAgICAgICAgIGFyaWEtY2hlY2tlZD17Y3VycmVudFZhbHVlID09PSBvcHRpb24udmFsdWV9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlQ2hhbmdlKG9wdGlvbi52YWx1ZSl9XG4gICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgIGNsYXNzTmFtZT17YHJlbGF0aXZlIHotMTAgZmxleCBoLVszNHB4XSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTIgcm91bmRlZC1tZCBweC00IHRleHQtc20gZm9udC1tZWRpdW0gdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMTUwIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1yaW5nICR7XG4gICAgICAgICAgICBjdXJyZW50VmFsdWUgPT09IG9wdGlvbi52YWx1ZSA/ICd0ZXh0LWZvcmVncm91bmQnIDogJ3RleHQtZm9yZWdyb3VuZCdcbiAgICAgICAgICB9ICR7ZGlzYWJsZWQgPyAnY3Vyc29yLW5vdC1hbGxvd2VkIG9wYWNpdHktNTAnIDogJyd9ICR7ZnVsbFdpZHRoID8gJ2ZsZXgtMScgOiAnJ30gJHtidXR0b25DbGFzc05hbWV9YH1cbiAgICAgICAgPlxuICAgICAgICAgIHtvcHRpb24uaWNvbiAmJiAoXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmbGV4LXNocmluay0wXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgIHtvcHRpb24uaWNvbn1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIndoaXRlc3BhY2Utbm93cmFwXCI+e29wdGlvbi5sYWJlbH08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgKSl9XG4gICAgPC9kaXY+XG4gICk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgUmFkaW87XG4iLCJpbXBvcnQgdHlwZSBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBYLCBQbHVzIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IG1vdGlvbiB9IGZyb20gJ2ZyYW1lci1tb3Rpb24nO1xuaW1wb3J0IHR5cGUgeyBCdXR0b25IVE1MQXR0cmlidXRlcyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgTHVjaWRlSWNvbiB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5pbnRlcmZhY2UgQmFkZ2VQcm9wc1xuICBleHRlbmRzIE9taXQ8XG4gICAgQnV0dG9uSFRNTEF0dHJpYnV0ZXM8SFRNTEJ1dHRvbkVsZW1lbnQ+LFxuICAgICdvbkFuaW1hdGlvblN0YXJ0JyB8ICdvbkRyYWdTdGFydCcgfCAnb25EcmFnRW5kJyB8ICdvbkRyYWcnXG4gID4ge1xuICBpY29uPzogTHVjaWRlSWNvbjtcbiAgbGFiZWw6IHN0cmluZztcbiAgaWQ/OiBzdHJpbmc7XG4gIGlzQWN0aXZlPzogYm9vbGVhbjtcbiAgaXNFZGl0aW5nPzogYm9vbGVhbjtcbiAgaXNEcmFnZ2luZz86IGJvb2xlYW47XG4gIGlzQXZhaWxhYmxlOiBib29sZWFuO1xuICBpc0luQ2hhdD86IGJvb2xlYW47XG4gIG9uQmFkZ2VBY3Rpb24/OiAoKSA9PiB2b2lkO1xuICBvblRvZ2dsZT86ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEJhZGdlKHtcbiAgaWNvbjogSWNvbixcbiAgbGFiZWwsXG4gIGlkLFxuICBpc0FjdGl2ZSA9IGZhbHNlLFxuICBpc0VkaXRpbmcgPSBmYWxzZSxcbiAgaXNEcmFnZ2luZyA9IGZhbHNlLFxuICBpc0F2YWlsYWJsZSA9IHRydWUsXG4gIGlzSW5DaGF0ID0gZmFsc2UsXG4gIG9uQmFkZ2VBY3Rpb24sXG4gIG9uVG9nZ2xlLFxuICBjbGFzc05hbWUsXG4gIC4uLnByb3BzXG59OiBCYWRnZVByb3BzKSB7XG4gIGNvbnN0IGlzTW92ZWFibGUgPSBpc0VkaXRpbmcgJiYgaXNBdmFpbGFibGU7XG4gIGNvbnN0IGlzRGlzYWJsZWQgPSBpZCA9PT0gJzEnICYmIGlzSW5DaGF0O1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrOiBSZWFjdC5Nb3VzZUV2ZW50SGFuZGxlcjxIVE1MQnV0dG9uRWxlbWVudD4gPSAoZSkgPT4ge1xuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghaXNFZGl0aW5nICYmIG9uVG9nZ2xlKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgb25Ub2dnbGUoKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZ2V0V2hpbGVUYXBTY2FsZSA9ICgpID0+IHtcbiAgICBpZiAoaXNEcmFnZ2luZykge1xuICAgICAgcmV0dXJuIDEuMTtcbiAgICB9XG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICByZXR1cm4gMC45NztcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxtb3Rpb24uYnV0dG9uXG4gICAgICBvbkNsaWNrPXtoYW5kbGVDbGlja31cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdncm91cCByZWxhdGl2ZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSByb3VuZGVkLWZ1bGwgcHgtNCBweS0xLjUnLFxuICAgICAgICAnYm9yZGVyIGJvcmRlci1ib3JkZXItbWVkaXVtIHRleHQtc20gZm9udC1tZWRpdW0gdHJhbnNpdGlvbi1zaGFkb3cnLFxuICAgICAgICAnQGNvbnRhaW5lci1bNjAwcHhdOnctZnVsbCBzaXplLTkgcC0yJyxcbiAgICAgICAgaXNBY3RpdmVcbiAgICAgICAgICA/ICdiZy1zdXJmYWNlLWFjdGl2ZSBzaGFkb3ctbWQnXG4gICAgICAgICAgOiAnYmctc3VyZmFjZS1jaGF0IHNoYWRvdy1zbSBob3ZlcjpiZy1zdXJmYWNlLWhvdmVyIGhvdmVyOnNoYWRvdy1tZCcsXG4gICAgICAgICdhY3RpdmU6c2NhbGUtOTUgYWN0aXZlOnNoYWRvdy1pbm5lcicsXG4gICAgICAgIGlzTW92ZWFibGUgJiYgJ2N1cnNvci1tb3ZlJyxcbiAgICAgICAgaXNEaXNhYmxlZCAmJiAnY3Vyc29yLW5vdC1hbGxvd2VkIG9wYWNpdHktNTAgaG92ZXI6c2hhZG93LXNtJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIGFuaW1hdGU9e3tcbiAgICAgICAgc2NhbGU6IGlzRHJhZ2dpbmcgPyAxLjEgOiAxLFxuICAgICAgICBib3hTaGFkb3c6IGlzRHJhZ2dpbmcgPyAnMCAxMHB4IDI1cHggcmdiYSgwLDAsMCwwLjEpJyA6IHVuZGVmaW5lZCxcbiAgICAgIH19XG4gICAgICB3aGlsZVRhcD17eyBzY2FsZTogZ2V0V2hpbGVUYXBTY2FsZSgpIH19XG4gICAgICB0cmFuc2l0aW9uPXt7IHR5cGU6ICd0d2VlbicsIGR1cmF0aW9uOiAwLjEsIGVhc2U6ICdlYXNlT3V0JyB9fVxuICAgICAgey4uLihwcm9wcyBhcyBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgbW90aW9uLmJ1dHRvbj4pfVxuICAgID5cbiAgICAgIHtJY29uICYmIChcbiAgICAgICAgPEljb25cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ0Bjb250YWluZXItWzYwMHB4XTpoLTQgQGNvbnRhaW5lci1bNjAwcHhdOnctNCByZWxhdGl2ZSBoLTUgdy01JyxcbiAgICAgICAgICAgICFsYWJlbCAmJiAnbXgtYXV0bycsXG4gICAgICAgICAgKX1cbiAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIkBjb250YWluZXItWzYwMHB4XTppbmxpbmUgcmVsYXRpdmUgaGlkZGVuXCI+e2xhYmVsfTwvc3Bhbj5cblxuICAgICAge2lzRWRpdGluZyAmJiAhaXNEcmFnZ2luZyAmJiAoXG4gICAgICAgIDxtb3Rpb24uYnV0dG9uXG4gICAgICAgICAgY2xhc3NOYW1lPVwiQGNvbnRhaW5lci1bNjAwcHhdOmgtNSBAY29udGFpbmVyLVs2MDBweF06dy01IGFic29sdXRlIC1yaWdodC0xIC10b3AtMSBmbGV4IGgtNiB3LTYgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBiZy1zdXJmYWNlLXNlY29uZGFyeS1hbHQgdGV4dC10ZXh0LXByaW1hcnkgc2hhZG93LXNtXCJcbiAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHNjYWxlOiAwLjggfX1cbiAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHNjYWxlOiAxIH19XG4gICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCBzY2FsZTogMC44IH19XG4gICAgICAgICAgd2hpbGVUYXA9e3sgc2NhbGU6IDAuOSB9fVxuICAgICAgICAgIG9uTW91c2VEb3duPXsoZSkgPT4gZS5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIG9uQmFkZ2VBY3Rpb24/LigpO1xuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7aXNBdmFpbGFibGUgPyA8WCBjbGFzc05hbWU9XCJoLTMgdy0zXCIgLz4gOiA8UGx1cyBjbGFzc05hbWU9XCJoLTMgdy0zXCIgLz59XG4gICAgICAgIDwvbW90aW9uLmJ1dHRvbj5cbiAgICAgICl9XG4gICAgPC9tb3Rpb24uYnV0dG9uPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXJjaGl2ZUljb24oeyBjbGFzc05hbWUgPSAnaWNvbi1tZCcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMThcIlxuICAgICAgaGVpZ2h0PVwiMThcIlxuICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTMuNjIxODggMy4wNzkxOEMzLjg3NTk3IDIuNTcxIDQuMzk1MzcgMi4yNSA0Ljk2MzUzIDIuMjVIMTMuMDM2NUMxMy42MDQ2IDIuMjUgMTQuMTI0IDIuNTcxIDE0LjM3ODEgMy4wNzkxOEwxNS43NSA1LjgyMjk1VjEzLjVDMTUuNzUgMTQuNzQyNiAxNC43NDI2IDE1Ljc1IDEzLjUgMTUuNzVINC41QzMuMjU3MzYgMTUuNzUgMi4yNSAxNC43NDI2IDIuMjUgMTMuNVY1LjgyMjk1TDMuNjIxODggMy4wNzkxOFpNMTMuMDM2NSAzLjc1SDQuOTYzNTNMNC4yMTM1MyA1LjI1SDEzLjc4NjVMMTMuMDM2NSAzLjc1Wk0xNC4yNSA2Ljc1SDMuNzVWMTMuNUMzLjc1IDEzLjkxNDIgNC4wODU3OSAxNC4yNSA0LjUgMTQuMjVIMTMuNUMxMy45MTQyIDE0LjI1IDE0LjI1IDEzLjkxNDIgMTQuMjUgMTMuNVY2Ljc1Wk02Ljc1IDlDNi43NSA4LjU4NTc5IDcuMDg1NzkgOC4yNSA3LjUgOC4yNUgxMC41QzEwLjkxNDIgOC4yNSAxMS4yNSA4LjU4NTc5IDExLjI1IDlDMTEuMjUgOS40MTQyMSAxMC45MTQyIDkuNzUgMTAuNSA5Ljc1SDcuNUM3LjA4NTc5IDkuNzUgNi43NSA5LjQxNDIxIDYuNzUgOVpcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQmxvY2tzKHsgY2xhc3NOYW1lID0gJycgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbignbHVjaWRlIGx1Y2lkZS1ibG9ja3MnLCBjbGFzc05hbWUpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cmVjdCB3aWR0aD1cIjdcIiBoZWlnaHQ9XCI3XCIgeD1cIjE0XCIgeT1cIjNcIiByeD1cIjFcIiAvPlxuICAgICAgPHBhdGggZD1cIk0xMCAyMVY4YTEgMSAwIDAgMC0xLTFINGExIDEgMCAwIDAtMSAxdjEyYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMXYtNWExIDEgMCAwIDAtMS0xSDNcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBsdWdpbih7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2gtNCB3LTQnLCBjbGFzc05hbWUpfVxuICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8ZyBmaWxsPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgIDxwYXRoIGQ9XCJNMTMuMTY0Ljk4YS43LjcgMCAwIDAtMS4zMjggMGwtLjQ3OCAxLjQzNWEuNy43IDAgMCAxLS40NDMuNDQzbC0xLjQzNi40NzhhLjcuNyAwIDAgMCAwIDEuMzI4bDEuNDM2LjQ3OWEuNy43IDAgMCAxIC40NDMuNDQybC40NzggMS40MzZhLjcuNyAwIDAgMCAxLjMyOCAwbC40NzgtMS40MzZhLjcuNyAwIDAgMSAuNDQzLS40NDNsMS40MzYtLjQ3OGEuNy43IDAgMCAwIDAtMS4zMjhsLTEuNDM2LS40NzhhLjcuNyAwIDAgMS0uNDQzLS40NDNMMTMuMTY0Ljk3OVpcIiAvPlxuICAgICAgICA8cGF0aCBkPVwiTTEzLjIzNyAxMC41MzRjLS4yMjgtLjI0NS0uNTEzLS40Ni0uODQ3LS40NmEuODIzLjgyMyAwIDAgMC0uODI4Ljg0OWMuMDQgMS4wNC4xMjggMi4wNjcuMjYzIDMuMDhhLjYxOS42MTkgMCAwIDEtLjUyOC42OTVjLS44NzIuMTIxLTEuNzQ4LjIwOC0yLjYyNi4yNjJhLjguOCAwIDAgMS0uODQ1LS44MDVjMC0uMzI1LjIxLS42MDIuNDUtLjgyLjIzNS0uMjE1LjM3NS0uNDg4LjM3NS0uNzg3IDAtLjY4My0uNzM4LTEuMjM3LTEuNjUtMS4yMzctLjkxMSAwLTEuNjUuNTU0LTEuNjUgMS4yMzcgMCAuMjk0LjEzNy41NjMuMzY0Ljc3NS4yNDUuMjI5LjQ2MS41MTMuNDYxLjg0OGEuODIzLjgyMyAwIDAgMS0uODUuODI5IDMzLjgwOSAzMy44MDkgMCAwIDEtMy4yNjYtLjI3OC42MTkuNjE5IDAgMCAxLS41MzItLjUzMiAzNC4wOTkgMzQuMDk5IDAgMCAxLS4yNzgtMy4yNjcuODIzLjgyMyAwIDAgMSAuODMtLjg1Yy4zMzMgMCAuNjE5LjIxNi44NDYuNDYxLjIxMi4yMjguNDgyLjM2NC43NzYuMzY0LjY4MyAwIDEuMjM3LS43MzggMS4yMzctMS42NSAwLS45MS0uNTU0LTEuNjUtMS4yMzctMS42NS0uMjk5IDAtLjU3Mi4xNDItLjc4Ni4zNzYtLjIxOS4yNC0uNDk2LjQ1LS44MjEuNDVhLjguOCAwIDAgMS0uODA1LS44NDVjLjA1NC0uODg1LjE0Mi0xLjc2LjI2Mi0yLjYyNmEuNjE5LjYxOSAwIDAgMSAuNjk1LS41MjhjMS4wMjIuMTM2IDIuMDUuMjI0IDMuMDguMjYzYS44MjIuODIyIDAgMCAwIC44NS0uODI4YzAtLjMzNC0uMjE3LS42Mi0uNDYyLS44NDctLjIyNy0uMjEyLS4zNjMtLjQ4Mi0uMzYzLS43NzZDNS4zNTIgMS41NTQgNi4wOSAxIDcuMDAyIDFjLjkxIDAgMS42NDkuNTU0IDEuNjQ5IDEuMjM3IDAgLjE3My0uMDEyLjMyNy0uMDI5LjQ3M0M4LjI1OCAzIDggMy40MSA4IDRjMCAxLjUgMS42NjcgMS44MzMgMi41IDIgLjE2Ny44MzMuNSAyLjUgMiAyLjUuNzMyIDAgMS4xODYtLjM5NyAxLjQ3OS0uOWwuMDM0LS4wMDFjLjY4MyAwIDEuMjM3LjczOCAxLjIzNyAxLjY1IDAgLjkxMS0uNTU0IDEuNjUtMS4yMzcgMS42NS0uMjk0IDAtLjU2NC0uMTM3LS43NzYtLjM2NFpcIiAvPlxuICAgICAgPC9nPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEdQVEljb24oe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICcnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIGNvbnN0IHVuaXQgPSAnNDEnO1xuICBjb25zdCBoZWlnaHQgPSBzaXplO1xuICBjb25zdCB3aWR0aCA9IHNpemU7XG5cbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB3aWR0aD17d2lkdGh9XG4gICAgICBoZWlnaHQ9e2hlaWdodH1cbiAgICAgIHZpZXdCb3g9e2AwIDAgJHt1bml0fSAke3VuaXR9YH1cbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIxLjVcIlxuICAgICAgY2xhc3NOYW1lPXtjbihjbGFzc05hbWUsICcnKX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0zNy41MzI0IDE2Ljg3MDdDMzcuOTgwOCAxNS41MjQxIDM4LjEzNjMgMTQuMDk3NCAzNy45ODg2IDEyLjY4NTlDMzcuODQwOSAxMS4yNzQ0IDM3LjM5MzQgOS45MTA3NiAzNi42NzYgOC42ODYyMkMzNS42MTI2IDYuODM0MDQgMzMuOTg4MiA1LjM2NzYgMzIuMDM3MyA0LjQ5ODVDMzAuMDg2NCAzLjYyOTQxIDI3LjkwOTggMy40MDI1OSAyNS44MjE1IDMuODUwNzhDMjQuODc5NiAyLjc4OTMgMjMuNzIxOSAxLjk0MTI1IDIyLjQyNTcgMS4zNjM0MUMyMS4xMjk1IDAuNzg1NTc1IDE5LjcyNDkgMC40OTEyNjkgMTguMzA1OCAwLjUwMDE5N0MxNi4xNzA4IDAuNDk1MDQ0IDE0LjA4OTMgMS4xNjgwMyAxMi4zNjE0IDIuNDIyMTRDMTAuNjMzNSAzLjY3NjI0IDkuMzQ4NTMgNS40NDY2NiA4LjY5MTcgNy40NzgxNUM3LjMwMDg1IDcuNzYyODYgNS45ODY4NiA4LjM0MTQgNC44Mzc3IDkuMTc1MDVDMy42ODg1NCAxMC4wMDg3IDIuNzMwNzMgMTEuMDc4MiAyLjAyODM5IDEyLjMxMkMwLjk1NjQ2NCAxNC4xNTkxIDAuNDk4OTA1IDE2LjI5ODggMC43MjE2OTggMTguNDIyOEMwLjk0NDQ5MiAyMC41NDY3IDEuODM2MTIgMjIuNTQ0OSAzLjI2OCAyNC4xMjkzQzIuODE5NjYgMjUuNDc1OSAyLjY2NDEzIDI2LjkwMjYgMi44MTE4MiAyOC4zMTQxQzIuOTU5NTEgMjkuNzI1NiAzLjQwNzAxIDMxLjA4OTIgNC4xMjQzNyAzMi4zMTM4QzUuMTg3OTEgMzQuMTY1OSA2LjgxMjMgMzUuNjMyMiA4Ljc2MzIxIDM2LjUwMTNDMTAuNzE0MSAzNy4zNzA0IDEyLjg5MDcgMzcuNTk3MyAxNC45Nzg5IDM3LjE0OTJDMTUuOTIwOCAzOC4yMTA3IDE3LjA3ODYgMzkuMDU4NyAxOC4zNzQ3IDM5LjYzNjZDMTkuNjcwOSA0MC4yMTQ0IDIxLjA3NTUgNDAuNTA4NyAyMi40OTQ2IDQwLjQ5OThDMjQuNjMwNyA0MC41MDU0IDI2LjcxMzMgMzkuODMyMSAyOC40NDE4IDM4LjU3NzJDMzAuMTcwNCAzNy4zMjIzIDMxLjQ1NTYgMzUuNTUwNiAzMi4xMTE5IDMzLjUxNzlDMzMuNTAyNyAzMy4yMzMyIDM0LjgxNjcgMzIuNjU0NyAzNS45NjU5IDMxLjgyMUMzNy4xMTUgMzAuOTg3NCAzOC4wNzI4IDI5LjkxNzggMzguNzc1MiAyOC42ODRDMzkuODQ1OCAyNi44MzcxIDQwLjMwMjMgMjQuNjk3OSA0MC4wNzg5IDIyLjU3NDhDMzkuODU1NiAyMC40NTE3IDM4Ljk2MzkgMTguNDU0NCAzNy41MzI0IDE2Ljg3MDdaTTIyLjQ5NzggMzcuODg0OUMyMC43NDQzIDM3Ljg4NzQgMTkuMDQ1OSAzNy4yNzMzIDE3LjY5OTQgMzYuMTUwMUMxNy43NjAxIDM2LjExNyAxNy44NjY2IDM2LjA1ODYgMTcuOTM2IDM2LjAxNjFMMjUuOTAwNCAzMS40MTU2QzI2LjEwMDMgMzEuMzAxOSAyNi4yNjYzIDMxLjEzNyAyNi4zODEzIDMwLjkzNzhDMjYuNDk2NCAzMC43Mzg2IDI2LjU1NjMgMzAuNTEyNCAyNi41NTQ5IDMwLjI4MjVWMTkuMDU0MkwyOS45MjEzIDIwLjk5OEMyOS45Mzg5IDIxLjAwNjggMjkuOTU0MSAyMS4wMTk4IDI5Ljk2NTYgMjEuMDM1OUMyOS45NzcgMjEuMDUyIDI5Ljk4NDIgMjEuMDcwNyAyOS45ODY3IDIxLjA5MDJWMzAuMzg4OUMyOS45ODQyIDMyLjM3NSAyOS4xOTQ2IDM0LjI3OTEgMjcuNzkwOSAzNS42ODQxQzI2LjM4NzIgMzcuMDg5MiAyNC40ODM4IDM3Ljg4MDYgMjIuNDk3OCAzNy44ODQ5Wk02LjM5MjI3IDMxLjAwNjRDNS41MTM5NyAyOS40ODg4IDUuMTk3NDIgMjcuNzEwNyA1LjQ5ODA0IDI1Ljk4MzJDNS41NTcxOCAyNi4wMTg3IDUuNjYwNDggMjYuMDgxOCA1LjczNDYxIDI2LjEyNDRMMTMuNjk5IDMwLjcyNDhDMTMuODk3NSAzMC44NDA4IDE0LjEyMzMgMzAuOTAyIDE0LjM1MzIgMzAuOTAyQzE0LjU4MyAzMC45MDIgMTQuODA4OCAzMC44NDA4IDE1LjAwNzMgMzAuNzI0OEwyNC43MzEgMjUuMTEwM1YyOC45OTc5QzI0LjczMjEgMjkuMDE3NyAyNC43MjgzIDI5LjAzNzYgMjQuNzE5OSAyOS4wNTU2QzI0LjcxMTUgMjkuMDczNiAyNC42OTg4IDI5LjA4OTMgMjQuNjgyOSAyOS4xMDEyTDE2LjYzMTcgMzMuNzQ5N0MxNC45MDk2IDM0Ljc0MTYgMTIuODY0MyAzNS4wMDk3IDEwLjk0NDcgMzQuNDk1NEM5LjAyNTA2IDMzLjk4MTEgNy4zODc4NSAzMi43MjYzIDYuMzkyMjcgMzEuMDA2NFpNNC4yOTcwNyAxMy42MTk0QzUuMTcxNTYgMTIuMDk5OCA2LjU1Mjc5IDEwLjkzNjQgOC4xOTg4NSAxMC4zMzI3QzguMTk4ODUgMTAuNDAxMyA4LjE5NDkxIDEwLjUyMjggOC4xOTQ5MSAxMC42MDcxVjE5LjgwOEM4LjE5MzUxIDIwLjAzNzggOC4yNTMzNCAyMC4yNjM4IDguMzY4MjMgMjAuNDYyOUM4LjQ4MzEyIDIwLjY2MTkgOC42NDg5MyAyMC44MjY3IDguODQ4NjMgMjAuOTQwNEwxOC41NzIzIDI2LjU1NDJMMTUuMjA2IDI4LjQ5NzlDMTUuMTg5NCAyOC41MDg5IDE1LjE3MDMgMjguNTE1NSAxNS4xNTA1IDI4LjUxNzNDMTUuMTMwNyAyOC41MTkxIDE1LjExMDcgMjguNTE2IDE1LjA5MjQgMjguNTA4Mkw3LjA0MDQ2IDIzLjg1NTdDNS4zMjEzNSAyMi44NjAxIDQuMDY3MTYgMjEuMjIzNSAzLjU1Mjg5IDE5LjMwNDZDMy4wMzg2MiAxNy4zODU4IDMuMzA2MjQgMTUuMzQxMyA0LjI5NzA3IDEzLjYxOTRaTTMxLjk1NSAyMC4wNTU2TDIyLjIzMTIgMTQuNDQxMUwyNS41OTc2IDEyLjQ5ODFDMjUuNjE0MiAxMi40ODcyIDI1LjYzMzMgMTIuNDgwNSAyNS42NTMxIDEyLjQ3ODdDMjUuNjcyOSAxMi40NzY5IDI1LjY5MjggMTIuNDgwMSAyNS43MTExIDEyLjQ4NzlMMzMuNzYzMSAxNy4xMzY0QzM0Ljk5NjcgMTcuODQ5IDM2LjAwMTcgMTguODk4MiAzNi42NjA2IDIwLjE2MTNDMzcuMzE5NCAyMS40MjQ0IDM3LjYwNDcgMjIuODQ5IDM3LjQ4MzIgMjQuMjY4NEMzNy4zNjE3IDI1LjY4NzggMzYuODM4MiAyNy4wNDMyIDM1Ljk3NDMgMjguMTc1OUMzNS4xMTAzIDI5LjMwODYgMzMuOTQxNSAzMC4xNzE3IDMyLjYwNDcgMzAuNjY0MUMzMi42MDQ3IDMwLjU5NDcgMzIuNjA0NyAzMC40NzMzIDMyLjYwNDcgMzAuMzg4OVYyMS4xODhDMzIuNjA2NiAyMC45NTg2IDMyLjU0NzQgMjAuNzMyOCAzMi40MzMyIDIwLjUzMzhDMzIuMzE5IDIwLjMzNDggMzIuMTU0IDIwLjE2OTggMzEuOTU1IDIwLjA1NTZaTTM1LjMwNTUgMTUuMDEyOEMzNS4yNDY0IDE0Ljk3NjUgMzUuMTQzMSAxNC45MTQyIDM1LjA2OSAxNC44NzE3TDI3LjEwNDUgMTAuMjcxMkMyNi45MDYgMTAuMTU1NCAyNi42ODAzIDEwLjA5NDMgMjYuNDUwNCAxMC4wOTQzQzI2LjIyMDYgMTAuMDk0MyAyNS45OTQ4IDEwLjE1NTQgMjUuNzk2MyAxMC4yNzEyTDE2LjA3MjYgMTUuODg1OFYxMS45OTgyQzE2LjA3MTUgMTEuOTc4MyAxNi4wNzUzIDExLjk1ODUgMTYuMDgzNyAxMS45NDA1QzE2LjA5MjEgMTEuOTIyNSAxNi4xMDQ4IDExLjkwNjggMTYuMTIwNyAxMS44OTQ5TDI0LjE3MTkgNy4yNTAyNUMyNS40MDUzIDYuNTM5MDMgMjYuODE1OCA2LjE5Mzc2IDI4LjIzODMgNi4yNTQ4MkMyOS42NjA4IDYuMzE1ODkgMzEuMDM2NCA2Ljc4MDc3IDMyLjIwNDQgNy41OTUwOEMzMy4zNzIzIDguNDA5MzkgMzQuMjg0MiA5LjUzOTQ1IDM0LjgzMzQgMTAuODUzMUMzNS4zODI2IDEyLjE2NjcgMzUuNTQ2NCAxMy42MDk1IDM1LjMwNTUgMTUuMDEyOFpNMTQuMjQyNCAyMS45NDE5TDEwLjg3NTIgMTkuOTk4MUMxMC44NTc2IDE5Ljk4OTMgMTAuODQyMyAxOS45NzYzIDEwLjgzMDkgMTkuOTYwMkMxMC44MTk1IDE5Ljk0NDEgMTAuODEyMiAxOS45MjU0IDEwLjgwOTggMTkuOTA1OFYxMC42MDcxQzEwLjgxMDcgOS4xODI5NSAxMS4yMTczIDcuNzg4NDggMTEuOTgxOSA2LjU4Njk2QzEyLjc0NjYgNS4zODU0NCAxMy44Mzc3IDQuNDI2NTkgMTUuMTI3NSAzLjgyMjY0QzE2LjQxNzMgMy4yMTg2OSAxNy44NTI0IDIuOTk0NjQgMTkuMjY0OSAzLjE3NjdDMjAuNjc3NSAzLjM1ODc2IDIyLjAwODkgMy45Mzk0MSAyMy4xMDM0IDQuODUwNjdDMjMuMDQyNyA0Ljg4Mzc5IDIyLjkzNyA0Ljk0MjE1IDIyLjg2NjggNC45ODQ3M0wxNC45MDI0IDkuNTg1MTdDMTQuNzAyNSA5LjY5ODc4IDE0LjUzNjYgOS44NjM1NiAxNC40MjE1IDEwLjA2MjZDMTQuMzA2NSAxMC4yNjE2IDE0LjI0NjYgMTAuNDg3NyAxNC4yNDc5IDEwLjcxNzVMMTQuMjQyNCAyMS45NDE5Wk0xNi4wNzEgMTcuOTk5MUwyMC40MDE4IDE1LjQ5NzhMMjQuNzMyNSAxNy45OTc1VjIyLjk5ODVMMjAuNDAxOCAyNS40OTgzTDE2LjA3MSAyMi45OTg1VjE3Ljk5OTFaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbnR5cGUgSWNvblByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNpemU/OiBzdHJpbmc7XG59O1xuXG5jb25zdCBFZGl0SWNvbiA9IFJlYWN0LmZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPigocHJvcHM6IEljb25Qcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY2xhc3NOYW1lID0gJ2ljb24tbWQnLCBzaXplID0gJzEuMmVtJyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgcmVmPXtyZWZ9XG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGhlaWdodD17c2l6ZX1cbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgY2xhc3NOYW1lPXtjbihjbGFzc05hbWUpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTEzLjI5MjkgNC4yOTI5MUMxNS4wNjQxIDIuNTIxNjcgMTcuOTM1OSAyLjUyMTY3IDE5LjcwNzEgNC4yOTI5QzIxLjQ3ODMgNi4wNjQxNCAyMS40NzgzIDguOTM1ODggMTkuNzA3MSAxMC43MDcxTDE4LjcwNzMgMTEuNzA2OUwxMS4xNjAzIDE5LjI1MzlDMTAuNzE4MiAxOS42OTYgMTAuMTQ4OSAxOS45ODkgOS41MzIxOSAyMC4wOTE4TDQuMTY0NCAyMC45ODY0QzMuODQ1ODQgMjEuMDM5NSAzLjUyMTI1IDIwLjkzNTUgMy4yOTI4OSAyMC43MDcxQzMuMDY0NTMgMjAuNDc4OCAyLjk2MDUxIDIwLjE1NDIgMy4wMTM2IDE5LjgzNTZMMy45MDgyNCAxNC40Njc4QzQuMDExMDMgMTMuODUxMSA0LjMwMzk2IDEzLjI4MTggNC43NDYxIDEyLjgzOTdMMTMuMjkyOSA0LjI5MjkxWk0xMyA3LjQxNDIyTDYuMTYwMzEgMTQuMjUzOUM2LjAxMjkzIDE0LjQwMTMgNS45MTUyOSAxNC41OTEgNS44ODEwMiAxNC43OTY2TDUuMjE2NTUgMTguNzgzNUw5LjIwMzM5IDE4LjExOUM5LjQwODk4IDE4LjA4NDcgOS41OTg3MiAxNy45ODcxIDkuNzQ2MSAxNy44Mzk3TDE2LjU4NTggMTFMMTMgNy40MTQyMlpNMTggOS41ODU4TDE0LjQxNDIgNi4wMDAwMUwxNC43MDcxIDUuNzA3MTJDMTUuNjk3MyA0LjcxNjkzIDE3LjMwMjcgNC43MTY5MyAxOC4yOTI5IDUuNzA3MTJDMTkuMjgzMSA2LjY5NzMxIDE5LjI4MzEgOC4zMDI3MiAxOC4yOTI5IDkuMjkyOTFMMTggOS41ODU4WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBFZGl0SWNvbjtcbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhdGFJY29uKHsgY2xhc3NOYW1lID0gJ2ljb24tc20nIH06IHsgY2xhc3NOYW1lPzogc3RyaW5nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB3aWR0aD1cIjE4XCJcbiAgICAgIGhlaWdodD1cIjE4XCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgY2xpcFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgZD1cIk02LjAwNjMzIDUuNUM2LjAyMzIxIDUuNTMzMTkgNi4wNzA0MiA1LjYwMzY2IDYuMTk1MjUgNS43MDkwNkM2LjQyNDU4IDUuOTAyNyA2LjgxNTczIDYuMTIyMTUgNy4zODY1OSA2LjMyNjAzQzguNTE5NiA2LjczMDY3IDEwLjE1MDYgNyAxMiA3QzEzLjg0OTQgNyAxNS40ODA0IDYuNzMwNjcgMTYuNjEzNCA2LjMyNjAzQzE3LjE4NDMgNi4xMjIxNSAxNy41NzU0IDUuOTAyNyAxNy44MDQ4IDUuNzA5MDZDMTcuOTI5NiA1LjYwMzY2IDE3Ljk3NjggNS41MzMxOSAxNy45OTM3IDUuNUMxNy45NzY4IDUuNDY2ODEgMTcuOTI5NiA1LjM5NjM0IDE3LjgwNDggNS4yOTA5NEMxNy41NzU0IDUuMDk3MyAxNy4xODQzIDQuODc3ODUgMTYuNjEzNCA0LjY3Mzk3QzE1LjQ4MDQgNC4yNjkzMyAxMy44NDk0IDQgMTIgNEMxMC4xNTA2IDQgOC41MTk2IDQuMjY5MzMgNy4zODY1OSA0LjY3Mzk3QzYuODE1NzMgNC44Nzc4NSA2LjQyNDU4IDUuMDk3MyA2LjE5NTI1IDUuMjkwOTRDNi4wNzA0MiA1LjM5NjM0IDYuMDIzMjEgNS40NjY4MSA2LjAwNjMzIDUuNVpNMTggNy45MTcyNkMxNy43NzI2IDguMDI0MDMgMTcuNTMzMyA4LjEyMTIzIDE3LjI4NjEgOC4yMDk1MUMxNS44ODU2IDguNzA5NjggMTQuMDE2NiA5IDEyIDlDOS45ODM0MSA5IDguMTE0NCA4LjcwOTY4IDYuNzEzOTIgOC4yMDk1MUM2LjQ2Njc0IDguMTIxMjMgNi4yMjczOCA4LjAyNDAzIDYgNy45MTcyNlYxMS45ODY2QzYuMDA4MTMgMTIuMDA3MyA2LjAzOTMxIDEyLjA2NjEgNi4xNDI1OSAxMi4xNjI0QzYuMzE5NzYgMTIuMzI3NyA2LjYzMTgxIDEyLjUyNTIgNy4xMDYwOSAxMi43MTg5QzguMDQ4MzcgMTMuMTAzOSA5LjQzMDI3IDEzLjM5MzIgMTEuMDUxIDEzLjQ3NkMxMS42MDI2IDEzLjUwNDIgMTIuMDI2OSAxMy45NzQxIDExLjk5ODcgMTQuNTI1N0MxMS45NzA1IDE1LjA3NzMgMTEuNTAwNSAxNS41MDE2IDEwLjk0OSAxNS40NzM0QzkuMTc3NDQgMTUuMzgyOSA3LjU1OTM0IDE1LjA2NDYgNi4zNDk2OSAxNC41NzA0QzYuMjMwOTcgMTQuNTIxOSA2LjExNDE5IDE0LjQ3MDkgNiAxNC40MTczVjE4LjQ4NjZDNi4wMDgxMyAxOC41MDczIDYuMDM5MzEgMTguNTY2MSA2LjE0MjU5IDE4LjY2MjRDNi4zMTk3NiAxOC44Mjc3IDYuNjMxODEgMTkuMDI1MiA3LjEwNjA5IDE5LjIxODlDOC4wNDgzNyAxOS42MDM5IDkuNDMwMjcgMTkuODkzMiAxMS4wNTEgMTkuOTc2QzExLjYwMjYgMjAuMDA0MiAxMi4wMjY5IDIwLjQ3NDEgMTEuOTk4NyAyMS4wMjU3QzExLjk3MDUgMjEuNTc3MyAxMS41MDA1IDIyLjAwMTYgMTAuOTQ5IDIxLjk3MzRDOS4xNzc0NCAyMS44ODI5IDcuNTU5MzQgMjEuNTY0NiA2LjM0OTY5IDIxLjA3MDRDNS43NDgwMSAyMC44MjQ2IDUuMTk2MTEgMjAuNTE0NiA0Ljc3ODMzIDIwLjEyNDlDNC4zNTk0OCAxOS43MzQxIDQgMTkuMTg2NiA0IDE4LjVWNS41QzQgNC43NDYzMSA0LjQzMDQ4IDQuMTYzNDYgNC45MDQ5NCAzLjc2MjgzQzUuMzg0MDUgMy4zNTgyOSA2LjAxODAzIDMuMDM5MDIgNi43MTM5MiAyLjc5MDQ5QzguMTE0NCAyLjI5MDMyIDkuOTgzNDEgMiAxMiAyQzE0LjAxNjYgMiAxNS44ODU2IDIuMjkwMzIgMTcuMjg2MSAyLjc5MDQ5QzE3Ljk4MiAzLjAzOTAyIDE4LjYxNiAzLjM1ODI5IDE5LjA5NTEgMy43NjI4M0MxOS41Njk1IDQuMTYzNDYgMjAgNC43NDYzMSAyMCA1LjVWMTBDMjAgMTAuNTUyMyAxOS41NTIzIDExIDE5IDExQzE4LjQ0NzcgMTEgMTggMTAuNTUyMyAxOCAxMFY3LjkxNzI2Wk0xNy41IDEzQzE4LjA1MjMgMTMgMTguNSAxMy40NDc3IDE4LjUgMTRWMTQuNjcwN0MxOC44NTEgMTQuNzk0OCAxOS4xNzIgMTQuOTgyMyAxOS40NDkyIDE1LjIxOTVMMjAuMDMwOCAxNC44ODM3QzIwLjUwOTEgMTQuNjA3NSAyMS4xMjA3IDE0Ljc3MTQgMjEuMzk2OCAxNS4yNDk3QzIxLjY3MyAxNS43MjggMjEuNTA5MSAxNi4zMzk2IDIxLjAzMDggMTYuNjE1N0wyMC40NDk5IDE2Ljk1MTFDMjAuNDgyOCAxNy4xMjkxIDIwLjUgMTcuMzEyNSAyMC41IDE3LjVDMjAuNSAxNy42ODczIDIwLjQ4MjggMTcuODcwNyAyMC40NSAxOC4wNDg1TDIxLjAzMDggMTguMzgzOEMyMS41MDkxIDE4LjY1OTkgMjEuNjcyOSAxOS4yNzE1IDIxLjM5NjggMTkuNzQ5OEMyMS4xMjA2IDIwLjIyODEgMjAuNTA5MSAyMC4zOTIgMjAuMDMwOCAyMC4xMTU4TDE5LjQ0OTUgMTkuNzgwM0MxOS4xNzIyIDIwLjAxNzYgMTguODUxMSAyMC4yMDUyIDE4LjUgMjAuMzI5M1YyMUMxOC41IDIxLjU1MjMgMTguMDUyMyAyMiAxNy41IDIyQzE2Ljk0NzcgMjIgMTYuNSAyMS41NTIzIDE2LjUgMjFWMjAuMzI5M0MxNi4xNDg5IDIwLjIwNTIgMTUuODI3NyAyMC4wMTc2IDE1LjU1MDQgMTkuNzgwMkwxNC45NjkgMjAuMTE1OUMxNC40OTA3IDIwLjM5MiAxMy44NzkxIDIwLjIyODIgMTMuNjAzIDE5Ljc0OTlDMTMuMzI2OSAxOS4yNzE2IDEzLjQ5MDcgMTguNjYgMTMuOTY5IDE4LjM4MzlMMTQuNTUgMTguMDQ4NEMxNC41MTcyIDE3Ljg3MDYgMTQuNSAxNy42ODczIDE0LjUgMTcuNUMxNC41IDE3LjMxMjcgMTQuNTE3MiAxNy4xMjk0IDE0LjU1IDE2Ljk1MTVMMTMuOTY5MSAxNi42MTYxQzEzLjQ5MDggMTYuMzQgMTMuMzI2OSAxNS43Mjg0IDEzLjYwMzEgMTUuMjUwMUMxMy44NzkyIDE0Ljc3MTggMTQuNDkwOCAxNC42MDggMTQuOTY5MSAxNC44ODQxTDE1LjU1MDQgMTUuMjE5N0MxNS44Mjc4IDE0Ljk4MjQgMTYuMTQ4OSAxNC43OTQ4IDE2LjUgMTQuNjcwN1YxNEMxNi41IDEzLjQ0NzcgMTYuOTQ3NyAxMyAxNy41IDEzWk0xNi42MjQgMTcuMDE3NEMxNi42Mjc0IDE3LjAxMTcgMTYuNjMwOCAxNy4wMDU5IDE2LjYzNDIgMTcuMDAwMUMxNi42Mzc0IDE2Ljk5NDYgMTYuNjQwNSAxNi45ODkgMTYuNjQzNiAxNi45ODM0QzE2LjgxODcgMTYuNjkzNyAxNy4xMzY3IDE2LjUgMTcuNSAxNi41QzE3Ljg2NDUgMTYuNSAxOC4xODM1IDE2LjY5NTEgMTguMzU4MyAxNi45ODY1QzE4LjM2MDcgMTYuOTkwOSAxOC4zNjMyIDE2Ljk5NTMgMTguMzY1OCAxNi45OTk3QzE4LjM2ODUgMTcuMDA0NCAxOC4zNzEzIDE3LjAwOTEgMTguMzc0MSAxNy4wMTM4QzE4LjQ1NDMgMTcuMTU3NyAxOC41IDE3LjMyMzUgMTguNSAxNy41QzE4LjUgMTcuNjczNyAxOC40NTU3IDE3LjgzNzEgMTguMzc3OCAxNy45Nzk0QzE4LjM3MzcgMTcuOTg2MSAxOC4zNjk3IDE3Ljk5MjkgMTguMzY1NyAxNy45OTk4QzE4LjM2MTkgMTguMDA2NCAxOC4zNTgxIDE4LjAxMzEgMTguMzU0NSAxOC4wMTk4QzE4LjE3ODkgMTguMzA3NyAxNy44NjE5IDE4LjUgMTcuNSAxOC41QzE3LjEzNjIgMTguNSAxNi44MTc4IDE4LjMwNTggMTYuNjQyOCAxOC4wMTU0QzE2LjY0IDE4LjAxMDIgMTYuNjM3MSAxOC4wMDUgMTYuNjM0MSAxNy45OTk5QzE2LjYzMSAxNy45OTQ1IDE2LjYyNzggMTcuOTg5MSAxNi42MjQ2IDE3Ljk4MzhDMTYuNTQ1MiAxNy44NDA0IDE2LjUgMTcuNjc1NSAxNi41IDE3LjVDMTYuNSAxNy4zMjUgMTYuNTQ1IDE3LjE2MDUgMTYuNjI0IDE3LjAxNzRaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2lkZWJhcih7IGNsYXNzTmFtZSB9OiB7IGNsYXNzTmFtZT86IHN0cmluZyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNOC44NTcxOSAzSDE1LjE0MjhDMTYuMjI2NiAyLjk5OTk5IDE3LjEwMDcgMi45OTk5OCAxNy44MDg2IDMuMDU3ODJDMTguNTM3NSAzLjExNzM3IDE5LjE3NzcgMy4yNDMxOCAxOS43NyAzLjU0NDk3QzIwLjcxMDggNC4wMjQzMyAyMS40NzU3IDQuNzg5MjQgMjEuOTU1IDUuNzMwMDVDMjIuMjU2OCA2LjMyMjM0IDIyLjM4MjYgNi45NjI1MyAyMi40NDIyIDcuNjkxMzhDMjIuNSA4LjM5OTI1IDIyLjUgOS4yNzMzOSAyMi41IDEwLjM1NzJWMTMuNjQyOEMyMi41IDE0LjcyNjYgMjIuNSAxNS42MDA4IDIyLjQ0MjIgMTYuMzA4NkMyMi4zODI2IDE3LjAzNzUgMjIuMjU2OCAxNy42Nzc3IDIxLjk1NSAxOC4yN0MyMS40NzU3IDE5LjIxMDggMjAuNzEwOCAxOS45NzU3IDE5Ljc3IDIwLjQ1NUMxOS4xNzc3IDIwLjc1NjggMTguNTM3NSAyMC44ODI2IDE3LjgwODYgMjAuOTQyMkMxNy4xMDA4IDIxIDE2LjIyNjYgMjEgMTUuMTQyOCAyMUg4Ljg1NzE3QzcuNzczMzkgMjEgNi44OTkyNSAyMSA2LjE5MTM4IDIwLjk0MjJDNS40NjI1MyAyMC44ODI2IDQuODIyMzQgMjAuNzU2OCA0LjIzMDA1IDIwLjQ1NUMzLjI4OTI0IDE5Ljk3NTcgMi41MjQzMyAxOS4yMTA4IDIuMDQ0OTcgMTguMjdDMS43NDMxOCAxNy42Nzc3IDEuNjE3MzcgMTcuMDM3NSAxLjU1NzgyIDE2LjMwODZDMS40OTk5OCAxNS42MDA3IDEuNDk5OTkgMTQuNzI2NiAxLjUgMTMuNjQyOFYxMC4zNTcyQzEuNDk5OTkgOS4yNzM0MSAxLjQ5OTk4IDguMzk5MjYgMS41NTc4MiA3LjY5MTM4QzEuNjE3MzcgNi45NjI1MyAxLjc0MzE4IDYuMzIyMzQgMi4wNDQ5NyA1LjczMDA1QzIuNTI0MzMgNC43ODkyNCAzLjI4OTI0IDQuMDI0MzMgNC4yMzAwNSAzLjU0NDk3QzQuODIyMzQgMy4yNDMxOCA1LjQ2MjUzIDMuMTE3MzcgNi4xOTEzOCAzLjA1NzgyQzYuODk5MjYgMi45OTk5OCA3Ljc3MzQxIDIuOTk5OTkgOC44NTcxOSAzWk02LjM1NDI0IDUuMDUxMThDNS43NDkwNyA1LjEwMDYyIDUuNDAxMzggNS4xOTI3OSA1LjEzODAzIDUuMzI2OThDNC41NzM1NCA1LjYxNDYgNC4xMTQ2IDYuMDczNTQgMy44MjY5OCA2LjYzODAzQzMuNjkyNzkgNi45MDEzOCAzLjYwMDYyIDcuMjQ5MDcgMy41NTExOCA3Ljg1NDI0QzMuNTAwNzggOC40NzEwOCAzLjUgOS4yNjMzOSAzLjUgMTAuNFYxMy42QzMuNSAxNC43MzY2IDMuNTAwNzggMTUuNTI4OSAzLjU1MTE4IDE2LjE0NThDMy42MDA2MiAxNi43NTA5IDMuNjkyNzkgMTcuMDk4NiAzLjgyNjk4IDE3LjM2MkM0LjExNDYgMTcuOTI2NSA0LjU3MzU0IDE4LjM4NTQgNS4xMzgwMyAxOC42NzNDNS40MDEzOCAxOC44MDcyIDUuNzQ5MDcgMTguODk5NCA2LjM1NDI0IDE4Ljk0ODhDNi45NzEwOCAxOC45OTkyIDcuNzYzMzkgMTkgOC45IDE5SDkuNVY1SDguOUM3Ljc2MzM5IDUgNi45NzEwOCA1LjAwMDc4IDYuMzU0MjQgNS4wNTExOFpNMTEuNSA1VjE5SDE1LjFDMTYuMjM2NiAxOSAxNy4wMjg5IDE4Ljk5OTIgMTcuNjQ1OCAxOC45NDg4QzE4LjI1MDkgMTguODk5NCAxOC41OTg2IDE4LjgwNzIgMTguODYyIDE4LjY3M0MxOS40MjY1IDE4LjM4NTQgMTkuODg1NCAxNy45MjY1IDIwLjE3MyAxNy4zNjJDMjAuMzA3MiAxNy4wOTg2IDIwLjM5OTQgMTYuNzUwOSAyMC40NDg4IDE2LjE0NThDMjAuNDk5MiAxNS41Mjg5IDIwLjUgMTQuNzM2NiAyMC41IDEzLjZWMTAuNEMyMC41IDkuMjYzMzkgMjAuNDk5MiA4LjQ3MTA4IDIwLjQ0ODggNy44NTQyNEMyMC4zOTk0IDcuMjQ5MDcgMjAuMzA3MiA2LjkwMTM4IDIwLjE3MyA2LjYzODAzQzE5Ljg4NTQgNi4wNzM1NCAxOS40MjY1IDUuNjE0NiAxOC44NjIgNS4zMjY5OEMxOC41OTg2IDUuMTkyNzkgMTguMjUwOSA1LjEwMDYyIDE3LjY0NTggNS4wNTExOEMxNy4wMjg5IDUuMDAwNzggMTYuMjM2NiA1IDE1LjEgNUgxMS41Wk01IDguNUM1IDcuOTQ3NzIgNS40NDc3MiA3LjUgNiA3LjVIN0M3LjU1MjI5IDcuNSA4IDcuOTQ3NzIgOCA4LjVDOCA5LjA1MjI5IDcuNTUyMjkgOS41IDcgOS41SDZDNS40NDc3MiA5LjUgNSA5LjA1MjI5IDUgOC41Wk01IDEyQzUgMTEuNDQ3NyA1LjQ0NzcyIDExIDYgMTFIN0M3LjU1MjI5IDExIDggMTEuNDQ3NyA4IDEyQzggMTIuNTUyMyA3LjU1MjI5IDEzIDcgMTNINkM1LjQ0NzcyIDEzIDUgMTIuNTUyMyA1IDEyWlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1vYmlsZVNpZGViYXIoeyBjbGFzc05hbWUgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTMgOEMzIDcuNDQ3NzIgMy40NDc3MiA3IDQgN0gyMEMyMC41NTIzIDcgMjEgNy40NDc3MiAyMSA4QzIxIDguNTUyMjggMjAuNTUyMyA5IDIwIDlINEMzLjQ0NzcyIDkgMyA4LjU1MjI4IDMgOFpNMyAxNkMzIDE1LjQ0NzcgMy40NDc3MiAxNSA0IDE1SDE0QzE0LjU1MjMgMTUgMTUgMTUuNDQ3NyAxNSAxNkMxNSAxNi41NTIzIDE0LjU1MjMgMTcgMTQgMTdINEMzLjQ0NzcyIDE3IDMgMTYuNTUyMyAzIDE2WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscy8nO1xuXG5pbnRlcmZhY2UgU3Bpbm5lclByb3BzIHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBzaXplPzogc3RyaW5nIHwgbnVtYmVyO1xuICBjb2xvcj86IHN0cmluZztcbiAgYmdPcGFjaXR5PzogbnVtYmVyO1xuICBzcGVlZD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU3Bpbm5lcih7XG4gIGNsYXNzTmFtZSA9ICdtLWF1dG8nLFxuICBzaXplID0gMjAsXG4gIGNvbG9yID0gJ2N1cnJlbnRDb2xvcicsXG4gIGJnT3BhY2l0eSA9IDAuMSxcbiAgc3BlZWQgPSAwLjc1LFxufTogU3Bpbm5lclByb3BzKSB7XG4gIGNvbnN0IGNzc1ZhcnMgPSB7XG4gICAgJy0tc3Bpbm5lci1zcGVlZCc6IGAke3NwZWVkfXNgLFxuICB9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXM7XG5cbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICBjbGFzc05hbWU9e2NuKGNsYXNzTmFtZSwgJ3NwaW5uZXInKX1cbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgdmlld0JveD1cIjAgMCA0MCA0MFwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHN0eWxlPXtjc3NWYXJzfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8ZGVmcz5cbiAgICAgICAgPHN0eWxlIHR5cGU9XCJ0ZXh0L2Nzc1wiPntgXG4gICAgICAgICAgLnNwaW5uZXIge1xuICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgICAgICBhbmltYXRpb246IHNwaW5uZXItcm90YXRlIHZhcigtLXNwaW5uZXItc3BlZWQpIGxpbmVhciBpbmZpbml0ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgQGtleWZyYW1lcyBzcGlubmVyLXJvdGF0ZSB7XG4gICAgICAgICAgICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cbiAgICAgICAgICB9XG4gICAgICAgIGB9PC9zdHlsZT5cbiAgICAgIDwvZGVmcz5cblxuICAgICAgPGNpcmNsZVxuICAgICAgICBjeD1cIjIwXCJcbiAgICAgICAgY3k9XCIyMFwiXG4gICAgICAgIHI9XCIxNC41XCJcbiAgICAgICAgcGF0aExlbmd0aD1cIjEwMFwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiNVwiXG4gICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgc3Ryb2tlPXtjb2xvcn1cbiAgICAgICAgc3Ryb2tlT3BhY2l0eT17YmdPcGFjaXR5fVxuICAgICAgLz5cbiAgICAgIDxjaXJjbGVcbiAgICAgICAgY3g9XCIyMFwiXG4gICAgICAgIGN5PVwiMjBcIlxuICAgICAgICByPVwiMTQuNVwiXG4gICAgICAgIHBhdGhMZW5ndGg9XCIxMDBcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjVcIlxuICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgIHN0cm9rZT17Y29sb3J9XG4gICAgICAgIHN0cm9rZURhc2hhcnJheT1cIjI1IDc1XCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMvJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ2xpcGJvYXJkKHsgY2xhc3NOYW1lID0gJ2ljb24tbWQtaGVhdnknLCBzaXplID0gJzFlbScgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lKX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNNyA1YTMgMyAwIDAgMSAzLTNoOWEzIDMgMCAwIDEgMyAzdjlhMyAzIDAgMCAxLTMgM2gtMnYyYTMgMyAwIDAgMS0zIDNINWEzIDMgMCAwIDEtMy0zdi05YTMgMyAwIDAgMSAzLTNoMnptMiAyaDVhMyAzIDAgMCAxIDMgM3Y1aDJhMSAxIDAgMCAwIDEtMVY1YTEgMSAwIDAgMC0xLTFoLTlhMSAxIDAgMCAwLTEgMXpNNSA5YTEgMSAwIDAgMC0xIDF2OWExIDEgMCAwIDAgMSAxaDlhMSAxIDAgMCAwIDEtMXYtOWExIDEgMCAwIDAtMS0xelwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ2hlY2tNYXJrKHsgY2xhc3NOYW1lID0gJycgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2gtNCB3LTQnLCBjbGFzc05hbWUpfVxuICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTE4LjA2MzMgNS42NzM3NUMxOC41MTk2IDUuOTg0ODcgMTguNjM3NCA2LjYwNyAxOC4zMjYyIDcuMDYzMzFMMTAuODI2MiAxOC4wNjMzQzEwLjY1ODUgMTguMzA5MyAxMC4zODk4IDE4LjQ2NzggMTAuMDkzNCAxOC40OTU2QzkuNzk2ODggMTguNTIzNCA5LjUwMzQ1IDE4LjQxNzYgOS4yOTI4OSAxOC4yMDcxTDQuNzkyODkgMTMuNzA3MUM0LjQwMjM3IDEzLjMxNjYgNC40MDIzNyAxMi42ODM0IDQuNzkyODkgMTIuMjkyOUM1LjE4MzQyIDExLjkwMjMgNS44MTY1OCAxMS45MDIzIDYuMjA3MTEgMTIuMjkyOUw5Ljg1MzY4IDE1LjkzOTRMMTYuNjczOCA1LjkzNjY0QzE2Ljk4NDkgNS40ODAzMyAxNy42MDcgNS4zNjI2MyAxOC4wNjMzIDUuNjczNzVaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscy8nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDcm9zc0ljb24oeyBjbGFzc05hbWUgPSAnJyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lLCAnaC00IHctNCcpfVxuICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8bGluZSB4MT1cIjE4XCIgeTE9XCI2XCIgeDI9XCI2XCIgeTI9XCIxOFwiIC8+XG4gICAgICA8bGluZSB4MT1cIjZcIiB5MT1cIjZcIiB4Mj1cIjE4XCIgeTI9XCIxOFwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMb2dPdXRJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMThcIlxuICAgICAgaGVpZ2h0PVwiMThcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT1cImljb24tbWRcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTExIDNIN0M1Ljg5NTQzIDMgNSAzLjg5NTQzIDUgNVYxOUM1IDIwLjEwNDYgNS44OTU0MyAyMSA3IDIxSDExXCJcbiAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgID48L3BhdGg+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTIwIDEySDExTTIwIDEyTDE2IDE2TTIwIDEyTDE2IDhcIlxuICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ3VzdG9tTWluaW1hbEljb24oe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICcnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB3aWR0aD17c2l6ZX1cbiAgICAgIGhlaWdodD17c2l6ZX1cbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBjbGFzc05hbWU9e2NuKCdsdWNpZGUgbHVjaWRlLWJvdCcsIGNsYXNzTmFtZSl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJNMTIgOFY0SDhcIiAvPlxuICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjEyXCIgeD1cIjRcIiB5PVwiOFwiIHJ4PVwiMlwiIC8+XG4gICAgICA8cGF0aCBkPVwiTTIgMTRoMlwiIC8+XG4gICAgICA8cGF0aCBkPVwiTTIwIDE0aDJcIiAvPlxuICAgICAgPHBhdGggZD1cIk0xNSAxM3YyXCIgLz5cbiAgICAgIDxwYXRoIGQ9XCJNOSAxM3YyXCIgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIExpZ2h0bmluZ0ljb24oeyBjbGFzc05hbWUgPSAnJyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMS41XCJcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgY2xhc3NOYW1lPXtjbignaC02IHctNicsIGNsYXNzTmFtZSl9XG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIGQ9XCJNMy43NSAxMy41bDEwLjUtMTEuMjVMMTIgMTAuNWg4LjI1TDkuNzUgMjEuNzUgMTIgMTMuNUgzLjc1elwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXR0YWNobWVudEljb24oeyBjbGFzc05hbWUgPSAnJyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNOSA3QzkgNC4yMzg1OCAxMS4yMzg2IDIgMTQgMkMxNi43NjE0IDIgMTkgNC4yMzg1OCAxOSA3VjE1QzE5IDE4Ljg2NiAxNS44NjYgMjIgMTIgMjJDOC4xMzQwMSAyMiA1IDE4Ljg2NiA1IDE1VjlDNSA4LjQ0NzcyIDUuNDQ3NzIgOCA2IDhDNi41NTIyOCA4IDcgOC40NDc3MiA3IDlWMTVDNyAxNy43NjE0IDkuMjM4NTggMjAgMTIgMjBDMTQuNzYxNCAyMCAxNyAxNy43NjE0IDE3IDE1VjdDMTcgNS4zNDMxNSAxNS42NTY5IDQgMTQgNEMxMi4zNDMxIDQgMTEgNS4zNDMxNSAxMSA3VjE1QzExIDE1LjU1MjMgMTEuNDQ3NyAxNiAxMiAxNkMxMi41NTIzIDE2IDEzIDE1LjU1MjMgMTMgMTVWOUMxMyA4LjQ0NzcyIDEzLjQ0NzcgOCAxNCA4QzE0LjU1MjMgOCAxNSA4LjQ0NzcyIDE1IDlWMTVDMTUgMTYuNjU2OSAxMy42NTY5IDE4IDEyIDE4QzEwLjM0MzEgMTggOSAxNi42NTY5IDkgMTVWN1pcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMvJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTWVzc2FnZXNTcXVhcmVkKHsgY2xhc3NOYW1lIH06IHsgY2xhc3NOYW1lPzogc3RyaW5nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lID8/ICcnLCAnbHVjaWRlIGx1Y2lkZS1tZXNzYWdlcy1zcXVhcmUnKX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGggZD1cIk0xNCA5YTIgMiAwIDAgMS0yIDJINmwtNCA0VjRjMC0xLjEuOS0yIDItMmg4YTIgMiAwIDAgMSAyIDJ2NVpcIiAvPlxuICAgICAgPHBhdGggZD1cIk0xOCA5aDJhMiAyIDAgMCAxIDIgMnYxMWwtNC00aC02YTIgMiAwIDAgMS0yLTJ2LTFcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU3RvcEdlbmVyYXRpbmdJY29uKHsgY2xhc3NOYW1lID0gJycgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2VXaWR0aD1cIjIuNVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2gtMyB3LTMgdGV4dC1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS00MDAnLCBjbGFzc05hbWUpfVxuICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cmVjdCB4PVwiM1wiIHk9XCIzXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgcng9XCIyXCIgcnk9XCIyXCI+PC9yZWN0PlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUmVnZW5lcmF0ZUljb24oeyBjbGFzc05hbWUgPSAnJywgc2l6ZSA9ICcxZW0nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGhlaWdodD17c2l6ZX1cbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBjbGFzc05hbWU9e2NuKCdpY29uLW1kLWhlYXZ5JywgY2xhc3NOYW1lKX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIGQ9XCJNMy4wNyAxMC44NzZDMy42MjMgNi40MzYgNy40MSAzIDEyIDNhOS4xNSA5LjE1IDAgMCAxIDYuMDEyIDIuMjU0VjRhMSAxIDAgMSAxIDIgMHY0YTEgMSAwIDAgMS0xIDFIMTVhMSAxIDAgMSAxIDAtMmgxLjk1N0E3LjE1IDcuMTUgMCAwIDAgMTIgNWE3IDcgMCAwIDAtNi45NDYgNi4xMjQgMSAxIDAgMSAxLTEuOTg0LS4yNDhtMTYuOTkyIDEuMTMyYTEgMSAwIDAgMSAuODY4IDEuMTE2QzIwLjM3NyAxNy41NjQgMTYuNTkgMjEgMTIgMjFhOS4xNSA5LjE1IDAgMCAxLTYtMi4yNDRWMjBhMSAxIDAgMSAxLTIgMHYtNGExIDEgMCAwIDEgMS0xaDRhMSAxIDAgMSAxIDAgMkg3LjA0M0E3LjE1IDcuMTUgMCAwIDAgMTIgMTlhNyA3IDAgMCAwIDYuOTQ2LTYuMTI0IDEgMSAwIDAgMSAxLjExNi0uODY4XCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb250aW51ZUljb24oeyBjbGFzc05hbWUgPSAnJyB9OiB7IGNsYXNzTmFtZT86IHN0cmluZyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2gtMyB3LTMgLXJvdGF0ZS0xODAnLCBjbGFzc05hbWUpfVxuICAgICAgaGVpZ2h0PVwiMTlcIlxuICAgICAgd2lkdGg9XCIxOVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBvbHlnb24gcG9pbnRzPVwiMTEgMTkgMiAxMiAxMSA1IDExIDE5XCIgLz5cbiAgICAgIDxwb2x5Z29uIHBvaW50cz1cIjIyIDE5IDEzIDEyIDIyIDUgMjIgMTlcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gR29vZ2xlSWNvbigpIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgNTEyIDUxMlwiXG4gICAgICBpZD1cImdvb2dsZVwiXG4gICAgICBjbGFzc05hbWU9XCJoLTUgdy01XCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cIiNmYmJiMDBcIlxuICAgICAgICBkPVwiTTExMy40NyAzMDkuNDA4IDk1LjY0OCAzNzUuOTRsLTY1LjEzOSAxLjM3OEMxMS4wNDIgMzQxLjIxMSAwIDI5OS45IDAgMjU2YzAtNDIuNDUxIDEwLjMyNC04Mi40ODMgMjguNjI0LTExNy43MzJoLjAxNEw4Ni42MyAxNDguOWwyNS40MDQgNTcuNjQ0Yy01LjMxNyAxNS41MDEtOC4yMTUgMzIuMTQxLTguMjE1IDQ5LjQ1Ni4wMDIgMTguNzkyIDMuNDA2IDM2Ljc5NyA5LjY1MSA1My40MDh6XCJcbiAgICAgID48L3BhdGg+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsPVwiIzUxOGVmOFwiXG4gICAgICAgIGQ9XCJNNTA3LjUyNyAyMDguMTc2QzUxMC40NjcgMjIzLjY2MiA1MTIgMjM5LjY1NSA1MTIgMjU2YzAgMTguMzI4LTEuOTI3IDM2LjIwNi01LjU5OCA1My40NTEtMTIuNDYyIDU4LjY4My00NS4wMjUgMTA5LjkyNS05MC4xMzQgMTQ2LjE4N2wtLjAxNC0uMDE0LTczLjA0NC0zLjcyNy0xMC4zMzgtNjQuNTM1YzI5LjkzMi0xNy41NTQgNTMuMzI0LTQ1LjAyNSA2NS42NDYtNzcuOTExaC0xMzYuODlWMjA4LjE3NmgyNDUuODk5elwiXG4gICAgICA+PC9wYXRoPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cIiMyOGI0NDZcIlxuICAgICAgICBkPVwibTQxNi4yNTMgNDU1LjYyNC4wMTQuMDE0QzM3Mi4zOTYgNDkwLjkwMSAzMTYuNjY2IDUxMiAyNTYgNTEyYy05Ny40OTEgMC0xODIuMjUyLTU0LjQ5MS0yMjUuNDkxLTEzNC42ODFsODIuOTYxLTY3LjkxYzIxLjYxOSA1Ny42OTggNzcuMjc4IDk4Ljc3MSAxNDIuNTMgOTguNzcxIDI4LjA0NyAwIDU0LjMyMy03LjU4MiA3Ni44Ny0yMC44MThsODMuMzgzIDY4LjI2MnpcIlxuICAgICAgPjwvcGF0aD5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGw9XCIjZjE0MzM2XCJcbiAgICAgICAgZD1cIm00MTkuNDA0IDU4LjkzNi04Mi45MzMgNjcuODk2QzMxMy4xMzYgMTEyLjI0NiAyODUuNTUyIDEwMy44MiAyNTYgMTAzLjgyYy02Ni43MjkgMC0xMjMuNDI5IDQyLjk1Ny0xNDMuOTY1IDEwMi43MjRsLTgzLjM5Ny02OC4yNzZoLS4wMTRDNzEuMjMgNTYuMTIzIDE1Ny4wNiAwIDI1NiAwYzYyLjExNSAwIDExOS4wNjggMjIuMTI2IDE2My40MDQgNTguOTM2elwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRmFjZWJvb2tJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmcgdmlld0JveD1cIjAgMCA0MCA0MFwiIHdpZHRoPVwiMjVcIiBoZWlnaHQ9XCIyNVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgPGxpbmVhckdyYWRpZW50XG4gICAgICAgIGlkPVwiYVwiXG4gICAgICAgIHgxPXstMjc3LjM3NX1cbiAgICAgICAgeDI9ey0yNzcuMzc1fVxuICAgICAgICB5MT17NDA2LjYwMn1cbiAgICAgICAgeTI9ezQwNy41NzN9XG4gICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDQwIDAgMCAtMzkuNzc3OCAxMTExNS4wMDEgMTYyMTIuMzM0KVwiXG4gICAgICAgIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiXG4gICAgICA+XG4gICAgICAgIDxzdG9wIG9mZnNldD17MH0gc3RvcENvbG9yPVwiIzAwNjJlMFwiIC8+XG4gICAgICAgIDxzdG9wIG9mZnNldD17MX0gc3RvcENvbG9yPVwiIzE5YWZmZlwiIC8+XG4gICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cInVybCgjYSlcIlxuICAgICAgICBkPVwiTTE2LjcgMzkuOEM3LjIgMzguMSAwIDI5LjkgMCAyMCAwIDkgOSAwIDIwIDBzMjAgOSAyMCAyMGMwIDkuOS03LjIgMTguMS0xNi43IDE5LjhsLTEuMS0uOWgtNC40bC0xLjEuOXpcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGw9XCIjZmZmXCJcbiAgICAgICAgZD1cIm0yNy44IDI1LjYuOS01LjZoLTUuM3YtMy45YzAtMS42LjYtMi44IDMtMi44SDI5VjguMmMtMS40LS4yLTMtLjQtNC40LS40LTQuNiAwLTcuOCAyLjgtNy44IDcuOFYyMGgtNXY1LjZoNXYxNC4xYzEuMS4yIDIuMi4zIDMuMy4zIDEuMSAwIDIuMi0uMSAzLjMtLjNWMjUuNmg0LjR6XCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBPcGVuSURJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgdmlld0JveD1cIjAgMCA0NDggNTEyXCJcbiAgICAgIGlkPVwib3BlbmlkXCJcbiAgICAgIGNsYXNzTmFtZT1cImgtNSB3LTVcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgZD1cIk0yNzEuNSA0MzJsLTY4IDMyQzg4LjUgNDUzLjcgMCAzOTIuNSAwIDMxOC4yYzAtNzEuNSA4Mi41LTEzMSAxOTEuNy0xNDQuM3Y0M2MtNzEuNSAxMi41LTEyNCA1My0xMjQgMTAxLjMgMCA1MSA1OC41IDkzLjMgMTM1LjcgMTAzdi0zNDBsNjgtMzMuMnYzODR6TTQ0OCAyOTFsLTEzMS4zLTI4LjUgMzYuOC0yMC43Yy0xOS41LTExLjUtNDMuNS0yMC03MC0yNC44di00M2M0Ni4yIDUuNSA4Ny43IDE5LjUgMTIwLjMgMzkuM2wzNS0xOS44TDQ0OCAyOTF6XCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBHaXRodWJJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjVcIiBoZWlnaHQ9XCIyNVwiIGZpbGw9XCJub25lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgZD1cIk0xMiAwYTEyIDEyIDAgMCAwLTMuODQgMjMuMzk5Yy42MDguMTEyLjgzMi0uMjU2LjgzMi0uNTc2di0yLjAxNWMtMy4zOTUuNzM2LTQuMTE1LTEuNjMyLTQuMTE1LTEuNjMyYTMuMjQxIDMuMjQxIDAgMCAwLTEuMzU5LTEuNzkyYy0xLjEwNC0uNzM2LjA2NC0uNzM2LjA2NC0uNzM2YTIuNTY2IDIuNTY2IDAgMCAxIDEuODI0IDEuMjE2YTIuNjM4IDIuNjM4IDAgMCAwIDMuNjE2IDEuMDI0YTIuNjA3IDIuNjA3IDAgMCAxIC43NjgtMS42Yy0yLjY4OC0uMzItNS41MDQtMS4zNDQtNS41MDQtNS45ODRhNC42NzcgNC42NzcgMCAwIDEgMS4yMTYtMy4xNjhhNC4zODMgNC4zODMgMCAwIDEgLjEyOC0zLjEzNnMxLjAyNC0uMzIgMy4zNiAxLjIxNmExMS42NiAxMS42NiAwIDAgMSA2LjExMiAwYzIuMzM2LTEuNTM2IDMuMzYtMS4yMTYgMy4zNi0xLjIxNmE0LjM1NCA0LjM1NCAwIDAgMSAuMTI4IDMuMTM2YTQuNjI4IDQuNjI4IDAgMCAxIDEuMjE2IDMuMTY4YzAgNC42NzItMi44NDggNS42NjQtNS41MzYgNS45NTJhMi44ODEgMi44ODEgMCAwIDEgLjgzMiAyLjI0djMuMzZjMCAuMzIuMjI0LjY3Mi44MzIuNTc2QTEyIDEyIDAgMCAwIDEyIDB6XCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEaXNjb3JkSWNvbigpIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMTAyNCAxMDI0XCJcbiAgICAgIGlkPVwiZGlzY29yZFwiXG4gICAgICBjbGFzc05hbWU9XCJoLTYgdy02XCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPGNpcmNsZSBjeD1cIjUxMlwiIGN5PVwiNTEyXCIgcj1cIjUxMlwiIGZpbGw9XCIjNTg2NWYyXCIgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGw9XCIjZmZmXCJcbiAgICAgICAgZD1cIk02ODkuNDMgMzQ5YTQyMi4yMSA0MjIuMjEgMCAwIDAtMTA0LjIyLTMyLjMyIDEuNTggMS41OCAwIDAgMC0xLjY4Ljc5IDI5NC4xMSAyOTQuMTEgMCAwIDAtMTMgMjYuNjYgMzg5Ljc4IDM4OS43OCAwIDAgMC0xMTcuMDUgMCAyNjkuNzUgMjY5Ljc1IDAgMCAwLTEzLjE4LTI2LjY2IDEuNjQgMS42NCAwIDAgMC0xLjY4LS43OUE0MjEgNDIxIDAgMCAwIDMzNC40NCAzNDlhMS40OSAxLjQ5IDAgMCAwLS42OS41OWMtNjYuMzcgOTkuMTctODQuNTUgMTk1LjktNzUuNjMgMjkxLjQxYTEuNzYgMS43NiAwIDAgMCAuNjcgMS4yIDQyNC41OCA0MjQuNTggMCAwIDAgMTI3Ljg1IDY0LjYzIDEuNjYgMS42NiAwIDAgMCAxLjgtLjU5IDMwMy40NSAzMDMuNDUgMCAwIDAgMjYuMTUtNDIuNTQgMS42MiAxLjYyIDAgMCAwLS44OS0yLjI1IDI3OS42IDI3OS42IDAgMCAxLTM5Ljk0LTE5IDEuNjQgMS42NCAwIDAgMS0uMTYtMi43MmMyLjY4LTIgNS4zNy00LjEgNy45My02LjIyYTEuNTggMS41OCAwIDAgMSAxLjY1LS4yMmM4My43OSAzOC4yNiAxNzQuNTEgMzguMjYgMjU3LjMxIDBhMS41OCAxLjU4IDAgMCAxIDEuNjguMmMyLjU2IDIuMTEgNS4yNSA0LjIzIDggNi4yNGExLjY0IDEuNjQgMCAwIDEtLjE0IDIuNzIgMjYyLjM3IDI2Mi4zNyAwIDAgMS00MCAxOSAxLjYzIDEuNjMgMCAwIDAtLjg3IDIuMjggMzQwLjcyIDM0MC43MiAwIDAgMCAyNi4xMyA0Mi41MiAxLjYyIDEuNjIgMCAwIDAgMS44LjYxIDQyMy4xNyA0MjMuMTcgMCAwIDAgMTI4LTY0LjYzIDEuNjQgMS42NCAwIDAgMCAuNjctMS4xOGMxMC42OC0xMTAuNDQtMTcuODgtMjA2LjM4LTc1LjctMjkxLjQyYTEuMyAxLjMgMCAwIDAtLjYzLS42M3pNNDI3LjA5IDU4Mi44NWMtMjUuMjMgMC00Ni0yMy4xNi00Ni01MS42czIwLjM4LTUxLjYgNDYtNTEuNmMyNS44MyAwIDQ2LjQyIDIzLjM2IDQ2IDUxLjYuMDIgMjguNDQtMjAuMzcgNTEuNi00NiA1MS42em0xNzAuMTMgMGMtMjUuMjMgMC00Ni0yMy4xNi00Ni01MS42czIwLjM4LTUxLjYgNDYtNTEuNmMyNS44MyAwIDQ2LjQyIDIzLjM2IDQ2IDUxLjYuMDEgMjguNDQtMjAuMTcgNTEuNi00NiA1MS42elwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXBwbGVJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgeG1sU3BhY2U9XCJwcmVzZXJ2ZVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDgxNCAxMDAwXCJcbiAgICAgIGlkPVwiYXBwbGVcIlxuICAgICAgY2xhc3NOYW1lPVwiaC02IHctNlwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNNzg4LjEgMzQwLjljLTUuOCA0LjUtMTA4LjIgNjIuMi0xMDguMiAxOTAuNSAwIDE0OC40IDEzMC4zIDIwMC45IDEzNC4yIDIwMi4yLS42IDMuMi0yMC43IDcxLjktNjguNyAxNDEuOS00Mi44IDYxLjYtODcuNSAxMjMuMS0xNTUuNSAxMjMuMXMtODUuNS0zOS41LTE2NC0zOS41Yy03Ni41IDAtMTAzLjcgNDAuOC0xNjUuOSA0MC44cy0xMDUuNi01Ny0xNTUuNS0xMjdDNDYuNyA3OTAuNyAwIDY2MyAwIDU0MS44YzAtMTk0LjQgMTI2LjQtMjk3LjUgMjUwLjgtMjk3LjUgNjYuMSAwIDEyMS4yIDQzLjQgMTYyLjcgNDMuNCAzOS41IDAgMTAxLjEtNDYgMTc2LjMtNDYgMjguNSAwIDEzMC45IDIuNiAxOTguMyA5OS4yem0tMjM0LTE4MS41YzMxLjEtMzYuOSA1My4xLTg4LjEgNTMuMS0xMzkuMyAwLTcuMS0uNi0xNC4zLTEuOS0yMC4xLTUwLjYgMS45LTExMC44IDMzLjctMTQ3LjEgNzUuOC0yOC41IDMyLjQtNTUuMSA4My42LTU1LjEgMTM1LjUgMCA3LjggMS4zIDE1LjYgMS45IDE4LjEgMy4yLjYgOC40IDEuMyAxMy42IDEuMyA0NS40IDAgMTAyLjUtMzAuNCAxMzUuNS03MS4zelwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsIi8qKlxuICogU2FtbEljb24gQ29tcG9uZW50XG4gKlxuICogU291cmNlOiBTVkcgUmVwb1xuICogVVJMOiBodHRwczovL3d3dy5zdmdyZXBvLmNvbS9zdmcvNDQ4NTkwL3NhbWxcbiAqICAtIENPTExFQ1RJT046IEhhc2hpY29ycCBMaW5lIEludGVyZmFjZSBJY29uc1xuICogIC0gTElDRU5TRTogTUxQIExpY2Vuc2VcbiAqICAtIEFVVEhPUjogSGFzaGlDb3JwXG4gKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNhbWxJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiODAwcHhcIlxuICAgICAgaGVpZ2h0PVwiODAwcHhcIlxuICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIGNsYXNzTmFtZT1cImgtNSB3LTVcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8ZyBmaWxsPVwiIzAwMDAwMFwiPlxuICAgICAgICA8cGF0aCBkPVwiTTcuNzU0IDJsLjQ2My40MWMuMzQzLjMwNC42ODcuNjA3IDEuMDI2LjkxNUMxMS40NCA1LjMyIDEzLjMgNy41NjUgMTQuNyAxMC4xNDljLjA3Mi4xMzIuMTM3LjI2OC4yMDIuNDAzbC4wOTguMjAzLS4xMDguMDU3LS4wODEtLjExNS0uMjEtLjI5OS0uMTQ3LS4yMTRjLTEuMDE5LTEuNDc5LTIuMDQtMi45Ni0zLjQ0Mi00LjE0NWE2LjU2MyA2LjU2MyAwIDAwLTEuMzkzLS45MDRjLTEuMDE0LS40ODUtMS45MTYtLjI5MS0yLjY5LjUwNS0uNzM2Ljc1Ny0xLjExOCAxLjY5Ny0xLjQ2MyAyLjY1My0uMDQ1LjEyMy0uMDkyLjI0NS0uMTM5LjM2N2wtLjA4Mi4yMTUtLjE3Mi0uMDU1Yy4xLS4zNDguMTkyLS42OTguMjg0LTEuMDQ5LjIxLS43OTUuNDItMS41OS43MTItMi4zNTYuMzEtLjgxNi43MDItMS42MDMgMS4wOTMtMi4zOS4xNjktLjM0MS4zMzgtLjY4Mi41LTEuMDI1aC4wOTJ6XCIgLz5cblxuICAgICAgICA8cGF0aCBkPVwiTTguNDQ4IDExLjgyMmMtMS42MjYuNzctNS41NiAxLjU2NC03LjQyNiAxLjM2Qy43MTcgMTEuNTc2IDMuNzEgNC4wNSA1LjE4IDIuOTFsLS4wOTUuMjE4YTQuNjM4IDQuNjM4IDAgMDEtLjEzOC4zMDNsLS4wNjYuMTI5Yy0uNzYgMS40NjItMS41MTkgMi45MjYtMS45MDggNC41M2E3LjQ4MiA3LjQ4MiAwIDAwLS4yMjggMS42ODljLS4wMSAxLjM0LjgyNCAyLjI1MiAyLjIxNyAyLjMwOS42Ny4wMjcgMS4zNDctLjA0MyAyLjAyMy0uMTE0LjI5NC0uMDMuNTg3LS4wNjEuODgtLjA4NC4xMDgtLjAwOC4yMTQtLjAyMS4zNTItLjAzOWwuMjMxLS4wMjh6XCIgLz5cblxuICAgICAgICA8cGF0aCBkPVwiTTMuODI1IDE0Ljc4MWMtLjQ0NS4wMzQtLjg5LjA2OC0xLjMzMy4xMDggNC4wOTcuMzkgOC4wMy0uMjc3IDExLjkxLTEuNjQ0LTEuMjY1LTIuMjMtMi45Ny0zLjk5MS00Ljk1Mi01LjUyMi4wMjYuMDk4LjA4NC4xNjkuMTQxLjIzOWwuMDQ4LjA2Yy4xNy4yMjYuMzQ4LjQ0OC41MjcuNjcuNDA5LjUwOS44MTggMS4wMTggMS4xMjYgMS41NzguNzc4IDEuNDIuMzU2IDIuNjQ4LTEuMTY4IDMuMjk2LTEuMDAyLjQyNy0yLjA5Ny43MTgtMy4xOC44OTItMS4wMy4xNjQtMi4wNzUuMjQzLTMuMTE5LjMyM3pcIiAvPlxuICAgICAgPC9nPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFudGhyb3BpY0ljb24oe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICcnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgdmlld0JveD1cIjAgMCAyNCAxNlwiXG4gICAgICBvdmVyZmxvdz1cInZpc2libGVcIlxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICBjbGFzc05hbWU9e2NuKCdmaWxsLWN1cnJlbnQgdGV4dC1ibGFjaycsIGNsYXNzTmFtZSl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxnXG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxM3B4KSByb3RhdGVaKDBkZWcpJyxcbiAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW46ICc0Ljc3NXB4IDcuNzM1MDFweCcsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgc2hhcGVSZW5kZXJpbmc9XCJnZW9tZXRyaWNQcmVjaXNpb25cIlxuICAgICAgICAgIC8vIGZpbGw9XCJyZ2IoMjQsMjQsMjQpXCJcbiAgICAgICAgICBmaWxsT3BhY2l0eT1cIjFcIlxuICAgICAgICAgIGQ9XCIgTTAsMCBDMCwwIDYuMTY3NzA5MzUwNTg1OTM3NSwxNS40NzAwMjIyMDE1MzgwODYgNi4xNjc3MDkzNTA1ODU5Mzc1LDE1LjQ3MDAyMjIwMTUzODA4NiBDNi4xNjc3MDkzNTA1ODU5Mzc1LDE1LjQ3MDAyMjIwMTUzODA4NiA5LjU1MDAwNDAwNTQzMjEyOSwxNS40NzAwMjIyMDE1MzgwODYgOS41NTAwMDQwMDU0MzIxMjksMTUuNDcwMDIyMjAxNTM4MDg2IEM5LjU1MDAwNDAwNTQzMjEyOSwxNS40NzAwMjIyMDE1MzgwODYgMy4zODIyOTQxNzgwMDkwMzMsMCAzLjM4MjI5NDE3ODAwOTAzMywwIEMzLjM4MjI5NDE3ODAwOTAzMywwIDAsMCAwLDAgQzAsMCAwLDAgMCwwelwiXG4gICAgICAgID48L3BhdGg+XG4gICAgICA8L2c+XG4gICAgICA8Z1xuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIHRyYW5zZm9ybTogJ25vbmUnLFxuICAgICAgICAgIHRyYW5zZm9ybU9yaWdpbjogJzcuOTM1cHggNy43MzUwMXB4JyxcbiAgICAgICAgfX1cbiAgICAgICAgb3BhY2l0eT1cIjFcIlxuICAgICAgPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIHNoYXBlUmVuZGVyaW5nPVwiZ2VvbWV0cmljUHJlY2lzaW9uXCJcbiAgICAgICAgICAvLyBmaWxsPVwicmdiKDI0LDI0LDI0KVwiXG4gICAgICAgICAgZmlsbE9wYWNpdHk9XCIxXCJcbiAgICAgICAgICBkPVwiIE01LjgyNDYwNTQ2NDkzNTMwMyw5LjM0ODI5NjE2NTQ2NjMwOSBDNS44MjQ2MDU0NjQ5MzUzMDMsOS4zNDgyOTYxNjU0NjYzMDkgNy45MzUwMDI4MDM4MDI0OSwzLjkxMTY5NDI4ODI1Mzc4NCA3LjkzNTAwMjgwMzgwMjQ5LDMuOTExNjk0Mjg4MjUzNzg0IEM3LjkzNTAwMjgwMzgwMjQ5LDMuOTExNjk0Mjg4MjUzNzg0IDEwLjA0NTQwMDYxOTUwNjgzNiw5LjM0ODI5NjE2NTQ2NjMwOSAxMC4wNDU0MDA2MTk1MDY4MzYsOS4zNDgyOTYxNjU0NjYzMDkgQzEwLjA0NTQwMDYxOTUwNjgzNiw5LjM0ODI5NjE2NTQ2NjMwOSA1LjgyNDYwNTQ2NDkzNTMwMyw5LjM0ODI5NjE2NTQ2NjMwOSA1LjgyNDYwNTQ2NDkzNTMwMyw5LjM0ODI5NjE2NTQ2NjMwOSBDNS44MjQ2MDU0NjQ5MzUzMDMsOS4zNDgyOTYxNjU0NjYzMDkgNS44MjQ2MDU0NjQ5MzUzMDMsOS4zNDgyOTYxNjU0NjYzMDkgNS44MjQ2MDU0NjQ5MzUzMDMsOS4zNDgyOTYxNjU0NjYzMDl6IE02LjE2Njc1NTE5OTQzMjM3MywwIEM2LjE2Njc1NTE5OTQzMjM3MywwIDAsMTUuNDcwMDIyMjAxNTM4MDg2IDAsMTUuNDcwMDIyMjAxNTM4MDg2IEMwLDE1LjQ3MDAyMjIwMTUzODA4NiAzLjQ0ODA3NzIwMTg0MzI2MTcsMTUuNDcwMDIyMjAxNTM4MDg2IDMuNDQ4MDc3MjAxODQzMjYxNywxNS40NzAwMjIyMDE1MzgwODYgQzMuNDQ4MDc3MjAxODQzMjYxNywxNS40NzAwMjIyMDE1MzgwODYgNC43MDkyNzg1ODM1MjY2MTEsMTIuMjIxMzAwMTI1MTIyMDcgNC43MDkyNzg1ODM1MjY2MTEsMTIuMjIxMzAwMTI1MTIyMDcgQzQuNzA5Mjc4NTgzNTI2NjExLDEyLjIyMTMwMDEyNTEyMjA3IDExLjE2MDkzNjM1NTU5MDgyLDEyLjIyMTMwMDEyNTEyMjA3IDExLjE2MDkzNjM1NTU5MDgyLDEyLjIyMTMwMDEyNTEyMjA3IEMxMS4xNjA5MzYzNTU1OTA4MiwxMi4yMjEzMDAxMjUxMjIwNyAxMi40MjE5Mjg0MDU3NjE3MTksMTUuNDcwMDIyMjAxNTM4MDg2IDEyLjQyMTkyODQwNTc2MTcxOSwxNS40NzAwMjIyMDE1MzgwODYgQzEyLjQyMTkyODQwNTc2MTcxOSwxNS40NzAwMjIyMDE1MzgwODYgMTUuODcwMDA1NjA3NjA0OTgsMTUuNDcwMDIyMjAxNTM4MDg2IDE1Ljg3MDAwNTYwNzYwNDk4LDE1LjQ3MDAyMjIwMTUzODA4NiBDMTUuODcwMDA1NjA3NjA0OTgsMTUuNDcwMDIyMjAxNTM4MDg2IDkuNzAzMjUwODg1MDA5NzY2LDAgOS43MDMyNTA4ODUwMDk3NjYsMCBDOS43MDMyNTA4ODUwMDk3NjYsMCA2LjE2Njc1NTE5OTQzMjM3MywwIDYuMTY2NzU1MTk5NDMyMzczLDAgQzYuMTY2NzU1MTk5NDMyMzczLDAgNi4xNjY3NTUxOTk0MzIzNzMsMCA2LjE2Njc1NTE5OTQzMjM3MywwelwiXG4gICAgICAgID48L3BhdGg+XG4gICAgICA8L2c+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTZW5kSWNvbih7IHNpemUgPSAyNCwgY2xhc3NOYW1lID0gJycgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgdmlld0JveD17JzAgMCAyNCAyNCd9XG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBjbGFzc05hbWU9e2NuKCd0ZXh0LXdoaXRlIGRhcms6dGV4dC1ibGFjaycsIGNsYXNzTmFtZSl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNNyAxMUwxMiA2TDE3IDExTTEyIDE4VjdcIlxuICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMaW5rSWNvbigpIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB3aWR0aD1cIjE4XCJcbiAgICAgIGhlaWdodD1cIjE4XCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBjbGFzc05hbWU9XCJpY29uLW1kXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgY2xpcFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgZD1cIk0xNSA1QzE0LjQ0NzcgNSAxNCA0LjU1MjI4IDE0IDRDMTQgMy40NDc3MiAxNC40NDc3IDMgMTUgM0gyMEMyMC41NTIzIDMgMjEgMy40NDc3MiAyMSA0VjlDMjEgOS41NTIyOCAyMC41NTIzIDEwIDIwIDEwQzE5LjQ0NzcgMTAgMTkgOS41NTIyOCAxOSA5VjYuNDE0MjFMMTMuNzA3MSAxMS43MDcxQzEzLjMxNjYgMTIuMDk3NiAxMi42ODM0IDEyLjA5NzYgMTIuMjkyOSAxMS43MDcxQzExLjkwMjQgMTEuMzE2NiAxMS45MDI0IDEwLjY4MzQgMTIuMjkyOSAxMC4yOTI5TDE3LjU4NTggNUgxNVpNNCA3QzQgNS4zNDMxNSA1LjM0MzE1IDQgNyA0SDEwQzEwLjU1MjMgNCAxMSA0LjQ0NzcyIDExIDVDMTEgNS41NTIyOCAxMC41NTIzIDYgMTAgNkg3QzYuNDQ3NzIgNiA2IDYuNDQ3NzIgNiA3VjE3QzYgMTcuNTUyMyA2LjQ0NzcyIDE4IDcgMThIMTdDMTcuNTUyMyAxOCAxOCAxNy41NTIzIDE4IDE3VjE0QzE4IDEzLjQ0NzcgMTguNDQ3NyAxMyAxOSAxM0MxOS41NTIzIDEzIDIwIDEzLjQ0NzcgMjAgMTRWMTdDMjAgMTguNjU2OSAxOC42NTY5IDIwIDE3IDIwSDdDNS4zNDMxNSAyMCA0IDE4LjY1NjkgNCAxN1Y3WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERvdHNJY29uKHtcbiAgY2xhc3NOYW1lID0gJ2gtNCB3LTQgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXktNTAwJyxcbn06IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIGhlaWdodD1cIjFlbVwiXG4gICAgICB3aWR0aD1cIjFlbVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxXCIgLz5cbiAgICAgIDxjaXJjbGUgY3g9XCIxOVwiIGN5PVwiMTJcIiByPVwiMVwiIC8+XG4gICAgICA8Y2lyY2xlIGN4PVwiNVwiIGN5PVwiMTJcIiByPVwiMVwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbnRlcmZhY2UgR2Vhckljb25Qcm9wcyB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn1cblxuY29uc3QgR2Vhckljb246IFJlYWN0LkZDPEdlYXJJY29uUHJvcHM+ID0gKHsgY2xhc3NOYW1lID0gJycgfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgd2lkdGg9XCIxN1wiXG4gICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTExLjY0MzkgM0MxMC45MzUyIDMgMTAuMjc5NCAzLjM3NTA4IDkuOTIwMDIgMy45ODU5Nkw5LjQ5NjQ0IDQuNzA2MDVDOC45NjE4NCA1LjYxNDg3IDcuOTg5MzggNi4xNzYzMiA2LjkzNTAxIDYuMTg0ODlMNi4wOTk2NyA2LjE5MTY4QzUuMzkwOTYgNi4xOTc0NCA0LjczODIzIDYuNTc3ODMgNC4zODM4NiA3LjE5MTYxTDQuMDI3NzYgNy44MDg0MUMzLjY3MzM5IDguNDIyMTkgMy42NzAzMiA5LjE3NzY3IDQuMDE5NjkgOS43OTQzTDQuNDMxNTEgMTAuNTIxMkM0Ljk1MTI3IDExLjQzODYgNC45NTEyNyAxMi41NjE1IDQuNDMxNTEgMTMuNDc4OEw0LjAxOTY5IDE0LjIwNTdDMy42NzAzMiAxNC44MjI0IDMuNjczMzkgMTUuNTc3OCA0LjAyNzc2IDE2LjE5MTZMNC4zODM4NiAxNi44MDg0QzQuNzM4MjMgMTcuNDIyMiA1LjM5MDk2IDE3LjgwMjYgNi4wOTk2NiAxNy44MDgzTDYuOTM1MDIgMTcuODE1MUM3Ljk4OTM5IDE3LjgyMzcgOC45NjE4NSAxOC4zODUxIDkuNDk2NDUgMTkuMjk0TDkuOTIwMDIgMjAuMDE0QzEwLjI3OTQgMjAuNjI0OSAxMC45MzUyIDIxIDExLjY0MzkgMjFIMTIuMzU2MUMxMy4wNjQ4IDIxIDEzLjcyMDYgMjAuNjI0OSAxNC4wOCAyMC4wMTRMMTQuNTAzNSAxOS4yOTRDMTUuMDM4MSAxOC4zODUxIDE2LjAxMDYgMTcuODIzNyAxNy4wNjUgMTcuODE1MUwxNy45MDA0IDE3LjgwODNDMTguNjA5MSAxNy44MDI2IDE5LjI2MTggMTcuNDIyMiAxOS42MTYyIDE2LjgwODRMMTkuOTcyMyAxNi4xOTE2QzIwLjMyNjcgMTUuNTc3OCAyMC4zMjk4IDE0LjgyMjQgMTkuOTgwNCAxNC4yMDU3TDE5LjU2ODYgMTMuNDc4OEMxOS4wNDg4IDEyLjU2MTUgMTkuMDQ4OCAxMS40Mzg2IDE5LjU2ODYgMTAuNTIxMkwxOS45ODA0IDkuNzk0M0MyMC4zMjk4IDkuMTc3NjcgMjAuMzI2NyA4LjQyMjE5IDE5Ljk3MjMgNy44MDg0MUwxOS42MTYyIDcuMTkxNjFDMTkuMjYxOCA2LjU3NzgzIDE4LjYwOTEgNi4xOTc0NCAxNy45MDA0IDYuMTkxNjhMMTcuMDY1IDYuMTg0ODlDMTYuMDEwNiA2LjE3NjMyIDE1LjAzODIgNS42MTQ4NyAxNC41MDM2IDQuNzA2MDVMMTQuMDggMy45ODU5NkMxMy43MjA2IDMuMzc1MDggMTMuMDY0OCAzIDEyLjM1NjEgM0gxMS42NDM5WlwiXG4gICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgPjwvcGF0aD5cbiAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMi41XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIyXCI+PC9jaXJjbGU+XG4gICAgPC9zdmc+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBHZWFySWNvbjtcbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBpbkljb24oeyB1bnBpbiA9IGZhbHNlIH06IHsgdW5waW4/OiBib29sZWFuIH0pIHtcbiAgaWYgKHVucGluKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxzdmdcbiAgICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICAgIGhlaWdodD1cIjI0XCJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIGNsYXNzTmFtZT1cImljb24tc21cIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTUgMTVWMTcuNTU4NUMxNSAxOC40MTkzIDE0LjQ0OTEgMTkuMTgzNiAxMy42MzI1IDE5LjQ1NThMMTMuMTcyNiAxOS42MDkxQzEyLjQ1NCAxOS44NDg3IDExLjY2MTYgMTkuNjYxNiAxMS4xMjYgMTkuMTI2TDQuODc0MDMgMTIuODc0QzQuMzM4MzcgMTIuMzM4NCA0LjE1MTMyIDExLjU0NiA0LjM5MDg4IDEwLjgyNzRMNC41NDQxNSAxMC4zNjc1QzQuODE2MzggOS41NTA4NiA1LjU4MDY2IDkgNi40NDE1MiA5SDlNMTIgNi4yTDEzLjYyNzcgMy45MjExNkMxNC4zNDYxIDIuOTE1NDkgMTUuNzk1NSAyLjc5NTUyIDE2LjY2OTQgMy42Njk0MkwyMC4zMzA2IDcuMzMwNThDMjEuMjA0NSA4LjIwNDQ4IDIxLjA4NDUgOS42NTM5MiAyMC4wNzg4IDEwLjM3MjNMMTggMTEuODU3MVwiXG4gICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZD1cIk04IDE2TDMgMjFcIlxuICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNNCA0TDIwIDIwXCJcbiAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgICk7XG4gIH1cbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICBjbGFzc05hbWU9XCJpY29uLXNtXCJcbiAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTE3LjQ4NDUgMi44Nzk4QzE2LjE3NzMgMS41NzI1OCAxNC4wMTA3IDEuNzQ1MzQgMTIuOTI3MiAzLjI0MzE4TDkuNzk3NzIgNy41NjkyM0M5LjYwOTQ1IDcuODI5NDggOS4zMDc3NSA3Ljk4MzYgOC45ODY1NCA3Ljk4MzZINi40NDY3M0MzLjc0MDYxIDcuOTgzNiAyLjI3NDE0IDExLjY3NTkgNC4xNjk0OCAxMy41NzEzTDYuNTkxMTYgMTUuOTkzTDIuMjkzMjQgMjAuMjkwOUMxLjkwMjI1IDIwLjY4MTkgMS45MDIyNSAyMS4zMTU4IDIuMjkzMjQgMjEuNzA2OEMyLjY4NDIyIDIyLjA5NzcgMy4zMTgxMiAyMi4wOTc3IDMuNzA5MTEgMjEuNzA2OEw4LjAwNzAzIDE3LjQwODhMMTAuNDI4NyAxOS44MzA1QzEyLjMyNDEgMjEuNzI1OSAxNi4wMTY0IDIwLjI1OTQgMTYuMDE2NCAxNy41NTMzVjE1LjAxMzVDMTYuMDE2NCAxNC42OTIzIDE2LjE3MDUgMTQuMzkwNiAxNi40MzA4IDE0LjIwMjNMMjAuNzU2OCAxMS4wNzI4QzIyLjI1NDcgOS45ODkyNiAyMi40Mjc0IDcuODIyNyAyMS4xMjAyIDYuNTE1NDlMMTcuNDg0NSAyLjg3OThaTTExLjg0NDYgMTguNDE0N0MxMi40OTk0IDE5LjA2OTQgMTQuMDE0MSAxOC40OTI4IDE0LjAxNDEgMTcuNTUzM1YxNS4wMTM1QzE0LjAxNDEgMTQuMDQ5OSAxNC40NzY0IDEzLjE0NDcgMTUuMjU3MiAxMi41OEwxOS41ODMyIDkuNDUwNDdDMjAuMDgyNSA5LjA4OTI4IDIwLjE0MDEgOC4zNjcxIDE5LjcwNDMgNy45MzEzNkwxNi4wNjg2IDQuMjk1NjdDMTUuNjMyOSAzLjg1OTkzIDE0LjkxMDcgMy45MTc1MSAxNC41NDk1IDQuNDE2OEwxMS40MjAxIDguNzQyODVDMTAuODU1MyA5LjUyMzU5IDkuOTUwMTYgOS45ODU5NCA4Ljk4NjU0IDkuOTg1OTRINi40NDY3M0M1LjUwNzIgOS45ODU5NCA0LjkzMDU5IDExLjUwMDYgNS41ODUzNSAxMi4xNTU0TDExLjg0NDYgMTguNDE0N1pcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG50eXBlIFRyYXNoSWNvblByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUcmFzaEljb24oeyBjbGFzc05hbWUgPSAnJyB9OiBUcmFzaEljb25Qcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2ljb24tbWQgaC00IHctNCcsIGNsYXNzTmFtZSl9XG4gICAgICBoZWlnaHQ9XCIxZW1cIlxuICAgICAgd2lkdGg9XCIxZW1cIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTAuNTU1NSA0QzEwLjA5OSA0IDkuNzAwNTIgNC4zMDkwNiA5LjU4NjkzIDQuNzUxMTRMOS4yOTM4MiA1Ljg5MTlIMTQuNzE1TDE0LjQyMTkgNC43NTExNEMxNC4zMDgzIDQuMzA5MDYgMTMuOTA5OCA0IDEzLjQ1MzMgNEgxMC41NTU1Wk0xNi43Nzk5IDUuODkxOUwxNi4zNTg5IDQuMjUzNDJDMTYuMDE4MiAyLjkyNzE5IDE0LjgyMjYgMiAxMy40NTMzIDJIMTAuNTU1NUM5LjE4NjE2IDIgNy45OTA2MiAyLjkyNzE5IDcuNjQ5ODUgNC4yNTM0Mkw3LjIyODg2IDUuODkxOUg0QzMuNDQ3NzIgNS44OTE5IDMgNi4zMzk2MSAzIDYuODkxOUMzIDcuNDQ0MTggMy40NDc3MiA3Ljg5MTkgNCA3Ljg5MTlINC4xMDA2OUw1LjMxNTQ0IDE5LjMxNzJDNS40Nzc2MyAyMC44NDI3IDYuNzY0NTUgMjIgOC4yOTg2MyAyMkgxNS43MDE0QzE3LjIzNTQgMjIgMTguNTIyNCAyMC44NDI3IDE4LjY4NDYgMTkuMzE3MkwxOS44OTkzIDcuODkxOUgyMEMyMC41NTIzIDcuODkxOSAyMSA3LjQ0NDE4IDIxIDYuODkxOUMyMSA2LjMzOTYxIDIwLjU1MjMgNS44OTE5IDIwIDUuODkxOUgxNi43Nzk5Wk0xNy44ODggNy44OTE5SDYuMTExOTZMNy4zMDQyMyAxOS4xMDU3QzcuMzU4MyAxOS42MTQyIDcuNzg3MjcgMjAgOC4yOTg2MyAyMEgxNS43MDE0QzE2LjIxMjcgMjAgMTYuNjQxNyAxOS42MTQyIDE2LjY5NTggMTkuMTA1N0wxNy44ODggNy44OTE5Wk0xMCAxMEMxMC41NTIzIDEwIDExIDEwLjQ0NzcgMTEgMTFWMTZDMTEgMTYuNTUyMyAxMC41NTIzIDE3IDEwIDE3QzkuNDQ3NzIgMTcgOSAxNi41NTIzIDkgMTZWMTFDOSAxMC40NDc3IDkuNDQ3NzIgMTAgMTAgMTBaTTE0IDEwQzE0LjU1MjMgMTAgMTUgMTAuNDQ3NyAxNSAxMVYxNkMxNSAxNi41NTIzIDE0LjU1MjMgMTcgMTQgMTdDMTMuNDQ3NyAxNyAxMyAxNi41NTIzIDEzIDE2VjExQzEzIDEwLjQ0NzcgMTMuNDQ3NyAxMCAxNCAxMFpcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNaW5pbWFsUGx1Z2luKHtcbiAgc2l6ZSxcbiAgY2xhc3NOYW1lID0gJ2ljb24tbWQnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTUuNDY0NiAxOUMxNS4yMjE5IDIwLjY5NjEgMTMuNzYzMiAyMiAxMiAyMkMxMC4yMzY4IDIyIDguNzc4MDYgMjAuNjk2MSA4LjUzNTQ0IDE5SDZDNC4zNDMxNSAxOSAzIDE3LjY1NjkgMyAxNlYxMy41QzMgMTIuOTQ3NyAzLjQ0NzcyIDEyLjUgNCAxMi41SDQuNUM1LjMyODQzIDEyLjUgNiAxMS44Mjg0IDYgMTFDNiAxMC4xNzE2IDUuMzI4NDMgOS41IDQuNSA5LjVINEMzLjQ0NzcyIDkuNSAzIDkuMDUyMjkgMyA4LjVMMyA2QzMgNC4zNDMxNSA0LjM0MzE1IDMgNiAzTDE4IDNDMTkuNjU2OSAzIDIxIDQuMzQzMTUgMjEgNkwyMSAxNkMyMSAxNy42NTY5IDE5LjY1NjkgMTkgMTggMTlIMTUuNDY0NlpNMTIgMjBDMTIuODI4NCAyMCAxMy41IDE5LjMyODQgMTMuNSAxOC41VjE4QzEzLjUgMTcuNDQ3NyAxMy45NDc3IDE3IDE0LjUgMTdIMThDMTguNTUyMyAxNyAxOSAxNi41NTIzIDE5IDE2TDE5IDZDMTkgNS40NDc3MiAxOC41NTIzIDUgMTggNUw2IDVDNS40NDc3MiA1IDUgNS40NDc3MiA1IDZWNy41MzU0NEM2LjY5NjE1IDcuNzc4MDYgOCA5LjIzNjc2IDggMTFDOCAxMi43NjMyIDYuNjk2MTUgMTQuMjIxOSA1IDE0LjQ2NDZMNSAxNkM1IDE2LjU1MjMgNS40NDc3MSAxNyA2IDE3SDkuNUMxMC4wNTIzIDE3IDEwLjUgMTcuNDQ3NyAxMC41IDE4VjE4LjVDMTAuNSAxOS4zMjg0IDExLjE3MTYgMjAgMTIgMjBaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEF6dXJlTWluaW1hbEljb24oe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICdoLTQgdy00Jyxcbn06IHtcbiAgc2l6ZT86IG51bWJlcjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSkge1xuICBjb25zdCBoZWlnaHQgPSBzaXplO1xuICBjb25zdCB3aWR0aCA9IHNpemU7XG5cbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgY2xhc3NOYW1lPXtjbihjbGFzc05hbWUsICcnKX1cbiAgICAgIHdpZHRoPXt3aWR0aH1cbiAgICAgIGhlaWdodD17aGVpZ2h0fVxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJtOC4wNDU4IDAuODE5ODFhMS4xMTk3IDEuMTE5NyAwIDAgMC0xLjA2MDggMC43NjE4NGwtNi43OTEyIDIwLjEyM2ExLjExNzggMS4xMTc4IDAgMCAwIDEuMDU5MiAxLjQ3NTFoNS40NjQ3YTEuMTE5NyAxLjExOTcgMCAwIDAgMS4wNjA4LTAuNzYxNWwxLjM1MjgtNC4wMDg0LTIuMzY4NC0yLjIxMDdhMC41MTUzNiAwLjUxNTM2IDAgMCAxIDAuMzUxOTMtMC44OTIzaDMuMDYzOWwxLjgyMTMtNS4zOTY2LTIuODExMS04LjMyOTRhMS4xMTgxIDEuMTE4MSAwIDAgMC0xLjA1OTUtMC43NjA0OWgtMC4wODM2elwiIC8+XG4gICAgICA8cGF0aCBkPVwibTcuMTE0NyAxNS4zMDdhMC41MTUzNiAwLjUxNTM2IDAgMCAwLTAuMzUxOTMgMC44OTIzbDcuMTU1MiA2LjY3ODJhMS4xMjQ4IDEuMTI0OCAwIDAgMCAwLjc2NzI0IDAuMzAyMzhoMC4yNDE3YTEuMTE4MSAxLjExODEgMCAwIDAgMS4wNTM0LTEuNDc1NWwtMi4xNTkxLTYuMzk3NHpcIiAvPlxuICAgICAgPHBhdGggZD1cIm0xNy4wMTUgMS41ODA3YTEuMTE3OCAxLjExNzggMCAwIDAtMS4wNTkzLTAuNzYwNDloLTcuODI1OGExLjExODEgMS4xMTgxIDAgMCAxIDEuMDU5MyAwLjc2MDQ5bDYuNzkxNiAyMC4xMjNhMS4xMTgxIDEuMTE4MSAwIDAgMS0xLjA1OTMgMS40NzU3aDcuODI2MWExLjExODEgMS4xMTgxIDAgMCAwIDEuMDU5LTEuNDc1N3pcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gT3BlbkFJTWluaW1hbEljb24oeyBjbGFzc05hbWUgPSAnaC00IHctNCcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDQwIDQwXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aCBkPVwiTTM3LjUzMjQgMTYuODcwN0MzNy45ODA4IDE1LjUyNDEgMzguMTM2MyAxNC4wOTc0IDM3Ljk4ODYgMTIuNjg1OUMzNy44NDA5IDExLjI3NDQgMzcuMzkzNCA5LjkxMDc2IDM2LjY3NiA4LjY4NjIyQzM1LjYxMjYgNi44MzQwNCAzMy45ODgyIDUuMzY3NiAzMi4wMzczIDQuNDk4NUMzMC4wODY0IDMuNjI5NDEgMjcuOTA5OCAzLjQwMjU5IDI1LjgyMTUgMy44NTA3OEMyNC44Nzk2IDIuNzg5MyAyMy43MjE5IDEuOTQxMjUgMjIuNDI1NyAxLjM2MzQxQzIxLjEyOTUgMC43ODU1NzUgMTkuNzI0OSAwLjQ5MTI2OSAxOC4zMDU4IDAuNTAwMTk3QzE2LjE3MDggMC40OTUwNDQgMTQuMDg5MyAxLjE2ODAzIDEyLjM2MTQgMi40MjIxNEMxMC42MzM1IDMuNjc2MjQgOS4zNDg1MyA1LjQ0NjY2IDguNjkxNyA3LjQ3ODE1QzcuMzAwODUgNy43NjI4NiA1Ljk4Njg2IDguMzQxNCA0LjgzNzcgOS4xNzUwNUMzLjY4ODU0IDEwLjAwODcgMi43MzA3MyAxMS4wNzgyIDIuMDI4MzkgMTIuMzEyQzAuOTU2NDY0IDE0LjE1OTEgMC40OTg5MDUgMTYuMjk4OCAwLjcyMTY5OCAxOC40MjI4QzAuOTQ0NDkyIDIwLjU0NjcgMS44MzYxMiAyMi41NDQ5IDMuMjY4IDI0LjEyOTNDMi44MTk2NiAyNS40NzU5IDIuNjY0MTMgMjYuOTAyNiAyLjgxMTgyIDI4LjMxNDFDMi45NTk1MSAyOS43MjU2IDMuNDA3MDEgMzEuMDg5MiA0LjEyNDM3IDMyLjMxMzhDNS4xODc5MSAzNC4xNjU5IDYuODEyMyAzNS42MzIyIDguNzYzMjEgMzYuNTAxM0MxMC43MTQxIDM3LjM3MDQgMTIuODkwNyAzNy41OTczIDE0Ljk3ODkgMzcuMTQ5MkMxNS45MjA4IDM4LjIxMDcgMTcuMDc4NiAzOS4wNTg3IDE4LjM3NDcgMzkuNjM2NkMxOS42NzA5IDQwLjIxNDQgMjEuMDc1NSA0MC41MDg3IDIyLjQ5NDYgNDAuNDk5OEMyNC42MzA3IDQwLjUwNTQgMjYuNzEzMyAzOS44MzIxIDI4LjQ0MTggMzguNTc3MkMzMC4xNzA0IDM3LjMyMjMgMzEuNDU1NiAzNS41NTA2IDMyLjExMTkgMzMuNTE3OUMzMy41MDI3IDMzLjIzMzIgMzQuODE2NyAzMi42NTQ3IDM1Ljk2NTkgMzEuODIxQzM3LjExNSAzMC45ODc0IDM4LjA3MjggMjkuOTE3OCAzOC43NzUyIDI4LjY4NEMzOS44NDU4IDI2LjgzNzEgNDAuMzAyMyAyNC42OTc5IDQwLjA3ODkgMjIuNTc0OEMzOS44NTU2IDIwLjQ1MTcgMzguOTYzOSAxOC40NTQ0IDM3LjUzMjQgMTYuODcwN1pNMjIuNDk3OCAzNy44ODQ5QzIwLjc0NDMgMzcuODg3NCAxOS4wNDU5IDM3LjI3MzMgMTcuNjk5NCAzNi4xNTAxQzE3Ljc2MDEgMzYuMTE3IDE3Ljg2NjYgMzYuMDU4NiAxNy45MzYgMzYuMDE2MUwyNS45MDA0IDMxLjQxNTZDMjYuMTAwMyAzMS4zMDE5IDI2LjI2NjMgMzEuMTM3IDI2LjM4MTMgMzAuOTM3OEMyNi40OTY0IDMwLjczODYgMjYuNTU2MyAzMC41MTI0IDI2LjU1NDkgMzAuMjgyNVYxOS4wNTQyTDI5LjkyMTMgMjAuOTk4QzI5LjkzODkgMjEuMDA2OCAyOS45NTQxIDIxLjAxOTggMjkuOTY1NiAyMS4wMzU5QzI5Ljk3NyAyMS4wNTIgMjkuOTg0MiAyMS4wNzA3IDI5Ljk4NjcgMjEuMDkwMlYzMC4zODg5QzI5Ljk4NDIgMzIuMzc1IDI5LjE5NDYgMzQuMjc5MSAyNy43OTA5IDM1LjY4NDFDMjYuMzg3MiAzNy4wODkyIDI0LjQ4MzggMzcuODgwNiAyMi40OTc4IDM3Ljg4NDlaTTYuMzkyMjcgMzEuMDA2NEM1LjUxMzk3IDI5LjQ4ODggNS4xOTc0MiAyNy43MTA3IDUuNDk4MDQgMjUuOTgzMkM1LjU1NzE4IDI2LjAxODcgNS42NjA0OCAyNi4wODE4IDUuNzM0NjEgMjYuMTI0NEwxMy42OTkgMzAuNzI0OEMxMy44OTc1IDMwLjg0MDggMTQuMTIzMyAzMC45MDIgMTQuMzUzMiAzMC45MDJDMTQuNTgzIDMwLjkwMiAxNC44MDg4IDMwLjg0MDggMTUuMDA3MyAzMC43MjQ4TDI0LjczMSAyNS4xMTAzVjI4Ljk5NzlDMjQuNzMyMSAyOS4wMTc3IDI0LjcyODMgMjkuMDM3NiAyNC43MTk5IDI5LjA1NTZDMjQuNzExNSAyOS4wNzM2IDI0LjY5ODggMjkuMDg5MyAyNC42ODI5IDI5LjEwMTJMMTYuNjMxNyAzMy43NDk3QzE0LjkwOTYgMzQuNzQxNiAxMi44NjQzIDM1LjAwOTcgMTAuOTQ0NyAzNC40OTU0QzkuMDI1MDYgMzMuOTgxMSA3LjM4Nzg1IDMyLjcyNjMgNi4zOTIyNyAzMS4wMDY0Wk00LjI5NzA3IDEzLjYxOTRDNS4xNzE1NiAxMi4wOTk4IDYuNTUyNzkgMTAuOTM2NCA4LjE5ODg1IDEwLjMzMjdDOC4xOTg4NSAxMC40MDEzIDguMTk0OTEgMTAuNTIyOCA4LjE5NDkxIDEwLjYwNzFWMTkuODA4QzguMTkzNTEgMjAuMDM3OCA4LjI1MzM0IDIwLjI2MzggOC4zNjgyMyAyMC40NjI5QzguNDgzMTIgMjAuNjYxOSA4LjY0ODkzIDIwLjgyNjcgOC44NDg2MyAyMC45NDA0TDE4LjU3MjMgMjYuNTU0MkwxNS4yMDYgMjguNDk3OUMxNS4xODk0IDI4LjUwODkgMTUuMTcwMyAyOC41MTU1IDE1LjE1MDUgMjguNTE3M0MxNS4xMzA3IDI4LjUxOTEgMTUuMTEwNyAyOC41MTYgMTUuMDkyNCAyOC41MDgyTDcuMDQwNDYgMjMuODU1N0M1LjMyMTM1IDIyLjg2MDEgNC4wNjcxNiAyMS4yMjM1IDMuNTUyODkgMTkuMzA0NkMzLjAzODYyIDE3LjM4NTggMy4zMDYyNCAxNS4zNDEzIDQuMjk3MDcgMTMuNjE5NFpNMzEuOTU1IDIwLjA1NTZMMjIuMjMxMiAxNC40NDExTDI1LjU5NzYgMTIuNDk4MUMyNS42MTQyIDEyLjQ4NzIgMjUuNjMzMyAxMi40ODA1IDI1LjY1MzEgMTIuNDc4N0MyNS42NzI5IDEyLjQ3NjkgMjUuNjkyOCAxMi40ODAxIDI1LjcxMTEgMTIuNDg3OUwzMy43NjMxIDE3LjEzNjRDMzQuOTk2NyAxNy44NDkgMzYuMDAxNyAxOC44OTgyIDM2LjY2MDYgMjAuMTYxM0MzNy4zMTk0IDIxLjQyNDQgMzcuNjA0NyAyMi44NDkgMzcuNDgzMiAyNC4yNjg0QzM3LjM2MTcgMjUuNjg3OCAzNi44MzgyIDI3LjA0MzIgMzUuOTc0MyAyOC4xNzU5QzM1LjExMDMgMjkuMzA4NiAzMy45NDE1IDMwLjE3MTcgMzIuNjA0NyAzMC42NjQxQzMyLjYwNDcgMzAuNTk0NyAzMi42MDQ3IDMwLjQ3MzMgMzIuNjA0NyAzMC4zODg5VjIxLjE4OEMzMi42MDY2IDIwLjk1ODYgMzIuNTQ3NCAyMC43MzI4IDMyLjQzMzIgMjAuNTMzOEMzMi4zMTkgMjAuMzM0OCAzMi4xNTQgMjAuMTY5OCAzMS45NTUgMjAuMDU1NlpNMzUuMzA1NSAxNS4wMTI4QzM1LjI0NjQgMTQuOTc2NSAzNS4xNDMxIDE0LjkxNDIgMzUuMDY5IDE0Ljg3MTdMMjcuMTA0NSAxMC4yNzEyQzI2LjkwNiAxMC4xNTU0IDI2LjY4MDMgMTAuMDk0MyAyNi40NTA0IDEwLjA5NDNDMjYuMjIwNiAxMC4wOTQzIDI1Ljk5NDggMTAuMTU1NCAyNS43OTYzIDEwLjI3MTJMMTYuMDcyNiAxNS44ODU4VjExLjk5ODJDMTYuMDcxNSAxMS45NzgzIDE2LjA3NTMgMTEuOTU4NSAxNi4wODM3IDExLjk0MDVDMTYuMDkyMSAxMS45MjI1IDE2LjEwNDggMTEuOTA2OCAxNi4xMjA3IDExLjg5NDlMMjQuMTcxOSA3LjI1MDI1QzI1LjQwNTMgNi41MzkwMyAyNi44MTU4IDYuMTkzNzYgMjguMjM4MyA2LjI1NDgyQzI5LjY2MDggNi4zMTU4OSAzMS4wMzY0IDYuNzgwNzcgMzIuMjA0NCA3LjU5NTA4QzMzLjM3MjMgOC40MDkzOSAzNC4yODQyIDkuNTM5NDUgMzQuODMzNCAxMC44NTMxQzM1LjM4MjYgMTIuMTY2NyAzNS41NDY0IDEzLjYwOTUgMzUuMzA1NSAxNS4wMTI4Wk0xNC4yNDI0IDIxLjk0MTlMMTAuODc1MiAxOS45OTgxQzEwLjg1NzYgMTkuOTg5MyAxMC44NDIzIDE5Ljk3NjMgMTAuODMwOSAxOS45NjAyQzEwLjgxOTUgMTkuOTQ0MSAxMC44MTIyIDE5LjkyNTQgMTAuODA5OCAxOS45MDU4VjEwLjYwNzFDMTAuODEwNyA5LjE4Mjk1IDExLjIxNzMgNy43ODg0OCAxMS45ODE5IDYuNTg2OTZDMTIuNzQ2NiA1LjM4NTQ0IDEzLjgzNzcgNC40MjY1OSAxNS4xMjc1IDMuODIyNjRDMTYuNDE3MyAzLjIxODY5IDE3Ljg1MjQgMi45OTQ2NCAxOS4yNjQ5IDMuMTc2N0MyMC42Nzc1IDMuMzU4NzYgMjIuMDA4OSAzLjkzOTQxIDIzLjEwMzQgNC44NTA2N0MyMy4wNDI3IDQuODgzNzkgMjIuOTM3IDQuOTQyMTUgMjIuODY2OCA0Ljk4NDczTDE0LjkwMjQgOS41ODUxN0MxNC43MDI1IDkuNjk4NzggMTQuNTM2NiA5Ljg2MzU2IDE0LjQyMTUgMTAuMDYyNkMxNC4zMDY1IDEwLjI2MTYgMTQuMjQ2NiAxMC40ODc3IDE0LjI0NzkgMTAuNzE3NUwxNC4yNDI0IDIxLjk0MTlaTTE2LjA3MSAxNy45OTkxTDIwLjQwMTggMTUuNDk3OEwyNC43MzI1IDE3Ljk5NzVWMjIuOTk4NUwyMC40MDE4IDI1LjQ5ODNMMTYuMDcxIDIyLjk5ODVWMTcuOTk5MVpcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ2hhdEdQVE1pbmltYWxJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT1cImx1Y2lkZSBsdWNpZGUtYm90XCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjEwXCIgeD1cIjNcIiB5PVwiMTFcIiByeD1cIjJcIiAvPlxuICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCI1XCIgcj1cIjJcIiAvPlxuICAgICAgPHBhdGggZD1cIk0xMiA3djRcIiAvPlxuICAgICAgPGxpbmUgeDE9XCI4XCIgeDI9XCI4XCIgeTE9XCIxNlwiIHkyPVwiMTZcIiAvPlxuICAgICAgPGxpbmUgeDE9XCIxNlwiIHgyPVwiMTZcIiB5MT1cIjE2XCIgeTI9XCIxNlwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGFMTWluaW1hbEljb24oeyBjbGFzc05hbWUgPSAnJyB9OiB7IGNsYXNzTmFtZT86IHN0cmluZyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDMyIDMyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2gtNCB3LTQnLCBjbGFzc05hbWUpfVxuICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aCBkPVwibTE2IDMwLjIzOGMxLjIyOTggMCAyLjIyNTktMC45OTYwOCAyLjIyNTktMi4yMjU5di0xMS40NmMtMC42MzUxMy0wLjU2NDI5LTEuNjU1My0xLjY4MDUtMi4yMjU5LTIuMjUxLTAuNzk4NTggMC44Mzc5My0xLjM1OTkgMS4zNTk5LTIuMjI1OSAyLjI1MXYxMS40NmMwIDEuMjI5OCAwLjk5NjA4IDIuMjI1OSAyLjIyNTkgMi4yMjU5elwiIC8+XG4gICAgICA8cGF0aCBkPVwibTI0Ljg2OCAxNS43NjFjLTAuNjE2OTEtMC42MTY0My0xLjMxMjEtMS4xMDY1LTIuMDUzNi0xLjQ3MDMtNi44MTQ3IDAuMDEwNDY3IDAuMTMzMDQgMC4wMzEwMjYtNi44MTQ3IDAuMDEwNDY3bDkuNTI4NiA5LjUyODZjMC4zOTMyNCAwLjM5MzI0IDEuMDcwMyAwLjIzNzQzIDEuMjM3Mi0wLjI5MTIyIDAuODM4NDEtMi42NTQ0IDAuMjA1ODktNS42NzIzLTEuODk3Ni03Ljc3NzZ6XCIgLz5cbiAgICAgIDxwYXRoIGQ9XCJtNy4xMzE4IDE1Ljc2MWMwLjU5MDItMC41ODk3NSAxLjI1MjEtMS4wNjM5IDEuOTU3NS0xLjQyMjQgNi45MTA3LTAuMDM3NDI3LTAuMTE4MTItMC4wNTcyODggNi45MTA3LTAuMDM3NDI3bC05LjUyODYgOS41Mjg2Yy0wLjM5MzI0IDAuMzkzMjQtMS4wNzAzIDAuMjM3NDMtMS4yMzcyLTAuMjkxMjItMC44Mzg0MS0yLjY1NDMtMC4yMDU4OS01LjY3MjMgMS44OTc2LTcuNzc3NnpcIiAvPlxuICAgICAgPHBhdGggZD1cIm0yNC4xNjIgOC4zNjU1Yy0wLjkzMTY5IDAtMS44Mjg4IDAuMTUwMDktMi42NjkxIDAuNDI3NzItNS40OTI0IDUuNTA3OSAwIDAtNS40OTI0IDUuNTA3OWgxNS4wNjljMC42MTc2NyAwIDEuMDI5NS0wLjY1MjkyIDAuNzQ5MzgtMS4yMDM4LTEuNDMyLTIuODEwMi00LjMyMTktNC43MzE4LTcuNjU3LTQuNzMxOHpcIiAvPlxuICAgICAgPHBhdGggZD1cIm0xNy41NzUgNC4zMzNjLTAuNjI2MTMgMC42MjYxMy0xLjEzNDMgMS4zMjU3LTEuNTI0OCAyLjA3MTggMS42NzY3IDQuMTE3NCAwLjUzNTE4IDYuMzkwOS0wLjA1MDAzIDcuODk2NGwxMC42NTYtMTAuNjU2YzAuNDM3NzUtMC40Mzc3NSAwLjI2NzEtMS4xOTA4LTAuMzIwOS0xLjM4MTktMy4wMDEyLTAuOTczODItNi40MDMxLTAuMjg3NTEtOC43NjA3IDIuMDcwMXpcIiAvPlxuICAgICAgPHBhdGggZD1cIm0xNC40MjUgNC4zMzNjMi42ODIyIDIuNjgyMiAzLjE5OTcgNi43MTI5IDEuNTc0OCA5Ljk2ODJsLTEwLjY1Ni0xMC42NTZjLTAuNDM3NzUtMC40Mzc3NS0wLjI2NzEtMS4xOTA4IDAuMzIwOS0xLjM4MTkgMy4wMDEyLTAuOTczODIgNi40MDMxLTAuMjg3NTEgOC43NjA3IDIuMDcwMXpcIiAvPlxuICAgICAgPHBhdGggZD1cIm03LjgzODUgOC4zNjU1YzAuOTEyMSAwIDEuNzkxIDAuMTQzODUgMi42MTYgMC40MTAzNyA1LjU0NTUgNS41MjUzLTAuMDYxNzczIDAuMDExNjc1IDUuNTQ1NSA1LjUyNTNoLTE1LjA2OWMtMC42MTc2OCAwLTEuMDI5NS0wLjY1MjkyLTAuNzQ5MzgtMS4yMDM4IDEuNDMyLTIuODEwMiA0LjMyMTktNC43MzE4IDcuNjU3LTQuNzMxOHpcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGFMTUljb24oe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICcnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgLy8gd2lkdGg9XCIxMDAlXCJcbiAgICAgIC8vIGhlaWdodD1cIjEwMCVcIlxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIHZpZXdCb3g9XCIwIDAgMTkgMTdcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz1cInhNaWRZTWlkIG1lZXRcIlxuICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTkuNjI2NzQgMTYuMjIwMkg5LjcwNDlDMTAuNDIyNSAxNi4yMjAyIDExLjAwMTYgMTUuNjQxMiAxMS4wMDE2IDE0LjkyMzZWNC4wNDIyNEg4LjMzMDA4VjE0LjkyQzguMzMwMDggMTUuNjM3NiA4LjkwOTE0IDE2LjIyMDIgOS42MjY3NCAxNi4yMjAyWlwiXG4gICAgICAgIGZpbGw9XCIjRjlBQjAwXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTE0LjY4MTkgOC4wMjgxM0MxMy4zMjQ5IDYuNjY3NTIgMTEuMjk2NCA2LjM5Mzk4IDkuNjY1NzcgNy4yMDA0TDE1LjA1ODUgMTIuNTkzMUMxNS4yODIzIDEyLjgxNjkgMTUuNjYyNCAxMi43MjgxIDE1Ljc1ODMgMTIuNDI5N0MxNi4yMzA4IDEwLjkyNyAxNS44NzU2IDkuMjE4MjIgMTQuNjgxOSA4LjAyODEzWlwiXG4gICAgICAgIGZpbGw9XCIjNUJCOTc0XCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTQuNjQ5NTMgOC4wMjgxM0M2LjAwNjU5IDYuNjY3NTIgOC4wMzUwNyA2LjM5Mzk4IDkuNjY1NjcgNy4yMDA0TDQuMjcyOTcgMTIuNTkzMUM0LjA0OTE2IDEyLjgxNjkgMy42NjkwNCAxMi43MjgxIDMuNTczMTIgMTIuNDI5N0MzLjEwMDY0IDEwLjkyNyAzLjQ1NTg5IDkuMjE4MjIgNC42NDk1MyA4LjAyODEzWlwiXG4gICAgICAgIGZpbGw9XCIjMTI5RUFGXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTE0LjI4NCAzLjg0MzI2QzEyLjEzODMgMy44NDMyNiAxMC4zMTU5IDUuMjUwMDUgOS42NjU3NyA3LjIwMDM4SDE4LjE5MThDMTguNTM5OSA3LjIwMDM4IDE4Ljc3NDQgNi44MzA5MiAxOC42MTQ1IDYuNTE4M0MxNy44MDgxIDQuOTMwMzMgMTYuMTcwNCAzLjg0MzI2IDE0LjI4NCAzLjg0MzI2WlwiXG4gICAgICAgIGZpbGw9XCIjQUY1Q0Y3XCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTEwLjU1NzQgMS41NTkwMUM5LjA0MDUzIDMuMDc1OTMgOC43NDU2NyA1LjM2MDE5IDkuNjY1NzcgNy4yMDAzOUwxNS42OTQ0IDEuMTcxNzlDMTUuOTQzIDAuOTIzMTEzIDE1Ljg0MzYgMC40OTY4MTQgMTUuNTEzMiAwLjM5MDIzOUMxMy44MTUxIC0wLjE2MDQgMTEuODg5NiAwLjIyNjgyMiAxMC41NTc0IDEuNTU5MDFaXCJcbiAgICAgICAgZmlsbD1cIiNGRjhCQ0JcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNOC43NzQwOCAxLjU1OTAxQzEwLjI5MSAzLjA3NTkzIDEwLjU4NTkgNS4zNjAxOSA5LjY2NTc2IDcuMjAwMzlMMy42MzcxNiAxLjE3MTc5QzMuMzg4NDggMC45MjMxMTMgMy40ODc5NSAwLjQ5NjgxNCAzLjgxODMzIDAuMzkwMjM5QzUuNTE2NDMgLTAuMTYwNCA3LjQ0MTg5IDAuMjI2ODIyIDguNzc0MDggMS41NTkwMVpcIlxuICAgICAgICBmaWxsPVwiI0ZBN0IxN1wiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk01LjA0NzUyIDMuODQzMjZDNy4xOTMyMyAzLjg0MzI2IDkuMDE1NjYgNS4yNTAwNSA5LjY2NTc3IDcuMjAwMzhIMS4xMzk3NkMwLjc5MTYxNiA3LjIwMDM4IDAuNTU3MTUgNi44MzA5MiAwLjcxNzAxMyA2LjUxODNDMS41MjM0MyA0LjkzMDMzIDMuMTYxMTQgMy44NDMyNiA1LjA0NzUyIDMuODQzMjZaXCJcbiAgICAgICAgZmlsbD1cIiM0Mjg1RjRcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb2RleUljb24oe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICcnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgLy8gd2lkdGg9XCIxMDAlXCJcbiAgICAgIC8vIGhlaWdodD1cIjEwMCVcIlxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICBjbGFzc05hbWU9e2NuKCdkYXJrOmZpbGwtd2hpdGUnLCBjbGFzc05hbWUpfVxuICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiXG4gICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWQgbWVldFwiXG4gICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMiA0LjAwNkMyIDIuODk4IDIuODk3IDIgNC4wMDYgMmg5Ljk4OEMxNS4xMDIgMiAxNiAyLjg5NyAxNiA0LjAwNnY5Ljk4OEEyLjAwNSAyLjAwNSAwIDAgMSAxMy45OTQgMTZINC4wMDZBMi4wMDUgMi4wMDUgMCAwIDEgMiAxMy45OTRWNC4wMDZ6TTEzLjk5MiA5bC4wMDMtLjAwM0wxMC45OTcgNiA5Ljc1IDcuMjQ3IDExLjUwMyA5IDkuNzUgMTAuNzUzIDEwLjk5NyAxMmwyLjk5Ny0yLjk5N0wxMy45OTIgOXptLTkuOTkgMEw0IDguOTk3IDYuOTk3IDZsMS4yNDcgMS4yNDdMNi40OTIgOWwxLjc1MyAxLjc1M0w2Ljk5NyAxMiA0IDkuMDAzIDQuMDAzIDl6XCJcbiAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBHZW1pbmlJY29uKHtcbiAgc2l6ZSA9IDI1LFxuICBjbGFzc05hbWUgPSAnJyxcbn06IHtcbiAgc2l6ZT86IG51bWJlcjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICB2aWV3Qm94PVwiMCAwIDE4IDE4XCJcbiAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWlkWU1pZCBtZWV0XCJcbiAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cInVybCgjXzRyaWZfcGFpbnQwX3JhZGlhbF84OTdfNDIpXCJcbiAgICAgICAgZD1cIk05IDE4YzAtMS4yNDUtLjI0LTIuNDE1LS43Mi0zLjUxYTguOTM0IDguOTM0IDAgMDAtMS45MTItMi44NTdBOC45MzQgOC45MzQgMCAwMDMuNTEgOS43MiA4LjY0NiA4LjY0NiAwIDAwMCA5YTguODg2IDguODg2IDAgMDAzLjUxLS42OTcgOS4yNDcgOS4yNDcgMCAwMDIuODU3LTEuOTM2QTguOTM0IDguOTM0IDAgMDA4LjI4IDMuNTFDOC43NiAyLjQxNSA5IDEuMjQ1IDkgMGMwIDEuMjQ1LjIzMiAyLjQxNS42OTcgMy41MWE5LjI0NyA5LjI0NyAwIDAwMS45MzYgMi44NTcgOS4yNDcgOS4yNDcgMCAwMDIuODU3IDEuOTM2QTguODg2IDguODg2IDAgMDAxOCA5Yy0xLjI0NSAwLTIuNDE1LjI0LTMuNTEuNzJhOC45MzQgOC45MzQgMCAwMC0yLjg1NyAxLjkxMiA5LjI0NyA5LjI0NyAwIDAwLTEuOTM1IDIuODU4QTguODg2IDguODg2IDAgMDA5IDE4elwiXG4gICAgICAvPlxuICAgICAgPGRlZnM+XG4gICAgICAgIDxyYWRpYWxHcmFkaWVudFxuICAgICAgICAgIGlkPVwiXzRyaWZfcGFpbnQwX3JhZGlhbF84OTdfNDJcIlxuICAgICAgICAgIGN4PVwiMFwiXG4gICAgICAgICAgY3k9XCIwXCJcbiAgICAgICAgICByPVwiMVwiXG4gICAgICAgICAgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCJcbiAgICAgICAgICBncmFkaWVudFRyYW5zZm9ybT1cInJvdGF0ZSgxMzUgOSAzLjcyOCkgc2NhbGUoMjUuNDU1OCAxMi43Mjc5KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIuMzI1XCIgc3RvcENvbG9yPVwiI0ZGRERCN1wiPjwvc3RvcD5cbiAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIuNzA2XCIgc3RvcENvbG9yPVwiIzA3NkVGRlwiPjwvc3RvcD5cbiAgICAgICAgPC9yYWRpYWxHcmFkaWVudD5cbiAgICAgIDwvZGVmcz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBHb29nbGVNaW5pbWFsSWNvbih7IGNsYXNzTmFtZSA9ICcnIH06IHsgY2xhc3NOYW1lPzogc3RyaW5nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgd2lkdGg9XCI4MDBweFwiXG4gICAgICBoZWlnaHQ9XCI4MDBweFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIlxuICAgICAgY2xhc3NOYW1lPXtjbignaC00IHctNCcsIGNsYXNzTmFtZSl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJNNDczLjE2LDIyMS40OGwtMi4yNi05LjU5SDI2Mi40NnY4OC4yMkgzODdjLTEyLjkzLDYxLjQtNzIuOTMsOTMuNzItMTIxLjk0LDkzLjcyLTM1LjY2LDAtNzMuMjUtMTUtOTguMTMtMzkuMTFhMTQwLjA4LDE0MC4wOCwwLDAsMS00MS44LTk4Ljg4YzAtMzcuMTYsMTYuNy03NC4zMyw0MS05OC43OHM2MS0zOC4xMyw5Ny40OS0zOC4xM2M0MS43OSwwLDcxLjc0LDIyLjE5LDgyLjk0LDMyLjMxbDYyLjY5LTYyLjM2QzM5MC44Niw3Mi43MiwzNDAuMzQsMzIsMjYxLjYsMzJoMGMtNjAuNzUsMC0xMTksMjMuMjctMTYxLjU4LDY1LjcxQzU4LDEzOS41LDM2LjI1LDE5OS45MywzNi4yNSwyNTZTNTYuODMsMzY5LjQ4LDk3LjU1LDQxMS42QzE0MS4wNiw0NTYuNTIsMjAyLjY4LDQ4MCwyNjYuMTMsNDgwYzU3LjczLDAsMTEyLjQ1LTIyLjYyLDE1MS40NS02My42NiwzOC4zNC00MC40LDU4LjE3LTk2LjMsNTguMTctMTU0LjlDNDc1Ljc1LDIzNi43Nyw0NzMuMjcsMjIyLjEyLDQ3My4xNiwyMjEuNDhaXCIgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFudGhyb3BpY01pbmltYWxJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2VXaWR0aD1cIjFcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBjbGFzc05hbWU9XCJoLTQgdy00XCJcbiAgICAgIGhlaWdodD1cIjFlbVwiXG4gICAgICB3aWR0aD1cIjFlbVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGggZD1cIm0xNy4zMDQgMy41NDcyaC0zLjY3MThsNi42OTU5IDE2LjkwNmgzLjY3MTh6bS0xMC42MDggMC02LjY5NTkgMTYuOTA2aDMuNzQ0MmwxLjM2OTMtMy41NTAyaDcuMDA1MmwxLjM2OTMgMy41NTAyaDMuNzQ0MmwtNi42OTU5LTE2LjkwNnptLTAuMzcxMTQgMTAuMjE2IDIuMjkxNC01Ljk0MTMgMi4yOTE0IDUuOTQxM3pcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5cbnR5cGUgTGlzdGVuaW5nSWNvblByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMaXN0ZW5pbmdJY29uKHsgY2xhc3NOYW1lIH06IExpc3RlbmluZ0ljb25Qcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lKX1cbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJNMTIgMmEzIDMgMCAwIDAtMyAzdjdhMyAzIDAgMCAwIDYgMFY1YTMgMyAwIDAgMC0zLTNaXCIgLz5cbiAgICAgIDxwYXRoIGQ9XCJNMTkgMTB2MmE3IDcgMCAwIDEtMTQgMHYtMlwiIC8+XG4gICAgICA8bGluZSB4MT1cIjEyXCIgeDI9XCIxMlwiIHkxPVwiMTlcIiB5Mj1cIjIyXCIgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFZvbHVtZUljb24oeyBjbGFzc05hbWUgPSAnJywgc2l6ZSA9ICcxZW0nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBjbGFzc05hbWU9e2NuKGNsYXNzTmFtZSl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTEgNC45MDk5QzExIDQuNDc0ODUgMTAuNDgyOCA0LjI0NzM0IDEwLjE2MjEgNC41NDEzMkw2LjY3NTcyIDcuNzM3MkM2LjQ5MTI5IDcuOTA2MjYgNi4yNTAxOSA4LjAwMDA1IDYgOC4wMDAwNUg0QzMuNDQ3NzIgOC4wMDAwNSAzIDguNDQ3NzYgMyA5LjAwMDA1VjE1QzMgMTUuNTUyMyAzLjQ0NzcyIDE2IDQgMTZINkM2LjI1MDE5IDE2IDYuNDkxMjkgMTYuMDkzOCA2LjY3NTcyIDE2LjI2MjlMMTAuMTYyMSAxOS40NTg4QzEwLjQ4MjggMTkuNzUyNyAxMSAxOS41MjUyIDExIDE5LjA5MDJWNC45MDk5Wk04LjgxMDY5IDMuMDY3MDFDMTAuNDE0MiAxLjU5NzE0IDEzIDIuNzM0NjMgMTMgNC45MDk5VjE5LjA5MDJDMTMgMjEuMjY1NSAxMC40MTQyIDIyLjQwMyA4LjgxMDY5IDIwLjkzMzFMNS42MTEwMiAxOEg0QzIuMzQzMTUgMTggMSAxNi42NTY5IDEgMTVWOS4wMDAwNUMxIDcuMzQzMTkgMi4zNDMxNSA2LjAwMDA1IDQgNi4wMDAwNUg1LjYxMTAyTDguODEwNjkgMy4wNjcwMVpNMjAuMzE2NiA2LjM1NjY1QzIwLjgwMTkgNi4wOTMxMyAyMS40MDkgNi4yNzI5NiAyMS42NzI1IDYuNzU4MzNDMjIuNTE5MSA4LjMxNzYgMjIuOTk5NiAxMC4xMDQyIDIyLjk5OTYgMTIuMDAwMUMyMi45OTk2IDEzLjg1MDcgMjIuNTQxOCAxNS41OTc0IDIxLjczMjMgMTcuMTMwMkMyMS40NzQ0IDE3LjYxODUgMjAuODY5NSAxNy44MDU0IDIwLjM4MTEgMTcuNTQ3NUMxOS44OTI3IDE3LjI4OTYgMTkuNzA1OSAxNi42ODQ2IDE5Ljk2MzggMTYuMTk2MkMyMC42MjQ5IDE0Ljk0NDQgMjAuOTk5NiAxMy41MTc1IDIwLjk5OTYgMTIuMDAwMUMyMC45OTk2IDEwLjQ0NTggMjAuNjA2NCA4Ljk4NjI3IDE5LjkxNDkgNy43MTI2MkMxOS42NTE0IDcuMjI3MjYgMTkuODMxMiA2LjYyMDE3IDIwLjMxNjYgNi4zNTY2NVpNMTUuNzk5NCA3LjkwMDQ5QzE2LjI0MSA3LjU2ODggMTYuODY3OSA3LjY1Nzg5IDE3LjE5OTUgOC4wOTk0N0MxOC4wMTU2IDkuMTg1OTMgMTguNDk5NiAxMC41Mzc5IDE4LjQ5OTYgMTIuMDAwMUMxOC40OTk2IDEzLjMxMjcgMTguMTA5NCAxNC41MzcyIDE3LjQzODUgMTUuNTYwNEMxNy4xMzU3IDE2LjAyMjIgMTYuNTE1OCAxNi4xNTExIDE2LjA1MzkgMTUuODQ4M0MxNS41OTIxIDE1LjU0NTUgMTUuNDYzMiAxNC45MjU1IDE1Ljc2NiAxNC40NjM3QzE2LjIyOTggMTMuNzU2NCAxNi40OTk2IDEyLjkxMTMgMTYuNDk5NiAxMi4wMDAxQzE2LjQ5OTYgMTAuOTg1OSAxNi4xNjUzIDEwLjA1MjYgMTUuNjAwNCA5LjMwMDYzQzE1LjI2ODcgOC44NTkwNSAxNS4zNTc4IDguMjMyMTggMTUuNzk5NCA3LjkwMDQ5WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFZvbHVtZU11dGVJY29uKHsgY2xhc3NOYW1lID0gJycsIHNpemUgPSAnMWVtJyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGhlaWdodD17c2l6ZX1cbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgY2xhc3NOYW1lPXtjbihjbGFzc05hbWUpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTIgMTJDMiA2LjQ3NzE1IDYuNDc3MTUgMiAxMiAyQzE3LjUyMjggMiAyMiA2LjQ3NzE1IDIyIDEyQzIyIDE3LjUyMjggMTcuNTIyOCAyMiAxMiAyMkM2LjQ3NzE1IDIyIDIgMTcuNTIyOCAyIDEyWk05LjUgOC41QzguOTQ3NzIgOC41IDguNSA4Ljk0NzcyIDguNSA5LjVWMTQuNUM4LjUgMTUuMDUyMyA4Ljk0NzcyIDE1LjUgOS41IDE1LjVIMTQuNUMxNS4wNTIzIDE1LjUgMTUuNSAxNS4wNTIzIDE1LjUgMTQuNVY5LjVDMTUuNSA4Ljk0NzcyIDE1LjA1MjMgOC41IDE0LjUgOC41SDkuNVpcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTZW5kTWVzc2FnZUljb24oKSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIGNsYXNzTmFtZT1cImljb24tc20gbS0xIG1kOm0tMFwiXG4gICAgICBzdHlsZT17eyB3aWR0aDogJzFlbScsIGhlaWdodDogJzFlbScsIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnIH19XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNLjUgMS4xNjNBMSAxIDAgMCAxIDEuOTcuMjhsMTIuODY4IDYuODM3YTEgMSAwIDAgMSAwIDEuNzY2TDEuOTY5IDE1LjcyQTEgMSAwIDAgMSAuNSAxNC44MzZWMTAuMzNhMSAxIDAgMCAxIC44MTYtLjk4M0w4LjUgOCAxLjMxNiA2LjY1M0ExIDEgMCAwIDEgLjUgNS42N1YxLjE2M1pcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBVc2VySWNvbigpIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHdpZHRoPVwiMThcIlxuICAgICAgaGVpZ2h0PVwiMThcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGggZD1cIk0xOSAyMXYtMmE0IDQgMCAwIDAtNC00SDlhNCA0IDAgMCAwLTQgNHYyXCIgLz5cbiAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiN1wiIHI9XCI0XCIgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIExvY2tJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgY2xhc3NOYW1lPVwibHVjaWRlIGx1Y2lkZS1sb2NrXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjExXCIgeD1cIjNcIiB5PVwiMTFcIiByeD1cIjJcIiByeT1cIjJcIiAvPlxuICAgICAgPHBhdGggZD1cIk03IDExVjdhNSA1IDAgMCAxIDEwIDB2NFwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTmV3Q2hhdEljb24oeyBjbGFzc05hbWUgPSAnJyB9OiB7IGNsYXNzTmFtZT86IHN0cmluZyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbigndGV4dC1ibGFjayBkYXJrOnRleHQtd2hpdGUnLCBjbGFzc05hbWUpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTE2Ljc5MjkgMi43OTI4OUMxOC4wMTE4IDEuNTczOTQgMTkuOTg4MiAxLjU3Mzk0IDIxLjIwNzEgMi43OTI4OUMyMi40MjYxIDQuMDExODQgMjIuNDI2MSA1Ljk4ODE1IDIxLjIwNzEgNy4yMDcxMUwxMi43MDcxIDE1LjcwNzFDMTIuNTE5NiAxNS44OTQ2IDEyLjI2NTIgMTYgMTIgMTZIOUM4LjQ0NzcyIDE2IDggMTUuNTUyMyA4IDE1VjEyQzggMTEuNzM0OCA4LjEwNTM2IDExLjQ4MDQgOC4yOTI4OSAxMS4yOTI5TDE2Ljc5MjkgMi43OTI4OVpNMTkuNzkyOSA0LjIwNzExQzE5LjM1NSAzLjc2OTIgMTguNjQ1IDMuNzY5MiAxOC4yMDcxIDQuMjA3MUwxMCAxMi40MTQyVjE0SDExLjU4NThMMTkuNzkyOSA1Ljc5Mjg5QzIwLjIzMDggNS4zNTQ5OSAyMC4yMzA4IDQuNjQ1MDEgMTkuNzkyOSA0LjIwNzExWk02IDVDNS40NDc3MiA1IDUgNS40NDc3MSA1IDZWMThDNSAxOC41NTIzIDUuNDQ3NzIgMTkgNiAxOUgxOEMxOC41NTIzIDE5IDE5IDE4LjU1MjMgMTkgMThWMTRDMTkgMTMuNDQ3NyAxOS40NDc3IDEzIDIwIDEzQzIwLjU1MjMgMTMgMjEgMTMuNDQ3NyAyMSAxNFYxOEMyMSAxOS42NTY5IDE5LjY1NjkgMjEgMTggMjFINkM0LjM0MzE1IDIxIDMgMTkuNjU2OSAzIDE4VjZDMyA0LjM0MzE0IDQuMzQzMTUgMyA2IDNIMTBDMTAuNTUyMyAzIDExIDMuNDQ3NzEgMTEgNEMxMSA0LjU1MjI4IDEwLjU1MjMgNSAxMCA1SDZaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRXhwZXJpbWVudEljb24oKSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPVwiaWNvbi1zbVwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNOSAzSDE1TTkgM1Y5LjI3NTlDOSA5Ljc0Mzc3IDguODM1OTcgMTAuMTk2OCA4LjUzNjQ0IDEwLjU1NjNMNC44NTA4NSAxNC45NzlDNC4zMDEwOCAxNS42Mzg3IDQgMTYuNDcwMyA0IDE3LjMyOTFWMTcuMzI5MUM0IDE5LjM1NjUgNS42NDM1MyAyMSA3LjY3MDk0IDIxSDE2LjMyOTFDMTguMzU2NSAyMSAyMCAxOS4zNTY1IDIwIDE3LjMyOTFWMTcuMzI5MUMyMCAxNi40NzAzIDE5LjY5ODkgMTUuNjM4NyAxOS4xNDkyIDE0Ljk3OUwxNS40NjM2IDEwLjU1NjNDMTUuMTY0IDEwLjE5NjggMTUgOS43NDM3NyAxNSA5LjI3NTlWM005IDNIOE0xNSAzSDE2XCJcbiAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICA+PC9wYXRoPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk01IDE0Ljc3NEMxMS41IDEyLjgzOSAxMi4xNSAxNi43MDg5IDE4IDE0XCJcbiAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEdvb2dsZSh7XG4gIHNpemUgPSAyNSxcbiAgY2xhc3NOYW1lID0gJycsXG59OiB7XG4gIHNpemU/OiBudW1iZXI7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn0pIHtcbiAgY29uc3QgdW5pdCA9ICc0MSc7XG4gIGNvbnN0IGhlaWdodCA9IHNpemU7XG4gIGNvbnN0IHdpZHRoID0gc2l6ZTtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgd2lkdGg9XCIyNHB4XCJcbiAgICAgIGhlaWdodD1cIjI0cHhcIlxuICAgICAgdmlld0JveD1cIjAgMCA1MTIgNTEyXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMS41XCJcbiAgICAgIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lLCAnJyl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJNNDczLjE2LDIyMS40OGwtMi4yNi05LjU5SDI2Mi40NnY4OC4yMkgzODdjLTEyLjkzLDYxLjQtNzIuOTMsOTMuNzItMTIxLjk0LDkzLjcyLTM1LjY2LDAtNzMuMjUtMTUtOTguMTMtMzkuMTFhMTQwLjA4LDE0MC4wOCwwLDAsMS00MS44LTk4Ljg4YzAtMzcuMTYsMTYuNy03NC4zMyw0MS05OC43OHM2MS0zOC4xMyw5Ny40OS0zOC4xM2M0MS43OSwwLDcxLjc0LDIyLjE5LDgyLjk0LDMyLjMxbDYyLjY5LTYyLjM2QzM5MC44Niw3Mi43MiwzNDAuMzQsMzIsMjYxLjYsMzJoMGMtNjAuNzUsMC0xMTksMjMuMjctMTYxLjU4LDY1LjcxQzU4LDEzOS41LDM2LjI1LDE5OS45MywzNi4yNSwyNTZTNTYuODMsMzY5LjQ4LDk3LjU1LDQxMS42QzE0MS4wNiw0NTYuNTIsMjAyLjY4LDQ4MCwyNjYuMTMsNDgwYzU3LjczLDAsMTEyLjQ1LTIyLjYyLDE1MS40NS02My42NiwzOC4zNC00MC40LDU4LjE3LTk2LjMsNTguMTctMTU0LjlDNDc1Ljc1LDIzNi43Nyw0NzMuMjcsMjIyLjEyLDQ3My4xNiwyMjEuNDhaXCI+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscy8nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBCaXJ0aGRheUljb24oeyBjbGFzc05hbWUgPSAnJyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgdmVyc2lvbj1cIjEuMVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDIzMy4zMyAyOTBcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB4bWxuc1hsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiXG4gICAgICBjbGFzc05hbWU9e2NuKCdoLTkgdy05JywgY2xhc3NOYW1lKX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPGRlZnM+XG4gICAgICAgIDxsaW5lYXJHcmFkaWVudFxuICAgICAgICAgIGlkPVwibGluZWFyR3JhZGllbnQxODQyXCJcbiAgICAgICAgICB4MT1cIjE2My45MlwiXG4gICAgICAgICAgeDI9XCIxNzMuNjZcIlxuICAgICAgICAgIHkxPVwiMjIuMjEyXCJcbiAgICAgICAgICB5Mj1cIi02LjU3ODRcIlxuICAgICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKC4xMDM5MSAuMDUwMTQzKVwiXG4gICAgICAgICAgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzdG9wIHN0b3BDb2xvcj1cIiM2NDBhNjJcIiBvZmZzZXQ9XCIwXCIgLz5cbiAgICAgICAgICA8c3RvcCBzdG9wQ29sb3I9XCIjODUyMjgzXCIgb2Zmc2V0PVwiLjQ5OTE3XCIgLz5cbiAgICAgICAgICA8c3RvcCBzdG9wQ29sb3I9XCIjNjQwYTYyXCIgb2Zmc2V0PVwiMVwiIC8+XG4gICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XG4gICAgICA8L2RlZnM+XG4gICAgICA8Zz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICB0cmFuc2Zvcm09XCJtYXRyaXgoLjQzNDE2IC45MDA4NCAtLjg5OTY2IC40MzY2IDAgMClcIlxuICAgICAgICAgIGQ9XCJtMjU5LjI5LTEyNi4wM2EyMzIuMiAyMzcuNTYgMCAwIDEtMTcuNDEyIDIzMS4zNGwtMTkzLjMyLTEzMS41OXpcIlxuICAgICAgICAgIGZpbGw9XCJ1cmwoI2xpbmVhckdyYWRpZW50MTg0MilcIlxuICAgICAgICAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIHRyYW5zZm9ybT1cIm1hdHJpeCguNjk2NyAuMDUxOTI2IC0uMDUxOTI2IC42OTY3IDM1LjU3OCAyMy4xOTYpXCJcbiAgICAgICAgICBkPVwibTUwLjgxOCAzMS40MTVjLTEuNDY1NCAyLjQ3NDktMTAuODM4IDIuNDE5NS0xMi45OTcgNC4zMjA0LTIuMTU4NCAxLjkwMDktMy4yODggMTEuMjA2LTUuOTI4MiAxMi4zNDctMi42NDAyIDEuMTQwOS0xMC4xOTEtNC40MTMyLTEzLjA1NC00LjE0NDEtMi44NjM2IDAuMjY5MTctOS4yNDY2IDcuMTMzLTEyLjA1MyA2LjUwNDEtMi44MDY2LTAuNjI4ODktNS42NTAzLTkuNTYwMi04LjEyNTItMTEuMDI2LTIuNDc0OS0xLjQ2NTQtMTEuNjczIDAuMzM1NzItMTMuNTc0LTEuODIyN3MxLjA0ODItMTEuMDU2LTAuMDkyNy0xMy42OTZjLTEuMTQwOS0yLjY0MDItOS42NDEyLTYuNTg5OC05LjkxMDQtOS40NTMzLTAuMjY5MTctMi44NjM2IDcuMzQ2My04LjMyOCA3Ljk3NTItMTEuMTM1IDAuNjI4ODktMi44MDY2LTMuOTI2NS0xMC45OTgtMi40NjEyLTEzLjQ3MyAxLjQ2NTQtMi40NzQ5IDEwLjgzOC0yLjQxOTUgMTIuOTk3LTQuMzIwNCAyLjE1ODQtMS45MDA5IDMuMjg4LTExLjIwNiA1LjkyODItMTIuMzQ3IDIuNjQwMi0xLjE0MDkgMTAuMTkxIDQuNDEzMiAxMy4wNTQgNC4xNDQxIDIuODYzNi0wLjI2OTE3IDkuMjQ2Ni03LjEzMyAxMi4wNTMtNi41MDQxIDIuODA2NiAwLjYyODg5IDUuNjUwMyA5LjU2MDIgOC4xMjUyIDExLjAyNnMxMS42NzMtMC4zMzU3MiAxMy41NzQgMS44MjI3YzEuOTAwOSAyLjE1ODQtMS4wNDgyIDExLjA1NiAwLjA5MjcgMTMuNjk2IDEuMTQwOSAyLjY0MDIgOS42NDEyIDYuNTg5OCA5LjkxMDQgOS40NTMzIDAuMjY5MTcgMi44NjM1LTcuMzQ2MyA4LjMyOC03Ljk3NTIgMTEuMTM1LTAuNjI4ODkgMi44MDY2IDMuOTI2NSAxMC45OTggMi40NjEyIDEzLjQ3M3pcIlxuICAgICAgICAgIGZpbGw9XCIjZmY5ZDc4XCJcbiAgICAgICAgICBzdHJva2U9XCIjZjI5NDcyXCJcbiAgICAgICAgICBzdHJva2VXaWR0aD1cIjQuNzg3N1wiXG4gICAgICAgIC8+XG4gICAgICAgIDxjaXJjbGUgY3g9XCIxNzAuMzZcIiBjeT1cIjIxNS43NlwiIHI9XCIxMi45MDNcIiBmaWxsPVwiI2NmZmZmZlwiIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZD1cIm0yMjAuNzcgMTc0Ljc3Yy04OC41MjYgMTAxLjAzLTE5MS4yMSA4NS43MzEtMjA5LjUgODIuMTQyLTIuMjEwMS0yZS01IC0yLjY2ODYgMC40MjQyNi0zLjQzNyAyLjAwMjFsLTEuNzA0MiA3LjUwMjhjMC4wNTYxOTcgMi4zNjAzIDAuMzc1NDQgMi42NDI4IDEuOTEyMSAzLjU0MDkgMTguMzk2IDMuMzc0NiAxMzAuMjcgMTkuNDg4IDIyMy40Ni04Ni44ODEgMC42NDAxMS0xLjUwOTUgMC40NjY1My0zLjEzMjQtMC41OTEzNy00LjczMzdsLTUuMTU1OC0zLjY0ODJjLTEuNTg2LTAuODc0My0zLjk1MjQtMC45NDMzMi00Ljk4MzcgMC4wNzUxelwiXG4gICAgICAgICAgY29sb3I9XCIjMDAwMDAwXCJcbiAgICAgICAgICBmaWxsPVwiI2ZmOWQ3OFwiXG4gICAgICAgICAgc3Ryb2tlPVwiI2YyOTQ3MlwiXG4gICAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlV2lkdGg9XCIyLjg5MTNcIlxuICAgICAgICAvPlxuICAgICAgICA8ZyBmaWxsPVwiI2NmZmZmZlwiPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI3Mi42ODRcIiBjeT1cIjk5LjQ3XCIgcj1cIjEyLjkwM1wiIC8+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjk5LjE0NFwiIGN5PVwiMTcyLjMyXCIgcj1cIjEyLjkwM1wiIC8+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjU5LjYxN1wiIGN5PVwiMjE0Ljc4XCIgcj1cIjEyLjkwM1wiIC8+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjEzNS40XCIgY3k9XCIxMTguNDJcIiByPVwiMTIuOTAzXCIgLz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgdHJhbnNmb3JtPVwicm90YXRlKDM4LjY2KVwiXG4gICAgICAgICAgICBkPVwibTI1NC4yMS0xLjk2MDhhMTIuOTAzIDEyLjkwMyAwIDAgMS02LjQ4NTIgMTEuMTk0IDEyLjkwMyAxMi45MDMgMCAwIDEtMTIuOTM3LTAuMDU4MiAxMi45MDMgMTIuOTAzIDAgMCAxLTYuMzg0My0xMS4yNTJsMTIuOTAzIDAuMTE2MXpcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHBhdGggZD1cIm0yOS40NzYgMTU4LjE2YTEyLjkwMyAxMi45MDMgMCAwIDAtMy42NTYyIDAuNTI5M2wtMy4zNjkxIDIzLjE4OWExMi45MDMgMTIuOTAzIDAgMCAwIDcuMDI1NCAyLjA4NzkgMTIuOTAzIDEyLjkwMyAwIDAgMCAxMi45MDQtMTIuOTA0IDEyLjkwMyAxMi45MDMgMCAwIDAtMTIuOTA0LTEyLjkwMnpcIiAvPlxuICAgICAgICA8L2c+XG4gICAgICA8L2c+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBBc3Npc3RhbnRJY29uKHtcbiAgY2xhc3NOYW1lID0gJycsXG4gIHNpemUgPSAnMWVtJyxcbn06IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBzaXplPzogc3RyaW5nIHwgbnVtYmVyO1xufSkge1xuICBjb25zdCB1bml0ID0gMjQ7XG4gIGNvbnN0IGhlaWdodCA9IHNpemU7XG4gIGNvbnN0IHdpZHRoID0gc2l6ZTtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB3aWR0aD17d2lkdGh9XG4gICAgICBoZWlnaHQ9e2hlaWdodH1cbiAgICAgIHZpZXdCb3g9e2AwIDAgJHt1bml0fSAke3VuaXR9YH1cbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgY2xhc3NOYW1lPXtjbigndGV4dC10b2tlbi1zZWNvbmRhcnkgaC0yLzMgdy0yLzMnLCBjbGFzc05hbWUpfVxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJNMjEgMTZWOGEyIDIgMCAwIDAtMS0xLjczbC03LTRhMiAyIDAgMCAwLTIgMGwtNyA0QTIgMiAwIDAgMCAzIDh2OGEyIDIgMCAwIDAgMSAxLjczbDcgNGEyIDIgMCAwIDAgMiAwbDctNEEyIDIgMCAwIDAgMjEgMTZ6XCIgLz5cbiAgICAgIDxwb2x5bGluZSBwb2ludHM9XCIzLjI3IDYuOTYgMTIgMTIuMDEgMjAuNzMgNi45NlwiIC8+XG4gICAgICA8bGluZSB4MT1cIjEyXCIgeTE9XCIyMi4wOFwiIHgyPVwiMTJcIiB5Mj1cIjEyXCIgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNwYXJrbGVzKHsgY2xhc3NOYW1lID0gJycsIHNpemUgPSAyNCB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbignaWNvbi1tZCBzaHJpbmstMCcsIGNsYXNzTmFtZSl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTkuMzk3NSAxLjM1NDk4QzE5LjM3NDYgMS4xNTI5MyAxOS4yMDM3IDEuMDAwMjEgMTkuMDAwNCAxQzE4Ljc5NzEgMC45OTk3OTMgMTguNjI1OSAxLjE1MjE3IDE4LjYwMjYgMS4zNTQxN0MxOC40Nzk4IDIuNDE4OTQgMTguMTYyNyAzLjE1NjkyIDE3LjY1OTggMy42NTk4M0MxNy4xNTY5IDQuMTYyNzQgMTYuNDE4OSA0LjQ3OTgzIDE1LjM1NDIgNC42MDI2NEMxNS4xNTIyIDQuNjI1OTMgMTQuOTk5OCA0Ljc5NzA3IDE1IDUuMDAwNDFDMTUuMDAwMiA1LjIwMzc1IDE1LjE1MjkgNS4zNzQ1NyAxNS4zNTUgNS4zOTc0NkMxNi40MDE5IDUuNTE2MDUgMTcuMTU2MiA1LjgzMzA0IDE3LjY3MTYgNi4zMzkwNkMxOC4xODQ1IDYuODQyNjkgMTguNTA3OCA3LjU3OTk4IDE4LjYwMTYgOC42MzUzOUMxOC42MTk5IDguODQxOTUgMTguNzkzMSA5LjAwMDIzIDE5LjAwMDUgOUMxOS4yMDc4IDguOTk5NzcgMTkuMzgwNiA4Ljg0MTA5IDE5LjM5ODUgOC42MzQ1QzE5LjQ4ODMgNy41OTY3MyAxOS44MTE0IDYuODQzMjggMjAuMzI3MyA2LjMyNzM1QzIwLjg0MzMgNS44MTE0MiAyMS41OTY3IDUuNDg4MzQgMjIuNjM0NSA1LjM5ODUxQzIyLjg0MTEgNS4zODA2MyAyMi45OTk4IDUuMjA3ODIgMjMgNS4wMDA0NUMyMy4wMDAyIDQuNzkzMDggMjIuODQyIDQuNjE5OTIgMjIuNjM1NCA0LjYwMTU3QzIxLjU4IDQuNTA3ODIgMjAuODQyNyA0LjE4NDQ3IDIwLjMzOTEgMy42NzE1N0MxOS44MzMgMy4xNTYyMyAxOS41MTYgMi40MDE5MiAxOS4zOTc1IDEuMzU0OThaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgY2xpcFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgZD1cIk0xMSAzQzExLjQ4MzMgMyAxMS44OTc0IDMuMzQ1NjIgMTEuOTgzOSAzLjgyMTExQzEyLjQ2MzcgNi40NjA0MyAxMy4yNzkgOC4yMzk4MyAxNC41MTk2IDkuNDgwMzlDMTUuNzYwMiAxMC43MjEgMTcuNTM5NiAxMS41MzYzIDIwLjE3ODkgMTIuMDE2MUMyMC42NTQ0IDEyLjEwMjYgMjEgMTIuNTE2NyAyMSAxM0MyMSAxMy40ODMzIDIwLjY1NDQgMTMuODk3NCAyMC4xNzg5IDEzLjk4MzlDMTcuNTM5NiAxNC40NjM3IDE1Ljc2MDIgMTUuMjc5IDE0LjUxOTYgMTYuNTE5NkMxMy4yNzkgMTcuNzYwMiAxMi40NjM3IDE5LjUzOTYgMTEuOTgzOSAyMi4xNzg5QzExLjg5NzQgMjIuNjU0NCAxMS40ODMzIDIzIDExIDIzQzEwLjUxNjcgMjMgMTAuMTAyNiAyMi42NTQ0IDEwLjAxNjEgMjIuMTc4OUM5LjUzNjI1IDE5LjUzOTYgOC43MjA5NiAxNy43NjAyIDcuNDgwMzkgMTYuNTE5NkM2LjIzOTgzIDE1LjI3OSA0LjQ2MDQzIDE0LjQ2MzcgMS44MjExMSAxMy45ODM5QzEuMzQ1NjIgMTMuODk3NCAxIDEzLjQ4MzMgMSAxM0MxIDEyLjUxNjcgMS4zNDU2MiAxMi4xMDI2IDEuODIxMTEgMTIuMDE2MUM0LjQ2MDQzIDExLjUzNjMgNi4yMzk4MyAxMC43MjEgNy40ODAzOSA5LjQ4MDM5QzguNzIwOTYgOC4yMzk4MyA5LjUzNjI1IDYuNDYwNDMgMTAuMDE2MSAzLjgyMTExQzEwLjEwMjYgMy4zNDU2MiAxMC41MTY3IDMgMTEgM1pNNS42NjYxOCAxM0M2LjkyNDcgMTMuNTIyNiA3Ljk5Nzg4IDE0LjIwODcgOC44OTQ2MSAxNS4xMDU0QzkuNzkxMzQgMTYuMDAyMSAxMC40Nzc0IDE3LjA3NTMgMTEgMTguMzMzOEMxMS41MjI2IDE3LjA3NTMgMTIuMjA4NyAxNi4wMDIxIDEzLjEwNTQgMTUuMTA1NEMxNC4wMDIxIDE0LjIwODcgMTUuMDc1MyAxMy41MjI2IDE2LjMzMzggMTNDMTUuMDc1MyAxMi40Nzc0IDE0LjAwMjEgMTEuNzkxMyAxMy4xMDU0IDEwLjg5NDZDMTIuMjA4NyA5Ljk5Nzg4IDExLjUyMjYgOC45MjQ3IDExIDcuNjY2MThDMTAuNDc3NCA4LjkyNDcgOS43OTEzNCA5Ljk5Nzg4IDguODk0NjEgMTAuODk0NkM3Ljk5Nzg4IDExLjc5MTMgNi45MjQ3IDEyLjQ3NzQgNS42NjYxOCAxM1pcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMvJztcblxudHlwZSBTcGVlY2hJY29uUHJvcHMgPSB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNwZWVjaEljb24oeyBjbGFzc05hbWUgfTogU3BlZWNoSWNvblByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB3aWR0aD1cIjI0XCJcbiAgICAgIGhlaWdodD1cIjI0XCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBjbGFzc05hbWU9e2NuKGNsYXNzTmFtZSl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJNMiAxMHYzXCIgLz5cbiAgICAgIDxwYXRoIGQ9XCJNNiA2djExXCIgLz5cbiAgICAgIDxwYXRoIGQ9XCJNMTAgM3YxOFwiIC8+XG4gICAgICA8cGF0aCBkPVwiTTE0IDh2N1wiIC8+XG4gICAgICA8cGF0aCBkPVwiTTE4IDV2MTNcIiAvPlxuICAgICAgPHBhdGggZD1cIk0yMiAxMHYzXCIgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsInR5cGUgU2F2ZUljb25Qcm9wcyA9IHtcbiAgc2l6ZT86IHN0cmluZyB8IG51bWJlcjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2F2ZUljb24oeyBzaXplID0gJzFlbScsIGNsYXNzTmFtZSB9OiBTYXZlSWNvblByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgdmlld0JveD1cIjY0IDY0IDg5NiA4OTZcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyLjVcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICB3aWR0aD17c2l6ZX1cbiAgICAgIGhlaWdodD17c2l6ZX1cbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJNODkzLjMgMjkzLjNMNzMwLjcgMTMwLjdjLTcuNS03LjUtMTYuNy0xMy0yNi43LTE2VjExMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjczNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzM4LjVjMC0xNy02LjctMzMuMi0xOC43LTQ1LjJ6TTM4NCAxODRoMjU2djEwNEgzODRWMTg0em00NTYgNjU2SDE4NFYxODRoMTM2djEzNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzMjBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjA1LjhsMTM2IDEzNlY4NDB6TTUxMiA0NDJjLTc5LjUgMC0xNDQgNjQuNS0xNDQgMTQ0czY0LjUgMTQ0IDE0NCAxNDQgMTQ0LTY0LjUgMTQ0LTE0NC02NC41LTE0NC0xNDQtMTQ0em0wIDIyNGMtNDQuMiAwLTgwLTM1LjgtODAtODBzMzUuOC04MCA4MC04MCA4MCAzNS44IDgwIDgwLTM1LjggODAtODAgODB6XCI+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENpcmNsZUhlbHBJY29uKHsgY2xhc3NOYW1lID0gJ2ljb24tbWQtaGVhdnknLCBzaXplID0gJzFlbScgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgY2xhc3NOYW1lPXtjbihjbGFzc05hbWUpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjEwXCIgLz5cbiAgICAgIDxwYXRoIGQ9XCJNOS4wOSA5YTMgMyAwIDAgMSA1LjgzIDFjMCAyLTMgMy0zIDNcIiAvPlxuICAgICAgPHBhdGggZD1cIk0xMiAxN2guMDFcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQmVkcm9ja0ljb24oe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICcnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbignZmlsbC1jdXJyZW50IHRleHQtYmxhY2snLCBjbGFzc05hbWUpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8ZyBmaWxsPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgIDxwYXRoIGQ9XCJNMTIsMTguMTM5NzAxNCBMOS41NzQsMTguOTQ4NzAxNCBMOC42MjgsMTguMzE3NzAxNCBMOS42NTgsMTcuOTczNzAxNCBMOS4zNDIsMTcuMDI1NzAxNCBMNy41NzQsMTcuNjE0NzAxNCBMNywxNy4yMzI3MDE0IEw3LDE0LjQ5OTcwMTQgQzcsMTQuMzEwNzAxNCA2Ljg5MywxNC4xMzc3MDE0IDYuNzI0LDE0LjA1MjcwMTQgTDUsMTMuMTkwNzAxNCBMNSwxMC44MDg3MDE0IEw2LjUsMTAuMDU4NzAxNCBMOCwxMC44MDg3MDE0IEw4LDEyLjQ5OTcwMTQgQzgsMTIuNjg5NzAxNCA4LjEwNywxMi44NjI3MDE0IDguMjc2LDEyLjk0NzcwMTQgTDEwLjI3NiwxMy45NDc3MDE0IEwxMC43MjQsMTMuMDUyNzAxNCBMOSwxMi4xOTA3MDE0IEw5LDEwLjgwODcwMTQgTDEwLjcyNCw5Ljk0NzcwMTM2IEMxMC44OTMsOS44NjI3MDEzNiAxMSw5LjY4OTcwMTM2IDExLDkuNDk5NzAxMzYgTDExLDcuOTk5NzAxMzYgTDEwLDcuOTk5NzAxMzYgTDEwLDkuMTkwNzAxMzYgTDguNSw5Ljk0MDcwMTM2IEw3LDkuMTkwNzAxMzYgTDcsNi43Njc3MDEzNiBMOCw2LjEwMDcwMTM2IEw4LDcuOTk5NzAxMzYgTDksNy45OTk3MDEzNiBMOSw1LjQzNDcwMTM2IEw5LjU3NCw1LjA1MTcwMTM2IEwxMiw1Ljg2MDcwMTM2IEwxMiwxOC4xMzk3MDE0IFogTTE3LjUsMTYuOTk5NzAxNCBDMTcuNzc1LDE2Ljk5OTcwMTQgMTgsMTcuMjIzNzAxNCAxOCwxNy40OTk3MDE0IEMxOCwxNy43NzU3MDE0IDE3Ljc3NSwxNy45OTk3MDE0IDE3LjUsMTcuOTk5NzAxNCBDMTcuMjI1LDE3Ljk5OTcwMTQgMTcsMTcuNzc1NzAxNCAxNywxNy40OTk3MDE0IEMxNywxNy4yMjM3MDE0IDE3LjIyNSwxNi45OTk3MDE0IDE3LjUsMTYuOTk5NzAxNCBMMTcuNSwxNi45OTk3MDE0IFogTTE2LjUsNS45OTk3MDEzNiBDMTYuNzc1LDUuOTk5NzAxMzYgMTcsNi4yMjM3MDEzNiAxNyw2LjQ5OTcwMTM2IEMxNyw2Ljc3NTcwMTM2IDE2Ljc3NSw2Ljk5OTcwMTM2IDE2LjUsNi45OTk3MDEzNiBDMTYuMjI1LDYuOTk5NzAxMzYgMTYsNi43NzU3MDEzNiAxNiw2LjQ5OTcwMTM2IEMxNiw2LjIyMzcwMTM2IDE2LjIyNSw1Ljk5OTcwMTM2IDE2LjUsNS45OTk3MDEzNiBMMTYuNSw1Ljk5OTcwMTM2IFogTTE4LjUsMTEuOTk5NzAxNCBDMTguNzc1LDExLjk5OTcwMTQgMTksMTIuMjIzNzAxNCAxOSwxMi40OTk3MDE0IEMxOSwxMi43NzU3MDE0IDE4Ljc3NSwxMi45OTk3MDE0IDE4LjUsMTIuOTk5NzAxNCBDMTguMjI1LDEyLjk5OTcwMTQgMTgsMTIuNzc1NzAxNCAxOCwxMi40OTk3MDE0IEMxOCwxMi4yMjM3MDE0IDE4LjIyNSwxMS45OTk3MDE0IDE4LjUsMTEuOTk5NzAxNCBMMTguNSwxMS45OTk3MDE0IFogTTE3LjA5MiwxMi45OTk3MDE0IEMxNy4yOTksMTMuNTgwNzAxNCAxNy44NDksMTMuOTk5NzAxNCAxOC41LDEzLjk5OTcwMTQgQzE5LjMyNywxMy45OTk3MDE0IDIwLDEzLjMyNzcwMTQgMjAsMTIuNDk5NzAxNCBDMjAsMTEuNjcyNzAxNCAxOS4zMjcsMTAuOTk5NzAxNCAxOC41LDEwLjk5OTcwMTQgQzE3Ljg0OSwxMC45OTk3MDE0IDE3LjI5OSwxMS40MTk3MDE0IDE3LjA5MiwxMS45OTk3MDE0IEwxMywxMS45OTk3MDE0IEwxMyw5Ljk5OTcwMTM2IEwxNi41LDkuOTk5NzAxMzYgQzE2Ljc3Niw5Ljk5OTcwMTM2IDE3LDkuNzc2NzAxMzYgMTcsOS40OTk3MDEzNiBMMTcsNy45MDc3MDEzNiBDMTcuNTgxLDcuNzAwNzAxMzYgMTgsNy4xNTA3MDEzNiAxOCw2LjQ5OTcwMTM2IEMxOCw1LjY3MjcwMTM2IDE3LjMyNyw0Ljk5OTcwMTM2IDE2LjUsNC45OTk3MDEzNiBDMTUuNjczLDQuOTk5NzAxMzYgMTUsNS42NzI3MDEzNiAxNSw2LjQ5OTcwMTM2IEMxNSw3LjE1MDcwMTM2IDE1LjQxOSw3LjcwMDcwMTM2IDE2LDcuOTA3NzAxMzYgTDE2LDguOTk5NzAxMzYgTDEzLDguOTk5NzAxMzYgTDEzLDUuNDk5NzAxMzYgQzEzLDUuMjg0NzAxMzYgMTIuODYyLDUuMDkzNzAxMzYgMTIuNjU4LDUuMDI1NzAxMzYgTDkuNjU4LDQuMDI1NzAxMzYgQzkuNTExLDMuOTc2NzAxMzYgOS4zNTEsMy45OTg3MDEzNiA5LjIyMyw0LjA4MzcwMTM2IEw2LjIyMyw2LjA4MzcwMTM2IEM2LjA4NCw2LjE3NjcwMTM2IDYsNi4zMzI3MDEzNiA2LDYuNDk5NzAxMzYgTDYsOS4xOTA3MDEzNiBMNC4yNzYsMTAuMDUyNzAxNCBDNC4xMDcsMTAuMTM3NzAxNCA0LDEwLjMxMDcwMTQgNCwxMC40OTk3MDE0IEw0LDEzLjQ5OTcwMTQgQzQsMTMuNjg5NzAxNCA0LjEwNywxMy44NjI3MDE0IDQuMjc2LDEzLjk0NzcwMTQgTDYsMTQuODA4NzAxNCBMNiwxNy40OTk3MDE0IEM2LDE3LjY2NjcwMTQgNi4wODQsMTcuODIzNzAxNCA2LjIyMywxNy45MTU3MDE0IEw5LjIyMywxOS45MTU3MDE0IEM5LjMwNiwxOS45NzE3MDE0IDkuNDAyLDE5Ljk5OTcwMTQgOS41LDE5Ljk5OTcwMTQgQzkuNTUzLDE5Ljk5OTcwMTQgOS42MDYsMTkuOTkxNzAxNCA5LjY1OCwxOS45NzM3MDE0IEwxMi42NTgsMTguOTczNzAxNCBDMTIuODYyLDE4LjkwNjcwMTQgMTMsMTguNzE1NzAxNCAxMywxOC40OTk3MDE0IEwxMywxNS45OTk3MDE0IEwxNS4yOTMsMTUuOTk5NzAxNCBMMTYuMTQ2LDE2Ljg1MzcwMTQgTDE2LjE1OSwxNi44NDA3MDE0IEMxNi4wNjEsMTcuMDQwNzAxNCAxNiwxNy4yNjI3MDE0IDE2LDE3LjQ5OTcwMTQgQzE2LDE4LjMyNjcwMTQgMTYuNjczLDE4Ljk5OTcwMTQgMTcuNSwxOC45OTk3MDE0IEMxOC4zMjcsMTguOTk5NzAxNCAxOSwxOC4zMjY3MDE0IDE5LDE3LjQ5OTcwMTQgQzE5LDE2LjY3MjcwMTQgMTguMzI3LDE1Ljk5OTcwMTQgMTcuNSwxNS45OTk3MDE0IEMxNy4yNjIsMTUuOTk5NzAxNCAxNy4wNCwxNi4wNjA3MDE0IDE2Ljg0MSwxNi4xNTk3MDE0IEwxNi44NTQsMTYuMTQ2NzAxNCBMMTUuODU0LDE1LjE0NjcwMTQgQzE1Ljc2LDE1LjA1MjcwMTQgMTUuNjMzLDE0Ljk5OTcwMTQgMTUuNSwxNC45OTk3MDE0IEwxMywxNC45OTk3MDE0IEwxMywxMi45OTk3MDE0IEwxNy4wOTIsMTIuOTk5NzAxNCBaXCIgLz5cbiAgICAgIDwvZz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFRodW1iVXBJY29uKHsgY2xhc3NOYW1lID0gJycsIHNpemUgPSAnMWVtJywgYm9sZCA9IGZhbHNlIH0pIHtcbiAgcmV0dXJuIGJvbGQgPyAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICB3aWR0aD17c2l6ZX1cbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTIuNTkyIDIuNTAzODZDMTIuODA0NyAyLjEzMDE0IDEzLjIzMTcgMS45MzUgMTMuNjUyIDIuMDE5NDJDMTUuNTYyNyAyLjQwMzE0IDE2LjcyNDYgNC4zNjA3OSAxNi4xNTE2IDYuMjMwODVMMTUuMzAzIDlMMTcuMDE0MiA5QzE5LjY0MDkgOSAyMS41NDg1IDExLjUwNzkgMjAuODU3NCAxNC4wNTI1TDE5LjQ5OTQgMTkuMDUyNUMxOS4wMjY3IDIwLjc5MjcgMTcuNDUyNiAyMiAxNS42NTYyIDIySDkuOTY3MjFDOC44NjkgMjEuOTk3OSA3Ljk3OTM5IDIxLjEwMzMgNy45NzkzOSAyMFY5SDguMzE3MzRDOC42NzQ3MiA5IDkuMDA0NyA4LjgwNzcxIDkuMTgyMDEgOC40OTYxM0wxMi41OTIgMi41MDM4NlpcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgID48L3BhdGg+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTUuOTg3NjMgOUM0LjMzNzYxIDkgMyAxMC4zNDMxIDMgMTJWMTlDMyAyMC42NTY5IDQuMzM3NjEgMjIgNS45ODc2MyAyMkg2LjUyMDU1QzYuMTgxNjIgMjEuNDExNiA1Ljk4NzYzIDIwLjcyODYgNS45ODc2MyAyMFY5WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKSA6IChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGhlaWdodD17c2l6ZX1cbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgY2xpcFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgZD1cIk0xMi4xMzE4IDIuNTAzODlDMTIuMzMyMSAyLjE1MzM4IDEyLjcyMzUgMS45NTc2OCAxMy4xMjQgMi4wMDc3NUwxMy41Nzc4IDIuMDY0NDdDMTYuMDQ0OSAyLjM3Mjg2IDE3LjYzNiA0LjgzMzUzIDE2LjkwNDggNy4yMDk5M0wxNi4zNTQgOC45OTk5OUgxNy4wNzIyQzE5LjcwOTcgOC45OTk5OSAyMS42MjUzIDExLjUwNzkgMjAuOTMxMyAxNC4wNTI1TDE5LjU2NzcgMTkuMDUyNUMxOS4wOTMxIDIwLjc5MjcgMTcuNTEyNCAyMiAxNS43MDg2IDIySDZDNC4zNDMxNSAyMiAzIDIwLjY1NjggMyAxOVYxMkMzIDEwLjM0MzEgNC4zNDMxNSA4Ljk5OTk5IDYgOC45OTk5OUg4QzguMjU5NTIgOC45OTk5OSA4LjQ5OTE0IDguODYwOTQgOC42Mjc5IDguNjM1NjFMMTIuMTMxOCAyLjUwMzg5Wk0xMCAyMEgxNS43MDg2QzE2LjYxMDUgMjAgMTcuNDAwOCAxOS4zOTY0IDE3LjYzODEgMTguNTI2MkwxOS4wMDE4IDEzLjUyNjJDMTkuMzQ4OCAxMi4yNTM5IDE4LjM5MSAxMSAxNy4wNzIyIDExSDE1QzE0LjY4MjcgMTEgMTQuMzg0MSAxMC44NDk0IDE0LjE5NTYgMTAuNTk0MUMxNC4wMDcxIDEwLjMzODggMTMuOTUwOSAxMC4wMDkyIDE0LjA0NDIgOS43MDU5MUwxNC45OTMyIDYuNjIxNzVDMTUuMzM4NCA1LjQ5OTg0IDE0LjY0ODQgNC4zNDAzNiAxMy41MzE5IDQuMDg0NjhMMTAuMzY0NCA5LjYyNzg5QzEwLjA1MjIgMTAuMTc0MiA5LjU2NjkxIDEwLjU4NTkgOSAxMC44MDk4VjE5QzkgMTkuNTUyMyA5LjQ0NzcyIDIwIDEwIDIwWk03IDExVjE5QzcgMTkuMzUwNiA3LjA2MDE1IDE5LjY4NzIgNy4xNzA3MSAyMEg2QzUuNDQ3NzIgMjAgNSAxOS41NTIzIDUgMTlWMTJDNSAxMS40NDc3IDUuNDQ3NzIgMTEgNiAxMUg3WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFRodW1iRG93bkljb24oeyBjbGFzc05hbWUgPSAnJywgc2l6ZSA9ICcxZW0nLCBib2xkID0gZmFsc2UgfSkge1xuICByZXR1cm4gYm9sZCA/IChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGhlaWdodD17c2l6ZX1cbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0xMS40MDc5IDIxLjQ5NjFDMTEuMTk1MyAyMS44Njk4IDEwLjc2ODMgMjIuMDY0OSAxMC4zNDggMjEuOTgwNUM4LjQzNzMgMjEuNTk2OCA3LjI3NTQxIDE5LjYzOTEgNy44NDg0NCAxNy43NjkxTDguNjk2OTcgMTQuOTk5OUw2Ljk4NTc3IDE0Ljk5OTlDNC4zNTkxNSAxNC45OTk5IDIuNDUxNTEgMTIuNDkyIDMuMTQyNjIgOS45NDc0N0w0LjUwMDYzIDQuOTQ3NDdDNC45NzMyOSAzLjIwNzIyIDYuNTQ3NDEgMS45OTk5NCA4LjM0Mzc4IDEuOTk5OTRIMTQuMDMyOEMxNS4xMzEgMi4wMDIwNyAxNi4wMjA2IDIuODk2NjggMTYuMDIwNiAzLjk5OTk0VjE0Ljk5OTlIMTUuNjgyN0MxNS4zMjUzIDE0Ljk5OTkgMTQuOTk1MyAxNS4xOTIyIDE0LjgxOCAxNS41MDM4TDExLjQwNzkgMjEuNDk2MVpcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgID48L3BhdGg+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTE4LjAxMjQgMTQuOTk5OUMxOS42NjI0IDE0Ljk5OTkgMjEgMTMuNjU2OCAyMSAxMS45OTk5VjQuOTk5OTRDMjEgMy4zNDMwOCAxOS42NjI0IDEuOTk5OTQgMTguMDEyNCAxLjk5OTk0SDE3LjQ3OTRDMTcuODE4NCAyLjU4ODI5IDE4LjAxMjQgMy4yNzEzNiAxOC4wMTI0IDMuOTk5OTRWMTQuOTk5OVpcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICkgOiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICB3aWR0aD17c2l6ZX1cbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTEuODcyNyAyMS40OTYxQzExLjY3MjUgMjEuODQ2NiAxMS4yODExIDIyLjA0MjMgMTAuODgwNSAyMS45OTIyTDEwLjQyNjcgMjEuOTM1NUM3Ljk1OTU4IDIxLjYyNzEgNi4zNjg1NSAxOS4xNjY1IDcuMDk5NzUgMTYuNzkwMUw3LjY1MDU0IDE1SDYuOTMyMjZDNC4yOTQ3NiAxNSAyLjM3OTIzIDEyLjQ5MjEgMy4wNzMyIDkuOTQ3NTNMNC40MzY4NCA0Ljk0NzUzQzQuOTExNDUgMy4yMDcyOCA2LjQ5MjA5IDIgOC4yOTU4OSAySDE4LjAwNDVDMTkuNjYxNCAyIDIxLjAwNDUgMy4zNDMxNSAyMS4wMDQ1IDVWMTJDMjEuMDA0NSAxMy42NTY5IDE5LjY2MTQgMTUgMTguMDA0NSAxNUgxNi4wMDQ1QzE1Ljc0NSAxNSAxNS41MDU0IDE1LjEzOTEgMTUuMzc2NiAxNS4zNjQ0TDExLjg3MjcgMjEuNDk2MVpNMTQuMDA0NSA0SDguMjk1ODlDNy4zOTM5OSA0IDYuNjAzNjcgNC42MDM2NCA2LjM2NjM3IDUuNDczNzZMNS4wMDI3MyAxMC40NzM4QzQuNjU1NzQgMTEuNzQ2IDUuNjEzNTEgMTMgNi45MzIyNiAxM0g5LjAwNDUxQzkuMzIxODUgMTMgOS42MjAzNiAxMy4xNTA2IDkuODA4OSAxMy40MDU5QzkuOTk3NDMgMTMuNjYxMiAxMC4wNTM2IDEzLjk5MDggOS45NjAyOCAxNC4yOTQxTDkuMDExMzEgMTcuMzc4MkM4LjY2NjEgMTguNTAwMiA5LjM1NjA4IDE5LjY1OTYgMTAuNDcyNiAxOS45MTUzTDEzLjY0MDEgMTQuMzcyMUMxMy45NTIzIDEzLjgyNTggMTQuNDM3NiAxMy40MTQxIDE1LjAwNDUgMTMuMTkwMlY1QzE1LjAwNDUgNC40NDc3MiAxNC41NTY4IDQgMTQuMDA0NSA0Wk0xNy4wMDQ1IDEzVjVDMTcuMDA0NSA0LjY0OTM3IDE2Ljk0NDQgNC4zMTI3OCAxNi44MzM4IDRIMTguMDA0NUMxOC41NTY4IDQgMTkuMDA0NSA0LjQ0NzcyIDE5LjAwNDUgNVYxMkMxOS4wMDQ1IDEyLjU1MjMgMTguNTU2OCAxMyAxOC4wMDQ1IDEzSDE3LjAwNDVaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gWEFJY29uKHsgY2xhc3NOYW1lID0gJycgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8cGF0aCBkPVwibTMuMDA1IDguODU4IDguNzgzIDEyLjU0NGgzLjkwNEw2LjkwOCA4Ljg1OHpNNi45MDUgMTUuODI1IDMgMjEuNDAyaDMuOTA3bDEuOTUxLTIuNzg4ek0xNi41ODUgMmwtNi43NSA5LjY0IDEuOTUzIDIuNzlMMjAuNDkyIDJ6TTE3LjI5MiA3Ljk2NXYxMy40MzdoMy4yVjMuMzk1elwiPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBlcnNvbmFsaXphdGlvbkljb24oeyBjbGFzc05hbWUgPSAnJyB9OiB7IGNsYXNzTmFtZT86IHN0cmluZyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtgaWNvbi1zbSAke2NsYXNzTmFtZX1gfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTEyIDRDMTAuMzQzMSA0IDkgNS4zNDMxNSA5IDdDOSA4LjY1Njg1IDEwLjM0MzEgMTAgMTIgMTBDMTMuNjU2OSAxMCAxNSA4LjY1Njg1IDE1IDdDMTUgNS4zNDMxNSAxMy42NTY5IDQgMTIgNFpNNyA3QzcgNC4yMzg1OCA5LjIzODU4IDIgMTIgMkMxNC43NjE0IDIgMTcgNC4yMzg1OCAxNyA3QzE3IDkuNzYxNDIgMTQuNzYxNCAxMiAxMiAxMkM5LjIzODU4IDEyIDcgOS43NjE0MiA3IDdaTTE5LjAyNzcgMTUuNjI1NUMxOC42ODU5IDE1LjU2NDYgMTguMTk0MSAxNS42NTM0IDE3LjY4MiAxNi4xODI5QzE3LjQ5MzYgMTYuMzc3NyAxNy4yMzQyIDE2LjQ4NzcgMTYuOTYzMiAxNi40ODc3QzE2LjY5MjIgMTYuNDg3NyAxNi40MzI4IDE2LjM3NzcgMTYuMjQ0NCAxNi4xODI5QzE1LjczMjIgMTUuNjUzNCAxNS4yNDA1IDE1LjU2NDYgMTQuODk4NyAxNS42MjU1QzE0LjUzODEgMTUuNjg5NyAxNC4yMTc5IDE1LjkzODQgMTQuMDYyMyAxNi4zMjc1QzEzLjgwNDggMTYuOTcxMyAxMy45MDE0IDE4LjY2MiAxNi45NjMyIDIwLjQ2MTdDMjAuMDI0OSAxOC42NjIgMjAuMTIxNiAxNi45NzEzIDE5Ljg2NCAxNi4zMjc1QzE5LjcwODQgMTUuOTM4NCAxOS4zODgyIDE1LjY4OTcgMTkuMDI3NyAxNS42MjU1Wk0yMS43MjEgMTUuNTg0N0MyMi41NzQ4IDE3LjcxOTEgMjEuMjY1NCAyMC40MjkgMTcuNDM3IDIyLjQ4OTJDMTcuMTQxMiAyMi42NDg0IDE2Ljc4NTIgMjIuNjQ4NCAxNi40ODkzIDIyLjQ4OTJDMTIuNjYwOSAyMC40MjkxIDExLjM1MTYgMTcuNzE5MSAxMi4yMDUzIDE1LjU4NDdDMTIuNjExNyAxNC41Njg5IDEzLjQ5MTcgMTMuODQ0NiAxNC41NDgxIDEzLjY1NjVDMTUuMzU2NyAxMy41MTI1IDE2LjIwMzIgMTMuNjkxNSAxNi45NjMyIDE0LjE5MjRDMTcuNzIzMiAxMy42OTE1IDE4LjU2OTcgMTMuNTEyNSAxOS4zNzgzIDEzLjY1NjVDMjAuNDM0NyAxMy44NDQ2IDIxLjMxNDcgMTQuNTY4OSAyMS43MjEgMTUuNTg0N1pNOS45MjU5NyAxNC4yMDQ5QzEwLjEzNDUgMTQuNzE2MyA5Ljg4OSAxNS4yOTk5IDkuMzc3NiAxNS41MDg0QzcuMDYxMzEgMTYuNDUzIDUuNSAxOC41ODEzIDUuNSAyMC45OTk5QzUuNSAyMS41NTIyIDUuMDUyMjggMjEuOTk5OSA0LjUgMjEuOTk5OUMzLjk0NzcyIDIxLjk5OTkgMy41IDIxLjU1MjIgMy41IDIwLjk5OTlDMy41IDE3LjY3NzcgNS42NDEgMTQuODcyMyA4LjYyMjQgMTMuNjU2NUM5LjEzMzggMTMuNDQ4IDkuNzE3NDMgMTMuNjkzNSA5LjkyNTk3IDE0LjIwNDlaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTUNQSWNvbih7IGNsYXNzTmFtZSB9OiB7IGNsYXNzTmFtZT86IHN0cmluZyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9XCIxOTVcIlxuICAgICAgaGVpZ2h0PVwiMTk1XCJcbiAgICAgIHZpZXdCb3g9XCIwIDIgMTk1IDE5NVwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTI1IDk3Ljg1MjhMOTIuODgyMyAyOS45NzA2QzEwMi4yNTUgMjAuNTk4IDExNy40NTEgMjAuNTk4IDEyNi44MjMgMjkuOTcwNlYyOS45NzA2QzEzNi4xOTYgMzkuMzQzMSAxMzYuMTk2IDU0LjUzOTEgMTI2LjgyMyA2My45MTE3TDc1LjU1ODEgMTE1LjE3N1wiXG4gICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMTZcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNNzYuMjY1MyAxMTQuNDdMMTI2LjgyMyA2My45MTE3QzEzNi4xOTYgNTQuNTM5MSAxNTEuMzkyIDU0LjUzOTEgMTYwLjc2NSA2My45MTE3TDE2MS4xMTggNjQuMjY1MkMxNzAuNDkxIDczLjYzNzggMTcwLjQ5MSA4OC44MzM4IDE2MS4xMTggOTguMjA2M0w5OS43MjQ4IDE1OS42Qzk2LjYwMDYgMTYyLjcyNCA5Ni42MDA2IDE2Ny43ODkgOTkuNzI0OCAxNzAuOTEzTDExMi4zMzEgMTgzLjUyXCJcbiAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIxNlwiXG4gICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0xMDkuODUzIDQ2Ljk0MTFMNTkuNjQ4MiA5Ny4xNDU3QzUwLjI3NTcgMTA2LjUxOCA1MC4yNzU3IDEyMS43MTQgNTkuNjQ4MiAxMzEuMDg3VjEzMS4wODdDNjkuMDIwOCAxNDAuNDU5IDg0LjIxNjggMTQwLjQ1OSA5My41ODk0IDEzMS4wODdMMTQzLjc5NCA4MC44ODIyXCJcbiAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIxNlwiXG4gICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVmVjdG9ySWNvbih7IGNsYXNzTmFtZSB9OiB7IGNsYXNzTmFtZT86IHN0cmluZyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9XCIyMFwiXG4gICAgICBoZWlnaHQ9XCIyMFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGggZD1cIk03LjQ1OTk2IDE0LjM3NUM3LjQ1OTk2IDEzLjM2MTYgNi42Mzg0NCAxMi41NCA1LjYyNSAxMi41NEM0LjYxMTU2IDEyLjU0IDMuNzkwMDQgMTMuMzYxNiAzLjc5MDA0IDE0LjM3NUMzLjc5MDA0IDE1LjM4ODQgNC42MTE1NiAxNi4yMSA1LjYyNSAxNi4yMUM2LjYzODQ0IDE2LjIxIDcuNDU5OTYgMTUuMzg4NCA3LjQ1OTk2IDE0LjM3NVpNMTYuMjEgMTQuMzc1QzE2LjIxIDEzLjM2MTYgMTUuMzg4NCAxMi41NCAxNC4zNzUgMTIuNTRDMTMuMzYxNiAxMi41NCAxMi41NCAxMy4zNjE2IDEyLjU0IDE0LjM3NUMxMi41NCAxNS4zODg0IDEzLjM2MTYgMTYuMjEgMTQuMzc1IDE2LjIxQzE1LjM4ODQgMTYuMjEgMTYuMjEgMTUuMzg4NCAxNi4yMSAxNC4zNzVaTTcuNDU5OTYgNS42MjVDNy40NTk5NiA0LjYxMTU2IDYuNjM4NDQgMy43OTAwNCA1LjYyNSAzLjc5MDA0QzQuNjExNTYgMy43OTAwNCAzLjc5MDA0IDQuNjExNTYgMy43OTAwNCA1LjYyNUMzLjc5MDA0IDYuNjM4NDQgNC42MTE1NiA3LjQ1OTk2IDUuNjI1IDcuNDU5OTZDNi42Mzg0NCA3LjQ1OTk2IDcuNDU5OTYgNi42Mzg0NCA3LjQ1OTk2IDUuNjI1Wk0xNi4yMSA1LjYyNUMxNi4yMSA0LjYxMTU2IDE1LjM4ODQgMy43OTAwNCAxNC4zNzUgMy43OTAwNEMxMy4zNjE2IDMuNzkwMDQgMTIuNTQgNC42MTE1NiAxMi41NCA1LjYyNUMxMi41NCA2LjYzODQ0IDEzLjM2MTYgNy40NTk5NiAxNC4zNzUgNy40NTk5NkMxNS4zODg0IDcuNDU5OTYgMTYuMjEgNi42Mzg0NCAxNi4yMSA1LjYyNVpNMTcuNTQgMTQuMzc1QzE3LjU0IDE2LjEyMyAxNi4xMjMgMTcuNTQgMTQuMzc1IDE3LjU0QzEyLjYyNyAxNy41NCAxMS4yMSAxNi4xMjMgMTEuMjEgMTQuMzc1QzExLjIxIDEyLjYyNyAxMi42MjcgMTEuMjEgMTQuMzc1IDExLjIxQzE2LjEyMyAxMS4yMSAxNy41NCAxMi42MjcgMTcuNTQgMTQuMzc1Wk04Ljc5MDA0IDUuNjI1QzguNzkwMDQgNy4zNzI5OCA3LjM3Mjk4IDguNzkwMDQgNS42MjUgOC43OTAwNEMzLjg3NzAyIDguNzkwMDQgMi40NTk5NiA3LjM3Mjk4IDIuNDU5OTYgNS42MjVDMi40NTk5NiAzLjg3NzAyIDMuODc3MDIgMi40NTk5NiA1LjYyNSAyLjQ1OTk2QzcuMzcyOTggMi40NTk5NiA4Ljc5MDA0IDMuODc3MDIgOC43OTAwNCA1LjYyNVpNMTcuNTQgNS42MjVDMTcuNTQgNy4zNzI5OCAxNi4xMjMgOC43OTAwNCAxNC4zNzUgOC43OTAwNEMxMy43NDE2IDguNzkwMDQgMTMuMTUzIDguNjAxNzMgMTIuNjU4MiA4LjI4MTI1TDguMjgxMjUgMTIuNjU4MkM4LjYwMTczIDEzLjE1MyA4Ljc5MDA0IDEzLjc0MTYgOC43OTAwNCAxNC4zNzVDOC43OTAwNCAxNi4xMjMgNy4zNzI5OCAxNy41NCA1LjYyNSAxNy41NEMzLjg3NzAyIDE3LjU0IDIuNDU5OTYgMTYuMTIzIDIuNDU5OTYgMTQuMzc1QzIuNDU5OTYgMTIuNjI3IDMuODc3MDIgMTEuMjEgNS42MjUgMTEuMjFDNi4yNTc5NCAxMS4yMSA2Ljg0NjIzIDExLjM5NzcgNy4zNDA4MiAxMS43MTc4TDExLjcxNzggNy4zNDA4MkMxMS4zOTc3IDYuODQ2MjMgMTEuMjEgNi4yNTc5NCAxMS4yMSA1LjYyNUMxMS4yMSAzLjg3NzAyIDEyLjYyNyAyLjQ1OTk2IDE0LjM3NSAyLjQ1OTk2QzE2LjEyMyAyLjQ1OTk2IDE3LjU0IDMuODc3MDIgMTcuNTQgNS42MjVaXCIgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNxdWlyY2xlUGx1c0ljb24oKSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT1cInRleHQtM3hsXCJcbiAgICAgIGhlaWdodD1cIjFlbVwiXG4gICAgICB3aWR0aD1cIjFlbVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPGxpbmUgeDE9XCIxMlwiIHkxPVwiNVwiIHgyPVwiMTJcIiB5Mj1cIjE5XCIgLz5cbiAgICAgIDxsaW5lIHgxPVwiNVwiIHkxPVwiMTJcIiB4Mj1cIjE5XCIgeTI9XCIxMlwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBBdWRpb1BhdGhzKCkge1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTggMTV2NlwiXG4gICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0xMyA4djIwXCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTE4IDEwdjE2XCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTIzIDZ2MjRcIlxuICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMjggMTJ2MTJcIlxuICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENvZGVQYXRocygpIHtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0yMS4zMzMgMjNMMjYuMzMzIDE4TDIxLjMzMyAxM1wiXG4gICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIxLjY2NjY3XCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0xNC42NjcgMTNMOS42NjY5OSAxOEwxNC42NjcgMjNcIlxuICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMS42NjY2N1wiXG4gICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsImltcG9ydCB0eXBlIHsgVEZpbGUgfSBmcm9tICdsaWJyZWNoYXQtZGF0YS1wcm92aWRlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEZpbGVJY29uKHtcbiAgZmlsZSxcbiAgZmlsZVR5cGUsXG59OiB7XG4gIGZpbGU/OiBQYXJ0aWFsPFRGaWxlPiAmIHsgcHJvZ3Jlc3M/OiBudW1iZXIgfTtcbiAgZmlsZVR5cGU6IHtcbiAgICBmaWxsOiBzdHJpbmc7XG4gICAgcGF0aHM6IFJlYWN0LkZDO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gIH07XG59KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB2aWV3Qm94PVwiMCAwIDM2IDM2XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIGNsYXNzTmFtZT1cImgtMTAgdy0xMCBmbGV4LXNocmluay0wXCJcbiAgICAgIHdpZHRoPVwiMzZcIlxuICAgICAgaGVpZ2h0PVwiMzZcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cmVjdCB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiByeD1cIjZcIiBmaWxsPXtmaWxlVHlwZS5maWxsfSAvPlxuICAgICAgeyhmaWxlPy5bJ3Byb2dyZXNzJ10gPz8gMSkgPj0gMSAmJiA8Pns8ZmlsZVR5cGUucGF0aHMgLz59PC8+fVxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRmlsZVBhdGhzKCkge1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTE4LjgzMyA5LjY2NjYzSDEyLjk5OTdDMTIuNTU3NiA5LjY2NjYzIDEyLjEzMzcgOS44NDIyMiAxMS44MjEyIDEwLjE1NDhDMTEuNTA4NiAxMC40NjczIDExLjMzMyAxMC44OTEzIDExLjMzMyAxMS4zMzMzVjI0LjY2NjZDMTEuMzMzIDI1LjEwODcgMTEuNTA4NiAyNS41MzI2IDExLjgyMTIgMjUuODQ1MUMxMi4xMzM3IDI2LjE1NzcgMTIuNTU3NiAyNi4zMzMzIDEyLjk5OTcgMjYuMzMzM0gyMi45OTk3QzIzLjQ0MTcgMjYuMzMzMyAyMy44NjU2IDI2LjE1NzcgMjQuMTc4MiAyNS44NDUxQzI0LjQ5MDcgMjUuNTMyNiAyNC42NjYzIDI1LjEwODcgMjQuNjY2MyAyNC42NjY2VjE1LjVMMTguODMzIDkuNjY2NjNaXCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjEuNjY2NjdcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTE4LjgzMyA5LjY2NjYzVjE1LjVIMjQuNjY2M1wiXG4gICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIxLjY2NjY3XCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2hlZXRQYXRocygpIHtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0xNS41IDEwLjVIMTIuMTY2N0MxMS4yNDYyIDEwLjUgMTAuNSAxMS4yNDYyIDEwLjUgMTIuMTY2N1YxMy41VjE4TTE1LjUgMTAuNUgyMy44MzMzQzI0Ljc1MzggMTAuNSAyNS41IDExLjI0NjIgMjUuNSAxMi4xNjY3VjEzLjVWMThNMTUuNSAxMC41VjI1LjVNMTUuNSAyNS41SDE4SDIzLjgzMzNDMjQuNzUzOCAyNS41IDI1LjUgMjQuNzUzOCAyNS41IDIzLjgzMzNWMThNMTUuNSAyNS41SDEyLjE2NjdDMTEuMjQ2MiAyNS41IDEwLjUgMjQuNzUzOCAxMC41IDIzLjgzMzNWMThNMTAuNSAxOEgyNS41XCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjEuNjY2NjdcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUZXh0UGF0aHMoKSB7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTkuNjY2MyA5LjY2NjYzSDEyLjk5OTdDMTIuNTU3NiA5LjY2NjYzIDEyLjEzMzcgOS44NDIyMiAxMS44MjEyIDEwLjE1NDhDMTEuNTA4NiAxMC40NjczIDExLjMzMyAxMC44OTEzIDExLjMzMyAxMS4zMzMzVjI0LjY2NjZDMTEuMzMzIDI1LjEwODcgMTEuNTA4NiAyNS41MzI2IDExLjgyMTIgMjUuODQ1MUMxMi4xMzM3IDI2LjE1NzcgMTIuNTU3NiAyNi4zMzMzIDEyLjk5OTcgMjYuMzMzM0gyMi45OTk3QzIzLjQ0MTcgMjYuMzMzMyAyMy44NjU2IDI2LjE1NzcgMjQuMTc4MiAyNS44NDUxQzI0LjQ5MDcgMjUuNTMyNiAyNC42NjYzIDI1LjEwODcgMjQuNjY2MyAyNC42NjY2VjE0LjY2NjZMMTkuNjY2MyA5LjY2NjYzWlwiXG4gICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIxLjY2NjY3XCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0xOS42NjcgOS42NjY2M1YxNC42NjY2SDI0LjY2N1wiXG4gICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIxLjY2NjY3XCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0yMS4zMzM3IDE4LjgzMzRIMTQuNjY3XCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjEuNjY2NjdcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTIxLjMzMzcgMjIuMTY2NkgxNC42NjdcIlxuICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMS42NjY2N1wiXG4gICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTYuMzMzNyAxNS41SDE1LjUwMDNIMTQuNjY3XCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjEuNjY2NjdcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBWaWRlb1BhdGhzKCkge1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7LyogVmlkZW8gY29udGFpbmVyIC0gcm91bmRlZCByZWN0YW5nbGUgKG5vdCBmaWxsZWQpICovfVxuICAgICAgPHJlY3QgeD1cIjhcIiB5PVwiMTBcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTZcIiByeD1cIjNcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZVdpZHRoPVwiMlwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgIHsvKiBQbGF5IGJ1dHRvbiAtIGNlbnRlcmVkIGFuZCBwb2ludGluZyByaWdodCAqL31cbiAgICAgIDxwYXRoIGQ9XCJNMjIgMThsLTYgNHYtOEwyMiAxOHpcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgIDwvPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNoYXJlUG9pbnRJY29uKHsgY2xhc3NOYW1lID0gJycgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aCBkPVwiTTI0IDEzLjVxMCAxLjI0Mi0uNDc1IDIuMzMyLS40NzQgMS4wOS0xLjI4OSAxLjkwNC0uODE0LjgxNS0xLjkwNCAxLjI5LTEuMDkuNDc0LTIuMzMyLjQ3NC0uNzYyIDAtMS41MjMtLjItLjEwNi45OTctLjU1NyAxLjg1OC0uNDUxLjg2Mi0xLjE1NCAxLjQ5NC0uNzA0LjYzMy0xLjYwNi45OS0uOTAyLjM1OC0xLjkxLjM1OC0xLjA5IDAtMi4wNDUtLjQxNi0uOTU1LS40MTYtMS42NjQtMS4xMjUtLjcwOS0uNzA5LTEuMTI1LTEuNjY0UTYgMTkuODQgNiAxOC43NXEwLS4xODguMDE4LS4zNzUuMDE3LS4xODguMDQtLjM3NUguOTk3cS0uNDEgMC0uNzAzLS4yOTNUMCAxNy4wMDRWNi45OTZxMC0uNDEuMjkzLS43MDNULjk5NiA2aDMuNTRxLjE0LTEuMjc3LjcyNi0yLjM3My41ODYtMS4wOTYgMS40ODgtMS45MDRRNy42NTIuOTE0IDguODA3LjQ1NyA5Ljk2IDAgMTEuMjUgMHExLjM5NSAwIDIuNjI1LjUzM1QxNi4wMiAxLjk4cS45MTQuOTE1IDEuNDQ3IDIuMTQ1VDE4IDYuNzVxMCAuMTg4LS4wMTIuMzc1LS4wMTEuMTg4LS4wMzUuMzc1IDEuMjQyIDAgMi4zNDQuNDY5IDEuMTAxLjQ2OCAxLjkyOCAxLjI3Ny44MjYuODA5IDEuMyAxLjkwNFEyNCAxMi4yNDYgMjQgMTMuNXptLTEyLjc1LTEycS0uOTczIDAtMS44NTcuMzQtLjg4NS4zNC0xLjU3Ny45NDMtLjY5MS42MDQtMS4xNTQgMS40M1E2LjIgNS4wMzkgNi4wNiA2aDQuOTQ1cS40MSAwIC43MDMuMjkzdC4yOTMuNzAzdjQuOTQ1bC4yMS0uMDM1cS4yMTItLjc1LjYxLTEuNDI0LjM5OS0uNjczLjk0NC0xLjIxOC41NDUtLjU0NSAxLjIxMy0uOTQ0LjY2OC0uMzk4IDEuNDMtLjYxLjA5My0uNTAzLjA5My0uOTYgMC0xLjA5LS40MTYtMi4wNDUtLjQxNi0uOTU1LTEuMTI1LTEuNjY0LS43MDktLjcwOS0xLjY2NC0xLjEyNVExMi4zNCAxLjUgMTEuMjUgMS41ek02LjExNyAxNS45MDJxLjU0IDAgMS4wNi0uMTExLjUyMi0uMTExLjkzMi0uMzcuNDEtLjI1Ny42NjItLjY3OS4yNTItLjQyMi4yNTItMS4wNTUgMC0uNjMyLS4yNjMtMS4wNTQtLjI2NC0uNDIyLS42NjItLjcwMy0uMzk5LS4yODItLjg1Ni0uNDYzbC0uODU1LS4zNHEtLjM5OS0uMTU4LS42NjItLjMzNC0uMjY0LS4xNzYtLjI2NC0uNDQ1IDAtLjIuMTQtLjMyMy4xNDEtLjEyMy4zMzUtLjE5My4xOTMtLjA3LjQwNC0uMDk0LjIxLS4wMjMuMzUxLS4wMjMuNTk4IDAgMS4wNTUuMTUyLjQ1Ny4xNTMuOTUuNDU3VjguNTQzcS0uMjgyLS4wODItLjUyMi0uMTQtLjI0LS4wNi0uNDc1LS4xLS4yMzQtLjA0MS0uNDg2LS4wNTktLjI1Mi0uMDE3LS41NTctLjAxNy0uNTE1IDAtMS4wNTQuMTE3LS41NC4xMTctLjk3OS4zNzUtLjQ0LjI1OC0uNzE1LjY4LS4yNzUuNDIxLS4yNzUgMS4wMyAwIC41OTguMjYzLjk5Ny4yNjQuMzk4LjY2My42OC4zOTguMjguODU1LjQ3NGwuODU2LjM2M3EuMzk4LjE3LjY2Mi4zNTguMjYzLjE4Ny4yNjMuNDU3IDAgLjIyMi0uMTIzLjM1MS0uMTIzLjEzLS4zMS4yLS4xODguMDctLjM5My4wODctLjIwNS4wMTgtLjM2OS4wMTgtLjcwMyAwLTEuMjQ4LS4yMzQtLjU0NS0uMjM1LTEuMTA3LS42MjF2MS44NzVxMS4xOTUuNDY4IDIuNDcyLjQ2OHpNMTEuMjUgMjIuNXEuNzczIDAgMS40NTMtLjI5M3QxLjE5LS44MDNxLjUxLS41MS44MDgtMS4xOTUuMjk5LS42ODYuMjk5LTEuNDU5IDAtLjY2OC0uMjIzLTEuMjc3LS4yMjItLjYxLS42Mi0xLjA5Ni0uNC0uNDg2LS45NS0uODI2LS41NS0uMzQtMS4yMDctLjQ4djEuOTMzcTAgLjQxLS4yOTMuNzAzdC0uNzAzLjI5M0g3LjU3cS0uMDcuMzc1LS4wNy43NSAwIC43NzMuMjkzIDEuNDU5dC44MDMgMS4xOTVxLjUxLjUxIDEuMTk1LjgwMy42ODYuMjkzIDEuNDU5LjI5M3pNMTggMThxLjkyNiAwIDEuNzQ2LS4zNTIuODItLjM1MSAxLjQzNi0uOTY2LjYxNS0uNjE2Ljk2Ni0xLjQzLjM1Mi0uODE1LjM1Mi0xLjc1MiAwLS45MjYtLjM1Mi0xLjc0Ni0uMzUxLS44Mi0uOTY2LTEuNDM2LS42MTYtLjYxNS0xLjQzNi0uOTY2UTE4LjkyNiA5IDE4IDl0LTEuNzQuMzU3cS0uODE1LjM1OC0xLjQzLjk3M3QtLjk3MyAxLjQzcS0uMzU3LjgxNC0uMzU3IDEuNzQgMCAuMTI5LjAwNi4yNTh0LjAxNy4yNThxLjU1MS4yNyAxLjAyLjY1dC44MzguODU1cS4zNjkuNDc1LjYyNyAxLjAyNi4yNTguNTUuMzg3IDEuMTQ4UTE3LjE4IDE4IDE4IDE4WlwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNb29uc2hvdEljb24oeyBjbGFzc05hbWUgPSAnJyB9OiB7IGNsYXNzTmFtZT86IHN0cmluZyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJNMS4wNTIgMTYuOTE2bDkuNTM5IDIuNTUyYTIxLjAwNyAyMS4wMDcgMCAwMC4wNiAyLjAzM2w1Ljk1NiAxLjU5M2ExMS45OTcgMTEuOTk3IDAgMDEtNS41ODYuODY1bC0uMTgtLjAxNi0uMDQ0LS4wMDQtLjA4NC0uMDA5LS4wOTQtLjAxYTExLjYwNSAxMS42MDUgMCAwMS0uMTU3LS4wMmwtLjEwNy0uMDE0LS4xMS0uMDE2YTExLjk2MiAxMS45NjIgMCAwMS0uMzItLjA1MWwtLjA0Mi0uMDA4LS4wNzUtLjAxMy0uMTA3LS4wMi0uMDctLjAxNS0uMDkzLS4wMTktLjA3NS0uMDE2LS4wOTUtLjAyLS4wOTctLjAyMy0uMDk0LS4wMjItLjA2OC0uMDE3LS4wODgtLjAyMi0uMDktLjAyNC0uMDk1LS4wMjUtLjA4Mi0uMDIzLS4xMDktLjAzLS4wNjItLjAyLS4wODQtLjAyNS0uMDkzLS4wMjgtLjEwNS0uMDM0LS4wNTgtLjAxOS0uMDgtLjAyNi0uMDktLjAzMS0uMDY2LS4wMjRhNi4yOTMgNi4yOTMgMCAwMS0uMDQ0LS4wMTVsLS4wNjgtLjAyNS0uMTAxLS4wMzctLjA1Ny0uMDIyLS4wOC0uMDMtLjA4Ny0uMDM1LS4wODgtLjAzNS0uMDc5LS4wMzItLjA5NS0uMDQtLjA2My0uMDI4LS4wNjMtLjAyN2E1LjY1NSA1LjY1NSAwIDAxLS4wNDEtLjAxOGwtLjA2Ni0uMDMtLjEwMy0uMDQ3LS4wNTItLjAyNC0uMDk2LS4wNDYtLjA2Mi0uMDMtLjA4NC0uMDQtLjA4Ni0uMDQ0LS4wOTMtLjA0Ny0uMDUyLS4wMjctLjEwMy0uMDU1LS4wNTctLjAzLS4wNTgtLjAzMmE2LjQ5IDYuNDkgMCAwMS0uMDQ2LS4wMjZsLS4wOTQtLjA1My0uMDYtLjAzNC0uMDUxLS4wMy0uMDcyLS4wNDEtLjA4Mi0uMDUtLjA5My0uMDU2LS4wNTItLjAzMi0uMDg0LS4wNTMtLjA2MS0uMDM5LS4wNzktLjA1LS4wNy0uMDQ3LS4wNTMtLjAzNWE3Ljc4NSA3Ljc4NSAwIDAxLS4wNTQtLjAzNmwtLjA0NC0uMDMtLjA0NC0uMDNhNi4wNjYgNi4wNjYgMCAwMS0uMDQtLjAyOGwtLjA1Ny0uMDQtLjA3Ni0uMDU0LS4wNjktLjA1LS4wNzQtLjA1NC0uMDU2LS4wNDItLjA3Ni0uMDU3LS4wNzYtLjA1OS0uMDg2LS4wNjctLjA0NS0uMDM1LS4wNjQtLjA1Mi0uMDc0LS4wNi0uMDg5LS4wNzMtLjA0Ni0uMDM5LS4wNDYtLjAzOWE3LjUxNiA3LjUxNiAwIDAxLS4wNDMtLjAzN2wtLjA0NS0uMDQtLjA2MS0uMDUzLS4wNy0uMDYyLS4wNjgtLjA2LS4wNjItLjA1OC0uMDY3LS4wNjItLjA1My0uMDUtLjA4OC0uMDg0YTEzLjI4IDEzLjI4IDAgMDEtLjA5OS0uMDk3bC0uMDI5LS4wMjgtLjA0MS0uMDQyLS4wNjktLjA3LS4wNS0uMDUxLS4wNS0uMDUzYTYuNDU3IDYuNDU3IDAgMDEtLjE2OC0uMTc5bC0uMDgtLjA4OC0uMDYyLS4wNy0uMDcxLS4wOC0uMDQyLS4wNDktLjA1My0uMDYyLS4wNTgtLjA2OC0uMDQ2LS4wNTZhNy4xNzUgNy4xNzUgMCAwMS0uMDI3LS4wMzNsLS4wNDUtLjA1NS0uMDY2LS4wODItLjA0MS0uMDUyLS4wNS0uMDY0LS4wMi0uMDI1YTExLjk5IDExLjk5IDAgMDEtMS40NC0yLjQwMnptLTEuMDItNS43OTRsMTEuMzUzIDMuMDM3YTIwLjQ2OCAyMC40NjggMCAwMC0uNDY5IDIuMDExbDEwLjgxNyAyLjg5NGExMi4wNzYgMTIuMDc2IDAgMDEtMS44NDUgMi4wMDVMLjY1NyAxNS45MjNsLS4wMTYtLjA0Ni0uMDM1LS4xMDRhMTEuOTY1IDExLjk2NSAwIDAxLS4wNS0uMTUzbC0uMDA3LS4wMjNhMTEuODk2IDExLjg5NiAwIDAxLS4yMDctLjc0MWwtLjAzLS4xMjYtLjAxOC0uMDgtLjAyMS0uMDk3LS4wMTgtLjA4MS0uMDE4LS4wOS0uMDE3LS4wODQtLjAxOC0uMDk0Yy0uMDI2LS4xNDEtLjA1LS4yODMtLjA3MS0uNDI2bC0uMDE3LS4xMTgtLjAxMS0uMDgzLS4wMTMtLjEwMmExMi4wMSAxMi4wMSAwIDAxLS4wMTktLjE2MWwtLjAwNS0uMDQ3YTEyLjEyIDEyLjEyIDAgMDEtLjAzNC0yLjE0NXptMS41OTMtNS4xNWwxMS45NDggMy4xOTZjLS4zNjguNjA1LS43MDUgMS4yMzEtMS4wMSAxLjg3NWwxMS4yOTUgMy4wMjJjLS4xNDIuODItLjM2OCAxLjYxMi0uNjY4IDIuMzY1bC0xMS41NS0zLjA5TC4xMjQgMTAuMjZsLjAxNS0uMS4wMDgtLjA0OS4wMS0uMDY3LjAxNS0uMDg3LjAxOC0uMDk4Yy4wMjYtLjE0OC4wNTYtLjI5NS4wODgtLjQ0MmwuMDI4LS4xMjQuMDItLjA4NS4wMjQtLjA5N2MuMDIyLS4wOS4wNDUtLjE4LjA3LS4yNjhsLjAyOC0uMTAyLjAyMy0uMDgzLjAzLS4xLjAyNS0uMDgyLjAzLS4wOTYuMDI2LS4wODIuMDMxLS4wOTVhMTEuODk2IDExLjg5NiAwIDAxMS4wMS0yLjIzMnptNC40NDItNC40TDE3LjM1MiA0LjU5YTIwLjc3IDIwLjc3IDAgMDAtMS42ODggMS43MjFsNy44MjMgMi4wOTNjLjI2Ny44NTIuNDQyIDEuNzQ0LjUxMyAyLjY2NUwyLjEwNiA1LjIxM2wuMDQ1LS4wNjUuMDI3LS4wNC4wNC0uMDU1LjA0Ni0uMDY1LjA1NS0uMDc2LjA1NC0uMDcyLjA2NC0uMDg2LjA1LS4wNjUuMDU3LS4wNzMuMDU1LS4wNy4wNi0uMDc0LjA1NS0uMDY5LjA2NS0uMDc3LjA1NC0uMDY2LjA2Ni0uMDc3LjA1My0uMDYuMDcyLS4wODIuMDUzLS4wNi4wNjctLjA3NC4wNTQtLjA1OC4wNzMtLjA3OC4wNTgtLjA2LjA2My0uMDY3LjE2OC0uMTcuMS0uMDk4LjA1OS0uMDU2LjA3Ni0uMDcxYTEyLjA4NCAxMi4wODQgMCAwMTIuMjcyLTEuNjc3ek0xMi4wMTcgMGguMDk3bC4wODIuMDAxLjA2OS4wMDEuMDU0LjAwMi4wNjguMDAyLjA0Ni4wMDEuMDc2LjAwMy4wNDcuMDAyLjA2LjAwMy4wNTQuMDAyLjA4Ny4wMDUuMTA1LjAwNy4xNDQuMDExLjA4OC4wMDcuMDQ0LjAwNC4wNzcuMDA4LjA4Mi4wMDguMDQ3LjAwNS4xMDIuMDEyLjA1LjAwNi4xMDguMDE0LjA4MS4wMS4wNDIuMDA2LjA2NS4wMS4yMDcuMDMyLjA3LjAxMi4wNjUuMDExLjE0LjAyNi4wOTIuMDE4LjExLjAyMi4wNDYuMDEuMDc1LjAxNi4wNDEuMDFMMTQuNy4zbC4wNDIuMDEuMDY1LjAxNS4wNDkuMDEyLjA3MS4wMTcuMDk2LjAyNC4xMTIuMDMuMTEzLjAzLjExMy4wMzIuMDUuMDE1LjA3LjAyLjA3OC4wMjQuMDczLjAyMy4wNS4wMTYuMDUuMDE2LjA3Ni4wMjUuMDk5LjAzMy4xMDIuMDM2LjA0OC4wMTcuMDY0LjAyMy4wOTMuMDM0LjExLjA0MS4xMTYuMDQ1LjEuMDQuMDQ3LjAyLjA2LjAyNC4wNDEuMDE4LjA2My4wMjYuMDQuMDE4LjA1Ny4wMjUuMTEuMDQ4LjEuMDQ2LjA3NC4wMzUuMDc1LjAzNi4wNi4wMjguMDkyLjA0Ni4wOTEuMDQ1LjEwMi4wNTIuMDUzLjAyOC4wNDkuMDI2LjA0Ni4wMjQuMDYuMDMzLjA0MS4wMjIuMDUyLjAyOS4wODguMDUuMTA2LjA2LjA4Ny4wNTEuMDU3LjAzNC4wNTMuMDMyLjA5Ni4wNTkuMDg4LjA1NS4wOTguMDYyLjAzNi4wMjQuMDY0LjA0MS4wODQuMDU2LjA0LjAyNy4wNjIuMDQyLjA2Mi4wNDMuMDIzLjAxN2MuMDU0LjAzNy4xMDguMDc1LjE2MS4xMTRsLjA4My4wNi4wNjUuMDQ4LjA1Ni4wNDMuMDg2LjA2NS4wODIuMDY0LjA0LjAzLjA1LjA0MS4wODYuMDY5LjA3OS4wNjUuMDg1LjA3MWMuNzEyLjYgMS4zNTMgMS4yODMgMS45MDkgMi4wMzFMNy4yMjIuOTk0bC4wNjItLjAyNy4wNjUtLjAyOC4wODEtLjAzNC4wODYtLjAzNWMuMTEzLS4wNDUuMjI3LS4wOS4zNDEtLjEzMWwuMDk2LS4wMzUuMDkzLS4wMzMuMDg0LS4wMy4wOTYtLjAzMWMuMDg3LS4wMy4xNzYtLjA1OC4yNjQtLjA4NWwuMDkxLS4wMjcuMDg2LS4wMjUuMTAyLS4wMy4wODUtLjAyMy4xLS4wMjZMOS4wNC4zN2wuMDktLjAyMy4wOTEtLjAyMi4wOTUtLjAyMi4wOS0uMDIuMDk4LS4wMjEuMDkxLS4wMi4wOTUtLjAxOC4wOTItLjAxOC4xLS4wMTguMDkxLS4wMTYuMDk4LS4wMTcuMDkyLS4wMTQuMDk3LS4wMTUuMDkyLS4wMTMuMTAyLS4wMTMuMDkxLS4wMTIuMTA1LS4wMTIuMDktLjAxLjEwNS0uMDFjLjA5My0uMDEuMTg2LS4wMTguMjgtLjAyNGwuMTA2LS4wMDguMDktLjAwNS4xMS0uMDA2LjA5My0uMDA0LjEtLjAwNC4wOTctLjAwMi4wOTktLjAwMi4xOTctLjAwMnpcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VNZW1vLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgVFVzZXIgfSBmcm9tICdsaWJyZWNoYXQtZGF0YS1wcm92aWRlcic7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4vU2tlbGV0b24nO1xuaW1wb3J0IHsgdXNlQXZhdGFyIH0gZnJvbSAnfi9ob29rcyc7XG5pbXBvcnQgeyBVc2VySWNvbiB9IGZyb20gJ34vc3Zncyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXZhdGFyUHJvcHMge1xuICB1c2VyPzogVFVzZXI7XG4gIHNpemU/OiBudW1iZXI7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgYWx0Pzogc3RyaW5nO1xuICBzaG93RGVmYXVsdFdoZW5FbXB0eT86IGJvb2xlYW47XG59XG5cbmNvbnN0IEF2YXRhcjogUmVhY3QuRkM8QXZhdGFyUHJvcHM+ID0gKHtcbiAgdXNlcixcbiAgc2l6ZSA9IDMyLFxuICBjbGFzc05hbWUgPSAnJyxcbiAgYWx0LFxuICBzaG93RGVmYXVsdFdoZW5FbXB0eSA9IHRydWUsXG59KSA9PiB7XG4gIGNvbnN0IGF2YXRhclNyYyA9IHVzZUF2YXRhcih1c2VyKTtcbiAgY29uc3QgW2ltYWdlTG9hZGVkLCBzZXRJbWFnZUxvYWRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtpbWFnZUVycm9yLCBzZXRJbWFnZUVycm9yXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBhdmF0YXJTZWVkID0gdXNlTWVtbyhcbiAgICAoKSA9PiB1c2VyPy5hdmF0YXIgfHwgdXNlcj8udXNlcm5hbWUgfHwgdXNlcj8uZW1haWwgfHwgJycsXG4gICAgW3VzZXI/LmF2YXRhciwgdXNlcj8udXNlcm5hbWUsIHVzZXI/LmVtYWlsXSxcbiAgKTtcblxuICBjb25zdCBhbHRUZXh0ID0gdXNlTWVtbyhcbiAgICAoKSA9PiBhbHQgfHwgYCR7dXNlcj8ubmFtZSB8fCB1c2VyPy51c2VybmFtZSB8fCB1c2VyPy5lbWFpbCB8fCAnJ30ncyBhdmF0YXJgLFxuICAgIFthbHQsIHVzZXI/Lm5hbWUsIHVzZXI/LnVzZXJuYW1lLCB1c2VyPy5lbWFpbF0sXG4gICk7XG5cbiAgY29uc3QgaW1hZ2VTcmMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIWF2YXRhclNlZWQgfHwgaW1hZ2VFcnJvcikgcmV0dXJuICcnO1xuICAgIHJldHVybiAodXNlcj8uYXZhdGFyID8/ICcnKSB8fCBhdmF0YXJTcmMgfHwgJyc7XG4gIH0sIFt1c2VyPy5hdmF0YXIsIGF2YXRhclNyYywgYXZhdGFyU2VlZCwgaW1hZ2VFcnJvcl0pO1xuXG4gIGNvbnN0IGhhbmRsZUltYWdlTG9hZCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRJbWFnZUxvYWRlZCh0cnVlKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGhhbmRsZUltYWdlRXJyb3IgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SW1hZ2VFcnJvcih0cnVlKTtcbiAgICBzZXRJbWFnZUxvYWRlZChmYWxzZSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBEZWZhdWx0QXZhdGFyID0gdXNlQ2FsbGJhY2soXG4gICAgKCkgPT4gKFxuICAgICAgPGRpdlxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYigxMjEsIDEzNywgMjU1KScsXG4gICAgICAgICAgd2lkdGg6IGAke3NpemV9cHhgLFxuICAgICAgICAgIGhlaWdodDogYCR7c2l6ZX1weGAsXG4gICAgICAgICAgYm94U2hhZG93OiAncmdiYSgyNDAsIDI0NiwgMjUyLCAwLjEpIDBweCAwcHggMHB4IDFweCcsXG4gICAgICAgIH19XG4gICAgICAgIGNsYXNzTmFtZT17YHJlbGF0aXZlIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBwLTEgdGV4dC10ZXh0LXByaW1hcnkgJHtjbGFzc05hbWV9YH1cbiAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgID5cbiAgICAgICAgPFVzZXJJY29uIC8+XG4gICAgICA8L2Rpdj5cbiAgICApLFxuICAgIFtzaXplLCBjbGFzc05hbWVdLFxuICApO1xuXG4gIGlmIChhdmF0YXJTZWVkLmxlbmd0aCA9PT0gMCAmJiBzaG93RGVmYXVsdFdoZW5FbXB0eSkge1xuICAgIHJldHVybiA8RGVmYXVsdEF2YXRhciAvPjtcbiAgfVxuXG4gIGlmIChhdmF0YXJTZWVkLmxlbmd0aCA+IDAgJiYgIWltYWdlRXJyb3IpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiIHN0eWxlPXt7IHdpZHRoOiBgJHtzaXplfXB4YCwgaGVpZ2h0OiBgJHtzaXplfXB4YCB9fT5cbiAgICAgICAgeyFpbWFnZUxvYWRlZCAmJiAoXG4gICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cInJvdW5kZWQtZnVsbFwiIHN0eWxlPXt7IHdpZHRoOiBgJHtzaXplfXB4YCwgaGVpZ2h0OiBgJHtzaXplfXB4YCB9fSAvPlxuICAgICAgICApfVxuXG4gICAgICAgIDxpbWdcbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgd2lkdGg6IGAke3NpemV9cHhgLFxuICAgICAgICAgICAgaGVpZ2h0OiBgJHtzaXplfXB4YCxcbiAgICAgICAgICAgIGRpc3BsYXk6IGltYWdlTG9hZGVkID8gJ2Jsb2NrJyA6ICdub25lJyxcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNsYXNzTmFtZT17YHJvdW5kZWQtZnVsbCAke2NsYXNzTmFtZX1gfVxuICAgICAgICAgIHNyYz17aW1hZ2VTcmN9XG4gICAgICAgICAgYWx0PXthbHRUZXh0fVxuICAgICAgICAgIG9uTG9hZD17aGFuZGxlSW1hZ2VMb2FkfVxuICAgICAgICAgIG9uRXJyb3I9e2hhbmRsZUltYWdlRXJyb3J9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgaWYgKGltYWdlRXJyb3IgJiYgc2hvd0RlZmF1bHRXaGVuRW1wdHkpIHtcbiAgICByZXR1cm4gPERlZmF1bHRBdmF0YXIgLz47XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF2YXRhcjtcbiIsImltcG9ydCB7IHN0YXJ0VHJhbnNpdGlvbiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFNlYXJjaCBhcyBTZWFyY2hJY29uIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCAqIGFzIFJhZGl4U2VsZWN0IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1zZWxlY3QnO1xuaW1wb3J0IHsgQ2hlY2tJY29uLCBDaGV2cm9uRG93bkljb24gfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtaWNvbnMnO1xuaW1wb3J0IHtcbiAgQ29tYm9ib3gsXG4gIENvbWJvYm94SXRlbSxcbiAgQ29tYm9ib3hMaXN0LFxuICBDb21ib2JveFByb3ZpZGVyLFxuICBDb21ib2JveENhbmNlbCxcbn0gZnJvbSAnQGFyaWFraXQvcmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBPcHRpb25XaXRoSWNvbiB9IGZyb20gJ34vY29tbW9uJztcbmltcG9ydCB7IFNlbGVjdFRyaWdnZXIsIFNlbGVjdFZhbHVlLCBTZWxlY3RTY3JvbGxEb3duQnV0dG9uIH0gZnJvbSAnLi9TZWxlY3QnO1xuaW1wb3J0IHsgdXNlQ29tYm9ib3ggfSBmcm9tICd+L2hvb2tzJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENvbWJvYm94Q29tcG9uZW50KHtcbiAgc2VsZWN0ZWRWYWx1ZSxcbiAgZGlzcGxheVZhbHVlLFxuICBpdGVtcyxcbiAgc2V0VmFsdWUsXG4gIGFyaWFMYWJlbCxcbiAgc2VhcmNoUGxhY2Vob2xkZXIsXG4gIHNlbGVjdFBsYWNlaG9sZGVyLFxuICBpc0NvbGxhcHNlZCxcbiAgU2VsZWN0SWNvbixcbn06IHtcbiAgYXJpYUxhYmVsOiBzdHJpbmc7XG4gIGRpc3BsYXlWYWx1ZT86IHN0cmluZztcbiAgc2VsZWN0ZWRWYWx1ZTogc3RyaW5nO1xuICBzZWFyY2hQbGFjZWhvbGRlcj86IHN0cmluZztcbiAgc2VsZWN0UGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIGl0ZW1zOiBPcHRpb25XaXRoSWNvbltdIHwgc3RyaW5nW107XG4gIHNldFZhbHVlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgaXNDb2xsYXBzZWQ6IGJvb2xlYW47XG4gIFNlbGVjdEljb24/OiBSZWFjdC5SZWFjdE5vZGU7XG59KSB7XG4gIGNvbnN0IG9wdGlvbnM6IE9wdGlvbldpdGhJY29uW10gPSAoaXRlbXMgPz8gW10pLm1hcCgob3B0aW9uOiBzdHJpbmcgfCBPcHRpb25XaXRoSWNvbikgPT4ge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHsgbGFiZWw6IG9wdGlvbiwgdmFsdWU6IG9wdGlvbiB9O1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9uO1xuICB9KTtcblxuICBjb25zdCB7IG9wZW4sIHNldE9wZW4sIHNldFNlYXJjaFZhbHVlLCBtYXRjaGVzIH0gPSB1c2VDb21ib2JveCh7XG4gICAgdmFsdWU6IHNlbGVjdGVkVmFsdWUsXG4gICAgb3B0aW9ucyxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8UmFkaXhTZWxlY3QuUm9vdFxuICAgICAgdmFsdWU9e3NlbGVjdGVkVmFsdWV9XG4gICAgICBvblZhbHVlQ2hhbmdlPXtzZXRWYWx1ZX1cbiAgICAgIG9wZW49e29wZW59XG4gICAgICAvKiogSGFja3kgZml4IGZvciByYWRpeC11aSBBbmRyb2lkIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vcmFkaXgtdWkvcHJpbWl0aXZlcy9pc3N1ZXMvMTY1OCAgKi9cbiAgICAgIG9uT3BlbkNoYW5nZT17KCkgPT4ge1xuICAgICAgICBpZiAob3BlbiA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHNldE9wZW4oZmFsc2UpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBzZXRPcGVuKCFvcGVuKTtcbiAgICAgICAgfSwgNzUpO1xuICAgICAgfX1cbiAgICA+XG4gICAgICA8Q29tYm9ib3hQcm92aWRlclxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBzZXRPcGVuPXtzZXRPcGVufVxuICAgICAgICByZXNldFZhbHVlT25IaWRlXG4gICAgICAgIGluY2x1ZGVzQmFzZUVsZW1lbnQ9e2ZhbHNlfVxuICAgICAgICBzZXRWYWx1ZT17KHZhbHVlKSA9PiB7XG4gICAgICAgICAgc3RhcnRUcmFuc2l0aW9uKCgpID0+IHtcbiAgICAgICAgICAgIHNldFNlYXJjaFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPFNlbGVjdFRyaWdnZXJcbiAgICAgICAgICBhcmlhLWxhYmVsPXthcmlhTGFiZWx9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICdmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBbJj5zcGFuXTpsaW5lLWNsYW1wLTEgWyY+c3Bhbl06ZmxleCBbJj5zcGFuXTp3LWZ1bGwgWyY+c3Bhbl06aXRlbXMtY2VudGVyIFsmPnNwYW5dOmdhcC0xIFsmPnNwYW5dOnRydW5jYXRlIFsmX3N2Z106aC00IFsmX3N2Z106dy00IFsmX3N2Z106c2hyaW5rLTAnLFxuICAgICAgICAgICAgaXNDb2xsYXBzZWRcbiAgICAgICAgICAgICAgPyAnZmxleCBoLTkgdy05IHNocmluay0wIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBwLTAgWyY+c3Bhbl06dy1hdXRvIFsmPnN2Z106aGlkZGVuJ1xuICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICAgICAgJ2JnLXdoaXRlIHRleHQtYmxhY2sgaG92ZXI6YmctZ3JheS01MCBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctZ3JheS01MDAgZGFyazpiZy1ncmF5LTg1MCBkYXJrOnRleHQtd2hpdGUnLFxuICAgICAgICAgICl9XG4gICAgICAgID5cbiAgICAgICAgICA8U2VsZWN0VmFsdWUgcGxhY2Vob2xkZXI9e3NlbGVjdFBsYWNlaG9sZGVyfT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXNzaXN0YW50LWl0ZW0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtZnVsbFwiPlxuICAgICAgICAgICAgICB7U2VsZWN0SWNvbiA/IFNlbGVjdEljb24gOiA8Q2hldnJvbkRvd25JY29uIC8+fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKCdtbC0yJywgaXNDb2xsYXBzZWQgPyAnaGlkZGVuJyA6ICcnKX1cbiAgICAgICAgICAgICAgc3R5bGU9e3sgdXNlclNlbGVjdDogJ25vbmUnIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtzZWxlY3RlZFZhbHVlXG4gICAgICAgICAgICAgICAgPyAoZGlzcGxheVZhbHVlID8/IHNlbGVjdGVkVmFsdWUpXG4gICAgICAgICAgICAgICAgOiBzZWxlY3RQbGFjZWhvbGRlciAmJiBzZWxlY3RQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L1NlbGVjdFZhbHVlPlxuICAgICAgICA8L1NlbGVjdFRyaWdnZXI+XG4gICAgICAgIDxSYWRpeFNlbGVjdC5Qb3J0YWw+XG4gICAgICAgICAgPFJhZGl4U2VsZWN0LkNvbnRlbnRcbiAgICAgICAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD17YXJpYUxhYmVsICsgJ3MnfVxuICAgICAgICAgICAgcG9zaXRpb249XCJwb3BwZXJcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgJ2JnLXBvcG92ZXIgdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcmVsYXRpdmUgei00MCBtYXgtaC1bNTJ2aF0gbWluLXctWzhyZW1dIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZ3JheS0yMDAgc2hhZG93LW1kIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06em9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06em9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06c2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpzbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06c2xpZGUtaW4tZnJvbS1ib3R0b20tMiBkYXJrOmJvcmRlci1ncmF5LTYwMCcsXG4gICAgICAgICAgICAgICdkYXRhLVtzaWRlPWJvdHRvbV06dHJhbnNsYXRlLXktMSBkYXRhLVtzaWRlPWxlZnRdOi10cmFuc2xhdGUteC0xIGRhdGEtW3NpZGU9cmlnaHRdOnRyYW5zbGF0ZS14LTEgZGF0YS1bc2lkZT10b3BdOi10cmFuc2xhdGUteS0xJyxcbiAgICAgICAgICAgICAgJ2JnLXdoaXRlIGRhcms6YmctZ3JheS03MDAnLFxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8UmFkaXhTZWxlY3QuVmlld3BvcnQgY2xhc3NOYW1lPVwibWItNSBoLVt2YXIoLS1yYWRpeC1zZWxlY3QtdHJpZ2dlci1oZWlnaHQpXSB3LWZ1bGwgbWluLXctW3ZhcigtLXJhZGl4LXNlbGVjdC10cmlnZ2VyLXdpZHRoKV1cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncm91cCBzdGlja3kgbGVmdC0wIHRvcC0wIHotMTAgZmxleCBoLTEyIGl0ZW1zLWNlbnRlciBnYXAtMiBiZy13aGl0ZSBweC0zIHB5LTIgdGV4dC1ibGFjayBkdXJhdGlvbi0zMDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGVcIj5cbiAgICAgICAgICAgICAgICA8U2VhcmNoSWNvbiBjbGFzc05hbWU9XCJoLTQgdy00IHRleHQtZ3JheS01MDAgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMzAwIGRhcms6Z3JvdXAtZm9jdXMtd2l0aGluOnRleHQtZ3JheS0zMDAgZGFyazpncm91cC1ob3Zlcjp0ZXh0LWdyYXktMzAwXCIgLz5cbiAgICAgICAgICAgICAgICA8Q29tYm9ib3hcbiAgICAgICAgICAgICAgICAgIGF1dG9TZWxlY3RcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgtMSByb3VuZGVkLW1kIGJvcmRlci1ub25lIGJnLXRyYW5zcGFyZW50IHB4LTIuNSBweS0yIHRleHQtc20gZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMSBmb2N1czpyaW5nLWdyYXktNzAwLzEwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTIwMC8xMFwiXG4gICAgICAgICAgICAgICAgICAvLyBBcmlha2l0J3MgQ29tYm9ib3ggbWFudWFsbHkgdHJpZ2dlcnMgYSBibHVyIGV2ZW50IG9uIHZpcnR1YWxseVxuICAgICAgICAgICAgICAgICAgLy8gYmx1cnJlZCBpdGVtcywgbWFraW5nIHRoZW0gd29yayBhcyBpZiB0aGV5IGhhZCBhY3R1YWwgRE9NXG4gICAgICAgICAgICAgICAgICAvLyBmb2N1cy4gVGhlc2UgYmx1ciBldmVudHMgbWlnaHQgaGFwcGVuIGFmdGVyIHRoZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICAgICAvLyBmb2N1cyBldmVudHMgaW4gdGhlIGNhcHR1cmUgcGhhc2UsIGxlYWRpbmcgUmFkaXggU2VsZWN0IHRvXG4gICAgICAgICAgICAgICAgICAvLyBjbG9zZSB0aGUgcG9wb3Zlci4gVGhpcyBoYXBwZW5zIGJlY2F1c2UgUmFkaXggU2VsZWN0IHJlbGllcyBvblxuICAgICAgICAgICAgICAgICAgLy8gdGhlIG9yZGVyIG9mIHRoZXNlIGNhcHR1cmVkIGV2ZW50cyB0byBkaXNjZXJuIGlmIHRoZSBmb2N1cyB3YXNcbiAgICAgICAgICAgICAgICAgIC8vIG91dHNpZGUgdGhlIGVsZW1lbnQuIFNpbmNlIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIHRoZVxuICAgICAgICAgICAgICAgICAgLy8gb25JbnRlcmFjdE91dHNpZGUgcHJvcCBpbiB0aGUgUmFkaXggU2VsZWN0Q29udGVudCBjb21wb25lbnQgdG9cbiAgICAgICAgICAgICAgICAgIC8vIHN0b3AgdGhpcyBiZWhhdmlvciwgd2UgY2FuIHR1cm4gb2ZmIEFyaWFraXQncyBiZWhhdmlvciBoZXJlLlxuICAgICAgICAgICAgICAgICAgb25CbHVyQ2FwdHVyZT17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxDb21ib2JveENhbmNlbFxuICAgICAgICAgICAgICAgICAgaGlkZVdoZW5FbXB0eT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInJlbGF0aXZlIGZsZXggaC01IHctNSBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgdGV4dC1ncmF5LTUwMCB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0zMDAgZGFyazpncm91cC1mb2N1cy13aXRoaW46dGV4dC1ncmF5LTMwMCBkYXJrOmdyb3VwLWhvdmVyOnRleHQtZ3JheS0zMDBcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8Q29tYm9ib3hMaXN0IGNsYXNzTmFtZT1cIm92ZXJmbG93LXktYXV0byBwLTEgcHktMlwiPlxuICAgICAgICAgICAgICAgIHttYXRjaGVzLm1hcCgoeyBsYWJlbCwgdmFsdWUsIGljb24gfSkgPT4gKFxuICAgICAgICAgICAgICAgICAgPFJhZGl4U2VsZWN0Lkl0ZW0ga2V5PXt2YWx1ZX0gdmFsdWU9e2Ake3ZhbHVlID8/ICcnfWB9IGFzQ2hpbGQ+XG4gICAgICAgICAgICAgICAgICAgIDxDb21ib2JveEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbGF0aXZlIGZsZXggdy1mdWxsIGN1cnNvci1wb2ludGVyIHNlbGVjdC1ub25lIGl0ZW1zLWNlbnRlciByb3VuZGVkLXNtIHB5LTEuNSBwbC0yIHByLTggdGV4dC1zbSBvdXRsaW5lLW5vbmUgZm9jdXM6YmctYWNjZW50IGZvY3VzOnRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOm9wYWNpdHktNTAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3JvdW5kZWQtbGcgaG92ZXI6YmctZ3JheS0xMDAvNTAgaG92ZXI6YmctZ3JheS01MCBkYXJrOnRleHQtd2hpdGUgZGFyazpob3ZlcjpiZy1ncmF5LTYwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAvKiogSGFja3kgZml4IGZvciByYWRpeC11aSBBbmRyb2lkIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vcmFkaXgtdWkvcHJpbWl0aXZlcy9pc3N1ZXMvMTY1OCAgKi9cbiAgICAgICAgICAgICAgICAgICAgICBvblRvdWNoRW5kPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShgJHt2YWx1ZSA/PyAnJ31gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldE9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJhYnNvbHV0ZSByaWdodC0yIGZsZXggaC0zLjUgdy0zLjUgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UmFkaXhTZWxlY3QuSXRlbUluZGljYXRvcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrSWNvbiBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUmFkaXhTZWxlY3QuSXRlbUluZGljYXRvcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPFJhZGl4U2VsZWN0Lkl0ZW1UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMyBkYXJrOnRleHQtd2hpdGUgWyZfc3ZnXTpoLTQgWyZfc3ZnXTp3LTQgWyZfc3ZnXTpzaHJpbmstMCBbJl9zdmddOnRleHQtZm9yZWdyb3VuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFzc2lzdGFudC1pdGVtIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aWNvbiAmJiBpY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2xhYmVsfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9SYWRpeFNlbGVjdC5JdGVtVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPC9Db21ib2JveEl0ZW0+XG4gICAgICAgICAgICAgICAgICA8L1JhZGl4U2VsZWN0Lkl0ZW0+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvQ29tYm9ib3hMaXN0PlxuICAgICAgICAgICAgPC9SYWRpeFNlbGVjdC5WaWV3cG9ydD5cbiAgICAgICAgICAgIDxTZWxlY3RTY3JvbGxEb3duQnV0dG9uIGNsYXNzTmFtZT1cImFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCByaWdodC0wXCIgLz5cbiAgICAgICAgICA8L1JhZGl4U2VsZWN0LkNvbnRlbnQ+XG4gICAgICAgIDwvUmFkaXhTZWxlY3QuUG9ydGFsPlxuICAgICAgPC9Db21ib2JveFByb3ZpZGVyPlxuICAgIDwvUmFkaXhTZWxlY3QuUm9vdD5cbiAgKTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBTZWxlY3QgZnJvbSAnQGFyaWFraXQvcmVhY3Qvc2VsZWN0JztcbmltcG9ydCB0eXBlIHsgT3B0aW9uIH0gZnJvbSAnfi9jb21tb24nO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5pbXBvcnQgJy4vRHJvcGRvd24uY3NzJztcblxuaW50ZXJmYWNlIERyb3Bkb3duUHJvcHMge1xuICB2YWx1ZT86IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgb3B0aW9uczogKHN0cmluZyB8IE9wdGlvbiB8IHsgZGl2aWRlcjogdHJ1ZSB9KVtdO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNpemVDbGFzc2VzPzogc3RyaW5nO1xuICB0ZXN0SWQ/OiBzdHJpbmc7XG4gIGljb24/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIGljb25Pbmx5PzogYm9vbGVhbjtcbiAgcmVuZGVyVmFsdWU/OiAob3B0aW9uOiBPcHRpb24pID0+IFJlYWN0LlJlYWN0Tm9kZTtcbiAgYXJpYUxhYmVsPzogc3RyaW5nO1xuICAnYXJpYS1sYWJlbGxlZGJ5Jz86IHN0cmluZztcbiAgcG9ydGFsPzogYm9vbGVhbjtcbn1cblxuY29uc3QgaXNEaXZpZGVyID0gKGl0ZW06IHN0cmluZyB8IE9wdGlvbiB8IHsgZGl2aWRlcjogdHJ1ZSB9KTogaXRlbSBpcyB7IGRpdmlkZXI6IHRydWUgfSA9PlxuICB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgJ2RpdmlkZXInIGluIGl0ZW07XG5cbmNvbnN0IGlzT3B0aW9uID0gKGl0ZW06IHN0cmluZyB8IE9wdGlvbiB8IHsgZGl2aWRlcjogdHJ1ZSB9KTogaXRlbSBpcyBPcHRpb24gPT5cbiAgdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmICd2YWx1ZScgaW4gaXRlbSAmJiAnbGFiZWwnIGluIGl0ZW07XG5cbmNvbnN0IERyb3Bkb3duOiBSZWFjdC5GQzxEcm9wZG93blByb3BzPiA9ICh7XG4gIHZhbHVlOiBzZWxlY3RlZFZhbHVlLFxuICBsYWJlbCA9ICcnLFxuICBvbkNoYW5nZSxcbiAgb3B0aW9ucyxcbiAgY2xhc3NOYW1lID0gJycsXG4gIHNpemVDbGFzc2VzLFxuICB0ZXN0SWQgPSAnZHJvcGRvd24tbWVudScsXG4gIGljb24sXG4gIGljb25Pbmx5ID0gZmFsc2UsXG4gIHJlbmRlclZhbHVlLFxuICBhcmlhTGFiZWwsXG4gICdhcmlhLWxhYmVsbGVkYnknOiBhcmlhTGFiZWxsZWRCeSxcbiAgcG9ydGFsID0gdHJ1ZSxcbn0pID0+IHtcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gIH07XG5cbiAgY29uc3Qgc2VsZWN0UHJvcHMgPSBTZWxlY3QudXNlU2VsZWN0U3RvcmUoe1xuICAgIHZhbHVlOiBzZWxlY3RlZFZhbHVlLFxuICAgIHNldFZhbHVlOiBoYW5kbGVDaGFuZ2UsXG4gIH0pO1xuXG4gIGNvbnN0IGdldE9wdGlvbk9iamVjdCA9ICh2YWw6IHN0cmluZyB8IHVuZGVmaW5lZCk6IE9wdGlvbiB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKHZhbCA9PSBudWxsIHx8IHZhbCA9PT0gJycpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zXG4gICAgICAuZmlsdGVyKChvKSA9PiAhaXNEaXZpZGVyKG8pKVxuICAgICAgLm1hcCgobykgPT4gKHR5cGVvZiBvID09PSAnc3RyaW5nJyA/IHsgdmFsdWU6IG8sIGxhYmVsOiBvIH0gOiBvKSlcbiAgICAgIC5maW5kKChvKSA9PiBpc09wdGlvbihvKSAmJiBvLnZhbHVlID09PSB2YWwpIGFzIE9wdGlvbiB8IHVuZGVmaW5lZDtcbiAgfTtcblxuICBjb25zdCBnZXRPcHRpb25MYWJlbCA9IChjdXJyZW50VmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT4ge1xuICAgIGlmIChjdXJyZW50VmFsdWUgPT0gbnVsbCB8fCBjdXJyZW50VmFsdWUgPT09ICcnKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNvbnN0IG9wdGlvbiA9IGdldE9wdGlvbk9iamVjdChjdXJyZW50VmFsdWUpO1xuICAgIHJldHVybiBvcHRpb24gPyBvcHRpb24ubGFiZWwgOiBjdXJyZW50VmFsdWU7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y24oJ3JlbGF0aXZlJywgY2xhc3NOYW1lKX0+XG4gICAgICA8U2VsZWN0LlNlbGVjdFxuICAgICAgICBzdG9yZT17c2VsZWN0UHJvcHN9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgJ2ZvY3VzOnJpbmctb2Zmc2V0LXJpbmctb2Zmc2V0IHJlbGF0aXZlIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcm91bmRlZC14bCBib3JkZXIgYm9yZGVyLWlucHV0IGJnLWJhY2tncm91bmQgcHgtMyBweS0yIHRleHQtc20gdGV4dC10ZXh0LXByaW1hcnkgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwIGVhc2UtaW4tb3V0IGhvdmVyOmJnLWFjY2VudCBob3Zlcjp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGZvY3VzOnJpbmctcmluZy1wcmltYXJ5JyxcbiAgICAgICAgICBpY29uT25seSA/ICdzaXplLTEwJyA6ICd3LWZpdCBnYXAtMicsXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApfVxuICAgICAgICBkYXRhLXRlc3RpZD17dGVzdElkfVxuICAgICAgICBhcmlhLWxhYmVsPXthcmlhTGFiZWx9XG4gICAgICAgIGFyaWEtbGFiZWxsZWRieT17YXJpYUxhYmVsbGVkQnl9XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAge2ljb259XG4gICAgICAgICAgeyFpY29uT25seSAmJiAoXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJibG9jayB0cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICB7bGFiZWx9XG4gICAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoZWRPcHRpb24gPSBnZXRPcHRpb25PYmplY3Qoc2VsZWN0ZWRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKG1hdGNoZWRPcHRpb24gJiYgcmVuZGVyVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJWYWx1ZShtYXRjaGVkT3B0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldE9wdGlvbkxhYmVsKHNlbGVjdGVkVmFsdWUpO1xuICAgICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7IWljb25Pbmx5ICYmIDxTZWxlY3QuU2VsZWN0QXJyb3cgLz59XG4gICAgICA8L1NlbGVjdC5TZWxlY3Q+XG4gICAgICA8U2VsZWN0LlNlbGVjdFBvcG92ZXJcbiAgICAgICAgcG9ydGFsPXtwb3J0YWx9XG4gICAgICAgIHN0b3JlPXtzZWxlY3RQcm9wc31cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAncG9wb3Zlci11aSB6LTQwIHRleHQtc20nLFxuICAgICAgICAgIHNpemVDbGFzc2VzLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICAnbWF4LWgtWzgwdmhdIG92ZXJmbG93LXktYXV0bycsXG4gICAgICAgICAgJ1twb2ludGVyLWV2ZW50czphdXRvXScsIC8vIE92ZXJyaWRlIGJvZHkncyBwb2ludGVyLWV2ZW50czpub25lIHdoZW4gaW4gbW9kYWxcbiAgICAgICAgKX1cbiAgICAgID5cbiAgICAgICAge29wdGlvbnMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGlmIChpc0RpdmlkZXIoaXRlbSkpIHtcbiAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17YGRpdmlkZXItJHtpbmRleH1gfSBjbGFzc05hbWU9XCJteS0xIGJvcmRlci10IGJvcmRlci1ib3JkZXItaGVhdnlcIiAvPjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBvcHRpb24gPSB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyB7IHZhbHVlOiBpdGVtLCBsYWJlbDogaXRlbSB9IDogaXRlbTtcbiAgICAgICAgICBpZiAoIWlzT3B0aW9uKG9wdGlvbikpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8U2VsZWN0LlNlbGVjdEl0ZW1cbiAgICAgICAgICAgICAga2V5PXtgb3B0aW9uLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgdmFsdWU9e1N0cmluZyhvcHRpb24udmFsdWUpfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzZWxlY3QtaXRlbVwiXG4gICAgICAgICAgICAgIGRhdGEtdGhlbWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICB7b3B0aW9uLmljb24gIT0gbnVsbCAmJiA8c3Bhbj57b3B0aW9uLmljb24gYXMgUmVhY3QuUmVhY3ROb2RlfTwvc3Bhbj59XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYmxvY2sgdHJ1bmNhdGVcIj57b3B0aW9uLmxhYmVsfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICB7c2VsZWN0ZWRWYWx1ZSA9PT0gb3B0aW9uLnZhbHVlICYmIChcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1sLWF1dG8gcGwtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpY29uLW1kIGJsb2NrIGdyb3VwLWhvdmVyOmhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIgMTJDMiA2LjQ3NzE1IDYuNDc3MTUgMiAxMiAyQzE3LjUyMjggMiAyMiA2LjQ3NzE1IDIyIDEyQzIyIDE3LjUyMjggMTcuNTIyOCAyMiAxMiAyMkM2LjQ3NzE1IDIyIDIgMTcuNTIyOCAyIDEyWk0xNi4wNzU1IDcuOTMyMTlDMTYuNTI3MiA4LjI1MDAzIDE2LjYzNTYgOC44NzM4MyAxNi4zMTc4IDkuMzI1NDlMMTEuNTY3OCAxNi4wNzU1QzExLjM5MzEgMTYuMzIzNyAxMS4xMTUyIDE2LjQ3OTIgMTAuODEyMyAxNi40OTgxQzEwLjUwOTMgMTYuNTE3IDEwLjIxNDIgMTYuMzk3MyAxMC4wMTAxIDE2LjE3MjdMNy41MTAwNiAxMy40MjI3QzcuMTM4NTUgMTMuMDE0IDcuMTY4NjcgMTIuMzgxNiA3LjU3NzMzIDEyLjAxMDFDNy45ODU5OCAxMS42Mzg2IDguNjE4NDMgMTEuNjY4NyA4Ljk4OTk0IDEyLjA3NzNMMTAuNjUwNCAxMy45MDM5TDE0LjY4MjIgOC4xNzQ1MUMxNSA3LjcyMjg0IDE1LjYyMzggNy42MTQzNiAxNi4wNzU1IDcuOTMyMTlaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9TZWxlY3QuU2VsZWN0SXRlbT5cbiAgICAgICAgICApO1xuICAgICAgICB9KX1cbiAgICAgIDwvU2VsZWN0LlNlbGVjdFBvcG92ZXI+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEcm9wZG93bjtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTZWFyY2ggfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25LZXlzLCB1c2VMb2NhbGl6ZSB9IGZyb20gJ34vaG9va3MnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuY29uc3QgQW5pbWF0ZWRTZWFyY2hJbnB1dCA9ICh7XG4gIHZhbHVlLFxuICBvbkNoYW5nZSxcbiAgaXNTZWFyY2hpbmc6IHNlYXJjaGluZyxcbiAgcGxhY2Vob2xkZXIsXG59OiB7XG4gIHZhbHVlPzogc3RyaW5nO1xuICBvbkNoYW5nZTogKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB2b2lkO1xuICBpc1NlYXJjaGluZz86IGJvb2xlYW47XG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG59KSA9PiB7XG4gIGNvbnN0IGlzU2VhcmNoaW5nID0gc2VhcmNoaW5nID09PSB0cnVlO1xuICBjb25zdCBoYXNWYWx1ZSA9IHZhbHVlICE9IG51bGwgJiYgdmFsdWUubGVuZ3RoID4gMDtcbiAgY29uc3QgbG9jYWxpemUgPSB1c2VMb2NhbGl6ZSgpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSB3LWZ1bGxcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgcm91bmRlZC1sZyB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDAgZWFzZS1pbi1vdXRcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiPlxuICAgICAgICAgIHsvKiBJY29uIG9uIHRoZSBsZWZ0ICovfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgbGVmdC0zIHRvcC0xLzIgei01MCAtdHJhbnNsYXRlLXktMS8yXCI+XG4gICAgICAgICAgICA8U2VhcmNoXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgYGgtNCB3LTQgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwIGVhc2UtaW4tb3V0YCxcbiAgICAgICAgICAgICAgICBpc1NlYXJjaGluZyAmJiBoYXNWYWx1ZSA/ICd0ZXh0LWJsdWUtNDAwJyA6ICd0ZXh0LWdyYXktNTAwJyxcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICB7LyogSW5wdXQgZmllbGQgKi99XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICBhcmlhLWxhYmVsPXtsb2NhbGl6ZSgnY29tX3VpX3NlYXJjaCcpfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgcGVlciByZWxhdGl2ZSB6LTIwIHctZnVsbCByb3VuZGVkLWxnIGJnLXN1cmZhY2Utc2Vjb25kYXJ5IHB5LTIgcGwtMTAgb3V0bGluZS1ub25lIGJhY2tkcm9wLWJsdXItc20gdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwIGVhc2UtaW4tb3V0IHBsYWNlaG9sZGVyOnRleHQtZ3JheS01MDAgZm9jdXM6cmluZy1yaW5nYH1cbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgey8qIEdyYWRpZW50IG92ZXJsYXkgKi99XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgcG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSBpbnNldC0wIHotMjAgcm91bmRlZC1sZyBiZy1ncmFkaWVudC10by1yIGZyb20tYmx1ZS01MDAvMjAgdmlhLXB1cnBsZS01MDAvMjAgdG8tYmx1ZS01MDAvMjAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwIGVhc2UtaW4tb3V0ICR7aXNTZWFyY2hpbmcgJiYgaGFzVmFsdWUgPyAnb3BhY2l0eS0xMDAgYmx1ci1zbScgOiAnb3BhY2l0eS0wIGJsdXItbm9uZSd9IGB9XG4gICAgICAgICAgLz5cblxuICAgICAgICAgIHsvKiBBbmltYXRlZCBsb2FkaW5nIGluZGljYXRvciAqL31cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9e2BhYnNvbHV0ZSByaWdodC0zIHRvcC0xLzIgei0yMCAtdHJhbnNsYXRlLXktMS8yIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMCBlYXNlLWluLW91dCAke2lzU2VhcmNoaW5nICYmIGhhc1ZhbHVlID8gJ3NjYWxlLTEwMCBvcGFjaXR5LTEwMCcgOiAnc2NhbGUtMCBvcGFjaXR5LTAnfSBgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgaC0yIHctMlwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgYW5pbWF0ZS1waW5nIHJvdW5kZWQtZnVsbCBiZy1ibHVlLTUwMC82MFwiIC8+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCByb3VuZGVkLWZ1bGwgYmctYmx1ZS01MDBcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBPdXRlciBnbG93IGVmZmVjdCAqL31cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtgYWJzb2x1dGUgLWluc2V0LTggLXotMTAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNzAwIGVhc2UtaW4tb3V0ICR7aXNTZWFyY2hpbmcgJiYgaGFzVmFsdWUgPyAnc2NhbGUtMTA1IG9wYWNpdHktMTAwJyA6ICdzY2FsZS0xMDAgb3BhY2l0eS0wJ30gYH1cbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgYmctZ3JhZGllbnQtcmFkaWFsIGFic29sdXRlIGluc2V0LTAgZnJvbS1ibHVlLTUwMC8xMCB0by10cmFuc3BhcmVudCB0cmFuc2l0aW9uLW9wYWNpdHkgZHVyYXRpb24tNzAwIGVhc2UtaW4tb3V0ICR7aXNTZWFyY2hpbmcgJiYgaGFzVmFsdWUgPyAnYW5pbWF0ZS1wdWxzZS1zbG93IG9wYWNpdHktMTAwJyA6ICdvcGFjaXR5LTAnfSBgfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgYWJzb2x1dGUgaW5zZXQtMCBiZy1ncmFkaWVudC10by1yIGZyb20tcHVycGxlLTUwMC81IHZpYS1ibHVlLTUwMC81IHRvLXB1cnBsZS01MDAvNSBibHVyLXhsIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTcwMCBlYXNlLWluLW91dCAke2lzU2VhcmNoaW5nICYmIGhhc1ZhbHVlID8gJ2FuaW1hdGUtZ3JhZGllbnQteCBvcGFjaXR5LTEwMCcgOiAnb3BhY2l0eS0wJ30gYH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2BhYnNvbHV0ZSBpbnNldC0wIC16LTIwIHNjYWxlLTEwMCBiZy1ncmFkaWVudC10by1yIGZyb20tYmx1ZS01MDAvMTAgdmlhLXB1cnBsZS01MDAvMTAgdG8tYmx1ZS01MDAvMTAgb3BhY2l0eS0wIGJsdXIteGwgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwIGVhc2UtaW4tb3V0IHBlZXItZm9jdXM6c2NhbGUtMTA1IHBlZXItZm9jdXM6b3BhY2l0eS0xMDBgfVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFuaW1hdGVkU2VhcmNoSW5wdXQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSwgbWVtbywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVZpcnR1YWxpemVyIH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXZpcnR1YWwnO1xuaW1wb3J0IHtcbiAgUm93LFxuICBDb2x1bW5EZWYsXG4gIGZsZXhSZW5kZXIsXG4gIFNvcnRpbmdTdGF0ZSxcbiAgdXNlUmVhY3RUYWJsZSxcbiAgZ2V0Q29yZVJvd01vZGVsLFxuICBWaXNpYmlsaXR5U3RhdGUsXG4gIGdldFNvcnRlZFJvd01vZGVsLFxuICBDb2x1bW5GaWx0ZXJzU3RhdGUsXG4gIGdldEZpbHRlcmVkUm93TW9kZWwsXG59IGZyb20gJ0B0YW5zdGFjay9yZWFjdC10YWJsZSc7XG5pbXBvcnQgdHlwZSB7IFRhYmxlIGFzIFRUYWJsZSB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC10YWJsZSc7XG5pbXBvcnQgeyBUYWJsZSwgVGFibGVSb3csIFRhYmxlQm9keSwgVGFibGVDZWxsLCBUYWJsZUhlYWQsIFRhYmxlSGVhZGVyIH0gZnJvbSAnLi9UYWJsZSc7XG5pbXBvcnQgeyB1c2VNZWRpYVF1ZXJ5LCB1c2VMb2NhbGl6ZSwgVHJhbnNsYXRpb25LZXlzIH0gZnJvbSAnfi9ob29rcyc7XG5pbXBvcnQgQW5pbWF0ZWRTZWFyY2hJbnB1dCBmcm9tICcuL0FuaW1hdGVkU2VhcmNoSW5wdXQnO1xuaW1wb3J0IHsgVHJhc2hJY29uLCBTcGlubmVyIH0gZnJvbSAnfi9zdmdzJztcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSAnLi9Ta2VsZXRvbic7XG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gJy4vQ2hlY2tib3gnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi9CdXR0b24nO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxudHlwZSBUYWJsZUNvbHVtbjxURGF0YSwgVFZhbHVlPiA9IENvbHVtbkRlZjxURGF0YSwgVFZhbHVlPiAmIHtcbiAgbWV0YT86IHtcbiAgICBzaXplPzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIG1vYmlsZVNpemU/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgbWluV2lkdGg/OiBzdHJpbmcgfCBudW1iZXI7XG4gIH07XG59O1xuXG5jb25zdCBTZWxlY3Rpb25DaGVja2JveCA9IG1lbW8oXG4gICh7XG4gICAgY2hlY2tlZCxcbiAgICBvbkNoYW5nZSxcbiAgICBhcmlhTGFiZWwsXG4gIH06IHtcbiAgICBjaGVja2VkOiBib29sZWFuO1xuICAgIG9uQ2hhbmdlOiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQ7XG4gICAgYXJpYUxhYmVsOiBzdHJpbmc7XG4gIH0pID0+IChcbiAgICA8ZGl2XG4gICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgIHRhYkluZGV4PXswfVxuICAgICAgb25LZXlEb3duPXsoZSkgPT4gZS5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICAgIGNsYXNzTmFtZT1cImZsZXggaC1mdWxsIHctWzMwcHhdIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiXG4gICAgICBvbkNsaWNrPXsoZSkgPT4gZS5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICA+XG4gICAgICA8Q2hlY2tib3ggY2hlY2tlZD17Y2hlY2tlZH0gb25DaGVja2VkQ2hhbmdlPXtvbkNoYW5nZX0gYXJpYS1sYWJlbD17YXJpYUxhYmVsfSAvPlxuICAgIDwvZGl2PlxuICApLFxuKTtcblxuU2VsZWN0aW9uQ2hlY2tib3guZGlzcGxheU5hbWUgPSAnU2VsZWN0aW9uQ2hlY2tib3gnO1xuXG5pbnRlcmZhY2UgRGF0YVRhYmxlUHJvcHM8VERhdGEsIFRWYWx1ZT4ge1xuICBjb2x1bW5zOiBUYWJsZUNvbHVtbjxURGF0YSwgVFZhbHVlPltdO1xuICBkYXRhOiBURGF0YVtdO1xuICBvbkRlbGV0ZT86IChzZWxlY3RlZFJvd3M6IFREYXRhW10pID0+IFByb21pc2U8dm9pZD47XG4gIGZpbHRlckNvbHVtbj86IHN0cmluZztcbiAgZGVmYXVsdFNvcnQ/OiBTb3J0aW5nU3RhdGU7XG4gIGNvbHVtblZpc2liaWxpdHlNYXA/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHBhZ2VTaXplPzogbnVtYmVyO1xuICBpc0ZldGNoaW5nTmV4dFBhZ2U/OiBib29sZWFuO1xuICBoYXNOZXh0UGFnZT86IGJvb2xlYW47XG4gIGZldGNoTmV4dFBhZ2U/OiAob3B0aW9ucz86IHVua25vd24pID0+IFByb21pc2U8dW5rbm93bj47XG4gIGVuYWJsZVJvd1NlbGVjdGlvbj86IGJvb2xlYW47XG4gIHNob3dDaGVja2JveGVzPzogYm9vbGVhbjtcbiAgb25GaWx0ZXJDaGFuZ2U/OiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgZmlsdGVyVmFsdWU/OiBzdHJpbmc7XG4gIGlzTG9hZGluZz86IGJvb2xlYW47XG4gIGVuYWJsZVNlYXJjaD86IGJvb2xlYW47XG59XG5cbmNvbnN0IFRhYmxlUm93Q29tcG9uZW50ID0gPFREYXRhLCBUVmFsdWU+KHtcbiAgcm93LFxuICBpc1NtYWxsU2NyZWVuLFxuICBvblNlbGVjdGlvbkNoYW5nZSxcbiAgaW5kZXgsXG4gIGlzU2VhcmNoaW5nLFxufToge1xuICByb3c6IFJvdzxURGF0YT47XG4gIGlzU21hbGxTY3JlZW46IGJvb2xlYW47XG4gIG9uU2VsZWN0aW9uQ2hhbmdlPzogKHJvd0lkOiBzdHJpbmcsIHNlbGVjdGVkOiBib29sZWFuKSA9PiB2b2lkO1xuICBpbmRleDogbnVtYmVyO1xuICBpc1NlYXJjaGluZzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgaGFuZGxlU2VsZWN0aW9uID0gdXNlQ2FsbGJhY2soXG4gICAgKHZhbHVlOiBib29sZWFuKSA9PiB7XG4gICAgICByb3cudG9nZ2xlU2VsZWN0ZWQodmFsdWUpO1xuICAgICAgb25TZWxlY3Rpb25DaGFuZ2U/Lihyb3cuaWQsIHZhbHVlKTtcbiAgICB9LFxuICAgIFtyb3csIG9uU2VsZWN0aW9uQ2hhbmdlXSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxUYWJsZVJvd1xuICAgICAgZGF0YS1zdGF0ZT17cm93LmdldElzU2VsZWN0ZWQoKSA/ICdzZWxlY3RlZCcgOiB1bmRlZmluZWR9XG4gICAgICBjbGFzc05hbWU9XCJtb3Rpb24tc2FmZTphbmltYXRlLWZhZGVJbiBib3JkZXItYiBib3JkZXItYm9yZGVyLWxpZ2h0IHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCBlYXNlLW91dCBob3ZlcjpiZy1zdXJmYWNlLXNlY29uZGFyeVwiXG4gICAgICBzdHlsZT17e1xuICAgICAgICBhbmltYXRpb25EZWxheTogYCR7aW5kZXggKiAyMH1tc2AsXG4gICAgICAgIHRyYW5zZm9ybTogYHRyYW5zbGF0ZVkoJHtpc1NlYXJjaGluZyA/ICc0cHgnIDogJzAnfSlgLFxuICAgICAgICBvcGFjaXR5OiBpc1NlYXJjaGluZyA/IDAuNSA6IDEsXG4gICAgICB9fVxuICAgID5cbiAgICAgIHtyb3cuZ2V0VmlzaWJsZUNlbGxzKCkubWFwKChjZWxsKSA9PiB7XG4gICAgICAgIGlmIChjZWxsLmNvbHVtbi5pZCA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFRhYmxlQ2VsbCBrZXk9e2NlbGwuaWR9IGNsYXNzTmFtZT1cInB4LTIgcHktMSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDBcIj5cbiAgICAgICAgICAgICAgPFNlbGVjdGlvbkNoZWNrYm94XG4gICAgICAgICAgICAgICAgY2hlY2tlZD17cm93LmdldElzU2VsZWN0ZWQoKX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlU2VsZWN0aW9ufVxuICAgICAgICAgICAgICAgIGFyaWFMYWJlbD1cIlNlbGVjdCByb3dcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjZWxsLmNvbHVtbi5pZCA9PT0gJ3RpdGxlJykge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8VGFibGVIZWFkXG4gICAgICAgICAgICAgIGtleT17Y2VsbC5pZH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy0wIG1heC13LTAgcHgtMiBweS0xIGFsaWduLW1pZGRsZSB0ZXh0LXhzIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCBzbTpweC00IHNtOnB5LTIgc206dGV4dC1zbVwiXG4gICAgICAgICAgICAgIHN0eWxlPXtnZXRDb2x1bW5TdHlsZShcbiAgICAgICAgICAgICAgICBjZWxsLmNvbHVtbi5jb2x1bW5EZWYgYXMgVGFibGVDb2x1bW48VERhdGEsIFRWYWx1ZT4sXG4gICAgICAgICAgICAgICAgaXNTbWFsbFNjcmVlbixcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgc2NvcGU9XCJyb3dcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm92ZXJmbG93LXZpc2libGUgdGV4dC1lbGxpcHNpc1wiPlxuICAgICAgICAgICAgICAgIHtmbGV4UmVuZGVyKGNlbGwuY29sdW1uLmNvbHVtbkRlZi5jZWxsLCBjZWxsLmdldENvbnRleHQoKSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9UYWJsZUhlYWQ+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPFRhYmxlQ2VsbFxuICAgICAgICAgICAga2V5PXtjZWxsLmlkfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwidy0wIG1heC13LTAgb3ZlcmZsb3ctdmlzaWJsZSBweC0yIHB5LTEgYWxpZ24tbWlkZGxlIHRleHQteHMgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwIHNtOnB4LTQgc206cHktMiBzbTp0ZXh0LXNtXCJcbiAgICAgICAgICAgIHN0eWxlPXtnZXRDb2x1bW5TdHlsZShcbiAgICAgICAgICAgICAgY2VsbC5jb2x1bW4uY29sdW1uRGVmIGFzIFRhYmxlQ29sdW1uPFREYXRhLCBUVmFsdWU+LFxuICAgICAgICAgICAgICBpc1NtYWxsU2NyZWVuLFxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm92ZXJmbG93LXZpc2libGUgdGV4dC1lbGxpcHNpc1wiPlxuICAgICAgICAgICAgICB7ZmxleFJlbmRlcihjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbCwgY2VsbC5nZXRDb250ZXh0KCkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICk7XG4gICAgICB9KX1cbiAgICA8L1RhYmxlUm93PlxuICApO1xufTtcblxuY29uc3QgTWVtb2l6ZWRUYWJsZVJvdyA9IG1lbW8oVGFibGVSb3dDb21wb25lbnQpIGFzIHR5cGVvZiBUYWJsZVJvd0NvbXBvbmVudDtcblxuZnVuY3Rpb24gZ2V0Q29sdW1uU3R5bGU8VERhdGEsIFRWYWx1ZT4oXG4gIGNvbHVtbjogVGFibGVDb2x1bW48VERhdGEsIFRWYWx1ZT4sXG4gIGlzU21hbGxTY3JlZW46IGJvb2xlYW4sXG4pOiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogaXNTbWFsbFNjcmVlbiA/IGNvbHVtbi5tZXRhPy5tb2JpbGVTaXplIDogY29sdW1uLm1ldGE/LnNpemUsXG4gICAgbWluV2lkdGg6IGNvbHVtbi5tZXRhPy5taW5XaWR0aCxcbiAgICBtYXhXaWR0aDogY29sdW1uLm1ldGE/LnNpemUsXG4gIH07XG59XG5cbmNvbnN0IERlbGV0ZUJ1dHRvbiA9IG1lbW8oXG4gICh7XG4gICAgb25EZWxldGUsXG4gICAgaXNEZWxldGluZyxcbiAgICBkaXNhYmxlZCxcbiAgICBpc1NtYWxsU2NyZWVuLFxuICAgIGFyaWFMYWJlbCxcbiAgfToge1xuICAgIG9uRGVsZXRlPzogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgICBpc0RlbGV0aW5nOiBib29sZWFuO1xuICAgIGRpc2FibGVkOiBib29sZWFuO1xuICAgIGlzU21hbGxTY3JlZW46IGJvb2xlYW47XG4gICAgYXJpYUxhYmVsOiBzdHJpbmc7XG4gIH0pID0+IHtcbiAgICBpZiAoIW9uRGVsZXRlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIDxCdXR0b25cbiAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICBvbkNsaWNrPXtvbkRlbGV0ZX1cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICBjbGFzc05hbWU9e2NuKCdtaW4tdy1bNDBweF0gdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwJywgaXNTbWFsbFNjcmVlbiAmJiAncHgtMiBweS0xJyl9XG4gICAgICAgIGFyaWEtbGFiZWw9e2FyaWFMYWJlbH1cbiAgICAgID5cbiAgICAgICAge2lzRGVsZXRpbmcgPyAoXG4gICAgICAgICAgPFNwaW5uZXIgY2xhc3NOYW1lPVwic2l6ZS00XCIgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPFRyYXNoSWNvbiBjbGFzc05hbWU9XCJzaXplLTMuNSB0ZXh0LXJlZC00MDAgc206c2l6ZS00XCIgLz5cbiAgICAgICAgICAgIHshaXNTbWFsbFNjcmVlbiAmJiA8c3BhbiBjbGFzc05hbWU9XCJtbC0yXCI+RGVsZXRlPC9zcGFuPn1cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICk7XG4gIH0sXG4pO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEYXRhVGFibGU8VERhdGEsIFRWYWx1ZT4oe1xuICBjb2x1bW5zLFxuICBkYXRhLFxuICBvbkRlbGV0ZSxcbiAgZmlsdGVyQ29sdW1uLFxuICBkZWZhdWx0U29ydCA9IFtdLFxuICBjbGFzc05hbWUgPSAnJyxcbiAgaXNGZXRjaGluZ05leHRQYWdlID0gZmFsc2UsXG4gIGhhc05leHRQYWdlID0gZmFsc2UsXG4gIGZldGNoTmV4dFBhZ2UsXG4gIGVuYWJsZVJvd1NlbGVjdGlvbiA9IHRydWUsXG4gIHNob3dDaGVja2JveGVzID0gdHJ1ZSxcbiAgb25GaWx0ZXJDaGFuZ2UsXG4gIGZpbHRlclZhbHVlLFxuICBpc0xvYWRpbmcsXG4gIGVuYWJsZVNlYXJjaCA9IHRydWUsXG59OiBEYXRhVGFibGVQcm9wczxURGF0YSwgVFZhbHVlPikge1xuICBjb25zdCBsb2NhbGl6ZSA9IHVzZUxvY2FsaXplKCk7XG4gIGNvbnN0IGlzU21hbGxTY3JlZW4gPSB1c2VNZWRpYVF1ZXJ5KCcobWF4LXdpZHRoOiA3NjhweCknKTtcbiAgY29uc3QgdGFibGVDb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuXG4gIGNvbnN0IFtpc0RlbGV0aW5nLCBzZXRJc0RlbGV0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3Jvd1NlbGVjdGlvbiwgc2V0Um93U2VsZWN0aW9uXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+Pih7fSk7XG4gIGNvbnN0IFtzb3J0aW5nLCBzZXRTb3J0aW5nXSA9IHVzZVN0YXRlPFNvcnRpbmdTdGF0ZT4oZGVmYXVsdFNvcnQpO1xuICBjb25zdCBbY29sdW1uRmlsdGVycywgc2V0Q29sdW1uRmlsdGVyc10gPSB1c2VTdGF0ZTxDb2x1bW5GaWx0ZXJzU3RhdGU+KFtdKTtcbiAgY29uc3QgW2NvbHVtblZpc2liaWxpdHksIHNldENvbHVtblZpc2liaWxpdHldID0gdXNlU3RhdGU8VmlzaWJpbGl0eVN0YXRlPih7fSk7XG4gIGNvbnN0IFtzZWFyY2hUZXJtLCBzZXRTZWFyY2hUZXJtXSA9IHVzZVN0YXRlKGZpbHRlclZhbHVlID8/ICcnKTtcbiAgY29uc3QgW2lzU2VhcmNoaW5nLCBzZXRJc1NlYXJjaGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzZWFyY2hSZXN1bHRzQW5ub3VuY2VtZW50LCBzZXRTZWFyY2hSZXN1bHRzQW5ub3VuY2VtZW50XSA9IHVzZVN0YXRlKCcnKTtcblxuICBjb25zdCB0YWJsZUNvbHVtbnMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIWVuYWJsZVJvd1NlbGVjdGlvbiB8fCAhc2hvd0NoZWNrYm94ZXMpIHtcbiAgICAgIHJldHVybiBjb2x1bW5zO1xuICAgIH1cbiAgICBjb25zdCBzZWxlY3RDb2x1bW4gPSB7XG4gICAgICBpZDogJ3NlbGVjdCcsXG4gICAgICBoZWFkZXI6ICh7IHRhYmxlIH06IHsgdGFibGU6IFRUYWJsZTxURGF0YT4gfSkgPT4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaC1mdWxsIHctWzMwcHhdIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgY2hlY2tlZD17dGFibGUuZ2V0SXNBbGxQYWdlUm93c1NlbGVjdGVkKCl9XG4gICAgICAgICAgICBvbkNoZWNrZWRDaGFuZ2U9eyh2YWx1ZSkgPT4gdGFibGUudG9nZ2xlQWxsUGFnZVJvd3NTZWxlY3RlZChCb29sZWFuKHZhbHVlKSl9XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2VsZWN0IGFsbFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApLFxuICAgICAgY2VsbDogKHsgcm93IH06IHsgcm93OiBSb3c8VERhdGE+IH0pID0+IChcbiAgICAgICAgPFNlbGVjdGlvbkNoZWNrYm94XG4gICAgICAgICAgY2hlY2tlZD17cm93LmdldElzU2VsZWN0ZWQoKX1cbiAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiByb3cudG9nZ2xlU2VsZWN0ZWQodmFsdWUpfVxuICAgICAgICAgIGFyaWFMYWJlbD1cIlNlbGVjdCByb3dcIlxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIG1ldGE6IHsgc2l6ZTogJzUwcHgnIH0sXG4gICAgfTtcbiAgICByZXR1cm4gW3NlbGVjdENvbHVtbiwgLi4uY29sdW1uc107XG4gIH0sIFtjb2x1bW5zLCBlbmFibGVSb3dTZWxlY3Rpb24sIHNob3dDaGVja2JveGVzXSk7XG5cbiAgY29uc3QgdGFibGUgPSB1c2VSZWFjdFRhYmxlKHtcbiAgICBkYXRhLFxuICAgIGNvbHVtbnM6IHRhYmxlQ29sdW1ucyxcbiAgICBnZXRDb3JlUm93TW9kZWw6IGdldENvcmVSb3dNb2RlbCgpLFxuICAgIGdldFNvcnRlZFJvd01vZGVsOiBnZXRTb3J0ZWRSb3dNb2RlbCgpLFxuICAgIGdldEZpbHRlcmVkUm93TW9kZWw6IGdldEZpbHRlcmVkUm93TW9kZWwoKSxcbiAgICBlbmFibGVSb3dTZWxlY3Rpb24sXG4gICAgZW5hYmxlTXVsdGlSb3dTZWxlY3Rpb246IHRydWUsXG4gICAgc3RhdGU6IHtcbiAgICAgIHNvcnRpbmcsXG4gICAgICBjb2x1bW5GaWx0ZXJzLFxuICAgICAgY29sdW1uVmlzaWJpbGl0eSxcbiAgICAgIHJvd1NlbGVjdGlvbixcbiAgICB9LFxuICAgIG9uU29ydGluZ0NoYW5nZTogc2V0U29ydGluZyxcbiAgICBvbkNvbHVtbkZpbHRlcnNDaGFuZ2U6IHNldENvbHVtbkZpbHRlcnMsXG4gICAgb25Db2x1bW5WaXNpYmlsaXR5Q2hhbmdlOiBzZXRDb2x1bW5WaXNpYmlsaXR5LFxuICAgIG9uUm93U2VsZWN0aW9uQ2hhbmdlOiBzZXRSb3dTZWxlY3Rpb24sXG4gIH0pO1xuXG4gIGNvbnN0IHsgcm93cyB9ID0gdGFibGUuZ2V0Um93TW9kZWwoKTtcblxuICBjb25zdCByb3dWaXJ0dWFsaXplciA9IHVzZVZpcnR1YWxpemVyKHtcbiAgICBjb3VudDogcm93cy5sZW5ndGgsXG4gICAgZ2V0U2Nyb2xsRWxlbWVudDogKCkgPT4gdGFibGVDb250YWluZXJSZWYuY3VycmVudCxcbiAgICBlc3RpbWF0ZVNpemU6IHVzZUNhbGxiYWNrKCgpID0+IDQ4LCBbXSksXG4gICAgb3ZlcnNjYW46IDEwLFxuICB9KTtcblxuICBjb25zdCB2aXJ0dWFsUm93cyA9IHJvd1ZpcnR1YWxpemVyLmdldFZpcnR1YWxJdGVtcygpO1xuICBjb25zdCB0b3RhbFNpemUgPSByb3dWaXJ0dWFsaXplci5nZXRUb3RhbFNpemUoKTtcbiAgY29uc3QgcGFkZGluZ1RvcCA9IHZpcnR1YWxSb3dzLmxlbmd0aCA+IDAgPyB2aXJ0dWFsUm93c1swXS5zdGFydCA6IDA7XG4gIGNvbnN0IHBhZGRpbmdCb3R0b20gPVxuICAgIHZpcnR1YWxSb3dzLmxlbmd0aCA+IDAgPyB0b3RhbFNpemUgLSB2aXJ0dWFsUm93c1t2aXJ0dWFsUm93cy5sZW5ndGggLSAxXS5lbmQgOiAwO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc2Nyb2xsRWxlbWVudCA9IHRhYmxlQ29udGFpbmVyUmVmLmN1cnJlbnQ7XG4gICAgaWYgKCFzY3JvbGxFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlU2Nyb2xsID0gYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKCFoYXNOZXh0UGFnZSB8fCBpc0ZldGNoaW5nTmV4dFBhZ2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBzY3JvbGxFbGVtZW50O1xuICAgICAgaWYgKHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCA8PSBjbGllbnRIZWlnaHQgKiAxLjUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBTYWZlbHkgZmV0Y2ggbmV4dCBwYWdlIHdpdGhvdXQgYnJlYWtpbmcgaWYgbGFzdFBhZ2UgaXMgdW5kZWZpbmVkXG4gICAgICAgICAgYXdhaXQgZmV0Y2hOZXh0UGFnZT8uKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignVW5hYmxlIHRvIGZldGNoIG5leHQgcGFnZTonLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgc2Nyb2xsRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICByZXR1cm4gKCkgPT4gc2Nyb2xsRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICB9LCBbaGFzTmV4dFBhZ2UsIGlzRmV0Y2hpbmdOZXh0UGFnZSwgZmV0Y2hOZXh0UGFnZV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0SXNTZWFyY2hpbmcodHJ1ZSk7XG4gICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgb25GaWx0ZXJDaGFuZ2U/LihzZWFyY2hUZXJtKTtcbiAgICAgIHNldElzU2VhcmNoaW5nKGZhbHNlKTtcbiAgICB9LCAzMDApO1xuICAgIHJldHVybiAoKSA9PiBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gIH0sIFtzZWFyY2hUZXJtLCBvbkZpbHRlckNoYW5nZV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzZWFyY2hUZXJtLnRyaW0oKSB8fCBpc1NlYXJjaGluZykge1xuICAgICAgc2V0U2VhcmNoUmVzdWx0c0Fubm91bmNlbWVudCgnJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0Q291bnQgPSByb3dzLmxlbmd0aDtcbiAgICBjb25zdCBhbm5vdW5jZW1lbnQgPVxuICAgICAgcmVzdWx0Q291bnQgPT09IDFcbiAgICAgICAgPyBsb2NhbGl6ZSgnY29tX3VpX3Jlc3VsdF9mb3VuZCcgYXMgVHJhbnNsYXRpb25LZXlzLCB7XG4gICAgICAgICAgICBjb3VudDogcmVzdWx0Q291bnQsXG4gICAgICAgICAgfSlcbiAgICAgICAgOiBsb2NhbGl6ZSgnY29tX3VpX3Jlc3VsdHNfZm91bmQnIGFzIFRyYW5zbGF0aW9uS2V5cywge1xuICAgICAgICAgICAgY291bnQ6IHJlc3VsdENvdW50LFxuICAgICAgICAgIH0pO1xuXG4gICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0U2VhcmNoUmVzdWx0c0Fubm91bmNlbWVudChhbm5vdW5jZW1lbnQpO1xuICAgIH0sIDMwMCk7XG5cbiAgICByZXR1cm4gKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICB9LCBbcm93cy5sZW5ndGgsIHNlYXJjaFRlcm0sIGlzU2VhcmNoaW5nLCBsb2NhbGl6ZV0pO1xuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZSA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBpZiAoIW9uRGVsZXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2V0SXNEZWxldGluZyh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgaXRlbXNUb0RlbGV0ZSA9IHRhYmxlLmdldEZpbHRlcmVkU2VsZWN0ZWRSb3dNb2RlbCgpLnJvd3MubWFwKChyKSA9PiByLm9yaWdpbmFsKTtcbiAgICAgIGF3YWl0IG9uRGVsZXRlKGl0ZW1zVG9EZWxldGUpO1xuICAgICAgc2V0Um93U2VsZWN0aW9uKHt9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0SXNEZWxldGluZyhmYWxzZSk7XG4gICAgfVxuICB9LCBbb25EZWxldGUsIHRhYmxlXSk7XG5cbiAgY29uc3QgZ2V0UmFuZG9tV2lkdGggPSAoKSA9PiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAoNDEwIC0gMTcwICsgMSkpICsgMTcwO1xuXG4gIGNvbnN0IHNrZWxldG9ucyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDEzIH0sIChfLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHJhbmRvbVdpZHRoID0gZ2V0UmFuZG9tV2lkdGgoKTtcbiAgICBjb25zdCBmaXJzdERhdGFDb2x1bW5JbmRleCA9IHRhYmxlQ29sdW1uc1swXT8uaWQgPT09ICdzZWxlY3QnID8gMSA6IDA7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFRhYmxlUm93IGtleT17aW5kZXh9IGNsYXNzTmFtZT1cIm1vdGlvbi1zYWZlOmFuaW1hdGUtZmFkZUluIGJvcmRlci1iIGJvcmRlci1ib3JkZXItbGlnaHRcIj5cbiAgICAgICAge3RhYmxlQ29sdW1ucy5tYXAoKGNvbHVtbiwgY29sdW1uSW5kZXgpID0+IHtcbiAgICAgICAgICBjb25zdCBzdHlsZSA9IGdldENvbHVtblN0eWxlKGNvbHVtbiBhcyBUYWJsZUNvbHVtbjxURGF0YSwgVFZhbHVlPiwgaXNTbWFsbFNjcmVlbik7XG4gICAgICAgICAgY29uc3QgaXNGaXJzdERhdGFDb2x1bW4gPSBjb2x1bW5JbmRleCA9PT0gZmlyc3REYXRhQ29sdW1uSW5kZXg7XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFRhYmxlQ2VsbCBrZXk9e2NvbHVtbi5pZH0gY2xhc3NOYW1lPVwicHgtMiBweS0xIHNtOnB4LTQgc206cHktMlwiIHN0eWxlPXtzdHlsZX0+XG4gICAgICAgICAgICAgIDxTa2VsZXRvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtNlwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e2lzRmlyc3REYXRhQ29sdW1uID8geyB3aWR0aDogYCR7cmFuZG9tV2lkdGh9cHhgIH0gOiB7IHdpZHRoOiAnMTAwJScgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgICAgICk7XG4gICAgICAgIH0pfVxuICAgICAgPC9UYWJsZVJvdz5cbiAgICApO1xuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbignZmxleCBoLWZ1bGwgZmxleC1jb2wgZ2FwLTQnLCBjbGFzc05hbWUpfT5cbiAgICAgIDxkaXYgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCIgYXJpYS1hdG9taWM9XCJ0cnVlXCIgY2xhc3NOYW1lPVwic3Itb25seVwiPlxuICAgICAgICB7c2VhcmNoUmVzdWx0c0Fubm91bmNlbWVudH1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogVGFibGUgY29udHJvbHMgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMiBzbTpnYXAtNFwiPlxuICAgICAgICB7ZW5hYmxlUm93U2VsZWN0aW9uICYmIHNob3dDaGVja2JveGVzICYmIChcbiAgICAgICAgICA8RGVsZXRlQnV0dG9uXG4gICAgICAgICAgICBvbkRlbGV0ZT17aGFuZGxlRGVsZXRlfVxuICAgICAgICAgICAgaXNEZWxldGluZz17aXNEZWxldGluZ31cbiAgICAgICAgICAgIGRpc2FibGVkPXshdGFibGUuZ2V0RmlsdGVyZWRTZWxlY3RlZFJvd01vZGVsKCkucm93cy5sZW5ndGggfHwgaXNEZWxldGluZ31cbiAgICAgICAgICAgIGlzU21hbGxTY3JlZW49e2lzU21hbGxTY3JlZW59XG4gICAgICAgICAgICBhcmlhTGFiZWw9e2xvY2FsaXplKCdjb21fdWlfZGVsZXRlX3NlbGVjdGVkX2l0ZW1zJyl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge2ZpbHRlckNvbHVtbiAhPT0gdW5kZWZpbmVkICYmIHRhYmxlLmdldENvbHVtbihmaWx0ZXJDb2x1bW4pICYmIGVuYWJsZVNlYXJjaCAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBmbGV4LTFcIj5cbiAgICAgICAgICAgIDxBbmltYXRlZFNlYXJjaElucHV0XG4gICAgICAgICAgICAgIHZhbHVlPXtzZWFyY2hUZXJtfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFNlYXJjaFRlcm0oZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICBpc1NlYXJjaGluZz17aXNTZWFyY2hpbmd9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIFZpcnR1YWxpemVkIHRhYmxlICovfVxuICAgICAgPGRpdlxuICAgICAgICByZWY9e3RhYmxlQ29udGFpbmVyUmVmfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICdyZWxhdGl2ZSBtaW4taC0wIG1heC13LWZ1bGwgZmxleC0xIG92ZXJmbG93LXgtYXV0byBvdmVyZmxvdy15LWF1dG8gcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWJsYWNrLzEwIGRhcms6Ym9yZGVyLXdoaXRlLzEwJyxcbiAgICAgICAgICAndHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwIGVhc2Utb3V0JyxcbiAgICAgICAgICBpc1NlYXJjaGluZyAmJiAnYmctc3VyZmFjZS1zZWNvbmRhcnkvNTAnLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgID5cbiAgICAgICAgPFRhYmxlIGNsYXNzTmFtZT1cInctZnVsbCBtaW4tdy1bMzAwcHhdIHRhYmxlLWZpeGVkIGJvcmRlci1zZXBhcmF0ZSBib3JkZXItc3BhY2luZy0wXCI+XG4gICAgICAgICAgPFRhYmxlSGVhZGVyIGNsYXNzTmFtZT1cInN0aWNreSB0b3AtMCB6LTUwIGJnLXN1cmZhY2Utc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICB7dGFibGUuZ2V0SGVhZGVyR3JvdXBzKCkubWFwKChoZWFkZXJHcm91cCkgPT4gKFxuICAgICAgICAgICAgICA8VGFibGVSb3cga2V5PXtoZWFkZXJHcm91cC5pZH0gY2xhc3NOYW1lPVwiYm9yZGVyLWIgYm9yZGVyLWJvcmRlci1saWdodFwiPlxuICAgICAgICAgICAgICAgIHtoZWFkZXJHcm91cC5oZWFkZXJzLm1hcCgoaGVhZGVyKSA9PiAoXG4gICAgICAgICAgICAgICAgICA8VGFibGVIZWFkXG4gICAgICAgICAgICAgICAgICAgIGtleT17aGVhZGVyLmlkfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3aGl0ZXNwYWNlLW5vd3JhcCBiZy1zdXJmYWNlLXNlY29uZGFyeSBweC0yIHB5LTIgdGV4dC1sZWZ0IHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC10ZXh0LXNlY29uZGFyeSBzbTpweC00XCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e2dldENvbHVtblN0eWxlKFxuICAgICAgICAgICAgICAgICAgICAgIGhlYWRlci5jb2x1bW4uY29sdW1uRGVmIGFzIFRhYmxlQ29sdW1uPFREYXRhLCBUVmFsdWU+LFxuICAgICAgICAgICAgICAgICAgICAgIGlzU21hbGxTY3JlZW4sXG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e1xuICAgICAgICAgICAgICAgICAgICAgIGhlYWRlci5jb2x1bW4uZ2V0Q2FuU29ydCgpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhlYWRlci5jb2x1bW4uZ2V0VG9nZ2xlU29ydGluZ0hhbmRsZXIoKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzY29wZT1cImNvbFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtoZWFkZXIuaXNQbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgIDogZmxleFJlbmRlcihoZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5oZWFkZXIsIGhlYWRlci5nZXRDb250ZXh0KCkpfVxuICAgICAgICAgICAgICAgICAgPC9UYWJsZUhlYWQ+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvVGFibGVSb3c+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1RhYmxlSGVhZGVyPlxuXG4gICAgICAgICAgPFRhYmxlQm9keT5cbiAgICAgICAgICAgIHtwYWRkaW5nVG9wID4gMCAmJiAoXG4gICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGQgc3R5bGU9e3sgaGVpZ2h0OiBgJHtwYWRkaW5nVG9wfXB4YCB9fSAvPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge2lzTG9hZGluZyAmJiBza2VsZXRvbnN9XG5cbiAgICAgICAgICAgIHt2aXJ0dWFsUm93cy5tYXAoKHZpcnR1YWxSb3cpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgcm93ID0gcm93c1t2aXJ0dWFsUm93LmluZGV4XTtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8TWVtb2l6ZWRUYWJsZVJvd1xuICAgICAgICAgICAgICAgICAga2V5PXtyb3cuaWR9XG4gICAgICAgICAgICAgICAgICByb3c9e3Jvd31cbiAgICAgICAgICAgICAgICAgIGlzU21hbGxTY3JlZW49e2lzU21hbGxTY3JlZW59XG4gICAgICAgICAgICAgICAgICBpbmRleD17dmlydHVhbFJvdy5pbmRleH1cbiAgICAgICAgICAgICAgICAgIGlzU2VhcmNoaW5nPXtpc1NlYXJjaGluZ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG5cbiAgICAgICAgICAgIHshdmlydHVhbFJvd3MubGVuZ3RoICYmIChcbiAgICAgICAgICAgICAgPFRhYmxlUm93IGNsYXNzTmFtZT1cImhvdmVyOmJnLXRyYW5zcGFyZW50XCI+XG4gICAgICAgICAgICAgICAgPFRhYmxlQ2VsbCBjb2xTcGFuPXtjb2x1bW5zLmxlbmd0aH0gY2xhc3NOYW1lPVwicC00IHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICBObyBkYXRhIGF2YWlsYWJsZVxuICAgICAgICAgICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3BhZGRpbmdCb3R0b20gPiAwICYmIChcbiAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT17eyBoZWlnaHQ6IGAke3BhZGRpbmdCb3R0b219cHhgIH19IC8+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7LyogTG9hZGluZyBpbmRpY2F0b3IgKi99XG4gICAgICAgICAgICB7KGlzRmV0Y2hpbmdOZXh0UGFnZSB8fCBoYXNOZXh0UGFnZSkgJiYgKFxuICAgICAgICAgICAgICA8VGFibGVSb3cgY2xhc3NOYW1lPVwiaG92ZXI6YmctdHJhbnNwYXJlbnRcIj5cbiAgICAgICAgICAgICAgICA8VGFibGVDZWxsIGNvbFNwYW49e2NvbHVtbnMubGVuZ3RofSBjbGFzc05hbWU9XCJwLTRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBoLWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIHtpc0ZldGNoaW5nTmV4dFBhZ2UgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgPFNwaW5uZXIgY2xhc3NOYW1lPVwic2l6ZS00XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICBoYXNOZXh0UGFnZSAmJiA8ZGl2IGNsYXNzTmFtZT1cImgtNlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9UYWJsZUJvZHk+XG4gICAgICAgIDwvVGFibGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsImltcG9ydCB7IHVzZVNwcmluZ3MsIGFuaW1hdGVkLCBTcHJpbmdDb25maWcgfSBmcm9tICdAcmVhY3Qtc3ByaW5nL3dlYic7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmludGVyZmFjZSBTZWdtZW50ZXJPcHRpb25zIHtcbiAgZ3JhbnVsYXJpdHk/OiAnZ3JhcGhlbWUnIHwgJ3dvcmQnIHwgJ3NlbnRlbmNlJztcbiAgbG9jYWxlTWF0Y2hlcj86ICdsb29rdXAnIHwgJ2Jlc3QgZml0Jztcbn1cblxuaW50ZXJmYWNlIFNlZ21lbnREYXRhIHtcbiAgc2VnbWVudDogc3RyaW5nO1xuICBpbmRleDogbnVtYmVyO1xuICBpbnB1dDogc3RyaW5nO1xuICBpc1dvcmRMaWtlPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIFNlZ21lbnRzIHtcbiAgW1N5bWJvbC5pdGVyYXRvcl0oKTogSXRlcmFibGVJdGVyYXRvcjxTZWdtZW50RGF0YT47XG59XG5cbmludGVyZmFjZSBJbnRsU2VnbWVudGVyIHtcbiAgc2VnbWVudChpbnB1dDogc3RyaW5nKTogU2VnbWVudHM7XG59XG5cbmludGVyZmFjZSBJbnRsU2VnbWVudGVyQ29uc3RydWN0b3Ige1xuICBuZXcgKGxvY2FsZXM/OiBzdHJpbmcgfCBzdHJpbmdbXSwgb3B0aW9ucz86IFNlZ21lbnRlck9wdGlvbnMpOiBJbnRsU2VnbWVudGVyO1xufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBJbnRsIHtcbiAgICBTZWdtZW50ZXI6IEludGxTZWdtZW50ZXJDb25zdHJ1Y3RvcjtcbiAgfVxufVxuXG5pbnRlcmZhY2UgU3BsaXRUZXh0UHJvcHMge1xuICB0ZXh0Pzogc3RyaW5nO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGRlbGF5PzogbnVtYmVyO1xuICBhbmltYXRpb25Gcm9tPzogeyBvcGFjaXR5OiBudW1iZXI7IHRyYW5zZm9ybTogc3RyaW5nIH07XG4gIGFuaW1hdGlvblRvPzogeyBvcGFjaXR5OiBudW1iZXI7IHRyYW5zZm9ybTogc3RyaW5nIH07XG4gIGVhc2luZz86IFNwcmluZ0NvbmZpZ1snZWFzaW5nJ107XG4gIHRocmVzaG9sZD86IG51bWJlcjtcbiAgcm9vdE1hcmdpbj86IHN0cmluZztcbiAgdGV4dEFsaWduPzogJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdjZW50ZXInIHwgJ2p1c3RpZnknIHwgJ3N0YXJ0JyB8ICdlbmQnO1xuICBvbkxldHRlckFuaW1hdGlvbkNvbXBsZXRlPzogKCkgPT4gdm9pZDtcbiAgb25MaW5lQ291bnRDaGFuZ2U/OiAobGluZUNvdW50OiBudW1iZXIpID0+IHZvaWQ7XG59XG5cbmNvbnN0IHNwbGl0R3JhcGhlbWVzID0gKHRleHQ6IHN0cmluZyk6IHN0cmluZ1tdID0+IHtcbiAgaWYgKHR5cGVvZiBJbnRsICE9PSAndW5kZWZpbmVkJyAmJiAnU2VnbWVudGVyJyBpbiBJbnRsKSB7XG4gICAgY29uc3Qgc2VnbWVudGVyID0gbmV3IChJbnRsIGFzIHR5cGVvZiBJbnRsICYgeyBTZWdtZW50ZXI6IEludGxTZWdtZW50ZXJDb25zdHJ1Y3RvciB9KS5TZWdtZW50ZXIoXG4gICAgICAnZW4nLFxuICAgICAgeyBncmFudWxhcml0eTogJ2dyYXBoZW1lJyB9LFxuICAgICk7XG4gICAgY29uc3Qgc2VnbWVudHMgPSBzZWdtZW50ZXIuc2VnbWVudCh0ZXh0KTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShzZWdtZW50cykubWFwKChzOiBTZWdtZW50RGF0YSkgPT4gcy5zZWdtZW50KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gWy4uLnRleHRdO1xuICB9XG59O1xuXG5jb25zdCBTcGxpdFRleHQ6IFJlYWN0LkZDPFNwbGl0VGV4dFByb3BzPiA9ICh7XG4gIHRleHQgPSAnJyxcbiAgY2xhc3NOYW1lID0gJycsXG4gIGRlbGF5ID0gMTAwLFxuICBhbmltYXRpb25Gcm9tID0geyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGUzZCgwLDQwcHgsMCknIH0sXG4gIGFuaW1hdGlvblRvID0geyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGUzZCgwLDAsMCknIH0sXG4gIGVhc2luZyA9ICh0OiBudW1iZXIpID0+IHQsXG4gIHRocmVzaG9sZCA9IDAuMSxcbiAgcm9vdE1hcmdpbiA9ICctMTAwcHgnLFxuICB0ZXh0QWxpZ24gPSAnY2VudGVyJyxcbiAgb25MZXR0ZXJBbmltYXRpb25Db21wbGV0ZSxcbiAgb25MaW5lQ291bnRDaGFuZ2UsXG59KSA9PiB7XG4gIGNvbnN0IHdvcmRzID0gdGV4dC5zcGxpdCgnICcpLm1hcChzcGxpdEdyYXBoZW1lcyk7XG4gIGNvbnN0IGxldHRlcnMgPSB3b3Jkcy5mbGF0KCk7XG4gIGNvbnN0IFtpblZpZXcsIHNldEluVmlld10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MUGFyYWdyYXBoRWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGFuaW1hdGVkQ291bnQgPSB1c2VSZWYoMCk7XG5cbiAgY29uc3QgW3NwcmluZ3NdID0gdXNlU3ByaW5ncyhcbiAgICBsZXR0ZXJzLmxlbmd0aCxcbiAgICAoaSkgPT4gKHtcbiAgICAgIGZyb206IGFuaW1hdGlvbkZyb20sXG4gICAgICB0bzogaW5WaWV3XG4gICAgICAgID8gYXN5bmMgKG5leHQpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IG5leHQoYW5pbWF0aW9uVG8pO1xuICAgICAgICAgICAgYW5pbWF0ZWRDb3VudC5jdXJyZW50ICs9IDE7XG4gICAgICAgICAgICBpZiAoYW5pbWF0ZWRDb3VudC5jdXJyZW50ID09PSBsZXR0ZXJzLmxlbmd0aCAmJiBvbkxldHRlckFuaW1hdGlvbkNvbXBsZXRlKSB7XG4gICAgICAgICAgICAgIG9uTGV0dGVyQW5pbWF0aW9uQ29tcGxldGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDogYW5pbWF0aW9uRnJvbSxcbiAgICAgIGRlbGF5OiBpICogZGVsYXksXG4gICAgICBjb25maWc6IHsgZWFzaW5nIH0sXG4gICAgfSksXG4gICAgW2luVmlldywgdGV4dCwgZGVsYXksIGFuaW1hdGlvbkZyb20sIGFuaW1hdGlvblRvLCBlYXNpbmcsIG9uTGV0dGVyQW5pbWF0aW9uQ29tcGxldGVdLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAoW2VudHJ5XSkgPT4ge1xuICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgICBzZXRJblZpZXcodHJ1ZSk7XG4gICAgICAgICAgaWYgKHJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBvYnNlcnZlci51bm9ic2VydmUocmVmLmN1cnJlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgdGhyZXNob2xkLCByb290TWFyZ2luIH0sXG4gICAgKTtcblxuICAgIGlmIChyZWYuY3VycmVudCkge1xuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShyZWYuY3VycmVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfSwgW3RocmVzaG9sZCwgcm9vdE1hcmdpbl0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZi5jdXJyZW50ICYmIGluVmlldykge1xuICAgICAgY29uc3QgZWxlbWVudCA9IHJlZi5jdXJyZW50O1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGxpbmVIZWlnaHQgPVxuICAgICAgICAgIHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkubGluZUhlaWdodCkgfHxcbiAgICAgICAgICBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmZvbnRTaXplKSAqIDEuMjtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGxpbmVzID0gTWF0aC5yb3VuZChoZWlnaHQgLyBsaW5lSGVpZ2h0KTtcblxuICAgICAgICBpZiAob25MaW5lQ291bnRDaGFuZ2UpIHtcbiAgICAgICAgICBvbkxpbmVDb3VudENoYW5nZShsaW5lcyk7XG4gICAgICAgIH1cbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9LCBbaW5WaWV3LCB0ZXh0LCBvbkxpbmVDb3VudENoYW5nZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInNyLW9ubHlcIj57dGV4dH08L3NwYW4+XG4gICAgICA8cFxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtgc3BsaXQtcGFyZW50IGlubGluZSBvdmVyZmxvdy1oaWRkZW4gJHtjbGFzc05hbWV9YH1cbiAgICAgICAgc3R5bGU9e3sgdGV4dEFsaWduLCB3aGl0ZVNwYWNlOiAnbm9ybWFsJywgd29yZFdyYXA6ICdicmVhay13b3JkJyB9fVxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgPlxuICAgICAgICB7d29yZHMubWFwKCh3b3JkLCB3b3JkSW5kZXgpID0+IChcbiAgICAgICAgICA8c3BhbiBrZXk9e3dvcmRJbmRleH0gc3R5bGU9e3sgZGlzcGxheTogJ2lubGluZS1ibG9jaycsIHdoaXRlU3BhY2U6ICdub3dyYXAnIH19PlxuICAgICAgICAgICAge3dvcmQubWFwKChsZXR0ZXIsIGxldHRlckluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGluZGV4ID1cbiAgICAgICAgICAgICAgICB3b3Jkcy5zbGljZSgwLCB3b3JkSW5kZXgpLnJlZHVjZSgoYWNjLCB3KSA9PiBhY2MgKyB3Lmxlbmd0aCwgMCkgKyBsZXR0ZXJJbmRleDtcblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxhbmltYXRlZC5zcGFuXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3NwcmluZ3NbaW5kZXhdfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5saW5lLWJsb2NrIHRyYW5zZm9ybSB0cmFuc2l0aW9uLW9wYWNpdHkgd2lsbC1jaGFuZ2UtdHJhbnNmb3JtXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7bGV0dGVyfVxuICAgICAgICAgICAgICAgIDwvYW5pbWF0ZWQuc3Bhbj5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAge3dvcmRJbmRleCA8IHdvcmRzLmxlbmd0aCAtIDEgJiYgKFxuICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJywgd2lkdGg6ICcwLjNlbScgfX0+Jm5ic3A7PC9zcGFuPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICkpfVxuICAgICAgPC9wPlxuICAgIDwvPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3BsaXRUZXh0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgQ29udHJvbGxlclJlbmRlclByb3BzLCBGaWVsZFZhbHVlcywgRmllbGRQYXRoIH0gZnJvbSAncmVhY3QtaG9vay1mb3JtJztcbmltcG9ydCB7IExhYmVsIH0gZnJvbSAnLi9MYWJlbCc7XG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gJy4vSW5wdXQnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRm9ybUlucHV0PFxuICBURmllbGRWYWx1ZXMgZXh0ZW5kcyBGaWVsZFZhbHVlcyA9IEZpZWxkVmFsdWVzLFxuICBUTmFtZSBleHRlbmRzIEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+ID0gRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4sXG4+KHtcbiAgZmllbGQsXG4gIGxhYmVsLFxuICBsYWJlbENsYXNzLFxuICBpbnB1dENsYXNzLFxuICBjb250YWluZXJDbGFzcyxcbiAgbGFiZWxBZGphY2VudCxcbiAgcGxhY2Vob2xkZXIgPSAnJyxcbiAgdHlwZSA9ICdzdHJpbmcnLFxufToge1xuICBmaWVsZDogQ29udHJvbGxlclJlbmRlclByb3BzPFRGaWVsZFZhbHVlcywgVE5hbWU+O1xuICBsYWJlbDogc3RyaW5nO1xuICBsYWJlbENsYXNzPzogc3RyaW5nO1xuICBpbnB1dENsYXNzPzogc3RyaW5nO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgY29udGFpbmVyQ2xhc3M/OiBzdHJpbmc7XG4gIHR5cGU/OiAnc3RyaW5nJyB8ICdudW1iZXInO1xuICBsYWJlbEFkamFjZW50PzogUmVhY3QuUmVhY3ROb2RlO1xufSkge1xuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xuXG4gICAgaWYgKHR5cGUgIT09ICdudW1iZXInKSB7XG4gICAgICBmaWVsZC5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgZmllbGQub25DaGFuZ2UodmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoIWlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XG4gICAgICBmaWVsZC5vbkNoYW5nZShOdW1iZXIodmFsdWUpKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y24oJ2ZsZXggdy1mdWxsIGZsZXgtY29sIGl0ZW1zLWNlbnRlciBnYXAtMicsIGNvbnRhaW5lckNsYXNzKX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LXN0YXJ0IGdhcC0yXCI+XG4gICAgICAgIDxMYWJlbFxuICAgICAgICAgIGh0bWxGb3I9e2Ake2ZpZWxkLm5hbWV9LWlucHV0YH1cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKCd0ZXh0LWxlZnQgdGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtdGV4dC1wcmltYXJ5JywgbGFiZWxDbGFzcyl9XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvTGFiZWw+XG4gICAgICAgIHtsYWJlbEFkamFjZW50fVxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRcbiAgICAgICAgaWQ9e2Ake2ZpZWxkLm5hbWV9LWlucHV0YH1cbiAgICAgICAgdmFsdWU9e2ZpZWxkLnZhbHVlID8/ICcnfVxuICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgJ2ZsZXggaC0xMCBtYXgtaC0xMCB3LWZ1bGwgcmVzaXplLW5vbmUgYm9yZGVyLW5vbmUgYmctc3VyZmFjZS1zZWNvbmRhcnkgcHgtMyBweS0yJyxcbiAgICAgICAgICBpbnB1dENsYXNzLFxuICAgICAgICApfVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmNsYXNzIFBpeGVsIHtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIGN0eDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbiAgY29sb3I6IHN0cmluZztcbiAgc3BlZWQ6IG51bWJlcjtcbiAgc2l6ZTogbnVtYmVyO1xuICBzaXplU3RlcDogbnVtYmVyO1xuICBtaW5TaXplOiBudW1iZXI7XG4gIG1heFNpemVJbnRlZ2VyOiBudW1iZXI7XG4gIG1heFNpemU6IG51bWJlcjtcbiAgZGVsYXk6IG51bWJlcjtcbiAgY291bnRlcjogbnVtYmVyO1xuICBjb3VudGVyU3RlcDogbnVtYmVyO1xuICBpc0lkbGU6IGJvb2xlYW47XG4gIGlzUmV2ZXJzZTogYm9vbGVhbjtcbiAgaXNTaGltbWVyOiBib29sZWFuO1xuICBhY3RpdmF0aW9uVGhyZXNob2xkOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCxcbiAgICBjb250ZXh0OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsXG4gICAgeDogbnVtYmVyLFxuICAgIHk6IG51bWJlcixcbiAgICBjb2xvcjogc3RyaW5nLFxuICAgIHNwZWVkOiBudW1iZXIsXG4gICAgZGVsYXk6IG51bWJlcixcbiAgICBhY3RpdmF0aW9uVGhyZXNob2xkOiBudW1iZXIsXG4gICkge1xuICAgIHRoaXMud2lkdGggPSBjYW52YXMud2lkdGg7XG4gICAgdGhpcy5oZWlnaHQgPSBjYW52YXMuaGVpZ2h0O1xuICAgIHRoaXMuY3R4ID0gY29udGV4dDtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gICAgdGhpcy5jb2xvciA9IGNvbG9yO1xuICAgIHRoaXMuc3BlZWQgPSB0aGlzLnJhbmRvbSgwLjEsIDAuOSkgKiBzcGVlZDtcbiAgICB0aGlzLnNpemUgPSAwO1xuICAgIHRoaXMuc2l6ZVN0ZXAgPSBNYXRoLnJhbmRvbSgpICogMC40O1xuICAgIHRoaXMubWluU2l6ZSA9IDAuNTtcbiAgICB0aGlzLm1heFNpemVJbnRlZ2VyID0gMjtcbiAgICB0aGlzLm1heFNpemUgPSB0aGlzLnJhbmRvbSh0aGlzLm1pblNpemUsIHRoaXMubWF4U2l6ZUludGVnZXIpO1xuICAgIHRoaXMuZGVsYXkgPSBkZWxheTtcbiAgICB0aGlzLmNvdW50ZXIgPSAwO1xuICAgIHRoaXMuY291bnRlclN0ZXAgPSBNYXRoLnJhbmRvbSgpICogNCArICh0aGlzLndpZHRoICsgdGhpcy5oZWlnaHQpICogMC4wMTtcbiAgICB0aGlzLmlzSWRsZSA9IGZhbHNlO1xuICAgIHRoaXMuaXNSZXZlcnNlID0gZmFsc2U7XG4gICAgdGhpcy5pc1NoaW1tZXIgPSBmYWxzZTtcbiAgICB0aGlzLmFjdGl2YXRpb25UaHJlc2hvbGQgPSBhY3RpdmF0aW9uVGhyZXNob2xkO1xuICB9XG5cbiAgcHJpdmF0ZSByYW5kb20obWluOiBudW1iZXIsIG1heDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSArIG1pbjtcbiAgfVxuXG4gIHByaXZhdGUgZHJhdygpIHtcbiAgICBjb25zdCBvZmZzZXQgPSB0aGlzLm1heFNpemVJbnRlZ2VyICogMC41IC0gdGhpcy5zaXplICogMC41O1xuICAgIHRoaXMuY3R4LmZpbGxTdHlsZSA9IHRoaXMuY29sb3I7XG4gICAgdGhpcy5jdHguZmlsbFJlY3QodGhpcy54ICsgb2Zmc2V0LCB0aGlzLnkgKyBvZmZzZXQsIHRoaXMuc2l6ZSwgdGhpcy5zaXplKTtcbiAgfVxuXG4gIGFwcGVhcigpIHtcbiAgICB0aGlzLmlzSWRsZSA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmNvdW50ZXIgPD0gdGhpcy5kZWxheSkge1xuICAgICAgdGhpcy5jb3VudGVyICs9IHRoaXMuY291bnRlclN0ZXA7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnNpemUgPj0gdGhpcy5tYXhTaXplKSB7XG4gICAgICB0aGlzLmlzU2hpbW1lciA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzU2hpbW1lcikge1xuICAgICAgdGhpcy5zaGltbWVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2l6ZSArPSB0aGlzLnNpemVTdGVwO1xuICAgIH1cbiAgICB0aGlzLmRyYXcoKTtcbiAgfVxuXG4gIGFwcGVhcldpdGhQcm9ncmVzcyhwcm9ncmVzczogbnVtYmVyKSB7XG4gICAgY29uc3QgZGlmZiA9IHByb2dyZXNzIC0gdGhpcy5hY3RpdmF0aW9uVGhyZXNob2xkO1xuICAgIGlmIChkaWZmIDw9IDApIHtcbiAgICAgIHRoaXMuaXNJZGxlID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuY291bnRlciA8PSB0aGlzLmRlbGF5KSB7XG4gICAgICB0aGlzLmNvdW50ZXIgKz0gdGhpcy5jb3VudGVyU3RlcDtcbiAgICAgIHRoaXMuaXNJZGxlID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnNpemUgPj0gdGhpcy5tYXhTaXplKSB7XG4gICAgICB0aGlzLmlzU2hpbW1lciA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzU2hpbW1lcikge1xuICAgICAgdGhpcy5zaGltbWVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2l6ZSArPSB0aGlzLnNpemVTdGVwO1xuICAgIH1cbiAgICB0aGlzLmlzSWRsZSA9IGZhbHNlO1xuICAgIHRoaXMuZHJhdygpO1xuICB9XG5cbiAgZGlzYXBwZWFyKCkge1xuICAgIHRoaXMuaXNTaGltbWVyID0gZmFsc2U7XG4gICAgdGhpcy5jb3VudGVyID0gMDtcbiAgICBpZiAodGhpcy5zaXplIDw9IDApIHtcbiAgICAgIHRoaXMuaXNJZGxlID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zaXplIC09IDAuMTtcbiAgICB0aGlzLmRyYXcoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hpbW1lcigpIHtcbiAgICBpZiAodGhpcy5zaXplID49IHRoaXMubWF4U2l6ZSkge1xuICAgICAgdGhpcy5pc1JldmVyc2UgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zaXplIDw9IHRoaXMubWluU2l6ZSkge1xuICAgICAgdGhpcy5pc1JldmVyc2UgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5zaXplICs9IHRoaXMuaXNSZXZlcnNlID8gLXRoaXMuc3BlZWQgOiB0aGlzLnNwZWVkO1xuICB9XG59XG5cbmNvbnN0IGdldEVmZmVjdGl2ZVNwZWVkID0gKHZhbHVlOiBudW1iZXIsIHJlZHVjZWRNb3Rpb246IGJvb2xlYW4pID0+IHtcbiAgY29uc3QgcGFyc2VkID0gcGFyc2VJbnQoU3RyaW5nKHZhbHVlKSwgMTApO1xuICBjb25zdCB0aHJvdHRsZSA9IDAuMDAxO1xuICBpZiAocGFyc2VkIDw9IDAgfHwgcmVkdWNlZE1vdGlvbikge1xuICAgIHJldHVybiAwO1xuICB9XG4gIGlmIChwYXJzZWQgPj0gMTAwKSB7XG4gICAgcmV0dXJuIDEwMCAqIHRocm90dGxlO1xuICB9XG4gIHJldHVybiBwYXJzZWQgKiB0aHJvdHRsZTtcbn07XG5cbmNvbnN0IGNsYW1wID0gKG46IG51bWJlciwgbWluID0gMCwgbWF4ID0gMSkgPT4gTWF0aC5taW4oTWF0aC5tYXgobiwgbWluKSwgbWF4KTtcblxuY29uc3QgVkFSSUFOVFMgPSB7XG4gIGRlZmF1bHQ6IHsgZ2FwOiA1LCBzcGVlZDogMzUsIGNvbG9yczogJyNmOGZhZmMsI2YxZjVmOSwjY2JkNWUxJywgbm9Gb2N1czogZmFsc2UgfSxcbiAgYmx1ZTogeyBnYXA6IDEwLCBzcGVlZDogMjUsIGNvbG9yczogJyNlMGYyZmUsIzdkZDNmYywjMGVhNWU5Jywgbm9Gb2N1czogZmFsc2UgfSxcbiAgeWVsbG93OiB7IGdhcDogMywgc3BlZWQ6IDIwLCBjb2xvcnM6ICcjZmVmMDhhLCNmZGUwNDcsI2VhYjMwOCcsIG5vRm9jdXM6IGZhbHNlIH0sXG4gIHBpbms6IHsgZ2FwOiA2LCBzcGVlZDogODAsIGNvbG9yczogJyNmZWNkZDMsI2ZkYTRhZiwjZTExZDQ4Jywgbm9Gb2N1czogdHJ1ZSB9LFxufSBhcyBjb25zdDtcblxuaW50ZXJmYWNlIFBpeGVsQ2FyZFByb3BzIHtcbiAgdmFyaWFudD86IGtleW9mIHR5cGVvZiBWQVJJQU5UUztcbiAgZ2FwPzogbnVtYmVyO1xuICBzcGVlZD86IG51bWJlcjtcbiAgY29sb3JzPzogc3RyaW5nO1xuICBub0ZvY3VzPzogYm9vbGVhbjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBwcm9ncmVzcz86IG51bWJlcjtcbiAgcmFuZG9tbmVzcz86IG51bWJlcjtcbiAgd2lkdGg/OiBzdHJpbmc7XG4gIGhlaWdodD86IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGl4ZWxDYXJkKHtcbiAgdmFyaWFudCA9ICdkZWZhdWx0JyxcbiAgZ2FwLFxuICBzcGVlZCxcbiAgY29sb3JzLFxuICBub0ZvY3VzLFxuICBjbGFzc05hbWUgPSAnJyxcbiAgcHJvZ3Jlc3MsXG4gIHJhbmRvbW5lc3MgPSAwLjMsXG4gIHdpZHRoLFxuICBoZWlnaHQsXG59OiBQaXhlbENhcmRQcm9wcykge1xuICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBjYW52YXNSZWYgPSB1c2VSZWY8SFRNTENhbnZhc0VsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBwaXhlbHNSZWYgPSB1c2VSZWY8UGl4ZWxbXT4oW10pO1xuICBjb25zdCBhbmltYXRpb25SZWYgPSB1c2VSZWY8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb25zdCB0aW1lUHJldlJlZiA9IHVzZVJlZihwZXJmb3JtYW5jZS5ub3coKSk7XG4gIGNvbnN0IHByb2dyZXNzUmVmID0gdXNlUmVmPG51bWJlciB8IHVuZGVmaW5lZD4ocHJvZ3Jlc3MpO1xuICBjb25zdCByZWR1Y2VkTW90aW9uID0gdXNlUmVmKFxuICAgIHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKScpLm1hdGNoZXMsXG4gICkuY3VycmVudDtcblxuICBjb25zdCBjZmcgPSBWQVJJQU5UU1t2YXJpYW50XTtcbiAgY29uc3QgZyA9IGdhcCA/PyBjZmcuZ2FwO1xuICBjb25zdCBzID0gc3BlZWQgPz8gY2ZnLnNwZWVkO1xuICBjb25zdCBwYWxldHRlID0gY29sb3JzID8/IGNmZy5jb2xvcnM7XG4gIGNvbnN0IGRpc2FibGVGb2N1cyA9IG5vRm9jdXMgPz8gY2ZnLm5vRm9jdXM7XG5cbiAgY29uc3QgdXBkYXRlQ2FudmFzT3BhY2l0eSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIWNhbnZhc1JlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChwcm9ncmVzc1JlZi5jdXJyZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNhbnZhc1JlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPSAnMSc7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZhZGVTdGFydCA9IDAuOTtcbiAgICBjb25zdCBhbHBoYSA9XG4gICAgICBwcm9ncmVzc1JlZi5jdXJyZW50ID49IGZhZGVTdGFydCA/IDEgLSAocHJvZ3Jlc3NSZWYuY3VycmVudCAtIGZhZGVTdGFydCkgLyAwLjEgOiAxO1xuICAgIGNhbnZhc1JlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPSBTdHJpbmcoY2xhbXAoYWxwaGEpKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGFuaW1hdGUgPSB1c2VDYWxsYmFjayhcbiAgICAobWV0aG9kOiBrZXlvZiBQaXhlbCkgPT4ge1xuICAgICAgYW5pbWF0aW9uUmVmLmN1cnJlbnQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gYW5pbWF0ZShtZXRob2QpKTtcblxuICAgICAgY29uc3Qgbm93ID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgICBjb25zdCBlbGFwc2VkID0gbm93IC0gdGltZVByZXZSZWYuY3VycmVudDtcbiAgICAgIGlmIChlbGFwc2VkIDwgMTAwMCAvIDYwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRpbWVQcmV2UmVmLmN1cnJlbnQgPSBub3cgLSAoZWxhcHNlZCAlICgxMDAwIC8gNjApKTtcblxuICAgICAgY29uc3QgY3R4ID0gY2FudmFzUmVmLmN1cnJlbnQ/LmdldENvbnRleHQoJzJkJyk7XG4gICAgICBpZiAoIWN0eCB8fCAhY2FudmFzUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIGNhbnZhc1JlZi5jdXJyZW50LndpZHRoLCBjYW52YXNSZWYuY3VycmVudC5oZWlnaHQpO1xuXG4gICAgICBsZXQgaWRsZSA9IHRydWU7XG4gICAgICBmb3IgKGNvbnN0IHAgb2YgcGl4ZWxzUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgaWYgKG1ldGhvZCA9PT0gJ2FwcGVhcldpdGhQcm9ncmVzcycpIHtcbiAgICAgICAgICBpZiAocHJvZ3Jlc3NSZWYuY3VycmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBwLmFwcGVhcldpdGhQcm9ncmVzcyhwcm9ncmVzc1JlZi5jdXJyZW50KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcC5pc0lkbGUgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlIGR5bmFtaWMgZGlzcGF0Y2hcbiAgICAgICAgICBwW21ldGhvZF0oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXAuaXNJZGxlKSB7XG4gICAgICAgICAgaWRsZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZUNhbnZhc09wYWNpdHkoKTtcbiAgICAgIGlmIChpZGxlKSB7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvblJlZi5jdXJyZW50ISk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbdXBkYXRlQ2FudmFzT3BhY2l0eV0sXG4gICk7XG5cbiAgY29uc3Qgc3RhcnRBbmltID0gdXNlQ2FsbGJhY2soXG4gICAgKG06IGtleW9mIFBpeGVsKSA9PiB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShhbmltYXRpb25SZWYuY3VycmVudCEpO1xuICAgICAgYW5pbWF0aW9uUmVmLmN1cnJlbnQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gYW5pbWF0ZShtKSk7XG4gICAgfSxcbiAgICBbYW5pbWF0ZV0sXG4gICk7XG5cbiAgY29uc3QgaW5pdFBpeGVscyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIWNvbnRhaW5lclJlZi5jdXJyZW50IHx8ICFjYW52YXNSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgd2lkdGg6IGN3LCBoZWlnaHQ6IGNoIH0gPSBjb250YWluZXJSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBjdHggPSBjYW52YXNSZWYuY3VycmVudC5nZXRDb250ZXh0KCcyZCcpO1xuICAgIGNhbnZhc1JlZi5jdXJyZW50LndpZHRoID0gTWF0aC5mbG9vcihjdyk7XG4gICAgY2FudmFzUmVmLmN1cnJlbnQuaGVpZ2h0ID0gTWF0aC5mbG9vcihjaCk7XG5cbiAgICBjb25zdCBjb2xzID0gcGFsZXR0ZS5zcGxpdCgnLCcpO1xuICAgIGNvbnN0IHB4OiBQaXhlbFtdID0gW107XG5cbiAgICBjb25zdCBjeCA9IGN3IC8gMjtcbiAgICBjb25zdCBjeSA9IGNoIC8gMjtcbiAgICBjb25zdCBtYXhEaXN0ID0gTWF0aC5oeXBvdChjeCwgY3kpO1xuXG4gICAgZm9yIChsZXQgeCA9IDA7IHggPCBjdzsgeCArPSBnKSB7XG4gICAgICBmb3IgKGxldCB5ID0gMDsgeSA8IGNoOyB5ICs9IGcpIHtcbiAgICAgICAgY29uc3QgY29sb3IgPSBjb2xzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNvbHMubGVuZ3RoKV07XG4gICAgICAgIGNvbnN0IGRpc3ROb3JtID0gTWF0aC5oeXBvdCh4IC0gY3gsIHkgLSBjeSkgLyBtYXhEaXN0O1xuICAgICAgICBjb25zdCB0aHJlc2hvbGQgPSBjbGFtcChkaXN0Tm9ybSAqICgxIC0gcmFuZG9tbmVzcykgKyBNYXRoLnJhbmRvbSgpICogcmFuZG9tbmVzcyk7XG4gICAgICAgIGNvbnN0IGRlbGF5ID0gcmVkdWNlZE1vdGlvbiA/IDAgOiBkaXN0Tm9ybSAqIG1heERpc3Q7XG4gICAgICAgIGlmICghY3R4KSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgcHgucHVzaChcbiAgICAgICAgICBuZXcgUGl4ZWwoXG4gICAgICAgICAgICBjYW52YXNSZWYuY3VycmVudCxcbiAgICAgICAgICAgIGN0eCxcbiAgICAgICAgICAgIHgsXG4gICAgICAgICAgICB5LFxuICAgICAgICAgICAgY29sb3IsXG4gICAgICAgICAgICBnZXRFZmZlY3RpdmVTcGVlZChzLCByZWR1Y2VkTW90aW9uKSxcbiAgICAgICAgICAgIGRlbGF5LFxuICAgICAgICAgICAgdGhyZXNob2xkLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHBpeGVsc1JlZi5jdXJyZW50ID0gcHg7XG5cbiAgICBpZiAocHJvZ3Jlc3NSZWYuY3VycmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzdGFydEFuaW0oJ2FwcGVhcldpdGhQcm9ncmVzcycpO1xuICAgIH1cbiAgfSwgW2csIHBhbGV0dGUsIHMsIHJhbmRvbW5lc3MsIHJlZHVjZWRNb3Rpb24sIHN0YXJ0QW5pbV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvZ3Jlc3NSZWYuY3VycmVudCA9IHByb2dyZXNzO1xuICAgIGlmIChwcm9ncmVzcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzdGFydEFuaW0oJ2FwcGVhcldpdGhQcm9ncmVzcycpO1xuICAgIH1cbiAgfSwgW3Byb2dyZXNzLCBzdGFydEFuaW1dKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChwcm9ncmVzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShhbmltYXRpb25SZWYuY3VycmVudCEpO1xuICAgIH1cbiAgfSwgW3Byb2dyZXNzXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpbml0UGl4ZWxzKCk7XG4gICAgY29uc3Qgb2JzID0gbmV3IFJlc2l6ZU9ic2VydmVyKGluaXRQaXhlbHMpO1xuICAgIGlmIChjb250YWluZXJSZWYuY3VycmVudCkge1xuICAgICAgb2JzLm9ic2VydmUoY29udGFpbmVyUmVmLmN1cnJlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgb2JzLmRpc2Nvbm5lY3QoKTtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvblJlZi5jdXJyZW50ISk7XG4gICAgfTtcbiAgfSwgW2luaXRQaXhlbHNdKTtcblxuICBjb25zdCBob3ZlckluID0gKCkgPT4gcHJvZ3Jlc3NSZWYuY3VycmVudCA9PT0gdW5kZWZpbmVkICYmIHN0YXJ0QW5pbSgnYXBwZWFyJyk7XG4gIGNvbnN0IGhvdmVyT3V0ID0gKCkgPT4gcHJvZ3Jlc3NSZWYuY3VycmVudCA9PT0gdW5kZWZpbmVkICYmIHN0YXJ0QW5pbSgnZGlzYXBwZWFyJyk7XG4gIGNvbnN0IGZvY3VzSW46IFJlYWN0LkZvY3VzRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PiA9IChlKSA9PiB7XG4gICAgaWYgKFxuICAgICAgIWRpc2FibGVGb2N1cyAmJlxuICAgICAgIWUuY3VycmVudFRhcmdldC5jb250YWlucyhlLnJlbGF0ZWRUYXJnZXQpICYmXG4gICAgICBwcm9ncmVzc1JlZi5jdXJyZW50ID09PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHN0YXJ0QW5pbSgnYXBwZWFyJyk7XG4gICAgfVxuICB9O1xuICBjb25zdCBmb2N1c091dDogUmVhY3QuRm9jdXNFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+ID0gKGUpID0+IHtcbiAgICBpZiAoXG4gICAgICAhZGlzYWJsZUZvY3VzICYmXG4gICAgICAhZS5jdXJyZW50VGFyZ2V0LmNvbnRhaW5zKGUucmVsYXRlZFRhcmdldCkgJiZcbiAgICAgIHByb2dyZXNzUmVmLmN1cnJlbnQgPT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgc3RhcnRBbmltKCdkaXNhcHBlYXInKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIHdpZHRoOiB3aWR0aCB8fCAnMTAwJScsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0IHx8ICcxMDAlJyxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICdyZWxhdGl2ZSBpc29sYXRlIGdyaWQgc2VsZWN0LW5vbmUgcGxhY2UtaXRlbXMtY2VudGVyIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItYm9yZGVyLWxpZ2h0IHNoYWRvdy1tZCB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0yMDAgZWFzZS1pbi1vdXQnLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgIHRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbjogJ2N1YmljLWJlemllcigwLjUsIDEsIDAuODksIDEpJyxcbiAgICAgICAgfX1cbiAgICAgICAgb25Nb3VzZUVudGVyPXtob3ZlcklufVxuICAgICAgICBvbk1vdXNlTGVhdmU9e2hvdmVyT3V0fVxuICAgICAgICBvbkZvY3VzPXtkaXNhYmxlRm9jdXMgPyB1bmRlZmluZWQgOiBmb2N1c0lufVxuICAgICAgICBvbkJsdXI9e2Rpc2FibGVGb2N1cyA/IHVuZGVmaW5lZCA6IGZvY3VzT3V0fVxuICAgICAgICB0YWJJbmRleD17ZGlzYWJsZUZvY3VzID8gLTEgOiAwfVxuICAgICAgPlxuICAgICAgICA8Y2FudmFzXG4gICAgICAgICAgcmVmPXtjYW52YXNSZWZ9XG4gICAgICAgICAgY2xhc3NOYW1lPVwicG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSBpbnNldC0wIGJsb2NrXCJcbiAgICAgICAgICB3aWR0aD17d2lkdGggJiYgd2lkdGggIT09ICdhdXRvJyA/IHBhcnNlSW50KFN0cmluZyh3aWR0aCkpIDogdW5kZWZpbmVkfVxuICAgICAgICAgIGhlaWdodD17aGVpZ2h0ICYmIGhlaWdodCAhPT0gJ2F1dG8nID8gcGFyc2VJbnQoU3RyaW5nKGhlaWdodCkpIDogdW5kZWZpbmVkfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QsIHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcblxudHlwZSBGaWxlVXBsb2FkUHJvcHMgPSB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgb25DbGljaz86ICgpID0+IHZvaWQ7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG4gIGhhbmRsZUZpbGVDaGFuZ2U6IChldmVudDogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHZvaWQ7XG59O1xuXG5jb25zdCBGaWxlVXBsb2FkID0gZm9yd2FyZFJlZjxIVE1MSW5wdXRFbGVtZW50LCBGaWxlVXBsb2FkUHJvcHM+KFxuICAoeyBjaGlsZHJlbiwgaGFuZGxlRmlsZUNoYW5nZSB9LCByZWYpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgICBtdWx0aXBsZVxuICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiAnbm9uZScgfX1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlRmlsZUNoYW5nZX1cbiAgICAgICAgLz5cbiAgICAgIDwvPlxuICAgICk7XG4gIH0sXG4pO1xuXG5GaWxlVXBsb2FkLmRpc3BsYXlOYW1lID0gJ0ZpbGVVcGxvYWQnO1xuXG5leHBvcnQgZGVmYXVsdCBGaWxlVXBsb2FkO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1xuICBTZWxlY3QsXG4gIFNlbGVjdEFycm93LFxuICBTZWxlY3RJdGVtLFxuICBTZWxlY3RJdGVtQ2hlY2ssXG4gIFNlbGVjdExhYmVsLFxuICBTZWxlY3RQb3BvdmVyLFxuICBTZWxlY3RQcm92aWRlcixcbn0gZnJvbSAnQGFyaWFraXQvcmVhY3QnO1xuaW1wb3J0ICcuL0FuaW1hdGVQb3BvdmVyLmNzcyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG50eXBlIE11bHRpU2VsZWN0SXRlbTxUIGV4dGVuZHMgc3RyaW5nPiA9IFQgfCB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBUIH07XG5cbmZ1bmN0aW9uIGdldEl0ZW1WYWx1ZTxUIGV4dGVuZHMgc3RyaW5nPihpdGVtOiBNdWx0aVNlbGVjdEl0ZW08VD4pOiBUIHtcbiAgcmV0dXJuIHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyA/IGl0ZW0gOiBpdGVtLnZhbHVlO1xufVxuXG5mdW5jdGlvbiBnZXRJdGVtTGFiZWw8VCBleHRlbmRzIHN0cmluZz4oaXRlbTogTXVsdGlTZWxlY3RJdGVtPFQ+KTogc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyA/IGl0ZW0gOiBpdGVtLmxhYmVsO1xufVxuXG5pbnRlcmZhY2UgTXVsdGlTZWxlY3RQcm9wczxUIGV4dGVuZHMgc3RyaW5nPiB7XG4gIGl0ZW1zOiBNdWx0aVNlbGVjdEl0ZW08VD5bXTtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBvblNlbGVjdGVkVmFsdWVzQ2hhbmdlPzogKHZhbHVlczogVFtdKSA9PiB2b2lkO1xuICByZW5kZXJTZWxlY3RlZFZhbHVlcz86IChcbiAgICB2YWx1ZXM6IFRbXSxcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZyxcbiAgICBpdGVtcz86IE11bHRpU2VsZWN0SXRlbTxUPltdLFxuICApID0+IFJlYWN0LlJlYWN0Tm9kZTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBpdGVtQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBsYWJlbENsYXNzTmFtZT86IHN0cmluZztcbiAgc2VsZWN0Q2xhc3NOYW1lPzogc3RyaW5nO1xuICBzZWxlY3RJY29uPzogUmVhY3QuUmVhY3ROb2RlO1xuICBwb3BvdmVyQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBzZWxlY3RJdGVtc0NsYXNzTmFtZT86IHN0cmluZztcbiAgc2VsZWN0ZWRWYWx1ZXM6IFRbXTtcbiAgc2V0U2VsZWN0ZWRWYWx1ZXM6ICh2YWx1ZXM6IFRbXSkgPT4gdm9pZDtcbiAgcmVuZGVySXRlbUNvbnRlbnQ/OiAoXG4gICAgdmFsdWU6IFQsXG4gICAgZGVmYXVsdENvbnRlbnQ6IFJlYWN0LlJlYWN0Tm9kZSxcbiAgICBpc1NlbGVjdGVkOiBib29sZWFuLFxuICApID0+IFJlYWN0LlJlYWN0Tm9kZTtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdFJlbmRlcjxUIGV4dGVuZHMgc3RyaW5nPihcbiAgdmFsdWVzOiBUW10sXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nLFxuICBpdGVtcz86IE11bHRpU2VsZWN0SXRlbTxUPltdLFxuKSB7XG4gIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHBsYWNlaG9sZGVyIHx8ICdTZWxlY3QuLi4nO1xuICB9XG4gIGlmICh2YWx1ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgLy8gRmluZCB0aGUgaXRlbSB0byBnZXQgaXRzIGxhYmVsXG4gICAgaWYgKGl0ZW1zKSB7XG4gICAgICBjb25zdCBpdGVtID0gaXRlbXMuZmluZCgoaXRlbSkgPT4gZ2V0SXRlbVZhbHVlKGl0ZW0pID09PSB2YWx1ZXNbMF0pO1xuICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGdldEl0ZW1MYWJlbChpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlc1swXTtcbiAgfVxuICByZXR1cm4gYCR7dmFsdWVzLmxlbmd0aH0gaXRlbXMgc2VsZWN0ZWRgO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNdWx0aVNlbGVjdDxUIGV4dGVuZHMgc3RyaW5nPih7XG4gIGl0ZW1zLFxuICBsYWJlbCxcbiAgcGxhY2Vob2xkZXIgPSAnU2VsZWN0Li4uJyxcbiAgb25TZWxlY3RlZFZhbHVlc0NoYW5nZSxcbiAgcmVuZGVyU2VsZWN0ZWRWYWx1ZXMgPSBkZWZhdWx0UmVuZGVyLFxuICBjbGFzc05hbWUsXG4gIHNlbGVjdEljb24sXG4gIGl0ZW1DbGFzc05hbWUsXG4gIGxhYmVsQ2xhc3NOYW1lLFxuICBzZWxlY3RDbGFzc05hbWUsXG4gIHBvcG92ZXJDbGFzc05hbWUsXG4gIHNlbGVjdEl0ZW1zQ2xhc3NOYW1lLFxuICBzZWxlY3RlZFZhbHVlcyA9IFtdLFxuICBzZXRTZWxlY3RlZFZhbHVlcyxcbiAgcmVuZGVySXRlbUNvbnRlbnQsXG59OiBNdWx0aVNlbGVjdFByb3BzPFQ+KSB7XG4gIGNvbnN0IHNlbGVjdFJlZiA9IHVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFtpc1BvcG92ZXJPcGVuLCBzZXRJc1BvcG92ZXJPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBoYW5kbGVWYWx1ZUNoYW5nZSA9ICh2YWx1ZXM6IFRbXSkgPT4ge1xuICAgIHNldFNlbGVjdGVkVmFsdWVzKHZhbHVlcyk7XG4gICAgaWYgKG9uU2VsZWN0ZWRWYWx1ZXNDaGFuZ2UpIHtcbiAgICAgIG9uU2VsZWN0ZWRWYWx1ZXNDaGFuZ2UodmFsdWVzKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT5cbiAgICAgIDxTZWxlY3RQcm92aWRlclxuICAgICAgICB2YWx1ZT17c2VsZWN0ZWRWYWx1ZXN9XG4gICAgICAgIHNldFZhbHVlPXtoYW5kbGVWYWx1ZUNoYW5nZX1cbiAgICAgICAgb3Blbj17aXNQb3BvdmVyT3Blbn1cbiAgICAgICAgc2V0T3Blbj17c2V0SXNQb3BvdmVyT3Blbn1cbiAgICAgID5cbiAgICAgICAge2xhYmVsICYmIChcbiAgICAgICAgICA8U2VsZWN0TGFiZWwgY2xhc3NOYW1lPXtjbignbWItMSBibG9jayB0ZXh0LXNtIHRleHQtdGV4dC1wcmltYXJ5JywgbGFiZWxDbGFzc05hbWUpfT5cbiAgICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgICA8L1NlbGVjdExhYmVsPlxuICAgICAgICApfVxuICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgcmVmPXtzZWxlY3RSZWZ9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICdmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTIgcm91bmRlZC14bCBweC0zIHB5LTIgdGV4dC1zbScsXG4gICAgICAgICAgICAnYmctc3VyZmFjZS10ZXJ0aWFyeSB0ZXh0LXRleHQtcHJpbWFyeSBzaGFkb3ctc20gaG92ZXI6Y3Vyc29yLXBvaW50ZXIgaG92ZXI6Ymctc3VyZmFjZS1ob3ZlcicsXG4gICAgICAgICAgICAnb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy13aGl0ZScsXG4gICAgICAgICAgICBzZWxlY3RDbGFzc05hbWUsXG4gICAgICAgICAgICBzZWxlY3RlZFZhbHVlcy5sZW5ndGggPiAwICYmIHNlbGVjdEl0ZW1zQ2xhc3NOYW1lICE9IG51bGwgJiYgc2VsZWN0SXRlbXNDbGFzc05hbWUsXG4gICAgICAgICAgKX1cbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICAgID5cbiAgICAgICAgICB7c2VsZWN0SWNvbiAmJiA8c3Bhbj57c2VsZWN0SWNvbiBhcyBSZWFjdC5KU1guRWxlbWVudH08L3NwYW4+fVxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1yLWF1dG8gaGlkZGVuIHRydW5jYXRlIG1kOmJsb2NrXCI+XG4gICAgICAgICAgICB7cmVuZGVyU2VsZWN0ZWRWYWx1ZXMoc2VsZWN0ZWRWYWx1ZXMsIHBsYWNlaG9sZGVyLCBpdGVtcyl9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxTZWxlY3RBcnJvd1xuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgJ21sLTEgaGlkZGVuIHN0cm9rZS0xIHRleHQtYmFzZSBvcGFjaXR5LTc1IHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBtZDpibG9jaycsXG4gICAgICAgICAgICAgIGlzUG9wb3Zlck9wZW4gJiYgJ3JvdGF0ZS0xODAnLFxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1NlbGVjdD5cbiAgICAgICAgPFNlbGVjdFBvcG92ZXJcbiAgICAgICAgICBndXR0ZXI9ezR9XG4gICAgICAgICAgc2FtZVdpZHRoXG4gICAgICAgICAgbW9kYWxcbiAgICAgICAgICB1bm1vdW50T25IaWRlXG4gICAgICAgICAgZmluYWxGb2N1cz17c2VsZWN0UmVmfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAnYW5pbWF0ZS1wb3BvdmVyIHotNDAgZmxleCBtYXgtaC1bMzAwcHhdJyxcbiAgICAgICAgICAgICdmbGV4LWNvbCBvdmVyZmxvdy1hdXRvIG92ZXJzY3JvbGwtY29udGFpbiByb3VuZGVkLXhsJyxcbiAgICAgICAgICAgICdiZy1zdXJmYWNlLXNlY29uZGFyeSBweC0xLjUgcHktMSB0ZXh0LXRleHQtcHJpbWFyeSBzaGFkb3ctbGcnLFxuICAgICAgICAgICAgJ2JvcmRlciBib3JkZXItYm9yZGVyLWxpZ2h0JyxcbiAgICAgICAgICAgICdvdXRsaW5lLW5vbmUnLFxuICAgICAgICAgICAgcG9wb3ZlckNsYXNzTmFtZSxcbiAgICAgICAgICApfVxuICAgICAgICA+XG4gICAgICAgICAge2l0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBnZXRJdGVtVmFsdWUoaXRlbSk7XG4gICAgICAgICAgICBjb25zdCBsYWJlbCA9IGdldEl0ZW1MYWJlbChpdGVtKTtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRDb250ZW50ID0gKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxTZWxlY3RJdGVtQ2hlY2sgY2xhc3NOYW1lPVwibXItMC41IHRleHQtcHJpbWFyeVwiIC8+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidHJ1bmNhdGVcIj57bGFiZWx9PC9zcGFuPlxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBpc0N1cnJlbnRJdGVtU2VsZWN0ZWQgPSBzZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbVxuICAgICAgICAgICAgICAgIGtleT17dmFsdWV9XG4gICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAnZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgcm91bmRlZC1sZyBweC0yIHB5LTEuNSBob3ZlcjpjdXJzb3ItcG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAnc2Nyb2xsLW0tMSBvdXRsaW5lLW5vbmUgdHJhbnNpdGlvbi1jb2xvcnMnLFxuICAgICAgICAgICAgICAgICAgJ2hvdmVyOmJnLWJsYWNrL1swLjA3NV0gZGFyazpob3ZlcjpiZy13aGl0ZS8xMCcsXG4gICAgICAgICAgICAgICAgICAnZGF0YS1bYWN0aXZlLWl0ZW1dOmJnLWJsYWNrL1swLjA3NV0gZGFyazpkYXRhLVthY3RpdmUtaXRlbV06Ymctd2hpdGUvMTAnLFxuICAgICAgICAgICAgICAgICAgJ3ctZnVsbCBtaW4tdy0wIHRleHQtc20nLFxuICAgICAgICAgICAgICAgICAgaXRlbUNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3JlbmRlckl0ZW1Db250ZW50XG4gICAgICAgICAgICAgICAgICA/IChyZW5kZXJJdGVtQ29udGVudChcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Q29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgICBpc0N1cnJlbnRJdGVtU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICkgYXMgUmVhY3QuSlNYLkVsZW1lbnQpXG4gICAgICAgICAgICAgICAgICA6IChkZWZhdWx0Q29udGVudCBhcyBSZWFjdC5KU1guRWxlbWVudCl9XG4gICAgICAgICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvU2VsZWN0UG9wb3Zlcj5cbiAgICAgIDwvU2VsZWN0UHJvdmlkZXI+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgQXJpYWtpdCBmcm9tICdAYXJpYWtpdC9yZWFjdCc7XG5pbXBvcnQgdHlwZSAqIGFzIHQgZnJvbSAnfi9jb21tb24nO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcbmltcG9ydCAnLi9Ecm9wZG93bi5jc3MnO1xuXG5pbnRlcmZhY2UgRHJvcGRvd25Qcm9wcyB7XG4gIGtleVByZWZpeD86IHN0cmluZztcbiAgdHJpZ2dlcjogUmVhY3QuUmVhY3ROb2RlO1xuICBpdGVtczogdC5NZW51SXRlbVByb3BzW107XG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgc2V0SXNPcGVuOiAoaXNPcGVuOiBib29sZWFuKSA9PiB2b2lkO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGljb25DbGFzc05hbWU/OiBzdHJpbmc7XG4gIGl0ZW1DbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNhbWVXaWR0aD86IGJvb2xlYW47XG4gIGFuY2hvcj86IHsgeDogc3RyaW5nOyB5OiBzdHJpbmcgfTtcbiAgZ3V0dGVyPzogbnVtYmVyO1xuICBtb2RhbD86IGJvb2xlYW47XG4gIHBvcnRhbD86IGJvb2xlYW47XG4gIHByZXNlcnZlVGFiT3JkZXI/OiBib29sZWFuO1xuICBmb2N1c0xvb3A/OiBib29sZWFuO1xuICBtZW51SWQ6IHN0cmluZztcbiAgbW91bnRCeVN0YXRlPzogYm9vbGVhbjtcbiAgdW5tb3VudE9uSGlkZT86IGJvb2xlYW47XG4gIGZpbmFsRm9jdXM/OiBSZWFjdC5SZWZPYmplY3Q8SFRNTEVsZW1lbnQ+O1xufVxuXG50eXBlIE1lbnVQcm9wcyA9IE9taXQ8XG4gIERyb3Bkb3duUHJvcHMsXG4gICd0cmlnZ2VyJyB8ICdpc09wZW4nIHwgJ3NldElzT3BlbicgfCAnZm9jdXNMb29wJyB8ICdtb3VudEJ5U3RhdGUnXG4+ICZcbiAgQXJpYWtpdC5NZW51UHJvcHM7XG5cbmNvbnN0IERyb3Bkb3duUG9wdXA6IFJlYWN0LkZDPERyb3Bkb3duUHJvcHM+ID0gKHtcbiAgdHJpZ2dlcixcbiAgaXNPcGVuLFxuICBzZXRJc09wZW4sXG4gIGZvY3VzTG9vcCxcbiAgbW91bnRCeVN0YXRlLFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCBtZW51ID0gQXJpYWtpdC51c2VNZW51U3RvcmUoeyBvcGVuOiBpc09wZW4sIHNldE9wZW46IHNldElzT3BlbiwgZm9jdXNMb29wIH0pO1xuICBpZiAobW91bnRCeVN0YXRlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxBcmlha2l0Lk1lbnVQcm92aWRlciBzdG9yZT17bWVudX0+XG4gICAgICAgIHt0cmlnZ2VyfVxuICAgICAgICB7aXNPcGVuICYmIDxNZW51IHsuLi5wcm9wc30gLz59XG4gICAgICA8L0FyaWFraXQuTWVudVByb3ZpZGVyPlxuICAgICk7XG4gIH1cbiAgcmV0dXJuIChcbiAgICA8QXJpYWtpdC5NZW51UHJvdmlkZXIgc3RvcmU9e21lbnV9PlxuICAgICAge3RyaWdnZXJ9XG4gICAgICA8TWVudSB7Li4ucHJvcHN9IC8+XG4gICAgPC9Bcmlha2l0Lk1lbnVQcm92aWRlcj5cbiAgKTtcbn07XG5cbmNvbnN0IE1lbnU6IFJlYWN0LkZDPE1lbnVQcm9wcz4gPSAoe1xuICBpdGVtcyxcbiAgbWVudUlkLFxuICBrZXlQcmVmaXgsXG4gIGNsYXNzTmFtZSxcbiAgaWNvbkNsYXNzTmFtZSxcbiAgaXRlbUNsYXNzTmFtZSxcbiAgbW9kYWwsXG4gIHBvcnRhbCxcbiAgc2FtZVdpZHRoLFxuICBndXR0ZXIgPSA4LFxuICBmaW5hbEZvY3VzLFxuICB1bm1vdW50T25IaWRlLFxuICBwcmVzZXJ2ZVRhYk9yZGVyLFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCBtZW51U3RvcmUgPSBBcmlha2l0LnVzZU1lbnVTdG9yZSgpO1xuICBjb25zdCBtZW51ID0gQXJpYWtpdC51c2VNZW51Q29udGV4dCgpO1xuICByZXR1cm4gKFxuICAgIDxBcmlha2l0Lk1lbnVcbiAgICAgIGlkPXttZW51SWR9XG4gICAgICBtb2RhbD17bW9kYWx9XG4gICAgICBndXR0ZXI9e2d1dHRlcn1cbiAgICAgIHBvcnRhbD17cG9ydGFsfVxuICAgICAgc2FtZVdpZHRoPXtzYW1lV2lkdGh9XG4gICAgICBmaW5hbEZvY3VzPXtmaW5hbEZvY3VzfVxuICAgICAgdW5tb3VudE9uSGlkZT17dW5tb3VudE9uSGlkZX1cbiAgICAgIHByZXNlcnZlVGFiT3JkZXI9e3ByZXNlcnZlVGFiT3JkZXJ9XG4gICAgICBjbGFzc05hbWU9e2NuKCdwb3BvdmVyLXVpIHotNDAnLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIHtpdGVtc1xuICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnNob3cgIT09IGZhbHNlKVxuICAgICAgICAubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgc3ViSXRlbXMgfSA9IGl0ZW07XG4gICAgICAgICAgaWYgKGl0ZW0uc2VwYXJhdGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJldHVybiA8QXJpYWtpdC5NZW51U2VwYXJhdG9yIGtleT17aW5kZXh9IGNsYXNzTmFtZT1cIm15LTEgaC1weCBib3JkZXItYm9yZGVyLW1lZGl1bVwiIC8+O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc3ViSXRlbXMgJiYgc3ViSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPEFyaWFraXQuTWVudVByb3ZpZGVyXG4gICAgICAgICAgICAgICAgc3RvcmU9e21lbnVTdG9yZX1cbiAgICAgICAgICAgICAgICBrZXk9e2Ake2tleVByZWZpeCA/PyAnJ30ke2luZGV4fS0ke2l0ZW0uaWQgPz8gJyd9LXByb3ZpZGVyYH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxBcmlha2l0Lk1lbnVCdXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICdncm91cCBmbGV4IHctZnVsbCBjdXJzb3ItcG9pbnRlciBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yIHJvdW5kZWQtbGcgcHgtMyBweS0zLjUgdGV4dC1zbSB0ZXh0LXRleHQtcHJpbWFyeSBvdXRsaW5lLW5vbmUgaG92ZXI6Ymctc3VyZmFjZS1ob3ZlciBmb2N1czpiZy1zdXJmYWNlLWhvdmVyIG1kOnB4LTIuNSBtZDpweS0yJyxcbiAgICAgICAgICAgICAgICAgICAgaXRlbUNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXRlbS5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgIGlkPXtpdGVtLmlkfVxuICAgICAgICAgICAgICAgICAgcmVuZGVyPXtpdGVtLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgIHJlZj17aXRlbS5yZWZ9XG4gICAgICAgICAgICAgICAgICAvLyBoaWRlT25DbGljaz17aXRlbS5oaWRlT25DbGlja31cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICB7aXRlbS5pY29uICE9IG51bGwgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y24oJ21yLTIgc2l6ZS00JywgaWNvbkNsYXNzTmFtZSl9IGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge2l0ZW0uaWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIHtpdGVtLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPEFyaWFraXQuTWVudUJ1dHRvbkFycm93IGNsYXNzTmFtZT1cInN0cm9rZS0xIHRleHQtYmFzZSBvcGFjaXR5LTc1XCIgLz5cbiAgICAgICAgICAgICAgICA8L0FyaWFraXQuTWVudUJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8TWVudVxuICAgICAgICAgICAgICAgICAgaXRlbXM9e3N1Ykl0ZW1zfVxuICAgICAgICAgICAgICAgICAgbWVudUlkPXtgJHttZW51SWR9LSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgIGtleT17YCR7a2V5UHJlZml4ID8/ICcnfSR7aW5kZXh9LSR7aXRlbS5pZCA/PyAnJ31gfVxuICAgICAgICAgICAgICAgICAgZ3V0dGVyPXsxMn1cbiAgICAgICAgICAgICAgICAgIHBvcnRhbD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0FyaWFraXQuTWVudVByb3ZpZGVyPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFyaWFraXQuTWVudUl0ZW1cbiAgICAgICAgICAgICAga2V5PXtgJHtrZXlQcmVmaXggPz8gJyd9JHtpbmRleH0tJHtpdGVtLmlkID8/ICcnfWB9XG4gICAgICAgICAgICAgIGlkPXtpdGVtLmlkfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICdncm91cCBmbGV4IHctZnVsbCBjdXJzb3ItcG9pbnRlciBpdGVtcy1jZW50ZXIgZ2FwLTIgcm91bmRlZC1sZyBweC0zIHB5LTMuNSB0ZXh0LXNtIHRleHQtdGV4dC1wcmltYXJ5IG91dGxpbmUtbm9uZSBob3ZlcjpiZy1zdXJmYWNlLWhvdmVyIGZvY3VzOmJnLXN1cmZhY2UtaG92ZXIgbWQ6cHgtMi41IG1kOnB5LTInLFxuICAgICAgICAgICAgICAgIGl0ZW1DbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgaXRlbS5jbGFzc05hbWUsXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtpdGVtLmRpc2FibGVkfVxuICAgICAgICAgICAgICByZW5kZXI9e2l0ZW0ucmVuZGVyfVxuICAgICAgICAgICAgICByZWY9e2l0ZW0ucmVmfVxuICAgICAgICAgICAgICBoaWRlT25DbGljaz17aXRlbS5oaWRlT25DbGlja31cbiAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD17aXRlbS5hcmlhSGFzUG9wdXB9XG4gICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9e2l0ZW0uYXJpYUNvbnRyb2xzfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtpdGVtLmFyaWFMYWJlbH1cbiAgICAgICAgICAgICAgYXJpYS1jaGVja2VkPXtpdGVtLmFyaWFDaGVja2VkfVxuICAgICAgICAgICAgICB7Li4uKGl0ZW0uYXJpYUNoZWNrZWQgIT09IHVuZGVmaW5lZCA/IHsgcm9sZTogJ21lbnVpdGVtY2hlY2tib3gnIH0gOiB7fSl9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eyhldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0ub25DbGljaykge1xuICAgICAgICAgICAgICAgICAgaXRlbS5vbkNsaWNrKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaGlkZU9uQ2xpY2sgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1lbnU/LmhpZGUoKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2l0ZW0uaWNvbiAhPSBudWxsICYmIChcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2NuKCdtci0yIHNpemUtNCcsIGljb25DbGFzc05hbWUpfSBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgIHtpdGVtLmljb259XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7aXRlbS5sYWJlbH1cbiAgICAgICAgICAgICAge2l0ZW0ua2JkICE9IG51bGwgJiYgKFxuICAgICAgICAgICAgICAgIDxrYmQgY2xhc3NOYW1lPVwibWwtYXV0byBoaWRkZW4gZm9udC1zYW5zIHRleHQteHMgdGV4dC1ibGFjay81MCBncm91cC1ob3ZlcjppbmxpbmUgZ3JvdXAtZm9jdXM6aW5saW5lIGRhcms6dGV4dC13aGl0ZS81MFwiPlxuICAgICAgICAgICAgICAgICAg4oyYe2l0ZW0ua2JkfVxuICAgICAgICAgICAgICAgIDwva2JkPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Bcmlha2l0Lk1lbnVJdGVtPlxuICAgICAgICAgICk7XG4gICAgICAgIH0pfVxuICAgIDwvQXJpYWtpdC5NZW51PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25Qb3B1cDtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VEZWxheWVkUmVuZGVyIH0gZnJvbSAnfi9ob29rcyc7XG5cbmludGVyZmFjZSBEZWxheWVkUmVuZGVyUHJvcHMge1xuICBkZWxheTogbnVtYmVyO1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufVxuXG5jb25zdCBEZWxheWVkUmVuZGVyID0gKHsgZGVsYXksIGNoaWxkcmVuIH06IERlbGF5ZWRSZW5kZXJQcm9wcykgPT5cbiAgdXNlRGVsYXllZFJlbmRlcihkZWxheSkoKCkgPT4gY2hpbGRyZW4pO1xuXG5leHBvcnQgZGVmYXVsdCBEZWxheWVkUmVuZGVyO1xuIiwiaW1wb3J0IHsgSVRoZW1lUkdCLCBJVGhlbWVWYXJpYWJsZXMgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKlxuICogVmFsaWRhdGVzIFJHQiBzdHJpbmcgZm9ybWF0IChlLmcuLCBcIjI1NSAyNTUgMjU1XCIpXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlUkdCKHJnYjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghcmdiKSByZXR1cm4gdHJ1ZTtcbiAgY29uc3QgcmdiUmVnZXggPSAvXihcXGR7MSwzfSlcXHMrKFxcZHsxLDN9KVxccysoXFxkezEsM30pJC87XG4gIGNvbnN0IG1hdGNoID0gcmdiLm1hdGNoKHJnYlJlZ2V4KTtcblxuICBpZiAoIW1hdGNoKSByZXR1cm4gZmFsc2U7XG5cbiAgLy8gQ2hlY2sgdGhhdCBlYWNoIHZhbHVlIGlzIGJldHdlZW4gMC0yNTVcbiAgY29uc3QgWywgciwgZywgYl0gPSBtYXRjaDtcbiAgcmV0dXJuIFtyLCBnLCBiXS5ldmVyeSgodmFsKSA9PiB7XG4gICAgY29uc3QgbnVtID0gcGFyc2VJbnQodmFsLCAxMCk7XG4gICAgcmV0dXJuIG51bSA+PSAwICYmIG51bSA8PSAyNTU7XG4gIH0pO1xufVxuXG4vKipcbiAqIE1hcHMgdGhlbWUgUkdCIHZhbHVlcyB0byBDU1MgdmFyaWFibGVzXG4gKi9cbmZ1bmN0aW9uIG1hcFRoZW1lKHJnYjogSVRoZW1lUkdCKTogUGFydGlhbDxJVGhlbWVWYXJpYWJsZXM+IHtcbiAgY29uc3QgdmFyaWFibGVzOiBQYXJ0aWFsPElUaGVtZVZhcmlhYmxlcz4gPSB7fTtcblxuICAvLyBNYXAgZWFjaCBSR0IgdmFsdWUgdG8gaXRzIGNvcnJlc3BvbmRpbmcgQ1NTIHZhcmlhYmxlXG4gIGNvbnN0IG1hcHBpbmdzOiBSZWNvcmQ8a2V5b2YgSVRoZW1lUkdCLCBrZXlvZiBJVGhlbWVWYXJpYWJsZXM+ID0ge1xuICAgICdyZ2ItdGV4dC1wcmltYXJ5JzogJy0tdGV4dC1wcmltYXJ5JyxcbiAgICAncmdiLXRleHQtc2Vjb25kYXJ5JzogJy0tdGV4dC1zZWNvbmRhcnknLFxuICAgICdyZ2ItdGV4dC1zZWNvbmRhcnktYWx0JzogJy0tdGV4dC1zZWNvbmRhcnktYWx0JyxcbiAgICAncmdiLXRleHQtdGVydGlhcnknOiAnLS10ZXh0LXRlcnRpYXJ5JyxcbiAgICAncmdiLXRleHQtd2FybmluZyc6ICctLXRleHQtd2FybmluZycsXG4gICAgJ3JnYi1yaW5nLXByaW1hcnknOiAnLS1yaW5nLXByaW1hcnknLFxuICAgICdyZ2ItaGVhZGVyLXByaW1hcnknOiAnLS1oZWFkZXItcHJpbWFyeScsXG4gICAgJ3JnYi1oZWFkZXItaG92ZXInOiAnLS1oZWFkZXItaG92ZXInLFxuICAgICdyZ2ItaGVhZGVyLWJ1dHRvbi1ob3Zlcic6ICctLWhlYWRlci1idXR0b24taG92ZXInLFxuICAgICdyZ2Itc3VyZmFjZS1hY3RpdmUnOiAnLS1zdXJmYWNlLWFjdGl2ZScsXG4gICAgJ3JnYi1zdXJmYWNlLWFjdGl2ZS1hbHQnOiAnLS1zdXJmYWNlLWFjdGl2ZS1hbHQnLFxuICAgICdyZ2Itc3VyZmFjZS1ob3Zlcic6ICctLXN1cmZhY2UtaG92ZXInLFxuICAgICdyZ2Itc3VyZmFjZS1ob3Zlci1hbHQnOiAnLS1zdXJmYWNlLWhvdmVyLWFsdCcsXG4gICAgJ3JnYi1zdXJmYWNlLXByaW1hcnknOiAnLS1zdXJmYWNlLXByaW1hcnknLFxuICAgICdyZ2Itc3VyZmFjZS1wcmltYXJ5LWFsdCc6ICctLXN1cmZhY2UtcHJpbWFyeS1hbHQnLFxuICAgICdyZ2Itc3VyZmFjZS1wcmltYXJ5LWNvbnRyYXN0JzogJy0tc3VyZmFjZS1wcmltYXJ5LWNvbnRyYXN0JyxcbiAgICAncmdiLXN1cmZhY2Utc2Vjb25kYXJ5JzogJy0tc3VyZmFjZS1zZWNvbmRhcnknLFxuICAgICdyZ2Itc3VyZmFjZS1zZWNvbmRhcnktYWx0JzogJy0tc3VyZmFjZS1zZWNvbmRhcnktYWx0JyxcbiAgICAncmdiLXN1cmZhY2UtdGVydGlhcnknOiAnLS1zdXJmYWNlLXRlcnRpYXJ5JyxcbiAgICAncmdiLXN1cmZhY2UtdGVydGlhcnktYWx0JzogJy0tc3VyZmFjZS10ZXJ0aWFyeS1hbHQnLFxuICAgICdyZ2Itc3VyZmFjZS1kaWFsb2cnOiAnLS1zdXJmYWNlLWRpYWxvZycsXG4gICAgJ3JnYi1zdXJmYWNlLXN1Ym1pdCc6ICctLXN1cmZhY2Utc3VibWl0JyxcbiAgICAncmdiLXN1cmZhY2Utc3VibWl0LWhvdmVyJzogJy0tc3VyZmFjZS1zdWJtaXQtaG92ZXInLFxuICAgICdyZ2Itc3VyZmFjZS1kZXN0cnVjdGl2ZSc6ICctLXN1cmZhY2UtZGVzdHJ1Y3RpdmUnLFxuICAgICdyZ2Itc3VyZmFjZS1kZXN0cnVjdGl2ZS1ob3Zlcic6ICctLXN1cmZhY2UtZGVzdHJ1Y3RpdmUtaG92ZXInLFxuICAgICdyZ2Itc3VyZmFjZS1jaGF0JzogJy0tc3VyZmFjZS1jaGF0JyxcbiAgICAncmdiLWJvcmRlci1saWdodCc6ICctLWJvcmRlci1saWdodCcsXG4gICAgJ3JnYi1ib3JkZXItbWVkaXVtJzogJy0tYm9yZGVyLW1lZGl1bScsXG4gICAgJ3JnYi1ib3JkZXItbWVkaXVtLWFsdCc6ICctLWJvcmRlci1tZWRpdW0tYWx0JyxcbiAgICAncmdiLWJvcmRlci1oZWF2eSc6ICctLWJvcmRlci1oZWF2eScsXG4gICAgJ3JnYi1ib3JkZXIteGhlYXZ5JzogJy0tYm9yZGVyLXhoZWF2eScsXG4gICAgJ3JnYi1icmFuZC1wdXJwbGUnOiAnLS1icmFuZC1wdXJwbGUnLFxuICAgICdyZ2ItcHJlc2VudGF0aW9uJzogJy0tcHJlc2VudGF0aW9uJyxcblxuICAgIC8vIFV0aWxpdHkgY29sb3JzXG4gICAgJ3JnYi1iYWNrZ3JvdW5kJzogJy0tYmFja2dyb3VuZCcsXG4gICAgJ3JnYi1mb3JlZ3JvdW5kJzogJy0tZm9yZWdyb3VuZCcsXG4gICAgJ3JnYi1wcmltYXJ5JzogJy0tcHJpbWFyeScsXG4gICAgJ3JnYi1wcmltYXJ5LWZvcmVncm91bmQnOiAnLS1wcmltYXJ5LWZvcmVncm91bmQnLFxuICAgICdyZ2Itc2Vjb25kYXJ5JzogJy0tc2Vjb25kYXJ5JyxcbiAgICAncmdiLXNlY29uZGFyeS1mb3JlZ3JvdW5kJzogJy0tc2Vjb25kYXJ5LWZvcmVncm91bmQnLFxuICAgICdyZ2ItbXV0ZWQnOiAnLS1tdXRlZCcsXG4gICAgJ3JnYi1tdXRlZC1mb3JlZ3JvdW5kJzogJy0tbXV0ZWQtZm9yZWdyb3VuZCcsXG4gICAgJ3JnYi1hY2NlbnQnOiAnLS1hY2NlbnQnLFxuICAgICdyZ2ItYWNjZW50LWZvcmVncm91bmQnOiAnLS1hY2NlbnQtZm9yZWdyb3VuZCcsXG4gICAgJ3JnYi1kZXN0cnVjdGl2ZS1mb3JlZ3JvdW5kJzogJy0tZGVzdHJ1Y3RpdmUtZm9yZWdyb3VuZCcsXG4gICAgJ3JnYi1ib3JkZXInOiAnLS1ib3JkZXInLFxuICAgICdyZ2ItaW5wdXQnOiAnLS1pbnB1dCcsXG4gICAgJ3JnYi1yaW5nJzogJy0tcmluZycsXG4gICAgJ3JnYi1jYXJkJzogJy0tY2FyZCcsXG4gICAgJ3JnYi1jYXJkLWZvcmVncm91bmQnOiAnLS1jYXJkLWZvcmVncm91bmQnLFxuICB9O1xuXG4gIE9iamVjdC5lbnRyaWVzKG1hcHBpbmdzKS5mb3JFYWNoKChbcmdiS2V5LCBjc3NWYXJdKSA9PiB7XG4gICAgY29uc3QgdmFsdWUgPSByZ2JbcmdiS2V5IGFzIGtleW9mIElUaGVtZVJHQl07XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB2YXJpYWJsZXNbY3NzVmFyXSA9IHZhbHVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlcztcbn1cblxuLyoqXG4gKiBBcHBsaWVzIHRoZW1lIHRvIHRoZSBkb2N1bWVudCByb290XG4gKiBTZXRzIENTUyB2YXJpYWJsZXMgYXMgcmdiKCkgdmFsdWVzIGZvciBjb21wYXRpYmlsaXR5IHdpdGggZXhpc3RpbmcgQ1NTXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFwcGx5VGhlbWUodGhlbWVSR0I/OiBJVGhlbWVSR0IpIHtcbiAgaWYgKCF0aGVtZVJHQikgcmV0dXJuO1xuXG4gIGNvbnN0IHRoZW1lT2JqZWN0ID0gbWFwVGhlbWUodGhlbWVSR0IpO1xuICBjb25zdCByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gIE9iamVjdC5lbnRyaWVzKHRoZW1lT2JqZWN0KS5mb3JFYWNoKChbY3NzVmFyLCB2YWx1ZV0pID0+IHtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm47XG5cbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdGVSR0IodmFsdWUpO1xuICAgIGlmICghdmFsaWRhdGlvbikge1xuICAgICAgY29uc29sZS5lcnJvcihgSW52YWxpZCBSR0IgdmFsdWUgZm9yICR7Y3NzVmFyfTogJHt2YWx1ZX1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTZXQgdGhlIENTUyB2YXJpYWJsZSBhcyByZ2IoKSB2YWx1ZSBmb3IgY29tcGF0aWJpbGl0eVxuICAgIC8vIFRoaXMgZW5zdXJlcyBleGlzdGluZyBDU1MgdGhhdCBleHBlY3RzIGNvbG9yIHZhbHVlcyAobm90IHNwYWNlLXNlcGFyYXRlZCBSR0IpIGNvbnRpbnVlcyB0byB3b3JrXG4gICAgcm9vdC5zdHlsZS5zZXRQcm9wZXJ0eShjc3NWYXIsIGByZ2IoJHt2YWx1ZX0pYCk7XG4gIH0pO1xufVxuIiwiaW1wb3J0IFJlYWN0LCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBJVGhlbWVSR0IgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgYXBwbHlUaGVtZSBmcm9tICcuLi91dGlscy9hcHBseVRoZW1lJztcblxuY29uc3QgVEhFTUVfS0VZID0gJ2NvbG9yLXRoZW1lJztcbmNvbnN0IFRIRU1FX0NPTE9SU19LRVkgPSAndGhlbWUtY29sb3JzJztcbmNvbnN0IFRIRU1FX05BTUVfS0VZID0gJ3RoZW1lLW5hbWUnO1xuXG50eXBlIFRoZW1lQ29udGV4dFR5cGUgPSB7XG4gIHRoZW1lOiBzdHJpbmc7IC8vICdsaWdodCcgfCAnZGFyaycgfCAnc3lzdGVtJ1xuICBzZXRUaGVtZTogKHRoZW1lOiBzdHJpbmcpID0+IHZvaWQ7XG4gIHRoZW1lUkdCPzogSVRoZW1lUkdCO1xuICBzZXRUaGVtZVJHQjogKGNvbG9ycz86IElUaGVtZVJHQikgPT4gdm9pZDtcbiAgdGhlbWVOYW1lPzogc3RyaW5nO1xuICBzZXRUaGVtZU5hbWU6IChuYW1lPzogc3RyaW5nKSA9PiB2b2lkO1xuICByZXNldFRoZW1lOiAoKSA9PiB2b2lkO1xufTtcblxuLy8gRXhwb3J0IFRoZW1lQ29udGV4dCBzbyBpdCBjYW4gYmUgaW1wb3J0ZWQgZnJvbSBob29rc1xuZXhwb3J0IGNvbnN0IFRoZW1lQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8VGhlbWVDb250ZXh0VHlwZT4oe1xuICB0aGVtZTogJ3N5c3RlbScsXG4gIHNldFRoZW1lOiAoKSA9PiB1bmRlZmluZWQsXG4gIHNldFRoZW1lUkdCOiAoKSA9PiB1bmRlZmluZWQsXG4gIHNldFRoZW1lTmFtZTogKCkgPT4gdW5kZWZpbmVkLFxuICByZXNldFRoZW1lOiAoKSA9PiB1bmRlZmluZWQsXG59KTtcblxuZXhwb3J0IGludGVyZmFjZSBUaGVtZVByb3ZpZGVyUHJvcHMge1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xuICB0aGVtZVJHQj86IElUaGVtZVJHQjtcbiAgdGhlbWVOYW1lPzogc3RyaW5nO1xuICBpbml0aWFsVGhlbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlbWUgaXMgZGFya1xuICovXG5leHBvcnQgY29uc3QgaXNEYXJrID0gKHRoZW1lOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgaWYgKHRoZW1lID09PSAnc3lzdGVtJykge1xuICAgIHJldHVybiB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpLm1hdGNoZXM7XG4gIH1cbiAgcmV0dXJuIHRoZW1lID09PSAnZGFyayc7XG59O1xuXG4vKipcbiAqIFZhbGlkYXRlIHRoYXQgYSBwYXJzZWQgdmFsdWUgbG9va3MgbGlrZSBhbiBJVGhlbWVSR0Igb2JqZWN0XG4gKi9cbmNvbnN0IGlzVmFsaWRUaGVtZUNvbG9ycyA9ICh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIElUaGVtZVJHQiA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8IHZhbHVlID09PSBudWxsIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHZhbHVlKSkge1xuICAgIGNvbnN0IHZhbCA9ICh2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilba2V5XTtcbiAgICBpZiAodmFsICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIHZhbCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vKipcbiAqIEdldCBpbml0aWFsIHRoZW1lIGZyb20gbG9jYWxTdG9yYWdlIG9yIGRlZmF1bHQgdG8gJ3N5c3RlbSdcbiAqL1xuY29uc3QgZ2V0SW5pdGlhbFRoZW1lID0gKCk6IHN0cmluZyA9PiB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykgcmV0dXJuICdzeXN0ZW0nO1xuICB0cnkge1xuICAgIGNvbnN0IHN0b3JlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFRIRU1FX0tFWSk7XG4gICAgaWYgKHN0b3JlZCAmJiBbJ2xpZ2h0JywgJ2RhcmsnLCAnc3lzdGVtJ10uaW5jbHVkZXMoc3RvcmVkKSkge1xuICAgICAgcmV0dXJuIHN0b3JlZDtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIC8vIGxvY2FsU3RvcmFnZSBub3QgYXZhaWxhYmxlXG4gIH1cbiAgcmV0dXJuICdzeXN0ZW0nO1xufTtcblxuLyoqXG4gKiBHZXQgaW5pdGlhbCB0aGVtZSBjb2xvcnMgZnJvbSBsb2NhbFN0b3JhZ2VcbiAqL1xuY29uc3QgZ2V0SW5pdGlhbFRoZW1lQ29sb3JzID0gKCk6IElUaGVtZVJHQiB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgdHJ5IHtcbiAgICBjb25zdCBzdG9yZWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShUSEVNRV9DT0xPUlNfS0VZKTtcbiAgICBpZiAoc3RvcmVkKSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHN0b3JlZCk7XG4gICAgICBpZiAoaXNWYWxpZFRoZW1lQ29sb3JzKHBhcnNlZCkpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlZDtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIC8vIGxvY2FsU3RvcmFnZSBub3QgYXZhaWxhYmxlIG9yIGludmFsaWQgSlNPTlxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG4vKipcbiAqIEdldCBpbml0aWFsIHRoZW1lIG5hbWUgZnJvbSBsb2NhbFN0b3JhZ2VcbiAqL1xuY29uc3QgZ2V0SW5pdGlhbFRoZW1lTmFtZSA9ICgpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybiB1bmRlZmluZWQ7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFRIRU1FX05BTUVfS0VZKSB8fCB1bmRlZmluZWQ7XG4gIH0gY2F0Y2gge1xuICAgIC8vIGxvY2FsU3RvcmFnZSBub3QgYXZhaWxhYmxlXG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogVGhlbWVQcm92aWRlciBjb21wb25lbnQgdGhhdCBoYW5kbGVzIGJvdGggZGFyay9saWdodCBtb2RlIHN3aXRjaGluZ1xuICogYW5kIGR5bmFtaWMgY29sb3IgdGhlbWVzIHZpYSBDU1MgdmFyaWFibGVzIHdpdGggbG9jYWxTdG9yYWdlIHBlcnNpc3RlbmNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBUaGVtZVByb3ZpZGVyKHtcbiAgY2hpbGRyZW4sXG4gIHRoZW1lUkdCOiBwcm9wVGhlbWVSR0IsXG4gIHRoZW1lTmFtZTogcHJvcFRoZW1lTmFtZSxcbiAgaW5pdGlhbFRoZW1lLFxufTogVGhlbWVQcm92aWRlclByb3BzKSB7XG4gIGNvbnN0IFt0aGVtZSwgc2V0VGhlbWVTdGF0ZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KGdldEluaXRpYWxUaGVtZSk7XG4gIGNvbnN0IFt0aGVtZVJHQiwgc2V0VGhlbWVSR0JTdGF0ZV0gPSB1c2VTdGF0ZTxJVGhlbWVSR0IgfCB1bmRlZmluZWQ+KGdldEluaXRpYWxUaGVtZUNvbG9ycyk7XG4gIGNvbnN0IFt0aGVtZU5hbWUsIHNldFRoZW1lTmFtZVN0YXRlXSA9IHVzZVN0YXRlPHN0cmluZyB8IHVuZGVmaW5lZD4oZ2V0SW5pdGlhbFRoZW1lTmFtZSk7XG5cbiAgLy8gVHJhY2sgaWYgcHJvcHMgaGF2ZSBiZWVuIGluaXRpYWxpemVkXG4gIGNvbnN0IGluaXRpYWxpemVkID0gdXNlUmVmKGZhbHNlKTtcblxuICBjb25zdCBzZXRUaGVtZSA9IHVzZUNhbGxiYWNrKChuZXdUaGVtZTogc3RyaW5nKSA9PiB7XG4gICAgc2V0VGhlbWVTdGF0ZShuZXdUaGVtZSk7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSByZXR1cm47XG4gICAgdHJ5IHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFRIRU1FX0tFWSwgbmV3VGhlbWUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gbG9jYWxTdG9yYWdlIG5vdCBhdmFpbGFibGVcbiAgICB9XG4gIH0sIFtdKTtcblxuICBjb25zdCBzZXRUaGVtZVJHQiA9IHVzZUNhbGxiYWNrKChjb2xvcnM/OiBJVGhlbWVSR0IpID0+IHtcbiAgICBzZXRUaGVtZVJHQlN0YXRlKGNvbG9ycyk7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSByZXR1cm47XG4gICAgdHJ5IHtcbiAgICAgIGlmIChjb2xvcnMpIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oVEhFTUVfQ09MT1JTX0tFWSwgSlNPTi5zdHJpbmdpZnkoY29sb3JzKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShUSEVNRV9DT0xPUlNfS0VZKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIGxvY2FsU3RvcmFnZSBub3QgYXZhaWxhYmxlXG4gICAgfVxuICB9LCBbXSk7XG5cbiAgY29uc3Qgc2V0VGhlbWVOYW1lID0gdXNlQ2FsbGJhY2soKG5hbWU/OiBzdHJpbmcpID0+IHtcbiAgICBzZXRUaGVtZU5hbWVTdGF0ZShuYW1lKTtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oVEhFTUVfTkFNRV9LRVksIG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oVEhFTUVfTkFNRV9LRVkpO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gbG9jYWxTdG9yYWdlIG5vdCBhdmFpbGFibGVcbiAgICB9XG4gIH0sIFtdKTtcblxuICAvLyBJbml0aWFsaXplIGZyb20gcHJvcHMgb25seSBvbmNlIG9uIG1vdW50XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGluaXRpYWxpemVkLmN1cnJlbnQpIHJldHVybjtcbiAgICBpbml0aWFsaXplZC5jdXJyZW50ID0gdHJ1ZTtcblxuICAgIC8vIFNldCBpbml0aWFsIHRoZW1lIGlmIHByb3ZpZGVkXG4gICAgaWYgKGluaXRpYWxUaGVtZSkge1xuICAgICAgc2V0VGhlbWUoaW5pdGlhbFRoZW1lKTtcbiAgICB9XG5cbiAgICAvLyBTZXQgaW5pdGlhbCB0aGVtZSBjb2xvcnMgaWYgcHJvdmlkZWRcbiAgICBpZiAocHJvcFRoZW1lUkdCKSB7XG4gICAgICBzZXRUaGVtZVJHQihwcm9wVGhlbWVSR0IpO1xuICAgIH1cblxuICAgIC8vIFNldCBpbml0aWFsIHRoZW1lIG5hbWUgaWYgcHJvdmlkZWRcbiAgICBpZiAocHJvcFRoZW1lTmFtZSkge1xuICAgICAgc2V0VGhlbWVOYW1lKHByb3BUaGVtZU5hbWUpO1xuICAgIH1cbiAgfSwgW2luaXRpYWxUaGVtZSwgcHJvcFRoZW1lUkdCLCBwcm9wVGhlbWVOYW1lLCBzZXRUaGVtZSwgc2V0VGhlbWVSR0IsIHNldFRoZW1lTmFtZV0pO1xuXG4gIC8vIEFwcGx5IGNsYXNzLWJhc2VkIGRhcmsgbW9kZVxuICBjb25zdCBhcHBseVRoZW1lTW9kZSA9IHVzZUNhbGxiYWNrKChjdXJyZW50VGhlbWU6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHJvb3QgPSB3aW5kb3cuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIGNvbnN0IGRhcmtNb2RlID0gaXNEYXJrKGN1cnJlbnRUaGVtZSk7XG5cbiAgICByb290LmNsYXNzTGlzdC5yZW1vdmUoZGFya01vZGUgPyAnbGlnaHQnIDogJ2RhcmsnKTtcbiAgICByb290LmNsYXNzTGlzdC5hZGQoZGFya01vZGUgPyAnZGFyaycgOiAnbGlnaHQnKTtcbiAgfSwgW10pO1xuXG4gIC8vIEFwcGx5IHRoZW1lIG1vZGUgd2hlbmV2ZXIgdGhlbWUgY2hhbmdlc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGFwcGx5VGhlbWVNb2RlKHRoZW1lKTtcbiAgfSwgW3RoZW1lLCBhcHBseVRoZW1lTW9kZV0pO1xuXG4gIC8vIExpc3RlbiBmb3Igc3lzdGVtIHRoZW1lIGNoYW5nZXMgd2hlbiB0aGVtZSBpcyAnc3lzdGVtJ1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aGVtZSAhPT0gJ3N5c3RlbScpIHJldHVybjtcblxuICAgIGNvbnN0IG1lZGlhUXVlcnkgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9ICgpID0+IHtcbiAgICAgIGFwcGx5VGhlbWVNb2RlKCdzeXN0ZW0nKTtcbiAgICB9O1xuXG4gICAgbWVkaWFRdWVyeS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBoYW5kbGVDaGFuZ2UpO1xuICAgIHJldHVybiAoKSA9PiBtZWRpYVF1ZXJ5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGhhbmRsZUNoYW5nZSk7XG4gIH0sIFt0aGVtZSwgYXBwbHlUaGVtZU1vZGVdKTtcblxuICAvLyBBcHBseSBkeW5hbWljIGNvbG9yIHRoZW1lXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRoZW1lUkdCKSB7XG4gICAgICBhcHBseVRoZW1lKHRoZW1lUkdCKTtcbiAgICB9XG4gIH0sIFt0aGVtZVJHQl0pO1xuXG4gIC8vIFJlc2V0IHRoZW1lIGZ1bmN0aW9uXG4gIGNvbnN0IHJlc2V0VGhlbWUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0VGhlbWUoJ3N5c3RlbScpO1xuICAgIHNldFRoZW1lUkdCKHVuZGVmaW5lZCk7XG4gICAgc2V0VGhlbWVOYW1lKHVuZGVmaW5lZCk7XG4gICAgLy8gUmVtb3ZlIGFueSBjdXN0b20gQ1NTIHZhcmlhYmxlc1xuICAgIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgY29uc3QgY3VzdG9tUHJvcHMgPSBBcnJheS5mcm9tKHJvb3Quc3R5bGUpLmZpbHRlcigocHJvcCkgPT4gcHJvcC5zdGFydHNXaXRoKCctLScpKTtcbiAgICBjdXN0b21Qcm9wcy5mb3JFYWNoKChwcm9wKSA9PiByb290LnN0eWxlLnJlbW92ZVByb3BlcnR5KHByb3ApKTtcbiAgfSwgW3NldFRoZW1lLCBzZXRUaGVtZVJHQiwgc2V0VGhlbWVOYW1lXSk7XG5cbiAgY29uc3QgdmFsdWUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICB0aGVtZSxcbiAgICAgIHNldFRoZW1lLFxuICAgICAgdGhlbWVSR0IsXG4gICAgICBzZXRUaGVtZVJHQixcbiAgICAgIHRoZW1lTmFtZSxcbiAgICAgIHNldFRoZW1lTmFtZSxcbiAgICAgIHJlc2V0VGhlbWUsXG4gICAgfSksXG4gICAgW3RoZW1lLCBzZXRUaGVtZSwgdGhlbWVSR0IsIHNldFRoZW1lUkdCLCB0aGVtZU5hbWUsIHNldFRoZW1lTmFtZSwgcmVzZXRUaGVtZV0sXG4gICk7XG5cbiAgcmV0dXJuIDxUaGVtZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9UaGVtZUNvbnRleHQuUHJvdmlkZXI+O1xufVxuXG4vKipcbiAqIEhvb2sgdG8gYWNjZXNzIHRoZSBjdXJyZW50IHRoZW1lIGNvbnRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVRoZW1lKCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VzZVRoZW1lIG11c3QgYmUgdXNlZCB3aXRoaW4gYSBUaGVtZVByb3ZpZGVyJyk7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFRoZW1lUHJvdmlkZXI7XG4iLCIvLyBUaGlzIGZpbGUgaXMga2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBidXQgaXMgbm8gbG9uZ2VyIHVzZWQgaW50ZXJuYWxseS5cbi8vIFRoZW1lIHN0YXRlIGlzIG5vdyBtYW5hZ2VkIHZpYSBSZWFjdCB1c2VTdGF0ZSArIGxvY2FsU3RvcmFnZSBpbiBUaGVtZVByb3ZpZGVyLlxuXG5pbXBvcnQgeyBhdG9tV2l0aFN0b3JhZ2UgfSBmcm9tICdqb3RhaS91dGlscyc7XG5pbXBvcnQgeyBJVGhlbWVSR0IgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIFRoZW1lQ29udGV4dCBpbnN0ZWFkLiBUaGlzIGF0b20gaXMgbm8gbG9uZ2VyIHVzZWQgaW50ZXJuYWxseS5cbiAqL1xuZXhwb3J0IGNvbnN0IHRoZW1lTW9kZUF0b20gPSBhdG9tV2l0aFN0b3JhZ2U8c3RyaW5nPignY29sb3ItdGhlbWUnLCAnc3lzdGVtJywgdW5kZWZpbmVkLCB7XG4gIGdldE9uSW5pdDogdHJ1ZSxcbn0pO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBUaGVtZUNvbnRleHQgaW5zdGVhZC4gVGhpcyBhdG9tIGlzIG5vIGxvbmdlciB1c2VkIGludGVybmFsbHkuXG4gKi9cbmV4cG9ydCBjb25zdCB0aGVtZUNvbG9yc0F0b20gPSBhdG9tV2l0aFN0b3JhZ2U8SVRoZW1lUkdCIHwgdW5kZWZpbmVkPihcbiAgJ3RoZW1lLWNvbG9ycycsXG4gIHVuZGVmaW5lZCxcbiAgdW5kZWZpbmVkLFxuICB7XG4gICAgZ2V0T25Jbml0OiB0cnVlLFxuICB9LFxuKTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgVGhlbWVDb250ZXh0IGluc3RlYWQuIFRoaXMgYXRvbSBpcyBubyBsb25nZXIgdXNlZCBpbnRlcm5hbGx5LlxuICovXG5leHBvcnQgY29uc3QgdGhlbWVOYW1lQXRvbSA9IGF0b21XaXRoU3RvcmFnZTxzdHJpbmcgfCB1bmRlZmluZWQ+KFxuICAndGhlbWUtbmFtZScsXG4gIHVuZGVmaW5lZCxcbiAgdW5kZWZpbmVkLFxuICB7XG4gICAgZ2V0T25Jbml0OiB0cnVlLFxuICB9LFxuKTtcbiIsImltcG9ydCB7IElUaGVtZVJHQiB9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBEZWZhdWx0IGxpZ2h0IHRoZW1lXG4gKiBSR0IgdmFsdWVzIGV4dHJhY3RlZCBmcm9tIHRoZSBleGlzdGluZyBDU1MgdmFyaWFibGVzXG4gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0VGhlbWU6IElUaGVtZVJHQiA9IHtcbiAgLy8gVGV4dCBjb2xvcnNcbiAgJ3JnYi10ZXh0LXByaW1hcnknOiAnMzMgMzMgMzMnLCAvLyAjMjEyMTIxIChncmF5LTgwMClcbiAgJ3JnYi10ZXh0LXNlY29uZGFyeSc6ICc2NiA2NiA2NicsIC8vICM0MjQyNDIgKGdyYXktNjAwKVxuICAncmdiLXRleHQtc2Vjb25kYXJ5LWFsdCc6ICc4OSA4OSA4OScsIC8vICM1OTU5NTkgKGdyYXktNTAwKVxuICAncmdiLXRleHQtdGVydGlhcnknOiAnODkgODkgODknLCAvLyAjNTk1OTU5IChncmF5LTUwMClcbiAgJ3JnYi10ZXh0LXdhcm5pbmcnOiAnMjQ1IDE1OCAxMScsIC8vICNmNTllMGIgKGFtYmVyLTUwMClcblxuICAvLyBSaW5nIGNvbG9yc1xuICAncmdiLXJpbmctcHJpbWFyeSc6ICc4OSA4OSA4OScsIC8vICM1OTU5NTkgKGdyYXktNTAwKVxuXG4gIC8vIEhlYWRlciBjb2xvcnNcbiAgJ3JnYi1oZWFkZXItcHJpbWFyeSc6ICcyNTUgMjU1IDI1NScsIC8vICNmZmYgKHdoaXRlKVxuICAncmdiLWhlYWRlci1ob3Zlcic6ICcyNDcgMjQ3IDI0OCcsIC8vICNmN2Y3ZjggKGdyYXktNTApXG4gICdyZ2ItaGVhZGVyLWJ1dHRvbi1ob3Zlcic6ICcyNDcgMjQ3IDI0OCcsIC8vICNmN2Y3ZjggKGdyYXktNTApXG5cbiAgLy8gU3VyZmFjZSBjb2xvcnNcbiAgJ3JnYi1zdXJmYWNlLWFjdGl2ZSc6ICcyMzYgMjM2IDIzNicsIC8vICNlY2VjZWMgKGdyYXktMTAwKVxuICAncmdiLXN1cmZhY2UtYWN0aXZlLWFsdCc6ICcyMjcgMjI3IDIyNycsIC8vICNlM2UzZTMgKGdyYXktMjAwKVxuICAncmdiLXN1cmZhY2UtaG92ZXInOiAnMjI3IDIyNyAyMjcnLCAvLyAjZTNlM2UzIChncmF5LTIwMClcbiAgJ3JnYi1zdXJmYWNlLWhvdmVyLWFsdCc6ICcyMDUgMjA1IDIwNScsIC8vICNjZGNkY2QgKGdyYXktMzAwKVxuICAncmdiLXN1cmZhY2UtcHJpbWFyeSc6ICcyNTUgMjU1IDI1NScsIC8vICNmZmYgKHdoaXRlKVxuICAncmdiLXN1cmZhY2UtcHJpbWFyeS1hbHQnOiAnMjQ3IDI0NyAyNDgnLCAvLyAjZjdmN2Y4IChncmF5LTUwKVxuICAncmdiLXN1cmZhY2UtcHJpbWFyeS1jb250cmFzdCc6ICcyMzYgMjM2IDIzNicsIC8vICNlY2VjZWMgKGdyYXktMTAwKVxuICAncmdiLXN1cmZhY2Utc2Vjb25kYXJ5JzogJzI0NyAyNDcgMjQ4JywgLy8gI2Y3ZjdmOCAoZ3JheS01MClcbiAgJ3JnYi1zdXJmYWNlLXNlY29uZGFyeS1hbHQnOiAnMjI3IDIyNyAyMjcnLCAvLyAjZTNlM2UzIChncmF5LTIwMClcbiAgJ3JnYi1zdXJmYWNlLXRlcnRpYXJ5JzogJzIzNiAyMzYgMjM2JywgLy8gI2VjZWNlYyAoZ3JheS0xMDApXG4gICdyZ2Itc3VyZmFjZS10ZXJ0aWFyeS1hbHQnOiAnMjU1IDI1NSAyNTUnLCAvLyAjZmZmICh3aGl0ZSlcbiAgJ3JnYi1zdXJmYWNlLWRpYWxvZyc6ICcyNTUgMjU1IDI1NScsIC8vICNmZmYgKHdoaXRlKVxuICAncmdiLXN1cmZhY2Utc3VibWl0JzogJzQgMTIwIDg3JywgLy8gIzA0Nzg1NyAoZ3JlZW4tNzAwKVxuICAncmdiLXN1cmZhY2Utc3VibWl0LWhvdmVyJzogJzYgOTUgNzAnLCAvLyAjMDY1ZjQ2IChncmVlbi04MDApXG4gICdyZ2Itc3VyZmFjZS1kZXN0cnVjdGl2ZSc6ICcxODUgMjggMjgnLCAvLyAjYjkxYzFjIChyZWQtNzAwKVxuICAncmdiLXN1cmZhY2UtZGVzdHJ1Y3RpdmUtaG92ZXInOiAnMTUzIDI3IDI3JywgLy8gIzk5MWIxYiAocmVkLTgwMClcbiAgJ3JnYi1zdXJmYWNlLWNoYXQnOiAnMjU1IDI1NSAyNTUnLCAvLyAjZmZmICh3aGl0ZSlcblxuICAvLyBCb3JkZXIgY29sb3JzXG4gICdyZ2ItYm9yZGVyLWxpZ2h0JzogJzIyNyAyMjcgMjI3JywgLy8gI2UzZTNlMyAoZ3JheS0yMDApXG4gICdyZ2ItYm9yZGVyLW1lZGl1bSc6ICcyMDUgMjA1IDIwNScsIC8vICNjZGNkY2QgKGdyYXktMzAwKVxuICAncmdiLWJvcmRlci1tZWRpdW0tYWx0JzogJzIwNSAyMDUgMjA1JywgLy8gI2NkY2RjZCAoZ3JheS0zMDApXG4gICdyZ2ItYm9yZGVyLWhlYXZ5JzogJzE1MyAxNTAgMTUwJywgLy8gIzk5OTY5NiAoZ3JheS00MDApXG4gICdyZ2ItYm9yZGVyLXhoZWF2eSc6ICc4OSA4OSA4OScsIC8vICM1OTU5NTkgKGdyYXktNTAwKVxuXG4gIC8vIEJyYW5kIGNvbG9yc1xuICAncmdiLWJyYW5kLXB1cnBsZSc6ICcxNzEgMTA0IDI1NScsIC8vICNhYjY4ZmZcblxuICAvLyBQcmVzZW50YXRpb25cbiAgJ3JnYi1wcmVzZW50YXRpb24nOiAnMjU1IDI1NSAyNTUnLCAvLyAjZmZmICh3aGl0ZSlcblxuICAvLyBVdGlsaXR5IGNvbG9ycyAobWFwcGVkIHRvIGV4aXN0aW5nIGNvbG9ycyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkpXG4gICdyZ2ItYmFja2dyb3VuZCc6ICcyNTUgMjU1IDI1NScsIC8vIFNhbWUgYXMgc3VyZmFjZS1wcmltYXJ5XG4gICdyZ2ItZm9yZWdyb3VuZCc6ICcxNyAxNyAxNycsIC8vIFNhbWUgYXMgdGV4dC1wcmltYXJ5XG4gICdyZ2ItcHJpbWFyeSc6ICcyMzUgMjM1IDIzNScsIC8vIFNhbWUgYXMgc3VyZmFjZS1hY3RpdmVcbiAgJ3JnYi1wcmltYXJ5LWZvcmVncm91bmQnOiAnMCAwIDAnLCAvLyBTYW1lIGFzIHN1cmZhY2UtcHJpbWFyeS1jb250cmFzdFxuICAncmdiLXNlY29uZGFyeSc6ICcyNDcgMjQ3IDI0OCcsIC8vIFNhbWUgYXMgc3VyZmFjZS1zZWNvbmRhcnlcbiAgJ3JnYi1zZWNvbmRhcnktZm9yZWdyb3VuZCc6ICc2NiA2NiA2NicsIC8vIFNhbWUgYXMgdGV4dC1zZWNvbmRhcnlcbiAgJ3JnYi1tdXRlZCc6ICcyNTAgMjUwIDI1MCcsIC8vIFNhbWUgYXMgc3VyZmFjZS10ZXJ0aWFyeVxuICAncmdiLW11dGVkLWZvcmVncm91bmQnOiAnMTIwIDEyMCAxMjAnLCAvLyBTYW1lIGFzIHRleHQtdGVydGlhcnlcbiAgJ3JnYi1hY2NlbnQnOiAnMjQ1IDI0NSAyNDUnLCAvLyBTYW1lIGFzIHN1cmZhY2UtYWN0aXZlLWFsdFxuICAncmdiLWFjY2VudC1mb3JlZ3JvdW5kJzogJzE3IDE3IDE3JywgLy8gU2FtZSBhcyB0ZXh0LXByaW1hcnlcbiAgJ3JnYi1kZXN0cnVjdGl2ZS1mb3JlZ3JvdW5kJzogJzE3IDE3IDE3JywgLy8gU2FtZSBhcyB0ZXh0LXByaW1hcnlcbiAgJ3JnYi1ib3JkZXInOiAnMjE1IDIxNSAyMTUnLCAvLyBTYW1lIGFzIGJvcmRlci1tZWRpdW1cbiAgJ3JnYi1pbnB1dCc6ICcyMzAgMjMwIDIzMCcsIC8vIFNhbWUgYXMgYm9yZGVyLWxpZ2h0XG4gICdyZ2ItcmluZyc6ICcxODAgMTgwIDE4MCcsIC8vIFNhbWUgYXMgcmluZy1wcmltYXJ5XG4gICdyZ2ItY2FyZCc6ICcyNDcgMjQ3IDI0OCcsIC8vIFNhbWUgYXMgc3VyZmFjZS1zZWNvbmRhcnlcbiAgJ3JnYi1jYXJkLWZvcmVncm91bmQnOiAnMTcgMTcgMTcnLCAvLyBTYW1lIGFzIHRleHQtcHJpbWFyeVxufTtcbiIsImltcG9ydCB7IElUaGVtZVJHQiB9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBEYXJrIHRoZW1lXG4gKiBSR0IgdmFsdWVzIGV4dHJhY3RlZCBmcm9tIHRoZSBleGlzdGluZyBkYXJrIG1vZGUgQ1NTIHZhcmlhYmxlc1xuICovXG5leHBvcnQgY29uc3QgZGFya1RoZW1lOiBJVGhlbWVSR0IgPSB7XG4gIC8vIFRleHQgY29sb3JzXG4gICdyZ2ItdGV4dC1wcmltYXJ5JzogJzIzNiAyMzYgMjM2JywgLy8gI2VjZWNlYyAoZ3JheS0xMDApXG4gICdyZ2ItdGV4dC1zZWNvbmRhcnknOiAnMjA1IDIwNSAyMDUnLCAvLyAjY2RjZGNkIChncmF5LTMwMClcbiAgJ3JnYi10ZXh0LXNlY29uZGFyeS1hbHQnOiAnMTUzIDE1MCAxNTAnLCAvLyAjOTk5Njk2IChncmF5LTQwMClcbiAgJ3JnYi10ZXh0LXRlcnRpYXJ5JzogJzg5IDg5IDg5JywgLy8gIzU5NTk1OSAoZ3JheS01MDApXG4gICdyZ2ItdGV4dC13YXJuaW5nJzogJzI0NSAxNTggMTEnLCAvLyAjZjU5ZTBiIChhbWJlci01MDApXG5cbiAgLy8gUmluZyBjb2xvcnMgKG5vdCBkZWZpbmVkIGluIGRhcmsgbW9kZSwgdXNpbmcgZGVmYXVsdClcbiAgJ3JnYi1yaW5nLXByaW1hcnknOiAnODkgODkgODknLCAvLyAjNTk1OTU5IChncmF5LTUwMClcblxuICAvLyBIZWFkZXIgY29sb3JzXG4gICdyZ2ItaGVhZGVyLXByaW1hcnknOiAnNDcgNDcgNDcnLCAvLyAjMmYyZjJmIChncmF5LTcwMClcbiAgJ3JnYi1oZWFkZXItaG92ZXInOiAnNjYgNjYgNjYnLCAvLyAjNDI0MjQyIChncmF5LTYwMClcbiAgJ3JnYi1oZWFkZXItYnV0dG9uLWhvdmVyJzogJzQ3IDQ3IDQ3JywgLy8gIzJmMmYyZiAoZ3JheS03MDApXG5cbiAgLy8gU3VyZmFjZSBjb2xvcnNcbiAgJ3JnYi1zdXJmYWNlLWFjdGl2ZSc6ICc4OSA4OSA4OScsIC8vICM1OTU5NTkgKGdyYXktNTAwKVxuICAncmdiLXN1cmZhY2UtYWN0aXZlLWFsdCc6ICc0NyA0NyA0NycsIC8vICMyZjJmMmYgKGdyYXktNzAwKVxuICAncmdiLXN1cmZhY2UtaG92ZXInOiAnNjYgNjYgNjYnLCAvLyAjNDI0MjQyIChncmF5LTYwMClcbiAgJ3JnYi1zdXJmYWNlLWhvdmVyLWFsdCc6ICc2NiA2NiA2NicsIC8vICM0MjQyNDIgKGdyYXktNjAwKVxuICAncmdiLXN1cmZhY2UtcHJpbWFyeSc6ICcxMyAxMyAxMycsIC8vICMwZDBkMGQgKGdyYXktOTAwKVxuICAncmdiLXN1cmZhY2UtcHJpbWFyeS1hbHQnOiAnMjMgMjMgMjMnLCAvLyAjMTcxNzE3IChncmF5LTg1MClcbiAgJ3JnYi1zdXJmYWNlLXByaW1hcnktY29udHJhc3QnOiAnMjMgMjMgMjMnLCAvLyAjMTcxNzE3IChncmF5LTg1MClcbiAgJ3JnYi1zdXJmYWNlLXNlY29uZGFyeSc6ICczMyAzMyAzMycsIC8vICMyMTIxMjEgKGdyYXktODAwKVxuICAncmdiLXN1cmZhY2Utc2Vjb25kYXJ5LWFsdCc6ICczMyAzMyAzMycsIC8vICMyMTIxMjEgKGdyYXktODAwKVxuICAncmdiLXN1cmZhY2UtdGVydGlhcnknOiAnNDcgNDcgNDcnLCAvLyAjMmYyZjJmIChncmF5LTcwMClcbiAgJ3JnYi1zdXJmYWNlLXRlcnRpYXJ5LWFsdCc6ICc0NyA0NyA0NycsIC8vICMyZjJmMmYgKGdyYXktNzAwKVxuICAncmdiLXN1cmZhY2UtZGlhbG9nJzogJzIzIDIzIDIzJywgLy8gIzE3MTcxNyAoZ3JheS04NTApXG4gICdyZ2Itc3VyZmFjZS1zdWJtaXQnOiAnNCAxMjAgODcnLCAvLyAjMDQ3ODU3IChncmVlbi03MDApXG4gICdyZ2Itc3VyZmFjZS1zdWJtaXQtaG92ZXInOiAnNiA5NSA3MCcsIC8vICMwNjVmNDYgKGdyZWVuLTgwMClcbiAgJ3JnYi1zdXJmYWNlLWRlc3RydWN0aXZlJzogJzE1MyAyNyAyNycsIC8vICM5OTFiMWIgKHJlZC04MDApXG4gICdyZ2Itc3VyZmFjZS1kZXN0cnVjdGl2ZS1ob3Zlcic6ICcxMjcgMjkgMjknLCAvLyAjN2YxZDFkIChyZWQtOTAwKVxuICAncmdiLXN1cmZhY2UtY2hhdCc6ICc0NyA0NyA0NycsIC8vICMyZjJmMmYgKGdyYXktNzAwKVxuXG4gIC8vIEJvcmRlciBjb2xvcnNcbiAgJ3JnYi1ib3JkZXItbGlnaHQnOiAnNDcgNDcgNDcnLCAvLyAjMmYyZjJmIChncmF5LTcwMClcbiAgJ3JnYi1ib3JkZXItbWVkaXVtJzogJzY2IDY2IDY2JywgLy8gIzQyNDI0MiAoZ3JheS02MDApXG4gICdyZ2ItYm9yZGVyLW1lZGl1bS1hbHQnOiAnNjYgNjYgNjYnLCAvLyAjNDI0MjQyIChncmF5LTYwMClcbiAgJ3JnYi1ib3JkZXItaGVhdnknOiAnODkgODkgODknLCAvLyAjNTk1OTU5IChncmF5LTUwMClcbiAgJ3JnYi1ib3JkZXIteGhlYXZ5JzogJzE1MyAxNTAgMTUwJywgLy8gIzk5OTY5NiAoZ3JheS00MDApXG5cbiAgLy8gQnJhbmQgY29sb3JzXG4gICdyZ2ItYnJhbmQtcHVycGxlJzogJzE3MSAxMDQgMjU1JywgLy8gI2FiNjhmZlxuXG4gIC8vIFByZXNlbnRhdGlvblxuICAncmdiLXByZXNlbnRhdGlvbic6ICczMyAzMyAzMycsIC8vICMyMTIxMjEgKGdyYXktODAwKVxuXG4gIC8vIFV0aWxpdHkgY29sb3JzIChtYXBwZWQgdG8gZXhpc3RpbmcgY29sb3JzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSlcbiAgJ3JnYi1iYWNrZ3JvdW5kJzogJzMzIDMzIDMzJywgLy8gU2FtZSBhcyBzdXJmYWNlLXByaW1hcnlcbiAgJ3JnYi1mb3JlZ3JvdW5kJzogJzI1NSAyNTUgMjU1JywgLy8gU2FtZSBhcyB0ZXh0LXByaW1hcnlcbiAgJ3JnYi1wcmltYXJ5JzogJzY2IDY2IDY2JywgLy8gU2FtZSBhcyBzdXJmYWNlLWFjdGl2ZVxuICAncmdiLXByaW1hcnktZm9yZWdyb3VuZCc6ICcyNTUgMjU1IDI1NScsIC8vIFNhbWUgYXMgc3VyZmFjZS1wcmltYXJ5LWNvbnRyYXN0XG4gICdyZ2Itc2Vjb25kYXJ5JzogJzQyIDQyIDQyJywgLy8gU2FtZSBhcyBzdXJmYWNlLXNlY29uZGFyeVxuICAncmdiLXNlY29uZGFyeS1mb3JlZ3JvdW5kJzogJzE5MyAxOTMgMTkzJywgLy8gU2FtZSBhcyB0ZXh0LXNlY29uZGFyeVxuICAncmdiLW11dGVkJzogJzU2IDU2IDU2JywgLy8gU2FtZSBhcyBzdXJmYWNlLXRlcnRpYXJ5XG4gICdyZ2ItbXV0ZWQtZm9yZWdyb3VuZCc6ICcxNDAgMTQwIDE0MCcsIC8vIFNhbWUgYXMgdGV4dC10ZXJ0aWFyeVxuICAncmdiLWFjY2VudCc6ICc4MiA4MiA4MicsIC8vIFNhbWUgYXMgc3VyZmFjZS1hY3RpdmUtYWx0XG4gICdyZ2ItYWNjZW50LWZvcmVncm91bmQnOiAnMjU1IDI1NSAyNTUnLCAvLyBTYW1lIGFzIHRleHQtcHJpbWFyeVxuICAncmdiLWRlc3RydWN0aXZlLWZvcmVncm91bmQnOiAnMjU1IDI1NSAyNTUnLCAvLyBTYW1lIGFzIHRleHQtcHJpbWFyeVxuICAncmdiLWJvcmRlcic6ICc4MiA4MiA4MicsIC8vIFNhbWUgYXMgYm9yZGVyLW1lZGl1bVxuICAncmdiLWlucHV0JzogJzY2IDY2IDY2JywgLy8gU2FtZSBhcyBib3JkZXItbGlnaHRcbiAgJ3JnYi1yaW5nJzogJzI1NSAyNTUgMjU1JywgLy8gU2FtZSBhcyByaW5nLXByaW1hcnlcbiAgJ3JnYi1jYXJkJzogJzQyIDQyIDQyJywgLy8gU2FtZSBhcyBzdXJmYWNlLXNlY29uZGFyeVxuICAncmdiLWNhcmQtZm9yZWdyb3VuZCc6ICcyNTUgMjU1IDI1NScsIC8vIFNhbWUgYXMgdGV4dC1wcmltYXJ5XG59O1xuIiwiaW1wb3J0IHsgdXNlQ29udGV4dCwgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTdW4sIE1vb24sIE1vbml0b3IgfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHsgVGhlbWVDb250ZXh0LCBpc0RhcmsgfSBmcm9tICcuLi90aGVtZSc7XG5pbXBvcnQgeyB1c2VMb2NhbGl6ZSB9IGZyb20gJy4uL2hvb2tzJztcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBsYXN0VGhlbWVDaGFuZ2U/OiBudW1iZXI7XG4gIH1cbn1cblxudHlwZSBUaGVtZVR5cGUgPSAnc3lzdGVtJyB8ICdkYXJrJyB8ICdsaWdodCc7XG5cbmNvbnN0IFRoZW1lID0gKHsgdGhlbWUsIG9uQ2hhbmdlIH06IHsgdGhlbWU6IHN0cmluZzsgb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkIH0pID0+IHtcbiAgY29uc3QgbG9jYWxpemUgPSB1c2VMb2NhbGl6ZSgpO1xuXG4gIGNvbnN0IHRoZW1lSWNvbnM6IFJlY29yZDxUaGVtZVR5cGUsIEpTWC5FbGVtZW50PiA9IHtcbiAgICBzeXN0ZW06IDxNb25pdG9yIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+LFxuICAgIGRhcms6IDxNb29uIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+LFxuICAgIGxpZ2h0OiA8U3VuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+LFxuICB9O1xuXG4gIGNvbnN0IG5leHRUaGVtZSA9IGlzRGFyayh0aGVtZSkgPyAnbGlnaHQnIDogJ2RhcmsnO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlS2V5UHJlc3MgPSAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgaWYgKGUuY3RybEtleSAmJiBlLnNoaWZ0S2V5ICYmIGUua2V5LnRvTG93ZXJDYXNlKCkgPT09ICd0Jykge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG9uQ2hhbmdlKG5leHRUaGVtZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleVByZXNzKTtcbiAgICByZXR1cm4gKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlQcmVzcyk7XG4gIH0sIFtuZXh0VGhlbWUsIG9uQ2hhbmdlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiByb3VuZGVkLWxnIHAtMiB0ZXh0LXRleHQtcHJpbWFyeSB0cmFuc2l0aW9uLWNvbG9ycyBob3ZlcjpiZy1zdXJmYWNlLWhvdmVyIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1ibHVlLTYwMCBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTIgZGFyazpmb2N1cy12aXNpYmxlOnJpbmctMFwiXG4gICAgICBhcmlhLWxhYmVsPXtsb2NhbGl6ZSgnY29tX3VpX3RvZ2dsZV90aGVtZScpfVxuICAgICAgYXJpYS1rZXlzaG9ydGN1dHM9XCJDdHJsK1NoaWZ0K1RcIlxuICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBvbkNoYW5nZShuZXh0VGhlbWUpO1xuICAgICAgfX1cbiAgICAgIG9uS2V5RG93bj17KGUpID0+IHtcbiAgICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInIHx8IGUua2V5ID09PSAnICcpIHtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgb25DaGFuZ2UobmV4dFRoZW1lKTtcbiAgICAgICAgfVxuICAgICAgfX1cbiAgICA+XG4gICAgICB7dGhlbWVJY29uc1t0aGVtZSBhcyBUaGVtZVR5cGVdfVxuICAgIDwvYnV0dG9uPlxuICApO1xufTtcblxuY29uc3QgVGhlbWVTZWxlY3RvciA9ICh7IHJldHVyblRoZW1lT25seSB9OiB7IHJldHVyblRoZW1lT25seT86IGJvb2xlYW4gfSkgPT4ge1xuICBjb25zdCB7IHRoZW1lLCBzZXRUaGVtZSB9ID0gdXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xuICBjb25zdCBbYW5ub3VuY2VtZW50LCBzZXRBbm5vdW5jZW1lbnRdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBsb2NhbGl6ZSA9IHVzZUxvY2FsaXplKCk7XG5cbiAgY29uc3QgY2hhbmdlVGhlbWUgPSB1c2VDYWxsYmFjayhcbiAgICAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgIGlmICh0eXBlb2Ygd2luZG93Lmxhc3RUaGVtZUNoYW5nZSA9PT0gJ251bWJlcicgJiYgbm93IC0gd2luZG93Lmxhc3RUaGVtZUNoYW5nZSA8IDUwMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB3aW5kb3cubGFzdFRoZW1lQ2hhbmdlID0gbm93O1xuXG4gICAgICBzZXRUaGVtZSh2YWx1ZSk7XG4gICAgICBzZXRBbm5vdW5jZW1lbnQoXG4gICAgICAgIGlzRGFyayh2YWx1ZSlcbiAgICAgICAgICA/IGxvY2FsaXplKCdjb21fdWlfZGFya190aGVtZV9lbmFibGVkJylcbiAgICAgICAgICA6IGxvY2FsaXplKCdjb21fdWlfbGlnaHRfdGhlbWVfZW5hYmxlZCcpLFxuICAgICAgKTtcbiAgICB9LFxuICAgIFtzZXRUaGVtZSwgbG9jYWxpemVdLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFubm91bmNlbWVudCkge1xuICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gc2V0QW5ub3VuY2VtZW50KCcnKSwgMTAwMCk7XG4gICAgICByZXR1cm4gKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgIH1cbiAgfSwgW2Fubm91bmNlbWVudF0pO1xuXG4gIGlmIChyZXR1cm5UaGVtZU9ubHkgPT09IHRydWUpIHtcbiAgICByZXR1cm4gPFRoZW1lIHRoZW1lPXt0aGVtZX0gb25DaGFuZ2U9e2NoYW5nZVRoZW1lfSAvPjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy13aGl0ZSBwdC02IGRhcms6YmctZ3JheS05MDAgc206cHQtMFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTAgbS00XCI+XG4gICAgICAgIDxUaGVtZSB0aGVtZT17dGhlbWV9IG9uQ2hhbmdlPXtjaGFuZ2VUaGVtZX0gLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiByb2xlPVwiYWxlcnRcIiBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIiBhcmlhLWF0b21pYz1cInRydWVcIiBjbGFzc05hbWU9XCJzci1vbmx5XCI+XG4gICAgICAgIHthbm5vdW5jZW1lbnR9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRoZW1lU2VsZWN0b3I7XG4iLCJpbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IENpcmNsZUhlbHBJY29uIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IEhvdmVyQ2FyZCwgSG92ZXJDYXJkVHJpZ2dlciwgSG92ZXJDYXJkUG9ydGFsLCBIb3ZlckNhcmRDb250ZW50IH0gZnJvbSAnLi9Ib3ZlckNhcmQnO1xuaW1wb3J0IHsgRVNpZGUgfSBmcm9tICd+L2NvbW1vbic7XG5cbnR5cGUgSW5mb0hvdmVyQ2FyZFByb3BzID0ge1xuICBzaWRlPzogRVNpZGU7XG4gIHRleHQ6IHN0cmluZztcbn07XG5cbmNvbnN0IEluZm9Ib3ZlckNhcmQgPSAoeyBzaWRlLCB0ZXh0IH06IEluZm9Ib3ZlckNhcmRQcm9wcykgPT4ge1xuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIHJldHVybiAoXG4gICAgPEhvdmVyQ2FyZCBvcGVuRGVsYXk9ezUwfSBvcGVuPXtpc09wZW59IG9uT3BlbkNoYW5nZT17c2V0SXNPcGVufT5cbiAgICAgIDxIb3ZlckNhcmRUcmlnZ2VyXG4gICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBjdXJzb3ItaGVscCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1zbSBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmluZy1wcmltYXJ5IGZvY3VzLXZpc2libGU6cmluZy1vZmZzZXQtMlwiXG4gICAgICAgIG9uRm9jdXM9eygpID0+IHNldElzT3Blbih0cnVlKX1cbiAgICAgICAgb25CbHVyPXsoKSA9PiBzZXRJc09wZW4oZmFsc2UpfVxuICAgICAgICBhcmlhLWxhYmVsPXt0ZXh0fVxuICAgICAgPlxuICAgICAgICA8Q2lyY2xlSGVscEljb24gY2xhc3NOYW1lPVwiaC01IHctNSB0ZXh0LXRleHQtdGVydGlhcnlcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgPC9Ib3ZlckNhcmRUcmlnZ2VyPlxuICAgICAgPEhvdmVyQ2FyZFBvcnRhbD5cbiAgICAgICAgPEhvdmVyQ2FyZENvbnRlbnQgc2lkZT17c2lkZX0gY2xhc3NOYW1lPVwiei1bOTk5XSB3LTgwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtaC1bODB2aF0gc3BhY2UteS0yIG92ZXJmbG93LXktYXV0b1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LXRleHQtc2Vjb25kYXJ5XCI+e3RleHR9PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0hvdmVyQ2FyZENvbnRlbnQ+XG4gICAgICA8L0hvdmVyQ2FyZFBvcnRhbD5cbiAgICA8L0hvdmVyQ2FyZD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEluZm9Ib3ZlckNhcmQ7XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBDaGVja2JveCwgdXNlU3RvcmVTdGF0ZSwgdXNlQ2hlY2tib3hTdG9yZSB9IGZyb20gJ0Bhcmlha2l0L3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmNvbnN0IENoZWNrYm94QnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTElucHV0RWxlbWVudCxcbiAge1xuICAgIGljb24/OiBSZWFjdC5SZWFjdE5vZGU7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gICAgY2hlY2tlZD86IGJvb2xlYW47XG4gICAgZGVmYXVsdENoZWNrZWQ/OiBib29sZWFuO1xuICAgIGlzQ2hlY2tlZENsYXNzTmFtZT86IHN0cmluZztcbiAgICBzZXRWYWx1ZT86ICh2YWx1ZXM6IHtcbiAgICAgIGU/OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PjtcbiAgICAgIHZhbHVlOiBib29sZWFuIHwgc3RyaW5nO1xuICAgIH0pID0+IHZvaWQ7XG4gIH1cbj4oKHsgaWNvbiwgbGFiZWwsIHNldFZhbHVlLCBjbGFzc05hbWUsIGNoZWNrZWQsIGRlZmF1bHRDaGVja2VkLCBpc0NoZWNrZWRDbGFzc05hbWUgfSwgcmVmKSA9PiB7XG4gIGNvbnN0IGNoZWNrYm94ID0gdXNlQ2hlY2tib3hTdG9yZSgpO1xuICBjb25zdCBpc0NoZWNrZWQgPSB1c2VTdG9yZVN0YXRlKGNoZWNrYm94LCAoc3RhdGUpID0+IHN0YXRlPy52YWx1ZSk7XG4gIGNvbnN0IG9uQ2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodHlwZW9mIGlzQ2hlY2tlZCAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHNldFZhbHVlPy4oeyBlLCB2YWx1ZTogIWlzQ2hlY2tlZCB9KTtcbiAgfTtcblxuICAvLyBTeW5jIHdpdGggY29udHJvbGxlZCBjaGVja2VkIHByb3BcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY2hlY2tlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjaGVja2JveC5zZXRWYWx1ZShjaGVja2VkKTtcbiAgICB9XG4gIH0sIFtjaGVja2VkLCBjaGVja2JveF0pO1xuXG4gIC8vIFNldCBpbml0aWFsIHZhbHVlIGZyb20gZGVmYXVsdENoZWNrZWRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZGVmYXVsdENoZWNrZWQgIT09IHVuZGVmaW5lZCAmJiBjaGVja2VkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNoZWNrYm94LnNldFZhbHVlKGRlZmF1bHRDaGVja2VkKTtcbiAgICB9XG4gIH0sIFtkZWZhdWx0Q2hlY2tlZCwgY2hlY2tlZCwgY2hlY2tib3hdKTtcblxuICByZXR1cm4gKFxuICAgIDxDaGVja2JveFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBzdG9yZT17Y2hlY2tib3h9XG4gICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAvLyBCYXNlIHN0eWxpbmcgZnJvbSBNdWx0aVNlbGVjdCdzIHNlbGVjdENsYXNzTmFtZVxuICAgICAgICAnZ3JvdXAgcmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0xLjUnLFxuICAgICAgICAncm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItYm9yZGVyLW1lZGl1bSB0ZXh0LXNtIGZvbnQtbWVkaXVtJyxcbiAgICAgICAgJ3NpemUtOSBwLTIgdHJhbnNpdGlvbi1hbGwgbWQ6dy1mdWxsIG1kOnAtMycsXG4gICAgICAgICdiZy10cmFuc3BhcmVudCBzaGFkb3ctc20gaG92ZXI6Ymctc3VyZmFjZS1ob3ZlciBob3ZlcjpzaGFkb3ctbWQgYWN0aXZlOnNoYWRvdy1pbm5lcicsXG5cbiAgICAgICAgLy8gQ2hlY2tlZCBzdGF0ZSBzdHlsaW5nXG4gICAgICAgIGlzQ2hlY2tlZCAmJiBpc0NoZWNrZWRDbGFzc05hbWUgJiYgaXNDaGVja2VkQ2xhc3NOYW1lLFxuXG4gICAgICAgIC8vIEFkZGl0aW9uYWwgY3VzdG9tIGNsYXNzZXNcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHJlbmRlcj17PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgYXJpYS1sYWJlbD17bGFiZWx9IC8+fVxuICAgID5cbiAgICAgIHsvKiBJY29uIGlmIHByb3ZpZGVkICovfVxuICAgICAge2ljb24gJiYgPHNwYW4gY2xhc3NOYW1lPVwiaWNvbi1tZCB0ZXh0LXRleHQtcHJpbWFyeVwiPntpY29uIGFzIFJlYWN0LkpTWC5FbGVtZW50fTwvc3Bhbj59XG5cbiAgICAgIHsvKiBTaG93IHRoZSBsYWJlbCBvbiBsYXJnZXIgc2NyZWVucyAqL31cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImhpZGRlbiB0cnVuY2F0ZSBtZDpibG9ja1wiPntsYWJlbH08L3NwYW4+XG4gICAgPC9DaGVja2JveD5cbiAgKTtcbn0pO1xuXG5DaGVja2JveEJ1dHRvbi5kaXNwbGF5TmFtZSA9ICdDaGVja2JveEJ1dHRvbic7XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrYm94QnV0dG9uO1xuIiwiaW1wb3J0IHsgZm9yd2FyZFJlZiwgUmVhY3ROb2RlLCBSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1xuICBEaWFsb2dDbG9zZSxcbiAgRGlhbG9nQ29udGVudCxcbiAgRGlhbG9nRGVzY3JpcHRpb24sXG4gIERpYWxvZ0Zvb3RlcixcbiAgRGlhbG9nSGVhZGVyLFxuICBEaWFsb2dUaXRsZSxcbn0gZnJvbSAnLi9EaWFsb2cnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5cbnR5cGUgU2VsZWN0aW9uUHJvcHMgPSB7XG4gIHNlbGVjdEhhbmRsZXI/OiAoKSA9PiB2b2lkO1xuICBzZWxlY3RDbGFzc2VzPzogc3RyaW5nO1xuICBzZWxlY3RUZXh0Pzogc3RyaW5nO1xufTtcblxudHlwZSBEaWFsb2dUZW1wbGF0ZVByb3BzID0ge1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgbWFpbj86IFJlYWN0Tm9kZTtcbiAgYnV0dG9ucz86IFJlYWN0Tm9kZTtcbiAgbGVmdEJ1dHRvbnM/OiBSZWFjdE5vZGU7XG4gIHNlbGVjdGlvbj86IFNlbGVjdGlvblByb3BzO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGhlYWRlckNsYXNzTmFtZT86IHN0cmluZztcbiAgZm9vdGVyQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBzaG93Q2xvc2VCdXR0b24/OiBib29sZWFuO1xuICBzaG93Q2FuY2VsQnV0dG9uPzogYm9vbGVhbjtcbn07XG5cbmNvbnN0IERpYWxvZ1RlbXBsYXRlID0gZm9yd2FyZFJlZigocHJvcHM6IERpYWxvZ1RlbXBsYXRlUHJvcHMsIHJlZjogUmVmPEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICBjb25zdCB7XG4gICAgdGl0bGUsXG4gICAgZGVzY3JpcHRpb24sXG4gICAgbWFpbixcbiAgICBidXR0b25zLFxuICAgIGxlZnRCdXR0b25zLFxuICAgIHNlbGVjdGlvbixcbiAgICBjbGFzc05hbWUsXG4gICAgaGVhZGVyQ2xhc3NOYW1lLFxuICAgIGZvb3RlckNsYXNzTmFtZSxcbiAgICBzaG93Q2xvc2VCdXR0b24sXG4gICAgc2hvd0NhbmNlbEJ1dHRvbiA9IHRydWUsXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgeyBzZWxlY3RIYW5kbGVyLCBzZWxlY3RDbGFzc2VzLCBzZWxlY3RUZXh0IH0gPSBzZWxlY3Rpb24gfHwge307XG4gIGNvbnN0IENhbmNlbCA9ICdjYW5jZWwnO1xuXG4gIGNvbnN0IGRlZmF1bHRTZWxlY3QgPVxuICAgICdiZy1ncmF5LTgwMCB0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIGhvdmVyOmJnLWdyYXktNzAwIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwIGRhcms6YmctZ3JheS0yMDAgZGFyazp0ZXh0LWdyYXktODAwIGRhcms6aG92ZXI6YmctZ3JheS0yMDAnO1xuICByZXR1cm4gKFxuICAgIDxEaWFsb2dDb250ZW50XG4gICAgICBzaG93Q2xvc2VCdXR0b249e3Nob3dDbG9zZUJ1dHRvbn1cbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbignc2hhZG93LTJ4bCBkYXJrOmJnLWdyYXktNzAwJywgY2xhc3NOYW1lIHx8ICcnKX1cbiAgICAgIG9uQ2xpY2s9eyhlKSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpfVxuICAgID5cbiAgICAgIDxEaWFsb2dIZWFkZXIgY2xhc3NOYW1lPXtjbihoZWFkZXJDbGFzc05hbWUgPz8gJycpfT5cbiAgICAgICAgPERpYWxvZ1RpdGxlIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1tZWRpdW0gbGVhZGluZy02IHRleHQtZ3JheS04MDAgZGFyazp0ZXh0LWdyYXktMjAwXCI+XG4gICAgICAgICAge3RpdGxlfVxuICAgICAgICA8L0RpYWxvZ1RpdGxlPlxuICAgICAgICB7ZGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgIDxEaWFsb2dEZXNjcmlwdGlvbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNjAwIGRhcms6dGV4dC1ncmF5LTMwMFwiPlxuICAgICAgICAgICAge2Rlc2NyaXB0aW9ufVxuICAgICAgICAgIDwvRGlhbG9nRGVzY3JpcHRpb24+XG4gICAgICAgICl9XG4gICAgICA8L0RpYWxvZ0hlYWRlcj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHgtNlwiPnttYWluID8gbWFpbiA6IG51bGx9PC9kaXY+XG4gICAgICA8RGlhbG9nRm9vdGVyIGNsYXNzTmFtZT17Zm9vdGVyQ2xhc3NOYW1lfT5cbiAgICAgICAgPGRpdj57bGVmdEJ1dHRvbnMgPyBsZWZ0QnV0dG9ucyA6IG51bGx9PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBoLWF1dG8gZ2FwLTNcIj5cbiAgICAgICAgICB7c2hvd0NhbmNlbEJ1dHRvbiAmJiAoXG4gICAgICAgICAgICA8RGlhbG9nQ2xvc2UgY2xhc3NOYW1lPVwiYm9yZGVyLWdyYXktMTAwIGhvdmVyOmJnLWdyYXktMTAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6aG92ZXI6YmctZ3JheS02MDBcIj5cbiAgICAgICAgICAgICAge0NhbmNlbH1cbiAgICAgICAgICAgIDwvRGlhbG9nQ2xvc2U+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7YnV0dG9ucyA/IGJ1dHRvbnMgOiBudWxsfVxuICAgICAgICAgIHtzZWxlY3Rpb24gPyAoXG4gICAgICAgICAgICA8RGlhbG9nQ2xvc2VcbiAgICAgICAgICAgICAgb25DbGljaz17c2VsZWN0SGFuZGxlcn1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtcbiAgICAgICAgICAgICAgICBzZWxlY3RDbGFzc2VzIHx8IGRlZmF1bHRTZWxlY3RcbiAgICAgICAgICAgICAgfSBpbmxpbmUtZmxleCBoLTEwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWxnIGJvcmRlci1ub25lIHB4LTQgcHktMiB0ZXh0LXNtYH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3NlbGVjdFRleHR9XG4gICAgICAgICAgICA8L0RpYWxvZ0Nsb3NlPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvRGlhbG9nRm9vdGVyPlxuICAgIDwvRGlhbG9nQ29udGVudD5cbiAgKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBEaWFsb2dUZW1wbGF0ZTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1xuICBMYWJlbCxcbiAgTGlzdGJveCxcbiAgVHJhbnNpdGlvbixcbiAgTGlzdGJveEJ1dHRvbixcbiAgTGlzdGJveE9wdGlvbixcbiAgTGlzdGJveE9wdGlvbnMsXG59IGZyb20gJ0BoZWFkbGVzc3VpL3JlYWN0JztcbmltcG9ydCB0eXBlIHsgT3B0aW9uLCBPcHRpb25XaXRoSWNvbiwgRHJvcGRvd25WYWx1ZVNldHRlciB9IGZyb20gJ34vY29tbW9uJztcbmltcG9ydCB7IHVzZU11bHRpU2VhcmNoIH0gZnJvbSAnLi9NdWx0aVNlYXJjaCc7XG5pbXBvcnQgeyBDaGVja01hcmsgfSBmcm9tICd+L3N2Z3MnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxudHlwZSBTZWxlY3REcm9wRG93blByb3BzID0ge1xuICBpZD86IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgdmFsdWU6IHN0cmluZyB8IG51bGwgfCBPcHRpb24gfCBPcHRpb25XaXRoSWNvbjtcbiAgc2V0VmFsdWU6IERyb3Bkb3duVmFsdWVTZXR0ZXIgfCAoKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpO1xuICB0YWJJbmRleD86IG51bWJlcjtcbiAgYXZhaWxhYmxlVmFsdWVzPzogc3RyaW5nW10gfCBPcHRpb25bXSB8IE9wdGlvbldpdGhJY29uW107XG4gIGVtcHR5VGl0bGU/OiBib29sZWFuO1xuICBzaG93QWJvdmU/OiBib29sZWFuO1xuICBzaG93TGFiZWw/OiBib29sZWFuO1xuICBpY29uU2lkZT86ICdsZWZ0JyB8ICdyaWdodCc7XG4gIG9wdGlvbkljb25TaWRlPzogJ2xlZnQnIHwgJ3JpZ2h0JztcbiAgcmVuZGVyT3B0aW9uPzogKCkgPT4gUmVhY3QuUmVhY3ROb2RlO1xuICBjb250YWluZXJDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGN1cnJlbnRWYWx1ZUNsYXNzPzogc3RyaW5nO1xuICBvcHRpb25zTGlzdENsYXNzPzogc3RyaW5nO1xuICBvcHRpb25zQ2xhc3M/OiBzdHJpbmc7XG4gIHN1YkNvbnRhaW5lckNsYXNzTmFtZT86IHN0cmluZztcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgc2VhcmNoQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBzZWFyY2hQbGFjZWhvbGRlcj86IHN0cmluZztcbiAgc2hvd09wdGlvbkljb24/OiBib29sZWFuO1xufTtcblxuZnVuY3Rpb24gZ2V0T3B0aW9uVGV4dChvcHRpb246IHN0cmluZyB8IE9wdGlvbiB8IE9wdGlvbldpdGhJY29uKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG9wdGlvbjtcbiAgfVxuICBpZiAoJ2xhYmVsJyBpbiBvcHRpb24pIHtcbiAgICByZXR1cm4gb3B0aW9uLmxhYmVsID8/ICcnO1xuICB9XG4gIGlmICgndmFsdWUnIGluIG9wdGlvbikge1xuICAgIHJldHVybiAob3B0aW9uLnZhbHVlID8/ICcnKSArICcnO1xuICB9XG4gIHJldHVybiAnJztcbn1cblxuZnVuY3Rpb24gU2VsZWN0RHJvcERvd24oe1xuICB0aXRsZTogX3RpdGxlLFxuICB2YWx1ZSxcbiAgZGlzYWJsZWQsXG4gIHNldFZhbHVlLFxuICBhdmFpbGFibGVWYWx1ZXMsXG4gIHNob3dBYm92ZSA9IGZhbHNlLFxuICBzaG93TGFiZWwgPSB0cnVlLFxuICBlbXB0eVRpdGxlID0gZmFsc2UsXG4gIGljb25TaWRlID0gJ3JpZ2h0JyxcbiAgb3B0aW9uSWNvblNpZGUgPSAnbGVmdCcsXG4gIHBsYWNlaG9sZGVyLFxuICBjb250YWluZXJDbGFzc05hbWUsXG4gIG9wdGlvbnNMaXN0Q2xhc3MsXG4gIG9wdGlvbnNDbGFzcyxcbiAgY3VycmVudFZhbHVlQ2xhc3MsXG4gIHN1YkNvbnRhaW5lckNsYXNzTmFtZSxcbiAgY2xhc3NOYW1lLFxuICByZW5kZXJPcHRpb24sXG4gIHNlYXJjaENsYXNzTmFtZSxcbiAgc2VhcmNoUGxhY2Vob2xkZXIsXG4gIHNob3dPcHRpb25JY29uID0gZmFsc2UsXG59OiBTZWxlY3REcm9wRG93blByb3BzKSB7XG4gIGNvbnN0IHRyYW5zaXRpb25Qcm9wcyA9IHsgY2xhc3NOYW1lOiAndG9wLWZ1bGwgbXQtMycgfTtcbiAgaWYgKHNob3dBYm92ZSkge1xuICAgIHRyYW5zaXRpb25Qcm9wcy5jbGFzc05hbWUgPSAnYm90dG9tLWZ1bGwgbWItMyc7XG4gIH1cblxuICBsZXQgdGl0bGUgPSBfdGl0bGU7XG4gIGlmIChlbXB0eVRpdGxlKSB7XG4gICAgdGl0bGUgPSAnJztcbiAgfVxuXG4gIGNvbnN0IHZhbHVlcyA9IGF2YWlsYWJsZVZhbHVlcyA/PyBbXTtcblxuICAvLyBFbmFibGUgc2VhcmNoYWJsZSBzZWxlY3QgaWYgZW5vdWdoIGl0ZW1zIGFyZSBwcm92aWRlZC5cbiAgY29uc3QgW2ZpbHRlcmVkVmFsdWVzLCBzZWFyY2hSZW5kZXJdID0gdXNlTXVsdGlTZWFyY2g8c3RyaW5nW10gfCBPcHRpb25bXT4oe1xuICAgIGF2YWlsYWJsZU9wdGlvbnM6IHZhbHVlcyxcbiAgICBwbGFjZWhvbGRlcjogc2VhcmNoUGxhY2Vob2xkZXIsXG4gICAgZ2V0VGV4dEtleU92ZXJyaWRlOiAob3B0aW9uKSA9PiBnZXRPcHRpb25UZXh0KG9wdGlvbikudG9VcHBlckNhc2UoKSxcbiAgICBjbGFzc05hbWU6IHNlYXJjaENsYXNzTmFtZSxcbiAgICBkaXNhYmxlZCxcbiAgfSk7XG4gIGNvbnN0IGhhc1NlYXJjaFJlbmRlciA9IHNlYXJjaFJlbmRlciAhPSBudWxsO1xuICBjb25zdCBvcHRpb25zID0gaGFzU2VhcmNoUmVuZGVyID8gZmlsdGVyZWRWYWx1ZXMgOiB2YWx1ZXM7XG4gIGNvbnN0IHJlbmRlckljb24gPSBzaG93T3B0aW9uSWNvbiAmJiB2YWx1ZSAhPSBudWxsICYmICh2YWx1ZSBhcyBPcHRpb25XaXRoSWNvbikuaWNvbiAhPSBudWxsO1xuXG4gIGNvbnN0IGJ1dHRvblJlZiA9IHVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y24oJ2ZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yJywgY29udGFpbmVyQ2xhc3NOYW1lID8/ICcnKX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y24oJ3JlbGF0aXZlIHctZnVsbCcsIHN1YkNvbnRhaW5lckNsYXNzTmFtZSA/PyAnJyl9PlxuICAgICAgICA8TGlzdGJveCB2YWx1ZT17dmFsdWV9IG9uQ2hhbmdlPXtzZXRWYWx1ZX0gZGlzYWJsZWQ9e2Rpc2FibGVkfT5cbiAgICAgICAgICB7KHsgb3BlbiB9KSA9PiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8TGlzdGJveEJ1dHRvblxuICAgICAgICAgICAgICAgIHJlZj17YnV0dG9uUmVmfVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWRyb3Bkb3duLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcGVuICYmIGJ1dHRvblJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgYnV0dG9uUmVmLmN1cnJlbnQuY2xpY2soKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICdyZWxhdGl2ZSBmbGV4IHctZnVsbCBjdXJzb3ItZGVmYXVsdCBmbGV4LWNvbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYmxhY2svMTAgYmctd2hpdGUgcHktMiBwbC0zIHByLTEwIHRleHQtbGVmdCBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmluZyBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTIgZGlzYWJsZWQ6Ymctd2hpdGUgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTcwMCBzbTp0ZXh0LXNtJyxcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZSA/PyAnJyxcbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3Nob3dMYWJlbCAmJiAoXG4gICAgICAgICAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2sgdGV4dC14cyB0ZXh0LWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTUwMFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGxlc3N1aS1saXN0Ym94LWxhYmVsLTpyMTpcIlxuICAgICAgICAgICAgICAgICAgICBkYXRhLWhlYWRsZXNzdWktc3RhdGU9XCJcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7dGl0bGV9XG4gICAgICAgICAgICAgICAgICA8L0xhYmVsPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggdy1mdWxsIHRydW5jYXRlXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgICdmbGV4IGgtNiBpdGVtcy1jZW50ZXIgZ2FwLTEgdHJ1bmNhdGUgdGV4dC1zbSB0ZXh0LWdyYXktODAwIGRhcms6dGV4dC13aGl0ZScsXG4gICAgICAgICAgICAgICAgICAgICAgIXNob3dMYWJlbCA/ICd0ZXh0LXhzJyA6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZUNsYXNzID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7IXNob3dMYWJlbCAmJiAhZW1wdHlUaXRsZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTUwMFwiPnt0aXRsZX06PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICB7cmVuZGVySWNvbiAmJiBvcHRpb25JY29uU2lkZSAhPT0gJ3JpZ2h0JyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiaWNvbi1tZCBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgeyh2YWx1ZSBhcyBPcHRpb25XaXRoSWNvbikuaWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIHtyZW5kZXJJY29uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJpY29uLW1kIGFic29sdXRlIHJpZ2h0LTAgbXItOCBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgeyh2YWx1ZSBhcyBPcHRpb25XaXRoSWNvbikuaWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXRleHQtc2Vjb25kYXJ5XCI+e3BsYWNlaG9sZGVyfTwvc3Bhbj47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUubGFiZWwgPz8gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSBpbnNldC15LTAgcmlnaHQtMCBmbGV4IGl0ZW1zLWNlbnRlciBwci0yXCI+XG4gICAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLTQgdy00IHRleHQtZ3JheS00MDBcIlxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17c2hvd0Fib3ZlID8geyB0cmFuc2Zvcm06ICdzY2FsZVkoLTEpJyB9IDoge319XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9XCI2IDkgMTIgMTUgMTggOVwiPjwvcG9seWxpbmU+XG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvTGlzdGJveEJ1dHRvbj5cbiAgICAgICAgICAgICAgPFRyYW5zaXRpb25cbiAgICAgICAgICAgICAgICBzaG93PXtvcGVufVxuICAgICAgICAgICAgICAgIGFzPVwiZGl2XCJcbiAgICAgICAgICAgICAgICBsZWF2ZT1cInRyYW5zaXRpb24gZWFzZS1pbiBkdXJhdGlvbi0xMDBcIlxuICAgICAgICAgICAgICAgIGxlYXZlRnJvbT1cIm9wYWNpdHktMTAwXCJcbiAgICAgICAgICAgICAgICBsZWF2ZVRvPVwib3BhY2l0eS0wXCJcbiAgICAgICAgICAgICAgICB7Li4udHJhbnNpdGlvblByb3BzfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPExpc3Rib3hPcHRpb25zXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAnYWJzb2x1dGUgei0xMCBtdC0yIG1heC1oLTYwIHctZnVsbCBvdmVyZmxvdy1hdXRvIHJvdW5kZWQgYm9yZGVyIGJnLXdoaXRlIHRleHQteHMgcmluZy1ibGFjay8xMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6cmluZy13aGl0ZS8yMCBtZDp3LVsxMDAlXScsXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnNMaXN0Q2xhc3MgPz8gJycsXG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtyZW5kZXJPcHRpb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICA8TGlzdGJveE9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgIGtleT17J2xpc3Rib3gtcmVuZGVyLW9wdGlvbid9XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e251bGx9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICdncm91cCByZWxhdGl2ZSBmbGV4IGgtWzQycHhdIGN1cnNvci1wb2ludGVyIHNlbGVjdC1ub25lIGl0ZW1zLWNlbnRlciBvdmVyZmxvdy1oaWRkZW4gcGwtMyBwci05IHRleHQtZ3JheS04MDAgaG92ZXI6YmctZ3JheS0yMCBkYXJrOnRleHQtd2hpdGUgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zQ2xhc3MgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtyZW5kZXJPcHRpb24oKSBhcyBSZWFjdC5KU1guRWxlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgPC9MaXN0Ym94T3B0aW9uPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIHtzZWFyY2hSZW5kZXIgYXMgUmVhY3QuSlNYLkVsZW1lbnR9XG4gICAgICAgICAgICAgICAgICB7b3B0aW9ucy5tYXAoKG9wdGlvbjogc3RyaW5nIHwgT3B0aW9uLCBpOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50TGFiZWwgPVxuICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gb3B0aW9uIDogKG9wdGlvbi5sYWJlbCA/PyBvcHRpb24udmFsdWUgPz8gJycpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJyA/IG9wdGlvbiA6IChvcHRpb24udmFsdWUgPz8gJycpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50SWNvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgOiAoKG9wdGlvbi5pY29uIGFzIFJlYWN0LlJlYWN0Tm9kZSkgPz8gbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBhY3RpdmVWYWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IE9wdGlvbiA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFjdGl2ZVZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZVZhbHVlID0gYWN0aXZlVmFsdWU/LnZhbHVlID8/ICcnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPExpc3Rib3hPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyh7IGFjdGl2ZSB9KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3JvdXAgcmVsYXRpdmUgZmxleCBoLVs0MnB4XSBjdXJzb3ItcG9pbnRlciBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuIHBsLTMgcHItOSB0ZXh0LWdyYXktODAwIGhvdmVyOmJnLWdyYXktMjAgZGFyazp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS02MDAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZSA/ICdiZy1zdXJmYWNlLWFjdGl2ZSB0ZXh0LXRleHQtcHJpbWFyeScgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zQ2xhc3MgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHRydW5jYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmbGV4IGgtNiBpdGVtcy1jZW50ZXIgZ2FwLTEgdGV4dC1ncmF5LTgwMCBkYXJrOnRleHQtZ3JheS0yMDAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uID09PSB2YWx1ZSA/ICdmb250LXNlbWlib2xkJyA6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblNpZGUgPT09ICdsZWZ0JyA/ICdtbC00JyA6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y3VycmVudEljb24gIT0gbnVsbCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtci0xJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25JY29uU2lkZSA9PT0gJ3JpZ2h0JyA/ICdhYnNvbHV0ZSByaWdodC0wIHByLTInIDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjdXJyZW50SWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjdXJyZW50TGFiZWx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRWYWx1ZSA9PT0gYWN0aXZlVmFsdWUgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWJzb2x1dGUgaW5zZXQteS0wIGZsZXggaXRlbXMtY2VudGVyIHRleHQtZ3JheS04MDAgZGFyazp0ZXh0LWdyYXktMjAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblNpZGUgPT09ICdsZWZ0JyA/ICdsZWZ0LTAgcGwtMicgOiAncmlnaHQtMCBwci0zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrTWFyayAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L0xpc3Rib3hPcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA8L0xpc3Rib3hPcHRpb25zPlxuICAgICAgICAgICAgICA8L1RyYW5zaXRpb24+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICA8L0xpc3Rib3g+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgU2VsZWN0RHJvcERvd247XG4iLCJpbXBvcnQgKiBhcyBBcmlha2l0IGZyb20gJ0Bhcmlha2l0L3JlYWN0JztcbmltcG9ydCB7IG1hdGNoU29ydGVyIH0gZnJvbSAnbWF0Y2gtc29ydGVyJztcbmltcG9ydCB7IFNlYXJjaCwgQ2hldnJvbkRvd24gfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHsgdXNlTWVtbywgdXNlU3RhdGUsIHVzZVJlZiwgbWVtbywgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgU2VsZWN0UmVuZGVyZXIgfSBmcm9tICdAYXJpYWtpdC9yZWFjdC1jb3JlL3NlbGVjdC9zZWxlY3QtcmVuZGVyZXInO1xuaW1wb3J0IHR5cGUgeyBPcHRpb25XaXRoSWNvbiB9IGZyb20gJ34vY29tbW9uJztcbmltcG9ydCAnLi9BbmltYXRlUG9wb3Zlci5jc3MnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuaW50ZXJmYWNlIENvbnRyb2xDb21ib2JveFByb3BzIHtcbiAgc2VsZWN0ZWRWYWx1ZTogc3RyaW5nO1xuICBkaXNwbGF5VmFsdWU/OiBzdHJpbmc7XG4gIGl0ZW1zOiBPcHRpb25XaXRoSWNvbltdO1xuICBzZXRWYWx1ZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XG4gIGFyaWFMYWJlbDogc3RyaW5nO1xuICBzZWFyY2hQbGFjZWhvbGRlcj86IHN0cmluZztcbiAgc2VsZWN0UGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIGlzQ29sbGFwc2VkOiBib29sZWFuO1xuICBTZWxlY3RJY29uPzogUmVhY3QuUmVhY3ROb2RlO1xuICBjb250YWluZXJDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGljb25DbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNob3dDYXJhdD86IGJvb2xlYW47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBpY29uU2lkZT86ICdsZWZ0JyB8ICdyaWdodCc7XG4gIHNlbGVjdElkPzogc3RyaW5nO1xufVxuXG5jb25zdCBST1dfSEVJR0hUID0gMzY7XG5cbmZ1bmN0aW9uIENvbnRyb2xDb21ib2JveCh7XG4gIHNlbGVjdGVkVmFsdWUsXG4gIGRpc3BsYXlWYWx1ZSxcbiAgaXRlbXMsXG4gIHNldFZhbHVlLFxuICBhcmlhTGFiZWwsXG4gIHNlYXJjaFBsYWNlaG9sZGVyLFxuICBzZWxlY3RQbGFjZWhvbGRlcixcbiAgY29udGFpbmVyQ2xhc3NOYW1lLFxuICBpc0NvbGxhcHNlZCxcbiAgU2VsZWN0SWNvbixcbiAgc2hvd0NhcmF0LFxuICBjbGFzc05hbWUsXG4gIGRpc2FibGVkLFxuICBpY29uQ2xhc3NOYW1lLFxuICBpY29uU2lkZSA9ICdsZWZ0JyxcbiAgc2VsZWN0SWQsXG59OiBDb250cm9sQ29tYm9ib3hQcm9wcykge1xuICBjb25zdCBbc2VhcmNoVmFsdWUsIHNldFNlYXJjaFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgYnV0dG9uUmVmID0gdXNlUmVmPEhUTUxCdXR0b25FbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2J1dHRvbldpZHRoLCBzZXRCdXR0b25XaWR0aF0gPSB1c2VTdGF0ZTxudW1iZXIgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBnZXRJdGVtID0gKG9wdGlvbjogT3B0aW9uV2l0aEljb24pID0+ICh7XG4gICAgaWQ6IGBpdGVtLSR7b3B0aW9uLnZhbHVlfWAsXG4gICAgdmFsdWU6IG9wdGlvbi52YWx1ZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgbGFiZWw6IG9wdGlvbi5sYWJlbCxcbiAgICBpY29uOiBvcHRpb24uaWNvbixcbiAgfSk7XG5cbiAgY29uc3QgY29tYm9ib3ggPSBBcmlha2l0LnVzZUNvbWJvYm94U3RvcmUoe1xuICAgIGRlZmF1bHRJdGVtczogaXRlbXMubWFwKGdldEl0ZW0pLFxuICAgIHJlc2V0VmFsdWVPbkhpZGU6IHRydWUsXG4gICAgdmFsdWU6IHNlYXJjaFZhbHVlLFxuICAgIHNldFZhbHVlOiBzZXRTZWFyY2hWYWx1ZSxcbiAgfSk7XG5cbiAgY29uc3Qgc2VsZWN0ID0gQXJpYWtpdC51c2VTZWxlY3RTdG9yZSh7XG4gICAgY29tYm9ib3gsXG4gICAgZGVmYXVsdEl0ZW1zOiBpdGVtcy5tYXAoZ2V0SXRlbSksXG4gICAgdmFsdWU6IHNlbGVjdGVkVmFsdWUsXG4gICAgc2V0VmFsdWUsXG4gIH0pO1xuXG4gIGNvbnN0IG1hdGNoZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zID0gbWF0Y2hTb3J0ZXIoaXRlbXMsIHNlYXJjaFZhbHVlLCB7XG4gICAgICBrZXlzOiBbJ3ZhbHVlJywgJ2xhYmVsJ10sXG4gICAgICBiYXNlU29ydDogKGEsIGIpID0+IChhLmluZGV4IDwgYi5pbmRleCA/IC0xIDogMSksXG4gICAgfSk7XG4gICAgcmV0dXJuIGZpbHRlcmVkSXRlbXMubWFwKGdldEl0ZW0pO1xuICB9LCBbc2VhcmNoVmFsdWUsIGl0ZW1zXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYnV0dG9uUmVmLmN1cnJlbnQgJiYgIWlzQ29sbGFwc2VkKSB7XG4gICAgICBzZXRCdXR0b25XaWR0aChidXR0b25SZWYuY3VycmVudC5vZmZzZXRXaWR0aCk7XG4gICAgfVxuICB9LCBbaXNDb2xsYXBzZWRdKTtcblxuICBjb25zdCBzZWxlY3RJY29uQ2xhc3NOYW1lID0gY24oXG4gICAgJ2ZsZXggaC01IHctNSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtZnVsbCcsXG4gICAgaWNvbkNsYXNzTmFtZSxcbiAgKTtcbiAgY29uc3Qgb3B0aW9uSWNvbkNsYXNzTmFtZSA9IGNuKFxuICAgICdtci0yIGZsZXggaC01IHctNSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtZnVsbCcsXG4gICAgaWNvbkNsYXNzTmFtZSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbignZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB4LTEnLCBjb250YWluZXJDbGFzc05hbWUpfT5cbiAgICAgIDxBcmlha2l0LlNlbGVjdExhYmVsIHN0b3JlPXtzZWxlY3R9IGNsYXNzTmFtZT1cInNyLW9ubHlcIj5cbiAgICAgICAge2FyaWFMYWJlbH1cbiAgICAgIDwvQXJpYWtpdC5TZWxlY3RMYWJlbD5cbiAgICAgIDxBcmlha2l0LlNlbGVjdFxuICAgICAgICByZWY9e2J1dHRvblJlZn1cbiAgICAgICAgc3RvcmU9e3NlbGVjdH1cbiAgICAgICAgaWQ9e3NlbGVjdElkfVxuICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgJ2ZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yIHJvdW5kZWQtZnVsbCBiZy1zdXJmYWNlLXNlY29uZGFyeScsXG4gICAgICAgICAgJ3RleHQtdGV4dC1wcmltYXJ5IGhvdmVyOmJnLXN1cmZhY2UtdGVydGlhcnknLFxuICAgICAgICAgICdib3JkZXIgYm9yZGVyLWJvcmRlci1saWdodCcsXG4gICAgICAgICAgaXNDb2xsYXBzZWQgPyAnaC05IHctOScgOiAnaC05IHctZnVsbCByb3VuZGVkLXhsIHB4LTMgcHktMiB0ZXh0LXNtJyxcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICA+XG4gICAgICAgIHtTZWxlY3RJY29uICE9IG51bGwgJiYgaWNvblNpZGUgPT09ICdsZWZ0JyAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3NlbGVjdEljb25DbGFzc05hbWV9PntTZWxlY3RJY29ufTwvZGl2PlxuICAgICAgICApfVxuICAgICAgICB7IWlzQ29sbGFwc2VkICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZmxleC1ncm93IHRydW5jYXRlIHRleHQtbGVmdFwiPlxuICAgICAgICAgICAgICB7ZGlzcGxheVZhbHVlICE9IG51bGxcbiAgICAgICAgICAgICAgICA/IGRpc3BsYXlWYWx1ZSB8fCBzZWxlY3RQbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgIDogc2VsZWN0ZWRWYWx1ZSB8fCBzZWxlY3RQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIHtTZWxlY3RJY29uICE9IG51bGwgJiYgaWNvblNpZGUgPT09ICdyaWdodCcgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c2VsZWN0SWNvbkNsYXNzTmFtZX0+e1NlbGVjdEljb259PC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge3Nob3dDYXJhdCAmJiA8Q2hldnJvbkRvd24gY2xhc3NOYW1lPVwiaC00IHctNCB0ZXh0LXRleHQtc2Vjb25kYXJ5XCIgLz59XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L0FyaWFraXQuU2VsZWN0PlxuICAgICAgPEFyaWFraXQuU2VsZWN0UG9wb3ZlclxuICAgICAgICBzdG9yZT17c2VsZWN0fVxuICAgICAgICBndXR0ZXI9ezR9XG4gICAgICAgIHBvcnRhbFxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICdhbmltYXRlLXBvcG92ZXIgei00MCBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC14bCBib3JkZXIgYm9yZGVyLWJvcmRlci1saWdodCBiZy1zdXJmYWNlLXNlY29uZGFyeSBzaGFkb3ctbGcnLFxuICAgICAgICApfVxuICAgICAgICBzdHlsZT17eyB3aWR0aDogaXNDb2xsYXBzZWQgPyAnMzAwcHgnIDogKGJ1dHRvbldpZHRoID8/ICczMDBweCcpIH19XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHktMS41XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiPlxuICAgICAgICAgICAgPFNlYXJjaCBjbGFzc05hbWU9XCJhYnNvbHV0ZSBsZWZ0LTMgdG9wLTEvMiBoLTQgdy00IC10cmFuc2xhdGUteS0xLzIgdGV4dC10ZXh0LXByaW1hcnlcIiAvPlxuICAgICAgICAgICAgPEFyaWFraXQuQ29tYm9ib3hcbiAgICAgICAgICAgICAgc3RvcmU9e2NvbWJvYm94fVxuICAgICAgICAgICAgICBhdXRvU2VsZWN0XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIHJvdW5kZWQtbWQgYmctc3VyZmFjZS1zZWNvbmRhcnkgcHktMiBwbC05IHByLTMgdGV4dC1zbSB0ZXh0LXRleHQtcHJpbWFyeSBmb2N1czpvdXRsaW5lLW5vbmVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWF4LWgtWzMwMHB4XSBvdmVyZmxvdy1hdXRvXCI+XG4gICAgICAgICAgPEFyaWFraXQuQ29tYm9ib3hMaXN0IHN0b3JlPXtjb21ib2JveH0+XG4gICAgICAgICAgICA8U2VsZWN0UmVuZGVyZXIgc3RvcmU9e3NlbGVjdH0gaXRlbXM9e21hdGNoZXN9IGl0ZW1TaXplPXtST1dfSEVJR0hUfSBvdmVyc2Nhbj17NX0+XG4gICAgICAgICAgICAgIHsoeyB2YWx1ZSwgaWNvbiwgbGFiZWwsIC4uLml0ZW0gfSkgPT4gKFxuICAgICAgICAgICAgICAgIDxBcmlha2l0LkNvbWJvYm94SXRlbVxuICAgICAgICAgICAgICAgICAga2V5PXtpdGVtLmlkfVxuICAgICAgICAgICAgICAgICAgey4uLml0ZW19XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAnZmxleCB3LWZ1bGwgY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIHB4LTMgdGV4dC1zbScsXG4gICAgICAgICAgICAgICAgICAgICd0ZXh0LXRleHQtcHJpbWFyeSBob3ZlcjpiZy1zdXJmYWNlLXRlcnRpYXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgJ2RhdGEtW2FjdGl2ZS1pdGVtXTpiZy1zdXJmYWNlLXRlcnRpYXJ5JyxcbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICByZW5kZXI9ezxBcmlha2l0LlNlbGVjdEl0ZW0gdmFsdWU9e3ZhbHVlfSAvPn1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7aWNvbiAhPSBudWxsICYmIGljb25TaWRlID09PSAnbGVmdCcgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17b3B0aW9uSWNvbkNsYXNzTmFtZX0+e2ljb259PC9kaXY+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZmxleC1ncm93IHRydW5jYXRlIHRleHQtbGVmdFwiPntsYWJlbH08L3NwYW4+XG4gICAgICAgICAgICAgICAgICB7aWNvbiAhPSBudWxsICYmIGljb25TaWRlID09PSAncmlnaHQnICYmIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e29wdGlvbkljb25DbGFzc05hbWV9PntpY29ufTwvZGl2PlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L0FyaWFraXQuQ29tYm9ib3hJdGVtPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TZWxlY3RSZW5kZXJlcj5cbiAgICAgICAgICA8L0FyaWFraXQuQ29tYm9ib3hMaXN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvQXJpYWtpdC5TZWxlY3RQb3BvdmVyPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBtZW1vKENvbnRyb2xDb21ib2JveCk7XG4iLCJpbXBvcnQgeyBmb3J3YXJkUmVmLCBpc1ZhbGlkRWxlbWVudCwgUmVhY3ROb2RlLCBSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1xuICBPR0RpYWxvZ1RpdGxlLFxuICBPR0RpYWxvZ0Nsb3NlLFxuICBPR0RpYWxvZ0Zvb3RlcixcbiAgT0dEaWFsb2dIZWFkZXIsXG4gIE9HRGlhbG9nQ29udGVudCxcbiAgT0dEaWFsb2dEZXNjcmlwdGlvbixcbn0gZnJvbSAnLi9PcmlnaW5hbERpYWxvZyc7XG5pbXBvcnQgeyB1c2VMb2NhbGl6ZSB9IGZyb20gJ34vaG9va3MnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi9CdXR0b24nO1xuaW1wb3J0IHsgU3Bpbm5lciB9IGZyb20gJ34vc3Zncyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMvJztcblxudHlwZSBTZWxlY3Rpb25Qcm9wcyA9IHtcbiAgc2VsZWN0SGFuZGxlcj86ICgpID0+IHZvaWQ7XG4gIHNlbGVjdENsYXNzZXM/OiBzdHJpbmc7XG4gIHNlbGVjdFRleHQ/OiBzdHJpbmcgfCBSZWFjdE5vZGU7XG4gIGlzTG9hZGluZz86IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIFR5cGUgZ3VhcmQgdG8gY2hlY2sgaWYgc2VsZWN0aW9uIGlzIGEgbGVnYWN5IFNlbGVjdGlvblByb3BzIG9iamVjdFxuICovXG5mdW5jdGlvbiBpc1NlbGVjdGlvblByb3BzKHNlbGVjdGlvbjogdW5rbm93bik6IHNlbGVjdGlvbiBpcyBTZWxlY3Rpb25Qcm9wcyB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHNlbGVjdGlvbiA9PT0gJ29iamVjdCcgJiZcbiAgICBzZWxlY3Rpb24gIT09IG51bGwgJiZcbiAgICAhaXNWYWxpZEVsZW1lbnQoc2VsZWN0aW9uKSAmJlxuICAgICgnc2VsZWN0SGFuZGxlcicgaW4gc2VsZWN0aW9uIHx8XG4gICAgICAnc2VsZWN0Q2xhc3NlcycgaW4gc2VsZWN0aW9uIHx8XG4gICAgICAnc2VsZWN0VGV4dCcgaW4gc2VsZWN0aW9uIHx8XG4gICAgICAnaXNMb2FkaW5nJyBpbiBzZWxlY3Rpb24pXG4gICk7XG59XG5cbnR5cGUgRGlhbG9nVGVtcGxhdGVQcm9wcyA9IHtcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIG1haW4/OiBSZWFjdE5vZGU7XG4gIGJ1dHRvbnM/OiBSZWFjdE5vZGU7XG4gIGxlZnRCdXR0b25zPzogUmVhY3ROb2RlO1xuICAvKipcbiAgICogU2VsZWN0aW9uIGJ1dHRvbiBjb25maWd1cmF0aW9uLiBDYW4gYmUgZWl0aGVyOlxuICAgKiAtIEFuIG9iamVjdCB3aXRoIHNlbGVjdEhhbmRsZXIsIHNlbGVjdENsYXNzZXMsIHNlbGVjdFRleHQsIGlzTG9hZGluZyAobGVnYWN5KVxuICAgKiAtIEEgUmVhY3ROb2RlIGZvciBjdXN0b20gc2VsZWN0aW9uIGNvbXBvbmVudFxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBMZWdhY3kgdXNhZ2VcbiAgICogc2VsZWN0aW9uPXt7IHNlbGVjdEhhbmRsZXI6ICgpID0+IHt9LCBzZWxlY3RUZXh0OiAnQ29uZmlybScgfX1cbiAgICogQGV4YW1wbGVcbiAgICogLy8gQ3VzdG9tIGNvbXBvbmVudFxuICAgKiBzZWxlY3Rpb249ezxCdXR0b24gb25DbGljaz17aGFuZGxlQ29uZmlybX0+Q29uZmlybTwvQnV0dG9uPn1cbiAgICovXG4gIHNlbGVjdGlvbj86IFNlbGVjdGlvblByb3BzIHwgUmVhY3ROb2RlO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIG92ZXJsYXlDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGhlYWRlckNsYXNzTmFtZT86IHN0cmluZztcbiAgbWFpbkNsYXNzTmFtZT86IHN0cmluZztcbiAgZm9vdGVyQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBzaG93Q2xvc2VCdXR0b24/OiBib29sZWFuO1xuICBzaG93Q2FuY2VsQnV0dG9uPzogYm9vbGVhbjtcbiAgb25DbG9zZT86ICgpID0+IHZvaWQ7XG59O1xuXG5jb25zdCBPR0RpYWxvZ1RlbXBsYXRlID0gZm9yd2FyZFJlZigocHJvcHM6IERpYWxvZ1RlbXBsYXRlUHJvcHMsIHJlZjogUmVmPEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICBjb25zdCBsb2NhbGl6ZSA9IHVzZUxvY2FsaXplKCk7XG4gIGNvbnN0IHtcbiAgICB0aXRsZSxcbiAgICBtYWluLFxuICAgIGJ1dHRvbnMsXG4gICAgc2VsZWN0aW9uLFxuICAgIGNsYXNzTmFtZSxcbiAgICBsZWZ0QnV0dG9ucyxcbiAgICBkZXNjcmlwdGlvbiA9ICcnLFxuICAgIG1haW5DbGFzc05hbWUsXG4gICAgaGVhZGVyQ2xhc3NOYW1lLFxuICAgIGZvb3RlckNsYXNzTmFtZSxcbiAgICBzaG93Q2xvc2VCdXR0b24gPSBmYWxzZSxcbiAgICBvdmVybGF5Q2xhc3NOYW1lLFxuICAgIHNob3dDYW5jZWxCdXR0b24gPSB0cnVlLFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTGVnYWN5U2VsZWN0aW9uID0gaXNTZWxlY3Rpb25Qcm9wcyhzZWxlY3Rpb24pO1xuICBjb25zdCBsZWdhY3lTZWxlY3Rpb24gPSBpc0xlZ2FjeVNlbGVjdGlvbiA/IHNlbGVjdGlvbiA6IG51bGw7XG4gIGNvbnN0IHsgc2VsZWN0SGFuZGxlciwgc2VsZWN0Q2xhc3Nlcywgc2VsZWN0VGV4dCwgaXNMb2FkaW5nIH0gPSBsZWdhY3lTZWxlY3Rpb24gPz8ge307XG5cbiAgY29uc3QgZGVmYXVsdFNlbGVjdCA9XG4gICAgJ2JnLWdyYXktODAwIHRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMgaG92ZXI6YmctZ3JheS03MDAgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTAgZGFyazpiZy1ncmF5LTIwMCBkYXJrOnRleHQtZ3JheS04MDAgZGFyazpob3ZlcjpiZy1ncmF5LTIwMCc7XG5cbiAgbGV0IHNlbGVjdGlvbkNvbnRlbnQgPSBudWxsO1xuICBpZiAoaXNMZWdhY3lTZWxlY3Rpb24pIHtcbiAgICBzZWxlY3Rpb25Db250ZW50ID0gKFxuICAgICAgPE9HRGlhbG9nQ2xvc2VcbiAgICAgICAgb25DbGljaz17c2VsZWN0SGFuZGxlcn1cbiAgICAgICAgZGlzYWJsZWQ9e2lzTG9hZGluZ31cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtcbiAgICAgICAgICBzZWxlY3RDbGFzc2VzID8/IGRlZmF1bHRTZWxlY3RcbiAgICAgICAgfSBmbGV4IGgtMTAgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbGcgYm9yZGVyLW5vbmUgcHgtNCBweS0yIHRleHQtc20gZGlzYWJsZWQ6b3BhY2l0eS04MCBtYXgtc206b3JkZXItZmlyc3QgbWF4LXNtOnctZnVsbCBzbTpvcmRlci1ub25lYH1cbiAgICAgID5cbiAgICAgICAge2lzTG9hZGluZyA9PT0gdHJ1ZSA/IChcbiAgICAgICAgICA8U3Bpbm5lciBjbGFzc05hbWU9XCJzaXplLTQgdGV4dC10ZXh0LXByaW1hcnlcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIChzZWxlY3RUZXh0IGFzIFJlYWN0LkpTWC5FbGVtZW50KVxuICAgICAgICApfVxuICAgICAgPC9PR0RpYWxvZ0Nsb3NlPlxuICAgICk7XG4gIH0gZWxzZSBpZiAoc2VsZWN0aW9uKSB7XG4gICAgc2VsZWN0aW9uQ29udGVudCA9IHNlbGVjdGlvbjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPE9HRGlhbG9nQ29udGVudFxuICAgICAgb3ZlcmxheUNsYXNzTmFtZT17b3ZlcmxheUNsYXNzTmFtZX1cbiAgICAgIHNob3dDbG9zZUJ1dHRvbj17c2hvd0Nsb3NlQnV0dG9ufVxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKCd3LTExLzEyIGJvcmRlci1ub25lIGJnLWJhY2tncm91bmQgdGV4dC1mb3JlZ3JvdW5kJywgY2xhc3NOYW1lID8/ICcnKX1cbiAgICAgIG9uQ2xpY2s9eyhlKSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpfVxuICAgID5cbiAgICAgIDxPR0RpYWxvZ0hlYWRlciBjbGFzc05hbWU9e2NuKGhlYWRlckNsYXNzTmFtZSA/PyAnJyl9PlxuICAgICAgICA8T0dEaWFsb2dUaXRsZT57dGl0bGV9PC9PR0RpYWxvZ1RpdGxlPlxuICAgICAgICB7ZGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgIDxPR0RpYWxvZ0Rlc2NyaXB0aW9uIGNsYXNzTmFtZT1cIml0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAge2Rlc2NyaXB0aW9ufVxuICAgICAgICAgIDwvT0dEaWFsb2dEZXNjcmlwdGlvbj5cbiAgICAgICAgKX1cbiAgICAgIDwvT0dEaWFsb2dIZWFkZXI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y24oJ3B4LTAgcHktMicsIG1haW5DbGFzc05hbWUpfT57bWFpbiAhPSBudWxsID8gbWFpbiA6IG51bGx9PC9kaXY+XG4gICAgICA8T0dEaWFsb2dGb290ZXIgY2xhc3NOYW1lPXtmb290ZXJDbGFzc05hbWV9PlxuICAgICAgICB7bGVmdEJ1dHRvbnMgIT0gbnVsbCA/IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1yLWF1dG8gZmxleCBmbGV4LXJvdyBnYXAtMlwiPntsZWZ0QnV0dG9uc308L2Rpdj5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIHtzaG93Q2FuY2VsQnV0dG9uICYmIChcbiAgICAgICAgICA8T0dEaWFsb2dDbG9zZSBhc0NoaWxkPlxuICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIGFyaWEtbGFiZWw9e2xvY2FsaXplKCdjb21fdWlfY2FuY2VsJyl9PlxuICAgICAgICAgICAgICB7bG9jYWxpemUoJ2NvbV91aV9jYW5jZWwnKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvT0dEaWFsb2dDbG9zZT5cbiAgICAgICAgKX1cbiAgICAgICAge2J1dHRvbnMgIT0gbnVsbCA/IGJ1dHRvbnMgOiBudWxsfVxuICAgICAgICB7c2VsZWN0aW9uQ29udGVudH1cbiAgICAgIDwvT0dEaWFsb2dGb290ZXI+XG4gICAgPC9PR0RpYWxvZ0NvbnRlbnQ+XG4gICk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgT0dEaWFsb2dUZW1wbGF0ZTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IElucHV0IH0gZnJvbSAnLi9JbnB1dCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5leHBvcnQgdHlwZSBJbnB1dFdpdGhEcm9wZG93blByb3BzID0gUmVhY3QuSW5wdXRIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50PiAmIHtcbiAgb3B0aW9uczogc3RyaW5nW107XG4gIG9uU2VsZWN0PzogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XG59O1xuXG5jb25zdCBJbnB1dFdpdGhEcm9wZG93biA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTElucHV0RWxlbWVudCwgSW5wdXRXaXRoRHJvcGRvd25Qcm9wcz4oXG4gICh7IGNsYXNzTmFtZSwgb3B0aW9ucywgb25TZWxlY3QsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2lucHV0VmFsdWUsIHNldElucHV0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUoKHByb3BzLnZhbHVlIGFzIHN0cmluZykgfHwgJycpO1xuICAgIGNvbnN0IFtoaWdobGlnaHRlZEluZGV4LCBzZXRIaWdobGlnaHRlZEluZGV4XSA9IFJlYWN0LnVzZVN0YXRlKC0xKTtcbiAgICBjb25zdCBpbnB1dFJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcblxuICAgIGNvbnN0IGhhbmRsZVNlbGVjdCA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICBzZXRJbnB1dFZhbHVlKHZhbHVlKTtcbiAgICAgIHNldElzT3BlbihmYWxzZSk7XG4gICAgICBzZXRIaWdobGlnaHRlZEluZGV4KC0xKTtcbiAgICAgIGlmIChvblNlbGVjdCkge1xuICAgICAgICBvblNlbGVjdCh2YWx1ZSk7XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMub25DaGFuZ2UpIHtcbiAgICAgICAgcHJvcHMub25DaGFuZ2UoeyB0YXJnZXQ6IHsgdmFsdWUgfSB9IGFzIFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlSW5wdXRDaGFuZ2UgPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgIHNldElucHV0VmFsdWUoZS50YXJnZXQudmFsdWUpO1xuICAgICAgaWYgKHByb3BzLm9uQ2hhbmdlKSB7XG4gICAgICAgIHByb3BzLm9uQ2hhbmdlKGUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGU6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgIHN3aXRjaCAoZS5rZXkpIHtcbiAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgaWYgKCFpc09wZW4pIHtcbiAgICAgICAgICAgIHNldElzT3Blbih0cnVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2V0SGlnaGxpZ2h0ZWRJbmRleCgocHJldkluZGV4KSA9PlxuICAgICAgICAgICAgICBwcmV2SW5kZXggPCBvcHRpb25zLmxlbmd0aCAtIDEgPyBwcmV2SW5kZXggKyAxIDogcHJldkluZGV4LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBzZXRIaWdobGlnaHRlZEluZGV4KChwcmV2SW5kZXgpID0+IChwcmV2SW5kZXggPiAwID8gcHJldkluZGV4IC0gMSA6IDApKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBpZiAoaXNPcGVuICYmIGhpZ2hsaWdodGVkSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBoYW5kbGVTZWxlY3Qob3B0aW9uc1toaWdobGlnaHRlZEluZGV4XSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNldElzT3BlbihmYWxzZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICAgICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgICAgICAgICBzZXRIaWdobGlnaHRlZEluZGV4KC0xKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoaW5wdXRSZWYuY3VycmVudCAmJiAhaW5wdXRSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgICAgICBzZXRJc09wZW4oZmFsc2UpO1xuICAgICAgICAgIHNldEhpZ2hsaWdodGVkSW5kZXgoLTEpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKTtcbiAgICAgIH07XG4gICAgfSwgW10pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIiByZWY9e2lucHV0UmVmfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiPlxuICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlSW5wdXRDaGFuZ2V9XG4gICAgICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXG4gICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwiZHJvcGRvd24tbGlzdFwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NuKCdiZy1zdXJmYWNlLXNlY29uZGFyeScsIGNsYXNzTmFtZSA/PyAnJyl9XG4gICAgICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC10ZXJ0aWFyeSBhYnNvbHV0ZSBpbnNldC15LTAgcmlnaHQtMCBmbGV4IGl0ZW1zLWNlbnRlciByb3VuZGVkLW1kIHB4LTIgaG92ZXI6dGV4dC1zZWNvbmRhcnkgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTEgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmctcHJpbWFyeVwiXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc09wZW4oIWlzT3Blbil9XG4gICAgICAgICAgICBhcmlhLWxhYmVsPXtpc09wZW4gPyAnQ2xvc2UgZHJvcGRvd24nIDogJ09wZW4gZHJvcGRvd24nfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC01IHctNVwiXG4gICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezJ9XG4gICAgICAgICAgICAgICAgZD1cIk0xOSA5bC03IDctNy03XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge2lzT3BlbiAmJiAoXG4gICAgICAgICAgPHVsXG4gICAgICAgICAgICBpZD1cImRyb3Bkb3duLWxpc3RcIlxuICAgICAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgei0xMCBtdC0xIG1heC1oLTYwIHctZnVsbCBvdmVyZmxvdy1hdXRvIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ib3JkZXItbWVkaXVtIGJnLXN1cmZhY2Utc2Vjb25kYXJ5IHNoYWRvdy1sZyBmb2N1czpyaW5nLTEgZm9jdXM6cmluZy1pbnNldCBmb2N1czpyaW5nLXJpbmctcHJpbWFyeVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge29wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17aW5kZXggPT09IGhpZ2hsaWdodGVkSW5kZXh9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICdjdXJzb3ItcG9pbnRlciByb3VuZGVkLW1kIHB4LTMgcHktMicsXG4gICAgICAgICAgICAgICAgICAnZm9jdXM6Ymctc3VyZmFjZS10ZXJ0aWFyeSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0xIGZvY3VzOnJpbmctaW5zZXQgZm9jdXM6cmluZy1yaW5nLXByaW1hcnknLFxuICAgICAgICAgICAgICAgICAgaW5kZXggPT09IGhpZ2hsaWdodGVkSW5kZXhcbiAgICAgICAgICAgICAgICAgICAgPyAnYmctc3VyZmFjZS1hY3RpdmUgdGV4dC1wcmltYXJ5J1xuICAgICAgICAgICAgICAgICAgICA6ICd0ZXh0LXNlY29uZGFyeSBob3ZlcjpiZy1zdXJmYWNlLXRlcnRpYXJ5JyxcbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlbGVjdChvcHRpb24pfVxuICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJyB8fCBlLmtleSA9PT0gJyAnKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0KG9wdGlvbik7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtvcHRpb259XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L3VsPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfSxcbik7XG5cbklucHV0V2l0aERyb3Bkb3duLmRpc3BsYXlOYW1lID0gJ0lucHV0V2l0aERyb3Bkb3duJztcblxuZXhwb3J0IGRlZmF1bHQgSW5wdXRXaXRoRHJvcGRvd247XG4iLCJpbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0LCBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7IFRTaG93VG9hc3QgfSBmcm9tICd+L2NvbW1vbic7XG5pbXBvcnQgdXNlVG9hc3QgZnJvbSAnfi9ob29rcy91c2VUb2FzdCc7XG5cbnR5cGUgVG9hc3RDb250ZXh0VHlwZSA9IHtcbiAgc2hvd1RvYXN0OiAoeyBtZXNzYWdlLCBzZXZlcml0eSwgc2hvd0ljb24sIGR1cmF0aW9uIH06IFRTaG93VG9hc3QpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgY29uc3QgVG9hc3RDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxUb2FzdENvbnRleHRUeXBlPih7XG4gIHNob3dUb2FzdDogKCkgPT4gKHt9KSxcbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlVG9hc3RDb250ZXh0KCkge1xuICByZXR1cm4gdXNlQ29udGV4dChUb2FzdENvbnRleHQpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUb2FzdFByb3ZpZGVyKHsgY2hpbGRyZW4gfTogeyBjaGlsZHJlbjogUmVhY3ROb2RlIH0pIHtcbiAgY29uc3QgeyBzaG93VG9hc3QgfSA9IHVzZVRvYXN0KCk7XG5cbiAgcmV0dXJuIDxUb2FzdENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3sgc2hvd1RvYXN0IH19PntjaGlsZHJlbn08L1RvYXN0Q29udGV4dC5Qcm92aWRlcj47XG59XG4iXSwibmFtZXMiOlsidHdNZXJnZSIsImNsc3giLCJnZXRJbml0aWFsVGhlbWUiLCJBY2NvcmRpb25QcmltaXRpdmUiLCJSZWFjdCIsIl9qc3giLCJfanN4cyIsIkNoZXZyb25Eb3duSWNvbiIsInVzZVJlZiIsInVzZUVmZmVjdCIsImZvcndhcmRSZWYiLCJBcmlha2l0IiwiQWxlcnREaWFsb2dQcmltaXRpdmUiLCJTbG90IiwiQ2hldnJvblJpZ2h0IiwiTW9yZUhvcml6b250YWwiLCJjdmEiLCJDaGVja2JveFByaW1pdGl2ZSIsIkNoZWNrIiwiRVNpZGUiLCJOb3RpZmljYXRpb25TZXZlcml0eSIsImF0b20iLCJ1c2VBdG9tIiwidXNlTWVtbyIsImNyZWF0ZUF2YXRhciIsImluaXRpYWxzIiwidXNlU3RhdGUiLCJtYXRjaFNvcnRlciIsInVzZVRyYW5zbGF0aW9uIiwidXNlQ2FsbGJhY2siLCJEaWFsb2ciLCJEaWFsb2dQcmltaXRpdmUiLCJEaWFsb2dUcmlnZ2VyIiwiRGlhbG9nUG9ydGFsIiwiRGlhbG9nT3ZlcmxheSIsIkRpYWxvZ0NvbnRlbnQiLCJYIiwiRGlhbG9nSGVhZGVyIiwiRGlhbG9nRm9vdGVyIiwiRGlhbG9nVGl0bGUiLCJEaWFsb2dEZXNjcmlwdGlvbiIsIkRpYWxvZ0Nsb3NlIiwiRHJvcGRvd25NZW51UHJpbWl0aXZlIiwiQ2hlY2tJY29uIiwiQ2lyY2xlSWNvbiIsIkNoZXZyb25SaWdodEljb24iLCJIb3ZlckNhcmRQcmltaXRpdmUiLCJDb3B5IiwiRXllT2ZmIiwiRXllIiwiTGFiZWxQcmltaXRpdmUiLCJTbGlkZXJQcmltaXRpdmUiLCJTZXBhcmF0b3JQcmltaXRpdmUiLCJTd2l0Y2hQcmltaXRpdmVzIiwiVGFic1ByaW1pdGl2ZSIsInVzZUF0b21WYWx1ZSIsInVzZUxheW91dEVmZmVjdCIsIlJhZGl4VG9hc3QiLCJtZW1vIiwiQW5pbWF0ZVByZXNlbmNlIiwibW90aW9uIiwiQ2hldnJvbkxlZnQiLCJQcm9ncmVzc1ByaW1pdGl2ZSIsIk9UUElucHV0IiwiT1RQSW5wdXRDb250ZXh0IiwiTWludXMiLCJTZWFyY2giLCJHcm91cCIsIlBhbmVsIiwiU2VwYXJhdG9yIiwiR3JpcFZlcnRpY2FsIiwiU2VsZWN0UHJpbWl0aXZlIiwiQ2FyZXRTb3J0SWNvbiIsIkNoZXZyb25VcEljb24iLCJQbHVzIiwiX0ZyYWdtZW50IiwiUmFkaXhTZWxlY3QiLCJDb21ib2JveFByb3ZpZGVyIiwic3RhcnRUcmFuc2l0aW9uIiwiU2VhcmNoSWNvbiIsIkNvbWJvYm94IiwiQ29tYm9ib3hDYW5jZWwiLCJDb21ib2JveExpc3QiLCJDb21ib2JveEl0ZW0iLCJTZWxlY3QiLCJmbGV4UmVuZGVyIiwidXNlUmVhY3RUYWJsZSIsImdldENvcmVSb3dNb2RlbCIsImdldFNvcnRlZFJvd01vZGVsIiwiZ2V0RmlsdGVyZWRSb3dNb2RlbCIsInVzZVZpcnR1YWxpemVyIiwidXNlU3ByaW5ncyIsImFuaW1hdGVkIiwiU2VsZWN0UHJvdmlkZXIiLCJTZWxlY3RMYWJlbCIsIlNlbGVjdEFycm93IiwiU2VsZWN0UG9wb3ZlciIsIlNlbGVjdEl0ZW1DaGVjayIsIlNlbGVjdEl0ZW0iLCJjcmVhdGVDb250ZXh0IiwidXNlQ29udGV4dCIsImF0b21XaXRoU3RvcmFnZSIsIk1vbml0b3IiLCJNb29uIiwiU3VuIiwiQ2lyY2xlSGVscEljb24iLCJ1c2VDaGVja2JveFN0b3JlIiwidXNlU3RvcmVTdGF0ZSIsIkNoZWNrYm94IiwiTGlzdGJveCIsIkxpc3Rib3hCdXR0b24iLCJMYWJlbCIsIlRyYW5zaXRpb24iLCJMaXN0Ym94T3B0aW9ucyIsIkxpc3Rib3hPcHRpb24iLCJDaGV2cm9uRG93biIsIlNlbGVjdFJlbmRlcmVyIiwiaXNWYWxpZEVsZW1lbnQiLCJPR0RpYWxvZ0Nsb3NlIiwiT0dEaWFsb2dDb250ZW50IiwiT0dEaWFsb2dIZWFkZXIiLCJPR0RpYWxvZ1RpdGxlIiwiT0dEaWFsb2dEZXNjcmlwdGlvbiIsIk9HRGlhbG9nRm9vdGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7TUFJYSxFQUFFLEdBQUcsQ0FBQyxHQUFHLE1BQW9CLEtBQVk7QUFDcEQsSUFBQSxPQUFPQSxxQkFBTyxDQUFDQyxTQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUI7O0FDTk8sTUFBTSxhQUFhLEdBQUcsQ0FBQyxHQUFXLEtBQUk7QUFDM0MsSUFBQSxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsZUFBZTtBQUNyQyxJQUFBLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFL0IsUUFBUSxJQUFJO0FBQ1YsUUFBQSxLQUFLLElBQUk7WUFDUCxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUMxRDtBQUNG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