233 lines
23 KiB
Plaintext
233 lines
23 KiB
Plaintext
import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/integrations/acc/dialog/CreateSync.vue");import { default as __nuxt_component_0 } from "/_nuxt/components/integrations/acc/Hubs.vue";
|
|
import { default as __nuxt_component_1 } from "/_nuxt/components/integrations/acc/Projects.vue";
|
|
import { default as __nuxt_component_2 } from "/_nuxt/components/integrations/acc/FileSelector.vue";
|
|
import { FormTextInput as __nuxt_component_3 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js";
|
|
import { LayoutDialog as __nuxt_component_4 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js";
|
|
/* Injection by vite-plugin-vue-inspector Start */
|
|
import { createVNode as __createVNode,createBlock as __createBlock,createElementVNode as __createElementVNode } 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 _createVNode(...args) { return _interopVNode(__createVNode(...args)) }
|
|
function _createBlock(...args) { return _interopVNode(__createBlock(...args)) }
|
|
function _createElementVNode(...args) { return _interopVNode(__createElementVNode(...args)) }
|
|
/* Injection by vite-plugin-vue-inspector End */
|
|
import { useModel as _useModel, mergeModels as _mergeModels, defineComponent as _defineComponent } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
|
|
import { useForm } from "/_nuxt/node_modules/.cache/vite/client/deps/vee-validate.js?v=e4f18c29";
|
|
import { useAccAuthManager } from "/_nuxt/lib/acc/composables/useAccAuthManager.ts";
|
|
import {
|
|
useAcc
|
|
} from "/_nuxt/lib/acc/composables/useAccFiles.ts";
|
|
import { useCreateAccSyncItem } from "/_nuxt/lib/acc/composables/useCreateAccSyncItem.ts";
|
|
|
|
import { ref, computed, watch, onMounted } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
|
|
import { useGlobalToast } from "/_nuxt/composables/globals.ts";
|
|
import { ToastNotificationType } from "/_nuxt/utils/globals.ts";
|
|
const _sfc_main = /* @__PURE__ */ _defineComponent({
|
|
__name: "IntegrationsAccDialogCreateSync",
|
|
props: /* @__PURE__ */ _mergeModels({
|
|
title: { type: String, required: false },
|
|
intro: { type: String, required: false },
|
|
hideSuppport: { type: Boolean, required: false },
|
|
projectId: { type: String, required: false },
|
|
metadata: { type: Object, required: false }
|
|
}, {
|
|
"open": { type: Boolean, ...{ required: true } },
|
|
"openModifiers": {}
|
|
}),
|
|
emits: ["update:open"],
|
|
setup(__props, { expose: __expose }) {
|
|
__expose();
|
|
const props = __props;
|
|
const isOpen = _useModel(__props, "open");
|
|
const isCreatingSyncItem = ref(false);
|
|
const disableCreateButton = computed(() => !!isCreatingSyncItem.value);
|
|
const { handleSubmit } = useForm();
|
|
const dialogButtons = computed(() => [
|
|
{
|
|
text: "Create",
|
|
props: { color: "primary", loading: isCreatingSyncItem.value },
|
|
onClick: () => {
|
|
onSubmit();
|
|
},
|
|
disabled: disableCreateButton.value,
|
|
disabledMessage: "Creating ACC sync...",
|
|
id: "createAccSync"
|
|
}
|
|
]);
|
|
const { triggerNotification } = useGlobalToast();
|
|
const createAccSyncItem = useCreateAccSyncItem();
|
|
const dialogTitle = computed(() => props.title || "Create sync from ACC");
|
|
const onSubmit = handleSubmit(async () => {
|
|
await addSync();
|
|
isOpen.value = false;
|
|
});
|
|
const selectedHub = ref(null);
|
|
const selectedHubId = ref(null);
|
|
const selectedProjectId = ref(null);
|
|
const revitViewName = ref();
|
|
const selectedFolder = ref();
|
|
const selectedFileId = ref();
|
|
const selectedFileVersion = ref();
|
|
const {
|
|
hubs,
|
|
fetchHubs,
|
|
loadingHubs,
|
|
projects,
|
|
fetchProjects,
|
|
loadingProjects,
|
|
rootProjectFolderId,
|
|
init
|
|
} = useAcc();
|
|
const { tokens, tryGetTokensFromCookies } = useAccAuthManager();
|
|
const onHubClick = async (hub) => {
|
|
selectedHub.value = hub;
|
|
selectedHubId.value = hub.id;
|
|
await fetchProjects(hub.id, tokens.value.access_token);
|
|
};
|
|
const onProjectClick = async (hubId, projectId) => {
|
|
selectedFolder.value = void 0;
|
|
selectedFileVersion.value = void 0;
|
|
selectedProjectId.value = projectId;
|
|
await init(hubId, projectId, tokens.value.access_token);
|
|
};
|
|
const onFileSelected = (fileId, fileVersion) => {
|
|
selectedFileId.value = fileId;
|
|
selectedFileVersion.value = fileVersion;
|
|
};
|
|
const addSync = async () => {
|
|
try {
|
|
if (!selectedFileVersion.value || !selectedFileVersion.value.fileType) {
|
|
return;
|
|
}
|
|
isCreatingSyncItem.value = true;
|
|
const fileVersion = selectedFileVersion.value.versionNumber;
|
|
const accFileViewName = revitViewName.value === "" ? void 0 : revitViewName.value;
|
|
await createAccSyncItem({
|
|
projectId: props.projectId,
|
|
accRegion: selectedHub.value?.attributes?.region,
|
|
accFileExtension: selectedFileVersion.value.fileType,
|
|
accHubId: selectedHubId.value,
|
|
accProjectId: selectedProjectId.value,
|
|
accRootProjectFolderUrn: rootProjectFolderId.value,
|
|
accFileLineageUrn: selectedFileId.value,
|
|
accFileName: selectedFileVersion.value.name,
|
|
accFileVersionIndex: fileVersion,
|
|
accFileVersionUrn: selectedFileVersion.value.id,
|
|
accFileViewName
|
|
});
|
|
} catch (error) {
|
|
triggerNotification({
|
|
type: ToastNotificationType.Danger,
|
|
title: "Add sync item failed",
|
|
description: error instanceof Error ? error.message : "Unexpected error"
|
|
});
|
|
} finally {
|
|
isCreatingSyncItem.value = false;
|
|
revitViewName.value = void 0;
|
|
}
|
|
};
|
|
watch(tokens, (newTokens) => {
|
|
if (newTokens?.access_token) {
|
|
fetchHubs(newTokens?.access_token);
|
|
}
|
|
});
|
|
onMounted(async () => {
|
|
await tryGetTokensFromCookies();
|
|
if (tokens.value) {
|
|
fetchHubs(tokens.value.access_token);
|
|
}
|
|
});
|
|
watch(isOpen, (newVal) => {
|
|
if (newVal) {
|
|
selectedFileVersion.value = void 0;
|
|
}
|
|
});
|
|
const __returned__ = { props, isOpen, isCreatingSyncItem, disableCreateButton, handleSubmit, dialogButtons, triggerNotification, createAccSyncItem, dialogTitle, onSubmit, selectedHub, selectedHubId, selectedProjectId, revitViewName, selectedFolder, selectedFileId, selectedFileVersion, hubs, fetchHubs, loadingHubs, projects, fetchProjects, loadingProjects, rootProjectFolderId, init, tokens, tryGetTokensFromCookies, onHubClick, onProjectClick, onFileSelected, addSync };
|
|
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
return __returned__;
|
|
}
|
|
});
|
|
import { resolveComponent as _resolveComponent, openBlock as _openBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
|
|
const _hoisted_1 = {
|
|
class: "flex flex-col space-y-2",
|
|
"data-v-inspector": "components/integrations/acc/dialog/CreateSync.vue:9:5"
|
|
};
|
|
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
const _component_IntegrationsAccHubs = __nuxt_component_0;
|
|
const _component_IntegrationsAccProjects = __nuxt_component_1;
|
|
const _component_IntegrationsAccFileSelector = __nuxt_component_2;
|
|
const _component_FormTextInput = __nuxt_component_3;
|
|
const _component_LayoutDialog = __nuxt_component_4;
|
|
return _openBlock(), _createBlock(_component_LayoutDialog, {
|
|
open: $setup.isOpen,
|
|
"onUpdate:open": _cache[1] || (_cache[1] = ($event) => $setup.isOpen = $event),
|
|
title: $setup.dialogTitle,
|
|
buttons: $setup.dialogButtons,
|
|
"max-width": "lg",
|
|
fullscreen: "none",
|
|
"data-v-inspector": "components/integrations/acc/dialog/CreateSync.vue:2:3"
|
|
}, {
|
|
default: _withCtx(() => [
|
|
_createElementVNode("div", _hoisted_1, [
|
|
_createVNode(_component_IntegrationsAccHubs, {
|
|
hubs: $setup.hubs,
|
|
loading: $setup.loadingHubs,
|
|
onHubSelected: $setup.onHubClick,
|
|
"data-v-inspector": "components/integrations/acc/dialog/CreateSync.vue:10:7"
|
|
}, null, 8, ["hubs", "loading"]),
|
|
$setup.selectedHubId ? (_openBlock(), _createBlock(_component_IntegrationsAccProjects, {
|
|
key: 0,
|
|
"hub-id": $setup.selectedHubId,
|
|
projects: $setup.projects,
|
|
loading: $setup.loadingProjects,
|
|
onProjectSelected: $setup.onProjectClick,
|
|
"data-v-inspector": "components/integrations/acc/dialog/CreateSync.vue:16:7"
|
|
}, null, 8, ["hub-id", "projects", "loading"])) : _createCommentVNode("v-if", true),
|
|
$setup.selectedProjectId && $setup.selectedHubId && $setup.tokens ? (_openBlock(), _createBlock(_component_IntegrationsAccFileSelector, {
|
|
key: $setup.selectedProjectId,
|
|
"hub-id": $setup.selectedHubId,
|
|
"project-id": $setup.selectedProjectId,
|
|
tokens: $setup.tokens,
|
|
onFileSelected: $setup.onFileSelected,
|
|
"data-v-inspector": "components/integrations/acc/dialog/CreateSync.vue:24:7"
|
|
}, null, 8, ["hub-id", "project-id", "tokens"])) : _createCommentVNode("v-if", true),
|
|
_createVNode(_component_FormTextInput, {
|
|
modelValue: $setup.revitViewName,
|
|
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $setup.revitViewName = $event),
|
|
name: "revitFileViewName",
|
|
color: "foundation",
|
|
label: "Revit view name (Optional)",
|
|
"show-label": "",
|
|
disabled: !$setup.selectedFileVersion,
|
|
"data-v-inspector": "components/integrations/acc/dialog/CreateSync.vue:33:7"
|
|
}, null, 8, ["modelValue", "disabled"])
|
|
])
|
|
]),
|
|
_: 1
|
|
/* STABLE */
|
|
}, 8, ["open", "title", "buttons"]);
|
|
}
|
|
_sfc_main.__hmrId = "e66875a4";
|
|
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/integrations/acc/dialog/CreateSync.vue"]]);
|
|
|
|
//# sourceMappingURL=data:application/json;base64,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QixvQkFBaUI7QUFBQTtRQUk5Qyw0QkFBcUIsd0JBQWlCLCtCQUQ5QyxhQU9FO0FBQUEsVUFMQyxLQUFLO0FBQUEsVUFDTCxVQUFRO0FBQUEsVUFDUixjQUFZO0FBQUEsVUFDWixRQUFRO0FBQUEsVUFDUixnQkFBZTtBQUFBLFVBQWdCLG9CQUFpQjtBQUFBO1FBR25ELGFBT2lCO0FBQUEsc0JBTk47QUFBQSw4RkFBYTtBQUFBLFVBQ3RCLE1BQUs7QUFBQSxVQUNMLE9BQU07QUFBQSxVQUNOLE9BQU07QUFBQSxVQUNOO0FBQUEsVUFDQyxVQUFRLENBQUc7QUFBQSxVQUFxQixvQkFBaUI7QUFBQSIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOlsiQ3JlYXRlU3luYy52dWUiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG4gIDxMYXlvdXREaWFsb2dcclxuICAgIHYtbW9kZWw6b3Blbj1cImlzT3BlblwiXHJcbiAgICA6dGl0bGU9XCJkaWFsb2dUaXRsZVwiXHJcbiAgICA6YnV0dG9ucz1cImRpYWxvZ0J1dHRvbnNcIlxyXG4gICAgbWF4LXdpZHRoPVwibGdcIlxyXG4gICAgZnVsbHNjcmVlbj1cIm5vbmVcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9pbnRlZ3JhdGlvbnMvYWNjL2RpYWxvZy9DcmVhdGVTeW5jLnZ1ZToyOjNcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHNwYWNlLXktMlwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL2ludGVncmF0aW9ucy9hY2MvZGlhbG9nL0NyZWF0ZVN5bmMudnVlOjk6NVwiPlxyXG4gICAgICA8SW50ZWdyYXRpb25zQWNjSHVic1xyXG4gICAgICAgIDpodWJzPVwiaHVic1wiXHJcbiAgICAgICAgOmxvYWRpbmc9XCJsb2FkaW5nSHVic1wiXHJcbiAgICAgICAgQGh1Yi1zZWxlY3RlZD1cIm9uSHViQ2xpY2tcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9pbnRlZ3JhdGlvbnMvYWNjL2RpYWxvZy9DcmVhdGVTeW5jLnZ1ZToxMDo3XCJcclxuICAgICAgLz5cclxuXHJcbiAgICAgIDxJbnRlZ3JhdGlvbnNBY2NQcm9qZWN0c1xyXG4gICAgICAgIHYtaWY9XCJzZWxlY3RlZEh1YklkXCJcclxuICAgICAgICA6aHViLWlkPVwic2VsZWN0ZWRIdWJJZFwiXHJcbiAgICAgICAgOnByb2plY3RzPVwicHJvamVjdHNcIlxyXG4gICAgICAgIDpsb2FkaW5nPVwibG9hZGluZ1Byb2plY3RzXCJcclxuICAgICAgICBAcHJvamVjdC1zZWxlY3RlZD1cIm9uUHJvamVjdENsaWNrXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvaW50ZWdyYXRpb25zL2FjYy9kaWFsb2cvQ3JlYXRlU3luYy52dWU6MTY6N1wiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8SW50ZWdyYXRpb25zQWNjRmlsZVNlbGVjdG9yXHJcbiAgICAgICAgdi1pZj1cInNlbGVjdGVkUHJvamVjdElkICYmIHNlbGVjdGVkSHViSWQgJiYgdG9rZW5zXCJcclxuICAgICAgICA6a2V5PVwic2VsZWN0ZWRQcm9qZWN0SWRcIlxyXG4gICAgICAgIDpodWItaWQ9XCJzZWxlY3RlZEh1YklkXCJcclxuICAgICAgICA6cHJvamVjdC1pZD1cInNlbGVjdGVkUHJvamVjdElkXCJcclxuICAgICAgICA6dG9rZW5zPVwidG9rZW5zXCJcclxuICAgICAgICBAZmlsZS1zZWxlY3RlZD1cIm9uRmlsZVNlbGVjdGVkXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvaW50ZWdyYXRpb25zL2FjYy9kaWFsb2cvQ3JlYXRlU3luYy52dWU6MjQ6N1wiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8Rm9ybVRleHRJbnB1dFxyXG4gICAgICAgIHYtbW9kZWw9XCJyZXZpdFZpZXdOYW1lXCJcclxuICAgICAgICBuYW1lPVwicmV2aXRGaWxlVmlld05hbWVcIlxyXG4gICAgICAgIGNvbG9yPVwiZm91bmRhdGlvblwiXHJcbiAgICAgICAgbGFiZWw9XCJSZXZpdCB2aWV3IG5hbWUgKE9wdGlvbmFsKVwiXHJcbiAgICAgICAgc2hvdy1sYWJlbFxyXG4gICAgICAgIDpkaXNhYmxlZD1cIiFzZWxlY3RlZEZpbGVWZXJzaW9uXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvaW50ZWdyYXRpb25zL2FjYy9kaWFsb2cvQ3JlYXRlU3luYy52dWU6MzM6N1wiXHJcbiAgICAgID48L0Zvcm1UZXh0SW5wdXQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L0xheW91dERpYWxvZz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB0eXBlIHsgQWNjSHViIH0gZnJvbSAnQHNwZWNrbGUvc2hhcmVkL2FjYydcclxuaW1wb3J0IHR5cGUgeyBMYXlvdXREaWFsb2dCdXR0b24gfSBmcm9tICdAc3BlY2tsZS91aS1jb21wb25lbnRzJ1xyXG5pbXBvcnQgeyB1c2VGb3JtIH0gZnJvbSAndmVlLXZhbGlkYXRlJ1xyXG5pbXBvcnQgeyB1c2VBY2NBdXRoTWFuYWdlciB9IGZyb20gJ34vbGliL2FjYy9jb21wb3NhYmxlcy91c2VBY2NBdXRoTWFuYWdlcidcclxuaW1wb3J0IHtcclxuICB1c2VBY2MsXHJcbiAgdHlwZSBBY2NGb2xkZXIsXHJcbiAgdHlwZSBBY2NJdGVtVmVyc2lvblxyXG59IGZyb20gJ34vbGliL2FjYy9jb21wb3NhYmxlcy91c2VBY2NGaWxlcydcclxuaW1wb3J0IHsgdXNlQ3JlYXRlQWNjU3luY0l0ZW0gfSBmcm9tICd+L2xpYi9hY2MvY29tcG9zYWJsZXMvdXNlQ3JlYXRlQWNjU3luY0l0ZW0nXHJcblxyXG50eXBlIEZvcm1WYWx1ZXMgPSB7IGZlZWRiYWNrOiBzdHJpbmcgfVxyXG5cclxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczx7XHJcbiAgdGl0bGU/OiBzdHJpbmdcclxuICBpbnRybz86IHN0cmluZ1xyXG4gIGhpZGVTdXBwcG9ydD86IGJvb2xlYW5cclxuICBwcm9qZWN0SWQ/OiBzdHJpbmdcclxuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XHJcbn0+KClcclxuXHJcbmNvbnN0IGlzT3BlbiA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KCdvcGVuJywgeyByZXF1aXJlZDogdHJ1ZSB9KVxyXG5cclxuY29uc3QgaXNDcmVhdGluZ1N5bmNJdGVtID0gcmVmKGZhbHNlKVxyXG5jb25zdCBkaXNhYmxlQ3JlYXRlQnV0dG9uID0gY29tcHV0ZWQoKCkgPT4gISFpc0NyZWF0aW5nU3luY0l0ZW0udmFsdWUpXHJcblxyXG5jb25zdCB7IGhhbmRsZVN1Ym1pdCB9ID0gdXNlRm9ybTxGb3JtVmFsdWVzPigpXHJcblxyXG5jb25zdCBkaWFsb2dCdXR0b25zID0gY29tcHV0ZWQoKCk6IExheW91dERpYWxvZ0J1dHRvbltdID0+IFtcclxuICB7XHJcbiAgICB0ZXh0OiAnQ3JlYXRlJyxcclxuICAgIHByb3BzOiB7IGNvbG9yOiAncHJpbWFyeScsIGxvYWRpbmc6IGlzQ3JlYXRpbmdTeW5jSXRlbS52YWx1ZSB9LFxyXG4gICAgb25DbGljazogKCkgPT4ge1xyXG4gICAgICBvblN1Ym1pdCgpXHJcbiAgICB9LFxyXG4gICAgZGlzYWJsZWQ6IGRpc2FibGVDcmVhdGVCdXR0b24udmFsdWUsXHJcbiAgICBkaXNhYmxlZE1lc3NhZ2U6ICdDcmVhdGluZyBBQ0Mgc3luYy4uLicsXHJcbiAgICBpZDogJ2NyZWF0ZUFjY1N5bmMnXHJcbiAgfVxyXG5dKVxyXG5cclxuY29uc3QgeyB0cmlnZ2VyTm90aWZpY2F0aW9uIH0gPSB1c2VHbG9iYWxUb2FzdCgpXHJcbmNvbnN0IGNyZWF0ZUFjY1N5bmNJdGVtID0gdXNlQ3JlYXRlQWNjU3luY0l0ZW0oKVxyXG5cclxuY29uc3QgZGlhbG9nVGl0bGUgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy50aXRsZSB8fCAnQ3JlYXRlIHN5bmMgZnJvbSBBQ0MnKVxyXG5cclxuY29uc3Qgb25TdWJtaXQgPSBoYW5kbGVTdWJtaXQoYXN5bmMgKCkgPT4ge1xyXG4gIGF3YWl0IGFkZFN5bmMoKVxyXG4gIGlzT3Blbi52YWx1ZSA9IGZhbHNlXHJcbn0pXHJcblxyXG5jb25zdCBzZWxlY3RlZEh1YiA9IHJlZjxBY2NIdWIgfCBudWxsPihudWxsKVxyXG5jb25zdCBzZWxlY3RlZEh1YklkID0gcmVmPHN0cmluZyB8IG51bGw+KG51bGwpXHJcbmNvbnN0IHNlbGVjdGVkUHJvamVjdElkID0gcmVmPHN0cmluZyB8IG51bGw+KG51bGwpXHJcblxyXG5jb25zdCByZXZpdFZpZXdOYW1lID0gcmVmPHN0cmluZz4oKVxyXG5cclxuY29uc3Qgc2VsZWN0ZWRGb2xkZXIgPSByZWY8QWNjRm9sZGVyIHwgdW5kZWZpbmVkPigpXHJcbmNvbnN0IHNlbGVjdGVkRmlsZUlkID0gcmVmPHN0cmluZyB8IHVuZGVmaW5lZD4oKVxyXG5jb25zdCBzZWxlY3RlZEZpbGVWZXJzaW9uID0gcmVmPEFjY0l0ZW1WZXJzaW9uIHwgdW5kZWZpbmVkPigpXHJcblxyXG5jb25zdCB7XHJcbiAgaHVicyxcclxuICBmZXRjaEh1YnMsXHJcbiAgbG9hZGluZ0h1YnMsXHJcbiAgcHJvamVjdHMsXHJcbiAgZmV0Y2hQcm9qZWN0cyxcclxuICBsb2FkaW5nUHJvamVjdHMsXHJcbiAgcm9vdFByb2plY3RGb2xkZXJJZCxcclxuICBpbml0XHJcbn0gPSB1c2VBY2MoKVxyXG5cclxuY29uc3QgeyB0b2tlbnMsIHRyeUdldFRva2Vuc0Zyb21Db29raWVzIH0gPSB1c2VBY2NBdXRoTWFuYWdlcigpXHJcblxyXG5jb25zdCBvbkh1YkNsaWNrID0gYXN5bmMgKGh1YjogQWNjSHViKSA9PiB7XHJcbiAgc2VsZWN0ZWRIdWIudmFsdWUgPSBodWJcclxuICBzZWxlY3RlZEh1YklkLnZhbHVlID0gaHViLmlkXHJcbiAgYXdhaXQgZmV0Y2hQcm9qZWN0cyhodWIuaWQsIHRva2Vucy52YWx1ZSEuYWNjZXNzX3Rva2VuKVxyXG59XHJcblxyXG5jb25zdCBvblByb2plY3RDbGljayA9IGFzeW5jIChodWJJZDogc3RyaW5nLCBwcm9qZWN0SWQ6IHN0cmluZykgPT4ge1xyXG4gIHNlbGVjdGVkRm9sZGVyLnZhbHVlID0gdW5kZWZpbmVkXHJcbiAgc2VsZWN0ZWRGaWxlVmVyc2lvbi52YWx1ZSA9IHVuZGVmaW5lZFxyXG4gIHNlbGVjdGVkUHJvamVjdElkLnZhbHVlID0gcHJvamVjdElkXHJcbiAgYXdhaXQgaW5pdChodWJJZCwgcHJvamVjdElkLCB0b2tlbnMudmFsdWUhLmFjY2Vzc190b2tlbilcclxufVxyXG5cclxuY29uc3Qgb25GaWxlU2VsZWN0ZWQgPSAoZmlsZUlkOiBzdHJpbmcsIGZpbGVWZXJzaW9uOiBBY2NJdGVtVmVyc2lvbikgPT4ge1xyXG4gIHNlbGVjdGVkRmlsZUlkLnZhbHVlID0gZmlsZUlkXHJcbiAgc2VsZWN0ZWRGaWxlVmVyc2lvbi52YWx1ZSA9IGZpbGVWZXJzaW9uXHJcbn1cclxuXHJcbmNvbnN0IGFkZFN5bmMgPSBhc3luYyAoKSA9PiB7XHJcbiAgdHJ5IHtcclxuICAgIGlmICghc2VsZWN0ZWRGaWxlVmVyc2lvbi52YWx1ZSB8fCAhc2VsZWN0ZWRGaWxlVmVyc2lvbi52YWx1ZS5maWxlVHlwZSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGlzQ3JlYXRpbmdTeW5jSXRlbS52YWx1ZSA9IHRydWVcclxuXHJcbiAgICBjb25zdCBmaWxlVmVyc2lvbiA9IHNlbGVjdGVkRmlsZVZlcnNpb24udmFsdWUudmVyc2lvbk51bWJlclxyXG4gICAgY29uc3QgYWNjRmlsZVZpZXdOYW1lID0gcmV2aXRWaWV3TmFtZS52YWx1ZSA9PT0gJycgPyB1bmRlZmluZWQgOiByZXZpdFZpZXdOYW1lLnZhbHVlXHJcblxyXG4gICAgYXdhaXQgY3JlYXRlQWNjU3luY0l0ZW0oe1xyXG4gICAgICBwcm9qZWN0SWQ6IHByb3BzLnByb2plY3RJZCBhcyBzdHJpbmcsXHJcbiAgICAgIGFjY1JlZ2lvbjogc2VsZWN0ZWRIdWIudmFsdWU/LmF0dHJpYnV0ZXM/LnJlZ2lvbiBhcyBzdHJpbmcsXHJcbiAgICAgIGFjY0ZpbGVFeHRlbnNpb246IHNlbGVjdGVkRmlsZVZlcnNpb24udmFsdWUuZmlsZVR5cGUsXHJcbiAgICAgIGFjY0h1YklkOiBzZWxlY3RlZEh1YklkLnZhbHVlISxcclxuICAgICAgYWNjUHJvamVjdElkOiBzZWxlY3RlZFByb2plY3RJZC52YWx1ZSBhcyBzdHJpbmcsXHJcbiAgICAgIGFjY1Jvb3RQcm9qZWN0Rm9sZGVyVXJuOiByb290UHJvamVjdEZvbGRlcklkLnZhbHVlISxcclxuICAgICAgYWNjRmlsZUxpbmVhZ2VVcm46IHNlbGVjdGVkRmlsZUlkLnZhbHVlIGFzIHN0cmluZyxcclxuICAgICAgYWNjRmlsZU5hbWU6IHNlbGVjdGVkRmlsZVZlcnNpb24udmFsdWUubmFtZSxcclxuICAgICAgYWNjRmlsZVZlcnNpb25JbmRleDogZmlsZVZlcnNpb24sXHJcbiAgICAgIGFjY0ZpbGVWZXJzaW9uVXJuOiBzZWxlY3RlZEZpbGVWZXJzaW9uLnZhbHVlLmlkLFxyXG4gICAgICBhY2NGaWxlVmlld05hbWVcclxuICAgIH0pXHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIHRyaWdnZXJOb3RpZmljYXRpb24oe1xyXG4gICAgICB0eXBlOiBUb2FzdE5vdGlmaWNhdGlvblR5cGUuRGFuZ2VyLFxyXG4gICAgICB0aXRsZTogJ0FkZCBzeW5jIGl0ZW0gZmFpbGVkJyxcclxuICAgICAgZGVzY3JpcHRpb246IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1VuZXhwZWN0ZWQgZXJyb3InXHJcbiAgICB9KVxyXG4gIH0gZmluYWxseSB7XHJcbiAgICBpc0NyZWF0aW5nU3luY0l0ZW0udmFsdWUgPSBmYWxzZVxyXG4gICAgcmV2aXRWaWV3TmFtZS52YWx1ZSA9IHVuZGVmaW5lZFxyXG4gIH1cclxufVxyXG5cclxud2F0Y2godG9rZW5zLCAobmV3VG9rZW5zKSA9PiB7XHJcbiAgaWYgKG5ld1Rva2Vucz8uYWNjZXNzX3Rva2VuKSB7XHJcbiAgICBmZXRjaEh1YnMobmV3VG9rZW5zPy5hY2Nlc3NfdG9rZW4pXHJcbiAgfVxyXG59KVxyXG5cclxub25Nb3VudGVkKGFzeW5jICgpID0+IHtcclxuICBhd2FpdCB0cnlHZXRUb2tlbnNGcm9tQ29va2llcygpXHJcbiAgaWYgKHRva2Vucy52YWx1ZSkge1xyXG4gICAgZmV0Y2hIdWJzKHRva2Vucy52YWx1ZS5hY2Nlc3NfdG9rZW4pXHJcbiAgfVxyXG59KVxyXG5cclxud2F0Y2goaXNPcGVuLCAobmV3VmFsKSA9PiB7XHJcbiAgaWYgKG5ld1ZhbCkge1xyXG4gICAgc2VsZWN0ZWRGaWxlVmVyc2lvbi52YWx1ZSA9IHVuZGVmaW5lZFxyXG4gIH1cclxufSlcclxuPC9zY3JpcHQ+XHJcbiJdLCJmaWxlIjoiRDovc3BlY2tsZS1zZXJ2ZXIvcGFja2FnZXMvZnJvbnRlbmQtMi9jb21wb25lbnRzL2ludGVncmF0aW9ucy9hY2MvZGlhbG9nL0NyZWF0ZVN5bmMudnVlIn0= |