icarys-form-create-vant 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/index.js +4 -4
- package/dist/index.min.js +2 -2
- package/dist/index.min.js.map +1 -1
- package/package.json +4 -5
package/dist/index.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.min.js","sources":["../src/vant/src/components/calendar.jsx","../src/vant/src/core/utils.js","../src/vant/src/components/cascader.jsx","../src/vant/src/components/checkbox.jsx","../src/vant/src/components/select.jsx","../src/vant/src/components/uploader.jsx","../src/vant/src/components/radio.jsx","../src/vant/src/components/datePicker.jsx","../src/vant/src/components/timePicker.jsx","../src/vant/src/components/group.jsx","../src/vant/src/components/icon/IconWarning.vue","../src/vant/src/components/icon/IconWarning.vue?vue&type=template&id=78ef5f99&lang.js","../src/vant/src/components/index.js","../src/vant/src/parsers/index.js","../src/vant/src/parsers/hidden.js","../src/vant/src/parsers/row.js","../src/vant/src/core/alias.js","../src/vant/src/core/manager.js","../src/vant/src/core/config.js","../src/vant/src/core/api.js","../node_modules/style-inject/dist/style-inject.es.js","../src/vant/src/core/provider.js","../src/vant/src/core/index.js","../src/vant/src/index.js","../src/core/src/frame/attrs.js","../src/core/src/frame/util.js","../src/core/src/components/formCreate.js","../src/core/src/factory/creator.js","../src/core/src/factory/maker.js","../src/core/src/frame/fetch.js","../src/core/src/frame/api.js","../src/core/src/render/index.js","../src/core/src/render/cache.js","../src/core/src/render/render.js","../src/core/src/handler/page.js","../src/core/src/factory/context.js","../src/core/src/handler/loader.js","../src/core/src/handler/input.js","../src/core/src/factory/parser.js","../src/core/src/handler/context.js","../src/core/src/handler/index.js","../src/core/src/handler/inject.js","../src/core/src/handler/render.js","../src/core/src/handler/lifecycle.js","../src/core/src/handler/effect.js","../src/core/src/components/fragment.js","../src/core/src/factory/node.js","../src/core/src/factory/manager.js","../src/core/src/frame/provider.js","../src/core/src/parser/html.js","../src/core/src/frame/dataDriver.js","../src/core/src/frame/language.js","../src/core/src/frame/index.js","../src/utils/lib/type.js","../src/utils/lib/modify.js","../src/utils/lib/deepextend.js","../src/utils/lib/extend.js","../src/utils/lib/console.js","../src/utils/lib/json.js","../src/utils/lib/unique.js","../src/utils/lib/debounce.js","../src/utils/lib/deepset.js","../src/utils/lib/slot.js","../src/utils/lib/toarray.js","../src/utils/lib/todate.js","../src/utils/lib/toline.js","../src/utils/lib/topromise.js","../src/utils/lib/tostring.js"],"sourcesContent":["import {computed, defineComponent, ref, toRef, watch} from 'vue';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport dayjs from 'dayjs';\n\nconst NAME = 'fcCalendar';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n placeholder: String,\n formCreateInject: Object,\n disabled: Boolean,\n clearable: Boolean,\n type: String,\n modelValue: [String, Array],\n minDate: [String, Date],\n maxDate: [String, Date],\n },\n emits: ['update:modelValue', 'change', 'fc.el'],\n setup(props, _) {\n const show = ref(false);\n const modelValue = toRef(props, 'modelValue');\n const formCreateInject = toRef(props, 'formCreateInject');\n const inputValue = ref(modelValue.value);\n\n watch(() => modelValue.value, (n) => {\n inputValue.value = n;\n })\n\n const formatter = (date) => {\n return dayjs(date).format('YYYY-MM-DD');\n }\n const toDate = (str) => {\n return dayjs(str).toDate();\n }\n\n const defaultDate = computed(() => {\n const value = modelValue.value;\n if (Array.isArray(value)) {\n return value.map(toDate);\n } else if (value) {\n return toDate(value);\n } else {\n return null;\n }\n })\n\n const dateRange = computed(() => {\n return {\n minDate: props.minDate ? dayjs(props.minDate).toDate() : undefined,\n maxDate: props.maxDate ? dayjs(props.maxDate).toDate() : undefined,\n }\n })\n\n const formatValue = (value) => {\n if (Array.isArray(value)) {\n inputValue.value = value.map(formatter);\n } else if (value) {\n inputValue.value = formatter(value);\n } else {\n inputValue.value = value;\n }\n }\n const onInput = () => {\n _.emit('update:modelValue', inputValue.value);\n _.emit('change', inputValue.value);\n }\n const strValue = {\n range() {\n return inputValue.value.length ? inputValue.value.join(' - ') : '';\n },\n multiple() {\n return inputValue.value.length ? (formCreateInject.value.t('selectedData', {length: inputValue.value.length}) ||`选择了 ${inputValue.value.length} 个日期`) : '';\n }\n }\n\n return {\n show,\n inputValue,\n defaultDate,\n dateRange,\n open() {\n if (props.disabled) {\n return;\n }\n show.value = true;\n },\n confirm(value) {\n formatValue(value);\n show.value = false;\n onInput();\n },\n getStrValue() {\n if (inputValue.value) {\n return hasProperty(strValue, props.type) ? strValue[props.type]() : (inputValue.value || '');\n }\n return '';\n },\n clear(e) {\n e.stopPropagation();\n const value = Array.isArray(inputValue.value) ? [] : '';\n formatValue(value);\n onInput();\n }\n }\n },\n render() {\n const clearIcon = () => {\n return this.$props.clearable && !is.empty(this.inputValue) ?\n <i class=\"van-badge__wrapper van-icon van-icon-clear van-field__clear\"\n onClick={this.clear}></i> : undefined;\n }\n return <div class=\"_fc-calendar\">\n <van-field ref=\"el\" placeholder={this.placeholder} readonly disabled={this.$props.disabled}\n onClick={this.open}\n model-value={this.getStrValue()} isLink border={false} v-slots={{\n 'right-icon': clearIcon\n }}/>\n <van-calendar {...{...this.$attrs, ...this.dateRange}} show={this.show} onUpdate:show={v => (this.show = v)}\n type={this.type}\n onConfirm={this.confirm} defaultDate={this.defaultDate}/>\n </div>\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\n }\n});\n","export const normalizeOptions = (options) => {\n if (!options || !Array.isArray(options)) {\n return [];\n }\n return options.map(item => {\n const normalized = {...item};\n if (normalized.label !== undefined && normalized.text === undefined) {\n normalized.text = normalized.label;\n }\n if (normalized.children && Array.isArray(normalized.children)) {\n normalized.children = normalizeOptions(normalized.children);\n }\n return normalized;\n })\n};\n","import {computed, defineComponent, ref, toRef, watch} from 'vue';\nimport {normalizeOptions} from '../core/utils';\n\nconst NAME = 'fcCascader';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n placeholder: String,\n disabled: Boolean,\n clearable: Boolean,\n fieldNames: Object,\n modelValue: [String, Number],\n options: Array,\n minDate: [String, Date],\n maxDate: [String, Date],\n },\n emits: ['update:modelValue', 'fc.el', 'change'],\n setup(props, _) {\n const show = ref(false);\n const modelValue = toRef(props, 'modelValue');\n const fieldNames = toRef(props, 'fieldNames', {});\n const options = computed(() => {\n if (fieldNames?.value?.text) {\n return props.options || [];\n } else {\n return normalizeOptions(props.options || []);\n }\n })\n\n const findOptions = (options, value, path) => {\n for (let i = 0; i < options.length; i++) {\n if (options[i][fieldNames.value.value || 'value'] === value) {\n return [...path, options[i]];\n } else if (options[i][fieldNames.value.children || 'children']) {\n const find = findOptions(options[i][fieldNames.value.children || 'children'], value, [...path, options[i]]);\n if (find) {\n return find;\n }\n }\n }\n }\n\n const updateInputValue = (n) => {\n if (n == null || n === '') {\n return '';\n }\n const path = findOptions(options.value, n, []);\n return path ? path.map((option) => option[fieldNames.value.text || 'text']).join(' / ') : n;\n }\n\n const inputValue = ref(updateInputValue(modelValue.value));\n\n watch(() => modelValue.value, (n) => {\n inputValue.value = updateInputValue(n);\n });\n\n watch(() => options.value, () => {\n if (modelValue.value != null && modelValue.value !== '') {\n inputValue.value = updateInputValue(modelValue.value);\n }\n }, {deep: true});\n\n const onInput = (val) => {\n _.emit('update:modelValue', val);\n _.emit('change', val);\n }\n\n return {\n show,\n inputValue,\n options,\n open() {\n if (props.disabled) {\n return;\n }\n show.value = true;\n },\n confirm({selectedOptions, value}) {\n inputValue.value = selectedOptions.map((option) => option[fieldNames.value.text || 'text']).join(' / ');\n show.value = false;\n onInput(value);\n },\n clear(e) {\n e.stopPropagation();\n inputValue.value = '';\n onInput('');\n }\n }\n },\n render() {\n const clearIcon = () => {\n return this.$props.clearable && this.inputValue ?\n <i class=\"van-badge__wrapper van-icon van-icon-clear van-field__clear\"\n onClick={this.clear}></i> : undefined;\n }\n\n return <div class=\"_fc-cascader\">\n <van-field ref=\"el\" placeholder={this.placeholder} readonly disabled={this.$props.disabled}\n onClick={this.open}\n model-value={this.inputValue} border={false} isLink v-slots={{\n 'right-icon': clearIcon\n }}/>\n <van-popup show={this.show} onUpdate:show={(v) => this.show = v} round position=\"bottom\">\n <van-cascader\n {...this.$attrs}\n modelValue={this.modelValue}\n fieldNames={this.fieldNames}\n options={this.options}\n onClose={() => this.show = false}\n onFinish={this.confirm}\n />\n </van-popup>\n </div>\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\n }\n});\n","import {defineComponent, toRef} from 'vue';\n\nconst NAME = 'fcCheckbox';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n modelValue: Array,\n options: Array,\n },\n emits: ['update:modelValue', 'change'],\n setup(props, _) {\n const modelValue = toRef(props, 'modelValue', []);\n const options = toRef(props, 'options');\n\n return {\n options,\n modelValue,\n onInput(val) {\n _.emit('update:modelValue', val);\n _.emit('change', val);\n },\n }\n },\n render() {\n return <van-checkbox-group direction=\"horizontal\" {...this.$attrs} modelValue={Array.isArray(this.modelValue) ? this.modelValue : []}\n onUpdateModelValue={this.onInput}>\n {(this.options || []).map(opt => {\n const tmp = {...opt};\n const {text, value} = opt;\n delete tmp.text;\n delete tmp.value;\n return <van-checkbox name={value} shape=\"square\" {...tmp}>{text || opt.label || value}</van-checkbox>\n })}\n </van-checkbox-group>\n }\n});\n","import {computed, defineComponent, ref, toRef} from 'vue';\nimport {normalizeOptions} from '../core/utils';\n\nconst NAME = 'fcSelect';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n disabled: Boolean,\n placeholder: String,\n columnsFieldNames: Object,\n modelValue: [String, Number, Boolean],\n options: Array,\n },\n emits: ['update:modelValue', 'fc.el', 'change'],\n setup(props, _) {\n const show = ref(false);\n const modelValue = toRef(props, 'modelValue');\n const fieldNames = toRef(props, 'columnsFieldNames', {});\n const options = computed(() => {\n if (fieldNames?.value?.text) {\n return props.options || [];\n } else {\n return normalizeOptions(props.options || []);\n }\n })\n\n const inputValue = computed(() => {\n if (modelValue.value == null || modelValue.value === '') {\n return '';\n }\n for (let i = 0; i < (options.value || []).length; i++) {\n if (options.value[i][fieldNames.value.value || 'value'] === modelValue.value) {\n return options.value[i][fieldNames.value.text || 'text'];\n }\n }\n return modelValue.value;\n });\n\n const onInput = (val) => {\n _.emit('update:modelValue', val);\n _.emit('change', val);\n }\n\n return {\n show,\n inputValue,\n options,\n open() {\n if (props.disabled) {\n return;\n }\n show.value = true;\n },\n confirm({selectedValues}) {\n onInput(selectedValues[0]);\n show.value = false;\n },\n }\n },\n render() {\n return <div class=\"_fc-select\">\n <van-field ref=\"el\" placeholder={this.placeholder} readonly disabled={this.$props.disabled} onClick={this.open}\n model-value={this.inputValue} isLink/>\n <van-popup show={this.show} onUpdate:show={(v) => this.show = v} round position=\"bottom\">\n <van-picker\n {...this.$attrs}\n modelValue={[this.modelValue]}\n columnsFieldNames={this.columnsFieldNames}\n columns={this.options}\n onCancel={() => this.show = false}\n onConfirm={this.confirm}\n />\n </van-popup>\n </div>\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\n }\n});\n","import {defineComponent, ref, toRef, watch} from 'vue';\nimport toArray from '@form-create/utils/lib/toarray';\n\nconst NAME = 'fcUploader';\n\nfunction parseFile(file, i) {\n if (typeof file === 'object') {\n return file;\n }\n return {\n url: file,\n is_string: true,\n name: getFileName(file),\n uid: i\n };\n}\n\nfunction parseUpload(file) {\n return {...file, file, value: file};\n}\n\nfunction getFileName(file) {\n return ('' + file).split('/').pop()\n}\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n formCreateInject: Object,\n modelValue: [Array, String, Object],\n afterRead: Function,\n action: String,\n headers: Object,\n method: String,\n data: Object,\n uploadName: String,\n onSuccess: Function,\n onError: Function,\n maxCount: Number,\n },\n emits: ['update:modelValue', 'delete'],\n setup(props, _) {\n\n const afterRead = toRef(props, 'afterRead');\n const modelValue = toRef(props, 'modelValue', []);\n\n const fileList = ref(toArray(modelValue.value).map(parseFile).map(parseUpload));\n\n watch(() => modelValue.value, (n) => {\n fileList.value = toArray(n).map(parseFile).map(parseUpload);\n })\n\n const uploadValue = () => {\n let files = fileList.value.map((v) => v.is_string ? v.url : (v.value || v.url)).filter((url) => url !== undefined);\n _.emit('update:modelValue', props.maxCount === 1 ? (files[0] || '') : files);\n };\n\n return {\n fileList,\n modelValue,\n onDelete(file) {\n uploadValue();\n _.emit('delete', file);\n },\n uploadFile(file) {\n file.status = 'uploading';\n if (afterRead.value) {\n return afterRead.value(file);\n } else {\n const data = props.data || {};\n data[props.uploadName || 'file'] = file.file;\n props.formCreateInject.api.fetch({\n action: props.action,\n dataType: 'formData',\n source: 'upload',\n headers: props.headers || {},\n method: props.method || 'post',\n data\n }).then(res => {\n file.status = 'success';\n props.onSuccess && props.onSuccess(res, file);\n uploadValue();\n }).catch(e => {\n file.status = 'failed';\n file.message = this.formCreateInject.t('uploadFail') || '上传失败';\n props.onError && props.onError(e, file);\n });\n }\n }\n }\n },\n render() {\n return <van-uploader {...this.$attrs} model-value={this.fileList} maxCount={this.maxCount}\n onUpdate:model-value={(v) => this.fileList = v}\n afterRead={this.uploadFile} onDelete={this.onDelete} v-slots={this.$slots}/>\n }\n\n});\n","import {defineComponent, toRef} from 'vue';\n\nconst NAME = 'fcRadio';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n modelValue: [String, Number, Boolean],\n options: Array,\n },\n emits: ['update:modelValue', 'change'],\n setup(props, _) {\n const modelValue = toRef(props, 'modelValue', []);\n const options = toRef(props, 'options');\n\n return {\n options,\n modelValue,\n onInput(val) {\n _.emit('update:modelValue', val);\n _.emit('change', val);\n },\n }\n },\n render() {\n return <van-radio-group direction=\"horizontal\" {...this.$attrs} modelValue={this.modelValue}\n onUpdateModelValue={this.onInput}>\n {(this.options || []).map(opt => {\n const tmp = {...opt};\n const {text, value} = opt;\n delete tmp.text;\n delete tmp.value;\n return <van-radio name={value} {...tmp}>{text || opt.label || value}</van-radio>\n })}\n </van-radio-group>\n }\n});\n","import {computed, defineComponent, ref, toRef} from 'vue';\nimport dayjs from 'dayjs';\n\nconst NAME = 'fcDatePicker';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n disabled: Boolean,\n clearable: Boolean,\n placeholder: String,\n modelValue: [String, Number],\n minDate: [String, Date],\n maxDate: [String, Date],\n },\n emits: ['update:modelValue', 'fc.el', 'change'],\n setup(props, _) {\n const show = ref(false);\n const modelValue = toRef(props, 'modelValue');\n\n const formValue = computed(() => {\n if (modelValue.value == null || modelValue.value === '') {\n return [];\n }\n return modelValue.value.split('-');\n });\n\n const dateRange = computed(() => {\n return {\n minDate: props.minDate ? dayjs(props.minDate).toDate() : undefined,\n maxDate: props.maxDate ? dayjs(props.maxDate).toDate() : undefined,\n }\n })\n\n const onInput = (val) => {\n _.emit('update:modelValue', val);\n _.emit('change', val);\n }\n\n return {\n show,\n formValue,\n dateRange,\n open() {\n if (props.disabled) {\n return;\n }\n show.value = true;\n },\n confirm({selectedValues}) {\n onInput(selectedValues.join('-'));\n show.value = false;\n },\n clear(e) {\n e.stopPropagation();\n onInput('');\n }\n }\n },\n render() {\n const clearIcon = () => {\n return this.$props.clearable && this.modelValue ?\n <i class=\"van-badge__wrapper van-icon van-icon-clear van-field__clear\"\n onClick={this.clear}></i> : undefined;\n }\n return <div class=\"_fc-date-picker\">\n <van-field ref=\"el\" placeholder={this.placeholder} readonly disabled={this.$props.disabled}\n onClick={this.open}\n model-value={this.modelValue} border={false} isLink v-slots={{\n 'right-icon': clearIcon\n }}/>\n <van-popup show={this.show} onUpdate:show={(v) => this.show = v} round position=\"bottom\">\n <van-date-picker\n columnsType={['year', 'month', 'day']}\n {...{...this.$attrs, ...this.dateRange}}\n modelValue={this.formValue}\n onConfirm={this.confirm}\n onCancel={() => this.show = false}\n />\n </van-popup>\n </div>\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\n }\n});\n","import {computed, defineComponent, ref, toRef} from 'vue';\n\nconst NAME = 'fcTimePicker';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n disabled: Boolean,\n clearable: Boolean,\n placeholder: String,\n modelValue: [String, Number],\n },\n emits: ['update:modelValue', 'fc.el', 'change'],\n setup(props, _) {\n const show = ref(false);\n const modelValue = toRef(props, 'modelValue');\n\n const formValue = computed(() => {\n if (modelValue.value == null || modelValue.value === '') {\n return [];\n }\n return modelValue.value.split(':');\n });\n\n const onInput = (val) => {\n _.emit('update:modelValue', val);\n _.emit('change', val);\n }\n\n return {\n show,\n formValue,\n open() {\n if (props.disabled) {\n return;\n }\n show.value = true;\n },\n confirm({selectedValues}) {\n onInput(selectedValues.join(':'));\n show.value = false;\n },\n clear(e) {\n e.stopPropagation();\n onInput('');\n }\n }\n },\n render() {\n const clearIcon = () => {\n return this.$props.clearable && this.modelValue ?\n <i class=\"van-badge__wrapper van-icon van-icon-clear van-field__clear\"\n onClick={this.clear}></i> : undefined;\n }\n return <div class=\"_fc-time-picker\">\n <van-field ref=\"el\" placeholder={this.placeholder} readonly disabled={this.$props.disabled}\n onClick={this.open}\n model-value={this.modelValue} border={false} isLink v-slots={{\n 'right-icon': clearIcon\n }}/>\n <van-popup show={this.show} onUpdate:show={(v) => this.show = v} round position=\"bottom\">\n <van-time-picker\n columnsType={['hour', 'minute']}\n {...this.$attrs}\n modelValue={this.formValue}\n onConfirm={this.confirm}\n onCancel={() => this.show = false}\n />\n </van-popup>\n </div>\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\n }\n});\n","import {hasProperty} from '@form-create/utils/lib/type';\nimport {defineComponent, markRaw, nextTick, watch} from 'vue';\nimport deepExtend, {deepCopy} from '@form-create/utils/lib/deepextend';\nimport extend from '@form-create/utils/lib/extend';\nimport {toPromise} from '@form-create/utils';\n\nconst NAME = 'fcGroup';\n\n\nexport default defineComponent({\n name: NAME,\n props: {\n field: String,\n rule: Array,\n expand: Number,\n options: Object,\n button: {\n type: Boolean,\n default: true\n },\n max: {\n type: Number,\n default: 0\n },\n min: {\n type: Number,\n default: 0\n },\n modelValue: {\n type: Array,\n default: () => []\n },\n defaultValue: Object,\n sortBtn: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: undefined\n },\n title: {\n type: [String, Function],\n default: null\n },\n type: {\n type: String,\n default: 'default'\n },\n onBeforeRemove: {\n type: Function,\n default: () => {\n }\n },\n onBeforeAdd: {\n type: Function,\n default: () => {\n }\n },\n formCreateInject: Object,\n parse: Function,\n },\n data() {\n return {\n len: 0,\n cacheRule: {},\n cacheValue: {},\n sort: [],\n form: markRaw(this.formCreateInject.form.$form())\n }\n },\n emits: ['update:modelValue', 'change', 'itemMounted', 'remove', 'add'],\n watch: {\n rule: {\n handler(n, o) {\n Object.keys(this.cacheRule).forEach(v => {\n const item = this.cacheRule[v];\n if (item.$f) {\n const val = item.$f.formData();\n if (n === o) {\n item.$f.deferSyncValue(() => {\n deepExtend(item.rule, n);\n item.$f.setValue(val);\n }, true);\n } else {\n const val = item.$f.formData();\n item.$f.once('reloading', () => {\n item.$f.setValue(val);\n })\n item.rule = deepCopy(n);\n }\n }\n })\n },\n deep: true\n },\n expand(n) {\n let d = n - this.modelValue.length;\n if (d > 0) {\n this.expandRule(d);\n }\n },\n modelValue: {\n handler(n) {\n n = n || [];\n let keys = this.sort, total = keys.length, len = total - n.length;\n if (len < 0) {\n for (let i = len; i < 0; i++) {\n this.addRule(n.length + i, true);\n }\n for (let i = 0; i < total; i++) {\n this.setValue(keys[i], n[i]);\n }\n } else {\n if (len > 0) {\n for (let i = 0; i < len; i++) {\n this.removeRule(keys[total - i - 1]);\n }\n }\n n.forEach((val, i) => {\n this.setValue(keys[i], n[i]);\n });\n }\n },\n deep: true,\n }\n },\n methods: {\n _value(v) {\n return (v && hasProperty(v, this.field)) ? v[this.field] : v;\n },\n cache(k, val) {\n this.cacheValue[k] = JSON.stringify(val);\n },\n input(value) {\n this.$emit('update:modelValue', value);\n this.$emit('change', value);\n },\n formData(key, formData) {\n const cacheRule = this.cacheRule;\n const keys = this.sort;\n if (keys.filter(k => cacheRule[k] && cacheRule[k].$f).length !== keys.length) {\n return;\n }\n const value = keys.map(k => {\n const data = key === k ? formData : {...this.cacheRule[k].$f.form};\n const value = this.field ? data[this.field] || null : data;\n this.cache(k, value);\n return value;\n });\n this.input(value);\n },\n setValue(key, value) {\n const field = this.field\n if (field) {\n value = {[field]: this._value(value)};\n }\n if (this.cacheValue[key] === JSON.stringify(field ? value[field] : value)) {\n return;\n }\n this.cacheRule[key].$f && this.cacheRule[key].$f.coverValue(value);\n this.cache(key, value);\n },\n addRule(i, emit) {\n const rule = this.formCreateInject.form.copyRules(this.rule || []);\n const options = this.options ? {...this.options} : {\n submitBtn: false,\n resetBtn: false,\n };\n if (this.defaultValue) {\n if (!options.formData) options.formData = {};\n const defVal = deepCopy(this.defaultValue);\n extend(options.formData, this.field ? {[this.field]: defVal} : defVal);\n }\n this.parse && this.parse({rule, options, index: this.sort.length});\n this.cacheRule[++this.len] = {rule, options};\n this.sort = Object.keys(this.cacheRule);\n if (emit) {\n nextTick(() => this.$emit('add', rule, Object.keys(this.cacheRule).length - 1));\n }\n },\n add$f(i, key, $f) {\n this.cacheRule[key].$f = $f;\n nextTick(() => {\n this.$emit('itemMounted', $f, Object.keys(this.cacheRule).indexOf(key));\n });\n },\n removeRule(key, emit) {\n const index = Object.keys(this.cacheRule).indexOf(key);\n delete this.cacheRule[key];\n delete this.cacheValue[key];\n this.sort = Object.keys(this.cacheRule);\n if (emit) {\n nextTick(() => this.$emit('remove', index));\n }\n },\n add(i) {\n if (this.disabled || false === this.onBeforeAdd(this.modelValue)) {\n return;\n }\n const value = [...this.modelValue];\n value.push(this.defaultValue ? deepCopy(this.defaultValue) : (this.field ? null : {}));\n this.input(value);\n },\n del(index, key) {\n if (this.disabled) {\n return;\n }\n const del = () => {\n this.removeRule(key, true);\n const value = [...this.modelValue];\n value.splice(index, 1);\n this.input(value);\n }\n toPromise(this.onBeforeRemove(this.modelValue, index)).then(res => {\n if (false !== res) {\n del();\n }\n })\n },\n addIcon(key) {\n return <div class=\"_fc-m-group-btn _fc-m-group-plus-minus\" onClick={this.add}></div>;\n },\n delIcon(index, key) {\n return <div class=\"_fc-m-group-btn _fc-m-group-plus-minus _fc-m-group-minus\"\n onClick={() => this.del(index, key)}></div>\n },\n sortUpIcon(index) {\n return <div class=\"_fc-m-group-btn _fc-m-group-arrow _fc-m-group-up\"\n onClick={() => this.changeSort(index, -1)}></div>\n },\n sortDownIcon(index) {\n return <div class=\"_fc-m-group-btn _fc-m-group-arrow _fc-m-group-down\"\n onClick={() => this.changeSort(index, 1)}></div>\n },\n changeSort(index, sort) {\n const a = this.sort[index];\n this.sort[index] = this.sort[index + sort];\n this.sort[index + sort] = a;\n this.formCreateInject.subForm(this.sort.map(k=>{\n return this.cacheRule[k].$f;\n }));\n this.formData(0);\n },\n sortIcon(index, total) {\n const canMoveUp = index > 0;\n const canMoveDown = index < total - 1;\n\n if (!canMoveUp && !canMoveDown) {\n return null;\n }\n\n if (canMoveUp && canMoveDown) {\n // 显示合并的上下箭头按钮\n return <div class=\"_fc-m-group-btn _fc-m-group-sort\">\n <div class=\"_fc-m-group-sort-up\" onClick={() => this.changeSort(index, -1)}></div>\n <div class=\"_fc-m-group-sort-down\" onClick={() => this.changeSort(index, 1)}></div>\n </div>;\n }\n\n if (canMoveUp) {\n return this.sortUpIcon(index);\n }\n\n if (canMoveDown) {\n return this.sortDownIcon(index);\n }\n },\n makeIcon(total, index, key) {\n if (this.$slots.button) {\n return this.$slots.button({\n total,\n index,\n vm: this,\n key,\n del: () => this.del(index, key),\n add: this.add\n });\n }\n const btn = [];\n if ((!this.max || total < this.max) && total === index + 1) {\n btn.push(this.addIcon(key));\n }\n if (total > this.min) {\n btn.push(this.delIcon(index, key));\n }\n if (this.sortBtn) {\n const sortBtn = this.sortIcon(index, total);\n if (sortBtn) {\n btn.push(sortBtn);\n }\n }\n return btn;\n },\n expandRule(n) {\n for (let i = 0; i < n; i++) {\n this.modelValue.push(this.field ? null : {});\n }\n this.input([...this.modelValue]);\n },\n getTitle(index, key) {\n if (typeof this.title === 'function') {\n return this.title(index, this.modelValue[index], key);\n }\n if (typeof this.title === 'string') {\n return this.title.replace('{index}', index + 1);\n }\n return false;\n }\n },\n created() {\n const d = (this.expand || 0) - this.modelValue.length;\n for (let i = 0; i < this.modelValue.length; i++) {\n this.addRule(i);\n }\n if (d > 0) {\n this.expandRule(d);\n }\n },\n render() {\n const keys = this.sort;\n const button = this.button;\n const Type = this.form;\n const disabled = this.disabled;\n const isCardType = this.type === 'card';\n\n const children = keys.length === 0 ?\n (this.$slots.default ? (this.$slots.default({\n vm: this,\n add: this.add\n })) : <div key={'a_def'} class=\"_fc-m-group-plus-minus _fc-m-group-add fc-clock\"\n onClick={this.add}/>) : keys.map((key, index) => {\n const {rule, options} = this.cacheRule[key];\n const btn = button && !disabled ? this.makeIcon(keys.length, index, key) : [];\n const title = this.getTitle(index, key);\n\n if (isCardType) {\n return <div class=\"_fc-m-group-container\" key={key}>\n <div class=\"_fc-m-group-header\">\n {title === false ? <div class=\"_fc-m-group-idx\">{index + 1}</div> : null}\n {title !== false ? <div class=\"_fc-m-group-title\">{title}</div> : null}\n <div class=\"_fc-m-group-handle fc-clock\">\n {(btn.length) ? btn : null}\n </div>\n </div>\n <div class=\"_fc-m-group-content\">\n <Type\n key={key}\n {...{\n disabled,\n 'onUpdate:modelValue': (formData) => this.formData(key, formData),\n 'onUpdate:api': ($f) => this.add$f(index, key, $f),\n inFor: true,\n modelValue: this.field ? {[this.field]: this._value(this.modelValue[index])} : this.modelValue[index],\n rule,\n option: options,\n extendOption: true\n }}\n />\n </div>\n </div>\n } else {\n return <div class=\"_fc-m-group-container\" key={key}>\n <Type\n key={key}\n {...{\n disabled,\n 'onUpdate:modelValue': (formData) => this.formData(key, formData),\n 'onUpdate:api': ($f) => this.add$f(index, key, $f),\n inFor: true,\n modelValue: this.field ? {[this.field]: this._value(this.modelValue[index])} : this.modelValue[index],\n rule,\n option: options,\n extendOption: true\n }}\n />\n <div class=\"_fc-m-group-idx\">{index + 1}</div>\n {(btn.length) ? <div class=\"_fc-m-group-handle fc-clock\">{btn}</div> : null}\n </div>\n }\n });\n return <div key={'con'} class={'_fc-m-group ' + (disabled ? '_fc-m-group-disabled' : '') + (isCardType ? ' _fc-m-group-card' : '')}>{children}</div>\n }\n});\n","<template>\n <svg class=\"icon\" viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill=\"currentColor\"\n d=\"M512 64a448 448 0 110 896 448 448 0 010-896zm0 832a384 384 0 000-768 384 384 0 000 768zm48-176a48 48 0 11-96 0 48 48 0 0196 0zm-48-464a32 32 0 0132 32v288a32 32 0 01-64 0V288a32 32 0 0132-32z\"></path>\n </svg>\n</template>\n\n<script>\nexport default {\n name: 'IconWarning'\n}\n</script>\n","<template>\n <svg class=\"icon\" viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill=\"currentColor\"\n d=\"M512 64a448 448 0 110 896 448 448 0 010-896zm0 832a384 384 0 000-768 384 384 0 000 768zm48-176a48 48 0 11-96 0 48 48 0 0196 0zm-48-464a32 32 0 0132 32v288a32 32 0 01-64 0V288a32 32 0 0132-32z\"></path>\n </svg>\n</template>\n\n<script>\nexport default {\n name: 'IconWarning'\n}\n</script>\n","import subForm from '@form-create/components/common/subform/src/index';\nimport Calendar from './calendar';\nimport Cascader from './cascader';\nimport Checkbox from './checkbox';\nimport Select from './select';\nimport Uploader from './uploader';\nimport Radio from './radio';\nimport DatePicker from './datePicker';\nimport TimePicker from './timePicker';\nimport Group from './group';\nimport IconWarning from './icon/IconWarning.vue';\n\n\nexport default [\n subForm,\n IconWarning,\n Calendar,\n Cascader,\n Checkbox,\n Radio,\n Select,\n DatePicker,\n TimePicker,\n Group,\n Uploader,\n]\n","import hidden from './hidden';\nimport row from './row';\nimport {hasProperty} from '@form-create/utils/lib/type';\n\n\nconst checkbox = {\n name: 'checkbox',\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!hasProperty(props, 'options'))\n props.options = ctx.prop.options || [];\n }\n}\n\nconst radio = {\n name: 'radio',\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!hasProperty(props, 'options'))\n props.options = ctx.prop.options || [];\n }\n}\n\nconst select = {\n name: 'select',\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!hasProperty(props, 'options'))\n props.options = ctx.prop.options || [];\n }\n}\n\nconst cascader = {\n name: 'cascader',\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!hasProperty(props, 'options'))\n props.options = ctx.prop.options || [];\n }\n}\n\nconst textarea = {\n name: 'textarea',\n mergeProp(ctx) {\n let {props} = ctx.prop;\n props.type = 'textarea';\n }\n}\n\n\nexport default [\n hidden,\n row,\n cascader,\n checkbox,\n radio,\n select,\n textarea,\n]\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst name = 'hidden';\nexport default {\n name,\n maker: {\n [name]: (field, value) => creatorFactory(name)('', field, value)\n },\n render() {\n return [];\n }\n}\n","export default {\n name: 'FcRow',\n render(_, ctx) {\n return ctx.vNode.col({props: {span: 24}}, {\n default:()=>[\n ctx.vNode.row(ctx.prop, _)\n ]\n })\n }\n}\n","const PRE = 'van';\nexport default {\n button: PRE + '-button',\n icon: PRE + '-icon',\n slider: PRE + '-slider',\n stepper: PRE + '-stepper',\n inputNumber: PRE + '-stepper',\n rate: PRE + '-rate',\n uploader: 'fc-uploader',\n upload: 'fc-uploader',\n cell: PRE + '-cell',\n timePicker: 'fc-time-picker',\n datePicker: 'fc-date-picker',\n 'switch': PRE + '-switch',\n select: 'fc-select',\n cascader: 'fc-cascader',\n calendar: 'fc-calendar',\n checkbox: 'fc-checkbox',\n radio: 'fc-radio',\n input: PRE + '-field',\n textarea: PRE + '-field',\n field: PRE + '-field',\n formItem: PRE + '-field',\n form: PRE + '-form',\n col: PRE + '-col',\n row: PRE + '-row',\n group: 'fc-group',\n array: 'fc-group',\n object: 'fc-sub-form',\n subForm: 'fc-sub-form',\n}\n","import getConfig from './config';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport extend from '@form-create/utils/lib/extend';\nimport {showNotify} from 'vant';\n\nfunction tidy(props, name) {\n if (!hasProperty(props, name)) return;\n if (is.String(props[name])) {\n props[name] = {[name]: props[name], show: true};\n }\n}\n\nfunction isFalse(val) {\n return val === false;\n}\n\nfunction tidyBool(opt, name) {\n if (hasProperty(opt, name) && !is.Object(opt[name])) {\n opt[name] = {show: !!opt[name]};\n }\n}\n\nfunction tidyRule(rule) {\n const _rule = {...rule};\n delete _rule.children;\n return _rule;\n}\n\nexport default {\n validate() {\n const form = this.form();\n if (form) {\n return form.validate();\n } else {\n return new Promise(v => v());\n }\n },\n validateField(field) {\n return new Promise((resolve, reject) => {\n const form = this.form();\n if (form) {\n form.validate(field).then(resolve).catch(reject);\n } else {\n resolve();\n }\n });\n },\n clearValidateState(ctx) {\n const form = this.form();\n if (form) {\n return form.resetValidation(ctx.id);\n }\n },\n tidyOptions(options) {\n ['submitBtn', 'resetBtn', 'row', 'info', 'wrap', 'col', 'title'].forEach(name => {\n tidyBool(options, name);\n })\n return options;\n },\n tidyRule({prop}) {\n tidy(prop, 'title');\n tidy(prop, 'info');\n prop.validate && prop.validate.forEach(item => {\n if (is.String(item.pattern)) {\n item.pattern = new RegExp(item.pattern);\n }\n });\n return prop;\n },\n mergeProp(ctx) {\n const def = {\n info: {\n icon: true,\n },\n title: {},\n col: {span: 24},\n wrap: {},\n };\n ['info', 'wrap', 'col', 'title'].forEach(name => {\n ctx.prop[name] = mergeProps([this.options[name] || {}, ctx.prop[name] || {}], def[name]);\n });\n },\n getDefaultOptions() {\n return getConfig();\n },\n adapterValidate(validate, validator) {\n if (validate.trigger === 'change') {\n validate.trigger = 'onChange';\n } else if (validate.trigger === 'blur') {\n validate.trigger = 'onBlur';\n }\n validate.validator = (value) => {\n return new Promise((resolve) => {\n const callback = (err) => {\n validate.message = err;\n if (err) {\n resolve(false);\n } else {\n resolve();\n }\n }\n return validator(value, callback);\n })\n }\n return validate;\n },\n update() {\n const form = this.options.form;\n this.rule = {\n props: {...form},\n on: {\n submit: (e) => {\n e.preventDefault();\n }\n },\n style: form.style,\n type: 'form',\n };\n },\n beforeRender() {\n const {key, ref} = this;\n const form = this.options.form;\n extend(this.rule, {key, ref, class: [form.className, form.class, 'form-create-m', this.$handle.preview ? 'is-preview' : '']});\n },\n render(children) {\n if (children.slotLen() && !this.$handle.preview) {\n children.setSlot(undefined, () => this.makeFormBtn());\n }\n return this.$r(this.rule, isFalse(this.options.row.show) ? children.getSlots() : [this.makeRow(children)]);\n },\n makeWrap(ctx, children) {\n const rule = ctx.prop;\n const uni = `${this.key}${ctx.key}`;\n const col = rule.col;\n const isTitle = this.isTitle(rule) && rule.wrap.title !== false;\n const {col: _col} = this.rule.props;\n const cls = rule.wrap.class;\n delete rule.wrap.class;\n delete rule.wrap.title;\n const item = isFalse(rule.wrap.show) ? children : this.$r(mergeProps([rule.wrap, {\n props: {\n modelValue: ctx.rule.value,\n label: isTitle ? rule.title.title : undefined,\n ...tidyRule(rule.wrap || {}),\n name: ctx.id,\n rules: ctx.injectValidate(),\n },\n class: this.$render.mergeClass(cls || rule.className, 'fc-form-item'),\n key: `${uni}fi`,\n ref: ctx.wrapRef,\n type: 'formItem',\n }]), {input: () => children, ...(isTitle ? {label: () => this.makeInfo(rule, uni, ctx)} : {})});\n return (isFalse(_col) || isFalse(col.show)) ? item : this.makeCol(rule, uni, [item]);\n },\n isTitle(rule) {\n if (this.options.form.title === false) return false;\n const title = rule.title;\n return !((!title.title && !title.native) || isFalse(title.show))\n },\n makeInfo(rule, uni, ctx) {\n const titleProp = {...rule.title};\n const infoProp = {...rule.info};\n const titleSlot = this.getSlot('title');\n const children = [titleSlot ? titleSlot({\n title: ctx.refRule?.__$title?.value,\n rule: ctx.rule,\n options: this.options\n }) : ctx.refRule?.__$title?.value];\n const flag = !isFalse(infoProp.show) && (infoProp.info || infoProp.native) && !isFalse(infoProp.icon);\n if (flag) {\n children[infoProp.align !== 'left' ? 'unshift' : 'push'](this.$r({\n type: infoProp.icon === true ? 'icon-warning' : infoProp.icon,\n style: 'width:1em;',\n }));\n }\n\n const _prop = mergeProps([titleProp, {\n props: tidyRule(titleProp),\n key: `${uni}tit`,\n class: 'fc-form-title',\n type: titleProp.type || 'span',\n on: {\n click: (...args) => {\n if (flag && infoProp.info) {\n showNotify({type: 'warning', message: ctx.refRule?.__$info?.value, duration: 1000});\n }\n this.$handle.targetHook(ctx, 'titleClick', {args});\n }\n }\n }]);\n\n delete _prop.props.show;\n delete _prop.props.title;\n delete _prop.props.native;\n\n return this.$r(_prop, children);\n },\n makeCol(rule, uni, children) {\n const col = rule.col;\n return this.$r({\n class: this.$render.mergeClass(col.class, 'fc-form-col'),\n type: 'col',\n props: col || {span: 24},\n key: `${uni}col`\n }, children);\n },\n makeRow(children) {\n const row = this.options.row || {};\n return this.$r({\n type: 'row',\n props: row,\n class: this.$render.mergeClass(row.class, 'fc-form-row'),\n key: `${this.key}row`\n }, children)\n },\n makeFormBtn() {\n let vn = [];\n if (!isFalse(this.options.submitBtn.show)) {\n vn.push(this.makeSubmitBtn())\n }\n if (!isFalse(this.options.resetBtn.show)) {\n vn.push(this.makeResetBtn())\n }\n if (!vn.length) {\n return;\n }\n return this.$r({\n type: 'cell',\n class: 'fc-form-cell fc-form-footer',\n key: `${this.key}fb`\n }, vn);\n },\n\n makeResetBtn() {\n const resetBtn = {...this.options.resetBtn};\n const innerText = resetBtn.innerText || this.$handle.api.t('reset') || '重置';\n delete resetBtn.innerText;\n delete resetBtn.click;\n delete resetBtn.col;\n delete resetBtn.show;\n return this.$r({\n type: 'button',\n props: resetBtn,\n class: 'fc-reset-btn',\n style: {width: resetBtn.width},\n on: {\n click: () => {\n const fApi = this.$handle.api;\n this.options.resetBtn.click\n ? this.options.resetBtn.click(fApi)\n : fApi.resetFields();\n }\n },\n key: `${this.key}b2`,\n }, [innerText]);\n },\n makeSubmitBtn() {\n const submitBtn = {...this.options.submitBtn};\n const innerText = submitBtn.innerText || this.$handle.api.t('submit') || '提交';\n delete submitBtn.innerText;\n delete submitBtn.click;\n delete submitBtn.col;\n delete submitBtn.show;\n return this.$r({\n type: 'button',\n props: submitBtn,\n class: 'fc-submit-btn',\n style: {width: submitBtn.width},\n on: {\n click: () => {\n const fApi = this.$handle.api;\n this.options.submitBtn.click\n ? this.options.submitBtn.click(fApi)\n : fApi.submit().catch(() => {\n });\n }\n },\n key: `${this.key}b1`,\n }, [innerText]);\n }\n}\n","export default function getConfig() {\n return {\n form: {\n required: 'auto',\n labelAlign: 'right',\n inputAlign: 'right',\n },\n row: {\n show: true,\n gutter: 0,\n },\n submitBtn: {\n type: 'primary',\n loading: false,\n disabled: false,\n block: true,\n innerText: '',\n size: 'small',\n show: true,\n col: undefined,\n click: undefined,\n },\n resetBtn: {\n type: 'default',\n loading: false,\n disabled: false,\n block: true,\n innerText: '',\n size: 'small',\n show: false,\n col: undefined,\n click: undefined,\n },\n };\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {invoke} from '@form-create/core/src/frame/util';\nimport toArray from '@form-create/utils/lib/toarray';\n\nfunction tidyBtnProp(btn, def) {\n if (is.Boolean(btn))\n btn = {show: btn};\n else if (!is.Undef(btn) && !is.Object(btn)) btn = {show: def};\n return btn;\n}\n\nexport default function extendApi(api, h) {\n return {\n formEl() {\n return h.$manager.form();\n },\n wrapEl(id) {\n const ctx = h.getFieldCtx(id);\n if (!ctx) return;\n return h.vm.refs[ctx.wrapRef];\n },\n validate(callback) {\n return new Promise((resolve, reject) => {\n const forms = api.children;\n const all = [h.$manager.validate()];\n forms.filter(v=>!v.isScope).forEach(v => {\n all.push(v.validate());\n })\n Promise.all(all).then(() => {\n resolve(true);\n callback && callback(true);\n }).catch((e) => {\n reject(e);\n callback && callback(e);\n h.vm.emit('validate-fail', e, {api});\n h.emitEvent('validate-fail', e, {api});\n })\n });\n },\n validateField(field, callback) {\n return new Promise((resolve, reject) => {\n const ctx = h.getFieldCtx(field);\n if (!ctx) return;\n const sub = h.subForm[ctx.id];\n const all = [h.$manager.validateField(ctx.id)];\n toArray(sub).filter(v=>!v.isScope).forEach(v => {\n all.push(v.validate());\n })\n Promise.all(all).then(() => {\n resolve(null);\n callback && callback(null);\n }).catch((e) => {\n reject(e);\n callback && callback(e);\n h.vm.emit('validate-field-fail', e, {field, api});\n })\n });\n },\n clearValidateState(fields, clearSub = true) {\n api.helper.tidyFields(fields).forEach(field => {\n if (clearSub) this.clearSubValidateState(field);\n h.getCtxs(field).forEach(ctx => {\n h.$manager.clearValidateState(ctx);\n });\n });\n },\n clearSubValidateState(fields) {\n api.helper.tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n const subForm = h.subForm[ctx.id];\n if (!subForm) return;\n if (Array.isArray(subForm)) {\n subForm.forEach(form => {\n form.clearValidateState();\n })\n } else if (subForm) {\n subForm.clearValidateState();\n }\n });\n })\n },\n btn: {\n loading: (loading = true) => {\n api.submitBtnProps({loading: !!loading});\n },\n disabled: (disabled = true) => {\n api.submitBtnProps({disabled: !!disabled});\n },\n show: (isShow = true) => {\n api.submitBtnProps({show: !!isShow});\n }\n },\n resetBtn: {\n loading: (loading = true) => {\n api.resetBtnProps({loading: !!loading});\n },\n disabled: (disabled = true) => {\n api.resetBtnProps({disabled: !!disabled});\n },\n show: (isShow = true) => {\n api.resetBtnProps({show: !!isShow});\n }\n },\n submitBtnProps: (props = {}) => {\n let btn = tidyBtnProp(h.options.submitBtn, true);\n extend(btn, props);\n h.options.submitBtn = btn;\n api.refreshOptions();\n },\n resetBtnProps: (props = {}) => {\n let btn = tidyBtnProp(h.options.resetBtn, false);\n extend(btn, props);\n h.options.resetBtn = btn;\n api.refreshOptions();\n },\n submit(successFn, failFn) {\n return new Promise((resolve, reject) => {\n const promise = h.options.validateOnSubmit === false ? Promise.resolve() : api.validate();\n promise.then(() => {\n let formData = api.formData();\n h.beforeSubmit(formData).then(() => {\n is.Function(successFn) && invoke(() => successFn(formData, api));\n is.Function(h.options.onSubmit) && invoke(() => h.options.onSubmit(formData, api));\n h.vm.emit('submit', formData, api);\n resolve(formData);\n }).catch((e) => {})\n }).catch((...args) => {\n is.Function(failFn) && invoke(() => failFn(api, ...args));\n reject(...args)\n })\n });\n },\n };\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import is from '@form-create/utils/lib/type';\n\nconst required = {\n name: 'required',\n load(inject, rule, api) {\n const val = parseVal(inject.getValue());\n let _title = undefined;\n if (val.required === false) {\n inject.clearProp();\n api.clearValidateState([rule.field]);\n } else {\n const validate = {\n required: true,\n validator(v) {\n updateMessage();\n return !is.empty(v);\n },\n trigger: ['onChange', 'onSubmit'],\n ...val,\n };\n const updateMessage = () => {\n const title = rule.__fc__.refRule.__$title?.value;\n if (_title === title) {\n return;\n }\n _title = title;\n if (!val.message) {\n validate.message = api.t('required', {title}) || (title + (api.getLocale() === 'en' ? ' is required' : '不能为空'));\n } else {\n const match = val.message.match(/^\\{\\{\\s*\\$t\\.(.+)\\s*\\}\\}$/);\n if (match) {\n validate.message = api.t(match[1], {title});\n }\n }\n }\n updateMessage();\n inject.getProp().validate = [validate];\n }\n api.sync(rule);\n },\n watch(...args) {\n required.load(...args);\n }\n}\n\nfunction parseVal(val) {\n if (is.Boolean(val)) {\n return {required: val}\n } else if (is.String(val)) {\n return {message: val};\n } else if (is.Undef(val)) {\n return {required: false};\n } else if (is.Function(val)) {\n return {validator: val};\n } else if (!is.Object(val)) {\n return {};\n } else {\n return val;\n }\n}\n\n\nexport default required\n","import components from '../components';\nimport parsers from '../parsers';\nimport alias from './alias';\nimport manager from './manager';\nimport FormCreateFactory from '@form-create/core/src/index';\nimport '../style/index.css';\nimport extendApi from './api';\nimport required from './provider';\nimport {Field} from 'vant';\n\nfunction install(FormCreate) {\n FormCreate.componentAlias(alias);\n\n components.forEach(component => {\n FormCreate.component(component.name, component);\n });\n\n FormCreate.register(required);\n\n parsers.forEach((parser) => {\n FormCreate.parser(parser);\n });\n\n if (Field.props) {\n Field.props.modelValue = {\n type: [String, Number, Array, Object, Boolean, Function],\n default: '',\n };\n }\n}\n\nexport default function VantFormCreate() {\n return FormCreateFactory({\n ui: 'process.env.UI',\n version: 'process.env.VERSION',\n manager,\n extendApi,\n install,\n isMobile: true,\n attrs: {\n normal: ['col', 'wrap'],\n key: ['title', 'info'],\n }\n });\n}\n","import VantFormCreate from './core/index';\n\nconst FormCreateMobile = VantFormCreate();\n\nif (typeof window !== 'undefined') {\n window.formCreateMobile = FormCreateMobile;\n}\n\nconst maker = FormCreateMobile.maker;\n\nexport {maker}\n\nexport default FormCreateMobile;\n","import {functionalMerge, normalMerge, toArrayMerge} from '@form-create/utils/lib/mergeprops';\n\n\nexport const keyAttrs = ['type', 'slot', 'ignore', 'emitPrefix', 'value', 'name', 'native', 'hidden', 'display', 'inject', 'options', 'emit', 'link', 'prefix', 'suffix', 'update', 'sync', 'optionsTo', 'key', 'slotUpdate', 'computed', 'preview', 'component', 'cache', 'modelEmit'];\n\nexport const arrayAttrs = ['validate', 'children', 'control'];\n\nexport const normalAttrs = ['effect', 'deep', 'renderSlots'];\n\nexport function attrs() {\n return [...keyAttrs, ...normalMerge, ...toArrayMerge, ...functionalMerge, ...arrayAttrs, ...normalAttrs];\n}\n","import deepExtend from '@form-create/utils/lib/deepextend';\nimport is from '@form-create/utils/lib/type';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport {arrayAttrs, normalAttrs} from './attrs';\nimport {logError} from '@form-create/utils/lib/console';\nimport {isVNode} from 'vue';\nimport {upper} from '@form-create/utils/lib/toline';\nimport toCase from '@form-create/utils/lib/tocase';\n\nexport {parseJson, parseFn, toJson} from '@form-create/utils/lib/json';\n\nexport function enumerable(value, writable) {\n return {\n value,\n enumerable: false,\n configurable: false,\n writable: !!writable\n }\n}\n\n//todo 优化位置\nexport function copyRule(rule, mode) {\n return copyRules([rule], mode || false)[0];\n}\n\nexport function copyRules(rules, mode) {\n return deepExtend([], [...rules], mode || false);\n}\n\nexport function mergeRule(rule, merge) {\n mergeProps(Array.isArray(merge) ? merge : [merge], rule, {array: arrayAttrs, normal: normalAttrs});\n return rule;\n}\n\nexport function getRule(rule) {\n const r = is.Function(rule.getRule) ? rule.getRule() : rule;\n if (!r.type) {\n r.type = 'input';\n }\n return r;\n}\n\nexport function mergeGlobal(target, merge) {\n if (!target) return merge;\n Object.keys(merge || {}).forEach((k) => {\n if (merge[k]) {\n target[k] = mergeRule(target[k] || {}, merge[k])\n }\n });\n return target;\n}\n\nexport function funcProxy(that, proxy) {\n Object.defineProperties(that, Object.keys(proxy).reduce((initial, k) => {\n initial[k] = {\n get() {\n return proxy[k]();\n }\n }\n return initial;\n }, {}))\n}\n\nexport function byCtx(rule) {\n return rule.__fc__ || (rule.__origin__ ? rule.__origin__.__fc__ : null)\n}\n\nexport function invoke(fn, def) {\n try {\n def = fn()\n } catch (e) {\n logError(e);\n }\n return def;\n}\n\nexport function makeSlotBag() {\n const slotBag = {};\n const slotName = (n) => n || 'default';\n\n return {\n setSlot(slot, vnFn) {\n slot = slotName(slot);\n if (!vnFn || (Array.isArray(vnFn) && vnFn.length))\n return;\n if (!slotBag[slot]) slotBag[slot] = [];\n slotBag[slot].push(vnFn);\n },\n getSlot(slot, val) {\n slot = slotName(slot);\n const children = [];\n (slotBag[slot] || []).forEach(fn => {\n if (Array.isArray(fn)) {\n children.push(...fn);\n } else if (is.Function(fn)) {\n const res = fn(...(val || []));\n if (Array.isArray(res)) {\n children.push(...res);\n } else {\n children.push(res);\n }\n } else if (!is.Undef(fn)) {\n children.push(fn);\n }\n })\n return children;\n },\n getSlots() {\n const slots = {};\n Object.keys(slotBag).forEach(k => {\n slots[k] = (...args) => {\n return this.getSlot(k, args);\n }\n })\n return slots\n },\n slotLen(slot) {\n slot = slotName(slot);\n return slotBag[slot] ? slotBag[slot].length : 0;\n },\n mergeBag(bag) {\n if (!bag) return this;\n const slots = is.Function(bag.getSlots) ? bag.getSlots() : bag;\n if (Array.isArray(bag) || isVNode(bag)) {\n this.setSlot(undefined, () => bag);\n } else {\n Object.keys(slots).forEach(k => {\n this.setSlot(k, slots[k]);\n });\n }\n\n return this;\n }\n };\n}\n\nexport function toProps(rule) {\n const prop = {...(rule.props || {})};\n\n Object.keys(rule.on || {}).forEach(k => {\n if (k.indexOf('-') > 0) {\n k = toCase(k);\n }\n const name = `on${upper(k)}`;\n if (Array.isArray(prop[name])) {\n prop[name] = [...prop[name], rule.on[k]];\n } else if (prop[name]) {\n prop[name] = [prop[name], rule.on[k]];\n } else {\n prop[name] = rule.on[k];\n }\n })\n prop.key = rule.key;\n prop.ref = rule.ref;\n prop.class = rule.class;\n prop.id = rule.id;\n prop.style = rule.style;\n if (prop.slot) delete prop.slot;\n\n return prop;\n}\n\nexport function setPrototypeOf(o, proto) {\n Object.setPrototypeOf(o, proto);\n return o;\n}\n\n\nconst changeType = (a, b) => {\n if (typeof a === 'string') {\n return String(b);\n } else if (typeof a === 'number') {\n return Number(b);\n }\n return b;\n}\n\nexport const condition = {\n '==': (a, b) => {\n return JSON.stringify(a) === JSON.stringify(changeType(a, b));\n },\n '!=': (a, b) => {\n return !condition['=='](a, b);\n },\n '>': (a, b) => {\n return a > b;\n },\n '>=': (a, b) => {\n return a >= b;\n },\n '<': (a, b) => {\n return a < b;\n },\n '<=': (a, b) => {\n return a <= b;\n },\n on(a, b) {\n return a && a.indexOf && a.indexOf(changeType(a[0], b)) > -1;\n },\n notOn(a, b) {\n return !condition.on(a, b);\n },\n in(a, b) {\n return b && b.indexOf && b.indexOf(a) > -1;\n },\n notIn(a, b) {\n return !condition.in(a, b);\n },\n between(a, b) {\n return a > b[0] && a < b[1];\n },\n notBetween(a, b) {\n return a < b[0] || a > b[1];\n },\n empty(a) {\n return is.empty(a);\n },\n notEmpty(a) {\n return !is.empty(a);\n },\n pattern(a, b) {\n return new RegExp(b, 'g').test(a);\n }\n};\n\nexport function deepGet(val, split) {\n (Array.isArray(split) ? split : (split || '').split('.')).forEach(k => {\n if (val != null) {\n val = val[k];\n }\n });\n return val;\n}\n\nexport function extractVar(str) {\n const regex = /{{\\s*(.*?)\\s*}}/g;\n let match;\n const matches = {};\n while ((match = regex.exec(str)) !== null) {\n if (match[1]) {\n matches[match[1]] = true;\n }\n }\n return Object.keys(matches);\n}\n\nexport function convertFieldToConditions(field) {\n let parts = field.split('.');\n let conditions = [];\n let currentCondition = '';\n\n parts.forEach((part, index) => {\n if (index === 0) {\n currentCondition = part;\n } else {\n currentCondition += '.' + part;\n }\n conditions.push(currentCondition);\n });\n\n return conditions.join(' && ');\n}\n\nexport function parseTemplateToTree(template) {\n const tokens = [];\n let current = '';\n let depth = 0;\n\n for (let i = 0; i < template.length; i++) {\n const char = template[i];\n\n if (char === '[') {\n if (depth === 0 && current) {\n tokens.push({type: 'key', value: current});\n current = '';\n }\n depth++;\n current += char;\n } else if (char === ']') {\n depth--;\n current += char;\n\n if (depth === 0) {\n tokens.push({\n type: 'bracket',\n value: parseTemplateToTree(current.slice(1, -1))\n });\n current = '';\n }\n } else if (char === '.' && depth === 0) {\n if (current) {\n tokens.push({type: 'key', value: current});\n current = '';\n }\n } else {\n current += char;\n }\n }\n\n if (current) {\n tokens.push({type: 'key', value: current});\n }\n\n return tokens.map(token => {\n if (token.type === 'key') {\n return {key: token.value};\n } else {\n return {children: token.value};\n }\n });\n}\n","import {\n defineComponent,\n getCurrentInstance,\n inject,\n markRaw,\n nextTick,\n onBeforeMount,\n onBeforeUnmount,\n onMounted,\n onUpdated,\n provide,\n reactive,\n toRefs,\n watch, watchEffect\n} from 'vue';\nimport toArray from '@form-create/utils/lib/toarray';\nimport debounce from '@form-create/utils/lib/debounce';\nimport toLine from '@form-create/utils/lib/toline';\nimport {toJson} from '../frame/util';\n\nconst getGroupInject = (vm, parent) => {\n if (!vm || vm === parent) {\n return;\n }\n if (vm.props.formCreateInject) {\n return vm.props.formCreateInject\n }\n if (vm.parent) {\n return getGroupInject(vm.parent, parent);\n }\n}\n\nexport default function $FormCreate(FormCreate, components, directives) {\n return defineComponent({\n name: 'FormCreate' + (FormCreate.isMobile ? 'Mobile' : ''),\n components,\n directives,\n props: {\n rule: {\n type: Array,\n required: true,\n default: () => []\n },\n option: {\n type: Object,\n default: () => ({})\n },\n extendOption: Boolean,\n driver: [String, Object],\n modelValue: Object,\n disabled: {\n type: Boolean,\n default: undefined,\n },\n preview: {\n type: Boolean,\n default: undefined,\n },\n index: [String, Number],\n api: Object,\n locale: [String, Object],\n t: Function,\n name: String,\n subForm: {\n type: Boolean,\n default: true\n },\n inFor: Boolean,\n },\n emits: ['update:api', 'update:modelValue', 'mounted', 'submit', 'reset', 'change', 'emit-event', 'control', 'remove-rule', 'remove-field', 'sync', 'reload', 'repeat-field', 'update', 'validate-field-fail', 'validate-fail', 'created'],\n render() {\n return this.fc.render();\n },\n setup(props) {\n const vm = getCurrentInstance();\n provide('parentFC', vm);\n const parent = inject('parentFC', null);\n let top = parent;\n\n if (parent) {\n while (top.setupState.parent) {\n top = top.setupState.parent;\n }\n } else {\n top = vm;\n }\n\n const {rule, modelValue, subForm, inFor} = toRefs(props);\n\n const data = reactive({\n ctxInject: {},\n destroyed: false,\n isShow: true,\n unique: 1,\n renderRule: [...rule.value || []],\n updateValue: JSON.stringify(modelValue.value || {}),\n });\n\n const fc = new FormCreate(vm);\n const fapi = fc.api();\n\n const isMore = inFor.value;\n\n const addSubForm = () => {\n if (parent) {\n const inject = getGroupInject(vm, parent);\n if (inject) {\n let sub;\n if (isMore) {\n sub = toArray(inject.getSubForm());\n sub.push(fapi);\n\n } else {\n sub = fapi;\n }\n inject.subForm(sub);\n }\n }\n };\n\n const rmSubForm = () => {\n const inject = getGroupInject(vm, parent);\n if (inject) {\n if (isMore) {\n const sub = toArray(inject.getSubForm());\n const idx = sub.indexOf(fapi);\n if (idx > -1) {\n sub.splice(idx, 1);\n }\n } else {\n inject.subForm();\n }\n }\n };\n\n let styleEl = null;\n\n onBeforeMount(() => {\n watchEffect(() => {\n let content = '';\n const globalClass = (props.option && props.option.globalClass) || {};\n Object.keys(globalClass).forEach(k => {\n let subCss = '';\n globalClass[k].style && Object.keys(globalClass[k].style).forEach(key => {\n subCss += toLine(key) + ':' + globalClass[k].style[key] + ';';\n });\n if (globalClass[k].content) {\n subCss += globalClass[k].content + ';';\n }\n if (subCss) {\n content += `.${k}{${subCss}}`;\n }\n });\n if (props.option && props.option.style) {\n content += props.option.style;\n }\n if (!styleEl) {\n styleEl = document.createElement('style');\n styleEl.type = 'text/css';\n document.head.appendChild(styleEl);\n }\n styleEl.innerHTML = content || '';\n })\n });\n\n const emit$topForm = debounce(() => {\n fc.bus.$emit('$loadData.$topForm');\n }, 100);\n\n const emit$scopeForm = debounce(function () {\n fc.bus.$emit('$loadData.$scopeForm');\n }, 100);\n\n const emit$form = debounce(() => {\n fc.bus.$emit('$loadData.$form');\n }, 100);\n\n const emit$change = (field) => {\n fc.bus.$emit('change-$form.' + field);\n };\n\n onMounted(() => {\n if (parent) {\n fapi.top.bus.$on('$loadData.$form', emit$topForm);\n fapi.top.bus.$on('change', emit$change);\n }\n if (fapi !== fapi.scope) {\n fapi.scope.bus.$on('$loadData.$scopeForm', emit$scopeForm);\n }\n fc.mounted();\n });\n\n onBeforeUnmount(() => {\n if (parent) {\n fapi.top.bus.$off('$loadData.$form', emit$topForm);\n fapi.top.bus.$off('change', emit$change);\n }\n if (fapi !== fapi.scope) {\n fapi.scope.bus.$off('$loadData.$scopeForm', emit$scopeForm);\n }\n rmSubForm();\n data.destroyed = true;\n fc.unmount();\n styleEl && (styleEl.parentNode || styleEl.parentElement) && document.head.removeChild(styleEl);\n })\n\n onUpdated(() => {\n fc.updated();\n });\n\n addSubForm();\n\n watch(() => props.option, () => {\n fc.initOptions();\n fapi.refresh();\n }, {deep: true, flush: 'sync'});\n\n watch(() => [...rule.value], (n) => {\n if (fc.$handle.isBreakWatch() || n.length === data.renderRule.length && n.every(v => data.renderRule.indexOf(v) > -1)) return;\n fc.$handle.updateAppendData();\n fc.$handle.reloadRule(rule.value);\n vm.setupState.renderRule();\n })\n\n watch(() => [props.disabled, props.preview], () => {\n fapi.refresh();\n });\n\n watch(modelValue, (n) => {\n if (toJson(n || {}) === data.updateValue) return;\n if (fapi.config.forceCoverValue) {\n fapi.coverValue(n || {});\n } else {\n fapi.setValue(n || {});\n }\n }, {deep: true, flush: 'post'});\n\n watch(() => props.index, () => {\n fapi.coverValue({});\n fc.$handle.updateAppendData();\n nextTick(() => {\n nextTick(() => {\n fapi.clearValidateState();\n });\n });\n }, {flush: 'sync'});\n\n return {\n fc: markRaw(fc),\n parent: parent ? markRaw(parent) : parent,\n top: markRaw(top),\n fapi: markRaw(fapi),\n ...toRefs(data),\n getGroupInject: () => getGroupInject(vm, parent),\n refresh() {\n ++data.unique;\n },\n renderRule() {\n data.renderRule = [...rule.value || []];\n },\n updateValue(value) {\n if (data.destroyed) return;\n const json = toJson(value);\n if (data.updateValue === json) {\n return;\n }\n data.updateValue = json;\n vm.emit('update:modelValue', value);\n nextTick(() => {\n emit$form();\n if (!parent) {\n emit$topForm();\n emit$scopeForm();\n } else if (!subForm.value) {\n emit$scopeForm();\n }\n });\n }\n }\n },\n created() {\n const vm = getCurrentInstance();\n vm.emit('update:api', vm.setupState.fapi);\n vm.setupState.fc.init();\n },\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {attrs} from '../frame/attrs';\nimport {copyRule, mergeRule} from '../frame/util';\nimport {$set} from '@form-create/utils/lib/modify';\n\nexport function baseRule() {\n return {\n props: {},\n on: {},\n options: [],\n children: [],\n hidden: false,\n display: true,\n value: undefined,\n };\n}\n\nexport function creatorFactory(name, init) {\n return (title, field, value, props = {}) => {\n const maker = new Creator(name, title, field, value, props);\n if (init) {\n if (is.Function(init)) init(maker);\n else maker.props(init);\n }\n return maker;\n };\n}\n\nexport default function Creator(type, title, field, value, props) {\n this._data = extend(baseRule(), {type, title, field, value, props: props || {}});\n this.event = this.on;\n}\n\nextend(Creator.prototype, {\n getRule() {\n return this._data;\n },\n setProp(key, value) {\n $set(this._data, key, value);\n return this;\n },\n modelField(field) {\n this._data.modelField = field;\n return this;\n },\n _clone() {\n const clone = new this.constructor();\n clone._data = copyRule(this._data);\n return clone;\n },\n})\n\nexport function appendProto(attrs) {\n attrs.forEach(name => {\n Creator.prototype[name] = function (key) {\n mergeRule(this._data, {[name]: arguments.length < 2 ? key : {[key]: arguments[1]}})\n return this;\n };\n });\n}\n\nappendProto(attrs());\n","import {creatorFactory} from './creator';\n\nconst commonMaker = creatorFactory('');\n\nexport function create(type, field, title) {\n let make = commonMaker('', field);\n make._data.type = type;\n make._data.title = title;\n return make;\n}\n\nexport default function makerFactory() {\n return {\n create,\n factory: creatorFactory\n };\n}\n","// https://github.com/ElemeFE/element/blob/dev/packages/upload/src/ajax.js\n\nimport is from '@form-create/utils/lib/type';\nimport {parseFn} from '@form-create/utils/lib/json';\nimport {deepGet} from './util';\nimport {toPromise} from '@form-create/utils';\n\nfunction getError(action, option, xhr) {\n const msg = `fail to ${action} ${xhr.status}'`;\n const err = new Error(msg);\n err.status = xhr.status;\n err.url = action;\n return err;\n}\n\nfunction getBody(xhr) {\n const text = xhr.responseText || xhr.response;\n if (!text) {\n return text;\n }\n\n try {\n return JSON.parse(text);\n } catch (e) {\n return text;\n }\n}\n\nexport default function fetch(option) {\n if (typeof XMLHttpRequest === 'undefined') {\n return;\n }\n\n const xhr = new XMLHttpRequest();\n let action = option.action || '';\n\n if (xhr.upload && option.onProgress) {\n xhr.upload.addEventListener('progress', (evt) => {\n evt.percent = evt.total > 0 ? (evt.loaded / evt.total) * 100 : 0\n option.onProgress(evt)\n })\n }\n\n if (option.query) {\n const query = is.String(option.query) ? option.query : Object.keys(option.query).reduce((acc, key) => {\n acc[key] = (option.query[key] === null || option.query[key] === undefined) ? '' : option.query[key];\n return acc;\n }, {});\n const queryString = new URLSearchParams(query).toString();\n if (queryString) {\n if (action.includes('?')) {\n action += `&${queryString}`;\n } else {\n action += `?${queryString}`;\n }\n }\n }\n\n xhr.onerror = function error(e) {\n option.onError(e);\n };\n\n xhr.onload = function onload() {\n if (xhr.status < 200 || xhr.status >= 300) {\n return option.onError(getError(action, option, xhr), getBody(xhr));\n }\n\n option.onSuccess(getBody(xhr));\n };\n\n xhr.open(option.method || 'get', action, true);\n\n let formData;\n if (option.data || option.file) {\n if (option.file || (option.dataType || '').toLowerCase() !== 'json') {\n formData = new FormData();\n Object.keys(option.data || {}).map(key => {\n formData.append(key, option.data[key]);\n });\n } else {\n formData = JSON.stringify(option.data || {});\n xhr.setRequestHeader('content-type', 'application/json');\n }\n }\n\n if(option.file){\n formData.append(option.filename, option.file, option.file.name)\n }\n\n if (option.withCredentials && 'withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n const headers = option.headers || {};\n\n Object.keys(headers).forEach(item => {\n if (headers[item] != null) {\n xhr.setRequestHeader(item, headers[item]);\n }\n });\n xhr.send(formData);\n}\n\n\nexport function asyncFetch(config, _fetch, api) {\n return new Promise((resolve, reject) => {\n (_fetch || fetch)({\n ...config,\n onSuccess(res) {\n let fn = (v) => v;\n const parse = parseFn(config.parse);\n if (is.Function(parse)) {\n fn = parse;\n } else if (parse && is.String(parse)) {\n fn = (v) => {\n return deepGet(v, parse);\n }\n }\n toPromise(fn(res, config.targetRule, api)).then(res => {\n resolve(res);\n });\n },\n onError(err) {\n reject(err);\n }\n })\n });\n}","import {byCtx, invoke, mergeRule, parseFn, toJson} from './util';\nimport {$set} from '@form-create/utils/lib/modify';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport extend from '@form-create/utils/lib/extend';\nimport {format} from '@form-create/utils/lib/console';\nimport {asyncFetch} from './fetch';\nimport {nextTick} from 'vue';\n\n\nfunction copy(value) {\n return deepCopy(value);\n}\n\nexport default function Api(h) {\n\n function tidyFields(fields) {\n if (is.Undef(fields))\n fields = h.fields();\n else if (!Array.isArray(fields))\n fields = [fields];\n return fields;\n }\n\n function props(fields, key, val) {\n if (is.Undef(fields)) {\n fields = Object.keys({...h.fieldCtx, ...h.nameCtx});\n } else if (!Array.isArray(fields)) {\n fields = [fields];\n }\n fields.forEach(field => {\n const ctxs = h.fieldCtx[field] || h.nameCtx[field];\n ctxs && ctxs.forEach(ctx => {\n $set(ctx.rule, key, val);\n h.$render.clearCache(ctx);\n });\n })\n }\n\n function allSubForm() {\n const subs = h.subForm;\n return Object.keys(subs).reduce((initial, k) => {\n const sub = subs[k];\n if (!sub) return initial;\n if (Array.isArray(sub))\n initial.push(...sub);\n else\n initial.push(sub);\n return initial;\n }, []);\n }\n\n const api = {\n get isScope() {\n return h.vm.props.subForm === false;\n },\n get isPreview() {\n return h.preview;\n },\n get config() {\n return h.options\n },\n set config(val) {\n h.fc.options.value = val;\n },\n get options() {\n return h.options\n },\n set options(val) {\n h.fc.options.value = val;\n },\n get form() {\n return h.form\n },\n get rule() {\n return h.rules\n },\n get parent() {\n return h.vm.setupState.parent && h.vm.setupState.parent.setupState.fapi\n },\n get top() {\n if (api.parent) {\n return api.parent.top;\n }\n return api;\n },\n get scope() {\n let parent = h.vm;\n while (parent && parent.setupState.fapi) {\n if (!parent.props.subForm) {\n return parent.setupState.fapi;\n } else {\n parent = parent.setupState.parent;\n }\n }\n return api.top;\n },\n get children() {\n return allSubForm();\n },\n get siblings() {\n const inject = h.vm.setupState.getGroupInject();\n if (inject) {\n const subForm = inject.getSubForm();\n if (Array.isArray(subForm)) {\n return [...subForm];\n }\n }\n return undefined;\n },\n get index() {\n const siblings = api.siblings;\n if (siblings) {\n const idx = siblings.indexOf(api);\n return idx > -1 ? idx : undefined;\n }\n return undefined;\n },\n get formulas() {\n return {...h.fc.formulas};\n },\n formData(fields) {\n if (fields == null || typeof fields === 'boolean') {\n const data = {};\n Object.keys(h.form).forEach(k => {\n if (fields === true || h.ignoreFields.indexOf(k) === -1) {\n data[k] = copy(h.form[k]);\n }\n });\n return data;\n } else {\n return tidyFields(fields).reduce((initial, id) => {\n initial[id] = api.getValue(id);\n return initial;\n }, {});\n }\n },\n getValue(field) {\n const ctx = h.getFieldCtx(field);\n if (!ctx) {\n if (h.options.appendValue !== false && hasProperty(h.appendData, field)) {\n return copy(h.appendData[field]);\n }\n return undefined;\n }\n return copy(ctx.rule.value);\n },\n coverValue(formData) {\n const data = {...(formData || {})};\n h.deferSyncValue(() => {\n h.appendData = {};\n api.fields().forEach(key => {\n const ctxs = h.fieldCtx[key];\n if (ctxs) {\n const flag = hasProperty(formData, key);\n ctxs.forEach(ctx => {\n ctx.rule.value = flag ? formData[key] : undefined;\n })\n delete data[key];\n }\n });\n extend(h.appendData, data);\n }, true)\n },\n setValue(field) {\n let formData = field;\n if (arguments.length >= 2)\n formData = {[field]: arguments[1]};\n h.deferSyncValue(() => {\n Object.keys(formData).forEach(key => {\n const ctxs = h.fieldCtx[key];\n if (!ctxs) return h.appendData[key] = formData[key];\n ctxs.forEach(ctx => {\n ctx.rule.value = formData[key];\n });\n });\n }, true)\n },\n removeField(field) {\n const ctx = h.getCtx(field);\n h.deferSyncValue(() => {\n h.getCtxs(field).forEach(ctx => {\n ctx.rm();\n });\n }, true);\n return ctx ? ctx.origin : undefined;\n },\n removeRule(rule) {\n const ctx = rule && byCtx(rule);\n if (!ctx) return;\n ctx.rm();\n return ctx.origin;\n },\n fields: () => h.fields(),\n append: (rule, after, child) => {\n let index = h.sort.length - 1, rules;\n const ctx = h.getCtx(after);\n\n if (ctx) {\n if (child) {\n rules = ctx.getPending('children', ctx.rule.children);\n if (!Array.isArray(rules)) return;\n index = ctx.rule.children.length - 1;\n } else {\n index = ctx.root.indexOf(ctx.origin);\n rules = ctx.root;\n }\n } else rules = h.rules;\n rules.splice(index + 1, 0, rule);\n },\n prepend: (rule, after, child) => {\n let index = 0, rules;\n const ctx = h.getCtx(after);\n\n if (ctx) {\n if (child) {\n rules = ctx.getPending('children', ctx.rule.children);\n if (!Array.isArray(rules)) return;\n } else {\n index = ctx.root.indexOf(ctx.origin);\n rules = ctx.root;\n }\n } else rules = h.rules;\n rules.splice(index, 0, rule);\n },\n hidden(state, fields) {\n props(fields, 'hidden', !!state);\n h.refresh();\n },\n hiddenStatus(id) {\n const ctx = h.getCtx(id);\n if (!ctx) return;\n return !!ctx.rule.hidden;\n },\n display(state, fields) {\n props(fields, 'display', !!state);\n h.refresh();\n },\n displayStatus(id) {\n const ctx = h.getCtx(id);\n if (!ctx) return;\n return !!ctx.rule.display;\n },\n disabled(disabled, fields) {\n tidyFields(fields).forEach((field) => {\n h.getCtxs(field).forEach(ctx => {\n $set(ctx.rule.props, 'disabled', !!disabled);\n });\n });\n h.refresh();\n },\n all(origin) {\n return Object.keys(h.ctxs).map(k => {\n const ctx = h.ctxs[k];\n return origin ? ctx.origin : ctx.rule;\n });\n },\n model(origin) {\n return h.fields().reduce((initial, key) => {\n const ctx = h.fieldCtx[key][0];\n initial[key] = origin ? ctx.origin : ctx.rule;\n return initial;\n }, {});\n },\n component(origin) {\n return Object.keys(h.nameCtx).reduce((initial, key) => {\n const ctx = h.nameCtx[key].map(ctx => origin ? ctx.origin : ctx.rule);\n initial[key] = ctx.length === 1 ? ctx[0] : ctx;\n return initial;\n }, {});\n },\n bind() {\n return api.form;\n },\n reload: (rules) => {\n h.reloadRule(rules)\n },\n updateOptions(options) {\n h.fc.updateOptions(options);\n api.refresh();\n },\n onSubmit(fn) {\n api.updateOptions({onSubmit: fn});\n },\n sync: (field) => {\n if (Array.isArray(field)) {\n field.forEach(v => api.sync(v));\n return;\n }\n let ctxs = is.Object(field) ? byCtx(field) : h.getCtxs(field);\n if (!ctxs) {\n return;\n }\n ctxs = Array.isArray(ctxs) ? ctxs : [ctxs];\n ctxs.forEach(ctx => {\n if (!ctx.deleted) {\n const subForm = h.subForm[ctx.id];\n if (subForm) {\n if (Array.isArray(subForm)) {\n subForm.forEach(form => {\n form.refresh();\n })\n } else if (subForm) {\n subForm.refresh();\n }\n }\n //ctx.updateKey(true);\n h.$render.clearCache(ctx);\n }\n });\n h.refresh();\n },\n refresh: () => {\n allSubForm().forEach(sub => {\n sub.refresh();\n });\n h.$render.clearCacheAll();\n h.refresh();\n },\n refreshOptions() {\n h.$manager.updateOptions(h.options);\n api.refresh();\n },\n hideForm: (hide) => {\n h.vm.setupState.isShow = !hide;\n },\n changeStatus: () => {\n return h.changeStatus;\n },\n clearChangeStatus: () => {\n h.changeStatus = false;\n },\n updateRule(id, rule) {\n h.getCtxs(id).forEach(ctx => {\n extend(ctx.rule, rule);\n });\n },\n updateRules(rules) {\n Object.keys(rules).forEach(id => {\n api.updateRule(id, rules[id]);\n })\n },\n mergeRule: (id, rule) => {\n h.getCtxs(id).forEach(ctx => {\n mergeRule(ctx.rule, rule);\n });\n },\n mergeRules(rules) {\n Object.keys(rules).forEach(id => {\n api.mergeRule(id, rules[id]);\n })\n },\n getRule: (id, origin) => {\n const ctx = h.getCtx(id);\n if (ctx) {\n return origin ? ctx.origin : ctx.rule;\n }\n },\n findType(type, origin) {\n let rule = undefined;\n Object.keys(h.ctxs).forEach(k => {\n const ctx = h.ctxs[k];\n if (ctx.rule.type === type) {\n rule = origin ? ctx.origin : ctx.rule;\n }\n });\n return rule;\n },\n findTypes(type, origin) {\n let rules = [];\n Object.keys(h.ctxs).forEach(k => {\n const ctx = h.ctxs[k];\n if (ctx.rule.type === type) {\n rules.push(origin ? ctx.origin : ctx.rule);\n }\n });\n return rules;\n },\n getRenderRule: (id) => {\n const ctx = h.getCtx(id);\n if (ctx) {\n return ctx.prop;\n }\n },\n getRefRule: (id) => {\n const ctxs = h.getCtxs(id);\n if (ctxs) {\n const rules = ctxs.map(ctx => {\n return ctx.rule;\n })\n return rules.length === 1 ? rules[0] : rules;\n }\n },\n setEffect(id, attr, value) {\n const ctx = h.getCtx(id);\n if (ctx && attr) {\n if (attr[0] === '$') {\n attr = attr.substr(1);\n }\n if (hasProperty(ctx.rule, '$' + attr)) {\n $set(ctx.rule, '$' + attr, value);\n }\n if (!hasProperty(ctx.rule, 'effect')) {\n ctx.rule.effect = {};\n }\n $set(ctx.rule.effect, attr, value);\n }\n },\n clearEffectData(id, attr) {\n const ctx = h.getCtx(id);\n if (ctx) {\n if (attr && attr[0] === '$') {\n attr = attr.substr(1);\n }\n ctx.clearEffectData(attr);\n api.sync(id);\n }\n },\n updateValidate(id, validate, merge) {\n if (merge) {\n api.mergeRule(id, {validate})\n } else {\n props(id, 'validate', validate);\n }\n },\n updateValidates(validates, merge) {\n Object.keys(validates).forEach(id => {\n api.updateValidate(id, validates[id], merge);\n })\n },\n refreshValidate() {\n api.refresh();\n },\n resetFields(fields) {\n tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n h.$render.clearCache(ctx);\n ctx.rule.value = copy(ctx.defaultValue);\n });\n });\n nextTick(() => {\n nextTick(() => {\n nextTick(() => {\n api.clearValidateState(fields);\n });\n });\n });\n if (fields == null) {\n is.Function(h.options.onReset) && invoke(() => h.options.onReset(api));\n h.vm.emit('reset', api);\n }\n },\n method(id, name) {\n const el = api.el(id);\n if (!el || !el[name])\n throw new Error(format('err', `${name} 方法不存在`));\n return (...args) => {\n return el[name](...args);\n }\n },\n exec(id, name, ...args) {\n return invoke(() => api.method(id, name)(...args));\n },\n toJson(space) {\n return toJson(api.rule, space);\n },\n trigger(id, event, ...args) {\n const el = api.el(id);\n el && el.$emit(event, ...args);\n },\n el(id) {\n const ctx = h.getCtx(id);\n if (ctx) return ctx.el || h.vm.refs[ctx.ref];\n },\n closeModal: (id) => {\n h.bus.$emit('fc:closeModal:' + id);\n },\n getSubForm(field) {\n const ctx = h.getCtx(field);\n return ctx ? h.subForm[ctx.id] : undefined;\n },\n getChildrenRuleList(id) {\n const flag = typeof id === 'object';\n const ctx = flag ? byCtx(id) : h.getCtx(id);\n const rule = ctx ? ctx.rule : (flag ? id : api.getRule(id));\n if (!rule) {\n return [];\n }\n const rules = [];\n const findRules = children => {\n children && children.forEach(item => {\n if (typeof item !== 'object') {\n return;\n }\n if (item.field) {\n rules.push(item);\n }\n rules.push(...api.getChildrenRuleList(item));\n });\n }\n findRules(ctx ? ctx.loadChildrenPending() : rule.children);\n return rules;\n },\n getParentRule(id) {\n const flag = typeof id === 'object';\n const ctx = flag ? byCtx(id) : h.getCtx(id);\n return ctx.parent.rule;\n },\n getParentSubRule(id) {\n const flag = typeof id === 'object';\n const ctx = flag ? byCtx(id) : h.getCtx(id);\n if (ctx) {\n const group = ctx.getParentGroup();\n if (group) {\n return group.rule;\n }\n }\n },\n getChildrenFormData(id, flag) {\n const rules = api.getChildrenRuleList(id);\n return rules.reduce((formData, rule) => {\n if (rule.ignore !== true || flag === true) {\n formData[rule.field] = copy(rule.value);\n }\n return formData;\n }, {});\n },\n setChildrenFormData(id, formData, cover) {\n const rules = api.getChildrenRuleList(id);\n h.deferSyncValue(() => {\n rules.forEach(rule => {\n if (hasProperty(formData, rule.field)) {\n rule.value = formData[rule.field];\n } else if (cover) {\n rule.value = undefined;\n }\n });\n });\n },\n getGlobalEvent(name) {\n let event = api.options.globalEvent[name];\n if (event) {\n if (typeof event === 'object') {\n event = event.handle;\n }\n return parseFn(event);\n }\n return undefined;\n },\n getGlobalData(name) {\n return new Promise((resolve, inject) => {\n let config = api.options.globalData[name];\n if (!config) {\n resolve(h.fc.loadData[name]);\n } else if (config.type === 'fetch') {\n api.fetch(config).then(res => {\n resolve(res);\n }).catch(inject);\n } else {\n resolve(config.data);\n }\n });\n },\n emitGlobalEvent(name, ...args) {\n const fn = api.getGlobalEvent(name);\n if(fn) {\n const data = h.getInjectData({}, undefined);\n data.args = [...args];\n args.unshift(data);\n return fn.apply(null, args);\n }\n },\n setGlobalData(name, value) {\n api.setData('$globalData.' + name, value);\n },\n setGlobalVar(name, value) {\n api.setData('$var.' + name, value);\n },\n renderRule(id, onInput, force) {\n const flag = typeof id === 'object';\n const ctx = flag ? byCtx(id) : h.getCtx(id);\n return ctx ? h.$render.createRuleVnode(ctx, onInput, force) : undefined;\n },\n renderChildren(id, onInput, force) {\n const flag = typeof id === 'object';\n const ctx = flag ? byCtx(id) : h.getCtx(id);\n return ctx ? h.$render.createChildrenVnodes(ctx, onInput, force) : undefined;\n },\n nextTick(fn) {\n h.bus.$once('next-tick', fn);\n h.refresh();\n },\n nextRefresh(fn) {\n h.nextRefresh();\n fn && invoke(fn);\n },\n deferSyncValue(fn, sync) {\n h.deferSyncValue(fn, sync);\n },\n emit(name, ...args) {\n if (h.vm.emitsOptions && !h.vm.emitsOptions[name]) {\n h.vm.emitsOptions[name] = null;\n }\n h.vm.emit(name, ...args);\n },\n bus: h.bus,\n getCurrentFormRule() {\n return h.vm.setupState.getGroupInject()?.rule;\n },\n fetch(opt) {\n return new Promise((resolve, reject) => {\n opt = deepCopy(opt);\n opt = h.loadFetchVar(opt);\n const fail = (e) => {\n invoke(() => opt.onError && opt.onError(e));\n reject(e);\n }\n h.beforeFetch(opt).then(() => {\n return asyncFetch(opt, h.fc.create.fetch, api).then((res) => {\n invoke(() => opt.onSuccess && opt.onSuccess(res));\n resolve(res);\n }).catch((e) => {\n fail(e);\n });\n }).catch(e => {\n fail(e);\n });\n });\n },\n watchFetch(opt, callback, error, beforeFetch) {\n return h.fc.watchLoadData((get, change) => {\n let _opt = deepCopy(opt);\n _opt = h.loadFetchVar(_opt, get);\n if (beforeFetch && beforeFetch(_opt, change) === false) {\n return;\n }\n const fail = (e) => {\n invoke(() => _opt.onError && _opt.onError(e));\n error && error(e);\n }\n h.beforeFetch(_opt).then(() => {\n return asyncFetch(_opt, h.fc.create.fetch, api).then(res => {\n invoke(() => _opt.onSuccess && _opt.onSuccess(res));\n callback && callback(res, change);\n }).catch(e => {\n fail(e);\n });\n }).catch(e => {\n fail(e);\n });\n }, opt.wait == null ? 1000 : opt.wait);\n },\n getData(id, def) {\n if (h.fc.get) {\n return h.fc.get(id, def);\n } else {\n return h.fc.getLoadData(id, def);\n }\n },\n watchData(fn) {\n return h.fc.watchLoadData((get, change) => {\n invoke(() => fn(get, change));\n })\n },\n setData(id, data, isGlobal) {\n return h.fc.setData(id, data, isGlobal);\n },\n refreshData(id) {\n return h.fc.refreshData(id);\n },\n t(id, params) {\n return h.fc.t(id, params);\n },\n getLocale() {\n return h.fc.getLocale();\n },\n helper: {\n tidyFields, props\n }\n };\n\n ['on', 'once', 'off'].forEach(n => {\n api[n] = function (...args) {\n h.bus[`$${n}`](...args);\n }\n });\n\n api.changeValue = api.changeField = api.setValue;\n\n return api;\n}\n","import useCache from './cache';\nimport useRender from './render';\nimport extend from '@form-create/utils/lib/extend';\nimport {funcProxy} from '../frame/util';\n\nlet id = 1;\nexport default function Render(handle) {\n extend(this, {\n $handle: handle,\n fc: handle.fc,\n vm: handle.vm,\n $manager: handle.$manager,\n vNode: new handle.fc.CreateNode(handle),\n force: false,\n tmpInput: null,\n id: id++\n });\n\n funcProxy(this, {\n options() {\n return handle.options;\n },\n sort() {\n return handle.sort;\n }\n })\n\n this.initCache();\n this.initRender();\n}\n\nuseCache(Render);\nuseRender(Render)\n","import extend from '@form-create/utils/lib/extend';\n\nexport default function useCache(Render) {\n extend(Render.prototype, {\n initCache() {\n this.clearCacheAll();\n },\n clearCache(ctx) {\n if (ctx.rule.cache) {\n return;\n }\n if (!this.cache[ctx.id]) {\n if (ctx.parent) {\n this.clearCache(ctx.parent);\n }\n return;\n }\n if (this.cache[ctx.id].use === true || this.cache[ctx.id].parent) {\n this.$handle.refresh();\n }\n if (this.cache[ctx.id].parent) {\n this.clearCache(this.cache[ctx.id].parent);\n }\n this.cache[ctx.id] = null;\n },\n clearCacheAll() {\n this.cache = {};\n },\n setCache(ctx, vnode, parent) {\n this.cache[ctx.id] = {\n vnode,\n use: false,\n parent,\n slot: ctx.rule.slot\n };\n },\n getCache(ctx) {\n const cache = this.cache[ctx.id];\n if (cache) {\n cache.use = true;\n return cache.vnode;\n }\n return undefined;\n }\n })\n\n}\n","import extend, {copy} from '@form-create/utils/lib/extend';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport is from '@form-create/utils/lib/type';\nimport {invoke, makeSlotBag, mergeRule} from '../frame/util';\nimport toCase, {lower} from '@form-create/utils/lib/tocase';\nimport {deepSet, toLine} from '@form-create/utils';\nimport {computed, nextTick} from 'vue';\n\nexport default function useRender(Render) {\n extend(Render.prototype, {\n initRender() {\n this.cacheConfig = {};\n },\n getTypeSlot(ctx) {\n const _fn = (vm) => {\n if (vm) {\n let slot = undefined;\n if (ctx.rule.field) {\n slot = vm.slots['field-' + toLine(ctx.rule.field)] || vm.slots['field-' + ctx.rule.field];\n }\n if (!slot) {\n slot = vm.slots['type-' + toLine(ctx.type)] || vm.slots['type-' + ctx.type];\n }\n if (slot) {\n return slot;\n }\n return _fn(vm.setupState.parent);\n }\n }\n return _fn(this.vm);\n },\n render() {\n // console.warn('renderrrrr', this.id);\n if (!this.vm.setupState.isShow) {\n return;\n }\n this.$manager.beforeRender();\n const slotBag = makeSlotBag();\n this.sort.forEach((k) => {\n this.renderSlot(slotBag, this.$handle.ctxs[k]);\n });\n\n return this.$manager.render(slotBag);\n },\n renderSlot(slotBag, ctx, parent) {\n if (this.isFragment(ctx)) {\n ctx.initProp();\n this.mergeGlobal(ctx);\n ctx.initNone();\n const slots = this.renderChildren(ctx.loadChildrenPending(), ctx);\n const def = slots.default;\n def && slotBag.setSlot(ctx.rule.slot, () => def());\n delete slots.default;\n slotBag.mergeBag(slots);\n } else {\n slotBag.setSlot(ctx.rule.slot, this.renderCtx(ctx, parent));\n }\n },\n mergeGlobal(ctx) {\n const g = this.$handle.options.global;\n if (!g) return;\n if (!this.cacheConfig[ctx.trueType]) {\n this.cacheConfig[ctx.trueType] = computed(() => {\n const g = this.$handle.options.global;\n return mergeRule({}, [g['*'] || g.default || {}, g[ctx.originType] || g[ctx.type] || g[ctx.type] || {}]);\n });\n }\n ctx.prop = mergeRule({}, [this.cacheConfig[ctx.trueType].value, ctx.prop]);\n },\n setOptions(ctx) {\n const opt = ctx.loadPending({key: 'options', origin: ctx.prop.options, def: []});\n ctx.prop.options = opt;\n if (ctx.prop.optionsTo && opt) {\n deepSet(ctx.prop, ctx.prop.optionsTo, opt);\n }\n },\n deepSet(ctx) {\n const deep = ctx.prop.deep;\n deep && Object.keys(deep).sort((a, b) => a.length < b.length ? -1 : 1).forEach(str => {\n deepSet(ctx.prop, str, deep[str]);\n });\n },\n parseSide(side, ctx) {\n return is.Object(side) ? mergeRule({props: {formCreateInject: ctx.prop.props.formCreateInject}}, side) : side;\n },\n renderSides(vn, ctx, temp) {\n const prop = ctx[temp ? 'rule' : 'prop'];\n return [this.renderRule(this.parseSide(prop.prefix, ctx)), vn, this.renderRule(this.parseSide(prop.suffix, ctx))];\n },\n renderId(name, type) {\n const ctxs = this.$handle[type === 'field' ? 'fieldCtx' : 'nameCtx'][name]\n return ctxs ? ctxs.map(ctx => this.renderCtx(ctx, ctx.parent)) : undefined;\n },\n renderCtx(ctx, parent) {\n try {\n if (ctx.type === 'hidden') return;\n const rule = ctx.rule;\n if (this.force || (!this.cache[ctx.id]) || this.cache[ctx.id].slot !== rule.slot) {\n let vn;\n ctx.initProp();\n this.mergeGlobal(ctx);\n ctx.initNone();\n this.$manager.tidyRule(ctx);\n this.deepSet(ctx);\n this.setOptions(ctx);\n this.ctxProp(ctx);\n let prop = ctx.prop;\n prop.preview = !!(prop.preview != null ? prop.preview : this.$handle.preview);\n prop.props.formCreateInject = this.injectProp(ctx);\n let cacheFlag = prop.cache !== false;\n const preview = prop.preview;\n\n if (prop.hidden) {\n this.setCache(ctx, undefined, parent);\n return;\n }\n vn = (...slotValue) => {\n const inject = {\n rule,\n prop,\n preview,\n api: this.$handle.api,\n model: prop.model || {},\n slotValue\n }\n if (slotValue.length && rule.slotUpdate) {\n invoke(() => rule.slotUpdate(inject))\n }\n let children = {};\n const _load = ctx.loadChildrenPending();\n if (ctx.parser.renderChildren) {\n children = ctx.parser.renderChildren(_load, ctx);\n } else if (ctx.parser.loadChildren !== false) {\n children = this.renderChildren(_load, ctx);\n }\n Object.keys(prop.renderSlots || {}).forEach(key => {\n children[key] = (...args) => {\n if (is.Function(prop.renderSlots[key])) {\n return invoke(() => prop.renderSlots[key](...args));\n }\n const rule = this.parseSide(prop.renderSlots[key], ctx);\n return this.renderRule(rule);\n }\n })\n const slot = this.getTypeSlot(ctx);\n let _vn;\n if (slot) {\n inject.children = children;\n _vn = slot(inject)\n } else {\n _vn = preview ? ctx.parser.preview(copy(children), ctx) : ctx.parser.render(copy(children), ctx);\n }\n _vn = this.renderSides(_vn, ctx);\n if ((!(!ctx.input && is.Undef(prop.native))) && prop.native !== true) {\n this.fc.targetFormDriver('updateWrap', ctx)\n _vn = this.$manager.makeWrap(ctx, _vn);\n }\n if (ctx.none) {\n if (Array.isArray(_vn)) {\n _vn = _vn.map(v => {\n if (!v || !v.__v_isVNode) {\n return v;\n }\n return this.none(v);\n });\n } else {\n _vn = this.none(_vn);\n }\n }\n cacheFlag && this.setCache(ctx, () => {\n return this.stable(_vn);\n }, parent);\n return _vn\n };\n this.setCache(ctx, vn, parent);\n }\n return (...args) => {\n const cache = this.getCache(ctx);\n if (cache) {\n return cache(...args);\n } else if (this.cache[ctx.id]) {\n return;\n }\n const _vn = this.renderCtx(ctx, ctx.parent);\n if (_vn) {\n return _vn();\n }\n };\n } catch (e) {\n console.error(e);\n return;\n }\n },\n none(vn) {\n if (vn) {\n vn.props.class = this.mergeClass(vn.props.class, 'fc-none')\n return vn;\n }\n },\n mergeClass(target, value) {\n if (Array.isArray(target)) {\n target.push(value);\n } else {\n return target ? [target, value] : value;\n }\n return target;\n },\n stable(vn) {\n const list = Array.isArray(vn) ? vn : [vn];\n list.forEach(v => {\n if (v && v.__v_isVNode && v.children && typeof v.children === 'object') {\n v.children.$stable = true;\n this.stable(v.children);\n }\n });\n return vn;\n },\n getModelField(ctx) {\n return ctx.prop.modelField || ctx.parser.modelField || this.fc.modelFields[this.vNode.aliasMap[ctx.type]] || this.fc.modelFields[ctx.type] || this.fc.modelFields[ctx.originType] || 'modelValue';\n },\n isFragment(ctx) {\n return ctx.type === 'fragment' || ctx.type === 'template';\n },\n injectProp(ctx) {\n const state = this.vm.setupState;\n if (!state.ctxInject[ctx.id]) {\n state.ctxInject[ctx.id] = {\n api: this.$handle.api,\n form: this.fc.create,\n subForm: subForm => {\n this.$handle.addSubForm(ctx, subForm);\n },\n getSubForm: () => {\n return this.$handle.subForm[ctx.id];\n },\n slots: () => {\n return this.vm.setupState.top.slots;\n },\n getWrap: () => {\n return this.vm.refs[ctx.wrapRef];\n },\n options: [],\n children: [],\n preview: false,\n id: ctx.id,\n field: ctx.field,\n rule: ctx.rule,\n input: ctx.input,\n t: (...args) => {\n return this.$handle.api.t(...args);\n },\n updateValue: (data) => {\n this.$handle.onUpdateValue(ctx, data);\n }\n }\n }\n const inject = state.ctxInject[ctx.id];\n extend(inject, {\n preview: ctx.prop.preview,\n options: ctx.prop.options,\n children: ctx.loadChildrenPending()\n });\n return inject;\n },\n ctxProp(ctx) {\n const {ref, key, rule} = ctx;\n this.$manager.mergeProp(ctx);\n ctx.parser.mergeProp(ctx);\n const props = [\n {\n ref: ref,\n key: rule.key || `${key}fc`,\n slot: undefined,\n on: {\n vnodeMounted: (vn) => {\n vn.el.__rule__ = ctx.rule;\n this.onMounted(ctx, vn.el);\n },\n 'fc.updateValue': (data) => {\n this.$handle.onUpdateValue(ctx, data);\n },\n 'fc.el': (el) => {\n ctx.exportEl = el;\n if (el) {\n (el.$el || el).__rule__ = ctx.rule;\n }\n }\n }\n }\n ]\n\n if (ctx.input) {\n const tmpInput = this.tmpInput;\n if (this.vm.props.disabled === true) {\n ctx.prop.props.disabled = true;\n }\n const field = this.getModelField(ctx);\n const model = {\n callback: (value) => {\n tmpInput && tmpInput(ctx.field, value, ctx.rule);\n this.onInput(ctx, value);\n },\n modelField: field,\n value: this.$handle.getFormData(ctx)\n };\n props.push({\n on: {\n [`update:${field}`]: model.callback,\n ...(ctx.prop.modelEmit ? {\n [ctx.prop.modelEmit]: () => this.onEmitInput(ctx)\n } : {}),\n },\n props: {\n [field]: model.value\n }\n })\n ctx.prop.model = model;\n }\n mergeProps(props, ctx.prop);\n return ctx.prop;\n },\n onMounted(ctx, el) {\n ctx.el = this.vm.refs[ctx.ref] || el;\n ctx.parser.mounted(ctx);\n this.$handle.effect(ctx, 'mounted');\n this.$handle.targetHook(ctx, 'mounted');\n },\n onInput(ctx, value) {\n if (ctx.prop.modelEmit) {\n this.$handle.onBaseInput(ctx, value);\n return;\n }\n this.$handle.onInput(ctx, value);\n },\n onEmitInput(ctx) {\n this.$handle.setValue(ctx, ctx.parser.toValue(ctx.modelValue, ctx), ctx.modelValue);\n },\n renderChildren(children, ctx) {\n if (!is.trueArray(children)) return {};\n const slotBag = makeSlotBag()\n children.map(child => {\n if (!child) return;\n if (is.String(child) || is.Number(child)) return slotBag.setSlot(null, `${child}`);\n if (child.__fc__) {\n return this.renderSlot(slotBag, child.__fc__, ctx);\n }\n if (child.type) {\n nextTick(() => {\n this.$handle.loadChildren(children, ctx);\n this.$handle.refresh();\n });\n }\n });\n return slotBag.getSlots();\n },\n defaultRender(ctx, children) {\n const prop = ctx.prop;\n if (prop.component) {\n if (typeof prop.component === 'string') {\n return this.vNode.make(prop.component, prop, children);\n } else {\n return this.vNode.makeComponent(prop.component, prop, children);\n }\n }\n if (this.vNode[ctx.type])\n return this.vNode[ctx.type](prop, children);\n if (this.vNode[ctx.originType])\n return this.vNode[ctx.originType](prop, children);\n return this.vNode.make(lower(prop.type), prop, children);\n },\n createChildrenVnodes(ctx, onInput, force) {\n this.force = force !== false;\n this.tmpInput = onInput;\n const res = this.renderChildren(ctx.rule.children, ctx);\n this.force = false;\n this.tmpInput = null;\n return res;\n },\n createRuleVnode(ctx, onInput, force) {\n this.force = force !== false;\n this.tmpInput = onInput;\n const slotBag = makeSlotBag();\n this.renderSlot(slotBag, ctx, ctx.parent);\n this.force = false;\n this.tmpInput = null;\n return slotBag.getSlots();\n },\n renderRule(rule, children, origin) {\n if (!rule) return undefined;\n if (is.String(rule) || is.Number(rule)) return `${rule}`;\n\n let type;\n if (origin) {\n type = rule.type;\n } else {\n type = rule.is;\n if (rule.type) {\n type = toCase(rule.type);\n const alias = this.vNode.aliasMap[type];\n if (alias) type = toCase(alias);\n }\n }\n\n if (!type) return undefined;\n\n const slotBag = makeSlotBag();\n if (is.trueArray(rule.children)) {\n rule.children.forEach(v => {\n v && slotBag.setSlot(v?.slot, () => this.renderRule(v));\n });\n }\n const props = {...rule};\n delete props.type;\n delete props.is;\n return this.vNode.make(type, props, slotBag.mergeBag(children).getSlots());\n }\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\n\nconst EVENT = ['hook:updated', 'hook:mounted'];\n\nexport default function usePage(Handler) {\n extend(Handler.prototype, {\n usePage() {\n const page = this.options.page;\n if (!page) return;\n let first = 25;\n let limit = getLimit(this.rules);\n if (is.Object(page)) {\n if (page.first) first = parseInt(page.first, 10) || first;\n if (page.limit) limit = parseInt(page.limit, 10) || limit;\n }\n extend(this, {\n first,\n limit,\n pageEnd: this.rules.length <= first,\n })\n\n this.bus.$on('page-end', () => this.vm.emit('page-end', this.api));\n this.pageLoad();\n },\n pageLoad() {\n const pageFn = () => {\n if (this.pageEnd) {\n this.bus.$off(EVENT, pageFn);\n this.bus.$emit('page-end');\n } else {\n this.first += this.limit;\n this.pageEnd = this.rules.length <= this.first;\n this.loadRule();\n this.refresh();\n }\n }\n this.bus.$on(EVENT, pageFn);\n },\n })\n}\n\n\nfunction getLimit(rules) {\n return rules.length < 31 ? 31 : Math.ceil(rules.length / 3);\n}\n","import unique from '@form-create/utils/lib/unique';\nimport toCase from '@form-create/utils/lib/tocase';\nimport extend from '@form-create/utils/lib/extend';\nimport {enumerable, invoke, mergeRule} from '../frame/util';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport {markRaw, reactive} from 'vue';\nimport is from '@form-create/utils/lib/type';\nimport toArray from '@form-create/utils/lib/toarray';\n\nfunction bind(ctx) {\n Object.defineProperties(ctx.origin, {\n __fc__: enumerable(markRaw(ctx), true)\n });\n if(ctx.rule !== ctx.origin) {\n Object.defineProperties(ctx.rule, {\n __fc__: enumerable(markRaw(ctx), true)\n });\n }\n}\n\nexport default function RuleContext(handle, rule, defaultValue) {\n const id = unique();\n const isInput = !!rule.field;\n extend(this, {\n id,\n ref: id,\n wrapRef: id + 'fi',\n rule,\n origin: rule.__origin__ || rule,\n name: rule.name,\n pending: {},\n none: false,\n watch: [],\n linkOn: [],\n root: [],\n ctrlRule: [],\n children: [],\n parent: null,\n group: rule.subRule ? this : null,\n cacheConfig: null,\n prop: {...rule},\n computed: {},\n payload: {},\n refRule: {},\n input: isInput,\n el: undefined,\n exportEl: undefined,\n defaultValue: isInput ? deepCopy(defaultValue) : undefined,\n field: rule.field || undefined\n })\n\n this.updateKey();\n bind(this);\n this.update(handle, true);\n}\n\nextend(RuleContext.prototype, {\n getParentGroup() {\n let ctx = this.parent;\n while (ctx) {\n if (ctx.group) {\n return ctx;\n }\n ctx = ctx.parent;\n }\n },\n loadChildrenPending() {\n const children = this.rule.children || [];\n if (Array.isArray(children))\n return children;\n return this.loadPending({\n key: 'children', origin: children, def: [],\n onLoad: (data) => {\n this.$handle && this.$handle.loadChildren(data, this);\n }, onUpdate: (value, oldValue) => {\n if (this.$handle) {\n value === oldValue ? this.$handle.loadChildren(value, this) : this.$handle.updateChildren(this, value, oldValue);\n }\n }, onReload: (value) => {\n if (this.$handle) {\n this.$handle.updateChildren(this, [], value);\n } else {\n delete this.pending.children;\n }\n }\n });\n },\n loadPending(config) {\n const {key, origin, def, onLoad, onReload, onUpdate} = config;\n\n if (this.pending[key] && this.pending[key].origin === origin) {\n return this.getPending(key, def);\n }\n\n delete this.pending[key];\n\n let value = origin;\n if (is.Function(origin)) {\n let source = invoke(() => origin({\n rule: this.rule, api: this.$api, update: (data) => {\n const value = data || def;\n const oldValue = this.getPending(key, def);\n this.setPending(key, origin, value);\n onUpdate && onUpdate(value, oldValue);\n }, reload: () => {\n const oldValue = this.getPending(key, def);\n delete this.pending[key];\n onReload && onReload(oldValue);\n this.$api && this.$api.sync(this.rule);\n }\n }));\n if (source && is.Function(source.then)) {\n source.then((data) => {\n const value = data || def;\n this.setPending(key, origin, value);\n onLoad && onLoad(value);\n this.$api && this.$api.sync(this.rule);\n }).catch(e => {\n console.error(e);\n })\n value = def;\n this.setPending(key, origin, value);\n } else {\n value = source || def;\n this.setPending(key, origin, value);\n onLoad && onLoad(value);\n }\n }\n return value;\n },\n getPending(key, def) {\n return (this.pending[key] && this.pending[key].value) || def;\n },\n setPending(key, origin, value) {\n this.pending[key] = {\n origin,\n value: reactive(value)\n };\n },\n effectData(name) {\n if (!this.payload[name]) {\n this.payload[name] = {};\n }\n return this.payload[name];\n },\n clearEffectData(name) {\n if (name === undefined) {\n this.payload = {};\n } else {\n delete this.payload[name];\n }\n },\n updateKey(flag) {\n this.key = unique();\n flag && this.parent && this.parent.updateKey(flag);\n },\n updateType() {\n this.originType = this.rule.type;\n this.type = toCase(this.rule.type);\n this.trueType = this.$handle.getType(this.originType);\n },\n setParser(parser) {\n this.parser = parser;\n parser.init(this);\n },\n initProp() {\n const rule = {...this.rule};\n delete rule.children;\n delete rule.validate;\n this.prop = mergeRule({}, [rule, ...Object.keys(this.payload).map(k => this.payload[k]), this.computed]);\n this.prop.validate = [...this.refRule?.__$validate?.value || [], ...this.prop.validate || []]\n },\n initNone() {\n this.none = !(is.Undef(this.prop.display) || !!this.prop.display)\n },\n hasHidden() {\n return (!!this.rule.hidden) || (this.parent ? this.parent.hasHidden() : false);\n },\n injectValidate() {\n return this.prop.validate;\n },\n check(handle) {\n return this.vm === handle.vm\n },\n unwatch() {\n this.watch.forEach(un => un());\n this.watch = [];\n Object.keys(this.refRule).forEach(key => {\n if (key.indexOf('__$') !== 0) {\n delete this.refRule[key];\n }\n })\n },\n unlink() {\n this.linkOn.forEach(un => un());\n this.linkOn = [];\n },\n link() {\n this.unlink();\n this.$handle.appendLink(this);\n },\n watchTo() {\n this.$handle.watchCtx(this);\n },\n delete() {\n this.unwatch();\n this.unlink();\n this.rmCtrl();\n if (this.parent) {\n this.parent.children.splice(this.parent.children.indexOf(this) >>> 0, 1);\n }\n extend(this, {\n deleted: true,\n computed: {},\n parent: null,\n children: [],\n cacheConfig: null,\n none: false,\n })\n },\n rmCtrl() {\n this.ctrlRule.forEach(ctrl => ctrl.__fc__ && ctrl.__fc__.rm());\n this.ctrlRule = [];\n },\n rm() {\n const _rm = () => {\n let index = this.root.indexOf(this.origin);\n if (index > -1) {\n this.root.splice(index, 1);\n this.$handle && this.$handle.refresh();\n }\n }\n if (this.deleted) {\n _rm();\n return;\n }\n this.$handle.noWatch(() => {\n this.$handle.deferSyncValue(() => {\n this.rmCtrl();\n _rm();\n this.$handle.rmCtx(this);\n extend(this, {\n root: []\n });\n }, this.input);\n });\n },\n update(handle, init) {\n extend(this, {\n deleted: false,\n $handle: handle,\n $render: handle.$render,\n $api: handle.api,\n vm: handle.vm,\n vNode: handle.$render.vNode,\n updated: false,\n cacheValue: this.rule.value\n });\n !init && this.unwatch();\n this.watchTo();\n this.link();\n this.updateType();\n }\n})\n","import extend from '@form-create/utils/lib/extend';\nimport {byCtx, condition, copyRule, enumerable, getRule, invoke, parseFn, parseJson, toJson} from '../frame/util';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {baseRule} from '../factory/creator';\nimport RuleContext from '../factory/context';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport {nextTick} from 'vue';\n\nexport default function useLoader(Handler) {\n extend(Handler.prototype, {\n nextRefresh(fn) {\n const id = this.loadedId;\n nextTick(() => {\n id === this.loadedId && (fn ? fn() : this.refresh());\n });\n },\n parseRule(_rule) {\n const rule = getRule(_rule);\n\n Object.defineProperties(rule, {\n __origin__: enumerable(_rule, true)\n });\n\n fullRule(rule);\n this.appendValue(rule);\n\n [rule, rule['prefix'], rule['suffix']].forEach(item => {\n if (!item) {\n return;\n }\n this.loadFn(item, rule);\n });\n this.loadCtrl(rule);\n if (rule.update) {\n rule.update = parseFn(rule.update);\n }\n return rule;\n },\n loadFn(item, rule) {\n ['on', 'props', 'deep'].forEach(k => {\n item[k] && this.parseInjectEvent(rule, item[k]);\n });\n },\n loadCtrl(rule) {\n rule.control && rule.control.forEach(ctrl => {\n if (ctrl.handle) {\n ctrl.handle = parseFn(ctrl.handle)\n }\n })\n },\n syncProp(ctx) {\n const rule = ctx.rule;\n is.trueArray(rule.sync) && mergeProps([{\n on: rule.sync.reduce((pre, prop) => {\n pre[(typeof prop === 'object' && prop.event) || `update:${prop}`] = (val) => {\n rule.props[(typeof prop === 'object' && prop.prop) || prop] = val;\n this.vm.emit('sync', prop, val, rule, this.fapi);\n }\n return pre\n }, {})\n }], ctx.computed)\n },\n loadRule() {\n // console.warn('%c load', 'color:blue');\n this.cycleLoad = false;\n this.loading = true;\n if (this.pageEnd) {\n this.bus.$emit('load-start');\n }\n this.deferSyncValue(() => {\n this._loadRule(this.rules);\n this.loading = false;\n if (this.cycleLoad && this.pageEnd) {\n return this.loadRule();\n }\n this.syncForm();\n if (this.pageEnd) {\n this.bus.$emit('load-end');\n }\n this.vm.setupState.renderRule();\n });\n },\n loadChildren(children, parent) {\n this.cycleLoad = false;\n this.loading = true;\n this.bus.$emit('load-start');\n this._loadRule(children, parent);\n this.loading = false;\n if (this.cycleLoad) {\n return this.loadRule();\n } else {\n this.syncForm();\n this.bus.$emit('load-end');\n }\n this.$render.clearCache(parent);\n },\n _loadRule(rules, parent) {\n\n const preIndex = (i) => {\n let pre = rules[i - 1];\n if (!pre || !pre.__fc__) {\n return i > 0 ? preIndex(i - 1) : -1;\n }\n let index = this.sort.indexOf(pre.__fc__.id);\n return index > -1 ? index : preIndex(i - 1);\n }\n\n const loadChildren = (children, parent) => {\n if (is.trueArray(children)) {\n this._loadRule(children, parent);\n }\n };\n\n const ctxs = rules.map((_rule, index) => {\n if (parent && !is.Object(_rule)) return;\n if (!this.pageEnd && !parent && index >= this.first) return;\n\n if (_rule.__fc__ && _rule.__fc__.root === rules && this.ctxs[_rule.__fc__.id]) {\n loadChildren(_rule.__fc__.loadChildrenPending(), _rule.__fc__);\n return _rule.__fc__;\n }\n\n let rule = getRule(_rule);\n\n const isRepeat = () => {\n return !!(rule.field && this.fieldCtx[rule.field] && this.fieldCtx[rule.field][0] !== _rule.__fc__)\n }\n\n this.fc.targetFormDriver('loadRule', {rule, api: this.api}, this.fc);\n this.ruleEffect(rule, 'init', {repeat: isRepeat()});\n\n if (isRepeat()) {\n this.vm.emit('repeat-field', _rule, this.api);\n }\n\n let ctx;\n let isCopy = false;\n let isInit = !!_rule.__fc__;\n let defaultValue = rule.value;\n if (isInit) {\n ctx = _rule.__fc__;\n defaultValue = ctx.defaultValue;\n if (ctx.deleted) {\n if (isCtrl(ctx)) {\n return;\n }\n ctx.update(this);\n } else {\n if (!ctx.check(this)) {\n if (isCtrl(ctx)) {\n return;\n }\n rules[index] = _rule = _rule._clone ? _rule._clone() : parseJson(toJson(_rule));\n ctx = null;\n isCopy = true;\n }\n }\n }\n if (!ctx) {\n const rule = this.parseRule(_rule);\n ctx = new RuleContext(this, rule, defaultValue);\n this.bindParser(ctx);\n } else {\n if (ctx.originType !== ctx.rule.type) {\n ctx.updateType();\n }\n this.bindParser(ctx);\n this.appendValue(ctx.rule);\n if (ctx.parent && ctx.parent !== parent) {\n this.rmSubRuleData(ctx);\n }\n }\n this.parseEmit(ctx);\n this.syncProp(ctx);\n ctx.parent = parent || null;\n ctx.root = rules;\n this.setCtx(ctx);\n\n if (!isCopy && !isInit) {\n this.effect(ctx, 'load');\n this.targetHook(ctx, 'load');\n }\n\n this.effect(ctx, 'created');\n\n const _load = ctx.loadChildrenPending()\n ctx.parser.loadChildren === false || loadChildren(_load, ctx);\n\n if (!parent) {\n const _preIndex = preIndex(index);\n if (_preIndex > -1 || !index) {\n this.sort.splice(_preIndex + 1, 0, ctx.id);\n } else {\n this.sort.push(ctx.id);\n }\n }\n\n const r = ctx.rule;\n if (!ctx.updated) {\n ctx.updated = true;\n if (is.Function(r.update)) {\n this.bus.$once('load-end', () => {\n this.refreshUpdate(ctx, r.value, 'init');\n });\n }\n this.effect(ctx, 'loaded');\n }\n\n // if (ctx.input)\n // Object.defineProperty(r, 'value', this.valueHandle(ctx));\n if (this.refreshControl(ctx)) this.cycleLoad = true;\n return ctx;\n }).filter(v => !!v);\n if (parent) {\n parent.children = ctxs;\n }\n },\n refreshControl(ctx) {\n return ctx.input && ctx.rule.control && this.useCtrl(ctx);\n },\n useCtrl(ctx) {\n const controls = getCtrl(ctx), validate = [], api = this.api;\n if (!controls.length) return false;\n\n for (let i = 0; i < controls.length; i++) {\n const control = controls[i], handleFn = control.handle || function (val) {\n return ((condition[control.condition || '=='] || condition['=='])(val, control.value));\n };\n if (!is.trueArray(control.rule)) continue;\n const data = {\n ...control,\n valid: invoke(() => handleFn(ctx.rule.value, api)),\n ctrl: findCtrl(ctx, control.rule),\n isHidden: is.String(control.rule[0]),\n };\n if ((data.valid && data.ctrl) || (!data.valid && !data.ctrl && !data.isHidden)) continue;\n validate.push(data);\n }\n if (!validate.length) return false;\n\n const hideLst = [];\n let flag = false;\n this.deferSyncValue(() => {\n validate.reverse().forEach(({isHidden, valid, rule, prepend, append, child, ctrl, method}) => {\n if (isHidden) {\n valid ? ctx.ctrlRule.push({\n __ctrl: true,\n children: rule,\n valid\n })\n : (ctrl && ctx.ctrlRule.splice(ctx.ctrlRule.indexOf(ctrl) >>> 0, 1));\n hideLst[valid ? 'push' : 'unshift'](() => {\n if (method === 'disabled' || method === 'enabled') {\n this.api.disabled(!valid, rule);\n } else if (method === 'display' || method === 'show') {\n this.api.display(valid, rule);\n } else if (method === 'required') {\n rule.forEach(item => {\n this.api.setEffect(item, 'required', valid);\n })\n if (!valid) {\n this.api.clearValidateState(rule);\n }\n } else if (method === 'if') {\n this.api.hidden(!valid, rule);\n } else {\n this.api.hidden(!valid, rule);\n }\n });\n return;\n }\n if (valid) {\n flag = true;\n const ruleCon = {\n type: 'fragment',\n native: true,\n __ctrl: true,\n children: rule,\n }\n ctx.ctrlRule.push(ruleCon);\n this.bus.$once('load-start', () => {\n // this.cycleLoad = true;\n if (prepend) {\n api.prepend(ruleCon, prepend, child)\n } else if (append || child) {\n api.append(ruleCon, append || ctx.id, child)\n } else {\n ctx.root.splice(ctx.root.indexOf(ctx.origin) + 1, 0, ruleCon);\n }\n });\n } else {\n ctx.ctrlRule.splice(ctx.ctrlRule.indexOf(ctrl), 1);\n const ctrlCtx = byCtx(ctrl);\n ctrlCtx && ctrlCtx.rm();\n }\n });\n });\n if (hideLst.length) {\n if (this.loading) {\n hideLst.length && this.bus.$once('load-end', () => {\n hideLst.forEach(v => v());\n });\n } else {\n hideLst.length && nextTick(() => {\n hideLst.forEach(v => v());\n });\n }\n }\n this.vm.emit('control', ctx.origin, this.api);\n this.effect(ctx, 'control');\n return flag;\n },\n reloadRule(rules) {\n return this._reloadRule(rules);\n },\n _reloadRule(rules) {\n // console.warn('%c reload', 'color:red');\n if (!rules) rules = this.rules;\n\n const ctxs = {...this.ctxs};\n\n this.clearNextTick();\n this.initData(rules);\n this.fc.rules = rules;\n\n this.deferSyncValue(() => {\n this.bus.$once('load-end', () => {\n Object.keys(ctxs).filter(id => this.ctxs[id] === undefined)\n .forEach(id => this.rmCtx(ctxs[id]));\n this.$render.clearCacheAll();\n });\n this.reloading = true;\n this.loadRule();\n this.reloading = false;\n this.refresh();\n this.bus.$emit('reloading', this.api);\n });\n\n this.bus.$off('next-tick', this.nextReload);\n this.bus.$once('next-tick', this.nextReload);\n this.bus.$emit('update', this.api);\n },\n //todo 组件生成全部通过 alias\n refresh() {\n this.vm.setupState.refresh();\n },\n });\n}\n\nfunction fullRule(rule) {\n const def = baseRule();\n\n Object.keys(def).forEach(k => {\n if (!hasProperty(rule, k)) rule[k] = def[k];\n });\n return rule;\n}\n\nfunction getCtrl(ctx) {\n const control = ctx.rule.control || [];\n if (is.Object(control)) return [control];\n else return control;\n}\n\nfunction findCtrl(ctx, rule) {\n for (let i = 0; i < ctx.ctrlRule.length; i++) {\n const ctrl = ctx.ctrlRule[i];\n if (ctrl.children === rule)\n return ctrl;\n }\n}\n\nfunction isCtrl(ctx) {\n return !!ctx.rule.__ctrl;\n}\n","import extend from '@form-create/utils/lib/extend';\nimport {$set} from '@form-create/utils/lib/modify';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {invoke} from '../frame/util';\nimport {nextTick, reactive, toRef} from 'vue';\n\nexport default function useInput(Handler) {\n extend(Handler.prototype, {\n setValue(ctx, value, formValue, setFlag) {\n if (ctx.deleted) return;\n ctx.rule.value = value;\n this.changeStatus = true;\n this.nextRefresh();\n this.$render.clearCache(ctx);\n this.setFormData(ctx, formValue);\n this.syncValue();\n this.valueChange(ctx, value);\n this.vm.emit('change', ctx.field, value, ctx.origin, this.api, setFlag || false);\n this.effect(ctx, 'value');\n this.targetHook(ctx, 'value', {value});\n this.emitEvent('change', ctx.field, value, {\n rule: ctx.origin,\n api: this.api,\n setFlag: setFlag || false\n })\n if (setFlag) {\n nextTick(() => {\n nextTick(() => {\n nextTick(() => {\n this.api.clearValidateState(ctx.id);\n });\n });\n });\n }\n this.$manager.fieldChange(ctx, value, formValue, setFlag);\n },\n onInput(ctx, value) {\n let val;\n if (ctx.input && (this.isQuote(ctx, val = ctx.parser.toValue(value, ctx)) || this.isChange(ctx, value))) {\n this.setValue(ctx, val, value);\n }\n },\n onUpdateValue(ctx, data) {\n this.deferSyncValue(() => {\n const group = ctx.getParentGroup();\n const subForm = group ? this.subRuleData[group.id] : null;\n const subData = {};\n Object.keys(data || {}).forEach(k => {\n if (subForm && hasProperty(subForm, k)) {\n subData[k] = data[k];\n } else if (hasProperty(this.api.form, k)) {\n this.api.form[k] = data[k];\n } else if (this.api.top !== this.api && hasProperty(this.api.top.form, k)) {\n this.api.top.form[k] = data[k];\n }\n });\n if (Object.keys(subData).length) {\n this.api.setChildrenFormData(group.rule, subData);\n }\n })\n },\n onBaseInput(ctx, value) {\n this.setFormData(ctx, value);\n ctx.modelValue = value;\n this.nextRefresh();\n this.$render.clearCache(ctx);\n },\n setFormData(ctx, value) {\n ctx.modelValue = value;\n const group = ctx.getParentGroup();\n if (group) {\n if (!this.subRuleData[group.id]) {\n this.subRuleData[group.id] = {};\n }\n this.subRuleData[group.id][ctx.field] = ctx.rule.value;\n }\n $set(this.formData, ctx.id, value);\n },\n rmSubRuleData(ctx) {\n const group = ctx.getParentGroup();\n if (group && this.subRuleData[group.id]) {\n delete this.subRuleData[group.id][ctx.field];\n }\n },\n getFormData(ctx) {\n return this.formData[ctx.id];\n },\n syncForm() {\n const data = reactive({});\n const fields = this.fields();\n const ignoreFields = [];\n if (this.options.appendValue !== false) {\n Object.keys(this.appendData).reduce((initial, field) => {\n if (fields.indexOf(field) === -1) {\n initial[field] = toRef(this.appendData, field);\n }\n return initial;\n }, data);\n }\n fields.reduce((initial, field) => {\n let ctx = (this.fieldCtx[field] || []).filter(ctx => !this.isIgnore(ctx))[0];\n if (!ctx) {\n ctx = this.fieldCtx[field][0];\n ignoreFields.push(field);\n }\n initial[field] = toRef(ctx.rule, 'value');\n return initial;\n }, data);\n this.form = data;\n this.ignoreFields = ignoreFields;\n this.syncValue();\n },\n isIgnore(ctx) {\n return ctx.rule.ignore === true || ((ctx.rule.ignore === 'hidden' || this.options.ignoreHiddenFields) && ctx.hasHidden());\n },\n appendValue(rule) {\n if ((!rule.field || !hasProperty(this.appendData, rule.field)) && (!is.Undef(rule.value) || !this.options.forceCoverValue)) {\n return;\n }\n rule.value = this.appendData[rule.field];\n delete this.appendData[rule.field];\n },\n addSubForm(ctx, subForm) {\n this.subForm[ctx.id] = subForm;\n },\n deferSyncValue(fn, sync) {\n if (!this.deferSyncFn) {\n this.deferSyncFn = fn;\n }\n if (!this.deferSyncFn.sync) {\n this.deferSyncFn.sync = sync;\n }\n invoke(fn);\n if (this.deferSyncFn === fn) {\n this.deferSyncFn = null;\n if (fn.sync) {\n this.syncForm();\n }\n }\n },\n syncValue() {\n if (this.deferSyncFn) {\n return this.deferSyncFn.sync = true;\n }\n const data = {};\n Object.keys(this.form).forEach(k => {\n if (this.ignoreFields.indexOf(k) === -1) {\n data[k] = this.form[k];\n }\n });\n this.vm.setupState.updateValue(data);\n },\n isChange(ctx, value) {\n return JSON.stringify(this.getFormData(ctx), strFn) !== JSON.stringify(value, strFn);\n },\n isQuote(ctx, value) {\n return (value instanceof Function || is.Object(value) || Array.isArray(value)) && value === ctx.rule.value;\n },\n refreshUpdate(ctx, val, origin, field) {\n if (is.Function(ctx.rule.update)) {\n const state = invoke(() => ctx.rule.update(val, ctx.origin, this.api, {\n origin: origin || 'change',\n linkField: field\n }));\n if (state === undefined) return;\n ctx.rule.hidden = state === true;\n }\n },\n valueChange(ctx, val) {\n this.refreshRule(ctx, val);\n this.bus.$emit('change-' + ctx.field, val);\n },\n refreshRule(ctx, val, origin, field) {\n if (this.refreshControl(ctx)) {\n this.$render.clearCacheAll();\n this.loadRule();\n this.bus.$emit('update', this.api);\n this.refresh();\n }\n this.refreshUpdate(ctx, val, origin, field);\n },\n appendLink(ctx) {\n const link = ctx.rule.link;\n is.trueArray(link) && link.forEach(field => {\n const fn = () => this.refreshRule(ctx, ctx.rule.value, 'link', field);\n\n this.bus.$on('change-' + field, fn);\n ctx.linkOn.push(() => this.bus.$off('change-' + field, fn));\n });\n },\n fields() {\n return Object.keys(this.fieldCtx);\n },\n });\n}\n\nfunction strFn(key, val) {\n return typeof val === 'function' ? '' + val : val;\n}\n","const BaseParser = {\n init(ctx) {\n },\n toFormValue(value, ctx) {\n return value\n },\n toValue(formValue, ctx) {\n return formValue;\n },\n mounted(ctx) {\n },\n render(children, ctx) {\n if(ctx.$handle.fc.renderDriver && ctx.$handle.fc.renderDriver.defaultRender){\n return ctx.$handle.fc.renderDriver.defaultRender(ctx, children);\n }\n return ctx.$render.defaultRender(ctx, children);\n },\n preview(children, ctx) {\n if(ctx.$handle.fc.renderDriver && ctx.$handle.fc.renderDriver.defaultPreview){\n return ctx.$handle.fc.renderDriver.defaultPreview(ctx, children);\n }\n return this.render(children, ctx);\n },\n mergeProp(ctx) {\n }\n}\n\nexport default BaseParser;\n","import extend from '@form-create/utils/lib/extend';\nimport toCase from '@form-create/utils/lib/tocase';\nimport BaseParser from '../factory/parser';\nimport {$del} from '@form-create/utils/lib/modify';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {condition, deepGet, invoke, convertFieldToConditions} from '../frame/util';\nimport {computed, nextTick, toRef, watch} from 'vue';\nimport {attrs} from '../frame/attrs';\nimport {deepSet} from '@form-create/utils';\nimport toArray from '@form-create/utils/lib/toarray';\n\nconst noneKey = ['field', 'value', 'vm', 'template', 'name', 'config', 'control', 'inject', 'sync', 'payload', 'optionsTo', 'update', 'slotUpdate', 'computed', 'component', 'cache'];\nconst oldValueTag = Symbol('oldValue');\n\nexport default function useContext(Handler) {\n extend(Handler.prototype, {\n getCtx(id) {\n return this.getFieldCtx(id) || this.getNameCtx(id)[0] || this.ctxs[id];\n },\n getCtxs(id) {\n return this.fieldCtx[id] || this.nameCtx[id] || (this.ctxs[id] ? [this.ctxs[id]] : []);\n },\n setIdCtx(ctx, key, type) {\n const field = `${type}Ctx`;\n if (!this[field][key]) {\n this[field][key] = [ctx];\n } else {\n this[field][key].push(ctx);\n }\n },\n rmIdCtx(ctx, key, type) {\n const field = `${type}Ctx`;\n const lst = this[field][key];\n if (!lst) return false;\n const flag = lst.splice(lst.indexOf(ctx) >>> 0, 1).length > 0;\n if (!lst.length) {\n delete this[field][key];\n }\n return flag;\n },\n getFieldCtx(field) {\n return (this.fieldCtx[field] || [])[0];\n },\n getNameCtx(name) {\n return this.nameCtx[name] || [];\n },\n setCtx(ctx) {\n let {id, field, name, rule} = ctx;\n this.ctxs[id] = ctx;\n name && this.setIdCtx(ctx, name, 'name');\n if (!ctx.input) return;\n this.setIdCtx(ctx, field, 'field');\n this.setFormData(ctx, ctx.parser.toFormValue(rule.value, ctx));\n if (this.isMounted && !this.reloading) {\n this.vm.emit('change', ctx.field, rule.value, ctx.origin, this.api, false, true);\n }\n },\n getParser(ctx) {\n const list = this.fc.parsers;\n const renderDriver = this.fc.renderDriver;\n if (renderDriver) {\n const parsers = renderDriver.parsers || {};\n const parser = parsers[ctx.originType] || parsers[toCase(ctx.type)] || parsers[ctx.trueType];\n if (parser) {\n return parser;\n }\n }\n return list[ctx.originType] || list[toCase(ctx.type)] || list[ctx.trueType] || BaseParser;\n },\n bindParser(ctx) {\n ctx.setParser(this.getParser(ctx));\n },\n getType(alias) {\n const map = this.fc.CreateNode.aliasMap;\n const type = map[alias] || map[toCase(alias)] || alias;\n return toCase(type);\n },\n noWatch(fn) {\n if (!this.noWatchFn) {\n this.noWatchFn = fn;\n }\n invoke(fn);\n if (this.noWatchFn === fn) {\n this.noWatchFn = null;\n }\n },\n watchCtx(ctx) {\n const all = attrs();\n all.filter(k => k[0] !== '_' && k[0] !== '$' && noneKey.indexOf(k) === -1).forEach((key) => {\n const ref = toRef(ctx.rule, key);\n const flag = key === 'children';\n ctx.refRule[key] = ref;\n ctx.watch.push(watch(flag ? () => is.Function(ref.value) ? ref.value : [...(ref.value || [])] : () => ref.value, (_, o) => {\n let n = ref.value;\n if (this.isBreakWatch()) return;\n if (flag && ctx.parser.loadChildren === false) {\n this.$render.clearCache(ctx);\n this.nextRefresh();\n return;\n }\n this.watching = true;\n nextTick(() => {\n this.targetHook(ctx, 'watch', {key, oldValue: o, newValue: n});\n });\n if (key === 'hidden' && Boolean(n) !== Boolean(o)) {\n this.$render.clearCacheAll();\n nextTick(() => {\n this.targetHook(ctx, 'hidden', {value: n});\n });\n }\n if ((key === 'ignore' && ctx.input) || (key === 'hidden' && (ctx.rule.ignore === 'hidden' || this.options.ignoreHiddenFields))) {\n this.syncForm();\n } else if (key === 'link') {\n ctx.link();\n return;\n } else if (['props', 'on', 'deep'].indexOf(key) > -1) {\n this.parseInjectEvent(ctx.rule, n || {});\n if (key === 'props' && ctx.input) {\n this.setFormData(ctx, ctx.parser.toFormValue(ctx.rule.value, ctx));\n }\n } else if (key === 'emit') {\n this.parseEmit(ctx);\n } else if (['prefix', 'suffix'].indexOf(key) > -1)\n n && this.loadFn(n, ctx.rule);\n else if (key === 'type') {\n ctx.updateType();\n this.bindParser(ctx);\n } else if (flag) {\n if (is.Function(o)) {\n o = ctx.getPending('children', []);\n }\n if (is.Function(n)) {\n n = ctx.loadChildrenPending();\n }\n this.updateChildren(ctx, n, o);\n }\n this.$render.clearCache(ctx);\n this.refresh();\n this.watching = false;\n }, {deep: !flag, sync: flag}));\n });\n ctx.refRule['__$title'] = computed(() => {\n let title = (typeof ctx.rule.title === 'object' ? ctx.rule.title.title : ctx.rule.title) || '';\n if (title) {\n const match = title.match(/^\\{\\{\\s*\\$t\\.(.+)\\s*\\}\\}$/);\n if (match) {\n title = this.api.t(match[1]);\n }\n }\n return title;\n });\n ctx.refRule['__$info'] = computed(() => {\n let info = (typeof ctx.rule.info === 'object' ? ctx.rule.info.info : ctx.rule.info) || '';\n if (info) {\n const match = info.match(/^\\{\\{\\s*\\$t\\.(.+)\\s*\\}\\}$/);\n if (match) {\n info = this.api.t(match[1]);\n }\n }\n return info;\n });\n ctx.refRule['__$validate'] = computed(() => {\n const t = (msg) => {\n const match = msg.match(/^\\{\\{\\s*\\$t\\.(.+)\\s*\\}\\}$/);\n if (match) {\n return this.api.t(match[1], {title: ctx.refRule?.__$title?.value});\n }\n return msg;\n }\n return toArray(ctx.rule.validate).map(item => {\n const temp = {...item};\n if (temp.message) {\n temp.message = t(temp.message);\n }\n if (is.Function(temp.validator)) {\n const that = ctx;\n temp.validator = function (...args) {\n return item.validator.call({\n that: this,\n id: that.id,\n field: that.field,\n rule: that.rule,\n api: that.$handle.api,\n }, ...args)\n }\n }\n if (temp.adapter) {\n if (typeof temp.error === 'object') {\n const msg = {...temp.error};\n Object.keys(msg).forEach((key) => {\n msg[key] = t(msg[key]);\n })\n temp.error = msg;\n }\n return this.adapterValidate(temp, ctx);\n }\n return temp;\n });\n });\n if (ctx.input) {\n const val = toRef(ctx.rule, 'value');\n ctx.watch.push(watch(() => val.value, () => {\n let formValue = ctx.parser.toFormValue(val.value, ctx);\n if (this.isChange(ctx, formValue)) {\n this.setValue(ctx, val.value, formValue, true);\n }\n }));\n }\n this.bus.$once('load-end', () => {\n let computedRule = ctx.rule.computed;\n if (!computedRule) {\n return;\n }\n if (typeof computedRule !== 'object') {\n computedRule = {value: computedRule}\n }\n Object.keys(computedRule).forEach(k => {\n const computedValue = computed(() => {\n const item = computedRule[k];\n if (!item) return undefined;\n const value = this.compute(ctx, item);\n if ((item.linkage || item.linkageVariable) && value === oldValueTag) {\n return oldValueTag;\n }\n return value;\n });\n const callback = (n) => {\n if (k === 'value') {\n this.onInput(ctx, n);\n } else if (k[0] === '$') {\n this.api.setEffect(ctx.id, k, n);\n } else {\n deepSet(ctx.rule, k, n);\n }\n };\n if (k === 'value' ? [undefined, null, ''].indexOf(ctx.rule.value) > -1 : computedValue.value !== deepGet(ctx.rule, k)) {\n callback(computedValue.value);\n }\n ctx.watch.push(watch(computedValue, (n) => {\n if(n === oldValueTag) {\n return ;\n }\n setTimeout(() => {\n callback(n);\n });\n }, {deep: true}));\n });\n\n });\n this.watchEffect(ctx);\n },\n adapterValidate(validate, ctx) {\n const validator = (value, callback) => {\n const before = validate.beforeValidate && invoke(() => validate.beforeValidate({\n value,\n api: this.api,\n validate,\n rule: ctx.rule\n }));\n if (before === false) {\n callback();\n } else {\n const key = this.validator(ctx, value, validate);\n if (!key) {\n if (validate.validator) {\n const res = validate.validator && invoke(() => validate.validator(value, callback));\n if (res && is.Function(res.then)) {\n res.then(() => callback()).catch((e) => callback(e));\n }\n } else {\n callback();\n }\n } else {\n let message = '';\n if (typeof validate.error === 'object') {\n message = validate.error[key] || validate.error.default;\n }\n if (!message && typeof validate.message === 'string') {\n message = validate.message;\n }\n if (!message) {\n message = this.getValidateMessage(ctx, {key, rule: validate[key]});\n }\n callback(message);\n }\n }\n }\n return this.$manager.adapterValidate({\n required: validate.required,\n message: validate.message,\n trigger: validate.trigger,\n }, validator);\n },\n getValidateMessage(ctx, invalid) {\n const formatRule = Array.isArray(invalid.rule) ? invalid.rule.join(',') : ('' + invalid.rule);\n return this.api.t(invalid.key === 'required' ? invalid.key : ('validate.' + invalid.key), {\n [invalid.key]: formatRule,\n title: ctx.refRule?.__$title?.value\n });\n },\n validator(ctx, value, validate) {\n const isEmpty = is.empty(value);\n if (isEmpty) {\n if (validate.required) {\n return 'required'\n }\n return;\n }\n for (const [key, rule] of Object.entries(validate)) {\n switch (key) {\n case 'len':\n case 'maxLen':\n case 'minLen':\n const check = (val) => {\n if (key === 'len') {\n return val === rule;\n } else if (key === 'maxLen') {\n return val <= rule;\n } else {\n return val >= rule;\n }\n }\n if (Array.isArray(value)) {\n if (!check(value.length)) {\n return key;\n }\n } else if (typeof value === 'object') {\n return key;\n } else if (!check(('' + value).length)) {\n return key;\n }\n break;\n case 'pattern':\n const reg = typeof rule === 'string' ? new RegExp(rule) : rule;\n if (!reg.test('' + value)) {\n return key;\n }\n break;\n case 'uppercase':\n if (rule && (typeof value !== 'string' || !/^[A-Z]*$/.test(value))) {\n return key;\n }\n break;\n case 'lowercase':\n if (rule && (typeof value !== 'string' || !/^[a-z]*$/.test(value))) {\n return key;\n }\n break;\n case 'min':\n case 'max':\n case 'positive':\n case 'negative':\n case 'integer':\n case 'number':\n const num = Number(value);\n if (Number.isNaN(num)) {\n return key;\n }\n if (key === 'min' && num < rule) {\n return key;\n }\n if (key === 'max' && num > rule) {\n return key;\n }\n if (key === 'positive' && num <= 0) {\n return key;\n }\n if (key === 'negative' && num >= 0) {\n return key;\n }\n if (key === 'integer' && !Number.isInteger(num)) {\n return key;\n }\n break;\n case 'equal':\n if (value !== rule) {\n return key;\n }\n break;\n case 'enum':\n if (Array.isArray(rule) && !rule.includes(value)) {\n return key;\n }\n break;\n case 'hasKeys':\n if (typeof value !== 'object' || Array.isArray(rule) && rule.some(key => !(key in value))) {\n return key;\n }\n break;\n case 'email':\n const regexEmail = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n if (!regexEmail.test('' + value)) {\n return key;\n }\n break;\n case 'url':\n const regexUrl = new RegExp(\n '^(?!mailto:)(?:(?:http|https|ftp)://)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-?)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-?)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?$',\n 'i'\n );\n if (!regexUrl.test('' + value)) {\n return key;\n }\n break;\n case 'ip':\n const regexIp =\n /^(2(5[0-5]{1}|[0-4]\\d{1})|[0-1]?\\d{1,2})(\\.(2(5[0-5]{1}|[0-4]\\d{1})|[0-1]?\\d{1,2})){3}$/;\n if (!regexIp.test('' + value)) {\n return key;\n }\n break;\n case 'phone':\n const regexPhone = /^(?:(?:\\+|00)86)?1[3-9]\\d{9}$/;\n if (!regexPhone.test('' + value)) {\n return key;\n }\n break;\n case 'computed':\n if (!this.compute(ctx, rule)) {\n return key;\n }\n break;\n default:\n break;\n }\n }\n },\n compute(ctx, item) {\n let fn;\n if (typeof item === 'object') {\n const group = ctx.getParentGroup();\n const checkCondition = (item) => {\n item = Array.isArray(item) ? {mode: 'AND', group: item} : item;\n if (!is.trueArray(item.group)) {\n return true;\n }\n const or = item.mode === 'OR';\n let valid = true;\n for (let i = 0; i < item.group.length; i++) {\n const one = item.group[i];\n let flag;\n let field = null;\n let variableVal = null;\n if (one.variable) {\n variableVal = this.fc.getLoadData(one.variable);\n } else if (one.field) {\n field = convertFieldToConditions(one.field || '');\n } else if (!one.mode) {\n return true;\n }\n let compare = one.compare;\n if (compare) {\n compare = convertFieldToConditions(compare || '');\n }\n if (one.mode) {\n flag = checkCondition(one);\n } else if (!condition[one.condition]) {\n flag = false;\n } else if (is.Function(one.handler)) {\n flag = invoke(() => one.handler(this.api, ctx.rule));\n } else {\n flag = invoke(() => (new Function('$condition', '$variableVal', '$val', '$form', '$scope', '$group', '$rule', `with($form){with($scope){with(this){with($group){ return $condition['${one.condition}'](${one.variable ? '$variableVal' : field}, ${compare ? compare : '$val'}); }}}}`)).call(this.api.form, condition, variableVal, one.value, this.api.top.form, this.api.top === this.api.scope ? {} : this.api.scope.form, group ? (this.subRuleData[group.id] || {}) : {}, ctx.rule));\n }\n if (or && flag) {\n return true;\n }\n if (!or) {\n valid = valid && flag;\n }\n }\n return or ? false : valid;\n }\n let val = checkCondition(item);\n val = item.invert === true ? !val : val;\n if (item.linkage) {\n return val ? invoke(() => this.computeValue(item.linkage, ctx, group), undefined) : oldValueTag;\n } else if(item.linkageVariable) {\n return val ? invoke(() => this.fc.getLoadData(item.linkageVariable), undefined) : oldValueTag;\n }\n return val;\n } else if (is.Function(item)) {\n fn = () => item(this.api.form, this.api, ctx.rule);\n } else {\n const group = ctx.getParentGroup();\n fn = () => this.computeValue(item, ctx, group);\n }\n return invoke(fn, undefined);\n },\n computeValue(str, ctx, group) {\n const that = this;\n const formulas = Object.keys(this.fc.formulas).reduce((obj, k) => {\n obj[k] = function (...args) {\n return that.fc.formulas[k].call({\n that: this,\n rule: ctx.rule,\n api: that.api,\n fc: that.fc\n }, ...args);\n }\n return obj;\n }, {})\n return invoke(() => (new Function('$formulas', '$form', '$scope', '$group', '$rule', '$api', `with($form){with($scope){with(this){with($group){with($formulas){ return ${str} }}}}}`)).call(this.api.form, formulas, this.api.top.form, this.api.top === this.api.scope ? {} : this.api.scope.form, group ? (this.subRuleData[group.id] || {}) : {}, ctx.rule, this.api), undefined);\n },\n updateChildren(ctx, n, o) {\n this.deferSyncValue(() => {\n o && o.forEach((child) => {\n if ((n || []).indexOf(child) === -1 && child && !is.String(child) && child.__fc__ && child.__fc__.parent === ctx) {\n this.rmCtx(child.__fc__);\n }\n });\n if (is.trueArray(n)) {\n this.loadChildren(n, ctx);\n this.bus.$emit('update', this.api);\n }\n });\n },\n rmSub(sub) {\n is.trueArray(sub) && sub.forEach(r => {\n r && r.__fc__ && this.rmCtx(r.__fc__);\n })\n },\n rmCtx(ctx) {\n if (ctx.deleted) return;\n const {id, field, input, name} = ctx;\n\n $del(this.ctxs, id);\n $del(this.formData, id);\n $del(this.subForm, id);\n $del(this.vm.setupState.ctxInject, id);\n const group = ctx.getParentGroup();\n if (group && this.subRuleData[group.id]) {\n $del(this.subRuleData[group.id], field);\n }\n if (ctx.group) {\n $del(this.subRuleData, id);\n }\n\n input && this.rmIdCtx(ctx, field, 'field');\n name && this.rmIdCtx(ctx, name, 'name');\n\n if (input && !hasProperty(this.fieldCtx, field)) {\n $del(this.form, field);\n }\n\n this.deferSyncValue(() => {\n if (!this.reloading) {\n if (ctx.parser.loadChildren !== false) {\n const children = ctx.getPending('children', ctx.rule.children);\n if (is.trueArray(children)) {\n children.forEach(h => h && h.__fc__ && this.rmCtx(h.__fc__));\n }\n }\n if (ctx.root === this.rules) {\n this.vm.setupState.renderRule();\n }\n }\n }, input);\n\n const index = this.sort.indexOf(id);\n if (index > -1) {\n this.sort.splice(index, 1);\n }\n\n this.$render.clearCache(ctx);\n ctx.delete();\n this.effect(ctx, 'deleted');\n this.targetHook(ctx, 'deleted');\n input && !this.fieldCtx[field] && this.vm.emit('remove-field', field, ctx.rule, this.api);\n ctx.rule.__ctrl || this.vm.emit('remove-rule', ctx.rule, this.api);\n return ctx;\n },\n })\n}\n","import Api from '../frame/api';\nimport Render from '../render';\nimport extend from '@form-create/utils/lib/extend';\nimport {funcProxy, invoke} from '../frame/util';\nimport useInject from './inject';\nimport usePage from './page';\nimport useRender from './render';\nimport useLoader from './loader';\nimport useInput from './input';\nimport useContext from './context';\nimport useLifecycle from './lifecycle';\nimport useEffect from './effect';\nimport {reactive} from 'vue';\nimport is from '@form-create/utils/lib/type';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\n\n\nexport default function Handler(fc) {\n funcProxy(this, {\n options() {\n return fc.options.value || {};\n },\n bus() {\n return fc.bus;\n },\n preview() {\n if (fc.vm.props.preview != null) {\n return fc.vm.props.preview;\n } else if (fc.vm.setupState.parent && fc.vm.setupState.parent.props.preview != null) {\n return fc.vm.setupState.parent.props.preview;\n }\n return fc.options.value.preview || false;\n }\n })\n extend(this, {\n fc,\n vm: fc.vm,\n watching: false,\n loading: false,\n reloading: false,\n noWatchFn: null,\n deferSyncFn: null,\n isMounted: false,\n formData: reactive({}),\n subRuleData: reactive({}),\n subForm: {},\n form: reactive({}),\n appendData: {},\n ignoreFields: [],\n providers: {},\n cycleLoad: null,\n loadedId: 1,\n nextTick: null,\n changeStatus: false,\n pageEnd: true,\n nextReload: () => {\n this.lifecycle('reload');\n }\n });\n\n this.initData(fc.rules);\n\n this.$manager = new fc.manager(this);\n this.$render = new Render(this);\n this.api = fc.extendApiFn.reduce((api, fn) => {\n const extendApi = invoke(() => fn(api, this));\n if (extendApi && extendApi !== api) {\n extend(api, extendApi);\n }\n return api;\n }, Api(this));\n}\n\nextend(Handler.prototype, {\n initData(rules) {\n extend(this, {\n ctxs: {},\n fieldCtx: {},\n nameCtx: {},\n sort: [],\n rules,\n });\n },\n init() {\n this.updateAppendData();\n this.useProvider();\n this.usePage();\n this.loadRule();\n this.$manager.__init();\n this.lifecycle('created');\n },\n updateAppendData() {\n this.appendData = {...deepCopy(this.options.formData || {}), ...(this.fc.vm.props.modelValue || {}), ...this.appendData};\n },\n isBreakWatch() {\n return this.loading || this.noWatchFn || this.reloading;\n },\n globalBeforeFetch(opt) {\n return new Promise((resolve, reject) => {\n const source = this.options.beforeFetch && invoke(() => this.options.beforeFetch(opt, {api: this.api}));\n if (source && is.Function(source.then)) {\n source.then(resolve).catch(reject);\n } else {\n resolve();\n }\n });\n },\n beforeFetch(opt) {\n return new Promise((resolve, reject) => {\n const res = opt && opt.beforeFetch && invoke(() => opt.beforeFetch(opt, {api: this.api}));\n if (res && is.Function(res.then)) {\n res.then(resolve).catch(reject);\n } else if (res === false) {\n reject();\n } else {\n resolve();\n }\n }).then(() => {\n return this.globalBeforeFetch(opt);\n });\n },\n beforeSubmit(formData) {\n return new Promise((resolve, reject) => {\n const res = this.options.beforeSubmit && invoke(() => this.options.beforeSubmit(formData, {api: this.api}));\n if (res && is.Function(res.then)) {\n res.then(resolve).catch(reject);\n } else if (res === false) {\n reject();\n } else {\n resolve();\n }\n });\n }\n})\n\nuseInject(Handler);\nusePage(Handler);\nuseRender(Handler);\nuseLoader(Handler);\nuseInput(Handler);\nuseContext(Handler);\nuseLifecycle(Handler);\nuseEffect(Handler);\n","import extend from '@form-create/utils/lib/extend';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport toLine from '@form-create/utils/lib/toline';\nimport {deepGet, extractVar, invoke, parseFn, parseTemplateToTree} from '../frame/util';\nimport toCase from '@form-create/utils/lib/tocase';\n\n\nexport default function useInject(Handler) {\n extend(Handler.prototype, {\n parseInjectEvent(rule, on) {\n const inject = rule.inject || this.options.injectEvent;\n return this.parseEventLst(rule, on, inject);\n },\n parseEventLst(rule, data, inject, deep) {\n Object.keys(data).forEach(k => {\n const fn = this.parseEvent(rule, data[k], inject, deep);\n if (fn) {\n data[k] = fn;\n }\n });\n return data;\n },\n parseEvent(rule, fn, inject, deep) {\n if (is.Function(fn) && ((inject !== false && !is.Undef(inject)) || fn.__inject)) {\n return this.inject(rule, fn, inject)\n } else if (!deep && Array.isArray(fn) && fn[0] && (is.String(fn[0]) || is.Function(fn[0]))) {\n return this.parseEventLst(rule, fn, inject, true);\n } else if (is.String(fn)) {\n const val = parseFn(fn);\n if (val && fn !== val) {\n return val.__inject ? this.parseEvent(rule, val, inject, true) : val;\n }\n }\n },\n parseEmit(ctx) {\n let event = {}, rule = ctx.rule, {emitPrefix, field, name, inject} = rule;\n let emit = rule.emit || [];\n if (is.trueArray(emit)) {\n emit.forEach(eventName => {\n if (!eventName) return;\n let eventInject;\n let emitKey = emitPrefix || field || name;\n if (is.Object(eventName)) {\n eventInject = eventName.inject;\n eventName = eventName.name;\n emitKey = eventName.prefix || emitKey;\n }\n if (emitKey) {\n const fieldKey = toLine(`${emitKey}-${eventName}`);\n const fn = (...arg) => {\n if (this.vm.emitsOptions && !this.vm.emitsOptions[fieldKey]) {\n this.vm.emitsOptions[fieldKey] = null;\n }\n this.vm.emit(fieldKey, ...arg);\n this.vm.emit('emit-event', fieldKey, ...arg);\n this.bus.$emit(fieldKey, ...arg);\n };\n fn.__emit = true;\n\n if (!eventInject && inject === false) {\n event[toCase(eventName)] = fn;\n } else {\n let _inject = eventInject || inject || this.options.injectEvent;\n event[toCase(eventName)] = is.Undef(_inject) ? fn : this.inject(rule, fn, _inject);\n }\n }\n\n });\n }\n ctx.computed.on = event;\n return event;\n },\n getInjectData(self, inject) {\n const $api = self.__fc__ && self.__fc__.$api;\n const vm = (self.__fc__ && self.__fc__.$handle.vm) || this.vm;\n const {option, rule} = vm.props;\n return {\n $f: $api || this.api,\n api: $api || this.api,\n rule,\n self: self.__origin__,\n option,\n inject\n };\n },\n inject(self, _fn, inject) {\n if (_fn.__origin) {\n if (this.watching && !this.loading)\n return _fn;\n _fn = _fn.__origin;\n }\n\n const h = this;\n\n const fn = function (...args) {\n const data = h.getInjectData(self, inject);\n data.args = [...args];\n args.unshift(data);\n return _fn.apply(this, args);\n };\n fn.__origin = _fn;\n fn.__json = _fn.__json;\n return fn;\n },\n loadStrVar(str, get, group) {\n if (str && typeof str === 'string' && str.indexOf('{{') > -1 && str.indexOf('}}') > -1) {\n const tmp = str;\n const vars = extractVar(str);\n\n const getValue = (field) => {\n let flag = false;\n let val;\n if (group && field.indexOf('$form.') === 0) {\n const _split = field.split('.');\n _split.shift();\n if (hasProperty(group.value, _split[0])) {\n flag = true;\n val = get ? get({\n id: '$form.' + _split[0] + '_' + group.rule.__fc__.id,\n getValue: () => {\n return deepGet(group.value, _split);\n }\n }) : deepGet(group.value, _split);\n }\n }\n if (!flag) {\n val = get ? get(field) : this.fc.getLoadData(field)\n }\n return val;\n }\n\n const treeToVal = (tree) => {\n const fields = [];\n tree.forEach(item => {\n if (item.key) {\n fields.push(item.key);\n } else if (item.children) {\n fields.push(treeToVal(item.children));\n }\n })\n let flag = false;\n fields.forEach((field, idx) => {\n if (field != null && (field.indexOf('\\'') === 0 || field.indexOf('\"') === 0)) {\n fields[idx] = field.slice(1, -1)\n flag = true;\n }\n })\n if (fields.length === 1 && (flag || !isNaN(Number(fields[0])))) {\n return fields[0];\n }\n return getValue(fields.join('.'));\n }\n\n let lastVal;\n vars.forEach(v => {\n const split = v.split('||');\n const field = split[0].trim();\n if (field) {\n const def = (split[1] || '').trim();\n const tree = parseTemplateToTree(field);\n let val = invoke(() => treeToVal(tree));\n if ((val == null || val === '') && split.length > 1) {\n val = def;\n }\n lastVal = val;\n str = str.replaceAll(`{{${v}}}`, val == null ? '' : val);\n }\n })\n if (vars.length === 1 && tmp === `{{${vars[0]}}}`) {\n return lastVal;\n }\n }\n return str;\n },\n loadFetchVar(options, get, rule) {\n let group;\n if (rule && rule.__fc__) {\n group = rule.__fc__.getParentGroup();\n }\n const loadVal = str => {\n return this.loadStrVar(str, get, group ? {rule, value: (this.subRuleData[group.id] || {})} : null);\n }\n\n options.action = loadVal(options.action || '');\n\n ['headers', 'data', 'query'].forEach(key => {\n if (options[key]) {\n const data = Array.isArray(options[key]) ? [] : {};\n Object.keys(options[key]).forEach(k => {\n data[loadVal(k)] = loadVal(options[key][k]);\n });\n options[key] = data;\n }\n });\n\n return options;\n }\n })\n}\n","import extend from '@form-create/utils/lib/extend';\n\n\nexport default function useRender(Handler) {\n extend(Handler.prototype, {\n clearNextTick() {\n this.nextTick && clearTimeout(this.nextTick);\n this.nextTick = null;\n },\n bindNextTick(fn) {\n this.clearNextTick();\n this.nextTick = setTimeout(() => {\n fn()\n this.nextTick = null;\n }, 10);\n },\n render() {\n // console.warn('%c render', 'color:green');\n ++this.loadedId;\n\n if (this.vm.setupState.unique > 0)\n return this.$render.render();\n else {\n this.vm.setupState.unique = 1;\n return [];\n }\n },\n });\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {invoke, parseFn} from '../frame/util';\nimport toCase from '@form-create/utils/lib/tocase';\nimport {upper} from '@form-create/utils/lib/toline';\n\n\nexport default function useLifecycle(Handler) {\n extend(Handler.prototype, {\n mounted() {\n const _mounted = () => {\n this.isMounted = true;\n this.lifecycle('mounted');\n }\n if (this.pageEnd) {\n _mounted();\n } else {\n this.bus.$once('page-end', _mounted);\n }\n },\n lifecycle(name) {\n this.fc.targetFormDriver(name, this.api, this.fc);\n this.vm.emit(name, this.api);\n this.emitEvent(name, this.api);\n },\n emitEvent(name, ...args) {\n const _fn = this.options[name] || this.options[toCase('on-' + name)];\n if (_fn) {\n const fn = parseFn(_fn);\n is.Function(fn) && invoke(() => fn(...args));\n }\n this.bus.$emit(name, ...args);\n },\n targetHook(ctx, name, args) {\n let hook = ctx.prop?.hook?.[name];\n\n let run = (on, p) => {\n if (on) {\n on = Array.isArray(on) ? on : [on];\n on.forEach(fn => {\n invoke(() => fn({args: Object.values(args || {}), ...args || {}, self: ctx.rule, rule: ctx.rule, parent: p?.rule, $f: this.api, api: this.api, option: this.vm.props.option}));\n });\n }\n }\n run(hook);\n let deepName = 'deep' + upper(name);\n let parent = ctx.parent;\n while (parent) {\n let deepHook = parent.prop?.hook?.[deepName];\n run(deepHook, parent);\n parent = parent.parent;\n }\n }\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {mergeRule} from '../frame/util';\nimport {watch} from 'vue';\n\n\nexport default function useEffect(Handler) {\n extend(Handler.prototype, {\n useProvider() {\n const ps = this.fc.providers;\n Object.keys(ps).forEach(k => {\n let prop = ps[k];\n if (is.Function(prop)) {\n prop = prop(this.fc);\n }\n prop._c = getComponent(prop);\n this.onEffect(prop, k);\n this.providers[k] = prop;\n });\n },\n onEffect(provider, key) {\n const used = [];\n (provider._c || ['*']).forEach(name => {\n const type = name === '*' ? '*' : this.getType(name);\n if (used.indexOf(type) > -1) return;\n used.push(type);\n this.bus.$on(`p:${key || provider.name}:${type}:${provider.input ? 1 : 0}`, (event, args) => {\n provider[event] && provider[event](...args);\n });\n });\n provider._used = used;\n },\n watchEffect(ctx) {\n let effect = {\n required: () => {\n return (hasProperty(ctx.rule, '$required') ? ctx.rule['$required'] : ctx.rule?.effect?.required) || false;\n }\n };\n Object.keys(ctx.rule.effect || {}).forEach(k => {\n effect[k] = () => ctx.rule.effect[k];\n })\n Object.keys(ctx.rule).forEach(k => {\n if (k[0] === '$') {\n effect[k.substr(1)] = () => ctx.rule[k];\n }\n })\n Object.keys(effect).forEach(k => {\n ctx.watch.push(watch(effect[k], (n) => {\n this.effect(ctx, 'watch', {[k]: n});\n }, {deep: true}));\n });\n },\n ruleEffect(rule, event, append) {\n this.emitEffect({\n rule,\n input: !!rule.field,\n type: this.getType(rule.type)\n }, event, append);\n },\n effect(ctx, event, custom) {\n this.emitEffect({\n rule: ctx.rule,\n input: ctx.input,\n type: ctx.trueType,\n ctx,\n custom\n }, event);\n },\n getEffect(rule, name) {\n if (hasProperty(rule, '$' + name)) {\n return rule['$' + name];\n }\n if (hasProperty(rule, 'effect') && hasProperty(rule.effect, name))\n return rule.effect[name];\n return undefined;\n },\n emitEffect({ctx, rule, input, type, custom}, event, append) {\n if (!type || ['fcFragment', 'fragment'].indexOf(type) > -1) return;\n const effect = custom ? custom : (Object.keys(rule).reduce((i, k) => {\n if (k[0] === '$') {\n i[k.substr(1)] = rule[k];\n }\n return i;\n }, {...rule.effect || {}}));\n Object.keys(effect).forEach(attr => {\n const p = this.providers[attr];\n if (!p || (p.input && !input)) return;\n let _type;\n if (!p._c) {\n _type = '*';\n } else if (p._used.indexOf(type) > -1) {\n _type = type;\n } else {\n return;\n }\n const data = {value: effect[attr], getValue: () => this.getEffect(rule, attr), ...(append || {})};\n if (ctx) {\n data.getProp = () => ctx.effectData(attr);\n data.clearProp = () => ctx.clearEffectData(attr);\n data.mergeProp = (prop) => mergeRule(data.getProp(), [prop]);\n data.id = ctx.id;\n }\n this.bus.$emit(`p:${attr}:${_type}:${p.input ? 1 : 0}`, event, [data, rule, this.api]);\n });\n }\n });\n}\n\nfunction unique(arr) {\n return arr.filter(function (item, index, arr) {\n return arr.indexOf(item, 0) === index;\n });\n}\n\nfunction getComponent(p) {\n const c = p.components;\n if (Array.isArray(c)) {\n const arr = unique(c.filter(v => v !== '*'));\n return arr.length ? arr : false;\n } else if (is.String(c)) return [c];\n else return false;\n}\n","import {defineComponent} from 'vue';\n\nconst NAME = 'fcFragment';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: ['vnode'],\n render() {\n return this.vnode;\n }\n})\n","import toLine from '@form-create/utils/lib/toline';\nimport toString from '@form-create/utils/lib/tostring';\nimport extend from '@form-create/utils/lib/extend';\nimport {toProps} from '../frame/util';\nimport {createVNode, getCurrentInstance, resolveComponent, resolveDirective, withDirectives} from 'vue';\n\n\nfunction tidyDirectives(directives) {\n return Object.keys(directives).map(n => {\n const data = directives[n];\n const directive = resolveDirective(n);\n if (!directive) return;\n return [\n directive, data.value, data.arg, data.modifiers\n ]\n }).filter(v => !!v);\n}\n\nfunction makeDirective(data, vn) {\n let directives = data.directives;\n if (!directives) return vn;\n if (!Array.isArray(directives)) {\n directives = [directives];\n }\n return withDirectives(vn, directives.reduce((lst, v) => {\n return lst.concat(tidyDirectives(v));\n }, []))\n}\n\nexport function CreateNodeFactory() {\n\n const aliasMap = {};\n\n function CreateNode(handle) {\n this.vm = handle.vm;\n this.handle = handle;\n }\n\n extend(CreateNode.prototype, {\n make(tag, data, children) {\n return makeDirective(data, this.h(tag, toProps(data), children));\n },\n makeComponent(type, data, children) {\n try {\n return makeDirective(data, createVNode(type, toProps(data), children));\n } catch (e) {\n console.error(e);\n return createVNode('');\n }\n },\n h(tag, data, children) {\n const vm = this.vm || getCurrentInstance();\n const isNativeTag = vm.appContext.config.isNativeTag(tag);\n const component = this.handle.fc.prop.components[tag];\n if (!component && isNativeTag) {\n delete data.formCreateInject;\n }\n try{\n return createVNode(component || (isNativeTag ? tag : resolveComponent(tag)), data, children);\n }catch (e){\n console.error(e);\n return createVNode('');\n }\n },\n aliasMap\n });\n\n extend(CreateNode, {\n aliasMap,\n alias(alias, name) {\n aliasMap[alias] = name;\n },\n use(nodes) {\n Object.keys(nodes).forEach((k) => {\n const line = toLine(k);\n const lower = toString(k).toLocaleLowerCase();\n const v = nodes[k];\n CreateNode.alias(k, v);\n [k, line, lower].forEach(n => {\n CreateNode.prototype[n] = function (data, children) {\n return this.make(aliasMap[k] || n, data, children);\n };\n });\n });\n }\n })\n\n return CreateNode;\n}\n","import mergeProps from '@form-create/utils/lib/mergeprops';\nimport unique from '@form-create/utils/lib/unique';\nimport extend from '@form-create/utils/lib/extend';\nimport {invoke} from '../frame/util';\n\nexport function createManager(proto) {\n class CustomManager extends Manager {\n }\n\n Object.assign(CustomManager.prototype, proto);\n return CustomManager;\n}\n\nexport default function Manager(handler) {\n extend(this, {\n $handle: handler,\n vm: handler.vm,\n options: {},\n ref: 'fcForm',\n mergeOptionsRule: {\n normal: ['form', 'row', 'info', 'submitBtn', 'resetBtn']\n }\n });\n this.updateKey();\n this.init();\n}\n\nextend(Manager.prototype, {\n __init() {\n this.$render = this.$handle.$render;\n this.$r = (...args) => this.$render.renderRule(...args);\n },\n updateKey() {\n this.key = unique();\n },\n //TODO interface\n init() {\n },\n update() {\n },\n beforeRender() {\n },\n form() {\n return this.vm.refs[this.ref];\n },\n adapterValidate(validate, validator) {\n validate.validator = (rule, value, callback) => {\n return validator(value, callback);\n }\n return validate;\n },\n getSlot(name) {\n const _fn = (vm) => {\n if (vm) {\n let slot = vm.slots[name];\n if (slot) {\n return slot;\n }\n return _fn(vm.setupState.parent);\n }\n return undefined;\n }\n return _fn(this.vm);\n },\n mergeOptions(args, opt) {\n return mergeProps(args.map(v => this.tidyOptions(v)), opt, this.mergeOptionsRule);\n },\n updateOptions(options) {\n this.$handle.fc.targetFormDriver('updateOptions', options, {handle: this.$handle, api: this.$handle.api})\n this.options = this.mergeOptions([options], this.getDefaultOptions());\n this.update();\n },\n tidyOptions(options) {\n return options;\n },\n tidyRule(ctx) {\n },\n mergeProp(ctx) {\n },\n getDefaultOptions() {\n return {};\n },\n fieldChange(ctx, value, formValue, setFlag) {\n },\n render(children) {\n }\n})\n","import {err} from '@form-create/utils/lib/console';\nimport {byCtx, deepGet, invoke, parseFn} from './util';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport deepSet from '@form-create/utils/lib/deepset';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport toArray from '@form-create/utils/lib/toarray';\nimport debounce from '@form-create/utils/lib/debounce';\nimport {nextTick} from 'vue';\nimport {toPromise} from '@form-create/utils';\n\nconst loadData = function (fc) {\n const loadData = {\n name: 'loadData',\n _fn: [],\n loaded(inject, rule, api) {\n this.deleted(inject);\n nextTick(() => {\n let attrs = toArray(inject.getValue());\n const unwatchs = [];\n attrs.forEach(attr => {\n if (attr && (attr.attr || attr.template)) {\n let fn = (get) => {\n let group;\n if (rule && rule.__fc__) {\n group = rule.__fc__.getParentGroup();\n }\n let value;\n if (attr.template) {\n value = fc.$handle.loadStrVar(attr.template, get, group ? {rule, value: (fc.$handle.subRuleData[group.id] || {})} : null);\n } else if (attr.handler && is.Function(attr.handler)) {\n value = attr.handler(get, rule, api);\n } else {\n value = fc.$handle.loadStrVar(`{{${attr.attr}}}`, get, group ? {rule, value: (fc.$handle.subRuleData[group.id] || {})} : null);\n }\n if ((value == null || value === '') && attr.default != null) {\n value = attr.default;\n }\n if (attr.copy !== false) {\n value = deepCopy(value)\n }\n const _rule = (attr.modify ? rule : inject.getProp());\n if (attr.to === 'child') {\n if (_rule.children) {\n _rule.children[0] = value;\n } else {\n _rule.children = [value];\n }\n } else {\n deepSet(_rule, attr.to || 'options', value);\n }\n api.sync(rule);\n };\n let callback = (get) => fn(get);\n const unwatch = fc.watchLoadData(callback);\n fn = debounce(fn, attr.wait || 300)\n if (attr.watch !== false) {\n unwatchs.push(unwatch);\n } else {\n unwatch();\n }\n }\n })\n this._fn[inject.id] = unwatchs;\n });\n },\n deleted(inject) {\n if (this._fn[inject.id]) {\n this._fn[inject.id].forEach(un => {\n un();\n })\n delete this._fn[inject.id];\n }\n inject.clearProp();\n },\n };\n loadData.watch = loadData.loaded;\n return loadData;\n}\n\nconst t = function (fc) {\n const t = {\n name: 't',\n _fn: [],\n loaded(inject, rule, api) {\n this.deleted(inject);\n let attrs = inject.getValue() || {};\n const unwatchs = [];\n Object.keys(attrs).forEach(key => {\n const attr = attrs[key];\n if (attr) {\n const isObj = typeof attr === 'object';\n let fn = (get) => {\n let value = fc.t(isObj ? attr.attr : attr, isObj ? attr.params : null, get);\n const _rule = ((isObj && attr.modify) ? rule : inject.getProp());\n if (key === 'child') {\n if (_rule.children) {\n _rule.children[0] = value;\n } else {\n _rule.children = [value];\n }\n } else {\n deepSet(_rule, key, value);\n }\n api.sync(rule);\n };\n let callback = (get) => fn(get);\n const unwatch = fc.watchLoadData(callback);\n fn = debounce(fn, attr.wait || 300)\n if (attr.watch !== false) {\n unwatchs.push(unwatch);\n } else {\n unwatch();\n }\n }\n })\n this._fn[inject.id] = unwatchs;\n },\n deleted(inject) {\n if (this._fn[inject.id]) {\n this._fn[inject.id].forEach(un => {\n un();\n })\n delete this._fn[inject.id];\n }\n inject.clearProp();\n },\n };\n t.watch = t.loaded;\n return t;\n}\n\nconst componentValidate = {\n name: 'componentValidate',\n load(attr, rule, api) {\n let options = attr.getValue();\n if (!options || options.method === false) {\n attr.clearProp();\n api.clearValidateState([rule.field]);\n } else {\n if (!is.Object(options)) {\n options = {method: options};\n }\n const method = options.method;\n const validate = {\n ...options,\n validator(...args) {\n const ctx = byCtx(rule);\n if (ctx) {\n return api.exec(ctx.id, is.String(method) ? method : 'formCreateValidate', ...args, {\n attr,\n rule,\n api\n });\n }\n }\n };\n delete validate.method;\n attr.getProp().validate = [validate];\n }\n },\n watch(...args) {\n componentValidate.load(...args);\n }\n};\n\n\nconst fetch = function (fc) {\n\n function parseOpt(option) {\n if (is.String(option)) {\n option = {\n action: option,\n to: 'options'\n }\n }\n return option;\n }\n\n function run(inject, rule, api) {\n let option = inject.value;\n fetchAttr.deleted(inject);\n if (is.Function(option)) {\n option = option(rule, api);\n }\n option = parseOpt(option);\n\n const set = (val) => {\n if (val === undefined) {\n inject.clearProp();\n } else {\n deepSet(inject.getProp(), option.to || 'options', val);\n }\n if (val != null && option && option.key && fc.$handle.options.globalData[option.key]) {\n fc.fetchCache.set(fc.$handle.options.globalData[option.key], {status: true, data: val});\n }\n api.sync(rule);\n }\n\n if (!option || (!option.action && !option.key)) {\n set(undefined);\n return;\n }\n option = deepCopy(option);\n if (!option.to) {\n option.to = 'options';\n }\n\n const onError = option.onError;\n\n const check = () => {\n if (!inject.getValue()) {\n inject.clearProp();\n api.sync(rule);\n return true;\n }\n }\n fetchAttr._fn[inject.id] = fc.watchLoadData(debounce((get, change) => {\n if (change && option.watch === false) {\n return fetchAttr._fn[inject.id]();\n }\n if(option.key) {\n fc.targetRule = rule;\n const res = get('$globalData.' + option.key);\n delete fc.targetRule;\n if (res) {\n if (check()) return;\n set(res);\n }\n return ;\n }\n const _option = fc.$handle.loadFetchVar(deepCopy(option), get, rule);\n const config = {\n headers: {},\n ..._option,\n onSuccess(body, flag) {\n if (check()) return;\n let fn = (v) => flag ? v : (hasProperty(v, 'data') ? v.data : v);\n const parse = parseFn(_option.parse);\n if (is.Function(parse)) {\n fn = parse;\n } else if (parse && is.String(parse)) {\n fn = (v) => {\n return deepGet(v, parse);\n }\n }\n toPromise(fn(body, rule, api)).then(res => {\n set(res);\n })\n },\n onError(e) {\n set(undefined);\n if (check()) return;\n (onError || ((e) => err(e.message || 'fetch fail ' + _option.action)))(e, rule, api);\n }\n };\n fc.$handle.beforeFetch(config, {rule, api}).then(() => {\n if (is.Function(_option.action)) {\n toPromise(_option.action(rule, api)).then((val) => {\n config.onSuccess(val, true);\n }).catch((e) => {\n config.onError(e);\n });\n return;\n }\n invoke(() => fc.create.fetch(config, {inject, rule, api}));\n }).catch(e => {});\n }, option.wait || 600));\n }\n\n const fetchAttr = {\n name: 'fetch',\n _fn: [],\n loaded(...args) {\n run(...args);\n },\n watch(...args) {\n run(...args);\n },\n deleted(inject) {\n if (this._fn[inject.id]) {\n this._fn[inject.id]();\n delete this._fn[inject.id];\n }\n inject.clearProp();\n },\n };\n\n return fetchAttr;\n}\n\n\nexport default {\n fetch,\n loadData,\n t,\n componentValidate,\n};\n","import is from '@form-create/utils/lib/type';\n\nconst name = 'html';\n\nexport default {\n name,\n loadChildren: false,\n render(children, ctx) {\n ctx.prop.props.innerHTML = children.default();\n return ctx.vNode.make(ctx.prop.props.tag || 'div', ctx.prop);\n },\n renderChildren(children) {\n return {\n default: () => children.filter(v => is.String(v)).join('')\n }\n }\n}\n","import {deepGet} from './util';\n\nfunction getCookie(name) {\n name = name + '=';\n\n const decodedCookie = decodeURIComponent(document.cookie);\n const cookieArray = decodedCookie.split(';');\n\n for (let i = 0; i < cookieArray.length; i++) {\n let cookie = cookieArray[i];\n while (cookie.charAt(0) === ' ') {\n cookie = cookie.substring(1);\n }\n if (cookie.indexOf(name) === 0) {\n cookie = cookie.substring(name.length, cookie.length);\n try {\n return JSON.parse(cookie);\n } catch (e) {\n return cookie;\n }\n }\n }\n return null;\n}\n\nfunction getLocalStorage(name) {\n const value = localStorage.getItem(name);\n if (value) {\n try {\n return JSON.parse(value);\n } catch (e) {\n return value;\n }\n }\n return null;\n}\n\nfunction getSessionStorage(name) {\n const value = sessionStorage.getItem(name);\n if (value) {\n try {\n return JSON.parse(value);\n } catch (e) {\n return value;\n }\n }\n return null;\n}\n\nexport function baseDriver(driver, name) {\n if (!name) {\n return null;\n }\n const split = name.split('.');\n let value = driver(split.shift());\n\n if (!split.length) {\n return value;\n }\n if (value == null) {\n return null;\n }\n return deepGet(value, split);\n}\n\nexport function cookieDriver(name) {\n return baseDriver(getCookie, name);\n}\n\nexport function localStorageDriver(name) {\n return baseDriver(getLocalStorage, name);\n}\n\nexport function sessionStorageDriver(name) {\n return baseDriver(getSessionStorage, name);\n}","export default {\n en: {\n required: '{title} is required',\n validate: {\n url: '{title} is not a valid url',\n email: '{title} is not a valid email',\n ip: '{title} {title} is not a valid ip',\n phone: '{title} {title} is not a valid phone',\n pattern: '{title} does not match pattern {pattern}',\n uppercase: '{title} must be all uppercase',\n lowercase: '{title} must be all lowercased',\n positive: '{title} is not a positive number',\n negative: '{title} is not a negative number',\n equal: '{title} is not equal to {equal}',\n min: '{title} cannot be less than {min}',\n max: '{title} cannot be greater than {max}',\n enum: '{title} must be one of {enum}',\n hasKeys: '{title} does not contain required fields {hasKeys}',\n minLen: '{title} must be at least {minLen}',\n maxLen: '{title} cannot be longer than {maxLen}',\n len: '{title} must be exactly {len}',\n integer: '{title} is not an integer',\n number: '{title} is not an number',\n }\n },\n 'zh-cn': {\n required: '{title}不能为空',\n validate: {\n url: '{title}不是有效的 url 地址',\n email: '{title}不是有效的邮箱地址',\n ip: '{title}不是有效的 IP 地址',\n phone: '{title}不是正确的手机号',\n pattern: '{title}必须匹配 {pattern}',\n uppercase: '{title}必须全大写',\n lowercase: '{title}必须全小写',\n positive: '{title}不是正数',\n negative: '{title}不是负数',\n equal: '{title}必须等于 {equal}',\n min: '{title}必须大于等于 {min}',\n max: '{title}必须小于等于 {max}',\n enum: '{title}必须是 {enum} 之一',\n hasKeys: '{title}必须包含 {hasKeys} 字段',\n minLen: '{title}长度必须大于 {minLen}',\n maxLen: '{title}长度必须小于 {maxLen}',\n len: '{title}长度必须为 {len}',\n integer: '{title}必须为整数',\n number: '{title}必须为数字',\n },\n }\n}","import $FormCreate from '../components/formCreate';\nimport {computed, createApp, h, nextTick, reactive, ref, watch} from 'vue';\nimport makerFactory from '../factory/maker';\nimport Handle from '../handler';\nimport fetch from './fetch';\nimport {creatorFactory, mergeRule} from '..';\nimport BaseParser from '../factory/parser';\nimport {copyRule, copyRules, deepGet, invoke, mergeGlobal, parseFn, parseJson, setPrototypeOf, toJson} from './util';\nimport fragment from '../components/fragment';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport toCase from '@form-create/utils/lib/tocase';\nimport extend, {copy} from '@form-create/utils/lib/extend';\nimport {CreateNodeFactory} from '../factory/node';\nimport {createManager} from '../factory/manager';\nimport {arrayAttrs, keyAttrs, normalAttrs} from './attrs';\nimport {appendProto} from '../factory/creator';\nimport $provider from './provider';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport Mitt from '@form-create/utils/lib/mitt';\nimport html from '../parser/html';\nimport uniqueId from '@form-create/utils/lib/unique';\nimport {cookieDriver, localStorageDriver, sessionStorageDriver} from './dataDriver';\nimport debounce from '@form-create/utils/lib/debounce';\nimport {deepSet} from '@form-create/utils';\nimport baseLanguage from './language';\n\nfunction parseProp(name, id) {\n let prop;\n if (arguments.length === 2) {\n prop = arguments[1];\n id = prop[name];\n } else {\n prop = arguments[2];\n }\n return {id, prop};\n}\n\nfunction nameProp() {\n return parseProp('name', ...arguments);\n}\n\nfunction exportAttrs(attrs) {\n const key = attrs.key || [];\n const array = attrs.array || [];\n const normal = attrs.normal || [];\n keyAttrs.push(...key);\n arrayAttrs.push(...array);\n normalAttrs.push(...normal);\n\n appendProto([...key, ...array, ...normal]);\n}\n\nlet id = 1;\nconst instance = {};\nconst defValueTag = Symbol('defValue');\n\n//todo 表单嵌套\nexport default function FormCreateFactory(config) {\n\n const components = {\n [fragment.name]: fragment\n };\n const parsers = {};\n const directives = {};\n const modelFields = {};\n const drivers = {};\n const useApps = [];\n const listener = [];\n const extendApiFn = [\n config.extendApi\n ];\n const providers = {\n ...$provider\n };\n const maker = makerFactory();\n let globalConfig = {global: {}};\n const isMobile = config.isMobile === true;\n const loadData = reactive({\n $mobile: isMobile,\n });\n const CreateNode = CreateNodeFactory();\n const formulas = {};\n const prototype = {};\n\n exportAttrs(config.attrs || {});\n\n function getApi(name) {\n const val = instance[name];\n if (Array.isArray(val)) {\n return val.map(v => {\n return v.api();\n });\n } else if (val) {\n return val.api();\n }\n }\n\n function useApp(fn) {\n useApps.push(fn);\n }\n\n function directive() {\n const data = nameProp(...arguments);\n if (data.id && data.prop) directives[data.id] = data.prop;\n }\n\n function register() {\n const data = nameProp(...arguments);\n if (data.id && data.prop) providers[data.id] = is.Function(data.prop) ? data.prop : {\n ...data.prop,\n name: data.id\n };\n }\n\n function componentAlias(alias) {\n CreateNode.use(alias);\n }\n\n function parser(key) {\n if (arguments.length === 0) {\n return BaseParser;\n } else if (typeof key === 'string' && arguments.length === 1) {\n return parsers[toCase(key)];\n }\n const data = nameProp(...arguments);\n if (!data.id || !data.prop) return BaseParser;\n const name = toCase(data.id);\n const parser = data.prop;\n const base = parser.merge === true ? parsers[name] : undefined;\n parsers[name] = setPrototypeOf(parser, base || BaseParser);\n maker[name] = creatorFactory(name);\n parser.maker && extend(maker, parser.maker);\n }\n\n function component(id, component) {\n let name;\n if (is.String(id)) {\n name = id;\n if (component === undefined) {\n return components[name];\n }\n } else {\n name = id.displayName || id.name;\n component = id;\n }\n if (!name || !component) return;\n const nameAlias = toCase(name);\n components[name] = component;\n components[nameAlias] = component;\n delete CreateNode.aliasMap[name];\n delete CreateNode.aliasMap[nameAlias];\n delete parsers[name];\n delete parsers[nameAlias];\n if (component.formCreateParser) parser(name, component.formCreateParser);\n }\n\n function $form() {\n return $FormCreate(FormCreate, components, directives);\n }\n\n function createFormApp(rule, option) {\n const Type = $form();\n return createApp({\n data() {\n return reactive({\n rule, option\n });\n },\n render() {\n return h(Type, {ref: 'fc', ...this.$data});\n }\n });\n }\n\n function $vnode() {\n return fragment;\n }\n\n //todo 检查回调函数作用域\n function use(fn, opt) {\n if (is.Function(fn.install)) fn.install(create, opt);\n else if (is.Function(fn)) fn(create, opt);\n return this;\n }\n\n function create(rules, option) {\n let app = createFormApp(rules, option || {});\n useApps.forEach(v => {\n invoke(() => v(create, app));\n })\n const div = document.createElement('div');\n (option?.el || document.body).appendChild(div);\n const vm = app.mount(div);\n return vm.$refs.fc.fapi;\n }\n\n setPrototypeOf(create, prototype);\n\n function factory(inherit) {\n let _config = {...config};\n if (inherit) {\n _config.inherit = {\n components,\n parsers,\n directives,\n modelFields,\n providers,\n useApps,\n maker,\n formulas,\n loadData\n }\n } else {\n delete _config.inherit;\n }\n return FormCreateFactory(_config);\n }\n\n function setModelField(name, field) {\n modelFields[name] = field;\n }\n\n function setFormula(name, fn) {\n formulas[name] = fn;\n }\n\n function setDriver(name, driver) {\n const parent = drivers[name] || {};\n const parsers = parent.parsers || {};\n if (driver.parsers) {\n Object.keys(driver.parsers).forEach(k => {\n parsers[k] = setPrototypeOf(driver.parsers[k], BaseParser);\n });\n }\n driver.name = name;\n drivers[name] = {...parent, ...driver, parsers};\n }\n\n function refreshData(id) {\n if (id) {\n Object.keys(instance).forEach(v => {\n const apis = Array.isArray(instance[v]) ? instance[v] : [instance[v]];\n apis.forEach(that => {\n that.bus.$emit('$loadData.' + id);\n })\n })\n }\n }\n\n function setData(id, data) {\n deepSet(loadData, id, data);\n refreshData(id);\n }\n\n function setDataDriver(id, data) {\n const callback = (...args) => {\n return invoke(() => data(...args));\n }\n callback._driver = true;\n setData(id, callback);\n }\n\n function getData(id, def) {\n const split = (id || '').split('.');\n id = split.shift();\n const field = split.join('.');\n if (!hasProperty(loadData, id)) {\n loadData[id] = defValueTag;\n }\n if (loadData[id] !== defValueTag) {\n let val = loadData[id];\n if (val && val._driver) {\n val = val(field);\n } else if (split.length) {\n val = deepGet(val, split);\n }\n return (val == null || val === '') ? def : val;\n } else {\n return def;\n }\n }\n\n function extendApi(fn) {\n extendApiFn.push(fn);\n }\n\n function removeData(id) {\n delete loadData[id];\n refreshData(id);\n }\n\n function on(name, callback) {\n listener.push({name, callback});\n }\n\n function FormCreate(vm) {\n extend(this, {\n id: id++,\n create,\n vm,\n manager: createManager(config.manager),\n parsers,\n providers,\n modelFields,\n formulas,\n isMobile,\n rules: vm.props.rule,\n name: vm.props.name || uniqueId(),\n inFor: vm.props.inFor,\n prop: {\n components,\n directives,\n },\n get: null,\n drivers,\n renderDriver: null,\n refreshData,\n loadData,\n CreateNode,\n bus: new Mitt(),\n unwatch: [],\n options: ref({}),\n extendApiFn,\n fetchCache: new WeakMap(),\n tmpData: reactive({}),\n })\n listener.forEach(item => {\n this.bus.$on(item.name, item.callback);\n });\n nextTick(() => {\n watch(this.options, () => {\n this.$handle.$manager.updateOptions(this.options.value);\n this.api().refresh();\n }, {deep: true})\n });\n extend(vm.appContext.components, components);\n extend(vm.appContext.directives, directives);\n this.$handle = new Handle(this)\n if (this.name) {\n if (this.inFor) {\n if (!instance[this.name]) instance[this.name] = [];\n instance[this.name].push(this);\n } else {\n instance[this.name] = this;\n }\n }\n }\n\n FormCreate.isMobile = isMobile;\n\n extend(FormCreate.prototype, {\n init() {\n if (this.isSub()) {\n this.unwatch.push(watch(() => this.vm.setupState.parent.setupState.fc.options.value, () => {\n this.initOptions();\n this.$handle.api.refresh();\n }, {deep: true, flush: 'sync'}));\n }\n if (this.vm.props.driver) {\n this.renderDriver = typeof this.vm.props.driver === 'object' ? this.vm.props.driver : this.drivers[this.vm.props.driver];\n }\n if (!this.renderDriver && this.vm.setupState.parent) {\n this.renderDriver = this.vm.setupState.parent.setupState.fc.renderDriver;\n }\n if (!this.renderDriver) {\n this.renderDriver = this.drivers.default;\n }\n this.initOptions();\n this.$handle.init();\n },\n targetFormDriver(method, ...args) {\n this.bus.$emit(method, ...args);\n if (this.renderDriver && this.renderDriver[method]) {\n return invoke(() => this.renderDriver[method](...args));\n }\n },\n t(id, params, get) {\n let value = get ? get('$t.' + id) : this.globalLanguageDriver(id);\n if (value == null) {\n value = '';\n }\n if (value && params) {\n Object.keys(params).forEach(param => {\n const regex = new RegExp(`{${param}}`, 'g');\n value = value.replace(regex, params[param]);\n });\n }\n return value;\n },\n globalDataDriver(id) {\n let split = id.split('.');\n const key = split.shift();\n const option = this.options.value.globalData && this.options.value.globalData[key];\n if (option) {\n if (option.type === 'static') {\n return deepGet(option.data, split);\n } else {\n let val;\n const res = this.fetchCache.get(option);\n if (res) {\n if (res.status) {\n val = deepGet(res.data, split);\n }\n if (!res.loading) {\n return val;\n }\n res.loading = false;\n this.fetchCache.set(option, res);\n } else {\n this.fetchCache.set(option, {status: false});\n }\n const reload = debounce(() => {\n unwatch();\n const res = this.fetchCache.get(option);\n if ((this.options.value.globalData && Object.values(this.options.value.globalData).indexOf(option) !== -1)) {\n if (res) {\n res.loading = true;\n this.fetchCache.set(option, res);\n }\n this.bus.$emit('$loadData.$globalData.' + key);\n } else {\n this.fetchCache.delete(option);\n }\n }, option.wait || 600)\n\n const _emit = (data) => {\n this.fetchCache.set(option, {status: true, data});\n this.bus.$emit('$loadData.$globalData.' + key);\n };\n\n const callback = (get, change) => {\n if (change && option.watch === false) {\n return unwatch();\n }\n if (change) {\n reload();\n return;\n }\n const options = this.$handle.loadFetchVar(copy(option), get);\n options.targetRule = this.targetRule;\n this.$handle.api.fetch(options).then(res => {\n _emit(res);\n }).catch(e => {\n _emit(null);\n });\n };\n const unwatch = this.watchLoadData(callback);\n if(option.watch === false) {\n unwatch();\n }\n this.unwatch.push(unwatch);\n return val;\n }\n }\n },\n getLocale() {\n let locale = this.vm.setupState.top.props.locale;\n if (locale && typeof locale === 'object') {\n return locale.name;\n }\n if (typeof locale === 'string') {\n return locale;\n }\n return 'zh-cn';\n },\n globalLanguageDriver(id) {\n let t = this.vm.setupState.top.props.t;\n let locale = this.vm.setupState.top.props.locale;\n let value = undefined;\n if (t) {\n value = invoke(() => t(id));\n }\n if (value == null && locale && typeof locale === 'object') {\n value = deepGet(locale, id);\n }\n if (value == null) {\n const language = this.options.value.language || {};\n const locale = this.getLocale();\n value = deepGet(language[locale] || {}, id);\n if (value == null) {\n value = deepGet(baseLanguage[locale] || {}, id);\n }\n }\n return value;\n },\n globalVarDriver(id) {\n let split = id.split('.');\n const key = split.shift();\n const option = this.options.value.globalVariable && this.options.value.globalVariable[key];\n if (option) {\n const handle = is.Function(option) ? option : parseFn(option.handle);\n if (handle) {\n let val = handle((...args) => this.$handle.api.getData(...args), this.$handle.api);\n return deepGet(val, split);\n }\n }\n },\n setData(id, data, isGlobal) {\n if (!isGlobal) {\n deepSet(this.vm.setupState.top.setupState.fc.tmpData, id, data);\n this.bus.$emit('$loadData.' + id);\n } else {\n setData(id, data);\n }\n },\n getLoadData(id, def) {\n let val = null;\n if (id != null) {\n let split = id.split('.');\n const key = split.shift();\n val = deepGet(this.vm.setupState.top.setupState.fc.tmpData, id);\n if (val != null) {\n return val;\n } else if (key === '$topForm') {\n val = this.$handle.api.top.formData(true);\n } else if (key === '$scopeForm') {\n val = this.$handle.api.scope.formData(true);\n } else if (key === '$form') {\n val = this.$handle.api.formData(true);\n } else if (key === '$options') {\n val = this.options.value;\n } else if (key === '$globalData') {\n val = this.globalDataDriver(split.join('.'));\n split = [];\n } else if (key === '$var') {\n val = this.globalVarDriver(split.join('.'));\n split = [];\n } else if (key === '$locale') {\n val = this.getLocale();\n split = [];\n } else if (key === '$t') {\n val = this.globalLanguageDriver(split.join('.'));\n split = [];\n } else if (key === '$preview') {\n return this.$handle.preview;\n } else {\n val = getData(id);\n split = [];\n }\n if (val && split.length) {\n val = deepGet(val, split);\n }\n }\n return (val == null || val === '') ? def : val;\n },\n watchLoadData(fn, wait) {\n let unwatch = {};\n\n const run = (flag) => {\n if (!this.get) {\n this.get = get;\n }\n invoke(() => {\n fn(get, flag);\n });\n if (this.get === get) {\n this.get = undefined;\n }\n };\n\n const get = (id, def) => {\n let getValue;\n if (typeof id === 'object') {\n getValue = id.getValue;\n id = id.id;\n }\n if (unwatch[id]) {\n return unwatch[id].val;\n }\n const data = computed(() => {\n return getValue ? getValue() : this.getLoadData(id, def);\n })\n const split = id.split('.');\n const key = split.shift();\n const key2 = split.shift() || '';\n const callback = debounce(() => {\n const temp = getValue ? getValue() : this.getLoadData(id, def);\n if (!unwatch[id]) {\n return;\n } else if (((temp instanceof Function || is.Object(temp) || Array.isArray(temp)) && temp === unwatch[id].val) || JSON.stringify(temp) !== JSON.stringify(unwatch[id].val)) {\n unwatch[id].val = temp;\n run(true);\n }\n }, wait || 0);\n const un = watch(data, (n) => {\n callback();\n });\n this.bus.$on('$loadData.' + key, callback);\n if (key2) {\n this.bus.$on('$loadData.' + key + '.' + key2, callback);\n }\n unwatch[id] = {\n fn: (() => {\n this.bus.$off('$loadData.' + key, callback);\n if (key2) {\n this.bus.$off('$loadData.' + key + '.' + key2, callback);\n }\n un();\n }),\n val: data.value,\n }\n return data.value;\n }\n run(false);\n const un = () => {\n Object.keys(unwatch).forEach(k => unwatch[k].fn());\n unwatch = {};\n }\n this.unwatch.push(un);\n return un;\n },\n isSub() {\n return this.vm.setupState.parent && this.vm.props.extendOption;\n },\n initOptions() {\n this.options.value = {};\n let options = {\n formData: {},\n submitBtn: {},\n resetBtn: {},\n globalEvent: {},\n globalData: {}, ...deepCopy(globalConfig)\n };\n const isSubForm = this.isSub();\n if (isSubForm) {\n options = this.mergeOptions(options, this.vm.setupState.parent.setupState.fc.options.value || {}, true);\n }\n options = this.mergeOptions(options, this.vm.props.option);\n const api = this.api();\n this.targetFormDriver('initOptions', options, {api, isSubForm});\n this.updateOptions(options);\n },\n mergeOptions(target, opt, parent) {\n opt = {...opt || {}};\n parent && ['page', 'onSubmit', 'onReset', 'onCreated', 'onChange', 'onMounted', 'mounted', 'onReload', 'reload', 'formData', 'el', 'globalClass', 'style'].forEach((n) => {\n delete opt[n];\n });\n if (opt.global) {\n target.global = mergeGlobal(target.global, opt.global);\n delete opt.global;\n }\n this.$handle.$manager.mergeOptions([opt], target);\n return target;\n },\n updateOptions(options) {\n this.options.value = this.mergeOptions(this.options.value, options);\n this.$handle.$manager.updateOptions(this.options.value);\n this.bus.$emit('$loadData.$options');\n },\n api() {\n return this.$handle.api;\n },\n render() {\n return this.$handle.render();\n },\n mounted() {\n this.$handle.mounted();\n },\n unmount() {\n if (this.name) {\n if (this.inFor) {\n const idx = instance[this.name].indexOf(this);\n instance[this.name].splice(idx, 1);\n } else {\n delete instance[this.name];\n }\n }\n listener.forEach(item => {\n this.bus.$off(item.name, item.callback);\n });\n this.tmpData = {};\n this.unwatch.forEach(fn => fn());\n this.unwatch = [];\n this.$handle.reloadRule([]);\n },\n updated() {\n this.$handle.bindNextTick(() => this.bus.$emit('next-tick', this.$handle.api));\n }\n })\n\n\n function useAttr(formCreate) {\n extend(formCreate, {\n version: config.version,\n ui: config.ui,\n isMobile,\n extendApi,\n getData,\n setDataDriver,\n setData,\n removeData,\n refreshData,\n maker,\n component,\n directive,\n setModelField,\n setFormula,\n setDriver,\n register,\n $vnode,\n parser,\n use,\n factory,\n componentAlias,\n copyRule,\n copyRules,\n mergeRule,\n fetch,\n $form,\n parseFn,\n parseJson,\n toJson,\n useApp,\n getApi,\n on,\n });\n }\n\n function useStatic(formCreate) {\n extend(formCreate, {\n create,\n install(app, options) {\n globalConfig = {...globalConfig, ...(options || {})}\n const key = `_installedFormCreate${isMobile ? 'Mobile' : ''}_${config.ui}`;\n if (app[key] === true) return;\n app[key] = true;\n\n const $formCreate = function (rules, opt = {}) {\n return create(rules, opt, this);\n };\n\n useAttr($formCreate);\n\n app.config.globalProperties.$formCreate = $formCreate;\n const $component = $form();\n app.component($component.name, $component);\n useApps.forEach(v => {\n invoke(() => v(formCreate, app));\n })\n }\n })\n }\n\n useAttr(prototype);\n useStatic(prototype);\n\n setDataDriver('$cookie', cookieDriver);\n setDataDriver('$localStorage', localStorageDriver);\n setDataDriver('$sessionStorage', sessionStorageDriver);\n\n CreateNode.use({fragment: 'fcFragment'});\n\n config.install && create.use(config);\n\n useApp((_, app) => {\n app.mixin({\n props: ['formCreateInject'],\n })\n })\n\n parser(html);\n\n if (config.inherit) {\n const inherit = config.inherit;\n inherit.components && extend(components, inherit.components);\n inherit.parsers && extend(parsers, inherit.parsers);\n inherit.directives && extend(directives, inherit.directives);\n inherit.modelFields && extend(modelFields, inherit.modelFields);\n inherit.providers && extend(providers, inherit.providers);\n inherit.useApps && extend(useApps, inherit.useApps);\n inherit.maker && extend(maker, inherit.maker);\n inherit.loadData && extend(loadData, inherit.loadData);\n inherit.formulas && extend(formulas, inherit.formulas);\n }\n\n const FcComponent = $form();\n setPrototypeOf(FcComponent, prototype);\n Object.defineProperties(FcComponent, {\n fetch: {\n get() {\n return prototype.fetch;\n },\n set(val) {\n prototype.fetch = val;\n }\n }\n })\n\n FcComponent.util = prototype;\n\n return FcComponent;\n}\n","const is = {\n type(arg, type) {\n return Object.prototype.toString.call(arg) === '[object ' + type + ']'\n },\n Undef(v) {\n return v === undefined || v === null\n },\n Element(arg) {\n return typeof arg === 'object' && arg !== null && arg.nodeType === 1 && !is.Object(arg)\n },\n trueArray(data) {\n return Array.isArray(data) && data.length > 0;\n },\n Function(v) {\n const type = this.getType(v);\n return type === 'Function' || type === 'AsyncFunction';\n },\n getType(v) {\n const str = Object.prototype.toString.call(v)\n return /^\\[object (.*)\\]$/.exec(str)[1]\n },\n empty(value) {\n if (value === undefined || value === null) {\n return true;\n }\n\n if (Array.isArray(value) && Array.isArray(value) && !value.length) {\n return true;\n }\n\n return typeof value === 'string' && !value;\n }\n};\n\n['Date', 'Object', 'String', 'Boolean', 'Array', 'Number'].forEach(t => {\n is[t] = function (arg) {\n return is.type(arg, t);\n }\n})\n\nexport function hasProperty(rule, k) {\n return ({}).hasOwnProperty.call(rule, k)\n}\n\nexport default is;\n","\nexport function $set(target, field, value) {\n target[field] = value;\n}\n\nexport function $del(target, field) {\n delete target[field];\n}\n","import {$set} from './modify';\nimport is from './type';\n\nexport default function deepExtend(origin, target = {}, mode) {\n let isArr = false;\n for (let key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n let clone = target[key];\n if ((isArr = Array.isArray(clone)) || is.Object(clone)) {\n let nst = origin[key] === undefined;\n if (isArr) {\n isArr = false;\n nst && $set(origin, key, []);\n } else if (clone._clone && mode !== undefined) {\n if (mode) {\n clone = clone.getRule();\n nst && $set(origin, key, {});\n } else {\n $set(origin, key, clone._clone());\n continue;\n }\n } else {\n nst && $set(origin, key, {});\n }\n origin[key] = deepExtend(origin[key], clone, mode);\n } else {\n $set(origin, key, clone);\n if (!is.Undef(clone)) {\n if (!is.Undef(clone.__json)) {\n origin[key].__json = clone.__json;\n }\n if (!is.Undef(clone.__origin)) {\n origin[key].__origin = clone.__origin;\n }\n }\n }\n }\n }\n return (mode !== undefined && Array.isArray(origin)) ? origin.filter(v => !v || !v.__ctrl) : origin\n}\n\nexport function deepCopy(value) {\n return deepExtend({}, {value}).value;\n}\n\nexport function deepExtendArgs(origin, ...lst) {\n lst.forEach(target => {\n origin = deepExtend(origin, target);\n });\n return origin;\n}\n","import {$set} from './modify';\n\nconst _extends = Object.assign || function (a) {\n for (let b, c = 1; c < arguments.length; c++) {\n for (let d in b = arguments[c], b) {\n Object.prototype.hasOwnProperty.call(b, d) && ($set(a, d, b[d]));\n }\n }\n\n return a;\n}\n\nexport default function extend() {\n return _extends.apply(this, arguments);\n}\n\nexport function copy(obj) {\n if (typeof obj !== 'object' || obj === null) return obj;\n return obj instanceof Array ? [...obj] : {...obj};\n}\n","export function format(type, msg, rule) {\n return (`[form-create ${type}]: ${msg}` + (rule ? ('\\n\\nrule: ' + JSON.stringify(rule.getRule ? rule.getRule() : rule)) : ''))\n}\n\nexport function tip(msg, rule) {\n console.warn(format('tip', msg, rule));\n}\n\nexport function err(msg, rule) {\n console.error(format('err', msg, rule));\n}\n\nexport function logError(e) {\n err(e.toString());\n console.error(e);\n}\n","import deepExtend from './deepextend';\nimport {err} from './console';\nimport is from './type';\n\nconst PREFIX = '[[FORM-CREATE-PREFIX-';\nconst SUFFIX = '-FORM-CREATE-SUFFIX]]';\n\nexport function toJson(obj, space) {\n return JSON.stringify(deepExtend(Array.isArray(obj) ? [] : {}, obj, true), function (key, val) {\n if (val && val._isVue === true)\n return undefined;\n\n if (typeof val !== 'function') {\n return val;\n }\n if (val.__json) {\n return val.__json;\n }\n if (val.__origin)\n val = val.__origin;\n\n if (val.__emit)\n return undefined;\n return PREFIX + val + SUFFIX;\n }, space);\n}\n\nfunction makeFn(fn) {\n return (new Function('return ' + fn))();\n}\n\nexport function parseFn(fn, mode) {\n if (fn && is.String(fn) && fn.length > 4) {\n let v = fn.trim();\n let flag = false;\n try {\n if (v.indexOf(SUFFIX) > 0 && v.indexOf(PREFIX) === 0) {\n v = v.replace(SUFFIX, '').replace(PREFIX, '');\n flag = true;\n } else if (v.indexOf('$FN:') === 0) {\n v = v.substring(4);\n flag = true;\n } else if (v.indexOf('$EXEC:') === 0) {\n v = v.substring(6);\n flag = true;\n } else if (v.indexOf('$GLOBAL:') === 0) {\n const name = v.substring(8);\n v = function (...args) {\n const callback = args[0].api.getGlobalEvent(name);\n if (callback) {\n return callback.call(this, ...args);\n }\n return undefined;\n }\n v.__json = fn;\n v.__inject = true;\n return v;\n } else if (v.indexOf('$FNX:') === 0) {\n v = makeFn('function($inject){\\n' + v.substring(5) + '\\n}');\n v.__json = fn;\n v.__inject = true;\n return v;\n } else if (!mode && v.indexOf('function ') === 0 && v !== 'function ') {\n flag = true;\n } else if (!mode && v.indexOf('function(') === 0 && v !== 'function(') {\n flag = true;\n }\n if (!flag) return fn;\n let val;\n try{\n val = makeFn(v);\n }catch (e){\n val = makeFn('function ' + v);\n }\n val.__json = fn;\n return val;\n } catch (e) {\n err(`解析失败:${v}\\n\\nerr: ${e}`);\n return undefined;\n }\n }\n return fn;\n}\n\nexport function parseJson(json, mode) {\n return JSON.parse(json, function (k, v) {\n if (is.Undef(v) || !v.indexOf) return v;\n return parseFn(v, mode);\n });\n}\n","let id = 0;\n\nexport default function uniqueId() {\n const num = 370 + (++id);\n return 'F' + Math.random().toString(36).substr(3, 3) + Number(`${Date.now()}`).toString(36) + num.toString(36) + 'c';\n}\n","export default function debounce(fn, wait) {\n var timeout = null;\n return function (...arg) {\n if (timeout !== null)\n clearTimeout(timeout);\n timeout = setTimeout(() => fn.call(this, ...arg), wait);\n }\n}\n\n","export default function deepSet(data, idx, val) {\n let _data = data, to;\n (idx || '').split('.').forEach(v => {\n if (to) {\n if (!_data[to] || typeof _data[to] != 'object') {\n _data[to] = {}\n }\n _data = _data[to];\n }\n to = v;\n })\n _data[to] = val;\n return _data;\n}\n","export default function getSlot(slots, exclude) {\n return Object.keys(slots).reduce((lst, name) => {\n if (!exclude || exclude.indexOf(name) === -1) {\n lst[name] = slots[name]\n }\n return lst;\n }, {})\n}","export default function toArray(value) {\n return Array.isArray(value)\n ? value\n : ([null, undefined, ''].indexOf(value) > -1 ? [] : [value]);\n}\n","import is from './type';\n\nexport default function toDate(timeStamp) {\n if (is.Date(timeStamp))\n return timeStamp;\n else {\n let date = new Date(timeStamp);\n return date.toString() === 'Invalid Date' ? timeStamp : date;\n }\n}\n","export default function toLine(name) {\n let line = name.replace(/([A-Z])/g, '-$1').toLocaleLowerCase();\n if (line.indexOf('-') === 0)\n line = line.substr(1);\n return line;\n}\n\nexport function upper(str) {\n return str.replace(str[0], str[0].toLocaleUpperCase());\n}","function isPromise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\n\nexport default function toPromise(value) {\n if (isPromise(value)) {\n return value;\n }\n return Promise.resolve(value);\n}","export default function toString(val) {\n return val == null\n ? ''\n : typeof val === 'object'\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n"],"names":["Calendar","defineComponent","name","inheritAttrs","props","placeholder","String","formCreateInject","Object","disabled","Boolean","clearable","type","modelValue","Array","minDate","Date","maxDate","emits","setup","_","show","ref","toRef","inputValue","value","watch","n","formatter","date","dayjs","format","toDate","str","defaultDate","computed","isArray","map","dateRange","undefined","formatValue","onInput","emit","strValue","range","length","join","multiple","t","open","confirm","getStrValue","hasProperty","clear","e","stopPropagation","render","h","class","this","readonly","$props","onClick","model-value","isLink","border","v-slots","right-icon","clearIcon","is","empty","_extends","$attrs","onUpdate:show","v","onConfirm","mounted","$emit","$refs","el","normalizeOptions","options","item","normalized","label","text","children","Cascader","fieldNames","Number","_fieldNames$value","findOptions","path","i","find","updateInputValue","option","deep","val","selectedOptions","round","position","onClose","onFinish","Checkbox","direction","onUpdateModelValue","opt","tmp","shape","Select","columnsFieldNames","selectedValues","columns","onCancel","parseFile","file","url","is_string","getFileName","uid","parseUpload","split","pop","Uploader","afterRead","Function","action","headers","method","data","uploadName","onSuccess","onError","maxCount","fileList","toArray","uploadValue","files","filter","onDelete","uploadFile","status","api","fetch","dataType","source","then","res","catch","message","onUpdate:model-value","$slots","Radio","DatePicker","formValue","columnsType","TimePicker","Group","field","rule","expand","button","default","max","min","defaultValue","sortBtn","title","onBeforeRemove","onBeforeAdd","parse","len","cacheRule","cacheValue","sort","form","markRaw","$form","handler","o","keys","forEach","$f","formData","deferSyncValue","deepExtend","setValue","once","deepCopy","d","expandRule","total","addRule","removeRule","methods","_value","cache","k","JSON","stringify","input","key","[object Object]","coverValue","copyRules","submitBtn","resetBtn","defVal","extend","index","nextTick","add$f","indexOf","add","push","del","splice","toPromise","addIcon","delIcon","sortUpIcon","changeSort","sortDownIcon","a","subForm","sortIcon","canMoveUp","canMoveDown","makeIcon","vm","btn","getTitle","replace","created","Type","isCardType","onUpdate:modelValue","onUpdate:api","inFor","extendOption","script","viewBox","xmlns","_openBlock","openBlock","_createElementBlock","_hoisted_1","_cache","_createElementVNode","fill","components","IconWarning","parsers","maker","hidden","creatorFactory","ctx","vNode","col","span","row","prop","mergeProp","alias","PRE","icon","slider","stepper","inputNumber","rate","uploader","upload","cell","timePicker","datePicker","switch","select","cascader","calendar","checkbox","radio","textarea","formItem","group","array","object","tidy","isFalse","tidyRule","_rule","manager","validate","Promise","validateField","resolve","reject","clearValidateState","resetValidation","id","tidyOptions","tidyBool","pattern","RegExp","def","info","wrap","mergeProps","getDefaultOptions","required","labelAlign","inputAlign","gutter","loading","block","innerText","size","click","adapterValidate","validator","trigger","err","update","on","submit","preventDefault","style","beforeRender","className","$handle","preview","slotLen","setSlot","makeFormBtn","$r","getSlots","makeRow","makeWrap","uni","isTitle","_col","cls","rules","injectValidate","$render","mergeClass","wrapRef","makeInfo","makeCol","native","_ctx$refRule","_ctx$refRule2","titleProp","infoProp","titleSlot","getSlot","refRule","__$title","flag","align","_prop","args","_ctx$refRule3","showNotify","__$info","duration","targetHook","vn","makeSubmitBtn","makeResetBtn","width","fApi","resetFields","tidyBtnProp","Undef","extendApi","formEl","$manager","wrapEl","getFieldCtx","refs","callback","forms","all","isScope","emitEvent","sub","fields","clearSub","helper","tidyFields","clearSubValidateState","getCtxs","submitBtnProps","isShow","resetBtnProps","refreshOptions","successFn","failFn","validateOnSubmit","beforeSubmit","invoke","onSubmit","css","insertAt","document","head","getElementsByTagName","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","load","inject","parseVal","getValue","_title","clearProp","updateMessage","_rule$__fc__$refRule$","__fc__","match","getLocale","getProp","sync","install","FormCreate","componentAlias","component","register","parser","Field","FormCreateMobile","FormCreateFactory","ui","version","isMobile","attrs","normal","window","formCreateMobile","keyAttrs","arrayAttrs","normalAttrs","normalMerge","toArrayMerge","functionalMerge","enumerable","writable","configurable","copyRule","mode","mergeRule","merge","getRule","r","funcProxy","that","proxy","defineProperties","reduce","initial","get","byCtx","__origin__","fn","logError","makeSlotBag","slotBag","slotName","slot","vnFn","slots","mergeBag","bag","isVNode","toProps","toCase","upper","setPrototypeOf","proto","changeType","b","condition","==","!=",">",">=","<","<=","notOn","in","notIn","between","notBetween","notEmpty","test","deepGet","convertFieldToConditions","parts","conditions","currentCondition","part","getGroupInject","parent","$FormCreate","directives","driver","locale","fc","getCurrentInstance","provide","top","setupState","toRefs","reactive","ctxInject","destroyed","unique","renderRule","updateValue","fapi","isMore","styleEl","onBeforeMount","watchEffect","content","globalClass","subCss","toLine","innerHTML","emit$topForm","debounce","bus","emit$scopeForm","emit$form","emit$change","onMounted","$on","scope","onBeforeUnmount","$off","rmSubForm","getSubForm","idx","unmount","parentNode","parentElement","removeChild","onUpdated","updated","addSubForm","initOptions","refresh","flush","isBreakWatch","every","updateAppendData","reloadRule","toJson","config","forceCoverValue","json","init","Creator","_data","display","event","appendProto","prototype","arguments","setProp","$set","modelField","_clone","clone","constructor","commonMaker","create","make","makerFactory","factory","getBody","xhr","responseText","response","XMLHttpRequest","onProgress","addEventListener","evt","percent","loaded","query","acc","queryString","URLSearchParams","toString","includes","onerror","onload","msg","Error","getError","toLowerCase","FormData","append","setRequestHeader","filename","withCredentials","send","asyncFetch","_fetch","parseFn","targetRule","copy","Render","handle","CreateNode","force","tmpInput","initCache","initRender","clearCacheAll","clearCache","use","setCache","vnode","getCache","useCache","cacheConfig","getTypeSlot","_fn","renderSlot","ctxs","isFragment","initProp","mergeGlobal","initNone","renderChildren","loadChildrenPending","renderCtx","global","trueType","g","originType","setOptions","loadPending","origin","optionsTo","deepSet","parseSide","side","renderSides","temp","prefix","suffix","renderId","ctxProp","injectProp","cacheFlag","slotValue","model","slotUpdate","_load","loadChildren","renderSlots","_vn","targetFormDriver","none","__v_isVNode","stable","console","error","target","$stable","getModelField","modelFields","aliasMap","state","getWrap","onUpdateValue","vnodeMounted","__rule__","fc.updateValue","fc.el","exportEl","$el","getFormData","modelEmit","onEmitInput","effect","onBaseInput","toValue","trueArray","child","defaultRender","makeComponent","lower","createChildrenVnodes","createRuleVnode","useRender$1","EVENT","RuleContext","isInput","pending","linkOn","root","ctrlRule","subRule","payload","updateKey","findCtrl","ctrl","isCtrl","__ctrl","strFn","getParentGroup","onLoad","onUpdate","oldValue","updateChildren","onReload","getPending","$api","setPending","reload","effectData","clearEffectData","updateType","getType","setParser","_this$refRule","__$validate","hasHidden","check","unwatch","un","unlink","link","appendLink","watchTo","watchCtx","delete","rmCtrl","deleted","rm","_rm","noWatch","rmCtx","BaseParser","toFormValue","renderDriver","defaultPreview","noneKey","oldValueTag","Symbol","Handler","watching","reloading","noWatchFn","deferSyncFn","isMounted","subRuleData","appendData","ignoreFields","providers","cycleLoad","loadedId","changeStatus","pageEnd","nextReload","lifecycle","initData","extendApiFn","fieldCtx","nameCtx","allSubForm","subs","isPreview","siblings","formulas","appendValue","removeField","getCtx","after","prepend","hiddenStatus","displayStatus","bind","updateOptions","hideForm","hide","clearChangeStatus","updateRule","updateRules","mergeRules","findType","findTypes","getRenderRule","getRefRule","setEffect","attr","substr","updateValidate","updateValidates","validates","refreshValidate","onReset","exec","space","closeModal","getChildrenRuleList","getParentRule","getParentSubRule","getChildrenFormData","ignore","setChildrenFormData","cover","getGlobalEvent","globalEvent","getGlobalData","globalData","loadData","emitGlobalEvent","getInjectData","unshift","apply","setGlobalData","setData","setGlobalVar","$once","nextRefresh","emitsOptions","getCurrentFormRule","_h$vm$setupState$getG","loadFetchVar","fail","beforeFetch","watchFetch","watchLoadData","change","_opt","wait","getData","getLoadData","watchData","isGlobal","refreshData","params","changeValue","changeField","Api","useProvider","usePage","loadRule","__init","globalBeforeFetch","parseInjectEvent","injectEvent","parseEventLst","parseEvent","__inject","parseEmit","emitPrefix","eventName","eventInject","emitKey","fieldKey","arg","__emit","_inject","self","__origin","__json","loadStrVar","vars","regex","matches","extractVar","_split","shift","treeToVal","tree","slice","isNaN","lastVal","trim","parseTemplateToTree","template","tokens","current","depth","char","token","replaceAll","loadVal","useInject","page","first","limit","Math","ceil","parseInt","pageLoad","pageFn","clearNextTick","clearTimeout","bindNextTick","setTimeout","useRender","parseRule","fullRule","loadFn","loadCtrl","control","syncProp","pre","_loadRule","syncForm","preIndex","isRepeat","ruleEffect","repeat","isCopy","isInit","parseJson","bindParser","rmSubRuleData","setCtx","_preIndex","refreshUpdate","refreshControl","useCtrl","controls","getCtrl","handleFn","valid","isHidden","hideLst","reverse","ruleCon","ctrlCtx","_reloadRule","useLoader","setFlag","setFormData","syncValue","valueChange","fieldChange","isQuote","isChange","subData","isIgnore","ignoreHiddenFields","linkField","refreshRule","useInput","getNameCtx","setIdCtx","rmIdCtx","lst","getParser","list","newValue","call","adapter","computedRule","computedValue","compute","linkage","linkageVariable","beforeValidate","getValidateMessage","invalid","formatRule","entries","num","isInteger","some","checkCondition","or","one","variableVal","variable","compare","invert","computeValue","obj","rmSub","$del","useContext","_mounted","_ctx$prop","run","p","values","hook","deepName","_parent$prop","useLifecycle","ps","_c","c","arr","getComponent","onEffect","provider","used","_used","_ctx$rule","emitEffect","custom","getEffect","_type","useEffect","fragment","makeDirective","withDirectives","concat","directive","resolveDirective","modifiers","tidyDirectives","createManager","CustomManager","Manager","assign","mergeOptionsRule","mergeOptions","componentValidate","$provider","fetchAttr","to","parseOpt","set","fetchCache","_option","body","unwatchs","modify","isObj","html","tag","getCookie","cookieArray","decodeURIComponent","cookie","charAt","substring","getLocalStorage","localStorage","getItem","getSessionStorage","sessionStorage","baseDriver","cookieDriver","localStorageDriver","sessionStorageDriver","baseLanguage","en","email","ip","phone","uppercase","lowercase","positive","negative","equal","enum","hasKeys","minLen","maxLen","integer","number","zh-cn","parseProp","nameProp","instance","defValueTag","Element","nodeType","isArr","hasOwnProperty","nst","PREFIX","SUFFIX","makeFn","timeout","drivers","useApps","listener","globalConfig","$mobile","createVNode","isNativeTag","appContext","resolveComponent","nodes","line","toLocaleLowerCase","CreateNodeFactory","getApi","useApp","base","displayName","nameAlias","formCreateParser","$vnode","app","createApp","$data","createFormApp","div","mount","inherit","_config","setModelField","setFormula","setDriver","setDataDriver","_driver","removeData","uniqueId","Mitt","WeakMap","tmpData","Handle","useAttr","formCreate","exportAttrs","isSub","globalLanguageDriver","param","globalDataDriver","_emit","language","globalVarDriver","globalVariable","key2","isSubForm","$formCreate","globalProperties","$component","mixin","FcComponent","util","exclude","timeStamp","_isVue","isPromise","random","now"],"mappings":";;;;;;82EAMA,IAAAA,EAAeC,kBAAgB,CAC3BC,KAHS,aAITC,cAAc,EACdC,MAAO,CACHC,YAAaC,OACbC,iBAAkBC,OAClBC,SAAUC,QACVC,UAAWD,QACXE,KAAMN,OACNO,WAAY,CAACP,OAAQQ,OACrBC,QAAS,CAACT,OAAQU,MAClBC,QAAS,CAACX,OAAQU,OAEtBE,MAAO,CAAC,oBAAqB,SAAU,SACvCC,MAAMf,EAAOgB,GACT,MAAMC,EAAOC,OAAI,GACXT,EAAaU,EAAAA,MAAMnB,EAAO,cAC1BG,EAAmBgB,EAAAA,MAAMnB,EAAO,oBAChCoB,EAAaF,EAAAA,IAAIT,EAAWY,OAElCC,EAAAA,MAAM,IAAMb,EAAWY,MAAQE,IAC3BH,EAAWC,MAAQE,IAGvB,MAAMC,EAAaC,GACRC,EAAK,QAACD,GAAME,OAAO,cAExBC,EAAUC,GACLH,UAAMG,GAAKD,SAGhBE,EAAcC,EAAAA,SAAS,KACzB,MAAMV,EAAQZ,EAAWY,MACzB,OAAIX,MAAMsB,QAAQX,GACPA,EAAMY,IAAIL,GACVP,EACAO,EAAOP,GAEP,OAITa,EAAYH,EAAAA,SAAS,KAChB,CACHpB,QAASX,EAAMW,QAAUe,EAAK,QAAC1B,EAAMW,SAASiB,cAAWO,EACzDtB,QAASb,EAAMa,QAAUa,EAAK,QAAC1B,EAAMa,SAASe,cAAWO,KAI3DC,EAAef,IACbX,MAAMsB,QAAQX,GACdD,EAAWC,MAAQA,EAAMY,IAAIT,GAE7BJ,EAAWC,MADJA,EACYG,EAAUH,GAEVA,GAGrBgB,EAAUA,KACZrB,EAAEsB,KAAK,oBAAqBlB,EAAWC,OACvCL,EAAEsB,KAAK,SAAUlB,EAAWC,QAE1BkB,EAAW,CACbC,MAAKA,IACMpB,EAAWC,MAAMoB,OAASrB,EAAWC,MAAMqB,KAAK,OAAS,GAEpEC,SAAQA,IACGvB,EAAWC,MAAMoB,OAAUtC,EAAiBkB,MAAMuB,EAAE,eAAgB,CAACH,OAAQrB,EAAWC,MAAMoB,UAAW,OAAOrB,EAAWC,MAAMoB,aAAiB,IAIjK,MAAO,CACHxB,KAAAA,EACAG,WAAAA,EACAU,YAAAA,EACAI,UAAAA,EACAW,OACQ7C,EAAMK,WAGVY,EAAKI,OAAQ,IAEjByB,QAAQzB,GACJe,EAAYf,GACZJ,EAAKI,OAAQ,EACbgB,KAEJU,YAAWA,IACH3B,EAAWC,MACJ2B,cAAYT,EAAUvC,EAAMQ,MAAQ+B,EAASvC,EAAMQ,QAAWY,EAAWC,OAAS,GAEtF,GAEX4B,MAAMC,GACFA,EAAEC,kBACF,MAAM9B,EAAQX,MAAMsB,QAAQZ,EAAWC,OAAS,GAAK,GACrDe,EAAYf,GACZgB,OAIZe,SAMI,OAAOC,EAAA,MAAA,CAAKC,MAAM,gBACdD,EAAA,YAAA,CAAWnC,IAAI,KAAKjB,YAAasD,KAAKtD,YAAauD,UAAQ,EAACnD,SAAUkD,KAAKE,OAAOpD,SAC9EqD,QAASH,KAAKV,KACdc,cAAaJ,KAAKR,cAAea,QAAM,EAACC,QAAQ,EAAOC,UAAS,CAC5DC,aATMC,IACPT,KAAKE,OAAOlD,YAAc0D,EAAE,QAACC,MAAMX,KAAKnC,YAC3CiC,EAAA,IAAA,CAAGC,MAAM,8DACLI,QAASH,KAAKN,aAAcd,KAQpCkB,EAAA,eAAAc,EAAA,GAAsBZ,KAAKa,OAAWb,KAAKrB,UAAS,CAAGjB,KAAMsC,KAAKtC,KAAMoD,gBAAeC,GAAMf,KAAKtC,KAAOqD,EACrG9D,KAAM+C,KAAK/C,KACX+D,UAAWhB,KAAKT,QAAShB,YAAayB,KAAKzB,iBAGvD0C,UACIjB,KAAKkB,MAAM,QAASlB,KAAKmB,MAAMC,OC7HhC,MAAMC,EAAoBC,GACxBA,GAAYnE,MAAMsB,QAAQ6C,GAGxBA,EAAQ5C,IAAI6C,IACf,MAAMC,EAAa,IAAID,GAOvB,YANyB3C,IAArB4C,EAAWC,YAA2C7C,IAApB4C,EAAWE,OAC7CF,EAAWE,KAAOF,EAAWC,OAE7BD,EAAWG,UAAYxE,MAAMsB,QAAQ+C,EAAWG,YAChDH,EAAWG,SAAWN,EAAiBG,EAAWG,WAE/CH,IAVA,GCGf,IAAAI,EAAetF,kBAAgB,CAC3BC,KAHS,aAITC,cAAc,EACdC,MAAO,CACHC,YAAaC,OACbG,SAAUC,QACVC,UAAWD,QACX8E,WAAYhF,OACZK,WAAY,CAACP,OAAQmF,QACrBR,QAASnE,MACTC,QAAS,CAACT,OAAQU,MAClBC,QAAS,CAACX,OAAQU,OAEtBE,MAAO,CAAC,oBAAqB,QAAS,UACtCC,MAAMf,EAAOgB,GACT,MAAMC,EAAOC,OAAI,GACXT,EAAaU,EAAAA,MAAMnB,EAAO,cAC1BoF,EAAajE,EAAKA,MAACnB,EAAO,aAAc,IACxC6E,EAAU9C,EAAAA,SAAS,KAAM,IAAAuD,EAC3B,OAAIF,MAAAA,WAAUE,EAAVF,EAAY/D,aAAK,IAAAiE,GAAjBA,EAAmBL,KACZjF,EAAM6E,SAAW,GAEjBD,EAAiB5E,EAAM6E,SAAW,MAI3CU,EAAcA,CAACV,EAASxD,EAAOmE,KACjC,IAAK,IAAIC,EAAI,EAAGA,EAAIZ,EAAQpC,OAAQgD,IAAK,CACrC,GAAIZ,EAAQY,GAAGL,EAAW/D,MAAMA,OAAS,WAAaA,EAClD,MAAO,IAAImE,EAAMX,EAAQY,IACtB,GAAIZ,EAAQY,GAAGL,EAAW/D,MAAM6D,UAAY,YAAa,CAC5D,MAAMQ,EAAOH,EAAYV,EAAQY,GAAGL,EAAW/D,MAAM6D,UAAY,YAAa7D,EAAO,IAAImE,EAAMX,EAAQY,KACvG,GAAIC,EACA,OAAOA,KAMjBC,EAAoBpE,IACtB,GAAS,MAALA,GAAmB,KAANA,EACb,MAAO,GAEX,MAAMiE,EAAOD,EAAYV,EAAQxD,MAAOE,EAAG,IAC3C,OAAOiE,EAAOA,EAAKvD,IAAK2D,GAAWA,EAAOR,EAAW/D,MAAM4D,MAAQ,SAASvC,KAAK,OAASnB,GAGxFH,EAAaF,EAAAA,IAAIyE,EAAiBlF,EAAWY,QAEnDC,EAAAA,MAAM,IAAMb,EAAWY,MAAQE,IAC3BH,EAAWC,MAAQsE,EAAiBpE,KAGxCD,QAAM,IAAMuD,EAAQxD,MAAO,KACC,MAApBZ,EAAWY,OAAsC,KAArBZ,EAAWY,QACvCD,EAAWC,MAAQsE,EAAiBlF,EAAWY,SAEpD,CAACwE,MAAM,IAEV,MAAMxD,EAAWyD,IACb9E,EAAEsB,KAAK,oBAAqBwD,GAC5B9E,EAAEsB,KAAK,SAAUwD,IAGrB,MAAO,CACH7E,KAAAA,EACAG,WAAAA,EACAyD,QAAAA,EACAhC,OACQ7C,EAAMK,WAGVY,EAAKI,OAAQ,IAEjByB,SAAQiD,gBAACA,EAAe1E,MAAEA,IACtBD,EAAWC,MAAQ0E,EAAgB9D,IAAK2D,GAAWA,EAAOR,EAAW/D,MAAM4D,MAAQ,SAASvC,KAAK,OACjGzB,EAAKI,OAAQ,EACbgB,EAAQhB,IAEZ4B,MAAMC,GACFA,EAAEC,kBACF/B,EAAWC,MAAQ,GACnBgB,EAAQ,OAIpBe,SAOI,OAAOC,EAAA,MAAA,CAAKC,MAAM,gBACdD,EAAA,YAAA,CAAWnC,IAAI,KAAKjB,YAAasD,KAAKtD,YAAauD,UAAQ,EAACnD,SAAUkD,KAAKE,OAAOpD,SAC9EqD,QAASH,KAAKV,KACdc,cAAaJ,KAAKnC,WAAYyC,QAAQ,EAAOD,QAAM,EAACE,UAAS,CACzDC,aAVMC,IACPT,KAAKE,OAAOlD,WAAagD,KAAKnC,WACjCiC,EAAA,IAAA,CAAGC,MAAM,8DACLI,QAASH,KAAKN,aAAcd,KASpCkB,EAAA,YAAA,CAAWpC,KAAMsC,KAAKtC,KAAMoD,gBAAgBC,GAAMf,KAAKtC,KAAOqD,EAAG0B,OAAK,EAACC,SAAS,UAC5E5C,EAAAc,eAAAA,EACQ,GAAAZ,KAAKa,OAAM,CACf3D,WAAY8C,KAAK9C,WACjB2E,WAAY7B,KAAK6B,WACjBP,QAAStB,KAAKsB,QACdqB,QAASA,IAAM3C,KAAKtC,MAAO,EAC3BkF,SAAU5C,KAAKT,cAK/B0B,UACIjB,KAAKkB,MAAM,QAASlB,KAAKmB,MAAMC,OCjHvC,IAAAyB,EAAevG,kBAAgB,CAC3BC,KAHS,aAITC,cAAc,EACdC,MAAO,CACHS,WAAYC,MACZmE,QAASnE,OAEbI,MAAO,CAAC,oBAAqB,UAC7BC,MAAMf,EAAOgB,GACT,MAAMP,EAAaU,EAAKA,MAACnB,EAAO,aAAc,IAG9C,MAAO,CACH6E,QAHY1D,EAAAA,MAAMnB,EAAO,WAIzBS,WAAAA,EACA4B,QAAQyD,GACJ9E,EAAEsB,KAAK,oBAAqBwD,GAC5B9E,EAAEsB,KAAK,SAAUwD,MAI7B1C,SACI,OAAOC,uBAAAc,EAAA,CAAoBkC,UAAU,cAAiB9C,KAAKa,OAAM,CAAE3D,WAAYC,MAAMsB,QAAQuB,KAAK9C,YAAc8C,KAAK9C,WAAa,GAC9H6F,mBAAoB/C,KAAKlB,WACvBkB,KAAKsB,SAAW,IAAI5C,IAAIsE,IACtB,MAAMC,EAAM,IAAID,IACVtB,KAACA,EAAI5D,MAAEA,GAASkF,EAGtB,cAFOC,EAAIvB,YACJuB,EAAInF,MACJgC,iBAAAc,EAAA,CAAcrE,KAAMuB,EAAOoF,MAAM,UAAaD,GAAMvB,GAAQsB,EAAIvB,OAAS3D,SC5BhG,IAAAqF,EAAe7G,kBAAgB,CAC3BC,KAHS,WAITC,cAAc,EACdC,MAAO,CACHK,SAAUC,QACVL,YAAaC,OACbyG,kBAAmBvG,OACnBK,WAAY,CAACP,OAAQmF,OAAQ/E,SAC7BuE,QAASnE,OAEbI,MAAO,CAAC,oBAAqB,QAAS,UACtCC,MAAMf,EAAOgB,GACT,MAAMC,EAAOC,OAAI,GACXT,EAAaU,EAAAA,MAAMnB,EAAO,cAC1BoF,EAAajE,EAAKA,MAACnB,EAAO,oBAAqB,IAC/C6E,EAAU9C,EAAAA,SAAS,KAAM,IAAAuD,EAC3B,OAAIF,MAAAA,WAAUE,EAAVF,EAAY/D,aAAK,IAAAiE,GAAjBA,EAAmBL,KACZjF,EAAM6E,SAAW,GAEjBD,EAAiB5E,EAAM6E,SAAW,MAI3CzD,EAAaW,EAAAA,SAAS,KACxB,GAAwB,MAApBtB,EAAWY,OAAsC,KAArBZ,EAAWY,MACvC,MAAO,GAEX,IAAK,IAAIoE,EAAI,EAAGA,GAAKZ,EAAQxD,OAAS,IAAIoB,OAAQgD,IAC9C,GAAIZ,EAAQxD,MAAMoE,GAAGL,EAAW/D,MAAMA,OAAS,WAAaZ,EAAWY,MACnE,OAAOwD,EAAQxD,MAAMoE,GAAGL,EAAW/D,MAAM4D,MAAQ,QAGzD,OAAOxE,EAAWY,QAQtB,MAAO,CACHJ,KAAAA,EACAG,WAAAA,EACAyD,QAAAA,EACAhC,OACQ7C,EAAMK,WAGVY,EAAKI,OAAQ,IAEjByB,SAAQ8D,eAACA,IAfId,IAAAA,EAAAA,EAgBDc,EAAe,GAf3B5F,EAAEsB,KAAK,oBAAqBwD,GAC5B9E,EAAEsB,KAAK,SAAUwD,GAeb7E,EAAKI,OAAQ,KAIzB+B,SACI,OAAOC,EAAA,MAAA,CAAKC,MAAM,cACdD,EAAA,YAAA,CAAWnC,IAAI,KAAKjB,YAAasD,KAAKtD,YAAauD,UAAQ,EAACnD,SAAUkD,KAAKE,OAAOpD,SAAUqD,QAASH,KAAKV,KACtGc,cAAaJ,KAAKnC,WAAYwC,QAAM,IACxCP,EAAA,YAAA,CAAWpC,KAAMsC,KAAKtC,KAAMoD,gBAAgBC,GAAMf,KAAKtC,KAAOqD,EAAG0B,OAAK,EAACC,SAAS,UAC5E5C,EAAAc,aAAAA,EACQ,GAAAZ,KAAKa,OAAM,CACf3D,WAAY,CAAC8C,KAAK9C,YAClBkG,kBAAmBpD,KAAKoD,kBACxBE,QAAStD,KAAKsB,QACdiC,SAAUA,IAAMvD,KAAKtC,MAAO,EAC5BsD,UAAWhB,KAAKT,cAKhC0B,UACIjB,KAAKkB,MAAM,QAASlB,KAAKmB,MAAMC,OCzEvC,SAASoC,EAAUC,EAAMvB,GACrB,MAAoB,iBAATuB,EACAA,EAEJ,CACHC,IAAKD,EACLE,WAAW,EACXpH,KAAMqH,EAAYH,GAClBI,IAAK3B,GAIb,SAAS4B,EAAYL,GACjB,MAAO,IAAIA,EAAMA,KAAAA,EAAM3F,MAAO2F,GAGlC,SAASG,EAAYH,GACjB,OAAQ,GAAKA,GAAMM,MAAM,KAAKC,MAGlC,IAAAC,EAAe3H,kBAAgB,CAC3BC,KAvBS,aAwBTC,cAAc,EACdC,MAAO,CACHG,iBAAkBC,OAClBK,WAAY,CAACC,MAAOR,OAAQE,QAC5BqH,UAAWC,SACXC,OAAQzH,OACR0H,QAASxH,OACTyH,OAAQ3H,OACR4H,KAAM1H,OACN2H,WAAY7H,OACZ8H,UAAWN,SACXO,QAASP,SACTQ,SAAU7C,QAEdvE,MAAO,CAAC,oBAAqB,UAC7BC,MAAMf,EAAOgB,GAET,MAAMyG,EAAYtG,EAAAA,MAAMnB,EAAO,aACzBS,EAAaU,EAAKA,MAACnB,EAAO,aAAc,IAExCmI,EAAWjH,EAAAA,IAAIkH,EAAO,QAAC3H,EAAWY,OAAOY,IAAI8E,GAAW9E,IAAIoF,IAElE/F,EAAAA,MAAM,IAAMb,EAAWY,MAAQE,IAC3B4G,EAAS9G,MAAQ+G,EAAO,QAAC7G,GAAGU,IAAI8E,GAAW9E,IAAIoF,KAGnD,MAAMgB,EAAcA,KAChB,IAAIC,EAAQH,EAAS9G,MAAMY,IAAKqC,GAAMA,EAAE4C,UAAY5C,EAAE2C,IAAO3C,EAAEjD,OAASiD,EAAE2C,KAAMsB,OAAQtB,QAAgB9E,IAAR8E,GAChGjG,EAAEsB,KAAK,oBAAwC,IAAnBtC,EAAMkI,SAAkBI,EAAM,IAAM,GAAMA,IAG1E,MAAO,CACHH,SAAAA,EACA1H,WAAAA,EACA+H,SAASxB,GACLqB,IACArH,EAAEsB,KAAK,SAAU0E,IAErByB,WAAWzB,GAEP,GADAA,EAAK0B,OAAS,YACVjB,EAAUpG,MACV,OAAOoG,EAAUpG,MAAM2F,GACpB,CACH,MAAMc,EAAO9H,EAAM8H,MAAQ,GAC3BA,EAAK9H,EAAM+H,YAAc,QAAUf,EAAKA,KACxChH,EAAMG,iBAAiBwI,IAAIC,MAAM,CAC7BjB,OAAQ3H,EAAM2H,OACdkB,SAAU,WACVC,OAAQ,SACRlB,QAAS5H,EAAM4H,SAAW,GAC1BC,OAAQ7H,EAAM6H,QAAU,OACxBC,KAAAA,IACDiB,KAAKC,IACJhC,EAAK0B,OAAS,UACd1I,EAAMgI,WAAahI,EAAMgI,UAAUgB,EAAKhC,GACxCqB,MACDY,MAAM/F,IACL8D,EAAK0B,OAAS,SACd1B,EAAKkC,QAAU3F,KAAKpD,iBAAiByC,EAAE,eAAiB,OACxD5C,EAAMiI,SAAWjI,EAAMiI,QAAQ/E,EAAG8D,SAMtD5D,SACI,OAAOC,EAAAc,eAAAA,EAAkB,GAAAZ,KAAKa,OAAM,CAAET,cAAaJ,KAAK4E,SAAUD,SAAU3E,KAAK2E,SAC7EiB,uBAAuB7E,GAAMf,KAAK4E,SAAW7D,EAC7CmD,UAAWlE,KAAKkF,WAAYD,SAAUjF,KAAKiF,SAAU1E,UAASP,KAAK6F,aC3F/E,IAAAC,EAAexJ,kBAAgB,CAC3BC,KAHS,UAITC,cAAc,EACdC,MAAO,CACHS,WAAY,CAACP,OAAQmF,OAAQ/E,SAC7BuE,QAASnE,OAEbI,MAAO,CAAC,oBAAqB,UAC7BC,MAAMf,EAAOgB,GACT,MAAMP,EAAaU,EAAKA,MAACnB,EAAO,aAAc,IAG9C,MAAO,CACH6E,QAHY1D,EAAAA,MAAMnB,EAAO,WAIzBS,WAAAA,EACA4B,QAAQyD,GACJ9E,EAAEsB,KAAK,oBAAqBwD,GAC5B9E,EAAEsB,KAAK,SAAUwD,MAI7B1C,SACI,OAAOC,oBAAAc,EAAA,CAAiBkC,UAAU,cAAiB9C,KAAKa,OAAM,CAAE3D,WAAY8C,KAAK9C,WAC7E6F,mBAAoB/C,KAAKlB,WACvBkB,KAAKsB,SAAW,IAAI5C,IAAIsE,IACtB,MAAMC,EAAM,IAAID,IACVtB,KAACA,EAAI5D,MAAEA,GAASkF,EAGtB,cAFOC,EAAIvB,YACJuB,EAAInF,MACJgC,cAAAc,EAAA,CAAWrE,KAAMuB,GAAWmF,GAAMvB,GAAQsB,EAAIvB,OAAS3D,SC5B9E,IAAAiI,EAAezJ,kBAAgB,CAC3BC,KAHS,eAITC,cAAc,EACdC,MAAO,CACHK,SAAUC,QACVC,UAAWD,QACXL,YAAaC,OACbO,WAAY,CAACP,OAAQmF,QACrB1E,QAAS,CAACT,OAAQU,MAClBC,QAAS,CAACX,OAAQU,OAEtBE,MAAO,CAAC,oBAAqB,QAAS,UACtCC,MAAMf,EAAOgB,GACT,MAAMC,EAAOC,OAAI,GACXT,EAAaU,EAAAA,MAAMnB,EAAO,cAE1BuJ,EAAYxH,EAAAA,SAAS,IACC,MAApBtB,EAAWY,OAAsC,KAArBZ,EAAWY,MAChC,GAEJZ,EAAWY,MAAMiG,MAAM,MAG5BpF,EAAYH,EAAAA,SAAS,KAChB,CACHpB,QAASX,EAAMW,QAAUe,EAAK,QAAC1B,EAAMW,SAASiB,cAAWO,EACzDtB,QAASb,EAAMa,QAAUa,EAAK,QAAC1B,EAAMa,SAASe,cAAWO,KAI3DE,EAAWyD,IACb9E,EAAEsB,KAAK,oBAAqBwD,GAC5B9E,EAAEsB,KAAK,SAAUwD,IAGrB,MAAO,CACH7E,KAAAA,EACAsI,UAAAA,EACArH,UAAAA,EACAW,OACQ7C,EAAMK,WAGVY,EAAKI,OAAQ,IAEjByB,SAAQ8D,eAACA,IACLvE,EAAQuE,EAAelE,KAAK,MAC5BzB,EAAKI,OAAQ,GAEjB4B,MAAMC,GACFA,EAAEC,kBACFd,EAAQ,OAIpBe,SAMI,OAAOC,EAAA,MAAA,CAAKC,MAAM,mBACdD,EAAA,YAAA,CAAWnC,IAAI,KAAKjB,YAAasD,KAAKtD,YAAauD,UAAQ,EAACnD,SAAUkD,KAAKE,OAAOpD,SAC9EqD,QAASH,KAAKV,KACdc,cAAaJ,KAAK9C,WAAYoD,QAAQ,EAAOD,QAAM,EAACE,UAAS,CACzDC,aATMC,IACPT,KAAKE,OAAOlD,WAAagD,KAAK9C,WACjC4C,EAAA,IAAA,CAAGC,MAAM,8DACLI,QAASH,KAAKN,aAAcd,KAQpCkB,EAAA,YAAA,CAAWpC,KAAMsC,KAAKtC,KAAMoD,gBAAgBC,GAAMf,KAAKtC,KAAOqD,EAAG0B,OAAK,EAACC,SAAS,UAC5E5C,oBAAAc,EAAA,CACIqF,YAAa,CAAC,OAAQ,QAAS,QACvBjG,KAAKa,OAAWb,KAAKrB,UAAS,CACtCzB,WAAY8C,KAAKgG,UACjBhF,UAAWhB,KAAKT,QAChBgE,SAAUA,IAAMvD,KAAKtC,MAAO,QAK5CuD,UACIjB,KAAKkB,MAAM,QAASlB,KAAKmB,MAAMC,OChFvC,IAAA8E,EAAe5J,kBAAgB,CAC3BC,KAHS,eAITC,cAAc,EACdC,MAAO,CACHK,SAAUC,QACVC,UAAWD,QACXL,YAAaC,OACbO,WAAY,CAACP,OAAQmF,SAEzBvE,MAAO,CAAC,oBAAqB,QAAS,UACtCC,MAAMf,EAAOgB,GACT,MAAMC,EAAOC,OAAI,GACXT,EAAaU,EAAAA,MAAMnB,EAAO,cAE1BuJ,EAAYxH,EAAAA,SAAS,IACC,MAApBtB,EAAWY,OAAsC,KAArBZ,EAAWY,MAChC,GAEJZ,EAAWY,MAAMiG,MAAM,MAG5BjF,EAAWyD,IACb9E,EAAEsB,KAAK,oBAAqBwD,GAC5B9E,EAAEsB,KAAK,SAAUwD,IAGrB,MAAO,CACH7E,KAAAA,EACAsI,UAAAA,EACA1G,OACQ7C,EAAMK,WAGVY,EAAKI,OAAQ,IAEjByB,SAAQ8D,eAACA,IACLvE,EAAQuE,EAAelE,KAAK,MAC5BzB,EAAKI,OAAQ,GAEjB4B,MAAMC,GACFA,EAAEC,kBACFd,EAAQ,OAIpBe,SAMI,OAAOC,EAAA,MAAA,CAAKC,MAAM,mBACdD,EAAA,YAAA,CAAWnC,IAAI,KAAKjB,YAAasD,KAAKtD,YAAauD,UAAQ,EAACnD,SAAUkD,KAAKE,OAAOpD,SAC9EqD,QAASH,KAAKV,KACdc,cAAaJ,KAAK9C,WAAYoD,QAAQ,EAAOD,QAAM,EAACE,UAAS,CACzDC,aATMC,IACPT,KAAKE,OAAOlD,WAAagD,KAAK9C,WACjC4C,EAAA,IAAA,CAAGC,MAAM,8DACLI,QAASH,KAAKN,aAAcd,KAQpCkB,EAAA,YAAA,CAAWpC,KAAMsC,KAAKtC,KAAMoD,gBAAgBC,GAAMf,KAAKtC,KAAOqD,EAAG0B,OAAK,EAACC,SAAS,UAC5E5C,oBAAAc,EAAA,CACIqF,YAAa,CAAC,OAAQ,WAClBjG,KAAKa,OAAM,CACf3D,WAAY8C,KAAKgG,UACjBhF,UAAWhB,KAAKT,QAChBgE,SAAUA,IAAMvD,KAAKtC,MAAO,QAK5CuD,UACIjB,KAAKkB,MAAM,QAASlB,KAAKmB,MAAMC,OChEvC,IAAA+E,EAAe7J,kBAAgB,CAC3BC,KAJS,UAKTE,MAAO,CACH2J,MAAOzJ,OACP0J,KAAMlJ,MACNmJ,OAAQxE,OACRR,QAASzE,OACT0J,OAAQ,CACJtJ,KAAMF,QACNyJ,SAAS,GAEbC,IAAK,CACDxJ,KAAM6E,OACN0E,QAAS,GAEbE,IAAK,CACDzJ,KAAM6E,OACN0E,QAAS,GAEbtJ,WAAY,CACRD,KAAME,MACNqJ,QAASA,IAAM,IAEnBG,aAAc9J,OACd+J,QAAS,CACL3J,KAAMF,QACNyJ,SAAS,GAEb1J,SAAU,CACNG,KAAMF,QACNyJ,aAAS5H,GAEbiI,MAAO,CACH5J,KAAM,CAACN,OAAQwH,UACfqC,QAAS,MAEbvJ,KAAM,CACFA,KAAMN,OACN6J,QAAS,WAEbM,eAAgB,CACZ7J,KAAMkH,SACNqC,QAASA,QAGbO,YAAa,CACT9J,KAAMkH,SACNqC,QAASA,QAGb5J,iBAAkBC,OAClBmK,MAAO7C,UAEXI,OACI,MAAO,CACH0C,IAAK,EACLC,UAAW,GACXC,WAAY,GACZC,KAAM,GACNC,KAAMC,EAAOA,QAACtH,KAAKpD,iBAAiByK,KAAKE,WAGjDhK,MAAO,CAAC,oBAAqB,SAAU,cAAe,SAAU,OAChEQ,MAAO,CACHsI,KAAM,CACFmB,QAAQxJ,EAAGyJ,GACP5K,OAAO6K,KAAK1H,KAAKkH,WAAWS,QAAQ5G,IAChC,MAAMQ,EAAOvB,KAAKkH,UAAUnG,GAC5B,GAAIQ,EAAKqG,GAAI,CACT,MAAMrF,EAAMhB,EAAKqG,GAAGC,WACpB,GAAI7J,IAAMyJ,EACNlG,EAAKqG,GAAGE,eAAe,KACnBC,EAAAA,QAAWxG,EAAK8E,KAAMrI,GACtBuD,EAAKqG,GAAGI,SAASzF,KAClB,OACA,CACH,MAAMA,EAAMhB,EAAKqG,GAAGC,WACpBtG,EAAKqG,GAAGK,KAAK,YAAa,KACtB1G,EAAKqG,GAAGI,SAASzF,KAErBhB,EAAK8E,KAAO6B,WAASlK,QAKrCsE,MAAM,GAEVgE,OAAOtI,GACH,IAAImK,EAAInK,EAAIgC,KAAK9C,WAAWgC,OACxBiJ,EAAI,GACJnI,KAAKoI,WAAWD,IAGxBjL,WAAY,CACRsK,QAAQxJ,GACJA,EAAIA,GAAK,GACT,IAAI0J,EAAO1H,KAAKoH,KAAMiB,EAAQX,EAAKxI,OAAQ+H,EAAMoB,EAAQrK,EAAEkB,OAC3D,GAAI+H,EAAM,EAAG,CACT,IAAK,IAAI/E,EAAI+E,EAAK/E,EAAI,EAAGA,IACrBlC,KAAKsI,QAAQtK,EAAEkB,OAASgD,GAAG,GAE/B,IAAK,IAAIA,EAAI,EAAGA,EAAImG,EAAOnG,IACvBlC,KAAKgI,SAASN,EAAKxF,GAAIlE,EAAEkE,QAE1B,CACH,GAAI+E,EAAM,EACN,IAAK,IAAI/E,EAAI,EAAGA,EAAI+E,EAAK/E,IACrBlC,KAAKuI,WAAWb,EAAKW,EAAQnG,EAAI,IAGzClE,EAAE2J,QAAQ,CAACpF,EAAKL,KACZlC,KAAKgI,SAASN,EAAKxF,GAAIlE,EAAEkE,QAIrCI,MAAM,IAGdkG,QAAS,CACLC,OAAO1H,GACH,OAAQA,GAAKtB,EAAAA,YAAYsB,EAAGf,KAAKoG,OAAUrF,EAAEf,KAAKoG,OAASrF,GAE/D2H,MAAMC,EAAGpG,GACLvC,KAAKmH,WAAWwB,GAAKC,KAAKC,UAAUtG,IAExCuG,MAAMhL,GACFkC,KAAKkB,MAAM,oBAAqBpD,GAChCkC,KAAKkB,MAAM,SAAUpD,IAEzB+J,SAASkB,EAAKlB,GACV,MAAMX,EAAYlH,KAAKkH,UACjBQ,EAAO1H,KAAKoH,KAClB,GAAIM,EAAK1C,OAAO2D,GAAKzB,EAAUyB,IAAMzB,EAAUyB,GAAGf,IAAI1I,SAAWwI,EAAKxI,OAClE,OAEJ,MAAMpB,EAAQ4J,EAAKhJ,IAAIiK,IACnB,MAAMpE,EAAOwE,IAAQJ,EAAId,EAAW,IAAI7H,KAAKkH,UAAUyB,GAAGf,GAAGP,MACvDvJ,EAAQkC,KAAKoG,MAAQ7B,EAAKvE,KAAKoG,QAAU,KAAO7B,EAEtD,OADAvE,KAAK0I,MAAMC,EAAG7K,GACPA,IAEXkC,KAAK8I,MAAMhL,IAEfkK,SAASe,EAAKjL,GACV,MAAMsI,EAAQpG,KAAKoG,MACfA,IACAtI,EAAQ,CAACkL,CAAC5C,GAAQpG,KAAKyI,OAAO3K,KAE9BkC,KAAKmH,WAAW4B,KAASH,KAAKC,UAAUzC,EAAQtI,EAAMsI,GAAStI,KAGnEkC,KAAKkH,UAAU6B,GAAKnB,IAAM5H,KAAKkH,UAAU6B,GAAKnB,GAAGqB,WAAWnL,GAC5DkC,KAAK0I,MAAMK,EAAKjL,KAEpBwK,QAAQpG,EAAGnD,GACP,MAAMsH,EAAOrG,KAAKpD,iBAAiByK,KAAK6B,UAAUlJ,KAAKqG,MAAQ,IACzD/E,EAAUtB,KAAKsB,QAAU,IAAItB,KAAKsB,SAAW,CAC/C6H,WAAW,EACXC,UAAU,GAEd,GAAIpJ,KAAK2G,aAAc,CACdrF,EAAQuG,WAAUvG,EAAQuG,SAAW,IAC1C,MAAMwB,EAASnB,EAAAA,SAASlI,KAAK2G,cAC7B2C,EAAAA,QAAOhI,EAAQuG,SAAU7H,KAAKoG,MAAQ,CAAC4C,CAAChJ,KAAKoG,OAAQiD,GAAUA,GAEnErJ,KAAKgH,OAAShH,KAAKgH,MAAM,CAACX,KAAAA,EAAM/E,QAAAA,EAASiI,MAAOvJ,KAAKoH,KAAKlI,SAC1Dc,KAAKkH,YAAYlH,KAAKiH,KAAO,CAACZ,KAAAA,EAAM/E,QAAAA,GACpCtB,KAAKoH,KAAOvK,OAAO6K,KAAK1H,KAAKkH,WACzBnI,GACAyK,EAAAA,SAAS,IAAMxJ,KAAKkB,MAAM,MAAOmF,EAAMxJ,OAAO6K,KAAK1H,KAAKkH,WAAWhI,OAAS,KAGpFuK,MAAMvH,EAAG6G,EAAKnB,GACV5H,KAAKkH,UAAU6B,GAAKnB,GAAKA,EACzB4B,EAAAA,SAAS,KACLxJ,KAAKkB,MAAM,cAAe0G,EAAI/K,OAAO6K,KAAK1H,KAAKkH,WAAWwC,QAAQX,OAG1ER,WAAWQ,EAAKhK,GACZ,MAAMwK,EAAQ1M,OAAO6K,KAAK1H,KAAKkH,WAAWwC,QAAQX,UAC3C/I,KAAKkH,UAAU6B,UACf/I,KAAKmH,WAAW4B,GACvB/I,KAAKoH,KAAOvK,OAAO6K,KAAK1H,KAAKkH,WACzBnI,GACAyK,EAAQA,SAAC,IAAMxJ,KAAKkB,MAAM,SAAUqI,KAG5CI,IAAIzH,GACA,GAAIlC,KAAKlD,WAAY,IAAUkD,KAAK+G,YAAY/G,KAAK9C,YACjD,OAEJ,MAAMY,EAAQ,IAAIkC,KAAK9C,YACvBY,EAAM8L,KAAK5J,KAAK2G,aAAeuB,EAAAA,SAASlI,KAAK2G,cAAiB3G,KAAKoG,MAAQ,KAAO,IAClFpG,KAAK8I,MAAMhL,IAEf+L,IAAIN,EAAOR,GACP,GAAI/I,KAAKlD,SACL,OAEJ,MAAM+M,EAAMA,KACR7J,KAAKuI,WAAWQ,GAAK,GACrB,MAAMjL,EAAQ,IAAIkC,KAAK9C,YACvBY,EAAMgM,OAAOP,EAAO,GACpBvJ,KAAK8I,MAAMhL,IAEfiM,YAAU/J,KAAK8G,eAAe9G,KAAK9C,WAAYqM,IAAQ/D,KAAKC,KACpD,IAAUA,GACVoE,OAIZG,QAAQjB,GACJ,OAAOjJ,EAAA,MAAA,CAAKC,MAAM,yCAAyCI,QAASH,KAAK2J,OAE7EM,QAAQV,EAAOR,GACX,OAAOjJ,EAAA,MAAA,CAAKC,MAAM,2DACdI,QAASA,IAAMH,KAAK6J,IAAIN,EAAOR,MAEvCmB,WAAWX,GACP,OAAOzJ,EAAA,MAAA,CAAKC,MAAM,mDACdI,QAASA,IAAMH,KAAKmK,WAAWZ,GAAQ,MAE/Ca,aAAab,GACT,OAAOzJ,EAAA,MAAA,CAAKC,MAAM,qDACdI,QAASA,IAAMH,KAAKmK,WAAWZ,EAAO,MAE9CY,WAAWZ,EAAOnC,GACd,MAAMiD,EAAIrK,KAAKoH,KAAKmC,GACpBvJ,KAAKoH,KAAKmC,GAASvJ,KAAKoH,KAAKmC,EAAQnC,GACrCpH,KAAKoH,KAAKmC,EAAQnC,GAAQiD,EAC1BrK,KAAKpD,iBAAiB0N,QAAQtK,KAAKoH,KAAK1I,IAAIiK,GACjC3I,KAAKkH,UAAUyB,GAAGf,KAE7B5H,KAAK6H,SAAS,IAElB0C,SAAShB,EAAOlB,GACZ,MAAMmC,EAAYjB,EAAQ,EACpBkB,EAAclB,EAAQlB,EAAQ,EAEpC,OAAKmC,GAAcC,EAIfD,GAAaC,EAEN3K,EAAA,MAAA,CAAKC,MAAM,oCACdD,EAAA,MAAA,CAAKC,MAAM,sBAAsBI,QAASA,IAAMH,KAAKmK,WAAWZ,GAAQ,KACxEzJ,EAAA,MAAA,CAAKC,MAAM,wBAAwBI,QAASA,IAAMH,KAAKmK,WAAWZ,EAAO,MAI7EiB,EACOxK,KAAKkK,WAAWX,GAGvBkB,EACOzK,KAAKoK,aAAab,QAD7B,EAfW,MAmBfmB,SAASrC,EAAOkB,EAAOR,GACnB,GAAI/I,KAAK6F,OAAOU,OACZ,OAAOvG,KAAK6F,OAAOU,OAAO,CACtB8B,MAAAA,EACAkB,MAAAA,EACAoB,GAAI3K,KACJ+I,IAAAA,EACAc,IAAKA,IAAM7J,KAAK6J,IAAIN,EAAOR,GAC3BY,IAAK3J,KAAK2J,MAGlB,MAAMiB,EAAM,GAOZ,KANM5K,KAAKyG,KAAO4B,EAAQrI,KAAKyG,MAAQ4B,IAAUkB,EAAQ,GACrDqB,EAAIhB,KAAK5J,KAAKgK,QAAQjB,IAEtBV,EAAQrI,KAAK0G,KACbkE,EAAIhB,KAAK5J,KAAKiK,QAAQV,EAAOR,IAE7B/I,KAAK4G,QAAS,CACd,MAAMA,EAAU5G,KAAKuK,SAAShB,EAAOlB,GACjCzB,GACAgE,EAAIhB,KAAKhD,GAGjB,OAAOgE,GAEXxC,WAAWpK,GACP,IAAK,IAAIkE,EAAI,EAAGA,EAAIlE,EAAGkE,IACnBlC,KAAK9C,WAAW0M,KAAK5J,KAAKoG,MAAQ,KAAO,IAE7CpG,KAAK8I,MAAM,IAAI9I,KAAK9C,cAExB2N,SAAStB,EAAOR,GACZ,MAA0B,mBAAf/I,KAAK6G,MACL7G,KAAK6G,MAAM0C,EAAOvJ,KAAK9C,WAAWqM,GAAQR,GAE3B,iBAAf/I,KAAK6G,OACL7G,KAAK6G,MAAMiE,QAAQ,UAAWvB,EAAQ,KAKzDwB,UACI,MAAM5C,GAAKnI,KAAKsG,QAAU,GAAKtG,KAAK9C,WAAWgC,OAC/C,IAAK,IAAIgD,EAAI,EAAGA,EAAIlC,KAAK9C,WAAWgC,OAAQgD,IACxClC,KAAKsI,QAAQpG,GAEbiG,EAAI,GACJnI,KAAKoI,WAAWD,IAGxBtI,SACI,MAAM6H,EAAO1H,KAAKoH,KACZb,EAASvG,KAAKuG,OACdyE,EAAOhL,KAAKqH,KACZvK,EAAWkD,KAAKlD,SAChBmO,EAA2B,SAAdjL,KAAK/C,KAElB0E,EAA2B,IAAhB+F,EAAKxI,OACjBc,KAAK6F,OAAOW,QAAWxG,KAAK6F,OAAOW,QAAQ,CACxCmE,GAAI3K,KACJ2J,IAAK3J,KAAK2J,MACR7J,EAAA,MAAA,CAAKiJ,IAAK,QAAShJ,MAAM,kDAC3BI,QAASH,KAAK2J,MAAUjC,EAAKhJ,IAAI,CAACqK,EAAKQ,KACvC,MAAMlD,KAACA,EAAI/E,QAAEA,GAAWtB,KAAKkH,UAAU6B,GACjC6B,EAAMrE,IAAWzJ,EAAWkD,KAAK0K,SAAShD,EAAKxI,OAAQqK,EAAOR,GAAO,GACrElC,EAAQ7G,KAAK6K,SAAStB,EAAOR,GAEnC,OAAIkC,EACOnL,EAAA,MAAA,CAAKC,MAAM,wBAAwBgJ,IAAKA,GAC3CjJ,EAAA,MAAA,CAAKC,MAAM,uBACI,IAAV8G,EAAkB/G,EAAA,MAAA,CAAKC,MAAM,mBAAmBwJ,EAAQ,GAAW,MACzD,IAAV1C,EAAkB/G,EAAA,MAAA,CAAKC,MAAM,qBAAqB8G,GAAe,KAClE/G,EAAA,MAAA,CAAKC,MAAM,+BACL6K,EAAI1L,OAAU0L,EAAM,OAG9B9K,EAAA,MAAA,CAAKC,MAAM,uBACPD,EAACkL,EAAI,CACDjC,IAAKA,EAEDjM,SAAAA,EACAoO,sBAAwBrD,GAAa7H,KAAK6H,SAASkB,EAAKlB,GACxDsD,eAAiBvD,GAAO5H,KAAKyJ,MAAMF,EAAOR,EAAKnB,GAC/CwD,OAAO,EACPlO,WAAY8C,KAAKoG,MAAQ,CAAC4C,CAAChJ,KAAKoG,OAAQpG,KAAKyI,OAAOzI,KAAK9C,WAAWqM,KAAWvJ,KAAK9C,WAAWqM,GAC/FlD,KAAAA,EACAhE,OAAQf,EACR+J,cAAc,MAMvBvL,EAAA,MAAA,CAAKC,MAAM,wBAAwBgJ,IAAKA,GAC3CjJ,EAACkL,EAAI,CACDjC,IAAKA,EAEDjM,SAAAA,EACAoO,sBAAwBrD,GAAa7H,KAAK6H,SAASkB,EAAKlB,GACxDsD,eAAiBvD,GAAO5H,KAAKyJ,MAAMF,EAAOR,EAAKnB,GAC/CwD,OAAO,EACPlO,WAAY8C,KAAKoG,MAAQ,CAAC4C,CAAChJ,KAAKoG,OAAQpG,KAAKyI,OAAOzI,KAAK9C,WAAWqM,KAAWvJ,KAAK9C,WAAWqM,GAC/FlD,KAAAA,EACAhE,OAAQf,EACR+J,cAAc,IAGtBvL,EAAA,MAAA,CAAKC,MAAM,mBAAmBwJ,EAAQ,GACpCqB,EAAI1L,OAAUY,EAAA,MAAA,CAAKC,MAAM,+BAA+B6K,GAAa,QAIvF,OAAO9K,EAAA,MAAA,CAAKiJ,IAAK,MAAOhJ,MAAO,gBAAkBjD,EAAW,uBAAyB,KAAOmO,EAAa,oBAAsB,KAAMtJ,MCrX9H2J,GAAA,CACX/O,KAAM,yBCRHwD,MAAM,OAAOwL,QAAQ,gBAAgBC,MAAM,8DAAhD,OAAAC,EAAAC,YAAAC,EAAAA,mBAGK,MAHLC,GAGK,IAAAC,EAAA,KAAAA,EAAA,GAAA,CAFHC,EAAAA,mBACgN,OAAA,CAD1MC,KAAK,eACL5D,EAAE,iNCUG,IAAA6D,GAAA,CACX1B,UACA2B,GACA5P,EACAuF,EACAiB,EACAiD,EACA3C,EACA4C,EACAG,EACAC,EACAlC,GC0BJ,IAAAiI,GAAe,CC/CA,MADF,SAGTC,MAAO,CACHC,OAAQ,CAAChG,EAAOtI,IAAUuO,EAAAA,eAJrB,SAIqBA,CAAqB,GAAIjG,EAAOtI,IAE9D+B,OAAMA,IACK,ICTA,CACXtD,KAAM,QACNsD,OAAMA,CAACpC,EAAG6O,IACCA,EAAIC,MAAMC,IAAI,CAAC/P,MAAO,CAACgQ,KAAM,KAAM,CACtCjG,QAAQA,IAAI,CACR8F,EAAIC,MAAMG,IAAIJ,EAAIK,KAAMlP,OF2BvB,CACblB,KAAM,WACNqQ,UAAUN,GACN,MAAM7P,EAAQ6P,EAAIK,KAAKlQ,MAClBgD,EAAWA,YAAChD,EAAO,aACpBA,EAAM6E,QAAUgL,EAAIK,KAAKrL,SAAW,MAhC/B,CACb/E,KAAM,WACNqQ,UAAUN,GACN,MAAM7P,EAAQ6P,EAAIK,KAAKlQ,MAClBgD,EAAWA,YAAChD,EAAO,aACpBA,EAAM6E,QAAUgL,EAAIK,KAAKrL,SAAW,MAIlC,CACV/E,KAAM,QACNqQ,UAAUN,GACN,MAAM7P,EAAQ6P,EAAIK,KAAKlQ,MAClBgD,EAAWA,YAAChD,EAAO,aACpBA,EAAM6E,QAAUgL,EAAIK,KAAKrL,SAAW,MAIjC,CACX/E,KAAM,SACNqQ,UAAUN,GACN,MAAM7P,EAAQ6P,EAAIK,KAAKlQ,MAClBgD,EAAWA,YAAChD,EAAO,aACpBA,EAAM6E,QAAUgL,EAAIK,KAAKrL,SAAW,MAa9B,CACd/E,KAAM,WACNqQ,UAAUN,GACN,IAAI7P,MAACA,GAAS6P,EAAIK,KAClBlQ,EAAMQ,KAAO,cG5CN,IAAA4P,GAAA,CACXtG,OAAQuG,aACRC,KAAMD,WACNE,OAAQF,aACRG,QAASH,cACTI,YAAaJ,cACbK,KAAML,WACNM,SAAU,cACVC,OAAQ,cACRC,KAAMR,WACNS,WAAY,iBACZC,WAAY,iBACZC,OAAUX,aACVY,OAAQ,YACRC,SAAU,cACVC,SAAU,cACVC,SAAU,cACVC,MAAO,WACPhF,MAAOgE,YACPiB,SAAUjB,YACV1G,MAAO0G,YACPkB,SAAUlB,YACVzF,KAAMyF,WACNN,IAAKM,UACLJ,IAAKI,UACLmB,MAAO,WACPC,MAAO,WACPC,OAAQ,cACR7D,QAAS,eCvBb,SAAS8D,GAAK3R,EAAOF,GACZkD,EAAWA,YAAChD,EAAOF,IACpBmE,EAAE,QAAC/D,OAAOF,EAAMF,MAChBE,EAAMF,GAAQ,CAACyM,CAACzM,GAAOE,EAAMF,GAAOmB,MAAM,IAIlD,SAAS2Q,GAAQ9L,GACb,OAAe,IAARA,EASX,SAAS+L,GAASjI,GACd,MAAMkI,EAAQ,IAAIlI,GAElB,cADOkI,EAAM5M,SACN4M,EAGI,IAAAC,GAAA,CACXC,WACI,MAAMpH,EAAOrH,KAAKqH,OAClB,OAAIA,EACOA,EAAKoH,WAEL,IAAIC,QAAQ3N,GAAKA,MAGhC4N,cAAcvI,GACV,OAAO,IAAIsI,QAAQ,CAACE,EAASC,KACzB,MAAMxH,EAAOrH,KAAKqH,OACdA,EACAA,EAAKoH,SAASrI,GAAOZ,KAAKoJ,GAASlJ,MAAMmJ,GAEzCD,OAIZE,mBAAmBxC,GACf,MAAMjF,EAAOrH,KAAKqH,OAClB,GAAIA,EACA,OAAOA,EAAK0H,gBAAgBzC,EAAI0C,KAGxCC,YAAY3N,IACR,CAAC,YAAa,WAAY,MAAO,OAAQ,OAAQ,MAAO,SAASqG,QAAQpL,KAtCjF,SAAkByG,EAAKzG,GACfkD,EAAWA,YAACuD,EAAKzG,KAAUmE,EAAE,QAAC7D,OAAOmG,EAAIzG,MACzCyG,EAAIzG,GAAQ,CAACmB,OAAQsF,EAAIzG,KAqCrB2S,CAAS5N,EAAS/E,KAEf+E,GAEXgN,SAAQA,EAAC3B,KAACA,MACNyB,GAAKzB,EAAM,SACXyB,GAAKzB,EAAM,QACXA,EAAK8B,UAAY9B,EAAK8B,SAAS9G,QAAQpG,IAC/Bb,UAAG/D,OAAO4E,EAAK4N,WACf5N,EAAK4N,QAAU,IAAIC,OAAO7N,EAAK4N,YAGhCxC,GAEXC,UAAUN,GACN,MAAM+C,EAAM,CACRC,KAAM,CACFvC,MAAM,GAEVlG,MAAO,GACP2F,IAAK,CAACC,KAAM,IACZ8C,KAAM,IAEV,CAAC,OAAQ,OAAQ,MAAO,SAAS5H,QAAQpL,IACrC+P,EAAIK,KAAKpQ,GAAQiT,EAAU,QAAC,CAACxP,KAAKsB,QAAQ/E,IAAS,GAAI+P,EAAIK,KAAKpQ,IAAS,IAAK8S,EAAI9S,OAG1FkT,kBAAiBA,KClFV,CACHpI,KAAM,CACFqI,SAAU,OACVC,WAAY,QACZC,WAAY,SAEhBlD,IAAK,CACDhP,MAAM,EACNmS,OAAQ,GAEZ1G,UAAW,CACPlM,KAAM,UACN6S,SAAS,EACThT,UAAU,EACViT,OAAO,EACPC,UAAW,GACXC,KAAM,QACNvS,MAAM,EACN8O,SAAK5N,EACLsR,WAAOtR,GAEXwK,SAAU,CACNnM,KAAM,UACN6S,SAAS,EACThT,UAAU,EACViT,OAAO,EACPC,UAAW,GACXC,KAAM,QACNvS,MAAM,EACN8O,SAAK5N,EACLsR,WAAOtR,KDuDfuR,gBAAeA,CAAC1B,EAAU2B,KACG,WAArB3B,EAAS4B,QACT5B,EAAS4B,QAAU,WACS,SAArB5B,EAAS4B,UAChB5B,EAAS4B,QAAU,UAEvB5B,EAAS2B,UAAatS,GACX,IAAI4Q,QAASE,GASTwB,EAAUtS,EARCwS,IACd7B,EAAS9I,QAAU2K,EACfA,EACA1B,GAAQ,GAERA,OAMTH,GAEX8B,SACI,MAAMlJ,EAAOrH,KAAKsB,QAAQ+F,KAC1BrH,KAAKqG,KAAO,CACR5J,MAAO,IAAI4K,GACXmJ,GAAI,CACAC,OAAS9Q,IACLA,EAAE+Q,mBAGVC,MAAOtJ,EAAKsJ,MACZ1T,KAAM,SAGd2T,eACI,MAAM7H,IAACA,EAAGpL,IAAEA,GAAOqC,KACbqH,EAAOrH,KAAKsB,QAAQ+F,KAC1BiC,EAAM,QAACtJ,KAAKqG,KAAM,CAAC0C,IAAAA,EAAKpL,IAAAA,EAAKoC,MAAO,CAACsH,EAAKwJ,UAAWxJ,EAAKtH,MAAO,gBAAiBC,KAAK8Q,QAAQC,QAAU,aAAe,OAE5HlR,OAAO8B,GAIH,OAHIA,EAASqP,YAAchR,KAAK8Q,QAAQC,SACpCpP,EAASsP,aAAQrS,EAAW,IAAMoB,KAAKkR,eAEpClR,KAAKmR,GAAGnR,KAAKqG,KAAMgI,GAAQrO,KAAKsB,QAAQoL,IAAIhP,MAAQiE,EAASyP,WAAa,CAACpR,KAAKqR,QAAQ1P,MAEnG2P,SAAShF,EAAK3K,GACV,MAAM0E,EAAOiG,EAAIK,KACX4E,EAAM,GAAGvR,KAAK+I,MAAMuD,EAAIvD,MACxByD,EAAMnG,EAAKmG,IACXgF,EAAUxR,KAAKwR,QAAQnL,KAA6B,IAApBA,EAAKkJ,KAAK1I,OACzC2F,IAAKiF,GAAQzR,KAAKqG,KAAK5J,MACxBiV,EAAMrL,EAAKkJ,KAAKxP,aACfsG,EAAKkJ,KAAKxP,aACVsG,EAAKkJ,KAAK1I,MACjB,MAAMtF,EAAO8M,GAAQhI,EAAKkJ,KAAK7R,MAAQiE,EAAW3B,KAAKmR,GAAG3B,EAAAA,QAAW,CAACnJ,EAAKkJ,KAAM,CAC7E9S,MAAO,CACHS,WAAYoP,EAAIjG,KAAKvI,MACrB2D,MAAO+P,EAAUnL,EAAKQ,MAAMA,WAAQjI,KACjC0P,GAASjI,EAAKkJ,MAAQ,IACzBhT,KAAM+P,EAAI0C,GACV2C,MAAOrF,EAAIsF,kBAEf7R,MAAOC,KAAK6R,QAAQC,WAAWJ,GAAOrL,EAAKwK,UAAW,gBACtD9H,IAAQwI,EAAH,KACL5T,IAAK2O,EAAIyF,QACT9U,KAAM,cACL,CAAC6L,MAAOA,IAAMnH,KAAc6P,EAAU,CAAC/P,MAAOA,IAAMzB,KAAKgS,SAAS3L,EAAMkL,EAAKjF,IAAQ,KAC1F,OAAQ+B,GAAQoD,IAASpD,GAAQ7B,EAAI9O,MAAS6D,EAAOvB,KAAKiS,QAAQ5L,EAAMkL,EAAK,CAAChQ,KAElFiQ,QAAQnL,GACJ,IAAgC,IAA5BrG,KAAKsB,QAAQ+F,KAAKR,MAAiB,OAAO,EAC9C,MAAMA,EAAQR,EAAKQ,MACnB,SAAWA,EAAMA,QAAUA,EAAMqL,QAAW7D,GAAQxH,EAAMnJ,QAE9DsU,SAAS3L,EAAMkL,EAAKjF,GAAK,IAAA6F,EAAAC,EACrB,MAAMC,EAAY,IAAIhM,EAAKQ,OACrByL,EAAW,IAAIjM,EAAKiJ,MACpBiD,EAAYvS,KAAKwS,QAAQ,SACzB7Q,EAAW,CAAC4Q,EAAYA,EAAU,CACpC1L,cAAKsL,EAAE7F,EAAImG,eAAO,IAAAN,GAAU,QAAVA,EAAXA,EAAaO,gBAAbP,IAAqBA,OAArBA,EAAAA,EAAuBrU,MAC9BuI,KAAMiG,EAAIjG,KACV/E,QAAStB,KAAKsB,kBAChB8Q,EAAG9F,EAAImG,eAAO,IAAAL,GAAU,QAAVA,EAAXA,EAAaM,gBAAbN,IAAqBA,OAArBA,EAAAA,EAAuBtU,OACtB6U,GAAQtE,GAAQiE,EAAS5U,QAAU4U,EAAShD,MAAQgD,EAASJ,UAAY7D,GAAQiE,EAASvF,MAC5F4F,GACAhR,EAA4B,SAAnB2Q,EAASM,MAAmB,UAAY,QAAQ5S,KAAKmR,GAAG,CAC7DlU,MAAwB,IAAlBqV,EAASvF,KAAgB,eAAiBuF,EAASvF,KACzD4D,MAAO,gBAIf,MAAMkC,EAAQrD,UAAW,CAAC6C,EAAW,CACjC5V,MAAO6R,GAAS+D,GAChBtJ,IAAQwI,EAAH,MACLxR,MAAO,gBACP9C,KAAMoV,EAAUpV,MAAQ,OACxBuT,GAAI,CACAN,MAAOA,IAAI4C,KACoB,IAAAC,EAAvBJ,GAAQL,EAAShD,MACjB0D,aAAW,CAAC/V,KAAM,UAAW0I,gBAAOoN,EAAEzG,EAAImG,eAAO,IAAAM,GAAS,QAATA,EAAXA,EAAaE,eAAbF,IAAoBA,OAApBA,EAAAA,EAAsBjV,MAAOoV,SAAU,MAEjFlT,KAAK8Q,QAAQqC,WAAW7G,EAAK,aAAc,CAACwG,KAAAA,SASxD,cAJOD,EAAMpW,MAAMiB,YACZmV,EAAMpW,MAAMoK,aACZgM,EAAMpW,MAAMyV,OAEZlS,KAAKmR,GAAG0B,EAAOlR,IAE1BsQ,QAAQ5L,EAAMkL,EAAK5P,GACf,MAAM6K,EAAMnG,EAAKmG,IACjB,OAAOxM,KAAKmR,GAAG,CACXpR,MAAOC,KAAK6R,QAAQC,WAAWtF,EAAIzM,MAAO,eAC1C9C,KAAM,MACNR,MAAO+P,GAAO,CAACC,KAAM,IACrB1D,IAAQwI,EAAH,OACN5P,IAEP0P,QAAQ1P,GACJ,MAAM+K,EAAM1M,KAAKsB,QAAQoL,KAAO,GAChC,OAAO1M,KAAKmR,GAAG,CACXlU,KAAM,MACNR,MAAOiQ,EACP3M,MAAOC,KAAK6R,QAAQC,WAAWpF,EAAI3M,MAAO,eAC1CgJ,IAAQ/I,KAAK+I,IAAR,OACNpH,IAEPuP,cACI,IAAIkC,EAAK,GAOT,GANK/E,GAAQrO,KAAKsB,QAAQ6H,UAAUzL,OAChC0V,EAAGxJ,KAAK5J,KAAKqT,iBAEZhF,GAAQrO,KAAKsB,QAAQ8H,SAAS1L,OAC/B0V,EAAGxJ,KAAK5J,KAAKsT,gBAEZF,EAAGlU,OAGR,OAAOc,KAAKmR,GAAG,CACXlU,KAAM,OACN8C,MAAO,8BACPgJ,IAAQ/I,KAAK+I,IAAR,MACNqK,IAGPE,eACI,MAAMlK,EAAW,IAAIpJ,KAAKsB,QAAQ8H,UAC5B4G,EAAY5G,EAAS4G,WAAahQ,KAAK8Q,QAAQ1L,IAAI/F,EAAE,UAAY,KAKvE,cAJO+J,EAAS4G,iBACT5G,EAAS8G,aACT9G,EAASoD,WACTpD,EAAS1L,KACTsC,KAAKmR,GAAG,CACXlU,KAAM,SACNR,MAAO2M,EACPrJ,MAAO,eACP4Q,MAAO,CAAC4C,MAAOnK,EAASmK,OACxB/C,GAAI,CACAN,MAAOA,KACH,MAAMsD,EAAOxT,KAAK8Q,QAAQ1L,IAC1BpF,KAAKsB,QAAQ8H,SAAS8G,MAChBlQ,KAAKsB,QAAQ8H,SAAS8G,MAAMsD,GAC5BA,EAAKC,gBAGnB1K,IAAQ/I,KAAK+I,IAAR,MACN,CAACiH,KAERqD,gBACI,MAAMlK,EAAY,IAAInJ,KAAKsB,QAAQ6H,WAC7B6G,EAAY7G,EAAU6G,WAAahQ,KAAK8Q,QAAQ1L,IAAI/F,EAAE,WAAa,KAKzE,cAJO8J,EAAU6G,iBACV7G,EAAU+G,aACV/G,EAAUqD,WACVrD,EAAUzL,KACVsC,KAAKmR,GAAG,CACXlU,KAAM,SACNR,MAAO0M,EACPpJ,MAAO,gBACP4Q,MAAO,CAAC4C,MAAOpK,EAAUoK,OACzB/C,GAAI,CACAN,MAAOA,KACH,MAAMsD,EAAOxT,KAAK8Q,QAAQ1L,IAC1BpF,KAAKsB,QAAQ6H,UAAU+G,MACjBlQ,KAAKsB,QAAQ6H,UAAU+G,MAAMsD,GAC7BA,EAAK/C,SAAS/K,MAAM,UAIlCqD,IAAQ/I,KAAK+I,IAAR,MACN,CAACiH,MElRZ,SAAS0D,GAAY9I,EAAKyE,GAItB,OAHI3O,UAAG3D,QAAQ6N,GACXA,EAAM,CAAClN,KAAMkN,GACPlK,UAAGiT,MAAM/I,IAASlK,EAAAA,QAAG7D,OAAO+N,KAAMA,EAAM,CAAClN,KAAM2R,IAClDzE,EAGI,SAASgJ,GAAUxO,EAAKtF,GACnC,MAAO,CACH+T,OAAMA,IACK/T,EAAEgU,SAASzM,OAEtB0M,OAAO/E,GACH,MAAM1C,EAAMxM,EAAEkU,YAAYhF,GAC1B,GAAK1C,EACL,OAAOxM,EAAE6K,GAAGsJ,KAAK3H,EAAIyF,UAEzBtD,SAASyF,GACE,IAAIxF,QAAQ,CAACE,EAASC,KACzB,MAAMsF,EAAQ/O,EAAIzD,SACZyS,EAAM,CAACtU,EAAEgU,SAASrF,YACxB0F,EAAMnP,OAAOjE,IAAIA,EAAEsT,SAAS1M,QAAQ5G,IAChCqT,EAAIxK,KAAK7I,EAAE0N,cAEfC,QAAQ0F,IAAIA,GAAK5O,KAAK,KAClBoJ,GAAQ,GACRsF,GAAYA,GAAS,KACtBxO,MAAO/F,IACNkP,EAAOlP,GACPuU,GAAYA,EAASvU,GACrBG,EAAE6K,GAAG5L,KAAK,gBAAiBY,EAAG,CAACyF,IAAAA,IAC/BtF,EAAEwU,UAAU,gBAAiB3U,EAAG,CAACyF,IAAAA,QAI7CuJ,cAAaA,CAACvI,EAAO8N,IACV,IAAIxF,QAAQ,CAACE,EAASC,KACzB,MAAMvC,EAAMxM,EAAEkU,YAAY5N,GAC1B,IAAKkG,EAAK,OACV,MAAMiI,EAAMzU,EAAEwK,QAAQgC,EAAI0C,IACpBoF,EAAM,CAACtU,EAAEgU,SAASnF,cAAcrC,EAAI0C,KAC1CnK,UAAQ0P,GAAKvP,OAAOjE,IAAIA,EAAEsT,SAAS1M,QAAQ5G,IACvCqT,EAAIxK,KAAK7I,EAAE0N,cAEfC,QAAQ0F,IAAIA,GAAK5O,KAAK,KAClBoJ,EAAQ,MACRsF,GAAYA,EAAS,QACtBxO,MAAO/F,IACNkP,EAAOlP,GACPuU,GAAYA,EAASvU,GACrBG,EAAE6K,GAAG5L,KAAK,sBAAuBY,EAAG,CAACyG,MAAAA,EAAOhB,IAAAA,QAIxD0J,mBAAmB0F,EAAQC,GAAW,GAClCrP,EAAIsP,OAAOC,WAAWH,GAAQ7M,QAAQvB,IAC9BqO,GAAUzU,KAAK4U,sBAAsBxO,GACzCtG,EAAE+U,QAAQzO,GAAOuB,QAAQ2E,IACrBxM,EAAEgU,SAAShF,mBAAmBxC,QAI1CsI,sBAAsBJ,GAClBpP,EAAIsP,OAAOC,WAAWH,GAAQ7M,QAAQvB,IAClCtG,EAAE+U,QAAQzO,GAAOuB,QAAQ2E,IACrB,MAAMhC,EAAUxK,EAAEwK,QAAQgC,EAAI0C,IACzB1E,IACDnN,MAAMsB,QAAQ6L,GACdA,EAAQ3C,QAAQN,IACZA,EAAKyH,uBAEFxE,GACPA,EAAQwE,2BAKxBlE,IAAK,CACDkF,QAASA,CAACA,GAAU,KAChB1K,EAAI0P,eAAe,CAAChF,UAAWA,KAEnChT,SAAUA,CAACA,GAAW,KAClBsI,EAAI0P,eAAe,CAAChY,WAAYA,KAEpCY,KAAMA,CAACqX,GAAS,KACZ3P,EAAI0P,eAAe,CAACpX,OAAQqX,MAGpC3L,SAAU,CACN0G,QAASA,CAACA,GAAU,KAChB1K,EAAI4P,cAAc,CAAClF,UAAWA,KAElChT,SAAUA,CAACA,GAAW,KAClBsI,EAAI4P,cAAc,CAAClY,WAAYA,KAEnCY,KAAMA,CAACqX,GAAS,KACZ3P,EAAI4P,cAAc,CAACtX,OAAQqX,MAGnCD,eAAgBA,CAACrY,EAAQ,MACrB,IAAImO,EAAM8I,GAAY5T,EAAEwB,QAAQ6H,WAAW,GAC3CG,UAAOsB,EAAKnO,GACZqD,EAAEwB,QAAQ6H,UAAYyB,EACtBxF,EAAI6P,kBAERD,cAAeA,CAACvY,EAAQ,MACpB,IAAImO,EAAM8I,GAAY5T,EAAEwB,QAAQ8H,UAAU,GAC1CE,UAAOsB,EAAKnO,GACZqD,EAAEwB,QAAQ8H,SAAWwB,EACrBxF,EAAI6P,kBAERxE,OAAMA,CAACyE,EAAWC,IACP,IAAIzG,QAAQ,CAACE,EAASC,OACsB,IAA/B/O,EAAEwB,QAAQ8T,iBAA6B1G,QAAQE,UAAYxJ,EAAIqJ,YACvEjJ,KAAK,KACT,IAAIqC,EAAWzC,EAAIyC,WACnB/H,EAAEuV,aAAaxN,GAAUrC,KAAK,KAC1B9E,UAAGyD,SAAS+Q,IAAcI,EAAAA,OAAO,IAAMJ,EAAUrN,EAAUzC,IAC3D1E,EAAAA,QAAGyD,SAASrE,EAAEwB,QAAQiU,WAAaD,EAAAA,OAAO,IAAMxV,EAAEwB,QAAQiU,SAAS1N,EAAUzC,IAC7EtF,EAAE6K,GAAG5L,KAAK,SAAU8I,EAAUzC,GAC9BwJ,EAAQ/G,KACTnC,MAAO/F,SACX+F,MAAM,IAAIoN,KACTpS,UAAGyD,SAASgR,IAAWG,EAAMA,OAAC,IAAMH,EAAO/P,KAAQ0N,IACnDjE,KAAUiE,SCjI9B,SAAqB0C,EAAK7X,QACX,IAARA,IAAiBA,EAAM,IAC5B,IAAI8X,EAAW9X,EAAI8X,SAEnB,GAAKD,GAA2B,oBAAbE,SAAnB,CAEA,IAAIC,EAAOD,SAASC,MAAQD,SAASE,qBAAqB,QAAQ,GAC9DjF,EAAQ+E,SAASG,cAAc,SACnClF,EAAM1T,KAAO,WAEI,QAAbwY,GACEE,EAAKG,WACPH,EAAKI,aAAapF,EAAOgF,EAAKG,YAKhCH,EAAKK,YAAYrF,GAGfA,EAAMsF,WACRtF,EAAMsF,WAAWC,QAAUV,EAE3B7E,EAAMqF,YAAYN,SAASS,eAAeX,y7VCrB9C,MAAM9F,GAAW,CACbnT,KAAM,WACN6Z,KAAKC,EAAQhQ,EAAMjB,GACf,MAAM7C,EAwCd,SAAkBA,GACd,OAAI7B,EAAE,QAAC3D,QAAQwF,GACJ,CAACmN,SAAUnN,GACX7B,EAAE,QAAC/D,OAAO4F,GACV,CAACoD,QAASpD,GACV7B,EAAE,QAACiT,MAAMpR,GACT,CAACmN,UAAU,GACXhP,EAAE,QAACyD,SAAS5B,GACZ,CAAC6N,UAAW7N,GACX7B,EAAAA,QAAG7D,OAAO0F,GAGXA,EAFA,GAlDK+T,CAASD,EAAOE,YAC5B,IAAIC,OAAS5X,EACb,IAAqB,IAAjB2D,EAAImN,SACJ2G,EAAOI,YACPrR,EAAI0J,mBAAmB,CAACzI,EAAKD,YAC1B,CACH,MAAMqI,EAAW,CACbiB,UAAU,EACVU,UAAUrP,IACN2V,KACQhW,EAAE,QAACC,MAAMI,IAErBsP,QAAS,CAAC,WAAY,eACnB9N,GAEDmU,EAAgBA,KAAM,IAAAC,EACxB,MAAM9P,EAAoC8P,QAA/BA,EAAGtQ,EAAKuQ,OAAOnE,QAAQC,gBAApBiE,IAA4BA,OAA5BA,EAAAA,EAA8B7Y,MAC5C,GAAI0Y,IAAW3P,EAIf,GADA2P,EAAS3P,EACJtE,EAAIoD,QAEF,CACH,MAAMkR,EAAQtU,EAAIoD,QAAQkR,MAAM,6BAC5BA,IACApI,EAAS9I,QAAUP,EAAI/F,EAAEwX,EAAM,GAAI,CAAChQ,MAAAA,UAJxC4H,EAAS9I,QAAUP,EAAI/F,EAAE,WAAY,CAACwH,MAAAA,KAAYA,GAA6B,OAApBzB,EAAI0R,YAAuB,eAAiB,SAQ/GJ,IACAL,EAAOU,UAAUtI,SAAW,CAACA,GAEjCrJ,EAAI4R,KAAK3Q,IAEbtI,SAAS+U,GACLpD,GAAS0G,QAAQtD,KC/BzB,SAASmE,GAAQC,GACbA,EAAWC,eAAetK,IAE1Bb,GAAWrE,QAAQyP,IACfF,EAAWE,UAAUA,EAAU7a,KAAM6a,KAGzCF,EAAWG,SAAS3H,IAEpBxD,GAAQvE,QAAS2P,IACbJ,EAAWI,OAAOA,KAGlBC,EAAAA,MAAM9a,QACN8a,EAAKA,MAAC9a,MAAMS,WAAa,CACrBD,KAAM,CAACN,OAAQmF,OAAQ3E,MAAON,OAAQE,QAASoH,UAC/CqC,QAAS,KCxBfgR,MAAAA,GD8BKC,UAAkB,CACrBC,GAAI,iBACJC,QAAS,UACTnJ,QAAAA,GACAoF,UAAAA,GACAqD,QAAAA,GACAW,UAAU,EACVC,MAAO,CACHC,OAAQ,CAAC,MAAO,QAChB/O,IAAK,CAAC,QAAS,WCrCL,oBAAXgP,SACPA,OAAOC,iBAAmBR,IAGhBA,GAAiBrL,MCLxB,MAAM8L,GAAW,CAAC,OAAQ,OAAQ,SAAU,aAAc,QAAS,OAAQ,SAAU,SAAU,UAAW,SAAU,UAAW,OAAQ,OAAQ,SAAU,SAAU,SAAU,OAAQ,YAAa,MAAO,aAAc,WAAY,UAAW,YAAa,QAAS,aAE9PC,GAAa,CAAC,WAAY,WAAY,WAEtCC,GAAc,CAAC,SAAU,OAAQ,eAEvC,SAASN,KACZ,MAAO,IAAII,MAAaG,EAAAA,eAAgBC,EAAAA,gBAAiBC,EAAAA,mBAAoBJ,MAAeC,ICCzF,SAASI,GAAWza,EAAO0a,GAC9B,MAAO,CACH1a,MAAAA,EACAya,YAAY,EACZE,cAAc,EACdD,WAAYA,GAKb,SAASE,GAASrS,EAAMsS,GAC3B,OAAOzP,GAAU,CAAC7C,GAAOsS,IAAQ,GAAO,GAGrC,SAASzP,GAAUyI,EAAOgH,GAC7B,OAAO5Q,EAAAA,QAAW,GAAI,IAAI4J,GAAQgH,IAAQ,GAGvC,SAASC,GAAUvS,EAAMwS,GAE5B,OADArJ,UAAWrS,MAAMsB,QAAQoa,GAASA,EAAQ,CAACA,GAAQxS,EAAM,CAAC6H,MAAOgK,GAAYJ,OAAQK,KAC9E9R,EAGJ,SAASyS,GAAQzS,GACpB,MAAM0S,EAAIrY,UAAGyD,SAASkC,EAAKyS,SAAWzS,EAAKyS,UAAYzS,EAIvD,OAHK0S,EAAE9b,OACH8b,EAAE9b,KAAO,SAEN8b,EAaJ,SAASC,GAAUC,EAAMC,GAC5Brc,OAAOsc,iBAAiBF,EAAMpc,OAAO6K,KAAKwR,GAAOE,OAAO,CAACC,EAAS1Q,KAC9D0Q,EAAQ1Q,GAAK,CACT2Q,IAAGA,IACQJ,EAAMvQ,MAGd0Q,GACR,KAGA,SAASE,GAAMlT,GAClB,OAAOA,EAAKuQ,SAAWvQ,EAAKmT,WAAanT,EAAKmT,WAAW5C,OAAS,MAG/D,SAAStB,GAAOmE,EAAIpK,GACvB,IACIA,EAAMoK,IACR,MAAO9Z,GACL+Z,EAAQA,SAAC/Z,GAEb,OAAO0P,EAGJ,SAASsK,KACZ,MAAMC,EAAU,GACVC,EAAY7b,GAAMA,GAAK,UAE7B,MAAO,CACHiT,QAAQ6I,EAAMC,GACVD,EAAOD,EAASC,IACXC,GAAS5c,MAAMsB,QAAQsb,IAASA,EAAK7a,SAErC0a,EAAQE,KAAOF,EAAQE,GAAQ,IACpCF,EAAQE,GAAMlQ,KAAKmQ,KAEvBvH,QAAQsH,EAAMvX,GACVuX,EAAOD,EAASC,GAChB,MAAMnY,EAAW,GAejB,OAdCiY,EAAQE,IAAS,IAAInS,QAAQ8R,IAC1B,GAAItc,MAAMsB,QAAQgb,GACd9X,EAASiI,QAAQ6P,QACd,GAAI/Y,EAAE,QAACyD,SAASsV,GAAK,CACxB,MAAMhU,EAAMgU,KAAOlX,GAAO,IACtBpF,MAAMsB,QAAQgH,GACd9D,EAASiI,QAAQnE,GAEjB9D,EAASiI,KAAKnE,QAEV/E,EAAAA,QAAGiT,MAAM8F,IACjB9X,EAASiI,KAAK6P,KAGf9X,GAEXyP,WACI,MAAM4I,EAAQ,GAMd,OALAnd,OAAO6K,KAAKkS,GAASjS,QAAQgB,IACzBqR,EAAMrR,GAAK,IAAImK,IACJ9S,KAAKwS,QAAQ7J,EAAGmK,KAGxBkH,GAEXhJ,QAAQ8I,IACJA,EAAOD,EAASC,GACTF,EAAQE,GAAQF,EAAQE,GAAM5a,OAAS,GAElD+a,SAASC,GACL,IAAKA,EAAK,OAAOla,KACjB,MAAMga,EAAQtZ,UAAGyD,SAAS+V,EAAI9I,UAAY8I,EAAI9I,WAAa8I,EAS3D,OARI/c,MAAMsB,QAAQyb,IAAQC,EAAOA,QAACD,GAC9Bla,KAAKiR,aAAQrS,EAAW,IAAMsb,GAE9Brd,OAAO6K,KAAKsS,GAAOrS,QAAQgB,IACvB3I,KAAKiR,QAAQtI,EAAGqR,EAAMrR,MAIvB3I,OAKZ,SAASoa,GAAQ/T,GACpB,MAAMsG,EAAO,IAAKtG,EAAK5J,OAAS,IAsBhC,OApBAI,OAAO6K,KAAKrB,EAAKmK,IAAM,IAAI7I,QAAQgB,IAC3BA,EAAEe,QAAQ,KAAO,IACjBf,EAAI0R,EAAAA,QAAO1R,IAEf,MAAMpM,EAAO,KAAK+d,EAAKA,MAAC3R,GACpBxL,MAAMsB,QAAQkO,EAAKpQ,IACnBoQ,EAAKpQ,GAAQ,IAAIoQ,EAAKpQ,GAAO8J,EAAKmK,GAAG7H,IAC9BgE,EAAKpQ,GACZoQ,EAAKpQ,GAAQ,CAACoQ,EAAKpQ,GAAO8J,EAAKmK,GAAG7H,IAElCgE,EAAKpQ,GAAQ8J,EAAKmK,GAAG7H,KAG7BgE,EAAK5D,IAAM1C,EAAK0C,IAChB4D,EAAKhP,IAAM0I,EAAK1I,IAChBgP,EAAK5M,MAAQsG,EAAKtG,MAClB4M,EAAKqC,GAAK3I,EAAK2I,GACfrC,EAAKgE,MAAQtK,EAAKsK,MACdhE,EAAKmN,aAAanN,EAAKmN,KAEpBnN,EAGJ,SAAS4N,GAAe9S,EAAG+S,GAE9B,OADA3d,OAAO0d,eAAe9S,EAAG+S,GAClB/S,EAIX,MAAMgT,GAAaA,CAACpQ,EAAGqQ,IACF,iBAANrQ,EACA1N,OAAO+d,GACM,iBAANrQ,EACPvI,OAAO4Y,GAEXA,EAGEC,GAAY,CACrBC,KAAMA,CAACvQ,EAAGqQ,IACC9R,KAAKC,UAAUwB,KAAOzB,KAAKC,UAAU4R,GAAWpQ,EAAGqQ,IAE9DG,KAAMA,CAACxQ,EAAGqQ,KACEC,GAAU,MAAMtQ,EAAGqQ,GAE/BI,IAAKA,CAACzQ,EAAGqQ,IACErQ,EAAIqQ,EAEfK,KAAMA,CAAC1Q,EAAGqQ,IACCrQ,GAAKqQ,EAEhBM,IAAKA,CAAC3Q,EAAGqQ,IACErQ,EAAIqQ,EAEfO,KAAMA,CAAC5Q,EAAGqQ,IACCrQ,GAAKqQ,EAEhBlK,GAAEA,CAACnG,EAAGqQ,IACKrQ,GAAKA,EAAEX,SAAWW,EAAEX,QAAQ+Q,GAAWpQ,EAAE,GAAIqQ,KAAO,EAE/DQ,MAAKA,CAAC7Q,EAAGqQ,KACGC,GAAUnK,GAAGnG,EAAGqQ,GAE5BS,GAAEA,CAAC9Q,EAAGqQ,IACKA,GAAKA,EAAEhR,SAAWgR,EAAEhR,QAAQW,IAAM,EAE7C+Q,MAAKA,CAAC/Q,EAAGqQ,KACGC,GAAUQ,GAAG9Q,EAAGqQ,GAE5BW,QAAOA,CAAChR,EAAGqQ,IACArQ,EAAIqQ,EAAE,IAAMrQ,EAAIqQ,EAAE,GAE7BY,WAAUA,CAACjR,EAAGqQ,IACHrQ,EAAIqQ,EAAE,IAAMrQ,EAAIqQ,EAAE,GAE7B/Z,MAAM0J,GACK3J,EAAE,QAACC,MAAM0J,GAEpBkR,SAASlR,IACG3J,EAAE,QAACC,MAAM0J,GAErB8E,QAAOA,CAAC9E,EAAGqQ,IACA,IAAItL,OAAOsL,EAAG,KAAKc,KAAKnR,IAIhC,SAASoR,GAAQlZ,EAAKwB,GAMzB,OALC5G,MAAMsB,QAAQsF,GAASA,GAASA,GAAS,IAAIA,MAAM,MAAM4D,QAAQgB,IACnD,MAAPpG,IACAA,EAAMA,EAAIoG,MAGXpG,EAeJ,SAASmZ,GAAyBtV,GACrC,IAAIuV,EAAQvV,EAAMrC,MAAM,KACpB6X,EAAa,GACbC,EAAmB,GAWvB,OATAF,EAAMhU,QAAQ,CAACmU,EAAMvS,KACH,IAAVA,EACAsS,EAAmBC,EAEnBD,GAAoB,IAAMC,EAE9BF,EAAWhS,KAAKiS,KAGbD,EAAWzc,KAAK,QChP3B,MAAM4c,GAAiBA,CAACpR,EAAIqR,KACxB,GAAKrR,GAAMA,IAAOqR,EAGlB,OAAIrR,EAAGlO,MAAMG,iBACF+N,EAAGlO,MAAMG,iBAEhB+N,EAAGqR,OACID,GAAepR,EAAGqR,OAAQA,QADrC,GAKW,SAASC,GAAY/E,EAAYlL,EAAYkQ,GACxD,OAAO5f,kBAAgB,CACnBC,KAAM,cAAgB2a,EAAWU,SAAW,SAAW,IACvD5L,WAAAA,EACAkQ,WAAAA,EACAzf,MAAO,CACH4J,KAAM,CACFpJ,KAAME,MACNuS,UAAU,EACVlJ,QAASA,IAAM,IAEnBnE,OAAQ,CACJpF,KAAMJ,OACN2J,QAASA,KAAO,KAEpB6E,aAActO,QACdof,OAAQ,CAACxf,OAAQE,QACjBK,WAAYL,OACZC,SAAU,CACNG,KAAMF,QACNyJ,aAAS5H,GAEbmS,QAAS,CACL9T,KAAMF,QACNyJ,aAAS5H,GAEb2K,MAAO,CAAC5M,OAAQmF,QAChBsD,IAAKvI,OACLuf,OAAQ,CAACzf,OAAQE,QACjBwC,EAAG8E,SACH5H,KAAMI,OACN2N,QAAS,CACLrN,KAAMF,QACNyJ,SAAS,GAEb4E,MAAOrO,SAEXQ,MAAO,CAAC,aAAc,oBAAqB,UAAW,SAAU,QAAS,SAAU,aAAc,UAAW,cAAe,eAAgB,OAAQ,SAAU,eAAgB,SAAU,sBAAuB,gBAAiB,WAC/NsC,SACI,OAAOG,KAAKqc,GAAGxc,UAEnBrC,MAAMf,GACF,MAAMkO,EAAK2R,EAAAA,qBACXC,UAAQ,WAAY5R,GACpB,MAAMqR,EAAS3F,EAAAA,OAAO,WAAY,MAClC,IAAImG,EAAMR,EAEV,GAAIA,EACA,KAAOQ,EAAIC,WAAWT,QAClBQ,EAAMA,EAAIC,WAAWT,YAGzBQ,EAAM7R,EAGV,MAAMtE,KAACA,EAAInJ,WAAEA,EAAUoN,QAAEA,EAAOc,MAAEA,GAASsR,EAAAA,OAAOjgB,GAE5C8H,EAAOoY,EAAAA,SAAS,CAClBC,UAAW,GACXC,WAAW,EACX9H,QAAQ,EACR+H,OAAQ,EACRC,WAAY,IAAI1W,EAAKvI,OAAS,IAC9Bkf,YAAapU,KAAKC,UAAU3L,EAAWY,OAAS,MAG9Cue,EAAK,IAAInF,EAAWvM,GACpBsS,EAAOZ,EAAGjX,MAEV8X,EAAS9R,EAAMtN,MAkCrB,IAAIqf,EAAU,KAEdC,EAAAA,cAAc,KACVC,EAAAA,YAAY,KACR,IAAIC,EAAU,GACd,MAAMC,EAAe9gB,EAAM4F,QAAU5F,EAAM4F,OAAOkb,aAAgB,GAClE1gB,OAAO6K,KAAK6V,GAAa5V,QAAQgB,IAC7B,IAAI6U,EAAS,GACbD,EAAY5U,GAAGgI,OAAS9T,OAAO6K,KAAK6V,EAAY5U,GAAGgI,OAAOhJ,QAAQoB,IAC9DyU,GAAUC,EAAM,QAAC1U,GAAO,IAAMwU,EAAY5U,GAAGgI,MAAM5H,GAAO,MAE1DwU,EAAY5U,GAAG2U,UACfE,GAAUD,EAAY5U,GAAG2U,QAAU,KAEnCE,IACAF,GAAW,IAAI3U,KAAK6U,QAGxB/gB,EAAM4F,QAAU5F,EAAM4F,OAAOsO,QAC7B2M,GAAW7gB,EAAM4F,OAAOsO,OAEvBwM,IACDA,EAAUzH,SAASG,cAAc,SACjCsH,EAAQlgB,KAAO,WACfyY,SAASC,KAAKK,YAAYmH,IAE9BA,EAAQO,UAAYJ,GAAW,OAIvC,MAAMK,EAAeC,EAAAA,QAAS,KAC1BvB,EAAGwB,IAAI3c,MAAM,uBACd,KAEG4c,EAAiBF,EAAAA,SAAS,WAC5BvB,EAAGwB,IAAI3c,MAAM,0BACd,KAEG6c,EAAYH,EAAAA,QAAS,KACvBvB,EAAGwB,IAAI3c,MAAM,oBACd,KAEG8c,EAAe5X,IACjBiW,EAAGwB,IAAI3c,MAAM,gBAAkBkF,IAqEnC,OAlEA6X,EAAAA,UAAU,KACFjC,IACAiB,EAAKT,IAAIqB,IAAIK,IAAI,kBAAmBP,GACpCV,EAAKT,IAAIqB,IAAIK,IAAI,SAAUF,IAE3Bf,IAASA,EAAKkB,OACdlB,EAAKkB,MAAMN,IAAIK,IAAI,uBAAwBJ,GAE/CzB,EAAGpb,YAGPmd,EAAAA,gBAAgB,KACRpC,IACAiB,EAAKT,IAAIqB,IAAIQ,KAAK,kBAAmBV,GACrCV,EAAKT,IAAIqB,IAAIQ,KAAK,SAAUL,IAE5Bf,IAASA,EAAKkB,OACdlB,EAAKkB,MAAMN,IAAIQ,KAAK,uBAAwBP,GA9ElCQ,MACd,MAAMjI,EAAS0F,GAAepR,EAAIqR,GAClC,GAAI3F,EACA,GAAI6G,EAAQ,CACR,MAAM3I,EAAM1P,EAAO,QAACwR,EAAOkI,cACrBC,EAAMjK,EAAI7K,QAAQuT,GACpBuB,GAAO,GACPjK,EAAIzK,OAAO0U,EAAK,QAGpBnI,EAAO/L,WAsEfgU,GACA/Z,EAAKsY,WAAY,EACjBR,EAAGoC,UACHtB,IAAYA,EAAQuB,YAAcvB,EAAQwB,gBAAkBjJ,SAASC,KAAKiJ,YAAYzB,KAG1F0B,EAAAA,UAAU,KACNxC,EAAGyC,YAxGYC,MACf,GAAI/C,EAAQ,CACR,MAAM3F,EAAS0F,GAAepR,EAAIqR,GAClC,GAAI3F,EAAQ,CACR,IAAI9B,EACA2I,GACA3I,EAAM1P,EAAO,QAACwR,EAAOkI,cACrBhK,EAAI3K,KAAKqT,IAGT1I,EAAM0I,EAEV5G,EAAO/L,QAAQiK,MA+F3BwK,GAEAhhB,QAAM,IAAMtB,EAAM4F,OAAQ,KACtBga,EAAG2C,cACH/B,EAAKgC,WACN,CAAC3c,MAAM,EAAM4c,MAAO,SAEvBnhB,EAAAA,MAAM,IAAM,IAAIsI,EAAKvI,OAASE,IACtBqe,EAAGvL,QAAQqO,gBAAkBnhB,EAAEkB,SAAWqF,EAAKwY,WAAW7d,QAAUlB,EAAEohB,MAAMre,GAAKwD,EAAKwY,WAAWrT,QAAQ3I,IAAM,KACnHsb,EAAGvL,QAAQuO,mBACXhD,EAAGvL,QAAQwO,WAAWjZ,EAAKvI,OAC3B6M,EAAG8R,WAAWM,gBAGlBhf,EAAKA,MAAC,IAAM,CAACtB,EAAMK,SAAUL,EAAMsU,SAAU,KACzCkM,EAAKgC,YAGTlhB,EAAKA,MAACb,EAAac,IACXuhB,EAAAA,OAAOvhB,GAAK,MAAQuG,EAAKyY,cACzBC,EAAKuC,OAAOC,gBACZxC,EAAKhU,WAAWjL,GAAK,IAErBif,EAAKjV,SAAShK,GAAK,MAExB,CAACsE,MAAM,EAAM4c,MAAO,SAEvBnhB,QAAM,IAAMtB,EAAM8M,MAAO,KACrB0T,EAAKhU,WAAW,IAChBoT,EAAGvL,QAAQuO,mBACX7V,EAAAA,SAAS,KACLA,EAAAA,SAAS,KACLyT,EAAKnO,0BAGd,CAACoQ,MAAO,SAEJ,CACH7C,GAAI/U,EAAOA,QAAC+U,GACZL,OAAQA,EAAS1U,UAAQ0U,GAAUA,EACnCQ,IAAKlV,EAAOA,QAACkV,GACbS,KAAM3V,EAAOA,QAAC2V,MACXP,EAAAA,OAAOnY,GACVwX,eAAgBA,IAAMA,GAAepR,EAAIqR,GACzCiD,YACM1a,EAAKuY,QAEXC,aACIxY,EAAKwY,WAAa,IAAI1W,EAAKvI,OAAS,KAExCkf,YAAYlf,GACR,GAAIyG,EAAKsY,UAAW,OACpB,MAAM6C,EAAOH,SAAOzhB,GAChByG,EAAKyY,cAAgB0C,IAGzBnb,EAAKyY,YAAc0C,EACnB/U,EAAG5L,KAAK,oBAAqBjB,GAC7B0L,EAAAA,SAAS,KACLuU,IACK/B,EAGO1R,EAAQxM,OAChBggB,KAHAH,IACAG,WAQpB/S,UACI,MAAMJ,EAAK2R,EAAAA,qBACX3R,EAAG5L,KAAK,aAAc4L,EAAG8R,WAAWQ,MACpCtS,EAAG8R,WAAWJ,GAAGsD,UCzQtB,SAAStT,GAAe9P,EAAMojB,GACjC,MAAO,CAAC9Y,EAAOT,EAAOtI,EAAOrB,EAAQ,MACjC,MAAM0P,EAAQ,IAAIyT,GAAQrjB,EAAMsK,EAAOT,EAAOtI,EAAOrB,GAKrD,OAJIkjB,IACIjf,UAAGyD,SAASwb,GAAOA,EAAKxT,GACvBA,EAAM1P,MAAMkjB,IAEdxT,GAIA,SAASyT,GAAQ3iB,EAAM4J,EAAOT,EAAOtI,EAAOrB,GACvDuD,KAAK6f,MAAQvW,UAvBN,CACH7M,MAAO,GACP+T,GAAI,GACJlP,QAAS,GACTK,SAAU,GACVyK,QAAQ,EACR0T,SAAS,EACThiB,WAAOc,GAgBqB,CAAC3B,KAAAA,EAAM4J,MAAAA,EAAOT,MAAAA,EAAOtI,MAAAA,EAAOrB,MAAOA,GAAS,KAC5EuD,KAAK+f,MAAQ/f,KAAKwQ,GAsBf,SAASwP,GAAYnI,GACxBA,EAAMlQ,QAAQpL,IACVqjB,GAAQK,UAAU1jB,GAAQ,SAAUwM,GAEhC,OADA6P,GAAU5Y,KAAK6f,MAAO,CAAC7W,CAACzM,GAAO2jB,UAAUhhB,OAAS,EAAI6J,EAAM,CAACC,CAACD,GAAMmX,UAAU,MACvElgB,QAvBnBsJ,EAAAA,QAAOsW,GAAQK,UAAW,CACtBnH,UACI,OAAO9Y,KAAK6f,OAEhBM,QAAQpX,EAAKjL,GAET,OADAsiB,EAAAA,KAAKpgB,KAAK6f,MAAO9W,EAAKjL,GACfkC,MAEXqgB,WAAWja,GAEP,OADApG,KAAK6f,MAAMQ,WAAaja,EACjBpG,MAEXsgB,SACI,MAAMC,EAAQ,IAAIvgB,KAAKwgB,YAEvB,OADAD,EAAMV,MAAQnH,GAAS1Y,KAAK6f,OACrBU,KAafP,GAAYnI,MC5DZ,MAAM4I,GAAcpU,GAAe,IAE5B,SAASqU,GAAOzjB,EAAMmJ,EAAOS,GAChC,IAAI8Z,EAAOF,GAAY,GAAIra,GAG3B,OAFAua,EAAKd,MAAM5iB,KAAOA,EAClB0jB,EAAKd,MAAMhZ,MAAQA,EACZ8Z,EAGI,SAASC,KACpB,MAAO,CACHF,OAAAA,GACAG,QAASxU,ICCjB,SAASyU,GAAQC,GACb,MAAMrf,EAAOqf,EAAIC,cAAgBD,EAAIE,SACrC,IAAKvf,EACD,OAAOA,EAGX,IACI,OAAOkH,KAAK5B,MAAMtF,GACpB,MAAO/B,GACL,OAAO+B,GAIA,SAAS2D,GAAMhD,GAC1B,GAA8B,oBAAnB6e,eACP,OAGJ,MAAMH,EAAM,IAAIG,eAChB,IAsCIrZ,EAtCAzD,EAAS/B,EAAO+B,QAAU,GAS9B,GAPI2c,EAAI1T,QAAUhL,EAAO8e,YACrBJ,EAAI1T,OAAO+T,iBAAiB,WAAaC,IACrCA,EAAIC,QAAUD,EAAIhZ,MAAQ,EAAKgZ,EAAIE,OAASF,EAAIhZ,MAAS,IAAM,EAC/DhG,EAAO8e,WAAWE,KAItBhf,EAAOmf,MAAO,CACd,MAAMA,EAAQ9gB,EAAAA,QAAG/D,OAAO0F,EAAOmf,OAASnf,EAAOmf,MAAQ3kB,OAAO6K,KAAKrF,EAAOmf,OAAOpI,OAAO,CAACqI,EAAK1Y,KAC1F0Y,EAAI1Y,GAA8B,OAAtB1G,EAAOmf,MAAMzY,SAAuCnK,IAAtByD,EAAOmf,MAAMzY,GAAsB,GAAK1G,EAAOmf,MAAMzY,GACxF0Y,GACR,IACGC,EAAc,IAAIC,gBAAgBH,GAAOI,WAC3CF,IACItd,EAAOyd,SAAS,KAChBzd,GAAU,IAAIsd,EAEdtd,GAAU,IAAIsd,GAK1BX,EAAIe,QAAU,SAAeniB,GACzB0C,EAAOqC,QAAQ/E,IAGnBohB,EAAIgB,OAAS,WACT,GAAIhB,EAAI5b,OAAS,KAAO4b,EAAI5b,QAAU,IAClC,OAAO9C,EAAOqC,QAzD1B,SAAkBN,EAAQ/B,EAAQ0e,GAC9B,MAAMiB,EAAM,WAAW5d,KAAU2c,EAAI5b,UAC/BmL,EAAM,IAAI2R,MAAMD,GAGtB,OAFA1R,EAAInL,OAAS4b,EAAI5b,OACjBmL,EAAI5M,IAAMU,EACHkM,EAoDuB4R,CAAS9d,EAAQ/B,EAAQ0e,GAAMD,GAAQC,IAGjE1e,EAAOoC,UAAUqc,GAAQC,KAG7BA,EAAIzhB,KAAK+C,EAAOiC,QAAU,MAAOF,GAAQ,IAGrC/B,EAAOkC,MAAQlC,EAAOoB,QAClBpB,EAAOoB,MAAkD,UAAzCpB,EAAOiD,UAAY,IAAI6c,eACvCta,EAAW,IAAIua,SACfvlB,OAAO6K,KAAKrF,EAAOkC,MAAQ,IAAI7F,IAAIqK,IAC/BlB,EAASwa,OAAOtZ,EAAK1G,EAAOkC,KAAKwE,QAGrClB,EAAWe,KAAKC,UAAUxG,EAAOkC,MAAQ,IACzCwc,EAAIuB,iBAAiB,eAAgB,sBAI1CjgB,EAAOoB,MACNoE,EAASwa,OAAOhgB,EAAOkgB,SAAUlgB,EAAOoB,KAAMpB,EAAOoB,KAAKlH,MAG1D8F,EAAOmgB,iBAAmB,oBAAqBzB,IAC/CA,EAAIyB,iBAAkB,GAG1B,MAAMne,EAAUhC,EAAOgC,SAAW,GAElCxH,OAAO6K,KAAKrD,GAASsD,QAAQpG,IACJ,MAAjB8C,EAAQ9C,IACRwf,EAAIuB,iBAAiB/gB,EAAM8C,EAAQ9C,MAG3Cwf,EAAI0B,KAAK5a,GAIN,SAAS6a,GAAWlD,EAAQmD,EAAQvd,GACvC,OAAO,IAAIsJ,QAAQ,CAACE,EAASC,MACxB8T,GAAUtd,IAAO,IACXma,EACH/a,UAAUgB,GACN,IAAIgU,EAAM1Y,GAAMA,EAChB,MAAMiG,EAAQ4b,EAAAA,QAAQpD,EAAOxY,OACzBtG,EAAE,QAACyD,SAAS6C,GACZyS,EAAKzS,EACEA,GAAStG,EAAAA,QAAG/D,OAAOqK,KAC1ByS,EAAM1Y,GACK0a,GAAQ1a,EAAGiG,IAG1B+C,YAAU0P,EAAGhU,EAAK+Z,EAAOqD,WAAYzd,IAAMI,KAAKC,IAC5CmJ,EAAQnJ,MAGhBf,QAAQ4L,GACJzB,EAAOyB,QCjHvB,SAASwS,GAAKhlB,GACV,OAAOoK,EAAAA,SAASpK,GCNpB,IAAIkR,GAAK,EACM,SAAS+T,GAAOC,GAC3B1Z,EAAAA,QAAOtJ,KAAM,CACT8Q,QAASkS,EACT3G,GAAI2G,EAAO3G,GACX1R,GAAIqY,EAAOrY,GACXmJ,SAAUkP,EAAOlP,SACjBvH,MAAO,IAAIyW,EAAO3G,GAAG4G,WAAWD,GAChCE,OAAO,EACPC,SAAU,KACVnU,GAAIA,OAGRgK,GAAUhZ,KAAM,CACZsB,QAAOA,IACI0hB,EAAO1hB,QAElB8F,KAAIA,IACO4b,EAAO5b,OAItBpH,KAAKojB,YACLpjB,KAAKqjB,cC1BM,SAAkBN,GAC7BzZ,EAAM,QAACyZ,EAAO9C,UAAW,CACrBmD,YACIpjB,KAAKsjB,iBAETC,WAAWjX,GACHA,EAAIjG,KAAKqC,QAGR1I,KAAK0I,MAAM4D,EAAI0C,OAMW,IAA3BhP,KAAK0I,MAAM4D,EAAI0C,IAAIwU,KAAgBxjB,KAAK0I,MAAM4D,EAAI0C,IAAIgN,SACtDhc,KAAK8Q,QAAQmO,UAEbjf,KAAK0I,MAAM4D,EAAI0C,IAAIgN,QACnBhc,KAAKujB,WAAWvjB,KAAK0I,MAAM4D,EAAI0C,IAAIgN,QAEvChc,KAAK0I,MAAM4D,EAAI0C,IAAM,MAXb1C,EAAI0P,QACJhc,KAAKujB,WAAWjX,EAAI0P,UAYhCsH,gBACItjB,KAAK0I,MAAQ,IAEjB+a,SAASnX,EAAKoX,EAAO1H,GACjBhc,KAAK0I,MAAM4D,EAAI0C,IAAM,CACjB0U,MAAAA,EACAF,KAAK,EACLxH,OAAAA,EACAlC,KAAMxN,EAAIjG,KAAKyT,OAGvB6J,SAASrX,GACL,MAAM5D,EAAQ1I,KAAK0I,MAAM4D,EAAI0C,IAC7B,GAAItG,EAEA,OADAA,EAAM8a,KAAM,EACL9a,EAAMgb,SDT7BE,CAASb,IEvBM,SAAmBA,GAC9BzZ,EAAM,QAACyZ,EAAO9C,UAAW,CACrBoD,aACIrjB,KAAK6jB,YAAc,IAEvBC,YAAYxX,GACR,MAAMyX,EAAOpZ,IACT,GAAIA,EAAI,CACJ,IAAImP,OAAOlb,EAOX,OANI0N,EAAIjG,KAAKD,QACT0T,EAAOnP,EAAGqP,MAAM,SAAWyD,EAAMA,OAACnR,EAAIjG,KAAKD,SAAWuE,EAAGqP,MAAM,SAAW1N,EAAIjG,KAAKD,QAElF0T,IACDA,EAAOnP,EAAGqP,MAAM,QAAUyD,EAAAA,OAAOnR,EAAIrP,QAAU0N,EAAGqP,MAAM,QAAU1N,EAAIrP,OAEtE6c,GAGGiK,EAAIpZ,EAAG8R,WAAWT,UAGjC,OAAO+H,EAAI/jB,KAAK2K,KAEpB9K,SAEI,IAAKG,KAAK2K,GAAG8R,WAAW1H,OACpB,OAEJ/U,KAAK8T,SAASlD,eACd,MAAMgJ,EAAUD,KAKhB,OAJA3Z,KAAKoH,KAAKO,QAASgB,IACf3I,KAAKgkB,WAAWpK,EAAS5Z,KAAK8Q,QAAQmT,KAAKtb,MAGxC3I,KAAK8T,SAASjU,OAAO+Z,IAEhCoK,WAAWpK,EAAStN,EAAK0P,GACrB,GAAIhc,KAAKkkB,WAAW5X,GAAM,CACtBA,EAAI6X,WACJnkB,KAAKokB,YAAY9X,GACjBA,EAAI+X,WACJ,MAAMrK,EAAQha,KAAKskB,eAAehY,EAAIiY,sBAAuBjY,GACvD+C,EAAM2K,EAAMxT,QAClB6I,GAAOuK,EAAQ3I,QAAQ3E,EAAIjG,KAAKyT,KAAM,IAAMzK,YACrC2K,EAAMxT,QACboT,EAAQK,SAASD,QAEjBJ,EAAQ3I,QAAQ3E,EAAIjG,KAAKyT,KAAM9Z,KAAKwkB,UAAUlY,EAAK0P,KAG3DoI,YAAY9X,GACEtM,KAAK8Q,QAAQxP,QAAQmjB,SAE1BzkB,KAAK6jB,YAAYvX,EAAIoY,YACtB1kB,KAAK6jB,YAAYvX,EAAIoY,UAAYlmB,EAAQA,SAAC,KACtC,MAAMmmB,EAAI3kB,KAAK8Q,QAAQxP,QAAQmjB,OAC/B,OAAO7L,GAAU,GAAI,CAAC+L,EAAE,MAAQA,EAAEne,SAAW,GAAIme,EAAErY,EAAIsY,aAAeD,EAAErY,EAAIrP,OAAS0nB,EAAErY,EAAIrP,OAAS,QAG5GqP,EAAIK,KAAOiM,GAAU,GAAI,CAAC5Y,KAAK6jB,YAAYvX,EAAIoY,UAAU5mB,MAAOwO,EAAIK,SAExEkY,WAAWvY,GACP,MAAMtJ,EAAMsJ,EAAIwY,YAAY,CAAC/b,IAAK,UAAWgc,OAAQzY,EAAIK,KAAKrL,QAAS+N,IAAK,KAC5E/C,EAAIK,KAAKrL,QAAU0B,EACfsJ,EAAIK,KAAKqY,WAAahiB,GACtBiiB,EAAOA,QAAC3Y,EAAIK,KAAML,EAAIK,KAAKqY,UAAWhiB,IAG9CiiB,QAAQ3Y,GACJ,MAAMhK,EAAOgK,EAAIK,KAAKrK,KACtBA,GAAQzF,OAAO6K,KAAKpF,GAAM8E,KAAK,CAACiD,EAAGqQ,IAAMrQ,EAAEnL,OAASwb,EAAExb,QAAU,EAAI,GAAGyI,QAAQrJ,IAC3E2mB,EAAOA,QAAC3Y,EAAIK,KAAMrO,EAAKgE,EAAKhE,OAGpC4mB,UAASA,CAACC,EAAM7Y,IACL5L,UAAG7D,OAAOsoB,GAAQvM,GAAU,CAACnc,MAAO,CAACG,iBAAkB0P,EAAIK,KAAKlQ,MAAMG,mBAAoBuoB,GAAQA,EAE7GC,YAAYhS,EAAI9G,EAAK+Y,GACjB,MAAM1Y,EAAOL,EAAI+Y,EAAO,OAAS,QACjC,MAAO,CAACrlB,KAAK+c,WAAW/c,KAAKklB,UAAUvY,EAAK2Y,OAAQhZ,IAAO8G,EAAIpT,KAAK+c,WAAW/c,KAAKklB,UAAUvY,EAAK4Y,OAAQjZ,MAE/GkZ,SAASjpB,EAAMU,GACX,MAAMgnB,EAAOjkB,KAAK8Q,QAAiB,UAAT7T,EAAmB,WAAa,WAAWV,GACrE,OAAO0nB,EAAOA,EAAKvlB,IAAI4N,GAAOtM,KAAKwkB,UAAUlY,EAAKA,EAAI0P,cAAWpd,GAErE4lB,UAAUlY,EAAK0P,GACX,IACI,GAAiB,WAAb1P,EAAIrP,KAAmB,OAC3B,MAAMoJ,EAAOiG,EAAIjG,KACjB,GAAIrG,KAAKkjB,QAAWljB,KAAK0I,MAAM4D,EAAI0C,KAAQhP,KAAK0I,MAAM4D,EAAI0C,IAAI8K,OAASzT,EAAKyT,KAAM,CAC9E,IAAI1G,EACJ9G,EAAI6X,WACJnkB,KAAKokB,YAAY9X,GACjBA,EAAI+X,WACJrkB,KAAK8T,SAASxF,SAAShC,GACvBtM,KAAKilB,QAAQ3Y,GACbtM,KAAK6kB,WAAWvY,GAChBtM,KAAKylB,QAAQnZ,GACb,IAAIK,EAAOL,EAAIK,KACfA,EAAKoE,WAA6B,MAAhBpE,EAAKoE,QAAkBpE,EAAKoE,QAAU/Q,KAAK8Q,QAAQC,SACrEpE,EAAKlQ,MAAMG,iBAAmBoD,KAAK0lB,WAAWpZ,GAC9C,IAAIqZ,GAA2B,IAAfhZ,EAAKjE,MACrB,MAAMqI,EAAUpE,EAAKoE,QAErB,GAAIpE,EAAKP,OAEL,YADApM,KAAKyjB,SAASnX,OAAK1N,EAAWod,GAGlC5I,EAAKA,IAAIwS,KACL,MAAMvP,EAAS,CACXhQ,KAAAA,EACAsG,KAAAA,EACAoE,QAAAA,EACA3L,IAAKpF,KAAK8Q,QAAQ1L,IAClBygB,MAAOlZ,EAAKkZ,OAAS,GACrBD,UAAAA,GAEAA,EAAU1mB,QAAUmH,EAAKyf,YACzBxQ,GAAO,IAAMjP,EAAKyf,WAAWzP,IAEjC,IAAI1U,EAAW,GACf,MAAMokB,EAAQzZ,EAAIiY,sBACdjY,EAAIgL,OAAOgN,eACX3iB,EAAW2K,EAAIgL,OAAOgN,eAAeyB,EAAOzZ,IACT,IAA5BA,EAAIgL,OAAO0O,eAClBrkB,EAAW3B,KAAKskB,eAAeyB,EAAOzZ,IAE1CzP,OAAO6K,KAAKiF,EAAKsZ,aAAe,IAAIte,QAAQoB,IACxCpH,EAASoH,GAAO,IAAI+J,KAChB,GAAIpS,EAAAA,QAAGyD,SAASwI,EAAKsZ,YAAYld,IAC7B,OAAOuM,GAAO,IAAM3I,EAAKsZ,YAAYld,MAAQ+J,IAEjD,MAAMzM,EAAOrG,KAAKklB,UAAUvY,EAAKsZ,YAAYld,GAAMuD,GACnD,OAAOtM,KAAK+c,WAAW1W,MAG/B,MAAMyT,EAAO9Z,KAAK8jB,YAAYxX,GAC9B,IAAI4Z,EA2BJ,OA1BIpM,GACAzD,EAAO1U,SAAWA,EAClBukB,EAAMpM,EAAKzD,IAEX6P,EAAMnV,EAAUzE,EAAIgL,OAAOvG,QAAQ+R,EAAIA,KAACnhB,GAAW2K,GAAOA,EAAIgL,OAAOzX,OAAOijB,EAAIA,KAACnhB,GAAW2K,GAEhG4Z,EAAMlmB,KAAKolB,YAAYc,EAAK5Z,IACpBA,EAAIxD,OAASpI,EAAE,QAACiT,MAAMhH,EAAKuF,UAA6B,IAAhBvF,EAAKuF,SACjDlS,KAAKqc,GAAG8J,iBAAiB,aAAc7Z,GACvC4Z,EAAMlmB,KAAK8T,SAASxC,SAAShF,EAAK4Z,IAElC5Z,EAAI8Z,OAEAF,EADA/oB,MAAMsB,QAAQynB,GACRA,EAAIxnB,IAAIqC,GACLA,GAAMA,EAAEslB,YAGNrmB,KAAKomB,KAAKrlB,GAFNA,GAKTf,KAAKomB,KAAKF,IAGxBP,GAAa3lB,KAAKyjB,SAASnX,EAAK,IACrBtM,KAAKsmB,OAAOJ,GACpBlK,GACIkK,GAEXlmB,KAAKyjB,SAASnX,EAAK8G,EAAI4I,GAE3B,MAAO,IAAIlJ,KACP,MAAMpK,EAAQ1I,KAAK2jB,SAASrX,GAC5B,GAAI5D,EACA,OAAOA,KAASoK,GACb,GAAI9S,KAAK0I,MAAM4D,EAAI0C,IACtB,OAEJ,MAAMkX,EAAMlmB,KAAKwkB,UAAUlY,EAAKA,EAAI0P,QACpC,OAAIkK,EACOA,SADX,GAIN,MAAOvmB,GAEL,YADA4mB,QAAQC,MAAM7mB,KAItBymB,KAAKhT,GACD,GAAIA,EAEA,OADAA,EAAG3W,MAAMsD,MAAQC,KAAK8R,WAAWsB,EAAG3W,MAAMsD,MAAO,WAC1CqT,GAGftB,WAAUA,CAAC2U,EAAQ3oB,IACXX,MAAMsB,QAAQgoB,IACdA,EAAO7c,KAAK9L,GAIT2oB,GAFIA,EAAS,CAACA,EAAQ3oB,GAASA,EAI1CwoB,OAAOlT,GAQH,OAPajW,MAAMsB,QAAQ2U,GAAMA,EAAK,CAACA,IAClCzL,QAAQ5G,IACLA,GAAKA,EAAEslB,aAAetlB,EAAEY,UAAkC,iBAAfZ,EAAEY,WAC7CZ,EAAEY,SAAS+kB,SAAU,EACrB1mB,KAAKsmB,OAAOvlB,EAAEY,aAGfyR,GAEXuT,cAAcra,GACV,OAAOA,EAAIK,KAAK0T,YAAc/T,EAAIgL,OAAO+I,YAAcrgB,KAAKqc,GAAGuK,YAAY5mB,KAAKuM,MAAMsa,SAASva,EAAIrP,QAAU+C,KAAKqc,GAAGuK,YAAYta,EAAIrP,OAAS+C,KAAKqc,GAAGuK,YAAYta,EAAIsY,aAAe,cAEzLV,WAAW5X,GACa,aAAbA,EAAIrP,MAAoC,aAAbqP,EAAIrP,KAE1CyoB,WAAWpZ,GACP,MAAMwa,EAAQ9mB,KAAK2K,GAAG8R,WACjBqK,EAAMlK,UAAUtQ,EAAI0C,MACrB8X,EAAMlK,UAAUtQ,EAAI0C,IAAM,CACtB5J,IAAKpF,KAAK8Q,QAAQ1L,IAClBiC,KAAMrH,KAAKqc,GAAGqE,OACdpW,QAASA,IACLtK,KAAK8Q,QAAQiO,WAAWzS,EAAKhC,IAEjCiU,WAAYA,IACDve,KAAK8Q,QAAQxG,QAAQgC,EAAI0C,IAEpCgL,MAAOA,IACIha,KAAK2K,GAAG8R,WAAWD,IAAIxC,MAElC+M,QAASA,IACE/mB,KAAK2K,GAAGsJ,KAAK3H,EAAIyF,SAE5BzQ,QAAS,GACTK,SAAU,GACVoP,SAAS,EACT/B,GAAI1C,EAAI0C,GACR5I,MAAOkG,EAAIlG,MACXC,KAAMiG,EAAIjG,KACVyC,MAAOwD,EAAIxD,MACXzJ,EAAGA,IAAIyT,IACI9S,KAAK8Q,QAAQ1L,IAAI/F,KAAKyT,GAEjCkK,YAAczY,IACVvE,KAAK8Q,QAAQkW,cAAc1a,EAAK/H,MAI5C,MAAM8R,EAASyQ,EAAMlK,UAAUtQ,EAAI0C,IAMnC,OALA1F,EAAAA,QAAO+M,EAAQ,CACXtF,QAASzE,EAAIK,KAAKoE,QAClBzP,QAASgL,EAAIK,KAAKrL,QAClBK,SAAU2K,EAAIiY,wBAEXlO,GAEXoP,QAAQnZ,GACJ,MAAM3O,IAACA,EAAGoL,IAAEA,EAAG1C,KAAEA,GAAQiG,EACzBtM,KAAK8T,SAASlH,UAAUN,GACxBA,EAAIgL,OAAO1K,UAAUN,GACrB,MAAM7P,EAAQ,CACV,CACIkB,IAAKA,EACLoL,IAAK1C,EAAK0C,KAAUA,EAAH,KACjB+Q,UAAMlb,EACN4R,GAAI,CACAyW,aAAe7T,IACXA,EAAGhS,GAAG8lB,SAAW5a,EAAIjG,KACrBrG,KAAKie,UAAU3R,EAAK8G,EAAGhS,KAE3B+lB,iBAAmB5iB,IACfvE,KAAK8Q,QAAQkW,cAAc1a,EAAK/H,IAEpC6iB,QAAUhmB,IACNkL,EAAI+a,SAAWjmB,EACXA,KACCA,EAAGkmB,KAAOlmB,GAAI8lB,SAAW5a,EAAIjG,UAOlD,GAAIiG,EAAIxD,MAAO,CACX,MAAMqa,EAAWnjB,KAAKmjB,UACS,IAA3BnjB,KAAK2K,GAAGlO,MAAMK,WACdwP,EAAIK,KAAKlQ,MAAMK,UAAW,GAE9B,MAAMsJ,EAAQpG,KAAK2mB,cAAcra,GAC3BuZ,EAAQ,CACV3R,SAAWpW,IACPqlB,GAAYA,EAAS7W,EAAIlG,MAAOtI,EAAOwO,EAAIjG,MAC3CrG,KAAKlB,QAAQwN,EAAKxO,IAEtBuiB,WAAYja,EACZtI,MAAOkC,KAAK8Q,QAAQyW,YAAYjb,IAEpC7P,EAAMmN,KAAK,CACP4G,GAAI,CACAxH,CAAC,UAAU5C,GAAUyf,EAAM3R,YACvB5H,EAAIK,KAAK6a,UAAY,CACrBxe,CAACsD,EAAIK,KAAK6a,WAAY,IAAMxnB,KAAKynB,YAAYnb,IAC7C,IAER7P,MAAO,CACHuM,CAAC5C,GAAQyf,EAAM/nB,SAGvBwO,EAAIK,KAAKkZ,MAAQA,EAGrB,OADArW,EAAAA,QAAW/S,EAAO6P,EAAIK,MACfL,EAAIK,MAEfsR,UAAU3R,EAAKlL,GACXkL,EAAIlL,GAAKpB,KAAK2K,GAAGsJ,KAAK3H,EAAI3O,MAAQyD,EAClCkL,EAAIgL,OAAOrW,QAAQqL,GACnBtM,KAAK8Q,QAAQ4W,OAAOpb,EAAK,WACzBtM,KAAK8Q,QAAQqC,WAAW7G,EAAK,YAEjCxN,QAAQwN,EAAKxO,GACLwO,EAAIK,KAAK6a,UACTxnB,KAAK8Q,QAAQ6W,YAAYrb,EAAKxO,GAGlCkC,KAAK8Q,QAAQhS,QAAQwN,EAAKxO,IAE9B2pB,YAAYnb,GACRtM,KAAK8Q,QAAQ9I,SAASsE,EAAKA,EAAIgL,OAAOsQ,QAAQtb,EAAIpP,WAAYoP,GAAMA,EAAIpP,aAE5EonB,eAAe3iB,EAAU2K,GACrB,IAAK5L,EAAAA,QAAGmnB,UAAUlmB,GAAW,MAAO,GACpC,MAAMiY,EAAUD,KAchB,OAbAhY,EAASjD,IAAIopB,IACT,GAAKA,EACL,OAAIpnB,EAAAA,QAAG/D,OAAOmrB,IAAUpnB,EAAE,QAACoB,OAAOgmB,GAAelO,EAAQ3I,QAAQ,KAAM,GAAG6W,GACtEA,EAAMlR,OACC5W,KAAKgkB,WAAWpK,EAASkO,EAAMlR,OAAQtK,QAE9Cwb,EAAM7qB,MACNuM,EAAAA,SAAS,KACLxJ,KAAK8Q,QAAQkV,aAAarkB,EAAU2K,GACpCtM,KAAK8Q,QAAQmO,eAIlBrF,EAAQxI,YAEnB2W,cAAczb,EAAK3K,GACf,MAAMgL,EAAOL,EAAIK,KACjB,OAAIA,EAAKyK,UACyB,iBAAnBzK,EAAKyK,UACLpX,KAAKuM,MAAMoU,KAAKhU,EAAKyK,UAAWzK,EAAMhL,GAEtC3B,KAAKuM,MAAMyb,cAAcrb,EAAKyK,UAAWzK,EAAMhL,GAG1D3B,KAAKuM,MAAMD,EAAIrP,MACR+C,KAAKuM,MAAMD,EAAIrP,MAAM0P,EAAMhL,GAClC3B,KAAKuM,MAAMD,EAAIsY,YACR5kB,KAAKuM,MAAMD,EAAIsY,YAAYjY,EAAMhL,GACrC3B,KAAKuM,MAAMoU,KAAKsH,EAAKA,MAACtb,EAAK1P,MAAO0P,EAAMhL,IAEnDumB,qBAAqB5b,EAAKxN,EAASokB,GAC/BljB,KAAKkjB,OAAkB,IAAVA,EACbljB,KAAKmjB,SAAWrkB,EAChB,MAAM2G,EAAMzF,KAAKskB,eAAehY,EAAIjG,KAAK1E,SAAU2K,GAGnD,OAFAtM,KAAKkjB,OAAQ,EACbljB,KAAKmjB,SAAW,KACT1d,GAEX0iB,gBAAgB7b,EAAKxN,EAASokB,GAC1BljB,KAAKkjB,OAAkB,IAAVA,EACbljB,KAAKmjB,SAAWrkB,EAChB,MAAM8a,EAAUD,KAIhB,OAHA3Z,KAAKgkB,WAAWpK,EAAStN,EAAKA,EAAI0P,QAClChc,KAAKkjB,OAAQ,EACbljB,KAAKmjB,SAAW,KACTvJ,EAAQxI,YAEnB2L,WAAW1W,EAAM1E,EAAUojB,GACvB,IAAK1e,EAAM,OACX,GAAI3F,UAAG/D,OAAO0J,IAAS3F,EAAE,QAACoB,OAAOuE,GAAO,MAAO,GAAGA,EAElD,IAAIpJ,EACJ,GAAI8nB,EACA9nB,EAAOoJ,EAAKpJ,UAGZ,GADAA,EAAOoJ,EAAK3F,GACR2F,EAAKpJ,KAAM,CACXA,EAAOod,EAAM,QAAChU,EAAKpJ,MACnB,MAAM4P,EAAQ7M,KAAKuM,MAAMsa,SAAS5pB,GAC9B4P,IAAO5P,EAAOod,EAAM,QAACxN,IAIjC,IAAK5P,EAAM,OAEX,MAAM2c,EAAUD,KACZjZ,UAAGmnB,UAAUxhB,EAAK1E,WAClB0E,EAAK1E,SAASgG,QAAQ5G,IAClBA,GAAK6Y,EAAQ3I,QAAQlQ,MAAAA,OAAAA,EAAAA,EAAG+Y,KAAM,IAAM9Z,KAAK+c,WAAWhc,MAG5D,MAAMtE,EAAQ,IAAI4J,GAGlB,cAFO5J,EAAMQ,YACNR,EAAMiE,GACNV,KAAKuM,MAAMoU,KAAK1jB,EAAMR,EAAOmd,EAAQK,SAAStY,GAAUyP,eF9XlEgX,CAACrF,IG7BV,MAAMsF,GAAQ,CAAC,eAAgB,gBCiBhB,SAASC,GAAYtF,EAAQ3c,EAAMM,GAC9C,MAAMqI,EAAK8N,EAAAA,UACLyL,IAAYliB,EAAKD,MAb3B,IAAckG,EAcVhD,EAAAA,QAAOtJ,KAAM,CACTgP,GAAAA,EACArR,IAAKqR,EACL+C,QAAS/C,EAAK,KACd3I,KAAAA,EACA0e,OAAQ1e,EAAKmT,YAAcnT,EAC3B9J,KAAM8J,EAAK9J,KACXisB,QAAS,GACTpC,MAAM,EACNroB,MAAO,GACP0qB,OAAQ,GACRC,KAAM,GACNC,SAAU,GACVhnB,SAAU,GACVqa,OAAQ,KACR/N,MAAO5H,EAAKuiB,QAAU5oB,KAAO,KAC7B6jB,YAAa,KACblX,KAAM,IAAItG,GACV7H,SAAU,GACVqqB,QAAS,GACTpW,QAAS,GACT3J,MAAOyf,EACPnnB,QAAIxC,EACJyoB,cAAUzoB,EACV+H,aAAc4hB,EAAUrgB,WAASvB,QAAgB/H,EACjDwH,MAAOC,EAAKD,YAASxH,IAGzBoB,KAAK8oB,YA1CKxc,EA2CLtM,KA1CLnD,OAAOsc,iBAAiB7M,EAAIyY,OAAQ,CAChCnO,OAAQ2B,GAAWjR,EAAAA,QAAQgF,IAAM,KAElCA,EAAIjG,OAASiG,EAAIyY,QAChBloB,OAAOsc,iBAAiB7M,EAAIjG,KAAM,CAC9BuQ,OAAQ2B,GAAWjR,EAAAA,QAAQgF,IAAM,KAsCzCtM,KAAKuQ,OAAOyS,GAAQ,GCuTxB,SAAS+F,GAASzc,EAAKjG,GACnB,IAAK,IAAInE,EAAI,EAAGA,EAAIoK,EAAIqc,SAASzpB,OAAQgD,IAAK,CAC1C,MAAM8mB,EAAO1c,EAAIqc,SAASzmB,GAC1B,GAAI8mB,EAAKrnB,WAAa0E,EAClB,OAAO2iB,GAInB,SAASC,GAAO3c,GACZ,QAASA,EAAIjG,KAAK6iB,OCjLtB,SAASC,GAAMpgB,EAAKxG,GAChB,MAAsB,mBAARA,EAAqB,GAAKA,EAAMA,EF7IlD+G,EAAAA,QAAOgf,GAAYrI,UAAW,CAC1BmJ,iBACI,IAAI9c,EAAMtM,KAAKgc,OACf,KAAO1P,GAAK,CACR,GAAIA,EAAI2B,MACJ,OAAO3B,EAEXA,EAAMA,EAAI0P,SAGlBuI,sBACI,MAAM5iB,EAAW3B,KAAKqG,KAAK1E,UAAY,GACvC,OAAIxE,MAAMsB,QAAQkD,GACPA,EACJ3B,KAAK8kB,YAAY,CACpB/b,IAAK,WAAYgc,OAAQpjB,EAAU0N,IAAK,GACxCga,OAAS9kB,IACLvE,KAAK8Q,SAAW9Q,KAAK8Q,QAAQkV,aAAazhB,EAAMvE,OACjDspB,SAAUA,CAACxrB,EAAOyrB,KACbvpB,KAAK8Q,UACLhT,IAAUyrB,EAAWvpB,KAAK8Q,QAAQkV,aAAaloB,EAAOkC,MAAQA,KAAK8Q,QAAQ0Y,eAAexpB,KAAMlC,EAAOyrB,KAE5GE,SAAW3rB,IACNkC,KAAK8Q,QACL9Q,KAAK8Q,QAAQ0Y,eAAexpB,KAAM,GAAIlC,UAE/BkC,KAAKwoB,QAAQ7mB,aAKpCmjB,YAAYtF,GACR,MAAMzW,IAACA,EAAGgc,OAAEA,EAAM1V,IAAEA,EAAGga,OAAEA,EAAMI,SAAEA,EAAQH,SAAEA,GAAY9J,EAEvD,GAAIxf,KAAKwoB,QAAQzf,IAAQ/I,KAAKwoB,QAAQzf,GAAKgc,SAAWA,EAClD,OAAO/kB,KAAK0pB,WAAW3gB,EAAKsG,UAGzBrP,KAAKwoB,QAAQzf,GAEpB,IAAIjL,EAAQinB,EACZ,GAAIrkB,EAAE,QAACyD,SAAS4gB,GAAS,CACrB,IAAIxf,EAAS+P,GAAO,IAAMyP,EAAO,CAC7B1e,KAAMrG,KAAKqG,KAAMjB,IAAKpF,KAAK2pB,KAAMpZ,OAAShM,IACtC,MAAMzG,EAAQyG,GAAQ8K,EAChBka,EAAWvpB,KAAK0pB,WAAW3gB,EAAKsG,GACtCrP,KAAK4pB,WAAW7gB,EAAKgc,EAAQjnB,GAC7BwrB,GAAYA,EAASxrB,EAAOyrB,IAC7BM,OAAQA,KACP,MAAMN,EAAWvpB,KAAK0pB,WAAW3gB,EAAKsG,UAC/BrP,KAAKwoB,QAAQzf,GACpB0gB,GAAYA,EAASF,GACrBvpB,KAAK2pB,MAAQ3pB,KAAK2pB,KAAK3S,KAAKhX,KAAKqG,UAGrCd,GAAU7E,EAAE,QAACyD,SAASoB,EAAOC,OAC7BD,EAAOC,KAAMjB,IACT,MAAMzG,EAAQyG,GAAQ8K,EACtBrP,KAAK4pB,WAAW7gB,EAAKgc,EAAQjnB,GAC7BurB,GAAUA,EAAOvrB,GACjBkC,KAAK2pB,MAAQ3pB,KAAK2pB,KAAK3S,KAAKhX,KAAKqG,QAClCX,MAAM/F,IACL4mB,QAAQC,MAAM7mB,KAElB7B,EAAQuR,EACRrP,KAAK4pB,WAAW7gB,EAAKgc,EAAQjnB,KAE7BA,EAAQyH,GAAU8J,EAClBrP,KAAK4pB,WAAW7gB,EAAKgc,EAAQjnB,GAC7BurB,GAAUA,EAAOvrB,IAGzB,OAAOA,GAEX4rB,WAAW3gB,EAAKsG,GACZ,OAAQrP,KAAKwoB,QAAQzf,IAAQ/I,KAAKwoB,QAAQzf,GAAKjL,OAAUuR,GAE7Dua,WAAW7gB,EAAKgc,EAAQjnB,GACpBkC,KAAKwoB,QAAQzf,GAAO,CAChBgc,OAAAA,EACAjnB,MAAO6e,EAAQA,SAAC7e,KAGxBgsB,WAAWvtB,GAIP,OAHKyD,KAAK6oB,QAAQtsB,KACdyD,KAAK6oB,QAAQtsB,GAAQ,IAElByD,KAAK6oB,QAAQtsB,IAExBwtB,gBAAgBxtB,QACCqC,IAATrC,EACAyD,KAAK6oB,QAAU,UAER7oB,KAAK6oB,QAAQtsB,IAG5BusB,UAAUnW,GACN3S,KAAK+I,IAAM+T,EAAAA,UACXnK,GAAQ3S,KAAKgc,QAAUhc,KAAKgc,OAAO8M,UAAUnW,IAEjDqX,aACIhqB,KAAK4kB,WAAa5kB,KAAKqG,KAAKpJ,KAC5B+C,KAAK/C,KAAOod,EAAM,QAACra,KAAKqG,KAAKpJ,MAC7B+C,KAAK0kB,SAAW1kB,KAAK8Q,QAAQmZ,QAAQjqB,KAAK4kB,aAE9CsF,UAAU5S,GACNtX,KAAKsX,OAASA,EACdA,EAAOqI,KAAK3f,OAEhBmkB,WAAW,IAAAgG,EACP,MAAM9jB,EAAO,IAAIrG,KAAKqG,aACfA,EAAK1E,gBACL0E,EAAKoI,SACZzO,KAAK2M,KAAOiM,GAAU,GAAI,CAACvS,KAASxJ,OAAO6K,KAAK1H,KAAK6oB,SAASnqB,IAAIiK,GAAK3I,KAAK6oB,QAAQlgB,IAAK3I,KAAKxB,WAC9FwB,KAAK2M,KAAK8B,SAAW,KAAgB,QAAZ0b,EAAAnqB,KAAKyS,eAAO,IAAA0X,WAAAA,EAAZA,EAAcC,mBAAW,IAAAD,OAAA,EAAzBA,EAA2BrsB,QAAS,MAAOkC,KAAK2M,KAAK8B,UAAY,KAE9F4V,WACIrkB,KAAKomB,OAAS1lB,UAAGiT,MAAM3T,KAAK2M,KAAKmT,UAAc9f,KAAK2M,KAAKmT,UAE7DuK,YACI,QAAUrqB,KAAKqG,KAAK+F,UAAYpM,KAAKgc,QAAShc,KAAKgc,OAAOqO,aAE9DzY,iBACI,OAAO5R,KAAK2M,KAAK8B,UAErB6b,MAAMtH,GACF,OAAOhjB,KAAK2K,KAAOqY,EAAOrY,IAE9B4f,UACIvqB,KAAKjC,MAAM4J,QAAQ6iB,GAAMA,KACzBxqB,KAAKjC,MAAQ,GACblB,OAAO6K,KAAK1H,KAAKyS,SAAS9K,QAAQoB,IACH,IAAvBA,EAAIW,QAAQ,eACL1J,KAAKyS,QAAQ1J,MAIhC0hB,SACIzqB,KAAKyoB,OAAO9gB,QAAQ6iB,GAAMA,KAC1BxqB,KAAKyoB,OAAS,IAElBiC,OACI1qB,KAAKyqB,SACLzqB,KAAK8Q,QAAQ6Z,WAAW3qB,OAE5B4qB,UACI5qB,KAAK8Q,QAAQ+Z,SAAS7qB,OAE1B8qB,SACI9qB,KAAKuqB,UACLvqB,KAAKyqB,SACLzqB,KAAK+qB,SACD/qB,KAAKgc,QACLhc,KAAKgc,OAAOra,SAASmI,OAAO9J,KAAKgc,OAAOra,SAAS+H,QAAQ1J,QAAU,EAAG,GAE1EsJ,EAAAA,QAAOtJ,KAAM,CACTgrB,SAAS,EACTxsB,SAAU,GACVwd,OAAQ,KACRra,SAAU,GACVkiB,YAAa,KACbuC,MAAM,KAGd2E,SACI/qB,KAAK2oB,SAAShhB,QAAQqhB,GAAQA,EAAKpS,QAAUoS,EAAKpS,OAAOqU,MACzDjrB,KAAK2oB,SAAW,IAEpBsC,KACI,MAAMC,EAAMA,KACR,IAAI3hB,EAAQvJ,KAAK0oB,KAAKhf,QAAQ1J,KAAK+kB,QAC/Bxb,GAAS,IACTvJ,KAAK0oB,KAAK5e,OAAOP,EAAO,GACxBvJ,KAAK8Q,SAAW9Q,KAAK8Q,QAAQmO,YAGjCjf,KAAKgrB,QACLE,IAGJlrB,KAAK8Q,QAAQqa,QAAQ,KACjBnrB,KAAK8Q,QAAQhJ,eAAe,KACxB9H,KAAK+qB,SACLG,IACAlrB,KAAK8Q,QAAQsa,MAAMprB,MACnBsJ,EAAAA,QAAOtJ,KAAM,CACT0oB,KAAM,MAEX1oB,KAAK8I,UAGhByH,OAAOyS,EAAQrD,GACXrW,EAAAA,QAAOtJ,KAAM,CACTgrB,SAAS,EACTla,QAASkS,EACTnR,QAASmR,EAAOnR,QAChB8X,KAAM3G,EAAO5d,IACbuF,GAAIqY,EAAOrY,GACX4B,MAAOyW,EAAOnR,QAAQtF,MACtBuS,SAAS,EACT3X,WAAYnH,KAAKqG,KAAKvI,SAEzB6hB,GAAQ3f,KAAKuqB,UACdvqB,KAAK4qB,UACL5qB,KAAK0qB,OACL1qB,KAAKgqB,gBGrQb,MAAMqB,GAAa,CACf1L,KAAKrT,KAELgf,YAAWA,CAACxtB,EAAOwO,IACRxO,EAEX8pB,QAAOA,CAAC5hB,EAAWsG,IACRtG,EAEX/E,QAAQqL,KAERzM,OAAMA,CAAC8B,EAAU2K,IACVA,EAAIwE,QAAQuL,GAAGkP,cAAgBjf,EAAIwE,QAAQuL,GAAGkP,aAAaxD,cACnDzb,EAAIwE,QAAQuL,GAAGkP,aAAaxD,cAAczb,EAAK3K,GAEnD2K,EAAIuF,QAAQkW,cAAczb,EAAK3K,GAE1CoP,QAAQpP,EAAU2K,GACd,OAAGA,EAAIwE,QAAQuL,GAAGkP,cAAgBjf,EAAIwE,QAAQuL,GAAGkP,aAAaC,eACnDlf,EAAIwE,QAAQuL,GAAGkP,aAAaC,eAAelf,EAAK3K,GAEpD3B,KAAKH,OAAO8B,EAAU2K,IAEjCM,UAAUN,MCZRmf,GAAU,CAAC,QAAS,QAAS,KAAM,WAAY,OAAQ,SAAU,UAAW,SAAU,OAAQ,UAAW,YAAa,SAAU,aAAc,WAAY,YAAa,SACvKC,GAAcC,OAAO,YCKZ,SAASC,GAAQvP,GAC5BrD,GAAUhZ,KAAM,CACZsB,QAAOA,IACI+a,EAAG/a,QAAQxD,OAAS,GAE/B+f,IAAGA,IACQxB,EAAGwB,IAEd9M,QAAOA,IACwB,MAAvBsL,EAAG1R,GAAGlO,MAAMsU,QACLsL,EAAG1R,GAAGlO,MAAMsU,QACZsL,EAAG1R,GAAG8R,WAAWT,QAAmD,MAAzCK,EAAG1R,GAAG8R,WAAWT,OAAOvf,MAAMsU,QACzDsL,EAAG1R,GAAG8R,WAAWT,OAAOvf,MAAMsU,QAElCsL,EAAG/a,QAAQxD,MAAMiT,UAAW,IAG3CzH,EAAAA,QAAOtJ,KAAM,CACTqc,GAAAA,EACA1R,GAAI0R,EAAG1R,GACPkhB,UAAU,EACV/b,SAAS,EACTgc,WAAW,EACXC,UAAW,KACXC,YAAa,KACbC,WAAW,EACXpkB,SAAU8U,EAAQA,SAAC,IACnBuP,YAAavP,EAAQA,SAAC,IACtBrS,QAAS,GACTjD,KAAMsV,EAAQA,SAAC,IACfwP,WAAY,GACZC,aAAc,GACdC,UAAW,GACXC,UAAW,KACXC,SAAU,EACV/iB,SAAU,KACVgjB,cAAc,EACdC,SAAS,EACTC,WAAYA,KACR1sB,KAAK2sB,UAAU,aAIvB3sB,KAAK4sB,SAASvQ,EAAG1K,OAEjB3R,KAAK8T,SAAW,IAAIuI,EAAG7N,QAAQxO,MAC/BA,KAAK6R,QAAU,IAAIkR,GAAO/iB,MAC1BA,KAAKoF,IAAMiX,EAAGwQ,YAAYzT,OAAO,CAAChU,EAAKqU,KACnC,MAAM7F,EAAY0B,GAAO,IAAMmE,EAAGrU,EAAKpF,OAIvC,OAHI4T,GAAaA,IAAcxO,GAC3BkE,UAAOlE,EAAKwO,GAETxO,GVvDA,SAAatF,GAExB,SAAS6U,EAAWH,GAKhB,OAJI9T,EAAAA,QAAGiT,MAAMa,GACTA,EAAS1U,EAAE0U,SACLrX,MAAMsB,QAAQ+V,KACpBA,EAAS,CAACA,IACPA,EAGX,SAAS/X,EAAM+X,EAAQzL,EAAKxG,GACpB7B,EAAE,QAACiT,MAAMa,GACTA,EAAS3X,OAAO6K,KAAK,IAAI5H,EAAEgtB,YAAahtB,EAAEitB,UAClC5vB,MAAMsB,QAAQ+V,KACtBA,EAAS,CAACA,IAEdA,EAAO7M,QAAQvB,IACX,MAAM6d,EAAOnkB,EAAEgtB,SAAS1mB,IAAUtG,EAAEitB,QAAQ3mB,GAC5C6d,GAAQA,EAAKtc,QAAQ2E,IACjB8T,EAAAA,KAAK9T,EAAIjG,KAAM0C,EAAKxG,GACpBzC,EAAE+R,QAAQ0R,WAAWjX,OAKjC,SAAS0gB,IACL,MAAMC,EAAOntB,EAAEwK,QACf,OAAOzN,OAAO6K,KAAKulB,GAAM7T,OAAO,CAACC,EAAS1Q,KACtC,MAAM4L,EAAM0Y,EAAKtkB,GACjB,OAAK4L,GACDpX,MAAMsB,QAAQ8V,GACd8E,EAAQzP,QAAQ2K,GAEhB8E,EAAQzP,KAAK2K,GACV8E,GALUA,GAMlB,IAGP,MAAMjU,EAAM,CACRiP,cACI,OAA8B,IAAvBvU,EAAE6K,GAAGlO,MAAM6N,SAEtB4iB,gBACI,OAAOptB,EAAEiR,SAEbyO,aACI,OAAO1f,EAAEwB,SAEbke,WAAWjd,GACPzC,EAAEuc,GAAG/a,QAAQxD,MAAQyE,GAEzBjB,cACI,OAAOxB,EAAEwB,SAEbA,YAAYiB,GACRzC,EAAEuc,GAAG/a,QAAQxD,MAAQyE,GAEzB8E,WACI,OAAOvH,EAAEuH,MAEbhB,WACI,OAAOvG,EAAE6R,OAEbqK,aACI,OAAOlc,EAAE6K,GAAG8R,WAAWT,QAAUlc,EAAE6K,GAAG8R,WAAWT,OAAOS,WAAWQ,MAEvET,UACI,OAAIpX,EAAI4W,OACG5W,EAAI4W,OAAOQ,IAEfpX,GAEX+Y,YACI,IAAInC,EAASlc,EAAE6K,GACf,KAAOqR,GAAUA,EAAOS,WAAWQ,MAAM,CACrC,IAAKjB,EAAOvf,MAAM6N,QACd,OAAO0R,EAAOS,WAAWQ,KAEzBjB,EAASA,EAAOS,WAAWT,OAGnC,OAAO5W,EAAIoX,KAEf7a,eACI,OAAOqrB,KAEXG,eACI,MAAM9W,EAASvW,EAAE6K,GAAG8R,WAAWV,iBAC/B,GAAI1F,EAAQ,CACR,MAAM/L,EAAU+L,EAAOkI,aACvB,GAAIphB,MAAMsB,QAAQ6L,GACd,MAAO,IAAIA,KAKvBf,YACI,MAAM4jB,EAAW/nB,EAAI+nB,SACrB,GAAIA,EAAU,CACV,MAAM3O,EAAM2O,EAASzjB,QAAQtE,GAC7B,OAAOoZ,GAAO,EAAIA,OAAM5f,IAIhCwuB,eACI,MAAO,IAAIttB,EAAEuc,GAAG+Q,WAEpBvlB,SAAS2M,GACL,GAAc,MAAVA,GAAoC,kBAAXA,EAAsB,CAC/C,MAAMjQ,EAAO,GAMb,OALA1H,OAAO6K,KAAK5H,EAAEuH,MAAMM,QAAQgB,KACT,IAAX6L,IAAkD,IAA/B1U,EAAEssB,aAAa1iB,QAAQf,KAC1CpE,EAAKoE,GAAKma,GAAKhjB,EAAEuH,KAAKsB,OAGvBpE,EAEP,OAAOoQ,EAAWH,GAAQ4E,OAAO,CAACC,EAASrK,KACvCqK,EAAQrK,GAAM5J,EAAImR,SAASvH,GACpBqK,GACR,KAGX9C,SAASnQ,GACL,MAAMkG,EAAMxM,EAAEkU,YAAY5N,GAC1B,OAAKkG,EAMEwW,GAAKxW,EAAIjG,KAAKvI,QALa,IAA1BgC,EAAEwB,QAAQ+rB,aAAyB5tB,EAAAA,YAAYK,EAAEqsB,WAAY/lB,GACtD0c,GAAKhjB,EAAEqsB,WAAW/lB,SAE7B,GAIR6C,WAAWpB,GACP,MAAMtD,EAAO,IAAKsD,GAAY,IAC9B/H,EAAEgI,eAAe,KACbhI,EAAEqsB,WAAa,GACf/mB,EAAIoP,SAAS7M,QAAQoB,IACjB,MAAMkb,EAAOnkB,EAAEgtB,SAAS/jB,GACxB,GAAIkb,EAAM,CACN,MAAMtR,EAAOlT,EAAAA,YAAYoI,EAAUkB,GACnCkb,EAAKtc,QAAQ2E,IACTA,EAAIjG,KAAKvI,MAAQ6U,EAAO9K,EAASkB,QAAOnK,WAErC2F,EAAKwE,MAGpBO,EAAAA,QAAOxJ,EAAEqsB,WAAY5nB,KACtB,IAEPyD,SAAS5B,GACL,IAAIyB,EAAWzB,EACX8Z,UAAUhhB,QAAU,IACpB2I,EAAW,CAACmB,CAAC5C,GAAQ8Z,UAAU,KACnCpgB,EAAEgI,eAAe,KACbjL,OAAO6K,KAAKG,GAAUF,QAAQoB,IAC1B,MAAMkb,EAAOnkB,EAAEgtB,SAAS/jB,GACxB,IAAKkb,EAAM,OAAOnkB,EAAEqsB,WAAWpjB,GAAOlB,EAASkB,GAC/Ckb,EAAKtc,QAAQ2E,IACTA,EAAIjG,KAAKvI,MAAQ+J,EAASkB,SAGnC,IAEPukB,YAAYlnB,GACR,MAAMkG,EAAMxM,EAAEytB,OAAOnnB,GAMrB,OALAtG,EAAEgI,eAAe,KACbhI,EAAE+U,QAAQzO,GAAOuB,QAAQ2E,IACrBA,EAAI2e,SAET,GACI3e,EAAMA,EAAIyY,YAASnmB,GAE9B2J,WAAWlC,GACP,MAAMiG,EAAMjG,GAAQkT,GAAMlT,GAC1B,GAAKiG,EAEL,OADAA,EAAI2e,KACG3e,EAAIyY,QAEfvQ,OAAQA,IAAM1U,EAAE0U,SAChB6N,OAAQA,CAAChc,EAAMmnB,EAAO1F,KAClB,IAA+BnW,EAA3BpI,EAAQzJ,EAAEsH,KAAKlI,OAAS,EAC5B,MAAMoN,EAAMxM,EAAEytB,OAAOC,GAErB,GAAIlhB,EACA,GAAIwb,EAAO,CAEP,GADAnW,EAAQrF,EAAIod,WAAW,WAAYpd,EAAIjG,KAAK1E,WACvCxE,MAAMsB,QAAQkT,GAAQ,OAC3BpI,EAAQ+C,EAAIjG,KAAK1E,SAASzC,OAAS,OAEnCqK,EAAQ+C,EAAIoc,KAAKhf,QAAQ4C,EAAIyY,QAC7BpT,EAAQrF,EAAIoc,UAEb/W,EAAQ7R,EAAE6R,MACjBA,EAAM7H,OAAOP,EAAQ,EAAG,EAAGlD,IAE/BonB,QAASA,CAACpnB,EAAMmnB,EAAO1F,KACnB,IAAenW,EAAXpI,EAAQ,EACZ,MAAM+C,EAAMxM,EAAEytB,OAAOC,GAErB,GAAIlhB,EACA,GAAIwb,GAEA,GADAnW,EAAQrF,EAAIod,WAAW,WAAYpd,EAAIjG,KAAK1E,WACvCxE,MAAMsB,QAAQkT,GAAQ,YAE3BpI,EAAQ+C,EAAIoc,KAAKhf,QAAQ4C,EAAIyY,QAC7BpT,EAAQrF,EAAIoc,UAEb/W,EAAQ7R,EAAE6R,MACjBA,EAAM7H,OAAOP,EAAO,EAAGlD,IAE3B+F,OAAO0a,EAAOtS,GACV/X,EAAM+X,EAAQ,WAAYsS,GAC1BhnB,EAAEmf,WAENyO,aAAa1e,GACT,MAAM1C,EAAMxM,EAAEytB,OAAOve,GACrB,GAAK1C,EACL,QAASA,EAAIjG,KAAK+F,QAEtB0T,QAAQgH,EAAOtS,GACX/X,EAAM+X,EAAQ,YAAasS,GAC3BhnB,EAAEmf,WAEN0O,cAAc3e,GACV,MAAM1C,EAAMxM,EAAEytB,OAAOve,GACrB,GAAK1C,EACL,QAASA,EAAIjG,KAAKyZ,SAEtBhjB,SAASA,EAAU0X,GACfG,EAAWH,GAAQ7M,QAASvB,IACxBtG,EAAE+U,QAAQzO,GAAOuB,QAAQ2E,IACrB8T,EAAIA,KAAC9T,EAAIjG,KAAK5J,MAAO,aAAcK,OAG3CgD,EAAEmf,WAEN7K,IAAI2Q,GACOloB,OAAO6K,KAAK5H,EAAEmkB,MAAMvlB,IAAIiK,IAC3B,MAAM2D,EAAMxM,EAAEmkB,KAAKtb,GACnB,OAAOoc,EAASzY,EAAIyY,OAASzY,EAAIjG,OAGzCwf,MAAMd,GACKjlB,EAAE0U,SAAS4E,OAAO,CAACC,EAAStQ,KAC/B,MAAMuD,EAAMxM,EAAEgtB,SAAS/jB,GAAK,GAE5B,OADAsQ,EAAQtQ,GAAOgc,EAASzY,EAAIyY,OAASzY,EAAIjG,KAClCgT,GACR,IAEPjC,UAAU2N,GACCloB,OAAO6K,KAAK5H,EAAEitB,SAAS3T,OAAO,CAACC,EAAStQ,KAC3C,MAAMuD,EAAMxM,EAAEitB,QAAQhkB,GAAKrK,IAAI4N,GAAOyY,EAASzY,EAAIyY,OAASzY,EAAIjG,MAEhE,OADAgT,EAAQtQ,GAAsB,IAAfuD,EAAIpN,OAAeoN,EAAI,GAAKA,EACpC+M,GACR,IAEPuU,KAAIA,IACOxoB,EAAIiC,KAEfwiB,OAASlY,IACL7R,EAAEwf,WAAW3N,IAEjBkc,cAAcvsB,GACVxB,EAAEuc,GAAGwR,cAAcvsB,GACnB8D,EAAI6Z,WAER1J,SAASkE,GACLrU,EAAIyoB,cAAc,CAACtY,SAAUkE,KAEjCzC,KAAO5Q,IACH,GAAIjJ,MAAMsB,QAAQ2H,GAEd,YADAA,EAAMuB,QAAQ5G,GAAKqE,EAAI4R,KAAKjW,IAGhC,IAAIkjB,EAAOvjB,EAAAA,QAAG7D,OAAOuJ,GAASmT,GAAMnT,GAAStG,EAAE+U,QAAQzO,GAClD6d,IAGLA,EAAO9mB,MAAMsB,QAAQwlB,GAAQA,EAAO,CAACA,GACrCA,EAAKtc,QAAQ2E,IACT,IAAKA,EAAI0e,QAAS,CACd,MAAM1gB,EAAUxK,EAAEwK,QAAQgC,EAAI0C,IAC1B1E,IACInN,MAAMsB,QAAQ6L,GACdA,EAAQ3C,QAAQN,IACZA,EAAK4X,YAEF3U,GACPA,EAAQ2U,WAIhBnf,EAAE+R,QAAQ0R,WAAWjX,MAG7BxM,EAAEmf,YAENA,QAASA,KACL+N,IAAarlB,QAAQ4M,IACjBA,EAAI0K,YAERnf,EAAE+R,QAAQyR,gBACVxjB,EAAEmf,WAENhK,iBACInV,EAAEgU,SAAS+Z,cAAc/tB,EAAEwB,SAC3B8D,EAAI6Z,WAER6O,SAAWC,IACPjuB,EAAE6K,GAAG8R,WAAW1H,QAAUgZ,GAE9BvB,aAAcA,IACH1sB,EAAE0sB,aAEbwB,kBAAmBA,KACfluB,EAAE0sB,cAAe,GAErByB,WAAWjf,EAAI3I,GACXvG,EAAE+U,QAAQ7F,GAAIrH,QAAQ2E,IAClBhD,EAAAA,QAAOgD,EAAIjG,KAAMA,MAGzB6nB,YAAYvc,GACR9U,OAAO6K,KAAKiK,GAAOhK,QAAQqH,IACvB5J,EAAI6oB,WAAWjf,EAAI2C,EAAM3C,OAGjC4J,UAAWA,CAAC5J,EAAI3I,KACZvG,EAAE+U,QAAQ7F,GAAIrH,QAAQ2E,IAClBsM,GAAUtM,EAAIjG,KAAMA,MAG5B8nB,WAAWxc,GACP9U,OAAO6K,KAAKiK,GAAOhK,QAAQqH,IACvB5J,EAAIwT,UAAU5J,EAAI2C,EAAM3C,OAGhC8J,QAASA,CAAC9J,EAAI+V,KACV,MAAMzY,EAAMxM,EAAEytB,OAAOve,GACrB,GAAI1C,EACA,OAAOyY,EAASzY,EAAIyY,OAASzY,EAAIjG,MAGzC+nB,SAASnxB,EAAM8nB,GACX,IAAI1e,OAAOzH,EAOX,OANA/B,OAAO6K,KAAK5H,EAAEmkB,MAAMtc,QAAQgB,IACxB,MAAM2D,EAAMxM,EAAEmkB,KAAKtb,GACf2D,EAAIjG,KAAKpJ,OAASA,IAClBoJ,EAAO0e,EAASzY,EAAIyY,OAASzY,EAAIjG,QAGlCA,GAEXgoB,UAAUpxB,EAAM8nB,GACZ,IAAIpT,EAAQ,GAOZ,OANA9U,OAAO6K,KAAK5H,EAAEmkB,MAAMtc,QAAQgB,IACxB,MAAM2D,EAAMxM,EAAEmkB,KAAKtb,GACf2D,EAAIjG,KAAKpJ,OAASA,GAClB0U,EAAM/H,KAAKmb,EAASzY,EAAIyY,OAASzY,EAAIjG,QAGtCsL,GAEX2c,cAAgBtf,IACZ,MAAM1C,EAAMxM,EAAEytB,OAAOve,GACrB,GAAI1C,EACA,OAAOA,EAAIK,MAGnB4hB,WAAavf,IACT,MAAMiV,EAAOnkB,EAAE+U,QAAQ7F,GACvB,GAAIiV,EAAM,CACN,MAAMtS,EAAQsS,EAAKvlB,IAAI4N,GACZA,EAAIjG,MAEf,OAAwB,IAAjBsL,EAAMzS,OAAeyS,EAAM,GAAKA,IAG/C6c,UAAUxf,EAAIyf,EAAM3wB,GAChB,MAAMwO,EAAMxM,EAAEytB,OAAOve,GACjB1C,GAAOmiB,IACS,MAAZA,EAAK,KACLA,EAAOA,EAAKC,OAAO,IAEnBjvB,EAAWA,YAAC6M,EAAIjG,KAAM,IAAMooB,IAC5BrO,EAAIA,KAAC9T,EAAIjG,KAAM,IAAMooB,EAAM3wB,GAE1B2B,EAAAA,YAAY6M,EAAIjG,KAAM,YACvBiG,EAAIjG,KAAKqhB,OAAS,IAEtBtH,EAAIA,KAAC9T,EAAIjG,KAAKqhB,OAAQ+G,EAAM3wB,KAGpCisB,gBAAgB/a,EAAIyf,GAChB,MAAMniB,EAAMxM,EAAEytB,OAAOve,GACjB1C,IACImiB,GAAoB,MAAZA,EAAK,KACbA,EAAOA,EAAKC,OAAO,IAEvBpiB,EAAIyd,gBAAgB0E,GACpBrpB,EAAI4R,KAAKhI,KAGjB2f,eAAe3f,EAAIP,EAAUoK,GACrBA,EACAzT,EAAIwT,UAAU5J,EAAI,CAACP,SAAAA,IAEnBhS,EAAMuS,EAAI,WAAYP,IAG9BmgB,gBAAgBC,EAAWhW,GACvBhc,OAAO6K,KAAKmnB,GAAWlnB,QAAQqH,IAC3B5J,EAAIupB,eAAe3f,EAAI6f,EAAU7f,GAAK6J,MAG9CiW,kBACI1pB,EAAI6Z,WAERxL,YAAYe,GACRG,EAAWH,GAAQ7M,QAAQvB,IACvBtG,EAAE+U,QAAQzO,GAAOuB,QAAQ2E,IACrBxM,EAAE+R,QAAQ0R,WAAWjX,GACrBA,EAAIjG,KAAKvI,MAAQglB,GAAKxW,EAAI3F,kBAGlC6C,EAAAA,SAAS,KACLA,EAAAA,SAAS,KACLA,EAAAA,SAAS,KACLpE,EAAI0J,mBAAmB0F,SAIrB,MAAVA,IACA9T,EAAAA,QAAGyD,SAASrE,EAAEwB,QAAQytB,UAAYzZ,GAAO,IAAMxV,EAAEwB,QAAQytB,QAAQ3pB,IACjEtF,EAAE6K,GAAG5L,KAAK,QAASqG,KAG3Bd,OAAO0K,EAAIzS,GACP,MAAM6E,EAAKgE,EAAIhE,GAAG4N,GAClB,IAAK5N,IAAOA,EAAG7E,GACX,MAAM,IAAI0lB,MAAM7jB,EAAMA,OAAC,MAAU7B,EAAH,WAClC,MAAO,IAAIuW,IACA1R,EAAG7E,MAASuW,IAG3Bkc,KAAIA,CAAChgB,EAAIzS,KAASuW,IACPwC,GAAO,IAAMlQ,EAAId,OAAO0K,EAAIzS,EAAf6I,IAAwB0N,IAEhDyM,OAAO0P,GACI1P,SAAOna,EAAIiB,KAAM4oB,GAE5B5e,QAAQrB,EAAI+Q,KAAUjN,GAClB,MAAM1R,EAAKgE,EAAIhE,GAAG4N,GAClB5N,GAAMA,EAAGF,MAAM6e,KAAUjN,IAE7B1R,GAAG4N,GACC,MAAM1C,EAAMxM,EAAEytB,OAAOve,GACrB,GAAI1C,EAAK,OAAOA,EAAIlL,IAAMtB,EAAE6K,GAAGsJ,KAAK3H,EAAI3O,MAE5CuxB,WAAalgB,IACTlP,EAAE+d,IAAI3c,MAAM,iBAAmB8N,IAEnCuP,WAAWnY,GACP,MAAMkG,EAAMxM,EAAEytB,OAAOnnB,GACrB,OAAOkG,EAAMxM,EAAEwK,QAAQgC,EAAI0C,SAAMpQ,GAErCuwB,oBAAoBngB,GAChB,MAAM2D,EAAqB,iBAAP3D,EACd1C,EAAMqG,EAAO4G,GAAMvK,GAAMlP,EAAEytB,OAAOve,GAClC3I,EAAOiG,EAAMA,EAAIjG,KAAQsM,EAAO3D,EAAK5J,EAAI0T,QAAQ9J,GACvD,IAAK3I,EACD,MAAO,GAEX,MAAMsL,EAAQ,GACIhQ,IAAAA,EAYlB,OAZkBA,EAWR2K,EAAMA,EAAIiY,sBAAwBle,EAAK1E,WAVjCA,EAASgG,QAAQpG,IACL,iBAATA,IAGPA,EAAK6E,OACLuL,EAAM/H,KAAKrI,GAEfoQ,EAAM/H,QAAQxE,EAAI+pB,oBAAoB5tB,OAIvCoQ,GAEXyd,cAAcpgB,IACiB,iBAAPA,EACDuK,GAAMvK,GAAMlP,EAAEytB,OAAOve,IAC7BgN,OAAO3V,KAEtBgpB,iBAAiBrgB,GACb,MACM1C,EADqB,iBAAP0C,EACDuK,GAAMvK,GAAMlP,EAAEytB,OAAOve,GACxC,GAAI1C,EAAK,CACL,MAAM2B,EAAQ3B,EAAI8c,iBAClB,GAAInb,EACA,OAAOA,EAAM5H,OAIzBipB,oBAAmBA,CAACtgB,EAAI2D,IACNvN,EAAI+pB,oBAAoBngB,GACzBoK,OAAO,CAACvR,EAAUxB,MACP,IAAhBA,EAAKkpB,SAA4B,IAAT5c,IACxB9K,EAASxB,EAAKD,OAAS0c,GAAKzc,EAAKvI,QAE9B+J,GACR,IAEP2nB,oBAAoBxgB,EAAInH,EAAU4nB,GAC9B,MAAM9d,EAAQvM,EAAI+pB,oBAAoBngB,GACtClP,EAAEgI,eAAe,KACb6J,EAAMhK,QAAQtB,IACN5G,cAAYoI,EAAUxB,EAAKD,OAC3BC,EAAKvI,MAAQ+J,EAASxB,EAAKD,OACpBqpB,IACPppB,EAAKvI,WAAQc,QAK7B8wB,eAAenzB,GACX,IAAIwjB,EAAQ3a,EAAI9D,QAAQquB,YAAYpzB,GACpC,GAAIwjB,EAIA,MAHqB,iBAAVA,IACPA,EAAQA,EAAMiD,QAEXJ,EAAAA,QAAQ7C,IAIvB6P,cAAcrzB,GACH,IAAImS,QAAQ,CAACE,EAASyH,KACzB,IAAImJ,EAASpa,EAAI9D,QAAQuuB,WAAWtzB,GAC/BijB,EAEsB,UAAhBA,EAAOviB,KACdmI,EAAIC,MAAMma,GAAQha,KAAKC,IACnBmJ,EAAQnJ,KACTC,MAAM2Q,GAETzH,EAAQ4Q,EAAOjb,MANfqK,EAAQ9O,EAAEuc,GAAGyT,SAASvzB,MAUlCwzB,gBAAgBxzB,KAASuW,GACrB,MAAM2G,EAAKrU,EAAIsqB,eAAenzB,GAC9B,GAAGkd,EAAI,CACH,MAAMlV,EAAOzE,EAAEkwB,cAAc,QAAIpxB,GAGjC,OAFA2F,EAAKuO,KAAO,IAAIA,GAChBA,EAAKmd,QAAQ1rB,GACNkV,EAAGyW,MAAM,KAAMpd,KAG9Bqd,cAAc5zB,EAAMuB,GAChBsH,EAAIgrB,QAAQ,eAAiB7zB,EAAMuB,IAEvCuyB,aAAa9zB,EAAMuB,GACfsH,EAAIgrB,QAAQ,QAAU7zB,EAAMuB,IAEhCif,WAAW/N,EAAIlQ,EAASokB,GACpB,MACM5W,EADqB,iBAAP0C,EACDuK,GAAMvK,GAAMlP,EAAEytB,OAAOve,GACxC,OAAO1C,EAAMxM,EAAE+R,QAAQsW,gBAAgB7b,EAAKxN,EAASokB,QAAStkB,GAElE0lB,eAAetV,EAAIlQ,EAASokB,GACxB,MACM5W,EADqB,iBAAP0C,EACDuK,GAAMvK,GAAMlP,EAAEytB,OAAOve,GACxC,OAAO1C,EAAMxM,EAAE+R,QAAQqW,qBAAqB5b,EAAKxN,EAASokB,QAAStkB,GAEvE4K,SAASiQ,GACL3Z,EAAE+d,IAAIyS,MAAM,YAAa7W,GACzB3Z,EAAEmf,WAENsR,YAAY9W,GACR3Z,EAAEywB,cACF9W,GAAMnE,GAAOmE,IAEjB3R,eAAe2R,EAAIzC,GACflX,EAAEgI,eAAe2R,EAAIzC,IAEzBjY,KAAKxC,KAASuW,GACNhT,EAAE6K,GAAG6lB,eAAiB1wB,EAAE6K,GAAG6lB,aAAaj0B,KACxCuD,EAAE6K,GAAG6lB,aAAaj0B,GAAQ,MAE9BuD,EAAE6K,GAAG5L,KAAKxC,KAASuW,IAEvB+K,IAAK/d,EAAE+d,IACP4S,qBAAqB,IAAAC,EACjB,OAAuCA,QAAvCA,EAAO5wB,EAAE6K,GAAG8R,WAAWV,wBAAhB2U,IAAgCA,OAAhCA,EAAAA,EAAkCrqB,MAE7ChB,MAAMrC,GACK,IAAI0L,QAAQ,CAACE,EAASC,KACzB7L,EAAMkF,EAAAA,SAASlF,GACfA,EAAMlD,EAAE6wB,aAAa3tB,GACrB,MAAM4tB,EAAQjxB,IACV2V,GAAO,IAAMtS,EAAI0B,SAAW1B,EAAI0B,QAAQ/E,IACxCkP,EAAOlP,IAEXG,EAAE+wB,YAAY7tB,GAAKwC,KAAK,IACbkd,GAAW1f,EAAKlD,EAAEuc,GAAGqE,OAAOrb,MAAOD,GAAKI,KAAMC,IACjD6P,GAAO,IAAMtS,EAAIyB,WAAazB,EAAIyB,UAAUgB,IAC5CmJ,EAAQnJ,KACTC,MAAO/F,IACNixB,EAAKjxB,MAEV+F,MAAM/F,IACLixB,EAAKjxB,OAIjBmxB,WAAUA,CAAC9tB,EAAKkR,EAAUsS,EAAOqK,IACtB/wB,EAAEuc,GAAG0U,cAAc,CAACzX,EAAK0X,KAC5B,IAAIC,EAAO/oB,WAASlF,GAEpB,GADAiuB,EAAOnxB,EAAE6wB,aAAaM,EAAM3X,GACxBuX,IAA6C,IAA9BA,EAAYI,EAAMD,GACjC,OAEJ,MAAMJ,EAAQjxB,IACV2V,GAAO,IAAM2b,EAAKvsB,SAAWusB,EAAKvsB,QAAQ/E,IAC1C6mB,GAASA,EAAM7mB,IAEnBG,EAAE+wB,YAAYI,GAAMzrB,KAAK,IACdkd,GAAWuO,EAAMnxB,EAAEuc,GAAGqE,OAAOrb,MAAOD,GAAKI,KAAKC,IACjD6P,GAAO,IAAM2b,EAAKxsB,WAAawsB,EAAKxsB,UAAUgB,IAC9CyO,GAAYA,EAASzO,EAAKurB,KAC3BtrB,MAAM/F,IACLixB,EAAKjxB,MAEV+F,MAAM/F,IACLixB,EAAKjxB,MAEE,MAAZqD,EAAIkuB,KAAe,IAAOluB,EAAIkuB,MAErCC,QAAOA,CAACniB,EAAIK,IACJvP,EAAEuc,GAAG/C,IACExZ,EAAEuc,GAAG/C,IAAItK,EAAIK,GAEbvP,EAAEuc,GAAG+U,YAAYpiB,EAAIK,GAGpCgiB,UAAU5X,GACC3Z,EAAEuc,GAAG0U,cAAc,CAACzX,EAAK0X,KAC5B1b,GAAO,IAAMmE,EAAGH,EAAK0X,MAG7BZ,QAAOA,CAACphB,EAAIzK,EAAM+sB,IACPxxB,EAAEuc,GAAG+T,QAAQphB,EAAIzK,EAAM+sB,GAElCC,YAAYviB,GACDlP,EAAEuc,GAAGkV,YAAYviB,GAE5B3P,EAACA,CAAC2P,EAAIwiB,IACK1xB,EAAEuc,GAAGhd,EAAE2P,EAAIwiB,GAEtB1a,UAASA,IACEhX,EAAEuc,GAAGvF,YAEhBpC,OAAQ,CACJC,WAAAA,EAAYlY,MAAAA,IAYpB,MARA,CAAC,KAAM,OAAQ,OAAOkL,QAAQ3J,IAC1BoH,EAAIpH,GAAK,YAAa8U,GAClBhT,EAAE+d,IAAI,IAAI7f,MAAQ8U,MAI1B1N,EAAIqsB,YAAcrsB,EAAIssB,YAActsB,EAAI4C,SAEjC5C,EU3mBJusB,CAAI3xB,OAGXsJ,EAAAA,QAAOsiB,GAAQ3L,UAAW,CACtB2M,SAASjb,GACLrI,EAAAA,QAAOtJ,KAAM,CACTikB,KAAM,GACN6I,SAAU,GACVC,QAAS,GACT3lB,KAAM,GACNuK,MAAAA,KAGRgO,OACI3f,KAAKqf,mBACLrf,KAAK4xB,cACL5xB,KAAK6xB,UACL7xB,KAAK8xB,WACL9xB,KAAK8T,SAASie,SACd/xB,KAAK2sB,UAAU,YAEnBtN,mBACIrf,KAAKmsB,WAAa,IAAIjkB,EAAQA,SAAClI,KAAKsB,QAAQuG,UAAY,OAAS7H,KAAKqc,GAAG1R,GAAGlO,MAAMS,YAAc,MAAQ8C,KAAKmsB,aAEjHhN,eACI,OAAOnf,KAAK8P,SAAW9P,KAAK+rB,WAAa/rB,KAAK8rB,WAElDkG,kBAAkBhvB,GACd,OAAO,IAAI0L,QAAQ,CAACE,EAASC,KACzB,MAAMtJ,EAASvF,KAAKsB,QAAQuvB,aAAevb,GAAO,IAAMtV,KAAKsB,QAAQuvB,YAAY7tB,EAAK,CAACoC,IAAKpF,KAAKoF,OAC7FG,GAAU7E,EAAE,QAACyD,SAASoB,EAAOC,MAC7BD,EAAOC,KAAKoJ,GAASlJ,MAAMmJ,GAE3BD,OAIZiiB,YAAY7tB,GACR,OAAO,IAAI0L,QAAQ,CAACE,EAASC,KACzB,MAAMpJ,EAAMzC,GAAOA,EAAI6tB,aAAevb,GAAO,IAAMtS,EAAI6tB,YAAY7tB,EAAK,CAACoC,IAAKpF,KAAKoF,OAC/EK,GAAO/E,EAAE,QAACyD,SAASsB,EAAID,MACvBC,EAAID,KAAKoJ,GAASlJ,MAAMmJ,IACT,IAARpJ,EACPoJ,IAEAD,MAELpJ,KAAK,IACGxF,KAAKgyB,kBAAkBhvB,KAGtCqS,aAAaxN,GACT,OAAO,IAAI6G,QAAQ,CAACE,EAASC,KACzB,MAAMpJ,EAAMzF,KAAKsB,QAAQ+T,cAAgBC,GAAO,IAAMtV,KAAKsB,QAAQ+T,aAAaxN,EAAU,CAACzC,IAAKpF,KAAKoF,OACjGK,GAAO/E,EAAE,QAACyD,SAASsB,EAAID,MACvBC,EAAID,KAAKoJ,GAASlJ,MAAMmJ,IACT,IAARpJ,EACPoJ,IAEAD,SC1HD,SAAmBgd,GAC9BtiB,EAAM,QAACsiB,EAAQ3L,UAAW,CACtBgS,iBAAiB5rB,EAAMmK,GACnB,MAAM6F,EAAShQ,EAAKgQ,QAAUrW,KAAKsB,QAAQ4wB,YAC3C,OAAOlyB,KAAKmyB,cAAc9rB,EAAMmK,EAAI6F,IAExC8b,cAAc9rB,EAAM9B,EAAM8R,EAAQ/T,GAO9B,OANAzF,OAAO6K,KAAKnD,GAAMoD,QAAQgB,IACtB,MAAM8Q,EAAKzZ,KAAKoyB,WAAW/rB,EAAM9B,EAAKoE,GAAI0N,EAAQ/T,GAC9CmX,IACAlV,EAAKoE,GAAK8Q,KAGXlV,GAEX6tB,WAAW/rB,EAAMoT,EAAIpD,EAAQ/T,GACzB,GAAI5B,EAAE,QAACyD,SAASsV,MAAoB,IAAXpD,IAAqB3V,EAAE,QAACiT,MAAM0C,IAAYoD,EAAG4Y,UAClE,OAAOryB,KAAKqW,OAAOhQ,EAAMoT,EAAIpD,GAC1B,IAAK/T,GAAQnF,MAAMsB,QAAQgb,IAAOA,EAAG,KAAO/Y,EAAAA,QAAG/D,OAAO8c,EAAG,KAAO/Y,EAAAA,QAAGyD,SAASsV,EAAG,KAClF,OAAOzZ,KAAKmyB,cAAc9rB,EAAMoT,EAAIpD,GAAQ,GACzC,GAAI3V,EAAE,QAAC/D,OAAO8c,GAAK,CACtB,MAAMlX,EAAMqgB,UAAQnJ,GACpB,GAAIlX,GAAOkX,IAAOlX,EACd,OAAOA,EAAI8vB,SAAWryB,KAAKoyB,WAAW/rB,EAAM9D,EAAK8T,GAAQ,GAAQ9T,IAI7E+vB,UAAUhmB,GACN,IAAIyT,EAAQ,GAAI1Z,EAAOiG,EAAIjG,MAAMksB,WAACA,EAAUnsB,MAAEA,EAAK7J,KAAEA,EAAI8Z,OAAEA,GAAUhQ,EACjEtH,EAAOsH,EAAKtH,MAAQ,GAkCxB,OAjCI2B,EAAE,QAACmnB,UAAU9oB,IACbA,EAAK4I,QAAQ6qB,IACT,IAAKA,EAAW,OAChB,IAAIC,EACAC,EAAUH,GAAcnsB,GAAS7J,EAMrC,GALImE,EAAE,QAAC7D,OAAO21B,KACVC,EAAcD,EAAUnc,OAExBqc,GADAF,EAAYA,EAAUj2B,MACF+oB,QAAUoN,GAE9BA,EAAS,CACT,MAAMC,EAAWlV,EAAAA,QAAO,GAAGiV,KAAWF,KAChC/Y,EAAKA,IAAImZ,KACP5yB,KAAK2K,GAAG6lB,eAAiBxwB,KAAK2K,GAAG6lB,aAAamC,KAC9C3yB,KAAK2K,GAAG6lB,aAAamC,GAAY,MAErC3yB,KAAK2K,GAAG5L,KAAK4zB,KAAaC,GAC1B5yB,KAAK2K,GAAG5L,KAAK,aAAc4zB,KAAaC,GACxC5yB,KAAK6d,IAAI3c,MAAMyxB,KAAaC,IAIhC,GAFAnZ,EAAGoZ,QAAS,EAEPJ,IAA0B,IAAXpc,EAEb,CACH,IAAIyc,EAAUL,GAAepc,GAAUrW,KAAKsB,QAAQ4wB,YACpDnS,EAAM1F,EAAAA,QAAOmY,IAAc9xB,EAAAA,QAAGiT,MAAMmf,GAAWrZ,EAAKzZ,KAAKqW,OAAOhQ,EAAMoT,EAAIqZ,QAH1E/S,EAAM1F,EAAM,QAACmY,IAAc/Y,KAS3CnN,EAAI9N,SAASgS,GAAKuP,EACXA,GAEXiQ,cAAc+C,EAAM1c,GAChB,MAAMsT,EAAOoJ,EAAKnc,QAAUmc,EAAKnc,OAAO+S,KAClChf,EAAMooB,EAAKnc,QAAUmc,EAAKnc,OAAO9F,QAAQnG,IAAO3K,KAAK2K,IACrDtI,OAACA,EAAMgE,KAAEA,GAAQsE,EAAGlO,MAC1B,MAAO,CACHmL,GAAI+hB,GAAQ3pB,KAAKoF,IACjBA,IAAKukB,GAAQ3pB,KAAKoF,IAClBiB,KAAAA,EACA0sB,KAAMA,EAAKvZ,WACXnX,OAAAA,EACAgU,OAAAA,IAGRA,OAAO0c,EAAMhP,EAAK1N,GACd,GAAI0N,EAAIiP,SAAU,CACd,GAAIhzB,KAAK6rB,WAAa7rB,KAAK8P,QACvB,OAAOiU,EACXA,EAAMA,EAAIiP,SAGd,MAAMlzB,EAAIE,KAEJyZ,EAAK,YAAa3G,GACpB,MAAMvO,EAAOzE,EAAEkwB,cAAc+C,EAAM1c,GAGnC,OAFA9R,EAAKuO,KAAO,IAAIA,GAChBA,EAAKmd,QAAQ1rB,GACNwf,EAAImM,MAAMlwB,KAAM8S,IAI3B,OAFA2G,EAAGuZ,SAAWjP,EACdtK,EAAGwZ,OAASlP,EAAIkP,OACTxZ,GAEXyZ,WAAW50B,EAAKgb,EAAKrL,GACjB,GAAI3P,GAAsB,iBAARA,GAAoBA,EAAIoL,QAAQ,OAAS,GAAKpL,EAAIoL,QAAQ,OAAS,EAAG,CACpF,MAAMzG,EAAM3E,EACN60B,EhB+Hf,SAAoB70B,GACvB,MAAM80B,EAAQ,mBACd,IAAIvc,EACJ,MAAMwc,EAAU,GAChB,KAAqC,QAA7Bxc,EAAQuc,EAAMpE,KAAK1wB,KACnBuY,EAAM,KACNwc,EAAQxc,EAAM,KAAM,GAG5B,OAAOha,OAAO6K,KAAK2rB,GgBxIMC,CAAWh1B,GAElBiY,EAAYnQ,IACd,IACI7D,EADAoQ,GAAO,EAEX,GAAI1E,GAAqC,IAA5B7H,EAAMsD,QAAQ,UAAiB,CACxC,MAAM6pB,EAASntB,EAAMrC,MAAM,KAC3BwvB,EAAOC,QACH/zB,EAAAA,YAAYwO,EAAMnQ,MAAOy1B,EAAO,MAChC5gB,GAAO,EACPpQ,EAAM+W,EAAMA,EAAI,CACZtK,GAAI,SAAWukB,EAAO,GAAK,IAAMtlB,EAAM5H,KAAKuQ,OAAO5H,GACnDuH,SAAUA,IACCkF,GAAQxN,EAAMnQ,MAAOy1B,KAE/B9X,GAAQxN,EAAMnQ,MAAOy1B,IAMlC,OAHK5gB,IACDpQ,EAAM+W,EAAMA,EAAIlT,GAASpG,KAAKqc,GAAG+U,YAAYhrB,IAE1C7D,GAGLkxB,EAAaC,IACf,MAAMlf,EAAS,GACfkf,EAAK/rB,QAAQpG,IACLA,EAAKwH,IACLyL,EAAO5K,KAAKrI,EAAKwH,KACVxH,EAAKI,UACZ6S,EAAO5K,KAAK6pB,EAAUlyB,EAAKI,aAGnC,IAAIgR,GAAO,EAOX,OANA6B,EAAO7M,QAAQ,CAACvB,EAAOoY,KACN,MAATpY,GAA0C,IAAxBA,EAAMsD,QAAQ,MAAsC,IAAvBtD,EAAMsD,QAAQ,OAC7D8K,EAAOgK,GAAOpY,EAAMutB,MAAM,GAAI,GAC9BhhB,GAAO,KAGO,IAAlB6B,EAAOtV,SAAiByT,GAASihB,MAAM9xB,OAAO0S,EAAO,KAGlD+B,EAAS/B,EAAOrV,KAAK,MAFjBqV,EAAO,IAKtB,IAAIqf,EAeJ,GAdAV,EAAKxrB,QAAQ5G,IACT,MAAMgD,EAAQhD,EAAEgD,MAAM,MAChBqC,EAAQrC,EAAM,GAAG+vB,OACvB,GAAI1tB,EAAO,CACP,MAAMiJ,GAAOtL,EAAM,IAAM,IAAI+vB,OACvBJ,EhBwGvB,SAASK,EAAoBC,GAChC,MAAMC,EAAS,GACf,IAAIC,EAAU,GACVC,EAAQ,EAEZ,IAAK,IAAIjyB,EAAI,EAAGA,EAAI8xB,EAAS90B,OAAQgD,IAAK,CACtC,MAAMkyB,EAAOJ,EAAS9xB,GAET,MAATkyB,GACc,IAAVD,GAAeD,IACfD,EAAOrqB,KAAK,CAAC3M,KAAM,MAAOa,MAAOo2B,IACjCA,EAAU,IAEdC,IACAD,GAAWE,GACK,MAATA,GACPD,IACAD,GAAWE,EAEG,IAAVD,IACAF,EAAOrqB,KAAK,CACR3M,KAAM,UACNa,MAAOi2B,EAAoBG,EAAQP,MAAM,GAAI,MAEjDO,EAAU,KAEE,MAATE,GAA0B,IAAVD,EACnBD,IACAD,EAAOrqB,KAAK,CAAC3M,KAAM,MAAOa,MAAOo2B,IACjCA,EAAU,IAGdA,GAAWE,EAQnB,OAJIF,GACAD,EAAOrqB,KAAK,CAAC3M,KAAM,MAAOa,MAAOo2B,IAG9BD,EAAOv1B,IAAI21B,GACK,QAAfA,EAAMp3B,KACC,CAAC8L,IAAKsrB,EAAMv2B,OAEZ,CAAC6D,SAAU0yB,EAAMv2B,QgBpJCi2B,CAAoB3tB,GACjC,IAAI7D,EAAM+S,GAAO,IAAMme,EAAUC,KACrB,MAAPnxB,GAAuB,KAARA,IAAewB,EAAM7E,OAAS,IAC9CqD,EAAM8M,GAEVwkB,EAAUtxB,EACVjE,EAAMA,EAAIg2B,WAAW,KAAKvzB,MAAc,MAAPwB,EAAc,GAAKA,MAGxC,IAAhB4wB,EAAKj0B,QAAgB+D,IAAQ,KAAKkwB,EAAK,OACvC,OAAOU,EAGf,OAAOv1B,GAEXqyB,aAAarvB,EAASgY,EAAKjT,GACvB,IAAI4H,EACA5H,GAAQA,EAAKuQ,SACb3I,EAAQ5H,EAAKuQ,OAAOwS,kBAExB,MAAMmL,EAAUj2B,GACL0B,KAAKkzB,WAAW50B,EAAKgb,EAAKrL,EAAQ,CAAC5H,KAAAA,EAAMvI,MAAQkC,KAAKksB,YAAYje,EAAMe,KAAO,IAAO,MAejG,OAZA1N,EAAQ8C,OAASmwB,EAAQjzB,EAAQ8C,QAAU,IAE3C,CAAC,UAAW,OAAQ,SAASuD,QAAQoB,IACjC,GAAIzH,EAAQyH,GAAM,CACd,MAAMxE,EAAOpH,MAAMsB,QAAQ6C,EAAQyH,IAAQ,GAAK,GAChDlM,OAAO6K,KAAKpG,EAAQyH,IAAMpB,QAAQgB,IAC9BpE,EAAKgwB,EAAQ5rB,IAAM4rB,EAAQjzB,EAAQyH,GAAKJ,MAE5CrH,EAAQyH,GAAOxE,KAIhBjD,KD5DnBkzB,CAAU5I,INlIK,SAAiBA,GAC5BtiB,EAAM,QAACsiB,EAAQ3L,UAAW,CACtB4R,UACI,MAAM4C,EAAOz0B,KAAKsB,QAAQmzB,KAC1B,IAAKA,EAAM,OACX,IAAIC,EAAQ,GACRC,GAgCEhjB,EAhCe3R,KAAK2R,OAiCrBzS,OAAS,GAAK,GAAK01B,KAAKC,KAAKljB,EAAMzS,OAAS,GAD7D,IAAkByS,EA/BFjR,EAAE,QAAC7D,OAAO43B,KACNA,EAAKC,QAAOA,EAAQI,SAASL,EAAKC,MAAO,KAAOA,GAChDD,EAAKE,QAAOA,EAAQG,SAASL,EAAKE,MAAO,KAAOA,IAExDrrB,EAAAA,QAAOtJ,KAAM,CACT00B,MAAAA,EACAC,MAAAA,EACAlI,QAASzsB,KAAK2R,MAAMzS,QAAUw1B,IAGlC10B,KAAK6d,IAAIK,IAAI,WAAY,IAAMle,KAAK2K,GAAG5L,KAAK,WAAYiB,KAAKoF,MAC7DpF,KAAK+0B,YAETA,WACI,MAAMC,EAASA,KACPh1B,KAAKysB,SACLzsB,KAAK6d,IAAIQ,KAAKgK,GAAO2M,GACrBh1B,KAAK6d,IAAI3c,MAAM,cAEflB,KAAK00B,OAAS10B,KAAK20B,MACnB30B,KAAKysB,QAAUzsB,KAAK2R,MAAMzS,QAAUc,KAAK00B,MACzC10B,KAAK8xB,WACL9xB,KAAKif,YAGbjf,KAAK6d,IAAIK,IAAImK,GAAO2M,MMmGhCnD,CAAQjG,IErIO,SAAmBA,GAC9BtiB,EAAM,QAACsiB,EAAQ3L,UAAW,CACtBgV,gBACIj1B,KAAKwJ,UAAY0rB,aAAal1B,KAAKwJ,UACnCxJ,KAAKwJ,SAAW,MAEpB2rB,aAAa1b,GACTzZ,KAAKi1B,gBACLj1B,KAAKwJ,SAAW4rB,WAAW,KACvB3b,IACAzZ,KAAKwJ,SAAW,MACjB,KAEP3J,SAII,QAFEG,KAAKusB,SAEHvsB,KAAK2K,GAAG8R,WAAWK,OAAS,EACrB9c,KAAK6R,QAAQhS,UAEpBG,KAAK2K,GAAG8R,WAAWK,OAAS,EACrB,OFiHvBuY,CAAUzJ,IJjIK,SAAmBA,GAC9BtiB,EAAM,QAACsiB,EAAQ3L,UAAW,CACtBsQ,YAAY9W,GACR,MAAMzK,EAAKhP,KAAKusB,SAChB/iB,EAAAA,SAAS,KACLwF,IAAOhP,KAAKusB,WAAa9S,EAAKA,IAAOzZ,KAAKif,cAGlDqW,UAAU/mB,GACN,MAAMlI,EAAOyS,GAAQvK,GAmBrB,OAjBA1R,OAAOsc,iBAAiB9S,EAAM,CAC1BmT,WAAYjB,GAAWhK,GAAO,KAyU9C,SAAkBlI,GACd,MAAMgJ,ETvVC,CACH5S,MAAO,GACP+T,GAAI,GACJlP,QAAS,GACTK,SAAU,GACVyK,QAAQ,EACR0T,SAAS,EACThiB,WAAOc,GSkVX/B,OAAO6K,KAAK2H,GAAK1H,QAAQgB,IAChBlJ,EAAAA,YAAY4G,EAAMsC,KAAItC,EAAKsC,GAAK0G,EAAI1G,MA1UrC4sB,CAASlvB,GACTrG,KAAKqtB,YAAYhnB,GAEjB,CAACA,EAAMA,EAAa,OAAGA,EAAa,QAAGsB,QAAQpG,IACtCA,GAGLvB,KAAKw1B,OAAOj0B,EAAM8E,KAEtBrG,KAAKy1B,SAASpvB,GACVA,EAAKkK,SACLlK,EAAKkK,OAASqS,EAAAA,QAAQvc,EAAKkK,SAExBlK,GAEXmvB,OAAOj0B,EAAM8E,GACT,CAAC,KAAM,QAAS,QAAQsB,QAAQgB,IAC5BpH,EAAKoH,IAAM3I,KAAKiyB,iBAAiB5rB,EAAM9E,EAAKoH,OAGpD8sB,SAASpvB,GACLA,EAAKqvB,SAAWrvB,EAAKqvB,QAAQ/tB,QAAQqhB,IAC7BA,EAAKhG,SACLgG,EAAKhG,OAASJ,EAAAA,QAAQoG,EAAKhG,YAIvC2S,SAASrpB,GACL,MAAMjG,EAAOiG,EAAIjG,KACjB3F,EAAAA,QAAGmnB,UAAUxhB,EAAK2Q,OAASxH,EAAU,QAAC,CAAC,CACnCgB,GAAInK,EAAK2Q,KAAKoC,OAAO,CAACwc,EAAKjpB,KACvBipB,EAAqB,iBAATjpB,GAAqBA,EAAKoT,OAAU,UAAUpT,GAAWpK,IACjE8D,EAAK5J,MAAuB,iBAATkQ,GAAqBA,EAAKA,MAASA,GAAQpK,EAC9DvC,KAAK2K,GAAG5L,KAAK,OAAQ4N,EAAMpK,EAAK8D,EAAMrG,KAAKid,OAExC2Y,GACR,MACHtpB,EAAI9N,WAEZszB,WAEI9xB,KAAKssB,WAAY,EACjBtsB,KAAK8P,SAAU,EACX9P,KAAKysB,SACLzsB,KAAK6d,IAAI3c,MAAM,cAEnBlB,KAAK8H,eAAe,KAGhB,GAFA9H,KAAK61B,UAAU71B,KAAK2R,OACpB3R,KAAK8P,SAAU,EACX9P,KAAKssB,WAAatsB,KAAKysB,QACvB,OAAOzsB,KAAK8xB,WAEhB9xB,KAAK81B,WACD91B,KAAKysB,SACLzsB,KAAK6d,IAAI3c,MAAM,YAEnBlB,KAAK2K,GAAG8R,WAAWM,gBAG3BiJ,aAAarkB,EAAUqa,GAMnB,GALAhc,KAAKssB,WAAY,EACjBtsB,KAAK8P,SAAU,EACf9P,KAAK6d,IAAI3c,MAAM,cACflB,KAAK61B,UAAUl0B,EAAUqa,GACzBhc,KAAK8P,SAAU,EACX9P,KAAKssB,UACL,OAAOtsB,KAAK8xB,WAEZ9xB,KAAK81B,WACL91B,KAAK6d,IAAI3c,MAAM,YAEnBlB,KAAK6R,QAAQ0R,WAAWvH,IAE5B6Z,UAAUlkB,EAAOqK,GAEb,MAAM+Z,EAAY7zB,IACd,IAAI0zB,EAAMjkB,EAAMzP,EAAI,GACpB,IAAK0zB,IAAQA,EAAIhf,OACb,OAAO1U,EAAI,EAAI6zB,EAAS7zB,EAAI,IAAM,EAEtC,IAAIqH,EAAQvJ,KAAKoH,KAAKsC,QAAQksB,EAAIhf,OAAO5H,IACzC,OAAOzF,GAAS,EAAIA,EAAQwsB,EAAS7zB,EAAI,IAGvC8jB,EAAeA,CAACrkB,EAAUqa,KACxBtb,EAAE,QAACmnB,UAAUlmB,IACb3B,KAAK61B,UAAUl0B,EAAUqa,IAI3BiI,EAAOtS,EAAMjT,IAAI,CAAC6P,EAAOhF,KAC3B,GAAIyS,IAAWtb,EAAAA,QAAG7D,OAAO0R,GAAQ,OACjC,IAAKvO,KAAKysB,UAAYzQ,GAAUzS,GAASvJ,KAAK00B,MAAO,OAErD,GAAInmB,EAAMqI,QAAUrI,EAAMqI,OAAO8R,OAAS/W,GAAS3R,KAAKikB,KAAK1V,EAAMqI,OAAO5H,IAEtE,OADAgX,EAAazX,EAAMqI,OAAO2N,sBAAuBhW,EAAMqI,QAChDrI,EAAMqI,OAGjB,IAAIvQ,EAAOyS,GAAQvK,GAEnB,MAAMynB,EAAWA,OACH3vB,EAAKD,QAASpG,KAAK8sB,SAASzmB,EAAKD,QAAUpG,KAAK8sB,SAASzmB,EAAKD,OAAO,KAAOmI,EAAMqI,QAUhG,IAAItK,EAPJtM,KAAKqc,GAAG8J,iBAAiB,WAAY,CAAC9f,KAAAA,EAAMjB,IAAKpF,KAAKoF,KAAMpF,KAAKqc,IACjErc,KAAKi2B,WAAW5vB,EAAM,OAAQ,CAAC6vB,OAAQF,MAEnCA,KACAh2B,KAAK2K,GAAG5L,KAAK,eAAgBwP,EAAOvO,KAAKoF,KAI7C,IAAI+wB,GAAS,EACTC,IAAW7nB,EAAMqI,OACjBjQ,EAAeN,EAAKvI,MACxB,GAAIs4B,EAGA,GAFA9pB,EAAMiC,EAAMqI,OACZjQ,EAAe2F,EAAI3F,aACf2F,EAAI0e,QAAS,CACb,GAAI/B,GAAO3c,GACP,OAEJA,EAAIiE,OAAOvQ,WAEX,IAAKsM,EAAIge,MAAMtqB,MAAO,CAClB,GAAIipB,GAAO3c,GACP,OAEJqF,EAAMpI,GAASgF,EAAQA,EAAM+R,OAAS/R,EAAM+R,SAAW+V,EAASA,UAAC9W,SAAOhR,IACxEjC,EAAM,KACN6pB,GAAS,EAIrB,GAAK7pB,EAKGA,EAAIsY,aAAetY,EAAIjG,KAAKpJ,MAC5BqP,EAAI0d,aAERhqB,KAAKs2B,WAAWhqB,GAChBtM,KAAKqtB,YAAY/gB,EAAIjG,MACjBiG,EAAI0P,QAAU1P,EAAI0P,SAAWA,GAC7Bhc,KAAKu2B,cAAcjqB,OAXjB,CACN,MAAMjG,EAAOrG,KAAKs1B,UAAU/mB,GAC5BjC,EAAM,IAAIgc,GAAYtoB,KAAMqG,EAAMM,GAClC3G,KAAKs2B,WAAWhqB,GAWpBtM,KAAKsyB,UAAUhmB,GACftM,KAAK21B,SAASrpB,GACdA,EAAI0P,OAASA,GAAU,KACvB1P,EAAIoc,KAAO/W,EACX3R,KAAKw2B,OAAOlqB,GAEP6pB,GAAWC,IACZp2B,KAAK0nB,OAAOpb,EAAK,QACjBtM,KAAKmT,WAAW7G,EAAK,SAGzBtM,KAAK0nB,OAAOpb,EAAK,WAEjB,MAAMyZ,EAAQzZ,EAAIiY,sBAGlB,IAF4B,IAA5BjY,EAAIgL,OAAO0O,cAA0BA,EAAaD,EAAOzZ,IAEpD0P,EAAQ,CACT,MAAMya,EAAYV,EAASxsB,GACvBktB,GAAa,IAAMltB,EACnBvJ,KAAKoH,KAAK0C,OAAO2sB,EAAY,EAAG,EAAGnqB,EAAI0C,IAEvChP,KAAKoH,KAAKwC,KAAK0C,EAAI0C,IAI3B,MAAM+J,EAAIzM,EAAIjG,KAcd,OAbKiG,EAAIwS,UACLxS,EAAIwS,SAAU,EACVpe,UAAGyD,SAAS4U,EAAExI,SACdvQ,KAAK6d,IAAIyS,MAAM,WAAY,KACvBtwB,KAAK02B,cAAcpqB,EAAKyM,EAAEjb,MAAO,UAGzCkC,KAAK0nB,OAAOpb,EAAK,WAKjBtM,KAAK22B,eAAerqB,KAAMtM,KAAKssB,WAAY,GACxChgB,IACRtH,OAAOjE,KAAOA,GACbib,IACAA,EAAOra,SAAWsiB,IAG1B0S,eAAerqB,GACX,OAAOA,EAAIxD,OAASwD,EAAIjG,KAAKqvB,SAAW11B,KAAK42B,QAAQtqB,IAEzDsqB,QAAQtqB,GACJ,MAAMuqB,EAyIlB,SAAiBvqB,GACb,MAAMopB,EAAUppB,EAAIjG,KAAKqvB,SAAW,GACpC,OAAIh1B,EAAE,QAAC7D,OAAO64B,GAAiB,CAACA,GACpBA,EA5IaoB,CAAQxqB,GAAMmC,EAAW,GAAIrJ,EAAMpF,KAAKoF,IACzD,IAAKyxB,EAAS33B,OAAQ,OAAO,EAE7B,IAAK,IAAIgD,EAAI,EAAGA,EAAI20B,EAAS33B,OAAQgD,IAAK,CACtC,MAAMwzB,EAAUmB,EAAS30B,GAAI60B,EAAWrB,EAAQ1S,QAAU,SAAUzgB,GAChE,OAASoY,GAAU+a,EAAQ/a,WAAa,OAASA,GAAU,OAAOpY,EAAKmzB,EAAQ53B,QAEnF,IAAK4C,EAAAA,QAAGmnB,UAAU6N,EAAQrvB,MAAO,SACjC,MAAM9B,EAAO,IACNmxB,EACHsB,MAAO1hB,GAAO,IAAMyhB,EAASzqB,EAAIjG,KAAKvI,MAAOsH,IAC7C4jB,KAAMD,GAASzc,EAAKopB,EAAQrvB,MAC5B4wB,SAAUv2B,EAAE,QAAC/D,OAAO+4B,EAAQrvB,KAAK,KAEhC9B,EAAKyyB,OAASzyB,EAAKykB,OAAWzkB,EAAKyyB,QAAUzyB,EAAKykB,OAASzkB,EAAK0yB,UACrExoB,EAAS7E,KAAKrF,GAElB,IAAKkK,EAASvP,OAAQ,OAAO,EAE7B,MAAMg4B,EAAU,GAChB,IAAIvkB,GAAO,EAqEX,OApEA3S,KAAK8H,eAAe,KAChB2G,EAAS0oB,UAAUxvB,QAAQ,EAAEsvB,SAAAA,EAAUD,MAAAA,EAAO3wB,KAAAA,EAAMonB,QAAAA,EAASpL,OAAAA,EAAQyF,MAAAA,EAAOkB,KAAAA,EAAM1kB,OAAAA,MAC9E,GAAI2yB,EAyBA,OAxBAD,EAAQ1qB,EAAIqc,SAAS/e,KAAK,CACtBsf,QAAQ,EACRvnB,SAAU0E,EACV2wB,MAAAA,IAEGhO,GAAQ1c,EAAIqc,SAAS7e,OAAOwC,EAAIqc,SAASjf,QAAQsf,KAAU,EAAG,QACrEkO,EAAQF,EAAQ,OAAS,WAAW,KACjB,aAAX1yB,GAAoC,YAAXA,EACzBtE,KAAKoF,IAAItI,UAAUk6B,EAAO3wB,GACR,YAAX/B,GAAmC,SAAXA,EAC/BtE,KAAKoF,IAAI0a,QAAQkX,EAAO3wB,GACN,aAAX/B,GACP+B,EAAKsB,QAAQpG,IACTvB,KAAKoF,IAAIopB,UAAUjtB,EAAM,WAAYy1B,KAEpCA,GACDh3B,KAAKoF,IAAI0J,mBAAmBzI,IAGhCrG,KAAKoF,IAAIgH,QAAQ4qB,EAAO3wB,KAOpC,GAAI2wB,EAAO,CACPrkB,GAAO,EACP,MAAMykB,EAAU,CACZn6B,KAAM,WACNiV,QAAQ,EACRgX,QAAQ,EACRvnB,SAAU0E,GAEdiG,EAAIqc,SAAS/e,KAAKwtB,GAClBp3B,KAAK6d,IAAIyS,MAAM,aAAc,KAErB7C,EACAroB,EAAIqoB,QAAQ2J,EAAS3J,EAAS3F,GACvBzF,GAAUyF,EACjB1iB,EAAIid,OAAO+U,EAAS/U,GAAU/V,EAAI0C,GAAI8Y,GAEtCxb,EAAIoc,KAAK5e,OAAOwC,EAAIoc,KAAKhf,QAAQ4C,EAAIyY,QAAU,EAAG,EAAGqS,SAG1D,CACH9qB,EAAIqc,SAAS7e,OAAOwC,EAAIqc,SAASjf,QAAQsf,GAAO,GAChD,MAAMqO,EAAU9d,GAAMyP,GACtBqO,GAAWA,EAAQpM,UAI3BiM,EAAQh4B,SACJc,KAAK8P,QACLonB,EAAQh4B,QAAUc,KAAK6d,IAAIyS,MAAM,WAAY,KACzC4G,EAAQvvB,QAAQ5G,GAAKA,OAGzBm2B,EAAQh4B,QAAUsK,EAAAA,SAAS,KACvB0tB,EAAQvvB,QAAQ5G,GAAKA,QAIjCf,KAAK2K,GAAG5L,KAAK,UAAWuN,EAAIyY,OAAQ/kB,KAAKoF,KACzCpF,KAAK0nB,OAAOpb,EAAK,WACVqG,GAEX2M,WAAW3N,GACP,OAAO3R,KAAKs3B,YAAY3lB,IAE5B2lB,YAAY3lB,GAEHA,IAAOA,EAAQ3R,KAAK2R,OAEzB,MAAMsS,EAAO,IAAIjkB,KAAKikB,MAEtBjkB,KAAKi1B,gBACLj1B,KAAK4sB,SAASjb,GACd3R,KAAKqc,GAAG1K,MAAQA,EAEhB3R,KAAK8H,eAAe,KAChB9H,KAAK6d,IAAIyS,MAAM,WAAY,KACvBzzB,OAAO6K,KAAKuc,GAAMjf,OAAOgK,QAAwBpQ,IAAlBoB,KAAKikB,KAAKjV,IACpCrH,QAAQqH,GAAMhP,KAAKorB,MAAMnH,EAAKjV,KACnChP,KAAK6R,QAAQyR,kBAEjBtjB,KAAK8rB,WAAY,EACjB9rB,KAAK8xB,WACL9xB,KAAK8rB,WAAY,EACjB9rB,KAAKif,UACLjf,KAAK6d,IAAI3c,MAAM,YAAalB,KAAKoF,OAGrCpF,KAAK6d,IAAIQ,KAAK,YAAare,KAAK0sB,YAChC1sB,KAAK6d,IAAIyS,MAAM,YAAatwB,KAAK0sB,YACjC1sB,KAAK6d,IAAI3c,MAAM,SAAUlB,KAAKoF,MAGlC6Z,UACIjf,KAAK2K,GAAG8R,WAAWwC,aI9M/BsY,CAAU3L,IHpIK,SAAkBA,GAC7BtiB,EAAM,QAACsiB,EAAQ3L,UAAW,CACtBjY,SAASsE,EAAKxO,EAAOkI,EAAWwxB,GACxBlrB,EAAI0e,UACR1e,EAAIjG,KAAKvI,MAAQA,EACjBkC,KAAKwsB,cAAe,EACpBxsB,KAAKuwB,cACLvwB,KAAK6R,QAAQ0R,WAAWjX,GACxBtM,KAAKy3B,YAAYnrB,EAAKtG,GACtBhG,KAAK03B,YACL13B,KAAK23B,YAAYrrB,EAAKxO,GACtBkC,KAAK2K,GAAG5L,KAAK,SAAUuN,EAAIlG,MAAOtI,EAAOwO,EAAIyY,OAAQ/kB,KAAKoF,IAAKoyB,IAAW,GAC1Ex3B,KAAK0nB,OAAOpb,EAAK,SACjBtM,KAAKmT,WAAW7G,EAAK,QAAS,CAACxO,MAAAA,IAC/BkC,KAAKsU,UAAU,SAAUhI,EAAIlG,MAAOtI,EAAO,CACvCuI,KAAMiG,EAAIyY,OACV3f,IAAKpF,KAAKoF,IACVoyB,QAASA,IAAW,IAEpBA,GACAhuB,EAAAA,SAAS,KACLA,EAAAA,SAAS,KACLA,EAAAA,SAAS,KACLxJ,KAAKoF,IAAI0J,mBAAmBxC,EAAI0C,UAKhDhP,KAAK8T,SAAS8jB,YAAYtrB,EAAKxO,EAAOkI,EAAWwxB,KAErD14B,QAAQwN,EAAKxO,GACT,IAAIyE,EACA+J,EAAIxD,QAAU9I,KAAK63B,QAAQvrB,EAAK/J,EAAM+J,EAAIgL,OAAOsQ,QAAQ9pB,EAAOwO,KAAStM,KAAK83B,SAASxrB,EAAKxO,KAC5FkC,KAAKgI,SAASsE,EAAK/J,EAAKzE,IAGhCkpB,cAAc1a,EAAK/H,GACfvE,KAAK8H,eAAe,KAChB,MAAMmG,EAAQ3B,EAAI8c,iBACZ9e,EAAU2D,EAAQjO,KAAKksB,YAAYje,EAAMe,IAAM,KAC/C+oB,EAAU,GAChBl7B,OAAO6K,KAAKnD,GAAQ,IAAIoD,QAAQgB,IACxB2B,GAAW7K,EAAAA,YAAY6K,EAAS3B,GAChCovB,EAAQpvB,GAAKpE,EAAKoE,GACXlJ,EAAWA,YAACO,KAAKoF,IAAIiC,KAAMsB,GAClC3I,KAAKoF,IAAIiC,KAAKsB,GAAKpE,EAAKoE,GACjB3I,KAAKoF,IAAIoX,MAAQxc,KAAKoF,KAAO3F,cAAYO,KAAKoF,IAAIoX,IAAInV,KAAMsB,KACnE3I,KAAKoF,IAAIoX,IAAInV,KAAKsB,GAAKpE,EAAKoE,MAGhC9L,OAAO6K,KAAKqwB,GAAS74B,QACrBc,KAAKoF,IAAIoqB,oBAAoBvhB,EAAM5H,KAAM0xB,MAIrDpQ,YAAYrb,EAAKxO,GACbkC,KAAKy3B,YAAYnrB,EAAKxO,GACtBwO,EAAIpP,WAAaY,EACjBkC,KAAKuwB,cACLvwB,KAAK6R,QAAQ0R,WAAWjX,IAE5BmrB,YAAYnrB,EAAKxO,GACbwO,EAAIpP,WAAaY,EACjB,MAAMmQ,EAAQ3B,EAAI8c,iBACdnb,IACKjO,KAAKksB,YAAYje,EAAMe,MACxBhP,KAAKksB,YAAYje,EAAMe,IAAM,IAEjChP,KAAKksB,YAAYje,EAAMe,IAAI1C,EAAIlG,OAASkG,EAAIjG,KAAKvI,OAErDsiB,EAAIA,KAACpgB,KAAK6H,SAAUyE,EAAI0C,GAAIlR,IAEhCy4B,cAAcjqB,GACV,MAAM2B,EAAQ3B,EAAI8c,iBACdnb,GAASjO,KAAKksB,YAAYje,EAAMe,YACzBhP,KAAKksB,YAAYje,EAAMe,IAAI1C,EAAIlG,QAG9CmhB,YAAYjb,GACR,OAAOtM,KAAK6H,SAASyE,EAAI0C,KAE7B8mB,WACI,MAAMvxB,EAAOoY,WAAS,IAChBnI,EAASxU,KAAKwU,SACd4X,EAAe,IACY,IAA7BpsB,KAAKsB,QAAQ+rB,aACbxwB,OAAO6K,KAAK1H,KAAKmsB,YAAY/S,OAAO,CAACC,EAASjT,MACX,IAA3BoO,EAAO9K,QAAQtD,KACfiT,EAAQjT,GAASxI,EAAAA,MAAMoC,KAAKmsB,WAAY/lB,IAErCiT,GACR9U,GAEPiQ,EAAO4E,OAAO,CAACC,EAASjT,KACpB,IAAIkG,GAAOtM,KAAK8sB,SAAS1mB,IAAU,IAAIpB,OAAOsH,IAAQtM,KAAKg4B,SAAS1rB,IAAM,GAM1E,OALKA,IACDA,EAAMtM,KAAK8sB,SAAS1mB,GAAO,GAC3BgmB,EAAaxiB,KAAKxD,IAEtBiT,EAAQjT,GAASxI,EAAAA,MAAM0O,EAAIjG,KAAM,SAC1BgT,GACR9U,GACHvE,KAAKqH,KAAO9C,EACZvE,KAAKosB,aAAeA,EACpBpsB,KAAK03B,aAETM,SAAS1rB,GACL,OAA2B,IAApBA,EAAIjG,KAAKkpB,SAAyC,WAApBjjB,EAAIjG,KAAKkpB,QAAuBvvB,KAAKsB,QAAQ22B,qBAAuB3rB,EAAI+d,aAEjHgD,YAAYhnB,IACFA,EAAKD,OAAU3G,EAAWA,YAACO,KAAKmsB,WAAY9lB,EAAKD,QAAa1F,UAAGiT,MAAMtN,EAAKvI,QAAWkC,KAAKsB,QAAQme,mBAG1GpZ,EAAKvI,MAAQkC,KAAKmsB,WAAW9lB,EAAKD,cAC3BpG,KAAKmsB,WAAW9lB,EAAKD,SAEhC2Y,WAAWzS,EAAKhC,GACZtK,KAAKsK,QAAQgC,EAAI0C,IAAM1E,GAE3BxC,eAAe2R,EAAIzC,GACVhX,KAAKgsB,cACNhsB,KAAKgsB,YAAcvS,GAElBzZ,KAAKgsB,YAAYhV,OAClBhX,KAAKgsB,YAAYhV,KAAOA,GAE5B1B,GAAOmE,GACHzZ,KAAKgsB,cAAgBvS,IACrBzZ,KAAKgsB,YAAc,KACfvS,EAAGzC,MACHhX,KAAK81B,aAIjB4B,YACI,GAAI13B,KAAKgsB,YACL,OAAOhsB,KAAKgsB,YAAYhV,MAAO,EAEnC,MAAMzS,EAAO,GACb1H,OAAO6K,KAAK1H,KAAKqH,MAAMM,QAAQgB,KACW,IAAlC3I,KAAKosB,aAAa1iB,QAAQf,KAC1BpE,EAAKoE,GAAK3I,KAAKqH,KAAKsB,MAG5B3I,KAAK2K,GAAG8R,WAAWO,YAAYzY,IAEnCuzB,SAASxrB,EAAKxO,GACV,OAAO8K,KAAKC,UAAU7I,KAAKunB,YAAYjb,GAAM6c,MAAWvgB,KAAKC,UAAU/K,EAAOqrB,KAElF0O,QAAOA,CAACvrB,EAAKxO,KACDA,aAAiBqG,UAAYzD,EAAAA,QAAG7D,OAAOiB,IAAUX,MAAMsB,QAAQX,KAAWA,IAAUwO,EAAIjG,KAAKvI,MAEzG44B,cAAcpqB,EAAK/J,EAAKwiB,EAAQ3e,GAC5B,GAAI1F,EAAE,QAACyD,SAASmI,EAAIjG,KAAKkK,QAAS,CAC9B,MAAMuW,EAAQxR,GAAO,IAAMhJ,EAAIjG,KAAKkK,OAAOhO,EAAK+J,EAAIyY,OAAQ/kB,KAAKoF,IAAK,CAClE2f,OAAQA,GAAU,SAClBmT,UAAW9xB,KAEf,QAAcxH,IAAVkoB,EAAqB,OACzBxa,EAAIjG,KAAK+F,QAAmB,IAAV0a,IAG1B6Q,YAAYrrB,EAAK/J,GACbvC,KAAKm4B,YAAY7rB,EAAK/J,GACtBvC,KAAK6d,IAAI3c,MAAM,UAAYoL,EAAIlG,MAAO7D,IAE1C41B,YAAY7rB,EAAK/J,EAAKwiB,EAAQ3e,GACtBpG,KAAK22B,eAAerqB,KACpBtM,KAAK6R,QAAQyR,gBACbtjB,KAAK8xB,WACL9xB,KAAK6d,IAAI3c,MAAM,SAAUlB,KAAKoF,KAC9BpF,KAAKif,WAETjf,KAAK02B,cAAcpqB,EAAK/J,EAAKwiB,EAAQ3e,IAEzCukB,WAAWre,GACP,MAAMoe,EAAOpe,EAAIjG,KAAKqkB,KACtBhqB,EAAE,QAACmnB,UAAU6C,IAASA,EAAK/iB,QAAQvB,IAC/B,MAAMqT,EAAKA,IAAMzZ,KAAKm4B,YAAY7rB,EAAKA,EAAIjG,KAAKvI,MAAO,OAAQsI,GAE/DpG,KAAK6d,IAAIK,IAAI,UAAY9X,EAAOqT,GAChCnN,EAAImc,OAAO7e,KAAK,IAAM5J,KAAK6d,IAAIQ,KAAK,UAAYjY,EAAOqT,OAG/DjF,SACI,OAAO3X,OAAO6K,KAAK1H,KAAK8sB,aGpDpCsL,CAASxM,ID7HM,SAAoBA,GAC/BtiB,EAAM,QAACsiB,EAAQ3L,UAAW,CACtBsN,OAAOve,GACH,OAAOhP,KAAKgU,YAAYhF,IAAOhP,KAAKq4B,WAAWrpB,GAAI,IAAMhP,KAAKikB,KAAKjV,IAEvE6F,QAAQ7F,GACJ,OAAOhP,KAAK8sB,SAAS9d,IAAOhP,KAAK+sB,QAAQ/d,KAAQhP,KAAKikB,KAAKjV,GAAM,CAAChP,KAAKikB,KAAKjV,IAAO,KAEvFspB,SAAShsB,EAAKvD,EAAK9L,GACf,MAAMmJ,EAAWnJ,EAAH,MACT+C,KAAKoG,GAAO2C,GAGb/I,KAAKoG,GAAO2C,GAAKa,KAAK0C,GAFtBtM,KAAKoG,GAAO2C,GAAO,CAACuD,IAK5BisB,QAAQjsB,EAAKvD,EAAK9L,GACd,MAAMmJ,EAAWnJ,EAAH,MACRu7B,EAAMx4B,KAAKoG,GAAO2C,GACxB,IAAKyvB,EAAK,OAAO,EACjB,MAAM7lB,EAAO6lB,EAAI1uB,OAAO0uB,EAAI9uB,QAAQ4C,KAAS,EAAG,GAAGpN,OAAS,EAI5D,OAHKs5B,EAAIt5B,eACEc,KAAKoG,GAAO2C,GAEhB4J,GAEXqB,YAAY5N,GACR,OAAQpG,KAAK8sB,SAAS1mB,IAAU,IAAI,IAExCiyB,WAAW97B,GACP,OAAOyD,KAAK+sB,QAAQxwB,IAAS,IAEjCi6B,OAAOlqB,GACH,IAAI0C,GAACA,EAAE5I,MAAEA,EAAK7J,KAAEA,EAAI8J,KAAEA,GAAQiG,EAC9BtM,KAAKikB,KAAKjV,GAAM1C,EAChB/P,GAAQyD,KAAKs4B,SAAShsB,EAAK/P,EAAM,QAC5B+P,EAAIxD,QACT9I,KAAKs4B,SAAShsB,EAAKlG,EAAO,SAC1BpG,KAAKy3B,YAAYnrB,EAAKA,EAAIgL,OAAOgU,YAAYjlB,EAAKvI,MAAOwO,IACrDtM,KAAKisB,YAAcjsB,KAAK8rB,WACxB9rB,KAAK2K,GAAG5L,KAAK,SAAUuN,EAAIlG,MAAOC,EAAKvI,MAAOwO,EAAIyY,OAAQ/kB,KAAKoF,KAAK,GAAO,KAGnFqzB,UAAUnsB,GACN,MAAMosB,EAAO14B,KAAKqc,GAAGnQ,QACfqf,EAAevrB,KAAKqc,GAAGkP,aAC7B,GAAIA,EAAc,CACd,MAAMrf,EAAUqf,EAAarf,SAAW,GAClCoL,EAASpL,EAAQI,EAAIsY,aAAe1Y,EAAQmO,EAAAA,QAAO/N,EAAIrP,QAAUiP,EAAQI,EAAIoY,UACnF,GAAIpN,EACA,OAAOA,EAGf,OAAOohB,EAAKpsB,EAAIsY,aAAe8T,EAAKre,EAAAA,QAAO/N,EAAIrP,QAAUy7B,EAAKpsB,EAAIoY,WAAa2G,IAEnFiL,WAAWhqB,GACPA,EAAI4d,UAAUlqB,KAAKy4B,UAAUnsB,KAEjC2d,QAAQpd,GACJ,MAAMnO,EAAMsB,KAAKqc,GAAG4G,WAAW4D,SACzB5pB,EAAOyB,EAAImO,IAAUnO,EAAI2b,UAAOxN,KAAWA,EACjD,OAAOwN,EAAAA,QAAOpd,IAElBkuB,QAAQ1R,GACCzZ,KAAK+rB,YACN/rB,KAAK+rB,UAAYtS,GAErBnE,GAAOmE,GACHzZ,KAAK+rB,YAActS,IACnBzZ,KAAK+rB,UAAY,OAGzBlB,SAASve,GAiHL,GAhHYuL,KACR7S,OAAO2D,GAAc,MAATA,EAAE,IAAuB,MAATA,EAAE,KAAsC,IAAxB8iB,GAAQ/hB,QAAQf,IAAWhB,QAASoB,IAChF,MAAMpL,EAAMC,EAAKA,MAAC0O,EAAIjG,KAAM0C,GACtB4J,EAAe,aAAR5J,EACbuD,EAAImG,QAAQ1J,GAAOpL,EACnB2O,EAAIvO,MAAM6L,KAAK7L,QAAM4U,EAAO,IAAMjS,EAAAA,QAAGyD,SAASxG,EAAIG,OAASH,EAAIG,MAAQ,IAAKH,EAAIG,OAAS,IAAO,IAAMH,EAAIG,MAAO,CAACL,EAAGgK,KACjH,IAAIzJ,EAAIL,EAAIG,MACZ,IAAIkC,KAAKmf,eAAT,CACA,GAAIxM,IAAoC,IAA5BrG,EAAIgL,OAAO0O,aAGnB,OAFAhmB,KAAK6R,QAAQ0R,WAAWjX,QACxBtM,KAAKuwB,cAaT,GAVAvwB,KAAK6rB,UAAW,EAChBriB,EAAAA,SAAS,KACLxJ,KAAKmT,WAAW7G,EAAK,QAAS,CAACvD,IAAAA,EAAKwgB,SAAU9hB,EAAGkxB,SAAU36B,MAEnD,WAAR+K,GAAoBhM,QAAQiB,KAAOjB,QAAQ0K,KAC3CzH,KAAK6R,QAAQyR,gBACb9Z,EAAAA,SAAS,KACLxJ,KAAKmT,WAAW7G,EAAK,SAAU,CAACxO,MAAOE,OAGlC,WAAR+K,GAAoBuD,EAAIxD,OAAmB,WAARC,IAAyC,WAApBuD,EAAIjG,KAAKkpB,QAAuBvvB,KAAKsB,QAAQ22B,oBACtGj4B,KAAK81B,eACF,CAAA,GAAY,SAAR/sB,EAEP,YADAuD,EAAIoe,OAEG,CAAC,QAAS,KAAM,QAAQhhB,QAAQX,IAAQ,GAC/C/I,KAAKiyB,iBAAiB3lB,EAAIjG,KAAMrI,GAAK,IACzB,UAAR+K,GAAmBuD,EAAIxD,OACvB9I,KAAKy3B,YAAYnrB,EAAKA,EAAIgL,OAAOgU,YAAYhf,EAAIjG,KAAKvI,MAAOwO,KAElD,SAARvD,EACP/I,KAAKsyB,UAAUhmB,GACR,CAAC,SAAU,UAAU5C,QAAQX,IAAQ,EAC5C/K,GAAKgC,KAAKw1B,OAAOx3B,EAAGsO,EAAIjG,MACX,SAAR0C,GACLuD,EAAI0d,aACJhqB,KAAKs2B,WAAWhqB,IACTqG,IACHjS,EAAE,QAACyD,SAASsD,KACZA,EAAI6E,EAAIod,WAAW,WAAY,KAE/BhpB,EAAE,QAACyD,SAASnG,KACZA,EAAIsO,EAAIiY,uBAEZvkB,KAAKwpB,eAAeld,EAAKtO,EAAGyJ,IAEhCzH,KAAK6R,QAAQ0R,WAAWjX,GACxBtM,KAAKif,UACLjf,KAAK6rB,UAAW,IACjB,CAACvpB,MAAOqQ,EAAMqE,KAAMrE,OAE3BrG,EAAImG,QAAkB,SAAIjU,EAAQA,SAAC,KAC/B,IAAIqI,GAAmC,iBAAnByF,EAAIjG,KAAKQ,MAAqByF,EAAIjG,KAAKQ,MAAMA,MAAQyF,EAAIjG,KAAKQ,QAAU,GAC5F,GAAIA,EAAO,CACP,MAAMgQ,EAAQhQ,EAAMgQ,MAAM,6BACtBA,IACAhQ,EAAQ7G,KAAKoF,IAAI/F,EAAEwX,EAAM,KAGjC,OAAOhQ,IAEXyF,EAAImG,QAAiB,QAAIjU,EAAQA,SAAC,KAC9B,IAAI8Q,GAAiC,iBAAlBhD,EAAIjG,KAAKiJ,KAAoBhD,EAAIjG,KAAKiJ,KAAKA,KAAOhD,EAAIjG,KAAKiJ,OAAS,GACvF,GAAIA,EAAM,CACN,MAAMuH,EAAQvH,EAAKuH,MAAM,6BACrBA,IACAvH,EAAOtP,KAAKoF,IAAI/F,EAAEwX,EAAM,KAGhC,OAAOvH,IAEXhD,EAAImG,QAAqB,YAAIjU,EAAQA,SAAC,KAClC,MAAMa,EAAK2iB,IACP,MAAMnL,EAAQmL,EAAInL,MAAM,6BACb,IAAA1E,EAAX,OAAI0E,EACO7W,KAAKoF,IAAI/F,EAAEwX,EAAM,GAAI,CAAChQ,cAAKsL,EAAE7F,EAAImG,eAAO,IAAAN,WAAAA,EAAXA,EAAaO,gBAAQ,IAAAP,OAAA,EAArBA,EAAuBrU,QAExDkkB,GAEX,OAAOnd,EAAAA,QAAQyH,EAAIjG,KAAKoI,UAAU/P,IAAI6C,IAClC,MAAM8jB,EAAO,IAAI9jB,GAIjB,GAHI8jB,EAAK1f,UACL0f,EAAK1f,QAAUtG,EAAEgmB,EAAK1f,UAEtBjF,UAAGyD,SAASkhB,EAAKjV,WAAY,CAC7B,MAAM6I,EAAO3M,EACb+Y,EAAKjV,UAAY,YAAa0C,GAC1B,OAAOvR,EAAK6O,UAAUwoB,KAAK,CACvB3f,KAAMjZ,KACNgP,GAAIiK,EAAKjK,GACT5I,MAAO6S,EAAK7S,MACZC,KAAM4S,EAAK5S,KACXjB,IAAK6T,EAAKnI,QAAQ1L,QAChB0N,IAGd,GAAIuS,EAAKwT,QAAS,CACd,GAA0B,iBAAfxT,EAAKmB,MAAoB,CAChC,MAAMxE,EAAM,IAAIqD,EAAKmB,OACrB3pB,OAAO6K,KAAKsa,GAAKra,QAASoB,IACtBiZ,EAAIjZ,GAAO1J,EAAE2iB,EAAIjZ,MAErBsc,EAAKmB,MAAQxE,EAEjB,OAAOhiB,KAAKmQ,gBAAgBkV,EAAM/Y,GAEtC,OAAO+Y,MAGX/Y,EAAIxD,MAAO,CACX,MAAMvG,EAAM3E,EAAKA,MAAC0O,EAAIjG,KAAM,SAC5BiG,EAAIvO,MAAM6L,KAAK7L,EAAKA,MAAC,IAAMwE,EAAIzE,MAAO,KAClC,IAAIkI,EAAYsG,EAAIgL,OAAOgU,YAAY/oB,EAAIzE,MAAOwO,GAC9CtM,KAAK83B,SAASxrB,EAAKtG,IACnBhG,KAAKgI,SAASsE,EAAK/J,EAAIzE,MAAOkI,GAAW,MAIrDhG,KAAK6d,IAAIyS,MAAM,WAAY,KACvB,IAAIwI,EAAexsB,EAAIjG,KAAK7H,SACvBs6B,IAGuB,iBAAjBA,IACPA,EAAe,CAACh7B,MAAOg7B,IAE3Bj8B,OAAO6K,KAAKoxB,GAAcnxB,QAAQgB,IAC9B,MAAMowB,EAAgBv6B,EAAAA,SAAS,KAC3B,MAAM+C,EAAOu3B,EAAanwB,GAC1B,IAAKpH,EAAM,OACX,MAAMzD,EAAQkC,KAAKg5B,QAAQ1sB,EAAK/K,GAChC,OAAKA,EAAK03B,SAAW13B,EAAK23B,kBAAoBp7B,IAAU4tB,GAC7CA,GAEJ5tB,IAELoW,EAAYlW,IACJ,UAAN2K,EACA3I,KAAKlB,QAAQwN,EAAKtO,GACF,MAAT2K,EAAE,GACT3I,KAAKoF,IAAIopB,UAAUliB,EAAI0C,GAAIrG,EAAG3K,GAE9BinB,EAAAA,QAAQ3Y,EAAIjG,KAAMsC,EAAG3K,KAGnB,UAAN2K,EAAgB,MAAC/J,EAAW,KAAM,IAAI8K,QAAQ4C,EAAIjG,KAAKvI,QAAU,EAAIi7B,EAAcj7B,QAAU2d,GAAQnP,EAAIjG,KAAMsC,KAC/GuL,EAAS6kB,EAAcj7B,OAE3BwO,EAAIvO,MAAM6L,KAAK7L,EAAAA,MAAMg7B,EAAgB/6B,IAC9BA,IAAM0tB,IAGT0J,WAAW,KACPlhB,EAASlW,MAEd,CAACsE,MAAM,UAIlBtC,KAAKqd,YAAY/Q,IAErB6D,gBAAgB1B,EAAUnC,GAoCtB,OAAOtM,KAAK8T,SAAS3D,gBAAgB,CACjCT,SAAUjB,EAASiB,SACnB/J,QAAS8I,EAAS9I,QAClB0K,QAAS5B,EAAS4B,SAtCJD,CAACtS,EAAOoW,KAOtB,IAAe,KANAzF,EAAS0qB,gBAAkB7jB,GAAO,IAAM7G,EAAS0qB,eAAe,CAC3Er7B,MAAAA,EACAsH,IAAKpF,KAAKoF,IACVqJ,SAAAA,EACApI,KAAMiG,EAAIjG,SAGV6N,QACG,CACH,MAAMnL,EAAM/I,KAAKoQ,UAAU9D,EAAKxO,EAAO2Q,GACvC,GAAK1F,EASE,CACH,IAAIpD,EAAU,GACgB,iBAAnB8I,EAAS+X,QAChB7gB,EAAU8I,EAAS+X,MAAMzd,IAAQ0F,EAAS+X,MAAMhgB,SAE/Cb,GAAuC,iBAArB8I,EAAS9I,UAC5BA,EAAU8I,EAAS9I,SAElBA,IACDA,EAAU3F,KAAKo5B,mBAAmB9sB,EAAK,CAACvD,IAAAA,EAAK1C,KAAMoI,EAAS1F,MAEhEmL,EAASvO,QAnBT,GAAI8I,EAAS2B,UAAW,CACpB,MAAM3K,EAAMgJ,EAAS2B,WAAakF,GAAO,IAAM7G,EAAS2B,UAAUtS,EAAOoW,IACrEzO,GAAO/E,EAAE,QAACyD,SAASsB,EAAID,OACvBC,EAAID,KAAK,IAAM0O,KAAYxO,MAAO/F,GAAMuU,EAASvU,SAGrDuU,QAuBpBklB,mBAAmB9sB,EAAK+sB,GAAS,IAAAjnB,EAC7B,MAAMknB,EAAan8B,MAAMsB,QAAQ46B,EAAQhzB,MAAQgzB,EAAQhzB,KAAKlH,KAAK,KAAQ,GAAKk6B,EAAQhzB,KACxF,OAAOrG,KAAKoF,IAAI/F,EAAkB,aAAhBg6B,EAAQtwB,IAAqBswB,EAAQtwB,IAAO,YAAcswB,EAAQtwB,IAAM,CACtFC,CAACqwB,EAAQtwB,KAAMuwB,EACfzyB,cAAKuL,EAAE9F,EAAImG,eAAO,IAAAL,WAAAA,EAAXA,EAAaM,gBAAQ,IAAAN,OAAA,EAArBA,EAAuBtU,SAGtCsS,UAAU9D,EAAKxO,EAAO2Q,GAElB,GADgB/N,EAAAA,QAAGC,MAAM7C,GAErB,OAAI2Q,EAASiB,SACF,gBAEX,EAEJ,IAAK,MAAO3G,EAAK1C,KAASxJ,OAAO08B,QAAQ9qB,GACrC,OAAQ1F,GACR,IAAK,MACL,IAAK,SACL,IAAK,SACD,MAAMuhB,EAAS/nB,GACC,QAARwG,EACOxG,IAAQ8D,EACA,WAAR0C,EACAxG,GAAO8D,EAEP9D,GAAO8D,EAGtB,GAAIlJ,MAAMsB,QAAQX,IACd,IAAKwsB,EAAMxsB,EAAMoB,QACb,OAAO6J,MAER,CAAA,GAAqB,iBAAVjL,EACd,OAAOiL,EACJ,IAAKuhB,GAAO,GAAKxsB,GAAOoB,QAC3B,OAAO6J,EAEX,MACJ,IAAK,UAED,KAD4B,iBAAT1C,EAAoB,IAAI+I,OAAO/I,GAAQA,GACjDmV,KAAK,GAAK1d,GACf,OAAOiL,EAEX,MACJ,IAAK,YACD,GAAI1C,IAA0B,iBAAVvI,IAAuB,WAAW0d,KAAK1d,IACvD,OAAOiL,EAEX,MACJ,IAAK,YACD,GAAI1C,IAA0B,iBAAVvI,IAAuB,WAAW0d,KAAK1d,IACvD,OAAOiL,EAEX,MACJ,IAAK,MACL,IAAK,MACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,SACD,MAAMywB,EAAM13B,OAAOhE,GACnB,GAAIgE,OAAO8xB,MAAM4F,GACb,OAAOzwB,EAEX,GAAY,QAARA,GAAiBywB,EAAMnzB,EACvB,OAAO0C,EAEX,GAAY,QAARA,GAAiBywB,EAAMnzB,EACvB,OAAO0C,EAEX,GAAY,aAARA,GAAsBywB,GAAO,EAC7B,OAAOzwB,EAEX,GAAY,aAARA,GAAsBywB,GAAO,EAC7B,OAAOzwB,EAEX,GAAY,YAARA,IAAsBjH,OAAO23B,UAAUD,GACvC,OAAOzwB,EAEX,MACJ,IAAK,QACD,GAAIjL,IAAUuI,EACV,OAAO0C,EAEX,MACJ,IAAK,OACD,GAAI5L,MAAMsB,QAAQ4H,KAAUA,EAAKwb,SAAS/jB,GACtC,OAAOiL,EAEX,MACJ,IAAK,UACD,GAAqB,iBAAVjL,GAAsBX,MAAMsB,QAAQ4H,IAASA,EAAKqzB,KAAK3wB,KAASA,KAAOjL,IAC9E,OAAOiL,EAEX,MACJ,IAAK,QAED,IADmB,0JACHyS,KAAK,GAAK1d,GACtB,OAAOiL,EAEX,MACJ,IAAK,MAKD,IAJiB,IAAIqG,OACjB,8YACA,KAEUoM,KAAK,GAAK1d,GACpB,OAAOiL,EAEX,MACJ,IAAK,KAGD,IADI,0FACSyS,KAAK,GAAK1d,GACnB,OAAOiL,EAEX,MACJ,IAAK,QAED,IADmB,gCACHyS,KAAK,GAAK1d,GACtB,OAAOiL,EAEX,MACJ,IAAK,WACD,IAAK/I,KAAKg5B,QAAQ1sB,EAAKjG,GACnB,OAAO0C,IAQvBiwB,QAAQ1sB,EAAK/K,GACT,IAAIkY,EACJ,GAAoB,iBAATlY,EAAmB,CAC1B,MAAM0M,EAAQ3B,EAAI8c,iBACZuQ,EAAkBp4B,IAEpB,GADAA,EAAOpE,MAAMsB,QAAQ8C,GAAQ,CAACoX,KAAM,MAAO1K,MAAO1M,GAAQA,GACrDb,EAAAA,QAAGmnB,UAAUtmB,EAAK0M,OACnB,OAAO,EAEX,MAAM2rB,EAAmB,OAAdr4B,EAAKoX,KAChB,IAAIqe,GAAQ,EACZ,IAAK,IAAI90B,EAAI,EAAGA,EAAIX,EAAK0M,MAAM/O,OAAQgD,IAAK,CACxC,MAAM23B,EAAMt4B,EAAK0M,MAAM/L,GACvB,IAAIyQ,EACAvM,EAAQ,KACR0zB,EAAc,KAClB,GAAID,EAAIE,SACJD,EAAc95B,KAAKqc,GAAG+U,YAAYyI,EAAIE,eACnC,GAAIF,EAAIzzB,MACXA,EAAQsV,GAAyBme,EAAIzzB,OAAS,SAC3C,IAAKyzB,EAAIlhB,KACZ,OAAO,EAEX,IAAIqhB,EAAUH,EAAIG,QAalB,GAZIA,IACAA,EAAUte,GAAyBse,GAAW,KAG9CrnB,EADAknB,EAAIlhB,KACGghB,EAAeE,KACdlf,GAAUkf,EAAIlf,aAEfja,EAAAA,QAAGyD,SAAS01B,EAAIryB,SAChB8N,GAAO,IAAMukB,EAAIryB,QAAQxH,KAAKoF,IAAKkH,EAAIjG,OAEvCiP,GAAO,IAAO,IAAInR,SAAS,aAAc,eAAgB,OAAQ,QAAS,SAAU,SAAU,QAAS,wEAAwE01B,EAAIlf,eAAekf,EAAIE,SAAW,eAAiB3zB,MAAU4zB,GAAoB,iBAAkBpB,KAAK54B,KAAKoF,IAAIiC,KAAMsT,GAAWmf,EAAaD,EAAI/7B,MAAOkC,KAAKoF,IAAIoX,IAAInV,KAAMrH,KAAKoF,IAAIoX,MAAQxc,KAAKoF,IAAI+Y,MAAQ,GAAKne,KAAKoF,IAAI+Y,MAAM9W,KAAM4G,GAASjO,KAAKksB,YAAYje,EAAMe,KAAa,GAAI1C,EAAIjG,QAEpduzB,GAAMjnB,EACN,OAAO,EAENinB,IACD5C,EAAQA,GAASrkB,GAGzB,OAAOinB,GAAa5C,GAExB,IAAIz0B,EAAMo3B,EAAep4B,GAEzB,OADAgB,GAAsB,IAAhBhB,EAAK04B,QAAmB13B,EAAMA,EAChChB,EAAK03B,QACE12B,EAAM+S,GAAO,IAAMtV,KAAKk6B,aAAa34B,EAAK03B,QAAS3sB,EAAK2B,QAAQrP,GAAa8sB,GAC9EnqB,EAAK23B,gBACJ32B,EAAM+S,GAAO,IAAMtV,KAAKqc,GAAG+U,YAAY7vB,EAAK23B,sBAAkBt6B,GAAa8sB,GAE/EnpB,EACJ,GAAI7B,EAAE,QAACyD,SAAS5C,GACnBkY,EAAKA,IAAMlY,EAAKvB,KAAKoF,IAAIiC,KAAMrH,KAAKoF,IAAKkH,EAAIjG,UAC1C,CACH,MAAM4H,EAAQ3B,EAAI8c,iBAClB3P,EAAKA,IAAMzZ,KAAKk6B,aAAa34B,EAAM+K,EAAK2B,GAE5C,OAAOqH,GAAOmE,OAAI7a,IAEtBs7B,aAAa57B,EAAKgO,EAAK2B,GACnB,MAAMgL,EAAOjZ,KACPotB,EAAWvwB,OAAO6K,KAAK1H,KAAKqc,GAAG+Q,UAAUhU,OAAO,CAAC+gB,EAAKxxB,KACxDwxB,EAAIxxB,GAAK,YAAamK,GAClB,OAAOmG,EAAKoD,GAAG+Q,SAASzkB,GAAGiwB,KAAK,CAC5B3f,KAAMjZ,KACNqG,KAAMiG,EAAIjG,KACVjB,IAAK6T,EAAK7T,IACViX,GAAIpD,EAAKoD,OACPvJ,IAEHqnB,GACR,IACH,OAAO7kB,GAAO,IAAO,IAAInR,SAAS,YAAa,QAAS,SAAU,SAAU,QAAS,OAAQ,4EAA4E7F,WAAcs6B,KAAK54B,KAAKoF,IAAIiC,KAAM+lB,EAAUptB,KAAKoF,IAAIoX,IAAInV,KAAMrH,KAAKoF,IAAIoX,MAAQxc,KAAKoF,IAAI+Y,MAAQ,GAAKne,KAAKoF,IAAI+Y,MAAM9W,KAAM4G,GAASjO,KAAKksB,YAAYje,EAAMe,KAAa,GAAI1C,EAAIjG,KAAMrG,KAAKoF,UAAMxG,IAE9W4qB,eAAeld,EAAKtO,EAAGyJ,GACnBzH,KAAK8H,eAAe,KAChBL,GAAKA,EAAEE,QAASmgB,KACsB,KAA7B9pB,GAAK,IAAI0L,QAAQoe,IAAiBA,IAAUpnB,EAAE,QAAC/D,OAAOmrB,IAAUA,EAAMlR,QAAUkR,EAAMlR,OAAOoF,SAAW1P,GACzGtM,KAAKorB,MAAMtD,EAAMlR,UAGrBlW,EAAE,QAACmnB,UAAU7pB,KACbgC,KAAKgmB,aAAahoB,EAAGsO,GACrBtM,KAAK6d,IAAI3c,MAAM,SAAUlB,KAAKoF,SAI1Cg1B,MAAM7lB,GACF7T,EAAE,QAACmnB,UAAUtT,IAAQA,EAAI5M,QAAQoR,IAC7BA,GAAKA,EAAEnC,QAAU5W,KAAKorB,MAAMrS,EAAEnC,WAGtCwU,MAAM9e,GACF,GAAIA,EAAI0e,QAAS,OACjB,MAAMhc,GAACA,EAAE5I,MAAEA,EAAK0C,MAAEA,EAAKvM,KAAEA,GAAQ+P,EAEjC+tB,EAAAA,KAAKr6B,KAAKikB,KAAMjV,GAChBqrB,EAAAA,KAAKr6B,KAAK6H,SAAUmH,GACpBqrB,EAAAA,KAAKr6B,KAAKsK,QAAS0E,GACnBqrB,EAAIA,KAACr6B,KAAK2K,GAAG8R,WAAWG,UAAW5N,GACnC,MAAMf,EAAQ3B,EAAI8c,iBACdnb,GAASjO,KAAKksB,YAAYje,EAAMe,KAChCqrB,EAAIA,KAACr6B,KAAKksB,YAAYje,EAAMe,IAAK5I,GAEjCkG,EAAI2B,OACJosB,EAAAA,KAAKr6B,KAAKksB,YAAald,GAG3BlG,GAAS9I,KAAKu4B,QAAQjsB,EAAKlG,EAAO,SAClC7J,GAAQyD,KAAKu4B,QAAQjsB,EAAK/P,EAAM,QAE5BuM,IAAUrJ,EAAWA,YAACO,KAAK8sB,SAAU1mB,IACrCi0B,EAAAA,KAAKr6B,KAAKqH,KAAMjB,GAGpBpG,KAAK8H,eAAe,KAChB,IAAK9H,KAAK8rB,UAAW,CACjB,IAAgC,IAA5Bxf,EAAIgL,OAAO0O,aAAwB,CACnC,MAAMrkB,EAAW2K,EAAIod,WAAW,WAAYpd,EAAIjG,KAAK1E,UACjDjB,EAAE,QAACmnB,UAAUlmB,IACbA,EAASgG,QAAQ7H,GAAKA,GAAKA,EAAE8W,QAAU5W,KAAKorB,MAAMtrB,EAAE8W,SAGxDtK,EAAIoc,OAAS1oB,KAAK2R,OAClB3R,KAAK2K,GAAG8R,WAAWM,eAG5BjU,GAEH,MAAMS,EAAQvJ,KAAKoH,KAAKsC,QAAQsF,GAWhC,OAVIzF,GAAS,GACTvJ,KAAKoH,KAAK0C,OAAOP,EAAO,GAG5BvJ,KAAK6R,QAAQ0R,WAAWjX,GACxBA,EAAIwe,SACJ9qB,KAAK0nB,OAAOpb,EAAK,WACjBtM,KAAKmT,WAAW7G,EAAK,WACrBxD,IAAU9I,KAAK8sB,SAAS1mB,IAAUpG,KAAK2K,GAAG5L,KAAK,eAAgBqH,EAAOkG,EAAIjG,KAAMrG,KAAKoF,KACrFkH,EAAIjG,KAAK6iB,QAAUlpB,KAAK2K,GAAG5L,KAAK,cAAeuN,EAAIjG,KAAMrG,KAAKoF,KACvDkH,KC7anBguB,CAAW1O,IGrII,SAAsBA,GACjCtiB,EAAM,QAACsiB,EAAQ3L,UAAW,CACtBhf,UACI,MAAMs5B,EAAWA,KACbv6B,KAAKisB,WAAY,EACjBjsB,KAAK2sB,UAAU,YAEf3sB,KAAKysB,QACL8N,IAEAv6B,KAAK6d,IAAIyS,MAAM,WAAYiK,IAGnC5N,UAAUpwB,GACNyD,KAAKqc,GAAG8J,iBAAiB5pB,EAAMyD,KAAKoF,IAAKpF,KAAKqc,IAC9Crc,KAAK2K,GAAG5L,KAAKxC,EAAMyD,KAAKoF,KACxBpF,KAAKsU,UAAU/X,EAAMyD,KAAKoF,MAE9BkP,UAAU/X,KAASuW,GACf,MAAMiR,EAAM/jB,KAAKsB,QAAQ/E,IAASyD,KAAKsB,QAAQ+Y,EAAM,QAAC,MAAQ9d,IAC9D,GAAIwnB,EAAK,CACL,MAAMtK,EAAKmJ,UAAQmB,GACnBrjB,UAAGyD,SAASsV,IAAOnE,GAAO,IAAMmE,KAAM3G,IAE1C9S,KAAK6d,IAAI3c,MAAM3E,KAASuW,IAE5BK,WAAW7G,EAAK/P,EAAMuW,GAAM,IAAA0nB,EACxB,IAEIC,EAAMA,CAACjqB,EAAIkqB,KACPlqB,IACAA,EAAKrT,MAAMsB,QAAQ+R,GAAMA,EAAK,CAACA,IAC5B7I,QAAQ8R,IACPnE,GAAO,IAAMmE,EAAG,CAAC3G,KAAMjW,OAAO89B,OAAO7nB,GAAQ,OAAQA,GAAQ,GAAIigB,KAAMzmB,EAAIjG,KAAMA,KAAMiG,EAAIjG,KAAM2V,OAAQ0e,MAAAA,OAAAA,EAAAA,EAAGr0B,KAAMuB,GAAI5H,KAAKoF,IAAKA,IAAKpF,KAAKoF,IAAK/C,OAAQrC,KAAK2K,GAAGlO,MAAM4F,aAIjLo4B,UAVQD,EAAGluB,EAAIK,YAAI,IAAA6tB,GAAM,QAANA,EAARA,EAAUI,YAAVJ,IAAcA,OAAdA,EAAAA,EAAiBj+B,IAW5B,IAAIs+B,EAAW,OAASvgB,EAAKA,MAAC/d,GAC1Byf,EAAS1P,EAAI0P,OACjB,KAAOA,GAAQ,CAAA,IAAA8e,EAEXL,UADYK,EAAG9e,EAAOrP,YAAI,IAAAmuB,GAAM,QAANA,EAAXA,EAAaF,YAAbE,IAAiBA,OAAjBA,EAAAA,EAAoBD,GACrB7e,GACdA,EAASA,EAAOA,WH2FhC+e,CAAanP,IIvIE,SAAmBA,GAC9BtiB,EAAM,QAACsiB,EAAQ3L,UAAW,CACtB2R,cACI,MAAMoJ,EAAKh7B,KAAKqc,GAAGgQ,UACnBxvB,OAAO6K,KAAKszB,GAAIrzB,QAAQgB,IACpB,IAAIgE,EAAOquB,EAAGryB,GACVjI,EAAE,QAACyD,SAASwI,KACZA,EAAOA,EAAK3M,KAAKqc,KAErB1P,EAAKsuB,GAmGrB,SAAsBP,GAClB,MAAMQ,EAAIR,EAAE1uB,WACZ,GAAI7O,MAAMsB,QAAQy8B,GAAI,CAClB,MAAMC,EATd,SAAgBA,GACZ,OAAOA,EAAIn2B,QAAO,SAAUzD,EAAMgI,EAAO4xB,GACrC,OAAOA,EAAIzxB,QAAQnI,EAAM,KAAOgI,KAOpBuT,CAAOoe,EAAEl2B,OAAOjE,GAAW,MAANA,IACjC,QAAOo6B,EAAIj8B,QAASi8B,EACjB,QAAIz6B,EAAAA,QAAG/D,OAAOu+B,IAAW,CAACA,GAxGXE,CAAazuB,GACvB3M,KAAKq7B,SAAS1uB,EAAMhE,GACpB3I,KAAKqsB,UAAU1jB,GAAKgE,KAG5B0uB,SAASC,EAAUvyB,GACf,MAAMwyB,EAAO,IACZD,EAASL,IAAM,CAAC,MAAMtzB,QAAQpL,IAC3B,MAAMU,EAAgB,MAATV,EAAe,IAAMyD,KAAKiqB,QAAQ1tB,GAC3Cg/B,EAAK7xB,QAAQzM,IAAS,IAC1Bs+B,EAAK3xB,KAAK3M,GACV+C,KAAK6d,IAAIK,IAAI,KAAKnV,GAAOuyB,EAAS/+B,QAAQU,KAAQq+B,EAASxyB,MAAQ,EAAI,IAAK,CAACiX,EAAOjN,KAChFwoB,EAASvb,IAAUub,EAASvb,MAAUjN,QAG9CwoB,EAASE,MAAQD,GAErBle,YAAY/Q,GACR,IAAIob,EAAS,CACThY,SAAUA,KAAM,IAAA+rB,EACZ,OAAQh8B,EAAAA,YAAY6M,EAAIjG,KAAM,aAAeiG,EAAIjG,KAAgB,UAAY,QAAXo1B,EAAGnvB,EAAIjG,YAAI,IAAAo1B,WAAAA,EAARA,EAAU/T,cAAM,IAAA+T,OAAA,EAAhBA,EAAkB/rB,YAAa,IAG5G7S,OAAO6K,KAAK4E,EAAIjG,KAAKqhB,QAAU,IAAI/f,QAAQgB,IACvC+e,EAAO/e,GAAK,IAAM2D,EAAIjG,KAAKqhB,OAAO/e,KAEtC9L,OAAO6K,KAAK4E,EAAIjG,MAAMsB,QAAQgB,IACb,MAATA,EAAE,KACF+e,EAAO/e,EAAE+lB,OAAO,IAAM,IAAMpiB,EAAIjG,KAAKsC,MAG7C9L,OAAO6K,KAAKggB,GAAQ/f,QAAQgB,IACxB2D,EAAIvO,MAAM6L,KAAK7L,EAAAA,MAAM2pB,EAAO/e,GAAK3K,IAC7BgC,KAAK0nB,OAAOpb,EAAK,QAAS,CAACtD,CAACL,GAAI3K,KACjC,CAACsE,MAAM,QAGlB2zB,WAAW5vB,EAAM0Z,EAAOsC,GACpBriB,KAAK07B,WAAW,CACZr1B,KAAAA,EACAyC,QAASzC,EAAKD,MACdnJ,KAAM+C,KAAKiqB,QAAQ5jB,EAAKpJ,OACzB8iB,EAAOsC,IAEdqF,OAAOpb,EAAKyT,EAAO4b,GACf37B,KAAK07B,WAAW,CACZr1B,KAAMiG,EAAIjG,KACVyC,MAAOwD,EAAIxD,MACX7L,KAAMqP,EAAIoY,SACVpY,IAAAA,EACAqvB,OAAAA,GACD5b,IAEP6b,UAASA,CAACv1B,EAAM9J,IACRkD,cAAY4G,EAAM,IAAM9J,GACjB8J,EAAK,IAAM9J,GAElBkD,EAAWA,YAAC4G,EAAM,WAAa5G,EAAWA,YAAC4G,EAAKqhB,OAAQnrB,GACjD8J,EAAKqhB,OAAOnrB,QADvB,EAIJm/B,YAAWpvB,IAACA,EAAGjG,KAAEA,EAAIyC,MAAEA,EAAK7L,KAAEA,EAAI0+B,OAAEA,GAAS5b,EAAOsC,GAChD,IAAKplB,GAAQ,CAAC,aAAc,YAAYyM,QAAQzM,IAAS,EAAG,OAC5D,MAAMyqB,EAASiU,GAAmB9+B,OAAO6K,KAAKrB,GAAM+S,OAAO,CAAClX,EAAGyG,KAC9C,MAATA,EAAE,KACFzG,EAAEyG,EAAE+lB,OAAO,IAAMroB,EAAKsC,IAEnBzG,GACR,IAAImE,EAAKqhB,QAAU,KACtB7qB,OAAO6K,KAAKggB,GAAQ/f,QAAQ8mB,IACxB,MAAMiM,EAAI16B,KAAKqsB,UAAUoC,GACzB,IAAKiM,GAAMA,EAAE5xB,QAAUA,EAAQ,OAC/B,IAAI+yB,EACJ,GAAKnB,EAAEO,GAEA,CAAA,KAAIP,EAAEc,MAAM9xB,QAAQzM,IAAS,GAGhC,OAFA4+B,EAAQ5+B,OAFR4+B,EAAQ,IAMZ,MAAMt3B,EAAO,CAACzG,MAAO4pB,EAAO+G,GAAOlY,SAAUA,IAAMvW,KAAK47B,UAAUv1B,EAAMooB,MAAWpM,GAAU,IACzF/V,IACA/H,EAAKwS,QAAU,IAAMzK,EAAIwd,WAAW2E,GACpClqB,EAAKkS,UAAY,IAAMnK,EAAIyd,gBAAgB0E,GAC3ClqB,EAAKqI,UAAaD,GAASiM,GAAUrU,EAAKwS,UAAW,CAACpK,IACtDpI,EAAKyK,GAAK1C,EAAI0C,IAElBhP,KAAK6d,IAAI3c,MAAM,KAAKutB,KAAQoN,KAASnB,EAAE5xB,MAAQ,EAAI,IAAKiX,EAAO,CAACxb,EAAM8B,EAAMrG,KAAKoF,WJwCjG02B,CAAUlQ,IK1IV,IAAAmQ,GAAez/B,kBAAgB,CAC3BC,KAHS,aAITC,cAAc,EACdC,MAAO,CAAC,SACRoD,SACI,OAAOG,KAAK0jB,SCSpB,SAASsY,GAAcz3B,EAAM6O,GACzB,IAAI8I,EAAa3X,EAAK2X,WACtB,OAAKA,GACA/e,MAAMsB,QAAQyd,KACfA,EAAa,CAACA,IAEX+f,EAAAA,eAAe7oB,EAAI8I,EAAW9C,OAAO,CAACof,EAAKz3B,IACvCy3B,EAAI0D,OAlBnB,SAAwBhgB,GACpB,OAAOrf,OAAO6K,KAAKwU,GAAYxd,IAAIV,IAC/B,MAAMuG,EAAO2X,EAAWle,GAClBm+B,EAAYC,mBAAiBp+B,GACnC,GAAKm+B,EACL,MAAO,CACHA,EAAW53B,EAAKzG,MAAOyG,EAAKquB,IAAKruB,EAAK83B,aAE3Cr3B,OAAOjE,KAAOA,GAUKu7B,CAAev7B,IAClC,MANqBqS,ECfrB,SAASmpB,GAAc/hB,GAC1B,MAAMgiB,UAAsBC,IAI5B,OADA5/B,OAAO6/B,OAAOF,EAAcvc,UAAWzF,GAChCgiB,EAGI,SAASC,GAAQj1B,GAC5B8B,EAAAA,QAAOtJ,KAAM,CACT8Q,QAAStJ,EACTmD,GAAInD,EAAQmD,GACZrJ,QAAS,GACT3D,IAAK,SACLg/B,iBAAkB,CACd7kB,OAAQ,CAAC,OAAQ,MAAO,OAAQ,YAAa,eAGrD9X,KAAK8oB,YACL9oB,KAAK2f,OAGTrW,EAAAA,QAAOmzB,GAAQxc,UAAW,CACtB8R,SACI/xB,KAAK6R,QAAU7R,KAAK8Q,QAAQe,QAC5B7R,KAAKmR,GAAK,IAAI2B,IAAS9S,KAAK6R,QAAQkL,cAAcjK,IAEtDgW,YACI9oB,KAAK+I,IAAM+T,EAAAA,WAGf6C,SAEApP,WAEAK,iBAEAvJ,OACI,OAAOrH,KAAK2K,GAAGsJ,KAAKjU,KAAKrC,MAE7BwS,gBAAeA,CAAC1B,EAAU2B,KACtB3B,EAAS2B,UAAY,CAAC/J,EAAMvI,EAAOoW,IACxB9D,EAAUtS,EAAOoW,GAErBzF,GAEX+D,QAAQjW,GACJ,MAAMwnB,EAAOpZ,IACT,GAAIA,EAAI,CACJ,IAAImP,EAAOnP,EAAGqP,MAAMzd,GACpB,OAAIud,GAGGiK,EAAIpZ,EAAG8R,WAAWT,UAIjC,OAAO+H,EAAI/jB,KAAK2K,KAEpBiyB,aAAa9pB,EAAM9P,GACf,OAAOwM,UAAWsD,EAAKpU,IAAIqC,GAAKf,KAAKiP,YAAYlO,IAAKiC,EAAKhD,KAAK28B,mBAEpE9O,cAAcvsB,GACVtB,KAAK8Q,QAAQuL,GAAG8J,iBAAiB,gBAAiB7kB,EAAS,CAAC0hB,OAAQhjB,KAAK8Q,QAAS1L,IAAKpF,KAAK8Q,QAAQ1L,MACpGpF,KAAKsB,QAAUtB,KAAK48B,aAAa,CAACt7B,GAAUtB,KAAKyP,qBACjDzP,KAAKuQ,UAETtB,YAAY3N,GACDA,EAEXgN,SAAShC,KAETM,UAAUN,KAEVmD,kBAAiBA,KACN,IAEXmoB,YAAYtrB,EAAKxO,EAAOkI,EAAWwxB,KAEnC33B,OAAO8B,OC1EX,MAyHMk7B,GAAoB,CACtBtgC,KAAM,oBACN6Z,KAAKqY,EAAMpoB,EAAMjB,GACb,IAAI9D,EAAUmtB,EAAKlY,WACnB,GAAKjV,IAA8B,IAAnBA,EAAQgD,OAGjB,CACE5D,EAAE,QAAC7D,OAAOyE,KACXA,EAAU,CAACgD,OAAQhD,IAEvB,MAAMgD,EAAShD,EAAQgD,OACjBmK,EAAW,IACVnN,EACH8O,aAAa0C,GACT,MAAMxG,EAAMiN,GAAMlT,GAClB,GAAIiG,EACA,OAAOlH,EAAI4pB,KAAK1iB,EAAI0C,GAAItO,EAAE,QAAC/D,OAAO2H,GAAUA,EAAS,wBAAyBwO,EAAM,CAChF2b,KAAAA,EACApoB,KAAAA,EACAjB,IAAAA,aAKTqJ,EAASnK,OAChBmqB,EAAK1X,UAAUtI,SAAW,CAACA,QArB3BggB,EAAKhY,YACLrR,EAAI0J,mBAAmB,CAACzI,EAAKD,SAuBrCrI,SAAS+U,GACL+pB,GAAkBzmB,QAAQtD,KAkInB,IAAAgqB,GAAA,CACXz3B,MA9HU,SAAUgX,GAYpB,SAASoe,EAAIpkB,EAAQhQ,EAAMjB,GACvB,IAAI/C,EAASgU,EAAOvY,MACpBi/B,EAAU/R,QAAQ3U,GACd3V,EAAE,QAACyD,SAAS9B,KACZA,EAASA,EAAOgE,EAAMjB,IAE1B/C,EAhBJ,SAAkBA,GAOd,OANI3B,EAAE,QAAC/D,OAAO0F,KACVA,EAAS,CACL+B,OAAQ/B,EACR26B,GAAI,YAGL36B,EASE46B,CAAS56B,GAElB,MAAM66B,EAAO36B,SACG3D,IAAR2D,EACA8T,EAAOI,YAEPwO,EAAO,QAAC5O,EAAOU,UAAW1U,EAAO26B,IAAM,UAAWz6B,GAE3C,MAAPA,GAAeF,GAAUA,EAAO0G,KAAOsT,EAAGvL,QAAQxP,QAAQuuB,WAAWxtB,EAAO0G,MAC5EsT,EAAG8gB,WAAWD,IAAI7gB,EAAGvL,QAAQxP,QAAQuuB,WAAWxtB,EAAO0G,KAAM,CAAC5D,QAAQ,EAAMZ,KAAMhC,IAEtF6C,EAAI4R,KAAK3Q,IAGb,IAAKhE,IAAYA,EAAO+B,SAAW/B,EAAO0G,IAEtC,YADAm0B,OAAIt+B,GAGRyD,EAAS6F,EAAAA,SAAS7F,GACbA,EAAO26B,KACR36B,EAAO26B,GAAK,WAGhB,MAAMt4B,EAAUrC,EAAOqC,QAEjB4lB,EAAQA,KACV,IAAKjU,EAAOE,WAGR,OAFAF,EAAOI,YACPrR,EAAI4R,KAAK3Q,IACF,GAGf02B,EAAUhZ,IAAI1N,EAAOrH,IAAMqN,EAAG0U,cAAcnT,EAAQ,QAAC,CAACtE,EAAK0X,KACvD,GAAIA,IAA2B,IAAjB3uB,EAAOtE,MACjB,OAAOg/B,EAAUhZ,IAAI1N,EAAOrH,MAEhC,GAAG3M,EAAO0G,IAAK,CACXsT,EAAGwG,WAAaxc,EAChB,MAAMZ,EAAM6T,EAAI,eAAiBjX,EAAO0G,KAExC,UADOsT,EAAGwG,WACNpd,EAAK,CACL,GAAI6kB,IAAS,OACb4S,EAAIz3B,GAER,OAEJ,MAAM23B,EAAU/gB,EAAGvL,QAAQ6f,aAAazoB,EAAQA,SAAC7F,GAASiX,EAAKjT,GACzDmZ,EAAS,CACXnb,QAAS,MACN+4B,EACH34B,UAAU44B,EAAM1qB,GACZ,GAAI2X,IAAS,OACb,IAAI7Q,EAAM1Y,GAAM4R,EAAO5R,EAAKtB,EAAAA,YAAYsB,EAAG,QAAUA,EAAEwD,KAAOxD,EAC9D,MAAMiG,EAAQ4b,EAAAA,QAAQwa,EAAQp2B,OAC1BtG,EAAE,QAACyD,SAAS6C,GACZyS,EAAKzS,EACEA,GAAStG,EAAAA,QAAG/D,OAAOqK,KAC1ByS,EAAM1Y,GACK0a,GAAQ1a,EAAGiG,IAG1B+C,EAASA,UAAC0P,EAAG4jB,EAAMh3B,EAAMjB,IAAMI,KAAKC,IAChCy3B,EAAIz3B,MAGZf,QAAQ/E,GACJu9B,OAAIt+B,GACA0rB,MACH5lB,GAAO,CAAM/E,GAAM2Q,MAAI3Q,EAAEgG,SAAW,cAAgBy3B,EAAQh5B,UAAUzE,EAAG0G,EAAMjB,KAGxFiX,EAAGvL,QAAQ+f,YAAYrR,EAAQ,CAACnZ,KAAAA,EAAMjB,IAAAA,IAAMI,KAAK,KACzC9E,UAAGyD,SAASi5B,EAAQh5B,QACpB2F,EAASA,UAACqzB,EAAQh5B,OAAOiC,EAAMjB,IAAMI,KAAMjD,IACvCid,EAAO/a,UAAUlC,GAAK,KACvBmD,MAAO/F,IACN6f,EAAO9a,QAAQ/E,KAIvB2V,GAAO,IAAM+G,EAAGqE,OAAOrb,MAAMma,EAAQ,CAACnJ,OAAAA,EAAQhQ,KAAAA,EAAMjB,IAAAA,OACrDM,MAAM/F,QACV0C,EAAO6uB,MAAQ,MAGtB,MAAM6L,EAAY,CACdxgC,KAAM,QACNwnB,IAAK,GACLxC,UAAUzO,GACN2nB,KAAO3nB,IAEX/U,SAAS+U,GACL2nB,KAAO3nB,IAEXkY,QAAQ3U,GACArW,KAAK+jB,IAAI1N,EAAOrH,MAChBhP,KAAK+jB,IAAI1N,EAAOrH,aACThP,KAAK+jB,IAAI1N,EAAOrH,KAE3BqH,EAAOI,cAIf,OAAOsmB,GAMPjN,SA3Ra,SAAUzT,GACvB,MAAMyT,EAAW,CACbvzB,KAAM,WACNwnB,IAAK,GACLxC,OAAOlL,EAAQhQ,EAAMjB,GACjBpF,KAAKgrB,QAAQ3U,GACb7M,EAAAA,SAAS,KACL,IAAIqO,EAAQhT,EAAO,QAACwR,EAAOE,YAC3B,MAAM+mB,EAAW,GACjBzlB,EAAMlQ,QAAQ8mB,IACV,GAAIA,IAASA,EAAKA,MAAQA,EAAKuF,UAAW,CACtC,IAAIva,EAAMH,IACN,IAAIrL,EAIAnQ,EAHAuI,GAAQA,EAAKuQ,SACb3I,EAAQ5H,EAAKuQ,OAAOwS,kBAIpBtrB,EADA2wB,EAAKuF,SACG3X,EAAGvL,QAAQoiB,WAAWzE,EAAKuF,SAAU1a,EAAKrL,EAAQ,CAAC5H,KAAAA,EAAMvI,MAAQue,EAAGvL,QAAQob,YAAYje,EAAMe,KAAO,IAAO,MAC7Gyf,EAAKjnB,SAAW9G,EAAAA,QAAGyD,SAASsqB,EAAKjnB,SAChCinB,EAAKjnB,QAAQ8R,EAAKjT,EAAMjB,GAExBiX,EAAGvL,QAAQoiB,WAAW,KAAKzE,EAAKA,SAAUnV,EAAKrL,EAAQ,CAAC5H,KAAAA,EAAMvI,MAAQue,EAAGvL,QAAQob,YAAYje,EAAMe,KAAO,IAAO,MAE/G,MAATlR,GAA2B,KAAVA,GAAiC,MAAhB2wB,EAAKjoB,UACxC1I,EAAQ2wB,EAAKjoB,UAEC,IAAdioB,EAAK3L,OACLhlB,EAAQoK,EAAAA,SAASpK,IAErB,MAAMyQ,EAASkgB,EAAK8O,OAASl3B,EAAOgQ,EAAOU,UAC3B,UAAZ0X,EAAKuO,GACDzuB,EAAM5M,SACN4M,EAAM5M,SAAS,GAAK7D,EAEpByQ,EAAM5M,SAAW,CAAC7D,GAGtBmnB,EAAO,QAAC1W,EAAOkgB,EAAKuO,IAAM,UAAWl/B,GAEzCsH,EAAI4R,KAAK3Q,IAET6N,EAAYoF,GAAQG,EAAGH,GAC3B,MAAMiR,EAAUlO,EAAG0U,cAAc7c,GACjCuF,EAAKmE,EAAQ,QAACnE,EAAIgV,EAAKyC,MAAQ,MACZ,IAAfzC,EAAK1wB,MACLu/B,EAAS1zB,KAAK2gB,GAEdA,OAIZvqB,KAAK+jB,IAAI1N,EAAOrH,IAAMsuB,KAG9BtS,QAAQ3U,GACArW,KAAK+jB,IAAI1N,EAAOrH,MAChBhP,KAAK+jB,IAAI1N,EAAOrH,IAAIrH,QAAQ6iB,IACxBA,aAEGxqB,KAAK+jB,IAAI1N,EAAOrH,KAE3BqH,EAAOI,cAIf,OADAqZ,EAAS/xB,MAAQ+xB,EAASvO,OACnBuO,GA0NPzwB,EAvNM,SAAUgd,GAChB,MAAMhd,EAAI,CACN9C,KAAM,IACNwnB,IAAK,GACLxC,OAAOlL,EAAQhQ,EAAMjB,GACjBpF,KAAKgrB,QAAQ3U,GACb,IAAIwB,EAAQxB,EAAOE,YAAc,GACjC,MAAM+mB,EAAW,GACjBzgC,OAAO6K,KAAKmQ,GAAOlQ,QAAQoB,IACvB,MAAM0lB,EAAO5W,EAAM9O,GACnB,GAAI0lB,EAAM,CACN,MAAM+O,EAAwB,iBAAT/O,EACrB,IAAIhV,EAAMH,IACN,IAAIxb,EAAQue,EAAGhd,EAAEm+B,EAAQ/O,EAAKA,KAAOA,EAAM+O,EAAQ/O,EAAK+C,OAAS,KAAMlY,GACvE,MAAM/K,EAAUivB,GAAS/O,EAAK8O,OAAUl3B,EAAOgQ,EAAOU,UAC1C,UAARhO,EACIwF,EAAM5M,SACN4M,EAAM5M,SAAS,GAAK7D,EAEpByQ,EAAM5M,SAAW,CAAC7D,GAGtBmnB,EAAAA,QAAQ1W,EAAOxF,EAAKjL,GAExBsH,EAAI4R,KAAK3Q,IAET6N,EAAYoF,GAAQG,EAAGH,GAC3B,MAAMiR,EAAUlO,EAAG0U,cAAc7c,GACjCuF,EAAKmE,EAAQ,QAACnE,EAAIgV,EAAKyC,MAAQ,MACZ,IAAfzC,EAAK1wB,MACLu/B,EAAS1zB,KAAK2gB,GAEdA,OAIZvqB,KAAK+jB,IAAI1N,EAAOrH,IAAMsuB,GAE1BtS,QAAQ3U,GACArW,KAAK+jB,IAAI1N,EAAOrH,MAChBhP,KAAK+jB,IAAI1N,EAAOrH,IAAIrH,QAAQ6iB,IACxBA,aAEGxqB,KAAK+jB,IAAI1N,EAAOrH,KAE3BqH,EAAOI,cAIf,OADApX,EAAEtB,MAAQsB,EAAEkiB,OACLliB,GAuKPw9B,kBAAAA,ICnSW,IAAAY,GAAA,CACXlhC,KAHS,OAITypB,cAAc,EACdnmB,OAAMA,CAAC8B,EAAU2K,KACbA,EAAIK,KAAKlQ,MAAMihB,UAAY/b,EAAS6E,UAC7B8F,EAAIC,MAAMoU,KAAKrU,EAAIK,KAAKlQ,MAAMihC,KAAO,MAAOpxB,EAAIK,OAE3D2X,eAAe3iB,IACJ,CACH6E,QAASA,IAAM7E,EAASqD,OAAOjE,GAAKL,EAAAA,QAAG/D,OAAOoE,IAAI5B,KAAK,OCXnE,SAASw+B,GAAUphC,GACfA,GAAc,IAEd,MACMqhC,EADgBC,mBAAmBnoB,SAASooB,QAChB/5B,MAAM,KAExC,IAAK,IAAI7B,EAAI,EAAGA,EAAI07B,EAAY1+B,OAAQgD,IAAK,CACzC,IAAI47B,EAASF,EAAY17B,GACzB,KAA4B,MAArB47B,EAAOC,OAAO,IACjBD,EAASA,EAAOE,UAAU,GAE9B,GAA6B,IAAzBF,EAAOp0B,QAAQnN,GAAa,CAC5BuhC,EAASA,EAAOE,UAAUzhC,EAAK2C,OAAQ4+B,EAAO5+B,QAC9C,IACI,OAAO0J,KAAK5B,MAAM82B,GACpB,MAAOn+B,GACL,OAAOm+B,IAInB,OAAO,KAGX,SAASG,GAAgB1hC,GACrB,MAAMuB,EAAQogC,aAAaC,QAAQ5hC,GACnC,GAAIuB,EACA,IACI,OAAO8K,KAAK5B,MAAMlJ,GACpB,MAAO6B,GACL,OAAO7B,EAGf,OAAO,KAGX,SAASsgC,GAAkB7hC,GACvB,MAAMuB,EAAQugC,eAAeF,QAAQ5hC,GACrC,GAAIuB,EACA,IACI,OAAO8K,KAAK5B,MAAMlJ,GACpB,MAAO6B,GACL,OAAO7B,EAGf,OAAO,KAGJ,SAASwgC,GAAWniB,EAAQ5f,GAC/B,IAAKA,EACD,OAAO,KAEX,MAAMwH,EAAQxH,EAAKwH,MAAM,KACzB,IAAIjG,EAAQqe,EAAOpY,EAAMyvB,SAEzB,OAAKzvB,EAAM7E,OAGE,MAATpB,EACO,KAEJ2d,GAAQ3d,EAAOiG,GALXjG,EAQR,SAASygC,GAAahiC,GACzB,OAAO+hC,GAAWX,GAAWphC,GAG1B,SAASiiC,GAAmBjiC,GAC/B,OAAO+hC,GAAWL,GAAiB1hC,GAGhC,SAASkiC,GAAqBliC,GACjC,OAAO+hC,GAAWF,GAAmB7hC,GC1EzB,IAAAmiC,GAAA,CACZC,GAAI,CACAjvB,SAAU,sBACVjB,SAAU,CACN/K,IAAK,6BACLk7B,MAAO,+BACPC,GAAI,oCACJC,MAAO,uCACP3vB,QAAS,2CACT4vB,UAAW,gCACXC,UAAW,iCACXC,SAAU,mCACVC,SAAU,mCACVC,MAAO,kCACPz4B,IAAK,oCACLD,IAAK,uCACL24B,KAAM,gCACNC,QAAS,qDACTC,OAAQ,oCACRC,OAAQ,yCACRt4B,IAAK,gCACLu4B,QAAS,4BACTC,OAAQ,6BAGhBC,QAAS,CACLhwB,SAAU,cACVjB,SAAU,CACN/K,IAAK,sBACLk7B,MAAO,mBACPC,GAAI,qBACJC,MAAO,kBACP3vB,QAAS,wBACT4vB,UAAW,eACXC,UAAW,eACXC,SAAU,cACVC,SAAU,cACVC,MAAO,sBACPz4B,IAAK,sBACLD,IAAK,sBACL24B,KAAM,uBACNC,QAAS,2BACTC,OAAQ,yBACRC,OAAQ,yBACRt4B,IAAK,qBACLu4B,QAAS,eACTC,OAAQ,kBCpBpB,SAASE,GAAUpjC,EAAMyS,GACrB,IAAIrC,EAOJ,OANyB,IAArBuT,UAAUhhB,QACVyN,EAAOuT,UAAU,GACjBlR,EAAKrC,EAAKpQ,IAEVoQ,EAAOuT,UAAU,GAEd,CAAClR,GAAAA,EAAIrC,KAAAA,GAGhB,SAASizB,KACL,OAAOD,GAAU,UAAWzf,WAchC,IAAIlR,GAAK,EACT,MAAM6wB,GAAW,GACXC,GAAcnU,OAAO,YCtD3B,MAAMjrB,GAAK,CACPzD,KAAIA,CAAC21B,EAAK31B,IACCJ,OAAOojB,UAAU2B,SAASgX,KAAKhG,KAAS,WAAa31B,EAAO,IAEvE0W,MAAM5S,GACKA,MAAAA,EAEXg/B,QAAQnN,GACkB,iBAARA,GAA4B,OAARA,GAAiC,IAAjBA,EAAIoN,WAAmBt/B,GAAG7D,OAAO+1B,GAEvF/K,UAAUtjB,GACCpH,MAAMsB,QAAQ8F,IAASA,EAAKrF,OAAS,EAEhDiF,SAASpD,GACL,MAAM9D,EAAO+C,KAAKiqB,QAAQlpB,GAC1B,MAAgB,aAAT9D,GAAgC,kBAATA,GAElCgtB,QAAQlpB,GACJ,MAAMzC,EAAMzB,OAAOojB,UAAU2B,SAASgX,KAAK73B,GAC3C,MAAO,oBAAoBiuB,KAAK1wB,GAAK,IAEzCqC,MAAM7C,GACEA,MAAAA,OAIAX,MAAMsB,QAAQX,KAAUX,MAAMsB,QAAQX,IAAWA,EAAMoB,SAInC,iBAAVpB,IAAuBA,IC7BtC,SAASsiB,GAAKqG,EAAQrgB,EAAOtI,GAChC2oB,EAAOrgB,GAAStI,ECCL,SAASiK,GAAWgd,EAAQ0B,EAAS,GAAI9N,GACpD,IAAIsnB,GAAQ,EACZ,IAAK,IAAIl3B,KAAO0d,EACZ,GAAI5pB,OAAOojB,UAAUigB,eAAetH,KAAKnS,EAAQ1d,GAAM,CACnD,IAAIwX,EAAQkG,EAAO1d,GACnB,IAAKk3B,EAAQ9iC,MAAMsB,QAAQ8hB,KAAW7f,GAAG7D,OAAO0jB,GAAQ,CACpD,IAAI4f,OAAsBvhC,IAAhBmmB,EAAOhc,GACjB,GAAIk3B,EACAA,GAAQ,EACRE,GAAO/f,GAAK2E,EAAQhc,EAAK,SACtB,GAAIwX,EAAMD,aAAmB1hB,IAAT+Z,EAAoB,CAC3C,IAAIA,EAGG,CACHyH,GAAK2E,EAAQhc,EAAKwX,EAAMD,UACxB,SAJAC,EAAQA,EAAMzH,UACdqnB,GAAO/f,GAAK2E,EAAQhc,EAAK,SAM7Bo3B,GAAO/f,GAAK2E,EAAQhc,EAAK,IAE7Bgc,EAAOhc,GAAOhB,GAAWgd,EAAOhc,GAAMwX,EAAO5H,QAE7CyH,GAAK2E,EAAQhc,EAAKwX,GACb7f,GAAGiT,MAAM4M,KACL7f,GAAGiT,MAAM4M,EAAM0S,UAChBlO,EAAOhc,GAAKkqB,OAAS1S,EAAM0S,QAE1BvyB,GAAGiT,MAAM4M,EAAMyS,YAChBjO,EAAOhc,GAAKiqB,SAAWzS,EAAMyS,WAMjD,YAAiBp0B,IAAT+Z,GAAsBxb,MAAMsB,QAAQsmB,GAAWA,EAAO/f,OAAOjE,IAAMA,IAAMA,EAAEmoB,QAAUnE,EFJjG,CAAC,OAAQ,SAAU,SAAU,UAAW,QAAS,UAAUpd,QAAQtI,IAC/DqB,GAAGrB,GAAK,SAAUuzB,GACd,OAAOlyB,GAAGzD,KAAK21B,EAAKvzB,MGlC5B,MAAMuB,GAAW/D,OAAO6/B,QAAU,SAAUryB,GACxC,IAAK,IAAIqQ,EAAGwgB,EAAI,EAAGA,EAAIhb,UAAUhhB,OAAQg8B,IACrC,IAAK,IAAI/yB,KAAKuS,EAAIwF,UAAUgb,GAAIxgB,EAC5B7d,OAAOojB,UAAUigB,eAAetH,KAAKle,EAAGvS,IAAOiY,GAAK/V,EAAGlC,EAAGuS,EAAEvS,IAIpE,OAAOkC,GCDJ,SAASiG,GAAI0R,EAAK3b,GACrBkgB,QAAQC,MATL,SAAgBvpB,EAAM+kB,EAAK3b,GAC9B,MAAQ,gBAAgBpJ,OAAU+kB,KAAS3b,EAAQ,aAAeuC,KAAKC,UAAUxC,EAAKyS,QAAUzS,EAAKyS,UAAYzS,GAAS,IAQ5GjI,CAAO,MAAO4jB,EAAK3b,ICLrC,MAAM+5B,GAAS,wBACTC,GAAS,wBAsBf,SAASC,GAAO7mB,GACZ,OAAQ,IAAItV,SAAS,UAAYsV,EAAzB,GC5BZ,IAAIzK,GAAK,SLKF,SAAcyX,EAAQrgB,UAClBqgB,EAAOrgB,qBEUX,SAAc+zB,GACjB,MAAmB,iBAARA,GAA4B,OAARA,EAAqBA,EAC7CA,aAAeh9B,MAAQ,IAAIg9B,GAAO,IAAIA,eIlBlC,SAAkB1gB,EAAIyX,GACjC,IAAIqP,EAAU,KACd,OAAO,YAAa3N,GACA,OAAZ2N,GACArL,aAAaqL,GACjBA,EAAUnL,WAAW,IAAM3b,EAAGmf,KAAK54B,QAAS4yB,GAAM1B,gBLoCnD,SAAkBpzB,GACrB,OAAOiK,GAAW,GAAI,CAACjK,MAAAA,IAAQA,wCAG5B,SAAwBinB,KAAWyT,GAItC,OAHAA,EAAI7wB,QAAQ8e,IACR1B,EAAShd,GAAWgd,EAAQ0B,KAEzB1B,aMjDI,SAAiBxgB,EAAMia,EAAKjc,GACvC,IAAkBy6B,EAAdnd,EAAQtb,EAWZ,OAVCia,GAAO,IAAIza,MAAM,KAAK4D,QAAQ5G,IACvBi8B,IACKnd,EAAMmd,IAA2B,iBAAbnd,EAAMmd,KAC3Bnd,EAAMmd,GAAM,IAEhBnd,EAAQA,EAAMmd,IAElBA,EAAKj8B,IAET8e,EAAMmd,GAAMz6B,EACLsd,YLAI,WACX,OAAOjf,GAASsvB,MAAMlwB,KAAMkgB,yBJ4CjB,SAASzI,EAAkB+H,GAEtC,MAAMxT,EAAa,CACfhD,CAAC+yB,GAASx/B,MAAOw/B,IAEf7vB,EAAU,GACVgQ,EAAa,GACb0K,EAAc,GACd4Z,EAAU,GACVC,EAAU,GACVC,EAAW,GACX7T,EAAc,CAChBrN,EAAO5L,WAELyY,EAAY,IACXyQ,IAED3wB,EAAQyU,KACd,IAAI+f,EAAe,CAAClc,OAAQ,IAC5B,MAAM7M,GAA+B,IAApB4H,EAAO5H,SAClBkY,EAAWnT,EAAAA,SAAS,CACtBikB,QAAShpB,IAEPqL,ENnDH,WAEH,MAAM4D,EAAW,GAEjB,SAAS5D,EAAWD,GAChBhjB,KAAK2K,GAAKqY,EAAOrY,GACjB3K,KAAKgjB,OAASA,EAoDlB,OAjDA1Z,EAAM,QAAC2Z,EAAWhD,UAAW,CACzBU,KAAK+c,EAAKn5B,EAAM5C,GACZ,OAAOq6B,GAAcz3B,EAAMvE,KAAKF,EAAE49B,EAAKtjB,GAAQ7V,GAAO5C,KAE1DqmB,cAAc/qB,EAAMsH,EAAM5C,GACtB,IACI,OAAOq6B,GAAcz3B,EAAMs8B,cAAY5jC,EAAMmd,GAAQ7V,GAAO5C,IAC9D,MAAOhC,GAEL,OADA4mB,QAAQC,MAAM7mB,GACPkhC,EAAAA,YAAY,MAG3B/gC,EAAE49B,EAAKn5B,EAAM5C,GACT,MACMm/B,GADK9gC,KAAK2K,IAAM2R,EAAkBA,sBACjBykB,WAAWvhB,OAAOshB,YAAYpD,GAC/CtmB,EAAYpX,KAAKgjB,OAAO3G,GAAG1P,KAAKX,WAAW0xB,IAC5CtmB,GAAa0pB,UACPv8B,EAAK3H,iBAEhB,IACI,OAAOikC,EAAWA,YAACzpB,IAAc0pB,EAAcpD,EAAMsD,mBAAiBtD,IAAOn5B,EAAM5C,GACtF,MAAOhC,GAEJ,OADA4mB,QAAQC,MAAM7mB,GACPkhC,EAAAA,YAAY,MAG3Bha,SAAAA,IAGJvd,EAAAA,QAAO2Z,EAAY,CACf4D,SAAAA,EACAha,MAAMA,EAAOtQ,GACTsqB,EAASha,GAAStQ,GAEtBinB,IAAIyd,GACApkC,OAAO6K,KAAKu5B,GAAOt5B,QAASgB,IACxB,MAAMu4B,EAAOzjB,UAAO9U,GACdsf,EAAQrG,EAAQ,QAACjZ,GAAGw4B,oBACpBpgC,EAAIkgC,EAAMt4B,GAChBsa,EAAWpW,MAAMlE,EAAG5H,GACpB,CAAC4H,EAAGu4B,EAAMjZ,GAAOtgB,QAAQ3J,IACrBilB,EAAWhD,UAAUjiB,GAAK,SAAUuG,EAAM5C,GACtC,OAAO3B,KAAK2gB,KAAKkG,EAASle,IAAM3K,EAAGuG,EAAM5C,WAOtDshB,EMPYme,GACbhU,EAAW,GACXnN,EAAY,GAIlB,SAASohB,EAAO9kC,GACZ,MAAMgG,EAAMs9B,GAAStjC,GACrB,OAAIY,MAAMsB,QAAQ8D,GACPA,EAAI7D,IAAIqC,GACJA,EAAEqE,OAEN7C,EACAA,EAAI6C,WADR,EAKX,SAASk8B,EAAO7nB,GACZgnB,EAAQ72B,KAAK6P,GAGjB,SAAS0iB,IACL,MAAM53B,EAAOq7B,MAAY1f,WACrB3b,EAAKyK,IAAMzK,EAAKoI,OAAMuP,EAAW3X,EAAKyK,IAAMzK,EAAKoI,MAGzD,SAAS0K,IACL,MAAM9S,EAAOq7B,MAAY1f,WACrB3b,EAAKyK,IAAMzK,EAAKoI,OAAM0f,EAAU9nB,EAAKyK,IAAMtO,EAAE,QAACyD,SAASI,EAAKoI,MAAQpI,EAAKoI,KAAO,IAC7EpI,EAAKoI,KACRpQ,KAAMgI,EAAKyK,KAInB,SAASmI,EAAetK,GACpBoW,EAAWO,IAAI3W,GAGnB,SAASyK,EAAOvO,GACZ,GAAyB,IAArBmX,UAAUhhB,OACV,OAAOmsB,GACJ,GAAmB,iBAARtiB,GAAyC,IAArBmX,UAAUhhB,OAC5C,OAAOgN,EAAQmO,EAAAA,QAAOtR,IAE1B,MAAMxE,EAAOq7B,MAAY1f,WACzB,IAAK3b,EAAKyK,KAAOzK,EAAKoI,KAAM,OAAO0e,GACnC,MAAM9uB,EAAO8d,EAAAA,QAAO9V,EAAKyK,IACnBsI,EAAS/S,EAAKoI,KACd40B,GAAwB,IAAjBjqB,EAAOuB,MAAiB3M,EAAQ3P,QAAQqC,EACrDsN,EAAQ3P,GAAQge,GAAejD,EAAQiqB,GAAQlW,IAC/Clf,EAAM5P,GAAQ8P,GAAe9P,GAC7B+a,EAAOnL,OAAS7C,EAAM,QAAC6C,EAAOmL,EAAOnL,OAGzC,SAASiL,EAAUpI,EAAIoI,GACnB,IAAI7a,EACJ,GAAImE,EAAE,QAAC/D,OAAOqS,IAEV,GADAzS,EAAOyS,OACWpQ,IAAdwY,EACA,OAAOpL,EAAWzP,QAGtBA,EAAOyS,EAAGwyB,aAAexyB,EAAGzS,KAC5B6a,EAAYpI,EAEhB,IAAKzS,IAAS6a,EAAW,OACzB,MAAMqqB,EAAYpnB,UAAO9d,GACzByP,EAAWzP,GAAQ6a,EACnBpL,EAAWy1B,GAAarqB,SACjB6L,EAAW4D,SAAStqB,UACpB0mB,EAAW4D,SAAS4a,UACpBv1B,EAAQ3P,UACR2P,EAAQu1B,GACXrqB,EAAUsqB,kBAAkBpqB,EAAO/a,EAAM6a,EAAUsqB,kBAG3D,SAASn6B,IACL,OAAO0U,GAAY/E,GAAYlL,EAAYkQ,GAiB/C,SAASylB,IACL,OAAO5F,GAIX,SAASvY,EAAI/J,EAAIzW,GAGb,OAFItC,EAAAA,QAAGyD,SAASsV,EAAGxC,SAAUwC,EAAGxC,QAAQyJ,EAAQ1d,GACvCtC,EAAE,QAACyD,SAASsV,IAAKA,EAAGiH,EAAQ1d,GAC9BhD,KAGX,SAAS0gB,EAAO/O,EAAOtP,GACnB,IAAIu/B,EA1BR,SAAuBv7B,EAAMhE,GACzB,MAAM2I,EAAOzD,IACb,OAAOs6B,YAAU,CACbt9B,KAAIA,IACOoY,WAAS,CACZtW,KAAAA,EAAMhE,OAAAA,IAGdxC,SACI,OAAOC,EAAAA,EAAEkL,EAAM,CAACrN,IAAK,QAASqC,KAAK8hC,WAiBjCC,CAAcpwB,EAAOtP,GAAU,IACzCo+B,EAAQ94B,QAAQ5G,IACZuU,GAAO,IAAMvU,EAAE2f,EAAQkhB,MAE3B,MAAMI,EAAMtsB,SAASG,cAAc,SAClCxT,MAAAA,OAAM,EAANA,EAAQjB,KAAMsU,SAAS2nB,MAAMrnB,YAAYgsB,GAE1C,OADWJ,EAAIK,MAAMD,GACX7gC,MAAMkb,GAAGY,KAKvB,SAAS4D,EAAQqhB,GACb,IAAIC,EAAU,IAAI3iB,GAgBlB,OAfI0iB,EACAC,EAAQD,QAAU,CACdl2B,WAAAA,EACAE,QAAAA,EACAgQ,WAAAA,EACA0K,YAAAA,EACAyF,UAAAA,EACAoU,QAAAA,EACAt0B,MAAAA,EACAihB,SAAAA,EACA0C,SAAAA,UAGGqS,EAAQD,QAEZzqB,EAAkB0qB,GAG7B,SAASC,EAAc7lC,EAAM6J,GACzBwgB,EAAYrqB,GAAQ6J,EAGxB,SAASi8B,EAAW9lC,EAAMkd,GACtB2T,EAAS7wB,GAAQkd,EAGrB,SAAS6oB,EAAU/lC,EAAM4f,GACrB,MAAMH,EAASwkB,EAAQjkC,IAAS,GAC1B2P,EAAU8P,EAAO9P,SAAW,GAC9BiQ,EAAOjQ,SACPrP,OAAO6K,KAAKyU,EAAOjQ,SAASvE,QAAQgB,IAChCuD,EAAQvD,GAAK4R,GAAe4B,EAAOjQ,QAAQvD,GAAI0iB,MAGvDlP,EAAO5f,KAAOA,EACdikC,EAAQjkC,GAAQ,IAAIyf,KAAWG,EAAQjQ,QAAAA,GAG3C,SAASqlB,EAAYviB,GACbA,GACAnS,OAAO6K,KAAKm4B,IAAUl4B,QAAQ5G,KACb5D,MAAMsB,QAAQohC,GAAS9+B,IAAM8+B,GAAS9+B,GAAK,CAAC8+B,GAAS9+B,KAC7D4G,QAAQsR,IACTA,EAAK4E,IAAI3c,MAAM,aAAe8N,OAM9C,SAASohB,EAAQphB,EAAIzK,GACjB0gB,EAAAA,QAAQ6K,EAAU9gB,EAAIzK,GACtBgtB,EAAYviB,GAGhB,SAASuzB,EAAcvzB,EAAIzK,GACvB,MAAM2P,EAAWA,IAAIpB,IACVwC,GAAO,IAAM/Q,KAAQuO,IAEhCoB,EAASsuB,SAAU,EACnBpS,EAAQphB,EAAIkF,GAGhB,SAASid,EAAQniB,EAAIK,GACjB,MAAMtL,GAASiL,GAAM,IAAIjL,MAAM,KAC/BiL,EAAKjL,EAAMyvB,QACX,MAAMptB,EAAQrC,EAAM5E,KAAK,KAIzB,GAHKM,EAAWA,YAACqwB,EAAU9gB,KACvB8gB,EAAS9gB,GAAM8wB,IAEfhQ,EAAS9gB,KAAQ8wB,GAAa,CAC9B,IAAIv9B,EAAMutB,EAAS9gB,GAMnB,OALIzM,GAAOA,EAAIigC,QACXjgC,EAAMA,EAAI6D,GACHrC,EAAM7E,SACbqD,EAAMkZ,GAAQlZ,EAAKwB,IAER,MAAPxB,GAAuB,KAARA,EAAc8M,EAAM9M,EAE3C,OAAO8M,EAIf,SAASuE,EAAU6F,GACfoT,EAAYjjB,KAAK6P,GAGrB,SAASgpB,EAAWzzB,UACT8gB,EAAS9gB,GAChBuiB,EAAYviB,GAGhB,SAASwB,EAAGjU,EAAM2X,GACdwsB,EAAS92B,KAAK,CAACrN,KAAAA,EAAM2X,SAAAA,IAGzB,SAASgD,GAAWvM,GAChBrB,EAAAA,QAAOtJ,KAAM,CACTgP,GAAIA,KACJ0R,OAAAA,EACA/V,GAAAA,EACA6D,QAAS+tB,GAAc/c,EAAOhR,SAC9BtC,QAAAA,EACAmgB,UAAAA,EACAzF,YAAAA,EACAwG,SAAAA,EACAxV,SAAAA,EACAjG,MAAOhH,EAAGlO,MAAM4J,KAChB9J,KAAMoO,EAAGlO,MAAMF,MAAQmmC,EAAAA,UACvBt3B,MAAOT,EAAGlO,MAAM2O,MAChBuB,KAAM,CACFX,WAAAA,EACAkQ,WAAAA,GAEJ5C,IAAK,KACLknB,QAAAA,EACAjV,aAAc,KACdgG,YAAAA,EACAzB,SAAAA,EACA7M,WAAAA,EACApF,IAAK,IAAI8kB,EAAAA,QACTpY,QAAS,GACTjpB,QAAS3D,EAAGA,IAAC,IACbkvB,YAAAA,EACAsQ,WAAY,IAAIyF,QAChBC,QAASlmB,EAAQA,SAAC,MAEtB+jB,EAAS/4B,QAAQpG,IACbvB,KAAK6d,IAAIK,IAAI3c,EAAKhF,KAAMgF,EAAK2S,YAEjC1K,EAAAA,SAAS,KACLzL,QAAMiC,KAAKsB,QAAS,KAChBtB,KAAK8Q,QAAQgD,SAAS+Z,cAAc7tB,KAAKsB,QAAQxD,OACjDkC,KAAKoF,MAAM6Z,WACZ,CAAC3c,MAAM,MAEdgH,EAAAA,QAAOqB,EAAGo2B,WAAW/0B,WAAYA,GACjC1C,EAAAA,QAAOqB,EAAGo2B,WAAW7kB,WAAYA,GACjClc,KAAK8Q,QAAU,IAAIgyB,GAAO9iC,MACtBA,KAAKzD,OACDyD,KAAKoL,OACAy0B,GAAS7/B,KAAKzD,QAAOsjC,GAAS7/B,KAAKzD,MAAQ,IAChDsjC,GAAS7/B,KAAKzD,MAAMqN,KAAK5J,OAEzB6/B,GAAS7/B,KAAKzD,MAAQyD,MAkVlC,SAAS+iC,GAAQC,GACb15B,EAAAA,QAAO05B,EAAY,CACfrrB,QAAS6H,EAAO7H,QAChBD,GAAI8H,EAAO9H,GACXE,SAAAA,EACAhE,UAAAA,EACAud,QAAAA,EACAoR,cAAAA,EACAnS,QAAAA,EACAqS,WAAAA,EACAlR,YAAAA,EACAplB,MAAAA,EACAiL,UAAAA,EACA+kB,UAAAA,EACAiG,cAAAA,EACAC,WAAAA,EACAC,UAAAA,EACAjrB,SAAAA,EACAsqB,OAAAA,EACArqB,OAAAA,EACAkM,IAAAA,EACA3C,QAAAA,EACA1J,eAAAA,EACAuB,SAAAA,GACAxP,UAAAA,GACA0P,UAAAA,SACAvT,GACAkC,MAAAA,UACAqb,EAAOA,kBACPyT,EAASA,iBACT9W,EAAMA,OACN+hB,OAAAA,EACAD,OAAAA,EACA7wB,GAAAA,IAIR,IAAmBwyB,GA4CnB,GAjtBJ,SAAqBnrB,GACjB,MAAM9O,EAAM8O,EAAM9O,KAAO,GACnBmF,EAAQ2J,EAAM3J,OAAS,GACvB4J,EAASD,EAAMC,QAAU,GAC/BG,GAASrO,QAAQb,GACjBmP,GAAWtO,QAAQsE,GACnBiK,GAAYvO,QAAQkO,GAEpBkI,GAAY,IAAIjX,KAAQmF,KAAU4J,IAmClCmrB,CAAYzjB,EAAO3H,OAAS,IAgH5B0C,GAAemG,EAAQT,GAwJvB/I,GAAWU,SAAWA,EAEtBtO,EAAM,QAAC4N,GAAW+I,UAAW,CACzBN,OACQ3f,KAAKkjC,SACLljC,KAAKuqB,QAAQ3gB,KAAK7L,EAAKA,MAAC,IAAMiC,KAAK2K,GAAG8R,WAAWT,OAAOS,WAAWJ,GAAG/a,QAAQxD,MAAO,KACjFkC,KAAKgf,cACLhf,KAAK8Q,QAAQ1L,IAAI6Z,WAClB,CAAC3c,MAAM,EAAM4c,MAAO,UAEvBlf,KAAK2K,GAAGlO,MAAM0f,SACdnc,KAAKurB,aAA+C,iBAAzBvrB,KAAK2K,GAAGlO,MAAM0f,OAAsBnc,KAAK2K,GAAGlO,MAAM0f,OAASnc,KAAKwgC,QAAQxgC,KAAK2K,GAAGlO,MAAM0f,UAEhHnc,KAAKurB,cAAgBvrB,KAAK2K,GAAG8R,WAAWT,SACzChc,KAAKurB,aAAevrB,KAAK2K,GAAG8R,WAAWT,OAAOS,WAAWJ,GAAGkP,cAE3DvrB,KAAKurB,eACNvrB,KAAKurB,aAAevrB,KAAKwgC,QAAQh6B,SAErCxG,KAAKgf,cACLhf,KAAK8Q,QAAQ6O,QAEjBwG,iBAAiB7hB,KAAWwO,GAExB,GADA9S,KAAK6d,IAAI3c,MAAMoD,KAAWwO,GACtB9S,KAAKurB,cAAgBvrB,KAAKurB,aAAajnB,GACvC,OAAOgR,GAAO,IAAMtV,KAAKurB,aAAajnB,MAAWwO,KAGzDzT,EAAE2P,EAAIwiB,EAAQlY,GACV,IAAIxb,EAAQwb,EAAMA,EAAI,MAAQtK,GAAMhP,KAAKmjC,qBAAqBn0B,GAU9D,OATa,MAATlR,IACAA,EAAQ,IAERA,GAAS0zB,GACT30B,OAAO6K,KAAK8pB,GAAQ7pB,QAAQy7B,IACxB,MAAMhQ,EAAQ,IAAIhkB,OAAO,IAAIg0B,KAAU,KACvCtlC,EAAQA,EAAMgN,QAAQsoB,EAAO5B,EAAO4R,MAGrCtlC,GAEXulC,iBAAiBr0B,GACb,IAAIjL,EAAQiL,EAAGjL,MAAM,KACrB,MAAMgF,EAAMhF,EAAMyvB,QACZnxB,EAASrC,KAAKsB,QAAQxD,MAAM+xB,YAAc7vB,KAAKsB,QAAQxD,MAAM+xB,WAAW9mB,GAC9E,GAAI1G,EAAQ,CACR,GAAoB,WAAhBA,EAAOpF,KACP,OAAOwe,GAAQpZ,EAAOkC,KAAMR,GACzB,CACH,IAAIxB,EACJ,MAAMkD,EAAMzF,KAAKm9B,WAAW7jB,IAAIjX,GAChC,GAAIoD,EAAK,CAIL,GAHIA,EAAIN,SACJ5C,EAAMkZ,GAAQhW,EAAIlB,KAAMR,KAEvB0B,EAAIqK,QACL,OAAOvN,EAEXkD,EAAIqK,SAAU,EACd9P,KAAKm9B,WAAWD,IAAI76B,EAAQoD,QAE5BzF,KAAKm9B,WAAWD,IAAI76B,EAAQ,CAAC8C,QAAQ,IAEzC,MAAM0kB,EAASjM,EAAAA,QAAS,KACpB2M,IACA,MAAM9kB,EAAMzF,KAAKm9B,WAAW7jB,IAAIjX,GAC3BrC,KAAKsB,QAAQxD,MAAM+xB,aAAgF,IAAlEhzB,OAAO89B,OAAO36B,KAAKsB,QAAQxD,MAAM+xB,YAAYnmB,QAAQrH,IACnFoD,IACAA,EAAIqK,SAAU,EACd9P,KAAKm9B,WAAWD,IAAI76B,EAAQoD,IAEhCzF,KAAK6d,IAAI3c,MAAM,yBAA2B6H,IAE1C/I,KAAKm9B,WAAWrS,OAAOzoB,IAE5BA,EAAO6uB,MAAQ,KAEZoS,EAAS/+B,IACXvE,KAAKm9B,WAAWD,IAAI76B,EAAQ,CAAC8C,QAAQ,EAAMZ,KAAAA,IAC3CvE,KAAK6d,IAAI3c,MAAM,yBAA2B6H,IAGxCmL,EAAWA,CAACoF,EAAK0X,KACnB,GAAIA,IAA2B,IAAjB3uB,EAAOtE,MACjB,OAAOwsB,IAEX,GAAIyG,EAEA,YADAnH,IAGJ,MAAMvoB,EAAUtB,KAAK8Q,QAAQ6f,aAAa7N,EAAAA,KAAKzgB,GAASiX,GACxDhY,EAAQuhB,WAAa7iB,KAAK6iB,WAC1B7iB,KAAK8Q,QAAQ1L,IAAIC,MAAM/D,GAASkE,KAAKC,IACjC69B,EAAM79B,KACPC,MAAM/F,IACL2jC,EAAM,SAGR/Y,EAAUvqB,KAAK+wB,cAAc7c,GAKnC,OAJoB,IAAjB7R,EAAOtE,OACNwsB,IAEJvqB,KAAKuqB,QAAQ3gB,KAAK2gB,GACXhoB,KAInBuU,YACI,IAAIsF,EAASpc,KAAK2K,GAAG8R,WAAWD,IAAI/f,MAAM2f,OAC1C,OAAIA,GAA4B,iBAAXA,EACVA,EAAO7f,KAEI,iBAAX6f,EACAA,EAEJ,SAEX+mB,qBAAqBn0B,GACjB,IAAI3P,EAAIW,KAAK2K,GAAG8R,WAAWD,IAAI/f,MAAM4C,EACjC+c,EAASpc,KAAK2K,GAAG8R,WAAWD,IAAI/f,MAAM2f,OACtCte,OAAQc,EAOZ,GANIS,IACAvB,EAAQwX,GAAO,IAAMjW,EAAE2P,KAEd,MAATlR,GAAiBse,GAA4B,iBAAXA,IAClCte,EAAQ2d,GAAQW,EAAQpN,IAEf,MAATlR,EAAe,CACf,MAAMylC,EAAWvjC,KAAKsB,QAAQxD,MAAMylC,UAAY,GAC1CnnB,EAASpc,KAAK8W,YACpBhZ,EAAQ2d,GAAQ8nB,EAASnnB,IAAW,GAAIpN,GAC3B,MAATlR,IACAA,EAAQ2d,GAAQijB,GAAatiB,IAAW,GAAIpN,IAGpD,OAAOlR,GAEX0lC,gBAAgBx0B,GACZ,IAAIjL,EAAQiL,EAAGjL,MAAM,KACrB,MAAMgF,EAAMhF,EAAMyvB,QACZnxB,EAASrC,KAAKsB,QAAQxD,MAAM2lC,gBAAkBzjC,KAAKsB,QAAQxD,MAAM2lC,eAAe16B,GACtF,GAAI1G,EAAQ,CACR,MAAM2gB,EAAStiB,UAAGyD,SAAS9B,GAAUA,EAASugB,EAAOA,QAACvgB,EAAO2gB,QAC7D,GAAIA,EAAQ,CAER,OAAOvH,GADGuH,EAAO,IAAIlQ,IAAS9S,KAAK8Q,QAAQ1L,IAAI+rB,WAAWre,GAAO9S,KAAK8Q,QAAQ1L,KAC1DrB,MAIhCqsB,QAAQphB,EAAIzK,EAAM+sB,GACTA,EAIDlB,EAAQphB,EAAIzK,IAHZ0gB,EAAAA,QAAQjlB,KAAK2K,GAAG8R,WAAWD,IAAIC,WAAWJ,GAAGwmB,QAAS7zB,EAAIzK,GAC1DvE,KAAK6d,IAAI3c,MAAM,aAAe8N,KAKtCoiB,YAAYpiB,EAAIK,GACZ,IAAI9M,EAAM,KACV,GAAU,MAANyM,EAAY,CACZ,IAAIjL,EAAQiL,EAAGjL,MAAM,KACrB,MAAMgF,EAAMhF,EAAMyvB,QAElB,GADAjxB,EAAMkZ,GAAQzb,KAAK2K,GAAG8R,WAAWD,IAAIC,WAAWJ,GAAGwmB,QAAS7zB,GACjD,MAAPzM,EACA,OAAOA,EACJ,GAAY,aAARwG,EACPxG,EAAMvC,KAAK8Q,QAAQ1L,IAAIoX,IAAI3U,UAAS,QACjC,GAAY,eAARkB,EACPxG,EAAMvC,KAAK8Q,QAAQ1L,IAAI+Y,MAAMtW,UAAS,QACnC,GAAY,UAARkB,EACPxG,EAAMvC,KAAK8Q,QAAQ1L,IAAIyC,UAAS,QAC7B,GAAY,aAARkB,EACPxG,EAAMvC,KAAKsB,QAAQxD,WAChB,GAAY,gBAARiL,EACPxG,EAAMvC,KAAKqjC,iBAAiBt/B,EAAM5E,KAAK,MACvC4E,EAAQ,QACL,GAAY,SAARgF,EACPxG,EAAMvC,KAAKwjC,gBAAgBz/B,EAAM5E,KAAK,MACtC4E,EAAQ,QACL,GAAY,YAARgF,EACPxG,EAAMvC,KAAK8W,YACX/S,EAAQ,QACL,GAAY,OAARgF,EACPxG,EAAMvC,KAAKmjC,qBAAqBp/B,EAAM5E,KAAK,MAC3C4E,EAAQ,OACL,CAAA,GAAY,aAARgF,EACP,OAAO/I,KAAK8Q,QAAQC,QAEpBxO,EAAM4uB,EAAQniB,GACdjL,EAAQ,GAERxB,GAAOwB,EAAM7E,SACbqD,EAAMkZ,GAAQlZ,EAAKwB,IAG3B,OAAe,MAAPxB,GAAuB,KAARA,EAAc8M,EAAM9M,GAE/CwuB,cAActX,EAAIyX,GACd,IAAI3G,EAAU,GAEd,MAAMkQ,EAAO9nB,IACJ3S,KAAKsZ,MACNtZ,KAAKsZ,IAAMA,GAEfhE,GAAO,KACHmE,EAAGH,EAAK3G,KAER3S,KAAKsZ,MAAQA,IACbtZ,KAAKsZ,SAAM1a,IAIb0a,EAAMA,CAACtK,EAAIK,KACb,IAAIkH,EAKJ,GAJkB,iBAAPvH,IACPuH,EAAWvH,EAAGuH,SACdvH,EAAKA,EAAGA,IAERub,EAAQvb,GACR,OAAOub,EAAQvb,GAAIzM,IAEvB,MAAMgC,EAAO/F,EAAAA,SAAS,IACX+X,EAAWA,IAAavW,KAAKoxB,YAAYpiB,EAAIK,IAElDtL,EAAQiL,EAAGjL,MAAM,KACjBgF,EAAMhF,EAAMyvB,QACZkQ,EAAO3/B,EAAMyvB,SAAW,GACxBtf,EAAW0J,EAAAA,QAAS,KACtB,MAAMyH,EAAO9O,EAAWA,IAAavW,KAAKoxB,YAAYpiB,EAAIK,GACrDkb,EAAQvb,MAEAqW,aAAgBlhB,UAAYzD,EAAE,QAAC7D,OAAOwoB,IAASloB,MAAMsB,QAAQ4mB,KAAUA,IAASkF,EAAQvb,GAAIzM,KAAQqG,KAAKC,UAAUwc,KAAUzc,KAAKC,UAAU0hB,EAAQvb,GAAIzM,QACjKgoB,EAAQvb,GAAIzM,IAAM8iB,EAClBoV,GAAI,KAETvJ,GAAQ,GACL1G,EAAKzsB,EAAAA,MAAMwG,EAAOvG,IACpBkW,MAgBJ,OAdAlU,KAAK6d,IAAIK,IAAI,aAAenV,EAAKmL,GAC7BwvB,GACA1jC,KAAK6d,IAAIK,IAAI,aAAenV,EAAM,IAAM26B,EAAMxvB,GAElDqW,EAAQvb,GAAM,CACVyK,GAAKA,KACDzZ,KAAK6d,IAAIQ,KAAK,aAAetV,EAAKmL,GAC9BwvB,GACA1jC,KAAK6d,IAAIQ,KAAK,aAAetV,EAAM,IAAM26B,EAAMxvB,GAEnDsW,KAEJjoB,IAAKgC,EAAKzG,OAEPyG,EAAKzG,OAEhB28B,GAAI,GACJ,MAAMjQ,EAAKA,KACP3tB,OAAO6K,KAAK6iB,GAAS5iB,QAAQgB,GAAK4hB,EAAQ5hB,GAAG8Q,MAC7C8Q,EAAU,IAGd,OADAvqB,KAAKuqB,QAAQ3gB,KAAK4gB,GACXA,GAEX0Y,QACI,OAAOljC,KAAK2K,GAAG8R,WAAWT,QAAUhc,KAAK2K,GAAGlO,MAAM4O,cAEtD2T,cACIhf,KAAKsB,QAAQxD,MAAQ,GACrB,IAAIwD,EAAU,CACVuG,SAAU,GACVsB,UAAW,GACXC,SAAU,GACVumB,YAAa,GACbE,WAAY,MAAO3nB,EAAAA,SAASy4B,IAEhC,MAAMgD,EAAY3jC,KAAKkjC,QACnBS,IACAriC,EAAUtB,KAAK48B,aAAat7B,EAAStB,KAAK2K,GAAG8R,WAAWT,OAAOS,WAAWJ,GAAG/a,QAAQxD,OAAS,IAAI,IAEtGwD,EAAUtB,KAAK48B,aAAat7B,EAAStB,KAAK2K,GAAGlO,MAAM4F,QACnD,MAAM+C,EAAMpF,KAAKoF,MACjBpF,KAAKmmB,iBAAiB,cAAe7kB,EAAS,CAAC8D,IAAAA,EAAKu+B,UAAAA,IACpD3jC,KAAK6tB,cAAcvsB,IAEvBs7B,aAAanW,EAAQzjB,EAAKgZ,GAUtB,OATAhZ,EAAM,IAAIA,GAAO,IACjBgZ,GAAU,CAAC,OAAQ,WAAY,UAAW,YAAa,WAAY,YAAa,UAAW,WAAY,SAAU,WAAY,KAAM,cAAe,SAASrU,QAAS3J,WACzJgF,EAAIhF,KAEXgF,EAAIyhB,SACJgC,EAAOhC,O3BplBhB,SAAqBgC,EAAQ5N,GAChC,OAAK4N,GACL5pB,OAAO6K,KAAKmR,GAAS,IAAIlR,QAASgB,IAC1BkQ,EAAMlQ,KACN8d,EAAO9d,GAAKiQ,GAAU6N,EAAO9d,IAAM,GAAIkQ,EAAMlQ,OAG9C8d,GANa5N,E2BmlBQuL,CAAYqC,EAAOhC,OAAQzhB,EAAIyhB,eACxCzhB,EAAIyhB,QAEfzkB,KAAK8Q,QAAQgD,SAAS8oB,aAAa,CAAC55B,GAAMyjB,GACnCA,GAEXoH,cAAcvsB,GACVtB,KAAKsB,QAAQxD,MAAQkC,KAAK48B,aAAa58B,KAAKsB,QAAQxD,MAAOwD,GAC3DtB,KAAK8Q,QAAQgD,SAAS+Z,cAAc7tB,KAAKsB,QAAQxD,OACjDkC,KAAK6d,IAAI3c,MAAM,uBAEnBkE,MACI,OAAOpF,KAAK8Q,QAAQ1L,KAExBvF,SACI,OAAOG,KAAK8Q,QAAQjR,UAExBoB,UACIjB,KAAK8Q,QAAQ7P,WAEjBwd,UACI,GAAIze,KAAKzD,KACL,GAAIyD,KAAKoL,MAAO,CACZ,MAAMoT,EAAMqhB,GAAS7/B,KAAKzD,MAAMmN,QAAQ1J,MACxC6/B,GAAS7/B,KAAKzD,MAAMuN,OAAO0U,EAAK,eAEzBqhB,GAAS7/B,KAAKzD,MAG7BmkC,EAAS/4B,QAAQpG,IACbvB,KAAK6d,IAAIQ,KAAK9c,EAAKhF,KAAMgF,EAAK2S,YAElClU,KAAK6iC,QAAU,GACf7iC,KAAKuqB,QAAQ5iB,QAAQ8R,GAAMA,KAC3BzZ,KAAKuqB,QAAU,GACfvqB,KAAK8Q,QAAQwO,WAAW,KAE5BR,UACI9e,KAAK8Q,QAAQqkB,aAAa,IAAMn1B,KAAK6d,IAAI3c,MAAM,YAAalB,KAAK8Q,QAAQ1L,SAmEjF29B,GAAQ9iB,GAzBW+iB,GA0BT/iB,EAzBN3W,EAAAA,QAAO05B,GAAY,CACftiB,OAAAA,EACAzJ,QAAQ2qB,EAAKtgC,GACTq/B,EAAe,IAAIA,KAAkBr/B,GAAW,IAChD,MAAMyH,EAAM,uBAAuB6O,EAAW,SAAW,MAAM4H,EAAO9H,KACtE,IAAiB,IAAbkqB,EAAI74B,GAAe,OACvB64B,EAAI74B,IAAO,EAEX,MAAM66B,EAAc,SAAUjyB,EAAO3O,EAAM,IACvC,OAAO0d,EAAO/O,EAAO3O,IAGzB+/B,GAAQa,GAERhC,EAAIpiB,OAAOqkB,iBAAiBD,YAAcA,EAC1C,MAAME,EAAav8B,IACnBq6B,EAAIxqB,UAAU0sB,EAAWvnC,KAAMunC,GAC/BrD,EAAQ94B,QAAQ5G,IACZuU,GAAO,IAAMvU,EAAEiiC,GAAYpB,SAS3CW,EAAc,UAAWhE,IACzBgE,EAAc,gBAAiB/D,IAC/B+D,EAAc,kBAAmB9D,IAEjCxb,EAAWO,IAAI,CAACuY,SAAU,eAE1Bvc,EAAOvI,SAAWyJ,EAAO8C,IAAIhE,GAE7B8hB,EAAO,CAAC7jC,EAAGmkC,KACPA,EAAImC,MAAM,CACNtnC,MAAO,CAAC,wBAIhB6a,EAAOmmB,IAEHje,EAAO0iB,QAAS,CAChB,MAAMA,EAAU1iB,EAAO0iB,QACvBA,EAAQl2B,YAAc1C,EAAM,QAAC0C,EAAYk2B,EAAQl2B,YACjDk2B,EAAQh2B,SAAW5C,EAAM,QAAC4C,EAASg2B,EAAQh2B,SAC3Cg2B,EAAQhmB,YAAc5S,EAAM,QAAC4S,EAAYgmB,EAAQhmB,YACjDgmB,EAAQtb,aAAetd,EAAM,QAACsd,EAAasb,EAAQtb,aACnDsb,EAAQ7V,WAAa/iB,EAAM,QAAC+iB,EAAW6V,EAAQ7V,WAC/C6V,EAAQzB,SAAWn3B,EAAM,QAACm3B,EAASyB,EAAQzB,SAC3CyB,EAAQ/1B,OAAS7C,EAAM,QAAC6C,EAAO+1B,EAAQ/1B,OACvC+1B,EAAQpS,UAAYxmB,EAAM,QAACwmB,EAAUoS,EAAQpS,UAC7CoS,EAAQ9U,UAAY9jB,EAAM,QAAC8jB,EAAU8U,EAAQ9U,UAGjD,MAAM4W,GAAcz8B,IAepB,OAdAgT,GAAeypB,GAAa/jB,GAC5BpjB,OAAOsc,iBAAiB6qB,GAAa,CACjC3+B,MAAO,CACHiU,IAAGA,IACQ2G,EAAU5a,MAErB63B,IAAI36B,GACA0d,EAAU5a,MAAQ9C,MAK9ByhC,GAAYC,KAAOhkB,EAEZ+jB,oCUtxBI,SAAiBhqB,EAAOkqB,GACnC,OAAOrnC,OAAO6K,KAAKsS,GAAOZ,OAAO,CAACof,EAAKj8B,KAC9B2nC,IAAsC,IAA3BA,EAAQx6B,QAAQnN,KAC5Bi8B,EAAIj8B,GAAQyd,EAAMzd,IAEfi8B,GACR,yBJ8EA,SAAmB9Y,EAAM/G,GAC5B,OAAO/P,KAAK5B,MAAM0Y,GAAM,SAAU/W,EAAG5H,GACjC,OAAIL,GAAGiT,MAAM5S,KAAOA,EAAE2I,QAAgB3I,EAvDvC,SAAiB0Y,EAAId,GACxB,GAAIc,GAAM/Y,GAAG/D,OAAO8c,IAAOA,EAAGva,OAAS,EAAG,CACtC,IAAI6B,EAAI0Y,EAAGqa,OACPnhB,GAAO,EACX,IACI,GAAI5R,EAAE2I,QAAQ22B,IAAU,GAA2B,IAAtBt/B,EAAE2I,QAAQ02B,IACnCr/B,EAAIA,EAAE+J,QAAQu1B,GAAQ,IAAIv1B,QAAQs1B,GAAQ,IAC1CztB,GAAO,OACJ,GAA0B,IAAtB5R,EAAE2I,QAAQ,QACjB3I,EAAIA,EAAEi9B,UAAU,GAChBrrB,GAAO,OACJ,GAA4B,IAAxB5R,EAAE2I,QAAQ,UACjB3I,EAAIA,EAAEi9B,UAAU,GAChBrrB,GAAO,MACJ,CAAA,GAA8B,IAA1B5R,EAAE2I,QAAQ,YAAmB,CACpC,MAAMnN,EAAOwE,EAAEi9B,UAAU,GAUzB,OATAj9B,EAAI,YAAa+R,GACb,MAAMoB,EAAWpB,EAAK,GAAG1N,IAAIsqB,eAAenzB,GAC5C,GAAI2X,EACA,OAAOA,EAAS0kB,KAAK54B,QAAS8S,IAItC/R,EAAEkyB,OAASxZ,EACX1Y,EAAEsxB,UAAW,EACNtxB,EACJ,GAA2B,IAAvBA,EAAE2I,QAAQ,SAIjB,OAHA3I,EAAIu/B,GAAO,uBAAyBv/B,EAAEi9B,UAAU,GAAK,OACrDj9B,EAAEkyB,OAASxZ,EACX1Y,EAAEsxB,UAAW,EACNtxB,GACC4X,GAAmC,IAA3B5X,EAAE2I,QAAQ,cAA4B,cAAN3I,KAExC4X,GAAmC,IAA3B5X,EAAE2I,QAAQ,cAA4B,cAAN3I,KADhD4R,GAAO,GAIX,IAAKA,EAAM,OAAO8G,EAClB,IAAIlX,EACJ,IACIA,EAAM+9B,GAAOv/B,GAChB,MAAOpB,GACJ4C,EAAM+9B,GAAO,YAAcv/B,GAG/B,OADAwB,EAAI0wB,OAASxZ,EACNlX,EACT,MAAO5C,GAEL,YADA2Q,GAAI,QAAQvP,aAAapB,MAIjC,OAAO8Z,EAMImJ,CAAQ7hB,EAAG4X,iBKvFX,SAAiB7a,GAC5B,OAAOX,MAAMsB,QAAQX,GACfA,EACC,CAAC,UAAMc,EAAW,IAAI8K,QAAQ5L,IAAU,EAAI,GAAK,CAACA,aCD9C,SAAgBqmC,GAC3B,GAAIzjC,GAAGrD,KAAK8mC,GACR,OAAOA,EACN,CACD,IAAIjmC,EAAO,IAAIb,KAAK8mC,GACpB,MAA2B,iBAApBjmC,EAAK0jB,WAAgCuiB,EAAYjmC,aNAzD,SAAgBi8B,EAAKlL,GACxB,OAAOrmB,KAAKC,UAAUd,GAAW5K,MAAMsB,QAAQ07B,GAAO,GAAK,GAAIA,GAAK,IAAO,SAAUpxB,EAAKxG,GACtF,IAAIA,IAAsB,IAAfA,EAAI6hC,OAAf,CAGA,GAAmB,mBAAR7hC,EACP,OAAOA,EAEX,GAAIA,EAAI0wB,OACJ,OAAO1wB,EAAI0wB,OAKf,GAHI1wB,EAAIywB,WACJzwB,EAAMA,EAAIywB,WAEVzwB,EAAIswB,OAER,OAAOuN,GAAS79B,EAAM89B,MACvBpR,aOxBQ,SAAgB1yB,GAC3B,IAAI2kC,EAAO3kC,EAAKuO,QAAQ,WAAY,OAAOq2B,oBAG3C,OAF0B,IAAtBD,EAAKx3B,QAAQ,OACbw3B,EAAOA,EAAKxS,OAAO,IAChBwS,eCAI,SAAmBpjC,GAC9B,OALJ,SAAmBA,GACf,OAAOA,GAA0B,iBAAVA,GAA4C,mBAAfA,EAAM0H,KAItD6+B,CAAUvmC,GACHA,EAEJ4Q,QAAQE,QAAQ9Q,eCRZ,SAAkByE,GAC7B,OAAc,MAAPA,EACD,GACe,iBAARA,EACHqG,KAAKC,UAAUtG,EAAK,KAAM,GAC1B5F,OAAO4F,eRHN,WACX,MAAMi3B,EAAM,OAASxqB,GACrB,MAAO,IAAM4lB,KAAK0P,SAAS1iB,SAAS,IAAI8M,OAAO,EAAG,GAAK5sB,OAAO,GAAGzE,KAAKknC,OAAS3iB,SAAS,IAAM4X,EAAI5X,SAAS,IAAM"}
|
|
1
|
+
{"version":3,"file":"index.min.js","sources":["../src/vant/src/components/calendar.jsx","../src/vant/src/core/utils.js","../src/vant/src/components/cascader.jsx","../src/vant/src/components/checkbox.jsx","../src/vant/src/components/select.jsx","../src/vant/src/components/uploader.jsx","../src/vant/src/components/radio.jsx","../src/vant/src/components/datePicker.jsx","../src/vant/src/components/timePicker.jsx","../src/vant/src/components/group.jsx","../src/vant/src/components/icon/IconWarning.vue","../src/vant/src/components/icon/IconWarning.vue?vue&type=template&id=78ef5f99&lang.js","../src/vant/src/components/index.js","../src/vant/src/parsers/index.js","../src/vant/src/parsers/hidden.js","../src/vant/src/parsers/row.js","../src/vant/src/core/alias.js","../src/vant/src/core/manager.js","../src/vant/src/core/config.js","../src/vant/src/core/api.js","../node_modules/style-inject/dist/style-inject.es.js","../src/vant/src/core/provider.js","../src/vant/src/core/index.js","../src/vant/src/index.js","../src/core/src/frame/attrs.js","../src/core/src/frame/util.js","../src/core/src/components/formCreate.js","../src/core/src/factory/creator.js","../src/core/src/factory/maker.js","../src/core/src/frame/fetch.js","../src/core/src/frame/api.js","../src/core/src/render/index.js","../src/core/src/render/cache.js","../src/core/src/render/render.js","../src/core/src/handler/page.js","../src/core/src/factory/context.js","../src/core/src/handler/loader.js","../src/core/src/handler/input.js","../src/core/src/factory/parser.js","../src/core/src/handler/context.js","../src/core/src/handler/index.js","../src/core/src/handler/inject.js","../src/core/src/handler/render.js","../src/core/src/handler/lifecycle.js","../src/core/src/handler/effect.js","../src/core/src/components/fragment.js","../src/core/src/factory/node.js","../src/core/src/factory/manager.js","../src/core/src/frame/provider.js","../src/core/src/parser/html.js","../src/core/src/frame/dataDriver.js","../src/core/src/frame/language.js","../src/core/src/frame/index.js","../src/utils/lib/type.js","../src/utils/lib/modify.js","../src/utils/lib/deepextend.js","../src/utils/lib/extend.js","../src/utils/lib/console.js","../src/utils/lib/json.js","../src/utils/lib/unique.js","../src/utils/lib/debounce.js","../src/utils/lib/deepset.js","../src/utils/lib/slot.js","../src/utils/lib/toarray.js","../src/utils/lib/todate.js","../src/utils/lib/toline.js","../src/utils/lib/topromise.js","../src/utils/lib/tostring.js"],"sourcesContent":["import {computed, defineComponent, ref, toRef, watch} from 'vue';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport dayjs from 'dayjs';\n\nconst NAME = 'fcCalendar';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n placeholder: String,\n formCreateInject: Object,\n disabled: Boolean,\n clearable: Boolean,\n type: String,\n modelValue: [String, Array],\n minDate: [String, Date],\n maxDate: [String, Date],\n },\n emits: ['update:modelValue', 'change', 'fc.el'],\n setup(props, _) {\n const show = ref(false);\n const modelValue = toRef(props, 'modelValue');\n const formCreateInject = toRef(props, 'formCreateInject');\n const inputValue = ref(modelValue.value);\n\n watch(() => modelValue.value, (n) => {\n inputValue.value = n;\n })\n\n const formatter = (date) => {\n return dayjs(date).format('YYYY-MM-DD');\n }\n const toDate = (str) => {\n return dayjs(str).toDate();\n }\n\n const defaultDate = computed(() => {\n const value = modelValue.value;\n if (Array.isArray(value)) {\n return value.map(toDate);\n } else if (value) {\n return toDate(value);\n } else {\n return null;\n }\n })\n\n const dateRange = computed(() => {\n return {\n minDate: props.minDate ? dayjs(props.minDate).toDate() : undefined,\n maxDate: props.maxDate ? dayjs(props.maxDate).toDate() : undefined,\n }\n })\n\n const formatValue = (value) => {\n if (Array.isArray(value)) {\n inputValue.value = value.map(formatter);\n } else if (value) {\n inputValue.value = formatter(value);\n } else {\n inputValue.value = value;\n }\n }\n const onInput = () => {\n _.emit('update:modelValue', inputValue.value);\n _.emit('change', inputValue.value);\n }\n const strValue = {\n range() {\n return inputValue.value.length ? inputValue.value.join(' - ') : '';\n },\n multiple() {\n return inputValue.value.length ? (formCreateInject.value.t('selectedData', {length: inputValue.value.length}) ||`选择了 ${inputValue.value.length} 个日期`) : '';\n }\n }\n\n return {\n show,\n inputValue,\n defaultDate,\n dateRange,\n open() {\n if (props.disabled) {\n return;\n }\n show.value = true;\n },\n confirm(value) {\n formatValue(value);\n show.value = false;\n onInput();\n },\n getStrValue() {\n if (inputValue.value) {\n return hasProperty(strValue, props.type) ? strValue[props.type]() : (inputValue.value || '');\n }\n return '';\n },\n clear(e) {\n e.stopPropagation();\n const value = Array.isArray(inputValue.value) ? [] : '';\n formatValue(value);\n onInput();\n }\n }\n },\n render() {\n const clearIcon = () => {\n return this.$props.clearable && !is.empty(this.inputValue) ?\n <i class=\"van-badge__wrapper van-icon van-icon-clear van-field__clear\"\n onClick={this.clear}></i> : undefined;\n }\n return <div class=\"_fc-calendar\">\n <van-field ref=\"el\" placeholder={this.placeholder} readonly disabled={this.$props.disabled}\n onClick={this.open}\n model-value={this.getStrValue()} isLink border={false} v-slots={{\n 'right-icon': clearIcon\n }}/>\n <van-calendar {...{...this.$attrs, ...this.dateRange}} show={this.show} onUpdate:show={v => (this.show = v)}\n type={this.type}\n onConfirm={this.confirm} defaultDate={this.defaultDate}/>\n </div>\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\n }\n});\n","export const normalizeOptions = (options) => {\n if (!options || !Array.isArray(options)) {\n return [];\n }\n return options.map(item => {\n const normalized = {...item};\n if (normalized.label !== undefined && normalized.text === undefined) {\n normalized.text = normalized.label;\n }\n if (normalized.children && Array.isArray(normalized.children)) {\n normalized.children = normalizeOptions(normalized.children);\n }\n return normalized;\n })\n};\n","import {computed, defineComponent, ref, toRef, watch} from 'vue';\nimport {normalizeOptions} from '../core/utils';\n\nconst NAME = 'fcCascader';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n placeholder: String,\n disabled: Boolean,\n clearable: Boolean,\n fieldNames: Object,\n modelValue: [String, Number],\n options: Array,\n minDate: [String, Date],\n maxDate: [String, Date],\n },\n emits: ['update:modelValue', 'fc.el', 'change'],\n setup(props, _) {\n const show = ref(false);\n const modelValue = toRef(props, 'modelValue');\n const fieldNames = toRef(props, 'fieldNames', {});\n const options = computed(() => {\n if (fieldNames?.value?.text) {\n return props.options || [];\n } else {\n return normalizeOptions(props.options || []);\n }\n })\n\n const findOptions = (options, value, path) => {\n for (let i = 0; i < options.length; i++) {\n if (options[i][fieldNames.value.value || 'value'] === value) {\n return [...path, options[i]];\n } else if (options[i][fieldNames.value.children || 'children']) {\n const find = findOptions(options[i][fieldNames.value.children || 'children'], value, [...path, options[i]]);\n if (find) {\n return find;\n }\n }\n }\n }\n\n const updateInputValue = (n) => {\n if (n == null || n === '') {\n return '';\n }\n const path = findOptions(options.value, n, []);\n return path ? path.map((option) => option[fieldNames.value.text || 'text']).join(' / ') : n;\n }\n\n const inputValue = ref(updateInputValue(modelValue.value));\n\n watch(() => modelValue.value, (n) => {\n inputValue.value = updateInputValue(n);\n });\n\n watch(() => options.value, () => {\n if (modelValue.value != null && modelValue.value !== '') {\n inputValue.value = updateInputValue(modelValue.value);\n }\n }, {deep: true});\n\n const onInput = (val) => {\n _.emit('update:modelValue', val);\n _.emit('change', val);\n }\n\n return {\n show,\n inputValue,\n options,\n open() {\n if (props.disabled) {\n return;\n }\n show.value = true;\n },\n confirm({selectedOptions, value}) {\n inputValue.value = selectedOptions.map((option) => option[fieldNames.value.text || 'text']).join(' / ');\n show.value = false;\n onInput(value);\n },\n clear(e) {\n e.stopPropagation();\n inputValue.value = '';\n onInput('');\n }\n }\n },\n render() {\n const clearIcon = () => {\n return this.$props.clearable && this.inputValue ?\n <i class=\"van-badge__wrapper van-icon van-icon-clear van-field__clear\"\n onClick={this.clear}></i> : undefined;\n }\n\n return <div class=\"_fc-cascader\">\n <van-field ref=\"el\" placeholder={this.placeholder} readonly disabled={this.$props.disabled}\n onClick={this.open}\n model-value={this.inputValue} border={false} isLink v-slots={{\n 'right-icon': clearIcon\n }}/>\n <van-popup show={this.show} onUpdate:show={(v) => this.show = v} round position=\"bottom\">\n <van-cascader\n {...this.$attrs}\n modelValue={this.modelValue}\n fieldNames={this.fieldNames}\n options={this.options}\n onClose={() => this.show = false}\n onFinish={this.confirm}\n />\n </van-popup>\n </div>\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\n }\n});\n","import {defineComponent, toRef} from 'vue';\n\nconst NAME = 'fcCheckbox';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n modelValue: Array,\n options: Array,\n },\n emits: ['update:modelValue', 'change'],\n setup(props, _) {\n const modelValue = toRef(props, 'modelValue', []);\n const options = toRef(props, 'options');\n\n return {\n options,\n modelValue,\n onInput(val) {\n _.emit('update:modelValue', val);\n _.emit('change', val);\n },\n }\n },\n render() {\n return <van-checkbox-group direction=\"horizontal\" {...this.$attrs} modelValue={Array.isArray(this.modelValue) ? this.modelValue : []}\n onUpdateModelValue={this.onInput}>\n {(this.options || []).map(opt => {\n const tmp = {...opt};\n const {text, value} = opt;\n delete tmp.text;\n delete tmp.value;\n return <van-checkbox name={value} shape=\"square\" {...tmp}>{text || opt.label || value}</van-checkbox>\n })}\n </van-checkbox-group>\n }\n});\n","import {computed, defineComponent, ref, toRef} from 'vue';\nimport {normalizeOptions} from '../core/utils';\n\nconst NAME = 'fcSelect';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n disabled: Boolean,\n placeholder: String,\n columnsFieldNames: Object,\n modelValue: [String, Number, Boolean],\n options: Array,\n },\n emits: ['update:modelValue', 'fc.el', 'change'],\n setup(props, _) {\n const show = ref(false);\n const modelValue = toRef(props, 'modelValue');\n const fieldNames = toRef(props, 'columnsFieldNames', {});\n const options = computed(() => {\n if (fieldNames?.value?.text) {\n return props.options || [];\n } else {\n return normalizeOptions(props.options || []);\n }\n })\n\n const inputValue = computed(() => {\n if (modelValue.value == null || modelValue.value === '') {\n return '';\n }\n for (let i = 0; i < (options.value || []).length; i++) {\n if (options.value[i][fieldNames.value.value || 'value'] === modelValue.value) {\n return options.value[i][fieldNames.value.text || 'text'];\n }\n }\n return modelValue.value;\n });\n\n const onInput = (val) => {\n _.emit('update:modelValue', val);\n _.emit('change', val);\n }\n\n return {\n show,\n inputValue,\n options,\n open() {\n if (props.disabled) {\n return;\n }\n show.value = true;\n },\n confirm({selectedValues}) {\n onInput(selectedValues[0]);\n show.value = false;\n },\n }\n },\n render() {\n return <div class=\"_fc-select\">\n <van-field ref=\"el\" placeholder={this.placeholder} readonly disabled={this.$props.disabled} onClick={this.open}\n model-value={this.inputValue} isLink/>\n <van-popup show={this.show} onUpdate:show={(v) => this.show = v} round position=\"bottom\">\n <van-picker\n {...this.$attrs}\n modelValue={[this.modelValue]}\n columnsFieldNames={this.columnsFieldNames}\n columns={this.options}\n onCancel={() => this.show = false}\n onConfirm={this.confirm}\n />\n </van-popup>\n </div>\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\n }\n});\n","import {defineComponent, ref, toRef, watch} from 'vue';\nimport toArray from '@form-create/utils/lib/toarray';\n\nconst NAME = 'fcUploader';\n\nfunction parseFile(file, i) {\n if (typeof file === 'object') {\n return file;\n }\n return {\n url: file,\n is_string: true,\n name: getFileName(file),\n uid: i\n };\n}\n\nfunction parseUpload(file) {\n return {...file, file, value: file};\n}\n\nfunction getFileName(file) {\n return ('' + file).split('/').pop()\n}\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n formCreateInject: Object,\n modelValue: [Array, String, Object],\n afterRead: Function,\n action: String,\n headers: Object,\n method: String,\n data: Object,\n uploadName: String,\n onSuccess: Function,\n onError: Function,\n maxCount: Number,\n },\n emits: ['update:modelValue', 'delete'],\n setup(props, _) {\n\n const afterRead = toRef(props, 'afterRead');\n const modelValue = toRef(props, 'modelValue', []);\n\n const fileList = ref(toArray(modelValue.value).map(parseFile).map(parseUpload));\n\n watch(() => modelValue.value, (n) => {\n fileList.value = toArray(n).map(parseFile).map(parseUpload);\n })\n\n const uploadValue = () => {\n let files = fileList.value.map((v) => v.is_string ? v.url : (v.value || v.url)).filter((url) => url !== undefined);\n _.emit('update:modelValue', props.maxCount === 1 ? (files[0] || '') : files);\n };\n\n return {\n fileList,\n modelValue,\n onDelete(file) {\n uploadValue();\n _.emit('delete', file);\n },\n uploadFile(file) {\n file.status = 'uploading';\n if (afterRead.value) {\n return afterRead.value(file);\n } else {\n const data = props.data || {};\n data[props.uploadName || 'file'] = file.file;\n props.formCreateInject.api.fetch({\n action: props.action,\n dataType: 'formData',\n source: 'upload',\n headers: props.headers || {},\n method: props.method || 'post',\n data\n }).then(res => {\n file.status = 'success';\n props.onSuccess && props.onSuccess(res, file);\n uploadValue();\n }).catch(e => {\n file.status = 'failed';\n file.message = this.formCreateInject.t('uploadFail') || '上传失败';\n props.onError && props.onError(e, file);\n });\n }\n }\n }\n },\n render() {\n return <van-uploader {...this.$attrs} model-value={this.fileList} maxCount={this.maxCount}\n onUpdate:model-value={(v) => this.fileList = v}\n afterRead={this.uploadFile} onDelete={this.onDelete} v-slots={this.$slots}/>\n }\n\n});\n","import {defineComponent, toRef} from 'vue';\n\nconst NAME = 'fcRadio';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n modelValue: [String, Number, Boolean],\n options: Array,\n },\n emits: ['update:modelValue', 'change'],\n setup(props, _) {\n const modelValue = toRef(props, 'modelValue', []);\n const options = toRef(props, 'options');\n\n return {\n options,\n modelValue,\n onInput(val) {\n _.emit('update:modelValue', val);\n _.emit('change', val);\n },\n }\n },\n render() {\n return <van-radio-group direction=\"horizontal\" {...this.$attrs} modelValue={this.modelValue}\n onUpdateModelValue={this.onInput}>\n {(this.options || []).map(opt => {\n const tmp = {...opt};\n const {text, value} = opt;\n delete tmp.text;\n delete tmp.value;\n return <van-radio name={value} {...tmp}>{text || opt.label || value}</van-radio>\n })}\n </van-radio-group>\n }\n});\n","import {computed, defineComponent, ref, toRef} from 'vue';\nimport dayjs from 'dayjs';\n\nconst NAME = 'fcDatePicker';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n disabled: Boolean,\n clearable: Boolean,\n placeholder: String,\n modelValue: [String, Number],\n minDate: [String, Date],\n maxDate: [String, Date],\n },\n emits: ['update:modelValue', 'fc.el', 'change'],\n setup(props, _) {\n const show = ref(false);\n const modelValue = toRef(props, 'modelValue');\n\n const formValue = computed(() => {\n if (modelValue.value == null || modelValue.value === '') {\n return [];\n }\n return modelValue.value.split('-');\n });\n\n const dateRange = computed(() => {\n return {\n minDate: props.minDate ? dayjs(props.minDate).toDate() : undefined,\n maxDate: props.maxDate ? dayjs(props.maxDate).toDate() : undefined,\n }\n })\n\n const onInput = (val) => {\n _.emit('update:modelValue', val);\n _.emit('change', val);\n }\n\n return {\n show,\n formValue,\n dateRange,\n open() {\n if (props.disabled) {\n return;\n }\n show.value = true;\n },\n confirm({selectedValues}) {\n onInput(selectedValues.join('-'));\n show.value = false;\n },\n clear(e) {\n e.stopPropagation();\n onInput('');\n }\n }\n },\n render() {\n const clearIcon = () => {\n return this.$props.clearable && this.modelValue ?\n <i class=\"van-badge__wrapper van-icon van-icon-clear van-field__clear\"\n onClick={this.clear}></i> : undefined;\n }\n return <div class=\"_fc-date-picker\">\n <van-field ref=\"el\" placeholder={this.placeholder} readonly disabled={this.$props.disabled}\n onClick={this.open}\n model-value={this.modelValue} border={false} isLink v-slots={{\n 'right-icon': clearIcon\n }}/>\n <van-popup show={this.show} onUpdate:show={(v) => this.show = v} round position=\"bottom\">\n <van-date-picker\n columnsType={['year', 'month', 'day']}\n {...{...this.$attrs, ...this.dateRange}}\n modelValue={this.formValue}\n onConfirm={this.confirm}\n onCancel={() => this.show = false}\n />\n </van-popup>\n </div>\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\n }\n});\n","import {computed, defineComponent, ref, toRef} from 'vue';\n\nconst NAME = 'fcTimePicker';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n disabled: Boolean,\n clearable: Boolean,\n placeholder: String,\n modelValue: [String, Number],\n },\n emits: ['update:modelValue', 'fc.el', 'change'],\n setup(props, _) {\n const show = ref(false);\n const modelValue = toRef(props, 'modelValue');\n\n const formValue = computed(() => {\n if (modelValue.value == null || modelValue.value === '') {\n return [];\n }\n return modelValue.value.split(':');\n });\n\n const onInput = (val) => {\n _.emit('update:modelValue', val);\n _.emit('change', val);\n }\n\n return {\n show,\n formValue,\n open() {\n if (props.disabled) {\n return;\n }\n show.value = true;\n },\n confirm({selectedValues}) {\n onInput(selectedValues.join(':'));\n show.value = false;\n },\n clear(e) {\n e.stopPropagation();\n onInput('');\n }\n }\n },\n render() {\n const clearIcon = () => {\n return this.$props.clearable && this.modelValue ?\n <i class=\"van-badge__wrapper van-icon van-icon-clear van-field__clear\"\n onClick={this.clear}></i> : undefined;\n }\n return <div class=\"_fc-time-picker\">\n <van-field ref=\"el\" placeholder={this.placeholder} readonly disabled={this.$props.disabled}\n onClick={this.open}\n model-value={this.modelValue} border={false} isLink v-slots={{\n 'right-icon': clearIcon\n }}/>\n <van-popup show={this.show} onUpdate:show={(v) => this.show = v} round position=\"bottom\">\n <van-time-picker\n columnsType={['hour', 'minute']}\n {...this.$attrs}\n modelValue={this.formValue}\n onConfirm={this.confirm}\n onCancel={() => this.show = false}\n />\n </van-popup>\n </div>\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\n }\n});\n","import {hasProperty} from '@form-create/utils/lib/type';\nimport {defineComponent, markRaw, nextTick, watch} from 'vue';\nimport deepExtend, {deepCopy} from '@form-create/utils/lib/deepextend';\nimport extend from '@form-create/utils/lib/extend';\nimport {toPromise} from '@form-create/utils';\n\nconst NAME = 'fcGroup';\n\n\nexport default defineComponent({\n name: NAME,\n props: {\n field: String,\n rule: Array,\n expand: Number,\n options: Object,\n button: {\n type: Boolean,\n default: true\n },\n max: {\n type: Number,\n default: 0\n },\n min: {\n type: Number,\n default: 0\n },\n modelValue: {\n type: Array,\n default: () => []\n },\n defaultValue: Object,\n sortBtn: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: undefined\n },\n title: {\n type: [String, Function],\n default: null\n },\n type: {\n type: String,\n default: 'default'\n },\n onBeforeRemove: {\n type: Function,\n default: () => {\n }\n },\n onBeforeAdd: {\n type: Function,\n default: () => {\n }\n },\n formCreateInject: Object,\n parse: Function,\n },\n data() {\n return {\n len: 0,\n cacheRule: {},\n cacheValue: {},\n sort: [],\n form: markRaw(this.formCreateInject.form.$form())\n }\n },\n emits: ['update:modelValue', 'change', 'itemMounted', 'remove', 'add'],\n watch: {\n rule: {\n handler(n, o) {\n Object.keys(this.cacheRule).forEach(v => {\n const item = this.cacheRule[v];\n if (item.$f) {\n const val = item.$f.formData();\n if (n === o) {\n item.$f.deferSyncValue(() => {\n deepExtend(item.rule, n);\n item.$f.setValue(val);\n }, true);\n } else {\n const val = item.$f.formData();\n item.$f.once('reloading', () => {\n item.$f.setValue(val);\n })\n item.rule = deepCopy(n);\n }\n }\n })\n },\n deep: true\n },\n expand(n) {\n let d = n - this.modelValue.length;\n if (d > 0) {\n this.expandRule(d);\n }\n },\n modelValue: {\n handler(n) {\n n = n || [];\n let keys = this.sort, total = keys.length, len = total - n.length;\n if (len < 0) {\n for (let i = len; i < 0; i++) {\n this.addRule(n.length + i, true);\n }\n for (let i = 0; i < total; i++) {\n this.setValue(keys[i], n[i]);\n }\n } else {\n if (len > 0) {\n for (let i = 0; i < len; i++) {\n this.removeRule(keys[total - i - 1]);\n }\n }\n n.forEach((val, i) => {\n this.setValue(keys[i], n[i]);\n });\n }\n },\n deep: true,\n }\n },\n methods: {\n _value(v) {\n return (v && hasProperty(v, this.field)) ? v[this.field] : v;\n },\n cache(k, val) {\n this.cacheValue[k] = JSON.stringify(val);\n },\n input(value) {\n this.$emit('update:modelValue', value);\n this.$emit('change', value);\n },\n formData(key, formData) {\n const cacheRule = this.cacheRule;\n const keys = this.sort;\n if (keys.filter(k => cacheRule[k] && cacheRule[k].$f).length !== keys.length) {\n return;\n }\n const value = keys.map(k => {\n const data = key === k ? formData : {...this.cacheRule[k].$f.form};\n const value = this.field ? data[this.field] || null : data;\n this.cache(k, value);\n return value;\n });\n this.input(value);\n },\n setValue(key, value) {\n const field = this.field\n if (field) {\n value = {[field]: this._value(value)};\n }\n if (this.cacheValue[key] === JSON.stringify(field ? value[field] : value)) {\n return;\n }\n this.cacheRule[key].$f && this.cacheRule[key].$f.coverValue(value);\n this.cache(key, value);\n },\n addRule(i, emit) {\n const rule = this.formCreateInject.form.copyRules(this.rule || []);\n const options = this.options ? {...this.options} : {\n submitBtn: false,\n resetBtn: false,\n };\n if (this.defaultValue) {\n if (!options.formData) options.formData = {};\n const defVal = deepCopy(this.defaultValue);\n extend(options.formData, this.field ? {[this.field]: defVal} : defVal);\n }\n this.parse && this.parse({rule, options, index: this.sort.length});\n this.cacheRule[++this.len] = {rule, options};\n this.sort = Object.keys(this.cacheRule);\n if (emit) {\n nextTick(() => this.$emit('add', rule, Object.keys(this.cacheRule).length - 1));\n }\n },\n add$f(i, key, $f) {\n this.cacheRule[key].$f = $f;\n nextTick(() => {\n this.$emit('itemMounted', $f, Object.keys(this.cacheRule).indexOf(key));\n });\n },\n removeRule(key, emit) {\n const index = Object.keys(this.cacheRule).indexOf(key);\n delete this.cacheRule[key];\n delete this.cacheValue[key];\n this.sort = Object.keys(this.cacheRule);\n if (emit) {\n nextTick(() => this.$emit('remove', index));\n }\n },\n add(i) {\n if (this.disabled || false === this.onBeforeAdd(this.modelValue)) {\n return;\n }\n const value = [...this.modelValue];\n value.push(this.defaultValue ? deepCopy(this.defaultValue) : (this.field ? null : {}));\n this.input(value);\n },\n del(index, key) {\n if (this.disabled) {\n return;\n }\n const del = () => {\n this.removeRule(key, true);\n const value = [...this.modelValue];\n value.splice(index, 1);\n this.input(value);\n }\n toPromise(this.onBeforeRemove(this.modelValue, index)).then(res => {\n if (false !== res) {\n del();\n }\n })\n },\n addIcon(key) {\n return <div class=\"_fc-m-group-btn _fc-m-group-plus-minus\" onClick={this.add}></div>;\n },\n delIcon(index, key) {\n return <div class=\"_fc-m-group-btn _fc-m-group-plus-minus _fc-m-group-minus\"\n onClick={() => this.del(index, key)}></div>\n },\n sortUpIcon(index) {\n return <div class=\"_fc-m-group-btn _fc-m-group-arrow _fc-m-group-up\"\n onClick={() => this.changeSort(index, -1)}></div>\n },\n sortDownIcon(index) {\n return <div class=\"_fc-m-group-btn _fc-m-group-arrow _fc-m-group-down\"\n onClick={() => this.changeSort(index, 1)}></div>\n },\n changeSort(index, sort) {\n const a = this.sort[index];\n this.sort[index] = this.sort[index + sort];\n this.sort[index + sort] = a;\n this.formCreateInject.subForm(this.sort.map(k=>{\n return this.cacheRule[k].$f;\n }));\n this.formData(0);\n },\n sortIcon(index, total) {\n const canMoveUp = index > 0;\n const canMoveDown = index < total - 1;\n\n if (!canMoveUp && !canMoveDown) {\n return null;\n }\n\n if (canMoveUp && canMoveDown) {\n // 显示合并的上下箭头按钮\n return <div class=\"_fc-m-group-btn _fc-m-group-sort\">\n <div class=\"_fc-m-group-sort-up\" onClick={() => this.changeSort(index, -1)}></div>\n <div class=\"_fc-m-group-sort-down\" onClick={() => this.changeSort(index, 1)}></div>\n </div>;\n }\n\n if (canMoveUp) {\n return this.sortUpIcon(index);\n }\n\n if (canMoveDown) {\n return this.sortDownIcon(index);\n }\n },\n makeIcon(total, index, key) {\n if (this.$slots.button) {\n return this.$slots.button({\n total,\n index,\n vm: this,\n key,\n del: () => this.del(index, key),\n add: this.add\n });\n }\n const btn = [];\n if ((!this.max || total < this.max) && total === index + 1) {\n btn.push(this.addIcon(key));\n }\n if (total > this.min) {\n btn.push(this.delIcon(index, key));\n }\n if (this.sortBtn) {\n const sortBtn = this.sortIcon(index, total);\n if (sortBtn) {\n btn.push(sortBtn);\n }\n }\n return btn;\n },\n expandRule(n) {\n for (let i = 0; i < n; i++) {\n this.modelValue.push(this.field ? null : {});\n }\n this.input([...this.modelValue]);\n },\n getTitle(index, key) {\n if (typeof this.title === 'function') {\n return this.title(index, this.modelValue[index], key);\n }\n if (typeof this.title === 'string') {\n return this.title.replace('{index}', index + 1);\n }\n return false;\n }\n },\n created() {\n const d = (this.expand || 0) - this.modelValue.length;\n for (let i = 0; i < this.modelValue.length; i++) {\n this.addRule(i);\n }\n if (d > 0) {\n this.expandRule(d);\n }\n },\n render() {\n const keys = this.sort;\n const button = this.button;\n const Type = this.form;\n const disabled = this.disabled;\n const isCardType = this.type === 'card';\n\n const children = keys.length === 0 ?\n (this.$slots.default ? (this.$slots.default({\n vm: this,\n add: this.add\n })) : <div key={'a_def'} class=\"_fc-m-group-plus-minus _fc-m-group-add fc-clock\"\n onClick={this.add}/>) : keys.map((key, index) => {\n const {rule, options} = this.cacheRule[key];\n const btn = button && !disabled ? this.makeIcon(keys.length, index, key) : [];\n const title = this.getTitle(index, key);\n\n if (isCardType) {\n return <div class=\"_fc-m-group-container\" key={key}>\n <div class=\"_fc-m-group-header\">\n {title === false ? <div class=\"_fc-m-group-idx\">{index + 1}</div> : null}\n {title !== false ? <div class=\"_fc-m-group-title\">{title}</div> : null}\n <div class=\"_fc-m-group-handle fc-clock\">\n {(btn.length) ? btn : null}\n </div>\n </div>\n <div class=\"_fc-m-group-content\">\n <Type\n key={key}\n {...{\n disabled,\n 'onUpdate:modelValue': (formData) => this.formData(key, formData),\n 'onUpdate:api': ($f) => this.add$f(index, key, $f),\n inFor: true,\n modelValue: this.field ? {[this.field]: this._value(this.modelValue[index])} : this.modelValue[index],\n rule,\n option: options,\n extendOption: true\n }}\n />\n </div>\n </div>\n } else {\n return <div class=\"_fc-m-group-container\" key={key}>\n <Type\n key={key}\n {...{\n disabled,\n 'onUpdate:modelValue': (formData) => this.formData(key, formData),\n 'onUpdate:api': ($f) => this.add$f(index, key, $f),\n inFor: true,\n modelValue: this.field ? {[this.field]: this._value(this.modelValue[index])} : this.modelValue[index],\n rule,\n option: options,\n extendOption: true\n }}\n />\n <div class=\"_fc-m-group-idx\">{index + 1}</div>\n {(btn.length) ? <div class=\"_fc-m-group-handle fc-clock\">{btn}</div> : null}\n </div>\n }\n });\n return <div key={'con'} class={'_fc-m-group ' + (disabled ? '_fc-m-group-disabled' : '') + (isCardType ? ' _fc-m-group-card' : '')}>{children}</div>\n }\n});\n","<template>\n <svg class=\"icon\" viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill=\"currentColor\"\n d=\"M512 64a448 448 0 110 896 448 448 0 010-896zm0 832a384 384 0 000-768 384 384 0 000 768zm48-176a48 48 0 11-96 0 48 48 0 0196 0zm-48-464a32 32 0 0132 32v288a32 32 0 01-64 0V288a32 32 0 0132-32z\"></path>\n </svg>\n</template>\n\n<script>\nexport default {\n name: 'IconWarning'\n}\n</script>\n","<template>\n <svg class=\"icon\" viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill=\"currentColor\"\n d=\"M512 64a448 448 0 110 896 448 448 0 010-896zm0 832a384 384 0 000-768 384 384 0 000 768zm48-176a48 48 0 11-96 0 48 48 0 0196 0zm-48-464a32 32 0 0132 32v288a32 32 0 01-64 0V288a32 32 0 0132-32z\"></path>\n </svg>\n</template>\n\n<script>\nexport default {\n name: 'IconWarning'\n}\n</script>\n","import subForm from '@form-create/component-subform/dist/index';\nimport Calendar from './calendar';\nimport Cascader from './cascader';\nimport Checkbox from './checkbox';\nimport Select from './select';\nimport Uploader from './uploader';\nimport Radio from './radio';\nimport DatePicker from './datePicker';\nimport TimePicker from './timePicker';\nimport Group from './group';\nimport IconWarning from './icon/IconWarning.vue';\n\n\nexport default [\n subForm,\n IconWarning,\n Calendar,\n Cascader,\n Checkbox,\n Radio,\n Select,\n DatePicker,\n TimePicker,\n Group,\n Uploader,\n]\n","import hidden from './hidden';\nimport row from './row';\nimport {hasProperty} from '@form-create/utils/lib/type';\n\n\nconst checkbox = {\n name: 'checkbox',\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!hasProperty(props, 'options'))\n props.options = ctx.prop.options || [];\n }\n}\n\nconst radio = {\n name: 'radio',\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!hasProperty(props, 'options'))\n props.options = ctx.prop.options || [];\n }\n}\n\nconst select = {\n name: 'select',\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!hasProperty(props, 'options'))\n props.options = ctx.prop.options || [];\n }\n}\n\nconst cascader = {\n name: 'cascader',\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!hasProperty(props, 'options'))\n props.options = ctx.prop.options || [];\n }\n}\n\nconst textarea = {\n name: 'textarea',\n mergeProp(ctx) {\n let {props} = ctx.prop;\n props.type = 'textarea';\n }\n}\n\n\nexport default [\n hidden,\n row,\n cascader,\n checkbox,\n radio,\n select,\n textarea,\n]\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst name = 'hidden';\nexport default {\n name,\n maker: {\n [name]: (field, value) => creatorFactory(name)('', field, value)\n },\n render() {\n return [];\n }\n}\n","export default {\n name: 'FcRow',\n render(_, ctx) {\n return ctx.vNode.col({props: {span: 24}}, {\n default:()=>[\n ctx.vNode.row(ctx.prop, _)\n ]\n })\n }\n}\n","const PRE = 'van';\nexport default {\n button: PRE + '-button',\n icon: PRE + '-icon',\n slider: PRE + '-slider',\n stepper: PRE + '-stepper',\n inputNumber: PRE + '-stepper',\n rate: PRE + '-rate',\n uploader: 'fc-uploader',\n upload: 'fc-uploader',\n cell: PRE + '-cell',\n timePicker: 'fc-time-picker',\n datePicker: 'fc-date-picker',\n 'switch': PRE + '-switch',\n select: 'fc-select',\n cascader: 'fc-cascader',\n calendar: 'fc-calendar',\n checkbox: 'fc-checkbox',\n radio: 'fc-radio',\n input: PRE + '-field',\n textarea: PRE + '-field',\n field: PRE + '-field',\n formItem: PRE + '-field',\n form: PRE + '-form',\n col: PRE + '-col',\n row: PRE + '-row',\n group: 'fc-group',\n array: 'fc-group',\n object: 'fc-sub-form',\n subForm: 'fc-sub-form',\n}\n","import getConfig from './config';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport extend from '@form-create/utils/lib/extend';\nimport {showNotify} from 'vant';\n\nfunction tidy(props, name) {\n if (!hasProperty(props, name)) return;\n if (is.String(props[name])) {\n props[name] = {[name]: props[name], show: true};\n }\n}\n\nfunction isFalse(val) {\n return val === false;\n}\n\nfunction tidyBool(opt, name) {\n if (hasProperty(opt, name) && !is.Object(opt[name])) {\n opt[name] = {show: !!opt[name]};\n }\n}\n\nfunction tidyRule(rule) {\n const _rule = {...rule};\n delete _rule.children;\n return _rule;\n}\n\nexport default {\n validate() {\n const form = this.form();\n if (form) {\n return form.validate();\n } else {\n return new Promise(v => v());\n }\n },\n validateField(field) {\n return new Promise((resolve, reject) => {\n const form = this.form();\n if (form) {\n form.validate(field).then(resolve).catch(reject);\n } else {\n resolve();\n }\n });\n },\n clearValidateState(ctx) {\n const form = this.form();\n if (form) {\n return form.resetValidation(ctx.id);\n }\n },\n tidyOptions(options) {\n ['submitBtn', 'resetBtn', 'row', 'info', 'wrap', 'col', 'title'].forEach(name => {\n tidyBool(options, name);\n })\n return options;\n },\n tidyRule({prop}) {\n tidy(prop, 'title');\n tidy(prop, 'info');\n prop.validate && prop.validate.forEach(item => {\n if (is.String(item.pattern)) {\n item.pattern = new RegExp(item.pattern);\n }\n });\n return prop;\n },\n mergeProp(ctx) {\n const def = {\n info: {\n icon: true,\n },\n title: {},\n col: {span: 24},\n wrap: {},\n };\n ['info', 'wrap', 'col', 'title'].forEach(name => {\n ctx.prop[name] = mergeProps([this.options[name] || {}, ctx.prop[name] || {}], def[name]);\n });\n },\n getDefaultOptions() {\n return getConfig();\n },\n adapterValidate(validate, validator) {\n if (validate.trigger === 'change') {\n validate.trigger = 'onChange';\n } else if (validate.trigger === 'blur') {\n validate.trigger = 'onBlur';\n }\n validate.validator = (value) => {\n return new Promise((resolve) => {\n const callback = (err) => {\n validate.message = err;\n if (err) {\n resolve(false);\n } else {\n resolve();\n }\n }\n return validator(value, callback);\n })\n }\n return validate;\n },\n update() {\n const form = this.options.form;\n this.rule = {\n props: {...form},\n on: {\n submit: (e) => {\n e.preventDefault();\n }\n },\n style: form.style,\n type: 'form',\n };\n },\n beforeRender() {\n const {key, ref} = this;\n const form = this.options.form;\n extend(this.rule, {key, ref, class: [form.className, form.class, 'form-create-m', this.$handle.preview ? 'is-preview' : '']});\n },\n render(children) {\n if (children.slotLen() && !this.$handle.preview) {\n children.setSlot(undefined, () => this.makeFormBtn());\n }\n return this.$r(this.rule, isFalse(this.options.row.show) ? children.getSlots() : [this.makeRow(children)]);\n },\n makeWrap(ctx, children) {\n const rule = ctx.prop;\n const uni = `${this.key}${ctx.key}`;\n const col = rule.col;\n const isTitle = this.isTitle(rule) && rule.wrap.title !== false;\n const {col: _col} = this.rule.props;\n const cls = rule.wrap.class;\n delete rule.wrap.class;\n delete rule.wrap.title;\n const item = isFalse(rule.wrap.show) ? children : this.$r(mergeProps([rule.wrap, {\n props: {\n modelValue: ctx.rule.value,\n label: isTitle ? rule.title.title : undefined,\n ...tidyRule(rule.wrap || {}),\n name: ctx.id,\n rules: ctx.injectValidate(),\n },\n class: this.$render.mergeClass(cls || rule.className, 'fc-form-item'),\n key: `${uni}fi`,\n ref: ctx.wrapRef,\n type: 'formItem',\n }]), {input: () => children, ...(isTitle ? {label: () => this.makeInfo(rule, uni, ctx)} : {})});\n return (isFalse(_col) || isFalse(col.show)) ? item : this.makeCol(rule, uni, [item]);\n },\n isTitle(rule) {\n if (this.options.form.title === false) return false;\n const title = rule.title;\n return !((!title.title && !title.native) || isFalse(title.show))\n },\n makeInfo(rule, uni, ctx) {\n const titleProp = {...rule.title};\n const infoProp = {...rule.info};\n const titleSlot = this.getSlot('title');\n const children = [titleSlot ? titleSlot({\n title: ctx.refRule?.__$title?.value,\n rule: ctx.rule,\n options: this.options\n }) : ctx.refRule?.__$title?.value];\n const flag = !isFalse(infoProp.show) && (infoProp.info || infoProp.native) && !isFalse(infoProp.icon);\n if (flag) {\n children[infoProp.align !== 'left' ? 'unshift' : 'push'](this.$r({\n type: infoProp.icon === true ? 'icon-warning' : infoProp.icon,\n style: 'width:1em;',\n }));\n }\n\n const _prop = mergeProps([titleProp, {\n props: tidyRule(titleProp),\n key: `${uni}tit`,\n class: 'fc-form-title',\n type: titleProp.type || 'span',\n on: {\n click: (...args) => {\n if (flag && infoProp.info) {\n showNotify({type: 'warning', message: ctx.refRule?.__$info?.value, duration: 1000});\n }\n this.$handle.targetHook(ctx, 'titleClick', {args});\n }\n }\n }]);\n\n delete _prop.props.show;\n delete _prop.props.title;\n delete _prop.props.native;\n\n return this.$r(_prop, children);\n },\n makeCol(rule, uni, children) {\n const col = rule.col;\n return this.$r({\n class: this.$render.mergeClass(col.class, 'fc-form-col'),\n type: 'col',\n props: col || {span: 24},\n key: `${uni}col`\n }, children);\n },\n makeRow(children) {\n const row = this.options.row || {};\n return this.$r({\n type: 'row',\n props: row,\n class: this.$render.mergeClass(row.class, 'fc-form-row'),\n key: `${this.key}row`\n }, children)\n },\n makeFormBtn() {\n let vn = [];\n if (!isFalse(this.options.submitBtn.show)) {\n vn.push(this.makeSubmitBtn())\n }\n if (!isFalse(this.options.resetBtn.show)) {\n vn.push(this.makeResetBtn())\n }\n if (!vn.length) {\n return;\n }\n return this.$r({\n type: 'cell',\n class: 'fc-form-cell fc-form-footer',\n key: `${this.key}fb`\n }, vn);\n },\n\n makeResetBtn() {\n const resetBtn = {...this.options.resetBtn};\n const innerText = resetBtn.innerText || this.$handle.api.t('reset') || '重置';\n delete resetBtn.innerText;\n delete resetBtn.click;\n delete resetBtn.col;\n delete resetBtn.show;\n return this.$r({\n type: 'button',\n props: resetBtn,\n class: 'fc-reset-btn',\n style: {width: resetBtn.width},\n on: {\n click: () => {\n const fApi = this.$handle.api;\n this.options.resetBtn.click\n ? this.options.resetBtn.click(fApi)\n : fApi.resetFields();\n }\n },\n key: `${this.key}b2`,\n }, [innerText]);\n },\n makeSubmitBtn() {\n const submitBtn = {...this.options.submitBtn};\n const innerText = submitBtn.innerText || this.$handle.api.t('submit') || '提交';\n delete submitBtn.innerText;\n delete submitBtn.click;\n delete submitBtn.col;\n delete submitBtn.show;\n return this.$r({\n type: 'button',\n props: submitBtn,\n class: 'fc-submit-btn',\n style: {width: submitBtn.width},\n on: {\n click: () => {\n const fApi = this.$handle.api;\n this.options.submitBtn.click\n ? this.options.submitBtn.click(fApi)\n : fApi.submit().catch(() => {\n });\n }\n },\n key: `${this.key}b1`,\n }, [innerText]);\n }\n}\n","export default function getConfig() {\n return {\n form: {\n required: 'auto',\n labelAlign: 'right',\n inputAlign: 'right',\n },\n row: {\n show: true,\n gutter: 0,\n },\n submitBtn: {\n type: 'primary',\n loading: false,\n disabled: false,\n block: true,\n innerText: '',\n size: 'small',\n show: true,\n col: undefined,\n click: undefined,\n },\n resetBtn: {\n type: 'default',\n loading: false,\n disabled: false,\n block: true,\n innerText: '',\n size: 'small',\n show: false,\n col: undefined,\n click: undefined,\n },\n };\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {invoke} from '@form-create/core/src/frame/util';\nimport toArray from '@form-create/utils/lib/toarray';\n\nfunction tidyBtnProp(btn, def) {\n if (is.Boolean(btn))\n btn = {show: btn};\n else if (!is.Undef(btn) && !is.Object(btn)) btn = {show: def};\n return btn;\n}\n\nexport default function extendApi(api, h) {\n return {\n formEl() {\n return h.$manager.form();\n },\n wrapEl(id) {\n const ctx = h.getFieldCtx(id);\n if (!ctx) return;\n return h.vm.refs[ctx.wrapRef];\n },\n validate(callback) {\n return new Promise((resolve, reject) => {\n const forms = api.children;\n const all = [h.$manager.validate()];\n forms.filter(v=>!v.isScope).forEach(v => {\n all.push(v.validate());\n })\n Promise.all(all).then(() => {\n resolve(true);\n callback && callback(true);\n }).catch((e) => {\n reject(e);\n callback && callback(e);\n h.vm.emit('validate-fail', e, {api});\n h.emitEvent('validate-fail', e, {api});\n })\n });\n },\n validateField(field, callback) {\n return new Promise((resolve, reject) => {\n const ctx = h.getFieldCtx(field);\n if (!ctx) return;\n const sub = h.subForm[ctx.id];\n const all = [h.$manager.validateField(ctx.id)];\n toArray(sub).filter(v=>!v.isScope).forEach(v => {\n all.push(v.validate());\n })\n Promise.all(all).then(() => {\n resolve(null);\n callback && callback(null);\n }).catch((e) => {\n reject(e);\n callback && callback(e);\n h.vm.emit('validate-field-fail', e, {field, api});\n })\n });\n },\n clearValidateState(fields, clearSub = true) {\n api.helper.tidyFields(fields).forEach(field => {\n if (clearSub) this.clearSubValidateState(field);\n h.getCtxs(field).forEach(ctx => {\n h.$manager.clearValidateState(ctx);\n });\n });\n },\n clearSubValidateState(fields) {\n api.helper.tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n const subForm = h.subForm[ctx.id];\n if (!subForm) return;\n if (Array.isArray(subForm)) {\n subForm.forEach(form => {\n form.clearValidateState();\n })\n } else if (subForm) {\n subForm.clearValidateState();\n }\n });\n })\n },\n btn: {\n loading: (loading = true) => {\n api.submitBtnProps({loading: !!loading});\n },\n disabled: (disabled = true) => {\n api.submitBtnProps({disabled: !!disabled});\n },\n show: (isShow = true) => {\n api.submitBtnProps({show: !!isShow});\n }\n },\n resetBtn: {\n loading: (loading = true) => {\n api.resetBtnProps({loading: !!loading});\n },\n disabled: (disabled = true) => {\n api.resetBtnProps({disabled: !!disabled});\n },\n show: (isShow = true) => {\n api.resetBtnProps({show: !!isShow});\n }\n },\n submitBtnProps: (props = {}) => {\n let btn = tidyBtnProp(h.options.submitBtn, true);\n extend(btn, props);\n h.options.submitBtn = btn;\n api.refreshOptions();\n },\n resetBtnProps: (props = {}) => {\n let btn = tidyBtnProp(h.options.resetBtn, false);\n extend(btn, props);\n h.options.resetBtn = btn;\n api.refreshOptions();\n },\n submit(successFn, failFn) {\n return new Promise((resolve, reject) => {\n const promise = h.options.validateOnSubmit === false ? Promise.resolve() : api.validate();\n promise.then(() => {\n let formData = api.formData();\n h.beforeSubmit(formData).then(() => {\n is.Function(successFn) && invoke(() => successFn(formData, api));\n is.Function(h.options.onSubmit) && invoke(() => h.options.onSubmit(formData, api));\n h.vm.emit('submit', formData, api);\n resolve(formData);\n }).catch((e) => {})\n }).catch((...args) => {\n is.Function(failFn) && invoke(() => failFn(api, ...args));\n reject(...args)\n })\n });\n },\n };\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import is from '@form-create/utils/lib/type';\n\nconst required = {\n name: 'required',\n load(inject, rule, api) {\n const val = parseVal(inject.getValue());\n let _title = undefined;\n if (val.required === false) {\n inject.clearProp();\n api.clearValidateState([rule.field]);\n } else {\n const validate = {\n required: true,\n validator(v) {\n updateMessage();\n return !is.empty(v);\n },\n trigger: ['onChange', 'onSubmit'],\n ...val,\n };\n const updateMessage = () => {\n const title = rule.__fc__.refRule.__$title?.value;\n if (_title === title) {\n return;\n }\n _title = title;\n if (!val.message) {\n validate.message = api.t('required', {title}) || (title + (api.getLocale() === 'en' ? ' is required' : '不能为空'));\n } else {\n const match = val.message.match(/^\\{\\{\\s*\\$t\\.(.+)\\s*\\}\\}$/);\n if (match) {\n validate.message = api.t(match[1], {title});\n }\n }\n }\n updateMessage();\n inject.getProp().validate = [validate];\n }\n api.sync(rule);\n },\n watch(...args) {\n required.load(...args);\n }\n}\n\nfunction parseVal(val) {\n if (is.Boolean(val)) {\n return {required: val}\n } else if (is.String(val)) {\n return {message: val};\n } else if (is.Undef(val)) {\n return {required: false};\n } else if (is.Function(val)) {\n return {validator: val};\n } else if (!is.Object(val)) {\n return {};\n } else {\n return val;\n }\n}\n\n\nexport default required\n","import components from '../components';\nimport parsers from '../parsers';\nimport alias from './alias';\nimport manager from './manager';\nimport FormCreateFactory from '@form-create/core/src/index';\nimport '../style/index.css';\nimport extendApi from './api';\nimport required from './provider';\nimport {Field} from 'vant';\n\nfunction install(FormCreate) {\n FormCreate.componentAlias(alias);\n\n components.forEach(component => {\n FormCreate.component(component.name, component);\n });\n\n FormCreate.register(required);\n\n parsers.forEach((parser) => {\n FormCreate.parser(parser);\n });\n\n if (Field.props) {\n Field.props.modelValue = {\n type: [String, Number, Array, Object, Boolean, Function],\n default: '',\n };\n }\n}\n\nexport default function VantFormCreate() {\n return FormCreateFactory({\n ui: 'process.env.UI',\n version: 'process.env.VERSION',\n manager,\n extendApi,\n install,\n isMobile: true,\n attrs: {\n normal: ['col', 'wrap'],\n key: ['title', 'info'],\n }\n });\n}\n","import VantFormCreate from './core/index';\n\nconst FormCreateMobile = VantFormCreate();\n\nif (typeof window !== 'undefined') {\n window.formCreateMobile = FormCreateMobile;\n}\n\nconst maker = FormCreateMobile.maker;\n\nexport {maker}\n\nexport default FormCreateMobile;\n","import {functionalMerge, normalMerge, toArrayMerge} from '@form-create/utils/lib/mergeprops';\n\n\nexport const keyAttrs = ['type', 'slot', 'ignore', 'emitPrefix', 'value', 'name', 'native', 'hidden', 'display', 'inject', 'options', 'emit', 'link', 'prefix', 'suffix', 'update', 'sync', 'optionsTo', 'key', 'slotUpdate', 'computed', 'preview', 'component', 'cache', 'modelEmit'];\n\nexport const arrayAttrs = ['validate', 'children', 'control'];\n\nexport const normalAttrs = ['effect', 'deep', 'renderSlots'];\n\nexport function attrs() {\n return [...keyAttrs, ...normalMerge, ...toArrayMerge, ...functionalMerge, ...arrayAttrs, ...normalAttrs];\n}\n","import deepExtend from '@form-create/utils/lib/deepextend';\nimport is from '@form-create/utils/lib/type';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport {arrayAttrs, normalAttrs} from './attrs';\nimport {logError} from '@form-create/utils/lib/console';\nimport {isVNode} from 'vue';\nimport {upper} from '@form-create/utils/lib/toline';\nimport toCase from '@form-create/utils/lib/tocase';\n\nexport {parseJson, parseFn, toJson} from '@form-create/utils/lib/json';\n\nexport function enumerable(value, writable) {\n return {\n value,\n enumerable: false,\n configurable: false,\n writable: !!writable\n }\n}\n\n//todo 优化位置\nexport function copyRule(rule, mode) {\n return copyRules([rule], mode || false)[0];\n}\n\nexport function copyRules(rules, mode) {\n return deepExtend([], [...rules], mode || false);\n}\n\nexport function mergeRule(rule, merge) {\n mergeProps(Array.isArray(merge) ? merge : [merge], rule, {array: arrayAttrs, normal: normalAttrs});\n return rule;\n}\n\nexport function getRule(rule) {\n const r = is.Function(rule.getRule) ? rule.getRule() : rule;\n if (!r.type) {\n r.type = 'input';\n }\n return r;\n}\n\nexport function mergeGlobal(target, merge) {\n if (!target) return merge;\n Object.keys(merge || {}).forEach((k) => {\n if (merge[k]) {\n target[k] = mergeRule(target[k] || {}, merge[k])\n }\n });\n return target;\n}\n\nexport function funcProxy(that, proxy) {\n Object.defineProperties(that, Object.keys(proxy).reduce((initial, k) => {\n initial[k] = {\n get() {\n return proxy[k]();\n }\n }\n return initial;\n }, {}))\n}\n\nexport function byCtx(rule) {\n return rule.__fc__ || (rule.__origin__ ? rule.__origin__.__fc__ : null)\n}\n\nexport function invoke(fn, def) {\n try {\n def = fn()\n } catch (e) {\n logError(e);\n }\n return def;\n}\n\nexport function makeSlotBag() {\n const slotBag = {};\n const slotName = (n) => n || 'default';\n\n return {\n setSlot(slot, vnFn) {\n slot = slotName(slot);\n if (!vnFn || (Array.isArray(vnFn) && vnFn.length))\n return;\n if (!slotBag[slot]) slotBag[slot] = [];\n slotBag[slot].push(vnFn);\n },\n getSlot(slot, val) {\n slot = slotName(slot);\n const children = [];\n (slotBag[slot] || []).forEach(fn => {\n if (Array.isArray(fn)) {\n children.push(...fn);\n } else if (is.Function(fn)) {\n const res = fn(...(val || []));\n if (Array.isArray(res)) {\n children.push(...res);\n } else {\n children.push(res);\n }\n } else if (!is.Undef(fn)) {\n children.push(fn);\n }\n })\n return children;\n },\n getSlots() {\n const slots = {};\n Object.keys(slotBag).forEach(k => {\n slots[k] = (...args) => {\n return this.getSlot(k, args);\n }\n })\n return slots\n },\n slotLen(slot) {\n slot = slotName(slot);\n return slotBag[slot] ? slotBag[slot].length : 0;\n },\n mergeBag(bag) {\n if (!bag) return this;\n const slots = is.Function(bag.getSlots) ? bag.getSlots() : bag;\n if (Array.isArray(bag) || isVNode(bag)) {\n this.setSlot(undefined, () => bag);\n } else {\n Object.keys(slots).forEach(k => {\n this.setSlot(k, slots[k]);\n });\n }\n\n return this;\n }\n };\n}\n\nexport function toProps(rule) {\n const prop = {...(rule.props || {})};\n\n Object.keys(rule.on || {}).forEach(k => {\n if (k.indexOf('-') > 0) {\n k = toCase(k);\n }\n const name = `on${upper(k)}`;\n if (Array.isArray(prop[name])) {\n prop[name] = [...prop[name], rule.on[k]];\n } else if (prop[name]) {\n prop[name] = [prop[name], rule.on[k]];\n } else {\n prop[name] = rule.on[k];\n }\n })\n prop.key = rule.key;\n prop.ref = rule.ref;\n prop.class = rule.class;\n prop.id = rule.id;\n prop.style = rule.style;\n if (prop.slot) delete prop.slot;\n\n return prop;\n}\n\nexport function setPrototypeOf(o, proto) {\n Object.setPrototypeOf(o, proto);\n return o;\n}\n\n\nconst changeType = (a, b) => {\n if (typeof a === 'string') {\n return String(b);\n } else if (typeof a === 'number') {\n return Number(b);\n }\n return b;\n}\n\nexport const condition = {\n '==': (a, b) => {\n return JSON.stringify(a) === JSON.stringify(changeType(a, b));\n },\n '!=': (a, b) => {\n return !condition['=='](a, b);\n },\n '>': (a, b) => {\n return a > b;\n },\n '>=': (a, b) => {\n return a >= b;\n },\n '<': (a, b) => {\n return a < b;\n },\n '<=': (a, b) => {\n return a <= b;\n },\n on(a, b) {\n return a && a.indexOf && a.indexOf(changeType(a[0], b)) > -1;\n },\n notOn(a, b) {\n return !condition.on(a, b);\n },\n in(a, b) {\n return b && b.indexOf && b.indexOf(a) > -1;\n },\n notIn(a, b) {\n return !condition.in(a, b);\n },\n between(a, b) {\n return a > b[0] && a < b[1];\n },\n notBetween(a, b) {\n return a < b[0] || a > b[1];\n },\n empty(a) {\n return is.empty(a);\n },\n notEmpty(a) {\n return !is.empty(a);\n },\n pattern(a, b) {\n return new RegExp(b, 'g').test(a);\n }\n};\n\nexport function deepGet(val, split) {\n (Array.isArray(split) ? split : (split || '').split('.')).forEach(k => {\n if (val != null) {\n val = val[k];\n }\n });\n return val;\n}\n\nexport function extractVar(str) {\n const regex = /{{\\s*(.*?)\\s*}}/g;\n let match;\n const matches = {};\n while ((match = regex.exec(str)) !== null) {\n if (match[1]) {\n matches[match[1]] = true;\n }\n }\n return Object.keys(matches);\n}\n\nexport function convertFieldToConditions(field) {\n let parts = field.split('.');\n let conditions = [];\n let currentCondition = '';\n\n parts.forEach((part, index) => {\n if (index === 0) {\n currentCondition = part;\n } else {\n currentCondition += '.' + part;\n }\n conditions.push(currentCondition);\n });\n\n return conditions.join(' && ');\n}\n\nexport function parseTemplateToTree(template) {\n const tokens = [];\n let current = '';\n let depth = 0;\n\n for (let i = 0; i < template.length; i++) {\n const char = template[i];\n\n if (char === '[') {\n if (depth === 0 && current) {\n tokens.push({type: 'key', value: current});\n current = '';\n }\n depth++;\n current += char;\n } else if (char === ']') {\n depth--;\n current += char;\n\n if (depth === 0) {\n tokens.push({\n type: 'bracket',\n value: parseTemplateToTree(current.slice(1, -1))\n });\n current = '';\n }\n } else if (char === '.' && depth === 0) {\n if (current) {\n tokens.push({type: 'key', value: current});\n current = '';\n }\n } else {\n current += char;\n }\n }\n\n if (current) {\n tokens.push({type: 'key', value: current});\n }\n\n return tokens.map(token => {\n if (token.type === 'key') {\n return {key: token.value};\n } else {\n return {children: token.value};\n }\n });\n}\n","import {\n defineComponent,\n getCurrentInstance,\n inject,\n markRaw,\n nextTick,\n onBeforeMount,\n onBeforeUnmount,\n onMounted,\n onUpdated,\n provide,\n reactive,\n toRefs,\n watch, watchEffect\n} from 'vue';\nimport toArray from '@form-create/utils/lib/toarray';\nimport debounce from '@form-create/utils/lib/debounce';\nimport toLine from '@form-create/utils/lib/toline';\nimport {toJson} from '../frame/util';\n\nconst getGroupInject = (vm, parent) => {\n if (!vm || vm === parent) {\n return;\n }\n if (vm.props.formCreateInject) {\n return vm.props.formCreateInject\n }\n if (vm.parent) {\n return getGroupInject(vm.parent, parent);\n }\n}\n\nexport default function $FormCreate(FormCreate, components, directives) {\n return defineComponent({\n name: 'FormCreate' + (FormCreate.isMobile ? 'Mobile' : ''),\n components,\n directives,\n props: {\n rule: {\n type: Array,\n required: true,\n default: () => []\n },\n option: {\n type: Object,\n default: () => ({})\n },\n extendOption: Boolean,\n driver: [String, Object],\n modelValue: Object,\n disabled: {\n type: Boolean,\n default: undefined,\n },\n preview: {\n type: Boolean,\n default: undefined,\n },\n index: [String, Number],\n api: Object,\n locale: [String, Object],\n t: Function,\n name: String,\n subForm: {\n type: Boolean,\n default: true\n },\n inFor: Boolean,\n },\n emits: ['update:api', 'update:modelValue', 'mounted', 'submit', 'reset', 'change', 'emit-event', 'control', 'remove-rule', 'remove-field', 'sync', 'reload', 'repeat-field', 'update', 'validate-field-fail', 'validate-fail', 'created'],\n render() {\n return this.fc.render();\n },\n setup(props) {\n const vm = getCurrentInstance();\n provide('parentFC', vm);\n const parent = inject('parentFC', null);\n let top = parent;\n\n if (parent) {\n while (top.setupState.parent) {\n top = top.setupState.parent;\n }\n } else {\n top = vm;\n }\n\n const {rule, modelValue, subForm, inFor} = toRefs(props);\n\n const data = reactive({\n ctxInject: {},\n destroyed: false,\n isShow: true,\n unique: 1,\n renderRule: [...rule.value || []],\n updateValue: JSON.stringify(modelValue.value || {}),\n });\n\n const fc = new FormCreate(vm);\n const fapi = fc.api();\n\n const isMore = inFor.value;\n\n const addSubForm = () => {\n if (parent) {\n const inject = getGroupInject(vm, parent);\n if (inject) {\n let sub;\n if (isMore) {\n sub = toArray(inject.getSubForm());\n sub.push(fapi);\n\n } else {\n sub = fapi;\n }\n inject.subForm(sub);\n }\n }\n };\n\n const rmSubForm = () => {\n const inject = getGroupInject(vm, parent);\n if (inject) {\n if (isMore) {\n const sub = toArray(inject.getSubForm());\n const idx = sub.indexOf(fapi);\n if (idx > -1) {\n sub.splice(idx, 1);\n }\n } else {\n inject.subForm();\n }\n }\n };\n\n let styleEl = null;\n\n onBeforeMount(() => {\n watchEffect(() => {\n let content = '';\n const globalClass = (props.option && props.option.globalClass) || {};\n Object.keys(globalClass).forEach(k => {\n let subCss = '';\n globalClass[k].style && Object.keys(globalClass[k].style).forEach(key => {\n subCss += toLine(key) + ':' + globalClass[k].style[key] + ';';\n });\n if (globalClass[k].content) {\n subCss += globalClass[k].content + ';';\n }\n if (subCss) {\n content += `.${k}{${subCss}}`;\n }\n });\n if (props.option && props.option.style) {\n content += props.option.style;\n }\n if (!styleEl) {\n styleEl = document.createElement('style');\n styleEl.type = 'text/css';\n document.head.appendChild(styleEl);\n }\n styleEl.innerHTML = content || '';\n })\n });\n\n const emit$topForm = debounce(() => {\n fc.bus.$emit('$loadData.$topForm');\n }, 100);\n\n const emit$scopeForm = debounce(function () {\n fc.bus.$emit('$loadData.$scopeForm');\n }, 100);\n\n const emit$form = debounce(() => {\n fc.bus.$emit('$loadData.$form');\n }, 100);\n\n const emit$change = (field) => {\n fc.bus.$emit('change-$form.' + field);\n };\n\n onMounted(() => {\n if (parent) {\n fapi.top.bus.$on('$loadData.$form', emit$topForm);\n fapi.top.bus.$on('change', emit$change);\n }\n if (fapi !== fapi.scope) {\n fapi.scope.bus.$on('$loadData.$scopeForm', emit$scopeForm);\n }\n fc.mounted();\n });\n\n onBeforeUnmount(() => {\n if (parent) {\n fapi.top.bus.$off('$loadData.$form', emit$topForm);\n fapi.top.bus.$off('change', emit$change);\n }\n if (fapi !== fapi.scope) {\n fapi.scope.bus.$off('$loadData.$scopeForm', emit$scopeForm);\n }\n rmSubForm();\n data.destroyed = true;\n fc.unmount();\n styleEl && (styleEl.parentNode || styleEl.parentElement) && document.head.removeChild(styleEl);\n })\n\n onUpdated(() => {\n fc.updated();\n });\n\n addSubForm();\n\n watch(() => props.option, () => {\n fc.initOptions();\n fapi.refresh();\n }, {deep: true, flush: 'sync'});\n\n watch(() => [...rule.value], (n) => {\n if (fc.$handle.isBreakWatch() || n.length === data.renderRule.length && n.every(v => data.renderRule.indexOf(v) > -1)) return;\n fc.$handle.updateAppendData();\n fc.$handle.reloadRule(rule.value);\n vm.setupState.renderRule();\n })\n\n watch(() => [props.disabled, props.preview], () => {\n fapi.refresh();\n });\n\n watch(modelValue, (n) => {\n if (toJson(n || {}) === data.updateValue) return;\n if (fapi.config.forceCoverValue) {\n fapi.coverValue(n || {});\n } else {\n fapi.setValue(n || {});\n }\n }, {deep: true, flush: 'post'});\n\n watch(() => props.index, () => {\n fapi.coverValue({});\n fc.$handle.updateAppendData();\n nextTick(() => {\n nextTick(() => {\n fapi.clearValidateState();\n });\n });\n }, {flush: 'sync'});\n\n return {\n fc: markRaw(fc),\n parent: parent ? markRaw(parent) : parent,\n top: markRaw(top),\n fapi: markRaw(fapi),\n ...toRefs(data),\n getGroupInject: () => getGroupInject(vm, parent),\n refresh() {\n ++data.unique;\n },\n renderRule() {\n data.renderRule = [...rule.value || []];\n },\n updateValue(value) {\n if (data.destroyed) return;\n const json = toJson(value);\n if (data.updateValue === json) {\n return;\n }\n data.updateValue = json;\n vm.emit('update:modelValue', value);\n nextTick(() => {\n emit$form();\n if (!parent) {\n emit$topForm();\n emit$scopeForm();\n } else if (!subForm.value) {\n emit$scopeForm();\n }\n });\n }\n }\n },\n created() {\n const vm = getCurrentInstance();\n vm.emit('update:api', vm.setupState.fapi);\n vm.setupState.fc.init();\n },\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {attrs} from '../frame/attrs';\nimport {copyRule, mergeRule} from '../frame/util';\nimport {$set} from '@form-create/utils/lib/modify';\n\nexport function baseRule() {\n return {\n props: {},\n on: {},\n options: [],\n children: [],\n hidden: false,\n display: true,\n value: undefined,\n };\n}\n\nexport function creatorFactory(name, init) {\n return (title, field, value, props = {}) => {\n const maker = new Creator(name, title, field, value, props);\n if (init) {\n if (is.Function(init)) init(maker);\n else maker.props(init);\n }\n return maker;\n };\n}\n\nexport default function Creator(type, title, field, value, props) {\n this._data = extend(baseRule(), {type, title, field, value, props: props || {}});\n this.event = this.on;\n}\n\nextend(Creator.prototype, {\n getRule() {\n return this._data;\n },\n setProp(key, value) {\n $set(this._data, key, value);\n return this;\n },\n modelField(field) {\n this._data.modelField = field;\n return this;\n },\n _clone() {\n const clone = new this.constructor();\n clone._data = copyRule(this._data);\n return clone;\n },\n})\n\nexport function appendProto(attrs) {\n attrs.forEach(name => {\n Creator.prototype[name] = function (key) {\n mergeRule(this._data, {[name]: arguments.length < 2 ? key : {[key]: arguments[1]}})\n return this;\n };\n });\n}\n\nappendProto(attrs());\n","import {creatorFactory} from './creator';\n\nconst commonMaker = creatorFactory('');\n\nexport function create(type, field, title) {\n let make = commonMaker('', field);\n make._data.type = type;\n make._data.title = title;\n return make;\n}\n\nexport default function makerFactory() {\n return {\n create,\n factory: creatorFactory\n };\n}\n","// https://github.com/ElemeFE/element/blob/dev/packages/upload/src/ajax.js\n\nimport is from '@form-create/utils/lib/type';\nimport {parseFn} from '@form-create/utils/lib/json';\nimport {deepGet} from './util';\nimport {toPromise} from '@form-create/utils';\n\nfunction getError(action, option, xhr) {\n const msg = `fail to ${action} ${xhr.status}'`;\n const err = new Error(msg);\n err.status = xhr.status;\n err.url = action;\n return err;\n}\n\nfunction getBody(xhr) {\n const text = xhr.responseText || xhr.response;\n if (!text) {\n return text;\n }\n\n try {\n return JSON.parse(text);\n } catch (e) {\n return text;\n }\n}\n\nexport default function fetch(option) {\n if (typeof XMLHttpRequest === 'undefined') {\n return;\n }\n\n const xhr = new XMLHttpRequest();\n let action = option.action || '';\n\n if (xhr.upload && option.onProgress) {\n xhr.upload.addEventListener('progress', (evt) => {\n evt.percent = evt.total > 0 ? (evt.loaded / evt.total) * 100 : 0\n option.onProgress(evt)\n })\n }\n\n if (option.query) {\n const query = is.String(option.query) ? option.query : Object.keys(option.query).reduce((acc, key) => {\n acc[key] = (option.query[key] === null || option.query[key] === undefined) ? '' : option.query[key];\n return acc;\n }, {});\n const queryString = new URLSearchParams(query).toString();\n if (queryString) {\n if (action.includes('?')) {\n action += `&${queryString}`;\n } else {\n action += `?${queryString}`;\n }\n }\n }\n\n xhr.onerror = function error(e) {\n option.onError(e);\n };\n\n xhr.onload = function onload() {\n if (xhr.status < 200 || xhr.status >= 300) {\n return option.onError(getError(action, option, xhr), getBody(xhr));\n }\n\n option.onSuccess(getBody(xhr));\n };\n\n xhr.open(option.method || 'get', action, true);\n\n let formData;\n if (option.data || option.file) {\n if (option.file || (option.dataType || '').toLowerCase() !== 'json') {\n formData = new FormData();\n Object.keys(option.data || {}).map(key => {\n formData.append(key, option.data[key]);\n });\n } else {\n formData = JSON.stringify(option.data || {});\n xhr.setRequestHeader('content-type', 'application/json');\n }\n }\n\n if(option.file){\n formData.append(option.filename, option.file, option.file.name)\n }\n\n if (option.withCredentials && 'withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n const headers = option.headers || {};\n\n Object.keys(headers).forEach(item => {\n if (headers[item] != null) {\n xhr.setRequestHeader(item, headers[item]);\n }\n });\n xhr.send(formData);\n}\n\n\nexport function asyncFetch(config, _fetch, api) {\n return new Promise((resolve, reject) => {\n (_fetch || fetch)({\n ...config,\n onSuccess(res) {\n let fn = (v) => v;\n const parse = parseFn(config.parse);\n if (is.Function(parse)) {\n fn = parse;\n } else if (parse && is.String(parse)) {\n fn = (v) => {\n return deepGet(v, parse);\n }\n }\n toPromise(fn(res, config.targetRule, api)).then(res => {\n resolve(res);\n });\n },\n onError(err) {\n reject(err);\n }\n })\n });\n}","import {byCtx, invoke, mergeRule, parseFn, toJson} from './util';\nimport {$set} from '@form-create/utils/lib/modify';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport extend from '@form-create/utils/lib/extend';\nimport {format} from '@form-create/utils/lib/console';\nimport {asyncFetch} from './fetch';\nimport {nextTick} from 'vue';\n\n\nfunction copy(value) {\n return deepCopy(value);\n}\n\nexport default function Api(h) {\n\n function tidyFields(fields) {\n if (is.Undef(fields))\n fields = h.fields();\n else if (!Array.isArray(fields))\n fields = [fields];\n return fields;\n }\n\n function props(fields, key, val) {\n if (is.Undef(fields)) {\n fields = Object.keys({...h.fieldCtx, ...h.nameCtx});\n } else if (!Array.isArray(fields)) {\n fields = [fields];\n }\n fields.forEach(field => {\n const ctxs = h.fieldCtx[field] || h.nameCtx[field];\n ctxs && ctxs.forEach(ctx => {\n $set(ctx.rule, key, val);\n h.$render.clearCache(ctx);\n });\n })\n }\n\n function allSubForm() {\n const subs = h.subForm;\n return Object.keys(subs).reduce((initial, k) => {\n const sub = subs[k];\n if (!sub) return initial;\n if (Array.isArray(sub))\n initial.push(...sub);\n else\n initial.push(sub);\n return initial;\n }, []);\n }\n\n const api = {\n get isScope() {\n return h.vm.props.subForm === false;\n },\n get isPreview() {\n return h.preview;\n },\n get config() {\n return h.options\n },\n set config(val) {\n h.fc.options.value = val;\n },\n get options() {\n return h.options\n },\n set options(val) {\n h.fc.options.value = val;\n },\n get form() {\n return h.form\n },\n get rule() {\n return h.rules\n },\n get parent() {\n return h.vm.setupState.parent && h.vm.setupState.parent.setupState.fapi\n },\n get top() {\n if (api.parent) {\n return api.parent.top;\n }\n return api;\n },\n get scope() {\n let parent = h.vm;\n while (parent && parent.setupState.fapi) {\n if (!parent.props.subForm) {\n return parent.setupState.fapi;\n } else {\n parent = parent.setupState.parent;\n }\n }\n return api.top;\n },\n get children() {\n return allSubForm();\n },\n get siblings() {\n const inject = h.vm.setupState.getGroupInject();\n if (inject) {\n const subForm = inject.getSubForm();\n if (Array.isArray(subForm)) {\n return [...subForm];\n }\n }\n return undefined;\n },\n get index() {\n const siblings = api.siblings;\n if (siblings) {\n const idx = siblings.indexOf(api);\n return idx > -1 ? idx : undefined;\n }\n return undefined;\n },\n get formulas() {\n return {...h.fc.formulas};\n },\n formData(fields) {\n if (fields == null || typeof fields === 'boolean') {\n const data = {};\n Object.keys(h.form).forEach(k => {\n if (fields === true || h.ignoreFields.indexOf(k) === -1) {\n data[k] = copy(h.form[k]);\n }\n });\n return data;\n } else {\n return tidyFields(fields).reduce((initial, id) => {\n initial[id] = api.getValue(id);\n return initial;\n }, {});\n }\n },\n getValue(field) {\n const ctx = h.getFieldCtx(field);\n if (!ctx) {\n if (h.options.appendValue !== false && hasProperty(h.appendData, field)) {\n return copy(h.appendData[field]);\n }\n return undefined;\n }\n return copy(ctx.rule.value);\n },\n coverValue(formData) {\n const data = {...(formData || {})};\n h.deferSyncValue(() => {\n h.appendData = {};\n api.fields().forEach(key => {\n const ctxs = h.fieldCtx[key];\n if (ctxs) {\n const flag = hasProperty(formData, key);\n ctxs.forEach(ctx => {\n ctx.rule.value = flag ? formData[key] : undefined;\n })\n delete data[key];\n }\n });\n extend(h.appendData, data);\n }, true)\n },\n setValue(field) {\n let formData = field;\n if (arguments.length >= 2)\n formData = {[field]: arguments[1]};\n h.deferSyncValue(() => {\n Object.keys(formData).forEach(key => {\n const ctxs = h.fieldCtx[key];\n if (!ctxs) return h.appendData[key] = formData[key];\n ctxs.forEach(ctx => {\n ctx.rule.value = formData[key];\n });\n });\n }, true)\n },\n removeField(field) {\n const ctx = h.getCtx(field);\n h.deferSyncValue(() => {\n h.getCtxs(field).forEach(ctx => {\n ctx.rm();\n });\n }, true);\n return ctx ? ctx.origin : undefined;\n },\n removeRule(rule) {\n const ctx = rule && byCtx(rule);\n if (!ctx) return;\n ctx.rm();\n return ctx.origin;\n },\n fields: () => h.fields(),\n append: (rule, after, child) => {\n let index = h.sort.length - 1, rules;\n const ctx = h.getCtx(after);\n\n if (ctx) {\n if (child) {\n rules = ctx.getPending('children', ctx.rule.children);\n if (!Array.isArray(rules)) return;\n index = ctx.rule.children.length - 1;\n } else {\n index = ctx.root.indexOf(ctx.origin);\n rules = ctx.root;\n }\n } else rules = h.rules;\n rules.splice(index + 1, 0, rule);\n },\n prepend: (rule, after, child) => {\n let index = 0, rules;\n const ctx = h.getCtx(after);\n\n if (ctx) {\n if (child) {\n rules = ctx.getPending('children', ctx.rule.children);\n if (!Array.isArray(rules)) return;\n } else {\n index = ctx.root.indexOf(ctx.origin);\n rules = ctx.root;\n }\n } else rules = h.rules;\n rules.splice(index, 0, rule);\n },\n hidden(state, fields) {\n props(fields, 'hidden', !!state);\n h.refresh();\n },\n hiddenStatus(id) {\n const ctx = h.getCtx(id);\n if (!ctx) return;\n return !!ctx.rule.hidden;\n },\n display(state, fields) {\n props(fields, 'display', !!state);\n h.refresh();\n },\n displayStatus(id) {\n const ctx = h.getCtx(id);\n if (!ctx) return;\n return !!ctx.rule.display;\n },\n disabled(disabled, fields) {\n tidyFields(fields).forEach((field) => {\n h.getCtxs(field).forEach(ctx => {\n $set(ctx.rule.props, 'disabled', !!disabled);\n });\n });\n h.refresh();\n },\n all(origin) {\n return Object.keys(h.ctxs).map(k => {\n const ctx = h.ctxs[k];\n return origin ? ctx.origin : ctx.rule;\n });\n },\n model(origin) {\n return h.fields().reduce((initial, key) => {\n const ctx = h.fieldCtx[key][0];\n initial[key] = origin ? ctx.origin : ctx.rule;\n return initial;\n }, {});\n },\n component(origin) {\n return Object.keys(h.nameCtx).reduce((initial, key) => {\n const ctx = h.nameCtx[key].map(ctx => origin ? ctx.origin : ctx.rule);\n initial[key] = ctx.length === 1 ? ctx[0] : ctx;\n return initial;\n }, {});\n },\n bind() {\n return api.form;\n },\n reload: (rules) => {\n h.reloadRule(rules)\n },\n updateOptions(options) {\n h.fc.updateOptions(options);\n api.refresh();\n },\n onSubmit(fn) {\n api.updateOptions({onSubmit: fn});\n },\n sync: (field) => {\n if (Array.isArray(field)) {\n field.forEach(v => api.sync(v));\n return;\n }\n let ctxs = is.Object(field) ? byCtx(field) : h.getCtxs(field);\n if (!ctxs) {\n return;\n }\n ctxs = Array.isArray(ctxs) ? ctxs : [ctxs];\n ctxs.forEach(ctx => {\n if (!ctx.deleted) {\n const subForm = h.subForm[ctx.id];\n if (subForm) {\n if (Array.isArray(subForm)) {\n subForm.forEach(form => {\n form.refresh();\n })\n } else if (subForm) {\n subForm.refresh();\n }\n }\n //ctx.updateKey(true);\n h.$render.clearCache(ctx);\n }\n });\n h.refresh();\n },\n refresh: () => {\n allSubForm().forEach(sub => {\n sub.refresh();\n });\n h.$render.clearCacheAll();\n h.refresh();\n },\n refreshOptions() {\n h.$manager.updateOptions(h.options);\n api.refresh();\n },\n hideForm: (hide) => {\n h.vm.setupState.isShow = !hide;\n },\n changeStatus: () => {\n return h.changeStatus;\n },\n clearChangeStatus: () => {\n h.changeStatus = false;\n },\n updateRule(id, rule) {\n h.getCtxs(id).forEach(ctx => {\n extend(ctx.rule, rule);\n });\n },\n updateRules(rules) {\n Object.keys(rules).forEach(id => {\n api.updateRule(id, rules[id]);\n })\n },\n mergeRule: (id, rule) => {\n h.getCtxs(id).forEach(ctx => {\n mergeRule(ctx.rule, rule);\n });\n },\n mergeRules(rules) {\n Object.keys(rules).forEach(id => {\n api.mergeRule(id, rules[id]);\n })\n },\n getRule: (id, origin) => {\n const ctx = h.getCtx(id);\n if (ctx) {\n return origin ? ctx.origin : ctx.rule;\n }\n },\n findType(type, origin) {\n let rule = undefined;\n Object.keys(h.ctxs).forEach(k => {\n const ctx = h.ctxs[k];\n if (ctx.rule.type === type) {\n rule = origin ? ctx.origin : ctx.rule;\n }\n });\n return rule;\n },\n findTypes(type, origin) {\n let rules = [];\n Object.keys(h.ctxs).forEach(k => {\n const ctx = h.ctxs[k];\n if (ctx.rule.type === type) {\n rules.push(origin ? ctx.origin : ctx.rule);\n }\n });\n return rules;\n },\n getRenderRule: (id) => {\n const ctx = h.getCtx(id);\n if (ctx) {\n return ctx.prop;\n }\n },\n getRefRule: (id) => {\n const ctxs = h.getCtxs(id);\n if (ctxs) {\n const rules = ctxs.map(ctx => {\n return ctx.rule;\n })\n return rules.length === 1 ? rules[0] : rules;\n }\n },\n setEffect(id, attr, value) {\n const ctx = h.getCtx(id);\n if (ctx && attr) {\n if (attr[0] === '$') {\n attr = attr.substr(1);\n }\n if (hasProperty(ctx.rule, '$' + attr)) {\n $set(ctx.rule, '$' + attr, value);\n }\n if (!hasProperty(ctx.rule, 'effect')) {\n ctx.rule.effect = {};\n }\n $set(ctx.rule.effect, attr, value);\n }\n },\n clearEffectData(id, attr) {\n const ctx = h.getCtx(id);\n if (ctx) {\n if (attr && attr[0] === '$') {\n attr = attr.substr(1);\n }\n ctx.clearEffectData(attr);\n api.sync(id);\n }\n },\n updateValidate(id, validate, merge) {\n if (merge) {\n api.mergeRule(id, {validate})\n } else {\n props(id, 'validate', validate);\n }\n },\n updateValidates(validates, merge) {\n Object.keys(validates).forEach(id => {\n api.updateValidate(id, validates[id], merge);\n })\n },\n refreshValidate() {\n api.refresh();\n },\n resetFields(fields) {\n tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n h.$render.clearCache(ctx);\n ctx.rule.value = copy(ctx.defaultValue);\n });\n });\n nextTick(() => {\n nextTick(() => {\n nextTick(() => {\n api.clearValidateState(fields);\n });\n });\n });\n if (fields == null) {\n is.Function(h.options.onReset) && invoke(() => h.options.onReset(api));\n h.vm.emit('reset', api);\n }\n },\n method(id, name) {\n const el = api.el(id);\n if (!el || !el[name])\n throw new Error(format('err', `${name} 方法不存在`));\n return (...args) => {\n return el[name](...args);\n }\n },\n exec(id, name, ...args) {\n return invoke(() => api.method(id, name)(...args));\n },\n toJson(space) {\n return toJson(api.rule, space);\n },\n trigger(id, event, ...args) {\n const el = api.el(id);\n el && el.$emit(event, ...args);\n },\n el(id) {\n const ctx = h.getCtx(id);\n if (ctx) return ctx.el || h.vm.refs[ctx.ref];\n },\n closeModal: (id) => {\n h.bus.$emit('fc:closeModal:' + id);\n },\n getSubForm(field) {\n const ctx = h.getCtx(field);\n return ctx ? h.subForm[ctx.id] : undefined;\n },\n getChildrenRuleList(id) {\n const flag = typeof id === 'object';\n const ctx = flag ? byCtx(id) : h.getCtx(id);\n const rule = ctx ? ctx.rule : (flag ? id : api.getRule(id));\n if (!rule) {\n return [];\n }\n const rules = [];\n const findRules = children => {\n children && children.forEach(item => {\n if (typeof item !== 'object') {\n return;\n }\n if (item.field) {\n rules.push(item);\n }\n rules.push(...api.getChildrenRuleList(item));\n });\n }\n findRules(ctx ? ctx.loadChildrenPending() : rule.children);\n return rules;\n },\n getParentRule(id) {\n const flag = typeof id === 'object';\n const ctx = flag ? byCtx(id) : h.getCtx(id);\n return ctx.parent.rule;\n },\n getParentSubRule(id) {\n const flag = typeof id === 'object';\n const ctx = flag ? byCtx(id) : h.getCtx(id);\n if (ctx) {\n const group = ctx.getParentGroup();\n if (group) {\n return group.rule;\n }\n }\n },\n getChildrenFormData(id, flag) {\n const rules = api.getChildrenRuleList(id);\n return rules.reduce((formData, rule) => {\n if (rule.ignore !== true || flag === true) {\n formData[rule.field] = copy(rule.value);\n }\n return formData;\n }, {});\n },\n setChildrenFormData(id, formData, cover) {\n const rules = api.getChildrenRuleList(id);\n h.deferSyncValue(() => {\n rules.forEach(rule => {\n if (hasProperty(formData, rule.field)) {\n rule.value = formData[rule.field];\n } else if (cover) {\n rule.value = undefined;\n }\n });\n });\n },\n getGlobalEvent(name) {\n let event = api.options.globalEvent[name];\n if (event) {\n if (typeof event === 'object') {\n event = event.handle;\n }\n return parseFn(event);\n }\n return undefined;\n },\n getGlobalData(name) {\n return new Promise((resolve, inject) => {\n let config = api.options.globalData[name];\n if (!config) {\n resolve(h.fc.loadData[name]);\n } else if (config.type === 'fetch') {\n api.fetch(config).then(res => {\n resolve(res);\n }).catch(inject);\n } else {\n resolve(config.data);\n }\n });\n },\n emitGlobalEvent(name, ...args) {\n const fn = api.getGlobalEvent(name);\n if(fn) {\n const data = h.getInjectData({}, undefined);\n data.args = [...args];\n args.unshift(data);\n return fn.apply(null, args);\n }\n },\n setGlobalData(name, value) {\n api.setData('$globalData.' + name, value);\n },\n setGlobalVar(name, value) {\n api.setData('$var.' + name, value);\n },\n renderRule(id, onInput, force) {\n const flag = typeof id === 'object';\n const ctx = flag ? byCtx(id) : h.getCtx(id);\n return ctx ? h.$render.createRuleVnode(ctx, onInput, force) : undefined;\n },\n renderChildren(id, onInput, force) {\n const flag = typeof id === 'object';\n const ctx = flag ? byCtx(id) : h.getCtx(id);\n return ctx ? h.$render.createChildrenVnodes(ctx, onInput, force) : undefined;\n },\n nextTick(fn) {\n h.bus.$once('next-tick', fn);\n h.refresh();\n },\n nextRefresh(fn) {\n h.nextRefresh();\n fn && invoke(fn);\n },\n deferSyncValue(fn, sync) {\n h.deferSyncValue(fn, sync);\n },\n emit(name, ...args) {\n if (h.vm.emitsOptions && !h.vm.emitsOptions[name]) {\n h.vm.emitsOptions[name] = null;\n }\n h.vm.emit(name, ...args);\n },\n bus: h.bus,\n getCurrentFormRule() {\n return h.vm.setupState.getGroupInject()?.rule;\n },\n fetch(opt) {\n return new Promise((resolve, reject) => {\n opt = deepCopy(opt);\n opt = h.loadFetchVar(opt);\n const fail = (e) => {\n invoke(() => opt.onError && opt.onError(e));\n reject(e);\n }\n h.beforeFetch(opt).then(() => {\n return asyncFetch(opt, h.fc.create.fetch, api).then((res) => {\n invoke(() => opt.onSuccess && opt.onSuccess(res));\n resolve(res);\n }).catch((e) => {\n fail(e);\n });\n }).catch(e => {\n fail(e);\n });\n });\n },\n watchFetch(opt, callback, error, beforeFetch) {\n return h.fc.watchLoadData((get, change) => {\n let _opt = deepCopy(opt);\n _opt = h.loadFetchVar(_opt, get);\n if (beforeFetch && beforeFetch(_opt, change) === false) {\n return;\n }\n const fail = (e) => {\n invoke(() => _opt.onError && _opt.onError(e));\n error && error(e);\n }\n h.beforeFetch(_opt).then(() => {\n return asyncFetch(_opt, h.fc.create.fetch, api).then(res => {\n invoke(() => _opt.onSuccess && _opt.onSuccess(res));\n callback && callback(res, change);\n }).catch(e => {\n fail(e);\n });\n }).catch(e => {\n fail(e);\n });\n }, opt.wait == null ? 1000 : opt.wait);\n },\n getData(id, def) {\n if (h.fc.get) {\n return h.fc.get(id, def);\n } else {\n return h.fc.getLoadData(id, def);\n }\n },\n watchData(fn) {\n return h.fc.watchLoadData((get, change) => {\n invoke(() => fn(get, change));\n })\n },\n setData(id, data, isGlobal) {\n return h.fc.setData(id, data, isGlobal);\n },\n refreshData(id) {\n return h.fc.refreshData(id);\n },\n t(id, params) {\n return h.fc.t(id, params);\n },\n getLocale() {\n return h.fc.getLocale();\n },\n helper: {\n tidyFields, props\n }\n };\n\n ['on', 'once', 'off'].forEach(n => {\n api[n] = function (...args) {\n h.bus[`$${n}`](...args);\n }\n });\n\n api.changeValue = api.changeField = api.setValue;\n\n return api;\n}\n","import useCache from './cache';\nimport useRender from './render';\nimport extend from '@form-create/utils/lib/extend';\nimport {funcProxy} from '../frame/util';\n\nlet id = 1;\nexport default function Render(handle) {\n extend(this, {\n $handle: handle,\n fc: handle.fc,\n vm: handle.vm,\n $manager: handle.$manager,\n vNode: new handle.fc.CreateNode(handle),\n force: false,\n tmpInput: null,\n id: id++\n });\n\n funcProxy(this, {\n options() {\n return handle.options;\n },\n sort() {\n return handle.sort;\n }\n })\n\n this.initCache();\n this.initRender();\n}\n\nuseCache(Render);\nuseRender(Render)\n","import extend from '@form-create/utils/lib/extend';\n\nexport default function useCache(Render) {\n extend(Render.prototype, {\n initCache() {\n this.clearCacheAll();\n },\n clearCache(ctx) {\n if (ctx.rule.cache) {\n return;\n }\n if (!this.cache[ctx.id]) {\n if (ctx.parent) {\n this.clearCache(ctx.parent);\n }\n return;\n }\n if (this.cache[ctx.id].use === true || this.cache[ctx.id].parent) {\n this.$handle.refresh();\n }\n if (this.cache[ctx.id].parent) {\n this.clearCache(this.cache[ctx.id].parent);\n }\n this.cache[ctx.id] = null;\n },\n clearCacheAll() {\n this.cache = {};\n },\n setCache(ctx, vnode, parent) {\n this.cache[ctx.id] = {\n vnode,\n use: false,\n parent,\n slot: ctx.rule.slot\n };\n },\n getCache(ctx) {\n const cache = this.cache[ctx.id];\n if (cache) {\n cache.use = true;\n return cache.vnode;\n }\n return undefined;\n }\n })\n\n}\n","import extend, {copy} from '@form-create/utils/lib/extend';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport is from '@form-create/utils/lib/type';\nimport {invoke, makeSlotBag, mergeRule} from '../frame/util';\nimport toCase, {lower} from '@form-create/utils/lib/tocase';\nimport {deepSet, toLine} from '@form-create/utils';\nimport {computed, nextTick} from 'vue';\n\nexport default function useRender(Render) {\n extend(Render.prototype, {\n initRender() {\n this.cacheConfig = {};\n },\n getTypeSlot(ctx) {\n const _fn = (vm) => {\n if (vm) {\n let slot = undefined;\n if (ctx.rule.field) {\n slot = vm.slots['field-' + toLine(ctx.rule.field)] || vm.slots['field-' + ctx.rule.field];\n }\n if (!slot) {\n slot = vm.slots['type-' + toLine(ctx.type)] || vm.slots['type-' + ctx.type];\n }\n if (slot) {\n return slot;\n }\n return _fn(vm.setupState.parent);\n }\n }\n return _fn(this.vm);\n },\n render() {\n // console.warn('renderrrrr', this.id);\n if (!this.vm.setupState.isShow) {\n return;\n }\n this.$manager.beforeRender();\n const slotBag = makeSlotBag();\n this.sort.forEach((k) => {\n this.renderSlot(slotBag, this.$handle.ctxs[k]);\n });\n\n return this.$manager.render(slotBag);\n },\n renderSlot(slotBag, ctx, parent) {\n if (this.isFragment(ctx)) {\n ctx.initProp();\n this.mergeGlobal(ctx);\n ctx.initNone();\n const slots = this.renderChildren(ctx.loadChildrenPending(), ctx);\n const def = slots.default;\n def && slotBag.setSlot(ctx.rule.slot, () => def());\n delete slots.default;\n slotBag.mergeBag(slots);\n } else {\n slotBag.setSlot(ctx.rule.slot, this.renderCtx(ctx, parent));\n }\n },\n mergeGlobal(ctx) {\n const g = this.$handle.options.global;\n if (!g) return;\n if (!this.cacheConfig[ctx.trueType]) {\n this.cacheConfig[ctx.trueType] = computed(() => {\n const g = this.$handle.options.global;\n return mergeRule({}, [g['*'] || g.default || {}, g[ctx.originType] || g[ctx.type] || g[ctx.type] || {}]);\n });\n }\n ctx.prop = mergeRule({}, [this.cacheConfig[ctx.trueType].value, ctx.prop]);\n },\n setOptions(ctx) {\n const opt = ctx.loadPending({key: 'options', origin: ctx.prop.options, def: []});\n ctx.prop.options = opt;\n if (ctx.prop.optionsTo && opt) {\n deepSet(ctx.prop, ctx.prop.optionsTo, opt);\n }\n },\n deepSet(ctx) {\n const deep = ctx.prop.deep;\n deep && Object.keys(deep).sort((a, b) => a.length < b.length ? -1 : 1).forEach(str => {\n deepSet(ctx.prop, str, deep[str]);\n });\n },\n parseSide(side, ctx) {\n return is.Object(side) ? mergeRule({props: {formCreateInject: ctx.prop.props.formCreateInject}}, side) : side;\n },\n renderSides(vn, ctx, temp) {\n const prop = ctx[temp ? 'rule' : 'prop'];\n return [this.renderRule(this.parseSide(prop.prefix, ctx)), vn, this.renderRule(this.parseSide(prop.suffix, ctx))];\n },\n renderId(name, type) {\n const ctxs = this.$handle[type === 'field' ? 'fieldCtx' : 'nameCtx'][name]\n return ctxs ? ctxs.map(ctx => this.renderCtx(ctx, ctx.parent)) : undefined;\n },\n renderCtx(ctx, parent) {\n try {\n if (ctx.type === 'hidden') return;\n const rule = ctx.rule;\n if (this.force || (!this.cache[ctx.id]) || this.cache[ctx.id].slot !== rule.slot) {\n let vn;\n ctx.initProp();\n this.mergeGlobal(ctx);\n ctx.initNone();\n this.$manager.tidyRule(ctx);\n this.deepSet(ctx);\n this.setOptions(ctx);\n this.ctxProp(ctx);\n let prop = ctx.prop;\n prop.preview = !!(prop.preview != null ? prop.preview : this.$handle.preview);\n prop.props.formCreateInject = this.injectProp(ctx);\n let cacheFlag = prop.cache !== false;\n const preview = prop.preview;\n\n if (prop.hidden) {\n this.setCache(ctx, undefined, parent);\n return;\n }\n vn = (...slotValue) => {\n const inject = {\n rule,\n prop,\n preview,\n api: this.$handle.api,\n model: prop.model || {},\n slotValue\n }\n if (slotValue.length && rule.slotUpdate) {\n invoke(() => rule.slotUpdate(inject))\n }\n let children = {};\n const _load = ctx.loadChildrenPending();\n if (ctx.parser.renderChildren) {\n children = ctx.parser.renderChildren(_load, ctx);\n } else if (ctx.parser.loadChildren !== false) {\n children = this.renderChildren(_load, ctx);\n }\n Object.keys(prop.renderSlots || {}).forEach(key => {\n children[key] = (...args) => {\n if (is.Function(prop.renderSlots[key])) {\n return invoke(() => prop.renderSlots[key](...args));\n }\n const rule = this.parseSide(prop.renderSlots[key], ctx);\n return this.renderRule(rule);\n }\n })\n const slot = this.getTypeSlot(ctx);\n let _vn;\n if (slot) {\n inject.children = children;\n _vn = slot(inject)\n } else {\n _vn = preview ? ctx.parser.preview(copy(children), ctx) : ctx.parser.render(copy(children), ctx);\n }\n _vn = this.renderSides(_vn, ctx);\n if ((!(!ctx.input && is.Undef(prop.native))) && prop.native !== true) {\n this.fc.targetFormDriver('updateWrap', ctx)\n _vn = this.$manager.makeWrap(ctx, _vn);\n }\n if (ctx.none) {\n if (Array.isArray(_vn)) {\n _vn = _vn.map(v => {\n if (!v || !v.__v_isVNode) {\n return v;\n }\n return this.none(v);\n });\n } else {\n _vn = this.none(_vn);\n }\n }\n cacheFlag && this.setCache(ctx, () => {\n return this.stable(_vn);\n }, parent);\n return _vn\n };\n this.setCache(ctx, vn, parent);\n }\n return (...args) => {\n const cache = this.getCache(ctx);\n if (cache) {\n return cache(...args);\n } else if (this.cache[ctx.id]) {\n return;\n }\n const _vn = this.renderCtx(ctx, ctx.parent);\n if (_vn) {\n return _vn();\n }\n };\n } catch (e) {\n console.error(e);\n return;\n }\n },\n none(vn) {\n if (vn) {\n vn.props.class = this.mergeClass(vn.props.class, 'fc-none')\n return vn;\n }\n },\n mergeClass(target, value) {\n if (Array.isArray(target)) {\n target.push(value);\n } else {\n return target ? [target, value] : value;\n }\n return target;\n },\n stable(vn) {\n const list = Array.isArray(vn) ? vn : [vn];\n list.forEach(v => {\n if (v && v.__v_isVNode && v.children && typeof v.children === 'object') {\n v.children.$stable = true;\n this.stable(v.children);\n }\n });\n return vn;\n },\n getModelField(ctx) {\n return ctx.prop.modelField || ctx.parser.modelField || this.fc.modelFields[this.vNode.aliasMap[ctx.type]] || this.fc.modelFields[ctx.type] || this.fc.modelFields[ctx.originType] || 'modelValue';\n },\n isFragment(ctx) {\n return ctx.type === 'fragment' || ctx.type === 'template';\n },\n injectProp(ctx) {\n const state = this.vm.setupState;\n if (!state.ctxInject[ctx.id]) {\n state.ctxInject[ctx.id] = {\n api: this.$handle.api,\n form: this.fc.create,\n subForm: subForm => {\n this.$handle.addSubForm(ctx, subForm);\n },\n getSubForm: () => {\n return this.$handle.subForm[ctx.id];\n },\n slots: () => {\n return this.vm.setupState.top.slots;\n },\n getWrap: () => {\n return this.vm.refs[ctx.wrapRef];\n },\n options: [],\n children: [],\n preview: false,\n id: ctx.id,\n field: ctx.field,\n rule: ctx.rule,\n input: ctx.input,\n t: (...args) => {\n return this.$handle.api.t(...args);\n },\n updateValue: (data) => {\n this.$handle.onUpdateValue(ctx, data);\n }\n }\n }\n const inject = state.ctxInject[ctx.id];\n extend(inject, {\n preview: ctx.prop.preview,\n options: ctx.prop.options,\n children: ctx.loadChildrenPending()\n });\n return inject;\n },\n ctxProp(ctx) {\n const {ref, key, rule} = ctx;\n this.$manager.mergeProp(ctx);\n ctx.parser.mergeProp(ctx);\n const props = [\n {\n ref: ref,\n key: rule.key || `${key}fc`,\n slot: undefined,\n on: {\n vnodeMounted: (vn) => {\n vn.el.__rule__ = ctx.rule;\n this.onMounted(ctx, vn.el);\n },\n 'fc.updateValue': (data) => {\n this.$handle.onUpdateValue(ctx, data);\n },\n 'fc.el': (el) => {\n ctx.exportEl = el;\n if (el) {\n (el.$el || el).__rule__ = ctx.rule;\n }\n }\n }\n }\n ]\n\n if (ctx.input) {\n const tmpInput = this.tmpInput;\n if (this.vm.props.disabled === true) {\n ctx.prop.props.disabled = true;\n }\n const field = this.getModelField(ctx);\n const model = {\n callback: (value) => {\n tmpInput && tmpInput(ctx.field, value, ctx.rule);\n this.onInput(ctx, value);\n },\n modelField: field,\n value: this.$handle.getFormData(ctx)\n };\n props.push({\n on: {\n [`update:${field}`]: model.callback,\n ...(ctx.prop.modelEmit ? {\n [ctx.prop.modelEmit]: () => this.onEmitInput(ctx)\n } : {}),\n },\n props: {\n [field]: model.value\n }\n })\n ctx.prop.model = model;\n }\n mergeProps(props, ctx.prop);\n return ctx.prop;\n },\n onMounted(ctx, el) {\n ctx.el = this.vm.refs[ctx.ref] || el;\n ctx.parser.mounted(ctx);\n this.$handle.effect(ctx, 'mounted');\n this.$handle.targetHook(ctx, 'mounted');\n },\n onInput(ctx, value) {\n if (ctx.prop.modelEmit) {\n this.$handle.onBaseInput(ctx, value);\n return;\n }\n this.$handle.onInput(ctx, value);\n },\n onEmitInput(ctx) {\n this.$handle.setValue(ctx, ctx.parser.toValue(ctx.modelValue, ctx), ctx.modelValue);\n },\n renderChildren(children, ctx) {\n if (!is.trueArray(children)) return {};\n const slotBag = makeSlotBag()\n children.map(child => {\n if (!child) return;\n if (is.String(child) || is.Number(child)) return slotBag.setSlot(null, `${child}`);\n if (child.__fc__) {\n return this.renderSlot(slotBag, child.__fc__, ctx);\n }\n if (child.type) {\n nextTick(() => {\n this.$handle.loadChildren(children, ctx);\n this.$handle.refresh();\n });\n }\n });\n return slotBag.getSlots();\n },\n defaultRender(ctx, children) {\n const prop = ctx.prop;\n if (prop.component) {\n if (typeof prop.component === 'string') {\n return this.vNode.make(prop.component, prop, children);\n } else {\n return this.vNode.makeComponent(prop.component, prop, children);\n }\n }\n if (this.vNode[ctx.type])\n return this.vNode[ctx.type](prop, children);\n if (this.vNode[ctx.originType])\n return this.vNode[ctx.originType](prop, children);\n return this.vNode.make(lower(prop.type), prop, children);\n },\n createChildrenVnodes(ctx, onInput, force) {\n this.force = force !== false;\n this.tmpInput = onInput;\n const res = this.renderChildren(ctx.rule.children, ctx);\n this.force = false;\n this.tmpInput = null;\n return res;\n },\n createRuleVnode(ctx, onInput, force) {\n this.force = force !== false;\n this.tmpInput = onInput;\n const slotBag = makeSlotBag();\n this.renderSlot(slotBag, ctx, ctx.parent);\n this.force = false;\n this.tmpInput = null;\n return slotBag.getSlots();\n },\n renderRule(rule, children, origin) {\n if (!rule) return undefined;\n if (is.String(rule) || is.Number(rule)) return `${rule}`;\n\n let type;\n if (origin) {\n type = rule.type;\n } else {\n type = rule.is;\n if (rule.type) {\n type = toCase(rule.type);\n const alias = this.vNode.aliasMap[type];\n if (alias) type = toCase(alias);\n }\n }\n\n if (!type) return undefined;\n\n const slotBag = makeSlotBag();\n if (is.trueArray(rule.children)) {\n rule.children.forEach(v => {\n v && slotBag.setSlot(v?.slot, () => this.renderRule(v));\n });\n }\n const props = {...rule};\n delete props.type;\n delete props.is;\n return this.vNode.make(type, props, slotBag.mergeBag(children).getSlots());\n }\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\n\nconst EVENT = ['hook:updated', 'hook:mounted'];\n\nexport default function usePage(Handler) {\n extend(Handler.prototype, {\n usePage() {\n const page = this.options.page;\n if (!page) return;\n let first = 25;\n let limit = getLimit(this.rules);\n if (is.Object(page)) {\n if (page.first) first = parseInt(page.first, 10) || first;\n if (page.limit) limit = parseInt(page.limit, 10) || limit;\n }\n extend(this, {\n first,\n limit,\n pageEnd: this.rules.length <= first,\n })\n\n this.bus.$on('page-end', () => this.vm.emit('page-end', this.api));\n this.pageLoad();\n },\n pageLoad() {\n const pageFn = () => {\n if (this.pageEnd) {\n this.bus.$off(EVENT, pageFn);\n this.bus.$emit('page-end');\n } else {\n this.first += this.limit;\n this.pageEnd = this.rules.length <= this.first;\n this.loadRule();\n this.refresh();\n }\n }\n this.bus.$on(EVENT, pageFn);\n },\n })\n}\n\n\nfunction getLimit(rules) {\n return rules.length < 31 ? 31 : Math.ceil(rules.length / 3);\n}\n","import unique from '@form-create/utils/lib/unique';\nimport toCase from '@form-create/utils/lib/tocase';\nimport extend from '@form-create/utils/lib/extend';\nimport {enumerable, invoke, mergeRule} from '../frame/util';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport {markRaw, reactive} from 'vue';\nimport is from '@form-create/utils/lib/type';\nimport toArray from '@form-create/utils/lib/toarray';\n\nfunction bind(ctx) {\n Object.defineProperties(ctx.origin, {\n __fc__: enumerable(markRaw(ctx), true)\n });\n if(ctx.rule !== ctx.origin) {\n Object.defineProperties(ctx.rule, {\n __fc__: enumerable(markRaw(ctx), true)\n });\n }\n}\n\nexport default function RuleContext(handle, rule, defaultValue) {\n const id = unique();\n const isInput = !!rule.field;\n extend(this, {\n id,\n ref: id,\n wrapRef: id + 'fi',\n rule,\n origin: rule.__origin__ || rule,\n name: rule.name,\n pending: {},\n none: false,\n watch: [],\n linkOn: [],\n root: [],\n ctrlRule: [],\n children: [],\n parent: null,\n group: rule.subRule ? this : null,\n cacheConfig: null,\n prop: {...rule},\n computed: {},\n payload: {},\n refRule: {},\n input: isInput,\n el: undefined,\n exportEl: undefined,\n defaultValue: isInput ? deepCopy(defaultValue) : undefined,\n field: rule.field || undefined\n })\n\n this.updateKey();\n bind(this);\n this.update(handle, true);\n}\n\nextend(RuleContext.prototype, {\n getParentGroup() {\n let ctx = this.parent;\n while (ctx) {\n if (ctx.group) {\n return ctx;\n }\n ctx = ctx.parent;\n }\n },\n loadChildrenPending() {\n const children = this.rule.children || [];\n if (Array.isArray(children))\n return children;\n return this.loadPending({\n key: 'children', origin: children, def: [],\n onLoad: (data) => {\n this.$handle && this.$handle.loadChildren(data, this);\n }, onUpdate: (value, oldValue) => {\n if (this.$handle) {\n value === oldValue ? this.$handle.loadChildren(value, this) : this.$handle.updateChildren(this, value, oldValue);\n }\n }, onReload: (value) => {\n if (this.$handle) {\n this.$handle.updateChildren(this, [], value);\n } else {\n delete this.pending.children;\n }\n }\n });\n },\n loadPending(config) {\n const {key, origin, def, onLoad, onReload, onUpdate} = config;\n\n if (this.pending[key] && this.pending[key].origin === origin) {\n return this.getPending(key, def);\n }\n\n delete this.pending[key];\n\n let value = origin;\n if (is.Function(origin)) {\n let source = invoke(() => origin({\n rule: this.rule, api: this.$api, update: (data) => {\n const value = data || def;\n const oldValue = this.getPending(key, def);\n this.setPending(key, origin, value);\n onUpdate && onUpdate(value, oldValue);\n }, reload: () => {\n const oldValue = this.getPending(key, def);\n delete this.pending[key];\n onReload && onReload(oldValue);\n this.$api && this.$api.sync(this.rule);\n }\n }));\n if (source && is.Function(source.then)) {\n source.then((data) => {\n const value = data || def;\n this.setPending(key, origin, value);\n onLoad && onLoad(value);\n this.$api && this.$api.sync(this.rule);\n }).catch(e => {\n console.error(e);\n })\n value = def;\n this.setPending(key, origin, value);\n } else {\n value = source || def;\n this.setPending(key, origin, value);\n onLoad && onLoad(value);\n }\n }\n return value;\n },\n getPending(key, def) {\n return (this.pending[key] && this.pending[key].value) || def;\n },\n setPending(key, origin, value) {\n this.pending[key] = {\n origin,\n value: reactive(value)\n };\n },\n effectData(name) {\n if (!this.payload[name]) {\n this.payload[name] = {};\n }\n return this.payload[name];\n },\n clearEffectData(name) {\n if (name === undefined) {\n this.payload = {};\n } else {\n delete this.payload[name];\n }\n },\n updateKey(flag) {\n this.key = unique();\n flag && this.parent && this.parent.updateKey(flag);\n },\n updateType() {\n this.originType = this.rule.type;\n this.type = toCase(this.rule.type);\n this.trueType = this.$handle.getType(this.originType);\n },\n setParser(parser) {\n this.parser = parser;\n parser.init(this);\n },\n initProp() {\n const rule = {...this.rule};\n delete rule.children;\n delete rule.validate;\n this.prop = mergeRule({}, [rule, ...Object.keys(this.payload).map(k => this.payload[k]), this.computed]);\n this.prop.validate = [...this.refRule?.__$validate?.value || [], ...this.prop.validate || []]\n },\n initNone() {\n this.none = !(is.Undef(this.prop.display) || !!this.prop.display)\n },\n hasHidden() {\n return (!!this.rule.hidden) || (this.parent ? this.parent.hasHidden() : false);\n },\n injectValidate() {\n return this.prop.validate;\n },\n check(handle) {\n return this.vm === handle.vm\n },\n unwatch() {\n this.watch.forEach(un => un());\n this.watch = [];\n Object.keys(this.refRule).forEach(key => {\n if (key.indexOf('__$') !== 0) {\n delete this.refRule[key];\n }\n })\n },\n unlink() {\n this.linkOn.forEach(un => un());\n this.linkOn = [];\n },\n link() {\n this.unlink();\n this.$handle.appendLink(this);\n },\n watchTo() {\n this.$handle.watchCtx(this);\n },\n delete() {\n this.unwatch();\n this.unlink();\n this.rmCtrl();\n if (this.parent) {\n this.parent.children.splice(this.parent.children.indexOf(this) >>> 0, 1);\n }\n extend(this, {\n deleted: true,\n computed: {},\n parent: null,\n children: [],\n cacheConfig: null,\n none: false,\n })\n },\n rmCtrl() {\n this.ctrlRule.forEach(ctrl => ctrl.__fc__ && ctrl.__fc__.rm());\n this.ctrlRule = [];\n },\n rm() {\n const _rm = () => {\n let index = this.root.indexOf(this.origin);\n if (index > -1) {\n this.root.splice(index, 1);\n this.$handle && this.$handle.refresh();\n }\n }\n if (this.deleted) {\n _rm();\n return;\n }\n this.$handle.noWatch(() => {\n this.$handle.deferSyncValue(() => {\n this.rmCtrl();\n _rm();\n this.$handle.rmCtx(this);\n extend(this, {\n root: []\n });\n }, this.input);\n });\n },\n update(handle, init) {\n extend(this, {\n deleted: false,\n $handle: handle,\n $render: handle.$render,\n $api: handle.api,\n vm: handle.vm,\n vNode: handle.$render.vNode,\n updated: false,\n cacheValue: this.rule.value\n });\n !init && this.unwatch();\n this.watchTo();\n this.link();\n this.updateType();\n }\n})\n","import extend from '@form-create/utils/lib/extend';\nimport {byCtx, condition, copyRule, enumerable, getRule, invoke, parseFn, parseJson, toJson} from '../frame/util';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {baseRule} from '../factory/creator';\nimport RuleContext from '../factory/context';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport {nextTick} from 'vue';\n\nexport default function useLoader(Handler) {\n extend(Handler.prototype, {\n nextRefresh(fn) {\n const id = this.loadedId;\n nextTick(() => {\n id === this.loadedId && (fn ? fn() : this.refresh());\n });\n },\n parseRule(_rule) {\n const rule = getRule(_rule);\n\n Object.defineProperties(rule, {\n __origin__: enumerable(_rule, true)\n });\n\n fullRule(rule);\n this.appendValue(rule);\n\n [rule, rule['prefix'], rule['suffix']].forEach(item => {\n if (!item) {\n return;\n }\n this.loadFn(item, rule);\n });\n this.loadCtrl(rule);\n if (rule.update) {\n rule.update = parseFn(rule.update);\n }\n return rule;\n },\n loadFn(item, rule) {\n ['on', 'props', 'deep'].forEach(k => {\n item[k] && this.parseInjectEvent(rule, item[k]);\n });\n },\n loadCtrl(rule) {\n rule.control && rule.control.forEach(ctrl => {\n if (ctrl.handle) {\n ctrl.handle = parseFn(ctrl.handle)\n }\n })\n },\n syncProp(ctx) {\n const rule = ctx.rule;\n is.trueArray(rule.sync) && mergeProps([{\n on: rule.sync.reduce((pre, prop) => {\n pre[(typeof prop === 'object' && prop.event) || `update:${prop}`] = (val) => {\n rule.props[(typeof prop === 'object' && prop.prop) || prop] = val;\n this.vm.emit('sync', prop, val, rule, this.fapi);\n }\n return pre\n }, {})\n }], ctx.computed)\n },\n loadRule() {\n // console.warn('%c load', 'color:blue');\n this.cycleLoad = false;\n this.loading = true;\n if (this.pageEnd) {\n this.bus.$emit('load-start');\n }\n this.deferSyncValue(() => {\n this._loadRule(this.rules);\n this.loading = false;\n if (this.cycleLoad && this.pageEnd) {\n return this.loadRule();\n }\n this.syncForm();\n if (this.pageEnd) {\n this.bus.$emit('load-end');\n }\n this.vm.setupState.renderRule();\n });\n },\n loadChildren(children, parent) {\n this.cycleLoad = false;\n this.loading = true;\n this.bus.$emit('load-start');\n this._loadRule(children, parent);\n this.loading = false;\n if (this.cycleLoad) {\n return this.loadRule();\n } else {\n this.syncForm();\n this.bus.$emit('load-end');\n }\n this.$render.clearCache(parent);\n },\n _loadRule(rules, parent) {\n\n const preIndex = (i) => {\n let pre = rules[i - 1];\n if (!pre || !pre.__fc__) {\n return i > 0 ? preIndex(i - 1) : -1;\n }\n let index = this.sort.indexOf(pre.__fc__.id);\n return index > -1 ? index : preIndex(i - 1);\n }\n\n const loadChildren = (children, parent) => {\n if (is.trueArray(children)) {\n this._loadRule(children, parent);\n }\n };\n\n const ctxs = rules.map((_rule, index) => {\n if (parent && !is.Object(_rule)) return;\n if (!this.pageEnd && !parent && index >= this.first) return;\n\n if (_rule.__fc__ && _rule.__fc__.root === rules && this.ctxs[_rule.__fc__.id]) {\n loadChildren(_rule.__fc__.loadChildrenPending(), _rule.__fc__);\n return _rule.__fc__;\n }\n\n let rule = getRule(_rule);\n\n const isRepeat = () => {\n return !!(rule.field && this.fieldCtx[rule.field] && this.fieldCtx[rule.field][0] !== _rule.__fc__)\n }\n\n this.fc.targetFormDriver('loadRule', {rule, api: this.api}, this.fc);\n this.ruleEffect(rule, 'init', {repeat: isRepeat()});\n\n if (isRepeat()) {\n this.vm.emit('repeat-field', _rule, this.api);\n }\n\n let ctx;\n let isCopy = false;\n let isInit = !!_rule.__fc__;\n let defaultValue = rule.value;\n if (isInit) {\n ctx = _rule.__fc__;\n defaultValue = ctx.defaultValue;\n if (ctx.deleted) {\n if (isCtrl(ctx)) {\n return;\n }\n ctx.update(this);\n } else {\n if (!ctx.check(this)) {\n if (isCtrl(ctx)) {\n return;\n }\n rules[index] = _rule = _rule._clone ? _rule._clone() : parseJson(toJson(_rule));\n ctx = null;\n isCopy = true;\n }\n }\n }\n if (!ctx) {\n const rule = this.parseRule(_rule);\n ctx = new RuleContext(this, rule, defaultValue);\n this.bindParser(ctx);\n } else {\n if (ctx.originType !== ctx.rule.type) {\n ctx.updateType();\n }\n this.bindParser(ctx);\n this.appendValue(ctx.rule);\n if (ctx.parent && ctx.parent !== parent) {\n this.rmSubRuleData(ctx);\n }\n }\n this.parseEmit(ctx);\n this.syncProp(ctx);\n ctx.parent = parent || null;\n ctx.root = rules;\n this.setCtx(ctx);\n\n if (!isCopy && !isInit) {\n this.effect(ctx, 'load');\n this.targetHook(ctx, 'load');\n }\n\n this.effect(ctx, 'created');\n\n const _load = ctx.loadChildrenPending()\n ctx.parser.loadChildren === false || loadChildren(_load, ctx);\n\n if (!parent) {\n const _preIndex = preIndex(index);\n if (_preIndex > -1 || !index) {\n this.sort.splice(_preIndex + 1, 0, ctx.id);\n } else {\n this.sort.push(ctx.id);\n }\n }\n\n const r = ctx.rule;\n if (!ctx.updated) {\n ctx.updated = true;\n if (is.Function(r.update)) {\n this.bus.$once('load-end', () => {\n this.refreshUpdate(ctx, r.value, 'init');\n });\n }\n this.effect(ctx, 'loaded');\n }\n\n // if (ctx.input)\n // Object.defineProperty(r, 'value', this.valueHandle(ctx));\n if (this.refreshControl(ctx)) this.cycleLoad = true;\n return ctx;\n }).filter(v => !!v);\n if (parent) {\n parent.children = ctxs;\n }\n },\n refreshControl(ctx) {\n return ctx.input && ctx.rule.control && this.useCtrl(ctx);\n },\n useCtrl(ctx) {\n const controls = getCtrl(ctx), validate = [], api = this.api;\n if (!controls.length) return false;\n\n for (let i = 0; i < controls.length; i++) {\n const control = controls[i], handleFn = control.handle || function (val) {\n return ((condition[control.condition || '=='] || condition['=='])(val, control.value));\n };\n if (!is.trueArray(control.rule)) continue;\n const data = {\n ...control,\n valid: invoke(() => handleFn(ctx.rule.value, api)),\n ctrl: findCtrl(ctx, control.rule),\n isHidden: is.String(control.rule[0]),\n };\n if ((data.valid && data.ctrl) || (!data.valid && !data.ctrl && !data.isHidden)) continue;\n validate.push(data);\n }\n if (!validate.length) return false;\n\n const hideLst = [];\n let flag = false;\n this.deferSyncValue(() => {\n validate.reverse().forEach(({isHidden, valid, rule, prepend, append, child, ctrl, method}) => {\n if (isHidden) {\n valid ? ctx.ctrlRule.push({\n __ctrl: true,\n children: rule,\n valid\n })\n : (ctrl && ctx.ctrlRule.splice(ctx.ctrlRule.indexOf(ctrl) >>> 0, 1));\n hideLst[valid ? 'push' : 'unshift'](() => {\n if (method === 'disabled' || method === 'enabled') {\n this.api.disabled(!valid, rule);\n } else if (method === 'display' || method === 'show') {\n this.api.display(valid, rule);\n } else if (method === 'required') {\n rule.forEach(item => {\n this.api.setEffect(item, 'required', valid);\n })\n if (!valid) {\n this.api.clearValidateState(rule);\n }\n } else if (method === 'if') {\n this.api.hidden(!valid, rule);\n } else {\n this.api.hidden(!valid, rule);\n }\n });\n return;\n }\n if (valid) {\n flag = true;\n const ruleCon = {\n type: 'fragment',\n native: true,\n __ctrl: true,\n children: rule,\n }\n ctx.ctrlRule.push(ruleCon);\n this.bus.$once('load-start', () => {\n // this.cycleLoad = true;\n if (prepend) {\n api.prepend(ruleCon, prepend, child)\n } else if (append || child) {\n api.append(ruleCon, append || ctx.id, child)\n } else {\n ctx.root.splice(ctx.root.indexOf(ctx.origin) + 1, 0, ruleCon);\n }\n });\n } else {\n ctx.ctrlRule.splice(ctx.ctrlRule.indexOf(ctrl), 1);\n const ctrlCtx = byCtx(ctrl);\n ctrlCtx && ctrlCtx.rm();\n }\n });\n });\n if (hideLst.length) {\n if (this.loading) {\n hideLst.length && this.bus.$once('load-end', () => {\n hideLst.forEach(v => v());\n });\n } else {\n hideLst.length && nextTick(() => {\n hideLst.forEach(v => v());\n });\n }\n }\n this.vm.emit('control', ctx.origin, this.api);\n this.effect(ctx, 'control');\n return flag;\n },\n reloadRule(rules) {\n return this._reloadRule(rules);\n },\n _reloadRule(rules) {\n // console.warn('%c reload', 'color:red');\n if (!rules) rules = this.rules;\n\n const ctxs = {...this.ctxs};\n\n this.clearNextTick();\n this.initData(rules);\n this.fc.rules = rules;\n\n this.deferSyncValue(() => {\n this.bus.$once('load-end', () => {\n Object.keys(ctxs).filter(id => this.ctxs[id] === undefined)\n .forEach(id => this.rmCtx(ctxs[id]));\n this.$render.clearCacheAll();\n });\n this.reloading = true;\n this.loadRule();\n this.reloading = false;\n this.refresh();\n this.bus.$emit('reloading', this.api);\n });\n\n this.bus.$off('next-tick', this.nextReload);\n this.bus.$once('next-tick', this.nextReload);\n this.bus.$emit('update', this.api);\n },\n //todo 组件生成全部通过 alias\n refresh() {\n this.vm.setupState.refresh();\n },\n });\n}\n\nfunction fullRule(rule) {\n const def = baseRule();\n\n Object.keys(def).forEach(k => {\n if (!hasProperty(rule, k)) rule[k] = def[k];\n });\n return rule;\n}\n\nfunction getCtrl(ctx) {\n const control = ctx.rule.control || [];\n if (is.Object(control)) return [control];\n else return control;\n}\n\nfunction findCtrl(ctx, rule) {\n for (let i = 0; i < ctx.ctrlRule.length; i++) {\n const ctrl = ctx.ctrlRule[i];\n if (ctrl.children === rule)\n return ctrl;\n }\n}\n\nfunction isCtrl(ctx) {\n return !!ctx.rule.__ctrl;\n}\n","import extend from '@form-create/utils/lib/extend';\nimport {$set} from '@form-create/utils/lib/modify';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {invoke} from '../frame/util';\nimport {nextTick, reactive, toRef} from 'vue';\n\nexport default function useInput(Handler) {\n extend(Handler.prototype, {\n setValue(ctx, value, formValue, setFlag) {\n if (ctx.deleted) return;\n ctx.rule.value = value;\n this.changeStatus = true;\n this.nextRefresh();\n this.$render.clearCache(ctx);\n this.setFormData(ctx, formValue);\n this.syncValue();\n this.valueChange(ctx, value);\n this.vm.emit('change', ctx.field, value, ctx.origin, this.api, setFlag || false);\n this.effect(ctx, 'value');\n this.targetHook(ctx, 'value', {value});\n this.emitEvent('change', ctx.field, value, {\n rule: ctx.origin,\n api: this.api,\n setFlag: setFlag || false\n })\n if (setFlag) {\n nextTick(() => {\n nextTick(() => {\n nextTick(() => {\n this.api.clearValidateState(ctx.id);\n });\n });\n });\n }\n this.$manager.fieldChange(ctx, value, formValue, setFlag);\n },\n onInput(ctx, value) {\n let val;\n if (ctx.input && (this.isQuote(ctx, val = ctx.parser.toValue(value, ctx)) || this.isChange(ctx, value))) {\n this.setValue(ctx, val, value);\n }\n },\n onUpdateValue(ctx, data) {\n this.deferSyncValue(() => {\n const group = ctx.getParentGroup();\n const subForm = group ? this.subRuleData[group.id] : null;\n const subData = {};\n Object.keys(data || {}).forEach(k => {\n if (subForm && hasProperty(subForm, k)) {\n subData[k] = data[k];\n } else if (hasProperty(this.api.form, k)) {\n this.api.form[k] = data[k];\n } else if (this.api.top !== this.api && hasProperty(this.api.top.form, k)) {\n this.api.top.form[k] = data[k];\n }\n });\n if (Object.keys(subData).length) {\n this.api.setChildrenFormData(group.rule, subData);\n }\n })\n },\n onBaseInput(ctx, value) {\n this.setFormData(ctx, value);\n ctx.modelValue = value;\n this.nextRefresh();\n this.$render.clearCache(ctx);\n },\n setFormData(ctx, value) {\n ctx.modelValue = value;\n const group = ctx.getParentGroup();\n if (group) {\n if (!this.subRuleData[group.id]) {\n this.subRuleData[group.id] = {};\n }\n this.subRuleData[group.id][ctx.field] = ctx.rule.value;\n }\n $set(this.formData, ctx.id, value);\n },\n rmSubRuleData(ctx) {\n const group = ctx.getParentGroup();\n if (group && this.subRuleData[group.id]) {\n delete this.subRuleData[group.id][ctx.field];\n }\n },\n getFormData(ctx) {\n return this.formData[ctx.id];\n },\n syncForm() {\n const data = reactive({});\n const fields = this.fields();\n const ignoreFields = [];\n if (this.options.appendValue !== false) {\n Object.keys(this.appendData).reduce((initial, field) => {\n if (fields.indexOf(field) === -1) {\n initial[field] = toRef(this.appendData, field);\n }\n return initial;\n }, data);\n }\n fields.reduce((initial, field) => {\n let ctx = (this.fieldCtx[field] || []).filter(ctx => !this.isIgnore(ctx))[0];\n if (!ctx) {\n ctx = this.fieldCtx[field][0];\n ignoreFields.push(field);\n }\n initial[field] = toRef(ctx.rule, 'value');\n return initial;\n }, data);\n this.form = data;\n this.ignoreFields = ignoreFields;\n this.syncValue();\n },\n isIgnore(ctx) {\n return ctx.rule.ignore === true || ((ctx.rule.ignore === 'hidden' || this.options.ignoreHiddenFields) && ctx.hasHidden());\n },\n appendValue(rule) {\n if ((!rule.field || !hasProperty(this.appendData, rule.field)) && (!is.Undef(rule.value) || !this.options.forceCoverValue)) {\n return;\n }\n rule.value = this.appendData[rule.field];\n delete this.appendData[rule.field];\n },\n addSubForm(ctx, subForm) {\n this.subForm[ctx.id] = subForm;\n },\n deferSyncValue(fn, sync) {\n if (!this.deferSyncFn) {\n this.deferSyncFn = fn;\n }\n if (!this.deferSyncFn.sync) {\n this.deferSyncFn.sync = sync;\n }\n invoke(fn);\n if (this.deferSyncFn === fn) {\n this.deferSyncFn = null;\n if (fn.sync) {\n this.syncForm();\n }\n }\n },\n syncValue() {\n if (this.deferSyncFn) {\n return this.deferSyncFn.sync = true;\n }\n const data = {};\n Object.keys(this.form).forEach(k => {\n if (this.ignoreFields.indexOf(k) === -1) {\n data[k] = this.form[k];\n }\n });\n this.vm.setupState.updateValue(data);\n },\n isChange(ctx, value) {\n return JSON.stringify(this.getFormData(ctx), strFn) !== JSON.stringify(value, strFn);\n },\n isQuote(ctx, value) {\n return (value instanceof Function || is.Object(value) || Array.isArray(value)) && value === ctx.rule.value;\n },\n refreshUpdate(ctx, val, origin, field) {\n if (is.Function(ctx.rule.update)) {\n const state = invoke(() => ctx.rule.update(val, ctx.origin, this.api, {\n origin: origin || 'change',\n linkField: field\n }));\n if (state === undefined) return;\n ctx.rule.hidden = state === true;\n }\n },\n valueChange(ctx, val) {\n this.refreshRule(ctx, val);\n this.bus.$emit('change-' + ctx.field, val);\n },\n refreshRule(ctx, val, origin, field) {\n if (this.refreshControl(ctx)) {\n this.$render.clearCacheAll();\n this.loadRule();\n this.bus.$emit('update', this.api);\n this.refresh();\n }\n this.refreshUpdate(ctx, val, origin, field);\n },\n appendLink(ctx) {\n const link = ctx.rule.link;\n is.trueArray(link) && link.forEach(field => {\n const fn = () => this.refreshRule(ctx, ctx.rule.value, 'link', field);\n\n this.bus.$on('change-' + field, fn);\n ctx.linkOn.push(() => this.bus.$off('change-' + field, fn));\n });\n },\n fields() {\n return Object.keys(this.fieldCtx);\n },\n });\n}\n\nfunction strFn(key, val) {\n return typeof val === 'function' ? '' + val : val;\n}\n","const BaseParser = {\n init(ctx) {\n },\n toFormValue(value, ctx) {\n return value\n },\n toValue(formValue, ctx) {\n return formValue;\n },\n mounted(ctx) {\n },\n render(children, ctx) {\n if(ctx.$handle.fc.renderDriver && ctx.$handle.fc.renderDriver.defaultRender){\n return ctx.$handle.fc.renderDriver.defaultRender(ctx, children);\n }\n return ctx.$render.defaultRender(ctx, children);\n },\n preview(children, ctx) {\n if(ctx.$handle.fc.renderDriver && ctx.$handle.fc.renderDriver.defaultPreview){\n return ctx.$handle.fc.renderDriver.defaultPreview(ctx, children);\n }\n return this.render(children, ctx);\n },\n mergeProp(ctx) {\n }\n}\n\nexport default BaseParser;\n","import extend from '@form-create/utils/lib/extend';\nimport toCase from '@form-create/utils/lib/tocase';\nimport BaseParser from '../factory/parser';\nimport {$del} from '@form-create/utils/lib/modify';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {condition, deepGet, invoke, convertFieldToConditions} from '../frame/util';\nimport {computed, nextTick, toRef, watch} from 'vue';\nimport {attrs} from '../frame/attrs';\nimport {deepSet} from '@form-create/utils';\nimport toArray from '@form-create/utils/lib/toarray';\n\nconst noneKey = ['field', 'value', 'vm', 'template', 'name', 'config', 'control', 'inject', 'sync', 'payload', 'optionsTo', 'update', 'slotUpdate', 'computed', 'component', 'cache'];\nconst oldValueTag = Symbol('oldValue');\n\nexport default function useContext(Handler) {\n extend(Handler.prototype, {\n getCtx(id) {\n return this.getFieldCtx(id) || this.getNameCtx(id)[0] || this.ctxs[id];\n },\n getCtxs(id) {\n return this.fieldCtx[id] || this.nameCtx[id] || (this.ctxs[id] ? [this.ctxs[id]] : []);\n },\n setIdCtx(ctx, key, type) {\n const field = `${type}Ctx`;\n if (!this[field][key]) {\n this[field][key] = [ctx];\n } else {\n this[field][key].push(ctx);\n }\n },\n rmIdCtx(ctx, key, type) {\n const field = `${type}Ctx`;\n const lst = this[field][key];\n if (!lst) return false;\n const flag = lst.splice(lst.indexOf(ctx) >>> 0, 1).length > 0;\n if (!lst.length) {\n delete this[field][key];\n }\n return flag;\n },\n getFieldCtx(field) {\n return (this.fieldCtx[field] || [])[0];\n },\n getNameCtx(name) {\n return this.nameCtx[name] || [];\n },\n setCtx(ctx) {\n let {id, field, name, rule} = ctx;\n this.ctxs[id] = ctx;\n name && this.setIdCtx(ctx, name, 'name');\n if (!ctx.input) return;\n this.setIdCtx(ctx, field, 'field');\n this.setFormData(ctx, ctx.parser.toFormValue(rule.value, ctx));\n if (this.isMounted && !this.reloading) {\n this.vm.emit('change', ctx.field, rule.value, ctx.origin, this.api, false, true);\n }\n },\n getParser(ctx) {\n const list = this.fc.parsers;\n const renderDriver = this.fc.renderDriver;\n if (renderDriver) {\n const parsers = renderDriver.parsers || {};\n const parser = parsers[ctx.originType] || parsers[toCase(ctx.type)] || parsers[ctx.trueType];\n if (parser) {\n return parser;\n }\n }\n return list[ctx.originType] || list[toCase(ctx.type)] || list[ctx.trueType] || BaseParser;\n },\n bindParser(ctx) {\n ctx.setParser(this.getParser(ctx));\n },\n getType(alias) {\n const map = this.fc.CreateNode.aliasMap;\n const type = map[alias] || map[toCase(alias)] || alias;\n return toCase(type);\n },\n noWatch(fn) {\n if (!this.noWatchFn) {\n this.noWatchFn = fn;\n }\n invoke(fn);\n if (this.noWatchFn === fn) {\n this.noWatchFn = null;\n }\n },\n watchCtx(ctx) {\n const all = attrs();\n all.filter(k => k[0] !== '_' && k[0] !== '$' && noneKey.indexOf(k) === -1).forEach((key) => {\n const ref = toRef(ctx.rule, key);\n const flag = key === 'children';\n ctx.refRule[key] = ref;\n ctx.watch.push(watch(flag ? () => is.Function(ref.value) ? ref.value : [...(ref.value || [])] : () => ref.value, (_, o) => {\n let n = ref.value;\n if (this.isBreakWatch()) return;\n if (flag && ctx.parser.loadChildren === false) {\n this.$render.clearCache(ctx);\n this.nextRefresh();\n return;\n }\n this.watching = true;\n nextTick(() => {\n this.targetHook(ctx, 'watch', {key, oldValue: o, newValue: n});\n });\n if (key === 'hidden' && Boolean(n) !== Boolean(o)) {\n this.$render.clearCacheAll();\n nextTick(() => {\n this.targetHook(ctx, 'hidden', {value: n});\n });\n }\n if ((key === 'ignore' && ctx.input) || (key === 'hidden' && (ctx.rule.ignore === 'hidden' || this.options.ignoreHiddenFields))) {\n this.syncForm();\n } else if (key === 'link') {\n ctx.link();\n return;\n } else if (['props', 'on', 'deep'].indexOf(key) > -1) {\n this.parseInjectEvent(ctx.rule, n || {});\n if (key === 'props' && ctx.input) {\n this.setFormData(ctx, ctx.parser.toFormValue(ctx.rule.value, ctx));\n }\n } else if (key === 'emit') {\n this.parseEmit(ctx);\n } else if (['prefix', 'suffix'].indexOf(key) > -1)\n n && this.loadFn(n, ctx.rule);\n else if (key === 'type') {\n ctx.updateType();\n this.bindParser(ctx);\n } else if (flag) {\n if (is.Function(o)) {\n o = ctx.getPending('children', []);\n }\n if (is.Function(n)) {\n n = ctx.loadChildrenPending();\n }\n this.updateChildren(ctx, n, o);\n }\n this.$render.clearCache(ctx);\n this.refresh();\n this.watching = false;\n }, {deep: !flag, sync: flag}));\n });\n ctx.refRule['__$title'] = computed(() => {\n let title = (typeof ctx.rule.title === 'object' ? ctx.rule.title.title : ctx.rule.title) || '';\n if (title) {\n const match = title.match(/^\\{\\{\\s*\\$t\\.(.+)\\s*\\}\\}$/);\n if (match) {\n title = this.api.t(match[1]);\n }\n }\n return title;\n });\n ctx.refRule['__$info'] = computed(() => {\n let info = (typeof ctx.rule.info === 'object' ? ctx.rule.info.info : ctx.rule.info) || '';\n if (info) {\n const match = info.match(/^\\{\\{\\s*\\$t\\.(.+)\\s*\\}\\}$/);\n if (match) {\n info = this.api.t(match[1]);\n }\n }\n return info;\n });\n ctx.refRule['__$validate'] = computed(() => {\n const t = (msg) => {\n const match = msg.match(/^\\{\\{\\s*\\$t\\.(.+)\\s*\\}\\}$/);\n if (match) {\n return this.api.t(match[1], {title: ctx.refRule?.__$title?.value});\n }\n return msg;\n }\n return toArray(ctx.rule.validate).map(item => {\n const temp = {...item};\n if (temp.message) {\n temp.message = t(temp.message);\n }\n if (is.Function(temp.validator)) {\n const that = ctx;\n temp.validator = function (...args) {\n return item.validator.call({\n that: this,\n id: that.id,\n field: that.field,\n rule: that.rule,\n api: that.$handle.api,\n }, ...args)\n }\n }\n if (temp.adapter) {\n if (typeof temp.error === 'object') {\n const msg = {...temp.error};\n Object.keys(msg).forEach((key) => {\n msg[key] = t(msg[key]);\n })\n temp.error = msg;\n }\n return this.adapterValidate(temp, ctx);\n }\n return temp;\n });\n });\n if (ctx.input) {\n const val = toRef(ctx.rule, 'value');\n ctx.watch.push(watch(() => val.value, () => {\n let formValue = ctx.parser.toFormValue(val.value, ctx);\n if (this.isChange(ctx, formValue)) {\n this.setValue(ctx, val.value, formValue, true);\n }\n }));\n }\n this.bus.$once('load-end', () => {\n let computedRule = ctx.rule.computed;\n if (!computedRule) {\n return;\n }\n if (typeof computedRule !== 'object') {\n computedRule = {value: computedRule}\n }\n Object.keys(computedRule).forEach(k => {\n const computedValue = computed(() => {\n const item = computedRule[k];\n if (!item) return undefined;\n const value = this.compute(ctx, item);\n if ((item.linkage || item.linkageVariable) && value === oldValueTag) {\n return oldValueTag;\n }\n return value;\n });\n const callback = (n) => {\n if (k === 'value') {\n this.onInput(ctx, n);\n } else if (k[0] === '$') {\n this.api.setEffect(ctx.id, k, n);\n } else {\n deepSet(ctx.rule, k, n);\n }\n };\n if (k === 'value' ? [undefined, null, ''].indexOf(ctx.rule.value) > -1 : computedValue.value !== deepGet(ctx.rule, k)) {\n callback(computedValue.value);\n }\n ctx.watch.push(watch(computedValue, (n) => {\n if(n === oldValueTag) {\n return ;\n }\n setTimeout(() => {\n callback(n);\n });\n }, {deep: true}));\n });\n\n });\n this.watchEffect(ctx);\n },\n adapterValidate(validate, ctx) {\n const validator = (value, callback) => {\n const before = validate.beforeValidate && invoke(() => validate.beforeValidate({\n value,\n api: this.api,\n validate,\n rule: ctx.rule\n }));\n if (before === false) {\n callback();\n } else {\n const key = this.validator(ctx, value, validate);\n if (!key) {\n if (validate.validator) {\n const res = validate.validator && invoke(() => validate.validator(value, callback));\n if (res && is.Function(res.then)) {\n res.then(() => callback()).catch((e) => callback(e));\n }\n } else {\n callback();\n }\n } else {\n let message = '';\n if (typeof validate.error === 'object') {\n message = validate.error[key] || validate.error.default;\n }\n if (!message && typeof validate.message === 'string') {\n message = validate.message;\n }\n if (!message) {\n message = this.getValidateMessage(ctx, {key, rule: validate[key]});\n }\n callback(message);\n }\n }\n }\n return this.$manager.adapterValidate({\n required: validate.required,\n message: validate.message,\n trigger: validate.trigger,\n }, validator);\n },\n getValidateMessage(ctx, invalid) {\n const formatRule = Array.isArray(invalid.rule) ? invalid.rule.join(',') : ('' + invalid.rule);\n return this.api.t(invalid.key === 'required' ? invalid.key : ('validate.' + invalid.key), {\n [invalid.key]: formatRule,\n title: ctx.refRule?.__$title?.value\n });\n },\n validator(ctx, value, validate) {\n const isEmpty = is.empty(value);\n if (isEmpty) {\n if (validate.required) {\n return 'required'\n }\n return;\n }\n for (const [key, rule] of Object.entries(validate)) {\n switch (key) {\n case 'len':\n case 'maxLen':\n case 'minLen':\n const check = (val) => {\n if (key === 'len') {\n return val === rule;\n } else if (key === 'maxLen') {\n return val <= rule;\n } else {\n return val >= rule;\n }\n }\n if (Array.isArray(value)) {\n if (!check(value.length)) {\n return key;\n }\n } else if (typeof value === 'object') {\n return key;\n } else if (!check(('' + value).length)) {\n return key;\n }\n break;\n case 'pattern':\n const reg = typeof rule === 'string' ? new RegExp(rule) : rule;\n if (!reg.test('' + value)) {\n return key;\n }\n break;\n case 'uppercase':\n if (rule && (typeof value !== 'string' || !/^[A-Z]*$/.test(value))) {\n return key;\n }\n break;\n case 'lowercase':\n if (rule && (typeof value !== 'string' || !/^[a-z]*$/.test(value))) {\n return key;\n }\n break;\n case 'min':\n case 'max':\n case 'positive':\n case 'negative':\n case 'integer':\n case 'number':\n const num = Number(value);\n if (Number.isNaN(num)) {\n return key;\n }\n if (key === 'min' && num < rule) {\n return key;\n }\n if (key === 'max' && num > rule) {\n return key;\n }\n if (key === 'positive' && num <= 0) {\n return key;\n }\n if (key === 'negative' && num >= 0) {\n return key;\n }\n if (key === 'integer' && !Number.isInteger(num)) {\n return key;\n }\n break;\n case 'equal':\n if (value !== rule) {\n return key;\n }\n break;\n case 'enum':\n if (Array.isArray(rule) && !rule.includes(value)) {\n return key;\n }\n break;\n case 'hasKeys':\n if (typeof value !== 'object' || Array.isArray(rule) && rule.some(key => !(key in value))) {\n return key;\n }\n break;\n case 'email':\n const regexEmail = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n if (!regexEmail.test('' + value)) {\n return key;\n }\n break;\n case 'url':\n const regexUrl = new RegExp(\n '^(?!mailto:)(?:(?:http|https|ftp)://)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-?)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-?)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?$',\n 'i'\n );\n if (!regexUrl.test('' + value)) {\n return key;\n }\n break;\n case 'ip':\n const regexIp =\n /^(2(5[0-5]{1}|[0-4]\\d{1})|[0-1]?\\d{1,2})(\\.(2(5[0-5]{1}|[0-4]\\d{1})|[0-1]?\\d{1,2})){3}$/;\n if (!regexIp.test('' + value)) {\n return key;\n }\n break;\n case 'phone':\n const regexPhone = /^(?:(?:\\+|00)86)?1[3-9]\\d{9}$/;\n if (!regexPhone.test('' + value)) {\n return key;\n }\n break;\n case 'computed':\n if (!this.compute(ctx, rule)) {\n return key;\n }\n break;\n default:\n break;\n }\n }\n },\n compute(ctx, item) {\n let fn;\n if (typeof item === 'object') {\n const group = ctx.getParentGroup();\n const checkCondition = (item) => {\n item = Array.isArray(item) ? {mode: 'AND', group: item} : item;\n if (!is.trueArray(item.group)) {\n return true;\n }\n const or = item.mode === 'OR';\n let valid = true;\n for (let i = 0; i < item.group.length; i++) {\n const one = item.group[i];\n let flag;\n let field = null;\n let variableVal = null;\n if (one.variable) {\n variableVal = this.fc.getLoadData(one.variable);\n } else if (one.field) {\n field = convertFieldToConditions(one.field || '');\n } else if (!one.mode) {\n return true;\n }\n let compare = one.compare;\n if (compare) {\n compare = convertFieldToConditions(compare || '');\n }\n if (one.mode) {\n flag = checkCondition(one);\n } else if (!condition[one.condition]) {\n flag = false;\n } else if (is.Function(one.handler)) {\n flag = invoke(() => one.handler(this.api, ctx.rule));\n } else {\n flag = invoke(() => (new Function('$condition', '$variableVal', '$val', '$form', '$scope', '$group', '$rule', `with($form){with($scope){with(this){with($group){ return $condition['${one.condition}'](${one.variable ? '$variableVal' : field}, ${compare ? compare : '$val'}); }}}}`)).call(this.api.form, condition, variableVal, one.value, this.api.top.form, this.api.top === this.api.scope ? {} : this.api.scope.form, group ? (this.subRuleData[group.id] || {}) : {}, ctx.rule));\n }\n if (or && flag) {\n return true;\n }\n if (!or) {\n valid = valid && flag;\n }\n }\n return or ? false : valid;\n }\n let val = checkCondition(item);\n val = item.invert === true ? !val : val;\n if (item.linkage) {\n return val ? invoke(() => this.computeValue(item.linkage, ctx, group), undefined) : oldValueTag;\n } else if(item.linkageVariable) {\n return val ? invoke(() => this.fc.getLoadData(item.linkageVariable), undefined) : oldValueTag;\n }\n return val;\n } else if (is.Function(item)) {\n fn = () => item(this.api.form, this.api, ctx.rule);\n } else {\n const group = ctx.getParentGroup();\n fn = () => this.computeValue(item, ctx, group);\n }\n return invoke(fn, undefined);\n },\n computeValue(str, ctx, group) {\n const that = this;\n const formulas = Object.keys(this.fc.formulas).reduce((obj, k) => {\n obj[k] = function (...args) {\n return that.fc.formulas[k].call({\n that: this,\n rule: ctx.rule,\n api: that.api,\n fc: that.fc\n }, ...args);\n }\n return obj;\n }, {})\n return invoke(() => (new Function('$formulas', '$form', '$scope', '$group', '$rule', '$api', `with($form){with($scope){with(this){with($group){with($formulas){ return ${str} }}}}}`)).call(this.api.form, formulas, this.api.top.form, this.api.top === this.api.scope ? {} : this.api.scope.form, group ? (this.subRuleData[group.id] || {}) : {}, ctx.rule, this.api), undefined);\n },\n updateChildren(ctx, n, o) {\n this.deferSyncValue(() => {\n o && o.forEach((child) => {\n if ((n || []).indexOf(child) === -1 && child && !is.String(child) && child.__fc__ && child.__fc__.parent === ctx) {\n this.rmCtx(child.__fc__);\n }\n });\n if (is.trueArray(n)) {\n this.loadChildren(n, ctx);\n this.bus.$emit('update', this.api);\n }\n });\n },\n rmSub(sub) {\n is.trueArray(sub) && sub.forEach(r => {\n r && r.__fc__ && this.rmCtx(r.__fc__);\n })\n },\n rmCtx(ctx) {\n if (ctx.deleted) return;\n const {id, field, input, name} = ctx;\n\n $del(this.ctxs, id);\n $del(this.formData, id);\n $del(this.subForm, id);\n $del(this.vm.setupState.ctxInject, id);\n const group = ctx.getParentGroup();\n if (group && this.subRuleData[group.id]) {\n $del(this.subRuleData[group.id], field);\n }\n if (ctx.group) {\n $del(this.subRuleData, id);\n }\n\n input && this.rmIdCtx(ctx, field, 'field');\n name && this.rmIdCtx(ctx, name, 'name');\n\n if (input && !hasProperty(this.fieldCtx, field)) {\n $del(this.form, field);\n }\n\n this.deferSyncValue(() => {\n if (!this.reloading) {\n if (ctx.parser.loadChildren !== false) {\n const children = ctx.getPending('children', ctx.rule.children);\n if (is.trueArray(children)) {\n children.forEach(h => h && h.__fc__ && this.rmCtx(h.__fc__));\n }\n }\n if (ctx.root === this.rules) {\n this.vm.setupState.renderRule();\n }\n }\n }, input);\n\n const index = this.sort.indexOf(id);\n if (index > -1) {\n this.sort.splice(index, 1);\n }\n\n this.$render.clearCache(ctx);\n ctx.delete();\n this.effect(ctx, 'deleted');\n this.targetHook(ctx, 'deleted');\n input && !this.fieldCtx[field] && this.vm.emit('remove-field', field, ctx.rule, this.api);\n ctx.rule.__ctrl || this.vm.emit('remove-rule', ctx.rule, this.api);\n return ctx;\n },\n })\n}\n","import Api from '../frame/api';\nimport Render from '../render';\nimport extend from '@form-create/utils/lib/extend';\nimport {funcProxy, invoke} from '../frame/util';\nimport useInject from './inject';\nimport usePage from './page';\nimport useRender from './render';\nimport useLoader from './loader';\nimport useInput from './input';\nimport useContext from './context';\nimport useLifecycle from './lifecycle';\nimport useEffect from './effect';\nimport {reactive} from 'vue';\nimport is from '@form-create/utils/lib/type';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\n\n\nexport default function Handler(fc) {\n funcProxy(this, {\n options() {\n return fc.options.value || {};\n },\n bus() {\n return fc.bus;\n },\n preview() {\n if (fc.vm.props.preview != null) {\n return fc.vm.props.preview;\n } else if (fc.vm.setupState.parent && fc.vm.setupState.parent.props.preview != null) {\n return fc.vm.setupState.parent.props.preview;\n }\n return fc.options.value.preview || false;\n }\n })\n extend(this, {\n fc,\n vm: fc.vm,\n watching: false,\n loading: false,\n reloading: false,\n noWatchFn: null,\n deferSyncFn: null,\n isMounted: false,\n formData: reactive({}),\n subRuleData: reactive({}),\n subForm: {},\n form: reactive({}),\n appendData: {},\n ignoreFields: [],\n providers: {},\n cycleLoad: null,\n loadedId: 1,\n nextTick: null,\n changeStatus: false,\n pageEnd: true,\n nextReload: () => {\n this.lifecycle('reload');\n }\n });\n\n this.initData(fc.rules);\n\n this.$manager = new fc.manager(this);\n this.$render = new Render(this);\n this.api = fc.extendApiFn.reduce((api, fn) => {\n const extendApi = invoke(() => fn(api, this));\n if (extendApi && extendApi !== api) {\n extend(api, extendApi);\n }\n return api;\n }, Api(this));\n}\n\nextend(Handler.prototype, {\n initData(rules) {\n extend(this, {\n ctxs: {},\n fieldCtx: {},\n nameCtx: {},\n sort: [],\n rules,\n });\n },\n init() {\n this.updateAppendData();\n this.useProvider();\n this.usePage();\n this.loadRule();\n this.$manager.__init();\n this.lifecycle('created');\n },\n updateAppendData() {\n this.appendData = {...deepCopy(this.options.formData || {}), ...(this.fc.vm.props.modelValue || {}), ...this.appendData};\n },\n isBreakWatch() {\n return this.loading || this.noWatchFn || this.reloading;\n },\n globalBeforeFetch(opt) {\n return new Promise((resolve, reject) => {\n const source = this.options.beforeFetch && invoke(() => this.options.beforeFetch(opt, {api: this.api}));\n if (source && is.Function(source.then)) {\n source.then(resolve).catch(reject);\n } else {\n resolve();\n }\n });\n },\n beforeFetch(opt) {\n return new Promise((resolve, reject) => {\n const res = opt && opt.beforeFetch && invoke(() => opt.beforeFetch(opt, {api: this.api}));\n if (res && is.Function(res.then)) {\n res.then(resolve).catch(reject);\n } else if (res === false) {\n reject();\n } else {\n resolve();\n }\n }).then(() => {\n return this.globalBeforeFetch(opt);\n });\n },\n beforeSubmit(formData) {\n return new Promise((resolve, reject) => {\n const res = this.options.beforeSubmit && invoke(() => this.options.beforeSubmit(formData, {api: this.api}));\n if (res && is.Function(res.then)) {\n res.then(resolve).catch(reject);\n } else if (res === false) {\n reject();\n } else {\n resolve();\n }\n });\n }\n})\n\nuseInject(Handler);\nusePage(Handler);\nuseRender(Handler);\nuseLoader(Handler);\nuseInput(Handler);\nuseContext(Handler);\nuseLifecycle(Handler);\nuseEffect(Handler);\n","import extend from '@form-create/utils/lib/extend';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport toLine from '@form-create/utils/lib/toline';\nimport {deepGet, extractVar, invoke, parseFn, parseTemplateToTree} from '../frame/util';\nimport toCase from '@form-create/utils/lib/tocase';\n\n\nexport default function useInject(Handler) {\n extend(Handler.prototype, {\n parseInjectEvent(rule, on) {\n const inject = rule.inject || this.options.injectEvent;\n return this.parseEventLst(rule, on, inject);\n },\n parseEventLst(rule, data, inject, deep) {\n Object.keys(data).forEach(k => {\n const fn = this.parseEvent(rule, data[k], inject, deep);\n if (fn) {\n data[k] = fn;\n }\n });\n return data;\n },\n parseEvent(rule, fn, inject, deep) {\n if (is.Function(fn) && ((inject !== false && !is.Undef(inject)) || fn.__inject)) {\n return this.inject(rule, fn, inject)\n } else if (!deep && Array.isArray(fn) && fn[0] && (is.String(fn[0]) || is.Function(fn[0]))) {\n return this.parseEventLst(rule, fn, inject, true);\n } else if (is.String(fn)) {\n const val = parseFn(fn);\n if (val && fn !== val) {\n return val.__inject ? this.parseEvent(rule, val, inject, true) : val;\n }\n }\n },\n parseEmit(ctx) {\n let event = {}, rule = ctx.rule, {emitPrefix, field, name, inject} = rule;\n let emit = rule.emit || [];\n if (is.trueArray(emit)) {\n emit.forEach(eventName => {\n if (!eventName) return;\n let eventInject;\n let emitKey = emitPrefix || field || name;\n if (is.Object(eventName)) {\n eventInject = eventName.inject;\n eventName = eventName.name;\n emitKey = eventName.prefix || emitKey;\n }\n if (emitKey) {\n const fieldKey = toLine(`${emitKey}-${eventName}`);\n const fn = (...arg) => {\n if (this.vm.emitsOptions && !this.vm.emitsOptions[fieldKey]) {\n this.vm.emitsOptions[fieldKey] = null;\n }\n this.vm.emit(fieldKey, ...arg);\n this.vm.emit('emit-event', fieldKey, ...arg);\n this.bus.$emit(fieldKey, ...arg);\n };\n fn.__emit = true;\n\n if (!eventInject && inject === false) {\n event[toCase(eventName)] = fn;\n } else {\n let _inject = eventInject || inject || this.options.injectEvent;\n event[toCase(eventName)] = is.Undef(_inject) ? fn : this.inject(rule, fn, _inject);\n }\n }\n\n });\n }\n ctx.computed.on = event;\n return event;\n },\n getInjectData(self, inject) {\n const $api = self.__fc__ && self.__fc__.$api;\n const vm = (self.__fc__ && self.__fc__.$handle.vm) || this.vm;\n const {option, rule} = vm.props;\n return {\n $f: $api || this.api,\n api: $api || this.api,\n rule,\n self: self.__origin__,\n option,\n inject\n };\n },\n inject(self, _fn, inject) {\n if (_fn.__origin) {\n if (this.watching && !this.loading)\n return _fn;\n _fn = _fn.__origin;\n }\n\n const h = this;\n\n const fn = function (...args) {\n const data = h.getInjectData(self, inject);\n data.args = [...args];\n args.unshift(data);\n return _fn.apply(this, args);\n };\n fn.__origin = _fn;\n fn.__json = _fn.__json;\n return fn;\n },\n loadStrVar(str, get, group) {\n if (str && typeof str === 'string' && str.indexOf('{{') > -1 && str.indexOf('}}') > -1) {\n const tmp = str;\n const vars = extractVar(str);\n\n const getValue = (field) => {\n let flag = false;\n let val;\n if (group && field.indexOf('$form.') === 0) {\n const _split = field.split('.');\n _split.shift();\n if (hasProperty(group.value, _split[0])) {\n flag = true;\n val = get ? get({\n id: '$form.' + _split[0] + '_' + group.rule.__fc__.id,\n getValue: () => {\n return deepGet(group.value, _split);\n }\n }) : deepGet(group.value, _split);\n }\n }\n if (!flag) {\n val = get ? get(field) : this.fc.getLoadData(field)\n }\n return val;\n }\n\n const treeToVal = (tree) => {\n const fields = [];\n tree.forEach(item => {\n if (item.key) {\n fields.push(item.key);\n } else if (item.children) {\n fields.push(treeToVal(item.children));\n }\n })\n let flag = false;\n fields.forEach((field, idx) => {\n if (field != null && (field.indexOf('\\'') === 0 || field.indexOf('\"') === 0)) {\n fields[idx] = field.slice(1, -1)\n flag = true;\n }\n })\n if (fields.length === 1 && (flag || !isNaN(Number(fields[0])))) {\n return fields[0];\n }\n return getValue(fields.join('.'));\n }\n\n let lastVal;\n vars.forEach(v => {\n const split = v.split('||');\n const field = split[0].trim();\n if (field) {\n const def = (split[1] || '').trim();\n const tree = parseTemplateToTree(field);\n let val = invoke(() => treeToVal(tree));\n if ((val == null || val === '') && split.length > 1) {\n val = def;\n }\n lastVal = val;\n str = str.replaceAll(`{{${v}}}`, val == null ? '' : val);\n }\n })\n if (vars.length === 1 && tmp === `{{${vars[0]}}}`) {\n return lastVal;\n }\n }\n return str;\n },\n loadFetchVar(options, get, rule) {\n let group;\n if (rule && rule.__fc__) {\n group = rule.__fc__.getParentGroup();\n }\n const loadVal = str => {\n return this.loadStrVar(str, get, group ? {rule, value: (this.subRuleData[group.id] || {})} : null);\n }\n\n options.action = loadVal(options.action || '');\n\n ['headers', 'data', 'query'].forEach(key => {\n if (options[key]) {\n const data = Array.isArray(options[key]) ? [] : {};\n Object.keys(options[key]).forEach(k => {\n data[loadVal(k)] = loadVal(options[key][k]);\n });\n options[key] = data;\n }\n });\n\n return options;\n }\n })\n}\n","import extend from '@form-create/utils/lib/extend';\n\n\nexport default function useRender(Handler) {\n extend(Handler.prototype, {\n clearNextTick() {\n this.nextTick && clearTimeout(this.nextTick);\n this.nextTick = null;\n },\n bindNextTick(fn) {\n this.clearNextTick();\n this.nextTick = setTimeout(() => {\n fn()\n this.nextTick = null;\n }, 10);\n },\n render() {\n // console.warn('%c render', 'color:green');\n ++this.loadedId;\n\n if (this.vm.setupState.unique > 0)\n return this.$render.render();\n else {\n this.vm.setupState.unique = 1;\n return [];\n }\n },\n });\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {invoke, parseFn} from '../frame/util';\nimport toCase from '@form-create/utils/lib/tocase';\nimport {upper} from '@form-create/utils/lib/toline';\n\n\nexport default function useLifecycle(Handler) {\n extend(Handler.prototype, {\n mounted() {\n const _mounted = () => {\n this.isMounted = true;\n this.lifecycle('mounted');\n }\n if (this.pageEnd) {\n _mounted();\n } else {\n this.bus.$once('page-end', _mounted);\n }\n },\n lifecycle(name) {\n this.fc.targetFormDriver(name, this.api, this.fc);\n this.vm.emit(name, this.api);\n this.emitEvent(name, this.api);\n },\n emitEvent(name, ...args) {\n const _fn = this.options[name] || this.options[toCase('on-' + name)];\n if (_fn) {\n const fn = parseFn(_fn);\n is.Function(fn) && invoke(() => fn(...args));\n }\n this.bus.$emit(name, ...args);\n },\n targetHook(ctx, name, args) {\n let hook = ctx.prop?.hook?.[name];\n\n let run = (on, p) => {\n if (on) {\n on = Array.isArray(on) ? on : [on];\n on.forEach(fn => {\n invoke(() => fn({args: Object.values(args || {}), ...args || {}, self: ctx.rule, rule: ctx.rule, parent: p?.rule, $f: this.api, api: this.api, option: this.vm.props.option}));\n });\n }\n }\n run(hook);\n let deepName = 'deep' + upper(name);\n let parent = ctx.parent;\n while (parent) {\n let deepHook = parent.prop?.hook?.[deepName];\n run(deepHook, parent);\n parent = parent.parent;\n }\n }\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {mergeRule} from '../frame/util';\nimport {watch} from 'vue';\n\n\nexport default function useEffect(Handler) {\n extend(Handler.prototype, {\n useProvider() {\n const ps = this.fc.providers;\n Object.keys(ps).forEach(k => {\n let prop = ps[k];\n if (is.Function(prop)) {\n prop = prop(this.fc);\n }\n prop._c = getComponent(prop);\n this.onEffect(prop, k);\n this.providers[k] = prop;\n });\n },\n onEffect(provider, key) {\n const used = [];\n (provider._c || ['*']).forEach(name => {\n const type = name === '*' ? '*' : this.getType(name);\n if (used.indexOf(type) > -1) return;\n used.push(type);\n this.bus.$on(`p:${key || provider.name}:${type}:${provider.input ? 1 : 0}`, (event, args) => {\n provider[event] && provider[event](...args);\n });\n });\n provider._used = used;\n },\n watchEffect(ctx) {\n let effect = {\n required: () => {\n return (hasProperty(ctx.rule, '$required') ? ctx.rule['$required'] : ctx.rule?.effect?.required) || false;\n }\n };\n Object.keys(ctx.rule.effect || {}).forEach(k => {\n effect[k] = () => ctx.rule.effect[k];\n })\n Object.keys(ctx.rule).forEach(k => {\n if (k[0] === '$') {\n effect[k.substr(1)] = () => ctx.rule[k];\n }\n })\n Object.keys(effect).forEach(k => {\n ctx.watch.push(watch(effect[k], (n) => {\n this.effect(ctx, 'watch', {[k]: n});\n }, {deep: true}));\n });\n },\n ruleEffect(rule, event, append) {\n this.emitEffect({\n rule,\n input: !!rule.field,\n type: this.getType(rule.type)\n }, event, append);\n },\n effect(ctx, event, custom) {\n this.emitEffect({\n rule: ctx.rule,\n input: ctx.input,\n type: ctx.trueType,\n ctx,\n custom\n }, event);\n },\n getEffect(rule, name) {\n if (hasProperty(rule, '$' + name)) {\n return rule['$' + name];\n }\n if (hasProperty(rule, 'effect') && hasProperty(rule.effect, name))\n return rule.effect[name];\n return undefined;\n },\n emitEffect({ctx, rule, input, type, custom}, event, append) {\n if (!type || ['fcFragment', 'fragment'].indexOf(type) > -1) return;\n const effect = custom ? custom : (Object.keys(rule).reduce((i, k) => {\n if (k[0] === '$') {\n i[k.substr(1)] = rule[k];\n }\n return i;\n }, {...rule.effect || {}}));\n Object.keys(effect).forEach(attr => {\n const p = this.providers[attr];\n if (!p || (p.input && !input)) return;\n let _type;\n if (!p._c) {\n _type = '*';\n } else if (p._used.indexOf(type) > -1) {\n _type = type;\n } else {\n return;\n }\n const data = {value: effect[attr], getValue: () => this.getEffect(rule, attr), ...(append || {})};\n if (ctx) {\n data.getProp = () => ctx.effectData(attr);\n data.clearProp = () => ctx.clearEffectData(attr);\n data.mergeProp = (prop) => mergeRule(data.getProp(), [prop]);\n data.id = ctx.id;\n }\n this.bus.$emit(`p:${attr}:${_type}:${p.input ? 1 : 0}`, event, [data, rule, this.api]);\n });\n }\n });\n}\n\nfunction unique(arr) {\n return arr.filter(function (item, index, arr) {\n return arr.indexOf(item, 0) === index;\n });\n}\n\nfunction getComponent(p) {\n const c = p.components;\n if (Array.isArray(c)) {\n const arr = unique(c.filter(v => v !== '*'));\n return arr.length ? arr : false;\n } else if (is.String(c)) return [c];\n else return false;\n}\n","import {defineComponent} from 'vue';\n\nconst NAME = 'fcFragment';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: ['vnode'],\n render() {\n return this.vnode;\n }\n})\n","import toLine from '@form-create/utils/lib/toline';\nimport toString from '@form-create/utils/lib/tostring';\nimport extend from '@form-create/utils/lib/extend';\nimport {toProps} from '../frame/util';\nimport {createVNode, getCurrentInstance, resolveComponent, resolveDirective, withDirectives} from 'vue';\n\n\nfunction tidyDirectives(directives) {\n return Object.keys(directives).map(n => {\n const data = directives[n];\n const directive = resolveDirective(n);\n if (!directive) return;\n return [\n directive, data.value, data.arg, data.modifiers\n ]\n }).filter(v => !!v);\n}\n\nfunction makeDirective(data, vn) {\n let directives = data.directives;\n if (!directives) return vn;\n if (!Array.isArray(directives)) {\n directives = [directives];\n }\n return withDirectives(vn, directives.reduce((lst, v) => {\n return lst.concat(tidyDirectives(v));\n }, []))\n}\n\nexport function CreateNodeFactory() {\n\n const aliasMap = {};\n\n function CreateNode(handle) {\n this.vm = handle.vm;\n this.handle = handle;\n }\n\n extend(CreateNode.prototype, {\n make(tag, data, children) {\n return makeDirective(data, this.h(tag, toProps(data), children));\n },\n makeComponent(type, data, children) {\n try {\n return makeDirective(data, createVNode(type, toProps(data), children));\n } catch (e) {\n console.error(e);\n return createVNode('');\n }\n },\n h(tag, data, children) {\n const vm = this.vm || getCurrentInstance();\n const isNativeTag = vm.appContext.config.isNativeTag(tag);\n const component = this.handle.fc.prop.components[tag];\n if (!component && isNativeTag) {\n delete data.formCreateInject;\n }\n try{\n return createVNode(component || (isNativeTag ? tag : resolveComponent(tag)), data, children);\n }catch (e){\n console.error(e);\n return createVNode('');\n }\n },\n aliasMap\n });\n\n extend(CreateNode, {\n aliasMap,\n alias(alias, name) {\n aliasMap[alias] = name;\n },\n use(nodes) {\n Object.keys(nodes).forEach((k) => {\n const line = toLine(k);\n const lower = toString(k).toLocaleLowerCase();\n const v = nodes[k];\n CreateNode.alias(k, v);\n [k, line, lower].forEach(n => {\n CreateNode.prototype[n] = function (data, children) {\n return this.make(aliasMap[k] || n, data, children);\n };\n });\n });\n }\n })\n\n return CreateNode;\n}\n","import mergeProps from '@form-create/utils/lib/mergeprops';\nimport unique from '@form-create/utils/lib/unique';\nimport extend from '@form-create/utils/lib/extend';\nimport {invoke} from '../frame/util';\n\nexport function createManager(proto) {\n class CustomManager extends Manager {\n }\n\n Object.assign(CustomManager.prototype, proto);\n return CustomManager;\n}\n\nexport default function Manager(handler) {\n extend(this, {\n $handle: handler,\n vm: handler.vm,\n options: {},\n ref: 'fcForm',\n mergeOptionsRule: {\n normal: ['form', 'row', 'info', 'submitBtn', 'resetBtn']\n }\n });\n this.updateKey();\n this.init();\n}\n\nextend(Manager.prototype, {\n __init() {\n this.$render = this.$handle.$render;\n this.$r = (...args) => this.$render.renderRule(...args);\n },\n updateKey() {\n this.key = unique();\n },\n //TODO interface\n init() {\n },\n update() {\n },\n beforeRender() {\n },\n form() {\n return this.vm.refs[this.ref];\n },\n adapterValidate(validate, validator) {\n validate.validator = (rule, value, callback) => {\n return validator(value, callback);\n }\n return validate;\n },\n getSlot(name) {\n const _fn = (vm) => {\n if (vm) {\n let slot = vm.slots[name];\n if (slot) {\n return slot;\n }\n return _fn(vm.setupState.parent);\n }\n return undefined;\n }\n return _fn(this.vm);\n },\n mergeOptions(args, opt) {\n return mergeProps(args.map(v => this.tidyOptions(v)), opt, this.mergeOptionsRule);\n },\n updateOptions(options) {\n this.$handle.fc.targetFormDriver('updateOptions', options, {handle: this.$handle, api: this.$handle.api})\n this.options = this.mergeOptions([options], this.getDefaultOptions());\n this.update();\n },\n tidyOptions(options) {\n return options;\n },\n tidyRule(ctx) {\n },\n mergeProp(ctx) {\n },\n getDefaultOptions() {\n return {};\n },\n fieldChange(ctx, value, formValue, setFlag) {\n },\n render(children) {\n }\n})\n","import {err} from '@form-create/utils/lib/console';\nimport {byCtx, deepGet, invoke, parseFn} from './util';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport deepSet from '@form-create/utils/lib/deepset';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport toArray from '@form-create/utils/lib/toarray';\nimport debounce from '@form-create/utils/lib/debounce';\nimport {nextTick} from 'vue';\nimport {toPromise} from '@form-create/utils';\n\nconst loadData = function (fc) {\n const loadData = {\n name: 'loadData',\n _fn: [],\n loaded(inject, rule, api) {\n this.deleted(inject);\n nextTick(() => {\n let attrs = toArray(inject.getValue());\n const unwatchs = [];\n attrs.forEach(attr => {\n if (attr && (attr.attr || attr.template)) {\n let fn = (get) => {\n let group;\n if (rule && rule.__fc__) {\n group = rule.__fc__.getParentGroup();\n }\n let value;\n if (attr.template) {\n value = fc.$handle.loadStrVar(attr.template, get, group ? {rule, value: (fc.$handle.subRuleData[group.id] || {})} : null);\n } else if (attr.handler && is.Function(attr.handler)) {\n value = attr.handler(get, rule, api);\n } else {\n value = fc.$handle.loadStrVar(`{{${attr.attr}}}`, get, group ? {rule, value: (fc.$handle.subRuleData[group.id] || {})} : null);\n }\n if ((value == null || value === '') && attr.default != null) {\n value = attr.default;\n }\n if (attr.copy !== false) {\n value = deepCopy(value)\n }\n const _rule = (attr.modify ? rule : inject.getProp());\n if (attr.to === 'child') {\n if (_rule.children) {\n _rule.children[0] = value;\n } else {\n _rule.children = [value];\n }\n } else {\n deepSet(_rule, attr.to || 'options', value);\n }\n api.sync(rule);\n };\n let callback = (get) => fn(get);\n const unwatch = fc.watchLoadData(callback);\n fn = debounce(fn, attr.wait || 300)\n if (attr.watch !== false) {\n unwatchs.push(unwatch);\n } else {\n unwatch();\n }\n }\n })\n this._fn[inject.id] = unwatchs;\n });\n },\n deleted(inject) {\n if (this._fn[inject.id]) {\n this._fn[inject.id].forEach(un => {\n un();\n })\n delete this._fn[inject.id];\n }\n inject.clearProp();\n },\n };\n loadData.watch = loadData.loaded;\n return loadData;\n}\n\nconst t = function (fc) {\n const t = {\n name: 't',\n _fn: [],\n loaded(inject, rule, api) {\n this.deleted(inject);\n let attrs = inject.getValue() || {};\n const unwatchs = [];\n Object.keys(attrs).forEach(key => {\n const attr = attrs[key];\n if (attr) {\n const isObj = typeof attr === 'object';\n let fn = (get) => {\n let value = fc.t(isObj ? attr.attr : attr, isObj ? attr.params : null, get);\n const _rule = ((isObj && attr.modify) ? rule : inject.getProp());\n if (key === 'child') {\n if (_rule.children) {\n _rule.children[0] = value;\n } else {\n _rule.children = [value];\n }\n } else {\n deepSet(_rule, key, value);\n }\n api.sync(rule);\n };\n let callback = (get) => fn(get);\n const unwatch = fc.watchLoadData(callback);\n fn = debounce(fn, attr.wait || 300)\n if (attr.watch !== false) {\n unwatchs.push(unwatch);\n } else {\n unwatch();\n }\n }\n })\n this._fn[inject.id] = unwatchs;\n },\n deleted(inject) {\n if (this._fn[inject.id]) {\n this._fn[inject.id].forEach(un => {\n un();\n })\n delete this._fn[inject.id];\n }\n inject.clearProp();\n },\n };\n t.watch = t.loaded;\n return t;\n}\n\nconst componentValidate = {\n name: 'componentValidate',\n load(attr, rule, api) {\n let options = attr.getValue();\n if (!options || options.method === false) {\n attr.clearProp();\n api.clearValidateState([rule.field]);\n } else {\n if (!is.Object(options)) {\n options = {method: options};\n }\n const method = options.method;\n const validate = {\n ...options,\n validator(...args) {\n const ctx = byCtx(rule);\n if (ctx) {\n return api.exec(ctx.id, is.String(method) ? method : 'formCreateValidate', ...args, {\n attr,\n rule,\n api\n });\n }\n }\n };\n delete validate.method;\n attr.getProp().validate = [validate];\n }\n },\n watch(...args) {\n componentValidate.load(...args);\n }\n};\n\n\nconst fetch = function (fc) {\n\n function parseOpt(option) {\n if (is.String(option)) {\n option = {\n action: option,\n to: 'options'\n }\n }\n return option;\n }\n\n function run(inject, rule, api) {\n let option = inject.value;\n fetchAttr.deleted(inject);\n if (is.Function(option)) {\n option = option(rule, api);\n }\n option = parseOpt(option);\n\n const set = (val) => {\n if (val === undefined) {\n inject.clearProp();\n } else {\n deepSet(inject.getProp(), option.to || 'options', val);\n }\n if (val != null && option && option.key && fc.$handle.options.globalData[option.key]) {\n fc.fetchCache.set(fc.$handle.options.globalData[option.key], {status: true, data: val});\n }\n api.sync(rule);\n }\n\n if (!option || (!option.action && !option.key)) {\n set(undefined);\n return;\n }\n option = deepCopy(option);\n if (!option.to) {\n option.to = 'options';\n }\n\n const onError = option.onError;\n\n const check = () => {\n if (!inject.getValue()) {\n inject.clearProp();\n api.sync(rule);\n return true;\n }\n }\n fetchAttr._fn[inject.id] = fc.watchLoadData(debounce((get, change) => {\n if (change && option.watch === false) {\n return fetchAttr._fn[inject.id]();\n }\n if(option.key) {\n fc.targetRule = rule;\n const res = get('$globalData.' + option.key);\n delete fc.targetRule;\n if (res) {\n if (check()) return;\n set(res);\n }\n return ;\n }\n const _option = fc.$handle.loadFetchVar(deepCopy(option), get, rule);\n const config = {\n headers: {},\n ..._option,\n onSuccess(body, flag) {\n if (check()) return;\n let fn = (v) => flag ? v : (hasProperty(v, 'data') ? v.data : v);\n const parse = parseFn(_option.parse);\n if (is.Function(parse)) {\n fn = parse;\n } else if (parse && is.String(parse)) {\n fn = (v) => {\n return deepGet(v, parse);\n }\n }\n toPromise(fn(body, rule, api)).then(res => {\n set(res);\n })\n },\n onError(e) {\n set(undefined);\n if (check()) return;\n (onError || ((e) => err(e.message || 'fetch fail ' + _option.action)))(e, rule, api);\n }\n };\n fc.$handle.beforeFetch(config, {rule, api}).then(() => {\n if (is.Function(_option.action)) {\n toPromise(_option.action(rule, api)).then((val) => {\n config.onSuccess(val, true);\n }).catch((e) => {\n config.onError(e);\n });\n return;\n }\n invoke(() => fc.create.fetch(config, {inject, rule, api}));\n }).catch(e => {});\n }, option.wait || 600));\n }\n\n const fetchAttr = {\n name: 'fetch',\n _fn: [],\n loaded(...args) {\n run(...args);\n },\n watch(...args) {\n run(...args);\n },\n deleted(inject) {\n if (this._fn[inject.id]) {\n this._fn[inject.id]();\n delete this._fn[inject.id];\n }\n inject.clearProp();\n },\n };\n\n return fetchAttr;\n}\n\n\nexport default {\n fetch,\n loadData,\n t,\n componentValidate,\n};\n","import is from '@form-create/utils/lib/type';\n\nconst name = 'html';\n\nexport default {\n name,\n loadChildren: false,\n render(children, ctx) {\n ctx.prop.props.innerHTML = children.default();\n return ctx.vNode.make(ctx.prop.props.tag || 'div', ctx.prop);\n },\n renderChildren(children) {\n return {\n default: () => children.filter(v => is.String(v)).join('')\n }\n }\n}\n","import {deepGet} from './util';\n\nfunction getCookie(name) {\n name = name + '=';\n\n const decodedCookie = decodeURIComponent(document.cookie);\n const cookieArray = decodedCookie.split(';');\n\n for (let i = 0; i < cookieArray.length; i++) {\n let cookie = cookieArray[i];\n while (cookie.charAt(0) === ' ') {\n cookie = cookie.substring(1);\n }\n if (cookie.indexOf(name) === 0) {\n cookie = cookie.substring(name.length, cookie.length);\n try {\n return JSON.parse(cookie);\n } catch (e) {\n return cookie;\n }\n }\n }\n return null;\n}\n\nfunction getLocalStorage(name) {\n const value = localStorage.getItem(name);\n if (value) {\n try {\n return JSON.parse(value);\n } catch (e) {\n return value;\n }\n }\n return null;\n}\n\nfunction getSessionStorage(name) {\n const value = sessionStorage.getItem(name);\n if (value) {\n try {\n return JSON.parse(value);\n } catch (e) {\n return value;\n }\n }\n return null;\n}\n\nexport function baseDriver(driver, name) {\n if (!name) {\n return null;\n }\n const split = name.split('.');\n let value = driver(split.shift());\n\n if (!split.length) {\n return value;\n }\n if (value == null) {\n return null;\n }\n return deepGet(value, split);\n}\n\nexport function cookieDriver(name) {\n return baseDriver(getCookie, name);\n}\n\nexport function localStorageDriver(name) {\n return baseDriver(getLocalStorage, name);\n}\n\nexport function sessionStorageDriver(name) {\n return baseDriver(getSessionStorage, name);\n}","export default {\n en: {\n required: '{title} is required',\n validate: {\n url: '{title} is not a valid url',\n email: '{title} is not a valid email',\n ip: '{title} {title} is not a valid ip',\n phone: '{title} {title} is not a valid phone',\n pattern: '{title} does not match pattern {pattern}',\n uppercase: '{title} must be all uppercase',\n lowercase: '{title} must be all lowercased',\n positive: '{title} is not a positive number',\n negative: '{title} is not a negative number',\n equal: '{title} is not equal to {equal}',\n min: '{title} cannot be less than {min}',\n max: '{title} cannot be greater than {max}',\n enum: '{title} must be one of {enum}',\n hasKeys: '{title} does not contain required fields {hasKeys}',\n minLen: '{title} must be at least {minLen}',\n maxLen: '{title} cannot be longer than {maxLen}',\n len: '{title} must be exactly {len}',\n integer: '{title} is not an integer',\n number: '{title} is not an number',\n }\n },\n 'zh-cn': {\n required: '{title}不能为空',\n validate: {\n url: '{title}不是有效的 url 地址',\n email: '{title}不是有效的邮箱地址',\n ip: '{title}不是有效的 IP 地址',\n phone: '{title}不是正确的手机号',\n pattern: '{title}必须匹配 {pattern}',\n uppercase: '{title}必须全大写',\n lowercase: '{title}必须全小写',\n positive: '{title}不是正数',\n negative: '{title}不是负数',\n equal: '{title}必须等于 {equal}',\n min: '{title}必须大于等于 {min}',\n max: '{title}必须小于等于 {max}',\n enum: '{title}必须是 {enum} 之一',\n hasKeys: '{title}必须包含 {hasKeys} 字段',\n minLen: '{title}长度必须大于 {minLen}',\n maxLen: '{title}长度必须小于 {maxLen}',\n len: '{title}长度必须为 {len}',\n integer: '{title}必须为整数',\n number: '{title}必须为数字',\n },\n }\n}","import $FormCreate from '../components/formCreate';\nimport {computed, createApp, h, nextTick, reactive, ref, watch} from 'vue';\nimport makerFactory from '../factory/maker';\nimport Handle from '../handler';\nimport fetch from './fetch';\nimport {creatorFactory, mergeRule} from '..';\nimport BaseParser from '../factory/parser';\nimport {copyRule, copyRules, deepGet, invoke, mergeGlobal, parseFn, parseJson, setPrototypeOf, toJson} from './util';\nimport fragment from '../components/fragment';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport toCase from '@form-create/utils/lib/tocase';\nimport extend, {copy} from '@form-create/utils/lib/extend';\nimport {CreateNodeFactory} from '../factory/node';\nimport {createManager} from '../factory/manager';\nimport {arrayAttrs, keyAttrs, normalAttrs} from './attrs';\nimport {appendProto} from '../factory/creator';\nimport $provider from './provider';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport Mitt from '@form-create/utils/lib/mitt';\nimport html from '../parser/html';\nimport uniqueId from '@form-create/utils/lib/unique';\nimport {cookieDriver, localStorageDriver, sessionStorageDriver} from './dataDriver';\nimport debounce from '@form-create/utils/lib/debounce';\nimport {deepSet} from '@form-create/utils';\nimport baseLanguage from './language';\n\nfunction parseProp(name, id) {\n let prop;\n if (arguments.length === 2) {\n prop = arguments[1];\n id = prop[name];\n } else {\n prop = arguments[2];\n }\n return {id, prop};\n}\n\nfunction nameProp() {\n return parseProp('name', ...arguments);\n}\n\nfunction exportAttrs(attrs) {\n const key = attrs.key || [];\n const array = attrs.array || [];\n const normal = attrs.normal || [];\n keyAttrs.push(...key);\n arrayAttrs.push(...array);\n normalAttrs.push(...normal);\n\n appendProto([...key, ...array, ...normal]);\n}\n\nlet id = 1;\nconst instance = {};\nconst defValueTag = Symbol('defValue');\n\n//todo 表单嵌套\nexport default function FormCreateFactory(config) {\n\n const components = {\n [fragment.name]: fragment\n };\n const parsers = {};\n const directives = {};\n const modelFields = {};\n const drivers = {};\n const useApps = [];\n const listener = [];\n const extendApiFn = [\n config.extendApi\n ];\n const providers = {\n ...$provider\n };\n const maker = makerFactory();\n let globalConfig = {global: {}};\n const isMobile = config.isMobile === true;\n const loadData = reactive({\n $mobile: isMobile,\n });\n const CreateNode = CreateNodeFactory();\n const formulas = {};\n const prototype = {};\n\n exportAttrs(config.attrs || {});\n\n function getApi(name) {\n const val = instance[name];\n if (Array.isArray(val)) {\n return val.map(v => {\n return v.api();\n });\n } else if (val) {\n return val.api();\n }\n }\n\n function useApp(fn) {\n useApps.push(fn);\n }\n\n function directive() {\n const data = nameProp(...arguments);\n if (data.id && data.prop) directives[data.id] = data.prop;\n }\n\n function register() {\n const data = nameProp(...arguments);\n if (data.id && data.prop) providers[data.id] = is.Function(data.prop) ? data.prop : {\n ...data.prop,\n name: data.id\n };\n }\n\n function componentAlias(alias) {\n CreateNode.use(alias);\n }\n\n function parser(key) {\n if (arguments.length === 0) {\n return BaseParser;\n } else if (typeof key === 'string' && arguments.length === 1) {\n return parsers[toCase(key)];\n }\n const data = nameProp(...arguments);\n if (!data.id || !data.prop) return BaseParser;\n const name = toCase(data.id);\n const parser = data.prop;\n const base = parser.merge === true ? parsers[name] : undefined;\n parsers[name] = setPrototypeOf(parser, base || BaseParser);\n maker[name] = creatorFactory(name);\n parser.maker && extend(maker, parser.maker);\n }\n\n function component(id, component) {\n let name;\n if (is.String(id)) {\n name = id;\n if (component === undefined) {\n return components[name];\n }\n } else {\n name = id.displayName || id.name;\n component = id;\n }\n if (!name || !component) return;\n const nameAlias = toCase(name);\n components[name] = component;\n components[nameAlias] = component;\n delete CreateNode.aliasMap[name];\n delete CreateNode.aliasMap[nameAlias];\n delete parsers[name];\n delete parsers[nameAlias];\n if (component.formCreateParser) parser(name, component.formCreateParser);\n }\n\n function $form() {\n return $FormCreate(FormCreate, components, directives);\n }\n\n function createFormApp(rule, option) {\n const Type = $form();\n return createApp({\n data() {\n return reactive({\n rule, option\n });\n },\n render() {\n return h(Type, {ref: 'fc', ...this.$data});\n }\n });\n }\n\n function $vnode() {\n return fragment;\n }\n\n //todo 检查回调函数作用域\n function use(fn, opt) {\n if (is.Function(fn.install)) fn.install(create, opt);\n else if (is.Function(fn)) fn(create, opt);\n return this;\n }\n\n function create(rules, option) {\n let app = createFormApp(rules, option || {});\n useApps.forEach(v => {\n invoke(() => v(create, app));\n })\n const div = document.createElement('div');\n (option?.el || document.body).appendChild(div);\n const vm = app.mount(div);\n return vm.$refs.fc.fapi;\n }\n\n setPrototypeOf(create, prototype);\n\n function factory(inherit) {\n let _config = {...config};\n if (inherit) {\n _config.inherit = {\n components,\n parsers,\n directives,\n modelFields,\n providers,\n useApps,\n maker,\n formulas,\n loadData\n }\n } else {\n delete _config.inherit;\n }\n return FormCreateFactory(_config);\n }\n\n function setModelField(name, field) {\n modelFields[name] = field;\n }\n\n function setFormula(name, fn) {\n formulas[name] = fn;\n }\n\n function setDriver(name, driver) {\n const parent = drivers[name] || {};\n const parsers = parent.parsers || {};\n if (driver.parsers) {\n Object.keys(driver.parsers).forEach(k => {\n parsers[k] = setPrototypeOf(driver.parsers[k], BaseParser);\n });\n }\n driver.name = name;\n drivers[name] = {...parent, ...driver, parsers};\n }\n\n function refreshData(id) {\n if (id) {\n Object.keys(instance).forEach(v => {\n const apis = Array.isArray(instance[v]) ? instance[v] : [instance[v]];\n apis.forEach(that => {\n that.bus.$emit('$loadData.' + id);\n })\n })\n }\n }\n\n function setData(id, data) {\n deepSet(loadData, id, data);\n refreshData(id);\n }\n\n function setDataDriver(id, data) {\n const callback = (...args) => {\n return invoke(() => data(...args));\n }\n callback._driver = true;\n setData(id, callback);\n }\n\n function getData(id, def) {\n const split = (id || '').split('.');\n id = split.shift();\n const field = split.join('.');\n if (!hasProperty(loadData, id)) {\n loadData[id] = defValueTag;\n }\n if (loadData[id] !== defValueTag) {\n let val = loadData[id];\n if (val && val._driver) {\n val = val(field);\n } else if (split.length) {\n val = deepGet(val, split);\n }\n return (val == null || val === '') ? def : val;\n } else {\n return def;\n }\n }\n\n function extendApi(fn) {\n extendApiFn.push(fn);\n }\n\n function removeData(id) {\n delete loadData[id];\n refreshData(id);\n }\n\n function on(name, callback) {\n listener.push({name, callback});\n }\n\n function FormCreate(vm) {\n extend(this, {\n id: id++,\n create,\n vm,\n manager: createManager(config.manager),\n parsers,\n providers,\n modelFields,\n formulas,\n isMobile,\n rules: vm.props.rule,\n name: vm.props.name || uniqueId(),\n inFor: vm.props.inFor,\n prop: {\n components,\n directives,\n },\n get: null,\n drivers,\n renderDriver: null,\n refreshData,\n loadData,\n CreateNode,\n bus: new Mitt(),\n unwatch: [],\n options: ref({}),\n extendApiFn,\n fetchCache: new WeakMap(),\n tmpData: reactive({}),\n })\n listener.forEach(item => {\n this.bus.$on(item.name, item.callback);\n });\n nextTick(() => {\n watch(this.options, () => {\n this.$handle.$manager.updateOptions(this.options.value);\n this.api().refresh();\n }, {deep: true})\n });\n extend(vm.appContext.components, components);\n extend(vm.appContext.directives, directives);\n this.$handle = new Handle(this)\n if (this.name) {\n if (this.inFor) {\n if (!instance[this.name]) instance[this.name] = [];\n instance[this.name].push(this);\n } else {\n instance[this.name] = this;\n }\n }\n }\n\n FormCreate.isMobile = isMobile;\n\n extend(FormCreate.prototype, {\n init() {\n if (this.isSub()) {\n this.unwatch.push(watch(() => this.vm.setupState.parent.setupState.fc.options.value, () => {\n this.initOptions();\n this.$handle.api.refresh();\n }, {deep: true, flush: 'sync'}));\n }\n if (this.vm.props.driver) {\n this.renderDriver = typeof this.vm.props.driver === 'object' ? this.vm.props.driver : this.drivers[this.vm.props.driver];\n }\n if (!this.renderDriver && this.vm.setupState.parent) {\n this.renderDriver = this.vm.setupState.parent.setupState.fc.renderDriver;\n }\n if (!this.renderDriver) {\n this.renderDriver = this.drivers.default;\n }\n this.initOptions();\n this.$handle.init();\n },\n targetFormDriver(method, ...args) {\n this.bus.$emit(method, ...args);\n if (this.renderDriver && this.renderDriver[method]) {\n return invoke(() => this.renderDriver[method](...args));\n }\n },\n t(id, params, get) {\n let value = get ? get('$t.' + id) : this.globalLanguageDriver(id);\n if (value == null) {\n value = '';\n }\n if (value && params) {\n Object.keys(params).forEach(param => {\n const regex = new RegExp(`{${param}}`, 'g');\n value = value.replace(regex, params[param]);\n });\n }\n return value;\n },\n globalDataDriver(id) {\n let split = id.split('.');\n const key = split.shift();\n const option = this.options.value.globalData && this.options.value.globalData[key];\n if (option) {\n if (option.type === 'static') {\n return deepGet(option.data, split);\n } else {\n let val;\n const res = this.fetchCache.get(option);\n if (res) {\n if (res.status) {\n val = deepGet(res.data, split);\n }\n if (!res.loading) {\n return val;\n }\n res.loading = false;\n this.fetchCache.set(option, res);\n } else {\n this.fetchCache.set(option, {status: false});\n }\n const reload = debounce(() => {\n unwatch();\n const res = this.fetchCache.get(option);\n if ((this.options.value.globalData && Object.values(this.options.value.globalData).indexOf(option) !== -1)) {\n if (res) {\n res.loading = true;\n this.fetchCache.set(option, res);\n }\n this.bus.$emit('$loadData.$globalData.' + key);\n } else {\n this.fetchCache.delete(option);\n }\n }, option.wait || 600)\n\n const _emit = (data) => {\n this.fetchCache.set(option, {status: true, data});\n this.bus.$emit('$loadData.$globalData.' + key);\n };\n\n const callback = (get, change) => {\n if (change && option.watch === false) {\n return unwatch();\n }\n if (change) {\n reload();\n return;\n }\n const options = this.$handle.loadFetchVar(copy(option), get);\n options.targetRule = this.targetRule;\n this.$handle.api.fetch(options).then(res => {\n _emit(res);\n }).catch(e => {\n _emit(null);\n });\n };\n const unwatch = this.watchLoadData(callback);\n if(option.watch === false) {\n unwatch();\n }\n this.unwatch.push(unwatch);\n return val;\n }\n }\n },\n getLocale() {\n let locale = this.vm.setupState.top.props.locale;\n if (locale && typeof locale === 'object') {\n return locale.name;\n }\n if (typeof locale === 'string') {\n return locale;\n }\n return 'zh-cn';\n },\n globalLanguageDriver(id) {\n let t = this.vm.setupState.top.props.t;\n let locale = this.vm.setupState.top.props.locale;\n let value = undefined;\n if (t) {\n value = invoke(() => t(id));\n }\n if (value == null && locale && typeof locale === 'object') {\n value = deepGet(locale, id);\n }\n if (value == null) {\n const language = this.options.value.language || {};\n const locale = this.getLocale();\n value = deepGet(language[locale] || {}, id);\n if (value == null) {\n value = deepGet(baseLanguage[locale] || {}, id);\n }\n }\n return value;\n },\n globalVarDriver(id) {\n let split = id.split('.');\n const key = split.shift();\n const option = this.options.value.globalVariable && this.options.value.globalVariable[key];\n if (option) {\n const handle = is.Function(option) ? option : parseFn(option.handle);\n if (handle) {\n let val = handle((...args) => this.$handle.api.getData(...args), this.$handle.api);\n return deepGet(val, split);\n }\n }\n },\n setData(id, data, isGlobal) {\n if (!isGlobal) {\n deepSet(this.vm.setupState.top.setupState.fc.tmpData, id, data);\n this.bus.$emit('$loadData.' + id);\n } else {\n setData(id, data);\n }\n },\n getLoadData(id, def) {\n let val = null;\n if (id != null) {\n let split = id.split('.');\n const key = split.shift();\n val = deepGet(this.vm.setupState.top.setupState.fc.tmpData, id);\n if (val != null) {\n return val;\n } else if (key === '$topForm') {\n val = this.$handle.api.top.formData(true);\n } else if (key === '$scopeForm') {\n val = this.$handle.api.scope.formData(true);\n } else if (key === '$form') {\n val = this.$handle.api.formData(true);\n } else if (key === '$options') {\n val = this.options.value;\n } else if (key === '$globalData') {\n val = this.globalDataDriver(split.join('.'));\n split = [];\n } else if (key === '$var') {\n val = this.globalVarDriver(split.join('.'));\n split = [];\n } else if (key === '$locale') {\n val = this.getLocale();\n split = [];\n } else if (key === '$t') {\n val = this.globalLanguageDriver(split.join('.'));\n split = [];\n } else if (key === '$preview') {\n return this.$handle.preview;\n } else {\n val = getData(id);\n split = [];\n }\n if (val && split.length) {\n val = deepGet(val, split);\n }\n }\n return (val == null || val === '') ? def : val;\n },\n watchLoadData(fn, wait) {\n let unwatch = {};\n\n const run = (flag) => {\n if (!this.get) {\n this.get = get;\n }\n invoke(() => {\n fn(get, flag);\n });\n if (this.get === get) {\n this.get = undefined;\n }\n };\n\n const get = (id, def) => {\n let getValue;\n if (typeof id === 'object') {\n getValue = id.getValue;\n id = id.id;\n }\n if (unwatch[id]) {\n return unwatch[id].val;\n }\n const data = computed(() => {\n return getValue ? getValue() : this.getLoadData(id, def);\n })\n const split = id.split('.');\n const key = split.shift();\n const key2 = split.shift() || '';\n const callback = debounce(() => {\n const temp = getValue ? getValue() : this.getLoadData(id, def);\n if (!unwatch[id]) {\n return;\n } else if (((temp instanceof Function || is.Object(temp) || Array.isArray(temp)) && temp === unwatch[id].val) || JSON.stringify(temp) !== JSON.stringify(unwatch[id].val)) {\n unwatch[id].val = temp;\n run(true);\n }\n }, wait || 0);\n const un = watch(data, (n) => {\n callback();\n });\n this.bus.$on('$loadData.' + key, callback);\n if (key2) {\n this.bus.$on('$loadData.' + key + '.' + key2, callback);\n }\n unwatch[id] = {\n fn: (() => {\n this.bus.$off('$loadData.' + key, callback);\n if (key2) {\n this.bus.$off('$loadData.' + key + '.' + key2, callback);\n }\n un();\n }),\n val: data.value,\n }\n return data.value;\n }\n run(false);\n const un = () => {\n Object.keys(unwatch).forEach(k => unwatch[k].fn());\n unwatch = {};\n }\n this.unwatch.push(un);\n return un;\n },\n isSub() {\n return this.vm.setupState.parent && this.vm.props.extendOption;\n },\n initOptions() {\n this.options.value = {};\n let options = {\n formData: {},\n submitBtn: {},\n resetBtn: {},\n globalEvent: {},\n globalData: {}, ...deepCopy(globalConfig)\n };\n const isSubForm = this.isSub();\n if (isSubForm) {\n options = this.mergeOptions(options, this.vm.setupState.parent.setupState.fc.options.value || {}, true);\n }\n options = this.mergeOptions(options, this.vm.props.option);\n const api = this.api();\n this.targetFormDriver('initOptions', options, {api, isSubForm});\n this.updateOptions(options);\n },\n mergeOptions(target, opt, parent) {\n opt = {...opt || {}};\n parent && ['page', 'onSubmit', 'onReset', 'onCreated', 'onChange', 'onMounted', 'mounted', 'onReload', 'reload', 'formData', 'el', 'globalClass', 'style'].forEach((n) => {\n delete opt[n];\n });\n if (opt.global) {\n target.global = mergeGlobal(target.global, opt.global);\n delete opt.global;\n }\n this.$handle.$manager.mergeOptions([opt], target);\n return target;\n },\n updateOptions(options) {\n this.options.value = this.mergeOptions(this.options.value, options);\n this.$handle.$manager.updateOptions(this.options.value);\n this.bus.$emit('$loadData.$options');\n },\n api() {\n return this.$handle.api;\n },\n render() {\n return this.$handle.render();\n },\n mounted() {\n this.$handle.mounted();\n },\n unmount() {\n if (this.name) {\n if (this.inFor) {\n const idx = instance[this.name].indexOf(this);\n instance[this.name].splice(idx, 1);\n } else {\n delete instance[this.name];\n }\n }\n listener.forEach(item => {\n this.bus.$off(item.name, item.callback);\n });\n this.tmpData = {};\n this.unwatch.forEach(fn => fn());\n this.unwatch = [];\n this.$handle.reloadRule([]);\n },\n updated() {\n this.$handle.bindNextTick(() => this.bus.$emit('next-tick', this.$handle.api));\n }\n })\n\n\n function useAttr(formCreate) {\n extend(formCreate, {\n version: config.version,\n ui: config.ui,\n isMobile,\n extendApi,\n getData,\n setDataDriver,\n setData,\n removeData,\n refreshData,\n maker,\n component,\n directive,\n setModelField,\n setFormula,\n setDriver,\n register,\n $vnode,\n parser,\n use,\n factory,\n componentAlias,\n copyRule,\n copyRules,\n mergeRule,\n fetch,\n $form,\n parseFn,\n parseJson,\n toJson,\n useApp,\n getApi,\n on,\n });\n }\n\n function useStatic(formCreate) {\n extend(formCreate, {\n create,\n install(app, options) {\n globalConfig = {...globalConfig, ...(options || {})}\n const key = `_installedFormCreate${isMobile ? 'Mobile' : ''}_${config.ui}`;\n if (app[key] === true) return;\n app[key] = true;\n\n const $formCreate = function (rules, opt = {}) {\n return create(rules, opt, this);\n };\n\n useAttr($formCreate);\n\n app.config.globalProperties.$formCreate = $formCreate;\n const $component = $form();\n app.component($component.name, $component);\n useApps.forEach(v => {\n invoke(() => v(formCreate, app));\n })\n }\n })\n }\n\n useAttr(prototype);\n useStatic(prototype);\n\n setDataDriver('$cookie', cookieDriver);\n setDataDriver('$localStorage', localStorageDriver);\n setDataDriver('$sessionStorage', sessionStorageDriver);\n\n CreateNode.use({fragment: 'fcFragment'});\n\n config.install && create.use(config);\n\n useApp((_, app) => {\n app.mixin({\n props: ['formCreateInject'],\n })\n })\n\n parser(html);\n\n if (config.inherit) {\n const inherit = config.inherit;\n inherit.components && extend(components, inherit.components);\n inherit.parsers && extend(parsers, inherit.parsers);\n inherit.directives && extend(directives, inherit.directives);\n inherit.modelFields && extend(modelFields, inherit.modelFields);\n inherit.providers && extend(providers, inherit.providers);\n inherit.useApps && extend(useApps, inherit.useApps);\n inherit.maker && extend(maker, inherit.maker);\n inherit.loadData && extend(loadData, inherit.loadData);\n inherit.formulas && extend(formulas, inherit.formulas);\n }\n\n const FcComponent = $form();\n setPrototypeOf(FcComponent, prototype);\n Object.defineProperties(FcComponent, {\n fetch: {\n get() {\n return prototype.fetch;\n },\n set(val) {\n prototype.fetch = val;\n }\n }\n })\n\n FcComponent.util = prototype;\n\n return FcComponent;\n}\n","const is = {\n type(arg, type) {\n return Object.prototype.toString.call(arg) === '[object ' + type + ']'\n },\n Undef(v) {\n return v === undefined || v === null\n },\n Element(arg) {\n return typeof arg === 'object' && arg !== null && arg.nodeType === 1 && !is.Object(arg)\n },\n trueArray(data) {\n return Array.isArray(data) && data.length > 0;\n },\n Function(v) {\n const type = this.getType(v);\n return type === 'Function' || type === 'AsyncFunction';\n },\n getType(v) {\n const str = Object.prototype.toString.call(v)\n return /^\\[object (.*)\\]$/.exec(str)[1]\n },\n empty(value) {\n if (value === undefined || value === null) {\n return true;\n }\n\n if (Array.isArray(value) && Array.isArray(value) && !value.length) {\n return true;\n }\n\n return typeof value === 'string' && !value;\n }\n};\n\n['Date', 'Object', 'String', 'Boolean', 'Array', 'Number'].forEach(t => {\n is[t] = function (arg) {\n return is.type(arg, t);\n }\n})\n\nexport function hasProperty(rule, k) {\n return ({}).hasOwnProperty.call(rule, k)\n}\n\nexport default is;\n","\nexport function $set(target, field, value) {\n target[field] = value;\n}\n\nexport function $del(target, field) {\n delete target[field];\n}\n","import {$set} from './modify';\nimport is from './type';\n\nexport default function deepExtend(origin, target = {}, mode) {\n let isArr = false;\n for (let key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n let clone = target[key];\n if ((isArr = Array.isArray(clone)) || is.Object(clone)) {\n let nst = origin[key] === undefined;\n if (isArr) {\n isArr = false;\n nst && $set(origin, key, []);\n } else if (clone._clone && mode !== undefined) {\n if (mode) {\n clone = clone.getRule();\n nst && $set(origin, key, {});\n } else {\n $set(origin, key, clone._clone());\n continue;\n }\n } else {\n nst && $set(origin, key, {});\n }\n origin[key] = deepExtend(origin[key], clone, mode);\n } else {\n $set(origin, key, clone);\n if (!is.Undef(clone)) {\n if (!is.Undef(clone.__json)) {\n origin[key].__json = clone.__json;\n }\n if (!is.Undef(clone.__origin)) {\n origin[key].__origin = clone.__origin;\n }\n }\n }\n }\n }\n return (mode !== undefined && Array.isArray(origin)) ? origin.filter(v => !v || !v.__ctrl) : origin\n}\n\nexport function deepCopy(value) {\n return deepExtend({}, {value}).value;\n}\n\nexport function deepExtendArgs(origin, ...lst) {\n lst.forEach(target => {\n origin = deepExtend(origin, target);\n });\n return origin;\n}\n","import {$set} from './modify';\n\nconst _extends = Object.assign || function (a) {\n for (let b, c = 1; c < arguments.length; c++) {\n for (let d in b = arguments[c], b) {\n Object.prototype.hasOwnProperty.call(b, d) && ($set(a, d, b[d]));\n }\n }\n\n return a;\n}\n\nexport default function extend() {\n return _extends.apply(this, arguments);\n}\n\nexport function copy(obj) {\n if (typeof obj !== 'object' || obj === null) return obj;\n return obj instanceof Array ? [...obj] : {...obj};\n}\n","export function format(type, msg, rule) {\n return (`[form-create ${type}]: ${msg}` + (rule ? ('\\n\\nrule: ' + JSON.stringify(rule.getRule ? rule.getRule() : rule)) : ''))\n}\n\nexport function tip(msg, rule) {\n console.warn(format('tip', msg, rule));\n}\n\nexport function err(msg, rule) {\n console.error(format('err', msg, rule));\n}\n\nexport function logError(e) {\n err(e.toString());\n console.error(e);\n}\n","import deepExtend from './deepextend';\nimport {err} from './console';\nimport is from './type';\n\nconst PREFIX = '[[FORM-CREATE-PREFIX-';\nconst SUFFIX = '-FORM-CREATE-SUFFIX]]';\n\nexport function toJson(obj, space) {\n return JSON.stringify(deepExtend(Array.isArray(obj) ? [] : {}, obj, true), function (key, val) {\n if (val && val._isVue === true)\n return undefined;\n\n if (typeof val !== 'function') {\n return val;\n }\n if (val.__json) {\n return val.__json;\n }\n if (val.__origin)\n val = val.__origin;\n\n if (val.__emit)\n return undefined;\n return PREFIX + val + SUFFIX;\n }, space);\n}\n\nfunction makeFn(fn) {\n return (new Function('return ' + fn))();\n}\n\nexport function parseFn(fn, mode) {\n if (fn && is.String(fn) && fn.length > 4) {\n let v = fn.trim();\n let flag = false;\n try {\n if (v.indexOf(SUFFIX) > 0 && v.indexOf(PREFIX) === 0) {\n v = v.replace(SUFFIX, '').replace(PREFIX, '');\n flag = true;\n } else if (v.indexOf('$FN:') === 0) {\n v = v.substring(4);\n flag = true;\n } else if (v.indexOf('$EXEC:') === 0) {\n v = v.substring(6);\n flag = true;\n } else if (v.indexOf('$GLOBAL:') === 0) {\n const name = v.substring(8);\n v = function (...args) {\n const callback = args[0].api.getGlobalEvent(name);\n if (callback) {\n return callback.call(this, ...args);\n }\n return undefined;\n }\n v.__json = fn;\n v.__inject = true;\n return v;\n } else if (v.indexOf('$FNX:') === 0) {\n v = makeFn('function($inject){\\n' + v.substring(5) + '\\n}');\n v.__json = fn;\n v.__inject = true;\n return v;\n } else if (!mode && v.indexOf('function ') === 0 && v !== 'function ') {\n flag = true;\n } else if (!mode && v.indexOf('function(') === 0 && v !== 'function(') {\n flag = true;\n }\n if (!flag) return fn;\n let val;\n try{\n val = makeFn(v);\n }catch (e){\n val = makeFn('function ' + v);\n }\n val.__json = fn;\n return val;\n } catch (e) {\n err(`解析失败:${v}\\n\\nerr: ${e}`);\n return undefined;\n }\n }\n return fn;\n}\n\nexport function parseJson(json, mode) {\n return JSON.parse(json, function (k, v) {\n if (is.Undef(v) || !v.indexOf) return v;\n return parseFn(v, mode);\n });\n}\n","let id = 0;\n\nexport default function uniqueId() {\n const num = 370 + (++id);\n return 'F' + Math.random().toString(36).substr(3, 3) + Number(`${Date.now()}`).toString(36) + num.toString(36) + 'c';\n}\n","export default function debounce(fn, wait) {\n var timeout = null;\n return function (...arg) {\n if (timeout !== null)\n clearTimeout(timeout);\n timeout = setTimeout(() => fn.call(this, ...arg), wait);\n }\n}\n\n","export default function deepSet(data, idx, val) {\n let _data = data, to;\n (idx || '').split('.').forEach(v => {\n if (to) {\n if (!_data[to] || typeof _data[to] != 'object') {\n _data[to] = {}\n }\n _data = _data[to];\n }\n to = v;\n })\n _data[to] = val;\n return _data;\n}\n","export default function getSlot(slots, exclude) {\n return Object.keys(slots).reduce((lst, name) => {\n if (!exclude || exclude.indexOf(name) === -1) {\n lst[name] = slots[name]\n }\n return lst;\n }, {})\n}","export default function toArray(value) {\n return Array.isArray(value)\n ? value\n : ([null, undefined, ''].indexOf(value) > -1 ? [] : [value]);\n}\n","import is from './type';\n\nexport default function toDate(timeStamp) {\n if (is.Date(timeStamp))\n return timeStamp;\n else {\n let date = new Date(timeStamp);\n return date.toString() === 'Invalid Date' ? timeStamp : date;\n }\n}\n","export default function toLine(name) {\n let line = name.replace(/([A-Z])/g, '-$1').toLocaleLowerCase();\n if (line.indexOf('-') === 0)\n line = line.substr(1);\n return line;\n}\n\nexport function upper(str) {\n return str.replace(str[0], str[0].toLocaleUpperCase());\n}","function isPromise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\n\nexport default function toPromise(value) {\n if (isPromise(value)) {\n return value;\n }\n return Promise.resolve(value);\n}","export default function toString(val) {\n return val == null\n ? ''\n : typeof val === 'object'\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n"],"names":["Calendar","defineComponent","name","inheritAttrs","props","placeholder","String","formCreateInject","Object","disabled","Boolean","clearable","type","modelValue","Array","minDate","Date","maxDate","emits","setup","_","show","ref","toRef","inputValue","value","watch","n","formatter","date","dayjs","format","toDate","str","defaultDate","computed","isArray","map","dateRange","undefined","formatValue","onInput","emit","strValue","range","length","join","multiple","t","open","confirm","getStrValue","hasProperty","clear","e","stopPropagation","render","h","class","this","readonly","$props","onClick","model-value","isLink","border","v-slots","right-icon","clearIcon","is","empty","_extends","$attrs","onUpdate:show","v","onConfirm","mounted","$emit","$refs","el","normalizeOptions","options","item","normalized","label","text","children","Cascader","fieldNames","Number","_fieldNames$value","findOptions","path","i","find","updateInputValue","option","deep","val","selectedOptions","round","position","onClose","onFinish","Checkbox","direction","onUpdateModelValue","opt","tmp","shape","Select","columnsFieldNames","selectedValues","columns","onCancel","parseFile","file","url","is_string","getFileName","uid","parseUpload","split","pop","Uploader","afterRead","Function","action","headers","method","data","uploadName","onSuccess","onError","maxCount","fileList","toArray","uploadValue","files","filter","onDelete","uploadFile","status","api","fetch","dataType","source","then","res","catch","message","onUpdate:model-value","$slots","Radio","DatePicker","formValue","columnsType","TimePicker","Group","field","rule","expand","button","default","max","min","defaultValue","sortBtn","title","onBeforeRemove","onBeforeAdd","parse","len","cacheRule","cacheValue","sort","form","markRaw","$form","handler","o","keys","forEach","$f","formData","deferSyncValue","deepExtend","setValue","once","deepCopy","d","expandRule","total","addRule","removeRule","methods","_value","cache","k","JSON","stringify","input","key","[object Object]","coverValue","copyRules","submitBtn","resetBtn","defVal","extend","index","nextTick","add$f","indexOf","add","push","del","splice","toPromise","addIcon","delIcon","sortUpIcon","changeSort","sortDownIcon","a","subForm","sortIcon","canMoveUp","canMoveDown","makeIcon","vm","btn","getTitle","replace","created","Type","isCardType","onUpdate:modelValue","onUpdate:api","inFor","extendOption","script","viewBox","xmlns","_openBlock","openBlock","_createElementBlock","_hoisted_1","_cache","_createElementVNode","fill","components","IconWarning","parsers","maker","hidden","creatorFactory","ctx","vNode","col","span","row","prop","mergeProp","alias","PRE","icon","slider","stepper","inputNumber","rate","uploader","upload","cell","timePicker","datePicker","switch","select","cascader","calendar","checkbox","radio","textarea","formItem","group","array","object","tidy","isFalse","tidyRule","_rule","manager","validate","Promise","validateField","resolve","reject","clearValidateState","resetValidation","id","tidyOptions","tidyBool","pattern","RegExp","def","info","wrap","mergeProps","getDefaultOptions","required","labelAlign","inputAlign","gutter","loading","block","innerText","size","click","adapterValidate","validator","trigger","err","update","on","submit","preventDefault","style","beforeRender","className","$handle","preview","slotLen","setSlot","makeFormBtn","$r","getSlots","makeRow","makeWrap","uni","isTitle","_col","cls","rules","injectValidate","$render","mergeClass","wrapRef","makeInfo","makeCol","native","_ctx$refRule","_ctx$refRule2","titleProp","infoProp","titleSlot","getSlot","refRule","__$title","flag","align","_prop","args","_ctx$refRule3","showNotify","__$info","duration","targetHook","vn","makeSubmitBtn","makeResetBtn","width","fApi","resetFields","tidyBtnProp","Undef","extendApi","formEl","$manager","wrapEl","getFieldCtx","refs","callback","forms","all","isScope","emitEvent","sub","fields","clearSub","helper","tidyFields","clearSubValidateState","getCtxs","submitBtnProps","isShow","resetBtnProps","refreshOptions","successFn","failFn","validateOnSubmit","beforeSubmit","invoke","onSubmit","css","insertAt","document","head","getElementsByTagName","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","load","inject","parseVal","getValue","_title","clearProp","updateMessage","_rule$__fc__$refRule$","__fc__","match","getLocale","getProp","sync","install","FormCreate","componentAlias","component","register","parser","Field","FormCreateMobile","FormCreateFactory","ui","version","isMobile","attrs","normal","window","formCreateMobile","keyAttrs","arrayAttrs","normalAttrs","normalMerge","toArrayMerge","functionalMerge","enumerable","writable","configurable","copyRule","mode","mergeRule","merge","getRule","r","funcProxy","that","proxy","defineProperties","reduce","initial","get","byCtx","__origin__","fn","logError","makeSlotBag","slotBag","slotName","slot","vnFn","slots","mergeBag","bag","isVNode","toProps","toCase","upper","setPrototypeOf","proto","changeType","b","condition","==","!=",">",">=","<","<=","notOn","in","notIn","between","notBetween","notEmpty","test","deepGet","convertFieldToConditions","parts","conditions","currentCondition","part","getGroupInject","parent","$FormCreate","directives","driver","locale","fc","getCurrentInstance","provide","top","setupState","toRefs","reactive","ctxInject","destroyed","unique","renderRule","updateValue","fapi","isMore","styleEl","onBeforeMount","watchEffect","content","globalClass","subCss","toLine","innerHTML","emit$topForm","debounce","bus","emit$scopeForm","emit$form","emit$change","onMounted","$on","scope","onBeforeUnmount","$off","rmSubForm","getSubForm","idx","unmount","parentNode","parentElement","removeChild","onUpdated","updated","addSubForm","initOptions","refresh","flush","isBreakWatch","every","updateAppendData","reloadRule","toJson","config","forceCoverValue","json","init","Creator","_data","display","event","appendProto","prototype","arguments","setProp","$set","modelField","_clone","clone","constructor","commonMaker","create","make","makerFactory","factory","getBody","xhr","responseText","response","XMLHttpRequest","onProgress","addEventListener","evt","percent","loaded","query","acc","queryString","URLSearchParams","toString","includes","onerror","onload","msg","Error","getError","toLowerCase","FormData","append","setRequestHeader","filename","withCredentials","send","asyncFetch","_fetch","parseFn","targetRule","copy","Render","handle","CreateNode","force","tmpInput","initCache","initRender","clearCacheAll","clearCache","use","setCache","vnode","getCache","useCache","cacheConfig","getTypeSlot","_fn","renderSlot","ctxs","isFragment","initProp","mergeGlobal","initNone","renderChildren","loadChildrenPending","renderCtx","global","trueType","g","originType","setOptions","loadPending","origin","optionsTo","deepSet","parseSide","side","renderSides","temp","prefix","suffix","renderId","ctxProp","injectProp","cacheFlag","slotValue","model","slotUpdate","_load","loadChildren","renderSlots","_vn","targetFormDriver","none","__v_isVNode","stable","console","error","target","$stable","getModelField","modelFields","aliasMap","state","getWrap","onUpdateValue","vnodeMounted","__rule__","fc.updateValue","fc.el","exportEl","$el","getFormData","modelEmit","onEmitInput","effect","onBaseInput","toValue","trueArray","child","defaultRender","makeComponent","lower","createChildrenVnodes","createRuleVnode","useRender$1","EVENT","RuleContext","isInput","pending","linkOn","root","ctrlRule","subRule","payload","updateKey","findCtrl","ctrl","isCtrl","__ctrl","strFn","getParentGroup","onLoad","onUpdate","oldValue","updateChildren","onReload","getPending","$api","setPending","reload","effectData","clearEffectData","updateType","getType","setParser","_this$refRule","__$validate","hasHidden","check","unwatch","un","unlink","link","appendLink","watchTo","watchCtx","delete","rmCtrl","deleted","rm","_rm","noWatch","rmCtx","BaseParser","toFormValue","renderDriver","defaultPreview","noneKey","oldValueTag","Symbol","Handler","watching","reloading","noWatchFn","deferSyncFn","isMounted","subRuleData","appendData","ignoreFields","providers","cycleLoad","loadedId","changeStatus","pageEnd","nextReload","lifecycle","initData","extendApiFn","fieldCtx","nameCtx","allSubForm","subs","isPreview","siblings","formulas","appendValue","removeField","getCtx","after","prepend","hiddenStatus","displayStatus","bind","updateOptions","hideForm","hide","clearChangeStatus","updateRule","updateRules","mergeRules","findType","findTypes","getRenderRule","getRefRule","setEffect","attr","substr","updateValidate","updateValidates","validates","refreshValidate","onReset","exec","space","closeModal","getChildrenRuleList","getParentRule","getParentSubRule","getChildrenFormData","ignore","setChildrenFormData","cover","getGlobalEvent","globalEvent","getGlobalData","globalData","loadData","emitGlobalEvent","getInjectData","unshift","apply","setGlobalData","setData","setGlobalVar","$once","nextRefresh","emitsOptions","getCurrentFormRule","_h$vm$setupState$getG","loadFetchVar","fail","beforeFetch","watchFetch","watchLoadData","change","_opt","wait","getData","getLoadData","watchData","isGlobal","refreshData","params","changeValue","changeField","Api","useProvider","usePage","loadRule","__init","globalBeforeFetch","parseInjectEvent","injectEvent","parseEventLst","parseEvent","__inject","parseEmit","emitPrefix","eventName","eventInject","emitKey","fieldKey","arg","__emit","_inject","self","__origin","__json","loadStrVar","vars","regex","matches","extractVar","_split","shift","treeToVal","tree","slice","isNaN","lastVal","trim","parseTemplateToTree","template","tokens","current","depth","char","token","replaceAll","loadVal","useInject","page","first","limit","Math","ceil","parseInt","pageLoad","pageFn","clearNextTick","clearTimeout","bindNextTick","setTimeout","useRender","parseRule","fullRule","loadFn","loadCtrl","control","syncProp","pre","_loadRule","syncForm","preIndex","isRepeat","ruleEffect","repeat","isCopy","isInit","parseJson","bindParser","rmSubRuleData","setCtx","_preIndex","refreshUpdate","refreshControl","useCtrl","controls","getCtrl","handleFn","valid","isHidden","hideLst","reverse","ruleCon","ctrlCtx","_reloadRule","useLoader","setFlag","setFormData","syncValue","valueChange","fieldChange","isQuote","isChange","subData","isIgnore","ignoreHiddenFields","linkField","refreshRule","useInput","getNameCtx","setIdCtx","rmIdCtx","lst","getParser","list","newValue","call","adapter","computedRule","computedValue","compute","linkage","linkageVariable","beforeValidate","getValidateMessage","invalid","formatRule","entries","num","isInteger","some","checkCondition","or","one","variableVal","variable","compare","invert","computeValue","obj","rmSub","$del","useContext","_mounted","_ctx$prop","run","p","values","hook","deepName","_parent$prop","useLifecycle","ps","_c","c","arr","getComponent","onEffect","provider","used","_used","_ctx$rule","emitEffect","custom","getEffect","_type","useEffect","fragment","makeDirective","withDirectives","concat","directive","resolveDirective","modifiers","tidyDirectives","createManager","CustomManager","Manager","assign","mergeOptionsRule","mergeOptions","componentValidate","$provider","fetchAttr","to","parseOpt","set","fetchCache","_option","body","unwatchs","modify","isObj","html","tag","getCookie","cookieArray","decodeURIComponent","cookie","charAt","substring","getLocalStorage","localStorage","getItem","getSessionStorage","sessionStorage","baseDriver","cookieDriver","localStorageDriver","sessionStorageDriver","baseLanguage","en","email","ip","phone","uppercase","lowercase","positive","negative","equal","enum","hasKeys","minLen","maxLen","integer","number","zh-cn","parseProp","nameProp","instance","defValueTag","Element","nodeType","isArr","hasOwnProperty","nst","PREFIX","SUFFIX","makeFn","timeout","drivers","useApps","listener","globalConfig","$mobile","createVNode","isNativeTag","appContext","resolveComponent","nodes","line","toLocaleLowerCase","CreateNodeFactory","getApi","useApp","base","displayName","nameAlias","formCreateParser","$vnode","app","createApp","$data","createFormApp","div","mount","inherit","_config","setModelField","setFormula","setDriver","setDataDriver","_driver","removeData","uniqueId","Mitt","WeakMap","tmpData","Handle","useAttr","formCreate","exportAttrs","isSub","globalLanguageDriver","param","globalDataDriver","_emit","language","globalVarDriver","globalVariable","key2","isSubForm","$formCreate","globalProperties","$component","mixin","FcComponent","util","exclude","timeStamp","_isVue","isPromise","random","now"],"mappings":"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"}
|