123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- 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==
|