287 lines
25 KiB
Plaintext
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 |