Files
speckle-server/scratch/edge-debug-selection/Default/Cache/Cache_Data/f_000179
T

197 lines
21 KiB
Plaintext

import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/viewer/filters/filter/ConditionSelector.vue");/* Injection by vite-plugin-vue-inspector Start */
import { createElementVNode as __createElementVNode,createVNode as __createVNode,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 _createVNode(...args) { return _interopVNode(__createVNode(...args)) }
function _createBlock(...args) { return _interopVNode(__createBlock(...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 {
getConditionsForType,
getConditionLabel
} from "/_nuxt/lib/viewer/helpers/filters/constants.ts";
import {
FilterType,
StringFilterCondition,
NumericFilterCondition,
ExistenceFilterCondition,
isNumericFilter
} from "/_nuxt/lib/viewer/helpers/filters/types.ts";
import { LayoutMenu, FormButton } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js";
import { ref, computed } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
const _sfc_main = /* @__PURE__ */ _defineComponent({
__name: "ViewerFiltersFilterConditionSelector",
props: {
filter: { type: Object, required: true },
noPadding: { type: Boolean, required: false }
},
emits: ["selectCondition"],
setup(__props, { expose: __expose, emit: __emit }) {
__expose();
const props = __props;
const emit = __emit;
const showMenu = ref(false);
const isConditionDisabled = (condition) => {
if (!isNumericFilter(props.filter)) return false;
const numericFilter = props.filter;
const hasProblematicRange = numericFilter.hasConstantValue || numericFilter.hasNearZeroRange;
if (hasProblematicRange) {
return condition === NumericFilterCondition.IsBetween || condition === NumericFilterCondition.IsGreaterThan || condition === NumericFilterCondition.IsLessThan || condition === NumericFilterCondition.IsEqualTo || condition === NumericFilterCondition.IsNotEqualTo;
}
return false;
};
const getDisabledReason = (condition) => {
if (!isConditionDisabled(condition)) return void 0;
if (isNumericFilter(props.filter)) {
const numericFilter = props.filter;
return numericFilter.rangeDisabledReason;
}
return void 0;
};
const conditionOptions = computed(() => {
const availableConditions = getConditionsForType(props.filter.type);
return availableConditions.map((condition) => ({
value: condition,
label: getConditionLabel(condition)
}));
});
const menuItems = computed(() => {
if (props.filter.type === FilterType.String) {
const basicConditions = conditionOptions.value.filter(
(option) => option.value === StringFilterCondition.Is || option.value === StringFilterCondition.IsNot
);
const specialConditions = conditionOptions.value.filter(
(option) => option.value === ExistenceFilterCondition.IsSet || option.value === ExistenceFilterCondition.IsNotSet
);
return [
basicConditions.map((conditionOption) => ({
id: conditionOption.value,
title: conditionOption.label,
active: conditionOption.value === props.filter.condition,
disabled: isConditionDisabled(conditionOption.value),
disabledTooltip: getDisabledReason(conditionOption.value)
})),
specialConditions.map((conditionOption) => ({
id: conditionOption.value,
title: conditionOption.label,
active: conditionOption.value === props.filter.condition,
disabled: isConditionDisabled(conditionOption.value),
disabledTooltip: getDisabledReason(conditionOption.value)
}))
];
} else {
const basicConditions = conditionOptions.value.filter(
(option) => option.value === NumericFilterCondition.IsEqualTo || option.value === NumericFilterCondition.IsNotEqualTo || option.value === NumericFilterCondition.IsGreaterThan || option.value === NumericFilterCondition.IsLessThan || option.value === NumericFilterCondition.IsBetween
);
const specialConditions = conditionOptions.value.filter(
(option) => option.value === ExistenceFilterCondition.IsSet || option.value === ExistenceFilterCondition.IsNotSet
);
return [
basicConditions.map((conditionOption) => ({
id: conditionOption.value,
title: conditionOption.label,
active: conditionOption.value === props.filter.condition,
disabled: isConditionDisabled(conditionOption.value),
disabledTooltip: getDisabledReason(conditionOption.value)
})),
specialConditions.map((conditionOption) => ({
id: conditionOption.value,
title: conditionOption.label,
active: conditionOption.value === props.filter.condition,
disabled: isConditionDisabled(conditionOption.value),
disabledTooltip: getDisabledReason(conditionOption.value)
}))
];
}
});
const onConditionChosen = ({ item }) => {
if (item.disabled) {
return;
}
emit("selectCondition", { value: item.id });
showMenu.value = false;
};
const __returned__ = { props, emit, showMenu, isConditionDisabled, getDisabledReason, conditionOptions, menuItems, onConditionChosen, get getConditionLabel() {
return getConditionLabel;
}, get FilterType() {
return FilterType;
}, get LayoutMenu() {
return LayoutMenu;
}, get FormButton() {
return FormButton;
} };
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
return __returned__;
}
});
import { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, withCtx as _withCtx, openBlock as _openBlock, } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
const _hoisted_1 = {
class: "text-foreground-2 font-medium text-body-2xs",
"data-v-inspector": "components/viewer/filters/filter/ConditionSelector.vue:21:7"
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return _openBlock(), _createBlock($setup["LayoutMenu"], {
open: $setup.showMenu,
"onUpdate:open": _cache[1] || (_cache[1] = ($event) => $setup.showMenu = $event),
class: _normalizeClass($props.noPadding ? "" : "pl-9"),
items: $setup.menuItems,
"mount-menu-on-body": "",
"show-ticks": "right",
"custom-menu-items-classes": [
"!text-body-2xs",
$props.filter.type === $setup.FilterType.Numeric ? "!w-36" : "!w-28"
],
onChosen: $setup.onConditionChosen,
"data-v-inspector": "components/viewer/filters/filter/ConditionSelector.vue:2:3"
}, {
default: _withCtx(() => [
_createVNode($setup["FormButton"], {
class: _normalizeClass(["-ml-2", $setup.showMenu ? "!bg-highlight-2" : ""]),
color: "subtle",
size: "sm",
onClick: _cache[0] || (_cache[0] = ($event) => $setup.showMenu = !$setup.showMenu),
"data-v-inspector": "components/viewer/filters/filter/ConditionSelector.vue:14:5"
}, {
default: _withCtx(() => [
_createElementVNode(
"span",
_hoisted_1,
_toDisplayString($setup.getConditionLabel($setup.props.filter.condition)),
1
/* TEXT */
)
]),
_: 1
/* STABLE */
}, 8, ["class"])
]),
_: 1
/* STABLE */
}, 8, ["open", "class", "items", "custom-menu-items-classes"]);
}
_sfc_main.__hmrId = "754c5d5d";
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/viewer/filters/filter/ConditionSelector.vue"]]);
//# sourceMappingURL=data:application/json;base64,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YUFVYTtBQUFBLFFBVFgsT0FBSyxpQkFBQyxTQUdFLGtCQUFRO0FBQUEsUUFGaEIsT0FBTTtBQUFBLFFBQ04sTUFBSztBQUFBLFFBRUosU0FBSyxzQ0FBRSxrQkFBUSxDQUFJO0FBQUEsUUFBVSxvQkFBaUI7QUFBQTswQkFFL0MsTUFFTztBQUFBLFVBRlA7QUFBQSxZQUVPO0FBQUEsWUFGUDtBQUFBLFlBRU8saUJBREYseUJBQWtCLGFBQU0sT0FBTyxTQUFTO0FBQUE7QUFBQTtBQUFBO0FBQUEiLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VzIjpbIkNvbmRpdGlvblNlbGVjdG9yLnZ1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XHJcbiAgPExheW91dE1lbnVcclxuICAgIHYtbW9kZWw6b3Blbj1cInNob3dNZW51XCJcclxuICAgIDpjbGFzcz1cIm5vUGFkZGluZyA/ICcnIDogJ3BsLTknXCJcclxuICAgIDppdGVtcz1cIm1lbnVJdGVtc1wiXHJcbiAgICBtb3VudC1tZW51LW9uLWJvZHlcclxuICAgIHNob3ctdGlja3M9XCJyaWdodFwiXHJcbiAgICA6Y3VzdG9tLW1lbnUtaXRlbXMtY2xhc3Nlcz1cIltcclxuICAgICAgJyF0ZXh0LWJvZHktMnhzJyxcclxuICAgICAgZmlsdGVyLnR5cGUgPT09IEZpbHRlclR5cGUuTnVtZXJpYyA/ICchdy0zNicgOiAnIXctMjgnXHJcbiAgICBdXCJcclxuICAgIEBjaG9zZW49XCJvbkNvbmRpdGlvbkNob3NlblwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9maWx0ZXJzL2ZpbHRlci9Db25kaXRpb25TZWxlY3Rvci52dWU6MjozXCJcclxuICA+XHJcbiAgICA8Rm9ybUJ1dHRvblxyXG4gICAgICBjbGFzcz1cIi1tbC0yXCJcclxuICAgICAgY29sb3I9XCJzdWJ0bGVcIlxyXG4gICAgICBzaXplPVwic21cIlxyXG4gICAgICA6Y2xhc3M9XCJzaG93TWVudSA/ICchYmctaGlnaGxpZ2h0LTInIDogJydcIlxyXG4gICAgICBAY2xpY2s9XCJzaG93TWVudSA9ICFzaG93TWVudVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9maWx0ZXJzL2ZpbHRlci9Db25kaXRpb25TZWxlY3Rvci52dWU6MTQ6NVwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1mb3JlZ3JvdW5kLTIgZm9udC1tZWRpdW0gdGV4dC1ib2R5LTJ4c1wiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9maWx0ZXJzL2ZpbHRlci9Db25kaXRpb25TZWxlY3Rvci52dWU6MjE6N1wiPlxyXG4gICAgICAgIHt7IGdldENvbmRpdGlvbkxhYmVsKHByb3BzLmZpbHRlci5jb25kaXRpb24pIH19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvRm9ybUJ1dHRvbj5cclxuICA8L0xheW91dE1lbnU+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgdHlwZSB7XHJcbiAgRmlsdGVyQ29uZGl0aW9uLFxyXG4gIEZpbHRlckRhdGEsXHJcbiAgQ29uZGl0aW9uT3B0aW9uLFxyXG4gIE51bWVyaWNGaWx0ZXJEYXRhXHJcbn0gZnJvbSAnfi9saWIvdmlld2VyL2hlbHBlcnMvZmlsdGVycy90eXBlcydcclxuaW1wb3J0IHtcclxuICBnZXRDb25kaXRpb25zRm9yVHlwZSxcclxuICBnZXRDb25kaXRpb25MYWJlbFxyXG59IGZyb20gJ34vbGliL3ZpZXdlci9oZWxwZXJzL2ZpbHRlcnMvY29uc3RhbnRzJ1xyXG5pbXBvcnQge1xyXG4gIEZpbHRlclR5cGUsXHJcbiAgU3RyaW5nRmlsdGVyQ29uZGl0aW9uLFxyXG4gIE51bWVyaWNGaWx0ZXJDb25kaXRpb24sXHJcbiAgRXhpc3RlbmNlRmlsdGVyQ29uZGl0aW9uLFxyXG4gIGlzTnVtZXJpY0ZpbHRlclxyXG59IGZyb20gJ34vbGliL3ZpZXdlci9oZWxwZXJzL2ZpbHRlcnMvdHlwZXMnXHJcbmltcG9ydCB7IExheW91dE1lbnUsIEZvcm1CdXR0b24sIHR5cGUgTGF5b3V0TWVudUl0ZW0gfSBmcm9tICdAc3BlY2tsZS91aS1jb21wb25lbnRzJ1xyXG5cclxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczx7XHJcbiAgZmlsdGVyOiBGaWx0ZXJEYXRhXHJcbiAgbm9QYWRkaW5nPzogYm9vbGVhblxyXG59PigpXHJcblxyXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydzZWxlY3RDb25kaXRpb24nXSlcclxuXHJcbmNvbnN0IHNob3dNZW51ID0gcmVmKGZhbHNlKVxyXG5cclxuY29uc3QgaXNDb25kaXRpb25EaXNhYmxlZCA9IChjb25kaXRpb246IEZpbHRlckNvbmRpdGlvbik6IGJvb2xlYW4gPT4ge1xyXG4gIGlmICghaXNOdW1lcmljRmlsdGVyKHByb3BzLmZpbHRlcikpIHJldHVybiBmYWxzZVxyXG5cclxuICBjb25zdCBudW1lcmljRmlsdGVyID0gcHJvcHMuZmlsdGVyIGFzIE51bWVyaWNGaWx0ZXJEYXRhXHJcbiAgY29uc3QgaGFzUHJvYmxlbWF0aWNSYW5nZSA9XHJcbiAgICBudW1lcmljRmlsdGVyLmhhc0NvbnN0YW50VmFsdWUgfHwgbnVtZXJpY0ZpbHRlci5oYXNOZWFyWmVyb1JhbmdlXHJcblxyXG4gIGlmIChoYXNQcm9ibGVtYXRpY1JhbmdlKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBjb25kaXRpb24gPT09IE51bWVyaWNGaWx0ZXJDb25kaXRpb24uSXNCZXR3ZWVuIHx8XHJcbiAgICAgIGNvbmRpdGlvbiA9PT0gTnVtZXJpY0ZpbHRlckNvbmRpdGlvbi5Jc0dyZWF0ZXJUaGFuIHx8XHJcbiAgICAgIGNvbmRpdGlvbiA9PT0gTnVtZXJpY0ZpbHRlckNvbmRpdGlvbi5Jc0xlc3NUaGFuIHx8XHJcbiAgICAgIGNvbmRpdGlvbiA9PT0gTnVtZXJpY0ZpbHRlckNvbmRpdGlvbi5Jc0VxdWFsVG8gfHxcclxuICAgICAgY29uZGl0aW9uID09PSBOdW1lcmljRmlsdGVyQ29uZGl0aW9uLklzTm90RXF1YWxUb1xyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGZhbHNlXHJcbn1cclxuXHJcbmNvbnN0IGdldERpc2FibGVkUmVhc29uID0gKGNvbmRpdGlvbjogRmlsdGVyQ29uZGl0aW9uKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcclxuICBpZiAoIWlzQ29uZGl0aW9uRGlzYWJsZWQoY29uZGl0aW9uKSkgcmV0dXJuIHVuZGVmaW5lZFxyXG5cclxuICBpZiAoaXNOdW1lcmljRmlsdGVyKHByb3BzLmZpbHRlcikpIHtcclxuICAgIGNvbnN0IG51bWVyaWNGaWx0ZXIgPSBwcm9wcy5maWx0ZXIgYXMgTnVtZXJpY0ZpbHRlckRhdGFcclxuICAgIHJldHVybiBudW1lcmljRmlsdGVyLnJhbmdlRGlzYWJsZWRSZWFzb25cclxuICB9XHJcblxyXG4gIHJldHVybiB1bmRlZmluZWRcclxufVxyXG5cclxuY29uc3QgY29uZGl0aW9uT3B0aW9ucyA9IGNvbXB1dGVkPENvbmRpdGlvbk9wdGlvbltdPigoKSA9PiB7XHJcbiAgY29uc3QgYXZhaWxhYmxlQ29uZGl0aW9ucyA9IGdldENvbmRpdGlvbnNGb3JUeXBlKHByb3BzLmZpbHRlci50eXBlKVxyXG4gIHJldHVybiBhdmFpbGFibGVDb25kaXRpb25zLm1hcCgoY29uZGl0aW9uKSA9PiAoe1xyXG4gICAgdmFsdWU6IGNvbmRpdGlvbixcclxuICAgIGxhYmVsOiBnZXRDb25kaXRpb25MYWJlbChjb25kaXRpb24pXHJcbiAgfSkpXHJcbn0pXHJcblxyXG5jb25zdCBtZW51SXRlbXMgPSBjb21wdXRlZDxMYXlvdXRNZW51SXRlbVtdW10+KCgpID0+IHtcclxuICBpZiAocHJvcHMuZmlsdGVyLnR5cGUgPT09IEZpbHRlclR5cGUuU3RyaW5nKSB7XHJcbiAgICBjb25zdCBiYXNpY0NvbmRpdGlvbnMgPSBjb25kaXRpb25PcHRpb25zLnZhbHVlLmZpbHRlcihcclxuICAgICAgKG9wdGlvbikgPT5cclxuICAgICAgICBvcHRpb24udmFsdWUgPT09IFN0cmluZ0ZpbHRlckNvbmRpdGlvbi5JcyB8fFxyXG4gICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gU3RyaW5nRmlsdGVyQ29uZGl0aW9uLklzTm90XHJcbiAgICApXHJcbiAgICBjb25zdCBzcGVjaWFsQ29uZGl0aW9ucyA9IGNvbmRpdGlvbk9wdGlvbnMudmFsdWUuZmlsdGVyKFxyXG4gICAgICAob3B0aW9uKSA9PlxyXG4gICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gRXhpc3RlbmNlRmlsdGVyQ29uZGl0aW9uLklzU2V0IHx8XHJcbiAgICAgICAgb3B0aW9uLnZhbHVlID09PSBFeGlzdGVuY2VGaWx0ZXJDb25kaXRpb24uSXNOb3RTZXRcclxuICAgIClcclxuXHJcbiAgICByZXR1cm4gW1xyXG4gICAgICBiYXNpY0NvbmRpdGlvbnMubWFwKChjb25kaXRpb25PcHRpb24pID0+ICh7XHJcbiAgICAgICAgaWQ6IGNvbmRpdGlvbk9wdGlvbi52YWx1ZSxcclxuICAgICAgICB0aXRsZTogY29uZGl0aW9uT3B0aW9uLmxhYmVsLFxyXG4gICAgICAgIGFjdGl2ZTogY29uZGl0aW9uT3B0aW9uLnZhbHVlID09PSBwcm9wcy5maWx0ZXIuY29uZGl0aW9uLFxyXG4gICAgICAgIGRpc2FibGVkOiBpc0NvbmRpdGlvbkRpc2FibGVkKGNvbmRpdGlvbk9wdGlvbi52YWx1ZSksXHJcbiAgICAgICAgZGlzYWJsZWRUb29sdGlwOiBnZXREaXNhYmxlZFJlYXNvbihjb25kaXRpb25PcHRpb24udmFsdWUpXHJcbiAgICAgIH0pKSxcclxuICAgICAgc3BlY2lhbENvbmRpdGlvbnMubWFwKChjb25kaXRpb25PcHRpb24pID0+ICh7XHJcbiAgICAgICAgaWQ6IGNvbmRpdGlvbk9wdGlvbi52YWx1ZSxcclxuICAgICAgICB0aXRsZTogY29uZGl0aW9uT3B0aW9uLmxhYmVsLFxyXG4gICAgICAgIGFjdGl2ZTogY29uZGl0aW9uT3B0aW9uLnZhbHVlID09PSBwcm9wcy5maWx0ZXIuY29uZGl0aW9uLFxyXG4gICAgICAgIGRpc2FibGVkOiBpc0NvbmRpdGlvbkRpc2FibGVkKGNvbmRpdGlvbk9wdGlvbi52YWx1ZSksXHJcbiAgICAgICAgZGlzYWJsZWRUb29sdGlwOiBnZXREaXNhYmxlZFJlYXNvbihjb25kaXRpb25PcHRpb24udmFsdWUpXHJcbiAgICAgIH0pKVxyXG4gICAgXVxyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25zdCBiYXNpY0NvbmRpdGlvbnMgPSBjb25kaXRpb25PcHRpb25zLnZhbHVlLmZpbHRlcihcclxuICAgICAgKG9wdGlvbikgPT5cclxuICAgICAgICBvcHRpb24udmFsdWUgPT09IE51bWVyaWNGaWx0ZXJDb25kaXRpb24uSXNFcXVhbFRvIHx8XHJcbiAgICAgICAgb3B0aW9uLnZhbHVlID09PSBOdW1lcmljRmlsdGVyQ29uZGl0aW9uLklzTm90RXF1YWxUbyB8fFxyXG4gICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gTnVtZXJpY0ZpbHRlckNvbmRpdGlvbi5Jc0dyZWF0ZXJUaGFuIHx8XHJcbiAgICAgICAgb3B0aW9uLnZhbHVlID09PSBOdW1lcmljRmlsdGVyQ29uZGl0aW9uLklzTGVzc1RoYW4gfHxcclxuICAgICAgICBvcHRpb24udmFsdWUgPT09IE51bWVyaWNGaWx0ZXJDb25kaXRpb24uSXNCZXR3ZWVuXHJcbiAgICApXHJcbiAgICBjb25zdCBzcGVjaWFsQ29uZGl0aW9ucyA9IGNvbmRpdGlvbk9wdGlvbnMudmFsdWUuZmlsdGVyKFxyXG4gICAgICAob3B0aW9uKSA9PlxyXG4gICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gRXhpc3RlbmNlRmlsdGVyQ29uZGl0aW9uLklzU2V0IHx8XHJcbiAgICAgICAgb3B0aW9uLnZhbHVlID09PSBFeGlzdGVuY2VGaWx0ZXJDb25kaXRpb24uSXNOb3RTZXRcclxuICAgIClcclxuXHJcbiAgICByZXR1cm4gW1xyXG4gICAgICBiYXNpY0NvbmRpdGlvbnMubWFwKChjb25kaXRpb25PcHRpb24pID0+ICh7XHJcbiAgICAgICAgaWQ6IGNvbmRpdGlvbk9wdGlvbi52YWx1ZSxcclxuICAgICAgICB0aXRsZTogY29uZGl0aW9uT3B0aW9uLmxhYmVsLFxyXG4gICAgICAgIGFjdGl2ZTogY29uZGl0aW9uT3B0aW9uLnZhbHVlID09PSBwcm9wcy5maWx0ZXIuY29uZGl0aW9uLFxyXG4gICAgICAgIGRpc2FibGVkOiBpc0NvbmRpdGlvbkRpc2FibGVkKGNvbmRpdGlvbk9wdGlvbi52YWx1ZSksXHJcbiAgICAgICAgZGlzYWJsZWRUb29sdGlwOiBnZXREaXNhYmxlZFJlYXNvbihjb25kaXRpb25PcHRpb24udmFsdWUpXHJcbiAgICAgIH0pKSxcclxuICAgICAgc3BlY2lhbENvbmRpdGlvbnMubWFwKChjb25kaXRpb25PcHRpb24pID0+ICh7XHJcbiAgICAgICAgaWQ6IGNvbmRpdGlvbk9wdGlvbi52YWx1ZSxcclxuICAgICAgICB0aXRsZTogY29uZGl0aW9uT3B0aW9uLmxhYmVsLFxyXG4gICAgICAgIGFjdGl2ZTogY29uZGl0aW9uT3B0aW9uLnZhbHVlID09PSBwcm9wcy5maWx0ZXIuY29uZGl0aW9uLFxyXG4gICAgICAgIGRpc2FibGVkOiBpc0NvbmRpdGlvbkRpc2FibGVkKGNvbmRpdGlvbk9wdGlvbi52YWx1ZSksXHJcbiAgICAgICAgZGlzYWJsZWRUb29sdGlwOiBnZXREaXNhYmxlZFJlYXNvbihjb25kaXRpb25PcHRpb24udmFsdWUpXHJcbiAgICAgIH0pKVxyXG4gICAgXVxyXG4gIH1cclxufSlcclxuXHJcbmNvbnN0IG9uQ29uZGl0aW9uQ2hvc2VuID0gKHsgaXRlbSB9OiB7IGl0ZW06IExheW91dE1lbnVJdGVtIH0pID0+IHtcclxuICBpZiAoaXRlbS5kaXNhYmxlZCkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG5cclxuICBlbWl0KCdzZWxlY3RDb25kaXRpb24nLCB7IHZhbHVlOiBpdGVtLmlkIH0pXHJcbiAgc2hvd01lbnUudmFsdWUgPSBmYWxzZVxyXG59XHJcbjwvc2NyaXB0PlxyXG4iXSwiZmlsZSI6IkQ6L3NwZWNrbGUtc2VydmVyL3BhY2thZ2VzL2Zyb250ZW5kLTIvY29tcG9uZW50cy92aWV3ZXIvZmlsdGVycy9maWx0ZXIvQ29uZGl0aW9uU2VsZWN0b3IudnVlIn0=