import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/form/select/Users.vue");import { UserAvatar as __nuxt_component_0 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js"; import { FormSelectBase as __nuxt_component_1 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js"; /* Injection by vite-plugin-vue-inspector Start */ import { createElementBlock as __createElementBlock,createBlock as __createBlock,createElementVNode as __createElementVNode,createVNode as __createVNode } 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 _createElementBlock(...args) { return _interopVNode(__createElementBlock(...args)) } function _createBlock(...args) { return _interopVNode(__createBlock(...args)) } function _createElementVNode(...args) { return _interopVNode(__createElementVNode(...args)) } function _createVNode(...args) { return _interopVNode(__createVNode(...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 { graphql } from "/_nuxt/lib/common/generated/gql/index.ts"; import { useFormSelectChildInternals } from "/_nuxt/lib/form/composables/select.ts"; import { ref, useId, toRefs } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"; const _sfc_main = /* @__PURE__ */ _defineComponent({ __name: "FormSelectUsers", props: { /** * Whether to allow selecting multiple users */ multiple: { type: Boolean, default: false }, users: { type: Array, required: true }, modelValue: { type: [Object, Array], default: void 0 }, /** * Whether to allow filtering users through a search box */ search: { type: Boolean, default: false }, /** * Search placeholder text */ searchPlaceholder: { type: String, default: "Search people" }, selectorPlaceholder: { type: String, default: "" }, /** * Label is required at the very least for screen-readers */ label: { type: String, required: true }, /** * Whether to show the label visually */ showLabel: { type: Boolean, default: false }, name: { type: String, default: void 0 } }, emits: ["update:modelValue"], setup(__props, { expose: __expose, emit: __emit }) { __expose(); graphql(` fragment FormUsersSelectItem on LimitedUser { id name avatar } `); const emit = __emit; const props = __props; const elementToWatchForChanges = ref(null); const itemContainer = ref(null); const labelId = useId(); const buttonId = useId(); const { selectedValue, hiddenSelectedItemCount, isArrayValue, isMultiItemArrayValue } = useFormSelectChildInternals({ props: toRefs(props), emit, dynamicVisibility: { elementToWatchForChanges, itemContainer } }); const searchFilterPredicate = (i, search) => i.name.toLocaleLowerCase().includes(search.toLocaleLowerCase()); const __returned__ = { emit, props, elementToWatchForChanges, itemContainer, labelId, buttonId, selectedValue, hiddenSelectedItemCount, isArrayValue, isMultiItemArrayValue, searchFilterPredicate }; Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true }); return __returned__; } }); import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, Fragment as _Fragment, openBlock as _openBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, resolveComponent as _resolveComponent, withCtx as _withCtx } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"; const _hoisted_1 = { key: 0, ref: "elementToWatchForChanges", class: "flex items-center space-x-0.5", "data-v-inspector": "components/form/select/Users.vue:26:9" }; const _hoisted_2 = { ref: "itemContainer", class: "flex flex-wrap overflow-hidden space-x-0.5 h-6", "data-v-inspector": "components/form/select/Users.vue:27:11" }; const _hoisted_3 = { key: 0, class: "text-foreground-2 normal", "data-v-inspector": "components/form/select/Users.vue:39:11" }; const _hoisted_4 = { key: 1, class: "flex items-center overflow-hidden", "data-v-inspector": "components/form/select/Users.vue:45:9" }; const _hoisted_5 = { class: "truncate label label--light min-w-0", "data-v-inspector": "components/form/select/Users.vue:52:11" }; const _hoisted_6 = { class: "flex items-center", "data-v-inspector": "components/form/select/Users.vue:59:7" }; const _hoisted_7 = { class: "truncate text-body-2xs", "data-v-inspector": "components/form/select/Users.vue:61:9" }; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { const _component_UserAvatar = __nuxt_component_0; const _component_FormSelectBase = __nuxt_component_1; return _openBlock(), _createBlock(_component_FormSelectBase, { modelValue: $setup.selectedValue, "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $setup.selectedValue = $event), multiple: $props.multiple, items: $props.users, search: $props.search, "filter-predicate": $setup.searchFilterPredicate, "search-placeholder": $props.searchPlaceholder, label: $props.label, "show-label": $props.showLabel, name: $props.name || "users", "label-id": $setup.labelId, "button-id": $setup.buttonId, by: "id", "data-v-inspector": "components/form/select/Users.vue:2:3" }, { "nothing-selected": _withCtx(() => [ $props.selectorPlaceholder ? (_openBlock(), _createElementBlock( _Fragment, { key: 0 }, [ _createTextVNode( _toDisplayString($props.selectorPlaceholder), 1 /* TEXT */ ) ], 64 /* STABLE_FRAGMENT */ )) : (_openBlock(), _createElementBlock( _Fragment, { key: 1 }, [ _createTextVNode( _toDisplayString($props.multiple ? "Select users" : "Select a user"), 1 /* TEXT */ ) ], 64 /* STABLE_FRAGMENT */ )) ]), "something-selected": _withCtx(({ value }) => [ $setup.isMultiItemArrayValue(value) ? (_openBlock(), _createElementBlock( "div", _hoisted_1, [ _createElementVNode( "div", _hoisted_2, [ (_openBlock(true), _createElementBlock( _Fragment, null, _renderList(value, (user) => { return _openBlock(), _createBlock(_component_UserAvatar, { key: user.id, user, "no-border": "", size: "xs", "data-v-inspector": "components/form/select/Users.vue:31:13" }, null, 8, ["user"]); }), 128 /* KEYED_FRAGMENT */ )) ], 512 /* NEED_PATCH */ ), $setup.hiddenSelectedItemCount > 0 ? (_openBlock(), _createElementBlock( "div", _hoisted_3, " +" + _toDisplayString($setup.hiddenSelectedItemCount), 1 /* TEXT */ )) : _createCommentVNode("v-if", true) ], 512 /* NEED_PATCH */ )) : (_openBlock(), _createElementBlock("div", _hoisted_4, [ _createVNode(_component_UserAvatar, { user: $setup.isArrayValue(value) ? value[0] : value, "no-border": "", class: "mr-2", size: "xs", "data-v-inspector": "components/form/select/Users.vue:46:11" }, null, 8, ["user"]), _createElementVNode( "span", _hoisted_5, _toDisplayString(($setup.isArrayValue(value) ? value[0] : value).name), 1 /* TEXT */ ) ])) ]), option: _withCtx(({ item }) => [ _createElementVNode("div", _hoisted_6, [ _createVNode(_component_UserAvatar, { user: item, "no-border": "", class: "mr-2", size: "sm", "data-v-inspector": "components/form/select/Users.vue:60:9" }, null, 8, ["user"]), _createElementVNode( "span", _hoisted_7, _toDisplayString(item.name), 1 /* TEXT */ ) ]) ]), _: 1 /* STABLE */ }, 8, ["modelValue", "multiple", "items", "search", "search-placeholder", "label", "show-label", "name", "label-id", "button-id"]); } _sfc_main.__hmrId = "06f6c376"; 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/form/select/Users.vue"]]); //# sourceMappingURL=data:application/json;base64,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QTtBQUFBO0FBQUE7QUFBQTs7SUFLN0MsUUFBTSxTQUNmLENBR00sRUFKYSxLQUFJO0FBQUEsTUFDdkIsb0JBR00sT0FITixZQUdNO0FBQUEsUUFGSixhQUFxSDtBQUFBLFVBQXhHLE1BQU07QUFBQSxVQUFNO0FBQUEsVUFBVSxPQUFNO0FBQUEsVUFBTyxNQUFLO0FBQUEsVUFBSyxvQkFBaUI7QUFBQTtRQUMzRTtBQUFBLFVBQW9IO0FBQUEsVUFBcEg7QUFBQSxVQUFvSCxpQkFBbkIsS0FBSyxJQUFJO0FBQUE7QUFBQTtBQUFBO0FBQUEiLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VzIjpbIlVzZXJzLnZ1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XHJcbiAgPEZvcm1TZWxlY3RCYXNlXHJcbiAgICB2LW1vZGVsPVwic2VsZWN0ZWRWYWx1ZVwiXHJcbiAgICA6bXVsdGlwbGU9XCJtdWx0aXBsZVwiXHJcbiAgICA6aXRlbXM9XCJ1c2Vyc1wiXHJcbiAgICA6c2VhcmNoPVwic2VhcmNoXCJcclxuICAgIDpmaWx0ZXItcHJlZGljYXRlPVwic2VhcmNoRmlsdGVyUHJlZGljYXRlXCJcclxuICAgIDpzZWFyY2gtcGxhY2Vob2xkZXI9XCJzZWFyY2hQbGFjZWhvbGRlclwiXHJcbiAgICA6bGFiZWw9XCJsYWJlbFwiXHJcbiAgICA6c2hvdy1sYWJlbD1cInNob3dMYWJlbFwiXHJcbiAgICA6bmFtZT1cIm5hbWUgfHwgJ3VzZXJzJ1wiXHJcbiAgICA6bGFiZWwtaWQ9XCJsYWJlbElkXCJcclxuICAgIDpidXR0b24taWQ9XCJidXR0b25JZFwiXHJcbiAgICBieT1cImlkXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvZm9ybS9zZWxlY3QvVXNlcnMudnVlOjI6M1wiXHJcbiAgPlxyXG4gICAgPHRlbXBsYXRlICNub3RoaW5nLXNlbGVjdGVkPlxyXG4gICAgICA8dGVtcGxhdGUgdi1pZj1cInNlbGVjdG9yUGxhY2Vob2xkZXJcIj5cclxuICAgICAgICB7eyBzZWxlY3RvclBsYWNlaG9sZGVyIH19XHJcbiAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgIDx0ZW1wbGF0ZSB2LWVsc2U+XHJcbiAgICAgICAge3sgbXVsdGlwbGUgPyAnU2VsZWN0IHVzZXJzJyA6ICdTZWxlY3QgYSB1c2VyJyB9fVxyXG4gICAgICA8L3RlbXBsYXRlPlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuICAgIDx0ZW1wbGF0ZSAjc29tZXRoaW5nLXNlbGVjdGVkPVwieyB2YWx1ZSB9XCI+XHJcbiAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiaXNNdWx0aUl0ZW1BcnJheVZhbHVlKHZhbHVlKVwiPlxyXG4gICAgICAgIDxkaXYgcmVmPVwiZWxlbWVudFRvV2F0Y2hGb3JDaGFuZ2VzXCIgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTAuNVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL2Zvcm0vc2VsZWN0L1VzZXJzLnZ1ZToyNjo5XCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIHJlZj1cIml0ZW1Db250YWluZXJcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC13cmFwIG92ZXJmbG93LWhpZGRlbiBzcGFjZS14LTAuNSBoLTZcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9mb3JtL3NlbGVjdC9Vc2Vycy52dWU6Mjc6MTFcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8VXNlckF2YXRhclxyXG4gICAgICAgICAgICAgIHYtZm9yPVwidXNlciBpbiB2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgOmtleT1cInVzZXIuaWRcIlxyXG4gICAgICAgICAgICAgIDp1c2VyPVwidXNlclwiXHJcbiAgICAgICAgICAgICAgbm8tYm9yZGVyXHJcbiAgICAgICAgICAgICAgc2l6ZT1cInhzXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvZm9ybS9zZWxlY3QvVXNlcnMudnVlOjMxOjEzXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiB2LWlmPVwiaGlkZGVuU2VsZWN0ZWRJdGVtQ291bnQgPiAwXCIgY2xhc3M9XCJ0ZXh0LWZvcmVncm91bmQtMiBub3JtYWxcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9mb3JtL3NlbGVjdC9Vc2Vycy52dWU6Mzk6MTFcIj5cclxuICAgICAgICAgICAgK3t7IGhpZGRlblNlbGVjdGVkSXRlbUNvdW50IH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgPHRlbXBsYXRlIHYtZWxzZT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvZm9ybS9zZWxlY3QvVXNlcnMudnVlOjQ1OjlcIj5cclxuICAgICAgICAgIDxVc2VyQXZhdGFyXHJcbiAgICAgICAgICAgIDp1c2VyPVwiaXNBcnJheVZhbHVlKHZhbHVlKSA/IHZhbHVlWzBdIDogdmFsdWVcIlxyXG4gICAgICAgICAgICBuby1ib3JkZXJcclxuICAgICAgICAgICAgY2xhc3M9XCJtci0yXCJcclxuICAgICAgICAgICAgc2l6ZT1cInhzXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvZm9ybS9zZWxlY3QvVXNlcnMudnVlOjQ2OjExXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRydW5jYXRlIGxhYmVsIGxhYmVsLS1saWdodCBtaW4tdy0wXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvZm9ybS9zZWxlY3QvVXNlcnMudnVlOjUyOjExXCI+XHJcbiAgICAgICAgICAgIHt7IChpc0FycmF5VmFsdWUodmFsdWUpID8gdmFsdWVbMF0gOiB2YWx1ZSkubmFtZSB9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L3RlbXBsYXRlPlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuICAgIDx0ZW1wbGF0ZSAjb3B0aW9uPVwieyBpdGVtIH1cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvZm9ybS9zZWxlY3QvVXNlcnMudnVlOjU5OjdcIj5cclxuICAgICAgICA8VXNlckF2YXRhciA6dXNlcj1cIml0ZW1cIiBuby1ib3JkZXIgY2xhc3M9XCJtci0yXCIgc2l6ZT1cInNtXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvZm9ybS9zZWxlY3QvVXNlcnMudnVlOjYwOjlcIiAvPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidHJ1bmNhdGUgdGV4dC1ib2R5LTJ4c1wiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL2Zvcm0vc2VsZWN0L1VzZXJzLnZ1ZTo2MTo5XCI+e3sgaXRlbS5uYW1lIH19PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvdGVtcGxhdGU+XHJcbiAgPC9Gb3JtU2VsZWN0QmFzZT5cclxuPC90ZW1wbGF0ZT5cclxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHR5cGUgeyBQcm9wVHlwZSB9IGZyb20gJ3Z1ZSdcclxuaW1wb3J0IHR5cGUgeyBOdWxsYWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAc3BlY2tsZS9zaGFyZWQnXHJcbmltcG9ydCB7IGdyYXBocWwgfSBmcm9tICd+fi9saWIvY29tbW9uL2dlbmVyYXRlZC9ncWwnXHJcbmltcG9ydCB0eXBlIHsgRm9ybVVzZXJzU2VsZWN0SXRlbUZyYWdtZW50IH0gZnJvbSAnfn4vbGliL2NvbW1vbi9nZW5lcmF0ZWQvZ3FsL2dyYXBocWwnXHJcbmltcG9ydCB7IHVzZUZvcm1TZWxlY3RDaGlsZEludGVybmFscyB9IGZyb20gJ35+L2xpYi9mb3JtL2NvbXBvc2FibGVzL3NlbGVjdCdcclxuXHJcbnR5cGUgVmFsdWVUeXBlID0gRm9ybVVzZXJzU2VsZWN0SXRlbUZyYWdtZW50IHwgRm9ybVVzZXJzU2VsZWN0SXRlbUZyYWdtZW50W10gfCB1bmRlZmluZWRcclxuXHJcbmdyYXBocWwoYFxyXG4gIGZyYWdtZW50IEZvcm1Vc2Vyc1NlbGVjdEl0ZW0gb24gTGltaXRlZFVzZXIge1xyXG4gICAgaWRcclxuICAgIG5hbWVcclxuICAgIGF2YXRhclxyXG4gIH1cclxuYClcclxuXHJcbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czx7XHJcbiAgKGU6ICd1cGRhdGU6bW9kZWxWYWx1ZScsIHY6IFZhbHVlVHlwZSk6IHZvaWRcclxufT4oKVxyXG5cclxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wcyh7XHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0byBhbGxvdyBzZWxlY3RpbmcgbXVsdGlwbGUgdXNlcnNcclxuICAgKi9cclxuICBtdWx0aXBsZToge1xyXG4gICAgdHlwZTogQm9vbGVhbixcclxuICAgIGRlZmF1bHQ6IGZhbHNlXHJcbiAgfSxcclxuICB1c2Vyczoge1xyXG4gICAgdHlwZTogQXJyYXkgYXMgUHJvcFR5cGU8Rm9ybVVzZXJzU2VsZWN0SXRlbUZyYWdtZW50W10+LFxyXG4gICAgcmVxdWlyZWQ6IHRydWVcclxuICB9LFxyXG4gIG1vZGVsVmFsdWU6IHtcclxuICAgIHR5cGU6IFtPYmplY3QsIEFycmF5XSBhcyBQcm9wVHlwZTxWYWx1ZVR5cGU+LFxyXG4gICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgfSxcclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRvIGFsbG93IGZpbHRlcmluZyB1c2VycyB0aHJvdWdoIGEgc2VhcmNoIGJveFxyXG4gICAqL1xyXG4gIHNlYXJjaDoge1xyXG4gICAgdHlwZTogQm9vbGVhbixcclxuICAgIGRlZmF1bHQ6IGZhbHNlXHJcbiAgfSxcclxuICAvKipcclxuICAgKiBTZWFyY2ggcGxhY2Vob2xkZXIgdGV4dFxyXG4gICAqL1xyXG4gIHNlYXJjaFBsYWNlaG9sZGVyOiB7XHJcbiAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICBkZWZhdWx0OiAnU2VhcmNoIHBlb3BsZSdcclxuICB9LFxyXG4gIHNlbGVjdG9yUGxhY2Vob2xkZXI6IHtcclxuICAgIHR5cGU6IFN0cmluZyBhcyBQcm9wVHlwZTxPcHRpb25hbDxzdHJpbmc+PixcclxuICAgIGRlZmF1bHQ6ICcnXHJcbiAgfSxcclxuICAvKipcclxuICAgKiBMYWJlbCBpcyByZXF1aXJlZCBhdCB0aGUgdmVyeSBsZWFzdCBmb3Igc2NyZWVuLXJlYWRlcnNcclxuICAgKi9cclxuICBsYWJlbDoge1xyXG4gICAgdHlwZTogU3RyaW5nLFxyXG4gICAgcmVxdWlyZWQ6IHRydWVcclxuICB9LFxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdG8gc2hvdyB0aGUgbGFiZWwgdmlzdWFsbHlcclxuICAgKi9cclxuICBzaG93TGFiZWw6IHtcclxuICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICBkZWZhdWx0OiBmYWxzZVxyXG4gIH0sXHJcbiAgbmFtZToge1xyXG4gICAgdHlwZTogU3RyaW5nIGFzIFByb3BUeXBlPE9wdGlvbmFsPHN0cmluZz4+LFxyXG4gICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgfVxyXG59KVxyXG5cclxuY29uc3QgZWxlbWVudFRvV2F0Y2hGb3JDaGFuZ2VzID0gcmVmKG51bGwgYXMgTnVsbGFibGU8SFRNTEVsZW1lbnQ+KVxyXG5jb25zdCBpdGVtQ29udGFpbmVyID0gcmVmKG51bGwgYXMgTnVsbGFibGU8SFRNTEVsZW1lbnQ+KVxyXG5jb25zdCBsYWJlbElkID0gdXNlSWQoKVxyXG5jb25zdCBidXR0b25JZCA9IHVzZUlkKClcclxuXHJcbmNvbnN0IHsgc2VsZWN0ZWRWYWx1ZSwgaGlkZGVuU2VsZWN0ZWRJdGVtQ291bnQsIGlzQXJyYXlWYWx1ZSwgaXNNdWx0aUl0ZW1BcnJheVZhbHVlIH0gPVxyXG4gIHVzZUZvcm1TZWxlY3RDaGlsZEludGVybmFsczxGb3JtVXNlcnNTZWxlY3RJdGVtRnJhZ21lbnQ+KHtcclxuICAgIHByb3BzOiB0b1JlZnMocHJvcHMpLFxyXG4gICAgZW1pdCxcclxuICAgIGR5bmFtaWNWaXNpYmlsaXR5OiB7IGVsZW1lbnRUb1dhdGNoRm9yQ2hhbmdlcywgaXRlbUNvbnRhaW5lciB9XHJcbiAgfSlcclxuXHJcbmNvbnN0IHNlYXJjaEZpbHRlclByZWRpY2F0ZSA9IChpOiBGb3JtVXNlcnNTZWxlY3RJdGVtRnJhZ21lbnQsIHNlYXJjaDogc3RyaW5nKSA9PlxyXG4gIGkubmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaC50b0xvY2FsZUxvd2VyQ2FzZSgpKVxyXG48L3NjcmlwdD5cclxuIl0sImZpbGUiOiJEOi9zcGVja2xlLXNlcnZlci9wYWNrYWdlcy9mcm9udGVuZC0yL2NvbXBvbmVudHMvZm9ybS9zZWxlY3QvVXNlcnMudnVlIn0=