import { createHotContext as __vite__createHotContext } from "/@vite/client";import.meta.hot = __vite__createHotContext("/src/components/Provider/Modal.tsx");import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from "/node_modules/.vite/deps/vue.js?v=3bf0172c"; import { Modal as AntdModal } from "/node_modules/.vite/deps/ant-design-vue.js?v=f7d2fa05"; import { CloseOutlined } from "/node_modules/.vite/deps/@ant-design_icons-vue.js?v=2150c144"; import { defineComponent, inject, onBeforeUnmount, onMounted, provide, reactive, ref } from "/node_modules/.vite/deps/vue.js?v=3bf0172c"; import { bool, number } from "/node_modules/.vite/deps/vue-types.js?v=3b44f7bd"; import { useRouter } from "/node_modules/.vite/deps/vue-router.js?v=0a002a54"; import "/src/components/Provider/Modal.less"; import ModalConfirm from "/src/components/Provider/ModalConfirm.tsx"; import ModalInput from "/src/components/Provider/ModalInput.tsx"; const store = reactive({ modalKeys: [], modalMaps: /* @__PURE__ */new Map() }); const MyModal = defineComponent({ props: { visible: bool().isRequired, modalKey: number().isRequired }, setup(props) { provide("modalContext", props.modalKey); const closeRef = ref(); const { context, children, closable, title, fullscreen, width, ...otherProps } = store.modalMaps.get(props.modalKey); const baseProps = { width, closable }; const isSelfWidth = !(width && !fullscreen); if (context) { Object.entries(context).forEach(([key, value]) => { provide(key, value); }); } if (isSelfWidth) { baseProps.closable = false; baseProps.width = "auto"; baseProps.class = "inf-modal" + (fullscreen ? " ant-modal-fullscreen" : ""); onMounted(() => { const closeEl = closeRef.value; if (closeEl) { const maskEl = closeEl.parentElement.parentElement; } }); onBeforeUnmount(() => { const closeEl = closeRef.value; if (closeEl) { const maskEl = closeEl.parentElement.parentElement; maskEl.removeEventListener("click", closeModal); } }); } else { baseProps.title = title; } function closeModal(e) { if (e.target === e.currentTarget) { otherProps.onCancel?.(); } } const RenderSelfHeader = () => _createVNode(_Fragment, null, [closable ? _createVNode(CloseOutlined, { "class": "ant-modal-close", "onClick": () => otherProps.onCancel(), "ref": closeRef }, null) : null, title ? _createVNode("div", { "class": "ant-modal-header" }, [title]) : null]); return () => { return _createVNode(AntdModal, _mergeProps({ "key": props.modalKey, "visible": props.visible, "footer": null }, baseProps, otherProps), { default: () => [isSelfWidth ? RenderSelfHeader() : null, children] }); }; } }); function hidden(key) { if (key) { const modal = store.modalKeys.find(item => item.key === key); modal && (modal.visible = false); } } const Modal = { show(children, config, context) { return new Promise((resolve, reject) => { const key = Date.now(); const { afterClose, ...otherConfig } = config || {}; store.modalMaps.set(key, { context, children, closable: true, afterClose: () => { const itemIndex = store.modalKeys.findIndex(item => item.key === key); if (itemIndex != -1) { store.modalKeys.splice(itemIndex, 1); store.modalMaps.delete(key); } afterClose?.(); }, ...otherConfig, onOk: async value => { if (otherConfig.onOk) { await otherConfig.onOk(value); } resolve(value); hidden(key); }, onCancel: msg => { reject(console.warn(msg)); hidden(key); } }); store.modalKeys.push({ key, visible: true }); }); }, use() { const key = inject("modalContext"); const ctx = store.modalMaps.get(key); return { submit: ctx.onOk, cancel: ctx.onCancel }; }, input(params) { const { title, defaultValue, placeholder, maxLength, okText, cancelText, selection, onValid, ...otherParams } = params; return Modal.show(_createVNode(ModalInput, { "defaultValue": defaultValue, "placeholder": placeholder, "maxLength": maxLength, "selection": selection, "okText": okText, "cancelText": cancelText }, null), { width: "400px", title, closable: true, ...otherParams, onOk: async v => { const isValid = await (onValid ? onValid(v) : true); if (isValid) return v; throw console.warn({ msg: "invalid input value", silence: true }); } }); }, confirm(params) { const { type, okText, refuseText, cancelText, content, ...otherParams } = params; return Modal.show(_createVNode(ModalConfirm, { "type": type, "content": content, "okText": okText, "refuseText": refuseText, "cancelText": cancelText }, null), { width: "400px", ...otherParams }); }, clear() { store.modalKeys = []; store.modalMaps.clear(); } }; export const ModalProvider = defineComponent(() => { const router = useRouter(); router.beforeEach(() => { Modal.clear(); }); return () => store.modalKeys.map(({ key, visible }) => _createVNode(MyModal, { "key": key, "visible": visible, "modalKey": key }, null)); }); export default Modal; ModalProvider.__hmrId = "4070dbe2" __VUE_HMR_RUNTIME__.createRecord("4070dbe2", ModalProvider) import.meta.hot.accept(({ModalProvider: __ModalProvider}) => { __VUE_HMR_RUNTIME__.reload("4070dbe2", __ModalProvider) }) //# sourceMappingURL=data:application/json;base64,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RUFBTTtFQUN4QjtBQUNGO0FBRU8sYUFBTUMsYUFBQSxHQUFnQm5HLGVBQUEsQ0FBZ0IsTUFBTTtFQUVqRCxNQUFNb0csTUFBQSxHQUFTM0YsU0FBQSxFQUFVO0VBQ3pCMkYsTUFBQSxDQUFPQyxVQUFBLENBQVcsTUFBTTtJQUN0QnhHLEtBQUEsQ0FBTXFHLEtBQUEsRUFBTTtFQUNkLENBQUM7RUFFRCxPQUFPLE1BQ0x0RixLQUFBLENBQU1DLFNBQUEsQ0FBVXlGLEdBQUEsQ0FBSSxDQUFDO0lBQUVsRSxHQUFBO0lBQUtsQjtFQUFRLE1BQUErQixZQUFBLENBQUFqQyxPQUFBO0lBQUEsT0FDcEJvQixHQUFBO0lBQUEsV0FBY2xCLE9BQUE7SUFBQSxZQUFtQmtCO0VBQUEsUUFDaEQ7QUFDTCxDQUFDO0FBRUQsZUFBZXZDLEtBQUEiLCJuYW1lcyI6WyJNb2RhbCIsIkFudGRNb2RhbCIsIkNsb3NlT3V0bGluZWQiLCJkZWZpbmVDb21wb25lbnQiLCJpbmplY3QiLCJvbkJlZm9yZVVubW91bnQiLCJvbk1vdW50ZWQiLCJwcm92aWRlIiwicmVhY3RpdmUiLCJyZWYiLCJib29sIiwibnVtYmVyIiwidXNlUm91dGVyIiwiTW9kYWxDb25maXJtIiwiTW9kYWxJbnB1dCIsInN0b3JlIiwibW9kYWxLZXlzIiwibW9kYWxNYXBzIiwiTWFwIiwiTXlNb2RhbCIsInByb3BzIiwidmlzaWJsZSIsImlzUmVxdWlyZWQiLCJtb2RhbEtleSIsInNldHVwIiwiY2xvc2VSZWYiLCJjb250ZXh0IiwiY2hpbGRyZW4iLCJjbG9zYWJsZSIsInRpdGxlIiwiZnVsbHNjcmVlbiIsIndpZHRoIiwib3RoZXJQcm9wcyIsImdldCIsImJhc2VQcm9wcyIsImlzU2VsZldpZHRoIiwiT2JqZWN0IiwiZW50cmllcyIsImZvckVhY2giLCJrZXkiLCJ2YWx1ZSIsImNsYXNzIiwiY2xvc2VFbCIsIm1hc2tFbCIsInBhcmVudEVsZW1lbnQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY2xvc2VNb2RhbCIsImUiLCJ0YXJnZXQiLCJjdXJyZW50VGFyZ2V0Iiwib25DYW5jZWwiLCJSZW5kZXJTZWxmSGVhZGVyIiwiX2NyZWF0ZVZOb2RlIiwiX0ZyYWdtZW50Iiwib25DbGljayIsIl9tZXJnZVByb3BzIiwiZGVmYXVsdCIsImhpZGRlbiIsIm1vZGFsIiwiZmluZCIsIml0ZW0iLCJzaG93IiwiY29uZmlnIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJEYXRlIiwibm93IiwiYWZ0ZXJDbG9zZSIsIm90aGVyQ29uZmlnIiwic2V0IiwiaXRlbUluZGV4IiwiZmluZEluZGV4Iiwic3BsaWNlIiwiZGVsZXRlIiwib25PayIsIm1zZyIsImNvbnNvbGUiLCJ3YXJuIiwicHVzaCIsInVzZSIsImN0eCIsInN1Ym1pdCIsImNhbmNlbCIsImlucHV0IiwicGFyYW1zIiwiZGVmYXVsdFZhbHVlIiwicGxhY2Vob2xkZXIiLCJtYXhMZW5ndGgiLCJva1RleHQiLCJjYW5jZWxUZXh0Iiwic2VsZWN0aW9uIiwib25WYWxpZCIsIm90aGVyUGFyYW1zIiwidiIsImlzVmFsaWQiLCJzaWxlbmNlIiwiY29uZmlybSIsInR5cGUiLCJyZWZ1c2VUZXh0IiwiY29udGVudCIsImNsZWFyIiwiTW9kYWxQcm92aWRlciIsInJvdXRlciIsImJlZm9yZUVhY2giLCJtYXAiXSwic291cmNlcyI6WyJNb2RhbC50c3giXSwiZmlsZSI6IkQ6L3dvcmtfZmlsZXMvY3JyY19hZG1pbi9zcmMvY29tcG9uZW50cy9Qcm92aWRlci9Nb2RhbC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RhbCBhcyBBbnRkTW9kYWwgfSBmcm9tIFwiYW50LWRlc2lnbi12dWVcIjtcclxuaW1wb3J0IHsgQ2xvc2VPdXRsaW5lZCB9IGZyb20gXCJAYW50LWRlc2lnbi9pY29ucy12dWVcIjtcclxuaW1wb3J0IHtcclxuICBkZWZpbmVDb21wb25lbnQsXHJcbiAgaW5qZWN0LFxyXG4gIG9uQmVmb3JlVW5tb3VudCxcclxuICBvbk1vdW50ZWQsXHJcbiAgcHJvdmlkZSxcclxuICByZWFjdGl2ZSxcclxuICByZWYsXHJcbn0gZnJvbSBcInZ1ZVwiO1xyXG5pbXBvcnQgeyBib29sLCBudW1iZXIgfSBmcm9tIFwidnVlLXR5cGVzXCI7XHJcbmltcG9ydCB7IHVzZVJvdXRlciB9IGZyb20gXCJ2dWUtcm91dGVyXCI7XHJcbmltcG9ydCBcIi4vTW9kYWwubGVzc1wiO1xyXG5pbXBvcnQgTW9kYWxDb25maXJtIGZyb20gXCIuL01vZGFsQ29uZmlybVwiO1xyXG5pbXBvcnQgTW9kYWxJbnB1dCBmcm9tIFwiLi9Nb2RhbElucHV0XCI7XHJcblxyXG5jb25zdCBzdG9yZSA9IHJlYWN0aXZlKHtcclxuICBtb2RhbEtleXM6IFtdIGFzIEFycmF5PHsga2V5OiBudW1iZXI7IHZpc2libGU6IGJvb2xlYW4gfT4sXHJcbiAgbW9kYWxNYXBzOiBuZXcgTWFwKCkgYXMgTWFwPG51bWJlciwgYW55PixcclxufSk7XHJcblxyXG5jb25zdCBNeU1vZGFsID0gZGVmaW5lQ29tcG9uZW50KHtcclxuICBwcm9wczoge1xyXG4gICAgdmlzaWJsZTogYm9vbCgpLmlzUmVxdWlyZWQsXHJcbiAgICBtb2RhbEtleTogbnVtYmVyKCkuaXNSZXF1aXJlZCxcclxuICB9LFxyXG4gIHNldHVwKHByb3BzKSB7XHJcbiAgICBwcm92aWRlKFwibW9kYWxDb250ZXh0XCIsIHByb3BzLm1vZGFsS2V5KTtcclxuICAgIGNvbnN0IGNsb3NlUmVmID0gcmVmKCk7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNvbnRleHQsXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBjbG9zYWJsZSxcclxuICAgICAgdGl0bGUsXHJcbiAgICAgIGZ1bGxzY3JlZW4sXHJcbiAgICAgIHdpZHRoLFxyXG4gICAgICAuLi5vdGhlclByb3BzXHJcbiAgICB9ID0gc3RvcmUubW9kYWxNYXBzLmdldChwcm9wcy5tb2RhbEtleSk7XHJcbiAgICBjb25zdCBiYXNlUHJvcHM6IGFueSA9IHtcclxuICAgICAgd2lkdGgsXHJcbiAgICAgIGNsb3NhYmxlLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IGlzU2VsZldpZHRoID0gISh3aWR0aCAmJiAhZnVsbHNjcmVlbik7XHJcblxyXG4gICAgaWYgKGNvbnRleHQpIHtcclxuICAgICAgT2JqZWN0LmVudHJpZXMoY29udGV4dCkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XHJcbiAgICAgICAgcHJvdmlkZShrZXksIHZhbHVlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGlzU2VsZldpZHRoKSB7XHJcbiAgICAgIGJhc2VQcm9wcy5jbG9zYWJsZSA9IGZhbHNlO1xyXG4gICAgICBiYXNlUHJvcHMud2lkdGggPSBcImF1dG9cIjtcclxuICAgICAgYmFzZVByb3BzLmNsYXNzID1cclxuICAgICAgICBcImluZi1tb2RhbFwiICsgKGZ1bGxzY3JlZW4gPyBcIiBhbnQtbW9kYWwtZnVsbHNjcmVlblwiIDogXCJcIik7XHJcbiAgICAgIG9uTW91bnRlZCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY2xvc2VFbCA9IGNsb3NlUmVmLnZhbHVlO1xyXG4gICAgICAgIGlmIChjbG9zZUVsKSB7XHJcbiAgICAgICAgICBjb25zdCBtYXNrRWwgPSBjbG9zZUVsLnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcclxuICAgICAgICAgIC8vIG1hc2tFbC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgY2xvc2VNb2RhbCwgeyBvbmNlOiB0cnVlIH0pOyDpgInmi6nmlofku7bov4flkI4s5Lya6Kem5Y+R5LqL5Lu25L2G6KKr5oum5oiqXHJcbiAgICAgICAgICAvLyBtYXNrRWwuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGNsb3NlTW9kYWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIG9uQmVmb3JlVW5tb3VudCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY2xvc2VFbCA9IGNsb3NlUmVmLnZhbHVlO1xyXG4gICAgICAgIGlmIChjbG9zZUVsKSB7XHJcbiAgICAgICAgICBjb25zdCBtYXNrRWwgPSBjbG9zZUVsLnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcclxuICAgICAgICAgIG1hc2tFbC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgY2xvc2VNb2RhbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGJhc2VQcm9wcy50aXRsZSA9IHRpdGxlO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGNsb3NlTW9kYWwoZTogTW91c2VFdmVudCkge1xyXG4gICAgICBpZiAoZS50YXJnZXQgPT09IGUuY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgIG90aGVyUHJvcHMub25DYW5jZWw/LigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgUmVuZGVyU2VsZkhlYWRlciA9ICgpID0+IChcclxuICAgICAgPD5cclxuICAgICAgICB7Y2xvc2FibGUgPyAoXHJcbiAgICAgICAgICA8Q2xvc2VPdXRsaW5lZFxyXG4gICAgICAgICAgICBjbGFzcz1cImFudC1tb2RhbC1jbG9zZVwiXHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG90aGVyUHJvcHMub25DYW5jZWwoKX1cclxuICAgICAgICAgICAgcmVmPXtjbG9zZVJlZn1cclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgKSA6IG51bGx9XHJcbiAgICAgICAge3RpdGxlID8gPGRpdiBjbGFzcz1cImFudC1tb2RhbC1oZWFkZXJcIj57dGl0bGV9PC9kaXY+IDogbnVsbH1cclxuICAgICAgPC8+XHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPEFudGRNb2RhbFxyXG4gICAgICAgICAga2V5PXtwcm9wcy5tb2RhbEtleX1cclxuICAgICAgICAgIHZpc2libGU9e3Byb3BzLnZpc2libGV9XHJcbiAgICAgICAgICBmb290ZXI9e251bGx9XHJcbiAgICAgICAgICB7Li4uYmFzZVByb3BzfVxyXG4gICAgICAgICAgey4uLm90aGVyUHJvcHN9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge2lzU2VsZldpZHRoID8gUmVuZGVyU2VsZkhlYWRlcigpIDogbnVsbH1cclxuICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICA8L0FudGRNb2RhbD5cclxuICAgICAgKTtcclxuICAgIH07XHJcbiAgfSxcclxufSk7XHJcblxyXG5mdW5jdGlvbiBoaWRkZW4oa2V5OiBudW1iZXIpIHtcclxuICBpZiAoa2V5KSB7XHJcbiAgICBjb25zdCBtb2RhbCA9IHN0b3JlLm1vZGFsS2V5cy5maW5kKChpdGVtKSA9PiBpdGVtLmtleSA9PT0ga2V5KTtcclxuICAgIG1vZGFsICYmIChtb2RhbC52aXNpYmxlID0gZmFsc2UpO1xyXG4gIH1cclxufVxyXG5cclxuY29uc3QgTW9kYWwgPSB7XHJcbiAgc2hvdyhcclxuICAgIGNoaWxkcmVuOiBKU1guRWxlbWVudCxcclxuICAgIGNvbmZpZz86IHtcclxuICAgICAgd2lkdGg/OiBzdHJpbmc7XHJcbiAgICAgIHRpdGxlPzogc3RyaW5nO1xyXG4gICAgICBhZnRlckNsb3NlPzogVm9pZEZ1bmN0aW9uO1xyXG4gICAgICBjbG9zYWJsZT86IGJvb2xlYW47XHJcbiAgICAgIGZ1bGxzY3JlZW4/OiBib29sZWFuO1xyXG4gICAgICBvbk9rPzogYW55O1xyXG4gICAgICBvbkNhbmNlbD86IGFueTtcclxuICAgICAgW25hbWU6IHN0cmluZ106IGFueTtcclxuICAgIH0sXHJcbiAgICBjb250ZXh0Pzoge1xyXG4gICAgICBbbmFtZTogc3RyaW5nXTogYW55O1xyXG4gICAgfVxyXG4gICkge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgY29uc3Qga2V5ID0gRGF0ZS5ub3coKTtcclxuICAgICAgY29uc3QgeyBhZnRlckNsb3NlLCAuLi5vdGhlckNvbmZpZyB9ID0gY29uZmlnIHx8IHt9O1xyXG4gICAgICBzdG9yZS5tb2RhbE1hcHMuc2V0KGtleSwge1xyXG4gICAgICAgIGNvbnRleHQsXHJcbiAgICAgICAgY2hpbGRyZW4sXHJcbiAgICAgICAgY2xvc2FibGU6IHRydWUsXHJcbiAgICAgICAgYWZ0ZXJDbG9zZTogKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gc3RvcmUubW9kYWxLZXlzLmZpbmRJbmRleChcclxuICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0ua2V5ID09PSBrZXlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAoaXRlbUluZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgICAgIHN0b3JlLm1vZGFsS2V5cy5zcGxpY2UoaXRlbUluZGV4LCAxKTtcclxuICAgICAgICAgICAgc3RvcmUubW9kYWxNYXBzLmRlbGV0ZShrZXkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYWZ0ZXJDbG9zZT8uKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi5vdGhlckNvbmZpZyxcclxuICAgICAgICBvbk9rOiBhc3luYyAodmFsdWU/OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChvdGhlckNvbmZpZy5vbk9rKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IG90aGVyQ29uZmlnLm9uT2sodmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XHJcbiAgICAgICAgICBoaWRkZW4oa2V5KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQ2FuY2VsOiAobXNnPzogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICByZWplY3QoY29uc29sZS53YXJuKG1zZykpO1xyXG4gICAgICAgICAgaGlkZGVuKGtleSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICAgIHN0b3JlLm1vZGFsS2V5cy5wdXNoKHsga2V5LCB2aXNpYmxlOiB0cnVlIH0pO1xyXG4gICAgfSk7XHJcbiAgfSxcclxuICB1c2UoKSB7XHJcbiAgICBjb25zdCBrZXkgPSBpbmplY3QoXCJtb2RhbENvbnRleHRcIikgYXMgbnVtYmVyO1xyXG4gICAgY29uc3QgY3R4ID0gc3RvcmUubW9kYWxNYXBzLmdldChrZXkpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc3VibWl0OiBjdHgub25PayBhcyAodmFsdWU/OiBhbnkpID0+IHZvaWQsXHJcbiAgICAgIGNhbmNlbDogY3R4Lm9uQ2FuY2VsIGFzIChtc2c/OiBhbnkpID0+IHZvaWQsXHJcbiAgICB9O1xyXG4gIH0sXHJcbiAgaW5wdXQocGFyYW1zOiB7XHJcbiAgICB0aXRsZT86IHN0cmluZztcclxuICAgIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcclxuICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gICAgb2tUZXh0Pzogc3RyaW5nO1xyXG4gICAgY2FuY2VsVGV4dD86IHN0cmluZztcclxuICAgIHNlbGVjdGlvbj86IGJvb2xlYW47XHJcbiAgICBvblZhbGlkPzogKHZhbHVlOiBzdHJpbmcpID0+IFByb21pc2U8Ym9vbGVhbj47XHJcbiAgICBbbmFtZTogc3RyaW5nXTogYW55O1xyXG4gIH0pIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgdGl0bGUsXHJcbiAgICAgIGRlZmF1bHRWYWx1ZSxcclxuICAgICAgcGxhY2Vob2xkZXIsXHJcbiAgICAgIG1heExlbmd0aCxcclxuICAgICAgb2tUZXh0LFxyXG4gICAgICBjYW5jZWxUZXh0LFxyXG4gICAgICBzZWxlY3Rpb24sXHJcbiAgICAgIG9uVmFsaWQsXHJcbiAgICAgIC4uLm90aGVyUGFyYW1zXHJcbiAgICB9ID0gcGFyYW1zO1xyXG4gICAgcmV0dXJuIE1vZGFsLnNob3coXHJcbiAgICAgIDxNb2RhbElucHV0XHJcbiAgICAgICAgZGVmYXVsdFZhbHVlPXtkZWZhdWx0VmFsdWV9XHJcbiAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxyXG4gICAgICAgIG1heExlbmd0aD17bWF4TGVuZ3RofVxyXG4gICAgICAgIHNlbGVjdGlvbj17c2VsZWN0aW9ufVxyXG4gICAgICAgIG9rVGV4dD17b2tUZXh0fVxyXG4gICAgICAgIGNhbmNlbFRleHQ9e2NhbmNlbFRleHR9XHJcbiAgICAgIC8+LFxyXG4gICAgICB7XHJcbiAgICAgICAgd2lkdGg6IFwiNDAwcHhcIixcclxuICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgY2xvc2FibGU6IHRydWUsXHJcbiAgICAgICAgLi4ub3RoZXJQYXJhbXMsXHJcbiAgICAgICAgb25PazogYXN5bmMgKHY6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgaXNWYWxpZCA9IGF3YWl0IChvblZhbGlkID8gb25WYWxpZCh2KSA6IHRydWUpO1xyXG4gICAgICAgICAgaWYgKGlzVmFsaWQpIHJldHVybiB2O1xyXG4gICAgICAgICAgdGhyb3cgY29uc29sZS53YXJuKHsgbXNnOiBcImludmFsaWQgaW5wdXQgdmFsdWVcIiwgc2lsZW5jZTogdHJ1ZSB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH0sXHJcblxyXG4gIGNvbmZpcm0ocGFyYW1zOiB7XHJcbiAgICB0aXRsZT86IHN0cmluZztcclxuICAgIGNvbnRlbnQ/OiBhbnk7XHJcbiAgICBva1RleHQ/OiBzdHJpbmc7XHJcbiAgICByZWZ1c2VUZXh0Pzogc3RyaW5nO1xyXG4gICAgY2FuY2VsVGV4dD86IHN0cmluZztcclxuICAgIHR5cGU/OiBcImRhbmdlclwiO1xyXG4gICAgW25hbWU6IHN0cmluZ106IGFueTtcclxuICB9KSB7XHJcbiAgICBjb25zdCB7IHR5cGUsIG9rVGV4dCwgcmVmdXNlVGV4dCwgY2FuY2VsVGV4dCwgY29udGVudCwgLi4ub3RoZXJQYXJhbXMgfSA9XHJcbiAgICAgIHBhcmFtcztcclxuICAgIHJldHVybiBNb2RhbC5zaG93KFxyXG4gICAgICA8TW9kYWxDb25maXJtXHJcbiAgICAgICAgdHlwZT17dHlwZX1cclxuICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgIG9rVGV4dD17b2tUZXh0fVxyXG4gICAgICAgIHJlZnVzZVRleHQ9e3JlZnVzZVRleHR9XHJcbiAgICAgICAgY2FuY2VsVGV4dD17Y2FuY2VsVGV4dH1cclxuICAgICAgLz4sXHJcbiAgICAgIHtcclxuICAgICAgICB3aWR0aDogXCI0MDBweFwiLFxyXG4gICAgICAgIC4uLm90aGVyUGFyYW1zLFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH0sXHJcbiAgY2xlYXIoKSB7XHJcbiAgICBzdG9yZS5tb2RhbEtleXMgPSBbXTtcclxuICAgIHN0b3JlLm1vZGFsTWFwcy5jbGVhcigpO1xyXG4gIH0sXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgTW9kYWxQcm92aWRlciA9IGRlZmluZUNvbXBvbmVudCgoKSA9PiB7XHJcbiAgLy8g6Lev55Sx6Lez6L2s5YmN6ZSA5q+B5b2T5YmN6aG16Z2i55qE5by55bGCXHJcbiAgY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKCk7XHJcbiAgcm91dGVyLmJlZm9yZUVhY2goKCkgPT4ge1xyXG4gICAgTW9kYWwuY2xlYXIoKTtcclxuICB9KTtcclxuXHJcbiAgcmV0dXJuICgpID0+XHJcbiAgICBzdG9yZS5tb2RhbEtleXMubWFwKCh7IGtleSwgdmlzaWJsZSB9KSA9PiAoXHJcbiAgICAgIDxNeU1vZGFsIGtleT17a2V5fSB2aXNpYmxlPXt2aXNpYmxlfSBtb2RhbEtleT17a2V5fSAvPlxyXG4gICAgKSk7XHJcbn0pO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgTW9kYWw7XHJcbiJdfQ==