187 lines
17 KiB
Plaintext
187 lines
17 KiB
Plaintext
import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/workspace/discoverableWorkspaces/Modal.vue");import { default as __nuxt_component_0 } from "/_nuxt/components/workspace/discoverableWorkspaces/Card.vue";
|
|
import { FormButton as __nuxt_component_1 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js";
|
|
import { LayoutDialog as __nuxt_component_2 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js";
|
|
/* Injection by vite-plugin-vue-inspector Start */
|
|
import { createElementVNode as __createElementVNode,createElementBlock as __createElementBlock,createBlock as __createBlock } 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 _createElementBlock(...args) { return _interopVNode(__createElementBlock(...args)) }
|
|
function _createBlock(...args) { return _interopVNode(__createBlock(...args)) }
|
|
/* Injection by vite-plugin-vue-inspector End */
|
|
import { useModel as _useModel, defineComponent as _defineComponent } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
|
|
import { useDiscoverableWorkspaces } from "/_nuxt/lib/workspaces/composables/discoverableWorkspaces.ts";
|
|
import { WorkspaceJoinRequestStatus } from "/_nuxt/lib/common/generated/gql/graphql.ts";
|
|
|
|
import { ref, computed, watch } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
|
|
const _sfc_main = /* @__PURE__ */ _defineComponent({
|
|
__name: "WorkspaceDiscoverableWorkspacesModal",
|
|
props: {
|
|
"open": { type: Boolean, ...{ required: true } },
|
|
"openModifiers": {}
|
|
},
|
|
emits: ["update:open"],
|
|
setup(__props, { expose: __expose }) {
|
|
__expose();
|
|
const {
|
|
discoverableWorkspacesAndJoinRequests,
|
|
hasDiscoverableWorkspacesOrJoinRequests,
|
|
discoverableWorkspacesAndJoinRequestsCount
|
|
} = useDiscoverableWorkspaces();
|
|
const open = _useModel(__props, "open");
|
|
const showAllWorkspaces = ref(false);
|
|
const actionedWorkspaces = ref([]);
|
|
const remainingWorkspaces = computed(() => {
|
|
const actionedIds = new Set(actionedWorkspaces.value.map((w) => w.id));
|
|
return (discoverableWorkspacesAndJoinRequests.value || []).filter(
|
|
(workspace) => !actionedIds.has(workspace.id)
|
|
);
|
|
});
|
|
const localWorkspaces = computed(() => [
|
|
...actionedWorkspaces.value,
|
|
...remainingWorkspaces.value
|
|
]);
|
|
const workspacesToShow = computed(() => {
|
|
return showAllWorkspaces.value ? localWorkspaces.value : localWorkspaces.value.slice(0, 3);
|
|
});
|
|
const dialogButtons = computed(() => {
|
|
return [
|
|
{
|
|
text: "Close",
|
|
onClick: () => {
|
|
open.value = false;
|
|
}
|
|
}
|
|
];
|
|
});
|
|
const moveToTop = (workspaceId, newStatus) => {
|
|
const workspace = remainingWorkspaces.value.find((w) => w.id === workspaceId);
|
|
if (workspace) {
|
|
actionedWorkspaces.value.unshift({
|
|
...workspace,
|
|
requestStatus: newStatus
|
|
});
|
|
}
|
|
};
|
|
const onWorkspaceDismissed = (workspaceId) => {
|
|
actionedWorkspaces.value = actionedWorkspaces.value.filter(
|
|
(w) => w.id !== workspaceId
|
|
);
|
|
};
|
|
watch(open, () => {
|
|
showAllWorkspaces.value = false;
|
|
if (!open.value) {
|
|
actionedWorkspaces.value = [];
|
|
}
|
|
});
|
|
const __returned__ = { discoverableWorkspacesAndJoinRequests, hasDiscoverableWorkspacesOrJoinRequests, discoverableWorkspacesAndJoinRequestsCount, open, showAllWorkspaces, actionedWorkspaces, remainingWorkspaces, localWorkspaces, workspacesToShow, dialogButtons, moveToTop, onWorkspaceDismissed, get WorkspaceJoinRequestStatus() {
|
|
return WorkspaceJoinRequestStatus;
|
|
} };
|
|
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
return __returned__;
|
|
}
|
|
});
|
|
import { createTextVNode as _createTextVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, resolveComponent as _resolveComponent, withCtx as _withCtx, createCommentVNode as _createCommentVNode } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
|
|
const _hoisted_1 = {
|
|
class: "text-body-xs text-foreground-2 pb-3",
|
|
"data-v-inspector": "components/workspace/discoverableWorkspaces/Modal.vue:4:5"
|
|
};
|
|
const _hoisted_2 = {
|
|
class: "flex flex-col gap-y-3",
|
|
"data-v-inspector": "components/workspace/discoverableWorkspaces/Modal.vue:11:5"
|
|
};
|
|
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
const _component_WorkspaceDiscoverableWorkspacesCard = __nuxt_component_0;
|
|
const _component_FormButton = __nuxt_component_1;
|
|
const _component_LayoutDialog = __nuxt_component_2;
|
|
return _openBlock(), _createBlock(_component_LayoutDialog, {
|
|
open: $setup.open,
|
|
"onUpdate:open": _cache[2] || (_cache[2] = ($event) => $setup.open = $event),
|
|
"max-width": "md",
|
|
buttons: $setup.dialogButtons,
|
|
"data-v-inspector": "components/workspace/discoverableWorkspaces/Modal.vue:2:3"
|
|
}, {
|
|
header: _withCtx(() => [..._cache[3] || (_cache[3] = [
|
|
_createTextVNode(
|
|
"Join existing workspaces",
|
|
-1
|
|
/* CACHED */
|
|
)
|
|
])]),
|
|
default: _withCtx(() => [
|
|
_createElementVNode(
|
|
"p",
|
|
_hoisted_1,
|
|
_toDisplayString($setup.hasDiscoverableWorkspacesOrJoinRequests ? "Workspaces that match your email domain" : "You have no discoverable workspaces"),
|
|
1
|
|
/* TEXT */
|
|
),
|
|
_createElementVNode("div", _hoisted_2, [
|
|
(_openBlock(true), _createElementBlock(
|
|
_Fragment,
|
|
null,
|
|
_renderList($setup.workspacesToShow, (workspace) => {
|
|
return _openBlock(), _createBlock(_component_WorkspaceDiscoverableWorkspacesCard, {
|
|
key: workspace.id,
|
|
workspace,
|
|
"request-status": workspace.requestStatus,
|
|
"show-dismiss-button": "",
|
|
location: "workspace_switcher",
|
|
onAutoJoined: ($event) => $setup.moveToTop(workspace.id, $setup.WorkspaceJoinRequestStatus.Approved),
|
|
onRequest: ($event) => $setup.moveToTop(workspace.id, $setup.WorkspaceJoinRequestStatus.Pending),
|
|
onDismissed: $setup.onWorkspaceDismissed,
|
|
onGoToWorkspace: _cache[0] || (_cache[0] = ($event) => $setup.open = false),
|
|
"data-v-inspector": "components/workspace/discoverableWorkspaces/Modal.vue:12:7"
|
|
}, null, 8, ["workspace", "request-status", "onAutoJoined", "onRequest"]);
|
|
}),
|
|
128
|
|
/* KEYED_FRAGMENT */
|
|
)),
|
|
!$setup.showAllWorkspaces && $setup.discoverableWorkspacesAndJoinRequestsCount > 3 ? (_openBlock(), _createBlock(_component_FormButton, {
|
|
key: 0,
|
|
color: "subtle",
|
|
size: "lg",
|
|
"full-width": "",
|
|
onClick: _cache[1] || (_cache[1] = ($event) => $setup.showAllWorkspaces = true),
|
|
"data-v-inspector": "components/workspace/discoverableWorkspaces/Modal.vue:24:7"
|
|
}, {
|
|
default: _withCtx(() => [
|
|
_createTextVNode(
|
|
" Show all (" + _toDisplayString($setup.discoverableWorkspacesAndJoinRequestsCount) + ") ",
|
|
1
|
|
/* TEXT */
|
|
)
|
|
]),
|
|
_: 1
|
|
/* STABLE */
|
|
})) : _createCommentVNode("v-if", true)
|
|
])
|
|
]),
|
|
_: 1
|
|
/* STABLE */
|
|
}, 8, ["open", "buttons"]);
|
|
}
|
|
_sfc_main.__hmrId = "6d690bc2";
|
|
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/workspace/discoverableWorkspaces/Modal.vue"]]);
|
|
|
|
//# sourceMappingURL=data:application/json;base64,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Y0FBSTtBQUFBLGNBQVUsb0JBQWlCO0FBQUE7Ozs7O1NBRzFDLDRCQUFxQixvREFBMEMsbUJBRHhFLGFBUWE7QUFBQTtVQU5YLE9BQU07QUFBQSxVQUNOLE1BQUs7QUFBQSxVQUNMO0FBQUEsVUFDQyxTQUFLLHNDQUFFLDJCQUFpQjtBQUFBLFVBQVMsb0JBQWlCO0FBQUE7NEJBQ3BELE1BQ1c7QUFBQTtjQURYLGdCQUNXLGlCQUFHLGlEQUEwQyxJQUFHO0FBQUEsY0FDNUQ7QUFBQTtBQUFBO0FBQUEiLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VzIjpbIk1vZGFsLnZ1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XHJcbiAgPExheW91dERpYWxvZyB2LW1vZGVsOm9wZW49XCJvcGVuXCIgbWF4LXdpZHRoPVwibWRcIiA6YnV0dG9ucz1cImRpYWxvZ0J1dHRvbnNcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy93b3Jrc3BhY2UvZGlzY292ZXJhYmxlV29ya3NwYWNlcy9Nb2RhbC52dWU6MjozXCI+XHJcbiAgICA8dGVtcGxhdGUgI2hlYWRlcj5Kb2luIGV4aXN0aW5nIHdvcmtzcGFjZXM8L3RlbXBsYXRlPlxyXG4gICAgPHAgY2xhc3M9XCJ0ZXh0LWJvZHkteHMgdGV4dC1mb3JlZ3JvdW5kLTIgcGItM1wiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3dvcmtzcGFjZS9kaXNjb3ZlcmFibGVXb3Jrc3BhY2VzL01vZGFsLnZ1ZTo0OjVcIj5cclxuICAgICAge3tcclxuICAgICAgICBoYXNEaXNjb3ZlcmFibGVXb3Jrc3BhY2VzT3JKb2luUmVxdWVzdHNcclxuICAgICAgICAgID8gJ1dvcmtzcGFjZXMgdGhhdCBtYXRjaCB5b3VyIGVtYWlsIGRvbWFpbidcclxuICAgICAgICAgIDogJ1lvdSBoYXZlIG5vIGRpc2NvdmVyYWJsZSB3b3Jrc3BhY2VzJ1xyXG4gICAgICB9fVxyXG4gICAgPC9wPlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLXktM1wiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3dvcmtzcGFjZS9kaXNjb3ZlcmFibGVXb3Jrc3BhY2VzL01vZGFsLnZ1ZToxMTo1XCI+XHJcbiAgICAgIDxXb3Jrc3BhY2VEaXNjb3ZlcmFibGVXb3Jrc3BhY2VzQ2FyZFxyXG4gICAgICAgIHYtZm9yPVwid29ya3NwYWNlIGluIHdvcmtzcGFjZXNUb1Nob3dcIlxyXG4gICAgICAgIDprZXk9XCJ3b3Jrc3BhY2UuaWRcIlxyXG4gICAgICAgIDp3b3Jrc3BhY2U9XCJ3b3Jrc3BhY2VcIlxyXG4gICAgICAgIDpyZXF1ZXN0LXN0YXR1cz1cIndvcmtzcGFjZS5yZXF1ZXN0U3RhdHVzXCJcclxuICAgICAgICBzaG93LWRpc21pc3MtYnV0dG9uXHJcbiAgICAgICAgbG9jYXRpb249XCJ3b3Jrc3BhY2Vfc3dpdGNoZXJcIlxyXG4gICAgICAgIEBhdXRvLWpvaW5lZD1cIm1vdmVUb1RvcCh3b3Jrc3BhY2UuaWQsIFdvcmtzcGFjZUpvaW5SZXF1ZXN0U3RhdHVzLkFwcHJvdmVkKVwiXHJcbiAgICAgICAgQHJlcXVlc3Q9XCJtb3ZlVG9Ub3Aod29ya3NwYWNlLmlkLCBXb3Jrc3BhY2VKb2luUmVxdWVzdFN0YXR1cy5QZW5kaW5nKVwiXHJcbiAgICAgICAgQGRpc21pc3NlZD1cIm9uV29ya3NwYWNlRGlzbWlzc2VkXCJcclxuICAgICAgICBAZ28tdG8td29ya3NwYWNlPVwib3BlbiA9IGZhbHNlXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvd29ya3NwYWNlL2Rpc2NvdmVyYWJsZVdvcmtzcGFjZXMvTW9kYWwudnVlOjEyOjdcIlxyXG4gICAgICAvPlxyXG4gICAgICA8Rm9ybUJ1dHRvblxyXG4gICAgICAgIHYtaWY9XCIhc2hvd0FsbFdvcmtzcGFjZXMgJiYgZGlzY292ZXJhYmxlV29ya3NwYWNlc0FuZEpvaW5SZXF1ZXN0c0NvdW50ID4gM1wiXHJcbiAgICAgICAgY29sb3I9XCJzdWJ0bGVcIlxyXG4gICAgICAgIHNpemU9XCJsZ1wiXHJcbiAgICAgICAgZnVsbC13aWR0aFxyXG4gICAgICAgIEBjbGljaz1cInNob3dBbGxXb3Jrc3BhY2VzID0gdHJ1ZVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3dvcmtzcGFjZS9kaXNjb3ZlcmFibGVXb3Jrc3BhY2VzL01vZGFsLnZ1ZToyNDo3XCJcclxuICAgICAgPlxyXG4gICAgICAgIFNob3cgYWxsICh7eyBkaXNjb3ZlcmFibGVXb3Jrc3BhY2VzQW5kSm9pblJlcXVlc3RzQ291bnQgfX0pXHJcbiAgICAgIDwvRm9ybUJ1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvTGF5b3V0RGlhbG9nPlxyXG48L3RlbXBsYXRlPlxyXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgdHlwZSB7IExheW91dERpYWxvZ0J1dHRvbiB9IGZyb20gJ0BzcGVja2xlL3VpLWNvbXBvbmVudHMnXHJcbmltcG9ydCB7IHVzZURpc2NvdmVyYWJsZVdvcmtzcGFjZXMgfSBmcm9tICd+L2xpYi93b3Jrc3BhY2VzL2NvbXBvc2FibGVzL2Rpc2NvdmVyYWJsZVdvcmtzcGFjZXMnXHJcbmltcG9ydCB7IFdvcmtzcGFjZUpvaW5SZXF1ZXN0U3RhdHVzIH0gZnJvbSAnfi9saWIvY29tbW9uL2dlbmVyYXRlZC9ncWwvZ3JhcGhxbCdcclxuXHJcbmNvbnN0IHtcclxuICBkaXNjb3ZlcmFibGVXb3Jrc3BhY2VzQW5kSm9pblJlcXVlc3RzLFxyXG4gIGhhc0Rpc2NvdmVyYWJsZVdvcmtzcGFjZXNPckpvaW5SZXF1ZXN0cyxcclxuICBkaXNjb3ZlcmFibGVXb3Jrc3BhY2VzQW5kSm9pblJlcXVlc3RzQ291bnRcclxufSA9IHVzZURpc2NvdmVyYWJsZVdvcmtzcGFjZXMoKVxyXG5cclxuY29uc3Qgb3BlbiA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KCdvcGVuJywgeyByZXF1aXJlZDogdHJ1ZSB9KVxyXG5jb25zdCBzaG93QWxsV29ya3NwYWNlcyA9IHJlZihmYWxzZSlcclxuXHJcbi8vIFdvcmtzcGFjZXMgdGhhdCBoYXZlIGJlZW4gaW50ZXJhY3RlZCB3aXRoIChtb3ZlZCB0byB0b3ApXHJcbmNvbnN0IGFjdGlvbmVkV29ya3NwYWNlcyA9IHJlZjx0eXBlb2YgZGlzY292ZXJhYmxlV29ya3NwYWNlc0FuZEpvaW5SZXF1ZXN0cy52YWx1ZT4oW10pXHJcblxyXG4vLyBSZW1haW5pbmcgd29ya3NwYWNlcyAoZXhjbHVkZXMgb25lcyBtb3ZlZCB0byB0b3Agb3IgZGlzbWlzc2VkKVxyXG5jb25zdCByZW1haW5pbmdXb3Jrc3BhY2VzID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gIGNvbnN0IGFjdGlvbmVkSWRzID0gbmV3IFNldChhY3Rpb25lZFdvcmtzcGFjZXMudmFsdWUubWFwKCh3KSA9PiB3LmlkKSlcclxuICByZXR1cm4gKGRpc2NvdmVyYWJsZVdvcmtzcGFjZXNBbmRKb2luUmVxdWVzdHMudmFsdWUgfHwgW10pLmZpbHRlcihcclxuICAgICh3b3Jrc3BhY2UpID0+ICFhY3Rpb25lZElkcy5oYXMod29ya3NwYWNlLmlkKVxyXG4gIClcclxufSlcclxuXHJcbi8vIENvbWJpbmVkIGxpc3Q6IHRvcCB3b3Jrc3BhY2VzIGZpcnN0LCB0aGVuIHJlbWFpbmluZ1xyXG5jb25zdCBsb2NhbFdvcmtzcGFjZXMgPSBjb21wdXRlZCgoKSA9PiBbXHJcbiAgLi4uYWN0aW9uZWRXb3Jrc3BhY2VzLnZhbHVlLFxyXG4gIC4uLnJlbWFpbmluZ1dvcmtzcGFjZXMudmFsdWVcclxuXSlcclxuXHJcbmNvbnN0IHdvcmtzcGFjZXNUb1Nob3cgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgcmV0dXJuIHNob3dBbGxXb3Jrc3BhY2VzLnZhbHVlXHJcbiAgICA/IGxvY2FsV29ya3NwYWNlcy52YWx1ZVxyXG4gICAgOiBsb2NhbFdvcmtzcGFjZXMudmFsdWUuc2xpY2UoMCwgMylcclxufSlcclxuXHJcbmNvbnN0IGRpYWxvZ0J1dHRvbnMgPSBjb21wdXRlZCgoKTogTGF5b3V0RGlhbG9nQnV0dG9uW10gPT4ge1xyXG4gIHJldHVybiBbXHJcbiAgICB7XHJcbiAgICAgIHRleHQ6ICdDbG9zZScsXHJcbiAgICAgIG9uQ2xpY2s6ICgpID0+IHtcclxuICAgICAgICBvcGVuLnZhbHVlID0gZmFsc2VcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuXHJcbmNvbnN0IG1vdmVUb1RvcCA9ICh3b3Jrc3BhY2VJZDogc3RyaW5nLCBuZXdTdGF0dXM6IFdvcmtzcGFjZUpvaW5SZXF1ZXN0U3RhdHVzKSA9PiB7XHJcbiAgY29uc3Qgd29ya3NwYWNlID0gcmVtYWluaW5nV29ya3NwYWNlcy52YWx1ZS5maW5kKCh3KSA9PiB3LmlkID09PSB3b3Jrc3BhY2VJZClcclxuICBpZiAod29ya3NwYWNlKSB7XHJcbiAgICBhY3Rpb25lZFdvcmtzcGFjZXMudmFsdWUudW5zaGlmdCh7XHJcbiAgICAgIC4uLndvcmtzcGFjZSxcclxuICAgICAgcmVxdWVzdFN0YXR1czogbmV3U3RhdHVzXHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG5cclxuY29uc3Qgb25Xb3Jrc3BhY2VEaXNtaXNzZWQgPSAod29ya3NwYWNlSWQ6IHN0cmluZykgPT4ge1xyXG4gIGFjdGlvbmVkV29ya3NwYWNlcy52YWx1ZSA9IGFjdGlvbmVkV29ya3NwYWNlcy52YWx1ZS5maWx0ZXIoXHJcbiAgICAodykgPT4gdy5pZCAhPT0gd29ya3NwYWNlSWRcclxuICApXHJcbn1cclxuXHJcbndhdGNoKG9wZW4sICgpID0+IHtcclxuICBzaG93QWxsV29ya3NwYWNlcy52YWx1ZSA9IGZhbHNlXHJcbiAgaWYgKCFvcGVuLnZhbHVlKSB7XHJcbiAgICBhY3Rpb25lZFdvcmtzcGFjZXMudmFsdWUgPSBbXVxyXG4gIH1cclxufSlcclxuPC9zY3JpcHQ+XHJcbiJdLCJmaWxlIjoiRDovc3BlY2tsZS1zZXJ2ZXIvcGFja2FnZXMvZnJvbnRlbmQtMi9jb21wb25lbnRzL3dvcmtzcGFjZS9kaXNjb3ZlcmFibGVXb3Jrc3BhY2VzL01vZGFsLnZ1ZSJ9 |