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

287 lines
25 KiB
Plaintext

import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/viewer/measurements/Menu.vue");import { default as __nuxt_component_0 } from "/_nuxt/components/viewer/measurements/UnitSelect.vue";
import { FormRange as __nuxt_component_1 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js";
import { FormCheckbox as __nuxt_component_2 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js";
import { default as __nuxt_component_3 } from "/_nuxt/components/viewer/layout/Panel.vue";
import { default as __nuxt_component_4 } from "/_nuxt/components/viewer/button-group/Button.vue";
import { default as __nuxt_component_5 } from "/_nuxt/components/viewer/button-group/ButtonGroup.vue";
import { FormButton as __nuxt_component_6 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js";
import { default as __nuxt_component_7 } from "/_nuxt/components/global/icon/viewer/Settings.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 { MeasurementType } from "/_nuxt/@fs/D:/speckle-server/packages/shared/dist/esm/viewer/helpers/state.js";
import { useMeasurementUtilities } from "/_nuxt/lib/viewer/composables/ui.ts";
import { useSmartTooltipDelay } from "/_nuxt/composables/tooltips.ts";
import { ref } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
const _sfc_main = /* @__PURE__ */ _defineComponent({
__name: "ViewerMeasurementsMenu",
setup(__props, { expose: __expose }) {
__expose();
const { measurementOptions, setMeasurementOptions, clearMeasurements } = useMeasurementUtilities();
const { getTooltipProps } = useSmartTooltipDelay();
const showSettings = ref(false);
const updateMeasurementsType = (selectedOption) => {
setMeasurementOptions({
...measurementOptions.value,
type: selectedOption.value
});
};
const onChangeMeasurementUnits = (newUnit) => {
setMeasurementOptions({
...measurementOptions.value,
units: newUnit
});
};
const toggleMeasurementsChaining = () => {
setMeasurementOptions({
...measurementOptions.value,
chain: !measurementOptions.value.chain
});
};
const toggleMeasurementsSnap = () => {
setMeasurementOptions({
...measurementOptions.value,
vertexSnap: !measurementOptions.value.vertexSnap
});
};
const measurementTypeOptions = [
{
title: "Point to Point",
icon: "IconMeasurePointToPoint",
value: MeasurementType.POINTTOPOINT,
description: "Measure between two points"
},
{
title: "Perpendicular",
icon: "IconMeasurePerpendicular",
value: MeasurementType.PERPENDICULAR,
description: "Measure at a 90° angle"
},
{
title: "Area",
icon: "IconMeasureArea",
value: MeasurementType.AREA,
description: "Measure area between points"
},
{
title: "Point coordinates",
icon: "IconMeasurePoint",
value: MeasurementType.POINT,
description: "Measure XYZ coordinates"
}
];
const __returned__ = { measurementOptions, setMeasurementOptions, clearMeasurements, getTooltipProps, showSettings, updateMeasurementsType, onChangeMeasurementUnits, toggleMeasurementsChaining, toggleMeasurementsSnap, measurementTypeOptions };
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
return __returned__;
}
});
import { resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, resolveDynamicComponent as _resolveDynamicComponent, resolveDirective as _resolveDirective, withDirectives as _withDirectives, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
const _hoisted_1 = { "data-v-inspector": "components/viewer/measurements/Menu.vue:2:3" };
const _hoisted_2 = {
class: "flex flex-col gap-1.5",
"data-v-inspector": "components/viewer/measurements/Menu.vue:4:7"
};
const _hoisted_3 = {
class: "flex flex-col gap-1.5 py-3",
"data-v-inspector": "components/viewer/measurements/Menu.vue:13:7"
};
const _hoisted_4 = {
class: "flex flex-col gap-1.5 pb-1",
"data-v-inspector": "components/viewer/measurements/Menu.vue:24:7"
};
const _hoisted_5 = {
class: "flex gap-2 justify-between items-center",
"data-v-inspector": "components/viewer/measurements/Menu.vue:43:7"
};
const _hoisted_6 = {
class: "flex gap-1.5",
"data-v-inspector": "components/viewer/measurements/Menu.vue:57:9"
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_ViewerMeasurementsUnitSelect = __nuxt_component_0;
const _component_FormRange = __nuxt_component_1;
const _component_FormCheckbox = __nuxt_component_2;
const _component_ViewerLayoutPanel = __nuxt_component_3;
const _component_ViewerButtonGroupButton = __nuxt_component_4;
const _component_ViewerButtonGroup = __nuxt_component_5;
const _component_FormButton = __nuxt_component_6;
const _component_IconViewerSettings = __nuxt_component_7;
const _directive_tippy = _resolveDirective("tippy");
return _openBlock(), _createElementBlock("div", _hoisted_1, [
$setup.showSettings ? (_openBlock(), _createBlock(_component_ViewerLayoutPanel, {
key: 0,
class: "p-3 pb-2",
"data-v-inspector": "components/viewer/measurements/Menu.vue:3:5"
}, {
default: _withCtx(() => [
_createElementVNode("span", _hoisted_2, [
_cache[3] || (_cache[3] = _createElementVNode(
"label",
{
class: "text-body-2xs",
for: "units",
"data-v-inspector": "components/viewer/measurements/Menu.vue:5:9"
},
"Units",
-1
/* CACHED */
)),
_createVNode(_component_ViewerMeasurementsUnitSelect, {
modelValue: $setup.measurementOptions.units,
"onUpdate:modelValue": [
_cache[0] || (_cache[0] = ($event) => $setup.measurementOptions.units = $event),
$setup.onChangeMeasurementUnits
],
"mount-menu-on-body": "",
"data-v-inspector": "components/viewer/measurements/Menu.vue:6:9"
}, null, 8, ["modelValue"])
]),
_createElementVNode("span", _hoisted_3, [
_createVNode(_component_FormRange, {
modelValue: $setup.measurementOptions.precision,
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => $setup.measurementOptions.precision = $event),
name: "precision",
label: "Precision",
min: 1,
max: 5,
step: 1,
"data-v-inspector": "components/viewer/measurements/Menu.vue:14:9"
}, null, 8, ["modelValue"])
]),
_createElementVNode("div", _hoisted_4, [
_createVNode(_component_FormCheckbox, {
name: "Chain measurements",
"label-position": "right",
"label-classes": "text-body-2xs font-normal",
"model-value": $setup.measurementOptions.chain,
"onUpdate:modelValue": $setup.toggleMeasurementsChaining,
"data-v-inspector": "components/viewer/measurements/Menu.vue:25:9"
}, null, 8, ["model-value"]),
_createVNode(_component_FormCheckbox, {
name: "Snap to vertices",
"label-position": "right",
"label-classes": "text-body-2xs font-normal",
"model-value": $setup.measurementOptions.vertexSnap,
"onUpdate:modelValue": $setup.toggleMeasurementsSnap,
"data-v-inspector": "components/viewer/measurements/Menu.vue:33:9"
}, null, 8, ["model-value"])
])
]),
_: 1
/* STABLE */
})) : _createCommentVNode("v-if", true),
_createVNode(_component_ViewerLayoutPanel, {
class: "mt-1 p-1 pr-2",
"data-v-inspector": "components/viewer/measurements/Menu.vue:42:5"
}, {
default: _withCtx(() => [
_createElementVNode("div", _hoisted_5, [
_createVNode(_component_ViewerButtonGroup, { "data-v-inspector": "components/viewer/measurements/Menu.vue:44:9" }, {
default: _withCtx(() => [
(_openBlock(), _createElementBlock(
_Fragment,
null,
_renderList($setup.measurementTypeOptions, (option) => {
return _withDirectives(_createVNode(_component_ViewerButtonGroupButton, {
key: option.value,
class: "size-8",
"is-active": $setup.measurementOptions.type === option.value,
onClick: ($event) => $setup.updateMeasurementsType(option),
"data-v-inspector": "components/viewer/measurements/Menu.vue:45:11"
}, {
default: _withCtx(() => [
(_openBlock(), _createBlock(_resolveDynamicComponent(option.icon), {
class: "size-5 flex-shrink-0",
"data-v-inspector": "components/viewer/measurements/Menu.vue:53:13"
}))
]),
_: 2
/* DYNAMIC */
}, 1032, ["is-active", "onClick"]), [
[_directive_tippy, $setup.getTooltipProps(option.title)]
]);
}),
64
/* STABLE_FRAGMENT */
))
]),
_: 1
/* STABLE */
}),
_createElementVNode("div", _hoisted_6, [
_createVNode(_component_FormButton, {
size: "sm",
color: "outline",
tabindex: "-1",
onClick: $setup.clearMeasurements,
"data-v-inspector": "components/viewer/measurements/Menu.vue:58:11"
}, {
default: _withCtx(() => [..._cache[4] || (_cache[4] = [
_createTextVNode(
" Delete all ",
-1
/* CACHED */
)
])]),
_: 1
/* STABLE */
}, 8, ["onClick"]),
_createElementVNode(
"button",
{
class: _normalizeClass(["size-6 flex items-center justify-center rounded-md", [
$setup.showSettings && "text-primary-focus bg-info-lighter dark:text-foreground-on-primary",
!$setup.showSettings && "text-foreground hover:bg-foundation-2"
]]),
onClick: _cache[2] || (_cache[2] = ($event) => $setup.showSettings = !$setup.showSettings),
"data-v-inspector": "components/viewer/measurements/Menu.vue:66:11"
},
[
_createVNode(_component_IconViewerSettings, {
class: "size-4",
"data-v-inspector": "components/viewer/measurements/Menu.vue:75:13"
})
],
2
/* CLASS */
)
])
])
]),
_: 1
/* STABLE */
})
]);
}
_sfc_main.__hmrId = "d90d9b87";
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/measurements/Menu.vue"]]);
//# sourceMappingURL=data:application/json;base64,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QkFUUCxPQUFLLGlCQUFDLHNEQUFvRDtBQUFBLGtCQUNqQzttQkFBdUgsdUJBQVk7QUFBQTtnQkFLM0osU0FBSyxzQ0FBRSxzQkFBWSxDQUFJO0FBQUEsZ0JBQWMsb0JBQWlCO0FBQUE7O2dCQUV2RCxhQUFzRztBQUFBLGtCQUFsRixPQUFNO0FBQUEsa0JBQVMsb0JBQWlCO0FBQUEiLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VzIjpbIk1lbnUudnVlIl0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuICA8ZGl2IGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9tZWFzdXJlbWVudHMvTWVudS52dWU6MjozXCI+XHJcbiAgICA8Vmlld2VyTGF5b3V0UGFuZWwgdi1pZj1cInNob3dTZXR0aW5nc1wiIGNsYXNzPVwicC0zIHBiLTJcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvbWVhc3VyZW1lbnRzL01lbnUudnVlOjM6NVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTEuNVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9tZWFzdXJlbWVudHMvTWVudS52dWU6NDo3XCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC1ib2R5LTJ4c1wiIGZvcj1cInVuaXRzXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL21lYXN1cmVtZW50cy9NZW51LnZ1ZTo1OjlcIj5Vbml0czwvbGFiZWw+XHJcbiAgICAgICAgPFZpZXdlck1lYXN1cmVtZW50c1VuaXRTZWxlY3RcclxuICAgICAgICAgIHYtbW9kZWw9XCJtZWFzdXJlbWVudE9wdGlvbnMudW5pdHNcIlxyXG4gICAgICAgICAgbW91bnQtbWVudS1vbi1ib2R5XHJcbiAgICAgICAgICBAdXBkYXRlOm1vZGVsLXZhbHVlPVwib25DaGFuZ2VNZWFzdXJlbWVudFVuaXRzXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL21lYXN1cmVtZW50cy9NZW51LnZ1ZTo2OjlcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMS41IHB5LTNcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvbWVhc3VyZW1lbnRzL01lbnUudnVlOjEzOjdcIj5cclxuICAgICAgICA8Rm9ybVJhbmdlXHJcbiAgICAgICAgICB2LW1vZGVsPVwibWVhc3VyZW1lbnRPcHRpb25zLnByZWNpc2lvblwiXHJcbiAgICAgICAgICBuYW1lPVwicHJlY2lzaW9uXCJcclxuICAgICAgICAgIGxhYmVsPVwiUHJlY2lzaW9uXCJcclxuICAgICAgICAgIDptaW49XCIxXCJcclxuICAgICAgICAgIDptYXg9XCI1XCJcclxuICAgICAgICAgIDpzdGVwPVwiMVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9tZWFzdXJlbWVudHMvTWVudS52dWU6MTQ6OVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTEuNSBwYi0xXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL21lYXN1cmVtZW50cy9NZW51LnZ1ZToyNDo3XCI+XHJcbiAgICAgICAgPEZvcm1DaGVja2JveFxyXG4gICAgICAgICAgbmFtZT1cIkNoYWluIG1lYXN1cmVtZW50c1wiXHJcbiAgICAgICAgICBsYWJlbC1wb3NpdGlvbj1cInJpZ2h0XCJcclxuICAgICAgICAgIGxhYmVsLWNsYXNzZXM9XCJ0ZXh0LWJvZHktMnhzIGZvbnQtbm9ybWFsXCJcclxuICAgICAgICAgIDptb2RlbC12YWx1ZT1cIm1lYXN1cmVtZW50T3B0aW9ucy5jaGFpblwiXHJcbiAgICAgICAgICBAdXBkYXRlOm1vZGVsLXZhbHVlPVwidG9nZ2xlTWVhc3VyZW1lbnRzQ2hhaW5pbmdcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvbWVhc3VyZW1lbnRzL01lbnUudnVlOjI1OjlcIlxyXG4gICAgICAgIC8+XHJcblxyXG4gICAgICAgIDxGb3JtQ2hlY2tib3hcclxuICAgICAgICAgIG5hbWU9XCJTbmFwIHRvIHZlcnRpY2VzXCJcclxuICAgICAgICAgIGxhYmVsLXBvc2l0aW9uPVwicmlnaHRcIlxyXG4gICAgICAgICAgbGFiZWwtY2xhc3Nlcz1cInRleHQtYm9keS0yeHMgZm9udC1ub3JtYWxcIlxyXG4gICAgICAgICAgOm1vZGVsLXZhbHVlPVwibWVhc3VyZW1lbnRPcHRpb25zLnZlcnRleFNuYXBcIlxyXG4gICAgICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cInRvZ2dsZU1lYXN1cmVtZW50c1NuYXBcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvbWVhc3VyZW1lbnRzL01lbnUudnVlOjMzOjlcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9WaWV3ZXJMYXlvdXRQYW5lbD5cclxuICAgIDxWaWV3ZXJMYXlvdXRQYW5lbCBjbGFzcz1cIm10LTEgcC0xIHByLTJcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvbWVhc3VyZW1lbnRzL01lbnUudnVlOjQyOjVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTIganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlclwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9tZWFzdXJlbWVudHMvTWVudS52dWU6NDM6N1wiPlxyXG4gICAgICAgIDxWaWV3ZXJCdXR0b25Hcm91cCBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvbWVhc3VyZW1lbnRzL01lbnUudnVlOjQ0OjlcIj5cclxuICAgICAgICAgIDxWaWV3ZXJCdXR0b25Hcm91cEJ1dHRvblxyXG4gICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiBtZWFzdXJlbWVudFR5cGVPcHRpb25zXCJcclxuICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXHJcbiAgICAgICAgICAgIHYtdGlwcHk9XCJnZXRUb29sdGlwUHJvcHMob3B0aW9uLnRpdGxlKVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic2l6ZS04XCJcclxuICAgICAgICAgICAgOmlzLWFjdGl2ZT1cIm1lYXN1cmVtZW50T3B0aW9ucy50eXBlID09PSBvcHRpb24udmFsdWVcIlxyXG4gICAgICAgICAgICBAY2xpY2s9XCJ1cGRhdGVNZWFzdXJlbWVudHNUeXBlKG9wdGlvbilcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvbWVhc3VyZW1lbnRzL01lbnUudnVlOjQ1OjExXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJvcHRpb24uaWNvblwiIGNsYXNzPVwic2l6ZS01IGZsZXgtc2hyaW5rLTBcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvbWVhc3VyZW1lbnRzL01lbnUudnVlOjUzOjEzXCIgLz5cclxuICAgICAgICAgIDwvVmlld2VyQnV0dG9uR3JvdXBCdXR0b24+XHJcbiAgICAgICAgPC9WaWV3ZXJCdXR0b25Hcm91cD5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTEuNVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9tZWFzdXJlbWVudHMvTWVudS52dWU6NTc6OVwiPlxyXG4gICAgICAgICAgPEZvcm1CdXR0b25cclxuICAgICAgICAgICAgc2l6ZT1cInNtXCJcclxuICAgICAgICAgICAgY29sb3I9XCJvdXRsaW5lXCJcclxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXHJcbiAgICAgICAgICAgIEBjbGljaz1cImNsZWFyTWVhc3VyZW1lbnRzXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL21lYXN1cmVtZW50cy9NZW51LnZ1ZTo1ODoxMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIERlbGV0ZSBhbGxcclxuICAgICAgICAgIDwvRm9ybUJ1dHRvbj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJzaXplLTYgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1tZFwiXHJcbiAgICAgICAgICAgIDpjbGFzcz1cIltcclxuICAgICAgICAgICAgICBzaG93U2V0dGluZ3MgJiZcclxuICAgICAgICAgICAgICAgICd0ZXh0LXByaW1hcnktZm9jdXMgYmctaW5mby1saWdodGVyIGRhcms6dGV4dC1mb3JlZ3JvdW5kLW9uLXByaW1hcnknLFxyXG4gICAgICAgICAgICAgICFzaG93U2V0dGluZ3MgJiYgJ3RleHQtZm9yZWdyb3VuZCBob3ZlcjpiZy1mb3VuZGF0aW9uLTInXHJcbiAgICAgICAgICAgIF1cIlxyXG4gICAgICAgICAgICBAY2xpY2s9XCJzaG93U2V0dGluZ3MgPSAhc2hvd1NldHRpbmdzXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL21lYXN1cmVtZW50cy9NZW51LnZ1ZTo2NjoxMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxJY29uVmlld2VyU2V0dGluZ3MgY2xhc3M9XCJzaXplLTRcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvbWVhc3VyZW1lbnRzL01lbnUudnVlOjc1OjEzXCIgLz5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvVmlld2VyTGF5b3V0UGFuZWw+XHJcbiAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgeyBNZWFzdXJlbWVudFR5cGUgfSBmcm9tICdAc3BlY2tsZS9zaGFyZWQvdmlld2VyL3N0YXRlJ1xyXG5pbXBvcnQgeyB1c2VNZWFzdXJlbWVudFV0aWxpdGllcyB9IGZyb20gJ35+L2xpYi92aWV3ZXIvY29tcG9zYWJsZXMvdWknXHJcblxyXG5pbnRlcmZhY2UgTWVhc3VyZW1lbnRUeXBlT3B0aW9uIHtcclxuICB0aXRsZTogc3RyaW5nXHJcbiAgdmFsdWU6IE1lYXN1cmVtZW50VHlwZVxyXG59XHJcblxyXG5jb25zdCB7IG1lYXN1cmVtZW50T3B0aW9ucywgc2V0TWVhc3VyZW1lbnRPcHRpb25zLCBjbGVhck1lYXN1cmVtZW50cyB9ID1cclxuICB1c2VNZWFzdXJlbWVudFV0aWxpdGllcygpXHJcbmNvbnN0IHsgZ2V0VG9vbHRpcFByb3BzIH0gPSB1c2VTbWFydFRvb2x0aXBEZWxheSgpXHJcblxyXG5jb25zdCBzaG93U2V0dGluZ3MgPSByZWYoZmFsc2UpXHJcblxyXG5jb25zdCB1cGRhdGVNZWFzdXJlbWVudHNUeXBlID0gKHNlbGVjdGVkT3B0aW9uOiBNZWFzdXJlbWVudFR5cGVPcHRpb24pID0+IHtcclxuICBzZXRNZWFzdXJlbWVudE9wdGlvbnMoe1xyXG4gICAgLi4ubWVhc3VyZW1lbnRPcHRpb25zLnZhbHVlLFxyXG4gICAgdHlwZTogc2VsZWN0ZWRPcHRpb24udmFsdWVcclxuICB9KVxyXG59XHJcblxyXG5jb25zdCBvbkNoYW5nZU1lYXN1cmVtZW50VW5pdHMgPSAobmV3VW5pdDogc3RyaW5nKSA9PiB7XHJcbiAgc2V0TWVhc3VyZW1lbnRPcHRpb25zKHtcclxuICAgIC4uLm1lYXN1cmVtZW50T3B0aW9ucy52YWx1ZSxcclxuICAgIHVuaXRzOiBuZXdVbml0XHJcbiAgfSlcclxufVxyXG5cclxuY29uc3QgdG9nZ2xlTWVhc3VyZW1lbnRzQ2hhaW5pbmcgPSAoKSA9PiB7XHJcbiAgc2V0TWVhc3VyZW1lbnRPcHRpb25zKHtcclxuICAgIC4uLm1lYXN1cmVtZW50T3B0aW9ucy52YWx1ZSxcclxuICAgIGNoYWluOiAhbWVhc3VyZW1lbnRPcHRpb25zLnZhbHVlLmNoYWluXHJcbiAgfSlcclxufVxyXG5cclxuY29uc3QgdG9nZ2xlTWVhc3VyZW1lbnRzU25hcCA9ICgpID0+IHtcclxuICBzZXRNZWFzdXJlbWVudE9wdGlvbnMoe1xyXG4gICAgLi4ubWVhc3VyZW1lbnRPcHRpb25zLnZhbHVlLFxyXG4gICAgdmVydGV4U25hcDogIW1lYXN1cmVtZW50T3B0aW9ucy52YWx1ZS52ZXJ0ZXhTbmFwXHJcbiAgfSlcclxufVxyXG5cclxuY29uc3QgbWVhc3VyZW1lbnRUeXBlT3B0aW9ucyA9IFtcclxuICB7XHJcbiAgICB0aXRsZTogJ1BvaW50IHRvIFBvaW50JyxcclxuICAgIGljb246ICdJY29uTWVhc3VyZVBvaW50VG9Qb2ludCcsXHJcbiAgICB2YWx1ZTogTWVhc3VyZW1lbnRUeXBlLlBPSU5UVE9QT0lOVCxcclxuICAgIGRlc2NyaXB0aW9uOiAnTWVhc3VyZSBiZXR3ZWVuIHR3byBwb2ludHMnXHJcbiAgfSxcclxuICB7XHJcbiAgICB0aXRsZTogJ1BlcnBlbmRpY3VsYXInLFxyXG4gICAgaWNvbjogJ0ljb25NZWFzdXJlUGVycGVuZGljdWxhcicsXHJcbiAgICB2YWx1ZTogTWVhc3VyZW1lbnRUeXBlLlBFUlBFTkRJQ1VMQVIsXHJcbiAgICBkZXNjcmlwdGlvbjogJ01lYXN1cmUgYXQgYSA5MMKwIGFuZ2xlJ1xyXG4gIH0sXHJcbiAge1xyXG4gICAgdGl0bGU6ICdBcmVhJyxcclxuICAgIGljb246ICdJY29uTWVhc3VyZUFyZWEnLFxyXG4gICAgdmFsdWU6IE1lYXN1cmVtZW50VHlwZS5BUkVBLFxyXG4gICAgZGVzY3JpcHRpb246ICdNZWFzdXJlIGFyZWEgYmV0d2VlbiBwb2ludHMnXHJcbiAgfSxcclxuICB7XHJcbiAgICB0aXRsZTogJ1BvaW50IGNvb3JkaW5hdGVzJyxcclxuICAgIGljb246ICdJY29uTWVhc3VyZVBvaW50JyxcclxuICAgIHZhbHVlOiBNZWFzdXJlbWVudFR5cGUuUE9JTlQsXHJcbiAgICBkZXNjcmlwdGlvbjogJ01lYXN1cmUgWFlaIGNvb3JkaW5hdGVzJ1xyXG4gIH1cclxuXVxyXG48L3NjcmlwdD5cclxuIl0sImZpbGUiOiJEOi9zcGVja2xlLXNlcnZlci9wYWNrYWdlcy9mcm9udGVuZC0yL2NvbXBvbmVudHMvdmlld2VyL21lYXN1cmVtZW50cy9NZW51LnZ1ZSJ9