import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/header/nav/UserMenu.vue");import { UserAvatar as __nuxt_component_0 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js"; import { default as __nuxt_component_1 } from "/_nuxt/node_modules/nuxt/dist/app/components/nuxt-link.js?v=e4f18c29"; import { default as __nuxt_component_2 } from "/_nuxt/components/invite/dialog/Server.vue"; /* Injection by vite-plugin-vue-inspector Start */ import { createElementVNode as __createElementVNode,createVNode as __createVNode,createBlock as __createBlock,createElementBlock as __createElementBlock } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29" function _interopVNode(vnode) { if (vnode && vnode.props && 'data-v-inspector' in vnode.props) { const data = vnode.props['data-v-inspector'] delete vnode.props['data-v-inspector'] Object.defineProperty(vnode.props, '__v_inspector', { value: data, enumerable: false }) } return vnode } function _createElementVNode(...args) { return _interopVNode(__createElementVNode(...args)) } function _createVNode(...args) { return _interopVNode(__createVNode(...args)) } function _createBlock(...args) { return _interopVNode(__createBlock(...args)) } function _createElementBlock(...args) { return _interopVNode(__createElementBlock(...args)) } /* Injection by vite-plugin-vue-inspector End */ import { defineComponent as _defineComponent } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"; import { Menu, MenuButton, MenuItem, MenuItems } from "/_nuxt/node_modules/@headlessui/vue/dist/headlessui.esm.js?v=e4f18c29"; import { ChevronDownIcon } from "/_nuxt/node_modules/.cache/vite/client/deps/@heroicons_vue_24_outline.js?v=e4f18c29"; import { Roles } from "/_nuxt/@fs/D:/speckle-server/packages/shared/dist/esm/index.js"; import { useActiveUser } from "/_nuxt/lib/auth/composables/activeUser.ts"; import { useAuthManager } from "/_nuxt/lib/auth/composables/auth.ts"; import { useTheme } from "/_nuxt/lib/core/composables/theme.ts"; import { settingsUserRoutes, settingsServerRoutes } from "/_nuxt/lib/common/helpers/route.ts"; import { useServerInfo } from "/_nuxt/lib/core/composables/server.ts"; import { useGenerateErrorReference } from "/_nuxt/lib/core/composables/error.ts"; import { useId, ref, computed } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"; const _sfc_main = /* @__PURE__ */ _defineComponent({ __name: "HeaderNavUserMenu", props: { loginUrl: { type: null, required: false } }, setup(__props, { expose: __expose }) { __expose(); const { logout } = useAuthManager(); const { activeUser, isGuest } = useActiveUser(); const { isDarkTheme, toggleTheme } = useTheme(); const { serverInfo } = useServerInfo(); const menuButtonId = useId(); const { copyReference } = useGenerateErrorReference(); const showInviteDialog = ref(false); const version = computed(() => serverInfo.value?.version); const isAdmin = computed(() => activeUser.value?.role === Roles.Server.Admin); const toggleInviteDialog = () => { showInviteDialog.value = true; }; const copySupportReference = async () => { await copyReference(); }; const __returned__ = { logout, activeUser, isGuest, isDarkTheme, toggleTheme, serverInfo, menuButtonId, copyReference, showInviteDialog, version, isAdmin, toggleInviteDialog, copySupportReference, get Menu() { return Menu; }, get MenuButton() { return MenuButton; }, get MenuItem() { return MenuItem; }, get MenuItems() { return MenuItems; }, get ChevronDownIcon() { return ChevronDownIcon; }, get settingsUserRoutes() { return settingsUserRoutes; }, get settingsServerRoutes() { return settingsServerRoutes; } }; Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true }); return __returned__; } }); import { resolveComponent as _resolveComponent, normalizeClass as _normalizeClass, withCtx as _withCtx, createTextVNode as _createTextVNode, openBlock as _openBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, Transition as _Transition, } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"; const _hoisted_1 = { "data-v-inspector": "components/header/nav/UserMenu.vue:2:3" }; const _hoisted_2 = { class: "flex items-center gap-1 p-0.5 hover:bg-highlight-2 rounded", "data-v-inspector": "components/header/nav/UserMenu.vue:6:9" }; const _hoisted_3 = { class: "pt-1", "data-v-inspector": "components/header/nav/UserMenu.vue:22:11" }; const _hoisted_4 = { class: "border-t border-outline-3 py-1 mt-1", "data-v-inspector": "components/header/nav/UserMenu.vue:68:11" }; const _hoisted_5 = { class: "border-t border-outline-3 py-1 mt-1 text-xs text-foreground-2 px-3 gap-1 flex flex-col", "data-v-inspector": "components/header/nav/UserMenu.vue:71:13" }; const _hoisted_6 = { "data-v-inspector": "components/header/nav/UserMenu.vue:75:17" }; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { const _component_UserAvatar = __nuxt_component_0; const _component_NuxtLink = __nuxt_component_1; const _component_InviteDialogServer = __nuxt_component_2; return _openBlock(), _createElementBlock("div", _hoisted_1, [ _createVNode($setup["Menu"], { as: "div", class: "flex items-center", "data-v-inspector": "components/header/nav/UserMenu.vue:3:5" }, { default: _withCtx(() => [ _createVNode($setup["MenuButton"], { id: $setup.menuButtonId, "data-v-inspector": "components/header/nav/UserMenu.vue:4:7" }, { default: _withCtx(({ open: userOpen }) => [ _cache[1] || (_cache[1] = _createElementVNode( "span", { class: "sr-only", "data-v-inspector": "components/header/nav/UserMenu.vue:5:9" }, "Open user menu", -1 /* CACHED */ )), _createElementVNode("div", _hoisted_2, [ _createVNode(_component_UserAvatar, { "hide-tooltip": "", user: $setup.activeUser, "data-v-inspector": "components/header/nav/UserMenu.vue:7:11" }, null, 8, ["user"]), _createVNode($setup["ChevronDownIcon"], { class: _normalizeClass([userOpen ? "rotate-180" : "", "h-3 w-3"]), "data-v-inspector": "components/header/nav/UserMenu.vue:8:11" }, null, 8, ["class"]) ]) ]), _: 1 /* STABLE */ }, 8, ["id"]), _createVNode(_Transition, { "enter-active-class": "transition ease-out duration-200", "enter-from-class": "transform opacity-0 scale-95", "enter-to-class": "transform opacity-100 scale-100", "leave-active-class": "transition ease-in duration-75", "leave-from-class": "transform opacity-100 scale-100", "leave-to-class": "transform opacity-0 scale-95", "data-v-inspector": "components/header/nav/UserMenu.vue:11:7" }, { default: _withCtx(() => [ _createVNode($setup["MenuItems"], { class: "absolute right-4 top-14 w-56 origin-top-right bg-foundation outline outline-1 outline-primary-muted rounded-md shadow-lg overflow-hidden", "data-v-inspector": "components/header/nav/UserMenu.vue:19:9" }, { default: _withCtx(() => [ _createElementVNode("div", _hoisted_3, [ $setup.activeUser ? (_openBlock(), _createBlock($setup["MenuItem"], { key: 0, "data-v-inspector": "components/header/nav/UserMenu.vue:23:13" }, { default: _withCtx(({ active }) => [ _createVNode(_component_NuxtLink, { to: $setup.settingsUserRoutes.profile, class: _normalizeClass([ active ? "bg-highlight-1" : "", "text-body-xs flex px-2 py-1 text-foreground cursor-pointer transition mx-1 rounded" ]), "data-v-inspector": "components/header/nav/UserMenu.vue:24:15" }, { default: _withCtx(() => [..._cache[2] || (_cache[2] = [ _createTextVNode( " Settings ", -1 /* CACHED */ ) ])]), _: 2 /* DYNAMIC */ }, 1032, ["to", "class"]) ]), _: 1 /* STABLE */ })) : _createCommentVNode("v-if", true), $setup.isAdmin ? (_openBlock(), _createBlock($setup["MenuItem"], { key: 1, "data-v-inspector": "components/header/nav/UserMenu.vue:34:13" }, { default: _withCtx(({ active }) => [ _createVNode(_component_NuxtLink, { to: $setup.settingsServerRoutes.general, class: _normalizeClass([ active ? "bg-highlight-1" : "", "text-body-xs flex px-2 py-1 text-foreground cursor-pointer transition mx-1 rounded" ]), "data-v-inspector": "components/header/nav/UserMenu.vue:35:15" }, { default: _withCtx(() => [..._cache[3] || (_cache[3] = [ _createTextVNode( " Server settings ", -1 /* CACHED */ ) ])]), _: 2 /* DYNAMIC */ }, 1032, ["to", "class"]) ]), _: 1 /* STABLE */ })) : _createCommentVNode("v-if", true), _createVNode($setup["MenuItem"], { "data-v-inspector": "components/header/nav/UserMenu.vue:45:13" }, { default: _withCtx(({ active }) => [ _createVNode(_component_NuxtLink, { class: _normalizeClass([ active ? "bg-highlight-1" : "", "text-body-xs flex px-2 py-1 text-foreground cursor-pointer transition mx-1 rounded" ]), onClick: $setup.toggleTheme, "data-v-inspector": "components/header/nav/UserMenu.vue:46:15" }, { default: _withCtx(() => [ _createTextVNode( _toDisplayString($setup.isDarkTheme ? "Light mode" : "Dark mode"), 1 /* TEXT */ ) ]), _: 2 /* DYNAMIC */ }, 1032, ["class", "onClick"]) ]), _: 1 /* STABLE */ }), $setup.activeUser && !$setup.isGuest ? (_openBlock(), _createBlock($setup["MenuItem"], { key: 2, "data-v-inspector": "components/header/nav/UserMenu.vue:56:13" }, { default: _withCtx(({ active }) => [ _createVNode(_component_NuxtLink, { class: _normalizeClass([ active ? "bg-highlight-1" : "", "text-body-xs flex px-2 py-1 text-foreground cursor-pointer transition mx-1 rounded" ]), onClick: $setup.toggleInviteDialog, "data-v-inspector": "components/header/nav/UserMenu.vue:57:15" }, { default: _withCtx(() => [..._cache[4] || (_cache[4] = [ _createTextVNode( " Invite to Speckle ", -1 /* CACHED */ ) ])]), _: 2 /* DYNAMIC */ }, 1032, ["class"]) ]), _: 1 /* STABLE */ })) : _createCommentVNode("v-if", true) ]), _createElementVNode("div", _hoisted_4, [ _createCommentVNode(" Log In/Out removed as per global auth bypass "), _createElementVNode("div", _hoisted_5, [ $setup.version ? (_openBlock(), _createBlock($setup["MenuItem"], { key: 0, "data-v-inspector": "components/header/nav/UserMenu.vue:74:15" }, { default: _withCtx(() => [ _createElementVNode( "div", _hoisted_6, "Version " + _toDisplayString($setup.version), 1 /* TEXT */ ) ]), _: 1 /* STABLE */ })) : _createCommentVNode("v-if", true), _createVNode($setup["MenuItem"], { "data-v-inspector": "components/header/nav/UserMenu.vue:77:15" }, { default: _withCtx(() => [ _createVNode(_component_NuxtLink, { class: "cursor-pointer text-foreground-2 hover:text-foreground", onClick: $setup.copySupportReference, "data-v-inspector": "components/header/nav/UserMenu.vue:78:17" }, { default: _withCtx(() => [..._cache[5] || (_cache[5] = [ _createTextVNode( " Copy support reference ", -1 /* CACHED */ ) ])]), _: 1 /* STABLE */ }) ]), _: 1 /* STABLE */ }) ]) ]) ]), _: 1 /* STABLE */ }) ]), _: 1 /* STABLE */ }) ]), _: 1 /* STABLE */ }), _createVNode(_component_InviteDialogServer, { open: $setup.showInviteDialog, "onUpdate:open": _cache[0] || (_cache[0] = ($event) => $setup.showInviteDialog = $event), "data-v-inspector": "components/header/nav/UserMenu.vue:90:5" }, null, 8, ["open"]) ]); } _sfc_main.__hmrId = "67312c39"; typeof __VUE_HMR_RUNTIME__ !== "undefined" && __VUE_HMR_RUNTIME__.createRecord(_sfc_main.__hmrId, _sfc_main); import.meta.hot.on("file-changed", ({ file }) => { __VUE_HMR_RUNTIME__.CHANGED_FILE = file; }); import.meta.hot.accept((mod) => { if (!mod) return; const { default: updated, _rerender_only } = mod; if (_rerender_only) { __VUE_HMR_RUNTIME__.rerender(updated.__hmrId, updated.render); } else { __VUE_HMR_RUNTIME__.reload(updated.__hmrId, updated); } }); import _export_sfc from "/_nuxt/@id/__x00__plugin-vue:export-helper"; export default /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__file", "D:/speckle-server/packages/frontend-2/components/header/nav/UserMenu.vue"]]); //# sourceMappingURL=data:application/json;base64,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VztBQUFBLDBCQUpULE9BQU07QUFBQSwwQkFDTCxTQUFPO0FBQUEsMEJBQXNCLG9CQUFpQjtBQUFBOzRDQUNoRCxNQUVEO0FBQUE7OEJBRkM7QUFBQSw4QkFFRDtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQU9aLGFBQWlIO0FBQUEsTUFBckYsTUFBTTtBQUFBLHVGQUFnQjtBQUFBLE1BQUUsb0JBQWlCO0FBQUEiLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VzIjpbIlVzZXJNZW51LnZ1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XHJcbiAgPGRpdiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9oZWFkZXIvbmF2L1VzZXJNZW51LnZ1ZToyOjNcIj5cclxuICAgIDxNZW51IGFzPVwiZGl2XCIgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL2hlYWRlci9uYXYvVXNlck1lbnUudnVlOjM6NVwiPlxyXG4gICAgICA8TWVudUJ1dHRvbiA6aWQ9XCJtZW51QnV0dG9uSWRcIiB2LXNsb3Q9XCJ7IG9wZW46IHVzZXJPcGVuIH1cIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9oZWFkZXIvbmF2L1VzZXJNZW51LnZ1ZTo0OjdcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9oZWFkZXIvbmF2L1VzZXJNZW51LnZ1ZTo1OjlcIj5PcGVuIHVzZXIgbWVudTwvc3Bhbj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgcC0wLjUgaG92ZXI6YmctaGlnaGxpZ2h0LTIgcm91bmRlZFwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL2hlYWRlci9uYXYvVXNlck1lbnUudnVlOjY6OVwiPlxyXG4gICAgICAgICAgPFVzZXJBdmF0YXIgaGlkZS10b29sdGlwIDp1c2VyPVwiYWN0aXZlVXNlclwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL2hlYWRlci9uYXYvVXNlck1lbnUudnVlOjc6MTFcIiAvPlxyXG4gICAgICAgICAgPENoZXZyb25Eb3duSWNvbiA6Y2xhc3M9XCJ1c2VyT3BlbiA/ICdyb3RhdGUtMTgwJyA6ICcnXCIgY2xhc3M9XCJoLTMgdy0zXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvaGVhZGVyL25hdi9Vc2VyTWVudS52dWU6ODoxMVwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvTWVudUJ1dHRvbj5cclxuICAgICAgPFRyYW5zaXRpb25cclxuICAgICAgICBlbnRlci1hY3RpdmUtY2xhc3M9XCJ0cmFuc2l0aW9uIGVhc2Utb3V0IGR1cmF0aW9uLTIwMFwiXHJcbiAgICAgICAgZW50ZXItZnJvbS1jbGFzcz1cInRyYW5zZm9ybSBvcGFjaXR5LTAgc2NhbGUtOTVcIlxyXG4gICAgICAgIGVudGVyLXRvLWNsYXNzPVwidHJhbnNmb3JtIG9wYWNpdHktMTAwIHNjYWxlLTEwMFwiXHJcbiAgICAgICAgbGVhdmUtYWN0aXZlLWNsYXNzPVwidHJhbnNpdGlvbiBlYXNlLWluIGR1cmF0aW9uLTc1XCJcclxuICAgICAgICBsZWF2ZS1mcm9tLWNsYXNzPVwidHJhbnNmb3JtIG9wYWNpdHktMTAwIHNjYWxlLTEwMFwiXHJcbiAgICAgICAgbGVhdmUtdG8tY2xhc3M9XCJ0cmFuc2Zvcm0gb3BhY2l0eS0wIHNjYWxlLTk1XCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvaGVhZGVyL25hdi9Vc2VyTWVudS52dWU6MTE6N1wiXHJcbiAgICAgID5cclxuICAgICAgICA8TWVudUl0ZW1zXHJcbiAgICAgICAgICBjbGFzcz1cImFic29sdXRlIHJpZ2h0LTQgdG9wLTE0IHctNTYgb3JpZ2luLXRvcC1yaWdodCBiZy1mb3VuZGF0aW9uIG91dGxpbmUgb3V0bGluZS0xIG91dGxpbmUtcHJpbWFyeS1tdXRlZCByb3VuZGVkLW1kIHNoYWRvdy1sZyBvdmVyZmxvdy1oaWRkZW5cIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9oZWFkZXIvbmF2L1VzZXJNZW51LnZ1ZToxOTo5XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL2hlYWRlci9uYXYvVXNlck1lbnUudnVlOjIyOjExXCI+XHJcbiAgICAgICAgICAgIDxNZW51SXRlbSB2LWlmPVwiYWN0aXZlVXNlclwiIHYtc2xvdD1cInsgYWN0aXZlIH1cIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9oZWFkZXIvbmF2L1VzZXJNZW51LnZ1ZToyMzoxM1wiPlxyXG4gICAgICAgICAgICAgIDxOdXh0TGlua1xyXG4gICAgICAgICAgICAgICAgOnRvPVwic2V0dGluZ3NVc2VyUm91dGVzLnByb2ZpbGVcIlxyXG4gICAgICAgICAgICAgICAgOmNsYXNzPVwiW1xyXG4gICAgICAgICAgICAgICAgICBhY3RpdmUgPyAnYmctaGlnaGxpZ2h0LTEnIDogJycsXHJcbiAgICAgICAgICAgICAgICAgICd0ZXh0LWJvZHkteHMgZmxleCBweC0yIHB5LTEgdGV4dC1mb3JlZ3JvdW5kIGN1cnNvci1wb2ludGVyIHRyYW5zaXRpb24gbXgtMSByb3VuZGVkJ1xyXG4gICAgICAgICAgICAgICAgXVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL2hlYWRlci9uYXYvVXNlck1lbnUudnVlOjI0OjE1XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBTZXR0aW5nc1xyXG4gICAgICAgICAgICAgIDwvTnV4dExpbms+XHJcbiAgICAgICAgICAgIDwvTWVudUl0ZW0+XHJcbiAgICAgICAgICAgIDxNZW51SXRlbSB2LWlmPVwiaXNBZG1pblwiIHYtc2xvdD1cInsgYWN0aXZlIH1cIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9oZWFkZXIvbmF2L1VzZXJNZW51LnZ1ZTozNDoxM1wiPlxyXG4gICAgICAgICAgICAgIDxOdXh0TGlua1xyXG4gICAgICAgICAgICAgICAgOnRvPVwic2V0dGluZ3NTZXJ2ZXJSb3V0ZXMuZ2VuZXJhbFwiXHJcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbXHJcbiAgICAgICAgICAgICAgICAgIGFjdGl2ZSA/ICdiZy1oaWdobGlnaHQtMScgOiAnJyxcclxuICAgICAgICAgICAgICAgICAgJ3RleHQtYm9keS14cyBmbGV4IHB4LTIgcHktMSB0ZXh0LWZvcmVncm91bmQgY3Vyc29yLXBvaW50ZXIgdHJhbnNpdGlvbiBteC0xIHJvdW5kZWQnXHJcbiAgICAgICAgICAgICAgICBdXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvaGVhZGVyL25hdi9Vc2VyTWVudS52dWU6MzU6MTVcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIFNlcnZlciBzZXR0aW5nc1xyXG4gICAgICAgICAgICAgIDwvTnV4dExpbms+XHJcbiAgICAgICAgICAgIDwvTWVudUl0ZW0+XHJcbiAgICAgICAgICAgIDxNZW51SXRlbSB2LXNsb3Q9XCJ7IGFjdGl2ZSB9XCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvaGVhZGVyL25hdi9Vc2VyTWVudS52dWU6NDU6MTNcIj5cclxuICAgICAgICAgICAgICA8TnV4dExpbmtcclxuICAgICAgICAgICAgICAgIDpjbGFzcz1cIltcclxuICAgICAgICAgICAgICAgICAgYWN0aXZlID8gJ2JnLWhpZ2hsaWdodC0xJyA6ICcnLFxyXG4gICAgICAgICAgICAgICAgICAndGV4dC1ib2R5LXhzIGZsZXggcHgtMiBweS0xIHRleHQtZm9yZWdyb3VuZCBjdXJzb3ItcG9pbnRlciB0cmFuc2l0aW9uIG14LTEgcm91bmRlZCdcclxuICAgICAgICAgICAgICAgIF1cIlxyXG4gICAgICAgICAgICAgICAgQGNsaWNrPVwidG9nZ2xlVGhlbWVcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9oZWFkZXIvbmF2L1VzZXJNZW51LnZ1ZTo0NjoxNVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3sgaXNEYXJrVGhlbWUgPyAnTGlnaHQgbW9kZScgOiAnRGFyayBtb2RlJyB9fVxyXG4gICAgICAgICAgICAgIDwvTnV4dExpbms+XHJcbiAgICAgICAgICAgIDwvTWVudUl0ZW0+XHJcbiAgICAgICAgICAgIDxNZW51SXRlbSB2LWlmPVwiYWN0aXZlVXNlciAmJiAhaXNHdWVzdFwiIHYtc2xvdD1cInsgYWN0aXZlIH1cIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9oZWFkZXIvbmF2L1VzZXJNZW51LnZ1ZTo1NjoxM1wiPlxyXG4gICAgICAgICAgICAgIDxOdXh0TGlua1xyXG4gICAgICAgICAgICAgICAgOmNsYXNzPVwiW1xyXG4gICAgICAgICAgICAgICAgICBhY3RpdmUgPyAnYmctaGlnaGxpZ2h0LTEnIDogJycsXHJcbiAgICAgICAgICAgICAgICAgICd0ZXh0LWJvZHkteHMgZmxleCBweC0yIHB5LTEgdGV4dC1mb3JlZ3JvdW5kIGN1cnNvci1wb2ludGVyIHRyYW5zaXRpb24gbXgtMSByb3VuZGVkJ1xyXG4gICAgICAgICAgICAgICAgXVwiXHJcbiAgICAgICAgICAgICAgICBAY2xpY2s9XCJ0b2dnbGVJbnZpdGVEaWFsb2dcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9oZWFkZXIvbmF2L1VzZXJNZW51LnZ1ZTo1NzoxNVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgSW52aXRlIHRvIFNwZWNrbGVcclxuICAgICAgICAgICAgICA8L051eHRMaW5rPlxyXG4gICAgICAgICAgICA8L01lbnVJdGVtPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLXQgYm9yZGVyLW91dGxpbmUtMyBweS0xIG10LTFcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9oZWFkZXIvbmF2L1VzZXJNZW51LnZ1ZTo2ODoxMVwiPlxyXG4gICAgICAgICAgICA8IS0tIExvZyBJbi9PdXQgcmVtb3ZlZCBhcyBwZXIgZ2xvYmFsIGF1dGggYnlwYXNzIC0tPlxyXG5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYm9yZGVyLXQgYm9yZGVyLW91dGxpbmUtMyBweS0xIG10LTEgdGV4dC14cyB0ZXh0LWZvcmVncm91bmQtMiBweC0zIGdhcC0xIGZsZXggZmxleC1jb2xcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9oZWFkZXIvbmF2L1VzZXJNZW51LnZ1ZTo3MToxM1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8TWVudUl0ZW0gdi1pZj1cInZlcnNpb25cIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9oZWFkZXIvbmF2L1VzZXJNZW51LnZ1ZTo3NDoxNVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9oZWFkZXIvbmF2L1VzZXJNZW51LnZ1ZTo3NToxN1wiPlZlcnNpb24ge3sgdmVyc2lvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvTWVudUl0ZW0+XHJcbiAgICAgICAgICAgICAgPE1lbnVJdGVtIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL2hlYWRlci9uYXYvVXNlck1lbnUudnVlOjc3OjE1XCI+XHJcbiAgICAgICAgICAgICAgICA8TnV4dExpbmtcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LWZvcmVncm91bmQtMiBob3Zlcjp0ZXh0LWZvcmVncm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICBAY2xpY2s9XCJjb3B5U3VwcG9ydFJlZmVyZW5jZVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL2hlYWRlci9uYXYvVXNlck1lbnUudnVlOjc4OjE3XCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgQ29weSBzdXBwb3J0IHJlZmVyZW5jZVxyXG4gICAgICAgICAgICAgICAgPC9OdXh0TGluaz5cclxuICAgICAgICAgICAgICA8L01lbnVJdGVtPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvTWVudUl0ZW1zPlxyXG4gICAgICA8L1RyYW5zaXRpb24+XHJcbiAgICA8L01lbnU+XHJcbiAgICA8SW52aXRlRGlhbG9nU2VydmVyIHYtbW9kZWw6b3Blbj1cInNob3dJbnZpdGVEaWFsb2dcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9oZWFkZXIvbmF2L1VzZXJNZW51LnZ1ZTo5MDo1XCIgLz5cclxuICA8L2Rpdj5cclxuPC90ZW1wbGF0ZT5cclxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHsgTWVudSwgTWVudUJ1dHRvbiwgTWVudUl0ZW0sIE1lbnVJdGVtcyB9IGZyb20gJ0BoZWFkbGVzc3VpL3Z1ZSdcclxuaW1wb3J0IHsgQ2hldnJvbkRvd25JY29uIH0gZnJvbSAnQGhlcm9pY29ucy92dWUvMjQvb3V0bGluZSdcclxuaW1wb3J0IHsgUm9sZXMgfSBmcm9tICdAc3BlY2tsZS9zaGFyZWQnXHJcbmltcG9ydCB7IHVzZUFjdGl2ZVVzZXIgfSBmcm9tICd+fi9saWIvYXV0aC9jb21wb3NhYmxlcy9hY3RpdmVVc2VyJ1xyXG5pbXBvcnQgeyB1c2VBdXRoTWFuYWdlciB9IGZyb20gJ35+L2xpYi9hdXRoL2NvbXBvc2FibGVzL2F1dGgnXHJcbmltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSAnfn4vbGliL2NvcmUvY29tcG9zYWJsZXMvdGhlbWUnXHJcbmltcG9ydCB7IHNldHRpbmdzVXNlclJvdXRlcywgc2V0dGluZ3NTZXJ2ZXJSb3V0ZXMgfSBmcm9tICd+L2xpYi9jb21tb24vaGVscGVycy9yb3V0ZSdcclxuaW1wb3J0IHR5cGUgeyBSb3V0ZUxvY2F0aW9uUmF3IH0gZnJvbSAndnVlLXJvdXRlcidcclxuaW1wb3J0IHsgdXNlU2VydmVySW5mbyB9IGZyb20gJ34vbGliL2NvcmUvY29tcG9zYWJsZXMvc2VydmVyJ1xyXG5pbXBvcnQgeyB1c2VHZW5lcmF0ZUVycm9yUmVmZXJlbmNlIH0gZnJvbSAnfi9saWIvY29yZS9jb21wb3NhYmxlcy9lcnJvcidcclxuXHJcbmRlZmluZVByb3BzPHtcclxuICBsb2dpblVybD86IFJvdXRlTG9jYXRpb25SYXdcclxufT4oKVxyXG5cclxuY29uc3QgeyBsb2dvdXQgfSA9IHVzZUF1dGhNYW5hZ2VyKClcclxuY29uc3QgeyBhY3RpdmVVc2VyLCBpc0d1ZXN0IH0gPSB1c2VBY3RpdmVVc2VyKClcclxuY29uc3QgeyBpc0RhcmtUaGVtZSwgdG9nZ2xlVGhlbWUgfSA9IHVzZVRoZW1lKClcclxuY29uc3QgeyBzZXJ2ZXJJbmZvIH0gPSB1c2VTZXJ2ZXJJbmZvKClcclxuY29uc3QgbWVudUJ1dHRvbklkID0gdXNlSWQoKVxyXG5jb25zdCB7IGNvcHlSZWZlcmVuY2UgfSA9IHVzZUdlbmVyYXRlRXJyb3JSZWZlcmVuY2UoKVxyXG5cclxuY29uc3Qgc2hvd0ludml0ZURpYWxvZyA9IHJlZihmYWxzZSlcclxuXHJcbmNvbnN0IHZlcnNpb24gPSBjb21wdXRlZCgoKSA9PiBzZXJ2ZXJJbmZvLnZhbHVlPy52ZXJzaW9uKVxyXG5jb25zdCBpc0FkbWluID0gY29tcHV0ZWQoKCkgPT4gYWN0aXZlVXNlci52YWx1ZT8ucm9sZSA9PT0gUm9sZXMuU2VydmVyLkFkbWluKVxyXG5cclxuY29uc3QgdG9nZ2xlSW52aXRlRGlhbG9nID0gKCkgPT4ge1xyXG4gIHNob3dJbnZpdGVEaWFsb2cudmFsdWUgPSB0cnVlXHJcbn1cclxuXHJcbmNvbnN0IGNvcHlTdXBwb3J0UmVmZXJlbmNlID0gYXN5bmMgKCkgPT4ge1xyXG4gIGF3YWl0IGNvcHlSZWZlcmVuY2UoKVxyXG59XHJcbjwvc2NyaXB0PlxyXG4iXSwiZmlsZSI6IkQ6L3NwZWNrbGUtc2VydmVyL3BhY2thZ2VzL2Zyb250ZW5kLTIvY29tcG9uZW50cy9oZWFkZXIvbmF2L1VzZXJNZW51LnZ1ZSJ9