@dhccmobile/vue3-lo-form 2.1.0 → 2.1.1

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://vue3-lo-form/webpack/universalModuleDefinition","webpack://vue3-lo-form/webpack/bootstrap","webpack://vue3-lo-form/external \"vue-property-decorator\"","webpack://vue3-lo-form/./src/constants/enum/dynamic-option-type.enum.ts","webpack://vue3-lo-form/external \"core-js/modules/es.array.push.js\"","webpack://vue3-lo-form/./src/constants/enum/validate-status.enum.ts","webpack://vue3-lo-form/external \"dayjs/locale/zh-cn\"","webpack://vue3-lo-form/external \"ant-design-vue\"","webpack://vue3-lo-form/./src/constants/enum/option-type.enum.ts","webpack://vue3-lo-form/external \"dayjs\"","webpack://vue3-lo-form/external \"vue\"","webpack://vue3-lo-form/external \"@ant-design/icons-vue\"","webpack://vue3-lo-form/./src/constants/enum/cache-type.enum.ts","webpack://vue3-lo-form/./src/components/form/DvForm.vue?5c29","webpack://vue3-lo-form/./src/constants/enum/form-field-class.enum.ts","webpack://vue3-lo-form/./src/components/form/DvFormLayout.vue?77d7","webpack://vue3-lo-form/external \"mathjs\"","webpack://vue3-lo-form/external \"ant-design-vue/es/date-picker/locale/zh_CN\"","webpack://vue3-lo-form/external \"localforage\"","webpack://vue3-lo-form/external \"moment\"","webpack://vue3-lo-form/./src/constants/enum/switch.enum.ts","webpack://vue3-lo-form/./src/constants/enum/form-field-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/builtIn-label.enum.ts","webpack://vue3-lo-form/./src/constants/enum/control-format-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/form-bus-attr.enum.ts","webpack://vue3-lo-form/./src/constants/enum/form-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/lateral-arrangement.enum.ts","webpack://vue3-lo-form/./src/constants/enum/money-unit.enum.ts","webpack://vue3-lo-form/./src/constants/enum/submitted-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/support-upload-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/upload-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/validate-rules.enum.ts","webpack://vue3-lo-form/./src/constants/enum/vertical-arrangement.enum.ts","webpack://vue3-lo-form/external \"tslib\"","webpack://vue3-lo-form/./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js","webpack://vue3-lo-form/external \"core-js/modules/es.error.cause.js\"","webpack://vue3-lo-form/./src/components/form/StretchText.vue?bd88","webpack://vue3-lo-form/./src/services/validate-generator.service.ts","webpack://vue3-lo-form/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://vue3-lo-form/./src/components/form/DvForm.vue?d55e","webpack://vue3-lo-form/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://vue3-lo-form/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://vue3-lo-form/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://vue3-lo-form/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://vue3-lo-form/./src/components/form/DvFormLayout.vue?fe26","webpack://vue3-lo-form/./src/constants/config/form-template.config.ts","webpack://vue3-lo-form/./src/constants/encode-assets/svg.ts","webpack://vue3-lo-form/./src/filtres/generate-grid-template-columns.filter.ts","webpack://vue3-lo-form/./src/filtres/generate-grid-column-end.filter.ts","webpack://vue3-lo-form/./src/services/api.service.ts","webpack://vue3-lo-form/./src/constants/config/storage.config.ts","webpack://vue3-lo-form/./src/services/clean-local-forage.service.ts","webpack://vue3-lo-form/./src/services/dict-local-forage.service.ts","webpack://vue3-lo-form/./src/services/form-bean-utils.service.ts","webpack://vue3-lo-form/./src/services/form-local-forage.service.ts","webpack://vue3-lo-form/./src/domain/DesForm.ts","webpack://vue3-lo-form/./src/domain/DesFormLayout.ts","webpack://vue3-lo-form/./src/services/form-tree-node-convert.service.ts","webpack://vue3-lo-form/./src/store/form.store.ts","webpack://vue3-lo-form/./src/store/dict.store.ts","webpack://vue3-lo-form/./src/constants/config/form.config.ts","webpack://vue3-lo-form/./src/services/router.service.ts","webpack://vue3-lo-form/./src/services/form-validate.service.ts","webpack://vue3-lo-form/./src/services/form-tools.service.ts","webpack://vue3-lo-form/./src/filtres/amount-capitalization.filter.ts","webpack://vue3-lo-form/./src/domain/DesFormControl.ts","webpack://vue3-lo-form/./src/domain/AbstractControl.ts","webpack://vue3-lo-form/./src/domain/FormControl.ts","webpack://vue3-lo-form/./src/domain/FormGroup.ts","webpack://vue3-lo-form/./src/filtres/extract-options.filter.ts","webpack://vue3-lo-form/./src/filtres/zoom-multiple.filter.ts","webpack://vue3-lo-form/./src/filtres/switch-enum-convert.filter.ts","webpack://vue3-lo-form/./src/components/form/StretchText.vue?7195","webpack://vue3-lo-form/./src/components/form/StretchText.vue","webpack://vue3-lo-form/./src/components/form/StretchText.vue?31a7","webpack://vue3-lo-form/./public/js/pinyin.ts","webpack://vue3-lo-form/./src/components/form/DvFormLayout.vue","webpack://vue3-lo-form/./src/components/form/DvFormLayout.vue?c1f7","webpack://vue3-lo-form/./src/services/date-format.service.ts","webpack://vue3-lo-form/./src/core/FormApi.ts","webpack://vue3-lo-form/./src/components/form/DvForm.vue","webpack://vue3-lo-form/./src/components/form/DvForm.vue?6916","webpack://vue3-lo-form/./src/index.ts","webpack://vue3-lo-form/./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js","webpack://vue3-lo-form/./src/constants/enum/zoom-type.ts"],"names":["root","factory","exports","module","define","amd","self","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","require","DynamicOptionType","GeneralDictionary","code","TreeDictionary","ValidateStatus","Success","Warning","Error","Validating","OptionType","Fixed","Dynamic","CacheType","FORM","TABLE","DICT","FormFieldClass","Layout","icon","Base","Senior","Switch","Disable","Enable","FormFieldType","Input","type","Textarea","InputNumber","Select","Radio","Checkbox","TimePicker","DatePicker","Slider","Rate","Upload","Editor","Cascader","TreeSelect","Custom","Empty","Grid","BuiltLabel","ORDERED_LIST","ControlFormatType","GENERAL","AMOUNT_OF_MONEY","BANK_CARD_NUMBER","CELL_PHONE_NUMBER","LANDLINE_NUMBER","FormBusAttr","SUBMITTED_TYPE","IS_SUPPLEMENT","IS_KEY_ELEMENTS","IS_TRACK","FormType","Pc","Mobile","LateralArrangement","AlignLeft","RightAlignment","Center","BothSidesAreEquallySpaced","AlignBothEnds","MoneyUnit","Yuan","TenThousandYuan","HundredMillionYuan","SubmittedType","EAST","CITIC","TOTAL_ELEMENTS","PBC_CAPITAL_DECLARATION","ENTERPRISE_CREDIT_REFERENCE","OTOHAF_SUBMISSION","EAST_F","PERSONAL_CREDIT","BS_09","BS_10","BS_11","BS_12","BS_13","BS_14","BS_15","BS_16","BS_17","BS_18","BS_19","BS_20","BS_21","BS_22","BS_23","BS_24","BS_25","BS_26","BS_27","BS_28","BS_29","BS_30","SupportUploadType","Arbitrarily","UploadType","Jpeg","Png","Gif","Bmp","Doc","html","Mp3","Mp4","Pdf","Ppt","Xls","Xml","Zip","Wps","ValidateRules","SameValue","hasContent","hasDescribe","MailBox","RegEx","MinTextLength","MaxTextLength","MinValue","MaxValue","SpecifiedValue","SpecifiedDigitsNumber","DateNotEarlierThan","DateNoLaterThan","SpecifiedRangeNumber","PhoneNumber","Required","LineUnique","LetterSpace","AlphanumericUnderline","Alphanumeric","JsMethodVerification","BackEndVerification","LandlineNumber","VerticalArrangement","AlignRight","textAlign","AlignTop","default","sfc","props","target","__vccOpts","val","ValidateGeneratorService","fillCheckRule","formControl","controlAttr","verificationRules","length","validates","forEach","item","validate","getBuiltInValidationRules","push","addValidate","ruleType","genSameValue","genMailBox","genRegEx","genMinTextLength","genMaxTextLength","genMinValue","genMaxValue","genSpecifiedValue","genSpecifiedDigitsNumber","genDateNotEarlierThan","genDateNoLaterThan","genSpecifiedRangeNumber","genPhoneNumber","genRequired","controlType","genLineUnique","genLetterSpace","genAlphanumericUnderline","genAlphanumeric","genJsMethodVerification","genBackEndVerification","genLandlineNumber","validateFunc","ruleContent","validateStatus","errorMsg","emreg","test","eval","describe","String","Number","undefined","countDecimals","Math","floor","toString","split","roundNumber","number","decimals","newString","round","numString","lastIndexOf","cutoff","d1","substring","d2","isNaN","roundedNum","decs","toDate","moment","e","indexOf","arr","reg","trim","Array","isArray","msg","func","Function","validateGeneratorService","window","currentScript","document","src","match","render","_ctx","_cache","$props","$setup","$data","$options","_ctx$desForm","_component_dv_form_layout","_resolveComponent","desForm","controls","_openBlock","_createElementBlock","ref","class","_normalizeClass","edit","styleMode","loFormTheme","_Fragment","_renderList","_createBlock","control","customFormats","linkList","onLinkClick","linkClick","index","onChange","$event","onFocus","onBlur","onClick","onAddonBefore","onAddonBeforeHandler","onAddonAfter","onAddonAfterHandler","onAddItem","selectAddItem","_createSlots","_","keys","$slots","propName","fn","_withCtx","slotProps","_renderSlot","content","_createCommentVNode","_typeof","obj","iterator","constructor","_toPrimitive","input","hint","prim","toPrimitive","res","TypeError","_toPropertyKey","arg","_defineProperty","toPropertyKey","configurable","writable","_withScopeId","_pushScopeId","_popScopeId","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_createElementVNode","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_component_a_tooltip","_component_question_circle_outlined","_component_clock_circle_outlined","_component_a_timeline_item","_component_a_timeline","_component_a_popconfirm","_component_search_outlined","_component_a_textarea","_component_a_input_number","_component_a_menu_item","_component_a_menu","_component_down_outlined","_component_a_button","_component_a_dropdown","_component_a_popover","_component_v_nodes","_component_a_divider","_component_plus_outlined","_component_a_select_option","_component_a_select","_component_a_radio","_component_a_radio_group","_component_a_checkbox","_component_a_col","_component_a_row","_component_a_checkbox_group","_component_a_switch","_component_a_time_picker","_component_a_month_picker","_component_a_date_picker","_component_a_slider","_component_a_cascader","_component_a_tree_select","_component_a_rate","_component_upload_outlined","_component_a_upload","_component_stretch_text","_component_eye_outlined","_component_eye_invisible_outlined","_component_a_form_item","_component_a_form","formFieldClass","isHideControl","formFieldType","layoutName","layout","style","_normalizeStyle","emptyLayoutContainerStyle","subControls","parentControl","onFixFormLayout","onHideControl","scopedPropName","generalLayoutContainerStyle","width","divWidthCompatibleToIe","_createVNode","labelCol","labelSpanWidth","wrapperCol","controlSpanMaxWidth","controlSpanWidth","colon","labelAlign","required","validateResult","help","provideInjectData","boundProperty","isMobileBrowser","label","isHideTitle","isBoldTitle","color","titleColor","_toDisplayString","formFieldDescribe","submittedType","placement","title","submittedTypeStr","overlayClassName","submittedSvg","tips","history","dot","time","before","_createTextVNode","after","author","historySvg","_resolveDynamicComponent","inputShape","bindingPrefix","builtInFrontLabel","bindingSuffix","builtInPostLabel","placeholder","disabled","isNotEdit","autoCompleteOptions","onInput","rows","textareaRows","showCount","maxCharacterCount","maxlength","zoomType","automatic","moneyUnits","moneyUnitsIndentScale","tabindex","trigger","getPopupContainer","triggerNode","parentNode","body","step","min","minValue","max","maxValue","formatter","numberFormatter","parser","numberParser","precision","decimalPlaces","onInputNumberFocus","onInputNumberBlur","unit","overlay","handleMoneyUnitMenuClick","defaultMoneyUnit","numberPopoverVisible","amountCapitalization","zoomMultiple","isMultipleChoice","dropdownClassName","hiddenDropdown","showArrow","filterOption","dropdownRender","menuNode","menu","vnodes","canAddEntry","onMousedown","preventDefault","options","checkboxStyle","checked","onOpeningText","whenClosedText","locale","is12Hours","useMonthPicker","format","dateFormat","isShowHoliday","showTime","showPickerTime","dateRender","current","date","isRest","isWeekday","isRadingDay","renderExtraFooter","changeOnSelect","cascaderFilter","cascaderOptions","treeNodeFilterProp","maxHeight","overflow","treeSelectOptions","treeDefaultExpandAll","isTreeOpen","accept","uploadType","multiple","onRemove","handleRemove","beforeUpload","handleUploadChange","customFieldName","formatData","textFold","fieldKey","href","isDesensitize","handlerMasking","isAfterClick","formTemplate","formId","appId","domainClassId","objectId","formType","formName","formAlias","formDescribe","useState","desDomainClass","desFormLayouts","layoutId","parentLayoutId","layoutType","gridSpace","gridColumnConfig","gridLateralArrangement","gridVerticalArrangement","layoutOrder","labelSpan","controlSpan","subDesFormLayout","desFormControls","desBusObject","SUBMITTED_SVG_XML","HISTORY_SVG_XML","FORM_ERROR_MODAL_SVG_XML","DROP_DOWN_LIST_SVG_XML","transform","configs","sort","a","b","order","join","generateGridTemplateColumns","generateGridColumnEnd","ApiService","createBasicHeaders","Accept","createAuthHeaders","data","JSON","parse","localStorage","getItem","sessionStorage","accessToken","jti","Authorization","fetch","path","query","method","header","urlQueryConvert","headers","then","response","status","statusText","url","json","error","message","connectiveSymbol","idx","apiService","NAME","STORE_NAME","DICT_STORE_NAME","CleanLocalForageService","$app","config","globalProperties","$qlForm","init","formConfig","driver","sourceLocalForage","version","storeName","description","localForage","setItem","dropInstance","cleanLocalForageService","DictLocalForageService","dictLocalForageService","FormBeanUtilsService","copy","stringify","str","formBeanUtilsService","FormLocalForageService","formLocalForageService","DesForm","formGroup","DesFormLayout","FormTreeNodeConvertService","arrayConvertToTreeNode","nodeContrast","parentId","nds","filter","children","id","treeNodeConvertToNzTreeNode","nzNodeContrast","isDisabledLeaf","nodes","node","isLeaf","selected","selectable","disableCheckbox","expanded","arrayConvertToNzTreeNode","treeNode","treeNodeConvertToCascaderOption","nzCascaderOptionContrast","loading","parent","nzTreeNodeConvertToMap","mapNodeOptions","arrayConvertToCascaderOption","treeNodeConvertToArray","childName","formTreeNodeConvertService","FormStore","setForms","FORMS","getForms","setVersion","VERSION","getVersion","formStore","DictStore","setDicts","nzTreeNodeOptions","DICTS","getDicts","setTreeDicts","TREE_DICTS","getTreeDicts","setMapDicts","MAP_DICTS","getMapDicts","setMapTreeDicts","MAP_TREE_DICTS","getMapTreeDicts","dictStore","DEFAULT_FORM_FILE_NAME","DEFAULT_DICT_FILE_NAME","DEFAULT_DICT_URL","RouterService","subapp","pushState","getPathFromUrl","getParamsFromUrl","parameter","urlParameterToParams","params","array","kv","decodeURIComponent","getParameterOfUrl","mark","routerService","FormValidateService","validateTips","formApis","scrollView","actualFormApis","allError","errMessage","formApi","errors","validateReport","concat","err","console","log","Modal","confirm","h","innerHTML","onOk","showErrorModal","okText","cancelText","_formApis$","_allError$","errorEl","getControlEl","getElementById","scrollTo","top","offsetTop","behavior","running","event","scrollTop","documentElement","calculationError","removeEventListener","showErrInput","addEventListener","el","count","interval","setInterval","opacity","clearInterval","formValidateService","FormToolsService","setSupHoliday","bool","supHoliday","setFormDisabledColor","setProperty","checkFirstLoadAndInitDesign","IS_FIRST_LOADED","Promise","resolve","all","initDesign","initDict","selectHolidays","designRes","dictRes","contextPath","traddayList","weekdayList","workdayList","LOAD_SUCCESS","forms","formVersion","loadMode","desForms","loadDesign","cacheType","desCacheVersion","cacheVersionNumber","formUrl","storageAddress","resEx","LOAD_FAIL","urls","mergeUrlByType","mergeUrlByCacheId","downloadUrl","appIds","resp","_resp$data","_query$appIds","address","cacheVersionMap","_item$desCacheVersion","_query$appIds2","_resp$data2","_query$appIds3","_item$desCacheVersion2","cacheVersionId","mergeFetchDesign","newDesForms","newDesForm","formatDesForm","onlySimpleLoadConfig","createFileDownloadAuthorizationHeader","fetches","dicts","treeDicts","mapDicts","mapTreeDicts","dictVersion","dictUrl","sysDictDetailOptions","sysDictTreeDetailOptions","mapSysDictDetailOptions","mapSysDictTreeDetailOptions","loadDict","url1","dictRestLoadOnlyBody","dictRestLoadMode","toLocaleUpperCase","dictRestLoadBody","dictRestLoadHeaders","distUrl","mergeFetchDict","sysDictInfos","dictionaryFormatCollection","inidDictOptions","fetchDicts","dictInfos","newDictInfos","empObj","filterDist","dictId","sysDictInfo","dictCd","dictNm","dictTp","comDictKeyValues","it","dictDetailsContrast","nzDictDetailsContrastContrast","treeDictKeyValues","suprDicPk","dictTreeDetailsContrast","nzDictTreeDetailsContrastContrast","mapTreeNodeOptions","sourceDesForm","recursionFormatForm","sortControls","formFieldId","desFormControl","values","find","active","isPasswordBox","enableAutoComplete","isFixedRowHeight","thousandthPercentileFormat","isShowCapitalization","isLineFeedDisplay","optionConfig","generalDictionaryOptions","treeShapeOptions","isSupportMultiple","customUploadType","isSearchable","isClearButton","desFormLayout","layoutControl","controlA","controlB","x","y","tableFieldOrder","loadResource","simple","responseType","formToolsService","currencyDigits","MAXIMUM_NUMBER","CN_ZERO","CN_ONE","CN_TWO","CN_THREE","CN_FOUR","CN_FIVE","CN_SIX","CN_SEVEN","CN_EIGHT","CN_NINE","CN_TEN","CN_HUNDRED","CN_THOUSAND","CN_TEN_THOUSAND","CN_HUNDRED_MILLION","CN_SYMBOL","CN_DOLLAR","DROP","CN_TEN_CENT","CN_CENT","CN_INTEGER","integral","decimal","outputCharacters","zeroCount","quotient","modulus","parts","digits","radices","bigRadices","prefix","substr","replace","divisor","num","DesFormControl","extendBoundPropertyOne","extendBoundPropertyTwo","fieldDefaultValue","titleWidth","controlWidth","initRowHeight","formatType","moneyUnit","defineOptionalUnits","defineOptionalUnitsDefault","isOptionType","dynamicOptionType","generalDictionary","treeShape","disableNonLeafNodes","timeFormat","maxUploadNumber","limitSize","supportUploadType","extendUploadType","attachmentExtendProperties","onOpeningValue","whenClosedValue","busAttr","itemWidth","AbstractControl","FormControl","formState","super","setValue","findIndex","removeValidate","splice","getValidate","result","text","textNoticeCallback","FormGroup","addControl","removeControl","transformReverse","extractOptions","args","storageOptions","encode","_getCurrentInstance","proxy","getCurrentInstance","mathjs","$mathjs","ZoomType","enlarge","evaluate","notation","narrow","switchEnumFiled","attribute","defaultVal","switchEnum","switchEnumConvert","unfold","ifOver","StretchText","Vue","mounted","onContentHandle","$emit","spanBox","offsetHeight","textBox","__decorate","Prop","Ref","Watch","Options","__exports__","char_dict","full_dict","polyphone","checkPolyphone","charcase","pinYin","getFullChars","RegExp","len","ch","unicode","charCodeAt","_getFullChar","toLocaleLowerCase","getCamelChars","chars","charAt","_getChar","_getResult","_capitalize","first","toUpperCase","spare","strlen","j","swap1","slice","swap2","k","DvFormLayout","onDefaultMoneyUnitHandler","newVal","onValidationFeedbackHandle","onFormValidateStateResetMarkHandle","$nextTick","initFormControlData","_this$control","_this$parentControl","verificationRule","controlFormatType","replaceUnit","parentControlAttr","toLowerCase","items","cascaderRecursion","treeSelectRecursion","hasFeedback","metaRefresh","context","option","dayjs","cascaderContextRecursion","treeSelectContextRecursion","customFormat","display","inputValue","some","currentIndex","cascaderOption","currentText","subText","subTitle","widthCompatibleMode","ActiveXObject","isIe","configIndex","proportion","total","ratio","_this$control2","gridTemplateColumns","_this$parentControl2","_this$control3","gridColumnEnd","mobileRegex","tabletRegex","userAgent","navigator","isMobile","isTablet","Date","attrSubmittedType","map","submittedTypeCheckedNode","clearNoNum","parseFloat","validateNumBeyondLimit","pureNumber","file","newFileList","fileList","_event$formControl","now","lastClickTime","notification","open","duration","ExclamationCircleOutlined","desApiAddr","encData","formData","oldValue","desParams","ciphertext","desensField","getFieldPlaintext","calDate","DateTime","$d","year","getFullYear","month","getMonth","strDate","getDate","Inject","immediate","filters","components","PlusOutlined","Form","FormItem","AutoComplete","Option","displayName","OptGroup","RadioGroup","CheckboxGroup","Tooltip","InputPassword","Popover","Popconfirm","Timeline","TimelineItem","Dropdown","Menu","Item","Button","Divider","MonthPicker","Row","Col","EyeOutlined","EyeInvisibleOutlined","VNodes","attrs","QuestionCircleOutlined","ClockCircleOutlined","DownOutlined","UploadOutlined","SearchOutlined","DateFormatService","formatDateTime","dayMap","day","getDay","week","hours","getHours","minutes","getMinutes","seconds","getSeconds","dateSizeCompare","startTime","endTime","getTime","Attribute","FormApi","getUuid","dvForm","DvForm","apiMetaRefresh","generateData","oldVal","contrast","srcData","jsonToFormData","setFormData","isDefault","setFormDataInner","setTimeout","getControl","showError","subControl","getValue","decodeData","setControlValue","resetValue","getText","getOptions","setOptions","setControlOptions","getAttribute","setAttribute","setControlAttribute","validateName","removeAllValidates","getValidates","setRequiredValidate","setValidate","isCover","setValidateInner","validateReports","refreshFeedback","refreshCheckFeedbackFlag","refreshValidate","resetFormValidateState","formValidateStateResetMark","setFormatDisplayAndOutput","refreshAndUpdateData","onRefreshArgumentsHandler","els","getElementsByClassName","checkHasUploadControl","abstractControl","judge","FormData","File","append","setFieldChangeHistory","fieldChangeHistory","propertyName","aTime","bTime","hideLayout","nowDateStr","FieldDefaultValue","IsOptionType","OptionConfig","isFinal","output","hexDigits","random","uuid","objectA","objectB","fieldInfoArr","changeLog","handlerFlag","getChangedInfo","newValue","fieldInfo","field_cd","field_nm","field_key","newDict","translateDictionaries","field_value","is_change","field_old_key","oldDict","field_old_value","oldName","newName","flag","getFormSubmittedType","form","strArr","list","subControlsList","submittedTypeList","IsHideControl","handleSubmittedData","codeArr","submittedData","getSubmittedType","DyForm","onPropFormValidateStateResetHandler","_provided","onPropHandler","win","themes","formTheme","$loFormTheme","_this$formLimits","formLimitObj","formLimits","created","initDesForm","onFormIdChanged","onSrcDesFormChanged","isReset","model","analysisBindingObjects","_this$formApi","generateFormGroup","initControlForm","generateFormApi","fixFormLayout","formView","$refs","cons","offsetLeft","clientWidth","con1","con2","models","objectExtraction","objectMerge","findDictOptions","propertys","lastMd","md","defaultValue","securityValue","subTtems","subValue","modelX","modelY","group","subFormGroup","_control$controlAttr","findFormControlByProperty","formLimit","loFormLimit","_controlAttr$verifica","isHide","requiredIndex","isMustFill","currentFormGroup","formObject","Boolean","Provide","install","app","installed","component","dictUrls","$formToolsService","mathjsDependencies","formatDependencies","subtractDependencies","multiplyDependencies","evaluateDependencies","addDependencies","divideDependencies","VueLoForm"],"mappings":"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AM,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,MAAO,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KA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","file":"vue3-lo-form.umd.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"vue3-lo-form\"] = factory();\n\telse\n\t\troot[\"vue3-lo-form\"] = factory();\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"fb15\");\n","module.exports = require(\"vue-property-decorator\");","// 动态字典类型\r\nconst DynamicOptionType = {\r\n GeneralDictionary: { code: \"1\", name: \"常规\" },\r\n TreeDictionary: { code: \"2\", name: \"树形\" },\r\n};\r\nexport { DynamicOptionType };\r\n","module.exports = require(\"core-js/modules/es.array.push.js\");","// 校验状态\r\nconst ValidateStatus: any = {\r\n Success: { code: \"success\", name: \"通过\" },\r\n Warning: { code: \"warning\", name: \"警告\" },\r\n Error: { code: \"error\", name: \"未通过\" },\r\n Validating: { code: \"validating\", name: \"校验中\" },\r\n};\r\nexport { ValidateStatus };\r\n","module.exports = require(\"dayjs/locale/zh-cn\");","module.exports = require(\"ant-design-vue\");","const OptionType = {\r\n Fixed: { code: \"1\", name: \"固定\" },\r\n Dynamic: { code: \"2\", name: \"动态\" },\r\n};\r\nexport { OptionType };\r\n","module.exports = require(\"dayjs\");","module.exports = require(\"vue\");","module.exports = require(\"@ant-design/icons-vue\");","// 数据缓存类型\r\nconst CacheType = {\r\n FORM: { code: \"1\", name: \"表格\" },\r\n TABLE: { code: \"2\", name: \"表单\" },\r\n DICT: { code: \"3\", name: \"字典\" },\r\n};\r\nexport { CacheType };\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./DvForm.vue?vue&type=style&index=0&id=53fc1ce0&lang=scss&scoped=true\"","// 字段分类\r\nconst FormFieldClass = {\r\n Layout: { code: \"1\", name: \"布局\", icon: \"profile\" },\r\n Base: { code: \"2\", name: \"基础字段\", icon: \"profile\" },\r\n Senior: { code: \"3\", name: \"高级字段\", icon: \"profile\" },\r\n};\r\nexport { FormFieldClass };\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./DvFormLayout.vue?vue&type=style&index=0&id=7be785be&lang=scss&scoped=true\"","module.exports = require(\"mathjs\");","module.exports = require(\"ant-design-vue/es/date-picker/locale/zh_CN\");","module.exports = require(\"localforage\");","module.exports = require(\"moment\");","const Switch = {\r\n Disable: { code: \"0\", name: \"禁用\" },\r\n Enable: { code: \"1\", name: \"启用\" },\r\n};\r\nexport { Switch };\r\n","import { FormFieldClass } from \"./form-field-class.enum\";\r\n// 控件类型\r\nconst FormFieldType = {\r\n Input: { code: \"1\", name: \"输入框\", icon: \"icondanhangwenben\", type: FormFieldClass.Base.code },\r\n Textarea: { code: \"2\", name: \"多行文本\", icon: \"iconduohangwenben\", type: FormFieldClass.Base.code },\r\n InputNumber: { code: \"3\", name: \"数字输入框\", icon: \"iconjishuqi\", type: FormFieldClass.Base.code },\r\n Select: { code: \"4\", name: \"选择器\", icon: \"iconxialaxuanzekuang\", type: FormFieldClass.Base.code },\r\n Radio: { code: \"5\", name: \"单选框\", icon: \"icondanxuankuangzu\", type: FormFieldClass.Base.code },\r\n Checkbox: { code: \"6\", name: \"多选框\", icon: \"iconduoxuankuangzu\", type: FormFieldClass.Base.code },\r\n Switch: { code: \"7\", name: \"开关\", icon: \"iconkaiguan\", type: FormFieldClass.Base.code },\r\n TimePicker: { code: \"8\", name: \"时间选择框\", icon: \"iconshijianxuanzeqi\", type: FormFieldClass.Base.code },\r\n DatePicker: { code: \"9\", name: \"日期选择框\", icon: \"iconriqixuanzeqi\", type: FormFieldClass.Base.code },\r\n Slider: { code: \"10\", name: \"滑动输入条\", icon: \"iconhuakuai\", type: FormFieldClass.Base.code },\r\n Rate: { code: \"11\", name: \"评分\", icon: \"iconpingfen\", type: FormFieldClass.Base.code },\r\n\r\n Upload: { code: \"50\", name: \"上传\", icon: \"iconwenjian\", type: FormFieldClass.Senior.code },\r\n Editor: { code: \"51\", name: \"编辑器\", icon: \"iconbianjiqi\", type: FormFieldClass.Senior.code },\r\n Cascader: { code: \"52\", name: \"级联选择\", icon: \"iconjilianxuanzeqi\", type: FormFieldClass.Senior.code },\r\n TreeSelect: { code: \"53\", name: \"树选择\", icon: \"iconxialaxuanzekuang\", type: FormFieldClass.Senior.code },\r\n Custom: { code: \"54\", name: \"自定义组件\", icon: \"iconzidingyizujian\", type: FormFieldClass.Senior.code },\r\n\r\n Empty: { code: \"101\", name: \"根布局\", icon: \"iconzhagebuju\", type: FormFieldClass.Layout.code },\r\n Grid: { code: \"102\", name: \"栅格\", icon: \"iconzhagebuju\", type: FormFieldClass.Layout.code },\r\n};\r\nexport { FormFieldType };\r\n","// 内置前/后置标签\r\nconst BuiltLabel = {\r\n ORDERED_LIST: { code: \"1\", name: \"ordered-list\" },\r\n};\r\nexport { BuiltLabel };\r\n","// 控件格式化类型\r\nconst ControlFormatType = {\r\n GENERAL: { code: \"1\", name: \"常规数字\" },\r\n AMOUNT_OF_MONEY: { code: \"2\", name: \"金额\" },\r\n BANK_CARD_NUMBER: { code: \"3\", name: \"银行卡号\" },\r\n CELL_PHONE_NUMBER: { code: \"4\", name: \"手机号\" },\r\n LANDLINE_NUMBER: { code: \"5\", name: \"座机号\" },\r\n};\r\nexport { ControlFormatType };\r\n","// 动态字典类型\r\nconst FormBusAttr = {\r\n SUBMITTED_TYPE: { code: \"submittedType\", name: \"报送类型\" },\r\n IS_SUPPLEMENT: { code: \"isSupplement\", name: \"是否补录\" },\r\n IS_KEY_ELEMENTS: { code: \"isKeyElements\", name: \"是否关键要素\" },\r\n IS_TRACK: { code: \"isTrack\", name: \"是否追踪\" },\r\n};\r\nexport { FormBusAttr };\r\n","const FormType = {\r\n Pc: { code: \"1\", name: \"PC端\" },\r\n Mobile: { code: \"2\", name: \"移动端\" },\r\n};\r\nexport { FormType };\r\n","// 横向排列\r\nconst LateralArrangement = {\r\n AlignLeft: { code: \"1\", name: \"左对齐\" },\r\n RightAlignment: { code: \"2\", name: \"右对齐\" },\r\n Center: { code: \"3\", name: \"居中\" },\r\n BothSidesAreEquallySpaced: { code: \"4\", name: \"两侧间隔相等\" },\r\n AlignBothEnds: { code: \"5\", name: \"两端对齐\" },\r\n};\r\nexport { LateralArrangement };\r\n","const MoneyUnit = {\r\n Yuan: { code: \"1\", name: \"元\" },\r\n TenThousandYuan: { code: \"2\", name: \"万元\" },\r\n HundredMillionYuan: { code: \"3\", name: \"亿元\" },\r\n};\r\nexport { MoneyUnit };\r\n","// 报送信息类型\r\nconst SubmittedType = {\r\n EAST: { code: \"1\", name: \"EAST\" },\r\n CITIC: { code: \"2\", name: \"中信登\" },\r\n TOTAL_ELEMENTS: { code: \"3\", name: \"全要素\" },\r\n PBC_CAPITAL_DECLARATION: { code: \"4\", name: \"人行资金申报\" },\r\n ENTERPRISE_CREDIT_REFERENCE: { code: \"5\", name: \"企业征信\" },\r\n OTOHAF_SUBMISSION: { code: \"6\", name: \"1104报送\" },\r\n EAST_F: { code: \"7\", name: \"EAST4.0\" },\r\n PERSONAL_CREDIT: { code: \"8\", name: \"个人征信\" },\r\n BS_09: { code: \"9\", name: \"非现场监管报表\" },\r\n BS_10: { code: \"10\", name: \"银监其他\" },\r\n BS_11: { code: \"11\", name: \"人行资管产品统计逐产品采集\" },\r\n BS_12: { code: \"12\", name: \"人行其他\" },\r\n BS_13: { code: \"13\", name: \"其他报表\" },\r\n BS_14: { code: \"14\", name: \"反洗钱\" },\r\n BS_15: { code: \"15\", name: \"关联交易\" },\r\n BS_16: { code: \"16\", name: \"事前报告\" },\r\n BS_17: { code: \"17\", name: \"银监风险项目要素表\" },\r\n BS_18: { code: \"18\", name: \"金控重点监测项目数据报送\" },\r\n BS_19: { code: \"19\", name: \"中央企业金融风险事项统计表\" },\r\n BS_20: { code: \"20\", name: \"主动管理项目清单\" },\r\n BS_21: { code: \"21\", name: \"风险项目要素表(重大预警及关注不良)\" },\r\n BS_22: { code: \"22\", name: \"人行金融基础数据报送\" },\r\n BS_23: { code: \"23\", name: \"人行利率报备\" },\r\n BS_24: { code: \"24\", name: \"EAST5.0\" },\r\n BS_25: { code: \"25\", name: \"新中信登\" },\r\n BS_26: { code: \"26\", name: \"集团司库资金系统投融资数据报送\" },\r\n BS_27: { code: \"27\", name: \"金控客户协同\" },\r\n BS_28: { code: \"28\", name: \"金控大额交易\" },\r\n BS_29: { code: \"29\", name: \"五篇大文章\" },\r\n BS_30: { code: \"30\", name: \"金控重大风险预警及关注与不良项目情况表\" },\r\n};\r\nexport { SubmittedType };\r\n","const SupportUploadType = {\r\n Arbitrarily: { code: \"1\", name: \"任意类型\" },\r\n Custom: { code: \"2\", name: \"自定义类型\" },\r\n};\r\nexport { SupportUploadType };\r\n","const UploadType = {\r\n Jpeg: { code: \"image/jpeg\", name: \"jpeg/jpg/jpe\" },\r\n Png: { code: \"image/png\", name: \"png\" },\r\n Gif: { code: \"image/gif\", name: \"gif\" },\r\n Bmp: { code: \"image/bmp\", name: \"bmp\" },\r\n Doc: { code: \"application/msword\", name: \"doc\" },\r\n html: { code: \"text/html\", name: \"html\" },\r\n Mp3: { code: \"audio/mpeg\", name: \"mp3\" },\r\n Mp4: { code: \"audio/mp4\", name: \"mp4\" },\r\n Pdf: { code: \"application/pdf\", name: \"pdf\" },\r\n Ppt: { code: \"application/vnd.ms-powerpoint\", name: \"ppt\" },\r\n Xls: { code: \"application/vnd.ms-excel\", name: \"xls\" },\r\n Xml: { code: \"application/xml\", name: \"xml\" },\r\n Zip: { code: \"aplication/zip\", name: \"zip\" },\r\n Wps: { code: \"application/vnd.ms-works\", name: \"wps\" },\r\n};\r\nexport { UploadType };\r\n","// 校验规则\r\nconst ValidateRules: any = {\r\n SameValue: { code: \"1\", name: \"相同的值\", hasContent: true, hasDescribe: false },\r\n MailBox: { code: \"2\", name: \"电子邮箱\", hasContent: false, hasDescribe: false },\r\n RegEx: { code: \"3\", name: \"正则表达式\", hasContent: true, hasDescribe: true },\r\n MinTextLength: { code: \"4\", name: \"最小文本长度\", hasContent: true, hasDescribe: false },\r\n MaxTextLength: { code: \"5\", name: \"最大文本长度\", hasContent: true, hasDescribe: false },\r\n MinValue: { code: \"6\", name: \"最小数值\", hasContent: true, hasDescribe: false },\r\n MaxValue: { code: \"7\", name: \"最大数值\", hasContent: true, hasDescribe: false },\r\n SpecifiedValue: { code: \"8\", name: \"指定的值\", hasContent: true, hasDescribe: false },\r\n SpecifiedDigitsNumber: { code: \"9\", name: \"指定位数的数字\", hasContent: true, hasDescribe: false },\r\n DateNotEarlierThan: { code: \"10\", name: \"日期不早于\", hasContent: true, hasDescribe: false },\r\n DateNoLaterThan: { code: \"11\", name: \"日期不晚于\", hasContent: true, hasDescribe: false },\r\n SpecifiedRangeNumber: { code: \"12\", name: \"指定范围的数字(包含最小/大值)\", hasContent: true, hasDescribe: false },\r\n PhoneNumber: { code: \"13\", name: \"手机号码\", hasContent: false, hasDescribe: false },\r\n Required: { code: \"14\", name: \"必填\", hasContent: false, hasDescribe: false },\r\n LineUnique: { code: \"15\", name: \"行唯一\", hasContent: false, hasDescribe: false },\r\n LetterSpace: { code: \"16\", name: \"字母空格\", hasContent: false, hasDescribe: false },\r\n AlphanumericUnderline: { code: \"17\", name: \"字母数字横线下划线\", hasContent: false, hasDescribe: false },\r\n Alphanumeric: { code: \"18\", name: \"字母数字\", hasContent: false, hasDescribe: false },\r\n JsMethodVerification: { code: \"19\", name: \"JS方法校验\", hasContent: true, hasDescribe: true },\r\n BackEndVerification: { code: \"20\", name: \"后端校验\", hasContent: false, hasDescribe: false },\r\n LandlineNumber: { code: \"21\", name: \"座机校验\", hasContent: false, hasDescribe: false },\r\n};\r\nexport { ValidateRules };\r\n","// 标签对齐方式\r\nconst VerticalArrangement = {\r\n AlignRight: { code: \"1\", name: \"右对齐\", value: \"horizontal\", textAlign: \"right\" },\r\n AlignTop: { code: \"2\", name: \"顶部对齐\", value: \"vertical\", textAlign: \"left\" },\r\n AlignLeft: { code: \"3\", name: \"左对齐\", value: \"horizontal\", textAlign: \"left\" },\r\n};\r\nexport { VerticalArrangement };\r\n","module.exports = require(\"tslib\");","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports.default = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\n","module.exports = require(\"core-js/modules/es.error.cause.js\");","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./StretchText.vue?vue&type=style&index=0&id=12085cfe&lang=scss&scoped=true\"","import { DesFormControl, FormControl, Validate } from \"../domain\";\r\nimport { FormFieldType, ValidateRules, ValidateStatus } from \"../constants/enum\";\r\nimport moment from \"moment\";\r\n\r\ninterface Rule {\r\n ruleType?: any;\r\n ruleContent?: any;\r\n describe?: any;\r\n}\r\n\r\nclass ValidateGeneratorService {\r\n /**\r\n * @description: 填充校验规则\r\n * @author ChenRui\r\n * @date 2021/1/27 15:07\r\n */\r\n fillCheckRule(formControl: FormControl, controlAttr: DesFormControl): void {\r\n if (controlAttr.verificationRules && controlAttr.verificationRules.length > 0) {\r\n const validates: Validate[] = [];\r\n controlAttr.verificationRules.forEach((item: Rule) => {\r\n const validate: Validate | undefined = this.getBuiltInValidationRules(item, controlAttr);\r\n if (validate) {\r\n validates.push(validate);\r\n }\r\n });\r\n formControl.addValidate(validates);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 获取校验规则\r\n * @author ChenRui\r\n * @date 2021/7/19 17:55\r\n */\r\n getBuiltInValidationRules(item: Rule, controlAttr: DesFormControl): Validate | undefined {\r\n let validate: Validate | undefined;\r\n switch (item.ruleType) {\r\n case ValidateRules.SameValue.code:\r\n validate = this.genSameValue(item);\r\n break;\r\n case ValidateRules.MailBox.code:\r\n validate = this.genMailBox(item);\r\n break;\r\n case ValidateRules.RegEx.code:\r\n validate = this.genRegEx(item);\r\n break;\r\n case ValidateRules.MinTextLength.code:\r\n validate = this.genMinTextLength(item);\r\n break;\r\n case ValidateRules.MaxTextLength.code:\r\n validate = this.genMaxTextLength(item);\r\n break;\r\n case ValidateRules.MinValue.code:\r\n validate = this.genMinValue(item);\r\n break;\r\n case ValidateRules.MaxValue.code:\r\n validate = this.genMaxValue(item);\r\n break;\r\n case ValidateRules.SpecifiedValue.code:\r\n validate = this.genSpecifiedValue(item);\r\n break;\r\n case ValidateRules.SpecifiedDigitsNumber.code:\r\n validate = this.genSpecifiedDigitsNumber(item);\r\n break;\r\n case ValidateRules.DateNotEarlierThan.code:\r\n validate = this.genDateNotEarlierThan(item);\r\n break;\r\n case ValidateRules.DateNoLaterThan.code:\r\n validate = this.genDateNoLaterThan(item);\r\n break;\r\n case ValidateRules.SpecifiedRangeNumber.code:\r\n validate = this.genSpecifiedRangeNumber(item);\r\n break;\r\n case ValidateRules.PhoneNumber.code:\r\n validate = this.genPhoneNumber(item);\r\n break;\r\n case ValidateRules.Required.code:\r\n validate = this.genRequired(item, controlAttr.controlType);\r\n break;\r\n case ValidateRules.LineUnique.code:\r\n validate = this.genLineUnique(item);\r\n break;\r\n case ValidateRules.LetterSpace.code:\r\n validate = this.genLetterSpace(item);\r\n break;\r\n case ValidateRules.AlphanumericUnderline.code:\r\n validate = this.genAlphanumericUnderline(item);\r\n break;\r\n case ValidateRules.Alphanumeric.code:\r\n validate = this.genAlphanumeric(item);\r\n break;\r\n case ValidateRules.JsMethodVerification.code:\r\n validate = this.genJsMethodVerification(item);\r\n break;\r\n case ValidateRules.BackEndVerification.code:\r\n validate = this.genBackEndVerification(item);\r\n break;\r\n case ValidateRules.LandlineNumber.code:\r\n validate = this.genLandlineNumber(item);\r\n break;\r\n }\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 相同的值\r\n * @author ChenRui\r\n * @date 2021/1/27 15:12\r\n */\r\n genSameValue(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && val != item.ruleContent) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `与预期值(${item.ruleContent})不符`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 电子邮箱\r\n * @author ChenRui\r\n * @date 2021/1/27 15:15\r\n */\r\n genMailBox(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n const emreg = /^\\w{3,}(\\.\\w+)*@[A-z0-9]+(\\.[A-z]{2,5}){1,2}$/;\r\n if (!emreg.test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: \"电子邮件格式不正确\",\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 正则匹配\r\n * @author ChenRui\r\n * @date 2021/1/27 15:17\r\n */\r\n genRegEx(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && !eval(item.ruleContent).test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: item.describe ? item.describe : `'不满足正则校验'${item.ruleContent}`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 最小文本长度\r\n * @author ChenRui\r\n * @date 2021/1/27 15:18\r\n */\r\n genMinTextLength(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && val && String(val).length < Number(item.ruleContent)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `内容不少于${item.ruleContent}个字`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 最大文本长度\r\n * @author ChenRui\r\n * @date 2021/1/27 15:21\r\n */\r\n genMaxTextLength(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && val && String(val).length > Number(item.ruleContent)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `内容不超过${item.ruleContent}个字`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 最小值\r\n * @author ChenRui\r\n * @date 2021/1/27 15:24\r\n */\r\n genMinValue(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != undefined && val !== \"\") {\r\n if (item.ruleContent != null && val != null && val !== \"\" && Number(val) < Number(item.ruleContent)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `数值不能小于${item.ruleContent}`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 最大值\r\n * @author ChenRui\r\n * @date 2021/1/27 15:25\r\n */\r\n genMaxValue(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != undefined && val !== \"\") {\r\n if (item.ruleContent != null && val != null && val !== \"\" && Number(val) > Number(item.ruleContent)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `数值不能大于${item.ruleContent}`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 指定的值\r\n * @author ChenRui\r\n * @date 2021/1/27 15:27\r\n */\r\n genSpecifiedValue(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && val != item.ruleContent) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `与预期值(${item.ruleContent})不符`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 指定位数数字\r\n * @author ChenRui\r\n * @date 2021/1/27 15:31\r\n */\r\n genSpecifiedDigitsNumber(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != undefined && val !== \"\") {\r\n if (item.ruleContent && val) {\r\n let countDecimals = 0;\r\n if (Math.floor(val).toString() !== val.toString()) {\r\n countDecimals = val.toString().split(\".\")[1].length || 0;\r\n }\r\n if (countDecimals != Number(item.ruleContent)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: item.ruleContent === \"0\" || item.ruleContent === 0 ? `请输入整数` : `请保留${item.ruleContent}位小数`,\r\n };\r\n }\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 自动补位\r\n * @author ChenRui\r\n * @date 2021/1/27 15:59\r\n */\r\n roundNumber(number: any, decimals: any): any {\r\n let newString; // The new rounded number\r\n decimals = Number(decimals);\r\n if (decimals < 1) {\r\n newString = Math.round(number).toString();\r\n } else {\r\n let numString = number.toString();\r\n if (numString.lastIndexOf(\".\") == -1) {\r\n // If there is no decimal point\r\n numString += \".\"; // give it one at the end\r\n }\r\n let cutoff = numString.lastIndexOf(\".\") + decimals; // The point at which to truncate the number\r\n let d1: any = Number(numString.substring(cutoff, cutoff + 1)); // The value of the last decimal place that we'll end up with\r\n const d2 = Number(numString.substring(cutoff + 1, cutoff + 2)); // The next decimal, after the last one we want\r\n if (d2 >= 5) {\r\n // Do we need to round up at all? If not, the string will just be truncated\r\n if (d1 == 9 && cutoff > 0) {\r\n // If the last digit is 9, find a new cutoff point\r\n while (cutoff > 0 && (d1 == 9 || isNaN(d1))) {\r\n if (d1 != \".\") {\r\n cutoff -= 1;\r\n d1 = Number(numString.substring(cutoff, cutoff + 1));\r\n } else {\r\n cutoff -= 1;\r\n }\r\n }\r\n }\r\n d1 += 1;\r\n }\r\n if (d1 == 10) {\r\n numString = numString.substring(0, numString.lastIndexOf(\".\"));\r\n const roundedNum = Number(numString) + 1;\r\n newString = roundedNum.toString() + \".\";\r\n } else {\r\n newString = numString.substring(0, cutoff) + d1.toString();\r\n }\r\n }\r\n if (newString.lastIndexOf(\".\") == -1) {\r\n // Do this again, to the new string\r\n newString += \".\";\r\n }\r\n const decs = newString.substring(newString.lastIndexOf(\".\") + 1).length;\r\n for (let i = 0; i < decimals - decs; i++) newString += \"0\";\r\n return newString;\r\n }\r\n\r\n /**\r\n * @description: 日期不早于\r\n * @author ChenRui\r\n * @date 2021/1/27 16:06\r\n */\r\n genDateNotEarlierThan(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && val) {\r\n try {\r\n if (val.toDate() > moment(item.ruleContent).toDate()) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `日期不早于${item.ruleContent}`,\r\n };\r\n }\r\n } catch (e) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `最大值日期(${item.ruleContent})格式有误!`,\r\n };\r\n }\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 日期不晚于\r\n * @author ChenRui\r\n * @date 2021/1/27 16:08\r\n */\r\n genDateNoLaterThan(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && val) {\r\n try {\r\n if (val.toDate() < moment(item.ruleContent).toDate()) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `日期不晚于${item.ruleContent}`,\r\n };\r\n }\r\n } catch (e) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `最小值日期(${item.ruleContent})格式有误!`,\r\n };\r\n }\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 指定范围的数字\r\n * @author ChenRui\r\n * @date 2021/1/27 16:35\r\n */\r\n genSpecifiedRangeNumber(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent != null && val && item.ruleContent.indexOf(\"/\") > -1) {\r\n const arr: any[] = item.ruleContent.split(\"/\");\r\n if (arr && arr.length > 1) {\r\n if (val < Number(arr[0]) || val > Number(arr[1])) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `数值大小应在${arr[0]}~${arr[1]}之间`,\r\n };\r\n }\r\n }\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 手机号\r\n * @author ChenRui\r\n * @date 2021/1/27 16:55\r\n */\r\n genPhoneNumber(item: Rule): Validate {\r\n const reg = /^0?1[3|4|5|6|7|8|9][0-9]\\d{8}$/;\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (val && !reg.test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: \"手机号不合法\",\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 必填\r\n * @author ChenRui\r\n * @date 2021/1/27 15:28\r\n */\r\n genRequired(item: Rule, controlType: string): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val == null || (typeof val == \"string\" && val.trim() === \"\") || (Array.isArray(val) && val.length === 0)) {\r\n let msg = \"为必输项\";\r\n if (controlType === FormFieldType.Select.code || controlType === FormFieldType.Radio.code || controlType === FormFieldType.Checkbox.code) {\r\n msg += \",请选择\";\r\n } else {\r\n msg += \",请输入\";\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: msg,\r\n };\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 唯一行\r\n * @author ChenRui\r\n * @date 2021/1/27 17:16\r\n */\r\n genLineUnique(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: () => {\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 仅包含字母空格\r\n * @author ChenRui\r\n * @date 2021/1/27 17:21\r\n */\r\n genLetterSpace(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n const reg = /^(?!_)([A-Za-z ]+)$/;\r\n if (val && !reg.test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: \"仅包含字母空格\",\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 数字字母下划线\r\n * @author ChenRui\r\n * @date 2021/1/27 17:28\r\n */\r\n genAlphanumericUnderline(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n const reg = /^[a-zA-Z0-9_]{1,}$/;\r\n if (val && !reg.test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: \"仅包含数字字母下划线\",\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 字母数字\r\n * @author ChenRui\r\n * @date 2021/1/27 17:32\r\n */\r\n genAlphanumeric(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n const reg = /^[0-9a-zA-Z]*$/g;\r\n if (val && !reg.test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: \"仅包含数字字母\",\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: JS方法校验\r\n * @author ChenRui\r\n * @date 2021/1/27 17:42\r\n */\r\n genJsMethodVerification(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (val && item.ruleContent) {\r\n try {\r\n const func = new Function(item.ruleContent);\r\n return func(val);\r\n } catch (e) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: item.describe ? item.describe : `'JS校验函数不合法`,\r\n };\r\n }\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 后端校验\r\n * @author ChenRui\r\n * @date 2021/1/27 17:43\r\n */\r\n genBackEndVerification(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: () => {\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 座机号校验\r\n * @author ChenRui\r\n * @date 2021/4/14 11:40\r\n */\r\n genLandlineNumber(item: Rule): Validate {\r\n const reg = /^0\\d{2,3}-?\\d{7,8}$/;\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (val && !reg.test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: \"座机号不合法\",\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n}\r\nconst validateGeneratorService = new ValidateGeneratorService();\r\nexport { Rule, validateGeneratorService };\r\n","// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n var currentScript = window.document.currentScript\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n var getCurrentScript = require('@soda/get-current-script')\n currentScript = getCurrentScript()\n\n // for backward compatibility, because previously we directly included the polyfill\n if (!('currentScript' in document)) {\n Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n }\n }\n\n var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n if (src) {\n __webpack_public_path__ = src[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, renderSlot as _renderSlot, resolveComponent as _resolveComponent, withCtx as _withCtx, createSlots as _createSlots, createBlock as _createBlock, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_dv_form_layout = _resolveComponent(\"dv-form-layout\")!\n\n return (_ctx.desForm?.controls?.length)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n ref: \"formView\",\n class: _normalizeClass('lo-form-container ' + ('lo-' + (_ctx.edit ? 'enable' : 'disable') + '-edit') + ' lo-class-style-' + _ctx.styleMode + ' lo-form-theme-' + _ctx.loFormTheme)\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.desForm.controls, (item, i) => {\n return (_openBlock(), _createBlock(_component_dv_form_layout, {\n key: i,\n control: item,\n customFormats: _ctx.customFormats,\n linkList: _ctx.linkList,\n onLinkClick: _ctx.linkClick,\n index: i,\n onChange: _cache[0] || (_cache[0] = ($event: any) => (_ctx.onChange($event))),\n onFocus: _cache[1] || (_cache[1] = ($event: any) => (_ctx.onFocus($event))),\n onBlur: _cache[2] || (_cache[2] = ($event: any) => (_ctx.onBlur($event))),\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.onClick($event))),\n onAddonBefore: _cache[4] || (_cache[4] = ($event: any) => (_ctx.onAddonBeforeHandler($event))),\n onAddonAfter: _cache[5] || (_cache[5] = ($event: any) => (_ctx.onAddonAfterHandler($event))),\n onAddItem: _cache[6] || (_cache[6] = ($event: any) => (_ctx.selectAddItem($event)))\n }, _createSlots({ _: 2 }, [\n _renderList(Object.keys(this.$slots), (propName) => {\n return {\n name: propName,\n fn: _withCtx((slotProps) => [\n _renderSlot(_ctx.$slots, propName, {\n content: slotProps.content,\n control: slotProps.control,\n onChange: slotProps.onChange\n }, undefined, true)\n ])\n }\n })\n ]), 1032, [\"control\", \"customFormats\", \"linkList\", \"onLinkClick\", \"index\"]))\n }), 128))\n ], 2))\n : _createCommentVNode(\"\", true)\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, renderSlot as _renderSlot, resolveDynamicComponent as _resolveDynamicComponent, createSlots as _createSlots, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = (n: any) => (_pushScopeId(\"data-v-7be785be\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"lo-control-box\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = [\"src\"]\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"lo-history-popconfirm-title\" }, \"历史修改\", -1))\nconst _hoisted_5 = { class: \"lo-history-context\" }\nconst _hoisted_6 = { class: \"lo-important lo-mx-10\" }\nconst _hoisted_7 = { class: \"lo-important lo-mx-10\" }\nconst _hoisted_8 = { class: \"lo-important lo-ml-10\" }\nconst _hoisted_9 = [\"src\"]\nconst _hoisted_10 = { class: \"number-format-show\" }\nconst _hoisted_11 = { class: \"addon-inner\" }\nconst _hoisted_12 = { class: \"ant-picker-cell-inner calendar-control-style\" }\nconst _hoisted_13 = { class: \"date-control-style\" }\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"eest-day-style\" }, null, -1))\nconst _hoisted_15 = { class: \"date-style\" }\nconst _hoisted_16 = { class: \"eest-day-style\" }\nconst _hoisted_17 = {\n key: 0,\n class: \"holidays-style\"\n}\nconst _hoisted_18 = {\n key: 1,\n class: \"weekday-style\"\n}\nconst _hoisted_19 = { class: \"date-type-style\" }\nconst _hoisted_20 = {\n key: 0,\n class: \"trading-day-style\"\n}\nconst _hoisted_21 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"legend\" }, [\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"day-explain-style\" }, [\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"trading-day-icon\" }),\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"day-explain\" }, \"交易日\")\n ])\n], -1))\nconst _hoisted_22 = { class: \"lo-input-content\" }\nconst _hoisted_23 = [\"title\"]\nconst _hoisted_24 = { key: 1 }\nconst _hoisted_25 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"flex-grow-1\" }, null, -1))\nconst _hoisted_26 = {\n key: 0,\n class: \"addon-readonly\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_a_tooltip = _resolveComponent(\"a-tooltip\")!\n const _component_question_circle_outlined = _resolveComponent(\"question-circle-outlined\")!\n const _component_clock_circle_outlined = _resolveComponent(\"clock-circle-outlined\")!\n const _component_a_timeline_item = _resolveComponent(\"a-timeline-item\")!\n const _component_a_timeline = _resolveComponent(\"a-timeline\")!\n const _component_a_popconfirm = _resolveComponent(\"a-popconfirm\")!\n const _component_search_outlined = _resolveComponent(\"search-outlined\")!\n const _component_a_textarea = _resolveComponent(\"a-textarea\")!\n const _component_a_input_number = _resolveComponent(\"a-input-number\")!\n const _component_a_menu_item = _resolveComponent(\"a-menu-item\")!\n const _component_a_menu = _resolveComponent(\"a-menu\")!\n const _component_down_outlined = _resolveComponent(\"down-outlined\")!\n const _component_a_button = _resolveComponent(\"a-button\")!\n const _component_a_dropdown = _resolveComponent(\"a-dropdown\")!\n const _component_a_popover = _resolveComponent(\"a-popover\")!\n const _component_v_nodes = _resolveComponent(\"v-nodes\")!\n const _component_a_divider = _resolveComponent(\"a-divider\")!\n const _component_plus_outlined = _resolveComponent(\"plus-outlined\")!\n const _component_a_select_option = _resolveComponent(\"a-select-option\")!\n const _component_a_select = _resolveComponent(\"a-select\")!\n const _component_a_radio = _resolveComponent(\"a-radio\")!\n const _component_a_radio_group = _resolveComponent(\"a-radio-group\")!\n const _component_a_checkbox = _resolveComponent(\"a-checkbox\")!\n const _component_a_col = _resolveComponent(\"a-col\")!\n const _component_a_row = _resolveComponent(\"a-row\")!\n const _component_a_checkbox_group = _resolveComponent(\"a-checkbox-group\")!\n const _component_a_switch = _resolveComponent(\"a-switch\")!\n const _component_a_time_picker = _resolveComponent(\"a-time-picker\")!\n const _component_a_month_picker = _resolveComponent(\"a-month-picker\")!\n const _component_a_date_picker = _resolveComponent(\"a-date-picker\")!\n const _component_a_slider = _resolveComponent(\"a-slider\")!\n const _component_a_cascader = _resolveComponent(\"a-cascader\")!\n const _component_a_tree_select = _resolveComponent(\"a-tree-select\")!\n const _component_a_rate = _resolveComponent(\"a-rate\")!\n const _component_upload_outlined = _resolveComponent(\"upload-outlined\")!\n const _component_a_upload = _resolveComponent(\"a-upload\")!\n const _component_stretch_text = _resolveComponent(\"stretch-text\")!\n const _component_eye_outlined = _resolveComponent(\"eye-outlined\")!\n const _component_eye_invisible_outlined = _resolveComponent(\"eye-invisible-outlined\")!\n const _component_a_form_item = _resolveComponent(\"a-form-item\")!\n const _component_dv_form_layout = _resolveComponent(\"dv-form-layout\", true)!\n const _component_a_form = _resolveComponent(\"a-form\")!\n\n return ((_ctx.control.type === _ctx.formFieldClass.Base.code || _ctx.control.type === _ctx.formFieldClass.Senior.code) && !_ctx.controlAttr.isHideControl)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"lo-control-container\",\n style: _normalizeStyle({ width: _ctx.divWidthCompatibleToIe })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_a_form_item, {\n labelCol: {\r\n style: 'min-width: ' + _ctx.labelSpanWidth + ';width:' + _ctx.labelSpanWidth,\r\n },\n wrapperCol: {\r\n style: 'max-width: ' + _ctx.controlSpanMaxWidth + ';width: ' + _ctx.controlSpanWidth,\r\n },\n colon: _ctx.colon,\n labelAlign: _ctx.labelAlign,\n required: _ctx.required,\n \"validate-status\": _ctx.validateResult.validateStatus,\n help: _ctx.provideInjectData.edit ? _ctx.validateResult.errorMsg : null,\n class: _normalizeClass({\r\n ['form-model-item-' + _ctx.controlAttr.boundProperty]: true,\r\n ['form-model-item-' + _ctx.control.code]: true,\r\n 'lo-form-model-item-textarea-box': _ctx.control.code === _ctx.formFieldType.Textarea.code,\r\n 'lo-form-item-mobile': _ctx.isMobileBrowser(),\r\n })\n }, {\n label: _withCtx(() => [\n (!_ctx.controlAttr.isHideTitle)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_2, [\n _createElementVNode(\"span\", {\n class: _normalizeClass({ 'lo-fw': _ctx.controlAttr.isBoldTitle }),\n style: _normalizeStyle({ color: _ctx.controlAttr.titleColor })\n }, _toDisplayString(_ctx.controlAttr.formFieldDescribe), 7),\n (_ctx.submittedType.length > 0)\n ? (_openBlock(), _createBlock(_component_a_tooltip, {\n key: 0,\n class: \"lo-label-sub-type-icon\",\n placement: \"right\",\n title: _ctx.submittedTypeStr,\n overlayClassName: \"lo-form-item-tooltip\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"img\", { src: _ctx.submittedSvg }, null, 8, _hoisted_3)\n ]),\n _: 1\n }, 8, [\"title\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.controlAttr.tips)\n ? (_openBlock(), _createBlock(_component_a_tooltip, {\n key: 1,\n class: \"lo-label-tips-icon\",\n placement: \"right\",\n title: _ctx.controlAttr.tips,\n overlayClassName: \"lo-form-item-tooltip\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_question_circle_outlined, { style: {\"font-size\":\"13px\"} })\n ]),\n _: 1\n }, 8, [\"title\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.formControl.history && _ctx.formControl.history.length)\n ? (_openBlock(), _createBlock(_component_a_popconfirm, {\n key: 2,\n overlayClassName: \"lo-label-history-popconfirm\",\n placement: \"right\",\n \"ok-text\": \"确定\"\n }, {\n title: _withCtx(() => [\n _hoisted_4,\n _createElementVNode(\"div\", null, [\n _createVNode(_component_a_timeline, { class: \"lo-history-timeline\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.formControl.history, (item, index) => {\n return (_openBlock(), _createBlock(_component_a_timeline_item, { key: index }, {\n dot: _withCtx(() => [\n _createVNode(_component_clock_circle_outlined, { style: {\"font-size\":\"13px\"} })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", null, _toDisplayString(item.time), 1),\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(item.before), 1),\n _createTextVNode(\" 改为 \"),\n _createElementVNode(\"div\", _hoisted_7, _toDisplayString(item.after), 1),\n _createTextVNode(\" 修改人 \"),\n _createElementVNode(\"div\", _hoisted_8, _toDisplayString(item.author), 1)\n ])\n ]),\n _: 2\n }, 1024))\n }), 128))\n ]),\n _: 1\n })\n ])\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"img\", {\n class: \"lo-label-history-icon\",\n src: _ctx.historySvg\n }, null, 8, _hoisted_9)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n default: _withCtx(() => [\n (_ctx.provideInjectData.edit)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_ctx.control.code === _ctx.formFieldType.Input.code)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_ctx.provideInjectData.edit)\n ? (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.inputShape), {\n key: 0,\n class: _normalizeClass({\r\n 'addon-before': _ctx.$slots['input:addonBefore:' + _ctx.formControl.key] || _ctx.controlAttr.bindingPrefix || _ctx.controlAttr.builtInFrontLabel,\r\n 'addon-after': _ctx.$slots['input:addonAfter:' + _ctx.formControl.key] || _ctx.controlAttr.bindingSuffix || _ctx.controlAttr.builtInPostLabel,\r\n }),\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.formControl.value) = $event)),\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n \"data-source\": _ctx.controlAttr.autoCompleteOptions,\n onFocus: _cache[3] || (_cache[3] = ($event: any) => (_ctx.onFocus(_ctx.control))),\n onBlur: _cache[4] || (_cache[4] = ($event: any) => (_ctx.onBlur(_ctx.control))),\n onInput: _cache[5] || (_cache[5] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, _createSlots({ _: 2 }, [\n (_ctx.$slots['input:prefix:' + _ctx.formControl.key])\n ? {\n name: \"prefix\",\n fn: _withCtx(() => [\n _renderSlot(_ctx.$slots, 'input:prefix:' + _ctx.formControl.key, {}, undefined, true)\n ]),\n key: \"0\"\n }\n : undefined,\n (_ctx.$slots['input:suffix:' + _ctx.formControl.key])\n ? {\n name: \"suffix\",\n fn: _withCtx(() => [\n _renderSlot(_ctx.$slots, 'input:suffix:' + _ctx.formControl.key, {}, undefined, true)\n ]),\n key: \"1\"\n }\n : undefined,\n (_ctx.$slots['input:addonBefore:' + _ctx.formControl.key] || _ctx.controlAttr.bindingPrefix || _ctx.controlAttr.builtInFrontLabel)\n ? {\n name: \"addonBefore\",\n fn: _withCtx(() => [\n _createElementVNode(\"span\", {\n class: \"addon-inner\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.onAddonBeforeHandler(_ctx.control)))\n }, [\n (_ctx.$slots['input:addonBefore:' + _ctx.formControl.key])\n ? _renderSlot(_ctx.$slots, 'input:addonBefore:' + _ctx.formControl.key, { key: 0 }, undefined, true)\n : (_ctx.controlAttr.bindingPrefix)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createTextVNode(_toDisplayString(_ctx.controlAttr.bindingPrefix), 1)\n ], 64))\n : (_ctx.controlAttr.builtInFrontLabel)\n ? (_openBlock(), _createBlock(_component_search_outlined, {\n key: 2,\n class: \"addon-icon\"\n }))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n key: \"2\"\n }\n : undefined,\n (_ctx.$slots['input:addonAfter:' + _ctx.formControl.key] || _ctx.controlAttr.bindingSuffix || _ctx.controlAttr.builtInPostLabel)\n ? {\n name: \"addonAfter\",\n fn: _withCtx(() => [\n _createElementVNode(\"span\", {\n class: \"addon-inner\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.onAddonAfterHandler(_ctx.control)))\n }, [\n (_ctx.$slots['input:addonAfter:' + _ctx.formControl.key])\n ? _renderSlot(_ctx.$slots, 'input:addonAfter:' + _ctx.formControl.key, { key: 0 }, undefined, true)\n : (_ctx.controlAttr.bindingSuffix)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createTextVNode(_toDisplayString(_ctx.controlAttr.bindingSuffix), 1)\n ], 64))\n : (_ctx.controlAttr.builtInPostLabel)\n ? (_openBlock(), _createBlock(_component_search_outlined, {\n key: 2,\n class: \"addon-icon\"\n }))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n key: \"3\"\n }\n : undefined\n ]), 1064, [\"class\", \"value\", \"placeholder\", \"disabled\", \"data-source\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n : (_ctx.control.code === _ctx.formFieldType.Textarea.code)\n ? (_openBlock(), _createBlock(_component_a_textarea, {\n key: 1,\n value: _ctx.control.formControl.value,\n \"onUpdate:value\": _cache[7] || (_cache[7] = ($event: any) => ((_ctx.control.formControl.value) = $event)),\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n rows: _ctx.controlAttr.textareaRows || 3,\n showCount: !!_ctx.maxCharacterCount,\n maxlength: _ctx.maxCharacterCount,\n onInput: _cache[8] || (_cache[8] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onFocus: _cache[9] || (_cache[9] = ($event: any) => (_ctx.onFocus(_ctx.control))),\n onBlur: _cache[10] || (_cache[10] = ($event: any) => (_ctx.onBlur(_ctx.control))),\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"value\", \"placeholder\", \"disabled\", \"rows\", \"showCount\", \"maxlength\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.InputNumber.code)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 2,\n class: _normalizeClass([\"lo-input-number-box\", {\r\n 'lo-with-unit': _ctx.controlAttr.zoomType === _ctx.zoomType.automatic.code && _ctx.moneyUnits.length > 0,\r\n ['lo-unit-' + _ctx.moneyUnitsIndentScale]: true,\r\n }]),\n tabindex: \"1\"\n }, [\n _createVNode(_component_a_popover, {\n placement: \"topLeft\",\n trigger: \"focus\",\n getPopupContainer: \r\n (triggerNode) => {\r\n return triggerNode.parentNode || _ctx.document.body;\r\n }\r\n \n }, _createSlots({\n default: _withCtx(() => [\n _createVNode(_component_a_input_number, {\n step: _ctx.controlAttr.step || 1,\n min: _ctx.controlAttr.minValue != null ? _ctx.controlAttr.minValue : undefined,\n max: _ctx.controlAttr.maxValue != null ? _ctx.controlAttr.maxValue : undefined,\n formatter: _ctx.numberFormatter,\n parser: _ctx.numberParser,\n precision: _ctx.controlAttr.decimalPlaces,\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[12] || (_cache[12] = ($event: any) => ((_ctx.formControl.value) = $event)),\n onChange: _cache[13] || (_cache[13] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[14] || (_cache[14] = ($event: any) => (_ctx.onClick(_ctx.control))),\n onFocus: _cache[15] || (_cache[15] = ($event: any) => (_ctx.onInputNumberFocus(_ctx.control))),\n onBlur: _cache[16] || (_cache[16] = ($event: any) => (_ctx.onInputNumberBlur(_ctx.control)))\n }, _createSlots({ _: 2 }, [\n (_ctx.controlAttr.unit)\n ? {\n name: \"addonAfter\",\n fn: _withCtx(() => [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.controlAttr.unit), 1)\n ]),\n key: \"0\"\n }\n : undefined\n ]), 1032, [\"step\", \"min\", \"max\", \"formatter\", \"parser\", \"precision\", \"placeholder\", \"disabled\", \"value\"]),\n (_ctx.controlAttr.zoomType === _ctx.zoomType.automatic.code && _ctx.moneyUnits.length > 0)\n ? (_openBlock(), _createBlock(_component_a_dropdown, { key: 0 }, {\n overlay: _withCtx(() => [\n _createVNode(_component_a_menu, { onClick: _ctx.handleMoneyUnitMenuClick }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.moneyUnits, (unit) => {\n return (_openBlock(), _createBlock(_component_a_menu_item, {\n key: unit.code\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(unit.name), 1)\n ]),\n _: 2\n }, 1024))\n }), 128))\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_a_button, null, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.defaultMoneyUnit.name) + \" \", 1),\n (_ctx.moneyUnits.length > 1)\n ? (_openBlock(), _createBlock(_component_down_outlined, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ]),\n _: 2\n }, [\n (_ctx.numberPopoverVisible)\n ? {\n name: \"content\",\n fn: _withCtx(() => [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.amountCapitalization(_ctx.zoomMultiple(_ctx.formControl.value, _ctx.formControl))), 1)\n ]),\n key: \"0\"\n }\n : undefined\n ]), 1032, [\"getPopupContainer\"])\n ], 2))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Select.code)\n ? (_openBlock(), _createBlock(_component_a_select, {\n key: 3,\n class: _normalizeClass([\"lo-select\", {\r\n 'lo-select-multiple-suffix-icon': _ctx.controlAttr.isMultipleChoice && (_ctx.$slots['select:suffixIcon:' + _ctx.formControl.key] || _ctx.controlAttr.bindingSuffix),\r\n }]),\n dropdownClassName: _ctx.controlAttr.hiddenDropdown ? 'lo-select-hide-drop-down-content' : '',\n showArrow: \"\",\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[19] || (_cache[19] = ($event: any) => ((_ctx.formControl.value) = $event)),\n \"allow-clear\": true,\n \"show-search\": \"\",\n mode: _ctx.controlAttr.isMultipleChoice ? 'multiple' : '',\n disabled: _ctx.controlAttr.isNotEdit,\n placeholder: _ctx.controlAttr.placeholder,\n onChange: _cache[20] || (_cache[20] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[21] || (_cache[21] = ($event: any) => (_ctx.onClick(_ctx.control))),\n \"get-popup-container\": _ctx.getPopupContainer,\n \"filter-option\": _ctx.filterOption\n }, _createSlots({\n dropdownRender: _withCtx(({ menuNode: menu }) => [\n _createVNode(_component_v_nodes, { vnodes: menu }, null, 8, [\"vnodes\"]),\n (_ctx.controlAttr.canAddEntry)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createVNode(_component_a_divider, { style: {\"margin\":\"4px 0\"} }),\n _createElementVNode(\"div\", {\n style: {\"padding\":\"4px 8px 6px 8px\",\"cursor\":\"pointer\"},\n onMousedown: _cache[17] || (_cache[17] = (e) => e.preventDefault()),\n onClick: _cache[18] || (_cache[18] = ($event: any) => (_ctx.selectAddItem(_ctx.control)))\n }, [\n _createVNode(_component_plus_outlined),\n _createTextVNode(\"新增\")\n ], 32)\n ], 64))\n : _createCommentVNode(\"\", true)\n ]),\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.options, (item) => {\n return (_openBlock(), _createBlock(_component_a_select_option, {\n value: item.value,\n key: item.value,\n title: item.title,\n disabled: item.disabled ? item.disabled : false\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(item.title), 1)\n ]),\n _: 2\n }, 1032, [\"value\", \"title\", \"disabled\"]))\n }), 128))\n ]),\n _: 2\n }, [\n (_ctx.$slots['select:suffixIcon:' + _ctx.formControl.key] || _ctx.controlAttr.bindingSuffix)\n ? {\n name: \"suffixIcon\",\n fn: _withCtx(() => [\n (_ctx.$slots['select:suffixIcon:' + _ctx.formControl.key])\n ? _renderSlot(_ctx.$slots, 'select:suffixIcon:' + _ctx.formControl.key, { key: 0 }, undefined, true)\n : (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createTextVNode(_toDisplayString(_ctx.controlAttr.bindingSuffix), 1)\n ], 64))\n ]),\n key: \"0\"\n }\n : undefined\n ]), 1032, [\"dropdownClassName\", \"class\", \"value\", \"mode\", \"disabled\", \"placeholder\", \"get-popup-container\", \"filter-option\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Radio.code)\n ? (_openBlock(), _createBlock(_component_a_radio_group, {\n key: 4,\n class: \"w-100\",\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[22] || (_cache[22] = ($event: any) => ((_ctx.formControl.value) = $event)),\n disabled: _ctx.controlAttr.isNotEdit,\n onChange: _cache[23] || (_cache[23] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[24] || (_cache[24] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.options, (item) => {\n return (_openBlock(), _createBlock(_component_a_radio, {\n key: item.value,\n value: item.value\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(item.title), 1)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"value\", \"disabled\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Checkbox.code)\n ? (_openBlock(), _createBlock(_component_a_checkbox_group, {\n key: 5,\n class: \"w-100\",\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[25] || (_cache[25] = ($event: any) => ((_ctx.formControl.value) = $event)),\n disabled: _ctx.controlAttr.isNotEdit,\n onChange: _cache[26] || (_cache[26] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[27] || (_cache[27] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_a_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_a_col, null, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.options, (item) => {\n return (_openBlock(), _createBlock(_component_a_checkbox, {\n key: item.value,\n value: item.value,\n class: \"ml-0 mr-5\",\n style: _normalizeStyle({ width: _ctx.controlAttr.checkboxStyle ? 'auto' : '10rem' })\n }, {\n default: _withCtx(() => [\n _createVNode(_component_a_tooltip, null, {\n title: _withCtx(() => [\n _createElementVNode(\"span\", null, _toDisplayString(item.title), 1)\n ]),\n default: _withCtx(() => [\n _createTextVNode(\" \" + _toDisplayString(item.title), 1)\n ]),\n _: 2\n }, 1024)\n ]),\n _: 2\n }, 1032, [\"value\", \"style\"]))\n }), 128))\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\", \"disabled\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Switch.code)\n ? (_openBlock(), _createBlock(_component_a_switch, {\n key: 6,\n checked: _ctx.formControl.value,\n \"onUpdate:checked\": _cache[28] || (_cache[28] = ($event: any) => ((_ctx.formControl.value) = $event)),\n \"checked-children\": _ctx.controlAttr.onOpeningText,\n \"un-checked-children\": _ctx.controlAttr.whenClosedText,\n disabled: _ctx.controlAttr.isNotEdit,\n onChange: _cache[29] || (_cache[29] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[30] || (_cache[30] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"checked\", \"checked-children\", \"un-checked-children\", \"disabled\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.TimePicker.code)\n ? (_openBlock(), _createBlock(_component_a_time_picker, {\n key: 7,\n class: \"w-100\",\n \"get-popup-container\": _ctx.getPopupContainer,\n locale: _ctx.locale,\n \"use12-hours\": _ctx.is12Hours,\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[31] || (_cache[31] = ($event: any) => ((_ctx.formControl.value) = $event)),\n onChange: _cache[32] || (_cache[32] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[33] || (_cache[33] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"get-popup-container\", \"locale\", \"use12-hours\", \"placeholder\", \"disabled\", \"value\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.DatePicker.code)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 8 }, [\n (_ctx.useMonthPicker)\n ? (_openBlock(), _createBlock(_component_a_month_picker, {\n key: 0,\n class: \"w-100\",\n \"get-popup-container\": _ctx.getPopupContainer,\n locale: _ctx.locale,\n format: _ctx.controlAttr.dateFormat,\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[34] || (_cache[34] = ($event: any) => ((_ctx.formControl.value) = $event)),\n onChange: _cache[35] || (_cache[35] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[36] || (_cache[36] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"get-popup-container\", \"locale\", \"format\", \"placeholder\", \"disabled\", \"value\"]))\n : (_ctx.controlAttr.isShowHoliday)\n ? (_openBlock(), _createBlock(_component_a_date_picker, {\n key: 1,\n class: \"w-100\",\n \"get-popup-container\": _ctx.getPopupContainer,\n locale: _ctx.locale,\n showTime: _ctx.showPickerTime(_ctx.controlAttr.dateFormat),\n format: _ctx.controlAttr.dateFormat,\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[37] || (_cache[37] = ($event: any) => ((_ctx.formControl.value) = $event)),\n onChange: _cache[38] || (_cache[38] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[39] || (_cache[39] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, {\n dateRender: _withCtx(({ current }) => [\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"div\", _hoisted_13, [\n _hoisted_14,\n _createElementVNode(\"div\", _hoisted_15, _toDisplayString(current.date()), 1),\n _createElementVNode(\"div\", _hoisted_16, [\n (_ctx.isRest(current))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, \"休\"))\n : (_ctx.isWeekday(current))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_18, \"班\"))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n (_ctx.isRadingDay(current))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]),\n renderExtraFooter: _withCtx(() => [\n _hoisted_21\n ]),\n _: 1\n }, 8, [\"get-popup-container\", \"locale\", \"showTime\", \"format\", \"placeholder\", \"disabled\", \"value\"]))\n : (_openBlock(), _createBlock(_component_a_date_picker, {\n key: 2,\n class: \"w-100\",\n \"get-popup-container\": _ctx.getPopupContainer,\n locale: _ctx.locale,\n showTime: _ctx.showPickerTime(_ctx.controlAttr.dateFormat),\n format: _ctx.controlAttr.dateFormat,\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[40] || (_cache[40] = ($event: any) => ((_ctx.formControl.value) = $event)),\n onChange: _cache[41] || (_cache[41] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[42] || (_cache[42] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"get-popup-container\", \"locale\", \"showTime\", \"format\", \"placeholder\", \"disabled\", \"value\"]))\n ], 64))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Slider.code)\n ? (_openBlock(), _createBlock(_component_a_slider, {\n key: 9,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[43] || (_cache[43] = ($event: any) => ((_ctx.formControl.value) = $event)),\n disabled: _ctx.controlAttr.isNotEdit,\n onChange: _cache[44] || (_cache[44] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[45] || (_cache[45] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"value\", \"disabled\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Cascader.code)\n ? (_openBlock(), _createBlock(_component_a_cascader, {\n key: 10,\n \"get-popup-container\": _ctx.getPopupContainer,\n changeOnSelect: _ctx.controlAttr.changeOnSelect,\n placeholder: _ctx.controlAttr.placeholder,\n \"show-search\": { cascaderFilter: _ctx.cascaderFilter },\n disabled: _ctx.controlAttr.isNotEdit,\n options: _ctx.cascaderOptions,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[46] || (_cache[46] = ($event: any) => ((_ctx.formControl.value) = $event)),\n onChange: _cache[47] || (_cache[47] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[48] || (_cache[48] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"get-popup-container\", \"changeOnSelect\", \"placeholder\", \"show-search\", \"disabled\", \"options\", \"value\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.TreeSelect.code)\n ? (_openBlock(), _createBlock(_component_a_tree_select, {\n key: 11,\n \"get-popup-container\": _ctx.getPopupContainer,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[49] || (_cache[49] = ($event: any) => ((_ctx.formControl.value) = $event)),\n \"show-search\": true,\n treeNodeFilterProp: 'title',\n disabled: _ctx.controlAttr.isNotEdit,\n placeholder: _ctx.controlAttr.placeholder,\n \"dropdown-style\": { maxHeight: '250px', overflow: 'auto' },\n \"tree-data\": _ctx.treeSelectOptions,\n onChange: _cache[50] || (_cache[50] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[51] || (_cache[51] = ($event: any) => (_ctx.onClick(_ctx.control))),\n treeDefaultExpandAll: _ctx.controlAttr.isTreeOpen\n }, null, 8, [\"get-popup-container\", \"value\", \"disabled\", \"placeholder\", \"tree-data\", \"treeDefaultExpandAll\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Rate.code)\n ? (_openBlock(), _createBlock(_component_a_rate, {\n key: 12,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[52] || (_cache[52] = ($event: any) => ((_ctx.formControl.value) = $event)),\n disabled: _ctx.controlAttr.isNotEdit,\n onChange: _cache[53] || (_cache[53] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[54] || (_cache[54] = ($event: any) => (_ctx.onClick(_ctx.control))),\n \"allow-half\": \"\"\n }, null, 8, [\"value\", \"disabled\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Upload.code)\n ? (_openBlock(), _createBlock(_component_a_upload, {\n key: 13,\n \"file-list\": _ctx.formControl.value,\n accept: _ctx.uploadType,\n multiple: _ctx.controlAttr.isMultipleChoice,\n onRemove: _ctx.handleRemove,\n \"before-upload\": _ctx.beforeUpload,\n onChange: _ctx.handleUploadChange\n }, {\n default: _withCtx(() => [\n _createVNode(_component_a_button, null, {\n default: _withCtx(() => [\n _createVNode(_component_upload_outlined),\n _createTextVNode(\" 选择文件 \")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"file-list\", \"accept\", \"multiple\", \"onRemove\", \"before-upload\", \"onChange\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Custom.code && _ctx.controlAttr.customFieldName)\n ? _renderSlot(_ctx.$slots, _ctx.controlAttr.customFieldName, {\n key: 14,\n control: _ctx.control,\n onChange: _ctx.onChange\n }, undefined, true)\n : _createCommentVNode(\"\", true)\n ], 64))\n : (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createElementVNode(\"div\", _hoisted_22, [\n _renderSlot(_ctx.$slots, 'read:' + _ctx.control.formControl.key, { content: _ctx.formatData }, () => [\n (_ctx.controlAttr.textFold)\n ? (_openBlock(), _createBlock(_component_stretch_text, {\n key: 0,\n content: _ctx.formatData,\n linkList: _ctx.linkList,\n fieldKey: _ctx.control.formControl.key,\n onLinkClick: _cache[55] || (_cache[55] = ($event: any) => (_ctx.linkClick({ key: _ctx.formControl.key, value: _ctx.formatData })))\n }, null, 8, [\"content\", \"linkList\", \"fieldKey\"]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"lo-control-text\",\n title: _ctx.formatData\n }, [\n (_ctx.linkList.indexOf(_ctx.control.formControl.key) > -1)\n ? (_openBlock(), _createElementBlock(\"a\", {\n key: 0,\n href: \"#\",\n onClick: _cache[56] || (_cache[56] = ($event: any) => (_ctx.linkClick({ key: _ctx.formControl.key, value: _ctx.formatData })))\n }, _toDisplayString(_ctx.formatData), 1))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_24, _toDisplayString(_ctx.formatData), 1))\n ], 8, _hoisted_23))\n ], true)\n ]),\n _hoisted_25,\n (_ctx.controlAttr.unit)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_26, _toDisplayString(_ctx.controlAttr.unit), 1))\n : _createCommentVNode(\"\", true),\n (_ctx.controlAttr.isDesensitize)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n onClick: _cache[57] || (_cache[57] = ($event: any) => (_ctx.handlerMasking(_ctx.formControl)))\n }, [\n (_ctx.isAfterClick)\n ? (_openBlock(), _createBlock(_component_eye_outlined, {\n key: 0,\n class: \"addon-icon\"\n }))\n : (_openBlock(), _createBlock(_component_eye_invisible_outlined, {\n key: 1,\n class: \"addon-icon\"\n }))\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n ]),\n _: 3\n }, 8, [\"labelCol\", \"wrapperCol\", \"colon\", \"labelAlign\", \"required\", \"validate-status\", \"help\", \"class\"])\n ])\n ], 4))\n : (_ctx.control.type === _ctx.formFieldClass.Layout.code && _ctx.control.code === _ctx.formFieldType.Empty.code)\n ? (_openBlock(), _createBlock(_component_a_form, {\n key: 1,\n class: _normalizeClass('w-100 lo-empty-layout-container' + (_ctx.controlAttr.layoutName ? ' lo-form-layout-' + _ctx.controlAttr.layoutName : '')),\n layout: _ctx.layout,\n style: _normalizeStyle(_ctx.emptyLayoutContainerStyle)\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.control.subControls, (item, i) => {\n return (_openBlock(), _createBlock(_component_dv_form_layout, {\n key: i,\n index: i,\n customFormats: _ctx.customFormats,\n control: item,\n parentControl: _ctx.control,\n linkList: _ctx.linkList,\n onLinkClick: _ctx.linkClick,\n onChange: _cache[58] || (_cache[58] = ($event: any) => (_ctx.onChange($event))),\n onClick: _cache[59] || (_cache[59] = ($event: any) => (_ctx.onClick($event))),\n onFocus: _cache[60] || (_cache[60] = ($event: any) => (_ctx.onFocus($event))),\n onBlur: _cache[61] || (_cache[61] = ($event: any) => (_ctx.onBlur($event))),\n onAddonBefore: _cache[62] || (_cache[62] = ($event: any) => (_ctx.onAddonBeforeHandler($event))),\n onAddItem: _cache[63] || (_cache[63] = ($event: any) => (_ctx.selectAddItem($event))),\n onFixFormLayout: _ctx.onHideControl\n }, _createSlots({ _: 2 }, [\n _renderList(Object.keys(_ctx.$slots), (scopedPropName) => {\n return {\n name: scopedPropName,\n fn: _withCtx(({ content, control, onChange }) => [\n _renderSlot(_ctx.$slots, scopedPropName, {\n content: content,\n control: control,\n onChange: onChange\n }, undefined, true)\n ])\n }\n })\n ]), 1032, [\"index\", \"customFormats\", \"control\", \"parentControl\", \"linkList\", \"onLinkClick\", \"onFixFormLayout\"]))\n }), 128))\n ]),\n _: 3\n }, 8, [\"class\", \"layout\", \"style\"]))\n : (_ctx.control.type === _ctx.formFieldClass.Layout.code && _ctx.control.code !== _ctx.formFieldType.Empty.code)\n ? (_openBlock(), _createBlock(_component_a_form, {\n key: 2,\n class: _normalizeClass('w-100 lo-general-layout-container' + (_ctx.controlAttr.layoutName ? ' lo-form-layout-' + _ctx.controlAttr.layoutName : '')),\n layout: _ctx.layout,\n style: _normalizeStyle(_ctx.generalLayoutContainerStyle)\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.control.subControls, (item, i) => {\n return (_openBlock(), _createBlock(_component_dv_form_layout, {\n key: i,\n index: i,\n customFormats: _ctx.customFormats,\n control: item,\n parentControl: _ctx.control,\n class: _normalizeClass(_ctx.controlAttr.layoutName ? 'lo-form-layout-' + _ctx.controlAttr.layoutName : ''),\n onChange: _cache[64] || (_cache[64] = ($event: any) => (_ctx.onChange($event))),\n onClick: _cache[65] || (_cache[65] = ($event: any) => (_ctx.onClick($event))),\n onFocus: _cache[66] || (_cache[66] = ($event: any) => (_ctx.onFocus($event))),\n onBlur: _cache[67] || (_cache[67] = ($event: any) => (_ctx.onBlur($event))),\n onAddonBefore: _cache[68] || (_cache[68] = ($event: any) => (_ctx.onAddonBeforeHandler($event))),\n onAddonAfter: _cache[69] || (_cache[69] = ($event: any) => (_ctx.onAddonAfterHandler($event))),\n onAddItem: _cache[70] || (_cache[70] = ($event: any) => (_ctx.selectAddItem($event)))\n }, _createSlots({ _: 2 }, [\n _renderList(Object.keys(_ctx.$slots), (scopedPropName) => {\n return {\n name: scopedPropName,\n fn: _withCtx(({ content, control, onChange }) => [\n _renderSlot(_ctx.$slots, scopedPropName, {\n content: content,\n control: control,\n onChange: onChange\n }, undefined, true)\n ])\n }\n })\n ]), 1032, [\"index\", \"customFormats\", \"control\", \"parentControl\", \"class\"]))\n }), 128))\n ]),\n _: 3\n }, 8, [\"class\", \"layout\", \"style\"]))\n : _createCommentVNode(\"\", true)\n}","const formTemplate = {\r\n formId: \"1\",\r\n appId: \"1\",\r\n domainClassId: \"\",\r\n objectId: \"1\",\r\n formType: \"1\",\r\n formName: \"test\",\r\n formAlias: \"test\",\r\n formDescribe: \"\",\r\n useState: \"1\",\r\n desDomainClass: null,\r\n desFormLayouts: [\r\n {\r\n layoutId: \"1\",\r\n formId: \"1\",\r\n parentLayoutId: \"\",\r\n layoutName: \"\",\r\n layoutType: \"101\",\r\n gridSpace: 1,\r\n gridColumnConfig: '[{\"value\":12,\"order\":1},{\"value\":12,\"order\":2}]',\r\n gridLateralArrangement: \"1\",\r\n gridVerticalArrangement: \"1\",\r\n layoutOrder: 1,\r\n labelSpan: \"\",\r\n controlSpan: \"\",\r\n subDesFormLayout: null,\r\n desFormControls: [],\r\n },\r\n ],\r\n desBusObject: null,\r\n};\r\nexport { formTemplate };\r\n","const SUBMITTED_SVG_XML =\r\n \"data:image/svg+xml;base64, PHN2ZyB0PSIxNjEyMTY2MTU4NzYxIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjkxMjY3IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1Ij4NCiAgICAgIDxkZWZzPjwvZGVmcz4NCiAgICAgIDxwYXRoDQogICAgICAgIGQ9Ik01MTEuNSA5NjBDMjY0LjIgOTYwIDYzIDc1OC44IDYzIDUxMS41UzI2NC4yIDYzIDUxMS41IDYzIDk2MCAyNjQuMiA5NjAgNTExLjUgNzU4LjggOTYwIDUxMS41IDk2MHogbTAtODU5LjIzMmMtMjI2LjQ3OCAwLTQxMC43MzIgMTg0LjI1NC00MTAuNzMyIDQxMC43MzJTMjg1LjAyMiA5MjIuMjMyIDUxMS41IDkyMi4yMzIgOTIyLjIzMiA3MzcuOTc4IDkyMi4yMzIgNTExLjUgNzM3Ljk3OCAxMDAuNzY4IDUxMS41IDEwMC43Njh6IG0tOTQuOTA2IDI4NS45ODhsMi40MTgtMS44MTNjOC45NzMtNi43MzQgMTMuNTIyLTE0LjE3NSAxMy41MjQtMjIuMTEycy00LjU0OS0xNS4zOC0xMy41MjQtMjIuMTE3bC0yLjQxOC0xLjgxNGgtNjMuMzQxVjIyNmwtMS44MTQtMi40MTljLTYuNzM2LTguOTc1LTE0LjE3OC0xMy41MjQtMjIuMTE1LTEzLjUyNHMtMTUuMzc5IDQuNTQ5LTIyLjExNSAxMy41MjRMMzA1LjM5NCAyMjZ2MTEyLjloLTczLjk4MWwtMi42NTQgMi42NTNjLTkuNjc5IDkuNjc5LTEzLjcxMyAxOC40OTQtMTIuMzMgMjYuOTQ5IDEuMTgyIDcuMjIzIDYuMTI5IDEzLjA0OCAxNC43IDE3LjMwOGwxLjkwNiAwLjk0Nmg3Mi4zNTV2MTU0LjEyOWMtMjEuOSAxMi4wNTgtNDkuODY5IDI0LjMtODMuMjM2IDM2LjQzNWwtMi4zODggMC44Ny0xLjU4OCAxLjk4MmMtOS4wMzMgMTEuMjc3LTExLjg3OSAyMC44LTguNyAyOS4xMDcgMy4wNCA3Ljk0NSAxMS4xODIgMTMuMDY5IDI0LjIgMTUuMjNsMi4yMTggMC4zNjkgMi4xMzMtMC43MWE0NzEuOTg5IDQ3MS45ODkgMCAwIDAgNjcuMzYyLTI4LjA1djE0My4zNDRjMCA3LjkyOS0yLjc4IDkuNy0zLjY5NCAxMC4yODQtMy42NSAyLjMyLTE2LjU4MSA1LjY2MS01Ny43NDctMTMuNTQybC0yLjY5MS0xLjI1NS0yLjkxMSAwLjU3OGMtMTAuNzI4IDIuMTQtMTcuOCA2Ljg5NC0yMS4wMDYgMTQuMTM5LTMuNTQxIDcuOTkxLTEuODczIDE3LjUyNiA1LjA5NCAyOS4xNDdsMS41NDkgMi41ODUgMi43OTEgMS4xNDNjMjguNDEgMTEuNjIxIDUxLjggMTcuNDE1IDcwLjU3NSAxNy40MTUgMTIuODI2IDAgMjMuNS0yLjcgMzIuMTQ4LTguMSAxNC4yNTctOC44OTIgMjIuMjQxLTI0LjY1IDIzLjczLTQ2LjgzNWwwLjAyMS0xNzMuNzE0YzI4LjI1OS0xNi4xMjcgNTIuMzUzLTM0LjA3NCA3MS42OC01My40bDEuNTE3LTEuNTE4IDAuNjc2LTIuMDM1YzQuNDc0LTEzLjQ3MiAzLjg0NS0yMy4zLTEuOTIzLTMwLjA0NC01LjU1MS02LjUtMTQuOTY2LTguNjkzLTI3Ljk4My02LjUyOWwtMy41OSAwLjU5My0yLjE3OSAyLjkxNGMtNy4zOTQgOS44NzYtMjAuMjEyIDIxLjA1MS0zOC4yIDMzLjMxNVYzODYuNzU2aDYzLjM0MXogbTM5MS4yODggMzY3Ljg2MmwtMS42NzgtMi43OTQtMy4wNzMtMS4wODVjLTUxLjY4Ni0xOC4yMzktOTYuNzMzLTQzLjk1My0xMzQuMDM3LTc2LjUgNDYuOTM4LTU1LjA1NSA3Ny4zLTExNC4wNzcgOTAuMy0xNzUuNTc0IDUuMTE4LTIwLjYgMi45NC0zNy4xNi02LjQ3MS00OS4yMTRDNzQxLjcgNDM1LjA4NiA3MjEuNDc5IDQyOC4xIDY5MS4wOSA0MjguMUg0OTIuMDEzVjMwOC4zMThjMC0yMS40MzggOS4xNDUtMzAuNTg1IDMwLjU4NC0zMC41ODVoMTM4Ljc1OWM0NC43MjkgMCA0NS40MzkgMjEuNTIxIDQ1LjQ0OSAzMC4xNzZsLTQuOTE3IDU0LjEtMC4wMzkgMC44MmMwIDQuOTI3LTEuODU1IDcuMDI3LTMuNDcgOC4zMDUtNS4xNTEgNC4wNzktMjEuMDQzIDkuMjA2LTY5LjYzMi0yLjI1OWwtMi43OS0wLjY1OC0yLjY2IDEuMDY3Yy0xMS4wNCA0LjQyMy0xNy40NjEgMTAuNjkzLTE5LjA4NSAxOC42NDQtMS42NzQgOC4xODUgMi4wNjIgMTYuOSAxMS4xIDI1LjkybDEuODggMS44NzIgMi41OTIgMC41NjZjNTQuODYgMTEuOTM0IDkxLjQ2NSAxMC40NTYgMTExLjkwNy00LjUzMSAxMC42MjYtNy43ODggMTYuNjc2LTE4Ljk3IDE4LTMzLjQ5M2w0Ljk0Mi03OS4xMDVjMS42MjYtMTkuNTc2LTIuOTY3LTM1LjM5LTEzLjY1My00Ny0xMy44LTE0Ljk5My0zNi42LTIyLjI4LTY5LjcxMi0yMi4yOEg1MTIuNjg0Yy00NC44MzMgMC02OC41MyAyMy43LTY4LjUzIDY4LjUyOVY3OTdsMS44MTUgMi40MTljNi43MzcgOC45NzUgMTQuMTc4IDEzLjUyNCAyMi4xMTYgMTMuNTI0czE1LjM3Ny00LjU0OSAyMi4xMTMtMTMuNTI0bDEuODE1LTIuNDE5di0wLjk4M2M1LjUxOSAyLjgyMSAxMi45MzUgMy40NzkgMjIuMTU3IDEuOTQybDEuNDg4LTAuMjQ2IDEuMzI2LTAuNzE2YzQxLjI5MS0yMi4yNjIgODEuNTYxLTUwLjg4MyAxMTkuOC04NS4xNDJhNDg5LjYgNDg5LjYgMCAwIDAgMTUwLjQgODUuNzExbDIuMzU3IDAuODMzIDIuNDUtMC41YzEwLjcyNy0yLjE2NCAxNy43ODgtNi45NCAyMC45ODgtMTQuMiAzLjUyOS03Ljk5IDEuODYtMTcuNDk5LTUuMDk3LTI5LjA4MXogbS05NS40NzMtMjY2LjNsLTAuMzI5IDAuODIxLTAuMTYzIDAuODdjLTkuMTE4IDQ4LjY0OS0zNi4xODkgOTkuNjIyLTgwLjUwOSAxNTEuNjI0LTQ1LjA4Ni00OS43NzQtNzcuNTM2LTEwNS40MTktOTYuNjItMTY1LjY3M2gxNDYuMzljMjYuMDU4IDAgMzEuMDQ2IDUuNDE1IDMxLjc4MiA2LjUgMC45MjkgMS4zNyAwLjIxMiAzLjk0LTAuNTUxIDUuODU3eiBtLTIyMC40IDUuMTE1YzI1LjQ1OCA3My4yMTkgNjEuNDI2IDEzNS43NDYgMTA3LjE1MyAxODYuMjM5LTMwLjEzNSAyOC44LTY2LjEyNyA1My45NDgtMTA3LjE1MyA3NC44NDhWNDkzLjQzMnoiDQogICAgICAgIGZpbGw9IiMwMDlERTUiDQogICAgICAgIHAtaWQ9IjkxMjY4Ig0KICAgICAgPjwvcGF0aD4NCiAgICA8L3N2Zz4=\";\r\n// const HISTORY_SVG_XML =\r\n// \"data:image/svg+xml;base64,PHN2ZyBpZD0i5Zu+5bGCXzEiIGRhdGEtbmFtZT0i5Zu+5bGCIDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2ZmMTcxNzt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPuWbvuaghzExPC90aXRsZT48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNS40MSw1aDBsMC0uMDlBOCw4LDAsMSwwLC42NCwxMS4xMmE3Ljg2LDcuODYsMCwwLDAsMS42MiwyLjQ1QTgsOCwwLDAsMCwxNS40MSw1Wm0tMi4yNSw4LjE3QTcuMyw3LjMsMCwwLDEsOCwxNS4yOUg4QTcuMzEsNy4zMSwwLDAsMSwuNzEsOCw3LjI5LDcuMjksMCwwLDEsOCwuNzFIOGE3LjI5LDcuMjksMCwwLDEsNS4xNiwxMi40NFoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik02LjY0LDEwYy0uOTMuNTItMS44NCwxLTIuNzIsMS40MVY3Ljc4SDUuNzl2LjU5aC44NVYzLjU0SDIuODZWNC4zSDUuNzlWN0gzLjA3djQuMTZhMS4yNywxLjI3LDAsMCwxLS4zOCwxbC41OC43NWE1LjkzLDUuOTMsMCwwLDEsLjY0LS41MWMxLS41NiwyLTEuMDcsMi45LTEuNTVBOC41NSw4LjU1LDAsMCwxLDYuNjQsMTBaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTAuMjksMTAuNTdhMTAsMTAsMCwwLDAsMS41OC01LjIzaDEuMjh2LS44SDguNzVjLjIxLS41NC40Mi0xLjEuNjItMS42OGwtLjg2LS4yNUEyMy41MiwyMy41MiwwLDAsMSw2LjY2LDcuMTlhNy4yMyw3LjIzLDAsMCwxLC41NS42OWMuMTktLjM1LjM3LS43MS41Ni0xLjA5YTguODEsOC44MSwwLDAsMCwxLjM4LDMuNzUsMTAuMywxMC4zLDAsMCwxLTMuMzksMi4wNyw1LjMxLDUuMzEsMCwwLDEsLjY0Ljc4LDExLjMzLDExLjMzLDAsMCwwLDMuMzMtMi4xNiw5LjQyLDkuNDIsMCwwLDAsMi45LDIsNS41Nyw1LjU3LDAsMCwxLC42OS0uODVBNy4yMiw3LjIyLDAsMCwxLDEwLjI5LDEwLjU3Wm0tLjU3LS43MmExMCwxMCwwLDAsMS0xLjQtNC4yN2wuMS0uMjRIMTFBOS42OCw5LjY4LDAsMCwxLDkuNzIsOS44NVoiLz48L3N2Zz4=\";\r\nconst HISTORY_SVG_XML =\r\n \"data:image/svg+xml;base64, PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBzdHlsZT0idHJhbnNmb3JtOiBzY2FsZSgwLjkpOyBtYXJnaW4tYm90dG9tOiAtMi41cHgiIHdpZHRoPSIxNnB4IiBoZWlnaHQ9IjE1cHgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIC03MzYgLTIyNyApIj4NCiAgICAgICAgPHBhdGgNCiAgICAgICAgICBkPSJNIDE0LjQgNy4xOTI5ODI0NTA2NTc4OSAgQyAxNC40IDcuNjczNjg0MjEwNTI2MzIgIDE0LjM1MDkzMzMzMzMzMzMgOC4xNDMxNTc4OTQ3MzY4NCAgMTQuMjU3Nzc3NzgzMzMzMyA4LjU5NjQ5MTIzMzU1MjYzICBMIDEyLjc5ODU3Nzc4MzMzMzMgOC41OTY0OTEyMzM1NTI2MyAgQyAxMi45MTgzMzI3ODU5NTUyIDguMTM4Mzk0ODc0Mjk4NjEgIDEyLjk3ODkzMDcxNzExODMgNy42NjcxOTc0MTQyNTIwMyAgMTIuOTc4OTMwNzE3MTE4MyA3LjE5NDEwMjY5MTg5MzEyICBDIDEyLjk3ODkzMDcxNzExODMgNC4wOTM1NTY3MzA5NTg2NCAgMTAuNDMxOTI4NDA3NTMxOSAxLjU4MDA2NzYwOTY1NjI4ICA3LjI5MDA0MTgzMzc4NDk3IDEuNTgwMDY3NjA5NjU2MjggIEMgNC4xNDgxNTUyNjAwMzgwNCAxLjU4MDA2NzYwOTY1NjI4ICAxLjYwMTE1Mjk1MDQ1MTY0IDQuMDkzNTU2NzMwOTU4NjQgIDEuNjAxMTUyOTUwNDUxNjQgNy4xOTQxMDI2OTE4OTMxMiAgQyAxLjYwMTE1Mjk1MDQ1MTY0IDEwLjI5NDY0ODY1MjgyNzYgIDQuMTQ4MTU1MjYwMDM4MDQgMTIuODA4MTM3Nzc0MTMgIDcuMjkwMDQxODMzNzg0OTcgMTIuODA4MTM3Nzc0MTMgIEMgNy44MDE3MTU4NDYxMjU2OCAxMi44MDgxMzc3NzQxMyAgOC4zMTEwNTEwNTk5ODkxMyAxMi43NDAwMTU0NzY1MDk1ICA4LjgwNDI2NjY2NjY2NjY3IDEyLjYwNTYxNDAyOTYwNTMgIEMgOC44ODY3NTU1NSAxMi44MTk2NDkxMTE4NDIxICA5LjAyMTE1NTU1IDEzLjAwOTEyMjc5NjA1MjYgIDkuMTkyNTMzMzMzMzMzMzMgMTMuMTU3ODk0NzM2ODQyMSAgQyA4LjkyMzU4OTU2OTY3MTU0IDEzLjM5MTU1NDE5MjUzODIgIDguNzU0MTUwMzc0NjM0NzggMTMuNzE2OTQ4ODM3NTM4MyAgOC43MTgyMjIyMTY2NjY2NyAxNC4wNjg3NzE5MjQzNDIxICBDIDguMjU2IDE0LjE2MTQwMzUwMzI4OTUgIDcuNzc4MTMzMzMzMzMzMzMgMTQuMjEwNTI2MzE1Nzg5NSAgNy4yODg4ODg4ODMzMzMzMyAxNC4yMTA1MjYzMTU3ODk1ICBDIDMuMzYxNDIyMjE2NjY2NjcgMTQuMjEwNTI2MzE1Nzg5NSAgMC4xNzc3Nzc3NjY2NjY2NjcgMTEuMDY4NzcxOTI0MzQyMSAgMC4xNzc3Nzc3ODMzMzMzMzQgNy4xOTI5ODI0NTA2NTc4OSAgQyAwLjE3Nzc3NzggMy4zMTcxOTI5NzY5NzM2OCAgMy4zNjE0MjIyMTY2NjY2NyAwLjE3NTQzODYwMTk3MzY4NCAgNy4yODg4ODg4ODMzMzMzMyAwLjE3NTQzODYwMTk3MzY4NCAgQyAxMS4yMTYzNTU1NSAwLjE3NTQzODYwMTk3MzY4NCAgMTQuNCAzLjMxNzE5Mjk5MzQyMTA1ICAxNC40IDcuMTkyOTgyNDUwNjU3ODkgIFogTSA3LjY0NDQ0NDQ1IDMuNjg0MjEwNTI2MzE1NzkgIEwgNy42NDQ0NDQ0NSA3LjE5Mjk4MjQ1MDY1Nzg5ICBMIDkuNzc3Nzc3NzgzMzMzMzMgNy4xOTI5ODI0NTA2NTc4OSAgQyAxMC4xNzA1MTM2MDg1MDM1IDcuMTkyOTgyNDUwNjU3ODkgIDEwLjQ4ODg4ODkgNy41MDcxNjg1OTM1ODIwOSAgMTAuNDg4ODg4OSA3Ljg5NDczNjg0MjEwNTI2ICBDIDEwLjQ4ODg4ODkgOC4yODIzMDUwOTA2Mjg0MyAgMTAuMTcwNTEzNjA4NTAzNSA4LjU5NjQ5MTIzMzU1MjYzICA5Ljc3Nzc3Nzc4MzMzMzMzIDguNTk2NDkxMjMzNTUyNjMgIEwgNi45MzMzMzMzMzMzMzMzMyA4LjU5NjQ5MTIzMzU1MjYzICBDIDYuNDU5MjU5MjU1NTU1NTUgOC41OTY0OTEyMzM1NTI2MyAgNy40MDc0MDc0MTExMTExMSA4LjU5NjQ5MTIzMzU1MjYzICA2LjkzMzMzMzMzMzMzMzMzIDguNTk2NDkxMjMzNTUyNjMgIEMgNi41NDA1OTc1MDgxNjMxOSA4LjU5NjQ5MTIzMzU1MjYzICA2LjIyMjIyMjIxNjY2NjY3IDguMjgyMzA1MDkwNjI4NDMgIDYuMjIyMjIyMjE2NjY2NjcgNy44OTQ3MzY4NDIxMDUyNiAgTCA2LjIyMjIyMjIxNjY2NjY3IDMuNjg0MjEwNTI2MzE1NzkgIEMgNi4yMjIyMjIyMTY2NjY2NyAzLjI5NjY0MjI3Nzc5MjYyICA2LjU0MDU5NzUwODE2MzE5IDIuOTgyNDU2MTM0ODY4NDIgIDYuOTMzMzMzMzMzMzMzMzMgMi45ODI0NTYxMzQ4Njg0MiAgQyA3LjMyNjA2OTE1ODUwMzQ4IDIuOTgyNDU2MTM0ODY4NDIgIDcuNjQ0NDQ0NDUgMy4yOTY2NDIyNzc3OTI2MiAgNy42NDQ0NDQ0NSAzLjY4NDIxMDUyNjMxNTc5ICBaIE0gMTAuODQ0NDQ0NDUgOS4yOTgyNDU2MDg1NTI2MyAgTCAxNS4xMTExMTExMTY2NjY3IDkuMjk4MjQ1NjA4NTUyNjMgIEMgMTUuNTAzODQ2OTQxODM2OCA5LjI5ODI0NTYwODU1MjYzICAxNS44MjIyMjIyMzMzMzMzIDkuNjEyNDMxNzUxNDc2ODMgIDE1LjgyMjIyMjIzMzMzMzMgMTAgIEMgMTUuODIyMjIyMjMzMzMzMyAxMC4zODc1NjgyNDg1MjMyICAxNS41MDM4NDY5NDE4MzY4IDEwLjcwMTc1NDM5MTQ0NzQgIDE1LjExMTExMTExNjY2NjcgMTAuNzAxNzU0MzkxNDQ3NCAgTCAxMC44NDQ0NDQ0NSAxMC43MDE3NTQzOTE0NDc0ICBDIDEwLjQ1MTcwODYyNDgyOTkgMTAuNzAxNzU0MzkxNDQ3NCAgMTAuMTMzMzMzMzMzMzMzMyAxMC4zODc1NjgyNDg1MjMyICAxMC4xMzMzMzMzMzMzMzMzIDEwICBDIDEwLjEzMzMzMzMzMzMzMzMgOS42MTI0MzE3NTE0NzY4MyAgMTAuNDUxNzA4NjI0ODI5OSA5LjI5ODI0NTYwODU1MjYzICAxMC44NDQ0NDQ0NSA5LjI5ODI0NTYwODU1MjYzICBaIE0gMTAuODQ0NDQ0NDUgMTEuNDAzNTA4NzY2NDQ3NCAgTCAxNS4xMTExMTExMTY2NjY3IDExLjQwMzUwODc2NjQ0NzQgIEMgMTUuNTAzODQ2OTQxODM2OCAxMS40MDM1MDg3NjY0NDc0ICAxNS44MjIyMjIyMzMzMzMzIDExLjcxNzY5NDkwOTM3MTYgIDE1LjgyMjIyMjIzMzMzMzMgMTIuMTA1MjYzMTU3ODk0NyAgQyAxNS44MjIyMjIyMzMzMzMzIDEyLjQ5MjgzMTQwNjQxNzkgIDE1LjUwMzg0Njk0MTgzNjggMTIuODA3MDE3NTQ5MzQyMSAgMTUuMTExMTExMTE2NjY2NyAxMi44MDcwMTc1NDkzNDIxICBMIDEwLjg0NDQ0NDQ1IDEyLjgwNzAxNzU0OTM0MjEgIEMgMTAuNDUxNzA4NjI0ODI5OSAxMi44MDcwMTc1NDkzNDIxICAxMC4xMzMzMzMzMzMzMzMzIDEyLjQ5MjgzMTQwNjQxNzkgIDEwLjEzMzMzMzMzMzMzMzMgMTIuMTA1MjYzMTU3ODk0NyAgQyAxMC4xMzMzMzMzMzMzMzMzIDExLjcxNzY5NDkwOTM3MTYgIDEwLjQ1MTcwODYyNDgyOTkgMTEuNDAzNTA4NzY2NDQ3NCAgMTAuODQ0NDQ0NDUgMTEuNDAzNTA4NzY2NDQ3NCAgWiBNIDEwLjg0NDQ0NDQ1IDEzLjUwODc3MTkyNDM0MjEgIEwgMTUuMTExMTExMTE2NjY2NyAxMy41MDg3NzE5MjQzNDIxICBDIDE1LjUwMzg0Njk0MTgzNjggMTMuNTA4NzcxOTI0MzQyMSAgMTUuODIyMjIyMjMzMzMzMyAxMy44MjI5NTgwNjcyNjYzICAxNS44MjIyMjIyMzMzMzMzIDE0LjIxMDUyNjMxNTc4OTUgIEMgMTUuODIyMjIyMjMzMzMzMyAxNC41OTgwOTQ1NjQzMTI2ICAxNS41MDM4NDY5NDE4MzY4IDE0LjkxMjI4MDcwNzIzNjggIDE1LjExMTExMTExNjY2NjcgMTQuOTEyMjgwNzA3MjM2OCAgTCAxMC44NDQ0NDQ0NSAxNC45MTIyODA3MDcyMzY4ICBDIDEwLjQ1MTcwODYyNDgyOTkgMTQuOTEyMjgwNzA3MjM2OCAgMTAuMTMzMzMzMzMzMzMzMyAxNC41OTgwOTQ1NjQzMTI2ICAxMC4xMzMzMzMzMzMzMzMzIDE0LjIxMDUyNjMxNTc4OTUgIEMgMTAuMTMzMzMzMzMzMzMzMyAxMy44MjI5NTgwNjcyNjYzICAxMC40NTE3MDg2MjQ4Mjk5IDEzLjUwODc3MTkyNDM0MjEgIDEwLjg0NDQ0NDQ1IDEzLjUwODc3MTkyNDM0MjEgIFogIg0KICAgICAgICAgIGZpbGwtcnVsZT0ibm9uemVybyINCiAgICAgICAgICBmaWxsPSIjZmZhMTE2Ig0KICAgICAgICAgIHN0cm9rZT0ibm9uZSINCiAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDczNiAyMjcgKSINCiAgICAgICAgLz4NCiAgICAgIDwvZz4NCiAgICA8L3N2Zz4=\";\r\nconst FORM_ERROR_MODAL_SVG_XML =\r\n \"data:image/svg+xml;base64, PHN2ZyB0PSIxNjI5Mjg0MTUzNjk3IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjIxODIiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTUxMiAwQzIzMC40IDAgMCAyMjcuMiAwIDUxMmMwIDI4MS42IDIzMC40IDUxMiA1MTIgNTEyIDI4NC44IDAgNTEyLTIyNy4yIDUxMi01MTJTNzk2LjggMCA1MTIgMHogbTAgODE5LjJjLTI4LjggMC01MS4yLTIyLjQtNTEuMi01MS4yczIyLjQtNTEuMiA1MS4yLTUxLjJjMjguOCAwIDUxLjIgMjIuNCA1MS4yIDUxLjIgMy4yIDI4LjgtMjIuNCA1MS4yLTUxLjIgNTEuMnogbTU0LjQtMjIwLjhjMCAyOC44LTIyLjQgNTEuMi01MS4yIDUxLjItMjguOCAwLTUxLjItMjIuNC01MS4yLTUxLjJWMjU2YzAtMjguOCAyMi40LTUxLjIgNTEuMi01MS4yIDI4LjggMCA1MS4yIDIyLjQgNTEuMiA1MS4ydjM0Mi40eiIgcC1pZD0iMjE4MyIgZmlsbD0iI0YxQjkxNiI+PC9wYXRoPjwvc3ZnPg==\";\r\nconst DROP_DOWN_LIST_SVG_XML =\r\n \"data:image/svg+xml;base64, PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTRweCIgaGVpZ2h0PSIxMXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIC01MTYgLTQ2ICkiPg0KICAgIDxwYXRoIGQ9Ik0gMCA0Ljc0OTk5NDE0MDYyNTAxICBMIDAgNi4yNTAwMDU4NTkzNzQ5OSAgTCAxLjU1NTU0OTQ3OTE2NjY0IDYuMjUwMDA1ODU5Mzc0OTkgIEwgMS41NTU1NDk0NzkxNjY2NCA0Ljc0OTk5NDE0MDYyNTAxICBMIDAgNC43NDk5OTQxNDA2MjUwMSAgWiBNIDAgOC43NSAgTCAwIDEwLjI0OTk5NDE0MDYyNSAgTCAxLjU1NTU0OTQ3OTE2NjY0IDEwLjI0OTk5NDE0MDYyNSAgTCAxLjU1NTU0OTQ3OTE2NjY0IDguNzUgIEwgMCA4Ljc1ICBaIE0gMCAwLjc1MDAwNTg1OTM3NDk5NCAgTCAwIDIuMjUgIEwgMS41NTU1NDk0NzkxNjY2NCAyLjI1ICBMIDEuNTU1NTQ5NDc5MTY2NjQgMC43NTAwMDU4NTkzNzQ5OTQgIEwgMCAwLjc1MDAwNTg1OTM3NDk5NCAgWiBNIDMuMTExMTE3MTg3NDk5OTkgNC43NDk5OTQxNDA2MjUwMSAgTCAzLjExMTExNzE4NzQ5OTk5IDYuMjUwMDA1ODU5Mzc0OTkgIEwgMTQgNi4yNTAwMDU4NTkzNzQ5OSAgTCAxNCA0Ljc0OTk5NDE0MDYyNTAxICBMIDMuMTExMTE3MTg3NDk5OTkgNC43NDk5OTQxNDA2MjUwMSAgWiBNIDMuMTExMTE3MTg3NDk5OTkgOC43NSAgTCAzLjExMTExNzE4NzQ5OTk5IDEwLjI0OTk5NDE0MDYyNSAgTCAxNCAxMC4yNDk5OTQxNDA2MjUgIEwgMTQgOC43NSAgTCAzLjExMTExNzE4NzQ5OTk5IDguNzUgIFogTSAxNCAwLjc1MDAwNTg1OTM3NDk5NCAgTCAzLjExMTExNzE4NzQ5OTk5IDAuNzUwMDA1ODU5Mzc0OTk0ICBMIDMuMTExMTE3MTg3NDk5OTkgMi4yNSAgTCAxNCAyLjI1ICBMIDE0IDAuNzUwMDA1ODU5Mzc0OTk0ICBaICIgZmlsbC1ydWxlPSJub256ZXJvIiBmaWxsPSIjYmZiY2NjIiBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIDEgNTE2IDQ2ICkiIC8+DQogIDwvZz4NCjwvc3ZnPg==\";\r\nexport { SUBMITTED_SVG_XML, HISTORY_SVG_XML, FORM_ERROR_MODAL_SVG_XML, DROP_DOWN_LIST_SVG_XML };\r\n","interface Config {\r\n value: number;\r\n order: number;\r\n}\r\n\r\nfunction transform(configs: Config[]): unknown {\r\n if (configs != null && configs.length > 0) {\r\n const arr: string[] = [];\r\n configs.sort((a: Config, b: Config) => a.order - b.order).forEach((item) => arr.push(item.value + \"fr\"));\r\n return arr.join(\" \");\r\n } else {\r\n return `1fr`;\r\n }\r\n}\r\n/**\r\n * @description: 网格布局比例分配\r\n * @author ChenRui\r\n * @date 2020/12/1 19:32\r\n */\r\nconst generateGridTemplateColumns = (configs: Config[]) => {\r\n return transform(configs);\r\n};\r\n\r\nexport default generateGridTemplateColumns;\r\n","interface Config {\r\n value: number;\r\n order: number;\r\n}\r\n\r\nfunction transform(configs: Config[]): unknown {\r\n if (configs != null && configs.length > 0) {\r\n return configs.length + 1;\r\n } else {\r\n return 2;\r\n }\r\n}\r\n/**\r\n * @description: 跨列计算\r\n * @author ChenRui\r\n * @date 2020/12/1 19:34\r\n */\r\nconst generateGridColumnEnd = (configs: Config[]) => {\r\n return transform(configs);\r\n};\r\n\r\nexport default generateGridColumnEnd;\r\n","class ApiService {\r\n createBasicHeaders() {\r\n return {\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n };\r\n }\r\n\r\n createAuthHeaders() {\r\n const data = JSON.parse(localStorage.getItem(\"core:token\") || sessionStorage.getItem(\"core:token\") || \"{}\");\r\n const accessToken = data.accessToken || \"\";\r\n const jti = data.jti || \"\";\r\n return {\r\n Authorization: \"bearer \" + accessToken,\r\n \"user-identity\": jti,\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n };\r\n }\r\n\r\n fetch(path: string, query: { [key: string]: any }, body: any, method: string, header: any) {\r\n path = query != null ? this.urlQueryConvert(path, query) : path;\r\n return fetch(path, {\r\n method: method ? method : \"GET\",\r\n headers: header,\r\n body: body,\r\n }).then(\r\n function (response) {\r\n response.status; //=> number 100–599\r\n response.statusText; //=> String\r\n response.headers; //=> Headers\r\n response.url; //=> String\r\n\r\n return response.json();\r\n },\r\n function (error) {\r\n error.message; //=> String\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * @description: url请求参数组装\r\n * @author ChenRui\r\n * @date 2020/8/28 15:21\r\n */\r\n urlQueryConvert(url: string, query: { [key: string]: any }) {\r\n let connectiveSymbol = \"\";\r\n if (url.indexOf(\"?\") !== -1) {\r\n connectiveSymbol = \"&\";\r\n } else {\r\n connectiveSymbol = \"?\";\r\n }\r\n if (query) {\r\n Object.keys(query).forEach((key, idx) => {\r\n const val = query[key];\r\n if (idx === 0) {\r\n if (val != null && val !== \"null\" && val !== \"undefined\") {\r\n url += connectiveSymbol + key + \"=\" + val;\r\n } else {\r\n url += connectiveSymbol + key + \"=\";\r\n }\r\n } else {\r\n if (val != null && val !== \"null\" && val !== \"undefined\") {\r\n url += \"&\" + key + \"=\" + val;\r\n } else {\r\n url += \"&\" + key + \"=\";\r\n }\r\n }\r\n });\r\n }\r\n return url;\r\n }\r\n}\r\nconst apiService = new ApiService();\r\nexport { apiService };\r\n","const NAME = \"vue-lo\";\r\nconst STORE_NAME = \"form:\";\r\nconst DICT_STORE_NAME = \"dict:\";\r\nexport { NAME, STORE_NAME, DICT_STORE_NAME };\r\n","import { FormConfig } from \"../domain/FormConfig\";\r\nimport * as sourceLocalForage from \"localforage\";\r\nimport { NAME } from \"../constants/config/storage.config\";\r\nclass CleanLocalForageService {\r\n localForage: any;\r\n config: any;\r\n get formConfig(): Partial<FormConfig> {\r\n if ((window as any).$app.config.globalProperties.$qlForm) {\r\n return (window as any).$app.config.globalProperties.$qlForm;\r\n }\r\n return {};\r\n }\r\n\r\n constructor() {}\r\n\r\n init(): void {\r\n const appId: string = this.formConfig.appId ? this.formConfig.appId : \"\";\r\n this.config = {\r\n driver: sourceLocalForage.INDEXEDDB, // Force WebSQL; same as using setDriver()\r\n name: NAME,\r\n version: 1.0,\r\n storeName: \"clean:\" + appId, // Should be alphanumeric, with underscores.\r\n description: \"用于清理实例的缓存对象\",\r\n };\r\n this.localForage = sourceLocalForage.createInstance(this.config);\r\n }\r\n\r\n /**\r\n * @description: 设值\r\n * @author ChenRui\r\n * @date 2021/3/12 16:31\r\n */\r\n setItem(key: string, value: any): any {\r\n this.localForage.setItem(key, value);\r\n }\r\n\r\n /**\r\n * @description: 取值\r\n * @author ChenRui\r\n * @date 2021/3/12 16:31\r\n */\r\n getItem(key: string): Promise<any> {\r\n return this.localForage.getItem(key);\r\n }\r\n\r\n /**\r\n * @description: 删除实例\r\n * @author ChenRui\r\n * @date 2021/6/22 11:08\r\n */\r\n dropInstance(): void {\r\n if (this.localForage != null) {\r\n this.localForage.dropInstance().then();\r\n }\r\n }\r\n}\r\nconst cleanLocalForageService: CleanLocalForageService = new CleanLocalForageService();\r\nexport { CleanLocalForageService, cleanLocalForageService };\r\n","import { FormConfig } from \"../domain/FormConfig\";\r\nimport * as sourceLocalForage from \"localforage\";\r\nimport { DICT_STORE_NAME, NAME } from \"../constants/config/storage.config\";\r\nclass DictLocalForageService {\r\n localForage: any;\r\n config: any;\r\n get formConfig(): Partial<FormConfig> {\r\n if ((window as any).$app.config.globalProperties.$qlForm) {\r\n return (window as any).$app.config.globalProperties.$qlForm;\r\n }\r\n return {};\r\n }\r\n\r\n constructor() {}\r\n\r\n init(): void {\r\n const appId: string = this.formConfig.appId ? this.formConfig.appId : \"\";\r\n this.config = {\r\n driver: sourceLocalForage.INDEXEDDB, // Force WebSQL; same as using setDriver()\r\n name: NAME,\r\n version: 1.0,\r\n storeName: DICT_STORE_NAME + appId, // Should be alphanumeric, with underscores.\r\n description: \"PC端表单数据库\",\r\n };\r\n this.localForage = sourceLocalForage.createInstance(this.config);\r\n }\r\n\r\n /**\r\n * @description: 设值\r\n * @author ChenRui\r\n * @date 2021/3/12 16:31\r\n */\r\n setItem(key: string, value: any): any {\r\n this.localForage.setItem(key, value);\r\n }\r\n\r\n /**\r\n * @description: 取值\r\n * @author ChenRui\r\n * @date 2021/3/12 16:31\r\n */\r\n getItem(key: string): Promise<any> {\r\n return this.localForage.getItem(key);\r\n }\r\n\r\n /**\r\n * @description: 删除实例\r\n * @author ChenRui\r\n * @date 2021/6/22 11:08\r\n */\r\n dropInstance(): void {\r\n if (this.localForage != null) {\r\n this.localForage.dropInstance().then();\r\n }\r\n }\r\n}\r\nconst dictLocalForageService: DictLocalForageService = new DictLocalForageService();\r\nexport { DictLocalForageService, dictLocalForageService };\r\n","class FormBeanUtilsService {\r\n constructor() {}\r\n\r\n /**\r\n * @description: 对象拷贝\r\n * @author ChenRui\r\n * @date 2020/8/29 19:54\r\n */\r\n copy(obj: any): any {\r\n if (obj != null) {\r\n return JSON.parse(JSON.stringify(obj));\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @description: 字符串转对象\r\n * @author ChenRui\r\n * @date 2020/8/29 19:54\r\n */\r\n parse(str: string | null): any {\r\n if (str != null && str !== \"\") {\r\n return JSON.parse(str);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 对象转字符串\r\n * @author ChenRui\r\n * @date 2020/8/29 19:54\r\n */\r\n stringify(obj: any): string {\r\n if (obj != null) {\r\n return JSON.stringify(obj);\r\n }\r\n return \"\";\r\n }\r\n}\r\nconst formBeanUtilsService = new FormBeanUtilsService();\r\nexport { formBeanUtilsService };\r\n","import { FormConfig } from \"../domain/FormConfig\";\r\nimport * as sourceLocalForage from \"localforage\";\r\nimport { NAME, STORE_NAME } from \"../constants/config/storage.config\";\r\n\r\nclass FormLocalForageService {\r\n localForage: any;\r\n config: any;\r\n get formConfig(): Partial<FormConfig> {\r\n if ((window as any).$app.config.globalProperties.$qlForm) {\r\n return (window as any).$app.config.globalProperties.$qlForm;\r\n }\r\n return {};\r\n }\r\n\r\n constructor() {}\r\n\r\n init(): void {\r\n const appId: string = this.formConfig.appId ? this.formConfig.appId : \"\";\r\n this.config = {\r\n driver: sourceLocalForage.INDEXEDDB, // Force WebSQL; same as using setDriver()\r\n name: NAME,\r\n version: 1.0,\r\n storeName: STORE_NAME + appId, // Should be alphanumeric, with underscores.\r\n description: \"PC端表单数据库\",\r\n };\r\n this.localForage = sourceLocalForage.createInstance(this.config);\r\n }\r\n\r\n /**\r\n * @description: 设值\r\n * @author ChenRui\r\n * @date 2021/3/12 16:31\r\n */\r\n setItem(key: string, value: any): any {\r\n this.localForage.setItem(key, value);\r\n }\r\n\r\n /**\r\n * @description: 取值\r\n * @author ChenRui\r\n * @date 2021/3/12 16:31\r\n */\r\n getItem(key: string): Promise<any> {\r\n return this.localForage.getItem(key);\r\n }\r\n\r\n /**\r\n * @description: 删除实例\r\n * @author ChenRui\r\n * @date 2021/6/22 11:08\r\n */\r\n dropInstance(): void {\r\n if (this.localForage != null) {\r\n this.localForage.dropInstance().then();\r\n }\r\n }\r\n}\r\nconst formLocalForageService: FormLocalForageService = new FormLocalForageService();\r\nexport { FormLocalForageService, formLocalForageService };\r\n","import { DesFormLayout } from \"./DesFormLayout\";\r\nimport { Control } from \"./Control\";\r\nimport { FormGroup } from \"./FormGroup\";\r\n\r\nexport class DesForm {\r\n formId: string;\r\n appId: string;\r\n domainClassId: string;\r\n objectId: string;\r\n formType: string;\r\n formName: string;\r\n formAlias: string;\r\n formDescribe: string;\r\n useState: string;\r\n desFormLayouts: DesFormLayout[];\r\n controls: Control[];\r\n formGroup: FormGroup | undefined;\r\n [key: string]: any;\r\n constructor(\r\n options: {\r\n formId?: string;\r\n appId?: string;\r\n domainClassId?: string;\r\n objectId?: string;\r\n formType?: string;\r\n formName?: string;\r\n formAlias?: string;\r\n formDescribe?: string;\r\n useState?: string;\r\n controls?: Control[];\r\n formGroup?: FormGroup;\r\n desFormLayouts?: DesFormLayout[];\r\n } = {}\r\n ) {\r\n this.formId = options.formId || \"\";\r\n this.appId = options.appId || \"\";\r\n this.domainClassId = options.domainClassId || \"\";\r\n this.objectId = options.objectId || \"\";\r\n this.formType = options.formType || \"\";\r\n this.formName = options.formName || \"\";\r\n this.formAlias = options.formAlias || \"\";\r\n this.formDescribe = options.formDescribe || \"\";\r\n this.useState = options.useState || \"\";\r\n this.controls = options.controls || [];\r\n this.formGroup = options.formGroup;\r\n this.desFormLayouts = options.desFormLayouts || [];\r\n }\r\n}\r\n","import { DesFormControl } from \"./DesFormControl\";\r\n\r\nexport class DesFormLayout {\r\n layoutId: string;\r\n formId: string;\r\n parentLayoutId: string;\r\n layoutName: string;\r\n layoutType: string;\r\n gridSpace: number | undefined;\r\n gridColumnConfig: any;\r\n gridLateralArrangement: string;\r\n gridVerticalArrangement: string;\r\n layoutOrder: number | undefined;\r\n labelSpan: string;\r\n controlSpan: string;\r\n desFormControls: DesFormControl[];\r\n subDesFormLayout: DesFormLayout[];\r\n constructor(\r\n options: {\r\n layoutId?: string;\r\n formId?: string;\r\n parentLayoutId?: string;\r\n layoutName?: string;\r\n layoutType?: string;\r\n gridSpace?: number;\r\n gridColumnConfig?: any;\r\n gridLateralArrangement?: string;\r\n gridVerticalArrangement?: string;\r\n layoutOrder?: number;\r\n labelSpan?: string;\r\n controlSpan?: string;\r\n desFormControls?: DesFormControl[];\r\n subDesFormLayout?: DesFormLayout[];\r\n } = {}\r\n ) {\r\n this.layoutId = options.layoutId || \"\";\r\n this.formId = options.formId || \"\";\r\n this.parentLayoutId = options.parentLayoutId || \"\";\r\n this.layoutName = options.layoutName || \"\";\r\n this.layoutType = options.layoutType || \"\";\r\n this.gridSpace = options.gridSpace;\r\n this.gridColumnConfig = options.gridColumnConfig;\r\n this.gridLateralArrangement = options.gridLateralArrangement || \"\";\r\n this.gridVerticalArrangement = options.gridVerticalArrangement || \"\";\r\n this.layoutOrder = options.layoutOrder;\r\n this.labelSpan = options.labelSpan || \"\";\r\n this.controlSpan = options.controlSpan || \"\";\r\n this.desFormControls = options.desFormControls || [];\r\n this.subDesFormLayout = options.subDesFormLayout || [];\r\n }\r\n}\r\n","import { formBeanUtilsService } from \"./form-bean-utils.service\";\r\n\r\ninterface NodeContrast {\r\n id: string;\r\n parentId: string;\r\n children: string;\r\n}\r\n\r\ninterface NzNodeContrast {\r\n title: string;\r\n key: string;\r\n icon?: string;\r\n isLeaf?: string;\r\n checked?: string;\r\n selected?: string;\r\n selectable?: string;\r\n disabled?: string;\r\n disableCheckbox?: string;\r\n expanded?: string;\r\n children: string;\r\n [key: string]: any;\r\n}\r\n\r\ninterface NzCascaderOptionContrast {\r\n value: string;\r\n label: string;\r\n title?: string;\r\n disabled?: string;\r\n loading?: string;\r\n isLeaf?: string;\r\n parent?: string;\r\n children: string;\r\n [key: string]: any;\r\n}\r\n\r\ninterface NzTreeNodeOptions {\r\n title: string;\r\n key: string;\r\n icon?: string;\r\n isLeaf?: boolean;\r\n checked?: boolean;\r\n selected?: boolean;\r\n selectable?: boolean;\r\n disabled?: boolean;\r\n disableCheckbox?: boolean;\r\n expanded?: boolean;\r\n children?: NzTreeNodeOptions[];\r\n [key: string]: any;\r\n}\r\n\r\ninterface MapNodeItem {\r\n key?: string;\r\n title?: string;\r\n value?: string;\r\n children?: MapNodeOptions;\r\n}\r\n\r\ninterface MapNodeOptions {\r\n [key: string]: MapNodeItem;\r\n}\r\n\r\nclass FormTreeNodeConvertService {\r\n constructor() {}\r\n\r\n /**\r\n * @description: 数组转换为树形结构\r\n * @author ChenRui\r\n * @date 2020/10/30 10:18\r\n */\r\n arrayConvertToTreeNode(data: any[], nodeContrast: NodeContrast, parentId?: string): any[] {\r\n if (data != null && data.length > 0) {\r\n let nds: any[] = data.filter((item) => (item[nodeContrast.parentId] || \"\") === (parentId || \"\"));\r\n if (nds != null && nds.length > 0) {\r\n nds = formBeanUtilsService.copy(nds);\r\n nds.forEach((item) => {\r\n const children = this.arrayConvertToTreeNode(data, nodeContrast, item[nodeContrast.id]);\r\n if (children != null && children.length > 0) {\r\n item[nodeContrast.children] = [...children];\r\n }\r\n });\r\n return nds;\r\n }\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @description: 树形结构转换为Nz树形结构\r\n * @author ChenRui\r\n * @date 2020/10/30 10:21\r\n */\r\n treeNodeConvertToNzTreeNode(data: any[], nzNodeContrast: NzNodeContrast, isDisabledLeaf = false): any[] {\r\n const nodes: any[] = [];\r\n if (data != null && data.length > 0) {\r\n data.forEach((item) => {\r\n const node: any = {\r\n title: \"\",\r\n key: \"\",\r\n icon: \"\",\r\n isLeaf: true,\r\n checked: false,\r\n selected: false,\r\n selectable: true,\r\n disabled: isDisabledLeaf,\r\n disableCheckbox: false,\r\n expanded: true,\r\n children: [],\r\n };\r\n for (const propName of Object.keys(nzNodeContrast)) {\r\n if (nzNodeContrast[propName] != null && nzNodeContrast[propName] !== \"\") {\r\n node[propName] = item[nzNodeContrast[propName]];\r\n }\r\n }\r\n node.children = [];\r\n if (item[nzNodeContrast.children] != null && item[nzNodeContrast.children].length > 0) {\r\n const children = this.treeNodeConvertToNzTreeNode(item[nzNodeContrast.children], nzNodeContrast, isDisabledLeaf);\r\n node.disabled = false;\r\n node.isLeaf = false;\r\n node.children = children;\r\n }\r\n nodes.push(node);\r\n });\r\n }\r\n return nodes;\r\n }\r\n\r\n /**\r\n * @description: 数组转换为Nz树形结构\r\n * @author ChenRui\r\n * @date 2020/10/30 10:41\r\n */\r\n arrayConvertToNzTreeNode(data: any[], nodeContrast: NodeContrast, nzNodeContrast: NzNodeContrast, isDisabledLeaf = false): any[] {\r\n const treeNode = this.arrayConvertToTreeNode(data, nodeContrast);\r\n if (treeNode != null && treeNode.length > 0) {\r\n return this.treeNodeConvertToNzTreeNode(treeNode, nzNodeContrast, isDisabledLeaf);\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @description: 树形结构转换为Nz树形结构\r\n * @author ChenRui\r\n * @date 2020/10/30 10:21\r\n */\r\n treeNodeConvertToCascaderOption(data: any[], nzCascaderOptionContrast: NzCascaderOptionContrast, isDisabledLeaf = false): any[] {\r\n const nodes: any[] = [];\r\n if (data != null && data.length > 0) {\r\n data.forEach((item) => {\r\n const node: any = {\r\n value: \"\",\r\n label: \"\",\r\n title: \"\",\r\n disabled: isDisabledLeaf,\r\n loading: \"\",\r\n isLeaf: true,\r\n parent: \"\",\r\n children: \"\",\r\n };\r\n for (const propName of Object.keys(nzCascaderOptionContrast)) {\r\n if (nzCascaderOptionContrast[propName] != null && nzCascaderOptionContrast[propName] !== \"\") {\r\n node[propName] = item[nzCascaderOptionContrast[propName]];\r\n }\r\n }\r\n node.children = [];\r\n if (item[nzCascaderOptionContrast.children] != null && item[nzCascaderOptionContrast.children].length > 0) {\r\n const children = this.treeNodeConvertToCascaderOption(item[nzCascaderOptionContrast.children], nzCascaderOptionContrast, isDisabledLeaf);\r\n node.disabled = false;\r\n node.isLeaf = false;\r\n node.children = children;\r\n }\r\n nodes.push(node);\r\n });\r\n }\r\n return nodes;\r\n }\r\n\r\n /**\r\n * @description: 插件树结构转map\r\n * @author ChenRui\r\n * @date 2022/1/18 19:19\r\n */\r\n nzTreeNodeConvertToMap(data: NzTreeNodeOptions[]): MapNodeOptions | undefined {\r\n if (data != null && data.length > 0) {\r\n const mapNodeOptions: MapNodeOptions = {};\r\n data.forEach((item) => {\r\n if (item.value) {\r\n mapNodeOptions[item.value] = {\r\n key: item.key,\r\n title: item.title,\r\n value: item.value,\r\n };\r\n if (item.children && item.children.length > 0) {\r\n mapNodeOptions[item.value].children = this.nzTreeNodeConvertToMap(item.children) || undefined;\r\n }\r\n }\r\n });\r\n return mapNodeOptions;\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * @description: 数组转换为Nz树形结构\r\n * @author ChenRui\r\n * @date 2020/10/30 10:41\r\n */\r\n arrayConvertToCascaderOption(data: any[], nodeContrast: NodeContrast, nzCascaderOptionContrast: NzCascaderOptionContrast, isDisabledLeaf = false): any[] {\r\n const treeNode = this.arrayConvertToTreeNode(data, nodeContrast);\r\n if (treeNode != null && treeNode.length > 0) {\r\n return this.treeNodeConvertToCascaderOption(treeNode, nzCascaderOptionContrast, isDisabledLeaf);\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @Description: 树形数据转为数组\r\n * @author LiuBo\r\n * @date 2021/11/5\r\n * @time 16:59\r\n * @param treeNode 树形数据\r\n * @param data 数组 传入空数组即可[]\r\n * @param childName 子节点名称\r\n */\r\n treeNodeConvertToArray(treeNode: any[], data: any[], childName: string): any[] {\r\n data = data || [];\r\n treeNode = JSON.parse(JSON.stringify(treeNode));\r\n treeNode.forEach((val: any) => {\r\n data.push(val);\r\n if (val[childName] && val[childName].length) {\r\n formTreeNodeConvertService.treeNodeConvertToArray(val[childName], data, childName);\r\n }\r\n });\r\n data.forEach((val: any) => {\r\n delete val[childName];\r\n });\r\n return data;\r\n }\r\n}\r\nconst formTreeNodeConvertService: FormTreeNodeConvertService = new FormTreeNodeConvertService();\r\nexport { NodeContrast, NzNodeContrast, NzCascaderOptionContrast, NzTreeNodeOptions, MapNodeItem, MapNodeOptions, formTreeNodeConvertService };\r\n","import { DesForm } from \"../domain/DesForm\";\r\nimport { formLocalForageService } from \"../services/form-local-forage.service\";\r\n\r\n/**\r\n * @description: 表单存储服务\r\n * @author ChenRui\r\n * @date 2020/12/30 11:17\r\n */\r\nclass FormStore {\r\n private static readonly FORMS = \"forms_data\";\r\n private static readonly VERSION = \"forms_version\";\r\n\r\n constructor() {}\r\n\r\n public setForms(desForm: DesForm[]) {\r\n formLocalForageService.setItem(FormStore.FORMS, desForm);\r\n }\r\n\r\n public getForms(): Promise<DesForm[]> {\r\n return formLocalForageService.getItem(FormStore.FORMS);\r\n }\r\n\r\n public setVersion(value: string) {\r\n formLocalForageService.setItem(FormStore.VERSION, value);\r\n }\r\n\r\n public getVersion(): Promise<any> {\r\n return formLocalForageService.getItem(FormStore.VERSION);\r\n }\r\n}\r\nconst formStore = new FormStore();\r\nexport { formStore };\r\n","import { dictLocalForageService } from \"../services/dict-local-forage.service\";\r\n\r\n/**\r\n * @description: 表单版本管理\r\n * @author ChenRui\r\n * @date 2020/12/30 11:17\r\n */\r\nclass DictStore {\r\n private static readonly DICTS = \"dicts_data\";\r\n private static readonly TREE_DICTS = \"treeDicts_data\";\r\n private static readonly MAP_DICTS = \"map_dicts_data\";\r\n private static readonly MAP_TREE_DICTS = \"map_treeDicts_data\";\r\n private static readonly VERSION = \"dict_version\";\r\n\r\n constructor() {}\r\n\r\n /**常规字典存储*/\r\n public setDicts(nzTreeNodeOptions: any[]) {\r\n dictLocalForageService.setItem(DictStore.DICTS, nzTreeNodeOptions);\r\n }\r\n\r\n public getDicts(): Promise<any[]> {\r\n return dictLocalForageService.getItem(DictStore.DICTS);\r\n }\r\n\r\n /**树形字典存储*/\r\n public setTreeDicts(nzTreeNodeOptions: any[]) {\r\n dictLocalForageService.setItem(DictStore.TREE_DICTS, nzTreeNodeOptions);\r\n }\r\n\r\n public getTreeDicts(): Promise<any[]> {\r\n return dictLocalForageService.getItem(DictStore.TREE_DICTS);\r\n }\r\n\r\n /**map型常规字典存储*/\r\n public setMapDicts(nzTreeNodeOptions: any) {\r\n dictLocalForageService.setItem(DictStore.MAP_DICTS, nzTreeNodeOptions);\r\n }\r\n\r\n public getMapDicts(): Promise<any> {\r\n return dictLocalForageService.getItem(DictStore.MAP_DICTS);\r\n }\r\n\r\n /**map型树形字典存储*/\r\n public setMapTreeDicts(nzTreeNodeOptions: any) {\r\n dictLocalForageService.setItem(DictStore.MAP_TREE_DICTS, nzTreeNodeOptions);\r\n }\r\n\r\n public getMapTreeDicts(): Promise<any> {\r\n return dictLocalForageService.getItem(DictStore.MAP_TREE_DICTS);\r\n }\r\n\r\n /*字典版本存储*/\r\n public setVersion(value: string) {\r\n dictLocalForageService.setItem(DictStore.VERSION, value);\r\n }\r\n\r\n public getVersion(): Promise<any> {\r\n return dictLocalForageService.getItem(DictStore.VERSION);\r\n }\r\n}\r\nconst dictStore = new DictStore();\r\nexport { dictStore };\r\n","const DEFAULT_FORM_FILE_NAME = \"form-design.json\";\r\nconst DEFAULT_DICT_FILE_NAME = \"dict.json\";\r\nconst DEFAULT_DICT_URL = \"./resources/json/\" + DEFAULT_DICT_FILE_NAME;\r\nexport { DEFAULT_FORM_FILE_NAME, DEFAULT_DICT_FILE_NAME, DEFAULT_DICT_URL };\r\n","interface Params {\r\n [key: string]: any;\r\n}\r\nexport class RouterService {\r\n constructor() {}\r\n\r\n /**\r\n * @description: 跨应用跳转\r\n * @author ChenRui\r\n * @date 2020/9/28 14:23\r\n */\r\n push(subapp: string): void {\r\n history.pushState(null, subapp, subapp);\r\n }\r\n\r\n /**\r\n * @description: 获取纯路劲\r\n * @author ChenRui\r\n * @date 2020/10/12 21:06\r\n */\r\n getPathFromUrl(url: string): string {\r\n let path = url;\r\n if (url.indexOf(\"?\") !== -1) {\r\n path = url.split(\"?\")[0];\r\n }\r\n return path;\r\n }\r\n\r\n /**\r\n * @description: 获取请求参数\r\n * @author ChenRui\r\n * @date 2020/10/12 21:06\r\n */\r\n getParamsFromUrl(url: string): Params | undefined {\r\n let parameter: Params | undefined;\r\n if (url.indexOf(\"?\") !== -1) {\r\n parameter = this.urlParameterToParams(url.split(\"?\")[1]);\r\n }\r\n return parameter;\r\n }\r\n\r\n /**\r\n * @description: url地址参数转换成路由参数对象\r\n * @author ChenRui\r\n * @date 2020/10/12 21:07\r\n */\r\n urlParameterToParams(parameter: string): Params | undefined {\r\n const params: Params = {};\r\n const arr: string[] = parameter.split(\"&\");\r\n arr.forEach((val, idx, array) => {\r\n const kv: string[] = val.split(\"=\");\r\n if (kv.length > 1) {\r\n params[kv[0]] = decodeURIComponent(kv[1]);\r\n } else {\r\n params[kv[0]] = \"\";\r\n }\r\n });\r\n return params;\r\n }\r\n\r\n /**\r\n * @description: 地址参数拼接\r\n * @author ChenRui\r\n * @date 2021/2/19 11:40\r\n */\r\n getParameterOfUrl(url: string, parameter?: { [key: string]: any }): string {\r\n let connectiveSymbol = \"\";\r\n if (url.indexOf(\"?\") !== -1) {\r\n connectiveSymbol = \"&\";\r\n } else {\r\n connectiveSymbol = \"?\";\r\n }\r\n if (parameter && Object.keys(parameter).length > 0) {\r\n let mark = 0;\r\n Object.keys(parameter).forEach((item) => {\r\n if (mark === 0) {\r\n if (parameter[item] != null && parameter[item] !== \"null\" && parameter[item] !== \"undefined\") {\r\n url += connectiveSymbol + item + \"=\" + parameter[item];\r\n } else {\r\n url += connectiveSymbol + item + \"=\";\r\n }\r\n } else {\r\n if (parameter[item] != null && parameter[item] !== \"null\" && parameter[item] !== \"undefined\") {\r\n url += \"&\" + item + \"=\" + parameter[item];\r\n } else {\r\n url += \"&\" + item + \"=\";\r\n }\r\n }\r\n mark++;\r\n });\r\n }\r\n return url;\r\n }\r\n}\r\nconst routerService: RouterService = new RouterService();\r\nexport { routerService, Params };\r\n","import { FormApi } from \"../core/FormApi\";\r\nimport { ValidateReport } from \"../domain/FormControl\";\r\nimport { Modal } from \"ant-design-vue\";\r\nimport { FORM_ERROR_MODAL_SVG_XML } from \"../constants/encode-assets/svg\";\r\nimport { h, createVNode } from \"vue\";\r\n/**\r\n * @description: 表单校验窗口提示\r\n * @author ChenRui\r\n * @date 2021/8/19 12:58\r\n */\r\nclass FormValidateService {\r\n /**\r\n * @description: 校验并进行窗口提示\r\n * @author ChenRui\r\n * @date 2021/8/19 12:58\r\n */\r\n validateTips(formApis: FormApi | FormApi[], scrollView?: any): boolean {\r\n if (formApis != null) {\r\n if (!Array.isArray(formApis)) {\r\n formApis = [formApis];\r\n }\r\n const actualFormApis: FormApi[] = [];\r\n let allError: ValidateReport[] = [];\r\n let errMessage = \"\";\r\n formApis.forEach((formApi) => {\r\n const errors: ValidateReport[] = formApi.validateReport(); // 获取校验报告\r\n if (errors && errors.length > 0) {\r\n actualFormApis.push(formApi);\r\n allError = allError.concat(errors);\r\n }\r\n });\r\n if (allError && allError.length > 0) {\r\n // 显示错误的输入框\r\n allError.forEach((err) => {\r\n console.log(err);\r\n errMessage += `<div class=\"lo-error-item d-flex\"><div class=\"lo-error-describe\">${err.name}</div>&nbsp;${err.errorMsg};</div>`;\r\n });\r\n\r\n Modal.confirm({\r\n width: 380,\r\n title: h(\"div\", { class: \"d-flex\", innerHTML: `<img src=\"${FORM_ERROR_MODAL_SVG_XML}\" /><div style=\"font-size: 18px\">校验提示</div>` }),\r\n content: h(\"div\", { innerHTML: errMessage }),\r\n onOk: () => {\r\n this.showErrorModal(actualFormApis as any, allError, scrollView);\r\n },\r\n okText: \"确认\",\r\n cancelText: \"取消\",\r\n class: \"lo-form-error-modal\",\r\n });\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * @Description: 滚动到错误位置-闪烁提示\r\n * @author LiuBo\r\n * @date 2021/2/25\r\n * @time 21:35\r\n */\r\n public showErrorModal(formApis: FormApi[], allError: ValidateReport[], scrollView?: any) {\r\n const errorEl: any = formApis[0]?.getControlEl(allError[0]?.key);\r\n if (errorEl != null) {\r\n if (scrollView && typeof scrollView === \"string\") {\r\n scrollView = document.getElementById(scrollView);\r\n }\r\n if (scrollView) {\r\n scrollView.scrollTo({ top: errorEl.offsetTop, behavior: \"smooth\" });\r\n const running = (event: any) => {\r\n const scrollTop = scrollView.window != null && scrollView.window === scrollView.window.window ? document.documentElement.scrollTop || document.body.scrollTop : scrollView.scrollTop;\r\n const calculationError = errorEl.offsetTop - scrollTop;\r\n if (calculationError > -20 && calculationError < 20) {\r\n scrollView.removeEventListener(\"scroll\", running);\r\n this.showErrInput(errorEl);\r\n }\r\n };\r\n scrollView.addEventListener(\"scroll\", running, false);\r\n } else {\r\n this.showErrInput(errorEl);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @Description: 闪烁显示校验不通过的输入框\r\n * @author LiuBo\r\n * @date 2019/6/3\r\n * @time 22:01\r\n * @param el 出错的输入框html对象\r\n */\r\n private showErrInput(el: any) {\r\n let count = 0;\r\n const interval = setInterval(() => {\r\n el.style.opacity = count++ % 2 === 0 ? \".3\" : \"1\";\r\n if (count > 5) {\r\n clearInterval(interval);\r\n }\r\n }, 400);\r\n }\r\n}\r\nconst formValidateService = new FormValidateService();\r\nexport { formValidateService };\r\n","import { FormConfig } from \"../domain/FormConfig\";\r\nimport { FormRestfulResponse } from \"../domain/FormRestfulResponse\";\r\nimport { DesForm } from \"../domain/DesForm\";\r\nimport { DesFormControl } from \"../domain/DesFormControl\";\r\nimport { DesFormLayout } from \"../domain/DesFormLayout\";\r\nimport { FormFieldClass } from \"../constants/enum/form-field-class.enum\";\r\nimport { Control } from \"../domain/Control\";\r\nimport { FormFieldType } from \"../constants/enum/form-field-type.enum\";\r\nimport { Switch } from \"../constants/enum/switch.enum\";\r\nimport { formTreeNodeConvertService, MapNodeOptions, NodeContrast, NzNodeContrast, NzTreeNodeOptions } from \"./form-tree-node-convert.service\";\r\nimport { formBeanUtilsService } from \"./form-bean-utils.service\";\r\nimport { apiService } from \"./api.service\";\r\nimport { formStore } from \"../store/form.store\";\r\nimport { DynamicOptionType } from \"../constants/enum/dynamic-option-type.enum\";\r\nimport { dictStore } from \"../store\";\r\nimport { SysDictInfo } from \"../domain/SysDictInfo\";\r\nimport { DEFAULT_DICT_URL, DEFAULT_FORM_FILE_NAME } from \"../constants/config/form.config\";\r\nimport { CacheType } from \"../constants/enum/cache-type.enum\";\r\nimport { routerService } from \"./router.service\";\r\nimport { FormApi } from \"../core/FormApi\";\r\nimport { formValidateService } from \"./form-validate.service\";\r\n\r\ninterface DictionaryFormatCollection {\r\n sysDictDetailOptions?: NzTreeNodeOptions[];\r\n sysDictTreeDetailOptions?: NzTreeNodeOptions[];\r\n mapSysDictDetailOptions?: MapNodeOptions;\r\n mapSysDictTreeDetailOptions?: MapNodeOptions;\r\n}\r\n\r\nclass FormToolsService {\r\n private static readonly LOAD_SUCCESS = { code: 1, msg: \"加载成功\" }; // 操作成功提示\r\n private static readonly LOAD_FAIL = { code: 1, msg: \"加载失败\" }; // 操作失败提示\r\n private static IS_FIRST_LOADED = false; // 是否经过首次初始化\r\n private nodeContrast: NodeContrast = { id: \"layoutId\", parentId: \"parentLayoutId\", children: \"subDesFormLayout\" };\r\n private dictDetailsContrast: NodeContrast = { id: \"dicEntryPk\", parentId: \"suprDicPk\", children: \"children\" };\r\n private nzDictDetailsContrastContrast: NzNodeContrast = { key: \"dicEntryPk\", title: \"dicValue\", children: \"children\", value: \"dicKey\" };\r\n private dictTreeDetailsContrast: NodeContrast = { id: \"dicEntryPk\", parentId: \"suprDicPk\", children: \"children\" };\r\n private nzDictTreeDetailsContrastContrast: NzNodeContrast = { key: \"dicEntryPk\", title: \"dicValue\", children: \"children\", value: \"dicKey\" };\r\n private desForms: DesForm[] = []; // 表单配置缓存\r\n\r\n sysDictDetailOptions: NzTreeNodeOptions[] = [];\r\n sysDictTreeDetailOptions: NzTreeNodeOptions[] = [];\r\n mapSysDictDetailOptions: MapNodeOptions | undefined;\r\n mapSysDictTreeDetailOptions: MapNodeOptions | undefined;\r\n\r\n supHoliday?: boolean = false; // 节假日支持\r\n\r\n constructor() {}\r\n\r\n get formConfig(): Partial<FormConfig> {\r\n if ((window as any).$app.config.globalProperties.$qlForm != null) {\r\n return (window as any).$app.config.globalProperties.$qlForm;\r\n }\r\n return {};\r\n }\r\n\r\n setSupHoliday(bool: boolean) {\r\n this.supHoliday = bool;\r\n }\r\n\r\n setFormDisabledColor(color = \"#f0f0f0\") {\r\n document.body.style.setProperty(\"--lo-form-disabled\", color);\r\n }\r\n\r\n /**\r\n * @description: 检查是否经过首次初始化并初始化\r\n * @author ChenRui\r\n * @date 2021/1/5 23:04\r\n */\r\n checkFirstLoadAndInitDesign(): Promise<FormRestfulResponse> {\r\n if (FormToolsService.IS_FIRST_LOADED) {\r\n return Promise.resolve({\r\n code: 1,\r\n msg: \"检查到已经过首次加载,不在执行加载逻辑\",\r\n });\r\n } else {\r\n return this.init().then((res: FormRestfulResponse) => {\r\n FormToolsService.IS_FIRST_LOADED = true;\r\n return res;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @description: 初始化\r\n * @author ChenRui\r\n * @date 2021/3/12 11:02\r\n */\r\n init(): Promise<FormRestfulResponse> {\r\n return Promise.all([this.initDesign(), this.initDict(), this.selectHolidays()]).then(([designRes, dictRes]: any) => {\r\n const code = designRes.code === 1 && dictRes.code === 1 ? 1 : 0;\r\n return { code, msg: designRes.msg + \"; \" + dictRes.msg };\r\n });\r\n }\r\n\r\n /**\r\n * @Description 初始化节假日数据\r\n * @Author JiangTao\r\n * @Date 2024-04-16 下午 04:11\r\n */\r\n selectHolidays(): Promise<FormRestfulResponse> {\r\n if (this.formConfig.url && this.supHoliday) {\r\n const url = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/basic-form-weekday/query-all-by-year\";\r\n return this.fetch(url, {}, undefined, \"POST\").then((res: FormRestfulResponse) => {\r\n if (res != null && (res.code === 1 || String(res.code) === String(200))) {\r\n if (res.data != null) {\r\n localStorage.setItem(\"traddayList\", JSON.stringify(res.data.traddayList)); // 交易日集合\r\n localStorage.setItem(\"weekdayList\", JSON.stringify(res.data.weekdayList)); // 节假日集合\r\n localStorage.setItem(\"workdayList\", JSON.stringify(res.data.workdayList)); // 工作日集合\r\n }\r\n }\r\n return Promise.resolve(FormToolsService.LOAD_SUCCESS);\r\n });\r\n }\r\n return Promise.resolve(FormToolsService.LOAD_SUCCESS);\r\n }\r\n\r\n /**\r\n * @description: 初始化表单设计\r\n * @author ChenRui\r\n * @date 2020/11/20 10:55\r\n */\r\n initDesign(): Promise<FormRestfulResponse> {\r\n return Promise.all([formStore.getForms(), formStore.getVersion()]).then(([forms, formVersion]: any[]) => {\r\n if (this.formConfig.loadMode === \"static\") {\r\n if (forms != null) {\r\n this.desForms = forms;\r\n return Promise.resolve(FormToolsService.LOAD_SUCCESS);\r\n } else {\r\n return this.loadDesign([this.formConfig.url || DEFAULT_FORM_FILE_NAME]);\r\n }\r\n } else if (this.formConfig.loadMode === \"dynamic\") {\r\n if (this.formConfig.appId != null && this.formConfig.appId !== \"\") {\r\n const query = {\r\n appId: this.formConfig.appId,\r\n cacheType: CacheType.FORM.code,\r\n };\r\n const url = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/query-cacheversion-by-appid-cachetype\";\r\n return this.fetch(url!, query).then((res: FormRestfulResponse) => {\r\n if (res != null && res.code === 1) {\r\n if (res.data != null && res.data.desCacheVersion != null) {\r\n if (String(formVersion) !== String(res.data.desCacheVersion.cacheVersionNumber)) {\r\n const formUrl = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/download?storageAddress=\" + res.data.desCacheVersion.storageAddress;\r\n return this.loadDesign([formUrl]).then((resEx: FormRestfulResponse) => {\r\n if (resEx.code === 1) {\r\n formStore.setVersion(res.data.desCacheVersion.cacheVersionNumber);\r\n }\r\n return resEx;\r\n });\r\n } else {\r\n if (forms != null) {\r\n this.desForms = forms;\r\n }\r\n console.log(this.desForms);\r\n return Promise.resolve(FormToolsService.LOAD_SUCCESS);\r\n }\r\n } else {\r\n return Promise.resolve({ code: 1, msg: \"暂无版本数据\" });\r\n }\r\n } else {\r\n return Promise.resolve(FormToolsService.LOAD_FAIL);\r\n }\r\n });\r\n } else {\r\n return Promise.resolve({\r\n code: 0,\r\n msg: \"动态加载需指定当前系统编号(appId)\",\r\n });\r\n }\r\n } else if (this.formConfig.loadMode === \"merge\") {\r\n if (this.formConfig.urls) {\r\n return new Promise((resolve) => {\r\n this.loadDesign(this.formConfig.urls || []).then(() => {\r\n resolve(FormToolsService.LOAD_SUCCESS);\r\n });\r\n });\r\n } else {\r\n return this.mergeUrlByType(CacheType.FORM.code).then((response: any) => {\r\n if (formVersion === response.cacheVersionNumber) {\r\n if (forms) {\r\n this.desForms = forms;\r\n }\r\n return Promise.resolve(FormToolsService.LOAD_SUCCESS);\r\n } else {\r\n return new Promise((resolve) => {\r\n this.loadDesign(response.storageAddress).then(() => {\r\n formStore.setVersion(response.cacheVersionNumber);\r\n resolve(FormToolsService.LOAD_SUCCESS);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n } else if (this.formConfig.loadMode === \"merge_cacheId\") {\r\n // 按照缓存编号查询表单数据,2024年8月15日14:03:24\r\n return this.mergeUrlByCacheId(CacheType.FORM.code).then((response: any) => {\r\n if (formVersion === response.cacheVersionNumber) {\r\n if (forms) {\r\n this.desForms = forms;\r\n }\r\n return Promise.resolve(FormToolsService.LOAD_SUCCESS);\r\n } else {\r\n return new Promise((resolve) => {\r\n this.loadDesign(response.storageAddress).then(() => {\r\n formStore.setVersion(response.cacheVersionNumber);\r\n resolve(FormToolsService.LOAD_SUCCESS);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n return Promise.resolve(FormToolsService.LOAD_FAIL);\r\n });\r\n }\r\n\r\n /**\r\n * @description: 获取表单或字典数据地址\r\n * @author ZPFly\r\n * @date 2022/10/18 20:43\r\n */\r\n private mergeUrlByType(type: string): Promise<any> {\r\n const url = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/query-batch-appids-cachetype\";\r\n const downloadUrl = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/download?storageAddress=\";\r\n const query = {\r\n appIds: this.formConfig.appId,\r\n cacheType: type,\r\n };\r\n return this.fetch(url!, query).then((resp: any) => {\r\n const response: any = {};\r\n const address: string[] = [];\r\n const cacheVersionNumber: any[] = [];\r\n const cacheVersionMap: any = {};\r\n resp?.data?.forEach((item: any) => {\r\n // 数据下载地址\r\n if (item.cacheType == type && item.desCacheVersion?.storageAddress && query.appIds && query.appIds.indexOf(item.appId) > -1) {\r\n cacheVersionMap[item.appId] = item.desCacheVersion.cacheVersionNumber;\r\n address.push(downloadUrl + item.desCacheVersion.storageAddress);\r\n }\r\n });\r\n query.appIds?.split(\",\").forEach((appId) => {\r\n cacheVersionNumber.push(cacheVersionMap[appId]);\r\n });\r\n response.cacheVersionNumber = cacheVersionNumber.join(\",\");\r\n response.storageAddress = address;\r\n return response;\r\n });\r\n }\r\n /**\r\n * @description: 获取表单或字典数据地址-按照缓存版本号查询字典/表单\r\n * @author ZPFly\r\n * @date 2022/10/18 20:43\r\n */\r\n private mergeUrlByCacheId(type: string): Promise<any> {\r\n const url = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/query-batch-appids-cachetype\";\r\n const downloadUrl = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/downloadById?cacheVersionId=\";\r\n const query = {\r\n appIds: this.formConfig.appId,\r\n cacheType: type,\r\n };\r\n const appIds: string[] = query.appIds?.split(\",\") || [];\r\n return this.fetch(url!, query).then((resp: any) => {\r\n const response: any = {};\r\n const address: string[] = [];\r\n const cacheVersionNumber: any[] = [];\r\n const cacheVersionMap: any = {};\r\n resp?.data?.forEach((item: any) => {\r\n // 数据下载地址\r\n if (item.cacheType == type && item.desCacheVersion?.cacheVersionId && query.appIds && appIds.indexOf(item.appId) > -1) {\r\n cacheVersionMap[item.appId] = item.desCacheVersion.cacheVersionNumber;\r\n address.push(downloadUrl + item.desCacheVersion.cacheVersionId + \"&appId=\" + item.appId + \"&cacheType=\" + type);\r\n }\r\n });\r\n query.appIds?.split(\",\").forEach((appId) => {\r\n cacheVersionNumber.push(cacheVersionMap[appId]);\r\n });\r\n response.cacheVersionNumber = cacheVersionNumber.join(\",\");\r\n response.storageAddress = address;\r\n return response;\r\n });\r\n }\r\n\r\n /**\r\n * @description: 加载远程表单配置\r\n * @author ChenRui\r\n * @date 2020/11/20 17:30\r\n */\r\n private loadDesign(urls: string[]): Promise<FormRestfulResponse> {\r\n return this.mergeFetchDesign(urls).then((desForms: DesForm[]) => {\r\n const newDesForms: DesForm[] = [];\r\n if (desForms != null && desForms.length > 0) {\r\n desForms\r\n .filter((item) => item.desFormLayouts != null && item.desFormLayouts.length > 0)\r\n .forEach((item) => {\r\n const newDesForm: DesForm | undefined = this.formatDesForm(item);\r\n if (newDesForm != null) {\r\n newDesForms.push(newDesForm);\r\n }\r\n });\r\n }\r\n this.desForms = newDesForms;\r\n formStore.setForms(this.desForms);\r\n return FormToolsService.LOAD_SUCCESS;\r\n });\r\n }\r\n\r\n /**\r\n * @description: 合并多个应用表单\r\n * @author ZPFly\r\n * @date 2022/10/17 15:39\r\n */\r\n private mergeFetchDesign(urls: string[]) {\r\n const onlySimpleLoadConfig = !!this.formConfig.onlySimpleLoadConfig;\r\n const headers = this.createFileDownloadAuthorizationHeader();\r\n const fetches: any = [];\r\n urls.forEach((url: string) => {\r\n fetches.push(this.fetch(url, {}, undefined, \"GET\", headers, onlySimpleLoadConfig));\r\n });\r\n return Promise.all(fetches).then((desForms: DesForm[]) => {\r\n let newDesForms: DesForm[] = [];\r\n desForms?.forEach((desForm: any) => {\r\n newDesForms = newDesForms.concat(desForm);\r\n });\r\n return newDesForms;\r\n });\r\n }\r\n\r\n /**\r\n * @description: 初始化字典\r\n * @author ChenRui\r\n * @date 2021/3/11 14:32\r\n */\r\n initDict(): Promise<FormRestfulResponse> {\r\n return Promise.all([dictStore.getDicts(), dictStore.getTreeDicts(), dictStore.getMapDicts(), dictStore.getMapTreeDicts(), dictStore.getVersion()]).then(([dicts, treeDicts, mapDicts, mapTreeDicts, dictVersion]: any[]) => {\r\n if (this.formConfig.loadMode === \"static\") {\r\n const url = this.formConfig.dictUrl ? this.formConfig.dictUrl : DEFAULT_DICT_URL;\r\n if (dicts != null || treeDicts != null) {\r\n this.sysDictDetailOptions = dicts;\r\n this.sysDictTreeDetailOptions = treeDicts;\r\n this.mapSysDictDetailOptions = mapDicts;\r\n this.mapSysDictTreeDetailOptions = mapTreeDicts;\r\n return FormToolsService.LOAD_SUCCESS;\r\n } else {\r\n return this.loadDict([url]);\r\n }\r\n } else if (this.formConfig.loadMode === \"dynamic\") {\r\n if (this.formConfig.appId) {\r\n const url1 = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/query-cacheversion-by-appid-cachetype\";\r\n const url: string = this.formConfig.dictUrl ? this.formConfig.dictUrl : url1 || \"\";\r\n const path: string = routerService.getPathFromUrl(url);\r\n let query: any = routerService.getParamsFromUrl(url) || {};\r\n query.appId = query.appId ? query.appId : this.formConfig.appId;\r\n query.cacheType = query.cacheType ? query.cacheType : CacheType.DICT.code;\r\n query = this.formConfig.dictRestLoadOnlyBody ? {} : query;\r\n const body: any = (this.formConfig.dictRestLoadMode || \"GET\").toLocaleUpperCase() === \"GET\" ? undefined : this.formConfig.dictRestLoadBody;\r\n let headers: any = this.formConfig.dictRestLoadHeaders;\r\n if (headers != null && typeof headers === \"function\") {\r\n headers = (headers as any)();\r\n }\r\n return this.fetch(path, query, body, this.formConfig.dictRestLoadMode, headers).then((res: FormRestfulResponse) => {\r\n if (res != null && (res.code === 1 || String(res.code) === String(200))) {\r\n if (res.data != null) {\r\n let desCacheVersion: any = res.data.desCacheVersion;\r\n if (res.data && res.data instanceof Array && res.data.length > 0) {\r\n desCacheVersion = res.data[0].desCacheVersion;\r\n }\r\n const distUrl = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/download?storageAddress=\" + desCacheVersion.storageAddress;\r\n if (String(dictVersion) !== String(desCacheVersion.cacheVersionNumber)) {\r\n return this.loadDict([distUrl]).then((resEx: FormRestfulResponse) => {\r\n if (resEx.code === 1) {\r\n dictStore.setVersion(desCacheVersion.cacheVersionNumber);\r\n }\r\n return resEx;\r\n });\r\n } else {\r\n if (dicts != null || treeDicts != null) {\r\n this.sysDictDetailOptions = dicts;\r\n this.sysDictTreeDetailOptions = treeDicts;\r\n this.mapSysDictDetailOptions = mapDicts;\r\n this.mapSysDictTreeDetailOptions = mapTreeDicts;\r\n }\r\n return FormToolsService.LOAD_SUCCESS;\r\n }\r\n } else {\r\n return { code: 1, msg: \"暂无版本数据\" };\r\n }\r\n } else {\r\n return FormToolsService.LOAD_FAIL;\r\n }\r\n });\r\n } else {\r\n return { code: 0, msg: \"动态加载需指定当前系统编号(appId)\" };\r\n }\r\n } else if (this.formConfig.loadMode === \"merge\") {\r\n return this.mergeUrlByType(CacheType.DICT.code).then((response: any) => {\r\n if (dictVersion === response.cacheVersionNumber) {\r\n if (dicts != null || treeDicts != null) {\r\n this.sysDictDetailOptions = dicts;\r\n this.sysDictTreeDetailOptions = treeDicts;\r\n this.mapSysDictDetailOptions = mapDicts;\r\n this.mapSysDictTreeDetailOptions = mapTreeDicts;\r\n }\r\n return FormToolsService.LOAD_SUCCESS;\r\n } else {\r\n return new Promise((resolve) => {\r\n this.loadDict(response.storageAddress).then(() => {\r\n dictStore.setVersion(response.cacheVersionNumber);\r\n resolve(FormToolsService.LOAD_SUCCESS);\r\n });\r\n });\r\n }\r\n });\r\n } else if (this.formConfig.loadMode === \"merge_cacheId\") {\r\n // 按照缓存编号查询表单数据,2024年8月15日14:03:24\r\n return this.mergeUrlByCacheId(CacheType.DICT.code).then((response: any) => {\r\n if (dictVersion === response.cacheVersionNumber) {\r\n if (dicts != null || treeDicts != null) {\r\n this.sysDictDetailOptions = dicts;\r\n this.sysDictTreeDetailOptions = treeDicts;\r\n this.mapSysDictDetailOptions = mapDicts;\r\n this.mapSysDictTreeDetailOptions = mapTreeDicts;\r\n }\r\n return FormToolsService.LOAD_SUCCESS;\r\n } else {\r\n return new Promise((resolve) => {\r\n this.loadDict(response.storageAddress).then(() => {\r\n dictStore.setVersion(response.cacheVersionNumber);\r\n resolve(FormToolsService.LOAD_SUCCESS);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n return FormToolsService.LOAD_FAIL;\r\n });\r\n }\r\n\r\n /**\r\n * @description: 加载远程字典配置\r\n * @author ChenRui\r\n * @date 2020/11/20 17:30\r\n */\r\n private loadDict(urls: string[]): Promise<FormRestfulResponse> {\r\n return this.mergeFetchDict(urls).then((sysDictInfos: any) => {\r\n if (sysDictInfos != null) {\r\n // 数据格式化\r\n const dictionaryFormatCollection: DictionaryFormatCollection = this.inidDictOptions(sysDictInfos);\r\n this.sysDictDetailOptions = dictionaryFormatCollection.sysDictDetailOptions || [];\r\n this.sysDictTreeDetailOptions = dictionaryFormatCollection.sysDictTreeDetailOptions || [];\r\n this.mapSysDictDetailOptions = dictionaryFormatCollection.mapSysDictDetailOptions;\r\n this.mapSysDictTreeDetailOptions = dictionaryFormatCollection.mapSysDictTreeDetailOptions;\r\n // 字典本地存储\r\n if (dictionaryFormatCollection.sysDictDetailOptions && dictionaryFormatCollection.sysDictDetailOptions.length > 0) {\r\n dictStore.setDicts(dictionaryFormatCollection.sysDictDetailOptions);\r\n }\r\n if (dictionaryFormatCollection.sysDictTreeDetailOptions && dictionaryFormatCollection.sysDictTreeDetailOptions.length > 0) {\r\n dictStore.setTreeDicts(dictionaryFormatCollection.sysDictTreeDetailOptions);\r\n }\r\n dictStore.setMapDicts(dictionaryFormatCollection.mapSysDictDetailOptions || null);\r\n dictStore.setMapTreeDicts(dictionaryFormatCollection.mapSysDictTreeDetailOptions || null);\r\n }\r\n return FormToolsService.LOAD_SUCCESS;\r\n });\r\n // const onlySimpleLoadConfig = !!this.formConfig.onlySimpleLoadConfig;\r\n // let sysDictInfos: SysDictInfo[] = [];\r\n // if (loadMode === \"dynamic\") {\r\n // const headers = this.createFileDownloadAuthorizationHeader();\r\n // url = this.formConfig.url + \"/ms-loong/api/v1/des-cache-info/permit_endpoint/download?storageAddress=\" + url;\r\n // return this.fetch(url, {}, undefined, \"GET\", headers, onlySimpleLoadConfig).then((res: any) => {\r\n // sysDictInfos = res;\r\n // if (sysDictInfos != null && sysDictInfos.length > 0) {\r\n // // 数据格式化\r\n // const dictionaryFormatCollection: DictionaryFormatCollection = this.inidDictOptions(sysDictInfos);\r\n // this.sysDictDetailOptions = dictionaryFormatCollection.sysDictDetailOptions || [];\r\n // this.sysDictTreeDetailOptions = dictionaryFormatCollection.sysDictTreeDetailOptions || [];\r\n // this.mapSysDictDetailOptions = dictionaryFormatCollection.mapSysDictDetailOptions;\r\n // this.mapSysDictTreeDetailOptions = dictionaryFormatCollection.mapSysDictTreeDetailOptions;\r\n // // 字典本地存储\r\n // if (dictionaryFormatCollection.sysDictDetailOptions && dictionaryFormatCollection.sysDictDetailOptions.length > 0) {\r\n // dictStore.setDicts(dictionaryFormatCollection.sysDictDetailOptions);\r\n // }\r\n // if (dictionaryFormatCollection.sysDictTreeDetailOptions && dictionaryFormatCollection.sysDictTreeDetailOptions.length > 0) {\r\n // dictStore.setTreeDicts(dictionaryFormatCollection.sysDictTreeDetailOptions);\r\n // }\r\n // dictStore.setMapDicts(dictionaryFormatCollection.mapSysDictDetailOptions || null);\r\n // dictStore.setMapTreeDicts(dictionaryFormatCollection.mapSysDictTreeDetailOptions || null);\r\n // }\r\n // return FormToolsService.LOAD_SUCCESS;\r\n // });\r\n // }\r\n }\r\n\r\n /**\r\n * @description: 合并多个应用字典\r\n * @author ZPFly\r\n * @date 2022/10/17 15:39\r\n */\r\n private mergeFetchDict(dictUrl: string[]) {\r\n const fetchDicts: any = [];\r\n dictUrl.forEach((url: string) => {\r\n fetchDicts.push(this.fetch(url, {}, undefined, \"GET\", undefined, !!this.formConfig.onlySimpleLoadConfig));\r\n });\r\n return Promise.all(fetchDicts).then((dictInfos: SysDictInfo[]) => {\r\n let newDictInfos: SysDictInfo[] = [];\r\n const empObj: any = {};\r\n const filterDist: SysDictInfo[] = [];\r\n dictInfos?.forEach((desForm: any) => {\r\n newDictInfos = newDictInfos.concat(desForm);\r\n });\r\n // 去除重复字典\r\n newDictInfos.forEach((item: SysDictInfo) => {\r\n if (!empObj[item.dictId]) {\r\n filterDist.push(item);\r\n empObj[item.dictId] = true;\r\n }\r\n });\r\n return filterDist;\r\n });\r\n }\r\n /**\r\n * @description: 初始化字典可选项\r\n * @author ChenRui\r\n * @date 2020/11/10 20:38\r\n */\r\n public inidDictOptions(sysDictInfos: SysDictInfo[]): DictionaryFormatCollection {\r\n const sysDictDetailOptions: NzTreeNodeOptions[] = [];\r\n const sysDictTreeDetailOptions: NzTreeNodeOptions[] = [];\r\n sysDictInfos.forEach((sysDictInfo) => {\r\n const node: NzTreeNodeOptions = {\r\n key: sysDictInfo.dictId,\r\n value: sysDictInfo.dictCd,\r\n title: sysDictInfo.dictNm,\r\n isLeaf: true,\r\n expanded: false,\r\n children: [],\r\n };\r\n if (sysDictInfo.dictTp === DynamicOptionType.GeneralDictionary.code) {\r\n node.isLeaf = false;\r\n node.children = formTreeNodeConvertService.arrayConvertToNzTreeNode(\r\n sysDictInfo.comDictKeyValues.filter((it) => !!it.dictId),\r\n this.dictDetailsContrast,\r\n this.nzDictDetailsContrastContrast,\r\n true\r\n );\r\n sysDictDetailOptions.push(node);\r\n } else if (sysDictInfo.dictTp === DynamicOptionType.TreeDictionary.code) {\r\n if (sysDictInfo.treeDictKeyValues != null && sysDictInfo.treeDictKeyValues.length > 0) {\r\n node.isLeaf = false;\r\n sysDictInfo.treeDictKeyValues.forEach((item) => {\r\n if (item.suprDicPk === \"0\") {\r\n item.suprDicPk = \"\";\r\n }\r\n });\r\n node.children = formTreeNodeConvertService.arrayConvertToNzTreeNode(\r\n sysDictInfo.treeDictKeyValues.filter((it) => !!it.dictId),\r\n this.dictTreeDetailsContrast,\r\n this.nzDictTreeDetailsContrastContrast,\r\n true\r\n );\r\n }\r\n sysDictTreeDetailOptions.push(node);\r\n }\r\n });\r\n const mapNodeOptions: MapNodeOptions | undefined = formTreeNodeConvertService.nzTreeNodeConvertToMap(sysDictDetailOptions);\r\n const mapTreeNodeOptions: MapNodeOptions | undefined = formTreeNodeConvertService.nzTreeNodeConvertToMap(sysDictTreeDetailOptions);\r\n return {\r\n sysDictDetailOptions: sysDictDetailOptions,\r\n sysDictTreeDetailOptions: sysDictTreeDetailOptions,\r\n mapSysDictDetailOptions: mapNodeOptions,\r\n mapSysDictTreeDetailOptions: mapTreeNodeOptions,\r\n };\r\n }\r\n\r\n /**\r\n * @description: 格式化表单\r\n * @author ChenRui\r\n * @date 2020/11/30 15:48\r\n */\r\n formatDesForm(sourceDesForm: DesForm): DesForm | undefined {\r\n if (sourceDesForm != null) {\r\n const newDesForm: DesForm = new DesForm(sourceDesForm);\r\n const desFormLayouts: DesFormLayout[] = formTreeNodeConvertService.arrayConvertToTreeNode(sourceDesForm.desFormLayouts, this.nodeContrast);\r\n const controls = this.recursionFormatForm([], desFormLayouts);\r\n this.sortControls(controls);\r\n newDesForm.desFormLayouts = [];\r\n newDesForm.controls = controls;\r\n return newDesForm;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 递归格式化\r\n * @author ChenRui\r\n * @date 2020/11/17 10:16\r\n */\r\n private recursionFormatForm(desFormControls: DesFormControl[], desFormLayouts: DesFormLayout[]): Control[] {\r\n const controls: Control[] = [];\r\n if (desFormControls != null && desFormControls.length > 0) {\r\n desFormControls\r\n .filter((item) => !!item.formFieldId)\r\n .forEach((desFormControl) => {\r\n const control: Control = {\r\n code: desFormControl.controlType,\r\n name: (Object.values(FormFieldType).find((item) => item.code === desFormControl.controlType) || {}).name || \"\",\r\n type: Number(desFormControl.controlType) < 50 ? FormFieldClass.Base.code : FormFieldClass.Senior.code,\r\n active: false,\r\n subControls: undefined,\r\n controlAttr: desFormControl,\r\n };\r\n const controlAttr = control.controlAttr as DesFormControl;\r\n controlAttr.isBoldTitle = desFormControl.isBoldTitle === Switch.Enable.code;\r\n controlAttr.isHideTitle = desFormControl.isHideTitle === Switch.Enable.code;\r\n controlAttr.isNotEdit = desFormControl.isNotEdit === Switch.Enable.code;\r\n controlAttr.isShowHoliday = desFormControl.isShowHoliday === Switch.Enable.code;\r\n controlAttr.isHideControl = desFormControl.isHideControl === Switch.Enable.code;\r\n controlAttr.isPasswordBox = desFormControl.isPasswordBox === Switch.Enable.code;\r\n controlAttr.enableAutoComplete = desFormControl.enableAutoComplete === Switch.Enable.code;\r\n controlAttr.isFixedRowHeight = desFormControl.isFixedRowHeight === Switch.Enable.code;\r\n controlAttr.thousandthPercentileFormat = desFormControl.thousandthPercentileFormat === Switch.Enable.code;\r\n controlAttr.isShowCapitalization = desFormControl.isShowCapitalization === Switch.Enable.code;\r\n controlAttr.isLineFeedDisplay = desFormControl.isLineFeedDisplay === Switch.Enable.code;\r\n controlAttr.optionConfig = formBeanUtilsService.parse(desFormControl.optionConfig);\r\n controlAttr.generalDictionaryOptions = formBeanUtilsService.parse(desFormControl.generalDictionaryOptions);\r\n controlAttr.treeShapeOptions = formBeanUtilsService.parse(desFormControl.treeShapeOptions);\r\n controlAttr.isSupportMultiple = desFormControl.isSupportMultiple === Switch.Enable.code;\r\n if (Array.isArray(desFormControl.customUploadType) && desFormControl.customUploadType.length > 0) {\r\n controlAttr.customUploadType = desFormControl.customUploadType.join(\",\");\r\n }\r\n controlAttr.isMultipleChoice = desFormControl.isMultipleChoice === Switch.Enable.code;\r\n controlAttr.isSearchable = desFormControl.isSearchable === Switch.Enable.code;\r\n controlAttr.canAddEntry = desFormControl.canAddEntry === Switch.Enable.code;\r\n controlAttr.isClearButton = desFormControl.isClearButton === Switch.Enable.code;\r\n controlAttr.hiddenDropdown = desFormControl.hiddenDropdown === Switch.Enable.code;\r\n controlAttr.textFold = desFormControl.textFold === Switch.Enable.code;\r\n controlAttr.verificationRules = formBeanUtilsService.parse(desFormControl.verificationRules);\r\n controlAttr.isDesensitize = desFormControl.isDesensitize === Switch.Enable.code; // 是否脱敏2026年5月13日 15:43:17\r\n controls.push(control);\r\n });\r\n }\r\n if (desFormLayouts != null && desFormLayouts.length > 0) {\r\n desFormLayouts\r\n .filter((item) => !!item.layoutId)\r\n .forEach((desFormLayout) => {\r\n const layoutControl: Control = {\r\n code: desFormLayout.layoutType,\r\n name: (Object.values(FormFieldType).find((item) => item.code === desFormLayout.layoutType) || {}).name || \"\",\r\n type: FormFieldClass.Layout.code,\r\n active: false,\r\n subControls: [],\r\n controlAttr: new DesFormLayout(desFormLayout),\r\n };\r\n const controlAttr = layoutControl.controlAttr as DesFormLayout;\r\n controlAttr.gridColumnConfig = formBeanUtilsService.parse(desFormLayout.gridColumnConfig);\r\n controlAttr.desFormControls = [];\r\n controlAttr.subDesFormLayout = [];\r\n if ((desFormLayout.subDesFormLayout != null && desFormLayout.subDesFormLayout.length > 0) || (desFormLayout.desFormControls != null && desFormLayout.desFormControls.length > 0)) {\r\n layoutControl.subControls = this.recursionFormatForm(desFormLayout.desFormControls, desFormLayout.subDesFormLayout);\r\n }\r\n controls.push(layoutControl);\r\n });\r\n }\r\n return controls;\r\n }\r\n\r\n /**\r\n * @description: 控件排序\r\n * @author ChenRui\r\n * @date 2020/11/17 11:59\r\n */\r\n private sortControls(controls: Control[]): void {\r\n controls.sort((controlA, controlB) => {\r\n let x = 0;\r\n let y = 0;\r\n if (controlA.type === FormFieldClass.Layout.code) {\r\n x = Number((controlA.controlAttr as DesFormLayout).layoutOrder);\r\n } else {\r\n x = Number((controlA.controlAttr as DesFormControl).tableFieldOrder);\r\n }\r\n if (controlB.type === FormFieldClass.Layout.code) {\r\n y = Number((controlB.controlAttr as DesFormLayout).layoutOrder);\r\n } else {\r\n y = Number((controlB.controlAttr as DesFormControl).tableFieldOrder);\r\n }\r\n return x - y;\r\n });\r\n controls.forEach((item) => {\r\n if (item.subControls != null && item.subControls.length > 0) {\r\n this.sortControls(item.subControls);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @description: 加载资源\r\n * @author ChenRui\r\n * @date 2020/11/23 11:00\r\n */\r\n loadResource(formId: string): DesForm {\r\n const desForm: DesForm | undefined = this.desForms.find((item) => item.formId === formId);\r\n if (desForm != null) {\r\n return formBeanUtilsService.copy(desForm);\r\n } else {\r\n return new DesForm({ formId: formId });\r\n }\r\n }\r\n\r\n /**\r\n * @description: rest客户端\r\n * @author ChenRui\r\n * @date 2020/11/19 21:02\r\n */\r\n private fetch(path: string, params: { [key: string]: any }, body?: any, method = \"GET\", headers?: any, simple = false): Promise<any> {\r\n headers = headers ? headers : apiService.createBasicHeaders();\r\n return simple ? fetch(path).then((response) => response.json()) : apiService.fetch(path, params, body, method, headers);\r\n }\r\n\r\n /**\r\n * @description: 校验提示\r\n * @author ChenRui\r\n * @date 2021/8/18 17:14\r\n */\r\n validateTips(formApis: FormApi | FormApi[], scrollView?: any): boolean {\r\n return formValidateService.validateTips(formApis, scrollView);\r\n }\r\n\r\n /**\r\n * @description: 创建认证下载消息头\r\n * @author ChenRui\r\n * @date 2020/8/28 15:18\r\n */\r\n createFileDownloadAuthorizationHeader() {\r\n return {\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n responseType: \"blob\",\r\n };\r\n }\r\n}\r\nconst formToolsService: FormToolsService = new FormToolsService();\r\nexport { formToolsService, FormToolsService, DictionaryFormatCollection };\r\n","function transform(currencyDigits: any): any {\r\n // Constants:\r\n const MAXIMUM_NUMBER = 999999999999.99;\r\n // Predefine the radix characters and currency symbols for output:\r\n const CN_ZERO = \"零\";\r\n const CN_ONE = \"壹\";\r\n const CN_TWO = \"贰\";\r\n const CN_THREE = \"叁\";\r\n const CN_FOUR = \"肆\";\r\n const CN_FIVE = \"伍\";\r\n const CN_SIX = \"陆\";\r\n const CN_SEVEN = \"柒\";\r\n const CN_EIGHT = \"捌\";\r\n const CN_NINE = \"玖\";\r\n const CN_TEN = \"拾\";\r\n const CN_HUNDRED = \"佰\";\r\n const CN_THOUSAND = \"仟\";\r\n const CN_TEN_THOUSAND = \"万\";\r\n const CN_HUNDRED_MILLION = \"亿\";\r\n // 满足数字大写转换需求\r\n const CN_SYMBOL = \"\"; // 不带前缀【金额:】\r\n const CN_DOLLAR = \"\"; // 元\r\n const DROP = \"点\"; // 点 2023年8月31日10:51:25\r\n const CN_TEN_CENT = \"\"; // 角\r\n const CN_CENT = \"\"; // 分\r\n const CN_INTEGER = \"\"; // 整\r\n\r\n // constiables:\r\n let integral; // Represent integral part of digit number.\r\n let decimal; // Represent decimal part of digit number.\r\n let outputCharacters; // The output result.\r\n let parts = [];\r\n let digits = [],\r\n radices = [],\r\n bigRadices = [],\r\n decimals = [];\r\n let zeroCount;\r\n let i, p, d;\r\n let quotient, modulus;\r\n\r\n // Validate input string:\r\n currencyDigits = currencyDigits != undefined ? currencyDigits.toString() : \"\";\r\n\r\n let prefix = \"\";\r\n if (currencyDigits != null && currencyDigits.indexOf(\"-\") === 0) {\r\n prefix = \"负\";\r\n currencyDigits = currencyDigits.substr(1);\r\n }\r\n if (currencyDigits === \"\") {\r\n return \"空\"; // 默认提示\r\n }\r\n if (currencyDigits.match(/[^,.\\d]/) != null) {\r\n return \"您的输入含有无效字符\";\r\n }\r\n if (currencyDigits.match(/^((\\d{1,3}(,\\d{3})*(.((\\d{3},)*\\d{1,3}))?)|(\\d+(.\\d+)?))$/) == null) {\r\n return \"您的输入的数字格式不正确\";\r\n }\r\n\r\n // Normalize the format of input digits:\r\n currencyDigits = currencyDigits.replace(/,/g, \"\"); // Remove comma delimiters.\r\n currencyDigits = currencyDigits.replace(/^0+/, \"\"); // Trim zeros at the beginning.\r\n // Assert the number is not greater than the maximum number.\r\n if (Number(currencyDigits) > MAXIMUM_NUMBER) {\r\n let divisor = 1000000000000;\r\n if (currencyDigits.indexOf(\".\") > -1) {\r\n const num = currencyDigits.split(\".\")[1].length;\r\n for (let i = 0; i < num; i++) {\r\n divisor = divisor * 10;\r\n }\r\n currencyDigits = currencyDigits.replace(\".\", \"\");\r\n }\r\n return Number(currencyDigits) / Number(divisor) + \"万亿元\";\r\n }\r\n\r\n // Process the coversion from currency digits to characters:\r\n // Separate integral and decimal parts before processing coversion:\r\n parts = currencyDigits.split(\".\");\r\n if (parts.length > 1) {\r\n integral = parts[0];\r\n decimal = parts[1];\r\n // Cut down redundant decimal digits that are after the second.\r\n decimal = decimal.substr(0, 2);\r\n } else {\r\n integral = parts[0];\r\n decimal = \"\";\r\n }\r\n // Prepare the characters corresponding to the digits:\r\n digits = [CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT, CN_NINE];\r\n radices = [\"\", CN_TEN, CN_HUNDRED, CN_THOUSAND];\r\n bigRadices = [\"\", CN_TEN_THOUSAND, CN_HUNDRED_MILLION];\r\n decimals = [CN_TEN_CENT, CN_CENT];\r\n // Start processing:\r\n outputCharacters = \"\";\r\n // Process integral part if it is larger than 0:\r\n if (Number(integral) > 0) {\r\n zeroCount = 0;\r\n for (i = 0; i < integral.length; i++) {\r\n p = integral.length - i - 1;\r\n d = integral.substr(i, 1);\r\n quotient = p / 4;\r\n modulus = p % 4;\r\n if (d === \"0\") {\r\n zeroCount++;\r\n } else {\r\n if (zeroCount > 0) {\r\n outputCharacters += digits[0];\r\n }\r\n zeroCount = 0;\r\n outputCharacters += digits[Number(d)] + radices[modulus];\r\n }\r\n if (modulus === 0 && zeroCount < 4) {\r\n outputCharacters += bigRadices[quotient];\r\n zeroCount = 0;\r\n }\r\n }\r\n // outputCharacters += CN_DOLLAR; // 原来的【元】\r\n } else {\r\n //整数位为'零'\r\n outputCharacters = digits[Number(integral)];\r\n }\r\n // Process decimal part if there is:\r\n //校验小数位是否有值\r\n if (decimal !== \"\" && decimal !== \"0\" && decimal !== \"00\") {\r\n outputCharacters += DROP; // new 2023年8月31日10:52:54\r\n for (i = 0; i < decimal.length; i++) {\r\n d = decimal.substr(i, 1);\r\n if (d !== \"0\") {\r\n outputCharacters += digits[Number(d)] + decimals[i];\r\n } else if (i === 0) {\r\n //处理金额十分位数值为0时的大写转换\r\n outputCharacters += digits[Number(d)];\r\n }\r\n }\r\n }\r\n // Confirm and return the final output string:\r\n if (outputCharacters === \"\") {\r\n outputCharacters = CN_ZERO + CN_DOLLAR;\r\n }\r\n if (decimal === \"\") {\r\n outputCharacters += CN_INTEGER;\r\n }\r\n outputCharacters = CN_SYMBOL + prefix + outputCharacters;\r\n return outputCharacters;\r\n}\r\n/**\r\n * @description: 跨列计算\r\n * @author ChenRui\r\n * @date 2020/12/1 19:34\r\n */\r\nconst amountCapitalization = (data: any) => {\r\n return transform(data);\r\n};\r\n\r\nexport default amountCapitalization;\r\n","export class DesFormControl {\r\n formFieldId: string;\r\n formId: string;\r\n layoutId: string;\r\n boundProperty: string;\r\n extendBoundPropertyOne: string;\r\n extendBoundPropertyTwo: string;\r\n formFieldDescribe: string;\r\n controlType: string;\r\n tableFieldOrder: number | undefined;\r\n fieldDefaultValue: any;\r\n titleWidth: string;\r\n isBoldTitle: string | boolean;\r\n isHideTitle: string | boolean;\r\n titleColor: string;\r\n placeholder: string;\r\n tips: string;\r\n isNotEdit: string | boolean;\r\n bindingPrefix: string;\r\n bindingSuffix: string;\r\n builtInFrontLabel: string;\r\n builtInPostLabel: string;\r\n isHideControl: string | boolean;\r\n isShowHoliday: string | boolean;\r\n controlWidth: string;\r\n isPasswordBox: string | boolean;\r\n initRowHeight: number | undefined;\r\n isFixedRowHeight: string | boolean;\r\n formatType: string;\r\n minValue: number | undefined;\r\n maxValue: number | undefined;\r\n step: number | undefined;\r\n decimalPlaces: number | undefined;\r\n thousandthPercentileFormat: string | boolean;\r\n unit: string;\r\n moneyUnit: string;\r\n defineOptionalUnits: string;\r\n defineOptionalUnitsDefault: string;\r\n zoomType: string;\r\n zoomMultiple: number | undefined;\r\n isShowCapitalization: string | boolean;\r\n isLineFeedDisplay: string | boolean;\r\n isOptionType: string | boolean;\r\n optionConfig: any;\r\n dynamicOptionType: string;\r\n generalDictionary: string;\r\n generalDictionaryOptions: any;\r\n treeShape: string;\r\n treeShapeOptions: any;\r\n disableNonLeafNodes: string | boolean;\r\n dateFormat: string;\r\n timeFormat: string;\r\n isSupportMultiple: string | boolean;\r\n maxUploadNumber: number | undefined;\r\n limitSize: number | undefined;\r\n supportUploadType: string;\r\n customUploadType: any;\r\n extendUploadType: string;\r\n attachmentExtendProperties: string;\r\n isMultipleChoice: string | boolean;\r\n isSearchable: string | boolean;\r\n canAddEntry: string | boolean;\r\n isClearButton: string | boolean;\r\n hiddenDropdown: string | boolean; // new by 2021-11-9\r\n onOpeningValue: string;\r\n whenClosedValue: string;\r\n onOpeningText: string;\r\n whenClosedText: string;\r\n customFieldName: string; // new by 2021-11-9\r\n textFold: string | boolean;\r\n enableAutoComplete: string | boolean; // new by 2022-05-07\r\n autoCompleteOptions: any[]; // new by 2022-05-07\r\n verificationRules: any;\r\n busAttr: any;\r\n checkboxStyle: string | boolean; // 多选框选项标签样式\r\n itemWidth: string | boolean; // 多选框选项标签样式\r\n isTreeOpen: string | boolean; // 树形选择框是否展开\r\n changeOnSelect: string | boolean; // 是否允许级联选择框只选中父级选项\r\n textareaRows: number | undefined; // 设置textarea组件默认展示行数\r\n isDesensitize: string | boolean; // 是否脱敏 2026年5月13日 13:48:28\r\n constructor(\r\n options: {\r\n formFieldId?: string;\r\n formId?: string;\r\n layoutId?: string;\r\n boundProperty?: string;\r\n extendBoundPropertyOne?: string;\r\n extendBoundPropertyTwo?: string;\r\n formFieldDescribe?: string;\r\n controlType?: string;\r\n tableFieldOrder?: number;\r\n fieldDefaultValue?: any;\r\n titleWidth?: string;\r\n isBoldTitle?: string;\r\n isHideTitle?: string;\r\n titleColor?: string;\r\n placeholder?: string;\r\n tips?: string;\r\n isNotEdit?: string;\r\n bindingPrefix?: string;\r\n bindingSuffix?: string;\r\n builtInFrontLabel?: string;\r\n builtInPostLabel?: string;\r\n isHideControl?: string;\r\n isShowHoliday?: string;\r\n controlWidth?: string;\r\n isPasswordBox?: string;\r\n initRowHeight?: number;\r\n isFixedRowHeight?: string;\r\n formatType?: string;\r\n minValue?: number;\r\n maxValue?: number;\r\n step?: number;\r\n decimalPlaces?: number;\r\n thousandthPercentileFormat?: string;\r\n unit?: string;\r\n moneyUnit?: string;\r\n defineOptionalUnits?: string;\r\n defineOptionalUnitsDefault?: string;\r\n zoomType?: string;\r\n zoomMultiple?: number;\r\n isShowCapitalization?: string;\r\n isLineFeedDisplay?: string;\r\n isOptionType?: string;\r\n optionConfig?: any;\r\n dynamicOptionType?: string;\r\n generalDictionary?: string;\r\n generalDictionaryOptions?: any;\r\n treeShape?: string;\r\n treeShapeOptions?: any;\r\n disableNonLeafNodes?: string | boolean;\r\n dateFormat?: string;\r\n timeFormat?: string;\r\n isSupportMultiple?: string;\r\n maxUploadNumber?: number;\r\n limitSize?: number;\r\n supportUploadType?: string;\r\n customUploadType?: any;\r\n extendUploadType?: string;\r\n attachmentExtendProperties?: string;\r\n isMultipleChoice?: string;\r\n isSearchable?: string;\r\n canAddEntry?: string;\r\n isClearButton?: string;\r\n hiddenDropdown?: string;\r\n onOpeningValue?: string;\r\n whenClosedValue?: string;\r\n onOpeningText?: string;\r\n whenClosedText?: string;\r\n customFieldName?: string;\r\n textFold?: string;\r\n enableAutoComplete?: string;\r\n autoCompleteOptions?: any[];\r\n verificationRules?: any;\r\n busAttr?: any;\r\n checkboxStyle?: string | boolean;\r\n isTreeOpen?: string | boolean;\r\n itemWidth?: string | boolean;\r\n changeOnSelect?: string | boolean;\r\n textareaRows?: number | undefined;\r\n isDesensitize?: string; // 是否脱敏 2026年5月13日 13:48:28\r\n } = {}\r\n ) {\r\n this.formFieldId = options.formFieldId || \"\";\r\n this.formId = options.formId || \"\";\r\n this.layoutId = options.layoutId || \"\";\r\n this.boundProperty = options.boundProperty || \"\";\r\n this.extendBoundPropertyOne = options.extendBoundPropertyOne || \"\";\r\n this.extendBoundPropertyTwo = options.extendBoundPropertyTwo || \"\";\r\n this.formFieldDescribe = options.formFieldDescribe || \"\";\r\n this.controlType = options.controlType || \"\";\r\n this.tableFieldOrder = options.tableFieldOrder || undefined;\r\n this.fieldDefaultValue = options.fieldDefaultValue || \"\";\r\n this.titleWidth = options.titleWidth || \"\";\r\n this.isBoldTitle = options.isBoldTitle || \"\";\r\n this.isHideTitle = options.isHideTitle || \"\";\r\n this.titleColor = options.titleColor || \"\";\r\n this.placeholder = options.placeholder || \"\";\r\n this.tips = options.tips || \"\";\r\n this.isNotEdit = options.isNotEdit || \"\";\r\n this.bindingPrefix = options.bindingPrefix || \"\";\r\n this.bindingSuffix = options.bindingSuffix || \"\";\r\n this.builtInFrontLabel = options.builtInFrontLabel || \"\";\r\n this.builtInPostLabel = options.builtInPostLabel || \"\";\r\n this.isHideControl = options.isHideControl || \"\";\r\n this.isShowHoliday = options.isShowHoliday || \"\";\r\n this.controlWidth = options.controlWidth || \"\";\r\n this.isPasswordBox = options.isPasswordBox || \"\";\r\n this.initRowHeight = options.initRowHeight || undefined;\r\n this.isFixedRowHeight = options.isFixedRowHeight || \"\";\r\n this.formatType = options.formatType || \"\";\r\n this.minValue = options.minValue || undefined;\r\n this.maxValue = options.maxValue || undefined;\r\n this.step = options.step || undefined;\r\n this.decimalPlaces = options.decimalPlaces || undefined;\r\n this.thousandthPercentileFormat = options.thousandthPercentileFormat || \"\";\r\n this.unit = options.unit || \"\";\r\n this.moneyUnit = options.moneyUnit || \"\";\r\n this.defineOptionalUnits = options.defineOptionalUnits || \"\";\r\n this.defineOptionalUnitsDefault = options.defineOptionalUnitsDefault || \"\";\r\n this.zoomType = options.zoomType || \"\";\r\n this.zoomMultiple = options.zoomMultiple || undefined;\r\n this.isShowCapitalization = options.isShowCapitalization || \"\";\r\n this.isLineFeedDisplay = options.isLineFeedDisplay || \"\";\r\n this.isOptionType = options.isOptionType || \"\";\r\n this.optionConfig = options.optionConfig || \"\";\r\n this.dynamicOptionType = options.dynamicOptionType || \"\";\r\n this.generalDictionary = options.generalDictionary || \"\";\r\n this.generalDictionaryOptions = options.generalDictionaryOptions || \"\";\r\n this.treeShape = options.treeShape || \"\";\r\n this.treeShapeOptions = options.treeShapeOptions || \"\";\r\n this.disableNonLeafNodes = options.disableNonLeafNodes || \"\";\r\n this.dateFormat = options.dateFormat || \"\";\r\n this.timeFormat = options.timeFormat || \"\";\r\n this.isSupportMultiple = options.isSupportMultiple || \"\";\r\n this.maxUploadNumber = options.maxUploadNumber || undefined;\r\n this.limitSize = options.limitSize || undefined;\r\n this.supportUploadType = options.supportUploadType || \"\";\r\n this.customUploadType = options.customUploadType;\r\n this.extendUploadType = options.extendUploadType || \"\";\r\n this.attachmentExtendProperties = options.attachmentExtendProperties || \"\";\r\n this.isMultipleChoice = options.isMultipleChoice || \"\";\r\n this.isSearchable = options.isSearchable || \"\";\r\n this.canAddEntry = options.canAddEntry || \"\";\r\n this.isClearButton = options.isClearButton || \"\";\r\n this.hiddenDropdown = options.hiddenDropdown || \"\";\r\n this.onOpeningValue = options.onOpeningValue || \"\";\r\n this.whenClosedValue = options.whenClosedValue || \"\";\r\n this.onOpeningText = options.onOpeningText || \"\";\r\n this.whenClosedText = options.whenClosedText || \"\";\r\n this.customFieldName = options.customFieldName || \"\";\r\n this.textFold = options.textFold || \"\";\r\n this.enableAutoComplete = options.enableAutoComplete || \"\";\r\n this.autoCompleteOptions = options.autoCompleteOptions || [];\r\n this.verificationRules = options.verificationRules;\r\n this.busAttr = options.busAttr;\r\n this.checkboxStyle = options.checkboxStyle || \"\";\r\n this.isTreeOpen = options.isTreeOpen || \"\";\r\n this.itemWidth = options.itemWidth || \"\";\r\n this.changeOnSelect = options.changeOnSelect || \"\";\r\n this.textareaRows = options.textareaRows || 3;\r\n this.isDesensitize = options.isDesensitize || \"0\";\r\n }\r\n}\r\n","export abstract class AbstractControl {\r\n value: any;\r\n [key: string]: any;\r\n\r\n abstract get(path: Array<string | number> | string): AbstractControl | null;\r\n}\r\n","import { AbstractControl } from \"./AbstractControl\";\r\nimport { ValidateStatus } from \"../constants/enum/validate-status.enum\";\r\n\r\nexport interface ValidateResult {\r\n validateStatus?: string;\r\n errorMsg?: any;\r\n}\r\nexport interface ValidateReport {\r\n key: string;\r\n name: string;\r\n errorMsg: any;\r\n controlType: string;\r\n}\r\nexport type ValidateFunc = (val: any) => ValidateResult;\r\nexport interface Validate {\r\n name: string;\r\n validateFunc: ValidateFunc;\r\n}\r\nexport type TextNoticeCallback = (val?: any) => string;\r\n\r\n/**\r\n * @description: 控件对象\r\n * @author ChenRui\r\n * @date 2020/12/1 15:06\r\n */\r\nexport class FormControl extends AbstractControl {\r\n history: any[] = []; // 字段历史\r\n validates: Validate[] = []; // 校验规则\r\n textNoticeCallback: TextNoticeCallback | undefined; // 获取文本内容回调\r\n\r\n constructor(formState?: any) {\r\n super();\r\n this.setValue(formState);\r\n }\r\n\r\n setValue(value: any) {\r\n this.value = value || undefined;\r\n }\r\n\r\n get(path: Array<string | number> | string): AbstractControl | null {\r\n return this;\r\n }\r\n\r\n /**\r\n * @description: 添加校验\r\n * @author ChenRui\r\n * @date 2021/1/26 21:05\r\n */\r\n addValidate(validate: Validate | Validate[]): void {\r\n let validates: Validate[] = [];\r\n if (!(validate instanceof Array)) {\r\n validates.push(validate);\r\n } else {\r\n validates = validate;\r\n }\r\n if (validates && validates.length > 0) {\r\n for (let i = 0; i < validates.length; i++) {\r\n if (validates[i].name) {\r\n const index = this.validates.findIndex((item) => item.name === validates[i].name);\r\n if (index > -1) {\r\n this.validates[index].validateFunc = validates[i].validateFunc;\r\n } else {\r\n this.validates.push(validates[i]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 移除校验\r\n * @author ChenRui\r\n * @date 2021/1/26 21:06\r\n */\r\n removeValidate(name: string): void {\r\n if (name) {\r\n const index = this.validates.findIndex((item) => item.name === name);\r\n if (index > -1) {\r\n this.validates.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 获取校验\r\n * @author ChenRui\r\n * @date 2021/1/30 11:47\r\n */\r\n getValidate(name: string): Validate | any {\r\n if (name) {\r\n return this.validates.find((item) => item.name === name);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 校验\r\n * @author ChenRui\r\n * @date 2021/1/26 21:08\r\n */\r\n validate(val: any = this.value): ValidateResult {\r\n for (let i = 0; i < this.validates.length; i++) {\r\n const result: ValidateResult = this.validates[i].validateFunc(val);\r\n if (result && result.validateStatus !== ValidateStatus.Success.code) {\r\n return result;\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n errorMsg: null,\r\n };\r\n }\r\n\r\n /**\r\n * @description: 获取文本内容\r\n * @author ChenRui\r\n * @date 2021/1/29 15:56\r\n */\r\n text(): string {\r\n if (this.textNoticeCallback) {\r\n return this.textNoticeCallback();\r\n }\r\n return \"\";\r\n }\r\n}\r\n","import { AbstractControl } from \"./AbstractControl\";\r\n\r\n/**\r\n * @description: 表单对象\r\n * @author ChenRui\r\n * @date 2020/12/1 15:06\r\n */\r\nexport class FormGroup extends AbstractControl {\r\n controls: { [key: string]: AbstractControl };\r\n\r\n constructor(controls: { [key: string]: AbstractControl } = {}) {\r\n super();\r\n this.controls = controls;\r\n }\r\n\r\n /**\r\n * @description: 添加控件\r\n * @author ChenRui\r\n * @date 2020/12/1 14:47\r\n */\r\n addControl(name: string, control: AbstractControl): void {\r\n this.controls[name] = control;\r\n }\r\n\r\n /**\r\n * @description: 移除控件\r\n * @author ChenRui\r\n * @date 2020/12/1 14:47\r\n */\r\n removeControl(name: string): void {\r\n if (this.controls[name] != null) {\r\n delete this.controls[name];\r\n }\r\n }\r\n\r\n get(path: Array<string | number> | string): AbstractControl | null {\r\n if (typeof path === \"string\") {\r\n return this.controls[path];\r\n }\r\n return null;\r\n }\r\n}\r\n","import { OptionType } from \"../constants/enum/option-type.enum\";\r\nimport { DynamicOptionType } from \"../constants/enum/dynamic-option-type.enum\";\r\n\r\nfunction transformReverse(controlAttr: any, data: any[]): void {\r\n if (data == null) {\r\n data = [];\r\n }\r\n if (controlAttr != null) {\r\n if (controlAttr.isOptionType === OptionType.Fixed.code) {\r\n controlAttr.optionConfig = data;\r\n } else if (controlAttr.isOptionType === OptionType.Dynamic.code) {\r\n if (controlAttr.dynamicOptionType === DynamicOptionType.GeneralDictionary.code) {\r\n controlAttr.generalDictionaryOptions = data;\r\n } else if (controlAttr.dynamicOptionType === DynamicOptionType.TreeDictionary.code) {\r\n controlAttr.treeShapeOptions = data;\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction transform(controlAttr: any): any[] {\r\n if (controlAttr != null) {\r\n if (controlAttr.isOptionType === OptionType.Fixed.code) {\r\n return controlAttr.optionConfig || [];\r\n } else if (controlAttr.isOptionType === OptionType.Dynamic.code) {\r\n if (controlAttr.dynamicOptionType === DynamicOptionType.GeneralDictionary.code) {\r\n return controlAttr.generalDictionaryOptions || [];\r\n } else if (controlAttr.dynamicOptionType === DynamicOptionType.TreeDictionary.code) {\r\n return controlAttr.treeShapeOptions || [];\r\n }\r\n }\r\n }\r\n return [];\r\n}\r\n\r\n/**\r\n * @description: 根据字典类型获取可选项\r\n * @author ChenRui\r\n * @date 2020/12/30 11:18\r\n */\r\nconst extractOptions = (controlAttr: any, ...args: any[]): any[] => {\r\n return transform(controlAttr);\r\n};\r\n\r\n/**\r\n * @description: 保存可选项\r\n * @author ChenRui\r\n * @date 2021/1/29 16:17\r\n */\r\nconst storageOptions = (controlAttr: any, data: any[]): void => {\r\n return transformReverse(controlAttr, data);\r\n};\r\nexport { storageOptions, extractOptions };\r\n","import { ZoomType } from \"@/constants/enum/zoom-type\";\r\nimport { FormControl } from \"@/domain/FormControl\";\r\nimport { MathJsStatic } from \"mathjs\";\r\nimport { getCurrentInstance } from \"vue\";\r\n\r\n/**\r\n * @description: 通用字典转换\r\n * @author ChenRui\r\n * @date 2020/7/29 18:43\r\n */\r\nfunction encode(data: any, formControl: FormControl) {\r\n const proxy: any = getCurrentInstance()?.proxy;\r\n const mathjs: MathJsStatic = proxy?.$mathjs as MathJsStatic;\r\n if (data && formControl.controlAttr.zoomMultiple) {\r\n if (formControl.controlAttr.zoomType === ZoomType.enlarge.code) {\r\n data = mathjs.format(mathjs.evaluate(`${data} * ${formControl.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n } else if (formControl.controlAttr.zoomType === ZoomType.narrow.code) {\r\n data = mathjs.format(mathjs.evaluate(`${data} / ${formControl.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n } else if (formControl.controlAttr.zoomType === ZoomType.automatic.code) {\r\n data = mathjs.format(mathjs.evaluate(`${data} * ${formControl.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n }\r\n }\r\n if (String(formControl.value) === \"0\") {\r\n data = 0;\r\n }\r\n return data;\r\n}\r\nconst zoomMultiple = (code: any, formControl: FormControl) => {\r\n return encode(code, formControl);\r\n};\r\n\r\nexport default zoomMultiple;\r\n","/**\r\n * @description: 通用字典转换\r\n * @author ChenRui\r\n * @date 2020/7/29 18:43\r\n */\r\nfunction encode(code: string, switchEnumFiled: any, attribute?: string, defaultVal?: any) {\r\n if (switchEnumFiled != null && Object.values(switchEnumFiled).length > 0) {\r\n for (const switchEnum of Object.values(switchEnumFiled) as any) {\r\n return switchEnum[attribute || \"name\"] || defaultVal;\r\n }\r\n }\r\n return defaultVal || \"\";\r\n}\r\nconst switchEnumConvert = (code: string, switchEnumFiled: any, attribute?: string, defaultVal?: any) => {\r\n return encode(code, switchEnumFiled, attribute, defaultVal);\r\n};\r\n\r\nexport default switchEnumConvert;\r\n","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = (n: any) => (_pushScopeId(\"data-v-12085cfe\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"title\"]\nconst _hoisted_2 = { key: 1 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"lo-text-container\", [{ 'lo-text-column': !_ctx.unfold }, { 'lo-text-row': _ctx.unfold }]])\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass(['lo-text-box', { 'lo-over': !_ctx.ifOver }, { 'lo-over-hidden': !_ctx.unfold }, { 'lo-unfold': _ctx.ifOver && !_ctx.unfold }]),\n ref: \"textBox\"\n }, [\n _createElementVNode(\"span\", {\n class: \"lo-text\",\n ref: \"spanBox\",\n title: _ctx.content\n }, [\n (_ctx.linkList.indexOf(_ctx.fieldKey) > -1)\n ? (_openBlock(), _createElementBlock(\"a\", {\n key: 0,\n href: \"#\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.linkClick(_ctx.content)))\n }, _toDisplayString(_ctx.content), 1))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_2, _toDisplayString(_ctx.content), 1))\n ], 8, _hoisted_1)\n ], 2),\n (_ctx.ifOver)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"lo-btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.unfold = !_ctx.unfold))\n }, _toDisplayString(_ctx.unfold ? \"收起\" : \"展开\"), 1))\n : _createCommentVNode(\"\", true)\n ], 2))\n}","\r\nimport { Prop, Ref, Watch } from \"vue-property-decorator\";\r\nimport { Options, Vue } from \"vue-property-decorator\";\r\n\r\n@Options({\r\n name: \"StretchText\",\r\n})\r\nexport default class StretchText extends Vue {\r\n ifOver = false; // 文本是否超出三行,默认否\r\n unfold = false; // 文本是否是展开状态 默认为收起\r\n @Prop({ default: false }) enableStretchText!: boolean;\r\n @Prop({ default: \"\" }) content!: string;\r\n @Prop({ default: \"\" }) fieldKey!: string; // 元素码值key\r\n @Prop({ type: Array, default: () => [] }) linkList: any | undefined; // 需要添加超链接点击事件数组 例:['cifNo', 'prodBaseNo']\r\n @Ref() readonly spanBox: any;\r\n @Ref() readonly textBox: any;\r\n\r\n mounted(): void {\r\n this.onContentHandle();\r\n }\r\n /**\r\n * @Description 表单数据反显回调(data:string 元素值value)\r\n * @Author JiangTao\r\n * @Date 2023-10-07 下午 05:24\r\n */\r\n linkClick(data: any): void {\r\n this.$emit(\"linkClick\", data);\r\n }\r\n\r\n @Watch(\"content\")\r\n onContentHandle(): void {\r\n // 判断是否显示展开收起按钮\r\n this.ifOver = this.spanBox.offsetHeight > this.textBox.offsetHeight;\r\n }\r\n}\r\n","import { render } from \"./StretchText.vue?vue&type=template&id=12085cfe&scoped=true&ts=true\"\nimport script from \"./StretchText.vue?vue&type=script&lang=ts\"\nexport * from \"./StretchText.vue?vue&type=script&lang=ts\"\n\nimport \"./StretchText.vue?vue&type=style&index=0&id=12085cfe&lang=scss&scoped=true\"\n\nimport exportComponent from \"E:\\\\base-frontend\\\\vue-lo3-form-260417\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-12085cfe\"]])\n\nexport default __exports__","/*eslint-disable*/\r\nconst char_dict: any = \"YDYQSXMWZSSXJBYMGCCZQPSSQBYCDSCDQLDYLYBSSJGYZZJJFKCCLZDHWDWZJLJPFYYNWJJTMYHZWZHFLZPPQHGSCYYYNJQYXXGJHHSDSJNKKTMOMLCRXYPSNQSECCQZGGLLYJLMYZZSECYKYYHQWJSSGGYXYZYJWWKDJHYCHMYXJTLXJYQBYXZLDWRDJRWYSRLDZJPCBZJJBRCFTLECZSTZFXXZHTRQHYBDLYCZSSYMMRFMYQZPWWJJYFCRWFDFZQPYDDWYXKYJAWJFFXYPSFTZYHHYZYSWCJYXSCLCXXWZZXNBGNNXBXLZSZSBSGPYSYZDHMDZBQBZCWDZZYYTZHBTSYYBZGNTNXQYWQSKBPHHLXGYBFMJEBJHHGQTJCYSXSTKZHLYCKGLYSMZXYALMELDCCXGZYRJXSDLTYZCQKCNNJWHJTZZCQLJSTSTBNXBTYXCEQXGKWJYFLZQLYHYXSPSFXLMPBYSXXXYDJCZYLLLSJXFHJXPJBTFFYABYXBHZZBJYZLWLCZGGBTSSMDTJZXPTHYQTGLJSCQFZKJZJQNLZWLSLHDZBWJNCJZYZSQQYCQYRZCJJWYBRTWPYFTWEXCSKDZCTBZHYZZYYJXZCFFZZMJYXXSDZZOTTBZLQWFCKSZSXFYRLNYJMBDTHJXSQQCCSBXYYTSYFBXDZTGBCNSLCYZZPSAZYZZSCJCSHZQYDXLBPJLLMQXTYDZXSQJTZPXLCGLQTZWJBHCTSYJSFXYEJJTLBGXSXJMYJQQPFZASYJNTYDJXKJCDJSZCBARTDCLYJQMWNQNCLLLKBYBZZSYHQQLTWLCCXTXLLZNTYLNEWYZYXCZXXGRKRMTCNDNJTSYYSSDQDGHSDBJGHRWRQLYBGLXHLGTGXBQJDZPYJSJYJCTMRNYMGRZJCZGJMZMGXMPRYXKJNYMSGMZJYMKMFXMLDTGFBHCJHKYLPFMDXLQJJSMTQGZSJLQDLDGJYCALCMZCSDJLLNXDJFFFFJCZFMZFFPFKHKGDPSXKTACJDHHZDDCRRCFQYJKQCCWJDXHWJLYLLZGCFCQDSMLZPBJJPLSBCJGGDCKKDEZSQCCKJGCGKDJTJDLZYCXKLQSCGJCLTFPCQCZGWPJDQYZJJBYJHSJDZWGFSJGZKQCCZLLPSPKJGQJHZZLJPLGJGJJTHJJYJZCZMLZLYQBGJWMLJKXZDZNJQSYZMLJLLJKYWXMKJLHSKJGBMCLYYMKXJQLBMLLKMDXXKWYXYSLMLPSJQQJQXYXFJTJDXMXXLLCXQBSYJBGWYMBGGBCYXPJYGPEPFGDJGBHBNSQJYZJKJKHXQFGQZKFHYGKHDKLLSDJQXPQYKYBNQSXQNSZSWHBSXWHXWBZZXDMNSJBSBKBBZKLYLXGWXDRWYQZMYWSJQLCJXXJXKJEQXSCYETLZHLYYYSDZPAQYZCMTLSHTZCFYZYXYLJSDCJQAGYSLCQLYYYSHMRQQKLDXZSCSSSYDYCJYSFSJBFRSSZQSBXXPXJYSDRCKGJLGDKZJZBDKTCSYQPYHSTCLDJDHMXMCGXYZHJDDTMHLTXZXYLYMOHYJCLTYFBQQXPFBDFHHTKSQHZYYWCNXXCRWHOWGYJLEGWDQCWGFJYCSNTMYTOLBYGWQWESJPWNMLRYDZSZTXYQPZGCWXHNGPYXSHMYQJXZTDPPBFYHZHTJYFDZWKGKZBLDNTSXHQEEGZZYLZMMZYJZGXZXKHKSTXNXXWYLYAPSTHXDWHZYMPXAGKYDXBHNHXKDPJNMYHYLPMGOCSLNZHKXXLPZZLBMLSFBHHGYGYYGGBHSCYAQTYWLXTZQCEZYDQDQMMHTKLLSZHLSJZWFYHQSWSCWLQAZYNYTLSXTHAZNKZZSZZLAXXZWWCTGQQTDDYZTCCHYQZFLXPSLZYGPZSZNGLNDQTBDLXGTCTAJDKYWNSYZLJHHZZCWNYYZYWMHYCHHYXHJKZWSXHZYXLYSKQYSPSLYZWMYPPKBYGLKZHTYXAXQSYSHXASMCHKDSCRSWJPWXSGZJLWWSCHSJHSQNHCSEGNDAQTBAALZZMSSTDQJCJKTSCJAXPLGGXHHGXXZCXPDMMHLDGTYBYSJMXHMRCPXXJZCKZXSHMLQXXTTHXWZFKHCCZDYTCJYXQHLXDHYPJQXYLSYYDZOZJNYXQEZYSQYAYXWYPDGXDDXSPPYZNDLTWRHXYDXZZJHTCXMCZLHPYYYYMHZLLHNXMYLLLMDCPPXHMXDKYCYRDLTXJCHHZZXZLCCLYLNZSHZJZZLNNRLWHYQSNJHXYNTTTKYJPYCHHYEGKCTTWLGQRLGGTGTYGYHPYHYLQYQGCWYQKPYYYTTTTLHYHLLTYTTSPLKYZXGZWGPYDSSZZDQXSKCQNMJJZZBXYQMJRTFFBTKHZKBXLJJKDXJTLBWFZPPTKQTZTGPDGNTPJYFALQMKGXBDCLZFHZCLLLLADPMXDJHLCCLGYHDZFGYDDGCYYFGYDXKSSEBDHYKDKDKHNAXXYBPBYYHXZQGAFFQYJXDMLJCSQZLLPCHBSXGJYNDYBYQSPZWJLZKSDDTACTBXZDYZYPJZQSJNKKTKNJDJGYYPGTLFYQKASDNTCYHBLWDZHBBYDWJRYGKZYHEYYFJMSDTYFZJJHGCXPLXHLDWXXJKYTCYKSSSMTWCTTQZLPBSZDZWZXGZAGYKTYWXLHLSPBCLLOQMMZSSLCMBJCSZZKYDCZJGQQDSMCYTZQQLWZQZXSSFPTTFQMDDZDSHDTDWFHTDYZJYQJQKYPBDJYYXTLJHDRQXXXHAYDHRJLKLYTWHLLRLLRCXYLBWSRSZZSYMKZZHHKYHXKSMDSYDYCJPBZBSQLFCXXXNXKXWYWSDZYQOGGQMMYHCDZTTFJYYBGSTTTYBYKJDHKYXBELHTYPJQNFXFDYKZHQKZBYJTZBXHFDXKDASWTAWAJLDYJSFHBLDNNTNQJTJNCHXFJSRFWHZFMDRYJYJWZPDJKZYJYMPCYZNYNXFBYTFYFWYGDBNZZZDNYTXZEMMQBSQEHXFZMBMFLZZSRXYMJGSXWZJSPRYDJSJGXHJJGLJJYNZZJXHGXKYMLPYYYCXYTWQZSWHWLYRJLPXSLSXMFSWWKLCTNXNYNPSJSZHDZEPTXMYYWXYYSYWLXJQZQXZDCLEEELMCPJPCLWBXSQHFWWTFFJTNQJHJQDXHWLBYZNFJLALKYYJLDXHHYCSTYYWNRJYXYWTRMDRQHWQCMFJDYZMHMYYXJWMYZQZXTLMRSPWWCHAQBXYGZYPXYYRRCLMPYMGKSJSZYSRMYJSNXTPLNBAPPYPYLXYYZKYNLDZYJZCZNNLMZHHARQMPGWQTZMXXMLLHGDZXYHXKYXYCJMFFYYHJFSBSSQLXXNDYCANNMTCJCYPRRNYTYQNYYMBMSXNDLYLYSLJRLXYSXQMLLYZLZJJJKYZZCSFBZXXMSTBJGNXYZHLXNMCWSCYZYFZLXBRNNNYLBNRTGZQYSATSWRYHYJZMZDHZGZDWYBSSCSKXSYHYTXXGCQGXZZSHYXJSCRHMKKBXCZJYJYMKQHZJFNBHMQHYSNJNZYBKNQMCLGQHWLZNZSWXKHLJHYYBQLBFCDSXDLDSPFZPSKJYZWZXZDDXJSMMEGJSCSSMGCLXXKYYYLNYPWWWGYDKZJGGGZGGSYCKNJWNJPCXBJJTQTJWDSSPJXZXNZXUMELPXFSXTLLXCLJXJJLJZXCTPSWXLYDHLYQRWHSYCSQYYBYAYWJJJQFWQCQQCJQGXALDBZZYJGKGXPLTZYFXJLTPADKYQHPMATLCPDCKBMTXYBHKLENXDLEEGQDYMSAWHZMLJTWYGXLYQZLJEEYYBQQFFNLYXRDSCTGJGXYYNKLLYQKCCTLHJLQMKKZGCYYGLLLJDZGYDHZWXPYSJBZKDZGYZZHYWYFQYTYZSZYEZZLYMHJJHTSMQWYZLKYYWZCSRKQYTLTDXWCTYJKLWSQZWBDCQYNCJSRSZJLKCDCDTLZZZACQQZZDDXYPLXZBQJYLZLLLQDDZQJYJYJZYXNYYYNYJXKXDAZWYRDLJYYYRJLXLLDYXJCYWYWNQCCLDDNYYYNYCKCZHXXCCLGZQJGKWPPCQQJYSBZZXYJSQPXJPZBSBDSFNSFPZXHDWZTDWPPTFLZZBZDMYYPQJRSDZSQZSQXBDGCPZSWDWCSQZGMDHZXMWWFYBPDGPHTMJTHZSMMBGZMBZJCFZWFZBBZMQCFMBDMCJXLGPNJBBXGYHYYJGPTZGZMQBQTCGYXJXLWZKYDPDYMGCFTPFXYZTZXDZXTGKMTYBBCLBJASKYTSSQYYMSZXFJEWLXLLSZBQJJJAKLYLXLYCCTSXMCWFKKKBSXLLLLJYXTYLTJYYTDPJHNHNNKBYQNFQYYZBYYESSESSGDYHFHWTCJBSDZZTFDMXHCNJZYMQWSRYJDZJQPDQBBSTJGGFBKJBXTGQHNGWJXJGDLLTHZHHYYYYYYSXWTYYYCCBDBPYPZYCCZYJPZYWCBDLFWZCWJDXXHYHLHWZZXJTCZLCDPXUJCZZZLYXJJTXPHFXWPYWXZPTDZZBDZCYHJHMLXBQXSBYLRDTGJRRCTTTHYTCZWMXFYTWWZCWJWXJYWCSKYBZSCCTZQNHXNWXXKHKFHTSWOCCJYBCMPZZYKBNNZPBZHHZDLSYDDYTYFJPXYNGFXBYQXCBHXCPSXTYZDMKYSNXSXLHKMZXLYHDHKWHXXSSKQYHHCJYXGLHZXCSNHEKDTGZXQYPKDHEXTYKCNYMYYYPKQYYYKXZLTHJQTBYQHXBMYHSQCKWWYLLHCYYLNNEQXQWMCFBDCCMLJGGXDQKTLXKGNQCDGZJWYJJLYHHQTTTNWCHMXCXWHWSZJYDJCCDBQCDGDNYXZTHCQRXCBHZTQCBXWGQWYYBXHMBYMYQTYEXMQKYAQYRGYZSLFYKKQHYSSQYSHJGJCNXKZYCXSBXYXHYYLSTYCXQTHYSMGSCPMMGCCCCCMTZTASMGQZJHKLOSQYLSWTMXSYQKDZLJQQYPLSYCZTCQQPBBQJZCLPKHQZYYXXDTDDTSJCXFFLLCHQXMJLWCJCXTSPYCXNDTJSHJWXDQQJSKXYAMYLSJHMLALYKXCYYDMNMDQMXMCZNNCYBZKKYFLMCHCMLHXRCJJHSYLNMTJZGZGYWJXSRXCWJGJQHQZDQJDCJJZKJKGDZQGJJYJYLXZXXCDQHHHEYTMHLFSBDJSYYSHFYSTCZQLPBDRFRZTZYKYWHSZYQKWDQZRKMSYNBCRXQBJYFAZPZZEDZCJYWBCJWHYJBQSZYWRYSZPTDKZPFPBNZTKLQYHBBZPNPPTYZZYBQNYDCPJMMCYCQMCYFZZDCMNLFPBPLNGQJTBTTNJZPZBBZNJKLJQYLNBZQHKSJZNGGQSZZKYXSHPZSNBCGZKDDZQANZHJKDRTLZLSWJLJZLYWTJNDJZJHXYAYNCBGTZCSSQMNJPJYTYSWXZFKWJQTKHTZPLBHSNJZSYZBWZZZZLSYLSBJHDWWQPSLMMFBJDWAQYZTCJTBNNWZXQXCDSLQGDSDPDZHJTQQPSWLYYJZLGYXYZLCTCBJTKTYCZJTQKBSJLGMGZDMCSGPYNJZYQYYKNXRPWSZXMTNCSZZYXYBYHYZAXYWQCJTLLCKJJTJHGDXDXYQYZZBYWDLWQCGLZGJGQRQZCZSSBCRPCSKYDZNXJSQGXSSJMYDNSTZTPBDLTKZWXQWQTZEXNQCZGWEZKSSBYBRTSSSLCCGBPSZQSZLCCGLLLZXHZQTHCZMQGYZQZNMCOCSZJMMZSQPJYGQLJYJPPLDXRGZYXCCSXHSHGTZNLZWZKJCXTCFCJXLBMQBCZZWPQDNHXLJCTHYZLGYLNLSZZPCXDSCQQHJQKSXZPBAJYEMSMJTZDXLCJYRYYNWJBNGZZTMJXLTBSLYRZPYLSSCNXPHLLHYLLQQZQLXYMRSYCXZLMMCZLTZSDWTJJLLNZGGQXPFSKYGYGHBFZPDKMWGHCXMSGDXJMCJZDYCABXJDLNBCDQYGSKYDQTXDJJYXMSZQAZDZFSLQXYJSJZYLBTXXWXQQZBJZUFBBLYLWDSLJHXJYZJWTDJCZFQZQZZDZSXZZQLZCDZFJHYSPYMPQZMLPPLFFXJJNZZYLSJEYQZFPFZKSYWJJJHRDJZZXTXXGLGHYDXCSKYSWMMZCWYBAZBJKSHFHJCXMHFQHYXXYZFTSJYZFXYXPZLCHMZMBXHZZSXYFYMNCWDABAZLXKTCSHHXKXJJZJSTHYGXSXYYHHHJWXKZXSSBZZWHHHCWTZZZPJXSNXQQJGZYZYWLLCWXZFXXYXYHXMKYYSWSQMNLNAYCYSPMJKHWCQHYLAJJMZXHMMCNZHBHXCLXTJPLTXYJHDYYLTTXFSZHYXXSJBJYAYRSMXYPLCKDUYHLXRLNLLSTYZYYQYGYHHSCCSMZCTZQXKYQFPYYRPFFLKQUNTSZLLZMWWTCQQYZWTLLMLMPWMBZSSTZRBPDDTLQJJBXZCSRZQQYGWCSXFWZLXCCRSZDZMCYGGDZQSGTJSWLJMYMMZYHFBJDGYXCCPSHXNZCSBSJYJGJMPPWAFFYFNXHYZXZYLREMZGZCYZSSZDLLJCSQFNXZKPTXZGXJJGFMYYYSNBTYLBNLHPFZDCYFBMGQRRSSSZXYSGTZRNYDZZCDGPJAFJFZKNZBLCZSZPSGCYCJSZLMLRSZBZZLDLSLLYSXSQZQLYXZLSKKBRXBRBZCYCXZZZEEYFGKLZLYYHGZSGZLFJHGTGWKRAAJYZKZQTSSHJJXDCYZUYJLZYRZDQQHGJZXSSZBYKJPBFRTJXLLFQWJHYLQTYMBLPZDXTZYGBDHZZRBGXHWNJTJXLKSCFSMWLSDQYSJTXKZSCFWJLBXFTZLLJZLLQBLSQMQQCGCZFPBPHZCZJLPYYGGDTGWDCFCZQYYYQYSSCLXZSKLZZZGFFCQNWGLHQYZJJCZLQZZYJPJZZBPDCCMHJGXDQDGDLZQMFGPSYTSDYFWWDJZJYSXYYCZCYHZWPBYKXRYLYBHKJKSFXTZJMMCKHLLTNYYMSYXYZPYJQYCSYCWMTJJKQYRHLLQXPSGTLYYCLJSCPXJYZFNMLRGJJTYZBXYZMSJYJHHFZQMSYXRSZCWTLRTQZSSTKXGQKGSPTGCZNJSJCQCXHMXGGZTQYDJKZDLBZSXJLHYQGGGTHQSZPYHJHHGYYGKGGCWJZZYLCZLXQSFTGZSLLLMLJSKCTBLLZZSZMMNYTPZSXQHJCJYQXYZXZQZCPSHKZZYSXCDFGMWQRLLQXRFZTLYSTCTMJCXJJXHJNXTNRZTZFQYHQGLLGCXSZSJDJLJCYDSJTLNYXHSZXCGJZYQPYLFHDJSBPCCZHJJJQZJQDYBSSLLCMYTTMQTBHJQNNYGKYRQYQMZGCJKPDCGMYZHQLLSLLCLMHOLZGDYYFZSLJCQZLYLZQJESHNYLLJXGJXLYSYYYXNBZLJSSZCQQCJYLLZLTJYLLZLLBNYLGQCHXYYXOXCXQKYJXXXYKLXSXXYQXCYKQXQCSGYXXYQXYGYTQOHXHXPYXXXULCYEYCHZZCBWQBBWJQZSCSZSSLZYLKDESJZWMYMCYTSDSXXSCJPQQSQYLYYZYCMDJDZYWCBTJSYDJKCYDDJLBDJJSODZYSYXQQYXDHHGQQYQHDYXWGMMMAJDYBBBPPBCMUUPLJZSMTXERXJMHQNUTPJDCBSSMSSSTKJTSSMMTRCPLZSZMLQDSDMJMQPNQDXCFYNBFSDQXYXHYAYKQYDDLQYYYSSZBYDSLNTFQTZQPZMCHDHCZCWFDXTMYQSPHQYYXSRGJCWTJTZZQMGWJJTJHTQJBBHWZPXXHYQFXXQYWYYHYSCDYDHHQMNMTMWCPBSZPPZZGLMZFOLLCFWHMMSJZTTDHZZYFFYTZZGZYSKYJXQYJZQBHMBZZLYGHGFMSHPZFZSNCLPBQSNJXZSLXXFPMTYJYGBXLLDLXPZJYZJYHHZCYWHJYLSJEXFSZZYWXKZJLUYDTMLYMQJPWXYHXSKTQJEZRPXXZHHMHWQPWQLYJJQJJZSZCPHJLCHHNXJLQWZJHBMZYXBDHHYPZLHLHLGFWLCHYYTLHJXCJMSCPXSTKPNHQXSRTYXXTESYJCTLSSLSTDLLLWWYHDHRJZSFGXTSYCZYNYHTDHWJSLHTZDQDJZXXQHGYLTZPHCSQFCLNJTCLZPFSTPDYNYLGMJLLYCQHYSSHCHYLHQYQTMZYPBYWRFQYKQSYSLZDQJMPXYYSSRHZJNYWTQDFZBWWTWWRXCWHGYHXMKMYYYQMSMZHNGCEPMLQQMTCWCTMMPXJPJJHFXYYZSXZHTYBMSTSYJTTQQQYYLHYNPYQZLCYZHZWSMYLKFJXLWGXYPJYTYSYXYMZCKTTWLKSMZSYLMPWLZWXWQZSSAQSYXYRHSSNTSRAPXCPWCMGDXHXZDZYFJHGZTTSBJHGYZSZYSMYCLLLXBTYXHBBZJKSSDMALXHYCFYGMQYPJYCQXJLLLJGSLZGQLYCJCCZOTYXMTMTTLLWTGPXYMZMKLPSZZZXHKQYSXCTYJZYHXSHYXZKXLZWPSQPYHJWPJPWXQQYLXSDHMRSLZZYZWTTCYXYSZZSHBSCCSTPLWSSCJCHNLCGCHSSPHYLHFHHXJSXYLLNYLSZDHZXYLSXLWZYKCLDYAXZCMDDYSPJTQJZLNWQPSSSWCTSTSZLBLNXSMNYYMJQBQHRZWTYYDCHQLXKPZWBGQYBKFCMZWPZLLYYLSZYDWHXPSBCMLJBSCGBHXLQHYRLJXYSWXWXZSLDFHLSLYNJLZYFLYJYCDRJLFSYZFSLLCQYQFGJYHYXZLYLMSTDJCYHBZLLNWLXXYGYYHSMGDHXXHHLZZJZXCZZZCYQZFNGWPYLCPKPYYPMCLQKDGXZGGWQBDXZZKZFBXXLZXJTPJPTTBYTSZZDWSLCHZHSLTYXHQLHYXXXYYZYSWTXZKHLXZXZPYHGCHKCFSYHUTJRLXFJXPTZTWHPLYXFCRHXSHXKYXXYHZQDXQWULHYHMJTBFLKHTXCWHJFWJCFPQRYQXCYYYQYGRPYWSGSUNGWCHKZDXYFLXXHJJBYZWTSXXNCYJJYMSWZJQRMHXZWFQSYLZJZGBHYNSLBGTTCSYBYXXWXYHXYYXNSQYXMQYWRGYQLXBBZLJSYLPSYTJZYHYZAWLRORJMKSCZJXXXYXCHDYXRYXXJDTSQFXLYLTSFFYXLMTYJMJUYYYXLTZCSXQZQHZXLYYXZHDNBRXXXJCTYHLBRLMBRLLAXKYLLLJLYXXLYCRYLCJTGJCMTLZLLCYZZPZPCYAWHJJFYBDYYZSMPCKZDQYQPBPCJPDCYZMDPBCYYDYCNNPLMTMLRMFMMGWYZBSJGYGSMZQQQZTXMKQWGXLLPJGZBQCDJJJFPKJKCXBLJMSWMDTQJXLDLPPBXCWRCQFBFQJCZAHZGMYKPHYYHZYKNDKZMBPJYXPXYHLFPNYYGXJDBKXNXHJMZJXSTRSTLDXSKZYSYBZXJLXYSLBZYSLHXJPFXPQNBYLLJQKYGZMCYZZYMCCSLCLHZFWFWYXZMWSXTYNXJHPYYMCYSPMHYSMYDYSHQYZCHMJJMZCAAGCFJBBHPLYZYLXXSDJGXDHKXXTXXNBHRMLYJSLTXMRHNLXQJXYZLLYSWQGDLBJHDCGJYQYCMHWFMJYBMBYJYJWYMDPWHXQLDYGPDFXXBCGJSPCKRSSYZJMSLBZZJFLJJJLGXZGYXYXLSZQYXBEXYXHGCXBPLDYHWETTWWCJMBTXCHXYQXLLXFLYXLLJLSSFWDPZSMYJCLMWYTCZPCHQEKCQBWLCQYDPLQPPQZQFJQDJHYMMCXTXDRMJWRHXCJZYLQXDYYNHYYHRSLSRSYWWZJYMTLTLLGTQCJZYABTCKZCJYCCQLJZQXALMZYHYWLWDXZXQDLLQSHGPJFJLJHJABCQZDJGTKHSSTCYJLPSWZLXZXRWGLDLZRLZXTGSLLLLZLYXXWGDZYGBDPHZPBRLWSXQBPFDWOFMWHLYPCBJCCLDMBZPBZZLCYQXLDOMZBLZWPDWYYGDSTTHCSQSCCRSSSYSLFYBFNTYJSZDFNDPDHDZZMBBLSLCMYFFGTJJQWFTMTPJWFNLBZCMMJTGBDZLQLPYFHYYMJYLSDCHDZJWJCCTLJCLDTLJJCPDDSQDSSZYBNDBJLGGJZXSXNLYCYBJXQYCBYLZCFZPPGKCXZDZFZTJJFJSJXZBNZYJQTTYJYHTYCZHYMDJXTTMPXSPLZCDWSLSHXYPZGTFMLCJTYCBPMGDKWYCYZCDSZZYHFLYCTYGWHKJYYLSJCXGYWJCBLLCSNDDBTZBSCLYZCZZSSQDLLMQYYHFSLQLLXFTYHABXGWNYWYYPLLSDLDLLBJCYXJZMLHLJDXYYQYTDLLLBUGBFDFBBQJZZMDPJHGCLGMJJPGAEHHBWCQXAXHHHZCHXYPHJAXHLPHJPGPZJQCQZGJJZZUZDMQYYBZZPHYHYBWHAZYJHYKFGDPFQSDLZMLJXKXGALXZDAGLMDGXMWZQYXXDXXPFDMMSSYMPFMDMMKXKSYZYSHDZKXSYSMMZZZMSYDNZZCZXFPLSTMZDNMXCKJMZTYYMZMZZMSXHHDCZJEMXXKLJSTLWLSQLYJZLLZJSSDPPMHNLZJCZYHMXXHGZCJMDHXTKGRMXFWMCGMWKDTKSXQMMMFZZYDKMSCLCMPCGMHSPXQPZDSSLCXKYXTWLWJYAHZJGZQMCSNXYYMMPMLKJXMHLMLQMXCTKZMJQYSZJSYSZHSYJZJCDAJZYBSDQJZGWZQQXFKDMSDJLFWEHKZQKJPEYPZYSZCDWYJFFMZZYLTTDZZEFMZLBNPPLPLPEPSZALLTYLKCKQZKGENQLWAGYXYDPXLHSXQQWQCQXQCLHYXXMLYCCWLYMQYSKGCHLCJNSZKPYZKCQZQLJPDMDZHLASXLBYDWQLWDNBQCRYDDZTJYBKBWSZDXDTNPJDTCTQDFXQQMGNXECLTTBKPWSLCTYQLPWYZZKLPYGZCQQPLLKCCYLPQMZCZQCLJSLQZDJXLDDHPZQDLJJXZQDXYZQKZLJCYQDYJPPYPQYKJYRMPCBYMCXKLLZLLFQPYLLLMBSGLCYSSLRSYSQTMXYXZQZFDZUYSYZTFFMZZSMZQHZSSCCMLYXWTPZGXZJGZGSJSGKDDHTQGGZLLBJDZLCBCHYXYZHZFYWXYZYMSDBZZYJGTSMTFXQYXQSTDGSLNXDLRYZZLRYYLXQHTXSRTZNGZXBNQQZFMYKMZJBZYMKBPNLYZPBLMCNQYZZZSJZHJCTZKHYZZJRDYZHNPXGLFZTLKGJTCTSSYLLGZRZBBQZZKLPKLCZYSSUYXBJFPNJZZXCDWXZYJXZZDJJKGGRSRJKMSMZJLSJYWQSKYHQJSXPJZZZLSNSHRNYPZTWCHKLPSRZLZXYJQXQKYSJYCZTLQZYBBYBWZPQDWWYZCYTJCJXCKCWDKKZXSGKDZXWWYYJQYYTCYTDLLXWKCZKKLCCLZCQQDZLQLCSFQCHQHSFSMQZZLNBJJZBSJHTSZDYSJQJPDLZCDCWJKJZZLPYCGMZWDJJBSJQZSYZYHHXJPBJYDSSXDZNCGLQMBTSFSBPDZDLZNFGFJGFSMPXJQLMBLGQCYYXBQKDJJQYRFKZTJDHCZKLBSDZCFJTPLLJGXHYXZCSSZZXSTJYGKGCKGYOQXJPLZPBPGTGYJZGHZQZZLBJLSQFZGKQQJZGYCZBZQTLDXRJXBSXXPZXHYZYCLWDXJJHXMFDZPFZHQHQMQGKSLYHTYCGFRZGNQXCLPDLBZCSCZQLLJBLHBZCYPZZPPDYMZZSGYHCKCPZJGSLJLNSCDSLDLXBMSTLDDFJMKDJDHZLZXLSZQPQPGJLLYBDSZGQLBZLSLKYYHZTTNTJYQTZZPSZQZTLLJTYYLLQLLQYZQLBDZLSLYYZYMDFSZSNHLXZNCZQZPBWSKRFBSYZMTHBLGJPMCZZLSTLXSHTCSYZLZBLFEQHLXFLCJLYLJQCBZLZJHHSSTBRMHXZHJZCLXFNBGXGTQJCZTMSFZKJMSSNXLJKBHSJXNTNLZDNTLMSJXGZJYJCZXYJYJWRWWQNZTNFJSZPZSHZJFYRDJSFSZJZBJFZQZZHZLXFYSBZQLZSGYFTZDCSZXZJBQMSZKJRHYJZCKMJKHCHGTXKXQGLXPXFXTRTYLXJXHDTSJXHJZJXZWZLCQSBTXWXGXTXXHXFTSDKFJHZYJFJXRZSDLLLTQSQQZQWZXSYQTWGWBZCGZLLYZBCLMQQTZHZXZXLJFRMYZFLXYSQXXJKXRMQDZDMMYYBSQBHGZMWFWXGMXLZPYYTGZYCCDXYZXYWGSYJYZNBHPZJSQSYXSXRTFYZGRHZTXSZZTHCBFCLSYXZLZQMZLMPLMXZJXSFLBYZMYQHXJSXRXSQZZZSSLYFRCZJRCRXHHZXQYDYHXSJJHZCXZBTYNSYSXJBQLPXZQPYMLXZKYXLXCJLCYSXXZZLXDLLLJJYHZXGYJWKJRWYHCPSGNRZLFZWFZZNSXGXFLZSXZZZBFCSYJDBRJKRDHHGXJLJJTGXJXXSTJTJXLYXQFCSGSWMSBCTLQZZWLZZKXJMLTMJYHSDDBXGZHDLBMYJFRZFSGCLYJBPMLYSMSXLSZJQQHJZFXGFQFQBPXZGYYQXGZTCQWYLTLGWSGWHRLFSFGZJMGMGBGTJFSYZZGZYZAFLSSPMLPFLCWBJZCLJJMZLPJJLYMQDMYYYFBGYGYZMLYZDXQYXRQQQHSYYYQXYLJTYXFSFSLLGNQCYHYCWFHCCCFXPYLYPLLZYXXXXXKQHHXSHJZCFZSCZJXCPZWHHHHHAPYLQALPQAFYHXDYLUKMZQGGGDDESRNNZLTZGCHYPPYSQJJHCLLJTOLNJPZLJLHYMHEYDYDSQYCDDHGZUNDZCLZYZLLZNTNYZGSLHSLPJJBDGWXPCDUTJCKLKCLWKLLCASSTKZZDNQNTTLYYZSSYSSZZRYLJQKCQDHHCRXRZYDGRGCWCGZQFFFPPJFZYNAKRGYWYQPQXXFKJTSZZXSWZDDFBBXTBGTZKZNPZZPZXZPJSZBMQHKCYXYLDKLJNYPKYGHGDZJXXEAHPNZKZTZCMXCXMMJXNKSZQNMNLWBWWXJKYHCPSTMCSQTZJYXTPCTPDTNNPGLLLZSJLSPBLPLQHDTNJNLYYRSZFFJFQWDPHZDWMRZCCLODAXNSSNYZRESTYJWJYJDBCFXNMWTTBYLWSTSZGYBLJPXGLBOCLHPCBJLTMXZLJYLZXCLTPNCLCKXTPZJSWCYXSFYSZDKNTLBYJCYJLLSTGQCBXRYZXBXKLYLHZLQZLNZCXWJZLJZJNCJHXMNZZGJZZXTZJXYCYYCXXJYYXJJXSSSJSTSSTTPPGQTCSXWZDCSYFPTFBFHFBBLZJCLZZDBXGCXLQPXKFZFLSYLTUWBMQJHSZBMDDBCYSCCLDXYCDDQLYJJWMQLLCSGLJJSYFPYYCCYLTJANTJJPWYCMMGQYYSXDXQMZHSZXPFTWWZQSWQRFKJLZJQQYFBRXJHHFWJJZYQAZMYFRHCYYBYQWLPEXCCZSTYRLTTDMQLYKMBBGMYYJPRKZNPBSXYXBHYZDJDNGHPMFSGMWFZMFQMMBCMZZCJJLCNUXYQLMLRYGQZCYXZLWJGCJCGGMCJNFYZZJHYCPRRCMTZQZXHFQGTJXCCJEAQCRJYHPLQLSZDJRBCQHQDYRHYLYXJSYMHZYDWLDFRYHBPYDTSSCNWBXGLPZMLZZTQSSCPJMXXYCSJYTYCGHYCJWYRXXLFEMWJNMKLLSWTXHYYYNCMMCWJDQDJZGLLJWJRKHPZGGFLCCSCZMCBLTBHBQJXQDSPDJZZGKGLFQYWBZYZJLTSTDHQHCTCBCHFLQMPWDSHYYTQWCNZZJTLBYMBPDYYYXSQKXWYYFLXXNCWCXYPMAELYKKJMZZZBRXYYQJFLJPFHHHYTZZXSGQQMHSPGDZQWBWPJHZJDYSCQWZKTXXSQLZYYMYSDZGRXCKKUJLWPYSYSCSYZLRMLQSYLJXBCXTLWDQZPCYCYKPPPNSXFYZJJRCEMHSZMSXLXGLRWGCSTLRSXBZGBZGZTCPLUJLSLYLYMTXMTZPALZXPXJTJWTCYYZLBLXBZLQMYLXPGHDSLSSDMXMBDZZSXWHAMLCZCPJMCNHJYSNSYGCHSKQMZZQDLLKABLWJXSFMOCDXJRRLYQZKJMYBYQLYHETFJZFRFKSRYXFJTWDSXXSYSQJYSLYXWJHSNLXYYXHBHAWHHJZXWMYLJCSSLKYDZTXBZSYFDXGXZJKHSXXYBSSXDPYNZWRPTQZCZENYGCXQFJYKJBZMLJCMQQXUOXSLYXXLYLLJDZBTYMHPFSTTQQWLHOKYBLZZALZXQLHZWRRQHLSTMYPYXJJXMQSJFNBXYXYJXXYQYLTHYLQYFMLKLJTMLLHSZWKZHLJMLHLJKLJSTLQXYLMBHHLNLZXQJHXCFXXLHYHJJGBYZZKBXSCQDJQDSUJZYYHZHHMGSXCSYMXFEBCQWWRBPYYJQTYZCYQYQQZYHMWFFHGZFRJFCDPXNTQYZPDYKHJLFRZXPPXZDBBGZQSTLGDGYLCQMLCHHMFYWLZYXKJLYPQHSYWMQQGQZMLZJNSQXJQSYJYCBEHSXFSZPXZWFLLBCYYJDYTDTHWZSFJMQQYJLMQXXLLDTTKHHYBFPWTYYSQQWNQWLGWDEBZWCMYGCULKJXTMXMYJSXHYBRWFYMWFRXYQMXYSZTZZTFYKMLDHQDXWYYNLCRYJBLPSXCXYWLSPRRJWXHQYPHTYDNXHHMMYWYTZCSQMTSSCCDALWZTCPQPYJLLQZYJSWXMZZMMYLMXCLMXCZMXMZSQTZPPQQBLPGXQZHFLJJHYTJSRXWZXSCCDLXTYJDCQJXSLQYCLZXLZZXMXQRJMHRHZJBHMFLJLMLCLQNLDXZLLLPYPSYJYSXCQQDCMQJZZXHNPNXZMEKMXHYKYQLXSXTXJYYHWDCWDZHQYYBGYBCYSCFGPSJNZDYZZJZXRZRQJJYMCANYRJTLDPPYZBSTJKXXZYPFDWFGZZRPYMTNGXZQBYXNBUFNQKRJQZMJEGRZGYCLKXZDSKKNSXKCLJSPJYYZLQQJYBZSSQLLLKJXTBKTYLCCDDBLSPPFYLGYDTZJYQGGKQTTFZXBDKTYYHYBBFYTYYBCLPDYTGDHRYRNJSPTCSNYJQHKLLLZSLYDXXWBCJQSPXBPJZJCJDZFFXXBRMLAZHCSNDLBJDSZBLPRZTSWSBXBCLLXXLZDJZSJPYLYXXYFTFFFBHJJXGBYXJPMMMPSSJZJMTLYZJXSWXTYLEDQPJMYGQZJGDJLQJWJQLLSJGJGYGMSCLJJXDTYGJQJQJCJZCJGDZZSXQGSJGGCXHQXSNQLZZBXHSGZXCXYLJXYXYYDFQQJHJFXDHCTXJYRXYSQTJXYEFYYSSYYJXNCYZXFXMSYSZXYYSCHSHXZZZGZZZGFJDLTYLNPZGYJYZYYQZPBXQBDZTZCZYXXYHHSQXSHDHGQHJHGYWSZTMZMLHYXGEBTYLZKQWYTJZRCLEKYSTDBCYKQQSAYXCJXWWGSBHJYZYDHCSJKQCXSWXFLTYNYZPZCCZJQTZWJQDZZZQZLJJXLSBHPYXXPSXSHHEZTXFPTLQYZZXHYTXNCFZYYHXGNXMYWXTZSJPTHHGYMXMXQZXTSBCZYJYXXTYYZYPCQLMMSZMJZZLLZXGXZAAJZYXJMZXWDXZSXZDZXLEYJJZQBHZWZZZQTZPSXZTDSXJJJZNYAZPHXYYSRNQDTHZHYYKYJHDZXZLSWCLYBZYECWCYCRYLCXNHZYDZYDYJDFRJJHTRSQTXYXJRJHOJYNXELXSFSFJZGHPZSXZSZDZCQZBYYKLSGSJHCZSHDGQGXYZGXCHXZJWYQWGYHKSSEQZZNDZFKWYSSTCLZSTSYMCDHJXXYWEYXCZAYDMPXMDSXYBSQMJMZJMTZQLPJYQZCGQHXJHHLXXHLHDLDJQCLDWBSXFZZYYSCHTYTYYBHECXHYKGJPXHHYZJFXHWHBDZFYZBCAPNPGNYDMSXHMMMMAMYNBYJTMPXYYMCTHJBZYFCGTYHWPHFTWZZEZSBZEGPFMTSKFTYCMHFLLHGPZJXZJGZJYXZSBBQSCZZLZCCSTPGXMJSFTCCZJZDJXCYBZLFCJSYZFGSZLYBCWZZBYZDZYPSWYJZXZBDSYUXLZZBZFYGCZXBZHZFTPBGZGEJBSTGKDMFHYZZJHZLLZZGJQZLSFDJSSCBZGPDLFZFZSZYZYZSYGCXSNXXCHCZXTZZLJFZGQSQYXZJQDCCZTQCDXZJYQJQCHXZTDLGSCXZSYQJQTZWLQDQZTQCHQQJZYEZZZPBWKDJFCJPZTYPQYQTTYNLMBDKTJZPQZQZZFPZSBNJLGYJDXJDZZKZGQKXDLPZJTCJDQBXDJQJSTCKNXBXZMSLYJCQMTJQWWCJQNJNLLLHJCWQTBZQYDZCZPZZDZYDDCYZZZCCJTTJFZDPRRTZTJDCQTQZDTJNPLZBCLLCTZSXKJZQZPZLBZRBTJDCXFCZDBCCJJLTQQPLDCGZDBBZJCQDCJWYNLLZYZCCDWLLXWZLXRXNTQQCZXKQLSGDFQTDDGLRLAJJTKUYMKQLLTZYTDYYCZGJWYXDXFRSKSTQTENQMRKQZHHQKDLDAZFKYPBGGPZREBZZYKZZSPEGJXGYKQZZZSLYSYYYZWFQZYLZZLZHWCHKYPQGNPGBLPLRRJYXCCSYYHSFZFYBZYYTGZXYLXCZWXXZJZBLFFLGSKHYJZEYJHLPLLLLCZGXDRZELRHGKLZZYHZLYQSZZJZQLJZFLNBHGWLCZCFJYSPYXZLZLXGCCPZBLLCYBBBBUBBCBPCRNNZCZYRBFSRLDCGQYYQXYGMQZWTZYTYJXYFWTEHZZJYWLCCNTZYJJZDEDPZDZTSYQJHDYMBJNYJZLXTSSTPHNDJXXBYXQTZQDDTJTDYYTGWSCSZQFLSHLGLBCZPHDLYZJYCKWTYTYLBNYTSDSYCCTYSZYYEBHEXHQDTWNYGYCLXTSZYSTQMYGZAZCCSZZDSLZCLZRQXYYELJSBYMXSXZTEMBBLLYYLLYTDQYSHYMRQWKFKBFXNXSBYCHXBWJYHTQBPBSBWDZYLKGZSKYHXQZJXHXJXGNLJKZLYYCDXLFYFGHLJGJYBXQLYBXQPQGZTZPLNCYPXDJYQYDYMRBESJYYHKXXSTMXRCZZYWXYQYBMCLLYZHQYZWQXDBXBZWZMSLPDMYSKFMZKLZCYQYCZLQXFZZYDQZPZYGYJYZMZXDZFYFYTTQTZHGSPCZMLCCYTZXJCYTJMKSLPZHYSNZLLYTPZCTZZCKTXDHXXTQCYFKSMQCCYYAZHTJPCYLZLYJBJXTPNYLJYYNRXSYLMMNXJSMYBCSYSYLZYLXJJQYLDZLPQBFZZBLFNDXQKCZFYWHGQMRDSXYCYTXNQQJZYYPFZXDYZFPRXEJDGYQBXRCNFYYQPGHYJDYZXGRHTKYLNWDZNTSMPKLBTHBPYSZBZTJZSZZJTYYXZPHSSZZBZCZPTQFZMYFLYPYBBJQXZMXXDJMTSYSKKBJZXHJCKLPSMKYJZCXTMLJYXRZZQSLXXQPYZXMKYXXXJCLJPRMYYGADYSKQLSNDHYZKQXZYZTCGHZTLMLWZYBWSYCTBHJHJFCWZTXWYTKZLXQSHLYJZJXTMPLPYCGLTBZZTLZJCYJGDTCLKLPLLQPJMZPAPXYZLKKTKDZCZZBNZDYDYQZJYJGMCTXLTGXSZLMLHBGLKFWNWZHDXUHLFMKYSLGXDTWWFRJEJZTZHYDXYKSHWFZCQSHKTMQQHTZHYMJDJSKHXZJZBZZXYMPAGQMSTPXLSKLZYNWRTSQLSZBPSPSGZWYHTLKSSSWHZZLYYTNXJGMJSZSUFWNLSOZTXGXLSAMMLBWLDSZYLAKQCQCTMYCFJBSLXCLZZCLXXKSBZQCLHJPSQPLSXXCKSLNHPSFQQYTXYJZLQLDXZQJZDYYDJNZPTUZDSKJFSLJHYLZSQZLBTXYDGTQFDBYAZXDZHZJNHHQBYKNXJJQCZMLLJZKSPLDYCLBBLXKLELXJLBQYCXJXGCNLCQPLZLZYJTZLJGYZDZPLTQCSXFDMNYCXGBTJDCZNBGBQYQJWGKFHTNPYQZQGBKPBBYZMTJDYTBLSQMPSXTBNPDXKLEMYYCJYNZCTLDYKZZXDDXHQSHDGMZSJYCCTAYRZLPYLTLKXSLZCGGEXCLFXLKJRTLQJAQZNCMBYDKKCXGLCZJZXJHPTDJJMZQYKQSECQZDSHHADMLZFMMZBGNTJNNLGBYJBRBTMLBYJDZXLCJLPLDLPCQDHLXZLYCBLCXZZJADJLNZMMSSSMYBHBSQKBHRSXXJMXSDZNZPXLGBRHWGGFCXGMSKLLTSJYYCQLTSKYWYYHYWXBXQYWPYWYKQLSQPTNTKHQCWDQKTWPXXHCPTHTWUMSSYHBWCRWXHJMKMZNGWTMLKFGHKJYLSYYCXWHYECLQHKQHTTQKHFZLDXQWYZYYDESBPKYRZPJFYYZJCEQDZZDLATZBBFJLLCXDLMJSSXEGYGSJQXCWBXSSZPDYZCXDNYXPPZYDLYJCZPLTXLSXYZYRXCYYYDYLWWNZSAHJSYQYHGYWWAXTJZDAXYSRLTDPSSYYFNEJDXYZHLXLLLZQZSJNYQYQQXYJGHZGZCYJCHZLYCDSHWSHJZYJXCLLNXZJJYYXNFXMWFPYLCYLLABWDDHWDXJMCXZTZPMLQZHSFHZYNZTLLDYWLSLXHYMMYLMBWWKYXYADTXYLLDJPYBPWUXJMWMLLSAFDLLYFLBHHHBQQLTZJCQJLDJTFFKMMMBYTHYGDCQRDDWRQJXNBYSNWZDBYYTBJHPYBYTTJXAAHGQDQTMYSTQXKBTZPKJLZRBEQQSSMJJBDJOTGTBXPGBKTLHQXJJJCTHXQDWJLWRFWQGWSHCKRYSWGFTGYGBXSDWDWRFHWYTJJXXXJYZYSLPYYYPAYXHYDQKXSHXYXGSKQHYWFDDDPPLCJLQQEEWXKSYYKDYPLTJTHKJLTCYYHHJTTPLTZZCDLTHQKZXQYSTEEYWYYZYXXYYSTTJKLLPZMCYHQGXYHSRMBXPLLNQYDQHXSXXWGDQBSHYLLPJJJTHYJKYPPTHYYKTYEZYENMDSHLCRPQFDGFXZPSFTLJXXJBSWYYSKSFLXLPPLBBBLBSFXFYZBSJSSYLPBBFFFFSSCJDSTZSXZRYYSYFFSYZYZBJTBCTSBSDHRTJJBYTCXYJEYLXCBNEBJDSYXYKGSJZBXBYTFZWGENYHHTHZHHXFWGCSTBGXKLSXYWMTMBYXJSTZSCDYQRCYTWXZFHMYMCXLZNSDJTTTXRYCFYJSBSDYERXJLJXBBDEYNJGHXGCKGSCYMBLXJMSZNSKGXFBNBPTHFJAAFXYXFPXMYPQDTZCXZZPXRSYWZDLYBBKTYQPQJPZYPZJZNJPZJLZZFYSBTTSLMPTZRTDXQSJEHBZYLZDHLJSQMLHTXTJECXSLZZSPKTLZKQQYFSYGYWPCPQFHQHYTQXZKRSGTTSQCZLPTXCDYYZXSQZSLXLZMYCPCQBZYXHBSXLZDLTCDXTYLZJYYZPZYZLTXJSJXHLPMYTXCQRBLZSSFJZZTNJYTXMYJHLHPPLCYXQJQQKZZSCPZKSWALQSBLCCZJSXGWWWYGYKTJBBZTDKHXHKGTGPBKQYSLPXPJCKBMLLXDZSTBKLGGQKQLSBKKTFXRMDKBFTPZFRTBBRFERQGXYJPZSSTLBZTPSZQZSJDHLJQLZBPMSMMSXLQQNHKNBLRDDNXXDHDDJCYYGYLXGZLXSYGMQQGKHBPMXYXLYTQWLWGCPBMQXCYZYDRJBHTDJYHQSHTMJSBYPLWHLZFFNYPMHXXHPLTBQPFBJWQDBYGPNZTPFZJGSDDTQSHZEAWZZYLLTYYBWJKXXGHLFKXDJTMSZSQYNZGGSWQSPHTLSSKMCLZXYSZQZXNCJDQGZDLFNYKLJCJLLZLMZZNHYDSSHTHZZLZZBBHQZWWYCRZHLYQQJBEYFXXXWHSRXWQHWPSLMSSKZTTYGYQQWRSLALHMJTQJSMXQBJJZJXZYZKXBYQXBJXSHZTSFJLXMXZXFGHKZSZGGYLCLSARJYHSLLLMZXELGLXYDJYTLFBHBPNLYZFBBHPTGJKWETZHKJJXZXXGLLJLSTGSHJJYQLQZFKCGNNDJSSZFDBCTWWSEQFHQJBSAQTGYPQLBXBMMYWXGSLZHGLZGQYFLZBYFZJFRYSFMBYZHQGFWZSYFYJJPHZBYYZFFWODGRLMFTWLBZGYCQXCDJYGZYYYYTYTYDWEGAZYHXJLZYYHLRMGRXXZCLHNELJJTJTPWJYBJJBXJJTJTEEKHWSLJPLPSFYZPQQBDLQJJTYYQLYZKDKSQJYYQZLDQTGJQYZJSUCMRYQTHTEJMFCTYHYPKMHYZWJDQFHYYXWSHCTXRLJHQXHCCYYYJLTKTTYTMXGTCJTZAYYOCZLYLBSZYWJYTSJYHBYSHFJLYGJXXTMZYYLTXXYPZLXYJZYZYYPNHMYMDYYLBLHLSYYQQLLNJJYMSOYQBZGDLYXYLCQYXTSZEGXHZGLHWBLJHEYXTWQMAKBPQCGYSHHEGQCMWYYWLJYJHYYZLLJJYLHZYHMGSLJLJXCJJYCLYCJPCPZJZJMMYLCQLNQLJQJSXYJMLSZLJQLYCMMHCFMMFPQQMFYLQMCFFQMMMMHMZNFHHJGTTHHKHSLNCHHYQDXTMMQDCYZYXYQMYQYLTDCYYYZAZZCYMZYDLZFFFMMYCQZWZZMABTBYZTDMNZZGGDFTYPCGQYTTSSFFWFDTZQSSYSTWXJHXYTSXXYLBYQHWWKXHZXWZNNZZJZJJQJCCCHYYXBZXZCYZTLLCQXYNJYCYYCYNZZQYYYEWYCZDCJYCCHYJLBTZYYCQWMPWPYMLGKDLDLGKQQBGYCHJXY\"\r\nconst full_dict: any = { \"a\": \"\\u554a\\u963f\\u9515\", \"ai\": \"\\u57c3\\u6328\\u54ce\\u5509\\u54c0\\u7691\\u764c\\u853c\\u77ee\\u827e\\u788d\\u7231\\u9698\\u8bf6\\u6371\\u55f3\\u55cc\\u5ad2\\u7477\\u66a7\\u7839\\u953f\\u972d\", \"an\": \"\\u978d\\u6c28\\u5b89\\u4ffa\\u6309\\u6697\\u5cb8\\u80fa\\u6848\\u8c19\\u57ef\\u63de\\u72b4\\u5eb5\\u6849\\u94f5\\u9e4c\\u9878\\u9eef\", \"ang\": \"\\u80ae\\u6602\\u76ce\", \"ao\": \"\\u51f9\\u6556\\u71ac\\u7ff1\\u8884\\u50b2\\u5965\\u61ca\\u6fb3\\u5773\\u62d7\\u55f7\\u5662\\u5c99\\u5ed2\\u9068\\u5aaa\\u9a9c\\u8071\\u87af\\u93ca\\u9ccc\\u93d6\", \"ba\": \"\\u82ad\\u634c\\u6252\\u53ed\\u5427\\u7b06\\u516b\\u75a4\\u5df4\\u62d4\\u8dcb\\u9776\\u628a\\u8019\\u575d\\u9738\\u7f62\\u7238\\u8307\\u83dd\\u8406\\u636d\\u5c9c\\u705e\\u6777\\u94af\\u7c91\\u9c85\\u9b43\", \"bai\": \"\\u767d\\u67cf\\u767e\\u6446\\u4f70\\u8d25\\u62dc\\u7a17\\u859c\\u63b0\\u97b4\", \"ban\": \"\\u6591\\u73ed\\u642c\\u6273\\u822c\\u9881\\u677f\\u7248\\u626e\\u62cc\\u4f34\\u74e3\\u534a\\u529e\\u7eca\\u962a\\u5742\\u8c73\\u94a3\\u7622\\u764d\\u8228\", \"bang\": \"\\u90a6\\u5e2e\\u6886\\u699c\\u8180\\u7ed1\\u68d2\\u78c5\\u868c\\u9551\\u508d\\u8c24\\u84a1\\u8783\", \"bao\": \"\\u82de\\u80de\\u5305\\u8912\\u96f9\\u4fdd\\u5821\\u9971\\u5b9d\\u62b1\\u62a5\\u66b4\\u8c79\\u9c8d\\u7206\\u52f9\\u8446\\u5b80\\u5b62\\u7172\\u9e28\\u8913\\u8db5\\u9f85\", \"bo\": \"\\u5265\\u8584\\u73bb\\u83e0\\u64ad\\u62e8\\u94b5\\u6ce2\\u535a\\u52c3\\u640f\\u94c2\\u7b94\\u4f2f\\u5e1b\\u8236\\u8116\\u818a\\u6e24\\u6cca\\u9a73\\u4eb3\\u8543\\u5575\\u997d\\u6a97\\u64d8\\u7934\\u94b9\\u9e41\\u7c38\\u8ddb\", \"bei\": \"\\u676f\\u7891\\u60b2\\u5351\\u5317\\u8f88\\u80cc\\u8d1d\\u94a1\\u500d\\u72c8\\u5907\\u60eb\\u7119\\u88ab\\u5b5b\\u9642\\u90b6\\u57e4\\u84d3\\u5457\\u602b\\u6096\\u789a\\u9e4e\\u8919\\u943e\", \"ben\": \"\\u5954\\u82ef\\u672c\\u7b28\\u755a\\u574c\\u951b\", \"beng\": \"\\u5d29\\u7ef7\\u752d\\u6cf5\\u8e66\\u8ff8\\u552a\\u5623\\u750f\", \"bi\": \"\\u903c\\u9f3b\\u6bd4\\u9119\\u7b14\\u5f7c\\u78a7\\u84d6\\u853d\\u6bd5\\u6bd9\\u6bd6\\u5e01\\u5e87\\u75f9\\u95ed\\u655d\\u5f0a\\u5fc5\\u8f9f\\u58c1\\u81c2\\u907f\\u965b\\u5315\\u4ef3\\u4ffe\\u8298\\u835c\\u8378\\u5421\\u54d4\\u72f4\\u5eb3\\u610e\\u6ed7\\u6fde\\u5f3c\\u59a3\\u5a62\\u5b16\\u74a7\\u8d32\\u7540\\u94cb\\u79d5\\u88e8\\u7b5a\\u7b85\\u7be6\\u822d\\u895e\\u8df8\\u9ac0\", \"bian\": \"\\u97ad\\u8fb9\\u7f16\\u8d2c\\u6241\\u4fbf\\u53d8\\u535e\\u8fa8\\u8fa9\\u8fab\\u904d\\u533e\\u5f01\\u82c4\\u5fed\\u6c74\\u7f0f\\u7178\\u782d\\u78a5\\u7a39\\u7a86\\u8759\\u7b3e\\u9cca\", \"biao\": \"\\u6807\\u5f6a\\u8198\\u8868\\u5a4a\\u9aa0\\u98d1\\u98d9\\u98da\\u706c\\u9556\\u9573\\u762d\\u88f1\\u9cd4\", \"bie\": \"\\u9cd6\\u618b\\u522b\\u762a\\u8e69\\u9cd8\", \"bin\": \"\\u5f6c\\u658c\\u6fd2\\u6ee8\\u5bbe\\u6448\\u50a7\\u6d5c\\u7f24\\u73a2\\u6ba1\\u8191\\u9554\\u9acc\\u9b13\", \"bing\": \"\\u5175\\u51b0\\u67c4\\u4e19\\u79c9\\u997c\\u70b3\\u75c5\\u5e76\\u7980\\u90b4\\u6452\\u7ee0\\u678b\\u69df\\u71f9\", \"bu\": \"\\u6355\\u535c\\u54fa\\u8865\\u57e0\\u4e0d\\u5e03\\u6b65\\u7c3f\\u90e8\\u6016\\u62ca\\u535f\\u900b\\u74ff\\u6661\\u949a\\u91ad\", \"ca\": \"\\u64e6\\u5693\\u7924\", \"cai\": \"\\u731c\\u88c1\\u6750\\u624d\\u8d22\\u776c\\u8e29\\u91c7\\u5f69\\u83dc\\u8521\", \"can\": \"\\u9910\\u53c2\\u8695\\u6b8b\\u60ed\\u60e8\\u707f\\u9a96\\u74a8\\u7cb2\\u9eea\", \"cang\": \"\\u82cd\\u8231\\u4ed3\\u6ca7\\u85cf\\u4f27\", \"cao\": \"\\u64cd\\u7cd9\\u69fd\\u66f9\\u8349\\u8279\\u5608\\u6f15\\u87ac\\u825a\", \"ce\": \"\\u5395\\u7b56\\u4fa7\\u518c\\u6d4b\\u5202\\u5e3b\\u607b\", \"ceng\": \"\\u5c42\\u8e6d\\u564c\", \"cha\": \"\\u63d2\\u53c9\\u832c\\u8336\\u67e5\\u78b4\\u643d\\u5bdf\\u5c94\\u5dee\\u8be7\\u7339\\u9987\\u6c4a\\u59f9\\u6748\\u6942\\u69ce\\u6aab\\u9497\\u9538\\u9572\\u8869\", \"chai\": \"\\u62c6\\u67f4\\u8c7a\\u4faa\\u8308\\u7625\\u867f\\u9f87\", \"chan\": \"\\u6400\\u63ba\\u8749\\u998b\\u8c17\\u7f20\\u94f2\\u4ea7\\u9610\\u98a4\\u5181\\u8c04\\u8c36\\u8487\\u5edb\\u5fcf\\u6f7a\\u6fb6\\u5b71\\u7fbc\\u5a75\\u5b17\\u9aa3\\u89c7\\u7985\\u9561\\u88e3\\u87fe\\u8e94\", \"chang\": \"\\u660c\\u7316\\u573a\\u5c1d\\u5e38\\u957f\\u507f\\u80a0\\u5382\\u655e\\u7545\\u5531\\u5021\\u4f25\\u9b2f\\u82cc\\u83d6\\u5f9c\\u6005\\u60dd\\u960a\\u5a3c\\u5ae6\\u6636\\u6c05\\u9cb3\", \"chao\": \"\\u8d85\\u6284\\u949e\\u671d\\u5632\\u6f6e\\u5de2\\u5435\\u7092\\u600a\\u7ec9\\u6641\\u8016\", \"che\": \"\\u8f66\\u626f\\u64a4\\u63a3\\u5f7b\\u6f88\\u577c\\u5c6e\\u7817\", \"chen\": \"\\u90f4\\u81e3\\u8fb0\\u5c18\\u6668\\u5ff1\\u6c89\\u9648\\u8d81\\u886c\\u79f0\\u8c0c\\u62bb\\u55d4\\u5bb8\\u741b\\u6987\\u809c\\u80c2\\u789c\\u9f80\", \"cheng\": \"\\u6491\\u57ce\\u6a59\\u6210\\u5448\\u4e58\\u7a0b\\u60e9\\u6f84\\u8bda\\u627f\\u901e\\u9a8b\\u79e4\\u57d5\\u5d4a\\u5fb5\\u6d48\\u67a8\\u67fd\\u6a18\\u665f\\u584d\\u77a0\\u94d6\\u88ce\\u86cf\\u9172\", \"chi\": \"\\u5403\\u75f4\\u6301\\u5319\\u6c60\\u8fdf\\u5f1b\\u9a70\\u803b\\u9f7f\\u4f88\\u5c3a\\u8d64\\u7fc5\\u65a5\\u70bd\\u50ba\\u5880\\u82aa\\u830c\\u640b\\u53f1\\u54e7\\u557b\\u55e4\\u5f73\\u996c\\u6cb2\\u5ab8\\u6555\\u80dd\\u7719\\u7735\\u9e31\\u761b\\u892b\\u86a9\\u87ad\\u7b1e\\u7bea\\u8c49\\u8e05\\u8e1f\\u9b51\", \"chong\": \"\\u5145\\u51b2\\u866b\\u5d07\\u5ba0\\u833a\\u5fe1\\u61a7\\u94f3\\u825f\", \"chou\": \"\\u62bd\\u916c\\u7574\\u8e0c\\u7a20\\u6101\\u7b79\\u4ec7\\u7ef8\\u7785\\u4e11\\u4fe6\\u5733\\u5e31\\u60c6\\u6eb4\\u59af\\u7633\\u96e0\\u9c8b\", \"chu\": \"\\u81ed\\u521d\\u51fa\\u6a71\\u53a8\\u8e87\\u9504\\u96cf\\u6ec1\\u9664\\u695a\\u7840\\u50a8\\u77d7\\u6410\\u89e6\\u5904\\u4e8d\\u520d\\u61b7\\u7ecc\\u6775\\u696e\\u6a17\\u870d\\u8e70\\u9edc\", \"chuan\": \"\\u63e3\\u5ddd\\u7a7f\\u693d\\u4f20\\u8239\\u5598\\u4e32\\u63be\\u821b\\u60f4\\u9044\\u5ddb\\u6c1a\\u948f\\u9569\\u8221\", \"chuang\": \"\\u75ae\\u7a97\\u5e62\\u5e8a\\u95ef\\u521b\\u6006\", \"chui\": \"\\u5439\\u708a\\u6376\\u9524\\u5782\\u9672\\u68f0\\u69cc\", \"chun\": \"\\u6625\\u693f\\u9187\\u5507\\u6df3\\u7eaf\\u8822\\u4fc3\\u83bc\\u6c8c\\u80ab\\u6710\\u9e51\\u877d\", \"chuo\": \"\\u6233\\u7ef0\\u851f\\u8fb6\\u8f8d\\u955e\\u8e14\\u9f8a\", \"ci\": \"\\u75b5\\u8328\\u78c1\\u96cc\\u8f9e\\u6148\\u74f7\\u8bcd\\u6b64\\u523a\\u8d50\\u6b21\\u8360\\u5472\\u5d6f\\u9e5a\\u8785\\u7ccd\\u8d91\", \"cong\": \"\\u806a\\u8471\\u56f1\\u5306\\u4ece\\u4e1b\\u506c\\u82c1\\u6dd9\\u9aa2\\u742e\\u7481\\u679e\", \"cu\": \"\\u51d1\\u7c97\\u918b\\u7c07\\u731d\\u6b82\\u8e59\", \"cuan\": \"\\u8e7f\\u7be1\\u7a9c\\u6c46\\u64ba\\u6615\\u7228\", \"cui\": \"\\u6467\\u5d14\\u50ac\\u8106\\u7601\\u7cb9\\u6dec\\u7fe0\\u8403\\u60b4\\u7480\\u69b1\\u96b9\", \"cun\": \"\\u6751\\u5b58\\u5bf8\\u78cb\\u5fd6\\u76b4\", \"cuo\": \"\\u64ae\\u6413\\u63aa\\u632b\\u9519\\u539d\\u811e\\u9509\\u77ec\\u75e4\\u9e7e\\u8e49\\u8e9c\", \"da\": \"\\u642d\\u8fbe\\u7b54\\u7629\\u6253\\u5927\\u8037\\u54d2\\u55d2\\u601b\\u59b2\\u75b8\\u8921\\u7b2a\\u977c\\u9791\", \"dai\": \"\\u5446\\u6b79\\u50a3\\u6234\\u5e26\\u6b86\\u4ee3\\u8d37\\u888b\\u5f85\\u902e\\u6020\\u57ed\\u7519\\u5454\\u5cb1\\u8fe8\\u902f\\u9a80\\u7ed0\\u73b3\\u9edb\", \"dan\": \"\\u803d\\u62c5\\u4e39\\u5355\\u90f8\\u63b8\\u80c6\\u65e6\\u6c2e\\u4f46\\u60ee\\u6de1\\u8bde\\u5f39\\u86cb\\u4ebb\\u510b\\u5369\\u840f\\u5556\\u6fb9\\u6a90\\u6b9a\\u8d55\\u7708\\u7605\\u8043\\u7baa\", \"dang\": \"\\u5f53\\u6321\\u515a\\u8361\\u6863\\u8c20\\u51fc\\u83ea\\u5b95\\u7800\\u94db\\u88c6\", \"dao\": \"\\u5200\\u6363\\u8e48\\u5012\\u5c9b\\u7977\\u5bfc\\u5230\\u7a3b\\u60bc\\u9053\\u76d7\\u53e8\\u5541\\u5fc9\\u6d2e\\u6c18\\u7118\\u5fd1\\u7e9b\", \"de\": \"\\u5fb7\\u5f97\\u7684\\u951d\", \"deng\": \"\\u8e6c\\u706f\\u767b\\u7b49\\u77aa\\u51f3\\u9093\\u5654\\u5d9d\\u6225\\u78f4\\u956b\\u7c26\", \"di\": \"\\u5824\\u4f4e\\u6ef4\\u8fea\\u654c\\u7b1b\\u72c4\\u6da4\\u7fdf\\u5ae1\\u62b5\\u5e95\\u5730\\u8482\\u7b2c\\u5e1d\\u5f1f\\u9012\\u7f14\\u6c10\\u7c74\\u8bcb\\u8c1b\\u90b8\\u577b\\u839c\\u837b\\u5600\\u5a23\\u67e2\\u68e3\\u89cc\\u7825\\u78b2\\u7747\\u955d\\u7f9d\\u9ab6\", \"dian\": \"\\u98a0\\u6382\\u6ec7\\u7898\\u70b9\\u5178\\u975b\\u57ab\\u7535\\u4f43\\u7538\\u5e97\\u60e6\\u5960\\u6dc0\\u6bbf\\u4e36\\u963d\\u576b\\u57dd\\u5dc5\\u73b7\\u765c\\u766b\\u7c1f\\u8e2e\", \"diao\": \"\\u7889\\u53fc\\u96d5\\u51cb\\u5201\\u6389\\u540a\\u9493\\u8c03\\u8f7a\\u94de\\u8729\\u7c9c\\u8c82\", \"die\": \"\\u8dcc\\u7239\\u789f\\u8776\\u8fed\\u8c0d\\u53e0\\u4f5a\\u57a4\\u581e\\u63f2\\u558b\\u6e2b\\u8f76\\u7252\\u74de\\u8936\\u800b\\u8e40\\u9cbd\\u9cce\", \"ding\": \"\\u4e01\\u76ef\\u53ee\\u9489\\u9876\\u9f0e\\u952d\\u5b9a\\u8ba2\\u4e22\\u4ec3\\u5576\\u738e\\u815a\\u7887\\u753a\\u94e4\\u7594\\u8035\\u914a\", \"dong\": \"\\u4e1c\\u51ac\\u8463\\u61c2\\u52a8\\u680b\\u4f97\\u606b\\u51bb\\u6d1e\\u578c\\u549a\\u5cbd\\u5cd2\\u5902\\u6c21\\u80e8\\u80f4\\u7850\\u9e2b\", \"dou\": \"\\u515c\\u6296\\u6597\\u9661\\u8c46\\u9017\\u75d8\\u8538\\u94ad\\u7aa6\\u7aac\\u86aa\\u7bfc\\u9161\", \"du\": \"\\u90fd\\u7763\\u6bd2\\u728a\\u72ec\\u8bfb\\u5835\\u7779\\u8d4c\\u675c\\u9540\\u809a\\u5ea6\\u6e21\\u5992\\u828f\\u561f\\u6e0e\\u691f\\u6a50\\u724d\\u8839\\u7b03\\u9ad1\\u9ee9\", \"duan\": \"\\u7aef\\u77ed\\u953b\\u6bb5\\u65ad\\u7f0e\\u5f56\\u6934\\u7145\\u7c16\", \"dui\": \"\\u5806\\u5151\\u961f\\u5bf9\\u603c\\u619d\\u7893\", \"dun\": \"\\u58a9\\u5428\\u8e72\\u6566\\u987f\\u56e4\\u949d\\u76fe\\u9041\\u7096\\u7818\\u7905\\u76f9\\u9566\\u8db8\", \"duo\": \"\\u6387\\u54c6\\u591a\\u593a\\u579b\\u8eb2\\u6735\\u8dfa\\u8235\\u5241\\u60f0\\u5815\\u5484\\u54da\\u7f0d\\u67c1\\u94ce\\u88f0\\u8e31\", \"e\": \"\\u86fe\\u5ce8\\u9e45\\u4fc4\\u989d\\u8bb9\\u5a25\\u6076\\u5384\\u627c\\u904f\\u9102\\u997f\\u5669\\u8c14\\u57a9\\u57ad\\u82ca\\u83aa\\u843c\\u5443\\u6115\\u5c59\\u5a40\\u8f6d\\u66f7\\u816d\\u786a\\u9507\\u9537\\u9e57\\u989a\\u9cc4\", \"en\": \"\\u6069\\u84bd\\u6441\\u5514\\u55ef\", \"er\": \"\\u800c\\u513f\\u8033\\u5c14\\u9975\\u6d31\\u4e8c\\u8d30\\u8fe9\\u73e5\\u94d2\\u9e38\\u9c95\", \"fa\": \"\\u53d1\\u7f5a\\u7b4f\\u4f10\\u4e4f\\u9600\\u6cd5\\u73d0\\u57a1\\u781d\", \"fan\": \"\\u85e9\\u5e06\\u756a\\u7ffb\\u6a0a\\u77fe\\u9492\\u7e41\\u51e1\\u70e6\\u53cd\\u8fd4\\u8303\\u8d29\\u72af\\u996d\\u6cdb\\u8629\\u5e61\\u72ad\\u68b5\\u6535\\u71d4\\u7548\\u8e6f\", \"fang\": \"\\u574a\\u82b3\\u65b9\\u80aa\\u623f\\u9632\\u59a8\\u4eff\\u8bbf\\u7eba\\u653e\\u531a\\u90a1\\u5f77\\u94ab\\u822b\\u9c82\", \"fei\": \"\\u83f2\\u975e\\u5561\\u98de\\u80a5\\u532a\\u8bfd\\u5420\\u80ba\\u5e9f\\u6cb8\\u8d39\\u82be\\u72d2\\u60b1\\u6ddd\\u5983\\u7ecb\\u7eef\\u69a7\\u8153\\u6590\\u6249\\u7953\\u7829\\u9544\\u75f1\\u871a\\u7bda\\u7fe1\\u970f\\u9cb1\", \"fen\": \"\\u82ac\\u915a\\u5429\\u6c1b\\u5206\\u7eb7\\u575f\\u711a\\u6c7e\\u7c89\\u594b\\u4efd\\u5fff\\u6124\\u7caa\\u507e\\u7035\\u68fc\\u610d\\u9cbc\\u9f22\", \"feng\": \"\\u4e30\\u5c01\\u67ab\\u8702\\u5cf0\\u950b\\u98ce\\u75af\\u70fd\\u9022\\u51af\\u7f1d\\u8bbd\\u5949\\u51e4\\u4ff8\\u9146\\u8451\\u6ca3\\u781c\", \"fu\": \"\\u4f5b\\u5426\\u592b\\u6577\\u80a4\\u5b75\\u6276\\u62c2\\u8f90\\u5e45\\u6c1f\\u7b26\\u4f0f\\u4fd8\\u670d\\u6d6e\\u6daa\\u798f\\u88b1\\u5f17\\u752b\\u629a\\u8f85\\u4fef\\u91dc\\u65a7\\u812f\\u8151\\u5e9c\\u8150\\u8d74\\u526f\\u8986\\u8d4b\\u590d\\u5085\\u4ed8\\u961c\\u7236\\u8179\\u8d1f\\u5bcc\\u8ba3\\u9644\\u5987\\u7f1a\\u5490\\u5310\\u51eb\\u90db\\u8299\\u82fb\\u832f\\u83a9\\u83d4\\u544b\\u5e5e\\u6ecf\\u8274\\u5b5a\\u9a78\\u7ec2\\u6874\\u8d59\\u9efb\\u9efc\\u7f58\\u7a03\\u99a5\\u864d\\u86a8\\u8709\\u8760\\u876e\\u9eb8\\u8dba\\u8dd7\\u9cc6\", \"ga\": \"\\u5676\\u560e\\u86e4\\u5c2c\\u5477\\u5c15\\u5c1c\\u65ee\\u9486\", \"gai\": \"\\u8be5\\u6539\\u6982\\u9499\\u76d6\\u6e89\\u4e10\\u9654\\u5793\\u6224\\u8d45\\u80f2\", \"gan\": \"\\u5e72\\u7518\\u6746\\u67d1\\u7aff\\u809d\\u8d76\\u611f\\u79c6\\u6562\\u8d63\\u5769\\u82f7\\u5c34\\u64c0\\u6cd4\\u6de6\\u6f89\\u7ec0\\u6a44\\u65f0\\u77f8\\u75b3\\u9150\", \"gang\": \"\\u5188\\u521a\\u94a2\\u7f38\\u809b\\u7eb2\\u5c97\\u6e2f\\u6206\\u7f61\\u9883\\u7b7b\", \"gong\": \"\\u6760\\u5de5\\u653b\\u529f\\u606d\\u9f9a\\u4f9b\\u8eac\\u516c\\u5bab\\u5f13\\u5de9\\u6c5e\\u62f1\\u8d21\\u5171\\u857b\\u5efe\\u54a3\\u73d9\\u80b1\\u86a3\\u86e9\\u89e5\", \"gao\": \"\\u7bd9\\u768b\\u9ad8\\u818f\\u7f94\\u7cd5\\u641e\\u9550\\u7a3f\\u544a\\u777e\\u8bf0\\u90dc\\u84bf\\u85c1\\u7f1f\\u69d4\\u69c1\\u6772\\u9506\", \"ge\": \"\\u54e5\\u6b4c\\u6401\\u6208\\u9e3d\\u80f3\\u7599\\u5272\\u9769\\u845b\\u683c\\u9601\\u9694\\u94ec\\u4e2a\\u5404\\u9b32\\u4ee1\\u54ff\\u5865\\u55dd\\u7ea5\\u643f\\u8188\\u784c\\u94ea\\u9549\\u88bc\\u988c\\u867c\\u8238\\u9abc\\u9ac2\", \"gei\": \"\\u7ed9\", \"gen\": \"\\u6839\\u8ddf\\u4e98\\u831b\\u54cf\\u826e\", \"geng\": \"\\u8015\\u66f4\\u5e9a\\u7fb9\\u57c2\\u803f\\u6897\\u54fd\\u8d53\\u9ca0\", \"gou\": \"\\u94a9\\u52fe\\u6c9f\\u82df\\u72d7\\u57a2\\u6784\\u8d2d\\u591f\\u4f5d\\u8bdf\\u5ca3\\u9058\\u5abe\\u7f11\\u89cf\\u5f40\\u9e32\\u7b31\\u7bdd\\u97b2\", \"gu\": \"\\u8f9c\\u83c7\\u5495\\u7b8d\\u4f30\\u6cbd\\u5b64\\u59d1\\u9f13\\u53e4\\u86ca\\u9aa8\\u8c37\\u80a1\\u6545\\u987e\\u56fa\\u96c7\\u560f\\u8bc2\\u83f0\\u54cc\\u5d2e\\u6c69\\u688f\\u8f71\\u726f\\u727f\\u80cd\\u81cc\\u6bc2\\u77bd\\u7f5f\\u94b4\\u9522\\u74e0\\u9e2a\\u9e44\\u75fc\\u86c4\\u9164\\u89da\\u9cb4\\u9ab0\\u9e58\", \"gua\": \"\\u522e\\u74dc\\u5250\\u5be1\\u6302\\u8902\\u5366\\u8bd6\\u5471\\u681d\\u9e39\", \"guai\": \"\\u4e56\\u62d0\\u602a\\u54d9\", \"guan\": \"\\u68fa\\u5173\\u5b98\\u51a0\\u89c2\\u7ba1\\u9986\\u7f50\\u60ef\\u704c\\u8d2f\\u500c\\u839e\\u63bc\\u6dab\\u76e5\\u9e73\\u9ccf\", \"guang\": \"\\u5149\\u5e7f\\u901b\\u72b7\\u6844\\u80f1\\u7592\", \"gui\": \"\\u7470\\u89c4\\u572d\\u7845\\u5f52\\u9f9f\\u95fa\\u8f68\\u9b3c\\u8be1\\u7678\\u6842\\u67dc\\u8dea\\u8d35\\u523d\\u5326\\u523f\\u5e8b\\u5b84\\u59ab\\u6867\\u7085\\u6677\\u7688\\u7c0b\\u9c91\\u9cdc\", \"gun\": \"\\u8f8a\\u6eda\\u68cd\\u4e28\\u886e\\u7ef2\\u78d9\\u9ca7\", \"guo\": \"\\u9505\\u90ed\\u56fd\\u679c\\u88f9\\u8fc7\\u9998\\u8803\\u57da\\u63b4\\u5459\\u56d7\\u5e3c\\u5d1e\\u7313\\u6901\\u8662\\u951e\\u8052\\u872e\\u873e\\u8748\", \"ha\": \"\\u54c8\", \"hai\": \"\\u9ab8\\u5b69\\u6d77\\u6c26\\u4ea5\\u5bb3\\u9a87\\u54b4\\u55e8\\u988f\\u91a2\", \"han\": \"\\u9163\\u61a8\\u90af\\u97e9\\u542b\\u6db5\\u5bd2\\u51fd\\u558a\\u7f55\\u7ff0\\u64bc\\u634d\\u65f1\\u61be\\u608d\\u710a\\u6c57\\u6c49\\u9097\\u83e1\\u6496\\u961a\\u701a\\u6657\\u7113\\u9894\\u86b6\\u9f3e\", \"hen\": \"\\u592f\\u75d5\\u5f88\\u72e0\\u6068\", \"hang\": \"\\u676d\\u822a\\u6c86\\u7ed7\\u73e9\\u6841\", \"hao\": \"\\u58d5\\u568e\\u8c6a\\u6beb\\u90dd\\u597d\\u8017\\u53f7\\u6d69\\u8585\\u55e5\\u5686\\u6fe0\\u704f\\u660a\\u7693\\u98a2\\u869d\", \"he\": \"\\u5475\\u559d\\u8377\\u83cf\\u6838\\u79be\\u548c\\u4f55\\u5408\\u76d2\\u8c89\\u9602\\u6cb3\\u6db8\\u8d6b\\u8910\\u9e64\\u8d3a\\u8bc3\\u52be\\u58d1\\u85ff\\u55d1\\u55ec\\u9616\\u76cd\\u86b5\\u7fee\", \"hei\": \"\\u563f\\u9ed1\", \"heng\": \"\\u54fc\\u4ea8\\u6a2a\\u8861\\u6052\\u8a07\\u8605\", \"hong\": \"\\u8f70\\u54c4\\u70d8\\u8679\\u9e3f\\u6d2a\\u5b8f\\u5f18\\u7ea2\\u9ec9\\u8ba7\\u836d\\u85a8\\u95f3\\u6cd3\", \"hou\": \"\\u5589\\u4faf\\u7334\\u543c\\u539a\\u5019\\u540e\\u5820\\u5f8c\\u9005\\u760a\\u7bcc\\u7cc7\\u9c8e\\u9aba\", \"hu\": \"\\u547c\\u4e4e\\u5ffd\\u745a\\u58f6\\u846b\\u80e1\\u8774\\u72d0\\u7cca\\u6e56\\u5f27\\u864e\\u552c\\u62a4\\u4e92\\u6caa\\u6237\\u51b1\\u553f\\u56eb\\u5cb5\\u7322\\u6019\\u60da\\u6d52\\u6ef9\\u7425\\u69f2\\u8f77\\u89f3\\u70c0\\u7173\\u623d\\u6248\\u795c\\u9e55\\u9e71\\u7b0f\\u9190\\u659b\", \"hua\": \"\\u82b1\\u54d7\\u534e\\u733e\\u6ed1\\u753b\\u5212\\u5316\\u8bdd\\u5290\\u6d4d\\u9a85\\u6866\\u94e7\\u7a1e\", \"huai\": \"\\u69d0\\u5f8a\\u6000\\u6dee\\u574f\\u8fd8\\u8e1d\", \"huan\": \"\\u6b22\\u73af\\u6853\\u7f13\\u6362\\u60a3\\u5524\\u75ea\\u8c62\\u7115\\u6da3\\u5ba6\\u5e7b\\u90c7\\u5942\\u57b8\\u64d0\\u571c\\u6d39\\u6d63\\u6f36\\u5bf0\\u902d\\u7f33\\u953e\\u9ca9\\u9b1f\", \"huang\": \"\\u8352\\u614c\\u9ec4\\u78fa\\u8757\\u7c27\\u7687\\u51f0\\u60f6\\u714c\\u6643\\u5e4c\\u604d\\u8c0e\\u968d\\u5fa8\\u6e5f\\u6f62\\u9051\\u749c\\u8093\\u7640\\u87e5\\u7bc1\\u9cc7\", \"hui\": \"\\u7070\\u6325\\u8f89\\u5fbd\\u6062\\u86d4\\u56de\\u6bc1\\u6094\\u6167\\u5349\\u60e0\\u6666\\u8d3f\\u79fd\\u4f1a\\u70e9\\u6c47\\u8bb3\\u8bf2\\u7ed8\\u8bd9\\u8334\\u835f\\u8559\\u54d5\\u5599\\u96b3\\u6d04\\u5f57\\u7f0b\\u73f2\\u6656\\u605a\\u867a\\u87ea\\u9ebe\", \"hun\": \"\\u8364\\u660f\\u5a5a\\u9b42\\u6d51\\u6df7\\u8be8\\u9984\\u960d\\u6eb7\\u7f17\", \"huo\": \"\\u8c41\\u6d3b\\u4f19\\u706b\\u83b7\\u6216\\u60d1\\u970d\\u8d27\\u7978\\u6509\\u56af\\u5925\\u94ac\\u952a\\u956c\\u8020\\u8816\", \"ji\": \"\\u51fb\\u573e\\u57fa\\u673a\\u7578\\u7a3d\\u79ef\\u7b95\\u808c\\u9965\\u8ff9\\u6fc0\\u8ba5\\u9e21\\u59ec\\u7ee9\\u7f09\\u5409\\u6781\\u68d8\\u8f91\\u7c4d\\u96c6\\u53ca\\u6025\\u75be\\u6c72\\u5373\\u5ac9\\u7ea7\\u6324\\u51e0\\u810a\\u5df1\\u84df\\u6280\\u5180\\u5b63\\u4f0e\\u796d\\u5242\\u60b8\\u6d4e\\u5bc4\\u5bc2\\u8ba1\\u8bb0\\u65e2\\u5fcc\\u9645\\u5993\\u7ee7\\u7eaa\\u5c45\\u4e0c\\u4e69\\u525e\\u4f76\\u4f74\\u8114\\u58bc\\u82a8\\u82b0\\u8401\\u84ba\\u857a\\u638e\\u53fd\\u54ad\\u54dc\\u5527\\u5c8c\\u5d74\\u6d0e\\u5f50\\u5c50\\u9aa5\\u757f\\u7391\\u696b\\u6b9b\\u621f\\u6222\\u8d4d\\u89ca\\u7284\\u9f51\\u77f6\\u7f81\\u5d47\\u7a37\\u7620\\u7635\\u866e\\u7b08\\u7b04\\u66a8\\u8dfb\\u8dfd\\u9701\\u9c9a\\u9cab\\u9afb\\u9e82\", \"jia\": \"\\u5609\\u67b7\\u5939\\u4f73\\u5bb6\\u52a0\\u835a\\u988a\\u8d3e\\u7532\\u94be\\u5047\\u7a3c\\u4ef7\\u67b6\\u9a7e\\u5ac1\\u4f3d\\u90cf\\u62ee\\u5cac\\u6d43\\u8fe6\\u73c8\\u621b\\u80db\\u605d\\u94d7\\u9553\\u75c2\\u86f1\\u7b33\\u8888\\u8dcf\", \"jian\": \"\\u6b7c\\u76d1\\u575a\\u5c16\\u7b3a\\u95f4\\u714e\\u517c\\u80a9\\u8270\\u5978\\u7f04\\u8327\\u68c0\\u67ec\\u78b1\\u7877\\u62e3\\u6361\\u7b80\\u4fed\\u526a\\u51cf\\u8350\\u69db\\u9274\\u8df5\\u8d31\\u89c1\\u952e\\u7bad\\u4ef6\\u5065\\u8230\\u5251\\u996f\\u6e10\\u6e85\\u6da7\\u5efa\\u50ed\\u8c0f\\u8c2b\\u83c5\\u84b9\\u641b\\u56dd\\u6e54\\u8e47\\u8b07\\u7f23\\u67a7\\u67d9\\u6957\\u620b\\u622c\\u726e\\u728d\\u6bfd\\u8171\\u7751\\u950f\\u9e63\\u88e5\\u7b15\\u7bb4\\u7fe6\\u8dbc\\u8e3a\\u9ca3\\u97af\", \"jiang\": \"\\u50f5\\u59dc\\u5c06\\u6d46\\u6c5f\\u7586\\u848b\\u6868\\u5956\\u8bb2\\u5320\\u9171\\u964d\\u8333\\u6d1a\\u7edb\\u7f30\\u729f\\u7913\\u8029\\u7ce8\\u8c47\", \"jiao\": \"\\u8549\\u6912\\u7901\\u7126\\u80f6\\u4ea4\\u90ca\\u6d47\\u9a84\\u5a07\\u56bc\\u6405\\u94f0\\u77eb\\u4fa5\\u811a\\u72e1\\u89d2\\u997a\\u7f34\\u7ede\\u527f\\u6559\\u9175\\u8f7f\\u8f83\\u53eb\\u4f7c\\u50ec\\u832d\\u6322\\u564d\\u5ce4\\u5fbc\\u59e3\\u7e9f\\u656b\\u768e\\u9e6a\\u86df\\u91ae\\u8de4\\u9c9b\", \"jie\": \"\\u7a96\\u63ed\\u63a5\\u7686\\u79f8\\u8857\\u9636\\u622a\\u52ab\\u8282\\u6854\\u6770\\u6377\\u776b\\u7aed\\u6d01\\u7ed3\\u89e3\\u59d0\\u6212\\u85c9\\u82a5\\u754c\\u501f\\u4ecb\\u75a5\\u8beb\\u5c4a\\u5048\\u8ba6\\u8bd8\\u5588\\u55df\\u736c\\u5a55\\u5b51\\u6840\\u7352\\u78a3\\u9534\\u7596\\u88b7\\u9889\\u86a7\\u7faf\\u9c92\\u9ab1\\u9aeb\", \"jin\": \"\\u5dfe\\u7b4b\\u65a4\\u91d1\\u4eca\\u6d25\\u895f\\u7d27\\u9526\\u4ec5\\u8c28\\u8fdb\\u9773\\u664b\\u7981\\u8fd1\\u70ec\\u6d78\\u5c3d\\u537a\\u8369\\u5807\\u5664\\u9991\\u5ed1\\u5997\\u7f19\\u747e\\u69ff\\u8d46\\u89d0\\u9485\\u9513\\u887f\\u77dc\", \"jing\": \"\\u52b2\\u8346\\u5162\\u830e\\u775b\\u6676\\u9cb8\\u4eac\\u60ca\\u7cbe\\u7cb3\\u7ecf\\u4e95\\u8b66\\u666f\\u9888\\u9759\\u5883\\u656c\\u955c\\u5f84\\u75c9\\u9756\\u7adf\\u7ade\\u51c0\\u522d\\u5106\\u9631\\u83c1\\u734d\\u61ac\\u6cfe\\u8ff3\\u5f2a\\u5a67\\u80bc\\u80eb\\u8148\\u65cc\", \"jiong\": \"\\u70af\\u7a98\\u5182\\u8fe5\\u6243\", \"jiu\": \"\\u63ea\\u7a76\\u7ea0\\u7396\\u97ed\\u4e45\\u7078\\u4e5d\\u9152\\u53a9\\u6551\\u65e7\\u81fc\\u8205\\u548e\\u5c31\\u759a\\u50e6\\u557e\\u9604\\u67e9\\u6855\\u9e6b\\u8d73\\u9b0f\", \"ju\": \"\\u97a0\\u62d8\\u72d9\\u75bd\\u9a79\\u83ca\\u5c40\\u5480\\u77e9\\u4e3e\\u6cae\\u805a\\u62d2\\u636e\\u5de8\\u5177\\u8ddd\\u8e1e\\u952f\\u4ff1\\u53e5\\u60e7\\u70ac\\u5267\\u5028\\u8bb5\\u82e3\\u82f4\\u8392\\u63ac\\u907d\\u5c66\\u741a\\u67b8\\u6910\\u6998\\u6989\\u6a58\\u728b\\u98d3\\u949c\\u9514\\u7aad\\u88fe\\u8d84\\u91b5\\u8e3d\\u9f83\\u96ce\\u97ab\", \"juan\": \"\\u6350\\u9e43\\u5a1f\\u5026\\u7737\\u5377\\u7ee2\\u9104\\u72f7\\u6d93\\u684a\\u8832\\u9529\\u954c\\u96bd\", \"jue\": \"\\u6485\\u652b\\u6289\\u6398\\u5014\\u7235\\u89c9\\u51b3\\u8bc0\\u7edd\\u53a5\\u5282\\u8c32\\u77cd\\u8568\\u5658\\u5d1b\\u7357\\u5b53\\u73cf\\u6877\\u6a5b\\u721d\\u9562\\u8e76\\u89d6\", \"jun\": \"\\u5747\\u83cc\\u94a7\\u519b\\u541b\\u5cfb\\u4fca\\u7ae3\\u6d5a\\u90e1\\u9a8f\\u6343\\u72fb\\u76b2\\u7b60\\u9e87\", \"ka\": \"\\u5580\\u5496\\u5361\\u4f67\\u5494\\u80e9\", \"ke\": \"\\u54af\\u5777\\u82db\\u67ef\\u68f5\\u78d5\\u9897\\u79d1\\u58f3\\u54b3\\u53ef\\u6e34\\u514b\\u523b\\u5ba2\\u8bfe\\u5ca2\\u606a\\u6e98\\u9a92\\u7f02\\u73c2\\u8f72\\u6c2a\\u778c\\u94b6\\u75b4\\u7aa0\\u874c\\u9ac1\", \"kai\": \"\\u5f00\\u63e9\\u6977\\u51ef\\u6168\\u5240\\u57b2\\u8488\\u5ffe\\u607a\\u94e0\\u950e\", \"kan\": \"\\u520a\\u582a\\u52d8\\u574e\\u780d\\u770b\\u4f83\\u51f5\\u83b0\\u83b6\\u6221\\u9f9b\\u77b0\", \"kang\": \"\\u5eb7\\u6177\\u7ce0\\u625b\\u6297\\u4ea2\\u7095\\u5751\\u4f09\\u95f6\\u94aa\", \"kao\": \"\\u8003\\u62f7\\u70e4\\u9760\\u5c3b\\u6832\\u7292\\u94d0\", \"ken\": \"\\u80af\\u5543\\u57a6\\u6073\\u57a0\\u88c9\\u9880\", \"keng\": \"\\u542d\\u5fd0\\u94ff\", \"kong\": \"\\u7a7a\\u6050\\u5b54\\u63a7\\u5025\\u5d06\\u7b9c\", \"kou\": \"\\u62a0\\u53e3\\u6263\\u5bc7\\u82a4\\u853b\\u53e9\\u770d\\u7b58\", \"ku\": \"\\u67af\\u54ed\\u7a9f\\u82e6\\u9177\\u5e93\\u88e4\\u5233\\u5800\\u55be\\u7ed4\\u9ab7\", \"kua\": \"\\u5938\\u57ae\\u630e\\u8de8\\u80ef\\u4f89\", \"kuai\": \"\\u5757\\u7b77\\u4fa9\\u5feb\\u84af\\u90d0\\u8489\\u72ef\\u810d\", \"kuan\": \"\\u5bbd\\u6b3e\\u9acb\", \"kuang\": \"\\u5321\\u7b50\\u72c2\\u6846\\u77ff\\u7736\\u65f7\\u51b5\\u8bd3\\u8bf3\\u909d\\u5739\\u593c\\u54d0\\u7ea9\\u8d36\", \"kui\": \"\\u4e8f\\u76d4\\u5cbf\\u7aa5\\u8475\\u594e\\u9b41\\u5080\\u9988\\u6127\\u6e83\\u9997\\u532e\\u5914\\u9697\\u63c6\\u55b9\\u559f\\u609d\\u6126\\u9615\\u9035\\u668c\\u777d\\u8069\\u8770\\u7bd1\\u81fe\\u8dec\", \"kun\": \"\\u5764\\u6606\\u6346\\u56f0\\u6083\\u9603\\u7428\\u951f\\u918c\\u9cb2\\u9ae1\", \"kuo\": \"\\u62ec\\u6269\\u5ed3\\u9614\\u86de\", \"la\": \"\\u5783\\u62c9\\u5587\\u8721\\u814a\\u8fa3\\u5566\\u524c\\u647a\\u908b\\u65ef\\u782c\\u760c\", \"lai\": \"\\u83b1\\u6765\\u8d56\\u5d03\\u5f95\\u6d9e\\u6fd1\\u8d49\\u7750\\u94fc\\u765e\\u7c41\", \"lan\": \"\\u84dd\\u5a6a\\u680f\\u62e6\\u7bee\\u9611\\u5170\\u6f9c\\u8c30\\u63fd\\u89c8\\u61d2\\u7f06\\u70c2\\u6ee5\\u5549\\u5c9a\\u61d4\\u6f24\\u6984\\u6593\\u7f71\\u9567\\u8934\", \"lang\": \"\\u7405\\u6994\\u72fc\\u5eca\\u90ce\\u6717\\u6d6a\\u83a8\\u8497\\u5577\\u9606\\u9512\\u7a02\\u8782\", \"lao\": \"\\u635e\\u52b3\\u7262\\u8001\\u4f6c\\u59e5\\u916a\\u70d9\\u6d9d\\u5520\\u5d02\\u6833\\u94d1\\u94f9\\u75e8\\u91aa\", \"le\": \"\\u52d2\\u4e50\\u808b\\u4ec2\\u53fb\\u561e\\u6cd0\\u9cd3\", \"lei\": \"\\u96f7\\u956d\\u857e\\u78ca\\u7d2f\\u5121\\u5792\\u64c2\\u7c7b\\u6cea\\u7fb8\\u8bd4\\u837d\\u54a7\\u6f2f\\u5ad8\\u7f27\\u6a91\\u8012\\u9179\", \"ling\": \"\\u68f1\\u51b7\\u62ce\\u73b2\\u83f1\\u96f6\\u9f84\\u94c3\\u4f36\\u7f9a\\u51cc\\u7075\\u9675\\u5cad\\u9886\\u53e6\\u4ee4\\u9143\\u5844\\u82d3\\u5464\\u56f9\\u6ce0\\u7eeb\\u67c3\\u68c2\\u74f4\\u8046\\u86c9\\u7fce\\u9cae\", \"leng\": \"\\u695e\\u6123\", \"li\": \"\\u5398\\u68a8\\u7281\\u9ece\\u7bf1\\u72f8\\u79bb\\u6f13\\u7406\\u674e\\u91cc\\u9ca4\\u793c\\u8389\\u8354\\u540f\\u6817\\u4e3d\\u5389\\u52b1\\u783e\\u5386\\u5229\\u5088\\u4f8b\\u4fd0\\u75e2\\u7acb\\u7c92\\u6ca5\\u96b6\\u529b\\u7483\\u54e9\\u4fea\\u4fda\\u90e6\\u575c\\u82c8\\u8385\\u84e0\\u85dc\\u6369\\u5456\\u5533\\u55b1\\u7301\\u6ea7\\u6fa7\\u9026\\u5a0c\\u5ae0\\u9a8a\\u7f21\\u73de\\u67a5\\u680e\\u8f79\\u623e\\u783a\\u8a48\\u7f79\\u9502\\u9e42\\u75a0\\u75ac\\u86ce\\u870a\\u8821\\u7b20\\u7be5\\u7c9d\\u91b4\\u8dde\\u96f3\\u9ca1\\u9ce2\\u9ee7\", \"lian\": \"\\u4fe9\\u8054\\u83b2\\u8fde\\u9570\\u5ec9\\u601c\\u6d9f\\u5e18\\u655b\\u8138\\u94fe\\u604b\\u70bc\\u7ec3\\u631b\\u8539\\u5941\\u6f4b\\u6fc2\\u5a08\\u740f\\u695d\\u6b93\\u81c1\\u81a6\\u88e2\\u880a\\u9ca2\", \"liang\": \"\\u7cae\\u51c9\\u6881\\u7cb1\\u826f\\u4e24\\u8f86\\u91cf\\u667e\\u4eae\\u8c05\\u589a\\u690b\\u8e09\\u9753\\u9b49\", \"liao\": \"\\u64a9\\u804a\\u50da\\u7597\\u71ce\\u5be5\\u8fbd\\u6f66\\u4e86\\u6482\\u9563\\u5ed6\\u6599\\u84fc\\u5c25\\u5639\\u7360\\u5bee\\u7f2d\\u948c\\u9e69\\u8022\", \"lie\": \"\\u5217\\u88c2\\u70c8\\u52a3\\u730e\\u51bd\\u57d2\\u6d0c\\u8d94\\u8e90\\u9b23\", \"lin\": \"\\u7433\\u6797\\u78f7\\u9716\\u4e34\\u90bb\\u9cde\\u6dcb\\u51db\\u8d41\\u541d\\u853a\\u5d99\\u5eea\\u9074\\u6aa9\\u8f9a\\u77b5\\u7cbc\\u8e8f\\u9e9f\", \"liu\": \"\\u6e9c\\u7409\\u69b4\\u786b\\u998f\\u7559\\u5218\\u7624\\u6d41\\u67f3\\u516d\\u62a1\\u507b\\u848c\\u6cd6\\u6d4f\\u905b\\u9a9d\\u7efa\\u65d2\\u7198\\u950d\\u954f\\u9e68\\u938f\", \"long\": \"\\u9f99\\u804b\\u5499\\u7b3c\\u7abf\\u9686\\u5784\\u62e2\\u9647\\u5f04\\u5785\\u830f\\u6cf7\\u73d1\\u680a\\u80e7\\u783b\\u7643\", \"lou\": \"\\u697c\\u5a04\\u6402\\u7bd3\\u6f0f\\u964b\\u55bd\\u5d5d\\u9542\\u7618\\u8027\\u877c\\u9ac5\", \"lu\": \"\\u82a6\\u5362\\u9885\\u5e90\\u7089\\u63b3\\u5364\\u864f\\u9c81\\u9e93\\u788c\\u9732\\u8def\\u8d42\\u9e7f\\u6f5e\\u7984\\u5f55\\u9646\\u622e\\u5786\\u6445\\u64b8\\u565c\\u6cf8\\u6e0c\\u6f09\\u7490\\u680c\\u6a79\\u8f73\\u8f82\\u8f98\\u6c07\\u80ea\\u9565\\u9e2c\\u9e6d\\u7c0f\\u823b\\u9c88\", \"lv\": \"\\u9a74\\u5415\\u94dd\\u4fa3\\u65c5\\u5c65\\u5c61\\u7f15\\u8651\\u6c2f\\u5f8b\\u7387\\u6ee4\\u7eff\\u634b\\u95fe\\u6988\\u8182\\u7a06\\u891b\", \"luan\": \"\\u5ce6\\u5b6a\\u6ee6\\u5375\\u4e71\\u683e\\u9e3e\\u92ae\", \"lue\": \"\\u63a0\\u7565\\u950a\", \"lun\": \"\\u8f6e\\u4f26\\u4ed1\\u6ca6\\u7eb6\\u8bba\\u56f5\", \"luo\": \"\\u841d\\u87ba\\u7f57\\u903b\\u9523\\u7ba9\\u9aa1\\u88f8\\u843d\\u6d1b\\u9a86\\u7edc\\u502e\\u8366\\u645e\\u7321\\u6cfa\\u6924\\u8136\\u9559\\u7630\\u96d2\", \"ma\": \"\\u5988\\u9ebb\\u739b\\u7801\\u8682\\u9a6c\\u9a82\\u561b\\u5417\\u551b\\u72b8\\u5b37\\u6769\\u9ebd\", \"mai\": \"\\u57cb\\u4e70\\u9ea6\\u5356\\u8fc8\\u8109\\u52a2\\u836c\\u54aa\\u973e\", \"man\": \"\\u7792\\u9992\\u86ee\\u6ee1\\u8513\\u66fc\\u6162\\u6f2b\\u8c29\\u5881\\u5e54\\u7f26\\u71b3\\u9558\\u989f\\u87a8\\u9cd7\\u9794\", \"mang\": \"\\u8292\\u832b\\u76f2\\u5fd9\\u83bd\\u9099\\u6f2d\\u6726\\u786d\\u87d2\", \"meng\": \"\\u6c13\\u840c\\u8499\\u6aac\\u76df\\u9530\\u731b\\u68a6\\u5b5f\\u52d0\\u750d\\u77a2\\u61f5\\u791e\\u867b\\u8722\\u8813\\u824b\\u8268\\u9efe\", \"miao\": \"\\u732b\\u82d7\\u63cf\\u7784\\u85d0\\u79d2\\u6e3a\\u5e99\\u5999\\u55b5\\u9088\\u7f08\\u7f2a\\u676a\\u6dfc\\u7707\\u9e4b\\u8731\", \"mao\": \"\\u8305\\u951a\\u6bdb\\u77db\\u94c6\\u536f\\u8302\\u5192\\u5e3d\\u8c8c\\u8d38\\u4f94\\u88a4\\u52d6\\u8306\\u5cc1\\u7441\\u6634\\u7266\\u8004\\u65c4\\u61cb\\u7780\\u86d1\\u8765\\u87ca\\u9ae6\", \"me\": \"\\u4e48\", \"mei\": \"\\u73ab\\u679a\\u6885\\u9176\\u9709\\u7164\\u6ca1\\u7709\\u5a92\\u9541\\u6bcf\\u7f8e\\u6627\\u5bd0\\u59b9\\u5a9a\\u5776\\u8393\\u5d4b\\u7338\\u6d7c\\u6e44\\u6963\\u9545\\u9e5b\\u8882\\u9b45\", \"men\": \"\\u95e8\\u95f7\\u4eec\\u626a\\u739f\\u7116\\u61d1\\u9494\", \"mi\": \"\\u772f\\u919a\\u9761\\u7cdc\\u8ff7\\u8c1c\\u5f25\\u7c73\\u79d8\\u89c5\\u6ccc\\u871c\\u5bc6\\u5e42\\u8288\\u5196\\u8c27\\u863c\\u5627\\u7315\\u736f\\u6c68\\u5b93\\u5f2d\\u8112\\u6549\\u7cf8\\u7e3b\\u9e8b\", \"mian\": \"\\u68c9\\u7720\\u7ef5\\u5195\\u514d\\u52c9\\u5a29\\u7f05\\u9762\\u6c94\\u6e4e\\u817c\\u7704\", \"mie\": \"\\u8511\\u706d\\u54a9\\u881b\\u7bfe\", \"min\": \"\\u6c11\\u62bf\\u76bf\\u654f\\u60af\\u95fd\\u82e0\\u5cb7\\u95f5\\u6cef\\u73c9\", \"ming\": \"\\u660e\\u879f\\u9e23\\u94ed\\u540d\\u547d\\u51a5\\u8317\\u6e9f\\u669d\\u7791\\u9169\", \"miu\": \"\\u8c2c\", \"mo\": \"\\u6478\\u6479\\u8611\\u6a21\\u819c\\u78e8\\u6469\\u9b54\\u62b9\\u672b\\u83ab\\u58a8\\u9ed8\\u6cab\\u6f20\\u5bde\\u964c\\u8c1f\\u8309\\u84e6\\u998d\\u5aeb\\u9546\\u79e3\\u763c\\u8031\\u87c6\\u8c8a\\u8c98\", \"mou\": \"\\u8c0b\\u725f\\u67d0\\u53b6\\u54de\\u5a7a\\u7738\\u936a\", \"mu\": \"\\u62c7\\u7261\\u4ea9\\u59c6\\u6bcd\\u5893\\u66ae\\u5e55\\u52df\\u6155\\u6728\\u76ee\\u7766\\u7267\\u7a46\\u4eeb\\u82dc\\u5452\\u6c90\\u6bea\\u94bc\", \"na\": \"\\u62ff\\u54ea\\u5450\\u94a0\\u90a3\\u5a1c\\u7eb3\\u5185\\u637a\\u80ad\\u954e\\u8872\\u7bac\", \"nai\": \"\\u6c16\\u4e43\\u5976\\u8010\\u5948\\u9f10\\u827f\\u8418\\u67f0\", \"nan\": \"\\u5357\\u7537\\u96be\\u56ca\\u5583\\u56e1\\u6960\\u8169\\u877b\\u8d67\", \"nao\": \"\\u6320\\u8111\\u607c\\u95f9\\u5b6c\\u57b4\\u7331\\u7459\\u7847\\u94d9\\u86f2\", \"ne\": \"\\u6dd6\\u5462\\u8bb7\", \"nei\": \"\\u9981\", \"nen\": \"\\u5ae9\\u80fd\\u6798\\u6041\", \"ni\": \"\\u59ae\\u9713\\u502a\\u6ce5\\u5c3c\\u62df\\u4f60\\u533f\\u817b\\u9006\\u6eba\\u4f32\\u576d\\u730a\\u6029\\u6ee0\\u6635\\u65ce\\u7962\\u615d\\u7768\\u94cc\\u9cb5\", \"nian\": \"\\u852b\\u62c8\\u5e74\\u78be\\u64b5\\u637b\\u5ff5\\u5eff\\u8f87\\u9ecf\\u9c87\\u9cb6\", \"niang\": \"\\u5a18\\u917f\", \"niao\": \"\\u9e1f\\u5c3f\\u8311\\u5b32\\u8132\\u8885\", \"nie\": \"\\u634f\\u8042\\u5b7d\\u556e\\u954a\\u954d\\u6d85\\u4e5c\\u9667\\u8616\\u55eb\\u8080\\u989e\\u81ec\\u8e51\", \"nin\": \"\\u60a8\\u67e0\", \"ning\": \"\\u72de\\u51dd\\u5b81\\u62e7\\u6cde\\u4f5e\\u84e5\\u549b\\u752f\\u804d\", \"niu\": \"\\u725b\\u626d\\u94ae\\u7ebd\\u72c3\\u5ff8\\u599e\\u86b4\", \"nong\": \"\\u8113\\u6d53\\u519c\\u4fac\", \"nu\": \"\\u5974\\u52aa\\u6012\\u5476\\u5e11\\u5f29\\u80ec\\u5b65\\u9a7d\", \"nv\": \"\\u5973\\u6067\\u9495\\u8844\", \"nuan\": \"\\u6696\", \"nuenue\": \"\\u8650\", \"nue\": \"\\u759f\\u8c11\", \"nuo\": \"\\u632a\\u61e6\\u7cef\\u8bfa\\u50a9\\u6426\\u558f\\u9518\", \"ou\": \"\\u54e6\\u6b27\\u9e25\\u6bb4\\u85d5\\u5455\\u5076\\u6ca4\\u6004\\u74ef\\u8026\", \"pa\": \"\\u556a\\u8db4\\u722c\\u5e15\\u6015\\u7436\\u8469\\u7b62\", \"pai\": \"\\u62cd\\u6392\\u724c\\u5f98\\u6e43\\u6d3e\\u4ff3\\u848e\", \"pan\": \"\\u6500\\u6f58\\u76d8\\u78d0\\u76fc\\u7554\\u5224\\u53db\\u723f\\u6cee\\u88a2\\u897b\\u87e0\\u8e52\", \"pang\": \"\\u4e53\\u5e9e\\u65c1\\u802a\\u80d6\\u6ec2\\u9004\", \"pao\": \"\\u629b\\u5486\\u5228\\u70ae\\u888d\\u8dd1\\u6ce1\\u530f\\u72cd\\u5e96\\u812c\\u75b1\", \"pei\": \"\\u5478\\u80da\\u57f9\\u88f4\\u8d54\\u966a\\u914d\\u4f69\\u6c9b\\u638a\\u8f94\\u5e14\\u6de0\\u65c6\\u952b\\u9185\\u9708\", \"pen\": \"\\u55b7\\u76c6\\u6e53\", \"peng\": \"\\u7830\\u62a8\\u70f9\\u6f8e\\u5f6d\\u84ec\\u68da\\u787c\\u7bf7\\u81a8\\u670b\\u9e4f\\u6367\\u78b0\\u576f\\u580b\\u562d\\u6026\\u87db\", \"pi\": \"\\u7812\\u9739\\u6279\\u62ab\\u5288\\u7435\\u6bd7\\u5564\\u813e\\u75b2\\u76ae\\u5339\\u75de\\u50fb\\u5c41\\u8b6c\\u4e15\\u9674\\u90b3\\u90eb\\u572e\\u9f19\\u64d7\\u567c\\u5e80\\u5ab2\\u7eb0\\u6787\\u7513\\u7765\\u7f74\\u94cd\\u75e6\\u7656\\u758b\\u868d\\u8c94\", \"pian\": \"\\u7bc7\\u504f\\u7247\\u9a97\\u8c1d\\u9a88\\u728f\\u80fc\\u890a\\u7fe9\\u8e41\", \"piao\": \"\\u98d8\\u6f02\\u74e2\\u7968\\u527d\\u560c\\u5ad6\\u7f25\\u6b8d\\u779f\\u87b5\", \"pie\": \"\\u6487\\u77a5\\u4e3f\\u82e4\\u6c15\", \"pin\": \"\\u62fc\\u9891\\u8d2b\\u54c1\\u8058\\u62da\\u59d8\\u5ad4\\u6980\\u725d\\u98a6\", \"ping\": \"\\u4e52\\u576a\\u82f9\\u840d\\u5e73\\u51ed\\u74f6\\u8bc4\\u5c4f\\u4fdc\\u5a09\\u67b0\\u9c86\", \"po\": \"\\u5761\\u6cfc\\u9887\\u5a46\\u7834\\u9b44\\u8feb\\u7c95\\u53f5\\u9131\\u6ea5\\u73c0\\u948b\\u94b7\\u76a4\\u7b38\", \"pou\": \"\\u5256\\u88d2\\u8e23\", \"pu\": \"\\u6251\\u94fa\\u4ec6\\u8386\\u8461\\u83e9\\u84b2\\u57d4\\u6734\\u5703\\u666e\\u6d66\\u8c31\\u66dd\\u7011\\u530d\\u5657\\u6fee\\u749e\\u6c06\\u9564\\u9568\\u8e7c\", \"qi\": \"\\u671f\\u6b3a\\u6816\\u621a\\u59bb\\u4e03\\u51c4\\u6f06\\u67d2\\u6c8f\\u5176\\u68cb\\u5947\\u6b67\\u7566\\u5d0e\\u8110\\u9f50\\u65d7\\u7948\\u7941\\u9a91\\u8d77\\u5c82\\u4e5e\\u4f01\\u542f\\u5951\\u780c\\u5668\\u6c14\\u8fc4\\u5f03\\u6c7d\\u6ce3\\u8bab\\u4e9f\\u4e93\\u573b\\u8291\\u840b\\u847a\\u5601\\u5c7a\\u5c90\\u6c54\\u6dc7\\u9a90\\u7eee\\u742a\\u7426\\u675e\\u6864\\u69ed\\u6b39\\u797a\\u61a9\\u789b\\u86f4\\u871e\\u7da6\\u7dae\\u8dbf\\u8e4a\\u9ccd\\u9e92\", \"qia\": \"\\u6390\\u6070\\u6d3d\\u845c\", \"qian\": \"\\u7275\\u6266\\u948e\\u94c5\\u5343\\u8fc1\\u7b7e\\u4edf\\u8c26\\u4e7e\\u9ed4\\u94b1\\u94b3\\u524d\\u6f5c\\u9063\\u6d45\\u8c34\\u5811\\u5d4c\\u6b20\\u6b49\\u4f65\\u9621\\u828a\\u82a1\\u8368\\u63ae\\u5c8d\\u60ad\\u614a\\u9a9e\\u6434\\u8930\\u7f31\\u6920\\u80b7\\u6106\\u94a4\\u8654\\u7b9d\", \"qiang\": \"\\u67aa\\u545b\\u8154\\u7f8c\\u5899\\u8537\\u5f3a\\u62a2\\u5af1\\u6a2f\\u6217\\u709d\\u9516\\u9535\\u956a\\u8941\\u8723\\u7f9f\\u8deb\\u8dc4\", \"qiao\": \"\\u6a47\\u9539\\u6572\\u6084\\u6865\\u77a7\\u4e54\\u4fa8\\u5de7\\u9798\\u64ac\\u7fd8\\u5ced\\u4fcf\\u7a8d\\u5281\\u8bee\\u8c2f\\u835e\\u6100\\u6194\\u7f32\\u6a35\\u6bf3\\u7857\\u8df7\\u9792\", \"qie\": \"\\u5207\\u8304\\u4e14\\u602f\\u7a83\\u90c4\\u553c\\u60ec\\u59be\\u6308\\u9532\\u7ba7\", \"qin\": \"\\u94a6\\u4fb5\\u4eb2\\u79e6\\u7434\\u52e4\\u82b9\\u64d2\\u79bd\\u5bdd\\u6c81\\u82a9\\u84c1\\u8572\\u63ff\\u5423\\u55ea\\u5659\\u6eb1\\u6a8e\\u8793\\u887e\", \"qing\": \"\\u9752\\u8f7b\\u6c22\\u503e\\u537f\\u6e05\\u64ce\\u6674\\u6c30\\u60c5\\u9877\\u8bf7\\u5e86\\u5029\\u82d8\\u570a\\u6aa0\\u78ec\\u873b\\u7f44\\u7b90\\u8b26\\u9cad\\u9ee5\", \"qiong\": \"\\u743c\\u7a77\\u909b\\u8315\\u7a79\\u7b47\\u928e\", \"qiu\": \"\\u79cb\\u4e18\\u90b1\\u7403\\u6c42\\u56da\\u914b\\u6cc5\\u4fc5\\u6c3d\\u5def\\u827d\\u72b0\\u6e6b\\u9011\\u9052\\u6978\\u8d47\\u9e20\\u866c\\u86af\\u8764\\u88d8\\u7cd7\\u9cc5\\u9f3d\", \"qu\": \"\\u8d8b\\u533a\\u86c6\\u66f2\\u8eaf\\u5c48\\u9a71\\u6e20\\u53d6\\u5a36\\u9f8b\\u8da3\\u53bb\\u8bce\\u52ac\\u8556\\u8627\\u5c96\\u8862\\u9612\\u74a9\\u89d1\\u6c0d\\u795b\\u78f2\\u766f\\u86d0\\u883c\\u9eb4\\u77bf\\u9ee2\", \"quan\": \"\\u5708\\u98a7\\u6743\\u919b\\u6cc9\\u5168\\u75ca\\u62f3\\u72ac\\u5238\\u529d\\u8be0\\u8343\\u737e\\u609b\\u7efb\\u8f81\\u754e\\u94e8\\u8737\\u7b4c\\u9b08\", \"que\": \"\\u7f3a\\u7094\\u7638\\u5374\\u9e4a\\u69b7\\u786e\\u96c0\\u9619\\u60ab\", \"qun\": \"\\u88d9\\u7fa4\\u9021\", \"ran\": \"\\u7136\\u71c3\\u5189\\u67d3\\u82d2\\u9aef\", \"rang\": \"\\u74e4\\u58e4\\u6518\\u56b7\\u8ba9\\u79b3\\u7a70\", \"rao\": \"\\u9976\\u6270\\u7ed5\\u835b\\u5a06\\u6861\", \"ruo\": \"\\u60f9\\u82e5\\u5f31\", \"re\": \"\\u70ed\\u504c\", \"ren\": \"\\u58ec\\u4ec1\\u4eba\\u5fcd\\u97e7\\u4efb\\u8ba4\\u5203\\u598a\\u7eab\\u4ede\\u834f\\u845a\\u996a\\u8f6b\\u7a14\\u887d\", \"reng\": \"\\u6254\\u4ecd\", \"ri\": \"\\u65e5\", \"rong\": \"\\u620e\\u8338\\u84c9\\u8363\\u878d\\u7194\\u6eb6\\u5bb9\\u7ed2\\u5197\\u5d58\\u72e8\\u7f1b\\u6995\\u877e\", \"rou\": \"\\u63c9\\u67d4\\u8089\\u7cc5\\u8e42\\u97a3\", \"ru\": \"\\u8339\\u8815\\u5112\\u5b7a\\u5982\\u8fb1\\u4e73\\u6c5d\\u5165\\u8925\\u84d0\\u85b7\\u5685\\u6d33\\u6ebd\\u6fe1\\u94f7\\u8966\\u98a5\", \"ruan\": \"\\u8f6f\\u962e\\u670a\", \"rui\": \"\\u854a\\u745e\\u9510\\u82ae\\u8564\\u777f\\u868b\", \"run\": \"\\u95f0\\u6da6\", \"sa\": \"\\u6492\\u6d12\\u8428\\u5345\\u4ee8\\u6332\\u98d2\", \"sai\": \"\\u816e\\u9cc3\\u585e\\u8d5b\\u567b\", \"san\": \"\\u4e09\\u53c1\\u4f1e\\u6563\\u5f61\\u9993\\u6c35\\u6bf5\\u7cc1\\u9730\", \"sang\": \"\\u6851\\u55d3\\u4e27\\u6421\\u78c9\\u98a1\", \"sao\": \"\\u6414\\u9a9a\\u626b\\u5ac2\\u57fd\\u81ca\\u7619\\u9ccb\", \"se\": \"\\u745f\\u8272\\u6da9\\u556c\\u94e9\\u94ef\\u7a51\", \"sen\": \"\\u68ee\", \"seng\": \"\\u50e7\", \"sha\": \"\\u838e\\u7802\\u6740\\u5239\\u6c99\\u7eb1\\u50bb\\u5565\\u715e\\u810e\\u6b43\\u75e7\\u88df\\u970e\\u9ca8\", \"shai\": \"\\u7b5b\\u6652\\u917e\", \"shan\": \"\\u73ca\\u82eb\\u6749\\u5c71\\u5220\\u717d\\u886b\\u95ea\\u9655\\u64c5\\u8d61\\u81b3\\u5584\\u6c55\\u6247\\u7f2e\\u5261\\u8baa\\u912f\\u57cf\\u829f\\u6f78\\u59d7\\u9a9f\\u81bb\\u9490\\u759d\\u87ee\\u8222\\u8dda\\u9cdd\", \"shang\": \"\\u5892\\u4f24\\u5546\\u8d4f\\u664c\\u4e0a\\u5c1a\\u88f3\\u57a7\\u7ef1\\u6b87\\u71b5\\u89de\", \"shao\": \"\\u68a2\\u634e\\u7a0d\\u70e7\\u828d\\u52fa\\u97f6\\u5c11\\u54e8\\u90b5\\u7ecd\\u52ad\\u82d5\\u6f72\\u86f8\\u7b24\\u7b72\\u8244\", \"she\": \"\\u5962\\u8d4a\\u86c7\\u820c\\u820d\\u8d66\\u6444\\u5c04\\u6151\\u6d89\\u793e\\u8bbe\\u538d\\u4f58\\u731e\\u7572\\u9e9d\", \"shen\": \"\\u7837\\u7533\\u547b\\u4f38\\u8eab\\u6df1\\u5a20\\u7ec5\\u795e\\u6c88\\u5ba1\\u5a76\\u751a\\u80be\\u614e\\u6e17\\u8bdc\\u8c02\\u5432\\u54c2\\u6e16\\u6939\\u77e7\\u8703\", \"sheng\": \"\\u58f0\\u751f\\u7525\\u7272\\u5347\\u7ef3\\u7701\\u76db\\u5269\\u80dc\\u5723\\u4e1e\\u6e11\\u5ab5\\u771a\\u7b19\", \"shi\": \"\\u5e08\\u5931\\u72ee\\u65bd\\u6e7f\\u8bd7\\u5c38\\u8671\\u5341\\u77f3\\u62fe\\u65f6\\u4ec0\\u98df\\u8680\\u5b9e\\u8bc6\\u53f2\\u77e2\\u4f7f\\u5c4e\\u9a76\\u59cb\\u5f0f\\u793a\\u58eb\\u4e16\\u67ff\\u4e8b\\u62ed\\u8a93\\u901d\\u52bf\\u662f\\u55dc\\u566c\\u9002\\u4ed5\\u4f8d\\u91ca\\u9970\\u6c0f\\u5e02\\u6043\\u5ba4\\u89c6\\u8bd5\\u8c25\\u57d8\\u83b3\\u84cd\\u5f11\\u5511\\u9963\\u8f7c\\u8006\\u8d33\\u70bb\\u793b\\u94c8\\u94ca\\u87ab\\u8210\\u7b6e\\u8c55\\u9ca5\\u9cba\", \"shou\": \"\\u6536\\u624b\\u9996\\u5b88\\u5bff\\u6388\\u552e\\u53d7\\u7626\\u517d\\u624c\\u72e9\\u7ef6\\u824f\", \"shu\": \"\\u852c\\u67a2\\u68b3\\u6b8a\\u6292\\u8f93\\u53d4\\u8212\\u6dd1\\u758f\\u4e66\\u8d4e\\u5b70\\u719f\\u85af\\u6691\\u66d9\\u7f72\\u8700\\u9ecd\\u9f20\\u5c5e\\u672f\\u8ff0\\u6811\\u675f\\u620d\\u7ad6\\u5885\\u5eb6\\u6570\\u6f31\\u6055\\u500f\\u587e\\u83fd\\u5fc4\\u6cad\\u6d91\\u6f8d\\u59dd\\u7ebe\\u6bf9\\u8167\\u6bb3\\u956f\\u79eb\\u9e6c\", \"shua\": \"\\u5237\\u800d\\u5530\\u6dae\", \"shuai\": \"\\u6454\\u8870\\u7529\\u5e05\\u87c0\", \"shuan\": \"\\u6813\\u62f4\\u95e9\", \"shuang\": \"\\u971c\\u53cc\\u723d\\u5b40\", \"shui\": \"\\u8c01\\u6c34\\u7761\\u7a0e\", \"shun\": \"\\u542e\\u77ac\\u987a\\u821c\\u6042\", \"shuo\": \"\\u8bf4\\u7855\\u6714\\u70c1\\u84b4\\u6420\\u55cd\\u6fef\\u5981\\u69ca\\u94c4\", \"si\": \"\\u65af\\u6495\\u5636\\u601d\\u79c1\\u53f8\\u4e1d\\u6b7b\\u8086\\u5bfa\\u55e3\\u56db\\u4f3a\\u4f3c\\u9972\\u5df3\\u53ae\\u4fdf\\u5155\\u83e5\\u549d\\u6c5c\\u6cd7\\u6f8c\\u59d2\\u9a77\\u7f0c\\u7940\\u7960\\u9536\\u9e36\\u801c\\u86f3\\u7b25\", \"song\": \"\\u677e\\u8038\\u6002\\u9882\\u9001\\u5b8b\\u8bbc\\u8bf5\\u51c7\\u83d8\\u5d27\\u5d69\\u5fea\\u609a\\u6dde\\u7ae6\", \"sou\": \"\\u641c\\u8258\\u64de\\u55fd\\u53df\\u55d6\\u55fe\\u998a\\u6eb2\\u98d5\\u778d\\u953c\\u878b\", \"su\": \"\\u82cf\\u9165\\u4fd7\\u7d20\\u901f\\u7c9f\\u50f3\\u5851\\u6eaf\\u5bbf\\u8bc9\\u8083\\u5919\\u8c21\\u850c\\u55c9\\u612b\\u7c0c\\u89eb\\u7a23\", \"suan\": \"\\u9178\\u849c\\u7b97\", \"sui\": \"\\u867d\\u968b\\u968f\\u7ee5\\u9ad3\\u788e\\u5c81\\u7a57\\u9042\\u96a7\\u795f\\u84d1\\u51ab\\u8c07\\u6fc9\\u9083\\u71e7\\u772d\\u7762\", \"sun\": \"\\u5b59\\u635f\\u7b0b\\u836a\\u72f2\\u98e7\\u69ab\\u8de3\\u96bc\", \"suo\": \"\\u68ad\\u5506\\u7f29\\u7410\\u7d22\\u9501\\u6240\\u5522\\u55e6\\u5a11\\u686b\\u7743\\u7fa7\", \"ta\": \"\\u584c\\u4ed6\\u5b83\\u5979\\u5854\\u736d\\u631e\\u8e4b\\u8e0f\\u95fc\\u6ebb\\u9062\\u69bb\\u6c93\", \"tai\": \"\\u80ce\\u82d4\\u62ac\\u53f0\\u6cf0\\u915e\\u592a\\u6001\\u6c70\\u90b0\\u85b9\\u80bd\\u70b1\\u949b\\u8dc6\\u9c90\", \"tan\": \"\\u574d\\u644a\\u8d2a\\u762b\\u6ee9\\u575b\\u6a80\\u75f0\\u6f6d\\u8c2d\\u8c08\\u5766\\u6bef\\u8892\\u78b3\\u63a2\\u53f9\\u70ad\\u90ef\\u8548\\u6619\\u94bd\\u952c\\u8983\", \"tang\": \"\\u6c64\\u5858\\u642a\\u5802\\u68e0\\u819b\\u5510\\u7cd6\\u50a5\\u9967\\u6e8f\\u746d\\u94f4\\u9557\\u8025\\u8797\\u87b3\\u7fb0\\u91a3\", \"thang\": \"\\u5018\\u8eba\\u6dcc\", \"theng\": \"\\u8d9f\\u70eb\", \"tao\": \"\\u638f\\u6d9b\\u6ed4\\u7ee6\\u8404\\u6843\\u9003\\u6dd8\\u9676\\u8ba8\\u5957\\u6311\\u9f17\\u5555\\u97ec\\u9955\", \"te\": \"\\u7279\", \"teng\": \"\\u85e4\\u817e\\u75bc\\u8a8a\\u6ed5\", \"ti\": \"\\u68af\\u5254\\u8e22\\u9511\\u63d0\\u9898\\u8e44\\u557c\\u4f53\\u66ff\\u568f\\u60d5\\u6d95\\u5243\\u5c49\\u8351\\u608c\\u9016\\u7ee8\\u7f07\\u9e48\\u88fc\\u918d\", \"tian\": \"\\u5929\\u6dfb\\u586b\\u7530\\u751c\\u606c\\u8214\\u8146\\u63ad\\u5fdd\\u9617\\u6b84\\u754b\\u94bf\\u86ba\", \"tiao\": \"\\u6761\\u8fe2\\u773a\\u8df3\\u4f7b\\u7967\\u94eb\\u7a95\\u9f86\\u9ca6\", \"tie\": \"\\u8d34\\u94c1\\u5e16\\u841c\\u992e\", \"ting\": \"\\u5385\\u542c\\u70c3\\u6c40\\u5ef7\\u505c\\u4ead\\u5ead\\u633a\\u8247\\u839b\\u8476\\u5a77\\u6883\\u8713\\u9706\", \"tong\": \"\\u901a\\u6850\\u916e\\u77b3\\u540c\\u94dc\\u5f64\\u7ae5\\u6876\\u6345\\u7b52\\u7edf\\u75db\\u4f5f\\u50ee\\u4edd\\u833c\\u55f5\\u6078\\u6f7c\\u783c\", \"tou\": \"\\u5077\\u6295\\u5934\\u900f\\u4ea0\", \"tu\": \"\\u51f8\\u79c3\\u7a81\\u56fe\\u5f92\\u9014\\u6d82\\u5c60\\u571f\\u5410\\u5154\\u580d\\u837c\\u83df\\u948d\\u9174\", \"tuan\": \"\\u6e4d\\u56e2\\u7583\", \"tui\": \"\\u63a8\\u9893\\u817f\\u8715\\u892a\\u9000\\u5fd2\\u717a\", \"tun\": \"\\u541e\\u5c6f\\u81c0\\u9968\\u66be\\u8c5a\\u7a80\", \"tuo\": \"\\u62d6\\u6258\\u8131\\u9e35\\u9640\\u9a6e\\u9a7c\\u692d\\u59a5\\u62d3\\u553e\\u4e47\\u4f57\\u5768\\u5eb9\\u6cb1\\u67dd\\u7823\\u7ba8\\u8204\\u8dce\\u9f0d\", \"wa\": \"\\u6316\\u54c7\\u86d9\\u6d3c\\u5a03\\u74e6\\u889c\\u4f64\\u5a32\\u817d\", \"wai\": \"\\u6b6a\\u5916\", \"wan\": \"\\u8c4c\\u5f2f\\u6e7e\\u73a9\\u987d\\u4e38\\u70f7\\u5b8c\\u7897\\u633d\\u665a\\u7696\\u60cb\\u5b9b\\u5a49\\u4e07\\u8155\\u525c\\u8284\\u82cb\\u83c0\\u7ea8\\u7efe\\u742c\\u8118\\u7579\\u873f\\u7ba2\", \"wang\": \"\\u6c6a\\u738b\\u4ea1\\u6789\\u7f51\\u5f80\\u65fa\\u671b\\u5fd8\\u5984\\u7f54\\u5c22\\u60d8\\u8f8b\\u9b4d\", \"wei\": \"\\u5a01\\u5dcd\\u5fae\\u5371\\u97e6\\u8fdd\\u6845\\u56f4\\u552f\\u60df\\u4e3a\\u6f4d\\u7ef4\\u82c7\\u840e\\u59d4\\u4f1f\\u4f2a\\u5c3e\\u7eac\\u672a\\u851a\\u5473\\u754f\\u80c3\\u5582\\u9b4f\\u4f4d\\u6e2d\\u8c13\\u5c09\\u6170\\u536b\\u502d\\u504e\\u8bff\\u9688\\u8473\\u8587\\u5e0f\\u5e37\\u5d34\\u5d6c\\u7325\\u732c\\u95f1\\u6ca9\\u6d27\\u6da0\\u9036\\u5a13\\u73ae\\u97ea\\u8ece\\u709c\\u7168\\u71a8\\u75ff\\u8249\\u9c94\", \"wen\": \"\\u761f\\u6e29\\u868a\\u6587\\u95fb\\u7eb9\\u543b\\u7a33\\u7d0a\\u95ee\\u520e\\u6120\\u960c\\u6c76\\u74ba\\u97eb\\u6b81\\u96ef\", \"weng\": \"\\u55e1\\u7fc1\\u74ee\\u84ca\\u8579\", \"wo\": \"\\u631d\\u8717\\u6da1\\u7a9d\\u6211\\u65a1\\u5367\\u63e1\\u6c83\\u83b4\\u5e44\\u6e25\\u674c\\u809f\\u9f8c\", \"wu\": \"\\u5deb\\u545c\\u94a8\\u4e4c\\u6c61\\u8bec\\u5c4b\\u65e0\\u829c\\u68a7\\u543e\\u5434\\u6bcb\\u6b66\\u4e94\\u6342\\u5348\\u821e\\u4f0d\\u4fae\\u575e\\u620a\\u96fe\\u6664\\u7269\\u52ff\\u52a1\\u609f\\u8bef\\u5140\\u4ef5\\u9622\\u90ac\\u572c\\u82b4\\u5e91\\u6003\\u5fe4\\u6d6f\\u5be4\\u8fd5\\u59a9\\u9a9b\\u727e\\u7110\\u9e49\\u9e5c\\u8708\\u92c8\\u9f2f\", \"xi\": \"\\u6614\\u7199\\u6790\\u897f\\u7852\\u77fd\\u6670\\u563b\\u5438\\u9521\\u727a\\u7a00\\u606f\\u5e0c\\u6089\\u819d\\u5915\\u60dc\\u7184\\u70ef\\u6eaa\\u6c50\\u7280\\u6a84\\u88ad\\u5e2d\\u4e60\\u5ab3\\u559c\\u94e3\\u6d17\\u7cfb\\u9699\\u620f\\u7ec6\\u50d6\\u516e\\u96b0\\u90d7\\u831c\\u8478\\u84f0\\u595a\\u550f\\u5f99\\u9969\\u960b\\u6d60\\u6dc5\\u5c63\\u5b09\\u73ba\\u6a28\\u66e6\\u89cb\\u6b37\\u71b9\\u798a\\u79a7\\u94b8\\u7699\\u7a78\\u8725\\u87cb\\u823e\\u7fb2\\u7c9e\\u7fd5\\u91af\\u9f37\", \"xia\": \"\\u778e\\u867e\\u5323\\u971e\\u8f96\\u6687\\u5ce1\\u4fa0\\u72ed\\u4e0b\\u53a6\\u590f\\u5413\\u6380\\u846d\\u55c4\\u72ce\\u9050\\u7455\\u7856\\u7615\\u7f45\\u9ee0\", \"xian\": \"\\u9528\\u5148\\u4ed9\\u9c9c\\u7ea4\\u54b8\\u8d24\\u8854\\u8237\\u95f2\\u6d8e\\u5f26\\u5acc\\u663e\\u9669\\u73b0\\u732e\\u53bf\\u817a\\u9985\\u7fa1\\u5baa\\u9677\\u9650\\u7ebf\\u51bc\\u85d3\\u5c98\\u7303\\u66b9\\u5a34\\u6c19\\u7946\\u9e47\\u75eb\\u86ac\\u7b45\\u7c7c\\u9170\\u8df9\", \"xiang\": \"\\u76f8\\u53a2\\u9576\\u9999\\u7bb1\\u8944\\u6e58\\u4e61\\u7fd4\\u7965\\u8be6\\u60f3\\u54cd\\u4eab\\u9879\\u5df7\\u6a61\\u50cf\\u5411\\u8c61\\u8297\\u8459\\u9977\\u5ea0\\u9aa7\\u7f03\\u87d3\\u9c9e\\u98e8\", \"xiao\": \"\\u8427\\u785d\\u9704\\u524a\\u54ee\\u56a3\\u9500\\u6d88\\u5bb5\\u6dc6\\u6653\\u5c0f\\u5b5d\\u6821\\u8096\\u5578\\u7b11\\u6548\\u54d3\\u54bb\\u5d24\\u6f47\\u900d\\u9a81\\u7ee1\\u67ad\\u67b5\\u7b71\\u7bab\\u9b48\", \"xie\": \"\\u6954\\u4e9b\\u6b47\\u874e\\u978b\\u534f\\u631f\\u643a\\u90aa\\u659c\\u80c1\\u8c10\\u5199\\u68b0\\u5378\\u87f9\\u61c8\\u6cc4\\u6cfb\\u8c22\\u5c51\\u5055\\u4eb5\\u52f0\\u71ee\\u85a4\\u64b7\\u5ee8\\u7023\\u9082\\u7ec1\\u7f2c\\u69ad\\u698d\\u6b59\\u8e9e\", \"xin\": \"\\u85aa\\u82af\\u950c\\u6b23\\u8f9b\\u65b0\\u5ffb\\u5fc3\\u4fe1\\u8845\\u56df\\u99a8\\u8398\\u6b46\\u94fd\\u946b\", \"xing\": \"\\u661f\\u8165\\u7329\\u60fa\\u5174\\u5211\\u578b\\u5f62\\u90a2\\u884c\\u9192\\u5e78\\u674f\\u6027\\u59d3\\u9649\\u8347\\u8365\\u64e4\\u60bb\\u784e\", \"xiong\": \"\\u5144\\u51f6\\u80f8\\u5308\\u6c79\\u96c4\\u718a\\u828e\", \"xiu\": \"\\u4f11\\u4fee\\u7f9e\\u673d\\u55c5\\u9508\\u79c0\\u8896\\u7ee3\\u83a0\\u5cab\\u9990\\u5ea5\\u9e3a\\u8c85\\u9af9\", \"xu\": \"\\u589f\\u620c\\u9700\\u865a\\u5618\\u987b\\u5f90\\u8bb8\\u84c4\\u9157\\u53d9\\u65ed\\u5e8f\\u755c\\u6064\\u7d6e\\u5a7f\\u7eea\\u7eed\\u8bb4\\u8be9\\u5729\\u84ff\\u6035\\u6d2b\\u6e86\\u987c\\u6829\\u7166\\u7809\\u76f1\\u80e5\\u7cc8\\u9191\", \"xuan\": \"\\u8f69\\u55a7\\u5ba3\\u60ac\\u65cb\\u7384\\u9009\\u7663\\u7729\\u7eda\\u5107\\u8c16\\u8431\\u63ce\\u9994\\u6ceb\\u6d35\\u6e32\\u6f29\\u7487\\u6966\\u6684\\u70ab\\u714a\\u78b9\\u94c9\\u955f\\u75c3\", \"xue\": \"\\u9774\\u859b\\u5b66\\u7a74\\u96ea\\u8840\\u5671\\u6cf6\\u9cd5\", \"xun\": \"\\u52cb\\u718f\\u5faa\\u65ec\\u8be2\\u5bfb\\u9a6f\\u5de1\\u6b89\\u6c5b\\u8bad\\u8baf\\u900a\\u8fc5\\u5dfd\\u57d9\\u8340\\u85b0\\u5ccb\\u5f87\\u6d54\\u66db\\u7aa8\\u91ba\\u9c9f\", \"ya\": \"\\u538b\\u62bc\\u9e26\\u9e2d\\u5440\\u4e2b\\u82bd\\u7259\\u869c\\u5d16\\u8859\\u6daf\\u96c5\\u54d1\\u4e9a\\u8bb6\\u4f22\\u63e0\\u5416\\u5c88\\u8fd3\\u5a05\\u740a\\u6860\\u6c29\\u7811\\u775a\\u75d6\", \"yan\": \"\\u7109\\u54bd\\u9609\\u70df\\u6df9\\u76d0\\u4e25\\u7814\\u8712\\u5ca9\\u5ef6\\u8a00\\u989c\\u960e\\u708e\\u6cbf\\u5944\\u63a9\\u773c\\u884d\\u6f14\\u8273\\u5830\\u71d5\\u538c\\u781a\\u96c1\\u5501\\u5f66\\u7130\\u5bb4\\u8c1a\\u9a8c\\u53a3\\u9765\\u8d5d\\u4fe8\\u5043\\u5156\\u8ba0\\u8c33\\u90fe\\u9122\\u82ab\\u83f8\\u5d26\\u6079\\u95eb\\u960f\\u6d07\\u6e6e\\u6edf\\u598d\\u5ae3\\u7430\\u664f\\u80ed\\u814c\\u7131\\u7f68\\u7b75\\u917d\\u9b47\\u990d\\u9f39\", \"yang\": \"\\u6b83\\u592e\\u9e2f\\u79e7\\u6768\\u626c\\u4f6f\\u75a1\\u7f8a\\u6d0b\\u9633\\u6c27\\u4ef0\\u75d2\\u517b\\u6837\\u6f3e\\u5f89\\u600f\\u6cf1\\u7080\\u70ca\\u6059\\u86d8\\u9785\", \"yao\": \"\\u9080\\u8170\\u5996\\u7476\\u6447\\u5c27\\u9065\\u7a91\\u8c23\\u59da\\u54ac\\u8200\\u836f\\u8981\\u8000\\u592d\\u723b\\u5406\\u5d3e\\u5fad\\u7039\\u5e7a\\u73e7\\u6773\\u66dc\\u80b4\\u9e5e\\u7a88\\u7e47\\u9cd0\", \"ye\": \"\\u6930\\u564e\\u8036\\u7237\\u91ce\\u51b6\\u4e5f\\u9875\\u6396\\u4e1a\\u53f6\\u66f3\\u814b\\u591c\\u6db2\\u8c12\\u90ba\\u63f6\\u9980\\u6654\\u70e8\\u94d8\", \"yi\": \"\\u4e00\\u58f9\\u533b\\u63d6\\u94f1\\u4f9d\\u4f0a\\u8863\\u9890\\u5937\\u9057\\u79fb\\u4eea\\u80f0\\u7591\\u6c82\\u5b9c\\u59e8\\u5f5d\\u6905\\u8681\\u501a\\u5df2\\u4e59\\u77e3\\u4ee5\\u827a\\u6291\\u6613\\u9091\\u5c79\\u4ebf\\u5f79\\u81c6\\u9038\\u8084\\u75ab\\u4ea6\\u88d4\\u610f\\u6bc5\\u5fc6\\u4e49\\u76ca\\u6ea2\\u8be3\\u8bae\\u8c0a\\u8bd1\\u5f02\\u7ffc\\u7fcc\\u7ece\\u5208\\u5293\\u4f7e\\u8bd2\\u572a\\u572f\\u57f8\\u61ff\\u82e1\\u858f\\u5f08\\u5955\\u6339\\u5f0b\\u5453\\u54a6\\u54bf\\u566b\\u5cc4\\u5db7\\u7317\\u9974\\u603f\\u6021\\u6092\\u6f2a\\u8fe4\\u9a7f\\u7f22\\u6baa\\u8d3b\\u65d6\\u71a0\\u9487\\u9552\\u9571\\u75cd\\u7617\\u7654\\u7fca\\u8864\\u8734\\u8223\\u7fbf\\u7ff3\\u914f\\u9edf\", \"yin\": \"\\u8335\\u836b\\u56e0\\u6bb7\\u97f3\\u9634\\u59fb\\u541f\\u94f6\\u6deb\\u5bc5\\u996e\\u5c39\\u5f15\\u9690\\u5370\\u80e4\\u911e\\u5819\\u831a\\u5591\\u72fa\\u5924\\u6c24\\u94df\\u763e\\u8693\\u972a\\u9f88\", \"ying\": \"\\u82f1\\u6a31\\u5a74\\u9e70\\u5e94\\u7f28\\u83b9\\u8424\\u8425\\u8367\\u8747\\u8fce\\u8d62\\u76c8\\u5f71\\u9896\\u786c\\u6620\\u5b34\\u90e2\\u8314\\u83ba\\u8426\\u6484\\u5624\\u81ba\\u6ee2\\u6f46\\u701b\\u745b\\u748e\\u6979\\u9e66\\u763f\\u988d\\u7f42\", \"yo\": \"\\u54df\\u5537\", \"yong\": \"\\u62e5\\u4f63\\u81c3\\u75c8\\u5eb8\\u96cd\\u8e0a\\u86f9\\u548f\\u6cf3\\u6d8c\\u6c38\\u607f\\u52c7\\u7528\\u4fd1\\u58c5\\u5889\\u6175\\u9095\\u955b\\u752c\\u9cd9\\u9954\", \"you\": \"\\u5e7d\\u4f18\\u60a0\\u5fe7\\u5c24\\u7531\\u90ae\\u94c0\\u72b9\\u6cb9\\u6e38\\u9149\\u6709\\u53cb\\u53f3\\u4f51\\u91c9\\u8bf1\\u53c8\\u5e7c\\u5363\\u6538\\u4f91\\u83b8\\u5466\\u56ff\\u5ba5\\u67da\\u7337\\u7256\\u94d5\\u75a3\\u8763\\u9c7f\\u9edd\\u9f2c\", \"yu\": \"\\u8fc2\\u6de4\\u4e8e\\u76c2\\u6986\\u865e\\u611a\\u8206\\u4f59\\u4fde\\u903e\\u9c7c\\u6109\\u6e1d\\u6e14\\u9685\\u4e88\\u5a31\\u96e8\\u4e0e\\u5c7f\\u79b9\\u5b87\\u8bed\\u7fbd\\u7389\\u57df\\u828b\\u90c1\\u5401\\u9047\\u55bb\\u5cea\\u5fa1\\u6108\\u6b32\\u72f1\\u80b2\\u8a89\\u6d74\\u5bd3\\u88d5\\u9884\\u8c6b\\u9a6d\\u79ba\\u6bd3\\u4f1b\\u4fe3\\u8c00\\u8c15\\u8438\\u84e3\\u63c4\\u5581\\u5704\\u5709\\u5d5b\\u72f3\\u996b\\u5ebe\\u9608\\u59aa\\u59a4\\u7ea1\\u745c\\u6631\\u89ce\\u8174\\u6b24\\u65bc\\u715c\\u71e0\\u807f\\u94b0\\u9e46\\u7610\\u7600\\u7ab3\\u8753\\u7afd\\u8201\\u96e9\\u9f89\", \"yuan\": \"\\u9e33\\u6e0a\\u51a4\\u5143\\u57a3\\u8881\\u539f\\u63f4\\u8f95\\u56ed\\u5458\\u5706\\u733f\\u6e90\\u7f18\\u8fdc\\u82d1\\u613f\\u6028\\u9662\\u586c\\u6c85\\u5a9b\\u7457\\u6a7c\\u7230\\u7722\\u9e22\\u8788\\u9f0b\", \"yue\": \"\\u66f0\\u7ea6\\u8d8a\\u8dc3\\u94a5\\u5cb3\\u7ca4\\u6708\\u60a6\\u9605\\u9fa0\\u6a3e\\u5216\\u94ba\", \"yun\": \"\\u8018\\u4e91\\u90e7\\u5300\\u9668\\u5141\\u8fd0\\u8574\\u915d\\u6655\\u97f5\\u5b55\\u90d3\\u82b8\\u72c1\\u607d\\u7ead\\u6b92\\u6600\\u6c32\", \"za\": \"\\u531d\\u7838\\u6742\\u62f6\\u5482\", \"zai\": \"\\u683d\\u54c9\\u707e\\u5bb0\\u8f7d\\u518d\\u5728\\u54b1\\u5d3d\\u753e\", \"zan\": \"\\u6512\\u6682\\u8d5e\\u74d2\\u661d\\u7c2a\\u7ccc\\u8db1\\u933e\", \"zang\": \"\\u8d43\\u810f\\u846c\\u5958\\u6215\\u81e7\", \"zao\": \"\\u906d\\u7cdf\\u51ff\\u85fb\\u67a3\\u65e9\\u6fa1\\u86a4\\u8e81\\u566a\\u9020\\u7682\\u7076\\u71e5\\u5523\\u7f2b\", \"ze\": \"\\u8d23\\u62e9\\u5219\\u6cfd\\u4ec4\\u8d5c\\u5567\\u8fee\\u6603\\u7b2e\\u7ba6\\u8234\", \"zei\": \"\\u8d3c\", \"zen\": \"\\u600e\\u8c2e\", \"zeng\": \"\\u589e\\u618e\\u66fe\\u8d60\\u7f2f\\u7511\\u7f7e\\u9503\", \"zha\": \"\\u624e\\u55b3\\u6e23\\u672d\\u8f67\\u94e1\\u95f8\\u7728\\u6805\\u69a8\\u548b\\u4e4d\\u70b8\\u8bc8\\u63f8\\u5412\\u54a4\\u54f3\\u600d\\u781f\\u75c4\\u86b1\\u9f44\", \"zhai\": \"\\u6458\\u658b\\u5b85\\u7a84\\u503a\\u5be8\\u7826\", \"zhan\": \"\\u77bb\\u6be1\\u8a79\\u7c98\\u6cbe\\u76cf\\u65a9\\u8f97\\u5d2d\\u5c55\\u8638\\u6808\\u5360\\u6218\\u7ad9\\u6e5b\\u7efd\\u8c35\\u640c\\u65c3\", \"zhang\": \"\\u6a1f\\u7ae0\\u5f70\\u6f33\\u5f20\\u638c\\u6da8\\u6756\\u4e08\\u5e10\\u8d26\\u4ed7\\u80c0\\u7634\\u969c\\u4ec9\\u9123\\u5e5b\\u5d82\\u7350\\u5adc\\u748b\\u87d1\", \"zhao\": \"\\u62db\\u662d\\u627e\\u6cbc\\u8d75\\u7167\\u7f69\\u5146\\u8087\\u53ec\\u722a\\u8bcf\\u68f9\\u948a\\u7b0a\", \"zhe\": \"\\u906e\\u6298\\u54f2\\u86f0\\u8f99\\u8005\\u9517\\u8517\\u8fd9\\u6d59\\u8c2a\\u966c\\u67d8\\u8f84\\u78d4\\u9e67\\u891a\\u8707\\u8d6d\", \"zhen\": \"\\u73cd\\u659f\\u771f\\u7504\\u7827\\u81fb\\u8d1e\\u9488\\u4fa6\\u6795\\u75b9\\u8bca\\u9707\\u632f\\u9547\\u9635\\u7f1c\\u6862\\u699b\\u8f78\\u8d48\\u80d7\\u6715\\u796f\\u755b\\u9e29\", \"zheng\": \"\\u84b8\\u6323\\u7741\\u5f81\\u72f0\\u4e89\\u6014\\u6574\\u62ef\\u6b63\\u653f\\u5e27\\u75c7\\u90d1\\u8bc1\\u8be4\\u5ce5\\u94b2\\u94ee\\u7b5d\", \"zhi\": \"\\u829d\\u679d\\u652f\\u5431\\u8718\\u77e5\\u80a2\\u8102\\u6c41\\u4e4b\\u7ec7\\u804c\\u76f4\\u690d\\u6b96\\u6267\\u503c\\u4f84\\u5740\\u6307\\u6b62\\u8dbe\\u53ea\\u65e8\\u7eb8\\u5fd7\\u631a\\u63b7\\u81f3\\u81f4\\u7f6e\\u5e1c\\u5cd9\\u5236\\u667a\\u79e9\\u7a1a\\u8d28\\u7099\\u75d4\\u6ede\\u6cbb\\u7a92\\u536e\\u965f\\u90c5\\u57f4\\u82b7\\u646d\\u5e19\\u5fee\\u5f58\\u54ab\\u9a98\\u6809\\u67b3\\u6800\\u684e\\u8f75\\u8f7e\\u6534\\u8d3d\\u81a3\\u7949\\u7957\\u9ef9\\u96c9\\u9e37\\u75e3\\u86ed\\u7d77\\u916f\\u8dd6\\u8e2c\\u8e2f\\u8c78\\u89ef\", \"zhong\": \"\\u4e2d\\u76c5\\u5fe0\\u949f\\u8877\\u7ec8\\u79cd\\u80bf\\u91cd\\u4ef2\\u4f17\\u51a2\\u953a\\u87bd\\u8202\\u822f\\u8e35\", \"zhou\": \"\\u821f\\u5468\\u5dde\\u6d32\\u8bcc\\u7ca5\\u8f74\\u8098\\u5e1a\\u5492\\u76b1\\u5b99\\u663c\\u9aa4\\u5544\\u7740\\u501c\\u8bf9\\u836e\\u9b3b\\u7ea3\\u80c4\\u78a1\\u7c40\\u8233\\u914e\\u9cb7\", \"zhu\": \"\\u73e0\\u682a\\u86db\\u6731\\u732a\\u8bf8\\u8bdb\\u9010\\u7af9\\u70db\\u716e\\u62c4\\u77a9\\u5631\\u4e3b\\u8457\\u67f1\\u52a9\\u86c0\\u8d2e\\u94f8\\u7b51\\u4f4f\\u6ce8\\u795d\\u9a7b\\u4f2b\\u4f8f\\u90be\\u82ce\\u8331\\u6d19\\u6e1a\\u6f74\\u9a7a\\u677c\\u69e0\\u6a65\\u70b7\\u94e2\\u75b0\\u7603\\u86b0\\u7afa\\u7bb8\\u7fe5\\u8e85\\u9e88\", \"zhua\": \"\\u6293\", \"zhuai\": \"\\u62fd\", \"zhuan\": \"\\u4e13\\u7816\\u8f6c\\u64b0\\u8d5a\\u7bc6\\u629f\\u556d\\u989b\", \"zhuang\": \"\\u6869\\u5e84\\u88c5\\u5986\\u649e\\u58ee\\u72b6\\u4e2c\", \"zhui\": \"\\u690e\\u9525\\u8ffd\\u8d58\\u5760\\u7f00\\u8411\\u9a93\\u7f12\", \"zhun\": \"\\u8c06\\u51c6\", \"zhuo\": \"\\u6349\\u62d9\\u5353\\u684c\\u7422\\u8301\\u914c\\u707c\\u6d4a\\u502c\\u8bfc\\u5ef4\\u855e\\u64e2\\u555c\\u6d5e\\u6dbf\\u6753\\u712f\\u799a\\u65ab\", \"zi\": \"\\u5179\\u54a8\\u8d44\\u59ff\\u6ecb\\u6dc4\\u5b5c\\u7d2b\\u4ed4\\u7c7d\\u6ed3\\u5b50\\u81ea\\u6e0d\\u5b57\\u8c18\\u5d6b\\u59ca\\u5b73\\u7f01\\u6893\\u8f8e\\u8d40\\u6063\\u7726\\u9531\\u79ed\\u8014\\u7b2b\\u7ca2\\u89dc\\u8a3e\\u9cbb\\u9aed\", \"zong\": \"\\u9b03\\u68d5\\u8e2a\\u5b97\\u7efc\\u603b\\u7eb5\\u8159\\u7cbd\", \"zou\": \"\\u90b9\\u8d70\\u594f\\u63cd\\u9139\\u9cb0\", \"zu\": \"\\u79df\\u8db3\\u5352\\u65cf\\u7956\\u8bc5\\u963b\\u7ec4\\u4fce\\u83f9\\u5550\\u5f82\\u9a75\\u8e74\", \"zuan\": \"\\u94bb\\u7e82\\u6525\\u7f35\", \"zui\": \"\\u5634\\u9189\\u6700\\u7f6a\", \"zun\": \"\\u5c0a\\u9075\\u6499\\u6a3d\\u9cdf\", \"zuo\": \"\\u6628\\u5de6\\u4f50\\u67de\\u505a\\u4f5c\\u5750\\u5ea7\\u961d\\u963c\\u80d9\\u795a\\u9162\", \"cou\": \"\\u85ae\\u6971\\u8f8f\\u8160\", \"nang\": \"\\u652e\\u54dd\\u56d4\\u9995\\u66e9\", \"o\": \"\\u5594\", \"dia\": \"\\u55f2\", \"chuai\": \"\\u562c\\u81aa\\u8e39\", \"cen\": \"\\u5c91\\u6d94\", \"diu\": \"\\u94e5\", \"nou\": \"\\u8028\", \"fou\": \"\\u7f36\", \"bia\": \"\\u9adf\" };\r\nconst polyphone: any = { \"19969\": \"DZ\", \"19975\": \"WM\", \"19988\": \"QJ\", \"20048\": \"YL\", \"20056\": \"SC\", \"20060\": \"NM\", \"20094\": \"QG\", \"20127\": \"QJ\", \"20167\": \"QC\", \"20193\": \"YG\", \"20250\": \"KH\", \"20256\": \"ZC\", \"20282\": \"SC\", \"20285\": \"QJG\", \"20291\": \"TD\", \"20314\": \"YD\", \"20340\": \"NE\", \"20375\": \"TD\", \"20389\": \"YJ\", \"20391\": \"CZ\", \"20415\": \"PB\", \"20446\": \"YS\", \"20447\": \"SQ\", \"20504\": \"TC\", \"20608\": \"KG\", \"20854\": \"QJ\", \"20857\": \"ZC\", \"20911\": \"PF\", \"20985\": \"AW\", \"21032\": \"PB\", \"21048\": \"XQ\", \"21049\": \"SC\", \"21089\": \"YS\", \"21119\": \"JC\", \"21242\": \"SB\", \"21273\": \"SC\", \"21305\": \"YP\", \"21306\": \"QO\", \"21330\": \"ZC\", \"21333\": \"SDC\", \"21345\": \"QK\", \"21378\": \"CA\", \"21397\": \"SC\", \"21414\": \"XS\", \"21442\": \"SC\", \"21477\": \"JG\", \"21480\": \"TD\", \"21484\": \"ZS\", \"21494\": \"YX\", \"21505\": \"YX\", \"21512\": \"HG\", \"21523\": \"XH\", \"21537\": \"PB\", \"21542\": \"PF\", \"21549\": \"KH\", \"21571\": \"E\", \"21574\": \"DA\", \"21588\": \"TD\", \"21589\": \"O\", \"21618\": \"ZC\", \"21621\": \"KHA\", \"21632\": \"ZJ\", \"21654\": \"KG\", \"21679\": \"LKG\", \"21683\": \"KH\", \"21710\": \"A\", \"21719\": \"YH\", \"21734\": \"WOE\", \"21769\": \"A\", \"21780\": \"WN\", \"21804\": \"XH\", \"21834\": \"A\", \"21899\": \"ZD\", \"21903\": \"RN\", \"21908\": \"WO\", \"21939\": \"ZC\", \"21956\": \"SA\", \"21964\": \"YA\", \"21970\": \"TD\", \"22003\": \"A\", \"22031\": \"JG\", \"22040\": \"XS\", \"22060\": \"ZC\", \"22066\": \"ZC\", \"22079\": \"MH\", \"22129\": \"XJ\", \"22179\": \"XA\", \"22237\": \"NJ\", \"22244\": \"TD\", \"22280\": \"JQ\", \"22300\": \"YH\", \"22313\": \"XW\", \"22331\": \"YQ\", \"22343\": \"YJ\", \"22351\": \"PH\", \"22395\": \"DC\", \"22412\": \"TD\", \"22484\": \"PB\", \"22500\": \"PB\", \"22534\": \"ZD\", \"22549\": \"DH\", \"22561\": \"PB\", \"22612\": \"TD\", \"22771\": \"KQ\", \"22831\": \"HB\", \"22841\": \"JG\", \"22855\": \"QJ\", \"22865\": \"XQ\", \"23013\": \"ML\", \"23081\": \"WM\", \"23487\": \"SX\", \"23558\": \"QJ\", \"23561\": \"YW\", \"23586\": \"YW\", \"23614\": \"YW\", \"23615\": \"SN\", \"23631\": \"PB\", \"23646\": \"ZS\", \"23663\": \"ZT\", \"23673\": \"YG\", \"23762\": \"TD\", \"23769\": \"ZS\", \"23780\": \"QJ\", \"23884\": \"QK\", \"24055\": \"XH\", \"24113\": \"DC\", \"24162\": \"ZC\", \"24191\": \"GA\", \"24273\": \"QJ\", \"24324\": \"NL\", \"24377\": \"TD\", \"24378\": \"QJ\", \"24439\": \"PF\", \"24554\": \"ZS\", \"24683\": \"TD\", \"24694\": \"WE\", \"24733\": \"LK\", \"24925\": \"TN\", \"25094\": \"ZG\", \"25100\": \"XQ\", \"25103\": \"XH\", \"25153\": \"PB\", \"25170\": \"PB\", \"25179\": \"KG\", \"25203\": \"PB\", \"25240\": \"ZS\", \"25282\": \"FB\", \"25303\": \"NA\", \"25324\": \"KG\", \"25341\": \"ZY\", \"25373\": \"WZ\", \"25375\": \"XJ\", \"25384\": \"A\", \"25457\": \"A\", \"25528\": \"SD\", \"25530\": \"SC\", \"25552\": \"TD\", \"25774\": \"ZC\", \"25874\": \"ZC\", \"26044\": \"YW\", \"26080\": \"WM\", \"26292\": \"PB\", \"26333\": \"PB\", \"26355\": \"ZY\", \"26366\": \"CZ\", \"26397\": \"ZC\", \"26399\": \"QJ\", \"26415\": \"ZS\", \"26451\": \"SB\", \"26526\": \"ZC\", \"26552\": \"JG\", \"26561\": \"TD\", \"26588\": \"JG\", \"26597\": \"CZ\", \"26629\": \"ZS\", \"26638\": \"YL\", \"26646\": \"XQ\", \"26653\": \"KG\", \"26657\": \"XJ\", \"26727\": \"HG\", \"26894\": \"ZC\", \"26937\": \"ZS\", \"26946\": \"ZC\", \"26999\": \"KJ\", \"27099\": \"KJ\", \"27449\": \"YQ\", \"27481\": \"XS\", \"27542\": \"ZS\", \"27663\": \"ZS\", \"27748\": \"TS\", \"27784\": \"SC\", \"27788\": \"ZD\", \"27795\": \"TD\", \"27812\": \"O\", \"27850\": \"PB\", \"27852\": \"MB\", \"27895\": \"SL\", \"27898\": \"PL\", \"27973\": \"QJ\", \"27981\": \"KH\", \"27986\": \"HX\", \"27994\": \"XJ\", \"28044\": \"YC\", \"28065\": \"WG\", \"28177\": \"SM\", \"28267\": \"QJ\", \"28291\": \"KH\", \"28337\": \"ZQ\", \"28463\": \"TL\", \"28548\": \"DC\", \"28601\": \"TD\", \"28689\": \"PB\", \"28805\": \"JG\", \"28820\": \"QG\", \"28846\": \"PB\", \"28952\": \"TD\", \"28975\": \"ZC\", \"29100\": \"A\", \"29325\": \"QJ\", \"29575\": \"SL\", \"29602\": \"FB\", \"30010\": \"TD\", \"30044\": \"CX\", \"30058\": \"PF\", \"30091\": \"YSP\", \"30111\": \"YN\", \"30229\": \"XJ\", \"30427\": \"SC\", \"30465\": \"SX\", \"30631\": \"YQ\", \"30655\": \"QJ\", \"30684\": \"QJG\", \"30707\": \"SD\", \"30729\": \"XH\", \"30796\": \"LG\", \"30917\": \"PB\", \"31074\": \"NM\", \"31085\": \"JZ\", \"31109\": \"SC\", \"31181\": \"ZC\", \"31192\": \"MLB\", \"31293\": \"JQ\", \"31400\": \"YX\", \"31584\": \"YJ\", \"31896\": \"ZN\", \"31909\": \"ZY\", \"31995\": \"XJ\", \"32321\": \"PF\", \"32327\": \"ZY\", \"32418\": \"HG\", \"32420\": \"XQ\", \"32421\": \"HG\", \"32438\": \"LG\", \"32473\": \"GJ\", \"32488\": \"TD\", \"32521\": \"QJ\", \"32527\": \"PB\", \"32562\": \"ZSQ\", \"32564\": \"JZ\", \"32735\": \"ZD\", \"32793\": \"PB\", \"33071\": \"PF\", \"33098\": \"XL\", \"33100\": \"YA\", \"33152\": \"PB\", \"33261\": \"CX\", \"33324\": \"BP\", \"33333\": \"TD\", \"33406\": \"YA\", \"33426\": \"WM\", \"33432\": \"PB\", \"33445\": \"JG\", \"33486\": \"ZN\", \"33493\": \"TS\", \"33507\": \"QJ\", \"33540\": \"QJ\", \"33544\": \"ZC\", \"33564\": \"XQ\", \"33617\": \"YT\", \"33632\": \"QJ\", \"33636\": \"XH\", \"33637\": \"YX\", \"33694\": \"WG\", \"33705\": \"PF\", \"33728\": \"YW\", \"33882\": \"SR\", \"34067\": \"WM\", \"34074\": \"YW\", \"34121\": \"QJ\", \"34255\": \"ZC\", \"34259\": \"XL\", \"34425\": \"JH\", \"34430\": \"XH\", \"34485\": \"KH\", \"34503\": \"YS\", \"34532\": \"HG\", \"34552\": \"XS\", \"34558\": \"YE\", \"34593\": \"ZL\", \"34660\": \"YQ\", \"34892\": \"XH\", \"34928\": \"SC\", \"34999\": \"QJ\", \"35048\": \"PB\", \"35059\": \"SC\", \"35098\": \"ZC\", \"35203\": \"TQ\", \"35265\": \"JX\", \"35299\": \"JX\", \"35782\": \"SZ\", \"35828\": \"YS\", \"35830\": \"E\", \"35843\": \"TD\", \"35895\": \"YG\", \"35977\": \"MH\", \"36158\": \"JG\", \"36228\": \"QJ\", \"36426\": \"XQ\", \"36466\": \"DC\", \"36710\": \"JC\", \"36711\": \"ZYG\", \"36767\": \"PB\", \"36866\": \"SK\", \"36951\": \"YW\", \"37034\": \"YX\", \"37063\": \"XH\", \"37218\": \"ZC\", \"37325\": \"ZC\", \"38063\": \"PB\", \"38079\": \"TD\", \"38085\": \"QY\", \"38107\": \"DC\", \"38116\": \"TD\", \"38123\": \"YD\", \"38224\": \"HG\", \"38241\": \"XTC\", \"38271\": \"ZC\", \"38415\": \"YE\", \"38426\": \"KH\", \"38461\": \"YD\", \"38463\": \"AE\", \"38466\": \"PB\", \"38477\": \"XJ\", \"38518\": \"YT\", \"38551\": \"WK\", \"38585\": \"ZC\", \"38704\": \"XS\", \"38739\": \"LJ\", \"38761\": \"GJ\", \"38808\": \"SQ\", \"39048\": \"JG\", \"39049\": \"XJ\", \"39052\": \"HG\", \"39076\": \"CZ\", \"39271\": \"XT\", \"39534\": \"TD\", \"39552\": \"TD\", \"39584\": \"PB\", \"39647\": \"SB\", \"39730\": \"LG\", \"39748\": \"TPB\", \"40109\": \"ZQ\", \"40479\": \"ND\", \"40516\": \"HG\", \"40536\": \"HG\", \"40583\": \"QJ\", \"40765\": \"YQ\", \"40784\": \"QJ\", \"40840\": \"YK\", \"40863\": \"QJG\" };\r\nconst options: any = {\r\n checkPolyphone: false,\r\n charcase: \"default\",\r\n};\r\nconst pinYin = {\r\n // 提取拼音, 返回首字母大写形式\r\n getFullChars: (str: any) => {\r\n let result = \"\",\r\n name;\r\n if (!str) {\r\n return result;\r\n }\r\n const reg = new RegExp(\"[a-zA-Z0-9- ]\");\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n const ch = str.substr(i, 1),\r\n unicode = ch.charCodeAt(0);\r\n if (unicode > 40869 || unicode < 19968) {\r\n result += ch;\r\n } else {\r\n name = pinYin._getFullChar(ch);\r\n if (name !== false) {\r\n result += name;\r\n }\r\n }\r\n }\r\n return result.toLocaleLowerCase();\r\n },\r\n // 提取首字母,返回大写形式\r\n getCamelChars: (str: any) => {\r\n if (typeof str !== \"string\") {\r\n return \"Z\";\r\n }\r\n const chars = []; //保存中间结果的数组\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n //获得unicode码\r\n const ch = str.charAt(i);\r\n //检查该unicode码是否在处理范围之内,在则返回该码对映汉字的拼音首字母,不在则调用其它函数处理\r\n chars.push(pinYin._getChar(ch));\r\n }\r\n //处理arrResult,返回所有可能的拼音首字母串数组\r\n return pinYin._getResult(chars).toLocaleLowerCase();\r\n },\r\n // 提取拼音\r\n _getFullChar: (str: any) => {\r\n for (const key in full_dict) {\r\n if (-1 !== full_dict[key].indexOf(str)) {\r\n return pinYin._capitalize(key);\r\n break;\r\n }\r\n }\r\n return false;\r\n },\r\n // 首字母大写\r\n _capitalize: (str: any) => {\r\n if (str.length > 0) {\r\n const first = str.substr(0, 1).toUpperCase();\r\n const spare = str.substr(1, str.length);\r\n return first + spare;\r\n }\r\n },\r\n _getChar: (ch: any) => {\r\n const unicode = ch.charCodeAt(0);\r\n //如果不在汉字处理范围之内,返回原字符,也可以调用自己的处理函数\r\n if (unicode > 40869 || unicode < 19968) return ch; //dealWithOthers(ch);\r\n //检查是否是多音字,是按多音字处理,不是就直接在strChineseFirstPY字符串中找对应的首字母\r\n if (!options.checkPolyphone) return char_dict.charAt(unicode - 19968);\r\n return polyphone[unicode] ? polyphone[unicode] : char_dict.charAt(unicode - 19968);\r\n },\r\n _getResult: (chars: any) => {\r\n if (!options.checkPolyphone) return chars.join(\"\");\r\n let result = [\"\"];\r\n for (let i = 0, len = chars.length; i < len; i++) {\r\n const str = chars[i],\r\n strlen = str.length;\r\n if (strlen === 1) {\r\n for (let j = 0; j < result.length; j++) {\r\n result[j] += str;\r\n }\r\n } else {\r\n const swap1 = result.slice(0);\r\n result = [];\r\n for (let j = 0; j < strlen; j++) {\r\n //复制一个相同的arrRslt\r\n const swap2 = swap1.slice(0);\r\n //把当前字符str[k]添加到每个元素末尾\r\n for (let k = 0; k < swap2.length; k++) {\r\n swap2[k] += str.charAt(j);\r\n }\r\n //把复制并修改后的数组连接到arrRslt上\r\n result = result.concat(swap2);\r\n }\r\n }\r\n }\r\n return result;\r\n },\r\n};\r\nexport default pinYin;\r\n","\r\nimport { Inject, Options, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport { Control, DesFormControl, DesFormLayout, FormEnum } from \"@/domain\";\r\nimport { FormFieldClass, FormFieldType, ValidateRules, VerticalArrangement, ZoomType } from \"@/constants\";\r\nimport generateGridTemplateColumns from \"../../filtres/generate-grid-template-columns.filter\";\r\nimport generateGridColumnEnd from \"../../filtres/generate-grid-column-end.filter\";\r\n\r\nimport { AutoComplete, Button, Cascader, Checkbox, CheckboxGroup, Col, DatePicker, Divider, Dropdown, Form, FormItem, Input, InputNumber, InputPassword, Menu, Popconfirm, Popover, Radio, RadioGroup, Rate, Row, Select, Slider, Switch, Textarea, Timeline, TimelineItem, TimePicker, Tooltip, TreeSelect, Upload, notification } from \"ant-design-vue\";\r\nimport { apiService, formBeanUtilsService } from \"@/services\";\r\nimport { ProvideInjectData } from \"@/domain/ProvideInjectData\";\r\n\r\nimport amountCapitalization from \"../../filtres/amount-capitalization.filter\";\r\nimport { CustomFormat, FormControl, ValidateResult } from \"../../domain\";\r\nimport { BuiltLabel, ControlFormatType, FormBusAttr, MoneyUnit, SubmittedType, SupportUploadType } from \"../../constants/enum\";\r\nimport { extractOptions } from \"@/filtres/extract-options.filter\";\r\nimport zoomMultiple from \"../../filtres/zoom-multiple.filter\";\r\nimport switchEnumConvert from \"../../filtres/switch-enum-convert.filter\";\r\nimport StretchText from \"./StretchText.vue\";\r\nimport { HISTORY_SVG_XML, SUBMITTED_SVG_XML } from \"../../constants/encode-assets/svg\";\r\nimport { ClockCircleOutlined, DownOutlined, EyeInvisibleOutlined, EyeOutlined, PlusOutlined, QuestionCircleOutlined, SearchOutlined, UploadOutlined, ExclamationCircleOutlined } from \"@ant-design/icons-vue\";\r\nimport { h } from \"vue\";\r\n\r\nimport dayjs from \"dayjs\";\r\nimport locale from \"ant-design-vue/es/date-picker/locale/zh_CN\";\r\nimport pinYin from \"../../../public/js/pinyin\";\r\nimport { FormApi } from \"@/core\";\r\n\r\n@Options({\r\n name: \"DvFormLayout\",\r\n filters: {\r\n amountCapitalization: amountCapitalization,\r\n switchEnumConvert: switchEnumConvert,\r\n zoomMultiple: zoomMultiple,\r\n },\r\n components: {\r\n StretchText,\r\n PlusOutlined,\r\n [Form.name]: Form,\r\n [FormItem.name]: FormItem,\r\n [Input.name]: Input,\r\n [Textarea.name]: Textarea,\r\n [AutoComplete.name]: AutoComplete,\r\n [InputNumber.name]: InputNumber,\r\n [Select.name]: Select,\r\n [Select.Option.displayName + \"\"]: Select.Option,\r\n [Select.OptGroup.displayName + \"\"]: Select.OptGroup,\r\n [Radio.name]: Radio,\r\n [RadioGroup.name]: RadioGroup,\r\n [Checkbox.name]: Checkbox,\r\n [CheckboxGroup.name]: CheckboxGroup,\r\n [Switch.name]: Switch,\r\n [TimePicker.name]: TimePicker,\r\n [DatePicker.name]: DatePicker,\r\n [Slider.name]: Slider,\r\n [AutoComplete.name]: AutoComplete,\r\n [Cascader.name]: Cascader,\r\n [TreeSelect.name]: TreeSelect,\r\n [Tooltip.name]: Tooltip,\r\n [InputPassword.name]: InputPassword,\r\n [Popover.name]: Popover,\r\n [Popconfirm.name]: Popconfirm,\r\n [Timeline.name]: Timeline,\r\n [TimelineItem.name]: TimelineItem,\r\n [Rate.name]: Rate,\r\n [Dropdown.name]: Dropdown,\r\n [Menu.name]: Menu,\r\n [Menu.Item.name]: Menu.Item,\r\n [Upload.name]: Upload,\r\n [Button.name]: Button,\r\n [Divider.name]: Divider,\r\n [DatePicker.MonthPicker.name]: DatePicker.MonthPicker,\r\n [StretchText.name]: StretchText,\r\n [Row.name]: Row,\r\n [Col.name]: Col,\r\n EyeOutlined,\r\n EyeInvisibleOutlined,\r\n VNodes: (_, { attrs }) => {\r\n return attrs.vnodes;\r\n },\r\n QuestionCircleOutlined,\r\n ClockCircleOutlined,\r\n DownOutlined,\r\n UploadOutlined,\r\n SearchOutlined,\r\n },\r\n})\r\nexport default class DvFormLayout extends Vue {\r\n locale = locale; // 国际化\r\n submittedSvg = SUBMITTED_SVG_XML; // 上报图标\r\n historySvg = HISTORY_SVG_XML; // 历史记录图标\r\n\r\n numberPopoverVisible = false; // 是否开启数字气泡弹窗\r\n validateResult: ValidateResult = {}; // 校验规则\r\n metaRefresh: any; // 刷新标识\r\n defaultMoneyUnit: any = {}; // 默认单位\r\n zoomType = ZoomType; // 缩放类型\r\n builtLabel = BuiltLabel; // 内置前/后置标签\r\n traddayList: any = localStorage.getItem(\"traddayList\") || JSON.stringify([]); // 交易日集合\r\n weekdayList: any = localStorage.getItem(\"weekdayList\") || JSON.stringify([]); // 节假日集合\r\n workdayList: any = localStorage.getItem(\"workdayList\") || JSON.stringify([]); // 工作日集合\r\n amountCapitalization = amountCapitalization; // 大写转换\r\n zoomMultiple = zoomMultiple; // 缩放\r\n isAfterClick = false; // 后缀图标是否被点击了 2026年4月17日 15:21:53\r\n private lastClickTime = 0; // 上次点击时间戳 2026年5月15日 12:12:53\r\n filterOption(value: any, item: any) {\r\n if (!item.title) {\r\n return false;\r\n }\r\n return item.title.indexOf(value) > -1 || pinYin.getCamelChars(item.title).indexOf(value) > -1 || pinYin.getFullChars(item.title).indexOf(value) > -1;\r\n }\r\n\r\n @Prop() index: number | undefined;\r\n @Prop() control: Control | any;\r\n @Prop() parentControl: Control | undefined;\r\n @Prop({ type: Object, default: () => ({}) }) customFormats: { [key: string]: CustomFormat } | undefined;\r\n @Prop({ type: Array, default: () => [] }) linkList: any | undefined; // 需要添加超链接点击事件数组 例:['cifNo', 'prodBaseNo']\r\n @Inject() provideInjectData: ProvideInjectData | any;\r\n readonly formFieldClass: FormEnum = FormFieldClass; // 表单字段分类\r\n readonly formFieldType: FormEnum = FormFieldType; // 表单字段类型\r\n\r\n @Watch(\"defaultMoneyUnit\", { immediate: true })\r\n onDefaultMoneyUnitHandler(newVal: any): void {\r\n if (newVal.code != null) {\r\n switch (newVal.code) {\r\n case MoneyUnit.Yuan.code:\r\n (this.controlAttr as DesFormControl).zoomMultiple = 1;\r\n break;\r\n case MoneyUnit.TenThousandYuan.code:\r\n (this.controlAttr as DesFormControl).zoomMultiple = 10000;\r\n break;\r\n case MoneyUnit.HundredMillionYuan.code:\r\n (this.controlAttr as DesFormControl).zoomMultiple = 100000000;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 校验反馈\r\n * @author ChenRui\r\n * @date 2021/2/26 14:24\r\n */\r\n @Watch(\"provideInjectData.refreshCheckFeedbackFlag\")\r\n @Watch(\"control.formControl.refreshValidate\")\r\n onValidationFeedbackHandle(): void {\r\n this.validateResult = this.formControl.validate();\r\n }\r\n\r\n /**\r\n * @description: 表单校验\r\n * @author ChenRui\r\n * @date 2022/4/6 14:12\r\n */\r\n @Watch(\"provideInjectData.formValidateStateResetMark\")\r\n onFormValidateStateResetMarkHandle(): void {\r\n this.validateResult = {};\r\n }\r\n /**\r\n * @Description 表单数据反显回调(data:Object { key: 元素码值, value: 元素值 })\r\n * @Author JiangTao\r\n * @Date 2023-10-07 下午 05:22\r\n */\r\n linkClick(data: any): void {\r\n this.$emit(\"linkClick\", data);\r\n }\r\n\r\n @Watch(\"control.controlAttr.isHideControl\")\r\n onHideControl() {\r\n this.$nextTick(() => {\r\n this.$emit(\"fixFormLayout\");\r\n });\r\n }\r\n /**\r\n * @description: 输入框形态\r\n * @author ChenRui\r\n * @date 2022/5/7 17:48\r\n */\r\n get inputShape(): string {\r\n if ((this.controlAttr as DesFormControl).isPasswordBox) {\r\n return \"a-input-password\";\r\n } else if ((this.controlAttr as DesFormControl).enableAutoComplete) {\r\n return \"a-auto-complete\";\r\n } else {\r\n return \"a-input\";\r\n }\r\n }\r\n\r\n /**\r\n * @description: 获取控件对象\r\n * @author ChenRui\r\n * @date 2021/1/27 11:07\r\n */\r\n get formControl(): FormControl {\r\n if (this.control && this.control.formControl) {\r\n // 初始化部分数据\r\n this.initFormControlData();\r\n return this.control.formControl;\r\n }\r\n return new FormControl();\r\n }\r\n\r\n /**\r\n * @description: 获取控件配置参数\r\n * @author ChenRui\r\n * @date 2021/1/5 11:26\r\n */\r\n get controlAttr(): DesFormControl | DesFormLayout {\r\n return this.control?.controlAttr as any;\r\n }\r\n\r\n /**\r\n * @description: 获取控件配置参数\r\n * @author ChenRui\r\n * @date 2021/1/5 11:26\r\n */\r\n get parentControlAttr(): DesFormLayout {\r\n return this.parentControl?.controlAttr as DesFormLayout;\r\n }\r\n\r\n /**\r\n * @description: 获取布局方式\r\n * @author ChenRui\r\n * @date 2020/12/30 18:19\r\n */\r\n get layout(): string {\r\n for (const propName of Object.keys(VerticalArrangement)) {\r\n if ((VerticalArrangement as any)[propName][\"code\"] === (this.controlAttr as DesFormLayout).gridVerticalArrangement) {\r\n return (VerticalArrangement as any)[propName][\"value\"];\r\n }\r\n }\r\n return VerticalArrangement.AlignRight.value;\r\n }\r\n\r\n /**\r\n * @description: 当前输入的字符长度\r\n * @author ChenRui\r\n * @date 2021/4/20 15:55\r\n */\r\n get currentCharacterCount(): any {\r\n return this.control!.formControl && this.control!.formControl.value ? this.control!.formControl.value.length : 0;\r\n }\r\n\r\n /**\r\n * @description: 最大字数限制\r\n * @author ChenRui\r\n * @date 2021/4/20 15:38\r\n */\r\n get maxCharacterCount(): any {\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n if (controlAttr.verificationRules && controlAttr.verificationRules.length > 0) {\r\n const verificationRule: any = controlAttr.verificationRules.find((item: any) => item.ruleType === ValidateRules.MaxTextLength.code);\r\n if (verificationRule != null && verificationRule.ruleContent) {\r\n return Number(verificationRule.ruleContent);\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * @description: 数字格式化\r\n * @author ChenRui\r\n * @date 2021/1/14 16:30\r\n */\r\n get numberFormatter(): any {\r\n const controlAttr: any = this.controlAttr as DesFormControl;\r\n const controlFormatType: string = controlAttr.formatType ? controlAttr.formatType : ControlFormatType.GENERAL.code;\r\n return (value: any) => {\r\n let val: any = value != undefined ? String(value) : \"\";\r\n switch (controlFormatType) {\r\n case ControlFormatType.GENERAL.code:\r\n case ControlFormatType.AMOUNT_OF_MONEY.code:\r\n if (controlFormatType === ControlFormatType.AMOUNT_OF_MONEY.code && val != null && controlAttr.thousandthPercentileFormat) {\r\n // 校验小数位不做千分位格式化处理\r\n if (val.indexOf(\".\") > -1) {\r\n val = `${val}`.split(\".\")[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\") + \".\" + `${val}`.split(\".\")[1];\r\n } else {\r\n val = `${val}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n }\r\n if (controlAttr.zoomType !== ZoomType.automatic.code && val != null && val != \"\" && controlAttr.unit) {\r\n // val = `${val}${controlAttr.unit}`;\r\n val = `${val}`;\r\n }\r\n return val;\r\n case ControlFormatType.BANK_CARD_NUMBER.code:\r\n if (val != null) {\r\n val = val.replace(/[\\s]/g, \"\").replace(/(\\d{4})(?=\\d)/g, \"$1 \");\r\n }\r\n return val;\r\n case ControlFormatType.CELL_PHONE_NUMBER.code:\r\n if (val != null) {\r\n val = val.replace(/\\D/g, \"\").substr(0, 11); // 不允许输入非数字字符,超过11位数字截取前11位\r\n const len = val.length;\r\n if (len > 3 && len < 8) {\r\n val = val.replace(/^(\\d{3})/g, \"$1 \");\r\n } else if (len >= 8) {\r\n val = val.replace(/^(\\d{3})(\\d{4})/g, \"$1 $2 \");\r\n }\r\n }\r\n return val;\r\n case ControlFormatType.LANDLINE_NUMBER.code:\r\n return val;\r\n default: {\r\n return value;\r\n }\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * @description: 数字反格式化\r\n * @author ChenRui\r\n * @date 2021/1/14 16:31\r\n */\r\n get numberParser(): any {\r\n const controlAttr: any = this.controlAttr as DesFormControl;\r\n const zoomType: string = controlAttr.formatType ? controlAttr.formatType : ControlFormatType.GENERAL.code;\r\n return (value: any) => {\r\n let val: any = value;\r\n switch (zoomType) {\r\n case ControlFormatType.GENERAL.code:\r\n case ControlFormatType.AMOUNT_OF_MONEY.code:\r\n if (zoomType === ControlFormatType.AMOUNT_OF_MONEY.code && val != null && controlAttr.thousandthPercentileFormat) {\r\n val = val.replace(/\\$\\s?|(,*)/g, \"\");\r\n }\r\n if (controlAttr.zoomType !== ZoomType.automatic.code && val != null && val != \"\" && controlAttr.unit) {\r\n const replaceUnit: string[] = controlAttr.unit.split(\"\");\r\n replaceUnit.forEach((item) => {\r\n val = val.replace(item, \"\");\r\n });\r\n }\r\n return val;\r\n case ControlFormatType.BANK_CARD_NUMBER.code:\r\n case ControlFormatType.CELL_PHONE_NUMBER.code:\r\n if (val != null) {\r\n val = val.replace(/\\s/g, \"\");\r\n }\r\n return val;\r\n case ControlFormatType.LANDLINE_NUMBER.code:\r\n return val;\r\n default: {\r\n return val;\r\n }\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * @description: label 宽度\r\n * @author ChenRui\r\n * @date 2021/1/5 11:59\r\n */\r\n get labelSpanWidth(): any {\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n const parentControlAttr: DesFormLayout = this.parentControlAttr as DesFormLayout;\r\n if (this.isMobileBrowser()) {\r\n return \"120px\";\r\n }\r\n if (controlAttr.titleWidth) {\r\n return controlAttr.titleWidth;\r\n } else if (parentControlAttr.labelSpan) {\r\n return parentControlAttr.labelSpan;\r\n } else {\r\n return this.provideInjectData.labelSpan;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 标签后是否显示冒号\r\n * @author ZPFly\r\n * @date 2022/7/15 10:54\r\n */\r\n get colon(): boolean {\r\n return this.provideInjectData.colon;\r\n }\r\n\r\n /**\r\n * @description: 最大宽度设置\r\n * @author ChenRui\r\n * @date 2021/7/8 16:39\r\n */\r\n get controlSpanMaxWidth(): any {\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n const parentControlAttr: DesFormLayout = this.parentControlAttr as DesFormLayout;\r\n if (controlAttr.controlWidth) {\r\n return controlAttr.controlWidth;\r\n } else if (parentControlAttr.controlSpan) {\r\n return parentControlAttr.controlSpan;\r\n } else if (this.provideInjectData.controlSpan) {\r\n return this.provideInjectData.controlSpan;\r\n } else {\r\n return \"none\";\r\n }\r\n }\r\n\r\n /**\r\n * @description: 控件宽度\r\n * @author ChenRui\r\n * @date 2021/1/5 15:11\r\n */\r\n get controlSpanWidth(): any {\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n const parentControlAttr: DesFormLayout = this.parentControlAttr as DesFormLayout;\r\n if (controlAttr.controlWidth) {\r\n return controlAttr.controlWidth;\r\n } else if (parentControlAttr.controlSpan) {\r\n return parentControlAttr.controlSpan;\r\n } else if (this.provideInjectData.controlSpan) {\r\n return this.provideInjectData.controlSpan;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n /**\r\n * @description: label 标签的文本对齐方式\r\n * @author ChenRui\r\n * @date 2021/1/5 11:59\r\n */\r\n get labelAlign(): string {\r\n for (const propName of Object.keys(VerticalArrangement)) {\r\n if ((VerticalArrangement as any)[propName][\"code\"] === (this.controlAttr as DesFormLayout).gridVerticalArrangement) {\r\n return (VerticalArrangement as any)[propName][\"textAlign\"];\r\n }\r\n }\r\n return VerticalArrangement.AlignRight.textAlign;\r\n }\r\n\r\n /**\r\n * @description: 获取金额转换单位\r\n * @author ChenRui\r\n * @date 2021/2/20 17:43\r\n */\r\n get moneyUnits(): any[] {\r\n const moneyUnits: any[] = [];\r\n const moneyUnit: any[] = formBeanUtilsService.parse((this.controlAttr as DesFormControl).moneyUnit);\r\n if ((this.controlAttr as DesFormControl).moneyUnit) {\r\n Object.values(MoneyUnit).forEach((item) => {\r\n if (moneyUnit.findIndex((it) => it === item.code) !== -1) {\r\n moneyUnits.push(item);\r\n }\r\n });\r\n }\r\n\r\n if (moneyUnits && moneyUnits.length > 0) {\r\n this.defaultMoneyUnit = moneyUnits[0];\r\n }\r\n return moneyUnits;\r\n }\r\n\r\n /**\r\n * @description: 单位缩放比例\r\n * @author ChenRui\r\n * @date 2022/5/7 10:31\r\n */\r\n get moneyUnitsIndentScale(): number {\r\n const moneyUnit: any = this.defaultMoneyUnit;\r\n if (moneyUnit != null && moneyUnit.code) {\r\n return Number(moneyUnit.code);\r\n }\r\n return 0;\r\n }\r\n\r\n /**\r\n * @description: 获取select、checkbox、radio可选项\r\n * @author ChenRui\r\n * @date 2020/12/2 14:36\r\n */\r\n get options(): any[] {\r\n return extractOptions(this.controlAttr);\r\n }\r\n\r\n /**\r\n * @description: 使用月份组件\r\n * @author ChenRui\r\n * @date 2021/5/19 16:12\r\n */\r\n get useMonthPicker(): boolean {\r\n const dateFormat: any = (this.controlAttr as DesFormControl).dateFormat;\r\n if (dateFormat && dateFormat.toLowerCase() === \"yyyy-mm\") {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * @description: 级联选择框\r\n * @author ChenRui\r\n * @date 2021/1/5 16:31\r\n */\r\n get cascaderOptions(): any[] {\r\n const value: any[] = this.options;\r\n let options: any[] = [];\r\n if (value && value.length > 0) {\r\n const items = formBeanUtilsService.copy(value);\r\n options = this.cascaderRecursion(items);\r\n }\r\n return options;\r\n }\r\n\r\n /**\r\n * @description: 树形下拉选项\r\n * @author ChenRui\r\n * @date 2021/1/5 16:44\r\n */\r\n get treeSelectOptions(): any[] {\r\n const value: any[] = this.options;\r\n console.log(value);\r\n if (value && value.length > 0) {\r\n const items = formBeanUtilsService.copy(value);\r\n this.treeSelectRecursion(items);\r\n return items;\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @description: 是否12小时制\r\n * @author ChenRui\r\n * @date 2021/1/18 10:54\r\n */\r\n get is12Hours(): boolean {\r\n return !!(this.controlAttr as DesFormControl).timeFormat && (this.controlAttr as DesFormControl).timeFormat.indexOf(\":ss\") < 0;\r\n }\r\n\r\n /**\r\n * @description: 是否添加反馈\r\n * @author ChenRui\r\n * @date 2021/1/21 10:43\r\n */\r\n get hasFeedback(): boolean {\r\n return this.control!.formControl != null && this.control!.formControl!.validates && this.control!.formControl!.validates.length > 0;\r\n }\r\n\r\n /**\r\n * @description: 是否必填,仅影响样式\r\n * @author ChenRui\r\n * @date 2021/1/21 10:50\r\n */\r\n get required(): boolean {\r\n if (this.hasFeedback && this.control!.formControl!.validates.findIndex((item: any) => String(item.name) === String(ValidateRules.Required.code)) !== -1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * @description: 格式化数据\r\n * @author ChenRui\r\n * @date 2021/1/8 11:30\r\n */\r\n get formatData(): string {\r\n this.metaRefresh = this.provideInjectData.metaRefresh; // 刷新标识\r\n let val = \"\";\r\n let data: any = this.control!.formControl!.value;\r\n let options: any[];\r\n let context: any[];\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n switch (this.control!.code) {\r\n case FormFieldType.Input.code:\r\n if (controlAttr.bindingPrefix) {\r\n val += controlAttr.bindingPrefix;\r\n }\r\n val += data || \"\";\r\n if (controlAttr.bindingSuffix) {\r\n val += controlAttr.bindingSuffix;\r\n }\r\n data = val;\r\n break;\r\n case FormFieldType.InputNumber.code:\r\n if (this.numberFormatter) {\r\n data = this.numberFormatter(data);\r\n }\r\n // 自动补0\r\n if (data && controlAttr.decimalPlaces != undefined && (controlAttr.decimalPlaces as any) !== \"\") {\r\n let index;\r\n if (data.indexOf(\".\") == -1) {\r\n index = controlAttr.decimalPlaces;\r\n data += \".\";\r\n } else {\r\n index = controlAttr.decimalPlaces - (data.length - 1 - data.indexOf(\".\"));\r\n }\r\n for (let i = 0; i < index; i++) {\r\n data += \"0\";\r\n }\r\n }\r\n // 金额后缀不依赖于是否设置了小数位\r\n if (controlAttr.zoomType !== ZoomType.automatic.code && data != null && data != \"\" && controlAttr.unit) {\r\n data = data.replace(controlAttr.unit, \"\");\r\n // data = `${data}${controlAttr.unit}`; // 后缀在后面统一展示 2023年9月22日15:49:08\r\n }\r\n return data;\r\n case FormFieldType.Select.code:\r\n case FormFieldType.Radio.code:\r\n if (data != null && Array.isArray(data)) {\r\n const context: string[] = [];\r\n this.options.find((item) => {\r\n for (let i = 0; i < data.length; i++) {\r\n if (item.value === data[i]) {\r\n context.push(item.title);\r\n }\r\n }\r\n });\r\n return context.join(\",\");\r\n } else {\r\n const option = this.options.find((item) => item.value === data);\r\n return option ? option.title : \"\";\r\n }\r\n case FormFieldType.Checkbox.code:\r\n options = data || [];\r\n context = [];\r\n options.forEach((it) => {\r\n this.options.find((item) => {\r\n if (item.value === it) {\r\n context.push(item.title);\r\n }\r\n });\r\n });\r\n return context.join(\" , \");\r\n case FormFieldType.Switch.code:\r\n if (data !== undefined) {\r\n if (data === true && controlAttr.onOpeningValue != undefined && controlAttr.onOpeningValue !== \"\") {\r\n return controlAttr.onOpeningValue;\r\n } else if (data === false && controlAttr.whenClosedValue != undefined && controlAttr.whenClosedValue !== \"\") {\r\n return controlAttr.whenClosedValue;\r\n } else {\r\n return data ? \"是\" : \"否\";\r\n }\r\n }\r\n return \"\";\r\n case FormFieldType.TimePicker.code:\r\n if (data != null) {\r\n return dayjs(data).format(controlAttr.timeFormat || \"HH:mm:ss\");\r\n }\r\n return \"\";\r\n case FormFieldType.DatePicker.code:\r\n if (data != null) {\r\n return dayjs(data).format(controlAttr.dateFormat || \"YYYY-MM-dd\");\r\n }\r\n return \"\";\r\n case FormFieldType.Cascader.code:\r\n if (data != null) {\r\n return this.cascaderContextRecursion(data, this.cascaderOptions);\r\n }\r\n return \"\";\r\n case FormFieldType.TreeSelect.code:\r\n if (data != null) {\r\n return this.treeSelectContextRecursion(data, this.treeSelectOptions);\r\n }\r\n return \"\";\r\n case FormFieldType.Custom.code:\r\n if (this.customFormats && this.customFormats[controlAttr.customFieldName]) {\r\n const customFormat: CustomFormat = this.customFormats[controlAttr.customFieldName];\r\n if (customFormat && customFormat.display) {\r\n return customFormat.display(data, controlAttr);\r\n }\r\n }\r\n }\r\n return data;\r\n }\r\n\r\n /**\r\n * @description: 支持的上传类型\r\n * @author ChenRui\r\n * @date 2021/4/25 11:50\r\n */\r\n get uploadType(): any {\r\n const controlAttr = this.controlAttr as DesFormControl;\r\n if (controlAttr.supportUploadType === SupportUploadType.Arbitrarily.code) {\r\n return undefined;\r\n } else if (controlAttr.supportUploadType === SupportUploadType.Custom.code) {\r\n return controlAttr.customUploadType;\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * @description: 下拉选项新增\r\n * @author ChenRui\r\n * @date 2021/1/14 20:05\r\n */\r\n selectAddItem(event: any): void {\r\n this.$emit(\"add-item\", event);\r\n /*const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n if (controlAttr != null) {\r\n if (controlAttr.isOptionType === OptionType.Fixed.code) {\r\n console.log(controlAttr.optionConfig);\r\n } else if (controlAttr.isOptionType === OptionType.Dynamic.code) {\r\n if (controlAttr.dynamicOptionType === DynamicOptionType.GeneralDictionary.code) {\r\n console.log(controlAttr.generalDictionaryOptions);\r\n }\r\n }\r\n }*/\r\n }\r\n\r\n /**\r\n * @description: 级联搜索\r\n * @author ChenRui\r\n * @date 2021/5/19 17:23\r\n */\r\n cascaderFilter(inputValue: any, path: any): any {\r\n return path.some((option: any) => option.label.toLowerCase().indexOf(inputValue.toLowerCase()) > -1);\r\n }\r\n\r\n /**\r\n * @description: 递归生成树形下拉选项\r\n * @author ChenRui\r\n * @date 2021/1/5 16:44\r\n */\r\n treeSelectRecursion(items: any[]): any[] {\r\n const options: any[] = [];\r\n items.forEach((item) => {\r\n item.disabled = false;\r\n item.key = item.value;\r\n if (item.children && item.children.length > 0) {\r\n if ((this.controlAttr as any).disableNonLeafNodes !== \"0\") {\r\n item.disabled = true; // LiuBo 2023年11月7日11:33:41 禁用非叶子节点\r\n }\r\n this.treeSelectRecursion(item.children);\r\n }\r\n });\r\n return options;\r\n }\r\n\r\n /**\r\n * @description: 级联递归\r\n * @author ChenRui\r\n * @date 2021/1/5 16:35\r\n */\r\n cascaderRecursion(items: any[]): any[] {\r\n const options: any[] = [];\r\n items.forEach((item) => {\r\n const option: any = {\r\n value: item.value,\r\n label: item.title,\r\n isLeaf: false,\r\n };\r\n options.push(option);\r\n if (item.children && item.children.length > 0) {\r\n option.children = this.cascaderRecursion(item.children);\r\n } else {\r\n option.isLeaf = true;\r\n }\r\n });\r\n return options;\r\n }\r\n\r\n /**\r\n * @description: 递归获取级联选项对应的文本\r\n * @author ChenRui\r\n * @date 2021/1/8 14:45\r\n */\r\n cascaderContextRecursion(val: any[], cascaderOptions: any[], index = 0): string {\r\n if (val && val.length > 0 && cascaderOptions && cascaderOptions.length > 0) {\r\n if (val.length > index) {\r\n const currentIndex = val[index];\r\n const cascaderOption = cascaderOptions.find((item) => item.value === currentIndex);\r\n if (cascaderOption != null) {\r\n let currentText = cascaderOption.label;\r\n if (val.length > index + 1) {\r\n const subText = this.cascaderContextRecursion(val, cascaderOption.children, index + 1);\r\n currentText += \" / \" + subText;\r\n }\r\n return currentText;\r\n }\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @description:\r\n * @author ChenRui\r\n * @date 2021/1/8 15:05\r\n */\r\n\r\n treeSelectContextRecursion(val: string, treeSelectOptions: any[]): string {\r\n if (val && treeSelectOptions && treeSelectOptions.length > 0) {\r\n for (let i = 0; i < treeSelectOptions.length; i++) {\r\n if (treeSelectOptions[i].value === val) {\r\n return treeSelectOptions[i].title;\r\n } else if (treeSelectOptions[i].children && treeSelectOptions[i].children.length > 0) {\r\n const subTitle: string = this.treeSelectContextRecursion(val, treeSelectOptions[i].children);\r\n if (subTitle) {\r\n return subTitle;\r\n }\r\n }\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @description: 是否为ie\r\n * @author ChenRui\r\n * @date 2021/3/25 14:44\r\n */\r\n get isIe(): boolean {\r\n return !!this.provideInjectData.widthCompatibleMode || !!window.ActiveXObject || \"ActiveXObject\" in window;\r\n }\r\n\r\n /**\r\n * @description: ie 兼容性宽度布局\r\n * @author ChenRui\r\n * @date 2021/3/25 12:53\r\n */\r\n get divWidthCompatibleToIe(): any {\r\n if (this.isIe) {\r\n const desFormLayout: DesFormLayout = this.parentControlAttr as DesFormLayout;\r\n const configIndex: number = this.index! % desFormLayout.gridColumnConfig.length; // 索引位置\r\n const proportion: number = desFormLayout.gridColumnConfig[configIndex].value; // 比重\r\n let total = 0; // 总值\r\n desFormLayout.gridColumnConfig.forEach((item: any) => {\r\n total += Number(item.value);\r\n });\r\n const ratio = proportion / total; // 比值\r\n const val = Number(ratio) * 100;\r\n return `calc( ${val}% - 1px)`;\r\n } else {\r\n return \"100%\";\r\n }\r\n }\r\n\r\n /**\r\n * @description: 根节点容器布局样式\r\n * @author ChenRui\r\n * @date 2021/3/25 14:52\r\n */\r\n get emptyLayoutContainerStyle(): any {\r\n let style: any = {};\r\n if (this.isMobileBrowser()) {\r\n return { display: \"flex\", \"flex-direction\": \"column\" };\r\n }\r\n if (this.isIe) {\r\n style = { display: \"flex\", \"flex-wrap\": \"wrap\" };\r\n } else {\r\n const gridTemplateColumns: any = generateGridTemplateColumns((this.control?.controlAttr as DesFormLayout)?.gridColumnConfig);\r\n style = { \"grid-template-columns\": gridTemplateColumns };\r\n }\r\n return style;\r\n }\r\n\r\n /**\r\n * @description: 常规布局容器样式\r\n * @author ChenRui\r\n * @date 2021/3/25 14:42\r\n */\r\n get generalLayoutContainerStyle(): any {\r\n let style: any = {};\r\n if (this.isMobileBrowser()) {\r\n return { display: \"flex\", \"flex-direction\": \"column\" };\r\n }\r\n if (this.isIe) {\r\n style = { display: \"flex\", \"flex-wrap\": \"wrap\" };\r\n } else {\r\n const gridColumnEnd: any = generateGridColumnEnd((this.parentControl?.controlAttr as DesFormLayout)?.gridColumnConfig);\r\n const gridTemplateColumns: any = generateGridTemplateColumns((this.control?.controlAttr as DesFormLayout)?.gridColumnConfig);\r\n style = {\r\n \"grid-column-end\": gridColumnEnd,\r\n \"grid-template-columns\": gridTemplateColumns,\r\n };\r\n }\r\n return style;\r\n }\r\n /**\r\n * 判断是否为移动端浏览器\r\n * @returns {boolean} true=移动端,false=PC端\r\n */\r\n isMobileBrowser() {\r\n // 匹配常见移动端设备的User-Agent关键词\r\n const mobileRegex = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobile|mobile|CriOS/i;\r\n // 排除平板设备(可选,根据业务需求调整)\r\n const tabletRegex = /iPad|Tablet|Nexus 7|Nexus 10/i;\r\n\r\n const userAgent = navigator.userAgent;\r\n const isMobile = mobileRegex.test(userAgent);\r\n const isTablet = tabletRegex.test(userAgent);\r\n\r\n // 业务逻辑:如果是平板,可根据需求返回true或false\r\n return isMobile && !isTablet;\r\n }\r\n\r\n /**\r\n * @description: 初始化部分数据\r\n * @author ChenRui\r\n * @date 2021/1/29 15:28\r\n */\r\n initFormControlData(): void {\r\n if (this.control && this.control.formControl) {\r\n if (this.control!.code === FormFieldType.DatePicker.code || this.control!.code === FormFieldType.TimePicker.code) {\r\n if (this.control.formControl.value) {\r\n if (typeof this.control.formControl.value === \"string\") {\r\n this.control.formControl.value = dayjs(new Date(this.control.formControl.value));\r\n } else if (this.control.formControl.value instanceof Date) {\r\n this.control.formControl.value = dayjs(this.control.formControl.value);\r\n }\r\n }\r\n }\r\n if (this.control.formControl.textNoticeCallback == null) {\r\n this.control.formControl.textNoticeCallback = () => {\r\n return this.formatData;\r\n };\r\n }\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n if (controlAttr.maxValue == null || (controlAttr.maxValue as any) === \"\") {\r\n const maxValue = \"9999999999999999\";\r\n if (controlAttr.decimalPlaces != undefined && (controlAttr.decimalPlaces as any) !== \"\" && controlAttr.decimalPlaces > 0) {\r\n if (controlAttr.decimalPlaces > 16) {\r\n controlAttr.decimalPlaces = 16;\r\n }\r\n controlAttr.maxValue = Number(maxValue.slice(0, maxValue.length - controlAttr.decimalPlaces) + \".\" + maxValue.slice(maxValue.length - controlAttr.decimalPlaces, maxValue.length));\r\n } else {\r\n controlAttr.maxValue = Number(maxValue);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 业务属性\r\n * @author ChenRui\r\n * @date 2021/2/1 14:38\r\n */\r\n get busAttr(): any {\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n let busAttr: any;\r\n let attrSubmittedType: any[] = [];\r\n if (controlAttr.busAttr) {\r\n busAttr = formBeanUtilsService.parse(controlAttr.busAttr);\r\n if (busAttr[FormBusAttr.SUBMITTED_TYPE.code]) {\r\n attrSubmittedType = busAttr[FormBusAttr.SUBMITTED_TYPE.code].split(\",\").filter((item: any) => !!item);\r\n }\r\n }\r\n const submittedType: any[] = Object.values(SubmittedType).map((val: any) => ({ label: val.name, value: val.code }));\r\n const submittedTypeCheckedNode: any[] = [];\r\n submittedType.forEach((item) => {\r\n if (attrSubmittedType.findIndex((it) => it === item.value) > -1) {\r\n submittedTypeCheckedNode.push(item);\r\n }\r\n });\r\n return {\r\n [FormBusAttr.SUBMITTED_TYPE.code]: submittedTypeCheckedNode,\r\n [FormBusAttr.IS_SUPPLEMENT.code]: busAttr ? busAttr[FormBusAttr.IS_SUPPLEMENT.code] : false,\r\n [FormBusAttr.IS_KEY_ELEMENTS.code]: busAttr ? busAttr[FormBusAttr.IS_KEY_ELEMENTS.code] : false,\r\n [FormBusAttr.IS_TRACK.code]: busAttr ? busAttr[FormBusAttr.IS_TRACK.code] : false,\r\n };\r\n }\r\n\r\n /**\r\n * @description: 报送类型\r\n * @author ChenRui\r\n * @date 2021/2/1 15:05\r\n */\r\n get submittedType(): any[] {\r\n if (this.busAttr && this.busAttr[FormBusAttr.SUBMITTED_TYPE.code].length > 0) {\r\n return this.busAttr[FormBusAttr.SUBMITTED_TYPE.code];\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @description: 报送类型字符串\r\n * @author ChenRui\r\n * @date 2021/2/1 15:08\r\n */\r\n get submittedTypeStr(): string {\r\n return this.submittedType.map((item) => item.label).join(\"、\");\r\n }\r\n\r\n /**\r\n * 根据日期时间格式决定是否显示时间选择功能\r\n * @param format\r\n */\r\n showPickerTime(format?: string): any {\r\n // format 包含时间格式\r\n if (format && format.indexOf(\"HH:mm\") > -1) {\r\n return format;\r\n }\r\n return false;\r\n }\r\n /**\r\n * @description: 清除特殊字符\r\n * @author ChenRui\r\n * @date 2021/6/22 15:41\r\n */\r\n private clearNoNum(value: any) {\r\n if (value) {\r\n value = value.replace(/[^\\d.]/g, \"\"); //清除“数字”和“.”以外的字符\r\n value = value.replace(/\\.{2,}/g, \".\"); //只保留第一个. 清除多余的\r\n value = value.replace(\".\", \"$#$\").replace(/\\./g, \"\").replace(\"$#$\", \".\");\r\n // eslint-disable-next-line no-useless-escape\r\n value = value.replace(/^(\\-)*(\\d+)\\.(\\d\\d).*$/, \"$1$2.$3\"); //只能输入两个小数\r\n if (value.indexOf(\".\") < 0 && value != \"\") {\r\n //以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额\r\n value = parseFloat(value);\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n /**\r\n * @description: 校验数字是否超过16位纯编码\r\n * @author ChenRui\r\n * @date 2021/6/22 14:58\r\n */\r\n private validateNumBeyondLimit(value: any): boolean {\r\n if (value) {\r\n const pureNumber: string = value.replace(/[^0-9]/gi, \"\");\r\n return pureNumber.length > 16;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * @description: 删除文件\r\n * @author ChenRui\r\n * @date 2021/4/25 11:35\r\n */\r\n handleRemove(file: any): void {\r\n const index = this.formControl.value.indexOf(file);\r\n const newFileList = this.formControl.value.slice();\r\n newFileList.splice(index, 1);\r\n this.formControl.value = newFileList;\r\n }\r\n\r\n /**\r\n * @description: 文件上传前回调函数\r\n * @author ChenRui\r\n * @date 2021/4/25 11:23\r\n */\r\n beforeUpload(file: any): boolean {\r\n const fileList: any[] = [...this.formControl.value, file];\r\n this.formControl.value = fileList;\r\n return false;\r\n }\r\n\r\n /**\r\n * @description: 文件上传变更\r\n * @author ChenRui\r\n * @date 2021/4/25 11:29\r\n */\r\n handleUploadChange(event: any): any {\r\n let fileList: any[] = [...this.formControl.value];\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n if (controlAttr.maxUploadNumber && controlAttr.maxUploadNumber > 0) {\r\n fileList = fileList.slice(0 - Number(controlAttr.maxUploadNumber));\r\n }\r\n fileList = fileList.map((file) => {\r\n if (file.response) {\r\n file.url = file.response.url;\r\n }\r\n return file;\r\n });\r\n this.formControl.value = fileList;\r\n if (event && event.file && (event.file.status === undefined || event.file.status === \"removed\")) {\r\n this.onChange(this.control!);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 金额菜单单机事件\r\n * @author ChenRui\r\n * @date 2021/2/20 17:21\r\n */\r\n handleMoneyUnitMenuClick(e: any): void {\r\n this.defaultMoneyUnit = this.moneyUnits.find((item) => item.code === e.key);\r\n }\r\n\r\n /**\r\n * @description: 将下拉弹层渲染节点固定在触发器的父元素中\r\n * @author ZPFly\r\n * @date 2022/8/31 11:30\r\n */\r\n getPopupContainer(triggerNode: any) {\r\n return triggerNode.parentNode;\r\n }\r\n\r\n /**\r\n * @description: 输入事件处理\r\n * @author ChenRui\r\n * @date 2020/12/2 14:37\r\n */\r\n onChange(event: Control): void {\r\n if (this.control && (this.control.type === FormFieldClass.Base.code || this.control.type === FormFieldClass.Senior.code)) {\r\n this.validateResult = this.formControl.validate(event.formControl?.value);\r\n }\r\n this.$emit(\"change\", event);\r\n }\r\n\r\n /**\r\n * @description: 点击事件\r\n * @author ChenRui\r\n * @date 2021/3/4 11:37\r\n */\r\n onClick(event: Control): void {\r\n this.$emit(\"click\", event);\r\n }\r\n\r\n /**\r\n * @description: 内置前置标签事件\r\n * @author ChenRui\r\n * @date 2021/4/23 9:42\r\n */\r\n onAddonBeforeHandler(event: any): void {\r\n this.$emit(\"addon-before\", event);\r\n }\r\n\r\n /**\r\n * @description: 内置后置标签事件\r\n * @author ChenRui\r\n * @date 2021/4/23 9:43\r\n */\r\n onAddonAfterHandler(event: any): void {\r\n this.$emit(\"addon-after\", event);\r\n }\r\n /**\r\n *\r\n * @param formControl 表单控制器\r\n * @private 私有方法\r\n */\r\n handlerMasking(formControl: any): void {\r\n const now = Date.now();\r\n // 防止频繁点击,间隔小于1秒则提示\r\n if (now - this.lastClickTime < 1000) {\r\n notification.open({\r\n message: \"点击过于频繁,请稍后再试\",\r\n duration: 2,\r\n icon: () => h(ExclamationCircleOutlined, { style: \"color: #FBBC05\" }),\r\n });\r\n return;\r\n }\r\n this.lastClickTime = now;\r\n const path = this.$qlForm.desApiAddr;\r\n if (!path) {\r\n notification.open({\r\n message: \"解密接口未配置,请联系管理员\",\r\n duration: 5,\r\n icon: () => h(ExclamationCircleOutlined, { style: \"color: #FBBC05\" }),\r\n });\r\n return;\r\n }\r\n // 调用解密函数\r\n this.isAfterClick = !this.isAfterClick;\r\n const formApi: FormApi = this.control.formApi;\r\n if (this.isAfterClick) {\r\n const encData = formApi.formData[formControl.key + \"Enc\"];\r\n if (!formControl.oldValue) {\r\n // 保存原始脱敏值\r\n formControl.oldValue = formApi.formData[formControl.key]; // 脱敏数据\r\n }\r\n // 接口获取解密值\r\n const params: any = { ...formApi.desParams };\r\n params.ciphertext = encData; // 密文\r\n params.desensField = formControl.key; // 脱敏的字段\r\n console.error(params);\r\n this.getFieldPlaintext(path, params).then((res: any) => {\r\n if (res.code === 1) {\r\n formControl.value = res.data;\r\n } else {\r\n notification.open({\r\n message: res.msg || \"解密失败,请重试\",\r\n duration: 5,\r\n icon: () => h(ExclamationCircleOutlined, { style: \"color: #FBBC05\" }),\r\n });\r\n }\r\n });\r\n } else {\r\n formControl.value = formControl.oldValue;\r\n }\r\n }\r\n\r\n /**\r\n * @desc 解密字段\r\n * @param path 解密接口地址\r\n * @param params 解密需要的参数\r\n * @private\r\n */\r\n private getFieldPlaintext(path: string, params: any): Promise<any> {\r\n const headers = apiService.createAuthHeaders();\r\n return apiService.fetch(path, {}, JSON.stringify(params), \"POST\", headers);\r\n }\r\n /**\r\n * @description: 数字框失焦点\r\n * @author ChenRui\r\n * @date 2021/3/4 11:51\r\n */\r\n onInputNumberFocus(event: Control): void {\r\n this.onFocus(event);\r\n if ((this.controlAttr as DesFormControl).isShowCapitalization) {\r\n this.numberPopoverVisible = true;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 数字输入框失焦\r\n * @author ChenRui\r\n * @date 2021/3/4 11:43\r\n */\r\n onInputNumberBlur(event: Control): void {\r\n this.onBlur(event);\r\n if ((this.controlAttr as DesFormControl).isShowCapitalization) {\r\n this.numberPopoverVisible = false;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 获取焦点\r\n * @author ChenRui\r\n * @date 2021/3/4 11:46\r\n */\r\n onFocus(event: Control): void {\r\n this.$emit(\"focus\", event);\r\n }\r\n\r\n /**\r\n * @description: 失焦事件\r\n * @author ChenRui\r\n * @date 2021/3/4 11:38\r\n */\r\n onBlur(event: Control): void {\r\n this.$emit(\"blur\", event);\r\n }\r\n\r\n /**\r\n * @Description 是否节假日校验\r\n * @Author JiangTao\r\n * @Date 2024-04-16 下午 02:33\r\n */\r\n isRest(current: any): boolean {\r\n if (JSON.parse(this.weekdayList).find((e: any) => e.calDate === this.DateTime(current.$d))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * @Description 是否工作日校验\r\n * @Author JiangTao\r\n * @Date 2024-04-16 下午 02:33\r\n */\r\n isWeekday(current: any): boolean {\r\n if (JSON.parse(this.workdayList).find((e: any) => e.calDate === this.DateTime(current.$d))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * @Description 是否交易日校验\r\n * @Author JiangTao\r\n * @Date 2024-04-16 下午 02:33\r\n */\r\n isRadingDay(current: any): boolean {\r\n if (JSON.parse(this.traddayList).find((e: any) => e.calDate === this.DateTime(current.$d))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * @Description 日期格式转换\r\n * @Author JiangTao\r\n * @Date 2024-04-16 下午 02:33\r\n */\r\n DateTime(date: any): string {\r\n const year: any = date.getFullYear();\r\n let month: any = date.getMonth() + 1;\r\n let strDate: any = date.getDate();\r\n\r\n if (month < 10) {\r\n month = \"0\" + month;\r\n }\r\n\r\n if (strDate < 10) {\r\n strDate = \"0\" + strDate;\r\n }\r\n\r\n return \"\" + year + month + strDate;\r\n }\r\n}\r\n","import { render } from \"./DvFormLayout.vue?vue&type=template&id=7be785be&scoped=true&ts=true\"\nimport script from \"./DvFormLayout.vue?vue&type=script&lang=ts\"\nexport * from \"./DvFormLayout.vue?vue&type=script&lang=ts\"\n\nimport \"./DvFormLayout.vue?vue&type=style&index=0&id=7be785be&lang=scss&scoped=true\"\n\nimport exportComponent from \"E:\\\\base-frontend\\\\vue-lo3-form-260417\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7be785be\"]])\n\nexport default __exports__","/* eslint-disable */\r\nclass DateFormatService {\r\n /**\r\n * 日期时间格式自定义\r\n * @param {number|string} value 日期时间值时间戳或时间格式\r\n * @param {string} format 输出的时间格式\r\n * @returns {string} 定义好的时间格式\r\n */\r\n formatDateTime(value: any, format = 'YYYY-MM-dd HH:mm:ss'): string {\r\n const reg = /(YY|YYYY|MM|dd|HH|mm|ss|ww|WW)/g;\r\n if (!value) {\r\n return ''\r\n }\r\n if (!reg.test(format)) {\r\n throw new Error(`The defined format ${format} is incorrect,Please enter 'YYYY or YY' for year,MM for month, dd for day,ww or WW for week,HH for hours,mm for minutes,ss for seconds.`)\r\n }\r\n if (typeof value === 'string' && value.length === 8) {\r\n value = [value.substr(0, 4), value.substr(4, 2), value.substr(6, 2)].join('/')\r\n } else if (!isNaN(Number(value))) {\r\n value = Number(value);\r\n }\r\n const time = new Date(value);\r\n if (String(time) === 'Invalid Date') {\r\n throw new Error(`Time format unrecognized by ${value}, Please enter time stamp or legal time format.`);\r\n }\r\n const dayMap = ['日', '一', '二', '三', '四', '五', '六'];\r\n const year = String(time.getFullYear());\r\n const month = time.getMonth() + 1 > 9 ? String(time.getMonth() + 1) : `0${String(time.getMonth() + 1)}`;\r\n const date = time.getDate() > 9 ? String(time.getDate()) : `0${String(time.getDate())}`;\r\n const day = time.getDay();\r\n const week: any = day !== 0 ? day : '日';\r\n const hours = time.getHours() > 9 ? String(time.getHours()) : `0${String(time.getHours())}`;\r\n const minutes = time.getMinutes() > 9 ? String(time.getMinutes()) : `0${time.getMinutes()}`;\r\n const seconds = time.getSeconds() > 9 ? String(time.getSeconds()) : `0${String(time.getSeconds())}`;\r\n let str = '';\r\n if (/YYYY|YY/g.test(format)) {\r\n format.replace(/YYYY|YY/g, (reg, index, value) => {\r\n if (reg === 'YY') {\r\n str = value.replace('YY', year.slice(2))\r\n }\r\n if (reg === 'YYYY') {\r\n str = value.replace('YYYY', year)\r\n }\r\n return str\r\n })\r\n } else {\r\n str = format\r\n }\r\n str = str.replace(/MM/g, month);\r\n str = str.replace(/dd/g, date);\r\n str = str.replace(/HH/g, hours);\r\n str = str.replace(/mm/g, minutes);\r\n str = str.replace(/ss/g, seconds);\r\n str = str.replace(/ww/g, week);\r\n str = str.replace(/WW/g, dayMap[day]);\r\n return str\r\n }\r\n\r\n /**\r\n * @Description:两个日期大小比较(开始时间 > 结束时间,返回true)\r\n * @author LiuBo\r\n * @date 2022/7/15\r\n * @time 10:43\r\n * @param startTime 开始时间 (YYYY-MM-DD)\r\n * @param endTime 结束时间 (YYYY-MM-DD)\r\n * @modifyLog\r\n */\r\n dateSizeCompare(startTime: string,endTime: string): boolean {\r\n return new Date(Date.parse(startTime.replace(/-/g,\"/\"))).getTime() >\r\n new Date(Date.parse(endTime.replace(/-/g,\"/\"))).getTime();\r\n }\r\n}\r\nconst dateFormat: DateFormatService = new DateFormatService();\r\nexport { dateFormat };\r\n","import { FormGroup } from \"@/domain\";\r\nimport { AbstractControl } from \"@/domain/AbstractControl\";\r\nimport { FormControl, Validate, ValidateReport, ValidateResult } from \"../domain/FormControl\";\r\nimport DvForm from \"../components/form/DvForm.vue\";\r\nimport { FormFieldType, OptionType, SubmittedType, ValidateRules, ValidateStatus } from \"../constants/enum\";\r\n// import moment from \"moment\";\r\nimport { ZoomType } from \"@/constants\";\r\nimport { extractOptions, storageOptions } from \"@/filtres/extract-options.filter\";\r\nimport { CustomFormat, FieldChangeHistory } from \"../domain\";\r\nimport { Rule, validateGeneratorService } from \"../services/validate-generator.service\";\r\nimport { formToolsService, formTreeNodeConvertService, formValidateService } from \"@/services\";\r\nimport { MathJsStatic } from \"mathjs\";\r\nimport { Vue } from \"vue-property-decorator\";\r\nimport dayjs from \"dayjs\";\r\nimport { dateFormat } from \"@/services/date-format.service\";\r\nexport type FormatType = \"default\" | \"ebtrust\";\r\n\r\nexport enum Attribute {\r\n IsHideControl = \"isHideControl\", // 隐藏控件\r\n IsRequiredValidate = \"isRequiredValidate\", // 是否必填\r\n FormFieldDescribe = \"formFieldDescribe\", // 字段别名\r\n FieldDefaultValue = \"fieldDefaultValue\", // 默认值\r\n TitleWidth = \"titleWidth\", // 标题宽度\r\n IsBoldTitle = \"isBoldTitle\", // 加粗标题\r\n IsHideTitle = \"isHideTitle\", // 隐藏标题\r\n TitleColor = \"titleColor\", // 标题颜色\r\n Placeholder = \"placeholder\", // 预期值的提示信息\r\n Tips = \"tips\", // 提示信息\r\n IsNotEdit = \"isNotEdit\", // 不可编辑\r\n BindingPrefix = \"bindingPrefix\", // 绑定前缀\r\n BindingSuffix = \"bindingSuffix\", // 绑定后缀\r\n BuiltInFrontLabel = \"builtInFrontLabel\", // 内置前置标签\r\n BuiltInPostLabel = \"builtInPostLabel\", // 内置后置标签\r\n ControlWidth = \"controlWidth\", // 控件宽度\r\n IsPasswordBox = \"isPasswordBox\", // 是否密码框\r\n InitRowHeight = \"initRowHeight\", // 初始行高\r\n IsFixedRowHeight = \"isFixedRowHeight\", // 是否固定行高\r\n FormatType = \"formatType\", // 格式化类型\r\n MinValue = \"minValue\", // 最小值\r\n MaxValue = \"maxValue\", // 最大值\r\n Step = \"step\", // 步长\r\n DecimalPlaces = \"decimalPlaces\", // 小数位\r\n ThousandthPercentileFormat = \"thousandthPercentileFormat\", // 千分位格式化\r\n Unit = \"unit\", // 单位\r\n ZoomType = \"zoomType\", // 缩放类型\r\n ZoomMultiple = \"zoomMultiple\", // 缩放倍数\r\n IsShowCapitalization = \"isShowCapitalization\", // 展示大写\r\n IsLineFeedDisplay = \"isLineFeedDisplay\", // 换行显示\r\n IsOptionType = \"isOptionType\", // 类型选项\r\n OptionConfig = \"optionConfig\", // 自定义字典项\r\n DateFormat = \"dateFormat\", // 日期格式\r\n TimeFormat = \"timeFormat\", // 时间格式\r\n IsSupportMultiple = \"isSupportMultiple\", // 是否支持多选\r\n MaxUploadNumber = \"maxUploadNumber\", // 最多上传个数\"\r\n LimitSize = \"limitSize\", // 上传大小限制\r\n SupportUploadType = \"supportUploadType\", // 扩展类型\r\n CustomUploadType = \"customUploadType\", // 自定义类型\r\n ExtendUploadType = \"extendUploadType\", // 扩展类型\r\n AttachmentExtendProperties = \"attachmentExtendProperties\", // 附件扩展属性\r\n IsMultipleChoice = \"isMultipleChoice\", // 是否可多选\r\n IsSearchable = \"isSearchable\", // 是否可搜索\r\n CanAddEntry = \"canAddEntry\", // 是否可新增条目\r\n IsClearButton = \"isClearButton\", // 显示清除按钮\r\n OnOpeningValue = \"onOpeningValue\", // 打开时的值\r\n WhenClosedValue = \"whenClosedValue\", // 关闭时的值\r\n OnOpeningText = \"onOpeningText\", // 打开时的文字描述\r\n WhenClosedText = \"whenClosedText\", // 关闭时的文字描述\r\n CustomFieldName = \"customFieldName\", // 自定义字段名\r\n TextFold = \"textFold\", // 文本折叠\r\n HiddenDropdown = \"hiddenDropdown\", // 隐藏下拉面板\r\n BusAttr = \"busAttr\", // 业务属性\r\n EnableAutoComplete = \"enableAutoComplete\", // 开启自动完成功能\r\n AutoCompleteOptions = \"autoCompleteOptions\", // 自动完成列表数据\r\n IsTreeOpen = \"isTreeOpen\", // 树形选择框是否展开\r\n CheckboxStyle = \"checkboxStyle\", // 多选器选项标签样式\r\n ItemWidth = \"itemWidth\",\r\n ChangeOnSelect = \"changeOnSelect\", // 是否允许级联选择框只选中父级选项\r\n TextareaRows = \"textareaRows\", // 设置textarea组件默认展示行数\r\n IsShowHoliday = \"isShowHoliday\", // 是否展示节假日\r\n}\r\n\r\n/**\r\n * @description: 表单基础类,聚合常用api\r\n * @author ChenRui\r\n * @date 2020/11/28 23:27\r\n */\r\nexport class FormApi {\r\n id?: any; // api编号\r\n dvForm: Vue | any; // form组件实例\r\n edit: boolean | undefined; // 编辑状态\r\n formatType: FormatType; // 数据格式化模式\r\n apiMetaRefresh: any; // api内部刷新标识\r\n [key: string]: any; // 任一扩展属性\r\n oldVal: any; // 修改前数据\r\n private srcData: any; // 表单原始数据\r\n desParams: any; // 脱敏参数 包括【业务编号、业务对象类型、表单中文等】\r\n /**\r\n * @description: 获取表单对象\r\n * @author ChenRui\r\n * @date 2020/11/28 23:29\r\n */\r\n constructor(\r\n options: {\r\n id?: any;\r\n dvForm?: Vue;\r\n edit?: boolean;\r\n formatType?: FormatType;\r\n desParams?: any;\r\n } = {}\r\n ) {\r\n this.id = options.id || this.getUuid();\r\n this.dvForm = options.dvForm || new Vue(DvForm);\r\n this.edit = options.edit;\r\n this.formatType = options.formatType || \"default\";\r\n this.desParams = options.desParams || {}; // 脱敏所需参数\r\n }\r\n\r\n get mathjs(): MathJsStatic {\r\n if ((window as any).$app.config.globalProperties.$mathjs) {\r\n return (window as any).$app.config.globalProperties.$mathjs;\r\n }\r\n return {} as MathJsStatic;\r\n }\r\n\r\n /**\r\n * @description: 获取表单值\r\n * @author ChenRui\r\n * @date 2021/2/4 10:36\r\n */\r\n get formData(): any {\r\n this.apiMetaRefresh = this.dvForm.metaRefresh;\r\n if (this.dvForm.desForm && this.dvForm.desForm.formGroup) {\r\n let obj: any = this.generateData(this.dvForm.desForm.formGroup);\r\n if (this.oldVal) {\r\n obj = this.contrast(this.oldVal, obj);\r\n if (!Object.keys(obj).length) {\r\n obj = null;\r\n }\r\n }\r\n // 追加表单中没有的字段 2026年5月13日 20:39:24 用于处理字段脱敏\r\n if (this.srcData) {\r\n for (const key in this.srcData) {\r\n // eslint-disable-next-line no-prototype-builtins\r\n if (obj && !obj.hasOwnProperty(key)) {\r\n obj[key] = this.srcData[key];\r\n }\r\n }\r\n }\r\n return obj;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @Description 获取表单全部值\r\n * @Author JiangTao\r\n * @Date 2023-12-22 下午 02:50\r\n */\r\n get formAllData(): any {\r\n this.apiMetaRefresh = this.dvForm.metaRefresh;\r\n if (this.dvForm.desForm && this.dvForm.desForm.formGroup) {\r\n const obj: any = this.generateData(this.dvForm.desForm.formGroup);\r\n return obj;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 编码表单对象\r\n * @author ChenRui\r\n * @date 2021/4/25 16:41\r\n */\r\n get encodedFormData(): any {\r\n this.apiMetaRefresh = this.dvForm.metaRefresh;\r\n if (this.dvForm.desForm && this.dvForm.desForm.formGroup) {\r\n const data = this.generateData(this.dvForm.desForm.formGroup);\r\n return this.jsonToFormData(data);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 设置表单值\r\n * @author ChenRui\r\n * @date 2021/2/4 10:37\r\n */\r\n setFormData(srcData: any, isDefault = false, validate = false, oldVal?: any): void {\r\n if (this.dvForm.desForm.formGroup) {\r\n this.setFormDataInner(srcData, isDefault, validate);\r\n } else {\r\n setTimeout(() => {\r\n this.setFormDataInner(srcData, isDefault, validate);\r\n });\r\n }\r\n if (oldVal) this.oldVal = oldVal;\r\n this.srcData = srcData; // 记录赋值时的原始数据,这里面有非表单字段\r\n }\r\n\r\n /**\r\n * @description: 获取控件对象\r\n * @author ChenRui\r\n * @date 2021/1/29 10:08\r\n */\r\n getControl(key: string, control?: AbstractControl, showError = true): AbstractControl | any {\r\n if (key) {\r\n if (control == null) {\r\n if (this.dvForm.desForm.formGroup) {\r\n control = this.dvForm.desForm.formGroup.controls;\r\n } else if (showError) {\r\n console.log(\"表单对象尚未初始化完成...\");\r\n }\r\n }\r\n if (control && Object.keys(control).length > 0) {\r\n for (const propName of Object.keys(control)) {\r\n if (propName === key) {\r\n return control[propName];\r\n }\r\n if (control[propName].controls && Object.keys(control[propName].controls).length > 0) {\r\n const subControl: AbstractControl = this.getControl(key, control[propName].controls);\r\n if (subControl != null) {\r\n return subControl;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 获取值\r\n * @author ChenRui\r\n * @date 2021/1/29 14:57\r\n */\r\n getValue(key: string): any {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control) {\r\n // && control instanceof FormControl\r\n return this.decodeData(control as FormControl, false);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 设置值\r\n * @author ChenRui\r\n * @date 2021/1/29 16:23\r\n */\r\n setValue(key: string, val: any, isDefault = false, validate = true): void {\r\n let control: AbstractControl = this.getControl(key);\r\n if (control == null) {\r\n setTimeout(() => {\r\n control = this.getControl(key);\r\n this.setControlValue(control, key, val, isDefault, validate);\r\n });\r\n } else {\r\n this.setControlValue(control, key, val, isDefault, validate);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 重置表单\r\n * @author ChenRui\r\n * @date 2021/2/22 17:40\r\n */\r\n resetValue(): void {\r\n this.dvForm.formatDesForm(true);\r\n }\r\n\r\n /**\r\n * @description: 获取文本内容\r\n * @author ChenRui\r\n * @date 2021/1/29 15:03\r\n */\r\n getText(key: string): any {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n return control.text();\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @description: 获取可选项\r\n * @author ChenRui\r\n * @date 2021/1/29 16:11\r\n */\r\n getOptions(key: string): any[] {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control && control.controlAttr) {\r\n //control && control instanceof FormControl && control.controlAttr\r\n return extractOptions(control.controlAttr);\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @description: 设置可选项\r\n * @author ChenRui\r\n * @date 2021/1/29 16:15\r\n */\r\n setOptions(key: string, data: any[], defaultVal?: any): void {\r\n let control: AbstractControl = this.getControl(key);\r\n if (control == null) {\r\n setTimeout(() => {\r\n control = this.getControl(key);\r\n this.setControlOptions(control, key, data, defaultVal);\r\n });\r\n } else {\r\n this.setControlOptions(control, key, data, defaultVal);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 获取常规属性\r\n * @author ChenRui\r\n * @date 2021/1/29 17:21\r\n */\r\n getAttribute(key: string, attribute: Attribute): any {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control && control.controlAttr) {\r\n //control && control instanceof FormControl && control.controlAttr\r\n return control.controlAttr[attribute];\r\n }\r\n }\r\n /**\r\n * @description: 设置常规属性\r\n * @author ChenRui\r\n * @date 2021/1/29 17:21\r\n */\r\n setAttribute(key: string, attribute: Attribute, data: any): void {\r\n let control: AbstractControl = this.getControl(key);\r\n if (control == null) {\r\n setTimeout(() => {\r\n control = this.getControl(key);\r\n this.setControlAttribute(control, attribute, data);\r\n });\r\n } else {\r\n this.setControlAttribute(control, attribute, data);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 根据name获取校验\r\n * @author ChenRui\r\n * @date 2021/1/30 11:46\r\n */\r\n getValidate(key: string, name: string): any {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n return control.getValidate(name);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 移除校验\r\n * @author ChenRui\r\n * @date 2021/4/1 21:30\r\n */\r\n removeValidate(key: string, validateName: string): void {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n const validates: Validate[] = control.validates;\r\n if (validates && validates.length > 0) {\r\n const index = validates.findIndex((item) => item.name === validateName);\r\n if (index !== -1) {\r\n validates.splice(index, 1);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 移除所有校验\r\n * @author ChenRui\r\n * @date 2021/4/1 21:48\r\n */\r\n removeAllValidates(key: string): void {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n control.validates = [];\r\n }\r\n }\r\n\r\n /**\r\n * @description: 获取校验集合\r\n * @author ChenRui\r\n * @date 2021/1/30 11:40\r\n */\r\n getValidates(key: string): Validate[] {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n return control.validates;\r\n }\r\n return [];\r\n }\r\n /**\r\n * @Description: 设置必输校验\r\n * @author GuoXuHui\r\n * @date 2022-05-25\r\n * @time 10:09\r\n */\r\n setRequiredValidate(key: string, data: boolean) {\r\n if (data) {\r\n this.setValidate(key, { ruleType: ValidateRules.Required.code });\r\n } else {\r\n this.removeValidate(key, ValidateRules.Required.code); // 清除必填校验\r\n }\r\n }\r\n\r\n /**\r\n * @description: 设置校验\r\n * @author ChenRui\r\n * @date 2021/1/30 11:54\r\n */\r\n setValidate(key: string, validate: Validate | Validate[] | Rule, isCover = false): void {\r\n let control: AbstractControl = this.getControl(key);\r\n if (control == null) {\r\n setTimeout(() => {\r\n control = this.getControl(key);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n this.setValidateInner(control, validate, isCover);\r\n }\r\n });\r\n } else {\r\n this.setValidateInner(control, validate, isCover);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 校验提示\r\n * @author ChenRui\r\n * @date 2021/8/18 17:40\r\n */\r\n validateTips(scrollView?: any): boolean {\r\n return formValidateService.validateTips(this, scrollView);\r\n }\r\n\r\n /**\r\n * @description: 全局校验报告\r\n * @author ChenRui\r\n * @date 2021/2/5 11:48\r\n */\r\n validateReport(formGroup?: AbstractControl, validateReports?: ValidateReport[], refreshFeedback = true): ValidateReport[] {\r\n if (validateReports == null) {\r\n validateReports = [];\r\n }\r\n if (formGroup == null) {\r\n formGroup = this.dvForm.desForm.formGroup;\r\n if (refreshFeedback) {\r\n this.dvForm.refreshCheckFeedbackFlag = new Date().getTime();\r\n }\r\n }\r\n if (formGroup != null) {\r\n for (const propName of Object.keys(formGroup.controls)) {\r\n if (formGroup.controls[propName] instanceof FormGroup) {\r\n this.validateReport(formGroup.controls[propName], validateReports);\r\n } else if (formGroup.controls[propName] instanceof FormControl && !formGroup.controls[propName].controlAttr.isHideControl) {\r\n const validateResult: ValidateResult = formGroup.controls[propName].validate();\r\n if (validateResult.validateStatus === ValidateStatus.Error.code) {\r\n validateReports.push({\r\n key: formGroup.controls[propName].key,\r\n name: formGroup.controls[propName].controlAttr.formFieldDescribe,\r\n errorMsg: validateResult.errorMsg,\r\n controlType: formGroup.controls[propName].controlAttr.controlType,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return validateReports;\r\n }\r\n\r\n /**\r\n * @description: 表单全局校验\r\n * @author ChenRui\r\n * @date 2021/2/5 14:11\r\n */\r\n validate(refreshFeedback = true): boolean {\r\n const validateReports: ValidateReport[] = this.validateReport(undefined, undefined, refreshFeedback);\r\n return !(validateReports.length > 0);\r\n }\r\n\r\n /**\r\n * @description: 刷新校验\r\n * @author ChenRui\r\n * @date 2021/6/4 19:32\r\n */\r\n refreshValidate(key: string): void {\r\n let control: AbstractControl = this.getControl(key);\r\n if (control == null) {\r\n setTimeout(() => {\r\n control = this.getControl(key);\r\n control[\"refreshValidate\"] = new Date().getTime();\r\n });\r\n } else {\r\n control[\"refreshValidate\"] = new Date().getTime();\r\n }\r\n }\r\n\r\n /**\r\n * @description: 重置表单校验\r\n * @author ChenRui\r\n * @date 2022/4/6 11:51\r\n */\r\n resetFormValidateState(): void {\r\n this.dvForm.formValidateStateResetMark = new Date().getTime();\r\n }\r\n\r\n /**\r\n * @description: 设置格式化显示和输出函数\r\n * @author ChenRui\r\n * @date 2021/2/4 19:44\r\n */\r\n setFormatDisplayAndOutput(key: string, customFormat: CustomFormat): void {\r\n if (key) {\r\n this.dvForm.customFormats[key] = customFormat;\r\n }\r\n this.refreshAndUpdateData();\r\n }\r\n\r\n /**\r\n * @description: 刷新数据\r\n * @author ChenRui\r\n * @date 2021/2/4 20:22\r\n */\r\n refreshAndUpdateData(): void {\r\n this.dvForm.onRefreshArgumentsHandler(new Date().getTime());\r\n }\r\n\r\n /**\r\n * @description: 获取控件dom对象\r\n * @author ChenRui\r\n * @date 2021/2/26 17:12\r\n */\r\n getControlEl(key: string): any {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control != null && control.controlAttr) {\r\n const els: HTMLCollectionOf<any> = document.getElementsByClassName(\"form-model-item-\" + control.controlAttr.boundProperty);\r\n if (els != null && els.length > 0) {\r\n return els[0];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 检查是否包含上传控件\r\n * @author ChenRui\r\n * @date 2021/4/23 11:30\r\n */\r\n checkHasUploadControl(abstractControl: AbstractControl): boolean {\r\n if (abstractControl instanceof FormGroup) {\r\n const formGroup: FormGroup = abstractControl as FormGroup;\r\n for (const propName of Object.keys(formGroup.controls)) {\r\n if (formGroup.controls[propName] instanceof FormGroup) {\r\n const judge = this.checkHasUploadControl(formGroup.controls[propName]);\r\n if (judge) {\r\n return judge;\r\n }\r\n } else if (formGroup.controls[propName] instanceof FormControl) {\r\n if (formGroup.controls[propName].code === FormFieldType.Upload.code) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * @description: json格式转表单格式\r\n * @author ChenRui\r\n * @date 2020/8/28 15:20\r\n */\r\n jsonToFormData(params: any): FormData {\r\n const formData = new FormData();\r\n if (params != null) {\r\n Object.keys(params).forEach((key) => {\r\n if (params[key] != null && params[key] instanceof Array && params[key].length > 0 && params[key][0] instanceof File) {\r\n params[key].forEach((item: any) => {\r\n formData.append(key, item);\r\n });\r\n } else {\r\n formData.append(key, params[key]);\r\n }\r\n });\r\n return formData;\r\n }\r\n return formData;\r\n }\r\n\r\n /**\r\n * @description: 设置变更历史记录\r\n * @author ChenRui\r\n * @date 2021/4/25 15:55\r\n */\r\n setFieldChangeHistory(fieldChangeHistory: FieldChangeHistory): void {\r\n fieldChangeHistory = fieldChangeHistory || {};\r\n for (const propertyName of Object.keys(fieldChangeHistory)) {\r\n let control: AbstractControl = this.getControl(propertyName, undefined, false);\r\n if (control == null) {\r\n setTimeout(() => {\r\n control = this.getControl(propertyName, undefined, false);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n const history = (fieldChangeHistory[propertyName] || []).sort((a, b) => {\r\n const aTime = new Date(a.time).getTime();\r\n const bTime = new Date(b.time).getTime();\r\n return bTime - aTime;\r\n });\r\n control.history = history;\r\n }\r\n });\r\n } else {\r\n control = this.getControl(propertyName, undefined, false);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n const history = (fieldChangeHistory[propertyName] || []).sort((a, b) => {\r\n const aTime = new Date(a.time).getTime();\r\n const bTime = new Date(b.time).getTime();\r\n return bTime - aTime;\r\n });\r\n control.history = history;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 隐藏布局\r\n * @author ChenRui\r\n * @date 2021/11/16 0:01\r\n */\r\n hideLayout(layoutName: string, mark = true): void {\r\n if (layoutName) {\r\n const nodes: any = document.getElementsByClassName(\"lo-form-layout-\" + layoutName);\r\n if (nodes && nodes.length > 0) {\r\n for (let i = 0; i < nodes.length; i++) {\r\n nodes[i].style.display = mark ? \"none\" : \"grid\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 设置表单值\r\n * @author ChenRui\r\n * @date 2021/8/16 9:29\r\n */\r\n private setFormDataInner(srcData: any, isDefault: boolean, validate: boolean): void {\r\n if (srcData) {\r\n for (const propName of Object.keys(srcData)) {\r\n if (typeof srcData[propName] === \"string\" || typeof srcData[propName] === \"number\") {\r\n this.setValue(propName, srcData[propName], isDefault, false);\r\n } else {\r\n this.setFormData(srcData[propName], isDefault, validate);\r\n }\r\n }\r\n }\r\n if (validate) {\r\n this.validate();\r\n }\r\n }\r\n\r\n /**\r\n * @description: 设置控件值\r\n * @author ChenRui\r\n * @date 2021/4/13 12:50\r\n */\r\n private setControlValue(control: AbstractControl, key: string, val: any, isDefault?: boolean, validate = true): void {\r\n if (control) {\r\n // && control instanceof FormControl\r\n switch (control.code) {\r\n case FormFieldType.InputNumber.code:\r\n if (val && control.controlAttr.zoomMultiple) {\r\n if (control.controlAttr.zoomType === ZoomType.enlarge.code) {\r\n val = this.mathjs.format(this.mathjs.evaluate(`${val} / ${control.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n } else if (control.controlAttr.zoomType === ZoomType.narrow.code) {\r\n val = this.mathjs.format(this.mathjs.evaluate(`${val} * ${control.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n }\r\n }\r\n if (val != undefined) {\r\n control.value = val;\r\n } else {\r\n control.value = \"\";\r\n }\r\n break;\r\n case FormFieldType.Select.code:\r\n if (control.controlAttr.isMultipleChoice) {\r\n if (!val) {\r\n val = [];\r\n } else if (typeof val === \"string\") {\r\n val = val.split(\",\");\r\n }\r\n }\r\n control.value = val;\r\n break;\r\n case FormFieldType.Checkbox.code:\r\n case FormFieldType.Cascader.code:\r\n if (val) {\r\n val = val.split(\",\");\r\n } else {\r\n val = [];\r\n }\r\n control.value = val;\r\n break;\r\n case FormFieldType.Switch.code:\r\n if (control.controlAttr.onOpeningValue) {\r\n val = val === true || val === control.controlAttr.onOpeningValue;\r\n } else if (control.controlAttr.whenClosedValue) {\r\n val = !(val === false || val === control.controlAttr.whenClosedValue);\r\n }\r\n control.value = val;\r\n break;\r\n case FormFieldType.TimePicker.code:\r\n if (val) {\r\n if (typeof val === \"string\") {\r\n val = dayjs(new Date(this.nowDateStr() + \" \" + val));\r\n } else if (val instanceof Date) {\r\n val = dayjs(val);\r\n }\r\n control.value = val;\r\n } else {\r\n control.value = null;\r\n }\r\n break;\r\n case FormFieldType.DatePicker.code:\r\n if (val) {\r\n if (typeof val === \"string\") {\r\n val = dayjs(val, control.dateFormat);\r\n } else if (val instanceof Date) {\r\n val = dayjs(val);\r\n }\r\n control.value = val;\r\n } else {\r\n control.value = null;\r\n }\r\n break;\r\n default: {\r\n control.value = val;\r\n }\r\n }\r\n if (isDefault) {\r\n this.setAttribute(key, Attribute.FieldDefaultValue, JSON.stringify(control.value));\r\n }\r\n if (validate) {\r\n control[\"refreshValidate\"] = new Date().getTime();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 设置控件可选项\r\n * @author ChenRui\r\n * @date 2021/4/13 15:09\r\n */\r\n private setControlOptions(control: AbstractControl, key: string, data: any[], defaultVal?: any): void {\r\n if (control && control.controlAttr) {\r\n //control && control instanceof FormControl && control.controlAttr)\r\n storageOptions(control.controlAttr, data);\r\n this.setAttribute(key, Attribute.IsOptionType, OptionType.Fixed.code);\r\n this.setAttribute(key, Attribute.OptionConfig, data);\r\n }\r\n if (defaultVal) {\r\n this.setValue(key, defaultVal, true);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 设置控件常规属性\r\n * @author ChenRui\r\n * @date 2021/4/13 15:11\r\n */\r\n private setControlAttribute(control: AbstractControl, attribute: Attribute, data: any): void {\r\n if (control && attribute) {\r\n //control && control instanceof FormControl && attribute\r\n control.controlAttr[attribute] = data;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 设置校验内部函数\r\n * @author ChenRui\r\n * @date 2021/7/19 17:51\r\n */\r\n private setValidateInner(control: AbstractControl, validate: Validate | Validate[] | Rule, isCover = false): void {\r\n if (validate != null && (validate as Rule).ruleType) {\r\n validate = validateGeneratorService.getBuiltInValidationRules(validate as Rule, control.controlAttr) as any;\r\n }\r\n if (validate != null) {\r\n if (isCover) {\r\n control.validates = [];\r\n }\r\n control.addValidate(validate);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 生成数据信息\r\n * @author ChenRui\r\n * @date 2021/1/29 10:06\r\n */\r\n private generateData(abstractControl: AbstractControl, obj: any = {}): any {\r\n if (abstractControl instanceof FormGroup) {\r\n const formGroup: FormGroup = abstractControl as FormGroup;\r\n for (const propName of Object.keys(formGroup.controls)) {\r\n if (formGroup.controls[propName] instanceof FormGroup) {\r\n obj[propName] = this.generateData(formGroup.controls[propName], obj[propName]);\r\n } else if (formGroup.controls[propName] instanceof FormControl) {\r\n obj[propName] = this.decodeData(formGroup.controls[propName] as FormControl);\r\n }\r\n }\r\n }\r\n return obj;\r\n }\r\n\r\n /**\r\n * @description: 数据解码输出\r\n * @author ChenRui\r\n * @date 2021/5/29 23:03\r\n */\r\n private decodeData(formControl: FormControl, isFinal = true): any {\r\n let data = formControl.value || \"\";\r\n switch (formControl.code) {\r\n case FormFieldType.InputNumber.code:\r\n if (data && formControl.controlAttr.zoomMultiple) {\r\n if (formControl.controlAttr.zoomType === ZoomType.enlarge.code) {\r\n data = this.mathjs.format(this.mathjs.evaluate(`${data} * ${formControl.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n } else if (formControl.controlAttr.zoomType === ZoomType.narrow.code) {\r\n data = this.mathjs.format(this.mathjs.evaluate(`${data} / ${formControl.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n } else if (formControl.controlAttr.zoomType === ZoomType.automatic.code) {\r\n data = this.mathjs.format(this.mathjs.evaluate(`${data} * ${formControl.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n }\r\n }\r\n if (formControl.value === 0) {\r\n data = 0;\r\n }\r\n break;\r\n case FormFieldType.Select.code:\r\n if (formControl.controlAttr.isMultipleChoice && data && Array.isArray(data)) {\r\n data = data.join(\",\");\r\n }\r\n break;\r\n case FormFieldType.Checkbox.code:\r\n if (data && isFinal) {\r\n data = data.join(\",\");\r\n }\r\n break;\r\n case FormFieldType.TimePicker.code:\r\n if (data) {\r\n data = dayjs(data).format(formControl.controlAttr.timeFormat || \"LTS\");\r\n }\r\n break;\r\n case FormFieldType.DatePicker.code:\r\n if (data) {\r\n data = dayjs(data).format(formControl.controlAttr.dateFormat || \"YYYY-MM-DD\");\r\n }\r\n break;\r\n case FormFieldType.Cascader.code:\r\n if (data) {\r\n data = data.join(\",\");\r\n }\r\n break;\r\n case FormFieldType.Switch.code:\r\n data = !!data;\r\n if (formControl.controlAttr) {\r\n if (data === true && formControl.controlAttr.onOpeningValue != undefined && formControl.controlAttr.onOpeningValue !== \"\") {\r\n data = formControl.controlAttr.onOpeningValue;\r\n } else if (data === false && formControl.controlAttr.whenClosedValue != undefined && formControl.controlAttr.whenClosedValue !== \"\") {\r\n data = formControl.controlAttr.whenClosedValue;\r\n }\r\n }\r\n break;\r\n case FormFieldType.Custom.code:\r\n if (formControl.controlAttr && formControl.controlAttr.customFieldName) {\r\n const customFormat: CustomFormat = this.dvForm.customFormats[formControl.controlAttr.customFieldName];\r\n if (customFormat && customFormat.output) {\r\n data = customFormat.output(data, formControl.controlAttr);\r\n }\r\n }\r\n }\r\n return data;\r\n }\r\n\r\n /**\r\n * @description: 获取当前日期字符串\r\n * @author ChenRui\r\n * @date 2021/2/4 11:43\r\n */\r\n private nowDateStr(): string {\r\n const time = new Date();\r\n const day = (\"0\" + time.getDate()).slice(-2);\r\n const month = (\"0\" + (time.getMonth() + 1)).slice(-2);\r\n return time.getFullYear() + \"/\" + month + \"/\" + day;\r\n }\r\n\r\n /**\r\n * @description: uuid生成器\r\n * @author ChenRui\r\n * @date 2021/7/20 11:14\r\n */\r\n private getUuid(): string {\r\n const s: any[] = [];\r\n const hexDigits = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\r\n for (let i = 0; i < 36; i++) {\r\n s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);\r\n }\r\n s[14] = \"4\";\r\n s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);\r\n s[8] = s[13] = s[18] = s[23] = \"-\";\r\n const uuid = s.join(\"\");\r\n return uuid;\r\n }\r\n\r\n /**\r\n * @Description: 对比新旧表单值\r\n * @author lzs\r\n * @date 2022/9/3\r\n * @time 21:49\r\n */\r\n private contrast(objectA: any, objectB: any): any {\r\n const object: any = {};\r\n const data: any = {};\r\n const fieldInfoArr: any = [];\r\n if (!objectB || !objectA) {\r\n object.changeLog = \"必传参数不存在\";\r\n return object;\r\n }\r\n const handlerFlag = objectA.handlerFlag;\r\n // console.log(\"======\", this.dvForm.desForm.formGroup.controls);\r\n for (const key in this.dvForm.desForm.formGroup.controls) {\r\n if (!objectA[key] && !objectB[key]) {\r\n continue;\r\n }\r\n const control: AbstractControl = this.getControl(key);\r\n if (!control) {\r\n continue;\r\n }\r\n if (this.getChangedInfo(control, objectA[key], objectB[key])) {\r\n let oldValue = objectA[key]; // 记录新值\r\n const newValue = objectB[key]; // 记录旧值\r\n const fieldInfo: any = {}; //日志信息\r\n if (control.code !== FormFieldType.Custom.code) {\r\n fieldInfo.field_cd = key; //字段英文\r\n const name = control.controlAttr.formFieldDescribe;\r\n fieldInfo.field_nm = name; //字段中文\r\n fieldInfo.field_key = newValue; //当前值\r\n\r\n const newDict = this.translateDictionaries(control, key, newValue); // 新值描述\r\n fieldInfo.field_value = newDict; //当前值描述\r\n\r\n fieldInfo.is_change = \"1\"; //是否变动\r\n\r\n fieldInfo.field_old_key = oldValue; //旧值\r\n const oldDict = this.translateDictionaries(control, key, oldValue); //旧值描述\r\n fieldInfo.field_old_value = oldDict; //field_old_value\r\n object[key] = newValue;\r\n\r\n fieldInfoArr.push(fieldInfo);\r\n if (oldValue === \"null\" || oldValue === \"undefined\") {\r\n oldValue = \"\";\r\n }\r\n const oldName = oldValue ? oldDict : \"空\";\r\n const newName = newValue ? newDict : \"空\";\r\n //除自定义组件均记录日志\r\n object.changeLog = object.changeLog ? object.changeLog + \",\" : \"\";\r\n if (handlerFlag === \"add\") {\r\n object.changeLog = object.changeLog + \"新增【\" + name + \"】\" + \"为“\" + newName + \"”\";\r\n } else {\r\n object.changeLog = object.changeLog + \"修改【\" + name + \"】\" + \"由“\" + oldName + \"”修改为“\" + newName + \"”\";\r\n }\r\n } else {\r\n object[key] = newValue;\r\n }\r\n }\r\n }\r\n object.fieldInfoArr = fieldInfoArr;\r\n return object;\r\n }\r\n /**\r\n * @Description: 获取表单值更改信息\r\n * @author lzs\r\n * @date 2022/10/11\r\n * @time 09:53\r\n */\r\n getChangedInfo(control: any, oldValue: any, newValue: any): boolean {\r\n oldValue = oldValue + \"\";\r\n newValue = newValue + \"\";\r\n if (oldValue === \"null\" || oldValue === \"undefined\") {\r\n return true;\r\n }\r\n let flag = true;\r\n switch (control.code) {\r\n case FormFieldType.Input.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.InputNumber.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Textarea.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Slider.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Rate.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Select.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Checkbox.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Radio.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.TimePicker.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.DatePicker.code:\r\n oldValue = dateFormat.formatDateTime(oldValue, \"YYYY-MM-dd\");\r\n newValue = dateFormat.formatDateTime(newValue, \"YYYY-MM-dd\");\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Cascader.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.TreeSelect.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Switch.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Custom.code:\r\n break;\r\n }\r\n return flag;\r\n }\r\n /**\r\n * @Description: 翻译字典项\r\n * @author lzs\r\n * @date 2022/9/6\r\n * @time 11:54\r\n */\r\n translateDictionaries(control: any, key: any, value: any): string {\r\n let str = value;\r\n switch (control.code) {\r\n case FormFieldType.Input.code:\r\n break;\r\n case FormFieldType.InputNumber.code:\r\n break;\r\n case FormFieldType.Textarea.code:\r\n break;\r\n case FormFieldType.Slider.code:\r\n break;\r\n case FormFieldType.Rate.code:\r\n break;\r\n case FormFieldType.Select.code:\r\n if (control.controlAttr.generalDictionaryOptions) {\r\n control.controlAttr.generalDictionaryOptions.forEach((item: any) => {\r\n if (item.value === value) {\r\n str = item.title;\r\n }\r\n });\r\n } else {\r\n control.controlAttr.optionConfig.forEach((item: any) => {\r\n if (item.value === value) {\r\n str = item.title;\r\n }\r\n });\r\n }\r\n break;\r\n case FormFieldType.Checkbox.code:\r\n str = \"\";\r\n if (value) {\r\n if (control.controlAttr.generalDictionaryOptions) {\r\n control.controlAttr.generalDictionaryOptions.forEach((item: any) => {\r\n value.split(\",\").forEach((index: any) => {\r\n if (item.value === index) {\r\n str = str + item.title + \",\";\r\n }\r\n });\r\n });\r\n } else {\r\n control.controlAttr.optionConfig.forEach((item: any) => {\r\n value.split(\",\").forEach((index: any) => {\r\n if (item.value === index) {\r\n str = str + item.title + \",\";\r\n }\r\n });\r\n });\r\n }\r\n str = str.substring(0, str.length - 1);\r\n }\r\n break;\r\n case FormFieldType.Radio.code:\r\n if (control.controlAttr.generalDictionaryOptions) {\r\n control.controlAttr.generalDictionaryOptions.forEach((item: any) => {\r\n if (item.value === value) {\r\n str = item.title;\r\n }\r\n });\r\n } else {\r\n control.controlAttr.optionConfig.forEach((item: any) => {\r\n if (item.value === value) {\r\n str = item.title;\r\n }\r\n });\r\n }\r\n break;\r\n case FormFieldType.TimePicker.code:\r\n break;\r\n case FormFieldType.DatePicker.code:\r\n str = dateFormat.formatDateTime(value, \"YYYY-MM-dd\");\r\n break;\r\n case FormFieldType.Cascader.code:\r\n str = \"\";\r\n if (value) {\r\n formTreeNodeConvertService.treeNodeConvertToArray(control.controlAttr.treeShapeOptions, [], \"children\").forEach((item: any) => {\r\n value.split(\",\").forEach((index: any) => {\r\n if (item.value === index) {\r\n str = str + item.title + \",\";\r\n }\r\n });\r\n });\r\n str = str.substring(0, str.length - 1);\r\n } else {\r\n str = \"\";\r\n }\r\n break;\r\n case FormFieldType.TreeSelect.code:\r\n str = \"\";\r\n formTreeNodeConvertService.treeNodeConvertToArray(control.controlAttr.treeShapeOptions, [], \"children\").forEach((item: any) => {\r\n if (item.value === value) {\r\n str = str + item.title;\r\n }\r\n });\r\n break;\r\n case FormFieldType.Switch.code:\r\n str = value ? \"开\" : \"关\";\r\n break;\r\n case FormFieldType.Custom.code:\r\n break;\r\n default:\r\n str = value;\r\n break;\r\n }\r\n return str;\r\n }\r\n\r\n /**\r\n * @Description 根据报送类型返回需要隐藏的表单字段\r\n * @Author JiangTao\r\n * @Date 2024-01-30 上午 09:33\r\n */\r\n getFormSubmittedType(form: any, code: any) {\r\n const strArr = code && code.length > 0 ? code : [];\r\n const list: any = this.dvForm.desForm.controls[0].subControls;\r\n const subControlsList: any = formToolsService.loadResource(this.dvForm.desForm.formId).controls[0].subControls;\r\n const submittedTypeList: any = [];\r\n if (strArr.length > 0) {\r\n // 遍历组件实例\r\n list.forEach((item: any, index: any) => {\r\n if (item.formControl) {\r\n // 校验当前字段是否已隐藏,已隐藏的字段不做处理\r\n if (!form.getAttribute(item.formControl.key, Attribute.IsHideControl)) {\r\n // 处理普通表单控件\r\n submittedTypeList.push(item.formControl.key);\r\n // 初始化字段是否隐藏属性\r\n form.setAttribute(item.formControl.key, Attribute.IsHideControl, subControlsList[index].controlAttr.isHideControl);\r\n // 筛选报送类型字段数据处理\r\n this.handleSubmittedData(submittedTypeList, strArr, item);\r\n }\r\n } else if (item.subControls) {\r\n // 处理栅格中表单控件\r\n // 遍历栅格中控件\r\n item.subControls.forEach((control: any, num: any) => {\r\n // 校验当前字段是否已隐藏,已隐藏的字段不做处理\r\n if (!form.getAttribute(control.formControl.key, Attribute.IsHideControl)) {\r\n submittedTypeList.push(control.formControl.key);\r\n // 初始化字段是否隐藏属性\r\n form.setAttribute(control.formControl.key, Attribute.IsHideControl, subControlsList[index].subControls[num].controlAttr.isHideControl);\r\n // 筛选报送类型字段数据处理\r\n this.handleSubmittedData(submittedTypeList, strArr, control);\r\n }\r\n });\r\n }\r\n });\r\n // 隐藏无需展示的表单字段\r\n submittedTypeList.forEach((item: any) => {\r\n form.setAttribute(item, Attribute.IsHideControl, true);\r\n });\r\n } else {\r\n // 默认展示全部字段\r\n list.forEach((item: any, index: any) => {\r\n if (item.formControl) {\r\n form.setAttribute(item.formControl.key, Attribute.IsHideControl, subControlsList[index].controlAttr.isHideControl);\r\n } else if (item.subControls) {\r\n item.subControls.forEach((control: any, num: any) => {\r\n form.setAttribute(control.formControl.key, Attribute.IsHideControl, subControlsList[index].subControls[num].controlAttr.isHideControl);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @Description 筛选报送类型字段数据处理\r\n * @Author JiangTao\r\n * @Date 2024-01-30 下午 08:50\r\n */\r\n private handleSubmittedData(submittedTypeList: any, codeArr: any, submittedData: any): void {\r\n let submittedType: any = [];\r\n if (JSON.parse(submittedData.formControl.controlAttr.busAttr).submittedType !== \"\") {\r\n // 获取字段报送类型\r\n submittedType = JSON.parse(submittedData.formControl.controlAttr.busAttr).submittedType.split(\",\");\r\n // 遍历查询报送类型\r\n for (let i = 0; i < codeArr.length; i++) {\r\n // 判断是否为查询的报送类型字段\r\n if (submittedType.filter((type: any) => type === codeArr[i]).length > 0 && submittedTypeList.indexOf(submittedData.formControl.key) >= 0) {\r\n submittedTypeList.splice(submittedTypeList.indexOf(submittedData.formControl.key), 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @Description 获取报送类型枚举(数组)\r\n * @Author JiangTao\r\n * @Date 2024-01-30 下午 03:30\r\n */\r\n getSubmittedType() {\r\n const list: any = [];\r\n Object.values(SubmittedType).forEach((item: any) => {\r\n list.push({\r\n value: item.code,\r\n label: item.name,\r\n });\r\n });\r\n return list;\r\n }\r\n}\r\n","\r\nimport DvFormLayout from \"./DvFormLayout.vue\";\r\nimport { Options, Prop, Provide, Watch, Vue } from \"vue-property-decorator\";\r\nimport { DesForm } from \"@/domain\";\r\nimport { FormFieldClass, DynamicOptionType, OptionType, ValidateRules } from \"@/constants\";\r\nimport { formToolsService } from \"@/services\";\r\nimport { Control } from \"@/domain\";\r\nimport { DesFormControl } from \"@/domain\";\r\nimport { FormGroup } from \"@/domain\";\r\nimport { FormControl } from \"@/domain\";\r\nimport { formBeanUtilsService } from \"@/services\";\r\nimport { FormApi } from \"@/core\";\r\nimport { FormFieldType } from \"@/constants\";\r\nimport { ProvideInjectData } from \"@/domain/ProvideInjectData\";\r\nimport { validateGeneratorService } from \"@/services\";\r\nimport { CustomFormat, FieldChangeHistory } from \"../../domain\";\r\nimport { extractOptions } from \"@/filtres/extract-options.filter\";\r\n// import { DynamicOptionType, OptionType } from \"../../constants/enum\";\r\nimport { NzTreeNodeOptions } from \"@/services\";\r\n\r\nexport type NfFormMode = \"manual\" | \"auto\";\r\n\r\nexport type NfStyleMode = \"default\" | \"trust\" | \"credit-rd\";\r\n\r\nexport type NfFormTheme = \"default\" | \"gray\";\r\n/**\r\n * @description: 动态表单\r\n * @author ChenRui\r\n * @date 2020/12/30 11:20\r\n */\r\n@Options({\r\n name: \"DyForm\",\r\n components: {\r\n DvFormLayout: DvFormLayout,\r\n },\r\n})\r\nexport default class DyForm extends Vue {\r\n @Prop({ default: \"刘波\", type: String }) formId: string | undefined;\r\n @Prop() mode: NfFormMode | undefined;\r\n @Prop({ type: String, default: \"default\" }) styleMode!: NfStyleMode;\r\n @Prop() srcDesForm: DesForm | undefined;\r\n @Prop({ default: false, type: Boolean }) edit!: boolean;\r\n @Prop({ default: false, type: Boolean }) colon!: boolean;\r\n @Prop({ default: \"130px\", type: String }) labelSpan!: string;\r\n @Prop({ default: undefined }) controlSpan!: any;\r\n @Prop({ type: Object }) formApi: FormApi | undefined;\r\n @Prop({ type: Array }) history: FieldChangeHistory | undefined;\r\n @Prop({ type: Object, default: () => ({}) }) customFormats!: {\r\n [key: string]: CustomFormat;\r\n };\r\n @Prop() refreshArguments: any; // 刷新自变量\r\n @Prop({ default: false }) widthCompatibleMode!: boolean; // 宽度计算模式\r\n @Prop({ type: String }) formTheme!: NfFormTheme; // 表单主题\r\n @Prop({ type: Array }) linkList: any | undefined; // 需要添加超链接点击事件数组 例:['cifNo', 'prodBaseNo']\r\n @Prop({ type: Array }) formLimits!: any[]; // 表单权限\r\n\r\n private metaRefresh: any = new Date().getTime(); // 刷新标识\r\n private refreshCheckFeedbackFlag = new Date().getTime(); // 刷新校验标识\r\n private sysDictDetailOptions: NzTreeNodeOptions[] = []; // 常规字典\r\n private sysDictTreeDetailOptions: NzTreeNodeOptions[] = []; // 树形字典\r\n private formValidateStateResetMark: any = new Date().getTime(); // 重置校验标识\r\n\r\n desForm: DesForm = new DesForm();\r\n\r\n @Provide() provideInjectData: ProvideInjectData = {\r\n edit: (this.$props as any).edit,\r\n labelSpan: (this.$props as any).labelSpan,\r\n controlSpan: (this.$props as any).controlSpan,\r\n colon: (this.$props as any).colon,\r\n metaRefresh: this.metaRefresh,\r\n refreshCheckFeedbackFlag: this.refreshCheckFeedbackFlag,\r\n widthCompatibleMode: (this.$props as any).widthCompatibleMode,\r\n formValidateStateResetMark: this.formValidateStateResetMark,\r\n };\r\n\r\n /**\r\n * @description: 刷新自变量监听处理\r\n * @author ChenRui\r\n * @date 2021/2/5 10:25\r\n */\r\n @Watch(\"refreshArguments\", { immediate: true })\r\n onRefreshArgumentsHandler(newVal: any): void {\r\n this.metaRefresh = newVal;\r\n }\r\n\r\n /**\r\n * @description: 重置表单校验状态监听\r\n * @author ChenRui\r\n * @date 2022/4/6 14:17\r\n */\r\n @Watch(\"formValidateStateResetMark\")\r\n onPropFormValidateStateResetHandler(newVal: any): void {\r\n if ((this as any)._provided) {\r\n ((this as any)._provided as any).provideInjectData.formValidateStateResetMark = this.formValidateStateResetMark;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 值变更处理器\r\n * @author ChenRui\r\n * @date 2021/1/8 11:03\r\n */\r\n @Watch(\"edit\")\r\n @Watch(\"labelSpan\")\r\n @Watch(\"controlSpan\")\r\n @Watch(\"metaRefresh\")\r\n @Watch(\"refreshCheckFeedbackFlag\")\r\n @Watch(\"widthCompatibleMode\")\r\n onPropHandler(newVal: any): void {\r\n if (this) {\r\n this.provideInjectData.edit = this.edit;\r\n this.provideInjectData.labelSpan = this.labelSpan;\r\n this.provideInjectData.controlSpan = this.controlSpan;\r\n this.provideInjectData.metaRefresh = this.metaRefresh;\r\n this.provideInjectData.refreshCheckFeedbackFlag = this.refreshCheckFeedbackFlag;\r\n this.provideInjectData.widthCompatibleMode = this.widthCompatibleMode;\r\n }\r\n }\r\n\r\n get loFormTheme(): string {\r\n const win: any = window;\r\n const themes = [\"default\", \"gray\"];\r\n const formTheme = themes.indexOf(this.formTheme) > -1 ? this.formTheme : win.$loFormTheme;\r\n return themes.indexOf(formTheme) > -1 ? formTheme : themes[0];\r\n }\r\n\r\n get loFormLimit(): any {\r\n const formLimitObj: any = {};\r\n this.formLimits?.forEach((item: any) => {\r\n formLimitObj[item.id] = item;\r\n });\r\n return formLimitObj;\r\n }\r\n\r\n /**\r\n * @Description 表单数据反显回调(data:Object { key: 元素码值, value: 元素值 })\r\n * @Author JiangTao\r\n * @Date 2023-10-07 下午 05:16\r\n */\r\n linkClick(data: any) {\r\n this.$emit(\"linkClick\", data);\r\n }\r\n\r\n created() {\r\n this.initDict();\r\n }\r\n\r\n mounted() {\r\n if (this.formId) {\r\n this.initDesForm();\r\n } else if (this.desForm) {\r\n this.formatDesForm();\r\n }\r\n }\r\n\r\n @Watch(\"formId\")\r\n private onFormIdChanged() {\r\n this.initDesForm();\r\n }\r\n\r\n @Watch(\"srcDesForm\", { immediate: true })\r\n private onSrcDesFormChanged(newVal: DesForm) {\r\n if (newVal != null) {\r\n this.desForm = formBeanUtilsService.copy(newVal);\r\n this.formatDesForm();\r\n }\r\n }\r\n\r\n /**\r\n * @description: 初始化表单\r\n * @author ChenRui\r\n * @date 2020/11/23 11:19\r\n */\r\n private initDesForm(): void {\r\n if (this.formId != null && this.formId !== \"\") {\r\n this.desForm = formToolsService.loadResource(this.formId);\r\n this.formatDesForm();\r\n }\r\n }\r\n\r\n /**\r\n * @description: 初始化字典\r\n * @author ChenRui\r\n * @date 2021/3/12 10:12\r\n */\r\n private initDict(): void {\r\n this.sysDictDetailOptions = formToolsService.sysDictDetailOptions;\r\n this.sysDictTreeDetailOptions = formToolsService.sysDictTreeDetailOptions;\r\n }\r\n\r\n /**\r\n * @description: 格式化表单\r\n * @author ChenRui\r\n * @date 2020/11/30 16:05\r\n */\r\n private formatDesForm(isReset?: boolean): void {\r\n if (this.desForm != null && this.desForm.controls != null && this.desForm.controls.length > 0) {\r\n const model = this.analysisBindingObjects();\r\n this.desForm.formGroup = this.generateFormGroup(model);\r\n this.initControlForm(this.desForm.controls, this.desForm.formGroup);\r\n this.generateFormApi(isReset);\r\n if (this.history != null) {\r\n this.formApi?.setFieldChangeHistory(this.history);\r\n }\r\n this.$emit(\"complete\");\r\n }\r\n }\r\n /**\r\n * @Description: 临时-该方法被取消\r\n * @author LiuBo\r\n * @date 2022/11/6\r\n * @time 17:11\r\n */\r\n private fixFormLayout() {\r\n this.$nextTick(() => {\r\n console.log(\"自动修改表单宽度\");\r\n try {\r\n const formView: any = this.$refs.formView;\r\n const cons = formView.getElementsByClassName(\"lo-control-container\");\r\n const len = cons.length;\r\n for (let i = 0; i < len - 1; i++) {\r\n if (cons[i].offsetLeft === cons[i + 1].offsetLeft && cons[i].clientWidth < cons[i + 1].clientWidth) {\r\n cons[i].style.width = \"200%\";\r\n } else {\r\n cons[i].style.width = \"100%\";\r\n }\r\n }\r\n if (len > 2) {\r\n const con1 = cons[len - 1];\r\n const con2 = cons[len - 2];\r\n if (con1.clientWidth === con2.clientWidth && con1.offsetLeft !== con2.offsetLeft) {\r\n con1.style.width = \"200%\";\r\n } else {\r\n con1.style.width = \"100%\";\r\n }\r\n }\r\n } catch (e) {\r\n console.error(\"自动修改表单宽度错误\" + e);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @description: 生成表单对象\r\n * @author ChenRui\r\n * @date 2021/1/7 20:48\r\n */\r\n private generateFormApi(isReset?: boolean): void {\r\n if (isReset) {\r\n const formApi: FormApi = new FormApi(this.formApi);\r\n formApi.dvForm = this;\r\n this.$emit(\"update:formApi\", formApi);\r\n } else {\r\n if (this.formApi) {\r\n this.formApi.dvForm = this;\r\n this.$emit(\"update:formApi\", this.formApi);\r\n } else {\r\n const formApi = new FormApi({ dvForm: this });\r\n this.$emit(\"update:formApi\", formApi);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 解析对象\r\n * @author ChenRui\r\n * @date 2020/11/25 16:25\r\n */\r\n private analysisBindingObjects(): any {\r\n const models: any[] = this.objectExtraction(this.desForm!.controls);\r\n let obj: any = {};\r\n if (models != null && models.length > 0) {\r\n models.forEach((item) => {\r\n if (Object.keys(item).length > 0) {\r\n obj = this.objectMerge(obj, item[Object.keys(item)[0]]);\r\n }\r\n });\r\n }\r\n return obj;\r\n }\r\n\r\n /**\r\n * @description: 对象抽取\r\n * @author ChenRui\r\n * @date 2020/11/25 17:28\r\n */\r\n private objectExtraction(controls: Control[], models: any[] = []): any {\r\n controls.forEach((item) => {\r\n if (item.type === FormFieldClass.Layout.code) {\r\n if (item.subControls != null && item.subControls.length > 0) {\r\n return this.objectExtraction(item.subControls, models);\r\n }\r\n } else {\r\n const desFormControl: DesFormControl = item?.controlAttr as DesFormControl;\r\n const boundProperty: string = desFormControl.boundProperty;\r\n if (boundProperty) {\r\n /* 初始化字典项数据 */\r\n if (desFormControl.generalDictionary || desFormControl.treeShape) {\r\n if (desFormControl.isOptionType === OptionType.Dynamic.code) {\r\n if (desFormControl.dynamicOptionType === DynamicOptionType.GeneralDictionary.code) {\r\n desFormControl.generalDictionaryOptions = this.findDictOptions(desFormControl.generalDictionary, this.sysDictDetailOptions);\r\n } else if (desFormControl.dynamicOptionType === DynamicOptionType.TreeDictionary.code) {\r\n desFormControl.treeShapeOptions = this.findDictOptions(desFormControl.treeShape, this.sysDictTreeDetailOptions);\r\n }\r\n }\r\n }\r\n /*初始化默认值*/\r\n const propertys: string[] = boundProperty.split(\".\");\r\n let lastMd: any = {};\r\n const md = { lastMd };\r\n propertys.forEach((val, idx, array) => {\r\n if (idx < array.length - 1) {\r\n lastMd[val] = {};\r\n lastMd = lastMd[val];\r\n } else {\r\n const defaultValue: any = formBeanUtilsService.parse((item.controlAttr as DesFormControl).fieldDefaultValue) || \"\";\r\n lastMd[val] = this.securityValue(item, defaultValue);\r\n }\r\n });\r\n models.push(md.lastMd);\r\n }\r\n }\r\n });\r\n return models;\r\n }\r\n\r\n /**\r\n * @description: 查询字典\r\n * @author ChenRui\r\n * @date 2021/3/11 17:19\r\n */\r\n private findDictOptions(key: string, nzTreeNodeOptions: NzTreeNodeOptions[]): NzTreeNodeOptions[] {\r\n if (nzTreeNodeOptions != null && nzTreeNodeOptions.length > 0) {\r\n for (const item of nzTreeNodeOptions) {\r\n if (item.key === key) {\r\n (item.children || []).forEach((item) => {\r\n item.disabled = false;\r\n });\r\n return item.children || [];\r\n } else if (item.children && item.children.length > 0) {\r\n const subTtems: NzTreeNodeOptions[] = this.findDictOptions(key, item.children);\r\n if (subTtems != null && subTtems.length > 0) {\r\n return subTtems;\r\n }\r\n }\r\n }\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @description: 安全值处理\r\n * @author ChenRui\r\n * @date 2021/1/29 17:01\r\n */\r\n securityValue(control: Control, defaultValue: any): any {\r\n if (control.code === FormFieldType.DatePicker.code || control.code === FormFieldType.TimePicker.code) {\r\n if (defaultValue) {\r\n return defaultValue;\r\n } else {\r\n return null;\r\n }\r\n } else if (control.code === FormFieldType.TreeSelect.code) {\r\n const options = extractOptions(control.controlAttr);\r\n if (options && options.length > 0 && defaultValue) {\r\n defaultValue = this.treeSelectRecursion(defaultValue, options);\r\n }\r\n return defaultValue;\r\n } else if (control.code === FormFieldType.Upload.code) {\r\n return defaultValue || [];\r\n } else if (control.code === FormFieldType.Switch.code) {\r\n if (control.controlAttr && (control.controlAttr as DesFormControl).onOpeningValue) {\r\n return defaultValue === true || defaultValue === (control.controlAttr as DesFormControl).onOpeningValue ? true : false;\r\n } else if (control.controlAttr && (control.controlAttr as DesFormControl).whenClosedValue) {\r\n return defaultValue === false || defaultValue === (control.controlAttr as DesFormControl).whenClosedValue ? false : true;\r\n }\r\n return defaultValue;\r\n } else {\r\n return defaultValue;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 树形递归\r\n * @author ChenRui\r\n * @date 2021/1/11 0:23\r\n */\r\n treeSelectRecursion(value: any, items: any[]): any {\r\n for (let i = 0; i < items.length; i++) {\r\n if (items[i].key === value) {\r\n return items[i].value;\r\n } else if (items[i].children && items[i].children.length > 0) {\r\n const subValue = this.treeSelectRecursion(value, items[i].children);\r\n if (subValue) {\r\n return subValue;\r\n }\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @description: 对象合并\r\n * @author ChenRui\r\n * @date 2020/11/25 17:49\r\n */\r\n private objectMerge(modelX: any, modelY: any): any {\r\n let key;\r\n for (key in modelY) {\r\n if (modelX[key] && modelX[key].toString() === \"[object Object]\" && modelY[key] && modelY[key].toString() === \"[object Object]\") {\r\n modelX[key] = this.objectMerge(modelX[key], modelY[key]);\r\n } else {\r\n modelX[key] = modelX[key] = modelY[key];\r\n }\r\n }\r\n return modelX;\r\n }\r\n\r\n /**\r\n * @description: 生成表单对象\r\n * @author ChenRui\r\n * @date 2020/11/26 11:02\r\n */\r\n private generateFormGroup(model: any): FormGroup {\r\n const group: FormGroup = new FormGroup();\r\n if (model != null) {\r\n Object.keys(model).forEach((key) => {\r\n if (Object.prototype.toString.call(model[key]) === \"[object Object]\") {\r\n const subFormGroup: FormGroup = this.generateFormGroup(model[key]);\r\n subFormGroup.key = key;\r\n group.addControl(key, subFormGroup);\r\n } else {\r\n const formControl: FormControl = new FormControl(model[key]);\r\n formControl.key = key;\r\n group.addControl(key, formControl);\r\n }\r\n });\r\n }\r\n return group;\r\n }\r\n\r\n /**\r\n * @description: 创建表单对象\r\n * @author ChenRui\r\n * @date 2020/11/23 11:19\r\n */\r\n private initControlForm(controls: Control[], formGroup: FormGroup): void {\r\n controls.forEach((control: any) => {\r\n if (control.type === FormFieldClass.Base.code || control.type === FormFieldClass.Senior.code) {\r\n control.formApi = this.formApi; // 表单控制类对象\r\n const boundProperty: string = (control.controlAttr as DesFormControl)?.boundProperty;\r\n if (boundProperty) {\r\n const propertys: string[] = boundProperty.split(\".\");\r\n if (propertys.length > 1 && formGroup != null) {\r\n const formControl: FormControl = this.findFormControlByProperty(propertys.slice(1, propertys.length), formGroup);\r\n const controlAttr: DesFormControl = control.controlAttr as any;\r\n // console.log(\"接受到的表单权限信息\", this.loFormLimit);\r\n const property = propertys[propertys.length - 1];\r\n const formLimit = this.loFormLimit[property];\r\n if (formLimit) {\r\n controlAttr.isHideControl = formLimit.isHide === \"1\";\r\n controlAttr.isNotEdit = formLimit.isNotEdit === \"1\";\r\n const requiredIndex = controlAttr.verificationRules?.findIndex((item: any) => item.ruleType === ValidateRules.Required.code);\r\n if (formLimit.isMustFill == \"1\" && requiredIndex == -1) {\r\n // 添加必输校验\r\n controlAttr.verificationRules.push({ ruleType: ValidateRules.Required.code });\r\n } else if (formLimit.isMustFill != \"1\" && requiredIndex > -1) {\r\n // 移除必输校验\r\n controlAttr.verificationRules.splice(requiredIndex, 1);\r\n }\r\n }\r\n formControl.code = control.code;\r\n formControl.controlAttr = controlAttr;\r\n validateGeneratorService.fillCheckRule(formControl, controlAttr);\r\n control[\"formControl\"] = formControl;\r\n }\r\n }\r\n } else if (control.type === FormFieldClass.Layout.code && control.subControls != null && control.subControls.length > 0) {\r\n this.initControlForm(control.subControls, formGroup);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @description: 按照节点查询控件\r\n * @author ChenRui\r\n * @date 2020/11/26 15:45\r\n */\r\n private findFormControlByProperty(propertys: string[], formGroup: FormGroup): FormControl | any {\r\n let currentFormGroup = formGroup;\r\n for (let i = 0; i < propertys.length; i++) {\r\n const formObject = currentFormGroup.get(propertys[i]);\r\n if (i < propertys.length - 1 && formObject != null && formObject instanceof FormGroup) {\r\n currentFormGroup = formObject;\r\n } else {\r\n return formObject;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 控件值变化事件处理\r\n * @author ChenRui\r\n * @date 2020/12/2 14:35\r\n */\r\n onChange(event: any): void {\r\n this.$emit(\"change\", event);\r\n }\r\n\r\n /**\r\n * @description: 下拉选项新增\r\n * @author ChenRui\r\n * @date 2021/1/14 20:05\r\n */\r\n selectAddItem(event: any): void {\r\n this.$emit(\"add-item\", event);\r\n }\r\n\r\n /**\r\n * @description: 单击事件\r\n * @author ChenRui\r\n * @date 2021/3/4 11:39\r\n */\r\n onClick(event: any): void {\r\n this.$emit(\"click\", event);\r\n }\r\n\r\n /**\r\n * @description: 内置前置标签事件\r\n * @author ChenRui\r\n * @date 2021/4/23 9:42\r\n */\r\n onAddonBeforeHandler(event: any): void {\r\n this.$emit(\"addon-before\", event);\r\n }\r\n\r\n /**\r\n * @description: 内置后置标签事件\r\n * @author ChenRui\r\n * @date 2021/4/23 9:43\r\n */\r\n onAddonAfterHandler(event: any): void {\r\n this.$emit(\"addon-after\", event);\r\n }\r\n\r\n /**\r\n * @description: 获取焦点\r\n * @author ChenRui\r\n * @date 2021/3/4 11:46\r\n */\r\n onFocus(event: Control): void {\r\n this.$emit(\"focus\", event);\r\n }\r\n\r\n /**\r\n * @description: 失焦事件\r\n * @author ChenRui\r\n * @date 2021/3/4 11:38\r\n */\r\n onBlur(event: Control): void {\r\n this.$emit(\"blur\", event);\r\n }\r\n}\r\n","import { render } from \"./DvForm.vue?vue&type=template&id=53fc1ce0&scoped=true&ts=true\"\nimport script from \"./DvForm.vue?vue&type=script&lang=ts\"\nexport * from \"./DvForm.vue?vue&type=script&lang=ts\"\n\nimport \"./DvForm.vue?vue&type=style&index=0&id=53fc1ce0&lang=scss&scoped=true\"\n\nimport exportComponent from \"E:\\\\base-frontend\\\\vue-lo3-form-260417\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-53fc1ce0\"]])\n\nexport default __exports__","import { App } from \"vue\";\r\nimport DyForm from \"./components/form/DvForm.vue\";\r\nimport { formToolsService } from \"@/services\";\r\nimport { DEFAULT_FORM_FILE_NAME } from \"./constants/config/form.config\";\r\nimport { formLocalForageService } from \"@/services\";\r\nimport { dictLocalForageService } from \"@/services\";\r\nimport { create, subtractDependencies, addDependencies, multiplyDependencies, divideDependencies, formatDependencies, evaluateDependencies, MathJsStatic } from \"mathjs\";\r\nimport { cleanLocalForageService } from \"@/services\";\r\n\r\nexport * from \"./components/index\";\r\nexport * from \"./constants/index\";\r\nexport * from \"./core/index\";\r\nexport * from \"./domain/index\";\r\nexport * from \"./services/index\";\r\nexport * from \"./store/index\";\r\nexport * from \"./types/vfForm\";\r\nimport \"./styles/index.scss\";\r\n\r\nimport \"dayjs/locale/zh-cn\";\r\nimport dayjs from \"dayjs\";\r\n\r\nconst components: any = {\r\n DyForm,\r\n};\r\n\r\nconst install: any = function (app: App, options: any) {\r\n if (install.installed) return;\r\n install.installed = true;\r\n // Modal.install(vue);\r\n Object.keys(components).forEach((key) => {\r\n app.component(key, components[key]);\r\n });\r\n dayjs.locale(\"zh-cn\");\r\n\r\n const url: string = options && options.url ? options.url : \"./resources/json/\" + DEFAULT_FORM_FILE_NAME;\r\n app.config.globalProperties.$qlForm = {\r\n url: url,\r\n contextPath: options.contextPath || \"/ms-loong\",\r\n dictUrl: options && options.dictUrl ? options.dictUrl : \"\",\r\n dictRestLoadMode: options && options.dictRestLoadMode ? options.dictRestLoadMode : \"GET\",\r\n dictRestLoadBody: options && options.dictRestLoadBody ? options.dictRestLoadBody : undefined,\r\n dictRestLoadHeaders: options && options.dictRestLoadHeaders ? options.dictRestLoadHeaders : undefined,\r\n dictRestLoadOnlyBody: options && options.dictRestLoadOnlyBody ? options.dictRestLoadOnlyBody : false,\r\n loadMode: options && options.loadMode ? options.loadMode : \"static\",\r\n appId: options && options.appId ? options.appId : \"\",\r\n onlySimpleLoadConfig: options && options.onlySimpleLoadConfig ? options.onlySimpleLoadConfig : false,\r\n urls: options?.urls,\r\n dictUrls: options?.dictUrls,\r\n desApiAddr: options?.desApiAddr || \"\",\r\n };\r\n app.config.globalProperties.$formToolsService = formToolsService;\r\n (window as any).$app = app;\r\n cleanLocalForageService.init();\r\n formLocalForageService.init();\r\n dictLocalForageService.init();\r\n\r\n const mathjsDependencies: any = {\r\n formatDependencies,\r\n subtractDependencies,\r\n multiplyDependencies,\r\n evaluateDependencies,\r\n addDependencies,\r\n divideDependencies,\r\n };\r\n const mathjs: Partial<MathJsStatic> = create(mathjsDependencies, {\r\n number: \"BigNumber\",\r\n precision: 20,\r\n });\r\n app.config.globalProperties.$mathjs = mathjs;\r\n};\r\n\r\nconst VueLoForm = {\r\n install,\r\n};\r\nexport default VueLoForm;\r\n","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n","const ZoomType = {\r\n enlarge: { code: \"1\", name: \"放大\" },\r\n narrow: { code: \"2\", name: \"缩小\" },\r\n automatic: { code: \"3\", name: \"自动\" },\r\n};\r\nexport { ZoomType };\r\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack://vue3-lo-form/webpack/universalModuleDefinition","webpack://vue3-lo-form/webpack/bootstrap","webpack://vue3-lo-form/external \"vue-property-decorator\"","webpack://vue3-lo-form/./src/constants/enum/dynamic-option-type.enum.ts","webpack://vue3-lo-form/external \"core-js/modules/es.array.push.js\"","webpack://vue3-lo-form/./src/constants/enum/validate-status.enum.ts","webpack://vue3-lo-form/external \"dayjs/locale/zh-cn\"","webpack://vue3-lo-form/external \"ant-design-vue\"","webpack://vue3-lo-form/./src/constants/enum/option-type.enum.ts","webpack://vue3-lo-form/external \"dayjs\"","webpack://vue3-lo-form/external \"vue\"","webpack://vue3-lo-form/external \"@ant-design/icons-vue\"","webpack://vue3-lo-form/./src/constants/enum/cache-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/form-field-class.enum.ts","webpack://vue3-lo-form/./src/components/form/DvForm.vue?31ad","webpack://vue3-lo-form/external \"mathjs\"","webpack://vue3-lo-form/external \"ant-design-vue/es/date-picker/locale/zh_CN\"","webpack://vue3-lo-form/external \"localforage\"","webpack://vue3-lo-form/external \"moment\"","webpack://vue3-lo-form/./src/constants/enum/switch.enum.ts","webpack://vue3-lo-form/./src/constants/enum/form-field-type.enum.ts","webpack://vue3-lo-form/./src/components/form/DvFormLayout.vue?8339","webpack://vue3-lo-form/./src/constants/enum/builtIn-label.enum.ts","webpack://vue3-lo-form/./src/constants/enum/control-format-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/form-bus-attr.enum.ts","webpack://vue3-lo-form/./src/constants/enum/form-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/lateral-arrangement.enum.ts","webpack://vue3-lo-form/./src/constants/enum/money-unit.enum.ts","webpack://vue3-lo-form/./src/constants/enum/submitted-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/support-upload-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/upload-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/validate-rules.enum.ts","webpack://vue3-lo-form/./src/constants/enum/vertical-arrangement.enum.ts","webpack://vue3-lo-form/external \"tslib\"","webpack://vue3-lo-form/./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js","webpack://vue3-lo-form/external \"core-js/modules/es.error.cause.js\"","webpack://vue3-lo-form/./src/components/form/StretchText.vue?bd88","webpack://vue3-lo-form/./src/services/validate-generator.service.ts","webpack://vue3-lo-form/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://vue3-lo-form/./src/components/form/DvForm.vue?39c5","webpack://vue3-lo-form/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://vue3-lo-form/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://vue3-lo-form/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://vue3-lo-form/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://vue3-lo-form/./src/components/form/DvFormLayout.vue?8401","webpack://vue3-lo-form/./src/constants/config/form-template.config.ts","webpack://vue3-lo-form/./src/constants/encode-assets/svg.ts","webpack://vue3-lo-form/./src/filtres/generate-grid-template-columns.filter.ts","webpack://vue3-lo-form/./src/filtres/generate-grid-column-end.filter.ts","webpack://vue3-lo-form/./src/services/api.service.ts","webpack://vue3-lo-form/./src/constants/config/storage.config.ts","webpack://vue3-lo-form/./src/services/clean-local-forage.service.ts","webpack://vue3-lo-form/./src/services/dict-local-forage.service.ts","webpack://vue3-lo-form/./src/services/form-bean-utils.service.ts","webpack://vue3-lo-form/./src/services/form-local-forage.service.ts","webpack://vue3-lo-form/./src/domain/DesForm.ts","webpack://vue3-lo-form/./src/domain/DesFormLayout.ts","webpack://vue3-lo-form/./src/services/form-tree-node-convert.service.ts","webpack://vue3-lo-form/./src/store/form.store.ts","webpack://vue3-lo-form/./src/store/dict.store.ts","webpack://vue3-lo-form/./src/constants/config/form.config.ts","webpack://vue3-lo-form/./src/services/router.service.ts","webpack://vue3-lo-form/./src/services/form-validate.service.ts","webpack://vue3-lo-form/./src/services/form-tools.service.ts","webpack://vue3-lo-form/./src/filtres/amount-capitalization.filter.ts","webpack://vue3-lo-form/./src/domain/DesFormControl.ts","webpack://vue3-lo-form/./src/domain/AbstractControl.ts","webpack://vue3-lo-form/./src/domain/FormControl.ts","webpack://vue3-lo-form/./src/domain/FormGroup.ts","webpack://vue3-lo-form/./src/filtres/extract-options.filter.ts","webpack://vue3-lo-form/./src/filtres/zoom-multiple.filter.ts","webpack://vue3-lo-form/./src/filtres/switch-enum-convert.filter.ts","webpack://vue3-lo-form/./src/components/form/StretchText.vue?7195","webpack://vue3-lo-form/./src/components/form/StretchText.vue","webpack://vue3-lo-form/./src/components/form/StretchText.vue?31a7","webpack://vue3-lo-form/./public/js/pinyin.ts","webpack://vue3-lo-form/./src/components/form/DvFormLayout.vue","webpack://vue3-lo-form/./src/components/form/DvFormLayout.vue?c1f7","webpack://vue3-lo-form/./src/services/date-format.service.ts","webpack://vue3-lo-form/./src/core/FormApi.ts","webpack://vue3-lo-form/./src/components/form/DvForm.vue","webpack://vue3-lo-form/./src/components/form/DvForm.vue?6916","webpack://vue3-lo-form/./src/index.ts","webpack://vue3-lo-form/./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js","webpack://vue3-lo-form/./src/constants/enum/zoom-type.ts"],"names":["root","factory","exports","module","define","amd","self","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","require","DynamicOptionType","GeneralDictionary","code","TreeDictionary","ValidateStatus","Success","Warning","Error","Validating","OptionType","Fixed","Dynamic","CacheType","FORM","TABLE","DICT","FormFieldClass","Layout","icon","Base","Senior","Switch","Disable","Enable","FormFieldType","Input","type","Textarea","InputNumber","Select","Radio","Checkbox","TimePicker","DatePicker","Slider","Rate","Upload","Editor","Cascader","TreeSelect","Custom","Empty","Grid","BuiltLabel","ORDERED_LIST","ControlFormatType","GENERAL","AMOUNT_OF_MONEY","BANK_CARD_NUMBER","CELL_PHONE_NUMBER","LANDLINE_NUMBER","FormBusAttr","SUBMITTED_TYPE","IS_SUPPLEMENT","IS_KEY_ELEMENTS","IS_TRACK","FormType","Pc","Mobile","LateralArrangement","AlignLeft","RightAlignment","Center","BothSidesAreEquallySpaced","AlignBothEnds","MoneyUnit","Yuan","TenThousandYuan","HundredMillionYuan","SubmittedType","EAST","CITIC","TOTAL_ELEMENTS","PBC_CAPITAL_DECLARATION","ENTERPRISE_CREDIT_REFERENCE","OTOHAF_SUBMISSION","EAST_F","PERSONAL_CREDIT","BS_09","BS_10","BS_11","BS_12","BS_13","BS_14","BS_15","BS_16","BS_17","BS_18","BS_19","BS_20","BS_21","BS_22","BS_23","BS_24","BS_25","BS_26","BS_27","BS_28","BS_29","BS_30","SupportUploadType","Arbitrarily","UploadType","Jpeg","Png","Gif","Bmp","Doc","html","Mp3","Mp4","Pdf","Ppt","Xls","Xml","Zip","Wps","ValidateRules","SameValue","hasContent","hasDescribe","MailBox","RegEx","MinTextLength","MaxTextLength","MinValue","MaxValue","SpecifiedValue","SpecifiedDigitsNumber","DateNotEarlierThan","DateNoLaterThan","SpecifiedRangeNumber","PhoneNumber","Required","LineUnique","LetterSpace","AlphanumericUnderline","Alphanumeric","JsMethodVerification","BackEndVerification","LandlineNumber","VerticalArrangement","AlignRight","textAlign","AlignTop","default","sfc","props","target","__vccOpts","val","ValidateGeneratorService","fillCheckRule","formControl","controlAttr","verificationRules","length","validates","forEach","item","validate","getBuiltInValidationRules","push","addValidate","ruleType","genSameValue","genMailBox","genRegEx","genMinTextLength","genMaxTextLength","genMinValue","genMaxValue","genSpecifiedValue","genSpecifiedDigitsNumber","genDateNotEarlierThan","genDateNoLaterThan","genSpecifiedRangeNumber","genPhoneNumber","genRequired","controlType","genLineUnique","genLetterSpace","genAlphanumericUnderline","genAlphanumeric","genJsMethodVerification","genBackEndVerification","genLandlineNumber","validateFunc","ruleContent","validateStatus","errorMsg","emreg","test","eval","describe","String","Number","undefined","countDecimals","Math","floor","toString","split","roundNumber","number","decimals","newString","round","numString","lastIndexOf","cutoff","d1","substring","d2","isNaN","roundedNum","decs","toDate","moment","e","indexOf","arr","reg","trim","Array","isArray","msg","func","Function","validateGeneratorService","window","currentScript","document","src","match","render","_ctx","_cache","$props","$setup","$data","$options","_ctx$desForm","_component_dv_form_layout","_resolveComponent","desForm","controls","_openBlock","_createElementBlock","ref","class","_normalizeClass","edit","styleMode","loFormTheme","_Fragment","_renderList","_createBlock","control","customFormats","linkList","onLinkClick","linkClick","index","onChange","$event","onFocus","onBlur","onClick","onAddonBefore","onAddonBeforeHandler","onAddonAfter","onAddonAfterHandler","onAddItem","selectAddItem","_createSlots","_","keys","$slots","propName","fn","_withCtx","slotProps","_renderSlot","content","_createCommentVNode","_typeof","obj","iterator","constructor","_toPrimitive","input","hint","prim","toPrimitive","res","TypeError","_toPropertyKey","arg","_defineProperty","toPropertyKey","configurable","writable","_withScopeId","_pushScopeId","_popScopeId","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_createElementVNode","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_component_a_tooltip","_component_question_circle_outlined","_component_clock_circle_outlined","_component_a_timeline_item","_component_a_timeline","_component_a_popconfirm","_component_search_outlined","_component_a_textarea","_component_a_input_number","_component_a_menu_item","_component_a_menu","_component_down_outlined","_component_a_button","_component_a_dropdown","_component_a_popover","_component_v_nodes","_component_a_divider","_component_plus_outlined","_component_a_select_option","_component_a_select","_component_a_radio","_component_a_radio_group","_component_a_checkbox","_component_a_col","_component_a_row","_component_a_checkbox_group","_component_a_switch","_component_a_time_picker","_component_a_month_picker","_component_a_date_picker","_component_a_slider","_component_a_cascader","_component_a_tree_select","_component_a_rate","_component_upload_outlined","_component_a_upload","_component_stretch_text","_component_eye_outlined","_component_eye_invisible_outlined","_component_a_form_item","_component_a_form","formFieldClass","isHideControl","formFieldType","layoutName","layout","style","_normalizeStyle","emptyLayoutContainerStyle","subControls","parentControl","onFixFormLayout","onHideControl","scopedPropName","generalLayoutContainerStyle","width","divWidthCompatibleToIe","_createVNode","labelCol","labelSpanWidth","wrapperCol","controlSpanMaxWidth","controlSpanWidth","colon","labelAlign","required","validateResult","help","provideInjectData","boundProperty","isMobileBrowser","label","isHideTitle","isBoldTitle","color","titleColor","_toDisplayString","formFieldDescribe","submittedType","placement","title","submittedTypeStr","overlayClassName","submittedSvg","tips","history","dot","time","before","_createTextVNode","after","author","historySvg","_resolveDynamicComponent","inputShape","bindingPrefix","builtInFrontLabel","bindingSuffix","builtInPostLabel","placeholder","disabled","isNotEdit","autoCompleteOptions","onInput","rows","textareaRows","showCount","maxCharacterCount","maxlength","zoomType","automatic","moneyUnits","moneyUnitsIndentScale","tabindex","trigger","getPopupContainer","triggerNode","parentNode","body","step","min","minValue","max","maxValue","formatter","numberFormatter","parser","numberParser","precision","decimalPlaces","onInputNumberFocus","onInputNumberBlur","unit","overlay","handleMoneyUnitMenuClick","defaultMoneyUnit","numberPopoverVisible","amountCapitalization","zoomMultiple","isMultipleChoice","dropdownClassName","hiddenDropdown","showArrow","filterOption","dropdownRender","menuNode","menu","vnodes","canAddEntry","onMousedown","preventDefault","options","checkboxStyle","checked","onOpeningText","whenClosedText","locale","is12Hours","useMonthPicker","format","dateFormat","isShowHoliday","showTime","showPickerTime","dateRender","current","date","isRest","isWeekday","isRadingDay","renderExtraFooter","changeOnSelect","cascaderFilter","cascaderOptions","treeNodeFilterProp","maxHeight","overflow","treeSelectOptions","treeDefaultExpandAll","isTreeOpen","accept","uploadType","multiple","onRemove","handleRemove","beforeUpload","handleUploadChange","customFieldName","formatData","textFold","fieldKey","href","isDesensitize","handlerMasking","isAfterClick","formTemplate","formId","appId","domainClassId","objectId","formType","formName","formAlias","formDescribe","useState","desDomainClass","desFormLayouts","layoutId","parentLayoutId","layoutType","gridSpace","gridColumnConfig","gridLateralArrangement","gridVerticalArrangement","layoutOrder","labelSpan","controlSpan","subDesFormLayout","desFormControls","desBusObject","SUBMITTED_SVG_XML","HISTORY_SVG_XML","FORM_ERROR_MODAL_SVG_XML","DROP_DOWN_LIST_SVG_XML","transform","configs","sort","a","b","order","join","generateGridTemplateColumns","generateGridColumnEnd","ApiService","createBasicHeaders","Accept","createAuthHeaders","data","JSON","parse","localStorage","getItem","sessionStorage","accessToken","jti","Authorization","fetch","path","query","method","header","urlQueryConvert","headers","then","response","status","statusText","url","json","error","message","connectiveSymbol","idx","apiService","NAME","STORE_NAME","DICT_STORE_NAME","CleanLocalForageService","$app","config","globalProperties","$qlForm","init","formConfig","driver","sourceLocalForage","version","storeName","description","localForage","setItem","dropInstance","cleanLocalForageService","DictLocalForageService","dictLocalForageService","FormBeanUtilsService","copy","stringify","str","formBeanUtilsService","FormLocalForageService","formLocalForageService","DesForm","formGroup","DesFormLayout","FormTreeNodeConvertService","arrayConvertToTreeNode","nodeContrast","parentId","nds","filter","children","id","treeNodeConvertToNzTreeNode","nzNodeContrast","isDisabledLeaf","nodes","node","isLeaf","selected","selectable","disableCheckbox","expanded","arrayConvertToNzTreeNode","treeNode","treeNodeConvertToCascaderOption","nzCascaderOptionContrast","loading","parent","nzTreeNodeConvertToMap","mapNodeOptions","arrayConvertToCascaderOption","treeNodeConvertToArray","childName","formTreeNodeConvertService","FormStore","setForms","FORMS","getForms","setVersion","VERSION","getVersion","formStore","DictStore","setDicts","nzTreeNodeOptions","DICTS","getDicts","setTreeDicts","TREE_DICTS","getTreeDicts","setMapDicts","MAP_DICTS","getMapDicts","setMapTreeDicts","MAP_TREE_DICTS","getMapTreeDicts","dictStore","DEFAULT_FORM_FILE_NAME","DEFAULT_DICT_FILE_NAME","DEFAULT_DICT_URL","RouterService","subapp","pushState","getPathFromUrl","getParamsFromUrl","parameter","urlParameterToParams","params","array","kv","decodeURIComponent","getParameterOfUrl","mark","routerService","FormValidateService","validateTips","formApis","scrollView","actualFormApis","allError","errMessage","formApi","errors","validateReport","concat","err","console","log","Modal","confirm","h","innerHTML","onOk","showErrorModal","okText","cancelText","_formApis$","_allError$","errorEl","getControlEl","getElementById","scrollTo","top","offsetTop","behavior","running","event","scrollTop","documentElement","calculationError","removeEventListener","showErrInput","addEventListener","el","count","interval","setInterval","opacity","clearInterval","formValidateService","FormToolsService","setSupHoliday","bool","supHoliday","setFormDisabledColor","setProperty","checkFirstLoadAndInitDesign","IS_FIRST_LOADED","Promise","resolve","all","initDesign","initDict","selectHolidays","designRes","dictRes","contextPath","traddayList","weekdayList","workdayList","LOAD_SUCCESS","forms","formVersion","loadMode","desForms","loadDesign","cacheType","desCacheVersion","cacheVersionNumber","formUrl","storageAddress","resEx","LOAD_FAIL","urls","mergeUrlByType","mergeUrlByCacheId","downloadUrl","appIds","resp","_resp$data","_query$appIds","address","cacheVersionMap","_item$desCacheVersion","_query$appIds2","_resp$data2","_query$appIds3","_item$desCacheVersion2","cacheVersionId","mergeFetchDesign","newDesForms","newDesForm","formatDesForm","onlySimpleLoadConfig","createFileDownloadAuthorizationHeader","fetches","dicts","treeDicts","mapDicts","mapTreeDicts","dictVersion","dictUrl","sysDictDetailOptions","sysDictTreeDetailOptions","mapSysDictDetailOptions","mapSysDictTreeDetailOptions","loadDict","url1","dictRestLoadOnlyBody","dictRestLoadMode","toLocaleUpperCase","dictRestLoadBody","dictRestLoadHeaders","distUrl","mergeFetchDict","sysDictInfos","dictionaryFormatCollection","inidDictOptions","fetchDicts","dictInfos","newDictInfos","empObj","filterDist","dictId","sysDictInfo","dictCd","dictNm","dictTp","comDictKeyValues","it","dictDetailsContrast","nzDictDetailsContrastContrast","treeDictKeyValues","suprDicPk","dictTreeDetailsContrast","nzDictTreeDetailsContrastContrast","mapTreeNodeOptions","sourceDesForm","recursionFormatForm","sortControls","formFieldId","desFormControl","values","find","active","isPasswordBox","enableAutoComplete","isFixedRowHeight","thousandthPercentileFormat","isShowCapitalization","isLineFeedDisplay","optionConfig","generalDictionaryOptions","treeShapeOptions","isSupportMultiple","customUploadType","isSearchable","isClearButton","desFormLayout","layoutControl","controlA","controlB","x","y","tableFieldOrder","loadResource","initResource","reject","simple","responseType","formToolsService","currencyDigits","MAXIMUM_NUMBER","CN_ZERO","CN_ONE","CN_TWO","CN_THREE","CN_FOUR","CN_FIVE","CN_SIX","CN_SEVEN","CN_EIGHT","CN_NINE","CN_TEN","CN_HUNDRED","CN_THOUSAND","CN_TEN_THOUSAND","CN_HUNDRED_MILLION","CN_SYMBOL","CN_DOLLAR","DROP","CN_TEN_CENT","CN_CENT","CN_INTEGER","integral","decimal","outputCharacters","zeroCount","quotient","modulus","parts","digits","radices","bigRadices","prefix","substr","replace","divisor","num","DesFormControl","extendBoundPropertyOne","extendBoundPropertyTwo","fieldDefaultValue","titleWidth","controlWidth","initRowHeight","formatType","moneyUnit","defineOptionalUnits","defineOptionalUnitsDefault","isOptionType","dynamicOptionType","generalDictionary","treeShape","disableNonLeafNodes","timeFormat","maxUploadNumber","limitSize","supportUploadType","extendUploadType","attachmentExtendProperties","onOpeningValue","whenClosedValue","busAttr","itemWidth","AbstractControl","FormControl","formState","super","setValue","findIndex","removeValidate","splice","getValidate","result","text","textNoticeCallback","FormGroup","addControl","removeControl","transformReverse","extractOptions","args","storageOptions","encode","_getCurrentInstance","proxy","getCurrentInstance","mathjs","$mathjs","ZoomType","enlarge","evaluate","notation","narrow","switchEnumFiled","attribute","defaultVal","switchEnum","switchEnumConvert","unfold","ifOver","StretchText","Vue","mounted","onContentHandle","$emit","spanBox","offsetHeight","textBox","__decorate","Prop","Ref","Watch","Options","__exports__","char_dict","full_dict","polyphone","checkPolyphone","charcase","pinYin","getFullChars","RegExp","len","ch","unicode","charCodeAt","_getFullChar","toLocaleLowerCase","getCamelChars","chars","charAt","_getChar","_getResult","_capitalize","first","toUpperCase","spare","strlen","j","swap1","slice","swap2","k","DvFormLayout","onDefaultMoneyUnitHandler","newVal","onValidationFeedbackHandle","onFormValidateStateResetMarkHandle","$nextTick","initFormControlData","_this$control","_this$parentControl","verificationRule","controlFormatType","replaceUnit","parentControlAttr","toLowerCase","items","cascaderRecursion","treeSelectRecursion","hasFeedback","metaRefresh","context","countDecimalPlaces","option","dayjs","cascaderContextRecursion","treeSelectContextRecursion","customFormat","display","repeat","hasDot","includes","intPart","decimalPart","pureNumStr","parseFloat","factor","pow","rounded","toFixed","roundedDecimal","inputValue","some","currentIndex","cascaderOption","currentText","subText","subTitle","widthCompatibleMode","ActiveXObject","isIe","configIndex","proportion","total","ratio","_this$control2","gridTemplateColumns","_this$parentControl2","_this$control3","gridColumnEnd","mobileRegex","tabletRegex","userAgent","navigator","isMobile","isTablet","Date","attrSubmittedType","map","submittedTypeCheckedNode","clearNoNum","validateNumBeyondLimit","pureNumber","file","newFileList","fileList","_event$formControl","now","lastClickTime","notification","open","duration","ExclamationCircleOutlined","desApiAddr","encData","formData","oldValue","desParams","ciphertext","desensField","getFieldPlaintext","calDate","DateTime","$d","year","getFullYear","month","getMonth","strDate","getDate","Inject","immediate","filters","components","PlusOutlined","Form","FormItem","AutoComplete","Option","displayName","OptGroup","RadioGroup","CheckboxGroup","Tooltip","InputPassword","Popover","Popconfirm","Timeline","TimelineItem","Dropdown","Menu","Item","Button","Divider","MonthPicker","Row","Col","EyeOutlined","EyeInvisibleOutlined","VNodes","attrs","QuestionCircleOutlined","ClockCircleOutlined","DownOutlined","UploadOutlined","SearchOutlined","DateFormatService","formatDateTime","dayMap","day","getDay","week","hours","getHours","minutes","getMinutes","seconds","getSeconds","dateSizeCompare","startTime","endTime","getTime","Attribute","FormApi","getUuid","dvForm","DvForm","apiMetaRefresh","generateData","oldVal","contrast","srcData","jsonToFormData","setFormData","isDefault","setFormDataInner","setTimeout","getControl","showError","subControl","getValue","decodeData","setControlValue","resetValue","getText","getOptions","setOptions","setControlOptions","getAttribute","setAttribute","setControlAttribute","validateName","removeAllValidates","getValidates","setRequiredValidate","setValidate","isCover","setValidateInner","validateReports","refreshFeedback","refreshCheckFeedbackFlag","refreshValidate","resetFormValidateState","formValidateStateResetMark","setFormatDisplayAndOutput","refreshAndUpdateData","onRefreshArgumentsHandler","els","getElementsByClassName","checkHasUploadControl","abstractControl","judge","FormData","File","append","setFieldChangeHistory","fieldChangeHistory","propertyName","aTime","bTime","hideLayout","nowDateStr","FieldDefaultValue","IsOptionType","OptionConfig","isFinal","output","hexDigits","random","uuid","objectA","objectB","fieldInfoArr","changeLog","handlerFlag","getChangedInfo","newValue","fieldInfo","field_cd","field_nm","field_key","newDict","translateDictionaries","field_value","is_change","field_old_key","oldDict","field_old_value","oldName","newName","flag","getFormSubmittedType","form","strArr","list","subControlsList","submittedTypeList","IsHideControl","handleSubmittedData","codeArr","submittedData","getSubmittedType","DyForm","onPropFormValidateStateResetHandler","_provided","onPropHandler","win","themes","formTheme","$loFormTheme","_this$formLimits","formLimitObj","formLimits","created","initDesForm","onFormIdChanged","onSrcDesFormChanged","isReset","model","analysisBindingObjects","_this$formApi","generateFormGroup","initControlForm","generateFormApi","fixFormLayout","formView","$refs","cons","offsetLeft","clientWidth","con1","con2","models","objectExtraction","objectMerge","findDictOptions","propertys","lastMd","md","defaultValue","securityValue","subTtems","subValue","modelX","modelY","group","subFormGroup","_control$controlAttr","findFormControlByProperty","formLimit","loFormLimit","_controlAttr$verifica","isHide","requiredIndex","isMustFill","currentFormGroup","formObject","Boolean","Provide","install","app","installed","component","dictUrls","$formToolsService","mathjsDependencies","formatDependencies","subtractDependencies","multiplyDependencies","evaluateDependencies","addDependencies","divideDependencies","VueLoForm"],"mappings":"CAAA,SAA2CA,EAAMC,GAC1B,kBAAZC,SAA0C,kBAAXC,OACxCA,OAAOD,QAAUD,IACQ,oBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,kBAAZC,QACdA,QAAQ,gBAAkBD,IAE1BD,EAAK,gBAAkBC,KARzB,CASoB,qBAATK,KAAuBA,KAAOC,MAAO,WAChD,O,YCTE,IAAIC,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUR,QAGnC,IAAIC,EAASK,EAAiBE,GAAY,CACzCC,EAAGD,EACHE,GAAG,EACHV,QAAS,IAUV,OANAW,EAAQH,GAAUI,KAAKX,EAAOD,QAASC,EAAQA,EAAOD,QAASO,GAG/DN,EAAOS,GAAI,EAGJT,EAAOD,QA0Df,OArDAO,EAAoBM,EAAIF,EAGxBJ,EAAoBO,EAAIR,EAGxBC,EAAoBQ,EAAI,SAASf,EAASgB,EAAMC,GAC3CV,EAAoBW,EAAElB,EAASgB,IAClCG,OAAOC,eAAepB,EAASgB,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEV,EAAoBgB,EAAI,SAASvB,GACX,qBAAXwB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAepB,EAASwB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAepB,EAAS,aAAc,CAAE0B,OAAO,KAQvDnB,EAAoBoB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQnB,EAAoBmB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFAxB,EAAoBgB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOnB,EAAoBQ,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRvB,EAAoB2B,EAAI,SAASjC,GAChC,IAAIgB,EAAShB,GAAUA,EAAO4B,WAC7B,WAAwB,OAAO5B,EAAO,YACtC,WAA8B,OAAOA,GAEtC,OADAM,EAAoBQ,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRV,EAAoBW,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG7B,EAAoBgC,EAAI,GAIjBhC,EAAoBA,EAAoBiC,EAAI,Q,uBClFrDvC,EAAOD,QAAUyC,QAAQ,2B,kCCAzB,kCACA,MAAMC,EAAoB,CACxBC,kBAAmB,CAAEC,KAAM,IAAK5B,KAAM,MACtC6B,eAAgB,CAAED,KAAM,IAAK5B,KAAM,Q,mBCHrCf,EAAOD,QAAUyC,QAAQ,qC,kCCAzB,kCACA,MAAMK,EAAsB,CAC1BC,QAAS,CAAEH,KAAM,UAAW5B,KAAM,MAClCgC,QAAS,CAAEJ,KAAM,UAAW5B,KAAM,MAClCiC,MAAO,CAAEL,KAAM,QAAS5B,KAAM,OAC9BkC,WAAY,CAAEN,KAAM,aAAc5B,KAAM,S,qBCL1Cf,EAAOD,QAAUyC,QAAQ,uB,qBCAzBxC,EAAOD,QAAUyC,QAAQ,mB,oCCAzB,wCAAMU,EAAa,CACjBC,MAAO,CAAER,KAAM,IAAK5B,KAAM,MAC1BqC,QAAS,CAAET,KAAM,IAAK5B,KAAM,Q,8CCF9Bf,EAAOD,QAAUyC,QAAQ,U,qBCAzBxC,EAAOD,QAAUyC,QAAQ,Q,qBCAzBxC,EAAOD,QAAUyC,QAAQ,0B,kCCAzB,kCACA,MAAMa,EAAY,CAChBC,KAAM,CAAEX,KAAM,IAAK5B,KAAM,MACzBwC,MAAO,CAAEZ,KAAM,IAAK5B,KAAM,MAC1ByC,KAAM,CAAEb,KAAM,IAAK5B,KAAM,Q,oCCJ3B,kCACA,MAAM0C,EAAiB,CACrBC,OAAQ,CAAEf,KAAM,IAAK5B,KAAM,KAAM4C,KAAM,WACvCC,KAAM,CAAEjB,KAAM,IAAK5B,KAAM,OAAQ4C,KAAM,WACvCE,OAAQ,CAAElB,KAAM,IAAK5B,KAAM,OAAQ4C,KAAM,a,kCCJ3C,W,0CCAA3D,EAAOD,QAAUyC,QAAQ,W,0CCAzBxC,EAAOD,QAAUyC,QAAQ,+C,mBCAzBxC,EAAOD,QAAUyC,QAAQ,gB,mBCAzBxC,EAAOD,QAAUyC,QAAQ,W,kCCAzB,wCAAMsB,EAAS,CACbC,QAAS,CAAEpB,KAAM,IAAK5B,KAAM,MAC5BiD,OAAQ,CAAErB,KAAM,IAAK5B,KAAM,Q,kCCF7B,kDAEA,MAAMkD,EAAgB,CACpBC,MAAO,CAAEvB,KAAM,IAAK5B,KAAM,MAAO4C,KAAM,oBAAqBQ,KAAMV,OAAeG,KAAKjB,MACtFyB,SAAU,CAAEzB,KAAM,IAAK5B,KAAM,OAAQ4C,KAAM,oBAAqBQ,KAAMV,OAAeG,KAAKjB,MAC1F0B,YAAa,CAAE1B,KAAM,IAAK5B,KAAM,QAAS4C,KAAM,cAAeQ,KAAMV,OAAeG,KAAKjB,MACxF2B,OAAQ,CAAE3B,KAAM,IAAK5B,KAAM,MAAO4C,KAAM,uBAAwBQ,KAAMV,OAAeG,KAAKjB,MAC1F4B,MAAO,CAAE5B,KAAM,IAAK5B,KAAM,MAAO4C,KAAM,qBAAsBQ,KAAMV,OAAeG,KAAKjB,MACvF6B,SAAU,CAAE7B,KAAM,IAAK5B,KAAM,MAAO4C,KAAM,qBAAsBQ,KAAMV,OAAeG,KAAKjB,MAC1FmB,OAAQ,CAAEnB,KAAM,IAAK5B,KAAM,KAAM4C,KAAM,cAAeQ,KAAMV,OAAeG,KAAKjB,MAChF8B,WAAY,CAAE9B,KAAM,IAAK5B,KAAM,QAAS4C,KAAM,sBAAuBQ,KAAMV,OAAeG,KAAKjB,MAC/F+B,WAAY,CAAE/B,KAAM,IAAK5B,KAAM,QAAS4C,KAAM,mBAAoBQ,KAAMV,OAAeG,KAAKjB,MAC5FgC,OAAQ,CAAEhC,KAAM,KAAM5B,KAAM,QAAS4C,KAAM,cAAeQ,KAAMV,OAAeG,KAAKjB,MACpFiC,KAAM,CAAEjC,KAAM,KAAM5B,KAAM,KAAM4C,KAAM,cAAeQ,KAAMV,OAAeG,KAAKjB,MAE/EkC,OAAQ,CAAElC,KAAM,KAAM5B,KAAM,KAAM4C,KAAM,cAAeQ,KAAMV,OAAeI,OAAOlB,MACnFmC,OAAQ,CAAEnC,KAAM,KAAM5B,KAAM,MAAO4C,KAAM,eAAgBQ,KAAMV,OAAeI,OAAOlB,MACrFoC,SAAU,CAAEpC,KAAM,KAAM5B,KAAM,OAAQ4C,KAAM,qBAAsBQ,KAAMV,OAAeI,OAAOlB,MAC9FqC,WAAY,CAAErC,KAAM,KAAM5B,KAAM,MAAO4C,KAAM,uBAAwBQ,KAAMV,OAAeI,OAAOlB,MACjGsC,OAAQ,CAAEtC,KAAM,KAAM5B,KAAM,QAAS4C,KAAM,qBAAsBQ,KAAMV,OAAeI,OAAOlB,MAE7FuC,MAAO,CAAEvC,KAAM,MAAO5B,KAAM,MAAO4C,KAAM,gBAAiBQ,KAAMV,OAAeC,OAAOf,MACtFwC,KAAM,CAAExC,KAAM,MAAO5B,KAAM,KAAM4C,KAAM,gBAAiBQ,KAAMV,OAAeC,OAAOf,Q,kCCtBtF,W,uuBCCA,MAAMyC,EAAa,CACjBC,aAAc,CAAE1C,KAAM,IAAK5B,KAAM,iB,gBCDnC,MAAMuE,EAAoB,CACxBC,QAAS,CAAE5C,KAAM,IAAK5B,KAAM,QAC5ByE,gBAAiB,CAAE7C,KAAM,IAAK5B,KAAM,MACpC0E,iBAAkB,CAAE9C,KAAM,IAAK5B,KAAM,QACrC2E,kBAAmB,CAAE/C,KAAM,IAAK5B,KAAM,OACtC4E,gBAAiB,CAAEhD,KAAM,IAAK5B,KAAM,Q,gBCLtC,MAAM6E,EAAc,CAClBC,eAAgB,CAAElD,KAAM,gBAAiB5B,KAAM,QAC/C+E,cAAe,CAAEnD,KAAM,eAAgB5B,KAAM,QAC7CgF,gBAAiB,CAAEpD,KAAM,gBAAiB5B,KAAM,UAChDiF,SAAU,CAAErD,KAAM,UAAW5B,KAAM,S,4BCLrC,MAAMkF,EAAW,CACfC,GAAI,CAAEvD,KAAM,IAAK5B,KAAM,OACvBoF,OAAQ,CAAExD,KAAM,IAAK5B,KAAM,QCDvBqF,EAAqB,CACzBC,UAAW,CAAE1D,KAAM,IAAK5B,KAAM,OAC9BuF,eAAgB,CAAE3D,KAAM,IAAK5B,KAAM,OACnCwF,OAAQ,CAAE5D,KAAM,IAAK5B,KAAM,MAC3ByF,0BAA2B,CAAE7D,KAAM,IAAK5B,KAAM,UAC9C0F,cAAe,CAAE9D,KAAM,IAAK5B,KAAM,SCN9B2F,EAAY,CAChBC,KAAM,CAAEhE,KAAM,IAAK5B,KAAM,KACzB6F,gBAAiB,CAAEjE,KAAM,IAAK5B,KAAM,MACpC8F,mBAAoB,CAAElE,KAAM,IAAK5B,KAAM,O,gBCFzC,MAAM+F,EAAgB,CACpBC,KAAM,CAAEpE,KAAM,IAAK5B,KAAM,QACzBiG,MAAO,CAAErE,KAAM,IAAK5B,KAAM,OAC1BkG,eAAgB,CAAEtE,KAAM,IAAK5B,KAAM,OACnCmG,wBAAyB,CAAEvE,KAAM,IAAK5B,KAAM,UAC5CoG,4BAA6B,CAAExE,KAAM,IAAK5B,KAAM,QAChDqG,kBAAmB,CAAEzE,KAAM,IAAK5B,KAAM,UACtCsG,OAAQ,CAAE1E,KAAM,IAAK5B,KAAM,WAC3BuG,gBAAiB,CAAE3E,KAAM,IAAK5B,KAAM,QACpCwG,MAAO,CAAE5E,KAAM,IAAK5B,KAAM,WAC1ByG,MAAO,CAAE7E,KAAM,KAAM5B,KAAM,QAC3B0G,MAAO,CAAE9E,KAAM,KAAM5B,KAAM,iBAC3B2G,MAAO,CAAE/E,KAAM,KAAM5B,KAAM,QAC3B4G,MAAO,CAAEhF,KAAM,KAAM5B,KAAM,QAC3B6G,MAAO,CAAEjF,KAAM,KAAM5B,KAAM,OAC3B8G,MAAO,CAAElF,KAAM,KAAM5B,KAAM,QAC3B+G,MAAO,CAAEnF,KAAM,KAAM5B,KAAM,QAC3BgH,MAAO,CAAEpF,KAAM,KAAM5B,KAAM,aAC3BiH,MAAO,CAAErF,KAAM,KAAM5B,KAAM,gBAC3BkH,MAAO,CAAEtF,KAAM,KAAM5B,KAAM,iBAC3BmH,MAAO,CAAEvF,KAAM,KAAM5B,KAAM,YAC3BoH,MAAO,CAAExF,KAAM,KAAM5B,KAAM,sBAC3BqH,MAAO,CAAEzF,KAAM,KAAM5B,KAAM,cAC3BsH,MAAO,CAAE1F,KAAM,KAAM5B,KAAM,UAC3BuH,MAAO,CAAE3F,KAAM,KAAM5B,KAAM,WAC3BwH,MAAO,CAAE5F,KAAM,KAAM5B,KAAM,QAC3ByH,MAAO,CAAE7F,KAAM,KAAM5B,KAAM,mBAC3B0H,MAAO,CAAE9F,KAAM,KAAM5B,KAAM,UAC3B2H,MAAO,CAAE/F,KAAM,KAAM5B,KAAM,UAC3B4H,MAAO,CAAEhG,KAAM,KAAM5B,KAAM,SAC3B6H,MAAO,CAAEjG,KAAM,KAAM5B,KAAM,wBC/BvB8H,EAAoB,CACxBC,YAAa,CAAEnG,KAAM,IAAK5B,KAAM,QAChCkE,OAAQ,CAAEtC,KAAM,IAAK5B,KAAM,U,gBCF7B,MAAMgI,EAAa,CACjBC,KAAM,CAAErG,KAAM,aAAc5B,KAAM,gBAClCkI,IAAK,CAAEtG,KAAM,YAAa5B,KAAM,OAChCmI,IAAK,CAAEvG,KAAM,YAAa5B,KAAM,OAChCoI,IAAK,CAAExG,KAAM,YAAa5B,KAAM,OAChCqI,IAAK,CAAEzG,KAAM,qBAAsB5B,KAAM,OACzCsI,KAAM,CAAE1G,KAAM,YAAa5B,KAAM,QACjCuI,IAAK,CAAE3G,KAAM,aAAc5B,KAAM,OACjCwI,IAAK,CAAE5G,KAAM,YAAa5B,KAAM,OAChCyI,IAAK,CAAE7G,KAAM,kBAAmB5B,KAAM,OACtC0I,IAAK,CAAE9G,KAAM,gCAAiC5B,KAAM,OACpD2I,IAAK,CAAE/G,KAAM,2BAA4B5B,KAAM,OAC/C4I,IAAK,CAAEhH,KAAM,kBAAmB5B,KAAM,OACtC6I,IAAK,CAAEjH,KAAM,iBAAkB5B,KAAM,OACrC8I,IAAK,CAAElH,KAAM,2BAA4B5B,KAAM,QCb3C+I,EAAqB,CACzBC,UAAW,CAAEpH,KAAM,IAAK5B,KAAM,OAAQiJ,YAAY,EAAMC,aAAa,GACrEC,QAAS,CAAEvH,KAAM,IAAK5B,KAAM,OAAQiJ,YAAY,EAAOC,aAAa,GACpEE,MAAO,CAAExH,KAAM,IAAK5B,KAAM,QAASiJ,YAAY,EAAMC,aAAa,GAClEG,cAAe,CAAEzH,KAAM,IAAK5B,KAAM,SAAUiJ,YAAY,EAAMC,aAAa,GAC3EI,cAAe,CAAE1H,KAAM,IAAK5B,KAAM,SAAUiJ,YAAY,EAAMC,aAAa,GAC3EK,SAAU,CAAE3H,KAAM,IAAK5B,KAAM,OAAQiJ,YAAY,EAAMC,aAAa,GACpEM,SAAU,CAAE5H,KAAM,IAAK5B,KAAM,OAAQiJ,YAAY,EAAMC,aAAa,GACpEO,eAAgB,CAAE7H,KAAM,IAAK5B,KAAM,OAAQiJ,YAAY,EAAMC,aAAa,GAC1EQ,sBAAuB,CAAE9H,KAAM,IAAK5B,KAAM,UAAWiJ,YAAY,EAAMC,aAAa,GACpFS,mBAAoB,CAAE/H,KAAM,KAAM5B,KAAM,QAASiJ,YAAY,EAAMC,aAAa,GAChFU,gBAAiB,CAAEhI,KAAM,KAAM5B,KAAM,QAASiJ,YAAY,EAAMC,aAAa,GAC7EW,qBAAsB,CAAEjI,KAAM,KAAM5B,KAAM,mBAAoBiJ,YAAY,EAAMC,aAAa,GAC7FY,YAAa,CAAElI,KAAM,KAAM5B,KAAM,OAAQiJ,YAAY,EAAOC,aAAa,GACzEa,SAAU,CAAEnI,KAAM,KAAM5B,KAAM,KAAMiJ,YAAY,EAAOC,aAAa,GACpEc,WAAY,CAAEpI,KAAM,KAAM5B,KAAM,MAAOiJ,YAAY,EAAOC,aAAa,GACvEe,YAAa,CAAErI,KAAM,KAAM5B,KAAM,OAAQiJ,YAAY,EAAOC,aAAa,GACzEgB,sBAAuB,CAAEtI,KAAM,KAAM5B,KAAM,YAAaiJ,YAAY,EAAOC,aAAa,GACxFiB,aAAc,CAAEvI,KAAM,KAAM5B,KAAM,OAAQiJ,YAAY,EAAOC,aAAa,GAC1EkB,qBAAsB,CAAExI,KAAM,KAAM5B,KAAM,SAAUiJ,YAAY,EAAMC,aAAa,GACnFmB,oBAAqB,CAAEzI,KAAM,KAAM5B,KAAM,OAAQiJ,YAAY,EAAOC,aAAa,GACjFoB,eAAgB,CAAE1I,KAAM,KAAM5B,KAAM,OAAQiJ,YAAY,EAAOC,aAAa,I,gBCrB9E,MAAMqB,EAAsB,CAC1BC,WAAY,CAAE5I,KAAM,IAAK5B,KAAM,MAAOU,MAAO,aAAc+J,UAAW,SACtEC,SAAU,CAAE9I,KAAM,IAAK5B,KAAM,OAAQU,MAAO,WAAY+J,UAAW,QACnEnF,UAAW,CAAE1D,KAAM,IAAK5B,KAAM,MAAOU,MAAO,aAAc+J,UAAW,S,oCCJvExL,EAAOD,QAAUyC,QAAQ,U,kCCCzBtB,OAAOC,eAAepB,EAAS,aAAc,CAAE0B,OAAO,IAGtD1B,EAAQ2L,QAAU,CAACC,EAAKC,KACpB,MAAMC,EAASF,EAAIG,WAAaH,EAChC,IAAK,MAAO5J,EAAKgK,KAAQH,EACrBC,EAAO9J,GAAOgK,EAElB,OAAOF,I,mBCTX7L,EAAOD,QAAUyC,QAAQ,sC,kCCAzB,W,ipBCUA,MAAMwJ,yBAMJC,cAAcC,EAA0BC,GACtC,GAAIA,EAAYC,mBAAqBD,EAAYC,kBAAkBC,OAAS,EAAG,CAC7E,MAAMC,EAAwB,GAC9BH,EAAYC,kBAAkBG,QAASC,IACrC,MAAMC,EAAiCrM,KAAKsM,0BAA0BF,EAAML,GACxEM,GACFH,EAAUK,KAAKF,KAGnBP,EAAYU,YAAYN,IAS5BI,0BAA0BF,EAAYL,GACpC,IAAIM,EACJ,OAAQD,EAAKK,UACX,KAAK/C,kDAAcC,UAAUpH,KAC3B8J,EAAWrM,KAAK0M,aAAaN,GAC7B,MACF,KAAK1C,kDAAcI,QAAQvH,KACzB8J,EAAWrM,KAAK2M,WAAWP,GAC3B,MACF,KAAK1C,kDAAcK,MAAMxH,KACvB8J,EAAWrM,KAAK4M,SAASR,GACzB,MACF,KAAK1C,kDAAcM,cAAczH,KAC/B8J,EAAWrM,KAAK6M,iBAAiBT,GACjC,MACF,KAAK1C,kDAAcO,cAAc1H,KAC/B8J,EAAWrM,KAAK8M,iBAAiBV,GACjC,MACF,KAAK1C,kDAAcQ,SAAS3H,KAC1B8J,EAAWrM,KAAK+M,YAAYX,GAC5B,MACF,KAAK1C,kDAAcS,SAAS5H,KAC1B8J,EAAWrM,KAAKgN,YAAYZ,GAC5B,MACF,KAAK1C,kDAAcU,eAAe7H,KAChC8J,EAAWrM,KAAKiN,kBAAkBb,GAClC,MACF,KAAK1C,kDAAcW,sBAAsB9H,KACvC8J,EAAWrM,KAAKkN,yBAAyBd,GACzC,MACF,KAAK1C,kDAAcY,mBAAmB/H,KACpC8J,EAAWrM,KAAKmN,sBAAsBf,GACtC,MACF,KAAK1C,kDAAca,gBAAgBhI,KACjC8J,EAAWrM,KAAKoN,mBAAmBhB,GACnC,MACF,KAAK1C,kDAAcc,qBAAqBjI,KACtC8J,EAAWrM,KAAKqN,wBAAwBjB,GACxC,MACF,KAAK1C,kDAAce,YAAYlI,KAC7B8J,EAAWrM,KAAKsN,eAAelB,GAC/B,MACF,KAAK1C,kDAAcgB,SAASnI,KAC1B8J,EAAWrM,KAAKuN,YAAYnB,EAAML,EAAYyB,aAC9C,MACF,KAAK9D,kDAAciB,WAAWpI,KAC5B8J,EAAWrM,KAAKyN,cAAcrB,GAC9B,MACF,KAAK1C,kDAAckB,YAAYrI,KAC7B8J,EAAWrM,KAAK0N,eAAetB,GAC/B,MACF,KAAK1C,kDAAcmB,sBAAsBtI,KACvC8J,EAAWrM,KAAK2N,yBAAyBvB,GACzC,MACF,KAAK1C,kDAAcoB,aAAavI,KAC9B8J,EAAWrM,KAAK4N,gBAAgBxB,GAChC,MACF,KAAK1C,kDAAcqB,qBAAqBxI,KACtC8J,EAAWrM,KAAK6N,wBAAwBzB,GACxC,MACF,KAAK1C,kDAAcsB,oBAAoBzI,KACrC8J,EAAWrM,KAAK8N,uBAAuB1B,GACvC,MACF,KAAK1C,kDAAcuB,eAAe1I,KAChC8J,EAAWrM,KAAK+N,kBAAkB3B,GAClC,MAEJ,OAAOC,EAQTK,aAAaN,GACX,MAAMC,EAAqB,CACzB1L,KAAMyL,EAAKK,SACXuB,aAAerC,GACF,MAAPA,GAAuB,KAARA,GACbS,EAAK6B,aAAetC,GAAOS,EAAK6B,YAC3B,CACLC,eAAgBzL,kDAAeG,MAAML,KACrC4L,SAAU,QAAQ/B,EAAK6B,kBAItB,CACLC,eAAgBzL,kDAAeC,QAAQH,OAI7C,OAAO8J,EAQTM,WAAWP,GACT,MAAMC,EAAqB,CACzB1L,KAAMyL,EAAKK,SACXuB,aAAerC,IACb,GAAW,MAAPA,GAAuB,KAARA,EAAY,CAC7B,MAAMyC,EAAQ,gDACd,IAAKA,EAAMC,KAAK1C,GACd,MAAO,CACLuC,eAAgBzL,kDAAeG,MAAML,KACrC4L,SAAU,aAIhB,MAAO,CACLD,eAAgBzL,kDAAeC,QAAQH,QAI7C,OAAO8J,EAQTO,SAASR,MACP,MAAMC,SAAqB,CACzB1L,KAAMyL,KAAKK,SACXuB,aAAerC,KACF,MAAPA,KAAuB,KAARA,KACbS,KAAK6B,cAAgBK,KAAKlC,KAAK6B,aAAaI,KAAK1C,KAC5C,CACLuC,eAAgBzL,kDAAeG,MAAML,KACrC4L,SAAU/B,KAAKmC,SAAWnC,KAAKmC,SAAW,YAAYnC,KAAK6B,aAI1D,CACLC,eAAgBzL,kDAAeC,QAAQH,OAI7C,OAAO8J,SAQTQ,iBAAiBT,GACf,MAAMC,EAAqB,CACzB1L,KAAMyL,EAAKK,SACXuB,aAAerC,GACF,MAAPA,GAAuB,KAARA,GACbS,EAAK6B,aAAetC,GAAO6C,OAAO7C,GAAKM,OAASwC,OAAOrC,EAAK6B,aACvD,CACLC,eAAgBzL,kDAAeG,MAAML,KACrC4L,SAAU,QAAQ/B,EAAK6B,iBAItB,CACLC,eAAgBzL,kDAAeC,QAAQH,OAI7C,OAAO8J,EAQTS,iBAAiBV,GACf,MAAMC,EAAqB,CACzB1L,KAAMyL,EAAKK,SACXuB,aAAerC,GACF,MAAPA,GAAuB,KAARA,GACbS,EAAK6B,aAAetC,GAAO6C,OAAO7C,GAAKM,OAASwC,OAAOrC,EAAK6B,aACvD,CACLC,eAAgBzL,kDAAeG,MAAML,KACrC4L,SAAU,QAAQ/B,EAAK6B,iBAItB,CACLC,eAAgBzL,kDAAeC,QAAQH,OAI7C,OAAO8J,EAQTU,YAAYX,GACV,MAAMC,EAAqB,CACzB1L,KAAMyL,EAAKK,SACXuB,aAAerC,QACF+C,GAAP/C,GAA4B,KAARA,GACE,MAApBS,EAAK6B,aAA8B,MAAPtC,GAAuB,KAARA,GAAc8C,OAAO9C,GAAO8C,OAAOrC,EAAK6B,aAC9E,CACLC,eAAgBzL,kDAAeG,MAAML,KACrC4L,SAAU,SAAS/B,EAAK6B,aAIvB,CACLC,eAAgBzL,kDAAeC,QAAQH,OAI7C,OAAO8J,EAQTW,YAAYZ,GACV,MAAMC,EAAqB,CACzB1L,KAAMyL,EAAKK,SACXuB,aAAerC,QACF+C,GAAP/C,GAA4B,KAARA,GACE,MAApBS,EAAK6B,aAA8B,MAAPtC,GAAuB,KAARA,GAAc8C,OAAO9C,GAAO8C,OAAOrC,EAAK6B,aAC9E,CACLC,eAAgBzL,kDAAeG,MAAML,KACrC4L,SAAU,SAAS/B,EAAK6B,aAIvB,CACLC,eAAgBzL,kDAAeC,QAAQH,OAI7C,OAAO8J,EAQTY,kBAAkBb,GAChB,MAAMC,EAAqB,CACzB1L,KAAMyL,EAAKK,SACXuB,aAAerC,GACF,MAAPA,GAAuB,KAARA,GACbS,EAAK6B,aAAetC,GAAOS,EAAK6B,YAC3B,CACLC,eAAgBzL,kDAAeG,MAAML,KACrC4L,SAAU,QAAQ/B,EAAK6B,kBAItB,CACLC,eAAgBzL,kDAAeC,QAAQH,OAI7C,OAAO8J,EAQTa,yBAAyBd,GACvB,MAAMC,EAAqB,CACzB1L,KAAMyL,EAAKK,SACXuB,aAAerC,IACb,QAAW+C,GAAP/C,GAA4B,KAARA,GAClBS,EAAK6B,aAAetC,EAAK,CAC3B,IAAIgD,EAAgB,EAIpB,GAHIC,KAAKC,MAAMlD,GAAKmD,aAAenD,EAAImD,aACrCH,EAAgBhD,EAAImD,WAAWC,MAAM,KAAK,GAAG9C,QAAU,GAErD0C,GAAiBF,OAAOrC,EAAK6B,aAC/B,MAAO,CACLC,eAAgBzL,kDAAeG,MAAML,KACrC4L,SAA+B,MAArB/B,EAAK6B,aAA4C,IAArB7B,EAAK6B,YAAoB,QAAU,MAAM7B,EAAK6B,kBAK5F,MAAO,CACLC,eAAgBzL,kDAAeC,QAAQH,QAI7C,OAAO8J,EAQT2C,YAAYC,EAAaC,GACvB,IAAIC,EAEJ,GADAD,EAAWT,OAAOS,GACdA,EAAW,EACbC,EAAYP,KAAKQ,MAAMH,GAAQH,eAC1B,CACL,IAAIO,EAAYJ,EAAOH,YACY,GAA/BO,EAAUC,YAAY,OAExBD,GAAa,KAEf,IAAIE,EAASF,EAAUC,YAAY,KAAOJ,EACtCM,EAAUf,OAAOY,EAAUI,UAAUF,EAAQA,EAAS,IAC1D,MAAMG,EAAKjB,OAAOY,EAAUI,UAAUF,EAAS,EAAGA,EAAS,IAC3D,GAAIG,GAAM,EAAG,CAEX,GAAU,GAANF,GAAWD,EAAS,EAEtB,MAAOA,EAAS,IAAY,GAANC,GAAWG,MAAMH,IAC3B,KAANA,GACFD,GAAU,EACVC,EAAKf,OAAOY,EAAUI,UAAUF,EAAQA,EAAS,KAEjDA,GAAU,EAIhBC,GAAM,EAER,GAAU,IAANA,EAAU,CACZH,EAAYA,EAAUI,UAAU,EAAGJ,EAAUC,YAAY,MACzD,MAAMM,EAAanB,OAAOY,GAAa,EACvCF,EAAYS,EAAWd,WAAa,SAEpCK,EAAYE,EAAUI,UAAU,EAAGF,GAAUC,EAAGV,YAGjB,GAA/BK,EAAUG,YAAY,OAExBH,GAAa,KAEf,MAAMU,EAAOV,EAAUM,UAAUN,EAAUG,YAAY,KAAO,GAAGrD,OACjE,IAAK,IAAI7L,EAAI,EAAGA,EAAI8O,EAAWW,EAAMzP,IAAK+O,GAAa,IACvD,OAAOA,EAQThC,sBAAsBf,GACpB,MAAMC,EAAqB,CACzB1L,KAAMyL,EAAKK,SACXuB,aAAerC,IACb,GAAW,MAAPA,GAAuB,KAARA,GACbS,EAAK6B,aAAetC,EACtB,IACE,GAAIA,EAAImE,SAAWC,8CAAO3D,EAAK6B,aAAa6B,SAC1C,MAAO,CACL5B,eAAgBzL,kDAAeG,MAAML,KACrC4L,SAAU,QAAQ/B,EAAK6B,aAG3B,MAAO+B,GACP,MAAO,CACL9B,eAAgBzL,kDAAeG,MAAML,KACrC4L,SAAU,SAAS/B,EAAK6B,qBAKhC,MAAO,CACLC,eAAgBzL,kDAAeC,QAAQH,QAI7C,OAAO8J,EAQTe,mBAAmBhB,GACjB,MAAMC,EAAqB,CACzB1L,KAAMyL,EAAKK,SACXuB,aAAerC,IACb,GAAW,MAAPA,GAAuB,KAARA,GACbS,EAAK6B,aAAetC,EACtB,IACE,GAAIA,EAAImE,SAAWC,8CAAO3D,EAAK6B,aAAa6B,SAC1C,MAAO,CACL5B,eAAgBzL,kDAAeG,MAAML,KACrC4L,SAAU,QAAQ/B,EAAK6B,aAG3B,MAAO+B,GACP,MAAO,CACL9B,eAAgBzL,kDAAeG,MAAML,KACrC4L,SAAU,SAAS/B,EAAK6B,qBAKhC,MAAO,CACLC,eAAgBzL,kDAAeC,QAAQH,QAI7C,OAAO8J,EAQTgB,wBAAwBjB,GACtB,MAAMC,EAAqB,CACzB1L,KAAMyL,EAAKK,SACXuB,aAAerC,IACb,GAAW,MAAPA,GAAuB,KAARA,GACO,MAApBS,EAAK6B,aAAuBtC,GAAOS,EAAK6B,YAAYgC,QAAQ,MAAQ,EAAG,CACzE,MAAMC,EAAa9D,EAAK6B,YAAYc,MAAM,KAC1C,GAAImB,GAAOA,EAAIjE,OAAS,IAClBN,EAAM8C,OAAOyB,EAAI,KAAOvE,EAAM8C,OAAOyB,EAAI,KAC3C,MAAO,CACLhC,eAAgBzL,kDAAeG,MAAML,KACrC4L,SAAU,SAAS+B,EAAI,MAAMA,EAAI,QAM3C,MAAO,CACLhC,eAAgBzL,kDAAeC,QAAQH,QAI7C,OAAO8J,EAQTiB,eAAelB,GACb,MAAM+D,EAAM,iCACN9D,EAAqB,CACzB1L,KAAMyL,EAAKK,SACXuB,aAAerC,GACF,MAAPA,GAAuB,KAARA,GACbA,IAAQwE,EAAI9B,KAAK1C,GACZ,CACLuC,eAAgBzL,kDAAeG,MAAML,KACrC4L,SAAU,UAIT,CACLD,eAAgBzL,kDAAeC,QAAQH,OAI7C,OAAO8J,EAQTkB,YAAYnB,EAAYoB,GACtB,MAAMnB,EAAqB,CACzB1L,KAAMyL,EAAKK,SACXuB,aAAerC,IACb,GAAW,MAAPA,GAA8B,iBAAPA,GAAkC,KAAfA,EAAIyE,QAAmBC,MAAMC,QAAQ3E,IAAuB,IAAfA,EAAIM,OAAe,CAC5G,IAAIsE,EAAM,OAMV,OALI/C,IAAgB3J,kDAAcK,OAAO3B,MAAQiL,IAAgB3J,kDAAcM,MAAM5B,MAAQiL,IAAgB3J,kDAAcO,SAAS7B,KAClIgO,GAAO,OAEPA,GAAO,OAEF,CACLrC,eAAgBzL,kDAAeG,MAAML,KACrC4L,SAAUoC,GAGd,MAAO,CACLrC,eAAgBzL,kDAAeC,QAAQH,QAI7C,OAAO8J,EAQToB,cAAcrB,GACZ,MAAMC,EAAqB,CACzB1L,KAAMyL,EAAKK,SACXuB,aAAcA,KACL,CACLE,eAAgBzL,kDAAeC,QAAQH,QAI7C,OAAO8J,EAQTqB,eAAetB,GACb,MAAMC,EAAqB,CACzB1L,KAAMyL,EAAKK,SACXuB,aAAerC,IACb,GAAW,MAAPA,GAAuB,KAARA,EAAY,CAC7B,MAAMwE,EAAM,sBACZ,GAAIxE,IAAQwE,EAAI9B,KAAK1C,GACnB,MAAO,CACLuC,eAAgBzL,kDAAeG,MAAML,KACrC4L,SAAU,WAIhB,MAAO,CACLD,eAAgBzL,kDAAeC,QAAQH,QAI7C,OAAO8J,EAQTsB,yBAAyBvB,GACvB,MAAMC,EAAqB,CACzB1L,KAAMyL,EAAKK,SACXuB,aAAerC,IACb,GAAW,MAAPA,GAAuB,KAARA,EAAY,CAC7B,MAAMwE,EAAM,qBACZ,GAAIxE,IAAQwE,EAAI9B,KAAK1C,GACnB,MAAO,CACLuC,eAAgBzL,kDAAeG,MAAML,KACrC4L,SAAU,cAIhB,MAAO,CACLD,eAAgBzL,kDAAeC,QAAQH,QAI7C,OAAO8J,EAQTuB,gBAAgBxB,GACd,MAAMC,EAAqB,CACzB1L,KAAMyL,EAAKK,SACXuB,aAAerC,IACb,GAAW,MAAPA,GAAuB,KAARA,EAAY,CAC7B,MAAMwE,EAAM,kBACZ,GAAIxE,IAAQwE,EAAI9B,KAAK1C,GACnB,MAAO,CACLuC,eAAgBzL,kDAAeG,MAAML,KACrC4L,SAAU,WAIhB,MAAO,CACLD,eAAgBzL,kDAAeC,QAAQH,QAI7C,OAAO8J,EAQTwB,wBAAwBzB,GACtB,MAAMC,EAAqB,CACzB1L,KAAMyL,EAAKK,SACXuB,aAAerC,IACb,GAAW,MAAPA,GAAuB,KAARA,GACbA,GAAOS,EAAK6B,YACd,IACE,MAAMuC,EAAO,IAAIC,SAASrE,EAAK6B,aAC/B,OAAOuC,EAAK7E,GACZ,MAAOqE,GACP,MAAO,CACL9B,eAAgBzL,kDAAeG,MAAML,KACrC4L,SAAU/B,EAAKmC,SAAWnC,EAAKmC,SAAW,cAKlD,MAAO,CACLL,eAAgBzL,kDAAeC,QAAQH,QAI7C,OAAO8J,EAQTyB,uBAAuB1B,GACrB,MAAMC,EAAqB,CACzB1L,KAAMyL,EAAKK,SACXuB,aAAcA,KACL,CACLE,eAAgBzL,kDAAeC,QAAQH,QAI7C,OAAO8J,EAQT0B,kBAAkB3B,GAChB,MAAM+D,EAAM,sBACN9D,EAAqB,CACzB1L,KAAMyL,EAAKK,SACXuB,aAAerC,GACF,MAAPA,GAAuB,KAARA,GACbA,IAAQwE,EAAI9B,KAAK1C,GACZ,CACLuC,eAAgBzL,kDAAeG,MAAML,KACrC4L,SAAU,UAIT,CACLD,eAAgBzL,kDAAeC,QAAQH,OAI7C,OAAO8J,GAGX,MAAMqE,yBAA2B,IAAI9E,0B,kCClsBrC,G,sxEAAsB,qBAAX+E,OAAwB,CACjC,IAAIC,EAAgBD,OAAOE,SAASD,cAWhCE,EAAMF,GAAiBA,EAAcE,IAAIC,MAAM,2BAC/CD,IACF,IAA0BA,EAAI,IAKnB,I,YCnBT,SAAUE,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAAa,IAAAC,EAC3F,MAAMC,EAA4BC,8BAAkB,kBAEpD,OAAoB,QAAbF,EAACN,EAAKS,eAAO,IAAAH,GAAU,QAAVA,EAAZA,EAAcI,gBAAQ,IAAAJ,GAAtBA,EAAwBtF,QAC3B2F,yBAAcC,gCAAoB,MAAO,CACxClQ,IAAK,EACLmQ,IAAK,WACLC,MAAOC,4BAAgB,yBAAiCf,EAAKgB,KAAO,SAAW,WAAxD,wBAAqGhB,EAAKiB,UAAY,kBAAoBjB,EAAKkB,cACrK,EACAP,wBAAW,GAAOC,gCAAoBO,cAAW,KAAMC,wBAAYpB,EAAKS,QAAQC,SAAU,CAACvF,EAAMhM,KACxFwR,yBAAcU,yBAAad,EAA2B,CAC5D7P,IAAKvB,EACLmS,QAASnG,EACToG,cAAevB,EAAKuB,cACpBC,SAAUxB,EAAKwB,SACfC,YAAazB,EAAK0B,UAClBC,MAAOxS,EACPyS,SAAU3B,EAAO,KAAOA,EAAO,GAAM4B,GAAiB7B,EAAK4B,SAASC,IACpEC,QAAS7B,EAAO,KAAOA,EAAO,GAAM4B,GAAiB7B,EAAK8B,QAAQD,IAClEE,OAAQ9B,EAAO,KAAOA,EAAO,GAAM4B,GAAiB7B,EAAK+B,OAAOF,IAChEG,QAAS/B,EAAO,KAAOA,EAAO,GAAM4B,GAAiB7B,EAAKgC,QAAQH,IAClEI,cAAehC,EAAO,KAAOA,EAAO,GAAM4B,GAAiB7B,EAAKkC,qBAAqBL,IACrFM,aAAclC,EAAO,KAAOA,EAAO,GAAM4B,GAAiB7B,EAAKoC,oBAAoBP,IACnFQ,UAAWpC,EAAO,KAAOA,EAAO,GAAM4B,GAAiB7B,EAAKsC,cAAcT,KACzEU,yBAAa,CAAEC,EAAG,GAAK,CACxBpB,wBAAYvR,OAAO4S,KAAK1T,KAAK2T,QAAUC,IAC9B,CACLjT,KAAMiT,EACNC,GAAIC,qBAAUC,GAAc,CAC1BC,wBAAY/C,EAAK0C,OAAQC,EAAU,CACjCK,QAASF,EAAUE,QACnB1B,QAASwB,EAAUxB,QACnBM,SAAUkB,EAAUlB,eACnBnE,GAAW,UAIlB,KAAM,CAAC,UAAW,gBAAiB,WAAY,cAAe,YAChE,OACH,IACHwF,gCAAoB,IAAI,GC1Cf,SAASC,EAAQC,GAG9B,OAAOD,EAAU,mBAAqBhT,QAAU,iBAAmBA,OAAOkT,SAAW,SAAUD,GAC7F,cAAcA,GACZ,SAAUA,GACZ,OAAOA,GAAO,mBAAqBjT,QAAUiT,EAAIE,cAAgBnT,QAAUiT,IAAQjT,OAAOa,UAAY,gBAAkBoS,GACvHD,EAAQC,G,UCNE,SAASG,EAAaC,EAAOC,GAC1C,GAAuB,WAAnBN,EAAQK,IAAiC,OAAVA,EAAgB,OAAOA,EAC1D,IAAIE,EAAOF,EAAMrT,OAAOwT,aACxB,QAAajG,IAATgG,EAAoB,CACtB,IAAIE,EAAMF,EAAKnU,KAAKiU,EAAOC,GAAQ,WACnC,GAAqB,WAAjBN,EAAQS,GAAmB,OAAOA,EACtC,MAAM,IAAIC,UAAU,gDAEtB,OAAiB,WAATJ,EAAoBjG,OAASC,QAAQ+F,GCPhC,SAASM,EAAeC,GACrC,IAAIpT,EAAMgT,EAAYI,EAAK,UAC3B,MAAwB,WAAjBZ,EAAQxS,GAAoBA,EAAM6M,OAAO7M,GCHnC,SAASqT,EAAgBZ,EAAKzS,EAAKN,GAYhD,OAXAM,EAAMsT,EAActT,GAChBA,KAAOyS,EACTtT,OAAOC,eAAeqT,EAAKzS,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZkU,cAAc,EACdC,UAAU,IAGZf,EAAIzS,GAAON,EAEN+S,E,0BCXT,MAAMgB,EAAgBvT,IAAYwT,yBAAa,mBAAmBxT,EAAEA,IAAIyT,0BAAczT,GAChF0T,EAAa,CAAExD,MAAO,kBACtByD,EAAa,CAAE7T,IAAK,GACpB8T,EAAa,CAAC,OACdC,EAA2BN,EAAa,IAAmBO,gCAAoB,MAAO,CAAE5D,MAAO,+BAAiC,QAAS,IACzI6D,EAAa,CAAE7D,MAAO,sBACtB8D,EAAa,CAAE9D,MAAO,yBACtB+D,EAAa,CAAE/D,MAAO,yBACtBgE,EAAa,CAAEhE,MAAO,yBACtBiE,EAAa,CAAC,OACdC,EAAc,CAAElE,MAAO,sBACvBmE,EAAc,CAAEnE,MAAO,eACvBoE,EAAc,CAAEpE,MAAO,gDACvBqE,EAAc,CAAErE,MAAO,sBACvBsE,EAA4BjB,EAAa,IAAmBO,gCAAoB,MAAO,CAAE5D,MAAO,kBAAoB,MAAO,IAC3HuE,EAAc,CAAEvE,MAAO,cACvBwE,EAAc,CAAExE,MAAO,kBACvByE,EAAc,CAClB7U,IAAK,EACLoQ,MAAO,kBAEH0E,EAAc,CAClB9U,IAAK,EACLoQ,MAAO,iBAEH2E,EAAc,CAAE3E,MAAO,mBACvB4E,EAAc,CAClBhV,IAAK,EACLoQ,MAAO,qBAEH6E,EAA4BxB,EAAa,IAAmBO,gCAAoB,MAAO,CAAE5D,MAAO,UAAY,CACnG4D,gCAAoB,MAAO,CAAE5D,MAAO,qBAAuB,CACzD4D,gCAAoB,MAAO,CAAE5D,MAAO,qBACpC4D,gCAAoB,MAAO,CAAE5D,MAAO,eAAiB,WAElE,IACE8E,EAAc,CAAE9E,MAAO,oBACvB+E,EAAc,CAAC,SACfC,EAAc,CAAEpV,IAAK,GACrBqV,EAA4B5B,EAAa,IAAmBO,gCAAoB,MAAO,CAAE5D,MAAO,eAAiB,MAAO,IACxHkF,EAAc,CAClBtV,IAAK,EACLoQ,MAAO,kBAGH,SAAUf,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,MAAM4F,EAAuBzF,8BAAkB,aACzC0F,EAAsC1F,8BAAkB,4BACxD2F,EAAmC3F,8BAAkB,yBACrD4F,EAA6B5F,8BAAkB,mBAC/C6F,EAAwB7F,8BAAkB,cAC1C8F,EAA0B9F,8BAAkB,gBAC5C+F,EAA6B/F,8BAAkB,mBAC/CgG,EAAwBhG,8BAAkB,cAC1CiG,EAA4BjG,8BAAkB,kBAC9CkG,EAAyBlG,8BAAkB,eAC3CmG,EAAoBnG,8BAAkB,UACtCoG,EAA2BpG,8BAAkB,iBAC7CqG,EAAsBrG,8BAAkB,YACxCsG,EAAwBtG,8BAAkB,cAC1CuG,EAAuBvG,8BAAkB,aACzCwG,EAAqBxG,8BAAkB,WACvCyG,EAAuBzG,8BAAkB,aACzC0G,EAA2B1G,8BAAkB,iBAC7C2G,EAA6B3G,8BAAkB,mBAC/C4G,EAAsB5G,8BAAkB,YACxC6G,EAAqB7G,8BAAkB,WACvC8G,GAA2B9G,8BAAkB,iBAC7C+G,GAAwB/G,8BAAkB,cAC1CgH,GAAmBhH,8BAAkB,SACrCiH,GAAmBjH,8BAAkB,SACrCkH,GAA8BlH,8BAAkB,oBAChDmH,GAAsBnH,8BAAkB,YACxCoH,GAA2BpH,8BAAkB,iBAC7CqH,GAA4BrH,8BAAkB,kBAC9CsH,GAA2BtH,8BAAkB,iBAC7CuH,GAAsBvH,8BAAkB,YACxCwH,GAAwBxH,8BAAkB,cAC1CyH,GAA2BzH,8BAAkB,iBAC7C0H,GAAoB1H,8BAAkB,UACtC2H,GAA6B3H,8BAAkB,mBAC/C4H,GAAsB5H,8BAAkB,YACxC6H,GAA0B7H,8BAAkB,gBAC5C8H,GAA0B9H,8BAAkB,gBAC5C+H,GAAoC/H,8BAAkB,0BACtDgI,GAAyBhI,8BAAkB,eAC3CD,GAA4BC,8BAAkB,kBAAkB,GAChEiI,GAAoBjI,8BAAkB,UAE5C,OAASR,EAAKsB,QAAQxO,OAASkN,EAAK0I,eAAenW,KAAKjB,MAAQ0O,EAAKsB,QAAQxO,OAASkN,EAAK0I,eAAelW,OAAOlB,MAAU0O,EAAKlF,YAAY6N,cA4qBvI3I,EAAKsB,QAAQxO,OAASkN,EAAK0I,eAAerW,OAAOf,MAAQ0O,EAAKsB,QAAQhQ,OAAS0O,EAAK4I,cAAc/U,MAAMvC,MACtGqP,yBAAcU,yBAAaoH,GAAmB,CAC7C/X,IAAK,EACLoQ,MAAOC,4BAAgB,mCAAqCf,EAAKlF,YAAY+N,WAAa,mBAAqB7I,EAAKlF,YAAY+N,WAAa,KAC7IC,OAAQ9I,EAAK8I,OACbC,MAAOC,4BAAgBhJ,EAAKiJ,4BAC3B,CACD5O,QAASwI,qBAAS,IAAM,EACrBlC,wBAAW,GAAOC,gCAAoBO,cAAW,KAAMC,wBAAYpB,EAAKsB,QAAQ4H,YAAa,CAAC/N,EAAMhM,KAC3FwR,yBAAcU,yBAAad,GAA2B,CAC5D7P,IAAKvB,EACLwS,MAAOxS,EACPoS,cAAevB,EAAKuB,cACpBD,QAASnG,EACTgO,cAAenJ,EAAKsB,QACpBE,SAAUxB,EAAKwB,SACfC,YAAazB,EAAK0B,UAClBE,SAAU3B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAK4B,SAASC,IACtEG,QAAS/B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKgC,QAAQH,IACpEC,QAAS7B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAK8B,QAAQD,IACpEE,OAAQ9B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAK+B,OAAOF,IAClEI,cAAehC,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKkC,qBAAqBL,IACvFM,aAAclC,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKoC,oBAAoBP,IACrFQ,UAAWpC,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKsC,cAAcT,IAC5EuH,gBAAiBpJ,EAAKqJ,eACrB9G,yBAAa,CAAEC,EAAG,GAAK,CACxBpB,wBAAYvR,OAAO4S,KAAKzC,EAAK0C,QAAU4G,IAC9B,CACL5Z,KAAM4Z,EACN1G,GAAIC,qBAAS,EAAGG,UAAS1B,UAASM,cAAe,CAC/CmB,wBAAY/C,EAAK0C,OAAQ4G,EAAgB,CACvCtG,QAASA,EACT1B,QAASA,EACTM,SAAUA,QACTnE,GAAW,UAIlB,KAAM,CAAC,QAAS,gBAAiB,UAAW,gBAAiB,WAAY,cAAe,sBAC1F,QAEN+E,EAAG,GACF,EAAG,CAAC,QAAS,SAAU,WACzBxC,EAAKsB,QAAQxO,OAASkN,EAAK0I,eAAerW,OAAOf,MAAQ0O,EAAKsB,QAAQhQ,OAAS0O,EAAK4I,cAAc/U,MAAMvC,MACtGqP,yBAAcU,yBAAaoH,GAAmB,CAC7C/X,IAAK,EACLoQ,MAAOC,4BAAgB,qCAAuCf,EAAKlF,YAAY+N,WAAa,mBAAqB7I,EAAKlF,YAAY+N,WAAa,KAC/IC,OAAQ9I,EAAK8I,OACbC,MAAOC,4BAAgBhJ,EAAKuJ,8BAC3B,CACDlP,QAASwI,qBAAS,IAAM,EACrBlC,wBAAW,GAAOC,gCAAoBO,cAAW,KAAMC,wBAAYpB,EAAKsB,QAAQ4H,YAAa,CAAC/N,EAAMhM,KAC3FwR,yBAAcU,yBAAad,GAA2B,CAC5D7P,IAAKvB,EACLwS,MAAOxS,EACPoS,cAAevB,EAAKuB,cACpBD,QAASnG,EACTgO,cAAenJ,EAAKsB,QACpBR,MAAOC,4BAAgBf,EAAKlF,YAAY+N,WAAa,kBAAoB7I,EAAKlF,YAAY+N,WAAa,IACvGjH,SAAU3B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAK4B,SAASC,IACtEG,QAAS/B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKgC,QAAQH,IACpEC,QAAS7B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAK8B,QAAQD,IACpEE,OAAQ9B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAK+B,OAAOF,IAClEI,cAAehC,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKkC,qBAAqBL,IACvFM,aAAclC,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKoC,oBAAoBP,IACrFQ,UAAWpC,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKsC,cAAcT,KAC3EU,yBAAa,CAAEC,EAAG,GAAK,CACxBpB,wBAAYvR,OAAO4S,KAAKzC,EAAK0C,QAAU4G,IAC9B,CACL5Z,KAAM4Z,EACN1G,GAAIC,qBAAS,EAAGG,UAAS1B,UAASM,cAAe,CAC/CmB,wBAAY/C,EAAK0C,OAAQ4G,EAAgB,CACvCtG,QAASA,EACT1B,QAASA,EACTM,SAAUA,QACTnE,GAAW,UAIlB,KAAM,CAAC,QAAS,gBAAiB,UAAW,gBAAiB,YAC/D,QAEN+E,EAAG,GACF,EAAG,CAAC,QAAS,SAAU,WAC1BS,gCAAoB,IAAI,IA/vB3BtC,yBAAcC,gCAAoB,MAAO,CACxClQ,IAAK,EACLoQ,MAAO,uBACPiI,MAAOC,4BAAgB,CAAEQ,MAAOxJ,EAAKyJ,0BACpC,CACD/E,gCAAoB,MAAOJ,EAAY,CACrCoF,yBAAalB,GAAwB,CACnCmB,SAAU,CACZZ,MAAO,cAAgB/I,EAAK4J,eAAiB,UAAY5J,EAAK4J,gBAE5DC,WAAY,CACdd,MAAO,cAAgB/I,EAAK8J,oBAAsB,WAAa9J,EAAK+J,kBAElEC,MAAOhK,EAAKgK,MACZC,WAAYjK,EAAKiK,WACjBC,SAAUlK,EAAKkK,SACf,kBAAmBlK,EAAKmK,eAAelN,eACvCmN,KAAMpK,EAAKqK,kBAAkBrJ,KAAOhB,EAAKmK,eAAejN,SAAW,KACnE4D,MAAOC,4BAAgB,CACzB,CAAC,mBAAqBf,EAAKlF,YAAYwP,gBAAgB,EACvD,CAAC,mBAAqBtK,EAAKsB,QAAQhQ,OAAO,EAC1C,wDAAyD0O,EAAKsB,QAAQhQ,OAAS0O,EAAK4I,cAAc7V,SAASzB,KAC3G,sBAAuB0O,EAAKuK,qBAEzB,CACDC,MAAO3H,qBAAS,IAAM,CAClB7C,EAAKlF,YAAY2P,YA+EfxH,gCAAoB,IAAI,IA9EvBtC,yBAAcC,gCAAoB,OAAQ2D,EAAY,CACrDG,gCAAoB,OAAQ,CAC1B5D,MAAOC,4BAAgB,CAAE,QAASf,EAAKlF,YAAY4P,cACnD3B,MAAOC,4BAAgB,CAAE2B,MAAO3K,EAAKlF,YAAY8P,cAChDC,6BAAiB7K,EAAKlF,YAAYgQ,mBAAoB,GACxD9K,EAAK+K,cAAc/P,OAAS,GACxB2F,yBAAcU,yBAAa4E,EAAsB,CAChDvV,IAAK,EACLoQ,MAAO,yBACPkK,UAAW,QACXC,MAAOjL,EAAKkL,iBACZC,iBAAkB,wBACjB,CACD9Q,QAASwI,qBAAS,IAAM,CACtB6B,gCAAoB,MAAO,CAAE7E,IAAKG,EAAKoL,cAAgB,KAAM,EAAG5G,KAElEhC,EAAG,GACF,EAAG,CAAC,WACPS,gCAAoB,IAAI,GAC3BjD,EAAKlF,YAAYuQ,MACb1K,yBAAcU,yBAAa4E,EAAsB,CAChDvV,IAAK,EACLoQ,MAAO,qBACPkK,UAAW,QACXC,MAAOjL,EAAKlF,YAAYuQ,KACxBF,iBAAkB,wBACjB,CACD9Q,QAASwI,qBAAS,IAAM,CACtB6G,yBAAaxD,EAAqC,CAAE6C,MAAO,CAAC,YAAY,YAE1EvG,EAAG,GACF,EAAG,CAAC,WACPS,gCAAoB,IAAI,GAC3BjD,EAAKnF,YAAYyQ,SAAWtL,EAAKnF,YAAYyQ,QAAQtQ,QACjD2F,yBAAcU,yBAAaiF,EAAyB,CACnD5V,IAAK,EACLya,iBAAkB,8BAClBH,UAAW,QACX,UAAW,MACV,CACDC,MAAOpI,qBAAS,IAAM,CACpB4B,EACAC,gCAAoB,MAAO,KAAM,CAC/BgF,yBAAarD,EAAuB,CAAEvF,MAAO,uBAAyB,CACpEzG,QAASwI,qBAAS,IAAM,EACrBlC,wBAAW,GAAOC,gCAAoBO,cAAW,KAAMC,wBAAYpB,EAAKnF,YAAYyQ,QAAS,CAACnQ,EAAMwG,KAC3FhB,yBAAcU,yBAAa+E,EAA4B,CAAE1V,IAAKiR,GAAS,CAC7E4J,IAAK1I,qBAAS,IAAM,CAClB6G,yBAAavD,EAAkC,CAAE4C,MAAO,CAAC,YAAY,YAEvE1O,QAASwI,qBAAS,IAAM,CACtB6B,gCAAoB,MAAOC,EAAY,CACrCD,gCAAoB,MAAO,KAAMmG,6BAAiB1P,EAAKqQ,MAAO,GAC9D9G,gCAAoB,MAAOE,EAAYiG,6BAAiB1P,EAAKsQ,QAAS,GACtEC,6BAAiB,QACjBhH,gCAAoB,MAAOG,EAAYgG,6BAAiB1P,EAAKwQ,OAAQ,GACrED,6BAAiB,SACjBhH,gCAAoB,MAAOI,EAAY+F,6BAAiB1P,EAAKyQ,QAAS,OAG1EpJ,EAAG,GACF,QACD,QAENA,EAAG,QAITnI,QAASwI,qBAAS,IAAM,CACtB6B,gCAAoB,MAAO,CACzB5D,MAAO,wBACPjB,IAAKG,EAAK6L,YACT,KAAM,EAAG9G,KAEdvC,EAAG,KAELS,gCAAoB,IAAI,QAIpC5I,QAASwI,qBAAS,IAAM,CACrB7C,EAAKqK,kBAAkBrJ,MACnBL,yBAAcC,gCAAoBO,cAAW,CAAEzQ,IAAK,GAAK,CACvDsP,EAAKsB,QAAQhQ,OAAS0O,EAAK4I,cAAc/V,MAAMvB,MAC3CqP,yBAAcC,gCAAoBO,cAAW,CAAEzQ,IAAK,GAAK,CACvDsP,EAAKqK,kBAAkBrJ,MACnBL,yBAAcU,yBAAayK,qCAAyB9L,EAAK+L,YAAa,CACrErb,IAAK,EACLoQ,MAAOC,4BAAgB,CACrC,eAAgBf,EAAK0C,OAAO,qBAAuB1C,EAAKnF,YAAYnK,MAAQsP,EAAKlF,YAAYkR,eAAiBhM,EAAKlF,YAAYmR,kBAC/H,cAAejM,EAAK0C,OAAO,oBAAsB1C,EAAKnF,YAAYnK,MAAQsP,EAAKlF,YAAYoR,eAAiBlM,EAAKlF,YAAYqR,mBAE/G/b,MAAO4P,EAAKnF,YAAYzK,MACxB,iBAAkB6P,EAAO,KAAOA,EAAO,GAAM4B,GAAkB7B,EAAKnF,YAAYzK,MAASyR,GACzFuK,YAAapM,EAAKlF,YAAYsR,YAC9BC,SAAUrM,EAAKlF,YAAYwR,UAC3B,cAAetM,EAAKlF,YAAYyR,oBAChCzK,QAAS7B,EAAO,KAAOA,EAAO,GAAM4B,GAAiB7B,EAAK8B,QAAQ9B,EAAKsB,UACvES,OAAQ9B,EAAO,KAAOA,EAAO,GAAM4B,GAAiB7B,EAAK+B,OAAO/B,EAAKsB,UACrEkL,QAASvM,EAAO,KAAOA,EAAO,GAAM4B,GAAiB7B,EAAK4B,SAAS5B,EAAKsB,UACxEU,QAAS/B,EAAO,KAAOA,EAAO,GAAM4B,GAAiB7B,EAAKgC,QAAQhC,EAAKsB,WACtEiB,yBAAa,CAAEC,EAAG,GAAK,CACvBxC,EAAK0C,OAAO,gBAAkB1C,EAAKnF,YAAYnK,KAC5C,CACEhB,KAAM,SACNkT,GAAIC,qBAAS,IAAM,CACjBE,wBAAY/C,EAAK0C,OAAQ,gBAAkB1C,EAAKnF,YAAYnK,IAAK,QAAI+M,GAAW,KAElF/M,IAAK,UAEP+M,EACHuC,EAAK0C,OAAO,gBAAkB1C,EAAKnF,YAAYnK,KAC5C,CACEhB,KAAM,SACNkT,GAAIC,qBAAS,IAAM,CACjBE,wBAAY/C,EAAK0C,OAAQ,gBAAkB1C,EAAKnF,YAAYnK,IAAK,QAAI+M,GAAW,KAElF/M,IAAK,UAEP+M,EACHuC,EAAK0C,OAAO,qBAAuB1C,EAAKnF,YAAYnK,MAAQsP,EAAKlF,YAAYkR,eAAiBhM,EAAKlF,YAAYmR,kBAC5G,CACEvc,KAAM,cACNkT,GAAIC,qBAAS,IAAM,CACjB6B,gCAAoB,OAAQ,CAC1B5D,MAAO,cACPkB,QAAS/B,EAAO,KAAOA,EAAO,GAAM4B,GAAiB7B,EAAKkC,qBAAqBlC,EAAKsB,WACnF,CACAtB,EAAK0C,OAAO,qBAAuB1C,EAAKnF,YAAYnK,KACjDqS,wBAAY/C,EAAK0C,OAAQ,qBAAuB1C,EAAKnF,YAAYnK,IAAK,CAAEA,IAAK,QAAK+M,GAAW,GAC5FuC,EAAKlF,YAAYkR,eACfrL,yBAAcC,gCAAoBO,cAAW,CAAEzQ,IAAK,GAAK,CACxDgb,6BAAiBb,6BAAiB7K,EAAKlF,YAAYkR,eAAgB,IAClE,KACFhM,EAAKlF,YAAYmR,mBACftL,yBAAcU,yBAAakF,EAA4B,CACtD7V,IAAK,EACLoQ,MAAO,gBAETmC,gCAAoB,IAAI,OAGpCvS,IAAK,UAEP+M,EACHuC,EAAK0C,OAAO,oBAAsB1C,EAAKnF,YAAYnK,MAAQsP,EAAKlF,YAAYoR,eAAiBlM,EAAKlF,YAAYqR,iBAC3G,CACEzc,KAAM,aACNkT,GAAIC,qBAAS,IAAM,CACjB6B,gCAAoB,OAAQ,CAC1B5D,MAAO,cACPkB,QAAS/B,EAAO,KAAOA,EAAO,GAAM4B,GAAiB7B,EAAKoC,oBAAoBpC,EAAKsB,WAClF,CACAtB,EAAK0C,OAAO,oBAAsB1C,EAAKnF,YAAYnK,KAChDqS,wBAAY/C,EAAK0C,OAAQ,oBAAsB1C,EAAKnF,YAAYnK,IAAK,CAAEA,IAAK,QAAK+M,GAAW,GAC3FuC,EAAKlF,YAAYoR,eACfvL,yBAAcC,gCAAoBO,cAAW,CAAEzQ,IAAK,GAAK,CACxDgb,6BAAiBb,6BAAiB7K,EAAKlF,YAAYoR,eAAgB,IAClE,KACFlM,EAAKlF,YAAYqR,kBACfxL,yBAAcU,yBAAakF,EAA4B,CACtD7V,IAAK,EACLoQ,MAAO,gBAETmC,gCAAoB,IAAI,OAGpCvS,IAAK,UAEP+M,IACF,KAAM,CAAC,QAAS,QAAS,cAAe,WAAY,iBACxDwF,gCAAoB,IAAI,IAC3B,KACFjD,EAAKsB,QAAQhQ,OAAS0O,EAAK4I,cAAc7V,SAASzB,MAChDqP,yBAAcU,yBAAamF,EAAuB,CACjD9V,IAAK,EACLN,MAAO4P,EAAKsB,QAAQzG,YAAYzK,MAChC,iBAAkB6P,EAAO,KAAOA,EAAO,GAAM4B,GAAkB7B,EAAKsB,QAAQzG,YAAYzK,MAASyR,GACjGuK,YAAapM,EAAKlF,YAAYsR,YAC9BC,SAAUrM,EAAKlF,YAAYwR,UAC3BG,KAAMzM,EAAKlF,YAAY4R,cAAgB,EACvCC,YAAa3M,EAAK4M,kBAClBC,UAAW7M,EAAK4M,kBAChBJ,QAASvM,EAAO,KAAOA,EAAO,GAAM4B,GAAiB7B,EAAK4B,SAAS5B,EAAKsB,UACxEQ,QAAS7B,EAAO,KAAOA,EAAO,GAAM4B,GAAiB7B,EAAK8B,QAAQ9B,EAAKsB,UACvES,OAAQ9B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAK+B,OAAO/B,EAAKsB,UACvEU,QAAS/B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKgC,QAAQhC,EAAKsB,WACxE,KAAM,EAAG,CAAC,QAAS,cAAe,WAAY,OAAQ,YAAa,eACtE2B,gCAAoB,IAAI,GAC7BjD,EAAKsB,QAAQhQ,OAAS0O,EAAK4I,cAAc5V,YAAY1B,MACjDqP,yBAAcC,gCAAoB,OAAQ,CACzClQ,IAAK,EACLoQ,MAAOC,4BAAgB,CAAC,sBAAuB,CACzD,eAAgBf,EAAKlF,YAAYgS,WAAa9M,EAAK8M,SAASC,UAAUzb,MAAQ0O,EAAKgN,WAAWhS,OAAS,EACvG,CAAC,WAAagF,EAAKiN,wBAAwB,KAEjCC,SAAU,KACT,CACDxD,yBAAa3C,EAAsB,CACjCiE,UAAW,UACXmC,QAAS,QACTC,kBACTC,GACQA,EAAYC,YAActN,EAAKJ,SAAS2N,MAGtChL,yBAAa,CACdlI,QAASwI,qBAAS,IAAM,CACtB6G,yBAAajD,EAA2B,CACtC+G,KAAMxN,EAAKlF,YAAY0S,MAAQ,EAC/BC,IAAkC,MAA7BzN,EAAKlF,YAAY4S,SAAmB1N,EAAKlF,YAAY4S,cAAWjQ,EACrEkQ,IAAkC,MAA7B3N,EAAKlF,YAAY8S,SAAmB5N,EAAKlF,YAAY8S,cAAWnQ,EACrEoQ,UAAW7N,EAAK8N,gBAChBC,OAAQ/N,EAAKgO,aACbC,UAAWjO,EAAKlF,YAAYoT,cAC5B9B,YAAapM,EAAKlF,YAAYsR,YAC9BC,SAAUrM,EAAKlF,YAAYwR,UAC3Blc,MAAO4P,EAAKnF,YAAYzK,MACxB,iBAAkB6P,EAAO,MAAQA,EAAO,IAAO4B,GAAkB7B,EAAKnF,YAAYzK,MAASyR,GAC3FD,SAAU3B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAK4B,SAAS5B,EAAKsB,UAC3EU,QAAS/B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKgC,QAAQhC,EAAKsB,UACzEQ,QAAS7B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKmO,mBAAmBnO,EAAKsB,UACpFS,OAAQ9B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKoO,kBAAkBpO,EAAKsB,WACjFiB,yBAAa,CAAEC,EAAG,GAAK,CACvBxC,EAAKlF,YAAYuT,KACd,CACE3e,KAAM,aACNkT,GAAIC,qBAAS,IAAM,CACjB6B,gCAAoB,OAAQO,EAAa4F,6BAAiB7K,EAAKlF,YAAYuT,MAAO,KAEpF3d,IAAK,UAEP+M,IACF,KAAM,CAAC,OAAQ,MAAO,MAAO,YAAa,SAAU,YAAa,cAAe,WAAY,UAC/FuC,EAAKlF,YAAYgS,WAAa9M,EAAK8M,SAASC,UAAUzb,MAAQ0O,EAAKgN,WAAWhS,OAAS,GACnF2F,yBAAcU,yBAAayF,EAAuB,CAAEpW,IAAK,GAAK,CAC7D4d,QAASzL,qBAAS,IAAM,CACtB6G,yBAAa/C,EAAmB,CAAE3E,QAAShC,EAAKuO,0BAA4B,CAC1ElU,QAASwI,qBAAS,IAAM,EACrBlC,wBAAW,GAAOC,gCAAoBO,cAAW,KAAMC,wBAAYpB,EAAKgN,WAAaqB,IAC5E1N,yBAAcU,yBAAaqF,EAAwB,CACzDhW,IAAK2d,EAAK/c,MACT,CACD+I,QAASwI,qBAAS,IAAM,CACtB6I,6BAAiBb,6BAAiBwD,EAAK3e,MAAO,KAEhD8S,EAAG,GACF,QACD,QAENA,EAAG,GACF,EAAG,CAAC,cAETnI,QAASwI,qBAAS,IAAM,CACtB6G,yBAAa7C,EAAqB,KAAM,CACtCxM,QAASwI,qBAAS,IAAM,CACtB6I,6BAAiBb,6BAAiB7K,EAAKwO,iBAAiB9e,MAAQ,IAAK,GACpEsQ,EAAKgN,WAAWhS,OAAS,GACrB2F,yBAAcU,yBAAauF,EAA0B,CAAElW,IAAK,KAC7DuS,gCAAoB,IAAI,KAE9BT,EAAG,MAGPA,EAAG,KAELS,gCAAoB,IAAI,KAE9BT,EAAG,GACF,CACAxC,EAAKyO,qBACF,CACE/e,KAAM,UACNkT,GAAIC,qBAAS,IAAM,CACjB6B,gCAAoB,OAAQM,EAAa6F,6BAAiB7K,EAAK0O,qBAAqB1O,EAAK2O,aAAa3O,EAAKnF,YAAYzK,MAAO4P,EAAKnF,eAAgB,KAErJnK,IAAK,UAEP+M,IACF,KAAM,CAAC,uBACV,IACHwF,gCAAoB,IAAI,GAC3BjD,EAAKsB,QAAQhQ,OAAS0O,EAAK4I,cAAc3V,OAAO3B,MAC5CqP,yBAAcU,yBAAa+F,EAAqB,CAC/C1W,IAAK,EACLoQ,MAAOC,4BAAgB,CAAC,YAAa,CAC/C,iCAAkCf,EAAKlF,YAAY8T,mBAAqB5O,EAAK0C,OAAO,qBAAuB1C,EAAKnF,YAAYnK,MAAQsP,EAAKlF,YAAYoR,kBAE3I2C,kBAAmB7O,EAAKlF,YAAYgU,eAAiB,mCAAqC,GAC1FC,UAAW,GACX3e,MAAO4P,EAAKnF,YAAYzK,MACxB,iBAAkB6P,EAAO,MAAQA,EAAO,IAAO4B,GAAkB7B,EAAKnF,YAAYzK,MAASyR,GAC3F,eAAe,EACf,cAAe,GACfvR,KAAM0P,EAAKlF,YAAY8T,iBAAmB,WAAa,GACvDvC,SAAUrM,EAAKlF,YAAYwR,UAC3BF,YAAapM,EAAKlF,YAAYsR,YAC9BxK,SAAU3B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAK4B,SAAS5B,EAAKsB,UAC3EU,QAAS/B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKgC,QAAQhC,EAAKsB,UACzE,sBAAuBtB,EAAKoN,kBAC5B,gBAAiBpN,EAAKgP,cACrBzM,yBAAa,CACd0M,eAAgBpM,qBAAS,EAAGqM,SAAUC,KAAW,CAC/CzF,yBAAa1C,EAAoB,CAAEoI,OAAQD,GAAQ,KAAM,EAAG,CAAC,WAC5DnP,EAAKlF,YAAYuU,aACb1O,yBAAcC,gCAAoBO,cAAW,CAAEzQ,IAAK,GAAK,CACxDgZ,yBAAazC,EAAsB,CAAE8B,MAAO,CAAC,OAAS,WACtDrE,gCAAoB,MAAO,CACzBqE,MAAO,CAAC,QAAU,kBAAkB,OAAS,WAC7CuG,YAAarP,EAAO,MAAQA,EAAO,IAAOlB,GAAMA,EAAEwQ,kBAClDvN,QAAS/B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKsC,cAActC,EAAKsB,WAC9E,CACDoI,yBAAaxC,GACbwE,6BAAiB,OAChB,KACF,KACHzI,gCAAoB,IAAI,KAE9B5I,QAASwI,qBAAS,IAAM,EACrBlC,wBAAW,GAAOC,gCAAoBO,cAAW,KAAMC,wBAAYpB,EAAKwP,QAAUrU,IACzEwF,yBAAcU,yBAAa8F,EAA4B,CAC7D/W,MAAO+K,EAAK/K,MACZM,IAAKyK,EAAK/K,MACV6a,MAAO9P,EAAK8P,MACZoB,WAAUlR,EAAKkR,UAAWlR,EAAKkR,UAC9B,CACDhS,QAASwI,qBAAS,IAAM,CACtB6I,6BAAiBb,6BAAiB1P,EAAK8P,OAAQ,KAEjDzI,EAAG,GACF,KAAM,CAAC,QAAS,QAAS,eAC1B,QAENA,EAAG,GACF,CACAxC,EAAK0C,OAAO,qBAAuB1C,EAAKnF,YAAYnK,MAAQsP,EAAKlF,YAAYoR,cAC1E,CACExc,KAAM,aACNkT,GAAIC,qBAAS,IAAM,CAChB7C,EAAK0C,OAAO,qBAAuB1C,EAAKnF,YAAYnK,KACjDqS,wBAAY/C,EAAK0C,OAAQ,qBAAuB1C,EAAKnF,YAAYnK,IAAK,CAAEA,IAAK,QAAK+M,GAAW,IAC5FkD,yBAAcC,gCAAoBO,cAAW,CAAEzQ,IAAK,GAAK,CACxDgb,6BAAiBb,6BAAiB7K,EAAKlF,YAAYoR,eAAgB,IAClE,OAETxb,IAAK,UAEP+M,IACF,KAAM,CAAC,oBAAqB,QAAS,QAAS,OAAQ,WAAY,cAAe,sBAAuB,mBAC5GwF,gCAAoB,IAAI,GAC3BjD,EAAKsB,QAAQhQ,OAAS0O,EAAK4I,cAAc1V,MAAM5B,MAC3CqP,yBAAcU,yBAAaiG,GAA0B,CACpD5W,IAAK,EACLoQ,MAAO,QACP1Q,MAAO4P,EAAKnF,YAAYzK,MACxB,iBAAkB6P,EAAO,MAAQA,EAAO,IAAO4B,GAAkB7B,EAAKnF,YAAYzK,MAASyR,GAC3FwK,SAAUrM,EAAKlF,YAAYwR,UAC3B1K,SAAU3B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAK4B,SAAS5B,EAAKsB,UAC3EU,QAAS/B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKgC,QAAQhC,EAAKsB,WACxE,CACDjH,QAASwI,qBAAS,IAAM,EACrBlC,wBAAW,GAAOC,gCAAoBO,cAAW,KAAMC,wBAAYpB,EAAKwP,QAAUrU,IACzEwF,yBAAcU,yBAAagG,EAAoB,CACrD3W,IAAKyK,EAAK/K,MACVA,MAAO+K,EAAK/K,OACX,CACDiK,QAASwI,qBAAS,IAAM,CACtB6I,6BAAiBb,6BAAiB1P,EAAK8P,OAAQ,KAEjDzI,EAAG,GACF,KAAM,CAAC,YACR,QAENA,EAAG,GACF,EAAG,CAAC,QAAS,cAChBS,gCAAoB,IAAI,GAC3BjD,EAAKsB,QAAQhQ,OAAS0O,EAAK4I,cAAczV,SAAS7B,MAC9CqP,yBAAcU,yBAAaqG,GAA6B,CACvDhX,IAAK,EACLoQ,MAAO,QACP1Q,MAAO4P,EAAKnF,YAAYzK,MACxB,iBAAkB6P,EAAO,MAAQA,EAAO,IAAO4B,GAAkB7B,EAAKnF,YAAYzK,MAASyR,GAC3FwK,SAAUrM,EAAKlF,YAAYwR,UAC3B1K,SAAU3B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAK4B,SAAS5B,EAAKsB,UAC3EU,QAAS/B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKgC,QAAQhC,EAAKsB,WACxE,CACDjH,QAASwI,qBAAS,IAAM,CACtB6G,yBAAajC,GAAkB,KAAM,CACnCpN,QAASwI,qBAAS,IAAM,CACtB6G,yBAAalC,GAAkB,KAAM,CACnCnN,QAASwI,qBAAS,IAAM,EACrBlC,wBAAW,GAAOC,gCAAoBO,cAAW,KAAMC,wBAAYpB,EAAKwP,QAAUrU,IACzEwF,yBAAcU,yBAAakG,GAAuB,CACxD7W,IAAKyK,EAAK/K,MACVA,MAAO+K,EAAK/K,MACZ0Q,MAAO,YACPiI,MAAOC,4BAAgB,CAAEQ,MAAOxJ,EAAKlF,YAAY2U,cAAgB,OAAS,WACzE,CACDpV,QAASwI,qBAAS,IAAM,CACtB6G,yBAAazD,EAAsB,KAAM,CACvCgF,MAAOpI,qBAAS,IAAM,CACpB6B,gCAAoB,OAAQ,KAAMmG,6BAAiB1P,EAAK8P,OAAQ,KAElE5Q,QAASwI,qBAAS,IAAM,CACtB6I,6BAAiB,IAAMb,6BAAiB1P,EAAK8P,OAAQ,KAEvDzI,EAAG,GACF,QAELA,EAAG,GACF,KAAM,CAAC,QAAS,YACjB,QAENA,EAAG,MAGPA,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,QAAS,cAChBS,gCAAoB,IAAI,GAC3BjD,EAAKsB,QAAQhQ,OAAS0O,EAAK4I,cAAcnW,OAAOnB,MAC5CqP,yBAAcU,yBAAasG,GAAqB,CAC/CjX,IAAK,EACLgf,QAAS1P,EAAKnF,YAAYzK,MAC1B,mBAAoB6P,EAAO,MAAQA,EAAO,IAAO4B,GAAkB7B,EAAKnF,YAAYzK,MAASyR,GAC7F,mBAAoB7B,EAAKlF,YAAY6U,cACrC,sBAAuB3P,EAAKlF,YAAY8U,eACxCvD,SAAUrM,EAAKlF,YAAYwR,UAC3B1K,SAAU3B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAK4B,SAAS5B,EAAKsB,UAC3EU,QAAS/B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKgC,QAAQhC,EAAKsB,WACxE,KAAM,EAAG,CAAC,UAAW,mBAAoB,sBAAuB,cACnE2B,gCAAoB,IAAI,GAC3BjD,EAAKsB,QAAQhQ,OAAS0O,EAAK4I,cAAcxV,WAAW9B,MAChDqP,yBAAcU,yBAAauG,GAA0B,CACpDlX,IAAK,EACLoQ,MAAO,QACP,sBAAuBd,EAAKoN,kBAC5ByC,OAAQ7P,EAAK6P,OACb,cAAe7P,EAAK8P,UACpB1D,YAAapM,EAAKlF,YAAYsR,YAC9BC,SAAUrM,EAAKlF,YAAYwR,UAC3Blc,MAAO4P,EAAKnF,YAAYzK,MACxB,iBAAkB6P,EAAO,MAAQA,EAAO,IAAO4B,GAAkB7B,EAAKnF,YAAYzK,MAASyR,GAC3FD,SAAU3B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAK4B,SAAS5B,EAAKsB,UAC3EU,QAAS/B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKgC,QAAQhC,EAAKsB,WACxE,KAAM,EAAG,CAAC,sBAAuB,SAAU,cAAe,cAAe,WAAY,WACxF2B,gCAAoB,IAAI,GAC3BjD,EAAKsB,QAAQhQ,OAAS0O,EAAK4I,cAAcvV,WAAW/B,MAChDqP,yBAAcC,gCAAoBO,cAAW,CAAEzQ,IAAK,GAAK,CACvDsP,EAAK+P,gBACDpP,yBAAcU,yBAAawG,GAA2B,CACrDnX,IAAK,EACLoQ,MAAO,QACP,sBAAuBd,EAAKoN,kBAC5ByC,OAAQ7P,EAAK6P,OACbG,OAAQhQ,EAAKlF,YAAYmV,WACzB7D,YAAapM,EAAKlF,YAAYsR,YAC9BC,SAAUrM,EAAKlF,YAAYwR,UAC3Blc,MAAO4P,EAAKnF,YAAYzK,MACxB,iBAAkB6P,EAAO,MAAQA,EAAO,IAAO4B,GAAkB7B,EAAKnF,YAAYzK,MAASyR,GAC3FD,SAAU3B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAK4B,SAAS5B,EAAKsB,UAC3EU,QAAS/B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKgC,QAAQhC,EAAKsB,WACxE,KAAM,EAAG,CAAC,sBAAuB,SAAU,SAAU,cAAe,WAAY,WAClFtB,EAAKlF,YAAYoV,eACfvP,yBAAcU,yBAAayG,GAA0B,CACpDpX,IAAK,EACLoQ,MAAO,QACP,sBAAuBd,EAAKoN,kBAC5ByC,OAAQ7P,EAAK6P,OACbM,SAAUnQ,EAAKoQ,eAAepQ,EAAKlF,YAAYmV,YAC/CD,OAAQhQ,EAAKlF,YAAYmV,WACzB7D,YAAapM,EAAKlF,YAAYsR,YAC9BC,SAAUrM,EAAKlF,YAAYwR,UAC3Blc,MAAO4P,EAAKnF,YAAYzK,MACxB,iBAAkB6P,EAAO,MAAQA,EAAO,IAAO4B,GAAkB7B,EAAKnF,YAAYzK,MAASyR,GAC3FD,SAAU3B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAK4B,SAAS5B,EAAKsB,UAC3EU,QAAS/B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKgC,QAAQhC,EAAKsB,WACxE,CACD+O,WAAYxN,qBAAS,EAAGyN,aAAc,CACpC5L,gCAAoB,MAAOQ,EAAa,CACtCR,gCAAoB,MAAOS,EAAa,CACtCC,EACAV,gCAAoB,MAAOW,EAAawF,6BAAiByF,EAAQC,QAAS,GAC1E7L,gCAAoB,MAAOY,EAAa,CACrCtF,EAAKwQ,OAAOF,IACR3P,yBAAcC,gCAAoB,MAAO2E,EAAa,MACtDvF,EAAKyQ,UAAUH,IACb3P,yBAAcC,gCAAoB,MAAO4E,EAAa,MACvDvC,gCAAoB,IAAI,OAGlCyB,gCAAoB,MAAOe,EAAa,CACrCzF,EAAK0Q,YAAYJ,IACb3P,yBAAcC,gCAAoB,MAAO8E,IAC1CzC,gCAAoB,IAAI,SAIlC0N,kBAAmB9N,qBAAS,IAAM,CAChC8C,IAEFnD,EAAG,GACF,EAAG,CAAC,sBAAuB,SAAU,WAAY,SAAU,cAAe,WAAY,YACxF7B,yBAAcU,yBAAayG,GAA0B,CACpDpX,IAAK,EACLoQ,MAAO,QACP,sBAAuBd,EAAKoN,kBAC5ByC,OAAQ7P,EAAK6P,OACbM,SAAUnQ,EAAKoQ,eAAepQ,EAAKlF,YAAYmV,YAC/CD,OAAQhQ,EAAKlF,YAAYmV,WACzB7D,YAAapM,EAAKlF,YAAYsR,YAC9BC,SAAUrM,EAAKlF,YAAYwR,UAC3Blc,MAAO4P,EAAKnF,YAAYzK,MACxB,iBAAkB6P,EAAO,MAAQA,EAAO,IAAO4B,GAAkB7B,EAAKnF,YAAYzK,MAASyR,GAC3FD,SAAU3B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAK4B,SAAS5B,EAAKsB,UAC3EU,QAAS/B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKgC,QAAQhC,EAAKsB,WACxE,KAAM,EAAG,CAAC,sBAAuB,SAAU,WAAY,SAAU,cAAe,WAAY,YACpG,KACH2B,gCAAoB,IAAI,GAC3BjD,EAAKsB,QAAQhQ,OAAS0O,EAAK4I,cAActV,OAAOhC,MAC5CqP,yBAAcU,yBAAa0G,GAAqB,CAC/CrX,IAAK,EACLN,MAAO4P,EAAKnF,YAAYzK,MACxB,iBAAkB6P,EAAO,MAAQA,EAAO,IAAO4B,GAAkB7B,EAAKnF,YAAYzK,MAASyR,GAC3FwK,SAAUrM,EAAKlF,YAAYwR,UAC3B1K,SAAU3B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAK4B,SAAS5B,EAAKsB,UAC3EU,QAAS/B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKgC,QAAQhC,EAAKsB,WACxE,KAAM,EAAG,CAAC,QAAS,cACtB2B,gCAAoB,IAAI,GAC3BjD,EAAKsB,QAAQhQ,OAAS0O,EAAK4I,cAAclV,SAASpC,MAC9CqP,yBAAcU,yBAAa2G,GAAuB,CACjDtX,IAAK,GACL,sBAAuBsP,EAAKoN,kBAC5BwD,eAAgB5Q,EAAKlF,YAAY8V,eACjCxE,YAAapM,EAAKlF,YAAYsR,YAC9B,cAAe,CAAEyE,eAAgB7Q,EAAK6Q,gBACtCxE,SAAUrM,EAAKlF,YAAYwR,UAC3BkD,QAASxP,EAAK8Q,gBACd1gB,MAAO4P,EAAKnF,YAAYzK,MACxB,iBAAkB6P,EAAO,MAAQA,EAAO,IAAO4B,GAAkB7B,EAAKnF,YAAYzK,MAASyR,GAC3FD,SAAU3B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAK4B,SAAS5B,EAAKsB,UAC3EU,QAAS/B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKgC,QAAQhC,EAAKsB,WACxE,KAAM,EAAG,CAAC,sBAAuB,iBAAkB,cAAe,cAAe,WAAY,UAAW,WAC3G2B,gCAAoB,IAAI,GAC3BjD,EAAKsB,QAAQhQ,OAAS0O,EAAK4I,cAAcjV,WAAWrC,MAChDqP,yBAAcU,yBAAa4G,GAA0B,CACpDvX,IAAK,GACL,sBAAuBsP,EAAKoN,kBAC5Bhd,MAAO4P,EAAKnF,YAAYzK,MACxB,iBAAkB6P,EAAO,MAAQA,EAAO,IAAO4B,GAAkB7B,EAAKnF,YAAYzK,MAASyR,GAC3F,eAAe,EACfkP,mBAAoB,QACpB1E,SAAUrM,EAAKlF,YAAYwR,UAC3BF,YAAapM,EAAKlF,YAAYsR,YAC9B,iBAAkB,CAAE4E,UAAW,QAASC,SAAU,QAClD,YAAajR,EAAKkR,kBAClBtP,SAAU3B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAK4B,SAAS5B,EAAKsB,UAC3EU,QAAS/B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKgC,QAAQhC,EAAKsB,UACzE6P,qBAAsBnR,EAAKlF,YAAYsW,YACtC,KAAM,EAAG,CAAC,sBAAuB,QAAS,WAAY,cAAe,YAAa,0BACrFnO,gCAAoB,IAAI,GAC3BjD,EAAKsB,QAAQhQ,OAAS0O,EAAK4I,cAAcrV,KAAKjC,MAC1CqP,yBAAcU,yBAAa6G,GAAmB,CAC7CxX,IAAK,GACLN,MAAO4P,EAAKnF,YAAYzK,MACxB,iBAAkB6P,EAAO,MAAQA,EAAO,IAAO4B,GAAkB7B,EAAKnF,YAAYzK,MAASyR,GAC3FwK,SAAUrM,EAAKlF,YAAYwR,UAC3B1K,SAAU3B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAK4B,SAAS5B,EAAKsB,UAC3EU,QAAS/B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKgC,QAAQhC,EAAKsB,UACzE,aAAc,IACb,KAAM,EAAG,CAAC,QAAS,cACtB2B,gCAAoB,IAAI,GAC3BjD,EAAKsB,QAAQhQ,OAAS0O,EAAK4I,cAAcpV,OAAOlC,MAC5CqP,yBAAcU,yBAAa+G,GAAqB,CAC/C1X,IAAK,GACL,YAAasP,EAAKnF,YAAYzK,MAC9BihB,OAAQrR,EAAKsR,WACbC,SAAUvR,EAAKlF,YAAY8T,iBAC3B4C,SAAUxR,EAAKyR,aACf,gBAAiBzR,EAAK0R,aACtB9P,SAAU5B,EAAK2R,oBACd,CACDtX,QAASwI,qBAAS,IAAM,CACtB6G,yBAAa7C,EAAqB,KAAM,CACtCxM,QAASwI,qBAAS,IAAM,CACtB6G,yBAAavB,IACbuD,6BAAiB,YAEnBlJ,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,YAAa,SAAU,WAAY,WAAY,gBAAiB,cACvES,gCAAoB,IAAI,GAC3BjD,EAAKsB,QAAQhQ,OAAS0O,EAAK4I,cAAchV,OAAOtC,MAAQ0O,EAAKlF,YAAY8W,gBACtE7O,wBAAY/C,EAAK0C,OAAQ1C,EAAKlF,YAAY8W,gBAAiB,CACzDlhB,IAAK,GACL4Q,QAAStB,EAAKsB,QACdM,SAAU5B,EAAK4B,eACdnE,GAAW,GACdwF,gCAAoB,IAAI,IAC3B,MACFtC,yBAAcC,gCAAoBO,cAAW,CAAEzQ,IAAK,GAAK,CACxDgU,gCAAoB,MAAOkB,EAAa,CACtC7C,wBAAY/C,EAAK0C,OAAQ,QAAU1C,EAAKsB,QAAQzG,YAAYnK,IAAK,CAAEsS,QAAShD,EAAK6R,YAAc,IAAM,CAClG7R,EAAKlF,YAAYgX,UACbnR,yBAAcU,yBAAagH,GAAyB,CACnD3X,IAAK,EACLsS,QAAShD,EAAK6R,WACdrQ,SAAUxB,EAAKwB,SACfuQ,SAAU/R,EAAKsB,QAAQzG,YAAYnK,IACnC+Q,YAAaxB,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAK0B,UAAU,CAAEhR,IAAKsP,EAAKnF,YAAYnK,IAAKN,MAAO4P,EAAK6R,eAClH,KAAM,EAAG,CAAC,UAAW,WAAY,eACnClR,yBAAcC,gCAAoB,MAAO,CACxClQ,IAAK,EACLoQ,MAAO,kBACPmK,MAAOjL,EAAK6R,YACX,CACA7R,EAAKwB,SAASxC,QAAQgB,EAAKsB,QAAQzG,YAAYnK,MAAQ,GACnDiQ,yBAAcC,gCAAoB,IAAK,CACtClQ,IAAK,EACLshB,KAAM,IACNhQ,QAAS/B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAK0B,UAAU,CAAEhR,IAAKsP,EAAKnF,YAAYnK,IAAKN,MAAO4P,EAAK6R,eAC9GhH,6BAAiB7K,EAAK6R,YAAa,KACrClR,yBAAcC,gCAAoB,OAAQkF,EAAa+E,6BAAiB7K,EAAK6R,YAAa,KAC9F,EAAGhM,MACT,KAELE,EACC/F,EAAKlF,YAAYuT,MACb1N,yBAAcC,gCAAoB,OAAQoF,EAAa6E,6BAAiB7K,EAAKlF,YAAYuT,MAAO,IACjGpL,gCAAoB,IAAI,GAC3BjD,EAAKlF,YAAYmX,eACbtR,yBAAcC,gCAAoB,MAAO,CACxClQ,IAAK,EACLsR,QAAS/B,EAAO,MAAQA,EAAO,IAAO4B,GAAiB7B,EAAKkS,eAAelS,EAAKnF,eAC/E,CACAmF,EAAKmS,cACDxR,yBAAcU,yBAAaiH,GAAyB,CACnD5X,IAAK,EACLoQ,MAAO,iBAERH,yBAAcU,yBAAakH,GAAmC,CAC7D7X,IAAK,EACLoQ,MAAO,mBAGfmC,gCAAoB,IAAI,IAC3B,OAETT,EAAG,GACF,EAAG,CAAC,WAAY,aAAc,QAAS,aAAc,WAAY,kBAAmB,OAAQ,aAEhG,I,gBCtwBT,MAAM4P,EAAe,CACnBC,OAAQ,IACRC,MAAO,IACPC,cAAe,GACfC,SAAU,IACVC,SAAU,IACVC,SAAU,OACVC,UAAW,OACXC,aAAc,GACdC,SAAU,IACVC,eAAgB,KAChBC,eAAgB,CACd,CACEC,SAAU,IACVX,OAAQ,IACRY,eAAgB,GAChBpK,WAAY,GACZqK,WAAY,MACZC,UAAW,EACXC,iBAAkB,kDAClBC,uBAAwB,IACxBC,wBAAyB,IACzBC,YAAa,EACbC,UAAW,GACXC,YAAa,GACbC,iBAAkB,KAClBC,gBAAiB,KAGrBC,aAAc,MC7BVC,EACJ,s6HAGIC,EACJ,syKACIC,EACJ,0uBACIC,EACJ,s6C,gBCJF,SAASC,EAAUC,GACjB,GAAe,MAAXA,GAAmBA,EAAQlZ,OAAS,EAAG,CACzC,MAAMiE,EAAgB,GAEtB,OADAiV,EAAQC,KAAK,CAACC,EAAWC,IAAcD,EAAEE,MAAQD,EAAEC,OAAOpZ,QAASC,GAAS8D,EAAI3D,KAAKH,EAAK/K,MAAQ,OAC3F6O,EAAIsV,KAAK,KAEhB,MAAO,MAQX,MAAMC,EAA+BN,GAC5BD,EAAUC,GAGJM,QClBf,SAASP,EAAUC,GACjB,OAAe,MAAXA,GAAmBA,EAAQlZ,OAAS,EAC/BkZ,EAAQlZ,OAAS,EAEjB,EAQX,MAAMyZ,EAAyBP,GACtBD,EAAUC,GAGJO,Q,YCrBf,MAAMC,GACJC,qBACE,MAAO,CACL,eAAgB,mBAChBC,OAAQ,oBAIZC,oBACE,MAAMC,EAAOC,KAAKC,MAAMC,aAAaC,QAAQ,eAAiBC,eAAeD,QAAQ,eAAiB,MAChGE,EAAcN,EAAKM,aAAe,GAClCC,EAAMP,EAAKO,KAAO,GACxB,MAAO,CACLC,cAAe,UAAYF,EAC3B,gBAAiBC,EACjB,eAAgB,mBAChBT,OAAQ,oBAIZW,MAAMC,EAAcC,EAA+BlI,EAAWmI,EAAgBC,GAE5E,OADAH,EAAgB,MAATC,EAAgB1mB,KAAK6mB,gBAAgBJ,EAAMC,GAASD,EACpDD,MAAMC,EAAM,CACjBE,OAAQA,GAAkB,MAC1BG,QAASF,EACTpI,KAAMA,IACLuI,MACD,SAAUC,GAMR,OALAA,EAASC,OACTD,EAASE,WACTF,EAASF,QACTE,EAASG,IAEFH,EAASI,UAElB,SAAUC,GACRA,EAAMC,WAUZT,gBAAgBM,EAAaT,GAC3B,IAAIa,EAAmB,GAwBvB,OAtBEA,GADwB,IAAtBJ,EAAIlX,QAAQ,KACK,IAEA,IAEjByW,GACF5lB,OAAO4S,KAAKgT,GAAOva,QAAQ,CAACxK,EAAK6lB,KAC/B,MAAM7b,EAAM+a,EAAM/kB,GAGdwlB,GAFQ,IAARK,EACS,MAAP7b,GAAuB,SAARA,GAA0B,cAARA,EAC5B4b,EAAmB5lB,EAAM,IAAMgK,EAE/B4b,EAAmB5lB,EAAM,IAGvB,MAAPgK,GAAuB,SAARA,GAA0B,cAARA,EAC5B,IAAMhK,EAAM,IAAMgK,EAElB,IAAMhK,EAAM,MAKpBwlB,GAGX,MAAMM,GAAa,IAAI9B,G,iBC1EvB,MAAM+B,GAAO,SACPC,GAAa,QACbC,GAAkB,QCCxB,MAAMC,GAGJ,iBACE,OAAKlX,OAAemX,KAAKC,OAAOC,iBAAiBC,QACvCtX,OAAemX,KAAKC,OAAOC,iBAAiBC,QAE/C,GAGT3T,cAAAU,EAAA,2BAAAA,EAAA,sBAEAkT,OACE,MAAM3E,EAAgBvjB,KAAKmoB,WAAW5E,MAAQvjB,KAAKmoB,WAAW5E,MAAQ,GACtEvjB,KAAK+nB,OAAS,CACZK,OAAQC,gBACR1nB,KAAM+mB,GACNY,QAAS,EACTC,UAAW,SAAWhF,EACtBiF,YAAa,eAEfxoB,KAAKyoB,YAAcJ,qBAAiCroB,KAAK+nB,QAQ3DW,QAAQ/mB,EAAaN,GACnBrB,KAAKyoB,YAAYC,QAAQ/mB,EAAKN,GAQhC8kB,QAAQxkB,GACN,OAAO3B,KAAKyoB,YAAYtC,QAAQxkB,GAQlCgnB,eAC0B,MAApB3oB,KAAKyoB,aACPzoB,KAAKyoB,YAAYE,eAAe5B,QAItC,MAAM6B,GAAmD,IAAIf,GCrD7D,MAAMgB,GAGJ,iBACE,OAAKlY,OAAemX,KAAKC,OAAOC,iBAAiBC,QACvCtX,OAAemX,KAAKC,OAAOC,iBAAiBC,QAE/C,GAGT3T,cAAAU,EAAA,2BAAAA,EAAA,sBAEAkT,OACE,MAAM3E,EAAgBvjB,KAAKmoB,WAAW5E,MAAQvjB,KAAKmoB,WAAW5E,MAAQ,GACtEvjB,KAAK+nB,OAAS,CACZK,OAAQC,gBACR1nB,KAAM+mB,GACNY,QAAS,EACTC,UAAWX,GAAkBrE,EAC7BiF,YAAa,YAEfxoB,KAAKyoB,YAAcJ,qBAAiCroB,KAAK+nB,QAQ3DW,QAAQ/mB,EAAaN,GACnBrB,KAAKyoB,YAAYC,QAAQ/mB,EAAKN,GAQhC8kB,QAAQxkB,GACN,OAAO3B,KAAKyoB,YAAYtC,QAAQxkB,GAQlCgnB,eAC0B,MAApB3oB,KAAKyoB,aACPzoB,KAAKyoB,YAAYE,eAAe5B,QAItC,MAAM+B,GAAiD,IAAID,GCxD3D,MAAME,GACJzU,eAOA0U,KAAK5U,GACH,OAAW,MAAPA,EACK4R,KAAKC,MAAMD,KAAKiD,UAAU7U,IAE5B,GAQT6R,MAAMiD,GACJ,OAAW,MAAPA,GAAuB,KAARA,EACVlD,KAAKC,MAAMiD,GAEb,KAQTD,UAAU7U,GACR,OAAW,MAAPA,EACK4R,KAAKiD,UAAU7U,GAEjB,IAGX,MAAM+U,GAAuB,IAAIJ,GCnCjC,MAAMK,GAGJ,iBACE,OAAKzY,OAAemX,KAAKC,OAAOC,iBAAiBC,QACvCtX,OAAemX,KAAKC,OAAOC,iBAAiBC,QAE/C,GAGT3T,cAAAU,EAAA,2BAAAA,EAAA,sBAEAkT,OACE,MAAM3E,EAAgBvjB,KAAKmoB,WAAW5E,MAAQvjB,KAAKmoB,WAAW5E,MAAQ,GACtEvjB,KAAK+nB,OAAS,CACZK,OAAQC,gBACR1nB,KAAM+mB,GACNY,QAAS,EACTC,UAAWZ,GAAapE,EACxBiF,YAAa,YAEfxoB,KAAKyoB,YAAcJ,qBAAiCroB,KAAK+nB,QAQ3DW,QAAQ/mB,EAAaN,GACnBrB,KAAKyoB,YAAYC,QAAQ/mB,EAAKN,GAQhC8kB,QAAQxkB,GACN,OAAO3B,KAAKyoB,YAAYtC,QAAQxkB,GAQlCgnB,eAC0B,MAApB3oB,KAAKyoB,aACPzoB,KAAKyoB,YAAYE,eAAe5B,QAItC,MAAMsC,GAAiD,IAAID,GCrDrD,MAAOE,GAcXhV,YACEmM,EAaI,IAAEzL,EAAA,sBAAAA,EAAA,qBAAAA,EAAA,6BAAAA,EAAA,wBAAAA,EAAA,wBAAAA,EAAA,wBAAAA,EAAA,yBAAAA,EAAA,4BAAAA,EAAA,wBAAAA,EAAA,8BAAAA,EAAA,wBAAAA,EAAA,yBAENhV,KAAKsjB,OAAS7C,EAAQ6C,QAAU,GAChCtjB,KAAKujB,MAAQ9C,EAAQ8C,OAAS,GAC9BvjB,KAAKwjB,cAAgB/C,EAAQ+C,eAAiB,GAC9CxjB,KAAKyjB,SAAWhD,EAAQgD,UAAY,GACpCzjB,KAAK0jB,SAAWjD,EAAQiD,UAAY,GACpC1jB,KAAK2jB,SAAWlD,EAAQkD,UAAY,GACpC3jB,KAAK4jB,UAAYnD,EAAQmD,WAAa,GACtC5jB,KAAK6jB,aAAepD,EAAQoD,cAAgB,GAC5C7jB,KAAK8jB,SAAWrD,EAAQqD,UAAY,GACpC9jB,KAAK2R,SAAW8O,EAAQ9O,UAAY,GACpC3R,KAAKupB,UAAY9I,EAAQ8I,UACzBvpB,KAAKgkB,eAAiBvD,EAAQuD,gBAAkB,IC3C9C,MAAOwF,GAeXlV,YACEmM,EAeI,IAAEzL,EAAA,wBAAAA,EAAA,sBAAAA,EAAA,8BAAAA,EAAA,0BAAAA,EAAA,0BAAAA,EAAA,yBAAAA,EAAA,gCAAAA,EAAA,sCAAAA,EAAA,uCAAAA,EAAA,2BAAAA,EAAA,yBAAAA,EAAA,2BAAAA,EAAA,+BAAAA,EAAA,gCAENhV,KAAKikB,SAAWxD,EAAQwD,UAAY,GACpCjkB,KAAKsjB,OAAS7C,EAAQ6C,QAAU,GAChCtjB,KAAKkkB,eAAiBzD,EAAQyD,gBAAkB,GAChDlkB,KAAK8Z,WAAa2G,EAAQ3G,YAAc,GACxC9Z,KAAKmkB,WAAa1D,EAAQ0D,YAAc,GACxCnkB,KAAKokB,UAAY3D,EAAQ2D,UACzBpkB,KAAKqkB,iBAAmB5D,EAAQ4D,iBAChCrkB,KAAKskB,uBAAyB7D,EAAQ6D,wBAA0B,GAChEtkB,KAAKukB,wBAA0B9D,EAAQ8D,yBAA2B,GAClEvkB,KAAKwkB,YAAc/D,EAAQ+D,YAC3BxkB,KAAKykB,UAAYhE,EAAQgE,WAAa,GACtCzkB,KAAK0kB,YAAcjE,EAAQiE,aAAe,GAC1C1kB,KAAK4kB,gBAAkBnE,EAAQmE,iBAAmB,GAClD5kB,KAAK2kB,iBAAmBlE,EAAQkE,kBAAoB,I,2CCaxD,MAAM8E,GACJnV,eAOAoV,uBAAuB3D,EAAa4D,EAA4BC,GAC9D,GAAY,MAAR7D,GAAgBA,EAAK9Z,OAAS,EAAG,CACnC,IAAI4d,EAAa9D,EAAK+D,OAAQ1d,IAAUA,EAAKud,EAAaC,WAAa,OAASA,GAAY,KAC5F,GAAW,MAAPC,GAAeA,EAAI5d,OAAS,EAQ9B,OAPA4d,EAAMV,GAAqBH,KAAKa,GAChCA,EAAI1d,QAASC,IACX,MAAM2d,EAAW/pB,KAAK0pB,uBAAuB3D,EAAM4D,EAAcvd,EAAKud,EAAaK,KACnE,MAAZD,GAAoBA,EAAS9d,OAAS,IACxCG,EAAKud,EAAaI,UAAY,IAAIA,MAG/BF,EAGX,MAAO,GAQTI,4BAA4BlE,EAAamE,EAAgCC,GAAiB,GACxF,MAAMC,EAAe,GA+BrB,OA9BY,MAARrE,GAAgBA,EAAK9Z,OAAS,GAChC8Z,EAAK5Z,QAASC,IACZ,MAAMie,EAAY,CAChBnO,MAAO,GACPva,IAAK,GACL4B,KAAM,GACN+mB,QAAQ,EACR3J,SAAS,EACT4J,UAAU,EACVC,YAAY,EACZlN,SAAU6M,EACVM,iBAAiB,EACjBC,UAAU,EACVX,SAAU,IAEZ,IAAK,MAAMnW,KAAY9S,OAAO4S,KAAKwW,GACD,MAA5BA,EAAetW,IAAkD,KAA7BsW,EAAetW,KACrDyW,EAAKzW,GAAYxH,EAAK8d,EAAetW,KAIzC,GADAyW,EAAKN,SAAW,GACqB,MAAjC3d,EAAK8d,EAAeH,WAAqB3d,EAAK8d,EAAeH,UAAU9d,OAAS,EAAG,CACrF,MAAM8d,EAAW/pB,KAAKiqB,4BAA4B7d,EAAK8d,EAAeH,UAAWG,EAAgBC,GACjGE,EAAK/M,UAAW,EAChB+M,EAAKC,QAAS,EACdD,EAAKN,SAAWA,EAElBK,EAAM7d,KAAK8d,KAGRD,EAQTO,yBAAyB5E,EAAa4D,EAA4BO,EAAgCC,GAAiB,GACjH,MAAMS,EAAW5qB,KAAK0pB,uBAAuB3D,EAAM4D,GACnD,OAAgB,MAAZiB,GAAoBA,EAAS3e,OAAS,EACjCjM,KAAKiqB,4BAA4BW,EAAUV,EAAgBC,GAE7D,GAQTU,gCAAgC9E,EAAa+E,EAAoDX,GAAiB,GAChH,MAAMC,EAAe,GA4BrB,OA3BY,MAARrE,GAAgBA,EAAK9Z,OAAS,GAChC8Z,EAAK5Z,QAASC,IACZ,MAAMie,EAAY,CAChBhpB,MAAO,GACPoa,MAAO,GACPS,MAAO,GACPoB,SAAU6M,EACVY,QAAS,GACTT,QAAQ,EACRU,OAAQ,GACRjB,SAAU,IAEZ,IAAK,MAAMnW,KAAY9S,OAAO4S,KAAKoX,GACS,MAAtCA,EAAyBlX,IAA4D,KAAvCkX,EAAyBlX,KACzEyW,EAAKzW,GAAYxH,EAAK0e,EAAyBlX,KAInD,GADAyW,EAAKN,SAAW,GAC+B,MAA3C3d,EAAK0e,EAAyBf,WAAqB3d,EAAK0e,EAAyBf,UAAU9d,OAAS,EAAG,CACzG,MAAM8d,EAAW/pB,KAAK6qB,gCAAgCze,EAAK0e,EAAyBf,UAAWe,EAA0BX,GACzHE,EAAK/M,UAAW,EAChB+M,EAAKC,QAAS,EACdD,EAAKN,SAAWA,EAElBK,EAAM7d,KAAK8d,KAGRD,EAQTa,uBAAuBlF,GACrB,GAAY,MAARA,GAAgBA,EAAK9Z,OAAS,EAAG,CACnC,MAAMif,EAAiC,GAavC,OAZAnF,EAAK5Z,QAASC,IACRA,EAAK/K,QACP6pB,EAAe9e,EAAK/K,OAAS,CAC3BM,IAAKyK,EAAKzK,IACVua,MAAO9P,EAAK8P,MACZ7a,MAAO+K,EAAK/K,OAEV+K,EAAK2d,UAAY3d,EAAK2d,SAAS9d,OAAS,IAC1Cif,EAAe9e,EAAK/K,OAAO0oB,SAAW/pB,KAAKirB,uBAAuB7e,EAAK2d,gBAAarb,MAInFwc,GAUXC,6BAA6BpF,EAAa4D,EAA4BmB,EAAoDX,GAAiB,GACzI,MAAMS,EAAW5qB,KAAK0pB,uBAAuB3D,EAAM4D,GACnD,OAAgB,MAAZiB,GAAoBA,EAAS3e,OAAS,EACjCjM,KAAK6qB,gCAAgCD,EAAUE,EAA0BX,GAE3E,GAYTiB,uBAAuBR,EAAiB7E,EAAasF,GAYnD,OAXAtF,EAAOA,GAAQ,GACf6E,EAAW5E,KAAKC,MAAMD,KAAKiD,UAAU2B,IACrCA,EAASze,QAASR,IAChBoa,EAAKxZ,KAAKZ,GACNA,EAAI0f,IAAc1f,EAAI0f,GAAWpf,QACnCqf,GAA2BF,uBAAuBzf,EAAI0f,GAAYtF,EAAMsF,KAG5EtF,EAAK5Z,QAASR,WACLA,EAAI0f,KAENtF,GAGX,MAAMuF,GAAyD,IAAI7B,GCtOnE,MAAM8B,GAIJjX,eAEOkX,SAAS9Z,GACd2X,GAAuBX,QAAQ6C,GAAUE,MAAO/Z,GAG3Cga,WACL,OAAOrC,GAAuBlD,QAAQoF,GAAUE,OAG3CE,WAAWtqB,GAChBgoB,GAAuBX,QAAQ6C,GAAUK,QAASvqB,GAG7CwqB,aACL,OAAOxC,GAAuBlD,QAAQoF,GAAUK,U,EAnB9CL,GAAS,QACmB,cAAYvW,EADxCuW,GAAS,UAEqB,iBAoBpC,MAAMO,GAAY,IAAIP,G,iBCvBtB,MAAMQ,GAOJzX,eAGO0X,SAASC,GACdnD,GAAuBJ,QAAQqD,GAAUG,MAAOD,GAG3CE,WACL,OAAOrD,GAAuB3C,QAAQ4F,GAAUG,OAI3CE,aAAaH,GAClBnD,GAAuBJ,QAAQqD,GAAUM,WAAYJ,GAGhDK,eACL,OAAOxD,GAAuB3C,QAAQ4F,GAAUM,YAI3CE,YAAYN,GACjBnD,GAAuBJ,QAAQqD,GAAUS,UAAWP,GAG/CQ,cACL,OAAO3D,GAAuB3C,QAAQ4F,GAAUS,WAI3CE,gBAAgBT,GACrBnD,GAAuBJ,QAAQqD,GAAUY,eAAgBV,GAGpDW,kBACL,OAAO9D,GAAuB3C,QAAQ4F,GAAUY,gBAI3ChB,WAAWtqB,GAChBynB,GAAuBJ,QAAQqD,GAAUH,QAASvqB,GAG7CwqB,aACL,OAAO/C,GAAuB3C,QAAQ4F,GAAUH,U,EAnD9CG,GAAS,QACmB,cAAY/W,EADxC+W,GAAS,aAEwB,kBAAgB/W,EAFjD+W,GAAS,YAGuB,kBAAgB/W,EAHhD+W,GAAS,iBAI4B,sBAAoB/W,EAJzD+W,GAAS,UAKqB,gBAiDpC,MAAMc,GAAY,IAAId,GC7DhBe,GAAyB,mBACzBC,GAAyB,YACzBC,GAAmB,oBAAsBD,G,iBCCzC,MAAOE,GACX3Y,eAOA/H,KAAK2gB,GACH3Q,QAAQ4Q,UAAU,KAAMD,EAAQA,GAQlCE,eAAejG,GACb,IAAIV,EAAOU,EAIX,OAH0B,IAAtBA,EAAIlX,QAAQ,OACdwW,EAAOU,EAAIpY,MAAM,KAAK,IAEjB0X,EAQT4G,iBAAiBlG,GACf,IAAImG,EAIJ,OAH0B,IAAtBnG,EAAIlX,QAAQ,OACdqd,EAAYttB,KAAKutB,qBAAqBpG,EAAIpY,MAAM,KAAK,KAEhDue,EAQTC,qBAAqBD,GACnB,MAAME,EAAiB,GACjBtd,EAAgBod,EAAUve,MAAM,KAStC,OARAmB,EAAI/D,QAAQ,CAACR,EAAK6b,EAAKiG,KACrB,MAAMC,EAAe/hB,EAAIoD,MAAM,KAC3B2e,EAAGzhB,OAAS,EACduhB,EAAOE,EAAG,IAAMC,mBAAmBD,EAAG,IAEtCF,EAAOE,EAAG,IAAM,KAGbF,EAQTI,kBAAkBzG,EAAamG,GAC7B,IAAI/F,EAAmB,GAMvB,GAJEA,GADwB,IAAtBJ,EAAIlX,QAAQ,KACK,IAEA,IAEjBqd,GAAaxsB,OAAO4S,KAAK4Z,GAAWrhB,OAAS,EAAG,CAClD,IAAI4hB,EAAO,EACX/sB,OAAO4S,KAAK4Z,GAAWnhB,QAASC,IACjB,IAATyhB,EACqB,MAAnBP,EAAUlhB,IAAqC,SAApBkhB,EAAUlhB,IAAwC,cAApBkhB,EAAUlhB,GACrE+a,GAAOI,EAAmBnb,EAAO,IAAMkhB,EAAUlhB,GAEjD+a,GAAOI,EAAmBnb,EAAO,IAGZ,MAAnBkhB,EAAUlhB,IAAqC,SAApBkhB,EAAUlhB,IAAwC,cAApBkhB,EAAUlhB,GACrE+a,GAAO,IAAM/a,EAAO,IAAMkhB,EAAUlhB,GAEpC+a,GAAO,IAAM/a,EAAO,IAGxByhB,MAGJ,OAAO1G,GAGX,MAAM2G,GAA+B,IAAIb,GCpFzC,MAAMc,GAMJC,aAAaC,EAA+BC,GAC1C,GAAgB,MAAZD,EAAkB,CACf5d,MAAMC,QAAQ2d,KACjBA,EAAW,CAACA,IAEd,MAAME,EAA4B,GAClC,IAAIC,EAA6B,GAC7BC,EAAa,GAQjB,GAPAJ,EAAS9hB,QAASmiB,IAChB,MAAMC,EAA2BD,EAAQE,iBACrCD,GAAUA,EAAOtiB,OAAS,IAC5BkiB,EAAe5hB,KAAK+hB,GACpBF,EAAWA,EAASK,OAAOF,MAG3BH,GAAYA,EAASniB,OAAS,EAkBhC,OAhBAmiB,EAASjiB,QAASuiB,IAChBC,QAAQC,IAAIF,GACZL,GAAc,oEAAoEK,EAAI/tB,mBAAmB+tB,EAAIvgB,oBAG/G0gB,WAAMC,QAAQ,CACZrU,MAAO,IACPyB,MAAO6S,eAAE,MAAO,CAAEhd,MAAO,SAAUid,UAAW,aAAahK,iDAC3D/Q,QAAS8a,eAAE,MAAO,CAAEC,UAAWX,IAC/BY,KAAMA,KACJjvB,KAAKkvB,eAAef,EAAuBC,EAAUF,IAEvDiB,OAAQ,KACRC,WAAY,KACZrd,MAAO,yBAEF,EAGX,OAAO,EASFmd,eAAejB,EAAqBG,EAA4BF,GAAgB,IAAAmB,EAAAC,EACrF,MAAMC,EAA0B,QAAnBF,EAAQpB,EAAS,UAAE,IAAAoB,OAAA,EAAXA,EAAaG,aAAwB,QAAZF,EAAClB,EAAS,UAAE,IAAAkB,OAAA,EAAXA,EAAa3tB,KAC5D,GAAe,MAAX4tB,EAIF,GAHIrB,GAAoC,kBAAfA,IACvBA,EAAard,SAAS4e,eAAevB,IAEnCA,EAAY,CACdA,EAAWwB,SAAS,CAAEC,IAAKJ,EAAQK,UAAWC,SAAU,WACxD,MAAMC,EAAWC,IACf,MAAMC,EAAiC,MAArB9B,EAAWvd,QAAkBud,EAAWvd,SAAWud,EAAWvd,OAAOA,OAASE,SAASof,gBAAgBD,WAAanf,SAAS2N,KAAKwR,UAAY9B,EAAW8B,UACrKE,EAAmBX,EAAQK,UAAYI,EACzCE,GAAoB,IAAMA,EAAmB,KAC/ChC,EAAWiC,oBAAoB,SAAUL,GACzC9vB,KAAKowB,aAAab,KAGtBrB,EAAWmC,iBAAiB,SAAUP,GAAS,QAE/C9vB,KAAKowB,aAAab,GAYhBa,aAAaE,GACnB,IAAIC,EAAQ,EACZ,MAAMC,EAAWC,YAAY,KAC3BH,EAAGtW,MAAM0W,QAAUH,IAAU,IAAM,EAAI,KAAO,IAC1CA,EAAQ,GACVI,cAAcH,IAEf,MAGP,MAAMI,GAAsB,IAAI7C,GCxEhC,MAAM8C,GAkBJvc,cAfwCU,EAAA,oBACH,CAAEgV,GAAI,WAAYJ,SAAU,iBAAkBG,SAAU,qBAAoB/U,EAAA,2BACrE,CAAEgV,GAAI,aAAcJ,SAAU,YAAaG,SAAU,aAAY/U,EAAA,qCACrD,CAAErT,IAAK,aAAcua,MAAO,WAAY6N,SAAU,WAAY1oB,MAAO,WAAU2T,EAAA,+BACvF,CAAEgV,GAAI,aAAcJ,SAAU,YAAaG,SAAU,aAAY/U,EAAA,yCACrD,CAAErT,IAAK,aAAcua,MAAO,WAAY6N,SAAU,WAAY1oB,MAAO,WAAU2T,EAAA,gBAC7G,IAAIA,EAAA,4BAEU,IAAEA,EAAA,gCACE,IAAEA,EAAA,uCAAAA,EAAA,2CAAAA,EAAA,mBAI3B,GAIvB,iBACE,OAA4D,MAAvDrE,OAAemX,KAAKC,OAAOC,iBAAiBC,QACvCtX,OAAemX,KAAKC,OAAOC,iBAAiBC,QAE/C,GAGT6I,cAAcC,GACZ/wB,KAAKgxB,WAAaD,EAGpBE,qBAAqBrV,EAAQ,WAC3B/K,SAAS2N,KAAKxE,MAAMkX,YAAY,qBAAsBtV,GAQxDuV,8BACE,OAAIN,GAAiBO,gBACZC,QAAQC,QAAQ,CACrB/uB,KAAM,EACNgO,IAAK,wBAGAvQ,KAAKkoB,OAAOnB,KAAMnS,IACvBic,GAAiBO,iBAAkB,EAC5Bxc,IAUbsT,OACE,OAAOmJ,QAAQE,IAAI,CAACvxB,KAAKwxB,aAAcxxB,KAAKyxB,WAAYzxB,KAAK0xB,mBAAmB3K,KAAK,EAAE4K,EAAWC,MAChG,MAAMrvB,EAA0B,IAAnBovB,EAAUpvB,MAA+B,IAAjBqvB,EAAQrvB,KAAa,EAAI,EAC9D,MAAO,CAAEA,OAAMgO,IAAKohB,EAAUphB,IAAM,KAAOqhB,EAAQrhB,OASvDmhB,iBACE,GAAI1xB,KAAKmoB,WAAWhB,KAAOnnB,KAAKgxB,WAAY,CAC1C,MAAM7J,EAAMnnB,KAAKmoB,WAAWhB,IAAMnnB,KAAKmoB,WAAW0J,YAAc,+CAChE,OAAO7xB,KAAKwmB,MAAMW,EAAK,QAAIzY,EAAW,QAAQqY,KAAMnS,IACvC,MAAPA,GAA6B,IAAbA,EAAIrS,MAAciM,OAAOoG,EAAIrS,QAAUiM,OAAO,MAChD,MAAZoG,EAAImR,OACNG,aAAawC,QAAQ,cAAe1C,KAAKiD,UAAUrU,EAAImR,KAAK+L,cAC5D5L,aAAawC,QAAQ,cAAe1C,KAAKiD,UAAUrU,EAAImR,KAAKgM,cAC5D7L,aAAawC,QAAQ,cAAe1C,KAAKiD,UAAUrU,EAAImR,KAAKiM,eAGzDX,QAAQC,QAAQT,GAAiBoB,gBAG5C,OAAOZ,QAAQC,QAAQT,GAAiBoB,cAQ1CT,aACE,OAAOH,QAAQE,IAAI,CAACzF,GAAUJ,WAAYI,GAAUD,eAAe9E,KAAK,EAAEmL,EAAOC,MAC/E,GAAiC,WAA7BnyB,KAAKmoB,WAAWiK,SAClB,OAAa,MAATF,GACFlyB,KAAKqyB,SAAWH,EACTb,QAAQC,QAAQT,GAAiBoB,eAEjCjyB,KAAKsyB,WAAW,CAACtyB,KAAKmoB,WAAWhB,KAAO2F,KAE5C,GAAiC,YAA7B9sB,KAAKmoB,WAAWiK,SAAwB,CACjD,GAA6B,MAAzBpyB,KAAKmoB,WAAW5E,OAA2C,KAA1BvjB,KAAKmoB,WAAW5E,MAAc,CACjE,MAAMmD,EAAQ,CACZnD,MAAOvjB,KAAKmoB,WAAW5E,MACvBgP,UAAWtvB,QAAUC,KAAKX,MAEtB4kB,EAAMnnB,KAAKmoB,WAAWhB,IAAMnnB,KAAKmoB,WAAW0J,YAAc,+EAChE,OAAO7xB,KAAKwmB,MAAMW,EAAMT,GAAOK,KAAMnS,IACnC,GAAW,MAAPA,GAA4B,IAAbA,EAAIrS,KAAY,CACjC,GAAgB,MAAZqS,EAAImR,MAA4C,MAA5BnR,EAAImR,KAAKyM,gBAAyB,CACxD,GAAIhkB,OAAO2jB,KAAiB3jB,OAAOoG,EAAImR,KAAKyM,gBAAgBC,oBAAqB,CAC/E,MAAMC,EAAU1yB,KAAKmoB,WAAWhB,IAAMnnB,KAAKmoB,WAAW0J,YAAc,kEAAoEjd,EAAImR,KAAKyM,gBAAgBG,eACjK,OAAO3yB,KAAKsyB,WAAW,CAACI,IAAU3L,KAAM6L,IACnB,IAAfA,EAAMrwB,MACRupB,GAAUH,WAAW/W,EAAImR,KAAKyM,gBAAgBC,oBAEzCG,IAOT,OAJa,MAATV,IACFlyB,KAAKqyB,SAAWH,GAElBvD,QAAQC,IAAI5uB,KAAKqyB,UACVhB,QAAQC,QAAQT,GAAiBoB,cAG1C,OAAOZ,QAAQC,QAAQ,CAAE/uB,KAAM,EAAGgO,IAAK,WAGzC,OAAO8gB,QAAQC,QAAQT,GAAiBgC,aAI5C,OAAOxB,QAAQC,QAAQ,CACrB/uB,KAAM,EACNgO,IAAK,yBAGJ,MAAiC,UAA7BvQ,KAAKmoB,WAAWiK,SACrBpyB,KAAKmoB,WAAW2K,KACX,IAAIzB,QAASC,IAClBtxB,KAAKsyB,WAAWtyB,KAAKmoB,WAAW2K,MAAQ,IAAI/L,KAAK,KAC/CuK,EAAQT,GAAiBoB,kBAItBjyB,KAAK+yB,eAAe9vB,QAAUC,KAAKX,MAAMwkB,KAAMC,GAChDmL,IAAgBnL,EAASyL,oBACvBP,IACFlyB,KAAKqyB,SAAWH,GAEXb,QAAQC,QAAQT,GAAiBoB,eAEjC,IAAIZ,QAASC,IAClBtxB,KAAKsyB,WAAWtL,EAAS2L,gBAAgB5L,KAAK,KAC5C+E,GAAUH,WAAW3E,EAASyL,oBAC9BnB,EAAQT,GAAiBoB,mBAMG,kBAA7BjyB,KAAKmoB,WAAWiK,SAElBpyB,KAAKgzB,kBAAkB/vB,QAAUC,KAAKX,MAAMwkB,KAAMC,GACnDmL,IAAgBnL,EAASyL,oBACvBP,IACFlyB,KAAKqyB,SAAWH,GAEXb,QAAQC,QAAQT,GAAiBoB,eAEjC,IAAIZ,QAASC,IAClBtxB,KAAKsyB,WAAWtL,EAAS2L,gBAAgB5L,KAAK,KAC5C+E,GAAUH,WAAW3E,EAASyL,oBAC9BnB,EAAQT,GAAiBoB,mBAM5BZ,QAAQC,QAAQT,GAAiBgC,aASpCE,eAAehvB,GACrB,MAAMojB,EAAMnnB,KAAKmoB,WAAWhB,IAAMnnB,KAAKmoB,WAAW0J,YAAc,sEAC1DoB,EAAcjzB,KAAKmoB,WAAWhB,IAAMnnB,KAAKmoB,WAAW0J,YAAc,kEAClEnL,EAAQ,CACZwM,OAAQlzB,KAAKmoB,WAAW5E,MACxBgP,UAAWxuB,GAEb,OAAO/D,KAAKwmB,MAAMW,EAAMT,GAAOK,KAAMoM,IAAa,IAAAC,EAAAC,EAChD,MAAMrM,EAAgB,GAChBsM,EAAoB,GACpBb,EAA4B,GAC5Bc,EAAuB,GAa7B,OAZI,OAAJJ,QAAI,IAAJA,GAAU,QAANC,EAAJD,EAAMpN,YAAI,IAAAqN,GAAVA,EAAYjnB,QAASC,IAAa,IAAAonB,EAE5BpnB,EAAKmmB,WAAaxuB,GAA4B,QAAxByvB,EAAIpnB,EAAKomB,uBAAe,IAAAgB,GAApBA,EAAsBb,gBAAkBjM,EAAMwM,QAAUxM,EAAMwM,OAAOjjB,QAAQ7D,EAAKmX,QAAU,IACxHgQ,EAAgBnnB,EAAKmX,OAASnX,EAAKomB,gBAAgBC,mBACnDa,EAAQ/mB,KAAK0mB,EAAc7mB,EAAKomB,gBAAgBG,mBAGxC,QAAZU,EAAA3M,EAAMwM,cAAM,IAAAG,GAAZA,EAActkB,MAAM,KAAK5C,QAASoX,IAChCkP,EAAmBlmB,KAAKgnB,EAAgBhQ,MAE1CyD,EAASyL,mBAAqBA,EAAmBjN,KAAK,KACtDwB,EAAS2L,eAAiBW,EACnBtM,IAQHgM,kBAAkBjvB,GAAY,IAAA0vB,EACpC,MAAMtM,EAAMnnB,KAAKmoB,WAAWhB,IAAMnnB,KAAKmoB,WAAW0J,YAAc,sEAC1DoB,EAAcjzB,KAAKmoB,WAAWhB,IAAMnnB,KAAKmoB,WAAW0J,YAAc,sEAClEnL,EAAQ,CACZwM,OAAQlzB,KAAKmoB,WAAW5E,MACxBgP,UAAWxuB,GAEPmvB,GAA+B,QAAZO,EAAA/M,EAAMwM,cAAM,IAAAO,OAAA,EAAZA,EAAc1kB,MAAM,OAAQ,GACrD,OAAO/O,KAAKwmB,MAAMW,EAAMT,GAAOK,KAAMoM,IAAa,IAAAO,EAAAC,EAChD,MAAM3M,EAAgB,GAChBsM,EAAoB,GACpBb,EAA4B,GAC5Bc,EAAuB,GAa7B,OAZI,OAAJJ,QAAI,IAAJA,GAAU,QAANO,EAAJP,EAAMpN,YAAI,IAAA2N,GAAVA,EAAYvnB,QAASC,IAAa,IAAAwnB,EAE5BxnB,EAAKmmB,WAAaxuB,GAA4B,QAAxB6vB,EAAIxnB,EAAKomB,uBAAe,IAAAoB,GAApBA,EAAsBC,gBAAkBnN,EAAMwM,QAAUA,EAAOjjB,QAAQ7D,EAAKmX,QAAU,IAClHgQ,EAAgBnnB,EAAKmX,OAASnX,EAAKomB,gBAAgBC,mBACnDa,EAAQ/mB,KAAK0mB,EAAc7mB,EAAKomB,gBAAgBqB,eAAiB,UAAYznB,EAAKmX,MAAQ,cAAgBxf,MAGlG,QAAZ4vB,EAAAjN,EAAMwM,cAAM,IAAAS,GAAZA,EAAc5kB,MAAM,KAAK5C,QAASoX,IAChCkP,EAAmBlmB,KAAKgnB,EAAgBhQ,MAE1CyD,EAASyL,mBAAqBA,EAAmBjN,KAAK,KACtDwB,EAAS2L,eAAiBW,EACnBtM,IASHsL,WAAWQ,GACjB,OAAO9yB,KAAK8zB,iBAAiBhB,GAAM/L,KAAMsL,IACvC,MAAM0B,EAAyB,GAa/B,OAZgB,MAAZ1B,GAAoBA,EAASpmB,OAAS,GACxComB,EACGvI,OAAQ1d,GAAgC,MAAvBA,EAAK4X,gBAA0B5X,EAAK4X,eAAe/X,OAAS,GAC7EE,QAASC,IACR,MAAM4nB,EAAkCh0B,KAAKi0B,cAAc7nB,GACzC,MAAd4nB,GACFD,EAAYxnB,KAAKynB,KAIzBh0B,KAAKqyB,SAAW0B,EAChBjI,GAAUN,SAASxrB,KAAKqyB,UACjBxB,GAAiBoB,eASpB6B,iBAAiBhB,GACvB,MAAMoB,IAAyBl0B,KAAKmoB,WAAW+L,qBACzCpN,EAAU9mB,KAAKm0B,wCACfC,EAAe,GAIrB,OAHAtB,EAAK3mB,QAASgb,IACZiN,EAAQ7nB,KAAKvM,KAAKwmB,MAAMW,EAAK,QAAIzY,EAAW,MAAOoY,EAASoN,MAEvD7C,QAAQE,IAAI6C,GAASrN,KAAMsL,IAChC,IAAI0B,EAAyB,GAI7B,OAHQ,OAAR1B,QAAQ,IAARA,KAAUlmB,QAASuF,IACjBqiB,EAAcA,EAAYtF,OAAO/c,KAE5BqiB,IASXtC,WACE,OAAOJ,QAAQE,IAAI,CAAC1E,GAAUV,WAAYU,GAAUP,eAAgBO,GAAUJ,cAAeI,GAAUD,kBAAmBC,GAAUhB,eAAe9E,KAAK,EAAEsN,EAAOC,EAAWC,EAAUC,EAAcC,MAClM,GAAiC,WAA7Bz0B,KAAKmoB,WAAWiK,SAAuB,CACzC,MAAMjL,EAAMnnB,KAAKmoB,WAAWuM,QAAU10B,KAAKmoB,WAAWuM,QAAU1H,GAChE,OAAa,MAATqH,GAA8B,MAAbC,GACnBt0B,KAAK20B,qBAAuBN,EAC5Br0B,KAAK40B,yBAA2BN,EAChCt0B,KAAK60B,wBAA0BN,EAC/Bv0B,KAAK80B,4BAA8BN,EAC5B3D,GAAiBoB,cAEjBjyB,KAAK+0B,SAAS,CAAC5N,IAEnB,GAAiC,YAA7BnnB,KAAKmoB,WAAWiK,SAAwB,CACjD,GAAIpyB,KAAKmoB,WAAW5E,MAAO,CACzB,MAAMyR,EAAOh1B,KAAKmoB,WAAWhB,IAAMnnB,KAAKmoB,WAAW0J,YAAc,+EAC3D1K,EAAcnnB,KAAKmoB,WAAWuM,QAAU10B,KAAKmoB,WAAWuM,QAAUM,GAAQ,GAC1EvO,EAAeqH,GAAcV,eAAejG,GAClD,IAAIT,EAAaoH,GAAcT,iBAAiBlG,IAAQ,GACxDT,EAAMnD,MAAQmD,EAAMnD,MAAQmD,EAAMnD,MAAQvjB,KAAKmoB,WAAW5E,MAC1DmD,EAAM6L,UAAY7L,EAAM6L,UAAY7L,EAAM6L,UAAYtvB,QAAUG,KAAKb,KACrEmkB,EAAQ1mB,KAAKmoB,WAAW8M,qBAAuB,GAAKvO,EACpD,MAAMlI,EAAgF,SAAnExe,KAAKmoB,WAAW+M,kBAAoB,OAAOC,yBAAgCzmB,EAAY1O,KAAKmoB,WAAWiN,iBAC1H,IAAItO,EAAe9mB,KAAKmoB,WAAWkN,oBAInC,OAHe,MAAXvO,GAAsC,oBAAZA,IAC5BA,EAAWA,KAEN9mB,KAAKwmB,MAAMC,EAAMC,EAAOlI,EAAMxe,KAAKmoB,WAAW+M,iBAAkBpO,GAASC,KAAMnS,IACpF,GAAW,MAAPA,GAA6B,IAAbA,EAAIrS,MAAciM,OAAOoG,EAAIrS,QAAUiM,OAAO,KA2BhE,OAAOqiB,GAAiBgC,UA1BxB,GAAgB,MAAZje,EAAImR,KAAc,CACpB,IAAIyM,EAAuB5d,EAAImR,KAAKyM,gBAChC5d,EAAImR,MAAQnR,EAAImR,gBAAgB1V,OAASuE,EAAImR,KAAK9Z,OAAS,IAC7DumB,EAAkB5d,EAAImR,KAAK,GAAGyM,iBAEhC,MAAM8C,EAAUt1B,KAAKmoB,WAAWhB,IAAMnnB,KAAKmoB,WAAW0J,YAAc,kEAAoEW,EAAgBG,eACxJ,OAAInkB,OAAOimB,KAAiBjmB,OAAOgkB,EAAgBC,oBAC1CzyB,KAAK+0B,SAAS,CAACO,IAAUvO,KAAM6L,IACjB,IAAfA,EAAMrwB,MACRsqB,GAAUlB,WAAW6G,EAAgBC,oBAEhCG,KAGI,MAATyB,GAA8B,MAAbC,IACnBt0B,KAAK20B,qBAAuBN,EAC5Br0B,KAAK40B,yBAA2BN,EAChCt0B,KAAK60B,wBAA0BN,EAC/Bv0B,KAAK80B,4BAA8BN,GAE9B3D,GAAiBoB,cAG1B,MAAO,CAAE1vB,KAAM,EAAGgO,IAAK,YAO7B,MAAO,CAAEhO,KAAM,EAAGgO,IAAK,wBAEpB,MAAiC,UAA7BvQ,KAAKmoB,WAAWiK,SAClBpyB,KAAK+yB,eAAe9vB,QAAUG,KAAKb,MAAMwkB,KAAMC,GAChDyN,IAAgBzN,EAASyL,oBACd,MAAT4B,GAA8B,MAAbC,IACnBt0B,KAAK20B,qBAAuBN,EAC5Br0B,KAAK40B,yBAA2BN,EAChCt0B,KAAK60B,wBAA0BN,EAC/Bv0B,KAAK80B,4BAA8BN,GAE9B3D,GAAiBoB,cAEjB,IAAIZ,QAASC,IAClBtxB,KAAK+0B,SAAS/N,EAAS2L,gBAAgB5L,KAAK,KAC1C8F,GAAUlB,WAAW3E,EAASyL,oBAC9BnB,EAAQT,GAAiBoB,mBAKK,kBAA7BjyB,KAAKmoB,WAAWiK,SAElBpyB,KAAKgzB,kBAAkB/vB,QAAUG,KAAKb,MAAMwkB,KAAMC,GACnDyN,IAAgBzN,EAASyL,oBACd,MAAT4B,GAA8B,MAAbC,IACnBt0B,KAAK20B,qBAAuBN,EAC5Br0B,KAAK40B,yBAA2BN,EAChCt0B,KAAK60B,wBAA0BN,EAC/Bv0B,KAAK80B,4BAA8BN,GAE9B3D,GAAiBoB,cAEjB,IAAIZ,QAASC,IAClBtxB,KAAK+0B,SAAS/N,EAAS2L,gBAAgB5L,KAAK,KAC1C8F,GAAUlB,WAAW3E,EAASyL,oBAC9BnB,EAAQT,GAAiBoB,mBAM5BpB,GAAiBgC,YASpBkC,SAASjC,GACf,OAAO9yB,KAAKu1B,eAAezC,GAAM/L,KAAMyO,IACrC,GAAoB,MAAhBA,EAAsB,CAExB,MAAMC,EAAyDz1B,KAAK01B,gBAAgBF,GACpFx1B,KAAK20B,qBAAuBc,EAA2Bd,sBAAwB,GAC/E30B,KAAK40B,yBAA2Ba,EAA2Bb,0BAA4B,GACvF50B,KAAK60B,wBAA0BY,EAA2BZ,wBAC1D70B,KAAK80B,4BAA8BW,EAA2BX,4BAE1DW,EAA2Bd,sBAAwBc,EAA2Bd,qBAAqB1oB,OAAS,GAC9G4gB,GAAUb,SAASyJ,EAA2Bd,sBAE5Cc,EAA2Bb,0BAA4Ba,EAA2Bb,yBAAyB3oB,OAAS,GACtH4gB,GAAUT,aAAaqJ,EAA2Bb,0BAEpD/H,GAAUN,YAAYkJ,EAA2BZ,yBAA2B,MAC5EhI,GAAUH,gBAAgB+I,EAA2BX,6BAA+B,MAEtF,OAAOjE,GAAiBoB,eAoCpBsD,eAAeb,GACrB,MAAMiB,EAAkB,GAIxB,OAHAjB,EAAQvoB,QAASgb,IACfwO,EAAWppB,KAAKvM,KAAKwmB,MAAMW,EAAK,QAAIzY,EAAW,WAAOA,IAAa1O,KAAKmoB,WAAW+L,yBAE9E7C,QAAQE,IAAIoE,GAAY5O,KAAM6O,IACnC,IAAIC,EAA8B,GAClC,MAAMC,EAAc,GACdC,EAA4B,GAWlC,OAVS,OAATH,QAAS,IAATA,KAAWzpB,QAASuF,IAClBmkB,EAAeA,EAAapH,OAAO/c,KAGrCmkB,EAAa1pB,QAASC,IACf0pB,EAAO1pB,EAAK4pB,UACfD,EAAWxpB,KAAKH,GAChB0pB,EAAO1pB,EAAK4pB,SAAU,KAGnBD,IAQJL,gBAAgBF,GACrB,MAAMb,EAA4C,GAC5CC,EAAgD,GACtDY,EAAarpB,QAAS8pB,IACpB,MAAM5L,EAA0B,CAC9B1oB,IAAKs0B,EAAYD,OACjB30B,MAAO40B,EAAYC,OACnBha,MAAO+Z,EAAYE,OACnB7L,QAAQ,EACRI,UAAU,EACVX,SAAU,IAERkM,EAAYG,SAAW/zB,QAAkBC,kBAAkBC,MAC7D8nB,EAAKC,QAAS,EACdD,EAAKN,SAAWuB,GAA2BX,yBACzCsL,EAAYI,iBAAiBvM,OAAQwM,KAASA,EAAGN,QACjDh2B,KAAKu2B,oBACLv2B,KAAKw2B,+BACL,GAEF7B,EAAqBpoB,KAAK8d,IACjB4L,EAAYG,SAAW/zB,QAAkBG,eAAeD,OAC5B,MAAjC0zB,EAAYQ,mBAA6BR,EAAYQ,kBAAkBxqB,OAAS,IAClFoe,EAAKC,QAAS,EACd2L,EAAYQ,kBAAkBtqB,QAASC,IACd,MAAnBA,EAAKsqB,YACPtqB,EAAKsqB,UAAY,MAGrBrM,EAAKN,SAAWuB,GAA2BX,yBACzCsL,EAAYQ,kBAAkB3M,OAAQwM,KAASA,EAAGN,QAClDh2B,KAAK22B,wBACL32B,KAAK42B,mCACL,IAGJhC,EAAyBroB,KAAK8d,MAGlC,MAAMa,EAA6CI,GAA2BL,uBAAuB0J,GAC/FkC,EAAiDvL,GAA2BL,uBAAuB2J,GACzG,MAAO,CACLD,qBAAsBA,EACtBC,yBAA0BA,EAC1BC,wBAAyB3J,EACzB4J,4BAA6B+B,GASjC5C,cAAc6C,GACZ,GAAqB,MAAjBA,EAAuB,CACzB,MAAM9C,EAAsB,IAAI1K,GAAQwN,GAClC9S,EAAkCsH,GAA2B5B,uBAAuBoN,EAAc9S,eAAgBhkB,KAAK2pB,cACvHhY,EAAW3R,KAAK+2B,oBAAoB,GAAI/S,GAI9C,OAHAhkB,KAAKg3B,aAAarlB,GAClBqiB,EAAWhQ,eAAiB,GAC5BgQ,EAAWriB,SAAWA,EACfqiB,GASH+C,oBAAoBnS,EAAmCZ,GAC7D,MAAMrS,EAAsB,GAiE5B,OAhEuB,MAAnBiT,GAA2BA,EAAgB3Y,OAAS,GACtD2Y,EACGkF,OAAQ1d,KAAWA,EAAK6qB,aACxB9qB,QAAS+qB,IACR,MAAM3kB,EAAmB,CACvBhQ,KAAM20B,EAAe1pB,YACrB7M,MAAOG,OAAOq2B,OAAOtzB,SAAeuzB,KAAMhrB,GAASA,EAAK7J,OAAS20B,EAAe1pB,cAAgB,IAAI7M,MAAQ,GAC5GoD,KAAM0K,OAAOyoB,EAAe1pB,aAAe,GAAKnK,QAAeG,KAAKjB,KAAOc,QAAeI,OAAOlB,KACjG80B,QAAQ,EACRld,iBAAazL,EACb3C,YAAamrB,GAETnrB,EAAcwG,EAAQxG,YAC5BA,EAAY4P,YAAcub,EAAevb,cAAgBjY,QAAOE,OAAOrB,KACvEwJ,EAAY2P,YAAcwb,EAAexb,cAAgBhY,QAAOE,OAAOrB,KACvEwJ,EAAYwR,UAAY2Z,EAAe3Z,YAAc7Z,QAAOE,OAAOrB,KACnEwJ,EAAYoV,cAAgB+V,EAAe/V,gBAAkBzd,QAAOE,OAAOrB,KAC3EwJ,EAAY6N,cAAgBsd,EAAetd,gBAAkBlW,QAAOE,OAAOrB,KAC3EwJ,EAAYurB,cAAgBJ,EAAeI,gBAAkB5zB,QAAOE,OAAOrB,KAC3EwJ,EAAYwrB,mBAAqBL,EAAeK,qBAAuB7zB,QAAOE,OAAOrB,KACrFwJ,EAAYyrB,iBAAmBN,EAAeM,mBAAqB9zB,QAAOE,OAAOrB,KACjFwJ,EAAY0rB,2BAA6BP,EAAeO,6BAA+B/zB,QAAOE,OAAOrB,KACrGwJ,EAAY2rB,qBAAuBR,EAAeQ,uBAAyBh0B,QAAOE,OAAOrB,KACzFwJ,EAAY4rB,kBAAoBT,EAAeS,oBAAsBj0B,QAAOE,OAAOrB,KACnFwJ,EAAY6rB,aAAezO,GAAqBlD,MAAMiR,EAAeU,cACrE7rB,EAAY8rB,yBAA2B1O,GAAqBlD,MAAMiR,EAAeW,0BACjF9rB,EAAY+rB,iBAAmB3O,GAAqBlD,MAAMiR,EAAeY,kBACzE/rB,EAAYgsB,kBAAoBb,EAAea,oBAAsBr0B,QAAOE,OAAOrB,KAC/E8N,MAAMC,QAAQ4mB,EAAec,mBAAqBd,EAAec,iBAAiB/rB,OAAS,IAC7FF,EAAYisB,iBAAmBd,EAAec,iBAAiBxS,KAAK,MAEtEzZ,EAAY8T,iBAAmBqX,EAAerX,mBAAqBnc,QAAOE,OAAOrB,KACjFwJ,EAAYksB,aAAef,EAAee,eAAiBv0B,QAAOE,OAAOrB,KACzEwJ,EAAYuU,YAAc4W,EAAe5W,cAAgB5c,QAAOE,OAAOrB,KACvEwJ,EAAYmsB,cAAgBhB,EAAegB,gBAAkBx0B,QAAOE,OAAOrB,KAC3EwJ,EAAYgU,eAAiBmX,EAAenX,iBAAmBrc,QAAOE,OAAOrB,KAC7EwJ,EAAYgX,SAAWmU,EAAenU,WAAarf,QAAOE,OAAOrB,KACjEwJ,EAAYC,kBAAoBmd,GAAqBlD,MAAMiR,EAAelrB,mBAC1ED,EAAYmX,cAAgBgU,EAAehU,gBAAkBxf,QAAOE,OAAOrB,KAC3EoP,EAASpF,KAAKgG,KAGE,MAAlByR,GAA0BA,EAAe/X,OAAS,GACpD+X,EACG8F,OAAQ1d,KAAWA,EAAK6X,UACxB9X,QAASgsB,IACR,MAAMC,EAAyB,CAC7B71B,KAAM41B,EAAchU,WACpBxjB,MAAOG,OAAOq2B,OAAOtzB,SAAeuzB,KAAMhrB,GAASA,EAAK7J,OAAS41B,EAAchU,aAAe,IAAIxjB,MAAQ,GAC1GoD,KAAMV,QAAeC,OAAOf,KAC5B80B,QAAQ,EACRld,YAAa,GACbpO,YAAa,IAAIyd,GAAc2O,IAE3BpsB,EAAcqsB,EAAcrsB,YAClCA,EAAYsY,iBAAmB8E,GAAqBlD,MAAMkS,EAAc9T,kBACxEtY,EAAY6Y,gBAAkB,GAC9B7Y,EAAY4Y,iBAAmB,IACQ,MAAlCwT,EAAcxT,kBAA4BwT,EAAcxT,iBAAiB1Y,OAAS,GAAwC,MAAjCksB,EAAcvT,iBAA2BuT,EAAcvT,gBAAgB3Y,OAAS,KAC5KmsB,EAAcje,YAAcna,KAAK+2B,oBAAoBoB,EAAcvT,gBAAiBuT,EAAcxT,mBAEpGhT,EAASpF,KAAK6rB,KAGbzmB,EAQDqlB,aAAarlB,GACnBA,EAASyT,KAAK,CAACiT,EAAUC,KACvB,IAAIC,EAAI,EACJC,EAAI,EAWR,OATED,EADEF,EAASt0B,OAASV,QAAeC,OAAOf,KACtCkM,OAAQ4pB,EAAStsB,YAA8ByY,aAE/C/V,OAAQ4pB,EAAStsB,YAA+B0sB,iBAGpDD,EADEF,EAASv0B,OAASV,QAAeC,OAAOf,KACtCkM,OAAQ6pB,EAASvsB,YAA8ByY,aAE/C/V,OAAQ6pB,EAASvsB,YAA+B0sB,iBAE/CF,EAAIC,IAEb7mB,EAASxF,QAASC,IACQ,MAApBA,EAAK+N,aAAuB/N,EAAK+N,YAAYlO,OAAS,GACxDjM,KAAKg3B,aAAa5qB,EAAK+N,eAU7Bue,aAAapV,GACX,MAAM5R,EAA+B1R,KAAKqyB,SAAS+E,KAAMhrB,GAASA,EAAKkX,SAAWA,GAClF,OAAe,MAAX5R,EACKyX,GAAqBH,KAAKtX,GAE1B,IAAI4X,GAAQ,CAAEhG,OAAQA,IAIjCqV,aAAarV,GACX,GAA6B,IAAzBtjB,KAAKqyB,SAASpmB,OAChB,OAAO,IAAIolB,QAAQ,CAACC,EAASsH,KAC3BvH,QAAQE,IAAI,CAAC1E,GAAUV,WAAYU,GAAUP,eAAgBO,GAAUJ,cAAeI,GAAUD,kBAAmBd,GAAUJ,aAAa3E,KAAK,EAAEsN,EAAOC,EAAWC,EAAUC,EAActC,MACzLlyB,KAAKqyB,SAAWH,EAChBlyB,KAAK20B,qBAAuBN,EAC5Br0B,KAAK40B,yBAA2BN,EAChCt0B,KAAK60B,wBAA0BN,EAC/Bv0B,KAAK80B,4BAA8BN,EACnC,MAAM9iB,EAA+B1R,KAAKqyB,SAAS+E,KAAMhrB,GAASA,EAAKkX,SAAWA,GAClF,GAAe,MAAX5R,EAEF,OADA4f,EAAQnI,GAAqBH,KAAKtX,IAC3ByX,GAAqBH,KAAKtX,GAEjCknB,EAAO,IAAItP,GAAQ,CAAEhG,OAAQA,SAI9B,CACL,MAAM5R,EAA+B1R,KAAKqyB,SAAS+E,KAAMhrB,GAASA,EAAKkX,SAAWA,GAClF,OAAe,MAAX5R,EACK2f,QAAQC,QAAQnI,GAAqBH,KAAKtX,IAE1C2f,QAAQuH,OAAO,IAAItP,GAAQ,CAAEhG,OAAQA,MAU1CkD,MAAMC,EAAc+G,EAAgChP,EAAYmI,EAAS,MAAOG,EAAe+R,GAAS,GAE9G,OADA/R,EAAUA,GAAoBW,GAAW7B,qBAClCiT,EAASrS,MAAMC,GAAMM,KAAMC,GAAaA,EAASI,QAAUK,GAAWjB,MAAMC,EAAM+G,EAAQhP,EAAMmI,EAAQG,GAQjHkH,aAAaC,EAA+BC,GAC1C,OAAO0C,GAAoB5C,aAAaC,EAAUC,GAQpDiG,wCACE,MAAO,CACLrN,QAAS,CACP,eAAgB,oBAElBgS,aAAc,S,EA7tBdjI,GAAgB,eACmB,CAAEtuB,KAAM,EAAGgO,IAAK,SAAUyE,EAD7D6b,GAAgB,YAEgB,CAAEtuB,KAAM,EAAGgO,IAAK,SAAUyE,EAF1D6b,GAAgB,mBAGa,GA8tBnC,MAAMkI,GAAqC,IAAIlI,G,iBC9vB/C,SAAS3L,GAAU8T,GAEjB,MAAMC,EAAiB,gBAEjBC,EAAU,IACVC,EAAS,IACTC,EAAS,IACTC,EAAW,IACXC,EAAU,IACVC,EAAU,IACVC,EAAS,IACTC,EAAW,IACXC,EAAW,IACXC,EAAU,IACVC,EAAS,IACTC,EAAa,IACbC,EAAc,IACdC,EAAkB,IAClBC,EAAqB,IAErBC,EAAY,GACZC,EAAY,GACZC,EAAO,IACPC,EAAc,GACdC,EAAU,GACVC,EAAa,GAGnB,IAAIC,EACAC,EACAC,EAMAC,EACAt6B,EAAG8B,EAAGxB,EACNi6B,EAAUC,EAPVC,EAAQ,GACRC,EAAS,GACXC,EAAU,GACVC,EAAa,GACb9rB,EAAW,GAMb8pB,OAAmCtqB,GAAlBsqB,EAA8BA,EAAelqB,WAAa,GAE3E,IAAImsB,EAAS,GAKb,GAJsB,MAAlBjC,GAA0D,IAAhCA,EAAe/oB,QAAQ,OACnDgrB,EAAS,IACTjC,EAAiBA,EAAekC,OAAO,IAElB,KAAnBlC,EACF,MAAO,IAET,GAAuC,MAAnCA,EAAejoB,MAAM,WACvB,MAAO,aAET,GAAyF,MAArFioB,EAAejoB,MAAM,6DACvB,MAAO,eAOT,GAHAioB,EAAiBA,EAAemC,QAAQ,KAAM,IAC9CnC,EAAiBA,EAAemC,QAAQ,MAAO,IAE3C1sB,OAAOuqB,GAAkBC,EAAgB,CAC3C,IAAImC,EAAU,KACd,GAAIpC,EAAe/oB,QAAQ,MAAQ,EAAG,CACpC,MAAMorB,EAAMrC,EAAejqB,MAAM,KAAK,GAAG9C,OACzC,IAAK,IAAI7L,EAAI,EAAGA,EAAIi7B,EAAKj7B,IACvBg7B,GAAoB,GAEtBpC,EAAiBA,EAAemC,QAAQ,IAAK,IAE/C,OAAO1sB,OAAOuqB,GAAkBvqB,OAAO2sB,GAAW,MAuBpD,GAlBAP,EAAQ7B,EAAejqB,MAAM,KACzB8rB,EAAM5uB,OAAS,GACjBsuB,EAAWM,EAAM,GACjBL,EAAUK,EAAM,GAEhBL,EAAUA,EAAQU,OAAO,EAAG,KAE5BX,EAAWM,EAAM,GACjBL,EAAU,IAGZM,EAAS,CAAC5B,EAASC,EAAQC,EAAQC,EAAUC,EAASC,EAASC,EAAQC,EAAUC,EAAUC,GAC3FoB,EAAU,CAAC,GAAInB,EAAQC,EAAYC,GACnCkB,EAAa,CAAC,GAAIjB,EAAiBC,GACnC9qB,EAAW,CAACkrB,EAAaC,GAEzBI,EAAmB,GAEfhsB,OAAO8rB,GAAY,EAErB,IADAG,EAAY,EACPt6B,EAAI,EAAGA,EAAIm6B,EAAStuB,OAAQ7L,IAC/B8B,EAAIq4B,EAAStuB,OAAS7L,EAAI,EAC1BM,EAAI65B,EAASW,OAAO96B,EAAG,GACvBu6B,EAAWz4B,EAAI,EACf04B,EAAU14B,EAAI,EACJ,MAANxB,EACFg6B,KAEIA,EAAY,IACdD,GAAoBK,EAAO,IAE7BJ,EAAY,EACZD,GAAoBK,EAAOrsB,OAAO/N,IAAMq6B,EAAQH,IAElC,IAAZA,GAAiBF,EAAY,IAC/BD,GAAoBO,EAAWL,GAC/BD,EAAY,QAMhBD,EAAmBK,EAAOrsB,OAAO8rB,IAInC,GAAgB,KAAZC,GAA8B,MAAZA,GAA+B,OAAZA,EAEvC,IADAC,GAAoBN,EACf/5B,EAAI,EAAGA,EAAIo6B,EAAQvuB,OAAQ7L,IAC9BM,EAAI85B,EAAQU,OAAO96B,EAAG,GACZ,MAANM,EACF+5B,GAAoBK,EAAOrsB,OAAO/N,IAAMwO,EAAS9O,GAClC,IAANA,IAETq6B,GAAoBK,EAAOrsB,OAAO/N,KAYxC,MAPyB,KAArB+5B,IACFA,EAAmBvB,EAAUgB,GAEf,KAAZM,IACFC,GAAoBH,GAEtBG,EAAmBR,EAAYgB,EAASR,EACjCA,EAOT,MAAM9a,GAAwBoG,GACrBb,GAAUa,GAGJpG,UCzJT,MAAO2b,GAgFXhnB,YACEmM,EAgFI,IAAEzL,EAAA,2BAAAA,EAAA,sBAAAA,EAAA,wBAAAA,EAAA,6BAAAA,EAAA,sCAAAA,EAAA,sCAAAA,EAAA,iCAAAA,EAAA,2BAAAA,EAAA,+BAAAA,EAAA,iCAAAA,EAAA,0BAAAA,EAAA,2BAAAA,EAAA,2BAAAA,EAAA,0BAAAA,EAAA,2BAAAA,EAAA,oBAAAA,EAAA,yBAAAA,EAAA,6BAAAA,EAAA,6BAAAA,EAAA,iCAAAA,EAAA,gCAAAA,EAAA,6BAAAA,EAAA,6BAAAA,EAAA,4BAAAA,EAAA,6BAAAA,EAAA,6BAAAA,EAAA,gCAAAA,EAAA,0BAAAA,EAAA,wBAAAA,EAAA,wBAAAA,EAAA,oBAAAA,EAAA,6BAAAA,EAAA,0CAAAA,EAAA,oBAAAA,EAAA,yBAAAA,EAAA,mCAAAA,EAAA,0CAAAA,EAAA,wBAAAA,EAAA,4BAAAA,EAAA,oCAAAA,EAAA,iCAAAA,EAAA,4BAAAA,EAAA,4BAAAA,EAAA,iCAAAA,EAAA,iCAAAA,EAAA,wCAAAA,EAAA,yBAAAA,EAAA,gCAAAA,EAAA,mCAAAA,EAAA,0BAAAA,EAAA,0BAAAA,EAAA,iCAAAA,EAAA,+BAAAA,EAAA,yBAAAA,EAAA,iCAAAA,EAAA,gCAAAA,EAAA,gCAAAA,EAAA,0CAAAA,EAAA,gCAAAA,EAAA,4BAAAA,EAAA,2BAAAA,EAAA,6BAAAA,EAAA,8BAlG0BA,EAAA,8BAAAA,EAAA,+BAAAA,EAAA,6BAAAA,EAAA,8BAAAA,EAAA,+BAKTA,EAAA,wBAAAA,EAAA,kCAEaA,EAAA,mCACVA,EAAA,iCAAAA,EAAA,uBAAAA,EAAA,6BAGKA,EAAA,yBACJA,EAAA,0BACCA,EAAA,8BACIA,EAAA,4BACAA,EAAA,6BAqFhChV,KAAKi3B,YAAcxW,EAAQwW,aAAe,GAC1Cj3B,KAAKsjB,OAAS7C,EAAQ6C,QAAU,GAChCtjB,KAAKikB,SAAWxD,EAAQwD,UAAY,GACpCjkB,KAAKub,cAAgBkF,EAAQlF,eAAiB,GAC9Cvb,KAAKu7B,uBAAyB9a,EAAQ8a,wBAA0B,GAChEv7B,KAAKw7B,uBAAyB/a,EAAQ+a,wBAA0B,GAChEx7B,KAAK+b,kBAAoB0E,EAAQ1E,mBAAqB,GACtD/b,KAAKwN,YAAciT,EAAQjT,aAAe,GAC1CxN,KAAKy4B,gBAAkBhY,EAAQgY,sBAAmB/pB,EAClD1O,KAAKy7B,kBAAoBhb,EAAQgb,mBAAqB,GACtDz7B,KAAK07B,WAAajb,EAAQib,YAAc,GACxC17B,KAAK2b,YAAc8E,EAAQ9E,aAAe,GAC1C3b,KAAK0b,YAAc+E,EAAQ/E,aAAe,GAC1C1b,KAAK6b,WAAa4E,EAAQ5E,YAAc,GACxC7b,KAAKqd,YAAcoD,EAAQpD,aAAe,GAC1Crd,KAAKsc,KAAOmE,EAAQnE,MAAQ,GAC5Btc,KAAKud,UAAYkD,EAAQlD,WAAa,GACtCvd,KAAKid,cAAgBwD,EAAQxD,eAAiB,GAC9Cjd,KAAKmd,cAAgBsD,EAAQtD,eAAiB,GAC9Cnd,KAAKkd,kBAAoBuD,EAAQvD,mBAAqB,GACtDld,KAAKod,iBAAmBqD,EAAQrD,kBAAoB,GACpDpd,KAAK4Z,cAAgB6G,EAAQ7G,eAAiB,GAC9C5Z,KAAKmhB,cAAgBV,EAAQU,eAAiB,GAC9CnhB,KAAK27B,aAAelb,EAAQkb,cAAgB,GAC5C37B,KAAKs3B,cAAgB7W,EAAQ6W,eAAiB,GAC9Ct3B,KAAK47B,cAAgBnb,EAAQmb,oBAAiBltB,EAC9C1O,KAAKw3B,iBAAmB/W,EAAQ+W,kBAAoB,GACpDx3B,KAAK67B,WAAapb,EAAQob,YAAc,GACxC77B,KAAK2e,SAAW8B,EAAQ9B,eAAYjQ,EACpC1O,KAAK6e,SAAW4B,EAAQ5B,eAAYnQ,EACpC1O,KAAKye,KAAOgC,EAAQhC,WAAQ/P,EAC5B1O,KAAKmf,cAAgBsB,EAAQtB,oBAAiBzQ,EAC9C1O,KAAKy3B,2BAA6BhX,EAAQgX,4BAA8B,GACxEz3B,KAAKsf,KAAOmB,EAAQnB,MAAQ,GAC5Btf,KAAK87B,UAAYrb,EAAQqb,WAAa,GACtC97B,KAAK+7B,oBAAsBtb,EAAQsb,qBAAuB,GAC1D/7B,KAAKg8B,2BAA6Bvb,EAAQub,4BAA8B,GACxEh8B,KAAK+d,SAAW0C,EAAQ1C,UAAY,GACpC/d,KAAK4f,aAAea,EAAQb,mBAAgBlR,EAC5C1O,KAAK03B,qBAAuBjX,EAAQiX,sBAAwB,GAC5D13B,KAAK23B,kBAAoBlX,EAAQkX,mBAAqB,GACtD33B,KAAKi8B,aAAexb,EAAQwb,cAAgB,GAC5Cj8B,KAAK43B,aAAenX,EAAQmX,cAAgB,GAC5C53B,KAAKk8B,kBAAoBzb,EAAQyb,mBAAqB,GACtDl8B,KAAKm8B,kBAAoB1b,EAAQ0b,mBAAqB,GACtDn8B,KAAK63B,yBAA2BpX,EAAQoX,0BAA4B,GACpE73B,KAAKo8B,UAAY3b,EAAQ2b,WAAa,GACtCp8B,KAAK83B,iBAAmBrX,EAAQqX,kBAAoB,GACpD93B,KAAKq8B,oBAAsB5b,EAAQ4b,qBAAuB,GAC1Dr8B,KAAKkhB,WAAaT,EAAQS,YAAc,GACxClhB,KAAKs8B,WAAa7b,EAAQ6b,YAAc,GACxCt8B,KAAK+3B,kBAAoBtX,EAAQsX,mBAAqB,GACtD/3B,KAAKu8B,gBAAkB9b,EAAQ8b,sBAAmB7tB,EAClD1O,KAAKw8B,UAAY/b,EAAQ+b,gBAAa9tB,EACtC1O,KAAKy8B,kBAAoBhc,EAAQgc,mBAAqB,GACtDz8B,KAAKg4B,iBAAmBvX,EAAQuX,iBAChCh4B,KAAK08B,iBAAmBjc,EAAQic,kBAAoB,GACpD18B,KAAK28B,2BAA6Blc,EAAQkc,4BAA8B,GACxE38B,KAAK6f,iBAAmBY,EAAQZ,kBAAoB,GACpD7f,KAAKi4B,aAAexX,EAAQwX,cAAgB,GAC5Cj4B,KAAKsgB,YAAcG,EAAQH,aAAe,GAC1CtgB,KAAKk4B,cAAgBzX,EAAQyX,eAAiB,GAC9Cl4B,KAAK+f,eAAiBU,EAAQV,gBAAkB,GAChD/f,KAAK48B,eAAiBnc,EAAQmc,gBAAkB,GAChD58B,KAAK68B,gBAAkBpc,EAAQoc,iBAAmB,GAClD78B,KAAK4gB,cAAgBH,EAAQG,eAAiB,GAC9C5gB,KAAK6gB,eAAiBJ,EAAQI,gBAAkB,GAChD7gB,KAAK6iB,gBAAkBpC,EAAQoC,iBAAmB,GAClD7iB,KAAK+iB,SAAWtC,EAAQsC,UAAY,GACpC/iB,KAAKu3B,mBAAqB9W,EAAQ8W,oBAAsB,GACxDv3B,KAAKwd,oBAAsBiD,EAAQjD,qBAAuB,GAC1Dxd,KAAKgM,kBAAoByU,EAAQzU,kBACjChM,KAAK88B,QAAUrc,EAAQqc,QACvB98B,KAAK0gB,cAAgBD,EAAQC,eAAiB,GAC9C1gB,KAAKqiB,WAAa5B,EAAQ4B,YAAc,GACxCriB,KAAK+8B,UAAYtc,EAAQsc,WAAa,GACtC/8B,KAAK6hB,eAAiBpB,EAAQoB,gBAAkB,GAChD7hB,KAAK2d,aAAe8C,EAAQ9C,cAAgB,EAC5C3d,KAAKkjB,cAAgBzC,EAAQyC,eAAiB,KCjP5C,MAAgB8Z,GAAe1oB,cAAAU,EAAA,sB,iBCyB/B,MAAOioB,WAAoBD,GAK/B1oB,YAAY4oB,GACVC,QAAQnoB,EAAA,eALO,IAAIA,EAAA,iBACG,IAAIA,EAAA,kCAK1BhV,KAAKo9B,SAASF,GAGhBE,SAAS/7B,GACPrB,KAAKqB,MAAQA,QAASqN,EAGxBzN,IAAIwlB,GACF,OAAOzmB,KAQTwM,YAAYH,GACV,IAAIH,EAAwB,GAM5B,GALMG,aAAoBgE,MAGxBnE,EAAYG,EAFZH,EAAUK,KAAKF,GAIbH,GAAaA,EAAUD,OAAS,EAClC,IAAK,IAAI7L,EAAI,EAAGA,EAAI8L,EAAUD,OAAQ7L,IACpC,GAAI8L,EAAU9L,GAAGO,KAAM,CACrB,MAAMiS,EAAQ5S,KAAKkM,UAAUmxB,UAAWjxB,GAASA,EAAKzL,OAASuL,EAAU9L,GAAGO,MACxEiS,GAAS,EACX5S,KAAKkM,UAAU0G,GAAO5E,aAAe9B,EAAU9L,GAAG4N,aAElDhO,KAAKkM,UAAUK,KAAKL,EAAU9L,KAYxCk9B,eAAe38B,GACb,GAAIA,EAAM,CACR,MAAMiS,EAAQ5S,KAAKkM,UAAUmxB,UAAWjxB,GAASA,EAAKzL,OAASA,GAC3DiS,GAAS,GACX5S,KAAKkM,UAAUqxB,OAAO3qB,EAAO,IAUnC4qB,YAAY78B,GACV,OAAIA,EACKX,KAAKkM,UAAUkrB,KAAMhrB,GAASA,EAAKzL,OAASA,GAE9C,KAQT0L,SAASV,EAAW3L,KAAKqB,OACvB,IAAK,IAAIjB,EAAI,EAAGA,EAAIJ,KAAKkM,UAAUD,OAAQ7L,IAAK,CAC9C,MAAMq9B,EAAyBz9B,KAAKkM,UAAU9L,GAAG4N,aAAarC,GAC9D,GAAI8xB,GAAUA,EAAOvvB,iBAAmBzL,QAAeC,QAAQH,KAC7D,OAAOk7B,EAGX,MAAO,CACLvvB,eAAgBzL,QAAeC,QAAQH,KACvC4L,SAAU,MASduvB,OACE,OAAI19B,KAAK29B,mBACA39B,KAAK29B,qBAEP,ICnHL,MAAOC,WAAkBZ,GAG7B1oB,YAAY3C,EAA+C,IACzDwrB,QAAQnoB,EAAA,wBACRhV,KAAK2R,SAAWA,EAQlBksB,WAAWl9B,EAAc4R,GACvBvS,KAAK2R,SAAShR,GAAQ4R,EAQxBurB,cAAcn9B,GACe,MAAvBX,KAAK2R,SAAShR,WACTX,KAAK2R,SAAShR,GAIzBM,IAAIwlB,GACF,MAAoB,kBAATA,EACFzmB,KAAK2R,SAAS8U,GAEhB,M,iBCpCX,SAASsX,GAAiBhyB,EAAkBga,GAC9B,MAARA,IACFA,EAAO,IAEU,MAAfha,IACEA,EAAYkwB,eAAiBn5B,QAAWC,MAAMR,KAChDwJ,EAAY6rB,aAAe7R,EAClBha,EAAYkwB,eAAiBn5B,QAAWE,QAAQT,OACrDwJ,EAAYmwB,oBAAsB75B,QAAkBC,kBAAkBC,KACxEwJ,EAAY8rB,yBAA2B9R,EAC9Bha,EAAYmwB,oBAAsB75B,QAAkBG,eAAeD,OAC5EwJ,EAAY+rB,iBAAmB/R,KAMvC,SAASb,GAAUnZ,GACjB,GAAmB,MAAfA,EAAqB,CACvB,GAAIA,EAAYkwB,eAAiBn5B,QAAWC,MAAMR,KAChD,OAAOwJ,EAAY6rB,cAAgB,GAC9B,GAAI7rB,EAAYkwB,eAAiBn5B,QAAWE,QAAQT,KAAM,CAC/D,GAAIwJ,EAAYmwB,oBAAsB75B,QAAkBC,kBAAkBC,KACxE,OAAOwJ,EAAY8rB,0BAA4B,GAC1C,GAAI9rB,EAAYmwB,oBAAsB75B,QAAkBG,eAAeD,KAC5E,OAAOwJ,EAAY+rB,kBAAoB,IAI7C,MAAO,GAQT,MAAMkG,GAAiBA,CAACjyB,KAAqBkyB,IACpC/Y,GAAUnZ,GAQbmyB,GAAiBA,CAACnyB,EAAkBga,IACjCgY,GAAiBhyB,EAAaga,G,iBCxCvC,SAASoY,GAAOpY,EAAWja,GAAwB,IAAAsyB,EACjD,MAAMC,EAAiC,QAA5BD,EAAQE,yCAAoB,IAAAF,OAAA,EAApBA,EAAsBC,MACnCE,EAA4B,OAALF,QAAK,IAALA,OAAK,EAALA,EAAOG,QAapC,OAZIzY,GAAQja,EAAYC,YAAY6T,eAC9B9T,EAAYC,YAAYgS,WAAa0gB,QAASC,QAAQn8B,KACxDwjB,EAAOwY,EAAOtd,OAAOsd,EAAOI,SAAS,GAAG5Y,OAAUja,EAAYC,YAAY6T,gBAAiB,CAAEgf,SAAU,UAC9F9yB,EAAYC,YAAYgS,WAAa0gB,QAASI,OAAOt8B,KAC9DwjB,EAAOwY,EAAOtd,OAAOsd,EAAOI,SAAS,GAAG5Y,OAAUja,EAAYC,YAAY6T,gBAAiB,CAAEgf,SAAU,UAC9F9yB,EAAYC,YAAYgS,WAAa0gB,QAASzgB,UAAUzb,OACjEwjB,EAAOwY,EAAOtd,OAAOsd,EAAOI,SAAS,GAAG5Y,OAAUja,EAAYC,YAAY6T,gBAAiB,CAAEgf,SAAU,YAGzE,MAA9BpwB,OAAO1C,EAAYzK,SACrB0kB,EAAO,GAEFA,EAET,MAAMnG,GAAeA,CAACrd,EAAWuJ,IACxBqyB,GAAO57B,EAAMuJ,GAGP8T,UC1Bf,SAASue,GAAO57B,EAAcu8B,EAAsBC,EAAoBC,GACtE,GAAuB,MAAnBF,GAA2Bh+B,OAAOq2B,OAAO2H,GAAiB7yB,OAAS,EACrE,IAAK,MAAMgzB,KAAcn+B,OAAOq2B,OAAO2H,GACrC,OAAOG,EAAWF,GAAa,SAAWC,EAG9C,OAAOA,GAAc,GAEvB,MAAME,GAAoBA,CAAC38B,EAAcu8B,EAAsBC,EAAoBC,IAC1Eb,GAAO57B,EAAMu8B,EAAiBC,EAAWC,GAGnCE,UCff,MACM3pB,GAAa,CAAC,SACdC,GAAa,CAAE7T,IAAK,GAEpB,SAAUqP,GAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,OAAQM,yBAAcC,gCAAoB,MAAO,CAC/CE,MAAOC,4BAAgB,CAAC,oBAAqB,CAAC,CAAE,kBAAmBf,EAAKkuB,QAAU,CAAE,cAAeluB,EAAKkuB,YACvG,CACDxpB,gCAAoB,MAAO,CACzB5D,MAAOC,4BAAgB,CAAC,cAAe,CAAE,WAAYf,EAAKmuB,QAAU,CAAE,kBAAmBnuB,EAAKkuB,QAAU,CAAE,YAAaluB,EAAKmuB,SAAWnuB,EAAKkuB,UAC5IrtB,IAAK,WACJ,CACD6D,gCAAoB,OAAQ,CAC1B5D,MAAO,UACPD,IAAK,UACLoK,MAAOjL,EAAKgD,SACX,CACAhD,EAAKwB,SAASxC,QAAQgB,EAAK+R,WAAa,GACpCpR,yBAAcC,gCAAoB,IAAK,CACtClQ,IAAK,EACLshB,KAAM,IACNhQ,QAAS/B,EAAO,KAAOA,EAAO,GAAM4B,GAAiB7B,EAAK0B,UAAU1B,EAAKgD,WACxE6H,6BAAiB7K,EAAKgD,SAAU,KAClCrC,yBAAcC,gCAAoB,OAAQ2D,GAAYsG,6BAAiB7K,EAAKgD,SAAU,KAC1F,EAAGsB,KACL,GACFtE,EAAKmuB,QACDxtB,yBAAcC,gCAAoB,MAAO,CACxClQ,IAAK,EACLoQ,MAAO,SACPkB,QAAS/B,EAAO,KAAOA,EAAO,GAAM4B,GAAiB7B,EAAKkuB,QAAUluB,EAAKkuB,SACxErjB,6BAAiB7K,EAAKkuB,OAAS,KAAO,MAAO,IAChDjrB,gCAAoB,IAAI,IAC3B,GC5BL,IAAqBmrB,GAArB,cAAyCC,SAAGhrB,eAAA2pB,GAAA,SAAAA,GAAAjpB,EAAA,eACjC,GAAOA,EAAA,eACP,GAAOA,EAAA,iCAAAA,EAAA,uBAAAA,EAAA,wBAG0BA,EAAA,wBAC2BA,EAAA,uBAAAA,EAAA,uBAIrEuqB,UACEv/B,KAAKw/B,kBAOP7sB,UAAUoT,GACR/lB,KAAKy/B,MAAM,YAAa1Z,GAI1ByZ,kBAEEx/B,KAAKo/B,OAASp/B,KAAK0/B,QAAQC,aAAe3/B,KAAK4/B,QAAQD,eAtB/BE,wBAAA,CAAzBC,kBAAK,CAAEx0B,SAAS,K,yCACMu0B,wBAAA,CAAtBC,kBAAK,CAAEx0B,QAAS,M,+BACMu0B,wBAAA,CAAtBC,kBAAK,CAAEx0B,QAAS,M,gCACyBu0B,wBAAA,CAAzCC,kBAAK,CAAE/7B,KAAMsM,MAAO/E,QAASA,IAAM,M,gCAC7Bu0B,wBAAA,CAANE,oB,+BACMF,wBAAA,CAANE,oB,+BAeDF,wBAAA,CADCG,mBAAM,Y,qCAtBYX,GAAWQ,wBAAA,CAH/BI,qBAAQ,CACPt/B,KAAM,iBAEa0+B,c,oCCArB,MAAMa,GAA2B,KAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAE1E,U,6DCRf,MAAMC,GAAiB,y6oBACjBC,GAAiB,CAAE,EAAK,MAAsB,GAAM,0BAA8I,GAAM,sBAAsH,IAAO,MAAsB,GAAM,0BAA8I,GAAM,gCAAkL,IAAO,cAAsE,IAAO,yBAAwI,KAAQ,iBAAwF,IAAO,2BAAoJ,GAAM,mCAAoM,IAAO,8BAAsK,IAAO,UAA8C,KAAQ,YAA0D,GAAM,yDAAwU,KAAQ,6BAAgK,KAAQ,kBAA8F,IAAO,SAAwC,IAAO,kBAA8F,KAAQ,mBAAoG,GAAM,qBAAgH,GAAM,MAAsB,IAAO,cAAsE,IAAO,cAAsE,KAAQ,SAAwC,IAAO,aAAgE,GAAM,WAAoD,KAAQ,MAAsB,IAAO,0BAA8I,KAAQ,WAAoD,KAAQ,gCAAkL,MAAS,6BAAgK,KAAQ,gBAAkF,IAAO,YAA0D,KAAQ,wBAAkI,MAAS,+BAA4K,IAAO,+CAA4Q,MAAS,aAAgE,KAAQ,uBAA4H,IAAO,8BAAsK,MAAS,oBAA0G,OAAU,UAA8C,KAAQ,WAAoD,KAAQ,iBAAwF,KAAQ,WAAoD,GAAM,sBAAsH,KAAQ,gBAAkF,GAAM,UAA8C,KAAQ,UAA8C,IAAO,gBAAkF,IAAO,SAAwC,IAAO,gBAAkF,GAAM,mBAAoG,IAAO,yBAAwI,IAAO,+BAA4K,KAAQ,eAA4E,IAAO,uBAA4H,GAAM,OAA4B,KAAQ,gBAAkF,GAAM,yCAAwO,KAAQ,6BAAgK,KAAQ,iBAAwF,IAAO,wBAAkI,KAAQ,uBAA4H,KAAQ,uBAA4H,IAAO,iBAAwF,GAAM,4BAA0J,KAAQ,aAAgE,IAAO,UAA8C,IAAO,kBAA8F,IAAO,sBAAsH,EAAK,oCAA0M,GAAM,QAAkC,GAAM,gBAAkF,GAAM,aAAgE,IAAO,4BAA0J,KAAQ,oBAA0G,IAAO,mCAAoM,IAAO,wBAAkI,KAAQ,uBAA4H,GAAM,iFAAwd,GAAM,YAA0D,IAAO,eAA4E,IAAO,2BAAoJ,KAAQ,eAA4E,KAAQ,2BAAoJ,IAAO,uBAA4H,GAAM,oCAA0M,IAAO,IAAU,IAAO,SAAwC,KAAQ,aAAgE,IAAO,wBAAkI,GAAM,gDAAkR,IAAO,cAAsE,KAAQ,OAA4B,KAAQ,qBAAgH,MAAS,UAA8C,IAAO,+BAA4K,IAAO,WAAoD,IAAO,yBAAwI,GAAM,IAAU,IAAO,cAAsE,IAAO,gCAAkL,IAAO,QAAkC,KAAQ,SAAwC,IAAO,qBAAgH,GAAM,+BAA4K,IAAO,KAAgB,KAAQ,UAA8C,KAAQ,kBAA8F,IAAO,kBAA8F,GAAM,4CAA0P,IAAO,kBAA8F,KAAQ,UAA8C,KAAQ,8BAAsK,MAAS,4BAA0J,IAAO,wCAAkO,IAAO,cAAsE,IAAO,qBAAgH,GAAM,2GAAonB,IAAO,qCAAgN,KAAQ,0EAA8a,MAAS,yBAAwI,KAAQ,8CAAsQ,IAAO,mDAAoS,IAAO,sCAAsN,KAAQ,2CAAoP,MAAS,QAAkC,IAAO,4BAA0J,GAAM,qDAAgT,KAAQ,kBAA8F,IAAO,6BAAgK,IAAO,mBAAoG,GAAM,SAAwC,GAAM,iCAAwL,IAAO,eAA4E,IAAO,gBAAkF,KAAQ,cAAsE,IAAO,WAAoD,IAAO,UAA8C,KAAQ,MAAsB,KAAQ,UAA8C,IAAO,YAA0D,GAAM,eAA4E,IAAO,SAAwC,KAAQ,YAA0D,KAAQ,MAAsB,MAAS,mBAAoG,IAAO,gCAAkL,IAAO,cAAsE,IAAO,QAAkC,GAAM,gBAAkF,IAAO,eAA4E,IAAO,2BAAoJ,KAAQ,iBAAwF,IAAO,mBAAoG,GAAM,WAAoD,IAAO,uBAA4H,KAAQ,kCAA8L,KAAQ,KAAgB,GAAM,iFAAwd,KAAQ,gCAAkL,MAAS,mBAAoG,KAAQ,yBAAwI,IAAO,cAAsE,IAAO,wBAAkI,IAAO,4BAA0J,KAAQ,qBAAgH,IAAO,gBAAkF,GAAM,4CAA0P,GAAM,uBAA4H,KAAQ,WAAoD,IAAO,MAAsB,IAAO,UAA8C,IAAO,yBAAwI,GAAM,iBAAwF,IAAO,aAAgE,IAAO,qBAAgH,KAAQ,aAAgE,KAAQ,uBAA4H,KAAQ,qBAAgH,IAAO,8BAAsK,GAAM,IAAU,IAAO,8BAAsK,IAAO,WAAoD,GAAM,gCAAkL,KAAQ,gBAAkF,IAAO,QAAkC,IAAO,cAAsE,KAAQ,eAA4E,IAAO,IAAU,GAAM,gCAAkL,IAAO,WAAoD,GAAM,wBAAkI,GAAM,gBAAkF,IAAO,YAA0D,IAAO,aAAgE,IAAO,cAAsE,GAAM,MAAsB,IAAO,IAAU,IAAO,OAA4B,GAAM,0BAA8I,KAAQ,eAA4E,MAAS,KAAgB,KAAQ,SAAwC,IAAO,kBAA8F,IAAO,KAAgB,KAAQ,aAAgE,IAAO,WAAoD,KAAQ,OAA4B,GAAM,YAA0D,GAAM,OAA4B,KAAQ,IAAU,OAAU,IAAU,IAAO,KAAgB,IAAO,WAAoD,GAAM,cAAsE,GAAM,WAAoD,IAAO,WAAoD,IAAO,iBAAwF,KAAQ,UAA8C,IAAO,eAA4E,IAAO,oBAA0G,IAAO,MAAsB,KAAQ,sBAAsH,GAAM,wCAAkO,KAAQ,cAAsE,KAAQ,cAAsE,IAAO,QAAkC,IAAO,cAAsE,KAAQ,gBAAkF,GAAM,mBAAoG,IAAO,MAAsB,GAAM,0BAA8I,GAAM,qEAAgZ,IAAO,OAA4B,KAAQ,4CAA0P,MAAS,uBAA4H,KAAQ,8BAAsK,IAAO,eAA4E,IAAO,yBAAwI,KAAQ,2BAAoJ,MAAS,UAA8C,IAAO,6BAAgK,GAAM,kCAA8L,KAAQ,yBAAwI,IAAO,aAAgE,IAAO,MAAsB,IAAO,SAAwC,KAAQ,UAA8C,IAAO,SAAwC,IAAO,MAAsB,GAAM,KAAgB,IAAO,oBAA0G,KAAQ,KAAgB,GAAM,IAAU,KAAQ,kBAA8F,IAAO,SAAwC,GAAM,sBAAsH,KAAQ,MAAsB,IAAO,UAA8C,IAAO,KAAgB,GAAM,UAA8C,IAAO,QAAkC,IAAO,aAAgE,KAAQ,SAAwC,IAAO,WAAoD,GAAM,UAA8C,IAAO,IAAU,KAAQ,IAAU,IAAO,kBAA8F,KAAQ,MAAsB,KAAQ,kCAA8L,MAAS,gBAAkF,KAAQ,qBAAgH,IAAO,oBAA0G,KAAQ,2BAAoJ,MAAS,mBAAoG,IAAO,sEAAsZ,KAAQ,iBAAwF,IAAO,mDAAoS,KAAQ,OAA4B,MAAS,QAAkC,MAAS,MAAsB,OAAU,OAA4B,KAAQ,OAA4B,KAAQ,QAAkC,KAAQ,cAAsE,GAAM,qCAAgN,KAAQ,mBAAoG,IAAO,gBAAkF,GAAM,uBAA4H,KAAQ,MAAsB,IAAO,sBAAsH,IAAO,YAA0D,IAAO,gBAAkF,GAAM,iBAAwF,IAAO,mBAAoG,IAAO,2BAAoJ,KAAQ,sBAAsH,MAAS,MAAsB,MAAS,KAAgB,IAAO,mBAAoG,GAAM,IAAU,KAAQ,QAAkC,GAAM,0BAA8I,KAAQ,kBAA8F,KAAQ,aAAgE,IAAO,QAAkC,KAAQ,mBAAoG,KAAQ,wBAAkI,IAAO,QAAkC,GAAM,mBAAoG,KAAQ,MAAsB,IAAO,WAAoD,IAAO,UAA8C,IAAO,yBAAwI,GAAM,aAAgE,IAAO,KAAgB,IAAO,+BAA4K,KAAQ,kBAA8F,IAAO,+DAA4W,IAAO,qBAAgH,KAAQ,QAAkC,GAAM,kBAA8F,GAAM,qDAAgT,GAAM,yEAAwa,IAAO,0BAA8I,KAAQ,2CAAoP,MAAS,gCAAkL,KAAQ,iCAAwL,IAAO,uCAA4N,IAAO,mBAAoG,KAAQ,wBAAkI,MAAS,WAAoD,IAAO,mBAAoG,GAAM,qCAAgN,KAAQ,+BAA4K,IAAO,YAA0D,IAAO,4BAA0J,GAAM,+BAA4K,IAAO,oEAA0Y,KAAQ,4BAA0J,IAAO,iCAAwL,GAAM,yBAAwI,GAAM,uGAA4lB,IAAO,gCAAkL,KAAQ,uCAA4N,GAAM,KAAgB,KAAQ,2BAAoJ,IAAO,uCAA4N,GAAM,uFAA4f,KAAQ,iCAAwL,IAAO,iBAAwF,IAAO,uBAA4H,GAAM,QAAkC,IAAO,aAAgE,IAAO,YAA0D,KAAQ,SAAwC,IAAO,mBAAoG,GAAM,eAA4E,IAAO,IAAU,IAAO,KAAgB,KAAQ,WAAoD,IAAO,0BAA8I,KAAQ,UAA8C,KAAQ,uBAA4H,MAAS,0BAA8I,KAAQ,kBAA8F,IAAO,sBAAsH,KAAQ,6BAAgK,MAAS,uBAA4H,IAAO,gFAAkd,MAAS,oBAA0G,KAAQ,8BAAsK,IAAO,mDAAoS,KAAQ,IAAU,MAAS,IAAU,MAAS,YAA0D,OAAU,WAAoD,KAAQ,YAA0D,KAAQ,KAAgB,KAAQ,wBAAkI,GAAM,qCAAgN,KAAQ,YAA0D,IAAO,SAAwC,GAAM,iBAAwF,KAAQ,OAA4B,IAAO,OAA4B,IAAO,QAAkC,IAAO,gBAAkF,IAAO,OAA4B,KAAQ,QAAkC,EAAK,IAAU,IAAO,IAAU,MAAS,MAAsB,IAAO,KAAgB,IAAO,IAAU,IAAO,IAAU,IAAO,IAAU,IAAO,KAC5i4CC,GAAiB,CAAE,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,MAAO,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,KAA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","file":"vue3-lo-form.umd.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"vue3-lo-form\"] = factory();\n\telse\n\t\troot[\"vue3-lo-form\"] = factory();\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"fb15\");\n","module.exports = require(\"vue-property-decorator\");","// 动态字典类型\r\nconst DynamicOptionType = {\r\n GeneralDictionary: { code: \"1\", name: \"常规\" },\r\n TreeDictionary: { code: \"2\", name: \"树形\" },\r\n};\r\nexport { DynamicOptionType };\r\n","module.exports = require(\"core-js/modules/es.array.push.js\");","// 校验状态\r\nconst ValidateStatus: any = {\r\n Success: { code: \"success\", name: \"通过\" },\r\n Warning: { code: \"warning\", name: \"警告\" },\r\n Error: { code: \"error\", name: \"未通过\" },\r\n Validating: { code: \"validating\", name: \"校验中\" },\r\n};\r\nexport { ValidateStatus };\r\n","module.exports = require(\"dayjs/locale/zh-cn\");","module.exports = require(\"ant-design-vue\");","const OptionType = {\r\n Fixed: { code: \"1\", name: \"固定\" },\r\n Dynamic: { code: \"2\", name: \"动态\" },\r\n};\r\nexport { OptionType };\r\n","module.exports = require(\"dayjs\");","module.exports = require(\"vue\");","module.exports = require(\"@ant-design/icons-vue\");","// 数据缓存类型\r\nconst CacheType = {\r\n FORM: { code: \"1\", name: \"表格\" },\r\n TABLE: { code: \"2\", name: \"表单\" },\r\n DICT: { code: \"3\", name: \"字典\" },\r\n};\r\nexport { CacheType };\r\n","// 字段分类\r\nconst FormFieldClass = {\r\n Layout: { code: \"1\", name: \"布局\", icon: \"profile\" },\r\n Base: { code: \"2\", name: \"基础字段\", icon: \"profile\" },\r\n Senior: { code: \"3\", name: \"高级字段\", icon: \"profile\" },\r\n};\r\nexport { FormFieldClass };\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./DvForm.vue?vue&type=style&index=0&id=3f24cc08&lang=scss&scoped=true\"","module.exports = require(\"mathjs\");","module.exports = require(\"ant-design-vue/es/date-picker/locale/zh_CN\");","module.exports = require(\"localforage\");","module.exports = require(\"moment\");","const Switch = {\r\n Disable: { code: \"0\", name: \"禁用\" },\r\n Enable: { code: \"1\", name: \"启用\" },\r\n};\r\nexport { Switch };\r\n","import { FormFieldClass } from \"./form-field-class.enum\";\r\n// 控件类型\r\nconst FormFieldType = {\r\n Input: { code: \"1\", name: \"输入框\", icon: \"icondanhangwenben\", type: FormFieldClass.Base.code },\r\n Textarea: { code: \"2\", name: \"多行文本\", icon: \"iconduohangwenben\", type: FormFieldClass.Base.code },\r\n InputNumber: { code: \"3\", name: \"数字输入框\", icon: \"iconjishuqi\", type: FormFieldClass.Base.code },\r\n Select: { code: \"4\", name: \"选择器\", icon: \"iconxialaxuanzekuang\", type: FormFieldClass.Base.code },\r\n Radio: { code: \"5\", name: \"单选框\", icon: \"icondanxuankuangzu\", type: FormFieldClass.Base.code },\r\n Checkbox: { code: \"6\", name: \"多选框\", icon: \"iconduoxuankuangzu\", type: FormFieldClass.Base.code },\r\n Switch: { code: \"7\", name: \"开关\", icon: \"iconkaiguan\", type: FormFieldClass.Base.code },\r\n TimePicker: { code: \"8\", name: \"时间选择框\", icon: \"iconshijianxuanzeqi\", type: FormFieldClass.Base.code },\r\n DatePicker: { code: \"9\", name: \"日期选择框\", icon: \"iconriqixuanzeqi\", type: FormFieldClass.Base.code },\r\n Slider: { code: \"10\", name: \"滑动输入条\", icon: \"iconhuakuai\", type: FormFieldClass.Base.code },\r\n Rate: { code: \"11\", name: \"评分\", icon: \"iconpingfen\", type: FormFieldClass.Base.code },\r\n\r\n Upload: { code: \"50\", name: \"上传\", icon: \"iconwenjian\", type: FormFieldClass.Senior.code },\r\n Editor: { code: \"51\", name: \"编辑器\", icon: \"iconbianjiqi\", type: FormFieldClass.Senior.code },\r\n Cascader: { code: \"52\", name: \"级联选择\", icon: \"iconjilianxuanzeqi\", type: FormFieldClass.Senior.code },\r\n TreeSelect: { code: \"53\", name: \"树选择\", icon: \"iconxialaxuanzekuang\", type: FormFieldClass.Senior.code },\r\n Custom: { code: \"54\", name: \"自定义组件\", icon: \"iconzidingyizujian\", type: FormFieldClass.Senior.code },\r\n\r\n Empty: { code: \"101\", name: \"根布局\", icon: \"iconzhagebuju\", type: FormFieldClass.Layout.code },\r\n Grid: { code: \"102\", name: \"栅格\", icon: \"iconzhagebuju\", type: FormFieldClass.Layout.code },\r\n};\r\nexport { FormFieldType };\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./DvFormLayout.vue?vue&type=style&index=0&id=6014843b&lang=scss&scoped=true\"","// 内置前/后置标签\r\nconst BuiltLabel = {\r\n ORDERED_LIST: { code: \"1\", name: \"ordered-list\" },\r\n};\r\nexport { BuiltLabel };\r\n","// 控件格式化类型\r\nconst ControlFormatType = {\r\n GENERAL: { code: \"1\", name: \"常规数字\" },\r\n AMOUNT_OF_MONEY: { code: \"2\", name: \"金额\" },\r\n BANK_CARD_NUMBER: { code: \"3\", name: \"银行卡号\" },\r\n CELL_PHONE_NUMBER: { code: \"4\", name: \"手机号\" },\r\n LANDLINE_NUMBER: { code: \"5\", name: \"座机号\" },\r\n};\r\nexport { ControlFormatType };\r\n","// 动态字典类型\r\nconst FormBusAttr = {\r\n SUBMITTED_TYPE: { code: \"submittedType\", name: \"报送类型\" },\r\n IS_SUPPLEMENT: { code: \"isSupplement\", name: \"是否补录\" },\r\n IS_KEY_ELEMENTS: { code: \"isKeyElements\", name: \"是否关键要素\" },\r\n IS_TRACK: { code: \"isTrack\", name: \"是否追踪\" },\r\n};\r\nexport { FormBusAttr };\r\n","const FormType = {\r\n Pc: { code: \"1\", name: \"PC端\" },\r\n Mobile: { code: \"2\", name: \"移动端\" },\r\n};\r\nexport { FormType };\r\n","// 横向排列\r\nconst LateralArrangement = {\r\n AlignLeft: { code: \"1\", name: \"左对齐\" },\r\n RightAlignment: { code: \"2\", name: \"右对齐\" },\r\n Center: { code: \"3\", name: \"居中\" },\r\n BothSidesAreEquallySpaced: { code: \"4\", name: \"两侧间隔相等\" },\r\n AlignBothEnds: { code: \"5\", name: \"两端对齐\" },\r\n};\r\nexport { LateralArrangement };\r\n","const MoneyUnit = {\r\n Yuan: { code: \"1\", name: \"元\" },\r\n TenThousandYuan: { code: \"2\", name: \"万元\" },\r\n HundredMillionYuan: { code: \"3\", name: \"亿元\" },\r\n};\r\nexport { MoneyUnit };\r\n","// 报送信息类型\r\nconst SubmittedType = {\r\n EAST: { code: \"1\", name: \"EAST\" },\r\n CITIC: { code: \"2\", name: \"中信登\" },\r\n TOTAL_ELEMENTS: { code: \"3\", name: \"全要素\" },\r\n PBC_CAPITAL_DECLARATION: { code: \"4\", name: \"人行资金申报\" },\r\n ENTERPRISE_CREDIT_REFERENCE: { code: \"5\", name: \"企业征信\" },\r\n OTOHAF_SUBMISSION: { code: \"6\", name: \"1104报送\" },\r\n EAST_F: { code: \"7\", name: \"EAST4.0\" },\r\n PERSONAL_CREDIT: { code: \"8\", name: \"个人征信\" },\r\n BS_09: { code: \"9\", name: \"非现场监管报表\" },\r\n BS_10: { code: \"10\", name: \"银监其他\" },\r\n BS_11: { code: \"11\", name: \"人行资管产品统计逐产品采集\" },\r\n BS_12: { code: \"12\", name: \"人行其他\" },\r\n BS_13: { code: \"13\", name: \"其他报表\" },\r\n BS_14: { code: \"14\", name: \"反洗钱\" },\r\n BS_15: { code: \"15\", name: \"关联交易\" },\r\n BS_16: { code: \"16\", name: \"事前报告\" },\r\n BS_17: { code: \"17\", name: \"银监风险项目要素表\" },\r\n BS_18: { code: \"18\", name: \"金控重点监测项目数据报送\" },\r\n BS_19: { code: \"19\", name: \"中央企业金融风险事项统计表\" },\r\n BS_20: { code: \"20\", name: \"主动管理项目清单\" },\r\n BS_21: { code: \"21\", name: \"风险项目要素表(重大预警及关注不良)\" },\r\n BS_22: { code: \"22\", name: \"人行金融基础数据报送\" },\r\n BS_23: { code: \"23\", name: \"人行利率报备\" },\r\n BS_24: { code: \"24\", name: \"EAST5.0\" },\r\n BS_25: { code: \"25\", name: \"新中信登\" },\r\n BS_26: { code: \"26\", name: \"集团司库资金系统投融资数据报送\" },\r\n BS_27: { code: \"27\", name: \"金控客户协同\" },\r\n BS_28: { code: \"28\", name: \"金控大额交易\" },\r\n BS_29: { code: \"29\", name: \"五篇大文章\" },\r\n BS_30: { code: \"30\", name: \"金控重大风险预警及关注与不良项目情况表\" },\r\n};\r\nexport { SubmittedType };\r\n","const SupportUploadType = {\r\n Arbitrarily: { code: \"1\", name: \"任意类型\" },\r\n Custom: { code: \"2\", name: \"自定义类型\" },\r\n};\r\nexport { SupportUploadType };\r\n","const UploadType = {\r\n Jpeg: { code: \"image/jpeg\", name: \"jpeg/jpg/jpe\" },\r\n Png: { code: \"image/png\", name: \"png\" },\r\n Gif: { code: \"image/gif\", name: \"gif\" },\r\n Bmp: { code: \"image/bmp\", name: \"bmp\" },\r\n Doc: { code: \"application/msword\", name: \"doc\" },\r\n html: { code: \"text/html\", name: \"html\" },\r\n Mp3: { code: \"audio/mpeg\", name: \"mp3\" },\r\n Mp4: { code: \"audio/mp4\", name: \"mp4\" },\r\n Pdf: { code: \"application/pdf\", name: \"pdf\" },\r\n Ppt: { code: \"application/vnd.ms-powerpoint\", name: \"ppt\" },\r\n Xls: { code: \"application/vnd.ms-excel\", name: \"xls\" },\r\n Xml: { code: \"application/xml\", name: \"xml\" },\r\n Zip: { code: \"aplication/zip\", name: \"zip\" },\r\n Wps: { code: \"application/vnd.ms-works\", name: \"wps\" },\r\n};\r\nexport { UploadType };\r\n","// 校验规则\r\nconst ValidateRules: any = {\r\n SameValue: { code: \"1\", name: \"相同的值\", hasContent: true, hasDescribe: false },\r\n MailBox: { code: \"2\", name: \"电子邮箱\", hasContent: false, hasDescribe: false },\r\n RegEx: { code: \"3\", name: \"正则表达式\", hasContent: true, hasDescribe: true },\r\n MinTextLength: { code: \"4\", name: \"最小文本长度\", hasContent: true, hasDescribe: false },\r\n MaxTextLength: { code: \"5\", name: \"最大文本长度\", hasContent: true, hasDescribe: false },\r\n MinValue: { code: \"6\", name: \"最小数值\", hasContent: true, hasDescribe: false },\r\n MaxValue: { code: \"7\", name: \"最大数值\", hasContent: true, hasDescribe: false },\r\n SpecifiedValue: { code: \"8\", name: \"指定的值\", hasContent: true, hasDescribe: false },\r\n SpecifiedDigitsNumber: { code: \"9\", name: \"指定位数的数字\", hasContent: true, hasDescribe: false },\r\n DateNotEarlierThan: { code: \"10\", name: \"日期不早于\", hasContent: true, hasDescribe: false },\r\n DateNoLaterThan: { code: \"11\", name: \"日期不晚于\", hasContent: true, hasDescribe: false },\r\n SpecifiedRangeNumber: { code: \"12\", name: \"指定范围的数字(包含最小/大值)\", hasContent: true, hasDescribe: false },\r\n PhoneNumber: { code: \"13\", name: \"手机号码\", hasContent: false, hasDescribe: false },\r\n Required: { code: \"14\", name: \"必填\", hasContent: false, hasDescribe: false },\r\n LineUnique: { code: \"15\", name: \"行唯一\", hasContent: false, hasDescribe: false },\r\n LetterSpace: { code: \"16\", name: \"字母空格\", hasContent: false, hasDescribe: false },\r\n AlphanumericUnderline: { code: \"17\", name: \"字母数字横线下划线\", hasContent: false, hasDescribe: false },\r\n Alphanumeric: { code: \"18\", name: \"字母数字\", hasContent: false, hasDescribe: false },\r\n JsMethodVerification: { code: \"19\", name: \"JS方法校验\", hasContent: true, hasDescribe: true },\r\n BackEndVerification: { code: \"20\", name: \"后端校验\", hasContent: false, hasDescribe: false },\r\n LandlineNumber: { code: \"21\", name: \"座机校验\", hasContent: false, hasDescribe: false },\r\n};\r\nexport { ValidateRules };\r\n","// 标签对齐方式\r\nconst VerticalArrangement = {\r\n AlignRight: { code: \"1\", name: \"右对齐\", value: \"horizontal\", textAlign: \"right\" },\r\n AlignTop: { code: \"2\", name: \"顶部对齐\", value: \"vertical\", textAlign: \"left\" },\r\n AlignLeft: { code: \"3\", name: \"左对齐\", value: \"horizontal\", textAlign: \"left\" },\r\n};\r\nexport { VerticalArrangement };\r\n","module.exports = require(\"tslib\");","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports.default = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\n","module.exports = require(\"core-js/modules/es.error.cause.js\");","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./StretchText.vue?vue&type=style&index=0&id=12085cfe&lang=scss&scoped=true\"","import { DesFormControl, FormControl, Validate } from \"../domain\";\r\nimport { FormFieldType, ValidateRules, ValidateStatus } from \"../constants/enum\";\r\nimport moment from \"moment\";\r\n\r\ninterface Rule {\r\n ruleType?: any;\r\n ruleContent?: any;\r\n describe?: any;\r\n}\r\n\r\nclass ValidateGeneratorService {\r\n /**\r\n * @description: 填充校验规则\r\n * @author ChenRui\r\n * @date 2021/1/27 15:07\r\n */\r\n fillCheckRule(formControl: FormControl, controlAttr: DesFormControl): void {\r\n if (controlAttr.verificationRules && controlAttr.verificationRules.length > 0) {\r\n const validates: Validate[] = [];\r\n controlAttr.verificationRules.forEach((item: Rule) => {\r\n const validate: Validate | undefined = this.getBuiltInValidationRules(item, controlAttr);\r\n if (validate) {\r\n validates.push(validate);\r\n }\r\n });\r\n formControl.addValidate(validates);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 获取校验规则\r\n * @author ChenRui\r\n * @date 2021/7/19 17:55\r\n */\r\n getBuiltInValidationRules(item: Rule, controlAttr: DesFormControl): Validate | undefined {\r\n let validate: Validate | undefined;\r\n switch (item.ruleType) {\r\n case ValidateRules.SameValue.code:\r\n validate = this.genSameValue(item);\r\n break;\r\n case ValidateRules.MailBox.code:\r\n validate = this.genMailBox(item);\r\n break;\r\n case ValidateRules.RegEx.code:\r\n validate = this.genRegEx(item);\r\n break;\r\n case ValidateRules.MinTextLength.code:\r\n validate = this.genMinTextLength(item);\r\n break;\r\n case ValidateRules.MaxTextLength.code:\r\n validate = this.genMaxTextLength(item);\r\n break;\r\n case ValidateRules.MinValue.code:\r\n validate = this.genMinValue(item);\r\n break;\r\n case ValidateRules.MaxValue.code:\r\n validate = this.genMaxValue(item);\r\n break;\r\n case ValidateRules.SpecifiedValue.code:\r\n validate = this.genSpecifiedValue(item);\r\n break;\r\n case ValidateRules.SpecifiedDigitsNumber.code:\r\n validate = this.genSpecifiedDigitsNumber(item);\r\n break;\r\n case ValidateRules.DateNotEarlierThan.code:\r\n validate = this.genDateNotEarlierThan(item);\r\n break;\r\n case ValidateRules.DateNoLaterThan.code:\r\n validate = this.genDateNoLaterThan(item);\r\n break;\r\n case ValidateRules.SpecifiedRangeNumber.code:\r\n validate = this.genSpecifiedRangeNumber(item);\r\n break;\r\n case ValidateRules.PhoneNumber.code:\r\n validate = this.genPhoneNumber(item);\r\n break;\r\n case ValidateRules.Required.code:\r\n validate = this.genRequired(item, controlAttr.controlType);\r\n break;\r\n case ValidateRules.LineUnique.code:\r\n validate = this.genLineUnique(item);\r\n break;\r\n case ValidateRules.LetterSpace.code:\r\n validate = this.genLetterSpace(item);\r\n break;\r\n case ValidateRules.AlphanumericUnderline.code:\r\n validate = this.genAlphanumericUnderline(item);\r\n break;\r\n case ValidateRules.Alphanumeric.code:\r\n validate = this.genAlphanumeric(item);\r\n break;\r\n case ValidateRules.JsMethodVerification.code:\r\n validate = this.genJsMethodVerification(item);\r\n break;\r\n case ValidateRules.BackEndVerification.code:\r\n validate = this.genBackEndVerification(item);\r\n break;\r\n case ValidateRules.LandlineNumber.code:\r\n validate = this.genLandlineNumber(item);\r\n break;\r\n }\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 相同的值\r\n * @author ChenRui\r\n * @date 2021/1/27 15:12\r\n */\r\n genSameValue(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && val != item.ruleContent) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `与预期值(${item.ruleContent})不符`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 电子邮箱\r\n * @author ChenRui\r\n * @date 2021/1/27 15:15\r\n */\r\n genMailBox(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n const emreg = /^\\w{3,}(\\.\\w+)*@[A-z0-9]+(\\.[A-z]{2,5}){1,2}$/;\r\n if (!emreg.test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: \"电子邮件格式不正确\",\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 正则匹配\r\n * @author ChenRui\r\n * @date 2021/1/27 15:17\r\n */\r\n genRegEx(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && !eval(item.ruleContent).test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: item.describe ? item.describe : `'不满足正则校验'${item.ruleContent}`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 最小文本长度\r\n * @author ChenRui\r\n * @date 2021/1/27 15:18\r\n */\r\n genMinTextLength(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && val && String(val).length < Number(item.ruleContent)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `内容不少于${item.ruleContent}个字`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 最大文本长度\r\n * @author ChenRui\r\n * @date 2021/1/27 15:21\r\n */\r\n genMaxTextLength(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && val && String(val).length > Number(item.ruleContent)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `内容不超过${item.ruleContent}个字`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 最小值\r\n * @author ChenRui\r\n * @date 2021/1/27 15:24\r\n */\r\n genMinValue(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != undefined && val !== \"\") {\r\n if (item.ruleContent != null && val != null && val !== \"\" && Number(val) < Number(item.ruleContent)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `数值不能小于${item.ruleContent}`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 最大值\r\n * @author ChenRui\r\n * @date 2021/1/27 15:25\r\n */\r\n genMaxValue(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != undefined && val !== \"\") {\r\n if (item.ruleContent != null && val != null && val !== \"\" && Number(val) > Number(item.ruleContent)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `数值不能大于${item.ruleContent}`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 指定的值\r\n * @author ChenRui\r\n * @date 2021/1/27 15:27\r\n */\r\n genSpecifiedValue(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && val != item.ruleContent) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `与预期值(${item.ruleContent})不符`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 指定位数数字\r\n * @author ChenRui\r\n * @date 2021/1/27 15:31\r\n */\r\n genSpecifiedDigitsNumber(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != undefined && val !== \"\") {\r\n if (item.ruleContent && val) {\r\n let countDecimals = 0;\r\n if (Math.floor(val).toString() !== val.toString()) {\r\n countDecimals = val.toString().split(\".\")[1].length || 0;\r\n }\r\n if (countDecimals != Number(item.ruleContent)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: item.ruleContent === \"0\" || item.ruleContent === 0 ? `请输入整数` : `请保留${item.ruleContent}位小数`,\r\n };\r\n }\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 自动补位\r\n * @author ChenRui\r\n * @date 2021/1/27 15:59\r\n */\r\n roundNumber(number: any, decimals: any): any {\r\n let newString; // The new rounded number\r\n decimals = Number(decimals);\r\n if (decimals < 1) {\r\n newString = Math.round(number).toString();\r\n } else {\r\n let numString = number.toString();\r\n if (numString.lastIndexOf(\".\") == -1) {\r\n // If there is no decimal point\r\n numString += \".\"; // give it one at the end\r\n }\r\n let cutoff = numString.lastIndexOf(\".\") + decimals; // The point at which to truncate the number\r\n let d1: any = Number(numString.substring(cutoff, cutoff + 1)); // The value of the last decimal place that we'll end up with\r\n const d2 = Number(numString.substring(cutoff + 1, cutoff + 2)); // The next decimal, after the last one we want\r\n if (d2 >= 5) {\r\n // Do we need to round up at all? If not, the string will just be truncated\r\n if (d1 == 9 && cutoff > 0) {\r\n // If the last digit is 9, find a new cutoff point\r\n while (cutoff > 0 && (d1 == 9 || isNaN(d1))) {\r\n if (d1 != \".\") {\r\n cutoff -= 1;\r\n d1 = Number(numString.substring(cutoff, cutoff + 1));\r\n } else {\r\n cutoff -= 1;\r\n }\r\n }\r\n }\r\n d1 += 1;\r\n }\r\n if (d1 == 10) {\r\n numString = numString.substring(0, numString.lastIndexOf(\".\"));\r\n const roundedNum = Number(numString) + 1;\r\n newString = roundedNum.toString() + \".\";\r\n } else {\r\n newString = numString.substring(0, cutoff) + d1.toString();\r\n }\r\n }\r\n if (newString.lastIndexOf(\".\") == -1) {\r\n // Do this again, to the new string\r\n newString += \".\";\r\n }\r\n const decs = newString.substring(newString.lastIndexOf(\".\") + 1).length;\r\n for (let i = 0; i < decimals - decs; i++) newString += \"0\";\r\n return newString;\r\n }\r\n\r\n /**\r\n * @description: 日期不早于\r\n * @author ChenRui\r\n * @date 2021/1/27 16:06\r\n */\r\n genDateNotEarlierThan(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && val) {\r\n try {\r\n if (val.toDate() > moment(item.ruleContent).toDate()) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `日期不早于${item.ruleContent}`,\r\n };\r\n }\r\n } catch (e) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `最大值日期(${item.ruleContent})格式有误!`,\r\n };\r\n }\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 日期不晚于\r\n * @author ChenRui\r\n * @date 2021/1/27 16:08\r\n */\r\n genDateNoLaterThan(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && val) {\r\n try {\r\n if (val.toDate() < moment(item.ruleContent).toDate()) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `日期不晚于${item.ruleContent}`,\r\n };\r\n }\r\n } catch (e) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `最小值日期(${item.ruleContent})格式有误!`,\r\n };\r\n }\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 指定范围的数字\r\n * @author ChenRui\r\n * @date 2021/1/27 16:35\r\n */\r\n genSpecifiedRangeNumber(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent != null && val && item.ruleContent.indexOf(\"/\") > -1) {\r\n const arr: any[] = item.ruleContent.split(\"/\");\r\n if (arr && arr.length > 1) {\r\n if (val < Number(arr[0]) || val > Number(arr[1])) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `数值大小应在${arr[0]}~${arr[1]}之间`,\r\n };\r\n }\r\n }\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 手机号\r\n * @author ChenRui\r\n * @date 2021/1/27 16:55\r\n */\r\n genPhoneNumber(item: Rule): Validate {\r\n const reg = /^0?1[3|4|5|6|7|8|9][0-9]\\d{8}$/;\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (val && !reg.test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: \"手机号不合法\",\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 必填\r\n * @author ChenRui\r\n * @date 2021/1/27 15:28\r\n */\r\n genRequired(item: Rule, controlType: string): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val == null || (typeof val == \"string\" && val.trim() === \"\") || (Array.isArray(val) && val.length === 0)) {\r\n let msg = \"为必输项\";\r\n if (controlType === FormFieldType.Select.code || controlType === FormFieldType.Radio.code || controlType === FormFieldType.Checkbox.code) {\r\n msg += \",请选择\";\r\n } else {\r\n msg += \",请输入\";\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: msg,\r\n };\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 唯一行\r\n * @author ChenRui\r\n * @date 2021/1/27 17:16\r\n */\r\n genLineUnique(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: () => {\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 仅包含字母空格\r\n * @author ChenRui\r\n * @date 2021/1/27 17:21\r\n */\r\n genLetterSpace(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n const reg = /^(?!_)([A-Za-z ]+)$/;\r\n if (val && !reg.test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: \"仅包含字母空格\",\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 数字字母下划线\r\n * @author ChenRui\r\n * @date 2021/1/27 17:28\r\n */\r\n genAlphanumericUnderline(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n const reg = /^[a-zA-Z0-9_]{1,}$/;\r\n if (val && !reg.test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: \"仅包含数字字母下划线\",\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 字母数字\r\n * @author ChenRui\r\n * @date 2021/1/27 17:32\r\n */\r\n genAlphanumeric(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n const reg = /^[0-9a-zA-Z]*$/g;\r\n if (val && !reg.test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: \"仅包含数字字母\",\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: JS方法校验\r\n * @author ChenRui\r\n * @date 2021/1/27 17:42\r\n */\r\n genJsMethodVerification(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (val && item.ruleContent) {\r\n try {\r\n const func = new Function(item.ruleContent);\r\n return func(val);\r\n } catch (e) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: item.describe ? item.describe : `'JS校验函数不合法`,\r\n };\r\n }\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 后端校验\r\n * @author ChenRui\r\n * @date 2021/1/27 17:43\r\n */\r\n genBackEndVerification(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: () => {\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 座机号校验\r\n * @author ChenRui\r\n * @date 2021/4/14 11:40\r\n */\r\n genLandlineNumber(item: Rule): Validate {\r\n const reg = /^0\\d{2,3}-?\\d{7,8}$/;\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (val && !reg.test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: \"座机号不合法\",\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n}\r\nconst validateGeneratorService = new ValidateGeneratorService();\r\nexport { Rule, validateGeneratorService };\r\n","// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n var currentScript = window.document.currentScript\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n var getCurrentScript = require('@soda/get-current-script')\n currentScript = getCurrentScript()\n\n // for backward compatibility, because previously we directly included the polyfill\n if (!('currentScript' in document)) {\n Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n }\n }\n\n var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n if (src) {\n __webpack_public_path__ = src[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, renderSlot as _renderSlot, resolveComponent as _resolveComponent, withCtx as _withCtx, createSlots as _createSlots, createBlock as _createBlock, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_dv_form_layout = _resolveComponent(\"dv-form-layout\")!\n\n return (_ctx.desForm?.controls?.length)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n ref: \"formView\",\n class: _normalizeClass('lo-form-container ' + ('lo-' + (_ctx.edit ? 'enable' : 'disable') + '-edit') + ' lo-class-style-' + _ctx.styleMode + ' lo-form-theme-' + _ctx.loFormTheme)\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.desForm.controls, (item, i) => {\n return (_openBlock(), _createBlock(_component_dv_form_layout, {\n key: i,\n control: item,\n customFormats: _ctx.customFormats,\n linkList: _ctx.linkList,\n onLinkClick: _ctx.linkClick,\n index: i,\n onChange: _cache[0] || (_cache[0] = ($event: any) => (_ctx.onChange($event))),\n onFocus: _cache[1] || (_cache[1] = ($event: any) => (_ctx.onFocus($event))),\n onBlur: _cache[2] || (_cache[2] = ($event: any) => (_ctx.onBlur($event))),\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.onClick($event))),\n onAddonBefore: _cache[4] || (_cache[4] = ($event: any) => (_ctx.onAddonBeforeHandler($event))),\n onAddonAfter: _cache[5] || (_cache[5] = ($event: any) => (_ctx.onAddonAfterHandler($event))),\n onAddItem: _cache[6] || (_cache[6] = ($event: any) => (_ctx.selectAddItem($event)))\n }, _createSlots({ _: 2 }, [\n _renderList(Object.keys(this.$slots), (propName) => {\n return {\n name: propName,\n fn: _withCtx((slotProps) => [\n _renderSlot(_ctx.$slots, propName, {\n content: slotProps.content,\n control: slotProps.control,\n onChange: slotProps.onChange\n }, undefined, true)\n ])\n }\n })\n ]), 1032, [\"control\", \"customFormats\", \"linkList\", \"onLinkClick\", \"index\"]))\n }), 128))\n ], 2))\n : _createCommentVNode(\"\", true)\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, renderSlot as _renderSlot, resolveDynamicComponent as _resolveDynamicComponent, createSlots as _createSlots, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = (n: any) => (_pushScopeId(\"data-v-6014843b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"lo-control-box\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = [\"src\"]\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"lo-history-popconfirm-title\" }, \"历史修改\", -1))\nconst _hoisted_5 = { class: \"lo-history-context\" }\nconst _hoisted_6 = { class: \"lo-important lo-mx-10\" }\nconst _hoisted_7 = { class: \"lo-important lo-mx-10\" }\nconst _hoisted_8 = { class: \"lo-important lo-ml-10\" }\nconst _hoisted_9 = [\"src\"]\nconst _hoisted_10 = { class: \"number-format-show\" }\nconst _hoisted_11 = { class: \"addon-inner\" }\nconst _hoisted_12 = { class: \"ant-picker-cell-inner calendar-control-style\" }\nconst _hoisted_13 = { class: \"date-control-style\" }\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"eest-day-style\" }, null, -1))\nconst _hoisted_15 = { class: \"date-style\" }\nconst _hoisted_16 = { class: \"eest-day-style\" }\nconst _hoisted_17 = {\n key: 0,\n class: \"holidays-style\"\n}\nconst _hoisted_18 = {\n key: 1,\n class: \"weekday-style\"\n}\nconst _hoisted_19 = { class: \"date-type-style\" }\nconst _hoisted_20 = {\n key: 0,\n class: \"trading-day-style\"\n}\nconst _hoisted_21 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"legend\" }, [\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"day-explain-style\" }, [\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"trading-day-icon\" }),\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"day-explain\" }, \"交易日\")\n ])\n], -1))\nconst _hoisted_22 = { class: \"lo-input-content\" }\nconst _hoisted_23 = [\"title\"]\nconst _hoisted_24 = { key: 1 }\nconst _hoisted_25 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"flex-grow-1\" }, null, -1))\nconst _hoisted_26 = {\n key: 0,\n class: \"addon-readonly\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_a_tooltip = _resolveComponent(\"a-tooltip\")!\n const _component_question_circle_outlined = _resolveComponent(\"question-circle-outlined\")!\n const _component_clock_circle_outlined = _resolveComponent(\"clock-circle-outlined\")!\n const _component_a_timeline_item = _resolveComponent(\"a-timeline-item\")!\n const _component_a_timeline = _resolveComponent(\"a-timeline\")!\n const _component_a_popconfirm = _resolveComponent(\"a-popconfirm\")!\n const _component_search_outlined = _resolveComponent(\"search-outlined\")!\n const _component_a_textarea = _resolveComponent(\"a-textarea\")!\n const _component_a_input_number = _resolveComponent(\"a-input-number\")!\n const _component_a_menu_item = _resolveComponent(\"a-menu-item\")!\n const _component_a_menu = _resolveComponent(\"a-menu\")!\n const _component_down_outlined = _resolveComponent(\"down-outlined\")!\n const _component_a_button = _resolveComponent(\"a-button\")!\n const _component_a_dropdown = _resolveComponent(\"a-dropdown\")!\n const _component_a_popover = _resolveComponent(\"a-popover\")!\n const _component_v_nodes = _resolveComponent(\"v-nodes\")!\n const _component_a_divider = _resolveComponent(\"a-divider\")!\n const _component_plus_outlined = _resolveComponent(\"plus-outlined\")!\n const _component_a_select_option = _resolveComponent(\"a-select-option\")!\n const _component_a_select = _resolveComponent(\"a-select\")!\n const _component_a_radio = _resolveComponent(\"a-radio\")!\n const _component_a_radio_group = _resolveComponent(\"a-radio-group\")!\n const _component_a_checkbox = _resolveComponent(\"a-checkbox\")!\n const _component_a_col = _resolveComponent(\"a-col\")!\n const _component_a_row = _resolveComponent(\"a-row\")!\n const _component_a_checkbox_group = _resolveComponent(\"a-checkbox-group\")!\n const _component_a_switch = _resolveComponent(\"a-switch\")!\n const _component_a_time_picker = _resolveComponent(\"a-time-picker\")!\n const _component_a_month_picker = _resolveComponent(\"a-month-picker\")!\n const _component_a_date_picker = _resolveComponent(\"a-date-picker\")!\n const _component_a_slider = _resolveComponent(\"a-slider\")!\n const _component_a_cascader = _resolveComponent(\"a-cascader\")!\n const _component_a_tree_select = _resolveComponent(\"a-tree-select\")!\n const _component_a_rate = _resolveComponent(\"a-rate\")!\n const _component_upload_outlined = _resolveComponent(\"upload-outlined\")!\n const _component_a_upload = _resolveComponent(\"a-upload\")!\n const _component_stretch_text = _resolveComponent(\"stretch-text\")!\n const _component_eye_outlined = _resolveComponent(\"eye-outlined\")!\n const _component_eye_invisible_outlined = _resolveComponent(\"eye-invisible-outlined\")!\n const _component_a_form_item = _resolveComponent(\"a-form-item\")!\n const _component_dv_form_layout = _resolveComponent(\"dv-form-layout\", true)!\n const _component_a_form = _resolveComponent(\"a-form\")!\n\n return ((_ctx.control.type === _ctx.formFieldClass.Base.code || _ctx.control.type === _ctx.formFieldClass.Senior.code) && !_ctx.controlAttr.isHideControl)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"lo-control-container\",\n style: _normalizeStyle({ width: _ctx.divWidthCompatibleToIe })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_a_form_item, {\n labelCol: {\r\n style: 'min-width: ' + _ctx.labelSpanWidth + ';width:' + _ctx.labelSpanWidth,\r\n },\n wrapperCol: {\r\n style: 'max-width: ' + _ctx.controlSpanMaxWidth + ';width: ' + _ctx.controlSpanWidth,\r\n },\n colon: _ctx.colon,\n labelAlign: _ctx.labelAlign,\n required: _ctx.required,\n \"validate-status\": _ctx.validateResult.validateStatus,\n help: _ctx.provideInjectData.edit ? _ctx.validateResult.errorMsg : null,\n class: _normalizeClass({\r\n ['form-model-item-' + _ctx.controlAttr.boundProperty]: true,\r\n ['form-model-item-' + _ctx.control.code]: true,\r\n 'lo-form-model-item-textarea-box lo-theme-textarea-box': _ctx.control.code === _ctx.formFieldType.Textarea.code,\r\n 'lo-form-item-mobile': _ctx.isMobileBrowser(),\r\n })\n }, {\n label: _withCtx(() => [\n (!_ctx.controlAttr.isHideTitle)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_2, [\n _createElementVNode(\"span\", {\n class: _normalizeClass({ 'lo-fw': _ctx.controlAttr.isBoldTitle }),\n style: _normalizeStyle({ color: _ctx.controlAttr.titleColor })\n }, _toDisplayString(_ctx.controlAttr.formFieldDescribe), 7),\n (_ctx.submittedType.length > 0)\n ? (_openBlock(), _createBlock(_component_a_tooltip, {\n key: 0,\n class: \"lo-label-sub-type-icon\",\n placement: \"right\",\n title: _ctx.submittedTypeStr,\n overlayClassName: \"lo-form-item-tooltip\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"img\", { src: _ctx.submittedSvg }, null, 8, _hoisted_3)\n ]),\n _: 1\n }, 8, [\"title\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.controlAttr.tips)\n ? (_openBlock(), _createBlock(_component_a_tooltip, {\n key: 1,\n class: \"lo-label-tips-icon\",\n placement: \"right\",\n title: _ctx.controlAttr.tips,\n overlayClassName: \"lo-form-item-tooltip\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_question_circle_outlined, { style: {\"font-size\":\"13px\"} })\n ]),\n _: 1\n }, 8, [\"title\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.formControl.history && _ctx.formControl.history.length)\n ? (_openBlock(), _createBlock(_component_a_popconfirm, {\n key: 2,\n overlayClassName: \"lo-label-history-popconfirm\",\n placement: \"right\",\n \"ok-text\": \"确定\"\n }, {\n title: _withCtx(() => [\n _hoisted_4,\n _createElementVNode(\"div\", null, [\n _createVNode(_component_a_timeline, { class: \"lo-history-timeline\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.formControl.history, (item, index) => {\n return (_openBlock(), _createBlock(_component_a_timeline_item, { key: index }, {\n dot: _withCtx(() => [\n _createVNode(_component_clock_circle_outlined, { style: {\"font-size\":\"13px\"} })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", null, _toDisplayString(item.time), 1),\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(item.before), 1),\n _createTextVNode(\" 改为 \"),\n _createElementVNode(\"div\", _hoisted_7, _toDisplayString(item.after), 1),\n _createTextVNode(\" 修改人 \"),\n _createElementVNode(\"div\", _hoisted_8, _toDisplayString(item.author), 1)\n ])\n ]),\n _: 2\n }, 1024))\n }), 128))\n ]),\n _: 1\n })\n ])\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"img\", {\n class: \"lo-label-history-icon\",\n src: _ctx.historySvg\n }, null, 8, _hoisted_9)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n default: _withCtx(() => [\n (_ctx.provideInjectData.edit)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_ctx.control.code === _ctx.formFieldType.Input.code)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_ctx.provideInjectData.edit)\n ? (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.inputShape), {\n key: 0,\n class: _normalizeClass({\r\n 'addon-before': _ctx.$slots['input:addonBefore:' + _ctx.formControl.key] || _ctx.controlAttr.bindingPrefix || _ctx.controlAttr.builtInFrontLabel,\r\n 'addon-after': _ctx.$slots['input:addonAfter:' + _ctx.formControl.key] || _ctx.controlAttr.bindingSuffix || _ctx.controlAttr.builtInPostLabel,\r\n }),\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.formControl.value) = $event)),\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n \"data-source\": _ctx.controlAttr.autoCompleteOptions,\n onFocus: _cache[3] || (_cache[3] = ($event: any) => (_ctx.onFocus(_ctx.control))),\n onBlur: _cache[4] || (_cache[4] = ($event: any) => (_ctx.onBlur(_ctx.control))),\n onInput: _cache[5] || (_cache[5] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, _createSlots({ _: 2 }, [\n (_ctx.$slots['input:prefix:' + _ctx.formControl.key])\n ? {\n name: \"prefix\",\n fn: _withCtx(() => [\n _renderSlot(_ctx.$slots, 'input:prefix:' + _ctx.formControl.key, {}, undefined, true)\n ]),\n key: \"0\"\n }\n : undefined,\n (_ctx.$slots['input:suffix:' + _ctx.formControl.key])\n ? {\n name: \"suffix\",\n fn: _withCtx(() => [\n _renderSlot(_ctx.$slots, 'input:suffix:' + _ctx.formControl.key, {}, undefined, true)\n ]),\n key: \"1\"\n }\n : undefined,\n (_ctx.$slots['input:addonBefore:' + _ctx.formControl.key] || _ctx.controlAttr.bindingPrefix || _ctx.controlAttr.builtInFrontLabel)\n ? {\n name: \"addonBefore\",\n fn: _withCtx(() => [\n _createElementVNode(\"span\", {\n class: \"addon-inner\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.onAddonBeforeHandler(_ctx.control)))\n }, [\n (_ctx.$slots['input:addonBefore:' + _ctx.formControl.key])\n ? _renderSlot(_ctx.$slots, 'input:addonBefore:' + _ctx.formControl.key, { key: 0 }, undefined, true)\n : (_ctx.controlAttr.bindingPrefix)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createTextVNode(_toDisplayString(_ctx.controlAttr.bindingPrefix), 1)\n ], 64))\n : (_ctx.controlAttr.builtInFrontLabel)\n ? (_openBlock(), _createBlock(_component_search_outlined, {\n key: 2,\n class: \"addon-icon\"\n }))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n key: \"2\"\n }\n : undefined,\n (_ctx.$slots['input:addonAfter:' + _ctx.formControl.key] || _ctx.controlAttr.bindingSuffix || _ctx.controlAttr.builtInPostLabel)\n ? {\n name: \"addonAfter\",\n fn: _withCtx(() => [\n _createElementVNode(\"span\", {\n class: \"addon-inner\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.onAddonAfterHandler(_ctx.control)))\n }, [\n (_ctx.$slots['input:addonAfter:' + _ctx.formControl.key])\n ? _renderSlot(_ctx.$slots, 'input:addonAfter:' + _ctx.formControl.key, { key: 0 }, undefined, true)\n : (_ctx.controlAttr.bindingSuffix)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createTextVNode(_toDisplayString(_ctx.controlAttr.bindingSuffix), 1)\n ], 64))\n : (_ctx.controlAttr.builtInPostLabel)\n ? (_openBlock(), _createBlock(_component_search_outlined, {\n key: 2,\n class: \"addon-icon\"\n }))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n key: \"3\"\n }\n : undefined\n ]), 1064, [\"class\", \"value\", \"placeholder\", \"disabled\", \"data-source\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n : (_ctx.control.code === _ctx.formFieldType.Textarea.code)\n ? (_openBlock(), _createBlock(_component_a_textarea, {\n key: 1,\n value: _ctx.control.formControl.value,\n \"onUpdate:value\": _cache[7] || (_cache[7] = ($event: any) => ((_ctx.control.formControl.value) = $event)),\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n rows: _ctx.controlAttr.textareaRows || 3,\n showCount: !!_ctx.maxCharacterCount,\n maxlength: _ctx.maxCharacterCount,\n onInput: _cache[8] || (_cache[8] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onFocus: _cache[9] || (_cache[9] = ($event: any) => (_ctx.onFocus(_ctx.control))),\n onBlur: _cache[10] || (_cache[10] = ($event: any) => (_ctx.onBlur(_ctx.control))),\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"value\", \"placeholder\", \"disabled\", \"rows\", \"showCount\", \"maxlength\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.InputNumber.code)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 2,\n class: _normalizeClass([\"lo-input-number-box\", {\r\n 'lo-with-unit': _ctx.controlAttr.zoomType === _ctx.zoomType.automatic.code && _ctx.moneyUnits.length > 0,\r\n ['lo-unit-' + _ctx.moneyUnitsIndentScale]: true,\r\n }]),\n tabindex: \"1\"\n }, [\n _createVNode(_component_a_popover, {\n placement: \"topLeft\",\n trigger: \"focus\",\n getPopupContainer: \r\n (triggerNode) => {\r\n return triggerNode.parentNode || _ctx.document.body;\r\n }\r\n \n }, _createSlots({\n default: _withCtx(() => [\n _createVNode(_component_a_input_number, {\n step: _ctx.controlAttr.step || 1,\n min: _ctx.controlAttr.minValue != null ? _ctx.controlAttr.minValue : undefined,\n max: _ctx.controlAttr.maxValue != null ? _ctx.controlAttr.maxValue : undefined,\n formatter: _ctx.numberFormatter,\n parser: _ctx.numberParser,\n precision: _ctx.controlAttr.decimalPlaces,\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[12] || (_cache[12] = ($event: any) => ((_ctx.formControl.value) = $event)),\n onChange: _cache[13] || (_cache[13] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[14] || (_cache[14] = ($event: any) => (_ctx.onClick(_ctx.control))),\n onFocus: _cache[15] || (_cache[15] = ($event: any) => (_ctx.onInputNumberFocus(_ctx.control))),\n onBlur: _cache[16] || (_cache[16] = ($event: any) => (_ctx.onInputNumberBlur(_ctx.control)))\n }, _createSlots({ _: 2 }, [\n (_ctx.controlAttr.unit)\n ? {\n name: \"addonAfter\",\n fn: _withCtx(() => [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.controlAttr.unit), 1)\n ]),\n key: \"0\"\n }\n : undefined\n ]), 1032, [\"step\", \"min\", \"max\", \"formatter\", \"parser\", \"precision\", \"placeholder\", \"disabled\", \"value\"]),\n (_ctx.controlAttr.zoomType === _ctx.zoomType.automatic.code && _ctx.moneyUnits.length > 0)\n ? (_openBlock(), _createBlock(_component_a_dropdown, { key: 0 }, {\n overlay: _withCtx(() => [\n _createVNode(_component_a_menu, { onClick: _ctx.handleMoneyUnitMenuClick }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.moneyUnits, (unit) => {\n return (_openBlock(), _createBlock(_component_a_menu_item, {\n key: unit.code\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(unit.name), 1)\n ]),\n _: 2\n }, 1024))\n }), 128))\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_a_button, null, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.defaultMoneyUnit.name) + \" \", 1),\n (_ctx.moneyUnits.length > 1)\n ? (_openBlock(), _createBlock(_component_down_outlined, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ]),\n _: 2\n }, [\n (_ctx.numberPopoverVisible)\n ? {\n name: \"content\",\n fn: _withCtx(() => [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.amountCapitalization(_ctx.zoomMultiple(_ctx.formControl.value, _ctx.formControl))), 1)\n ]),\n key: \"0\"\n }\n : undefined\n ]), 1032, [\"getPopupContainer\"])\n ], 2))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Select.code)\n ? (_openBlock(), _createBlock(_component_a_select, {\n key: 3,\n class: _normalizeClass([\"lo-select\", {\r\n 'lo-select-multiple-suffix-icon': _ctx.controlAttr.isMultipleChoice && (_ctx.$slots['select:suffixIcon:' + _ctx.formControl.key] || _ctx.controlAttr.bindingSuffix),\r\n }]),\n dropdownClassName: _ctx.controlAttr.hiddenDropdown ? 'lo-select-hide-drop-down-content' : '',\n showArrow: \"\",\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[19] || (_cache[19] = ($event: any) => ((_ctx.formControl.value) = $event)),\n \"allow-clear\": true,\n \"show-search\": \"\",\n mode: _ctx.controlAttr.isMultipleChoice ? 'multiple' : '',\n disabled: _ctx.controlAttr.isNotEdit,\n placeholder: _ctx.controlAttr.placeholder,\n onChange: _cache[20] || (_cache[20] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[21] || (_cache[21] = ($event: any) => (_ctx.onClick(_ctx.control))),\n \"get-popup-container\": _ctx.getPopupContainer,\n \"filter-option\": _ctx.filterOption\n }, _createSlots({\n dropdownRender: _withCtx(({ menuNode: menu }) => [\n _createVNode(_component_v_nodes, { vnodes: menu }, null, 8, [\"vnodes\"]),\n (_ctx.controlAttr.canAddEntry)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createVNode(_component_a_divider, { style: {\"margin\":\"4px 0\"} }),\n _createElementVNode(\"div\", {\n style: {\"padding\":\"4px 8px 6px 8px\",\"cursor\":\"pointer\"},\n onMousedown: _cache[17] || (_cache[17] = (e) => e.preventDefault()),\n onClick: _cache[18] || (_cache[18] = ($event: any) => (_ctx.selectAddItem(_ctx.control)))\n }, [\n _createVNode(_component_plus_outlined),\n _createTextVNode(\"新增\")\n ], 32)\n ], 64))\n : _createCommentVNode(\"\", true)\n ]),\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.options, (item) => {\n return (_openBlock(), _createBlock(_component_a_select_option, {\n value: item.value,\n key: item.value,\n title: item.title,\n disabled: item.disabled ? item.disabled : false\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(item.title), 1)\n ]),\n _: 2\n }, 1032, [\"value\", \"title\", \"disabled\"]))\n }), 128))\n ]),\n _: 2\n }, [\n (_ctx.$slots['select:suffixIcon:' + _ctx.formControl.key] || _ctx.controlAttr.bindingSuffix)\n ? {\n name: \"suffixIcon\",\n fn: _withCtx(() => [\n (_ctx.$slots['select:suffixIcon:' + _ctx.formControl.key])\n ? _renderSlot(_ctx.$slots, 'select:suffixIcon:' + _ctx.formControl.key, { key: 0 }, undefined, true)\n : (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createTextVNode(_toDisplayString(_ctx.controlAttr.bindingSuffix), 1)\n ], 64))\n ]),\n key: \"0\"\n }\n : undefined\n ]), 1032, [\"dropdownClassName\", \"class\", \"value\", \"mode\", \"disabled\", \"placeholder\", \"get-popup-container\", \"filter-option\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Radio.code)\n ? (_openBlock(), _createBlock(_component_a_radio_group, {\n key: 4,\n class: \"w-100\",\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[22] || (_cache[22] = ($event: any) => ((_ctx.formControl.value) = $event)),\n disabled: _ctx.controlAttr.isNotEdit,\n onChange: _cache[23] || (_cache[23] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[24] || (_cache[24] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.options, (item) => {\n return (_openBlock(), _createBlock(_component_a_radio, {\n key: item.value,\n value: item.value\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(item.title), 1)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"value\", \"disabled\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Checkbox.code)\n ? (_openBlock(), _createBlock(_component_a_checkbox_group, {\n key: 5,\n class: \"w-100\",\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[25] || (_cache[25] = ($event: any) => ((_ctx.formControl.value) = $event)),\n disabled: _ctx.controlAttr.isNotEdit,\n onChange: _cache[26] || (_cache[26] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[27] || (_cache[27] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_a_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_a_col, null, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.options, (item) => {\n return (_openBlock(), _createBlock(_component_a_checkbox, {\n key: item.value,\n value: item.value,\n class: \"ml-0 mr-5\",\n style: _normalizeStyle({ width: _ctx.controlAttr.checkboxStyle ? 'auto' : '10rem' })\n }, {\n default: _withCtx(() => [\n _createVNode(_component_a_tooltip, null, {\n title: _withCtx(() => [\n _createElementVNode(\"span\", null, _toDisplayString(item.title), 1)\n ]),\n default: _withCtx(() => [\n _createTextVNode(\" \" + _toDisplayString(item.title), 1)\n ]),\n _: 2\n }, 1024)\n ]),\n _: 2\n }, 1032, [\"value\", \"style\"]))\n }), 128))\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\", \"disabled\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Switch.code)\n ? (_openBlock(), _createBlock(_component_a_switch, {\n key: 6,\n checked: _ctx.formControl.value,\n \"onUpdate:checked\": _cache[28] || (_cache[28] = ($event: any) => ((_ctx.formControl.value) = $event)),\n \"checked-children\": _ctx.controlAttr.onOpeningText,\n \"un-checked-children\": _ctx.controlAttr.whenClosedText,\n disabled: _ctx.controlAttr.isNotEdit,\n onChange: _cache[29] || (_cache[29] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[30] || (_cache[30] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"checked\", \"checked-children\", \"un-checked-children\", \"disabled\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.TimePicker.code)\n ? (_openBlock(), _createBlock(_component_a_time_picker, {\n key: 7,\n class: \"w-100\",\n \"get-popup-container\": _ctx.getPopupContainer,\n locale: _ctx.locale,\n \"use12-hours\": _ctx.is12Hours,\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[31] || (_cache[31] = ($event: any) => ((_ctx.formControl.value) = $event)),\n onChange: _cache[32] || (_cache[32] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[33] || (_cache[33] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"get-popup-container\", \"locale\", \"use12-hours\", \"placeholder\", \"disabled\", \"value\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.DatePicker.code)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 8 }, [\n (_ctx.useMonthPicker)\n ? (_openBlock(), _createBlock(_component_a_month_picker, {\n key: 0,\n class: \"w-100\",\n \"get-popup-container\": _ctx.getPopupContainer,\n locale: _ctx.locale,\n format: _ctx.controlAttr.dateFormat,\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[34] || (_cache[34] = ($event: any) => ((_ctx.formControl.value) = $event)),\n onChange: _cache[35] || (_cache[35] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[36] || (_cache[36] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"get-popup-container\", \"locale\", \"format\", \"placeholder\", \"disabled\", \"value\"]))\n : (_ctx.controlAttr.isShowHoliday)\n ? (_openBlock(), _createBlock(_component_a_date_picker, {\n key: 1,\n class: \"w-100\",\n \"get-popup-container\": _ctx.getPopupContainer,\n locale: _ctx.locale,\n showTime: _ctx.showPickerTime(_ctx.controlAttr.dateFormat),\n format: _ctx.controlAttr.dateFormat,\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[37] || (_cache[37] = ($event: any) => ((_ctx.formControl.value) = $event)),\n onChange: _cache[38] || (_cache[38] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[39] || (_cache[39] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, {\n dateRender: _withCtx(({ current }) => [\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"div\", _hoisted_13, [\n _hoisted_14,\n _createElementVNode(\"div\", _hoisted_15, _toDisplayString(current.date()), 1),\n _createElementVNode(\"div\", _hoisted_16, [\n (_ctx.isRest(current))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, \"休\"))\n : (_ctx.isWeekday(current))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_18, \"班\"))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n (_ctx.isRadingDay(current))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]),\n renderExtraFooter: _withCtx(() => [\n _hoisted_21\n ]),\n _: 1\n }, 8, [\"get-popup-container\", \"locale\", \"showTime\", \"format\", \"placeholder\", \"disabled\", \"value\"]))\n : (_openBlock(), _createBlock(_component_a_date_picker, {\n key: 2,\n class: \"w-100\",\n \"get-popup-container\": _ctx.getPopupContainer,\n locale: _ctx.locale,\n showTime: _ctx.showPickerTime(_ctx.controlAttr.dateFormat),\n format: _ctx.controlAttr.dateFormat,\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[40] || (_cache[40] = ($event: any) => ((_ctx.formControl.value) = $event)),\n onChange: _cache[41] || (_cache[41] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[42] || (_cache[42] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"get-popup-container\", \"locale\", \"showTime\", \"format\", \"placeholder\", \"disabled\", \"value\"]))\n ], 64))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Slider.code)\n ? (_openBlock(), _createBlock(_component_a_slider, {\n key: 9,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[43] || (_cache[43] = ($event: any) => ((_ctx.formControl.value) = $event)),\n disabled: _ctx.controlAttr.isNotEdit,\n onChange: _cache[44] || (_cache[44] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[45] || (_cache[45] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"value\", \"disabled\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Cascader.code)\n ? (_openBlock(), _createBlock(_component_a_cascader, {\n key: 10,\n \"get-popup-container\": _ctx.getPopupContainer,\n changeOnSelect: _ctx.controlAttr.changeOnSelect,\n placeholder: _ctx.controlAttr.placeholder,\n \"show-search\": { cascaderFilter: _ctx.cascaderFilter },\n disabled: _ctx.controlAttr.isNotEdit,\n options: _ctx.cascaderOptions,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[46] || (_cache[46] = ($event: any) => ((_ctx.formControl.value) = $event)),\n onChange: _cache[47] || (_cache[47] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[48] || (_cache[48] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"get-popup-container\", \"changeOnSelect\", \"placeholder\", \"show-search\", \"disabled\", \"options\", \"value\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.TreeSelect.code)\n ? (_openBlock(), _createBlock(_component_a_tree_select, {\n key: 11,\n \"get-popup-container\": _ctx.getPopupContainer,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[49] || (_cache[49] = ($event: any) => ((_ctx.formControl.value) = $event)),\n \"show-search\": true,\n treeNodeFilterProp: 'title',\n disabled: _ctx.controlAttr.isNotEdit,\n placeholder: _ctx.controlAttr.placeholder,\n \"dropdown-style\": { maxHeight: '250px', overflow: 'auto' },\n \"tree-data\": _ctx.treeSelectOptions,\n onChange: _cache[50] || (_cache[50] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[51] || (_cache[51] = ($event: any) => (_ctx.onClick(_ctx.control))),\n treeDefaultExpandAll: _ctx.controlAttr.isTreeOpen\n }, null, 8, [\"get-popup-container\", \"value\", \"disabled\", \"placeholder\", \"tree-data\", \"treeDefaultExpandAll\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Rate.code)\n ? (_openBlock(), _createBlock(_component_a_rate, {\n key: 12,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[52] || (_cache[52] = ($event: any) => ((_ctx.formControl.value) = $event)),\n disabled: _ctx.controlAttr.isNotEdit,\n onChange: _cache[53] || (_cache[53] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[54] || (_cache[54] = ($event: any) => (_ctx.onClick(_ctx.control))),\n \"allow-half\": \"\"\n }, null, 8, [\"value\", \"disabled\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Upload.code)\n ? (_openBlock(), _createBlock(_component_a_upload, {\n key: 13,\n \"file-list\": _ctx.formControl.value,\n accept: _ctx.uploadType,\n multiple: _ctx.controlAttr.isMultipleChoice,\n onRemove: _ctx.handleRemove,\n \"before-upload\": _ctx.beforeUpload,\n onChange: _ctx.handleUploadChange\n }, {\n default: _withCtx(() => [\n _createVNode(_component_a_button, null, {\n default: _withCtx(() => [\n _createVNode(_component_upload_outlined),\n _createTextVNode(\" 选择文件 \")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"file-list\", \"accept\", \"multiple\", \"onRemove\", \"before-upload\", \"onChange\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Custom.code && _ctx.controlAttr.customFieldName)\n ? _renderSlot(_ctx.$slots, _ctx.controlAttr.customFieldName, {\n key: 14,\n control: _ctx.control,\n onChange: _ctx.onChange\n }, undefined, true)\n : _createCommentVNode(\"\", true)\n ], 64))\n : (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createElementVNode(\"div\", _hoisted_22, [\n _renderSlot(_ctx.$slots, 'read:' + _ctx.control.formControl.key, { content: _ctx.formatData }, () => [\n (_ctx.controlAttr.textFold)\n ? (_openBlock(), _createBlock(_component_stretch_text, {\n key: 0,\n content: _ctx.formatData,\n linkList: _ctx.linkList,\n fieldKey: _ctx.control.formControl.key,\n onLinkClick: _cache[55] || (_cache[55] = ($event: any) => (_ctx.linkClick({ key: _ctx.formControl.key, value: _ctx.formatData })))\n }, null, 8, [\"content\", \"linkList\", \"fieldKey\"]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"lo-control-text\",\n title: _ctx.formatData\n }, [\n (_ctx.linkList.indexOf(_ctx.control.formControl.key) > -1)\n ? (_openBlock(), _createElementBlock(\"a\", {\n key: 0,\n href: \"#\",\n onClick: _cache[56] || (_cache[56] = ($event: any) => (_ctx.linkClick({ key: _ctx.formControl.key, value: _ctx.formatData })))\n }, _toDisplayString(_ctx.formatData), 1))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_24, _toDisplayString(_ctx.formatData), 1))\n ], 8, _hoisted_23))\n ], true)\n ]),\n _hoisted_25,\n (_ctx.controlAttr.unit)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_26, _toDisplayString(_ctx.controlAttr.unit), 1))\n : _createCommentVNode(\"\", true),\n (_ctx.controlAttr.isDesensitize)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n onClick: _cache[57] || (_cache[57] = ($event: any) => (_ctx.handlerMasking(_ctx.formControl)))\n }, [\n (_ctx.isAfterClick)\n ? (_openBlock(), _createBlock(_component_eye_outlined, {\n key: 0,\n class: \"addon-icon\"\n }))\n : (_openBlock(), _createBlock(_component_eye_invisible_outlined, {\n key: 1,\n class: \"addon-icon\"\n }))\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n ]),\n _: 3\n }, 8, [\"labelCol\", \"wrapperCol\", \"colon\", \"labelAlign\", \"required\", \"validate-status\", \"help\", \"class\"])\n ])\n ], 4))\n : (_ctx.control.type === _ctx.formFieldClass.Layout.code && _ctx.control.code === _ctx.formFieldType.Empty.code)\n ? (_openBlock(), _createBlock(_component_a_form, {\n key: 1,\n class: _normalizeClass('w-100 lo-empty-layout-container' + (_ctx.controlAttr.layoutName ? ' lo-form-layout-' + _ctx.controlAttr.layoutName : '')),\n layout: _ctx.layout,\n style: _normalizeStyle(_ctx.emptyLayoutContainerStyle)\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.control.subControls, (item, i) => {\n return (_openBlock(), _createBlock(_component_dv_form_layout, {\n key: i,\n index: i,\n customFormats: _ctx.customFormats,\n control: item,\n parentControl: _ctx.control,\n linkList: _ctx.linkList,\n onLinkClick: _ctx.linkClick,\n onChange: _cache[58] || (_cache[58] = ($event: any) => (_ctx.onChange($event))),\n onClick: _cache[59] || (_cache[59] = ($event: any) => (_ctx.onClick($event))),\n onFocus: _cache[60] || (_cache[60] = ($event: any) => (_ctx.onFocus($event))),\n onBlur: _cache[61] || (_cache[61] = ($event: any) => (_ctx.onBlur($event))),\n onAddonBefore: _cache[62] || (_cache[62] = ($event: any) => (_ctx.onAddonBeforeHandler($event))),\n onAddonAfter: _cache[63] || (_cache[63] = ($event: any) => (_ctx.onAddonAfterHandler($event))),\n onAddItem: _cache[64] || (_cache[64] = ($event: any) => (_ctx.selectAddItem($event))),\n onFixFormLayout: _ctx.onHideControl\n }, _createSlots({ _: 2 }, [\n _renderList(Object.keys(_ctx.$slots), (scopedPropName) => {\n return {\n name: scopedPropName,\n fn: _withCtx(({ content, control, onChange }) => [\n _renderSlot(_ctx.$slots, scopedPropName, {\n content: content,\n control: control,\n onChange: onChange\n }, undefined, true)\n ])\n }\n })\n ]), 1032, [\"index\", \"customFormats\", \"control\", \"parentControl\", \"linkList\", \"onLinkClick\", \"onFixFormLayout\"]))\n }), 128))\n ]),\n _: 3\n }, 8, [\"class\", \"layout\", \"style\"]))\n : (_ctx.control.type === _ctx.formFieldClass.Layout.code && _ctx.control.code !== _ctx.formFieldType.Empty.code)\n ? (_openBlock(), _createBlock(_component_a_form, {\n key: 2,\n class: _normalizeClass('w-100 lo-general-layout-container' + (_ctx.controlAttr.layoutName ? ' lo-form-layout-' + _ctx.controlAttr.layoutName : '')),\n layout: _ctx.layout,\n style: _normalizeStyle(_ctx.generalLayoutContainerStyle)\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.control.subControls, (item, i) => {\n return (_openBlock(), _createBlock(_component_dv_form_layout, {\n key: i,\n index: i,\n customFormats: _ctx.customFormats,\n control: item,\n parentControl: _ctx.control,\n class: _normalizeClass(_ctx.controlAttr.layoutName ? 'lo-form-layout-' + _ctx.controlAttr.layoutName : ''),\n onChange: _cache[65] || (_cache[65] = ($event: any) => (_ctx.onChange($event))),\n onClick: _cache[66] || (_cache[66] = ($event: any) => (_ctx.onClick($event))),\n onFocus: _cache[67] || (_cache[67] = ($event: any) => (_ctx.onFocus($event))),\n onBlur: _cache[68] || (_cache[68] = ($event: any) => (_ctx.onBlur($event))),\n onAddonBefore: _cache[69] || (_cache[69] = ($event: any) => (_ctx.onAddonBeforeHandler($event))),\n onAddonAfter: _cache[70] || (_cache[70] = ($event: any) => (_ctx.onAddonAfterHandler($event))),\n onAddItem: _cache[71] || (_cache[71] = ($event: any) => (_ctx.selectAddItem($event)))\n }, _createSlots({ _: 2 }, [\n _renderList(Object.keys(_ctx.$slots), (scopedPropName) => {\n return {\n name: scopedPropName,\n fn: _withCtx(({ content, control, onChange }) => [\n _renderSlot(_ctx.$slots, scopedPropName, {\n content: content,\n control: control,\n onChange: onChange\n }, undefined, true)\n ])\n }\n })\n ]), 1032, [\"index\", \"customFormats\", \"control\", \"parentControl\", \"class\"]))\n }), 128))\n ]),\n _: 3\n }, 8, [\"class\", \"layout\", \"style\"]))\n : _createCommentVNode(\"\", true)\n}","const formTemplate = {\r\n formId: \"1\",\r\n appId: \"1\",\r\n domainClassId: \"\",\r\n objectId: \"1\",\r\n formType: \"1\",\r\n formName: \"test\",\r\n formAlias: \"test\",\r\n formDescribe: \"\",\r\n useState: \"1\",\r\n desDomainClass: null,\r\n desFormLayouts: [\r\n {\r\n layoutId: \"1\",\r\n formId: \"1\",\r\n parentLayoutId: \"\",\r\n layoutName: \"\",\r\n layoutType: \"101\",\r\n gridSpace: 1,\r\n gridColumnConfig: '[{\"value\":12,\"order\":1},{\"value\":12,\"order\":2}]',\r\n gridLateralArrangement: \"1\",\r\n gridVerticalArrangement: \"1\",\r\n layoutOrder: 1,\r\n labelSpan: \"\",\r\n controlSpan: \"\",\r\n subDesFormLayout: null,\r\n desFormControls: [],\r\n },\r\n ],\r\n desBusObject: null,\r\n};\r\nexport { formTemplate };\r\n","const SUBMITTED_SVG_XML =\r\n \"data:image/svg+xml;base64, PHN2ZyB0PSIxNjEyMTY2MTU4NzYxIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjkxMjY3IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1Ij4NCiAgICAgIDxkZWZzPjwvZGVmcz4NCiAgICAgIDxwYXRoDQogICAgICAgIGQ9Ik01MTEuNSA5NjBDMjY0LjIgOTYwIDYzIDc1OC44IDYzIDUxMS41UzI2NC4yIDYzIDUxMS41IDYzIDk2MCAyNjQuMiA5NjAgNTExLjUgNzU4LjggOTYwIDUxMS41IDk2MHogbTAtODU5LjIzMmMtMjI2LjQ3OCAwLTQxMC43MzIgMTg0LjI1NC00MTAuNzMyIDQxMC43MzJTMjg1LjAyMiA5MjIuMjMyIDUxMS41IDkyMi4yMzIgOTIyLjIzMiA3MzcuOTc4IDkyMi4yMzIgNTExLjUgNzM3Ljk3OCAxMDAuNzY4IDUxMS41IDEwMC43Njh6IG0tOTQuOTA2IDI4NS45ODhsMi40MTgtMS44MTNjOC45NzMtNi43MzQgMTMuNTIyLTE0LjE3NSAxMy41MjQtMjIuMTEycy00LjU0OS0xNS4zOC0xMy41MjQtMjIuMTE3bC0yLjQxOC0xLjgxNGgtNjMuMzQxVjIyNmwtMS44MTQtMi40MTljLTYuNzM2LTguOTc1LTE0LjE3OC0xMy41MjQtMjIuMTE1LTEzLjUyNHMtMTUuMzc5IDQuNTQ5LTIyLjExNSAxMy41MjRMMzA1LjM5NCAyMjZ2MTEyLjloLTczLjk4MWwtMi42NTQgMi42NTNjLTkuNjc5IDkuNjc5LTEzLjcxMyAxOC40OTQtMTIuMzMgMjYuOTQ5IDEuMTgyIDcuMjIzIDYuMTI5IDEzLjA0OCAxNC43IDE3LjMwOGwxLjkwNiAwLjk0Nmg3Mi4zNTV2MTU0LjEyOWMtMjEuOSAxMi4wNTgtNDkuODY5IDI0LjMtODMuMjM2IDM2LjQzNWwtMi4zODggMC44Ny0xLjU4OCAxLjk4MmMtOS4wMzMgMTEuMjc3LTExLjg3OSAyMC44LTguNyAyOS4xMDcgMy4wNCA3Ljk0NSAxMS4xODIgMTMuMDY5IDI0LjIgMTUuMjNsMi4yMTggMC4zNjkgMi4xMzMtMC43MWE0NzEuOTg5IDQ3MS45ODkgMCAwIDAgNjcuMzYyLTI4LjA1djE0My4zNDRjMCA3LjkyOS0yLjc4IDkuNy0zLjY5NCAxMC4yODQtMy42NSAyLjMyLTE2LjU4MSA1LjY2MS01Ny43NDctMTMuNTQybC0yLjY5MS0xLjI1NS0yLjkxMSAwLjU3OGMtMTAuNzI4IDIuMTQtMTcuOCA2Ljg5NC0yMS4wMDYgMTQuMTM5LTMuNTQxIDcuOTkxLTEuODczIDE3LjUyNiA1LjA5NCAyOS4xNDdsMS41NDkgMi41ODUgMi43OTEgMS4xNDNjMjguNDEgMTEuNjIxIDUxLjggMTcuNDE1IDcwLjU3NSAxNy40MTUgMTIuODI2IDAgMjMuNS0yLjcgMzIuMTQ4LTguMSAxNC4yNTctOC44OTIgMjIuMjQxLTI0LjY1IDIzLjczLTQ2LjgzNWwwLjAyMS0xNzMuNzE0YzI4LjI1OS0xNi4xMjcgNTIuMzUzLTM0LjA3NCA3MS42OC01My40bDEuNTE3LTEuNTE4IDAuNjc2LTIuMDM1YzQuNDc0LTEzLjQ3MiAzLjg0NS0yMy4zLTEuOTIzLTMwLjA0NC01LjU1MS02LjUtMTQuOTY2LTguNjkzLTI3Ljk4My02LjUyOWwtMy41OSAwLjU5My0yLjE3OSAyLjkxNGMtNy4zOTQgOS44NzYtMjAuMjEyIDIxLjA1MS0zOC4yIDMzLjMxNVYzODYuNzU2aDYzLjM0MXogbTM5MS4yODggMzY3Ljg2MmwtMS42NzgtMi43OTQtMy4wNzMtMS4wODVjLTUxLjY4Ni0xOC4yMzktOTYuNzMzLTQzLjk1My0xMzQuMDM3LTc2LjUgNDYuOTM4LTU1LjA1NSA3Ny4zLTExNC4wNzcgOTAuMy0xNzUuNTc0IDUuMTE4LTIwLjYgMi45NC0zNy4xNi02LjQ3MS00OS4yMTRDNzQxLjcgNDM1LjA4NiA3MjEuNDc5IDQyOC4xIDY5MS4wOSA0MjguMUg0OTIuMDEzVjMwOC4zMThjMC0yMS40MzggOS4xNDUtMzAuNTg1IDMwLjU4NC0zMC41ODVoMTM4Ljc1OWM0NC43MjkgMCA0NS40MzkgMjEuNTIxIDQ1LjQ0OSAzMC4xNzZsLTQuOTE3IDU0LjEtMC4wMzkgMC44MmMwIDQuOTI3LTEuODU1IDcuMDI3LTMuNDcgOC4zMDUtNS4xNTEgNC4wNzktMjEuMDQzIDkuMjA2LTY5LjYzMi0yLjI1OWwtMi43OS0wLjY1OC0yLjY2IDEuMDY3Yy0xMS4wNCA0LjQyMy0xNy40NjEgMTAuNjkzLTE5LjA4NSAxOC42NDQtMS42NzQgOC4xODUgMi4wNjIgMTYuOSAxMS4xIDI1LjkybDEuODggMS44NzIgMi41OTIgMC41NjZjNTQuODYgMTEuOTM0IDkxLjQ2NSAxMC40NTYgMTExLjkwNy00LjUzMSAxMC42MjYtNy43ODggMTYuNjc2LTE4Ljk3IDE4LTMzLjQ5M2w0Ljk0Mi03OS4xMDVjMS42MjYtMTkuNTc2LTIuOTY3LTM1LjM5LTEzLjY1My00Ny0xMy44LTE0Ljk5My0zNi42LTIyLjI4LTY5LjcxMi0yMi4yOEg1MTIuNjg0Yy00NC44MzMgMC02OC41MyAyMy43LTY4LjUzIDY4LjUyOVY3OTdsMS44MTUgMi40MTljNi43MzcgOC45NzUgMTQuMTc4IDEzLjUyNCAyMi4xMTYgMTMuNTI0czE1LjM3Ny00LjU0OSAyMi4xMTMtMTMuNTI0bDEuODE1LTIuNDE5di0wLjk4M2M1LjUxOSAyLjgyMSAxMi45MzUgMy40NzkgMjIuMTU3IDEuOTQybDEuNDg4LTAuMjQ2IDEuMzI2LTAuNzE2YzQxLjI5MS0yMi4yNjIgODEuNTYxLTUwLjg4MyAxMTkuOC04NS4xNDJhNDg5LjYgNDg5LjYgMCAwIDAgMTUwLjQgODUuNzExbDIuMzU3IDAuODMzIDIuNDUtMC41YzEwLjcyNy0yLjE2NCAxNy43ODgtNi45NCAyMC45ODgtMTQuMiAzLjUyOS03Ljk5IDEuODYtMTcuNDk5LTUuMDk3LTI5LjA4MXogbS05NS40NzMtMjY2LjNsLTAuMzI5IDAuODIxLTAuMTYzIDAuODdjLTkuMTE4IDQ4LjY0OS0zNi4xODkgOTkuNjIyLTgwLjUwOSAxNTEuNjI0LTQ1LjA4Ni00OS43NzQtNzcuNTM2LTEwNS40MTktOTYuNjItMTY1LjY3M2gxNDYuMzljMjYuMDU4IDAgMzEuMDQ2IDUuNDE1IDMxLjc4MiA2LjUgMC45MjkgMS4zNyAwLjIxMiAzLjk0LTAuNTUxIDUuODU3eiBtLTIyMC40IDUuMTE1YzI1LjQ1OCA3My4yMTkgNjEuNDI2IDEzNS43NDYgMTA3LjE1MyAxODYuMjM5LTMwLjEzNSAyOC44LTY2LjEyNyA1My45NDgtMTA3LjE1MyA3NC44NDhWNDkzLjQzMnoiDQogICAgICAgIGZpbGw9IiMwMDlERTUiDQogICAgICAgIHAtaWQ9IjkxMjY4Ig0KICAgICAgPjwvcGF0aD4NCiAgICA8L3N2Zz4=\";\r\n// const HISTORY_SVG_XML =\r\n// \"data:image/svg+xml;base64,PHN2ZyBpZD0i5Zu+5bGCXzEiIGRhdGEtbmFtZT0i5Zu+5bGCIDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2ZmMTcxNzt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPuWbvuaghzExPC90aXRsZT48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNS40MSw1aDBsMC0uMDlBOCw4LDAsMSwwLC42NCwxMS4xMmE3Ljg2LDcuODYsMCwwLDAsMS42MiwyLjQ1QTgsOCwwLDAsMCwxNS40MSw1Wm0tMi4yNSw4LjE3QTcuMyw3LjMsMCwwLDEsOCwxNS4yOUg4QTcuMzEsNy4zMSwwLDAsMSwuNzEsOCw3LjI5LDcuMjksMCwwLDEsOCwuNzFIOGE3LjI5LDcuMjksMCwwLDEsNS4xNiwxMi40NFoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik02LjY0LDEwYy0uOTMuNTItMS44NCwxLTIuNzIsMS40MVY3Ljc4SDUuNzl2LjU5aC44NVYzLjU0SDIuODZWNC4zSDUuNzlWN0gzLjA3djQuMTZhMS4yNywxLjI3LDAsMCwxLS4zOCwxbC41OC43NWE1LjkzLDUuOTMsMCwwLDEsLjY0LS41MWMxLS41NiwyLTEuMDcsMi45LTEuNTVBOC41NSw4LjU1LDAsMCwxLDYuNjQsMTBaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTAuMjksMTAuNTdhMTAsMTAsMCwwLDAsMS41OC01LjIzaDEuMjh2LS44SDguNzVjLjIxLS41NC40Mi0xLjEuNjItMS42OGwtLjg2LS4yNUEyMy41MiwyMy41MiwwLDAsMSw2LjY2LDcuMTlhNy4yMyw3LjIzLDAsMCwxLC41NS42OWMuMTktLjM1LjM3LS43MS41Ni0xLjA5YTguODEsOC44MSwwLDAsMCwxLjM4LDMuNzUsMTAuMywxMC4zLDAsMCwxLTMuMzksMi4wNyw1LjMxLDUuMzEsMCwwLDEsLjY0Ljc4LDExLjMzLDExLjMzLDAsMCwwLDMuMzMtMi4xNiw5LjQyLDkuNDIsMCwwLDAsMi45LDIsNS41Nyw1LjU3LDAsMCwxLC42OS0uODVBNy4yMiw3LjIyLDAsMCwxLDEwLjI5LDEwLjU3Wm0tLjU3LS43MmExMCwxMCwwLDAsMS0xLjQtNC4yN2wuMS0uMjRIMTFBOS42OCw5LjY4LDAsMCwxLDkuNzIsOS44NVoiLz48L3N2Zz4=\";\r\nconst HISTORY_SVG_XML =\r\n \"data:image/svg+xml;base64, PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBzdHlsZT0idHJhbnNmb3JtOiBzY2FsZSgwLjkpOyBtYXJnaW4tYm90dG9tOiAtMi41cHgiIHdpZHRoPSIxNnB4IiBoZWlnaHQ9IjE1cHgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIC03MzYgLTIyNyApIj4NCiAgICAgICAgPHBhdGgNCiAgICAgICAgICBkPSJNIDE0LjQgNy4xOTI5ODI0NTA2NTc4OSAgQyAxNC40IDcuNjczNjg0MjEwNTI2MzIgIDE0LjM1MDkzMzMzMzMzMzMgOC4xNDMxNTc4OTQ3MzY4NCAgMTQuMjU3Nzc3NzgzMzMzMyA4LjU5NjQ5MTIzMzU1MjYzICBMIDEyLjc5ODU3Nzc4MzMzMzMgOC41OTY0OTEyMzM1NTI2MyAgQyAxMi45MTgzMzI3ODU5NTUyIDguMTM4Mzk0ODc0Mjk4NjEgIDEyLjk3ODkzMDcxNzExODMgNy42NjcxOTc0MTQyNTIwMyAgMTIuOTc4OTMwNzE3MTE4MyA3LjE5NDEwMjY5MTg5MzEyICBDIDEyLjk3ODkzMDcxNzExODMgNC4wOTM1NTY3MzA5NTg2NCAgMTAuNDMxOTI4NDA3NTMxOSAxLjU4MDA2NzYwOTY1NjI4ICA3LjI5MDA0MTgzMzc4NDk3IDEuNTgwMDY3NjA5NjU2MjggIEMgNC4xNDgxNTUyNjAwMzgwNCAxLjU4MDA2NzYwOTY1NjI4ICAxLjYwMTE1Mjk1MDQ1MTY0IDQuMDkzNTU2NzMwOTU4NjQgIDEuNjAxMTUyOTUwNDUxNjQgNy4xOTQxMDI2OTE4OTMxMiAgQyAxLjYwMTE1Mjk1MDQ1MTY0IDEwLjI5NDY0ODY1MjgyNzYgIDQuMTQ4MTU1MjYwMDM4MDQgMTIuODA4MTM3Nzc0MTMgIDcuMjkwMDQxODMzNzg0OTcgMTIuODA4MTM3Nzc0MTMgIEMgNy44MDE3MTU4NDYxMjU2OCAxMi44MDgxMzc3NzQxMyAgOC4zMTEwNTEwNTk5ODkxMyAxMi43NDAwMTU0NzY1MDk1ICA4LjgwNDI2NjY2NjY2NjY3IDEyLjYwNTYxNDAyOTYwNTMgIEMgOC44ODY3NTU1NSAxMi44MTk2NDkxMTE4NDIxICA5LjAyMTE1NTU1IDEzLjAwOTEyMjc5NjA1MjYgIDkuMTkyNTMzMzMzMzMzMzMgMTMuMTU3ODk0NzM2ODQyMSAgQyA4LjkyMzU4OTU2OTY3MTU0IDEzLjM5MTU1NDE5MjUzODIgIDguNzU0MTUwMzc0NjM0NzggMTMuNzE2OTQ4ODM3NTM4MyAgOC43MTgyMjIyMTY2NjY2NyAxNC4wNjg3NzE5MjQzNDIxICBDIDguMjU2IDE0LjE2MTQwMzUwMzI4OTUgIDcuNzc4MTMzMzMzMzMzMzMgMTQuMjEwNTI2MzE1Nzg5NSAgNy4yODg4ODg4ODMzMzMzMyAxNC4yMTA1MjYzMTU3ODk1ICBDIDMuMzYxNDIyMjE2NjY2NjcgMTQuMjEwNTI2MzE1Nzg5NSAgMC4xNzc3Nzc3NjY2NjY2NjcgMTEuMDY4NzcxOTI0MzQyMSAgMC4xNzc3Nzc3ODMzMzMzMzQgNy4xOTI5ODI0NTA2NTc4OSAgQyAwLjE3Nzc3NzggMy4zMTcxOTI5NzY5NzM2OCAgMy4zNjE0MjIyMTY2NjY2NyAwLjE3NTQzODYwMTk3MzY4NCAgNy4yODg4ODg4ODMzMzMzMyAwLjE3NTQzODYwMTk3MzY4NCAgQyAxMS4yMTYzNTU1NSAwLjE3NTQzODYwMTk3MzY4NCAgMTQuNCAzLjMxNzE5Mjk5MzQyMTA1ICAxNC40IDcuMTkyOTgyNDUwNjU3ODkgIFogTSA3LjY0NDQ0NDQ1IDMuNjg0MjEwNTI2MzE1NzkgIEwgNy42NDQ0NDQ0NSA3LjE5Mjk4MjQ1MDY1Nzg5ICBMIDkuNzc3Nzc3NzgzMzMzMzMgNy4xOTI5ODI0NTA2NTc4OSAgQyAxMC4xNzA1MTM2MDg1MDM1IDcuMTkyOTgyNDUwNjU3ODkgIDEwLjQ4ODg4ODkgNy41MDcxNjg1OTM1ODIwOSAgMTAuNDg4ODg4OSA3Ljg5NDczNjg0MjEwNTI2ICBDIDEwLjQ4ODg4ODkgOC4yODIzMDUwOTA2Mjg0MyAgMTAuMTcwNTEzNjA4NTAzNSA4LjU5NjQ5MTIzMzU1MjYzICA5Ljc3Nzc3Nzc4MzMzMzMzIDguNTk2NDkxMjMzNTUyNjMgIEwgNi45MzMzMzMzMzMzMzMzMyA4LjU5NjQ5MTIzMzU1MjYzICBDIDYuNDU5MjU5MjU1NTU1NTUgOC41OTY0OTEyMzM1NTI2MyAgNy40MDc0MDc0MTExMTExMSA4LjU5NjQ5MTIzMzU1MjYzICA2LjkzMzMzMzMzMzMzMzMzIDguNTk2NDkxMjMzNTUyNjMgIEMgNi41NDA1OTc1MDgxNjMxOSA4LjU5NjQ5MTIzMzU1MjYzICA2LjIyMjIyMjIxNjY2NjY3IDguMjgyMzA1MDkwNjI4NDMgIDYuMjIyMjIyMjE2NjY2NjcgNy44OTQ3MzY4NDIxMDUyNiAgTCA2LjIyMjIyMjIxNjY2NjY3IDMuNjg0MjEwNTI2MzE1NzkgIEMgNi4yMjIyMjIyMTY2NjY2NyAzLjI5NjY0MjI3Nzc5MjYyICA2LjU0MDU5NzUwODE2MzE5IDIuOTgyNDU2MTM0ODY4NDIgIDYuOTMzMzMzMzMzMzMzMzMgMi45ODI0NTYxMzQ4Njg0MiAgQyA3LjMyNjA2OTE1ODUwMzQ4IDIuOTgyNDU2MTM0ODY4NDIgIDcuNjQ0NDQ0NDUgMy4yOTY2NDIyNzc3OTI2MiAgNy42NDQ0NDQ0NSAzLjY4NDIxMDUyNjMxNTc5ICBaIE0gMTAuODQ0NDQ0NDUgOS4yOTgyNDU2MDg1NTI2MyAgTCAxNS4xMTExMTExMTY2NjY3IDkuMjk4MjQ1NjA4NTUyNjMgIEMgMTUuNTAzODQ2OTQxODM2OCA5LjI5ODI0NTYwODU1MjYzICAxNS44MjIyMjIyMzMzMzMzIDkuNjEyNDMxNzUxNDc2ODMgIDE1LjgyMjIyMjIzMzMzMzMgMTAgIEMgMTUuODIyMjIyMjMzMzMzMyAxMC4zODc1NjgyNDg1MjMyICAxNS41MDM4NDY5NDE4MzY4IDEwLjcwMTc1NDM5MTQ0NzQgIDE1LjExMTExMTExNjY2NjcgMTAuNzAxNzU0MzkxNDQ3NCAgTCAxMC44NDQ0NDQ0NSAxMC43MDE3NTQzOTE0NDc0ICBDIDEwLjQ1MTcwODYyNDgyOTkgMTAuNzAxNzU0MzkxNDQ3NCAgMTAuMTMzMzMzMzMzMzMzMyAxMC4zODc1NjgyNDg1MjMyICAxMC4xMzMzMzMzMzMzMzMzIDEwICBDIDEwLjEzMzMzMzMzMzMzMzMgOS42MTI0MzE3NTE0NzY4MyAgMTAuNDUxNzA4NjI0ODI5OSA5LjI5ODI0NTYwODU1MjYzICAxMC44NDQ0NDQ0NSA5LjI5ODI0NTYwODU1MjYzICBaIE0gMTAuODQ0NDQ0NDUgMTEuNDAzNTA4NzY2NDQ3NCAgTCAxNS4xMTExMTExMTY2NjY3IDExLjQwMzUwODc2NjQ0NzQgIEMgMTUuNTAzODQ2OTQxODM2OCAxMS40MDM1MDg3NjY0NDc0ICAxNS44MjIyMjIyMzMzMzMzIDExLjcxNzY5NDkwOTM3MTYgIDE1LjgyMjIyMjIzMzMzMzMgMTIuMTA1MjYzMTU3ODk0NyAgQyAxNS44MjIyMjIyMzMzMzMzIDEyLjQ5MjgzMTQwNjQxNzkgIDE1LjUwMzg0Njk0MTgzNjggMTIuODA3MDE3NTQ5MzQyMSAgMTUuMTExMTExMTE2NjY2NyAxMi44MDcwMTc1NDkzNDIxICBMIDEwLjg0NDQ0NDQ1IDEyLjgwNzAxNzU0OTM0MjEgIEMgMTAuNDUxNzA4NjI0ODI5OSAxMi44MDcwMTc1NDkzNDIxICAxMC4xMzMzMzMzMzMzMzMzIDEyLjQ5MjgzMTQwNjQxNzkgIDEwLjEzMzMzMzMzMzMzMzMgMTIuMTA1MjYzMTU3ODk0NyAgQyAxMC4xMzMzMzMzMzMzMzMzIDExLjcxNzY5NDkwOTM3MTYgIDEwLjQ1MTcwODYyNDgyOTkgMTEuNDAzNTA4NzY2NDQ3NCAgMTAuODQ0NDQ0NDUgMTEuNDAzNTA4NzY2NDQ3NCAgWiBNIDEwLjg0NDQ0NDQ1IDEzLjUwODc3MTkyNDM0MjEgIEwgMTUuMTExMTExMTE2NjY2NyAxMy41MDg3NzE5MjQzNDIxICBDIDE1LjUwMzg0Njk0MTgzNjggMTMuNTA4NzcxOTI0MzQyMSAgMTUuODIyMjIyMjMzMzMzMyAxMy44MjI5NTgwNjcyNjYzICAxNS44MjIyMjIyMzMzMzMzIDE0LjIxMDUyNjMxNTc4OTUgIEMgMTUuODIyMjIyMjMzMzMzMyAxNC41OTgwOTQ1NjQzMTI2ICAxNS41MDM4NDY5NDE4MzY4IDE0LjkxMjI4MDcwNzIzNjggIDE1LjExMTExMTExNjY2NjcgMTQuOTEyMjgwNzA3MjM2OCAgTCAxMC44NDQ0NDQ0NSAxNC45MTIyODA3MDcyMzY4ICBDIDEwLjQ1MTcwODYyNDgyOTkgMTQuOTEyMjgwNzA3MjM2OCAgMTAuMTMzMzMzMzMzMzMzMyAxNC41OTgwOTQ1NjQzMTI2ICAxMC4xMzMzMzMzMzMzMzMzIDE0LjIxMDUyNjMxNTc4OTUgIEMgMTAuMTMzMzMzMzMzMzMzMyAxMy44MjI5NTgwNjcyNjYzICAxMC40NTE3MDg2MjQ4Mjk5IDEzLjUwODc3MTkyNDM0MjEgIDEwLjg0NDQ0NDQ1IDEzLjUwODc3MTkyNDM0MjEgIFogIg0KICAgICAgICAgIGZpbGwtcnVsZT0ibm9uemVybyINCiAgICAgICAgICBmaWxsPSIjZmZhMTE2Ig0KICAgICAgICAgIHN0cm9rZT0ibm9uZSINCiAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDczNiAyMjcgKSINCiAgICAgICAgLz4NCiAgICAgIDwvZz4NCiAgICA8L3N2Zz4=\";\r\nconst FORM_ERROR_MODAL_SVG_XML =\r\n \"data:image/svg+xml;base64, PHN2ZyB0PSIxNjI5Mjg0MTUzNjk3IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjIxODIiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTUxMiAwQzIzMC40IDAgMCAyMjcuMiAwIDUxMmMwIDI4MS42IDIzMC40IDUxMiA1MTIgNTEyIDI4NC44IDAgNTEyLTIyNy4yIDUxMi01MTJTNzk2LjggMCA1MTIgMHogbTAgODE5LjJjLTI4LjggMC01MS4yLTIyLjQtNTEuMi01MS4yczIyLjQtNTEuMiA1MS4yLTUxLjJjMjguOCAwIDUxLjIgMjIuNCA1MS4yIDUxLjIgMy4yIDI4LjgtMjIuNCA1MS4yLTUxLjIgNTEuMnogbTU0LjQtMjIwLjhjMCAyOC44LTIyLjQgNTEuMi01MS4yIDUxLjItMjguOCAwLTUxLjItMjIuNC01MS4yLTUxLjJWMjU2YzAtMjguOCAyMi40LTUxLjIgNTEuMi01MS4yIDI4LjggMCA1MS4yIDIyLjQgNTEuMiA1MS4ydjM0Mi40eiIgcC1pZD0iMjE4MyIgZmlsbD0iI0YxQjkxNiI+PC9wYXRoPjwvc3ZnPg==\";\r\nconst DROP_DOWN_LIST_SVG_XML =\r\n \"data:image/svg+xml;base64, PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTRweCIgaGVpZ2h0PSIxMXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIC01MTYgLTQ2ICkiPg0KICAgIDxwYXRoIGQ9Ik0gMCA0Ljc0OTk5NDE0MDYyNTAxICBMIDAgNi4yNTAwMDU4NTkzNzQ5OSAgTCAxLjU1NTU0OTQ3OTE2NjY0IDYuMjUwMDA1ODU5Mzc0OTkgIEwgMS41NTU1NDk0NzkxNjY2NCA0Ljc0OTk5NDE0MDYyNTAxICBMIDAgNC43NDk5OTQxNDA2MjUwMSAgWiBNIDAgOC43NSAgTCAwIDEwLjI0OTk5NDE0MDYyNSAgTCAxLjU1NTU0OTQ3OTE2NjY0IDEwLjI0OTk5NDE0MDYyNSAgTCAxLjU1NTU0OTQ3OTE2NjY0IDguNzUgIEwgMCA4Ljc1ICBaIE0gMCAwLjc1MDAwNTg1OTM3NDk5NCAgTCAwIDIuMjUgIEwgMS41NTU1NDk0NzkxNjY2NCAyLjI1ICBMIDEuNTU1NTQ5NDc5MTY2NjQgMC43NTAwMDU4NTkzNzQ5OTQgIEwgMCAwLjc1MDAwNTg1OTM3NDk5NCAgWiBNIDMuMTExMTE3MTg3NDk5OTkgNC43NDk5OTQxNDA2MjUwMSAgTCAzLjExMTExNzE4NzQ5OTk5IDYuMjUwMDA1ODU5Mzc0OTkgIEwgMTQgNi4yNTAwMDU4NTkzNzQ5OSAgTCAxNCA0Ljc0OTk5NDE0MDYyNTAxICBMIDMuMTExMTE3MTg3NDk5OTkgNC43NDk5OTQxNDA2MjUwMSAgWiBNIDMuMTExMTE3MTg3NDk5OTkgOC43NSAgTCAzLjExMTExNzE4NzQ5OTk5IDEwLjI0OTk5NDE0MDYyNSAgTCAxNCAxMC4yNDk5OTQxNDA2MjUgIEwgMTQgOC43NSAgTCAzLjExMTExNzE4NzQ5OTk5IDguNzUgIFogTSAxNCAwLjc1MDAwNTg1OTM3NDk5NCAgTCAzLjExMTExNzE4NzQ5OTk5IDAuNzUwMDA1ODU5Mzc0OTk0ICBMIDMuMTExMTE3MTg3NDk5OTkgMi4yNSAgTCAxNCAyLjI1ICBMIDE0IDAuNzUwMDA1ODU5Mzc0OTk0ICBaICIgZmlsbC1ydWxlPSJub256ZXJvIiBmaWxsPSIjYmZiY2NjIiBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIDEgNTE2IDQ2ICkiIC8+DQogIDwvZz4NCjwvc3ZnPg==\";\r\nexport { SUBMITTED_SVG_XML, HISTORY_SVG_XML, FORM_ERROR_MODAL_SVG_XML, DROP_DOWN_LIST_SVG_XML };\r\n","interface Config {\r\n value: number;\r\n order: number;\r\n}\r\n\r\nfunction transform(configs: Config[]): unknown {\r\n if (configs != null && configs.length > 0) {\r\n const arr: string[] = [];\r\n configs.sort((a: Config, b: Config) => a.order - b.order).forEach((item) => arr.push(item.value + \"fr\"));\r\n return arr.join(\" \");\r\n } else {\r\n return `1fr`;\r\n }\r\n}\r\n/**\r\n * @description: 网格布局比例分配\r\n * @author ChenRui\r\n * @date 2020/12/1 19:32\r\n */\r\nconst generateGridTemplateColumns = (configs: Config[]) => {\r\n return transform(configs);\r\n};\r\n\r\nexport default generateGridTemplateColumns;\r\n","interface Config {\r\n value: number;\r\n order: number;\r\n}\r\n\r\nfunction transform(configs: Config[]): unknown {\r\n if (configs != null && configs.length > 0) {\r\n return configs.length + 1;\r\n } else {\r\n return 2;\r\n }\r\n}\r\n/**\r\n * @description: 跨列计算\r\n * @author ChenRui\r\n * @date 2020/12/1 19:34\r\n */\r\nconst generateGridColumnEnd = (configs: Config[]) => {\r\n return transform(configs);\r\n};\r\n\r\nexport default generateGridColumnEnd;\r\n","class ApiService {\r\n createBasicHeaders() {\r\n return {\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n };\r\n }\r\n\r\n createAuthHeaders() {\r\n const data = JSON.parse(localStorage.getItem(\"core:token\") || sessionStorage.getItem(\"core:token\") || \"{}\");\r\n const accessToken = data.accessToken || \"\";\r\n const jti = data.jti || \"\";\r\n return {\r\n Authorization: \"bearer \" + accessToken,\r\n \"user-identity\": jti,\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n };\r\n }\r\n\r\n fetch(path: string, query: { [key: string]: any }, body: any, method: string, header: any) {\r\n path = query != null ? this.urlQueryConvert(path, query) : path;\r\n return fetch(path, {\r\n method: method ? method : \"GET\",\r\n headers: header,\r\n body: body,\r\n }).then(\r\n function (response) {\r\n response.status; //=> number 100–599\r\n response.statusText; //=> String\r\n response.headers; //=> Headers\r\n response.url; //=> String\r\n\r\n return response.json();\r\n },\r\n function (error) {\r\n error.message; //=> String\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * @description: url请求参数组装\r\n * @author ChenRui\r\n * @date 2020/8/28 15:21\r\n */\r\n urlQueryConvert(url: string, query: { [key: string]: any }) {\r\n let connectiveSymbol = \"\";\r\n if (url.indexOf(\"?\") !== -1) {\r\n connectiveSymbol = \"&\";\r\n } else {\r\n connectiveSymbol = \"?\";\r\n }\r\n if (query) {\r\n Object.keys(query).forEach((key, idx) => {\r\n const val = query[key];\r\n if (idx === 0) {\r\n if (val != null && val !== \"null\" && val !== \"undefined\") {\r\n url += connectiveSymbol + key + \"=\" + val;\r\n } else {\r\n url += connectiveSymbol + key + \"=\";\r\n }\r\n } else {\r\n if (val != null && val !== \"null\" && val !== \"undefined\") {\r\n url += \"&\" + key + \"=\" + val;\r\n } else {\r\n url += \"&\" + key + \"=\";\r\n }\r\n }\r\n });\r\n }\r\n return url;\r\n }\r\n}\r\nconst apiService = new ApiService();\r\nexport { apiService };\r\n","const NAME = \"vue-lo\";\r\nconst STORE_NAME = \"form:\";\r\nconst DICT_STORE_NAME = \"dict:\";\r\nexport { NAME, STORE_NAME, DICT_STORE_NAME };\r\n","import { FormConfig } from \"../domain/FormConfig\";\r\nimport * as sourceLocalForage from \"localforage\";\r\nimport { NAME } from \"../constants/config/storage.config\";\r\nclass CleanLocalForageService {\r\n localForage: any;\r\n config: any;\r\n get formConfig(): Partial<FormConfig> {\r\n if ((window as any).$app.config.globalProperties.$qlForm) {\r\n return (window as any).$app.config.globalProperties.$qlForm;\r\n }\r\n return {};\r\n }\r\n\r\n constructor() {}\r\n\r\n init(): void {\r\n const appId: string = this.formConfig.appId ? this.formConfig.appId : \"\";\r\n this.config = {\r\n driver: sourceLocalForage.INDEXEDDB, // Force WebSQL; same as using setDriver()\r\n name: NAME,\r\n version: 1.0,\r\n storeName: \"clean:\" + appId, // Should be alphanumeric, with underscores.\r\n description: \"用于清理实例的缓存对象\",\r\n };\r\n this.localForage = sourceLocalForage.createInstance(this.config);\r\n }\r\n\r\n /**\r\n * @description: 设值\r\n * @author ChenRui\r\n * @date 2021/3/12 16:31\r\n */\r\n setItem(key: string, value: any): any {\r\n this.localForage.setItem(key, value);\r\n }\r\n\r\n /**\r\n * @description: 取值\r\n * @author ChenRui\r\n * @date 2021/3/12 16:31\r\n */\r\n getItem(key: string): Promise<any> {\r\n return this.localForage.getItem(key);\r\n }\r\n\r\n /**\r\n * @description: 删除实例\r\n * @author ChenRui\r\n * @date 2021/6/22 11:08\r\n */\r\n dropInstance(): void {\r\n if (this.localForage != null) {\r\n this.localForage.dropInstance().then();\r\n }\r\n }\r\n}\r\nconst cleanLocalForageService: CleanLocalForageService = new CleanLocalForageService();\r\nexport { CleanLocalForageService, cleanLocalForageService };\r\n","import { FormConfig } from \"../domain/FormConfig\";\r\nimport * as sourceLocalForage from \"localforage\";\r\nimport { DICT_STORE_NAME, NAME } from \"../constants/config/storage.config\";\r\nclass DictLocalForageService {\r\n localForage: any;\r\n config: any;\r\n get formConfig(): Partial<FormConfig> {\r\n if ((window as any).$app.config.globalProperties.$qlForm) {\r\n return (window as any).$app.config.globalProperties.$qlForm;\r\n }\r\n return {};\r\n }\r\n\r\n constructor() {}\r\n\r\n init(): void {\r\n const appId: string = this.formConfig.appId ? this.formConfig.appId : \"\";\r\n this.config = {\r\n driver: sourceLocalForage.INDEXEDDB, // Force WebSQL; same as using setDriver()\r\n name: NAME,\r\n version: 1.0,\r\n storeName: DICT_STORE_NAME + appId, // Should be alphanumeric, with underscores.\r\n description: \"PC端表单数据库\",\r\n };\r\n this.localForage = sourceLocalForage.createInstance(this.config);\r\n }\r\n\r\n /**\r\n * @description: 设值\r\n * @author ChenRui\r\n * @date 2021/3/12 16:31\r\n */\r\n setItem(key: string, value: any): any {\r\n this.localForage.setItem(key, value);\r\n }\r\n\r\n /**\r\n * @description: 取值\r\n * @author ChenRui\r\n * @date 2021/3/12 16:31\r\n */\r\n getItem(key: string): Promise<any> {\r\n return this.localForage.getItem(key);\r\n }\r\n\r\n /**\r\n * @description: 删除实例\r\n * @author ChenRui\r\n * @date 2021/6/22 11:08\r\n */\r\n dropInstance(): void {\r\n if (this.localForage != null) {\r\n this.localForage.dropInstance().then();\r\n }\r\n }\r\n}\r\nconst dictLocalForageService: DictLocalForageService = new DictLocalForageService();\r\nexport { DictLocalForageService, dictLocalForageService };\r\n","class FormBeanUtilsService {\r\n constructor() {}\r\n\r\n /**\r\n * @description: 对象拷贝\r\n * @author ChenRui\r\n * @date 2020/8/29 19:54\r\n */\r\n copy(obj: any): any {\r\n if (obj != null) {\r\n return JSON.parse(JSON.stringify(obj));\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @description: 字符串转对象\r\n * @author ChenRui\r\n * @date 2020/8/29 19:54\r\n */\r\n parse(str: string | null): any {\r\n if (str != null && str !== \"\") {\r\n return JSON.parse(str);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 对象转字符串\r\n * @author ChenRui\r\n * @date 2020/8/29 19:54\r\n */\r\n stringify(obj: any): string {\r\n if (obj != null) {\r\n return JSON.stringify(obj);\r\n }\r\n return \"\";\r\n }\r\n}\r\nconst formBeanUtilsService = new FormBeanUtilsService();\r\nexport { formBeanUtilsService };\r\n","import { FormConfig } from \"../domain/FormConfig\";\r\nimport * as sourceLocalForage from \"localforage\";\r\nimport { NAME, STORE_NAME } from \"../constants/config/storage.config\";\r\n\r\nclass FormLocalForageService {\r\n localForage: any;\r\n config: any;\r\n get formConfig(): Partial<FormConfig> {\r\n if ((window as any).$app.config.globalProperties.$qlForm) {\r\n return (window as any).$app.config.globalProperties.$qlForm;\r\n }\r\n return {};\r\n }\r\n\r\n constructor() {}\r\n\r\n init(): void {\r\n const appId: string = this.formConfig.appId ? this.formConfig.appId : \"\";\r\n this.config = {\r\n driver: sourceLocalForage.INDEXEDDB, // Force WebSQL; same as using setDriver()\r\n name: NAME,\r\n version: 1.0,\r\n storeName: STORE_NAME + appId, // Should be alphanumeric, with underscores.\r\n description: \"PC端表单数据库\",\r\n };\r\n this.localForage = sourceLocalForage.createInstance(this.config);\r\n }\r\n\r\n /**\r\n * @description: 设值\r\n * @author ChenRui\r\n * @date 2021/3/12 16:31\r\n */\r\n setItem(key: string, value: any): any {\r\n this.localForage.setItem(key, value);\r\n }\r\n\r\n /**\r\n * @description: 取值\r\n * @author ChenRui\r\n * @date 2021/3/12 16:31\r\n */\r\n getItem(key: string): Promise<any> {\r\n return this.localForage.getItem(key);\r\n }\r\n\r\n /**\r\n * @description: 删除实例\r\n * @author ChenRui\r\n * @date 2021/6/22 11:08\r\n */\r\n dropInstance(): void {\r\n if (this.localForage != null) {\r\n this.localForage.dropInstance().then();\r\n }\r\n }\r\n}\r\nconst formLocalForageService: FormLocalForageService = new FormLocalForageService();\r\nexport { FormLocalForageService, formLocalForageService };\r\n","import { DesFormLayout } from \"./DesFormLayout\";\r\nimport { Control } from \"./Control\";\r\nimport { FormGroup } from \"./FormGroup\";\r\n\r\nexport class DesForm {\r\n formId: string;\r\n appId: string;\r\n domainClassId: string;\r\n objectId: string;\r\n formType: string;\r\n formName: string;\r\n formAlias: string;\r\n formDescribe: string;\r\n useState: string;\r\n desFormLayouts: DesFormLayout[];\r\n controls: Control[];\r\n formGroup: FormGroup | undefined;\r\n [key: string]: any;\r\n constructor(\r\n options: {\r\n formId?: string;\r\n appId?: string;\r\n domainClassId?: string;\r\n objectId?: string;\r\n formType?: string;\r\n formName?: string;\r\n formAlias?: string;\r\n formDescribe?: string;\r\n useState?: string;\r\n controls?: Control[];\r\n formGroup?: FormGroup;\r\n desFormLayouts?: DesFormLayout[];\r\n } = {}\r\n ) {\r\n this.formId = options.formId || \"\";\r\n this.appId = options.appId || \"\";\r\n this.domainClassId = options.domainClassId || \"\";\r\n this.objectId = options.objectId || \"\";\r\n this.formType = options.formType || \"\";\r\n this.formName = options.formName || \"\";\r\n this.formAlias = options.formAlias || \"\";\r\n this.formDescribe = options.formDescribe || \"\";\r\n this.useState = options.useState || \"\";\r\n this.controls = options.controls || [];\r\n this.formGroup = options.formGroup;\r\n this.desFormLayouts = options.desFormLayouts || [];\r\n }\r\n}\r\n","import { DesFormControl } from \"./DesFormControl\";\r\n\r\nexport class DesFormLayout {\r\n layoutId: string;\r\n formId: string;\r\n parentLayoutId: string;\r\n layoutName: string;\r\n layoutType: string;\r\n gridSpace: number | undefined;\r\n gridColumnConfig: any;\r\n gridLateralArrangement: string;\r\n gridVerticalArrangement: string;\r\n layoutOrder: number | undefined;\r\n labelSpan: string;\r\n controlSpan: string;\r\n desFormControls: DesFormControl[];\r\n subDesFormLayout: DesFormLayout[];\r\n constructor(\r\n options: {\r\n layoutId?: string;\r\n formId?: string;\r\n parentLayoutId?: string;\r\n layoutName?: string;\r\n layoutType?: string;\r\n gridSpace?: number;\r\n gridColumnConfig?: any;\r\n gridLateralArrangement?: string;\r\n gridVerticalArrangement?: string;\r\n layoutOrder?: number;\r\n labelSpan?: string;\r\n controlSpan?: string;\r\n desFormControls?: DesFormControl[];\r\n subDesFormLayout?: DesFormLayout[];\r\n } = {}\r\n ) {\r\n this.layoutId = options.layoutId || \"\";\r\n this.formId = options.formId || \"\";\r\n this.parentLayoutId = options.parentLayoutId || \"\";\r\n this.layoutName = options.layoutName || \"\";\r\n this.layoutType = options.layoutType || \"\";\r\n this.gridSpace = options.gridSpace;\r\n this.gridColumnConfig = options.gridColumnConfig;\r\n this.gridLateralArrangement = options.gridLateralArrangement || \"\";\r\n this.gridVerticalArrangement = options.gridVerticalArrangement || \"\";\r\n this.layoutOrder = options.layoutOrder;\r\n this.labelSpan = options.labelSpan || \"\";\r\n this.controlSpan = options.controlSpan || \"\";\r\n this.desFormControls = options.desFormControls || [];\r\n this.subDesFormLayout = options.subDesFormLayout || [];\r\n }\r\n}\r\n","import { formBeanUtilsService } from \"./form-bean-utils.service\";\r\n\r\ninterface NodeContrast {\r\n id: string;\r\n parentId: string;\r\n children: string;\r\n}\r\n\r\ninterface NzNodeContrast {\r\n title: string;\r\n key: string;\r\n icon?: string;\r\n isLeaf?: string;\r\n checked?: string;\r\n selected?: string;\r\n selectable?: string;\r\n disabled?: string;\r\n disableCheckbox?: string;\r\n expanded?: string;\r\n children: string;\r\n [key: string]: any;\r\n}\r\n\r\ninterface NzCascaderOptionContrast {\r\n value: string;\r\n label: string;\r\n title?: string;\r\n disabled?: string;\r\n loading?: string;\r\n isLeaf?: string;\r\n parent?: string;\r\n children: string;\r\n [key: string]: any;\r\n}\r\n\r\ninterface NzTreeNodeOptions {\r\n title: string;\r\n key: string;\r\n icon?: string;\r\n isLeaf?: boolean;\r\n checked?: boolean;\r\n selected?: boolean;\r\n selectable?: boolean;\r\n disabled?: boolean;\r\n disableCheckbox?: boolean;\r\n expanded?: boolean;\r\n children?: NzTreeNodeOptions[];\r\n [key: string]: any;\r\n}\r\n\r\ninterface MapNodeItem {\r\n key?: string;\r\n title?: string;\r\n value?: string;\r\n children?: MapNodeOptions;\r\n}\r\n\r\ninterface MapNodeOptions {\r\n [key: string]: MapNodeItem;\r\n}\r\n\r\nclass FormTreeNodeConvertService {\r\n constructor() {}\r\n\r\n /**\r\n * @description: 数组转换为树形结构\r\n * @author ChenRui\r\n * @date 2020/10/30 10:18\r\n */\r\n arrayConvertToTreeNode(data: any[], nodeContrast: NodeContrast, parentId?: string): any[] {\r\n if (data != null && data.length > 0) {\r\n let nds: any[] = data.filter((item) => (item[nodeContrast.parentId] || \"\") === (parentId || \"\"));\r\n if (nds != null && nds.length > 0) {\r\n nds = formBeanUtilsService.copy(nds);\r\n nds.forEach((item) => {\r\n const children = this.arrayConvertToTreeNode(data, nodeContrast, item[nodeContrast.id]);\r\n if (children != null && children.length > 0) {\r\n item[nodeContrast.children] = [...children];\r\n }\r\n });\r\n return nds;\r\n }\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @description: 树形结构转换为Nz树形结构\r\n * @author ChenRui\r\n * @date 2020/10/30 10:21\r\n */\r\n treeNodeConvertToNzTreeNode(data: any[], nzNodeContrast: NzNodeContrast, isDisabledLeaf = false): any[] {\r\n const nodes: any[] = [];\r\n if (data != null && data.length > 0) {\r\n data.forEach((item) => {\r\n const node: any = {\r\n title: \"\",\r\n key: \"\",\r\n icon: \"\",\r\n isLeaf: true,\r\n checked: false,\r\n selected: false,\r\n selectable: true,\r\n disabled: isDisabledLeaf,\r\n disableCheckbox: false,\r\n expanded: true,\r\n children: [],\r\n };\r\n for (const propName of Object.keys(nzNodeContrast)) {\r\n if (nzNodeContrast[propName] != null && nzNodeContrast[propName] !== \"\") {\r\n node[propName] = item[nzNodeContrast[propName]];\r\n }\r\n }\r\n node.children = [];\r\n if (item[nzNodeContrast.children] != null && item[nzNodeContrast.children].length > 0) {\r\n const children = this.treeNodeConvertToNzTreeNode(item[nzNodeContrast.children], nzNodeContrast, isDisabledLeaf);\r\n node.disabled = false;\r\n node.isLeaf = false;\r\n node.children = children;\r\n }\r\n nodes.push(node);\r\n });\r\n }\r\n return nodes;\r\n }\r\n\r\n /**\r\n * @description: 数组转换为Nz树形结构\r\n * @author ChenRui\r\n * @date 2020/10/30 10:41\r\n */\r\n arrayConvertToNzTreeNode(data: any[], nodeContrast: NodeContrast, nzNodeContrast: NzNodeContrast, isDisabledLeaf = false): any[] {\r\n const treeNode = this.arrayConvertToTreeNode(data, nodeContrast);\r\n if (treeNode != null && treeNode.length > 0) {\r\n return this.treeNodeConvertToNzTreeNode(treeNode, nzNodeContrast, isDisabledLeaf);\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @description: 树形结构转换为Nz树形结构\r\n * @author ChenRui\r\n * @date 2020/10/30 10:21\r\n */\r\n treeNodeConvertToCascaderOption(data: any[], nzCascaderOptionContrast: NzCascaderOptionContrast, isDisabledLeaf = false): any[] {\r\n const nodes: any[] = [];\r\n if (data != null && data.length > 0) {\r\n data.forEach((item) => {\r\n const node: any = {\r\n value: \"\",\r\n label: \"\",\r\n title: \"\",\r\n disabled: isDisabledLeaf,\r\n loading: \"\",\r\n isLeaf: true,\r\n parent: \"\",\r\n children: \"\",\r\n };\r\n for (const propName of Object.keys(nzCascaderOptionContrast)) {\r\n if (nzCascaderOptionContrast[propName] != null && nzCascaderOptionContrast[propName] !== \"\") {\r\n node[propName] = item[nzCascaderOptionContrast[propName]];\r\n }\r\n }\r\n node.children = [];\r\n if (item[nzCascaderOptionContrast.children] != null && item[nzCascaderOptionContrast.children].length > 0) {\r\n const children = this.treeNodeConvertToCascaderOption(item[nzCascaderOptionContrast.children], nzCascaderOptionContrast, isDisabledLeaf);\r\n node.disabled = false;\r\n node.isLeaf = false;\r\n node.children = children;\r\n }\r\n nodes.push(node);\r\n });\r\n }\r\n return nodes;\r\n }\r\n\r\n /**\r\n * @description: 插件树结构转map\r\n * @author ChenRui\r\n * @date 2022/1/18 19:19\r\n */\r\n nzTreeNodeConvertToMap(data: NzTreeNodeOptions[]): MapNodeOptions | undefined {\r\n if (data != null && data.length > 0) {\r\n const mapNodeOptions: MapNodeOptions = {};\r\n data.forEach((item) => {\r\n if (item.value) {\r\n mapNodeOptions[item.value] = {\r\n key: item.key,\r\n title: item.title,\r\n value: item.value,\r\n };\r\n if (item.children && item.children.length > 0) {\r\n mapNodeOptions[item.value].children = this.nzTreeNodeConvertToMap(item.children) || undefined;\r\n }\r\n }\r\n });\r\n return mapNodeOptions;\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * @description: 数组转换为Nz树形结构\r\n * @author ChenRui\r\n * @date 2020/10/30 10:41\r\n */\r\n arrayConvertToCascaderOption(data: any[], nodeContrast: NodeContrast, nzCascaderOptionContrast: NzCascaderOptionContrast, isDisabledLeaf = false): any[] {\r\n const treeNode = this.arrayConvertToTreeNode(data, nodeContrast);\r\n if (treeNode != null && treeNode.length > 0) {\r\n return this.treeNodeConvertToCascaderOption(treeNode, nzCascaderOptionContrast, isDisabledLeaf);\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @Description: 树形数据转为数组\r\n * @author LiuBo\r\n * @date 2021/11/5\r\n * @time 16:59\r\n * @param treeNode 树形数据\r\n * @param data 数组 传入空数组即可[]\r\n * @param childName 子节点名称\r\n */\r\n treeNodeConvertToArray(treeNode: any[], data: any[], childName: string): any[] {\r\n data = data || [];\r\n treeNode = JSON.parse(JSON.stringify(treeNode));\r\n treeNode.forEach((val: any) => {\r\n data.push(val);\r\n if (val[childName] && val[childName].length) {\r\n formTreeNodeConvertService.treeNodeConvertToArray(val[childName], data, childName);\r\n }\r\n });\r\n data.forEach((val: any) => {\r\n delete val[childName];\r\n });\r\n return data;\r\n }\r\n}\r\nconst formTreeNodeConvertService: FormTreeNodeConvertService = new FormTreeNodeConvertService();\r\nexport { NodeContrast, NzNodeContrast, NzCascaderOptionContrast, NzTreeNodeOptions, MapNodeItem, MapNodeOptions, formTreeNodeConvertService };\r\n","import { DesForm } from \"../domain/DesForm\";\r\nimport { formLocalForageService } from \"../services/form-local-forage.service\";\r\n\r\n/**\r\n * @description: 表单存储服务\r\n * @author ChenRui\r\n * @date 2020/12/30 11:17\r\n */\r\nclass FormStore {\r\n private static readonly FORMS = \"forms_data\";\r\n private static readonly VERSION = \"forms_version\";\r\n\r\n constructor() {}\r\n\r\n public setForms(desForm: DesForm[]) {\r\n formLocalForageService.setItem(FormStore.FORMS, desForm);\r\n }\r\n\r\n public getForms(): Promise<DesForm[]> {\r\n return formLocalForageService.getItem(FormStore.FORMS);\r\n }\r\n\r\n public setVersion(value: string) {\r\n formLocalForageService.setItem(FormStore.VERSION, value);\r\n }\r\n\r\n public getVersion(): Promise<any> {\r\n return formLocalForageService.getItem(FormStore.VERSION);\r\n }\r\n}\r\nconst formStore = new FormStore();\r\nexport { formStore };\r\n","import { dictLocalForageService } from \"../services/dict-local-forage.service\";\r\n\r\n/**\r\n * @description: 表单版本管理\r\n * @author ChenRui\r\n * @date 2020/12/30 11:17\r\n */\r\nclass DictStore {\r\n private static readonly DICTS = \"dicts_data\";\r\n private static readonly TREE_DICTS = \"treeDicts_data\";\r\n private static readonly MAP_DICTS = \"map_dicts_data\";\r\n private static readonly MAP_TREE_DICTS = \"map_treeDicts_data\";\r\n private static readonly VERSION = \"dict_version\";\r\n\r\n constructor() {}\r\n\r\n /**常规字典存储*/\r\n public setDicts(nzTreeNodeOptions: any[]) {\r\n dictLocalForageService.setItem(DictStore.DICTS, nzTreeNodeOptions);\r\n }\r\n\r\n public getDicts(): Promise<any[]> {\r\n return dictLocalForageService.getItem(DictStore.DICTS);\r\n }\r\n\r\n /**树形字典存储*/\r\n public setTreeDicts(nzTreeNodeOptions: any[]) {\r\n dictLocalForageService.setItem(DictStore.TREE_DICTS, nzTreeNodeOptions);\r\n }\r\n\r\n public getTreeDicts(): Promise<any[]> {\r\n return dictLocalForageService.getItem(DictStore.TREE_DICTS);\r\n }\r\n\r\n /**map型常规字典存储*/\r\n public setMapDicts(nzTreeNodeOptions: any) {\r\n dictLocalForageService.setItem(DictStore.MAP_DICTS, nzTreeNodeOptions);\r\n }\r\n\r\n public getMapDicts(): Promise<any> {\r\n return dictLocalForageService.getItem(DictStore.MAP_DICTS);\r\n }\r\n\r\n /**map型树形字典存储*/\r\n public setMapTreeDicts(nzTreeNodeOptions: any) {\r\n dictLocalForageService.setItem(DictStore.MAP_TREE_DICTS, nzTreeNodeOptions);\r\n }\r\n\r\n public getMapTreeDicts(): Promise<any> {\r\n return dictLocalForageService.getItem(DictStore.MAP_TREE_DICTS);\r\n }\r\n\r\n /*字典版本存储*/\r\n public setVersion(value: string) {\r\n dictLocalForageService.setItem(DictStore.VERSION, value);\r\n }\r\n\r\n public getVersion(): Promise<any> {\r\n return dictLocalForageService.getItem(DictStore.VERSION);\r\n }\r\n}\r\nconst dictStore = new DictStore();\r\nexport { dictStore };\r\n","const DEFAULT_FORM_FILE_NAME = \"form-design.json\";\r\nconst DEFAULT_DICT_FILE_NAME = \"dict.json\";\r\nconst DEFAULT_DICT_URL = \"./resources/json/\" + DEFAULT_DICT_FILE_NAME;\r\nexport { DEFAULT_FORM_FILE_NAME, DEFAULT_DICT_FILE_NAME, DEFAULT_DICT_URL };\r\n","interface Params {\r\n [key: string]: any;\r\n}\r\nexport class RouterService {\r\n constructor() {}\r\n\r\n /**\r\n * @description: 跨应用跳转\r\n * @author ChenRui\r\n * @date 2020/9/28 14:23\r\n */\r\n push(subapp: string): void {\r\n history.pushState(null, subapp, subapp);\r\n }\r\n\r\n /**\r\n * @description: 获取纯路劲\r\n * @author ChenRui\r\n * @date 2020/10/12 21:06\r\n */\r\n getPathFromUrl(url: string): string {\r\n let path = url;\r\n if (url.indexOf(\"?\") !== -1) {\r\n path = url.split(\"?\")[0];\r\n }\r\n return path;\r\n }\r\n\r\n /**\r\n * @description: 获取请求参数\r\n * @author ChenRui\r\n * @date 2020/10/12 21:06\r\n */\r\n getParamsFromUrl(url: string): Params | undefined {\r\n let parameter: Params | undefined;\r\n if (url.indexOf(\"?\") !== -1) {\r\n parameter = this.urlParameterToParams(url.split(\"?\")[1]);\r\n }\r\n return parameter;\r\n }\r\n\r\n /**\r\n * @description: url地址参数转换成路由参数对象\r\n * @author ChenRui\r\n * @date 2020/10/12 21:07\r\n */\r\n urlParameterToParams(parameter: string): Params | undefined {\r\n const params: Params = {};\r\n const arr: string[] = parameter.split(\"&\");\r\n arr.forEach((val, idx, array) => {\r\n const kv: string[] = val.split(\"=\");\r\n if (kv.length > 1) {\r\n params[kv[0]] = decodeURIComponent(kv[1]);\r\n } else {\r\n params[kv[0]] = \"\";\r\n }\r\n });\r\n return params;\r\n }\r\n\r\n /**\r\n * @description: 地址参数拼接\r\n * @author ChenRui\r\n * @date 2021/2/19 11:40\r\n */\r\n getParameterOfUrl(url: string, parameter?: { [key: string]: any }): string {\r\n let connectiveSymbol = \"\";\r\n if (url.indexOf(\"?\") !== -1) {\r\n connectiveSymbol = \"&\";\r\n } else {\r\n connectiveSymbol = \"?\";\r\n }\r\n if (parameter && Object.keys(parameter).length > 0) {\r\n let mark = 0;\r\n Object.keys(parameter).forEach((item) => {\r\n if (mark === 0) {\r\n if (parameter[item] != null && parameter[item] !== \"null\" && parameter[item] !== \"undefined\") {\r\n url += connectiveSymbol + item + \"=\" + parameter[item];\r\n } else {\r\n url += connectiveSymbol + item + \"=\";\r\n }\r\n } else {\r\n if (parameter[item] != null && parameter[item] !== \"null\" && parameter[item] !== \"undefined\") {\r\n url += \"&\" + item + \"=\" + parameter[item];\r\n } else {\r\n url += \"&\" + item + \"=\";\r\n }\r\n }\r\n mark++;\r\n });\r\n }\r\n return url;\r\n }\r\n}\r\nconst routerService: RouterService = new RouterService();\r\nexport { routerService, Params };\r\n","import { FormApi } from \"../core/FormApi\";\r\nimport { ValidateReport } from \"../domain/FormControl\";\r\nimport { Modal } from \"ant-design-vue\";\r\nimport { FORM_ERROR_MODAL_SVG_XML } from \"../constants/encode-assets/svg\";\r\nimport { h, createVNode } from \"vue\";\r\n/**\r\n * @description: 表单校验窗口提示\r\n * @author ChenRui\r\n * @date 2021/8/19 12:58\r\n */\r\nclass FormValidateService {\r\n /**\r\n * @description: 校验并进行窗口提示\r\n * @author ChenRui\r\n * @date 2021/8/19 12:58\r\n */\r\n validateTips(formApis: FormApi | FormApi[], scrollView?: any): boolean {\r\n if (formApis != null) {\r\n if (!Array.isArray(formApis)) {\r\n formApis = [formApis];\r\n }\r\n const actualFormApis: FormApi[] = [];\r\n let allError: ValidateReport[] = [];\r\n let errMessage = \"\";\r\n formApis.forEach((formApi) => {\r\n const errors: ValidateReport[] = formApi.validateReport(); // 获取校验报告\r\n if (errors && errors.length > 0) {\r\n actualFormApis.push(formApi);\r\n allError = allError.concat(errors);\r\n }\r\n });\r\n if (allError && allError.length > 0) {\r\n // 显示错误的输入框\r\n allError.forEach((err) => {\r\n console.log(err);\r\n errMessage += `<div class=\"lo-error-item d-flex\"><div class=\"lo-error-describe\">${err.name}</div>&nbsp;${err.errorMsg};</div>`;\r\n });\r\n\r\n Modal.confirm({\r\n width: 380,\r\n title: h(\"div\", { class: \"d-flex\", innerHTML: `<img src=\"${FORM_ERROR_MODAL_SVG_XML}\" /><div style=\"font-size: 18px\">校验提示</div>` }),\r\n content: h(\"div\", { innerHTML: errMessage }),\r\n onOk: () => {\r\n this.showErrorModal(actualFormApis as any, allError, scrollView);\r\n },\r\n okText: \"确认\",\r\n cancelText: \"取消\",\r\n class: \"lo-form-error-modal\",\r\n });\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * @Description: 滚动到错误位置-闪烁提示\r\n * @author LiuBo\r\n * @date 2021/2/25\r\n * @time 21:35\r\n */\r\n public showErrorModal(formApis: FormApi[], allError: ValidateReport[], scrollView?: any) {\r\n const errorEl: any = formApis[0]?.getControlEl(allError[0]?.key);\r\n if (errorEl != null) {\r\n if (scrollView && typeof scrollView === \"string\") {\r\n scrollView = document.getElementById(scrollView);\r\n }\r\n if (scrollView) {\r\n scrollView.scrollTo({ top: errorEl.offsetTop, behavior: \"smooth\" });\r\n const running = (event: any) => {\r\n const scrollTop = scrollView.window != null && scrollView.window === scrollView.window.window ? document.documentElement.scrollTop || document.body.scrollTop : scrollView.scrollTop;\r\n const calculationError = errorEl.offsetTop - scrollTop;\r\n if (calculationError > -20 && calculationError < 20) {\r\n scrollView.removeEventListener(\"scroll\", running);\r\n this.showErrInput(errorEl);\r\n }\r\n };\r\n scrollView.addEventListener(\"scroll\", running, false);\r\n } else {\r\n this.showErrInput(errorEl);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @Description: 闪烁显示校验不通过的输入框\r\n * @author LiuBo\r\n * @date 2019/6/3\r\n * @time 22:01\r\n * @param el 出错的输入框html对象\r\n */\r\n private showErrInput(el: any) {\r\n let count = 0;\r\n const interval = setInterval(() => {\r\n el.style.opacity = count++ % 2 === 0 ? \".3\" : \"1\";\r\n if (count > 5) {\r\n clearInterval(interval);\r\n }\r\n }, 400);\r\n }\r\n}\r\nconst formValidateService = new FormValidateService();\r\nexport { formValidateService };\r\n","import { FormConfig } from \"../domain/FormConfig\";\r\nimport { FormRestfulResponse } from \"../domain/FormRestfulResponse\";\r\nimport { DesForm } from \"../domain/DesForm\";\r\nimport { DesFormControl } from \"../domain/DesFormControl\";\r\nimport { DesFormLayout } from \"../domain/DesFormLayout\";\r\nimport { FormFieldClass } from \"../constants/enum/form-field-class.enum\";\r\nimport { Control } from \"../domain/Control\";\r\nimport { FormFieldType } from \"../constants/enum/form-field-type.enum\";\r\nimport { Switch } from \"../constants/enum/switch.enum\";\r\nimport { formTreeNodeConvertService, MapNodeOptions, NodeContrast, NzNodeContrast, NzTreeNodeOptions } from \"./form-tree-node-convert.service\";\r\nimport { formBeanUtilsService } from \"./form-bean-utils.service\";\r\nimport { apiService } from \"./api.service\";\r\nimport { formStore } from \"../store/form.store\";\r\nimport { DynamicOptionType } from \"../constants/enum/dynamic-option-type.enum\";\r\nimport { dictStore } from \"../store\";\r\nimport { SysDictInfo } from \"../domain/SysDictInfo\";\r\nimport { DEFAULT_DICT_URL, DEFAULT_FORM_FILE_NAME } from \"../constants/config/form.config\";\r\nimport { CacheType } from \"../constants/enum/cache-type.enum\";\r\nimport { routerService } from \"./router.service\";\r\nimport { FormApi } from \"../core/FormApi\";\r\nimport { formValidateService } from \"./form-validate.service\";\r\n\r\ninterface DictionaryFormatCollection {\r\n sysDictDetailOptions?: NzTreeNodeOptions[];\r\n sysDictTreeDetailOptions?: NzTreeNodeOptions[];\r\n mapSysDictDetailOptions?: MapNodeOptions;\r\n mapSysDictTreeDetailOptions?: MapNodeOptions;\r\n}\r\n\r\nclass FormToolsService {\r\n private static readonly LOAD_SUCCESS = { code: 1, msg: \"加载成功\" }; // 操作成功提示\r\n private static readonly LOAD_FAIL = { code: 1, msg: \"加载失败\" }; // 操作失败提示\r\n private static IS_FIRST_LOADED = false; // 是否经过首次初始化\r\n private nodeContrast: NodeContrast = { id: \"layoutId\", parentId: \"parentLayoutId\", children: \"subDesFormLayout\" };\r\n private dictDetailsContrast: NodeContrast = { id: \"dicEntryPk\", parentId: \"suprDicPk\", children: \"children\" };\r\n private nzDictDetailsContrastContrast: NzNodeContrast = { key: \"dicEntryPk\", title: \"dicValue\", children: \"children\", value: \"dicKey\" };\r\n private dictTreeDetailsContrast: NodeContrast = { id: \"dicEntryPk\", parentId: \"suprDicPk\", children: \"children\" };\r\n private nzDictTreeDetailsContrastContrast: NzNodeContrast = { key: \"dicEntryPk\", title: \"dicValue\", children: \"children\", value: \"dicKey\" };\r\n private desForms: DesForm[] = []; // 表单配置缓存\r\n\r\n sysDictDetailOptions: NzTreeNodeOptions[] = [];\r\n sysDictTreeDetailOptions: NzTreeNodeOptions[] = [];\r\n mapSysDictDetailOptions: MapNodeOptions | undefined;\r\n mapSysDictTreeDetailOptions: MapNodeOptions | undefined;\r\n\r\n supHoliday?: boolean = false; // 节假日支持\r\n\r\n constructor() {}\r\n\r\n get formConfig(): Partial<FormConfig> {\r\n if ((window as any).$app.config.globalProperties.$qlForm != null) {\r\n return (window as any).$app.config.globalProperties.$qlForm;\r\n }\r\n return {};\r\n }\r\n\r\n setSupHoliday(bool: boolean) {\r\n this.supHoliday = bool;\r\n }\r\n\r\n setFormDisabledColor(color = \"#f0f0f0\") {\r\n document.body.style.setProperty(\"--lo-form-disabled\", color);\r\n }\r\n\r\n /**\r\n * @description: 检查是否经过首次初始化并初始化\r\n * @author ChenRui\r\n * @date 2021/1/5 23:04\r\n */\r\n checkFirstLoadAndInitDesign(): Promise<FormRestfulResponse> {\r\n if (FormToolsService.IS_FIRST_LOADED) {\r\n return Promise.resolve({\r\n code: 1,\r\n msg: \"检查到已经过首次加载,不在执行加载逻辑\",\r\n });\r\n } else {\r\n return this.init().then((res: FormRestfulResponse) => {\r\n FormToolsService.IS_FIRST_LOADED = true;\r\n return res;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @description: 初始化\r\n * @author ChenRui\r\n * @date 2021/3/12 11:02\r\n */\r\n init(): Promise<FormRestfulResponse> {\r\n return Promise.all([this.initDesign(), this.initDict(), this.selectHolidays()]).then(([designRes, dictRes]: any) => {\r\n const code = designRes.code === 1 && dictRes.code === 1 ? 1 : 0;\r\n return { code, msg: designRes.msg + \"; \" + dictRes.msg };\r\n });\r\n }\r\n\r\n /**\r\n * @Description 初始化节假日数据\r\n * @Author JiangTao\r\n * @Date 2024-04-16 下午 04:11\r\n */\r\n selectHolidays(): Promise<FormRestfulResponse> {\r\n if (this.formConfig.url && this.supHoliday) {\r\n const url = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/basic-form-weekday/query-all-by-year\";\r\n return this.fetch(url, {}, undefined, \"POST\").then((res: FormRestfulResponse) => {\r\n if (res != null && (res.code === 1 || String(res.code) === String(200))) {\r\n if (res.data != null) {\r\n localStorage.setItem(\"traddayList\", JSON.stringify(res.data.traddayList)); // 交易日集合\r\n localStorage.setItem(\"weekdayList\", JSON.stringify(res.data.weekdayList)); // 节假日集合\r\n localStorage.setItem(\"workdayList\", JSON.stringify(res.data.workdayList)); // 工作日集合\r\n }\r\n }\r\n return Promise.resolve(FormToolsService.LOAD_SUCCESS);\r\n });\r\n }\r\n return Promise.resolve(FormToolsService.LOAD_SUCCESS);\r\n }\r\n\r\n /**\r\n * @description: 初始化表单设计\r\n * @author ChenRui\r\n * @date 2020/11/20 10:55\r\n */\r\n initDesign(): Promise<FormRestfulResponse> {\r\n return Promise.all([formStore.getForms(), formStore.getVersion()]).then(([forms, formVersion]: any[]) => {\r\n if (this.formConfig.loadMode === \"static\") {\r\n if (forms != null) {\r\n this.desForms = forms;\r\n return Promise.resolve(FormToolsService.LOAD_SUCCESS);\r\n } else {\r\n return this.loadDesign([this.formConfig.url || DEFAULT_FORM_FILE_NAME]);\r\n }\r\n } else if (this.formConfig.loadMode === \"dynamic\") {\r\n if (this.formConfig.appId != null && this.formConfig.appId !== \"\") {\r\n const query = {\r\n appId: this.formConfig.appId,\r\n cacheType: CacheType.FORM.code,\r\n };\r\n const url = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/query-cacheversion-by-appid-cachetype\";\r\n return this.fetch(url!, query).then((res: FormRestfulResponse) => {\r\n if (res != null && res.code === 1) {\r\n if (res.data != null && res.data.desCacheVersion != null) {\r\n if (String(formVersion) !== String(res.data.desCacheVersion.cacheVersionNumber)) {\r\n const formUrl = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/download?storageAddress=\" + res.data.desCacheVersion.storageAddress;\r\n return this.loadDesign([formUrl]).then((resEx: FormRestfulResponse) => {\r\n if (resEx.code === 1) {\r\n formStore.setVersion(res.data.desCacheVersion.cacheVersionNumber);\r\n }\r\n return resEx;\r\n });\r\n } else {\r\n if (forms != null) {\r\n this.desForms = forms;\r\n }\r\n console.log(this.desForms);\r\n return Promise.resolve(FormToolsService.LOAD_SUCCESS);\r\n }\r\n } else {\r\n return Promise.resolve({ code: 1, msg: \"暂无版本数据\" });\r\n }\r\n } else {\r\n return Promise.resolve(FormToolsService.LOAD_FAIL);\r\n }\r\n });\r\n } else {\r\n return Promise.resolve({\r\n code: 0,\r\n msg: \"动态加载需指定当前系统编号(appId)\",\r\n });\r\n }\r\n } else if (this.formConfig.loadMode === \"merge\") {\r\n if (this.formConfig.urls) {\r\n return new Promise((resolve) => {\r\n this.loadDesign(this.formConfig.urls || []).then(() => {\r\n resolve(FormToolsService.LOAD_SUCCESS);\r\n });\r\n });\r\n } else {\r\n return this.mergeUrlByType(CacheType.FORM.code).then((response: any) => {\r\n if (formVersion === response.cacheVersionNumber) {\r\n if (forms) {\r\n this.desForms = forms;\r\n }\r\n return Promise.resolve(FormToolsService.LOAD_SUCCESS);\r\n } else {\r\n return new Promise((resolve) => {\r\n this.loadDesign(response.storageAddress).then(() => {\r\n formStore.setVersion(response.cacheVersionNumber);\r\n resolve(FormToolsService.LOAD_SUCCESS);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n } else if (this.formConfig.loadMode === \"merge_cacheId\") {\r\n // 按照缓存编号查询表单数据,2024年8月15日14:03:24\r\n return this.mergeUrlByCacheId(CacheType.FORM.code).then((response: any) => {\r\n if (formVersion === response.cacheVersionNumber) {\r\n if (forms) {\r\n this.desForms = forms;\r\n }\r\n return Promise.resolve(FormToolsService.LOAD_SUCCESS);\r\n } else {\r\n return new Promise((resolve) => {\r\n this.loadDesign(response.storageAddress).then(() => {\r\n formStore.setVersion(response.cacheVersionNumber);\r\n resolve(FormToolsService.LOAD_SUCCESS);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n return Promise.resolve(FormToolsService.LOAD_FAIL);\r\n });\r\n }\r\n\r\n /**\r\n * @description: 获取表单或字典数据地址\r\n * @author ZPFly\r\n * @date 2022/10/18 20:43\r\n */\r\n private mergeUrlByType(type: string): Promise<any> {\r\n const url = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/query-batch-appids-cachetype\";\r\n const downloadUrl = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/download?storageAddress=\";\r\n const query = {\r\n appIds: this.formConfig.appId,\r\n cacheType: type,\r\n };\r\n return this.fetch(url!, query).then((resp: any) => {\r\n const response: any = {};\r\n const address: string[] = [];\r\n const cacheVersionNumber: any[] = [];\r\n const cacheVersionMap: any = {};\r\n resp?.data?.forEach((item: any) => {\r\n // 数据下载地址\r\n if (item.cacheType == type && item.desCacheVersion?.storageAddress && query.appIds && query.appIds.indexOf(item.appId) > -1) {\r\n cacheVersionMap[item.appId] = item.desCacheVersion.cacheVersionNumber;\r\n address.push(downloadUrl + item.desCacheVersion.storageAddress);\r\n }\r\n });\r\n query.appIds?.split(\",\").forEach((appId) => {\r\n cacheVersionNumber.push(cacheVersionMap[appId]);\r\n });\r\n response.cacheVersionNumber = cacheVersionNumber.join(\",\");\r\n response.storageAddress = address;\r\n return response;\r\n });\r\n }\r\n /**\r\n * @description: 获取表单或字典数据地址-按照缓存版本号查询字典/表单\r\n * @author ZPFly\r\n * @date 2022/10/18 20:43\r\n */\r\n private mergeUrlByCacheId(type: string): Promise<any> {\r\n const url = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/query-batch-appids-cachetype\";\r\n const downloadUrl = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/downloadById?cacheVersionId=\";\r\n const query = {\r\n appIds: this.formConfig.appId,\r\n cacheType: type,\r\n };\r\n const appIds: string[] = query.appIds?.split(\",\") || [];\r\n return this.fetch(url!, query).then((resp: any) => {\r\n const response: any = {};\r\n const address: string[] = [];\r\n const cacheVersionNumber: any[] = [];\r\n const cacheVersionMap: any = {};\r\n resp?.data?.forEach((item: any) => {\r\n // 数据下载地址\r\n if (item.cacheType == type && item.desCacheVersion?.cacheVersionId && query.appIds && appIds.indexOf(item.appId) > -1) {\r\n cacheVersionMap[item.appId] = item.desCacheVersion.cacheVersionNumber;\r\n address.push(downloadUrl + item.desCacheVersion.cacheVersionId + \"&appId=\" + item.appId + \"&cacheType=\" + type);\r\n }\r\n });\r\n query.appIds?.split(\",\").forEach((appId) => {\r\n cacheVersionNumber.push(cacheVersionMap[appId]);\r\n });\r\n response.cacheVersionNumber = cacheVersionNumber.join(\",\");\r\n response.storageAddress = address;\r\n return response;\r\n });\r\n }\r\n\r\n /**\r\n * @description: 加载远程表单配置\r\n * @author ChenRui\r\n * @date 2020/11/20 17:30\r\n */\r\n private loadDesign(urls: string[]): Promise<FormRestfulResponse> {\r\n return this.mergeFetchDesign(urls).then((desForms: DesForm[]) => {\r\n const newDesForms: DesForm[] = [];\r\n if (desForms != null && desForms.length > 0) {\r\n desForms\r\n .filter((item) => item.desFormLayouts != null && item.desFormLayouts.length > 0)\r\n .forEach((item) => {\r\n const newDesForm: DesForm | undefined = this.formatDesForm(item);\r\n if (newDesForm != null) {\r\n newDesForms.push(newDesForm);\r\n }\r\n });\r\n }\r\n this.desForms = newDesForms;\r\n formStore.setForms(this.desForms);\r\n return FormToolsService.LOAD_SUCCESS;\r\n });\r\n }\r\n\r\n /**\r\n * @description: 合并多个应用表单\r\n * @author ZPFly\r\n * @date 2022/10/17 15:39\r\n */\r\n private mergeFetchDesign(urls: string[]) {\r\n const onlySimpleLoadConfig = !!this.formConfig.onlySimpleLoadConfig;\r\n const headers = this.createFileDownloadAuthorizationHeader();\r\n const fetches: any = [];\r\n urls.forEach((url: string) => {\r\n fetches.push(this.fetch(url, {}, undefined, \"GET\", headers, onlySimpleLoadConfig));\r\n });\r\n return Promise.all(fetches).then((desForms: DesForm[]) => {\r\n let newDesForms: DesForm[] = [];\r\n desForms?.forEach((desForm: any) => {\r\n newDesForms = newDesForms.concat(desForm);\r\n });\r\n return newDesForms;\r\n });\r\n }\r\n\r\n /**\r\n * @description: 初始化字典\r\n * @author ChenRui\r\n * @date 2021/3/11 14:32\r\n */\r\n initDict(): Promise<FormRestfulResponse> {\r\n return Promise.all([dictStore.getDicts(), dictStore.getTreeDicts(), dictStore.getMapDicts(), dictStore.getMapTreeDicts(), dictStore.getVersion()]).then(([dicts, treeDicts, mapDicts, mapTreeDicts, dictVersion]: any[]) => {\r\n if (this.formConfig.loadMode === \"static\") {\r\n const url = this.formConfig.dictUrl ? this.formConfig.dictUrl : DEFAULT_DICT_URL;\r\n if (dicts != null || treeDicts != null) {\r\n this.sysDictDetailOptions = dicts;\r\n this.sysDictTreeDetailOptions = treeDicts;\r\n this.mapSysDictDetailOptions = mapDicts;\r\n this.mapSysDictTreeDetailOptions = mapTreeDicts;\r\n return FormToolsService.LOAD_SUCCESS;\r\n } else {\r\n return this.loadDict([url]);\r\n }\r\n } else if (this.formConfig.loadMode === \"dynamic\") {\r\n if (this.formConfig.appId) {\r\n const url1 = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/query-cacheversion-by-appid-cachetype\";\r\n const url: string = this.formConfig.dictUrl ? this.formConfig.dictUrl : url1 || \"\";\r\n const path: string = routerService.getPathFromUrl(url);\r\n let query: any = routerService.getParamsFromUrl(url) || {};\r\n query.appId = query.appId ? query.appId : this.formConfig.appId;\r\n query.cacheType = query.cacheType ? query.cacheType : CacheType.DICT.code;\r\n query = this.formConfig.dictRestLoadOnlyBody ? {} : query;\r\n const body: any = (this.formConfig.dictRestLoadMode || \"GET\").toLocaleUpperCase() === \"GET\" ? undefined : this.formConfig.dictRestLoadBody;\r\n let headers: any = this.formConfig.dictRestLoadHeaders;\r\n if (headers != null && typeof headers === \"function\") {\r\n headers = (headers as any)();\r\n }\r\n return this.fetch(path, query, body, this.formConfig.dictRestLoadMode, headers).then((res: FormRestfulResponse) => {\r\n if (res != null && (res.code === 1 || String(res.code) === String(200))) {\r\n if (res.data != null) {\r\n let desCacheVersion: any = res.data.desCacheVersion;\r\n if (res.data && res.data instanceof Array && res.data.length > 0) {\r\n desCacheVersion = res.data[0].desCacheVersion;\r\n }\r\n const distUrl = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/download?storageAddress=\" + desCacheVersion.storageAddress;\r\n if (String(dictVersion) !== String(desCacheVersion.cacheVersionNumber)) {\r\n return this.loadDict([distUrl]).then((resEx: FormRestfulResponse) => {\r\n if (resEx.code === 1) {\r\n dictStore.setVersion(desCacheVersion.cacheVersionNumber);\r\n }\r\n return resEx;\r\n });\r\n } else {\r\n if (dicts != null || treeDicts != null) {\r\n this.sysDictDetailOptions = dicts;\r\n this.sysDictTreeDetailOptions = treeDicts;\r\n this.mapSysDictDetailOptions = mapDicts;\r\n this.mapSysDictTreeDetailOptions = mapTreeDicts;\r\n }\r\n return FormToolsService.LOAD_SUCCESS;\r\n }\r\n } else {\r\n return { code: 1, msg: \"暂无版本数据\" };\r\n }\r\n } else {\r\n return FormToolsService.LOAD_FAIL;\r\n }\r\n });\r\n } else {\r\n return { code: 0, msg: \"动态加载需指定当前系统编号(appId)\" };\r\n }\r\n } else if (this.formConfig.loadMode === \"merge\") {\r\n return this.mergeUrlByType(CacheType.DICT.code).then((response: any) => {\r\n if (dictVersion === response.cacheVersionNumber) {\r\n if (dicts != null || treeDicts != null) {\r\n this.sysDictDetailOptions = dicts;\r\n this.sysDictTreeDetailOptions = treeDicts;\r\n this.mapSysDictDetailOptions = mapDicts;\r\n this.mapSysDictTreeDetailOptions = mapTreeDicts;\r\n }\r\n return FormToolsService.LOAD_SUCCESS;\r\n } else {\r\n return new Promise((resolve) => {\r\n this.loadDict(response.storageAddress).then(() => {\r\n dictStore.setVersion(response.cacheVersionNumber);\r\n resolve(FormToolsService.LOAD_SUCCESS);\r\n });\r\n });\r\n }\r\n });\r\n } else if (this.formConfig.loadMode === \"merge_cacheId\") {\r\n // 按照缓存编号查询表单数据,2024年8月15日14:03:24\r\n return this.mergeUrlByCacheId(CacheType.DICT.code).then((response: any) => {\r\n if (dictVersion === response.cacheVersionNumber) {\r\n if (dicts != null || treeDicts != null) {\r\n this.sysDictDetailOptions = dicts;\r\n this.sysDictTreeDetailOptions = treeDicts;\r\n this.mapSysDictDetailOptions = mapDicts;\r\n this.mapSysDictTreeDetailOptions = mapTreeDicts;\r\n }\r\n return FormToolsService.LOAD_SUCCESS;\r\n } else {\r\n return new Promise((resolve) => {\r\n this.loadDict(response.storageAddress).then(() => {\r\n dictStore.setVersion(response.cacheVersionNumber);\r\n resolve(FormToolsService.LOAD_SUCCESS);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n return FormToolsService.LOAD_FAIL;\r\n });\r\n }\r\n\r\n /**\r\n * @description: 加载远程字典配置\r\n * @author ChenRui\r\n * @date 2020/11/20 17:30\r\n */\r\n private loadDict(urls: string[]): Promise<FormRestfulResponse> {\r\n return this.mergeFetchDict(urls).then((sysDictInfos: any) => {\r\n if (sysDictInfos != null) {\r\n // 数据格式化\r\n const dictionaryFormatCollection: DictionaryFormatCollection = this.inidDictOptions(sysDictInfos);\r\n this.sysDictDetailOptions = dictionaryFormatCollection.sysDictDetailOptions || [];\r\n this.sysDictTreeDetailOptions = dictionaryFormatCollection.sysDictTreeDetailOptions || [];\r\n this.mapSysDictDetailOptions = dictionaryFormatCollection.mapSysDictDetailOptions;\r\n this.mapSysDictTreeDetailOptions = dictionaryFormatCollection.mapSysDictTreeDetailOptions;\r\n // 字典本地存储\r\n if (dictionaryFormatCollection.sysDictDetailOptions && dictionaryFormatCollection.sysDictDetailOptions.length > 0) {\r\n dictStore.setDicts(dictionaryFormatCollection.sysDictDetailOptions);\r\n }\r\n if (dictionaryFormatCollection.sysDictTreeDetailOptions && dictionaryFormatCollection.sysDictTreeDetailOptions.length > 0) {\r\n dictStore.setTreeDicts(dictionaryFormatCollection.sysDictTreeDetailOptions);\r\n }\r\n dictStore.setMapDicts(dictionaryFormatCollection.mapSysDictDetailOptions || null);\r\n dictStore.setMapTreeDicts(dictionaryFormatCollection.mapSysDictTreeDetailOptions || null);\r\n }\r\n return FormToolsService.LOAD_SUCCESS;\r\n });\r\n // const onlySimpleLoadConfig = !!this.formConfig.onlySimpleLoadConfig;\r\n // let sysDictInfos: SysDictInfo[] = [];\r\n // if (loadMode === \"dynamic\") {\r\n // const headers = this.createFileDownloadAuthorizationHeader();\r\n // url = this.formConfig.url + \"/ms-loong/api/v1/des-cache-info/permit_endpoint/download?storageAddress=\" + url;\r\n // return this.fetch(url, {}, undefined, \"GET\", headers, onlySimpleLoadConfig).then((res: any) => {\r\n // sysDictInfos = res;\r\n // if (sysDictInfos != null && sysDictInfos.length > 0) {\r\n // // 数据格式化\r\n // const dictionaryFormatCollection: DictionaryFormatCollection = this.inidDictOptions(sysDictInfos);\r\n // this.sysDictDetailOptions = dictionaryFormatCollection.sysDictDetailOptions || [];\r\n // this.sysDictTreeDetailOptions = dictionaryFormatCollection.sysDictTreeDetailOptions || [];\r\n // this.mapSysDictDetailOptions = dictionaryFormatCollection.mapSysDictDetailOptions;\r\n // this.mapSysDictTreeDetailOptions = dictionaryFormatCollection.mapSysDictTreeDetailOptions;\r\n // // 字典本地存储\r\n // if (dictionaryFormatCollection.sysDictDetailOptions && dictionaryFormatCollection.sysDictDetailOptions.length > 0) {\r\n // dictStore.setDicts(dictionaryFormatCollection.sysDictDetailOptions);\r\n // }\r\n // if (dictionaryFormatCollection.sysDictTreeDetailOptions && dictionaryFormatCollection.sysDictTreeDetailOptions.length > 0) {\r\n // dictStore.setTreeDicts(dictionaryFormatCollection.sysDictTreeDetailOptions);\r\n // }\r\n // dictStore.setMapDicts(dictionaryFormatCollection.mapSysDictDetailOptions || null);\r\n // dictStore.setMapTreeDicts(dictionaryFormatCollection.mapSysDictTreeDetailOptions || null);\r\n // }\r\n // return FormToolsService.LOAD_SUCCESS;\r\n // });\r\n // }\r\n }\r\n\r\n /**\r\n * @description: 合并多个应用字典\r\n * @author ZPFly\r\n * @date 2022/10/17 15:39\r\n */\r\n private mergeFetchDict(dictUrl: string[]) {\r\n const fetchDicts: any = [];\r\n dictUrl.forEach((url: string) => {\r\n fetchDicts.push(this.fetch(url, {}, undefined, \"GET\", undefined, !!this.formConfig.onlySimpleLoadConfig));\r\n });\r\n return Promise.all(fetchDicts).then((dictInfos: SysDictInfo[]) => {\r\n let newDictInfos: SysDictInfo[] = [];\r\n const empObj: any = {};\r\n const filterDist: SysDictInfo[] = [];\r\n dictInfos?.forEach((desForm: any) => {\r\n newDictInfos = newDictInfos.concat(desForm);\r\n });\r\n // 去除重复字典\r\n newDictInfos.forEach((item: SysDictInfo) => {\r\n if (!empObj[item.dictId]) {\r\n filterDist.push(item);\r\n empObj[item.dictId] = true;\r\n }\r\n });\r\n return filterDist;\r\n });\r\n }\r\n /**\r\n * @description: 初始化字典可选项\r\n * @author ChenRui\r\n * @date 2020/11/10 20:38\r\n */\r\n public inidDictOptions(sysDictInfos: SysDictInfo[]): DictionaryFormatCollection {\r\n const sysDictDetailOptions: NzTreeNodeOptions[] = [];\r\n const sysDictTreeDetailOptions: NzTreeNodeOptions[] = [];\r\n sysDictInfos.forEach((sysDictInfo) => {\r\n const node: NzTreeNodeOptions = {\r\n key: sysDictInfo.dictId,\r\n value: sysDictInfo.dictCd,\r\n title: sysDictInfo.dictNm,\r\n isLeaf: true,\r\n expanded: false,\r\n children: [],\r\n };\r\n if (sysDictInfo.dictTp === DynamicOptionType.GeneralDictionary.code) {\r\n node.isLeaf = false;\r\n node.children = formTreeNodeConvertService.arrayConvertToNzTreeNode(\r\n sysDictInfo.comDictKeyValues.filter((it) => !!it.dictId),\r\n this.dictDetailsContrast,\r\n this.nzDictDetailsContrastContrast,\r\n true\r\n );\r\n sysDictDetailOptions.push(node);\r\n } else if (sysDictInfo.dictTp === DynamicOptionType.TreeDictionary.code) {\r\n if (sysDictInfo.treeDictKeyValues != null && sysDictInfo.treeDictKeyValues.length > 0) {\r\n node.isLeaf = false;\r\n sysDictInfo.treeDictKeyValues.forEach((item) => {\r\n if (item.suprDicPk === \"0\") {\r\n item.suprDicPk = \"\";\r\n }\r\n });\r\n node.children = formTreeNodeConvertService.arrayConvertToNzTreeNode(\r\n sysDictInfo.treeDictKeyValues.filter((it) => !!it.dictId),\r\n this.dictTreeDetailsContrast,\r\n this.nzDictTreeDetailsContrastContrast,\r\n true\r\n );\r\n }\r\n sysDictTreeDetailOptions.push(node);\r\n }\r\n });\r\n const mapNodeOptions: MapNodeOptions | undefined = formTreeNodeConvertService.nzTreeNodeConvertToMap(sysDictDetailOptions);\r\n const mapTreeNodeOptions: MapNodeOptions | undefined = formTreeNodeConvertService.nzTreeNodeConvertToMap(sysDictTreeDetailOptions);\r\n return {\r\n sysDictDetailOptions: sysDictDetailOptions,\r\n sysDictTreeDetailOptions: sysDictTreeDetailOptions,\r\n mapSysDictDetailOptions: mapNodeOptions,\r\n mapSysDictTreeDetailOptions: mapTreeNodeOptions,\r\n };\r\n }\r\n\r\n /**\r\n * @description: 格式化表单\r\n * @author ChenRui\r\n * @date 2020/11/30 15:48\r\n */\r\n formatDesForm(sourceDesForm: DesForm): DesForm | undefined {\r\n if (sourceDesForm != null) {\r\n const newDesForm: DesForm = new DesForm(sourceDesForm);\r\n const desFormLayouts: DesFormLayout[] = formTreeNodeConvertService.arrayConvertToTreeNode(sourceDesForm.desFormLayouts, this.nodeContrast);\r\n const controls = this.recursionFormatForm([], desFormLayouts);\r\n this.sortControls(controls);\r\n newDesForm.desFormLayouts = [];\r\n newDesForm.controls = controls;\r\n return newDesForm;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 递归格式化\r\n * @author ChenRui\r\n * @date 2020/11/17 10:16\r\n */\r\n private recursionFormatForm(desFormControls: DesFormControl[], desFormLayouts: DesFormLayout[]): Control[] {\r\n const controls: Control[] = [];\r\n if (desFormControls != null && desFormControls.length > 0) {\r\n desFormControls\r\n .filter((item) => !!item.formFieldId)\r\n .forEach((desFormControl) => {\r\n const control: Control = {\r\n code: desFormControl.controlType,\r\n name: (Object.values(FormFieldType).find((item) => item.code === desFormControl.controlType) || {}).name || \"\",\r\n type: Number(desFormControl.controlType) < 50 ? FormFieldClass.Base.code : FormFieldClass.Senior.code,\r\n active: false,\r\n subControls: undefined,\r\n controlAttr: desFormControl,\r\n };\r\n const controlAttr = control.controlAttr as DesFormControl;\r\n controlAttr.isBoldTitle = desFormControl.isBoldTitle === Switch.Enable.code;\r\n controlAttr.isHideTitle = desFormControl.isHideTitle === Switch.Enable.code;\r\n controlAttr.isNotEdit = desFormControl.isNotEdit === Switch.Enable.code;\r\n controlAttr.isShowHoliday = desFormControl.isShowHoliday === Switch.Enable.code;\r\n controlAttr.isHideControl = desFormControl.isHideControl === Switch.Enable.code;\r\n controlAttr.isPasswordBox = desFormControl.isPasswordBox === Switch.Enable.code;\r\n controlAttr.enableAutoComplete = desFormControl.enableAutoComplete === Switch.Enable.code;\r\n controlAttr.isFixedRowHeight = desFormControl.isFixedRowHeight === Switch.Enable.code;\r\n controlAttr.thousandthPercentileFormat = desFormControl.thousandthPercentileFormat === Switch.Enable.code;\r\n controlAttr.isShowCapitalization = desFormControl.isShowCapitalization === Switch.Enable.code;\r\n controlAttr.isLineFeedDisplay = desFormControl.isLineFeedDisplay === Switch.Enable.code;\r\n controlAttr.optionConfig = formBeanUtilsService.parse(desFormControl.optionConfig);\r\n controlAttr.generalDictionaryOptions = formBeanUtilsService.parse(desFormControl.generalDictionaryOptions);\r\n controlAttr.treeShapeOptions = formBeanUtilsService.parse(desFormControl.treeShapeOptions);\r\n controlAttr.isSupportMultiple = desFormControl.isSupportMultiple === Switch.Enable.code;\r\n if (Array.isArray(desFormControl.customUploadType) && desFormControl.customUploadType.length > 0) {\r\n controlAttr.customUploadType = desFormControl.customUploadType.join(\",\");\r\n }\r\n controlAttr.isMultipleChoice = desFormControl.isMultipleChoice === Switch.Enable.code;\r\n controlAttr.isSearchable = desFormControl.isSearchable === Switch.Enable.code;\r\n controlAttr.canAddEntry = desFormControl.canAddEntry === Switch.Enable.code;\r\n controlAttr.isClearButton = desFormControl.isClearButton === Switch.Enable.code;\r\n controlAttr.hiddenDropdown = desFormControl.hiddenDropdown === Switch.Enable.code;\r\n controlAttr.textFold = desFormControl.textFold === Switch.Enable.code;\r\n controlAttr.verificationRules = formBeanUtilsService.parse(desFormControl.verificationRules);\r\n controlAttr.isDesensitize = desFormControl.isDesensitize === Switch.Enable.code; // 是否脱敏2026年5月13日 15:43:17\r\n controls.push(control);\r\n });\r\n }\r\n if (desFormLayouts != null && desFormLayouts.length > 0) {\r\n desFormLayouts\r\n .filter((item) => !!item.layoutId)\r\n .forEach((desFormLayout) => {\r\n const layoutControl: Control = {\r\n code: desFormLayout.layoutType,\r\n name: (Object.values(FormFieldType).find((item) => item.code === desFormLayout.layoutType) || {}).name || \"\",\r\n type: FormFieldClass.Layout.code,\r\n active: false,\r\n subControls: [],\r\n controlAttr: new DesFormLayout(desFormLayout),\r\n };\r\n const controlAttr = layoutControl.controlAttr as DesFormLayout;\r\n controlAttr.gridColumnConfig = formBeanUtilsService.parse(desFormLayout.gridColumnConfig);\r\n controlAttr.desFormControls = [];\r\n controlAttr.subDesFormLayout = [];\r\n if ((desFormLayout.subDesFormLayout != null && desFormLayout.subDesFormLayout.length > 0) || (desFormLayout.desFormControls != null && desFormLayout.desFormControls.length > 0)) {\r\n layoutControl.subControls = this.recursionFormatForm(desFormLayout.desFormControls, desFormLayout.subDesFormLayout);\r\n }\r\n controls.push(layoutControl);\r\n });\r\n }\r\n return controls;\r\n }\r\n\r\n /**\r\n * @description: 控件排序\r\n * @author ChenRui\r\n * @date 2020/11/17 11:59\r\n */\r\n private sortControls(controls: Control[]): void {\r\n controls.sort((controlA, controlB) => {\r\n let x = 0;\r\n let y = 0;\r\n if (controlA.type === FormFieldClass.Layout.code) {\r\n x = Number((controlA.controlAttr as DesFormLayout).layoutOrder);\r\n } else {\r\n x = Number((controlA.controlAttr as DesFormControl).tableFieldOrder);\r\n }\r\n if (controlB.type === FormFieldClass.Layout.code) {\r\n y = Number((controlB.controlAttr as DesFormLayout).layoutOrder);\r\n } else {\r\n y = Number((controlB.controlAttr as DesFormControl).tableFieldOrder);\r\n }\r\n return x - y;\r\n });\r\n controls.forEach((item) => {\r\n if (item.subControls != null && item.subControls.length > 0) {\r\n this.sortControls(item.subControls);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @description: 加载资源\r\n * @author ChenRui\r\n * @date 2020/11/23 11:00\r\n */\r\n loadResource(formId: string): DesForm {\r\n const desForm: DesForm | undefined = this.desForms.find((item) => item.formId === formId);\r\n if (desForm != null) {\r\n return formBeanUtilsService.copy(desForm);\r\n } else {\r\n return new DesForm({ formId: formId });\r\n }\r\n }\r\n\r\n initResource(formId: string): Promise<void | DesForm> {\r\n if (this.desForms.length === 0) {\r\n return new Promise((resolve, reject) => {\r\n Promise.all([dictStore.getDicts(), dictStore.getTreeDicts(), dictStore.getMapDicts(), dictStore.getMapTreeDicts(), formStore.getForms()]).then(([dicts, treeDicts, mapDicts, mapTreeDicts, forms]: any[]) => {\r\n this.desForms = forms;\r\n this.sysDictDetailOptions = dicts;\r\n this.sysDictTreeDetailOptions = treeDicts;\r\n this.mapSysDictDetailOptions = mapDicts;\r\n this.mapSysDictTreeDetailOptions = mapTreeDicts;\r\n const desForm: DesForm | undefined = this.desForms.find((item) => item.formId === formId);\r\n if (desForm != null) {\r\n resolve(formBeanUtilsService.copy(desForm));\r\n return formBeanUtilsService.copy(desForm);\r\n } else {\r\n reject(new DesForm({ formId: formId }));\r\n }\r\n });\r\n });\r\n } else {\r\n const desForm: DesForm | undefined = this.desForms.find((item) => item.formId === formId);\r\n if (desForm != null) {\r\n return Promise.resolve(formBeanUtilsService.copy(desForm));\r\n } else {\r\n return Promise.reject(new DesForm({ formId: formId }));\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: rest客户端\r\n * @author ChenRui\r\n * @date 2020/11/19 21:02\r\n */\r\n private fetch(path: string, params: { [key: string]: any }, body?: any, method = \"GET\", headers?: any, simple = false): Promise<any> {\r\n headers = headers ? headers : apiService.createBasicHeaders();\r\n return simple ? fetch(path).then((response) => response.json()) : apiService.fetch(path, params, body, method, headers);\r\n }\r\n\r\n /**\r\n * @description: 校验提示\r\n * @author ChenRui\r\n * @date 2021/8/18 17:14\r\n */\r\n validateTips(formApis: FormApi | FormApi[], scrollView?: any): boolean {\r\n return formValidateService.validateTips(formApis, scrollView);\r\n }\r\n\r\n /**\r\n * @description: 创建认证下载消息头\r\n * @author ChenRui\r\n * @date 2020/8/28 15:18\r\n */\r\n createFileDownloadAuthorizationHeader() {\r\n return {\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n responseType: \"blob\",\r\n };\r\n }\r\n}\r\nconst formToolsService: FormToolsService = new FormToolsService();\r\nexport { formToolsService, FormToolsService, DictionaryFormatCollection };\r\n","function transform(currencyDigits: any): any {\r\n // Constants:\r\n const MAXIMUM_NUMBER = 999999999999.99;\r\n // Predefine the radix characters and currency symbols for output:\r\n const CN_ZERO = \"零\";\r\n const CN_ONE = \"壹\";\r\n const CN_TWO = \"贰\";\r\n const CN_THREE = \"叁\";\r\n const CN_FOUR = \"肆\";\r\n const CN_FIVE = \"伍\";\r\n const CN_SIX = \"陆\";\r\n const CN_SEVEN = \"柒\";\r\n const CN_EIGHT = \"捌\";\r\n const CN_NINE = \"玖\";\r\n const CN_TEN = \"拾\";\r\n const CN_HUNDRED = \"佰\";\r\n const CN_THOUSAND = \"仟\";\r\n const CN_TEN_THOUSAND = \"万\";\r\n const CN_HUNDRED_MILLION = \"亿\";\r\n // 满足数字大写转换需求\r\n const CN_SYMBOL = \"\"; // 不带前缀【金额:】\r\n const CN_DOLLAR = \"\"; // 元\r\n const DROP = \"点\"; // 点 2023年8月31日10:51:25\r\n const CN_TEN_CENT = \"\"; // 角\r\n const CN_CENT = \"\"; // 分\r\n const CN_INTEGER = \"\"; // 整\r\n\r\n // constiables:\r\n let integral; // Represent integral part of digit number.\r\n let decimal; // Represent decimal part of digit number.\r\n let outputCharacters; // The output result.\r\n let parts = [];\r\n let digits = [],\r\n radices = [],\r\n bigRadices = [],\r\n decimals = [];\r\n let zeroCount;\r\n let i, p, d;\r\n let quotient, modulus;\r\n\r\n // Validate input string:\r\n currencyDigits = currencyDigits != undefined ? currencyDigits.toString() : \"\";\r\n\r\n let prefix = \"\";\r\n if (currencyDigits != null && currencyDigits.indexOf(\"-\") === 0) {\r\n prefix = \"负\";\r\n currencyDigits = currencyDigits.substr(1);\r\n }\r\n if (currencyDigits === \"\") {\r\n return \"空\"; // 默认提示\r\n }\r\n if (currencyDigits.match(/[^,.\\d]/) != null) {\r\n return \"您的输入含有无效字符\";\r\n }\r\n if (currencyDigits.match(/^((\\d{1,3}(,\\d{3})*(.((\\d{3},)*\\d{1,3}))?)|(\\d+(.\\d+)?))$/) == null) {\r\n return \"您的输入的数字格式不正确\";\r\n }\r\n\r\n // Normalize the format of input digits:\r\n currencyDigits = currencyDigits.replace(/,/g, \"\"); // Remove comma delimiters.\r\n currencyDigits = currencyDigits.replace(/^0+/, \"\"); // Trim zeros at the beginning.\r\n // Assert the number is not greater than the maximum number.\r\n if (Number(currencyDigits) > MAXIMUM_NUMBER) {\r\n let divisor = 1000000000000;\r\n if (currencyDigits.indexOf(\".\") > -1) {\r\n const num = currencyDigits.split(\".\")[1].length;\r\n for (let i = 0; i < num; i++) {\r\n divisor = divisor * 10;\r\n }\r\n currencyDigits = currencyDigits.replace(\".\", \"\");\r\n }\r\n return Number(currencyDigits) / Number(divisor) + \"万亿元\";\r\n }\r\n\r\n // Process the coversion from currency digits to characters:\r\n // Separate integral and decimal parts before processing coversion:\r\n parts = currencyDigits.split(\".\");\r\n if (parts.length > 1) {\r\n integral = parts[0];\r\n decimal = parts[1];\r\n // Cut down redundant decimal digits that are after the second.\r\n decimal = decimal.substr(0, 2);\r\n } else {\r\n integral = parts[0];\r\n decimal = \"\";\r\n }\r\n // Prepare the characters corresponding to the digits:\r\n digits = [CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT, CN_NINE];\r\n radices = [\"\", CN_TEN, CN_HUNDRED, CN_THOUSAND];\r\n bigRadices = [\"\", CN_TEN_THOUSAND, CN_HUNDRED_MILLION];\r\n decimals = [CN_TEN_CENT, CN_CENT];\r\n // Start processing:\r\n outputCharacters = \"\";\r\n // Process integral part if it is larger than 0:\r\n if (Number(integral) > 0) {\r\n zeroCount = 0;\r\n for (i = 0; i < integral.length; i++) {\r\n p = integral.length - i - 1;\r\n d = integral.substr(i, 1);\r\n quotient = p / 4;\r\n modulus = p % 4;\r\n if (d === \"0\") {\r\n zeroCount++;\r\n } else {\r\n if (zeroCount > 0) {\r\n outputCharacters += digits[0];\r\n }\r\n zeroCount = 0;\r\n outputCharacters += digits[Number(d)] + radices[modulus];\r\n }\r\n if (modulus === 0 && zeroCount < 4) {\r\n outputCharacters += bigRadices[quotient];\r\n zeroCount = 0;\r\n }\r\n }\r\n // outputCharacters += CN_DOLLAR; // 原来的【元】\r\n } else {\r\n //整数位为'零'\r\n outputCharacters = digits[Number(integral)];\r\n }\r\n // Process decimal part if there is:\r\n //校验小数位是否有值\r\n if (decimal !== \"\" && decimal !== \"0\" && decimal !== \"00\") {\r\n outputCharacters += DROP; // new 2023年8月31日10:52:54\r\n for (i = 0; i < decimal.length; i++) {\r\n d = decimal.substr(i, 1);\r\n if (d !== \"0\") {\r\n outputCharacters += digits[Number(d)] + decimals[i];\r\n } else if (i === 0) {\r\n //处理金额十分位数值为0时的大写转换\r\n outputCharacters += digits[Number(d)];\r\n }\r\n }\r\n }\r\n // Confirm and return the final output string:\r\n if (outputCharacters === \"\") {\r\n outputCharacters = CN_ZERO + CN_DOLLAR;\r\n }\r\n if (decimal === \"\") {\r\n outputCharacters += CN_INTEGER;\r\n }\r\n outputCharacters = CN_SYMBOL + prefix + outputCharacters;\r\n return outputCharacters;\r\n}\r\n/**\r\n * @description: 跨列计算\r\n * @author ChenRui\r\n * @date 2020/12/1 19:34\r\n */\r\nconst amountCapitalization = (data: any) => {\r\n return transform(data);\r\n};\r\n\r\nexport default amountCapitalization;\r\n","export class DesFormControl {\r\n formFieldId: string;\r\n formId: string;\r\n layoutId: string;\r\n boundProperty: string;\r\n extendBoundPropertyOne: string;\r\n extendBoundPropertyTwo: string;\r\n formFieldDescribe: string;\r\n controlType: string;\r\n tableFieldOrder: number | undefined;\r\n fieldDefaultValue: any;\r\n titleWidth: string;\r\n isBoldTitle: string | boolean;\r\n isHideTitle: string | boolean;\r\n titleColor: string;\r\n placeholder: string;\r\n tips: string;\r\n isNotEdit: string | boolean;\r\n bindingPrefix: string;\r\n bindingSuffix: string;\r\n builtInFrontLabel: string;\r\n builtInPostLabel: string;\r\n isHideControl: string | boolean;\r\n isShowHoliday: string | boolean;\r\n controlWidth: string;\r\n isPasswordBox: string | boolean;\r\n initRowHeight: number | undefined;\r\n isFixedRowHeight: string | boolean;\r\n formatType: string;\r\n minValue: number | undefined;\r\n maxValue: number | undefined;\r\n step: number | undefined;\r\n decimalPlaces: number | undefined;\r\n thousandthPercentileFormat: string | boolean;\r\n unit: string;\r\n moneyUnit: string;\r\n defineOptionalUnits: string;\r\n defineOptionalUnitsDefault: string;\r\n zoomType: string;\r\n zoomMultiple: number | undefined;\r\n isShowCapitalization: string | boolean;\r\n isLineFeedDisplay: string | boolean;\r\n isOptionType: string | boolean;\r\n optionConfig: any;\r\n dynamicOptionType: string;\r\n generalDictionary: string;\r\n generalDictionaryOptions: any;\r\n treeShape: string;\r\n treeShapeOptions: any;\r\n disableNonLeafNodes: string | boolean;\r\n dateFormat: string;\r\n timeFormat: string;\r\n isSupportMultiple: string | boolean;\r\n maxUploadNumber: number | undefined;\r\n limitSize: number | undefined;\r\n supportUploadType: string;\r\n customUploadType: any;\r\n extendUploadType: string;\r\n attachmentExtendProperties: string;\r\n isMultipleChoice: string | boolean;\r\n isSearchable: string | boolean;\r\n canAddEntry: string | boolean;\r\n isClearButton: string | boolean;\r\n hiddenDropdown: string | boolean; // new by 2021-11-9\r\n onOpeningValue: string;\r\n whenClosedValue: string;\r\n onOpeningText: string;\r\n whenClosedText: string;\r\n customFieldName: string; // new by 2021-11-9\r\n textFold: string | boolean;\r\n enableAutoComplete: string | boolean; // new by 2022-05-07\r\n autoCompleteOptions: any[]; // new by 2022-05-07\r\n verificationRules: any;\r\n busAttr: any;\r\n checkboxStyle: string | boolean; // 多选框选项标签样式\r\n itemWidth: string | boolean; // 多选框选项标签样式\r\n isTreeOpen: string | boolean; // 树形选择框是否展开\r\n changeOnSelect: string | boolean; // 是否允许级联选择框只选中父级选项\r\n textareaRows: number | undefined; // 设置textarea组件默认展示行数\r\n isDesensitize: string | boolean; // 是否脱敏 2026年5月13日 13:48:28\r\n constructor(\r\n options: {\r\n formFieldId?: string;\r\n formId?: string;\r\n layoutId?: string;\r\n boundProperty?: string;\r\n extendBoundPropertyOne?: string;\r\n extendBoundPropertyTwo?: string;\r\n formFieldDescribe?: string;\r\n controlType?: string;\r\n tableFieldOrder?: number;\r\n fieldDefaultValue?: any;\r\n titleWidth?: string;\r\n isBoldTitle?: string;\r\n isHideTitle?: string;\r\n titleColor?: string;\r\n placeholder?: string;\r\n tips?: string;\r\n isNotEdit?: string;\r\n bindingPrefix?: string;\r\n bindingSuffix?: string;\r\n builtInFrontLabel?: string;\r\n builtInPostLabel?: string;\r\n isHideControl?: string;\r\n isShowHoliday?: string;\r\n controlWidth?: string;\r\n isPasswordBox?: string;\r\n initRowHeight?: number;\r\n isFixedRowHeight?: string;\r\n formatType?: string;\r\n minValue?: number;\r\n maxValue?: number;\r\n step?: number;\r\n decimalPlaces?: number;\r\n thousandthPercentileFormat?: string;\r\n unit?: string;\r\n moneyUnit?: string;\r\n defineOptionalUnits?: string;\r\n defineOptionalUnitsDefault?: string;\r\n zoomType?: string;\r\n zoomMultiple?: number;\r\n isShowCapitalization?: string;\r\n isLineFeedDisplay?: string;\r\n isOptionType?: string;\r\n optionConfig?: any;\r\n dynamicOptionType?: string;\r\n generalDictionary?: string;\r\n generalDictionaryOptions?: any;\r\n treeShape?: string;\r\n treeShapeOptions?: any;\r\n disableNonLeafNodes?: string | boolean;\r\n dateFormat?: string;\r\n timeFormat?: string;\r\n isSupportMultiple?: string;\r\n maxUploadNumber?: number;\r\n limitSize?: number;\r\n supportUploadType?: string;\r\n customUploadType?: any;\r\n extendUploadType?: string;\r\n attachmentExtendProperties?: string;\r\n isMultipleChoice?: string;\r\n isSearchable?: string;\r\n canAddEntry?: string;\r\n isClearButton?: string;\r\n hiddenDropdown?: string;\r\n onOpeningValue?: string;\r\n whenClosedValue?: string;\r\n onOpeningText?: string;\r\n whenClosedText?: string;\r\n customFieldName?: string;\r\n textFold?: string;\r\n enableAutoComplete?: string;\r\n autoCompleteOptions?: any[];\r\n verificationRules?: any;\r\n busAttr?: any;\r\n checkboxStyle?: string | boolean;\r\n isTreeOpen?: string | boolean;\r\n itemWidth?: string | boolean;\r\n changeOnSelect?: string | boolean;\r\n textareaRows?: number | undefined;\r\n isDesensitize?: string; // 是否脱敏 2026年5月13日 13:48:28\r\n } = {}\r\n ) {\r\n this.formFieldId = options.formFieldId || \"\";\r\n this.formId = options.formId || \"\";\r\n this.layoutId = options.layoutId || \"\";\r\n this.boundProperty = options.boundProperty || \"\";\r\n this.extendBoundPropertyOne = options.extendBoundPropertyOne || \"\";\r\n this.extendBoundPropertyTwo = options.extendBoundPropertyTwo || \"\";\r\n this.formFieldDescribe = options.formFieldDescribe || \"\";\r\n this.controlType = options.controlType || \"\";\r\n this.tableFieldOrder = options.tableFieldOrder || undefined;\r\n this.fieldDefaultValue = options.fieldDefaultValue || \"\";\r\n this.titleWidth = options.titleWidth || \"\";\r\n this.isBoldTitle = options.isBoldTitle || \"\";\r\n this.isHideTitle = options.isHideTitle || \"\";\r\n this.titleColor = options.titleColor || \"\";\r\n this.placeholder = options.placeholder || \"\";\r\n this.tips = options.tips || \"\";\r\n this.isNotEdit = options.isNotEdit || \"\";\r\n this.bindingPrefix = options.bindingPrefix || \"\";\r\n this.bindingSuffix = options.bindingSuffix || \"\";\r\n this.builtInFrontLabel = options.builtInFrontLabel || \"\";\r\n this.builtInPostLabel = options.builtInPostLabel || \"\";\r\n this.isHideControl = options.isHideControl || \"\";\r\n this.isShowHoliday = options.isShowHoliday || \"\";\r\n this.controlWidth = options.controlWidth || \"\";\r\n this.isPasswordBox = options.isPasswordBox || \"\";\r\n this.initRowHeight = options.initRowHeight || undefined;\r\n this.isFixedRowHeight = options.isFixedRowHeight || \"\";\r\n this.formatType = options.formatType || \"\";\r\n this.minValue = options.minValue || undefined;\r\n this.maxValue = options.maxValue || undefined;\r\n this.step = options.step || undefined;\r\n this.decimalPlaces = options.decimalPlaces || undefined;\r\n this.thousandthPercentileFormat = options.thousandthPercentileFormat || \"\";\r\n this.unit = options.unit || \"\";\r\n this.moneyUnit = options.moneyUnit || \"\";\r\n this.defineOptionalUnits = options.defineOptionalUnits || \"\";\r\n this.defineOptionalUnitsDefault = options.defineOptionalUnitsDefault || \"\";\r\n this.zoomType = options.zoomType || \"\";\r\n this.zoomMultiple = options.zoomMultiple || undefined;\r\n this.isShowCapitalization = options.isShowCapitalization || \"\";\r\n this.isLineFeedDisplay = options.isLineFeedDisplay || \"\";\r\n this.isOptionType = options.isOptionType || \"\";\r\n this.optionConfig = options.optionConfig || \"\";\r\n this.dynamicOptionType = options.dynamicOptionType || \"\";\r\n this.generalDictionary = options.generalDictionary || \"\";\r\n this.generalDictionaryOptions = options.generalDictionaryOptions || \"\";\r\n this.treeShape = options.treeShape || \"\";\r\n this.treeShapeOptions = options.treeShapeOptions || \"\";\r\n this.disableNonLeafNodes = options.disableNonLeafNodes || \"\";\r\n this.dateFormat = options.dateFormat || \"\";\r\n this.timeFormat = options.timeFormat || \"\";\r\n this.isSupportMultiple = options.isSupportMultiple || \"\";\r\n this.maxUploadNumber = options.maxUploadNumber || undefined;\r\n this.limitSize = options.limitSize || undefined;\r\n this.supportUploadType = options.supportUploadType || \"\";\r\n this.customUploadType = options.customUploadType;\r\n this.extendUploadType = options.extendUploadType || \"\";\r\n this.attachmentExtendProperties = options.attachmentExtendProperties || \"\";\r\n this.isMultipleChoice = options.isMultipleChoice || \"\";\r\n this.isSearchable = options.isSearchable || \"\";\r\n this.canAddEntry = options.canAddEntry || \"\";\r\n this.isClearButton = options.isClearButton || \"\";\r\n this.hiddenDropdown = options.hiddenDropdown || \"\";\r\n this.onOpeningValue = options.onOpeningValue || \"\";\r\n this.whenClosedValue = options.whenClosedValue || \"\";\r\n this.onOpeningText = options.onOpeningText || \"\";\r\n this.whenClosedText = options.whenClosedText || \"\";\r\n this.customFieldName = options.customFieldName || \"\";\r\n this.textFold = options.textFold || \"\";\r\n this.enableAutoComplete = options.enableAutoComplete || \"\";\r\n this.autoCompleteOptions = options.autoCompleteOptions || [];\r\n this.verificationRules = options.verificationRules;\r\n this.busAttr = options.busAttr;\r\n this.checkboxStyle = options.checkboxStyle || \"\";\r\n this.isTreeOpen = options.isTreeOpen || \"\";\r\n this.itemWidth = options.itemWidth || \"\";\r\n this.changeOnSelect = options.changeOnSelect || \"\";\r\n this.textareaRows = options.textareaRows || 3;\r\n this.isDesensitize = options.isDesensitize || \"0\";\r\n }\r\n}\r\n","export abstract class AbstractControl {\r\n value: any;\r\n [key: string]: any;\r\n\r\n abstract get(path: Array<string | number> | string): AbstractControl | null;\r\n}\r\n","import { AbstractControl } from \"./AbstractControl\";\r\nimport { ValidateStatus } from \"../constants/enum/validate-status.enum\";\r\n\r\nexport interface ValidateResult {\r\n validateStatus?: string;\r\n errorMsg?: any;\r\n}\r\nexport interface ValidateReport {\r\n key: string;\r\n name: string;\r\n errorMsg: any;\r\n controlType: string;\r\n}\r\nexport type ValidateFunc = (val: any) => ValidateResult;\r\nexport interface Validate {\r\n name: string;\r\n validateFunc: ValidateFunc;\r\n}\r\nexport type TextNoticeCallback = (val?: any) => string;\r\n\r\n/**\r\n * @description: 控件对象\r\n * @author ChenRui\r\n * @date 2020/12/1 15:06\r\n */\r\nexport class FormControl extends AbstractControl {\r\n history: any[] = []; // 字段历史\r\n validates: Validate[] = []; // 校验规则\r\n textNoticeCallback: TextNoticeCallback | undefined; // 获取文本内容回调\r\n\r\n constructor(formState?: any) {\r\n super();\r\n this.setValue(formState);\r\n }\r\n\r\n setValue(value: any) {\r\n this.value = value || undefined;\r\n }\r\n\r\n get(path: Array<string | number> | string): AbstractControl | null {\r\n return this;\r\n }\r\n\r\n /**\r\n * @description: 添加校验\r\n * @author ChenRui\r\n * @date 2021/1/26 21:05\r\n */\r\n addValidate(validate: Validate | Validate[]): void {\r\n let validates: Validate[] = [];\r\n if (!(validate instanceof Array)) {\r\n validates.push(validate);\r\n } else {\r\n validates = validate;\r\n }\r\n if (validates && validates.length > 0) {\r\n for (let i = 0; i < validates.length; i++) {\r\n if (validates[i].name) {\r\n const index = this.validates.findIndex((item) => item.name === validates[i].name);\r\n if (index > -1) {\r\n this.validates[index].validateFunc = validates[i].validateFunc;\r\n } else {\r\n this.validates.push(validates[i]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 移除校验\r\n * @author ChenRui\r\n * @date 2021/1/26 21:06\r\n */\r\n removeValidate(name: string): void {\r\n if (name) {\r\n const index = this.validates.findIndex((item) => item.name === name);\r\n if (index > -1) {\r\n this.validates.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 获取校验\r\n * @author ChenRui\r\n * @date 2021/1/30 11:47\r\n */\r\n getValidate(name: string): Validate | any {\r\n if (name) {\r\n return this.validates.find((item) => item.name === name);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 校验\r\n * @author ChenRui\r\n * @date 2021/1/26 21:08\r\n */\r\n validate(val: any = this.value): ValidateResult {\r\n for (let i = 0; i < this.validates.length; i++) {\r\n const result: ValidateResult = this.validates[i].validateFunc(val);\r\n if (result && result.validateStatus !== ValidateStatus.Success.code) {\r\n return result;\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n errorMsg: null,\r\n };\r\n }\r\n\r\n /**\r\n * @description: 获取文本内容\r\n * @author ChenRui\r\n * @date 2021/1/29 15:56\r\n */\r\n text(): string {\r\n if (this.textNoticeCallback) {\r\n return this.textNoticeCallback();\r\n }\r\n return \"\";\r\n }\r\n}\r\n","import { AbstractControl } from \"./AbstractControl\";\r\n\r\n/**\r\n * @description: 表单对象\r\n * @author ChenRui\r\n * @date 2020/12/1 15:06\r\n */\r\nexport class FormGroup extends AbstractControl {\r\n controls: { [key: string]: AbstractControl };\r\n\r\n constructor(controls: { [key: string]: AbstractControl } = {}) {\r\n super();\r\n this.controls = controls;\r\n }\r\n\r\n /**\r\n * @description: 添加控件\r\n * @author ChenRui\r\n * @date 2020/12/1 14:47\r\n */\r\n addControl(name: string, control: AbstractControl): void {\r\n this.controls[name] = control;\r\n }\r\n\r\n /**\r\n * @description: 移除控件\r\n * @author ChenRui\r\n * @date 2020/12/1 14:47\r\n */\r\n removeControl(name: string): void {\r\n if (this.controls[name] != null) {\r\n delete this.controls[name];\r\n }\r\n }\r\n\r\n get(path: Array<string | number> | string): AbstractControl | null {\r\n if (typeof path === \"string\") {\r\n return this.controls[path];\r\n }\r\n return null;\r\n }\r\n}\r\n","import { OptionType } from \"../constants/enum/option-type.enum\";\r\nimport { DynamicOptionType } from \"../constants/enum/dynamic-option-type.enum\";\r\n\r\nfunction transformReverse(controlAttr: any, data: any[]): void {\r\n if (data == null) {\r\n data = [];\r\n }\r\n if (controlAttr != null) {\r\n if (controlAttr.isOptionType === OptionType.Fixed.code) {\r\n controlAttr.optionConfig = data;\r\n } else if (controlAttr.isOptionType === OptionType.Dynamic.code) {\r\n if (controlAttr.dynamicOptionType === DynamicOptionType.GeneralDictionary.code) {\r\n controlAttr.generalDictionaryOptions = data;\r\n } else if (controlAttr.dynamicOptionType === DynamicOptionType.TreeDictionary.code) {\r\n controlAttr.treeShapeOptions = data;\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction transform(controlAttr: any): any[] {\r\n if (controlAttr != null) {\r\n if (controlAttr.isOptionType === OptionType.Fixed.code) {\r\n return controlAttr.optionConfig || [];\r\n } else if (controlAttr.isOptionType === OptionType.Dynamic.code) {\r\n if (controlAttr.dynamicOptionType === DynamicOptionType.GeneralDictionary.code) {\r\n return controlAttr.generalDictionaryOptions || [];\r\n } else if (controlAttr.dynamicOptionType === DynamicOptionType.TreeDictionary.code) {\r\n return controlAttr.treeShapeOptions || [];\r\n }\r\n }\r\n }\r\n return [];\r\n}\r\n\r\n/**\r\n * @description: 根据字典类型获取可选项\r\n * @author ChenRui\r\n * @date 2020/12/30 11:18\r\n */\r\nconst extractOptions = (controlAttr: any, ...args: any[]): any[] => {\r\n return transform(controlAttr);\r\n};\r\n\r\n/**\r\n * @description: 保存可选项\r\n * @author ChenRui\r\n * @date 2021/1/29 16:17\r\n */\r\nconst storageOptions = (controlAttr: any, data: any[]): void => {\r\n return transformReverse(controlAttr, data);\r\n};\r\nexport { storageOptions, extractOptions };\r\n","import { ZoomType } from \"@/constants/enum/zoom-type\";\r\nimport { FormControl } from \"@/domain/FormControl\";\r\nimport { MathJsStatic } from \"mathjs\";\r\nimport { getCurrentInstance } from \"vue\";\r\n\r\n/**\r\n * @description: 通用字典转换\r\n * @author ChenRui\r\n * @date 2020/7/29 18:43\r\n */\r\nfunction encode(data: any, formControl: FormControl) {\r\n const proxy: any = getCurrentInstance()?.proxy;\r\n const mathjs: MathJsStatic = proxy?.$mathjs as MathJsStatic;\r\n if (data && formControl.controlAttr.zoomMultiple) {\r\n if (formControl.controlAttr.zoomType === ZoomType.enlarge.code) {\r\n data = mathjs.format(mathjs.evaluate(`${data} * ${formControl.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n } else if (formControl.controlAttr.zoomType === ZoomType.narrow.code) {\r\n data = mathjs.format(mathjs.evaluate(`${data} / ${formControl.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n } else if (formControl.controlAttr.zoomType === ZoomType.automatic.code) {\r\n data = mathjs.format(mathjs.evaluate(`${data} * ${formControl.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n }\r\n }\r\n if (String(formControl.value) === \"0\") {\r\n data = 0;\r\n }\r\n return data;\r\n}\r\nconst zoomMultiple = (code: any, formControl: FormControl) => {\r\n return encode(code, formControl);\r\n};\r\n\r\nexport default zoomMultiple;\r\n","/**\r\n * @description: 通用字典转换\r\n * @author ChenRui\r\n * @date 2020/7/29 18:43\r\n */\r\nfunction encode(code: string, switchEnumFiled: any, attribute?: string, defaultVal?: any) {\r\n if (switchEnumFiled != null && Object.values(switchEnumFiled).length > 0) {\r\n for (const switchEnum of Object.values(switchEnumFiled) as any) {\r\n return switchEnum[attribute || \"name\"] || defaultVal;\r\n }\r\n }\r\n return defaultVal || \"\";\r\n}\r\nconst switchEnumConvert = (code: string, switchEnumFiled: any, attribute?: string, defaultVal?: any) => {\r\n return encode(code, switchEnumFiled, attribute, defaultVal);\r\n};\r\n\r\nexport default switchEnumConvert;\r\n","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = (n: any) => (_pushScopeId(\"data-v-12085cfe\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"title\"]\nconst _hoisted_2 = { key: 1 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"lo-text-container\", [{ 'lo-text-column': !_ctx.unfold }, { 'lo-text-row': _ctx.unfold }]])\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass(['lo-text-box', { 'lo-over': !_ctx.ifOver }, { 'lo-over-hidden': !_ctx.unfold }, { 'lo-unfold': _ctx.ifOver && !_ctx.unfold }]),\n ref: \"textBox\"\n }, [\n _createElementVNode(\"span\", {\n class: \"lo-text\",\n ref: \"spanBox\",\n title: _ctx.content\n }, [\n (_ctx.linkList.indexOf(_ctx.fieldKey) > -1)\n ? (_openBlock(), _createElementBlock(\"a\", {\n key: 0,\n href: \"#\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.linkClick(_ctx.content)))\n }, _toDisplayString(_ctx.content), 1))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_2, _toDisplayString(_ctx.content), 1))\n ], 8, _hoisted_1)\n ], 2),\n (_ctx.ifOver)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"lo-btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.unfold = !_ctx.unfold))\n }, _toDisplayString(_ctx.unfold ? \"收起\" : \"展开\"), 1))\n : _createCommentVNode(\"\", true)\n ], 2))\n}","\r\nimport { Prop, Ref, Watch } from \"vue-property-decorator\";\r\nimport { Options, Vue } from \"vue-property-decorator\";\r\n\r\n@Options({\r\n name: \"StretchText\",\r\n})\r\nexport default class StretchText extends Vue {\r\n ifOver = false; // 文本是否超出三行,默认否\r\n unfold = false; // 文本是否是展开状态 默认为收起\r\n @Prop({ default: false }) enableStretchText!: boolean;\r\n @Prop({ default: \"\" }) content!: string;\r\n @Prop({ default: \"\" }) fieldKey!: string; // 元素码值key\r\n @Prop({ type: Array, default: () => [] }) linkList: any | undefined; // 需要添加超链接点击事件数组 例:['cifNo', 'prodBaseNo']\r\n @Ref() readonly spanBox: any;\r\n @Ref() readonly textBox: any;\r\n\r\n mounted(): void {\r\n this.onContentHandle();\r\n }\r\n /**\r\n * @Description 表单数据反显回调(data:string 元素值value)\r\n * @Author JiangTao\r\n * @Date 2023-10-07 下午 05:24\r\n */\r\n linkClick(data: any): void {\r\n this.$emit(\"linkClick\", data);\r\n }\r\n\r\n @Watch(\"content\")\r\n onContentHandle(): void {\r\n // 判断是否显示展开收起按钮\r\n this.ifOver = this.spanBox.offsetHeight > this.textBox.offsetHeight;\r\n }\r\n}\r\n","import { render } from \"./StretchText.vue?vue&type=template&id=12085cfe&scoped=true&ts=true\"\nimport script from \"./StretchText.vue?vue&type=script&lang=ts\"\nexport * from \"./StretchText.vue?vue&type=script&lang=ts\"\n\nimport \"./StretchText.vue?vue&type=style&index=0&id=12085cfe&lang=scss&scoped=true\"\n\nimport exportComponent from \"E:\\\\base-frontend\\\\vue-lo3-form-260417\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-12085cfe\"]])\n\nexport default __exports__","/*eslint-disable*/\r\nconst char_dict: any = \"YDYQSXMWZSSXJBYMGCCZQPSSQBYCDSCDQLDYLYBSSJGYZZJJFKCCLZDHWDWZJLJPFYYNWJJTMYHZWZHFLZPPQHGSCYYYNJQYXXGJHHSDSJNKKTMOMLCRXYPSNQSECCQZGGLLYJLMYZZSECYKYYHQWJSSGGYXYZYJWWKDJHYCHMYXJTLXJYQBYXZLDWRDJRWYSRLDZJPCBZJJBRCFTLECZSTZFXXZHTRQHYBDLYCZSSYMMRFMYQZPWWJJYFCRWFDFZQPYDDWYXKYJAWJFFXYPSFTZYHHYZYSWCJYXSCLCXXWZZXNBGNNXBXLZSZSBSGPYSYZDHMDZBQBZCWDZZYYTZHBTSYYBZGNTNXQYWQSKBPHHLXGYBFMJEBJHHGQTJCYSXSTKZHLYCKGLYSMZXYALMELDCCXGZYRJXSDLTYZCQKCNNJWHJTZZCQLJSTSTBNXBTYXCEQXGKWJYFLZQLYHYXSPSFXLMPBYSXXXYDJCZYLLLSJXFHJXPJBTFFYABYXBHZZBJYZLWLCZGGBTSSMDTJZXPTHYQTGLJSCQFZKJZJQNLZWLSLHDZBWJNCJZYZSQQYCQYRZCJJWYBRTWPYFTWEXCSKDZCTBZHYZZYYJXZCFFZZMJYXXSDZZOTTBZLQWFCKSZSXFYRLNYJMBDTHJXSQQCCSBXYYTSYFBXDZTGBCNSLCYZZPSAZYZZSCJCSHZQYDXLBPJLLMQXTYDZXSQJTZPXLCGLQTZWJBHCTSYJSFXYEJJTLBGXSXJMYJQQPFZASYJNTYDJXKJCDJSZCBARTDCLYJQMWNQNCLLLKBYBZZSYHQQLTWLCCXTXLLZNTYLNEWYZYXCZXXGRKRMTCNDNJTSYYSSDQDGHSDBJGHRWRQLYBGLXHLGTGXBQJDZPYJSJYJCTMRNYMGRZJCZGJMZMGXMPRYXKJNYMSGMZJYMKMFXMLDTGFBHCJHKYLPFMDXLQJJSMTQGZSJLQDLDGJYCALCMZCSDJLLNXDJFFFFJCZFMZFFPFKHKGDPSXKTACJDHHZDDCRRCFQYJKQCCWJDXHWJLYLLZGCFCQDSMLZPBJJPLSBCJGGDCKKDEZSQCCKJGCGKDJTJDLZYCXKLQSCGJCLTFPCQCZGWPJDQYZJJBYJHSJDZWGFSJGZKQCCZLLPSPKJGQJHZZLJPLGJGJJTHJJYJZCZMLZLYQBGJWMLJKXZDZNJQSYZMLJLLJKYWXMKJLHSKJGBMCLYYMKXJQLBMLLKMDXXKWYXYSLMLPSJQQJQXYXFJTJDXMXXLLCXQBSYJBGWYMBGGBCYXPJYGPEPFGDJGBHBNSQJYZJKJKHXQFGQZKFHYGKHDKLLSDJQXPQYKYBNQSXQNSZSWHBSXWHXWBZZXDMNSJBSBKBBZKLYLXGWXDRWYQZMYWSJQLCJXXJXKJEQXSCYETLZHLYYYSDZPAQYZCMTLSHTZCFYZYXYLJSDCJQAGYSLCQLYYYSHMRQQKLDXZSCSSSYDYCJYSFSJBFRSSZQSBXXPXJYSDRCKGJLGDKZJZBDKTCSYQPYHSTCLDJDHMXMCGXYZHJDDTMHLTXZXYLYMOHYJCLTYFBQQXPFBDFHHTKSQHZYYWCNXXCRWHOWGYJLEGWDQCWGFJYCSNTMYTOLBYGWQWESJPWNMLRYDZSZTXYQPZGCWXHNGPYXSHMYQJXZTDPPBFYHZHTJYFDZWKGKZBLDNTSXHQEEGZZYLZMMZYJZGXZXKHKSTXNXXWYLYAPSTHXDWHZYMPXAGKYDXBHNHXKDPJNMYHYLPMGOCSLNZHKXXLPZZLBMLSFBHHGYGYYGGBHSCYAQTYWLXTZQCEZYDQDQMMHTKLLSZHLSJZWFYHQSWSCWLQAZYNYTLSXTHAZNKZZSZZLAXXZWWCTGQQTDDYZTCCHYQZFLXPSLZYGPZSZNGLNDQTBDLXGTCTAJDKYWNSYZLJHHZZCWNYYZYWMHYCHHYXHJKZWSXHZYXLYSKQYSPSLYZWMYPPKBYGLKZHTYXAXQSYSHXASMCHKDSCRSWJPWXSGZJLWWSCHSJHSQNHCSEGNDAQTBAALZZMSSTDQJCJKTSCJAXPLGGXHHGXXZCXPDMMHLDGTYBYSJMXHMRCPXXJZCKZXSHMLQXXTTHXWZFKHCCZDYTCJYXQHLXDHYPJQXYLSYYDZOZJNYXQEZYSQYAYXWYPDGXDDXSPPYZNDLTWRHXYDXZZJHTCXMCZLHPYYYYMHZLLHNXMYLLLMDCPPXHMXDKYCYRDLTXJCHHZZXZLCCLYLNZSHZJZZLNNRLWHYQSNJHXYNTTTKYJPYCHHYEGKCTTWLGQRLGGTGTYGYHPYHYLQYQGCWYQKPYYYTTTTLHYHLLTYTTSPLKYZXGZWGPYDSSZZDQXSKCQNMJJZZBXYQMJRTFFBTKHZKBXLJJKDXJTLBWFZPPTKQTZTGPDGNTPJYFALQMKGXBDCLZFHZCLLLLADPMXDJHLCCLGYHDZFGYDDGCYYFGYDXKSSEBDHYKDKDKHNAXXYBPBYYHXZQGAFFQYJXDMLJCSQZLLPCHBSXGJYNDYBYQSPZWJLZKSDDTACTBXZDYZYPJZQSJNKKTKNJDJGYYPGTLFYQKASDNTCYHBLWDZHBBYDWJRYGKZYHEYYFJMSDTYFZJJHGCXPLXHLDWXXJKYTCYKSSSMTWCTTQZLPBSZDZWZXGZAGYKTYWXLHLSPBCLLOQMMZSSLCMBJCSZZKYDCZJGQQDSMCYTZQQLWZQZXSSFPTTFQMDDZDSHDTDWFHTDYZJYQJQKYPBDJYYXTLJHDRQXXXHAYDHRJLKLYTWHLLRLLRCXYLBWSRSZZSYMKZZHHKYHXKSMDSYDYCJPBZBSQLFCXXXNXKXWYWSDZYQOGGQMMYHCDZTTFJYYBGSTTTYBYKJDHKYXBELHTYPJQNFXFDYKZHQKZBYJTZBXHFDXKDASWTAWAJLDYJSFHBLDNNTNQJTJNCHXFJSRFWHZFMDRYJYJWZPDJKZYJYMPCYZNYNXFBYTFYFWYGDBNZZZDNYTXZEMMQBSQEHXFZMBMFLZZSRXYMJGSXWZJSPRYDJSJGXHJJGLJJYNZZJXHGXKYMLPYYYCXYTWQZSWHWLYRJLPXSLSXMFSWWKLCTNXNYNPSJSZHDZEPTXMYYWXYYSYWLXJQZQXZDCLEEELMCPJPCLWBXSQHFWWTFFJTNQJHJQDXHWLBYZNFJLALKYYJLDXHHYCSTYYWNRJYXYWTRMDRQHWQCMFJDYZMHMYYXJWMYZQZXTLMRSPWWCHAQBXYGZYPXYYRRCLMPYMGKSJSZYSRMYJSNXTPLNBAPPYPYLXYYZKYNLDZYJZCZNNLMZHHARQMPGWQTZMXXMLLHGDZXYHXKYXYCJMFFYYHJFSBSSQLXXNDYCANNMTCJCYPRRNYTYQNYYMBMSXNDLYLYSLJRLXYSXQMLLYZLZJJJKYZZCSFBZXXMSTBJGNXYZHLXNMCWSCYZYFZLXBRNNNYLBNRTGZQYSATSWRYHYJZMZDHZGZDWYBSSCSKXSYHYTXXGCQGXZZSHYXJSCRHMKKBXCZJYJYMKQHZJFNBHMQHYSNJNZYBKNQMCLGQHWLZNZSWXKHLJHYYBQLBFCDSXDLDSPFZPSKJYZWZXZDDXJSMMEGJSCSSMGCLXXKYYYLNYPWWWGYDKZJGGGZGGSYCKNJWNJPCXBJJTQTJWDSSPJXZXNZXUMELPXFSXTLLXCLJXJJLJZXCTPSWXLYDHLYQRWHSYCSQYYBYAYWJJJQFWQCQQCJQGXALDBZZYJGKGXPLTZYFXJLTPADKYQHPMATLCPDCKBMTXYBHKLENXDLEEGQDYMSAWHZMLJTWYGXLYQZLJEEYYBQQFFNLYXRDSCTGJGXYYNKLLYQKCCTLHJLQMKKZGCYYGLLLJDZGYDHZWXPYSJBZKDZGYZZHYWYFQYTYZSZYEZZLYMHJJHTSMQWYZLKYYWZCSRKQYTLTDXWCTYJKLWSQZWBDCQYNCJSRSZJLKCDCDTLZZZACQQZZDDXYPLXZBQJYLZLLLQDDZQJYJYJZYXNYYYNYJXKXDAZWYRDLJYYYRJLXLLDYXJCYWYWNQCCLDDNYYYNYCKCZHXXCCLGZQJGKWPPCQQJYSBZZXYJSQPXJPZBSBDSFNSFPZXHDWZTDWPPTFLZZBZDMYYPQJRSDZSQZSQXBDGCPZSWDWCSQZGMDHZXMWWFYBPDGPHTMJTHZSMMBGZMBZJCFZWFZBBZMQCFMBDMCJXLGPNJBBXGYHYYJGPTZGZMQBQTCGYXJXLWZKYDPDYMGCFTPFXYZTZXDZXTGKMTYBBCLBJASKYTSSQYYMSZXFJEWLXLLSZBQJJJAKLYLXLYCCTSXMCWFKKKBSXLLLLJYXTYLTJYYTDPJHNHNNKBYQNFQYYZBYYESSESSGDYHFHWTCJBSDZZTFDMXHCNJZYMQWSRYJDZJQPDQBBSTJGGFBKJBXTGQHNGWJXJGDLLTHZHHYYYYYYSXWTYYYCCBDBPYPZYCCZYJPZYWCBDLFWZCWJDXXHYHLHWZZXJTCZLCDPXUJCZZZLYXJJTXPHFXWPYWXZPTDZZBDZCYHJHMLXBQXSBYLRDTGJRRCTTTHYTCZWMXFYTWWZCWJWXJYWCSKYBZSCCTZQNHXNWXXKHKFHTSWOCCJYBCMPZZYKBNNZPBZHHZDLSYDDYTYFJPXYNGFXBYQXCBHXCPSXTYZDMKYSNXSXLHKMZXLYHDHKWHXXSSKQYHHCJYXGLHZXCSNHEKDTGZXQYPKDHEXTYKCNYMYYYPKQYYYKXZLTHJQTBYQHXBMYHSQCKWWYLLHCYYLNNEQXQWMCFBDCCMLJGGXDQKTLXKGNQCDGZJWYJJLYHHQTTTNWCHMXCXWHWSZJYDJCCDBQCDGDNYXZTHCQRXCBHZTQCBXWGQWYYBXHMBYMYQTYEXMQKYAQYRGYZSLFYKKQHYSSQYSHJGJCNXKZYCXSBXYXHYYLSTYCXQTHYSMGSCPMMGCCCCCMTZTASMGQZJHKLOSQYLSWTMXSYQKDZLJQQYPLSYCZTCQQPBBQJZCLPKHQZYYXXDTDDTSJCXFFLLCHQXMJLWCJCXTSPYCXNDTJSHJWXDQQJSKXYAMYLSJHMLALYKXCYYDMNMDQMXMCZNNCYBZKKYFLMCHCMLHXRCJJHSYLNMTJZGZGYWJXSRXCWJGJQHQZDQJDCJJZKJKGDZQGJJYJYLXZXXCDQHHHEYTMHLFSBDJSYYSHFYSTCZQLPBDRFRZTZYKYWHSZYQKWDQZRKMSYNBCRXQBJYFAZPZZEDZCJYWBCJWHYJBQSZYWRYSZPTDKZPFPBNZTKLQYHBBZPNPPTYZZYBQNYDCPJMMCYCQMCYFZZDCMNLFPBPLNGQJTBTTNJZPZBBZNJKLJQYLNBZQHKSJZNGGQSZZKYXSHPZSNBCGZKDDZQANZHJKDRTLZLSWJLJZLYWTJNDJZJHXYAYNCBGTZCSSQMNJPJYTYSWXZFKWJQTKHTZPLBHSNJZSYZBWZZZZLSYLSBJHDWWQPSLMMFBJDWAQYZTCJTBNNWZXQXCDSLQGDSDPDZHJTQQPSWLYYJZLGYXYZLCTCBJTKTYCZJTQKBSJLGMGZDMCSGPYNJZYQYYKNXRPWSZXMTNCSZZYXYBYHYZAXYWQCJTLLCKJJTJHGDXDXYQYZZBYWDLWQCGLZGJGQRQZCZSSBCRPCSKYDZNXJSQGXSSJMYDNSTZTPBDLTKZWXQWQTZEXNQCZGWEZKSSBYBRTSSSLCCGBPSZQSZLCCGLLLZXHZQTHCZMQGYZQZNMCOCSZJMMZSQPJYGQLJYJPPLDXRGZYXCCSXHSHGTZNLZWZKJCXTCFCJXLBMQBCZZWPQDNHXLJCTHYZLGYLNLSZZPCXDSCQQHJQKSXZPBAJYEMSMJTZDXLCJYRYYNWJBNGZZTMJXLTBSLYRZPYLSSCNXPHLLHYLLQQZQLXYMRSYCXZLMMCZLTZSDWTJJLLNZGGQXPFSKYGYGHBFZPDKMWGHCXMSGDXJMCJZDYCABXJDLNBCDQYGSKYDQTXDJJYXMSZQAZDZFSLQXYJSJZYLBTXXWXQQZBJZUFBBLYLWDSLJHXJYZJWTDJCZFQZQZZDZSXZZQLZCDZFJHYSPYMPQZMLPPLFFXJJNZZYLSJEYQZFPFZKSYWJJJHRDJZZXTXXGLGHYDXCSKYSWMMZCWYBAZBJKSHFHJCXMHFQHYXXYZFTSJYZFXYXPZLCHMZMBXHZZSXYFYMNCWDABAZLXKTCSHHXKXJJZJSTHYGXSXYYHHHJWXKZXSSBZZWHHHCWTZZZPJXSNXQQJGZYZYWLLCWXZFXXYXYHXMKYYSWSQMNLNAYCYSPMJKHWCQHYLAJJMZXHMMCNZHBHXCLXTJPLTXYJHDYYLTTXFSZHYXXSJBJYAYRSMXYPLCKDUYHLXRLNLLSTYZYYQYGYHHSCCSMZCTZQXKYQFPYYRPFFLKQUNTSZLLZMWWTCQQYZWTLLMLMPWMBZSSTZRBPDDTLQJJBXZCSRZQQYGWCSXFWZLXCCRSZDZMCYGGDZQSGTJSWLJMYMMZYHFBJDGYXCCPSHXNZCSBSJYJGJMPPWAFFYFNXHYZXZYLREMZGZCYZSSZDLLJCSQFNXZKPTXZGXJJGFMYYYSNBTYLBNLHPFZDCYFBMGQRRSSSZXYSGTZRNYDZZCDGPJAFJFZKNZBLCZSZPSGCYCJSZLMLRSZBZZLDLSLLYSXSQZQLYXZLSKKBRXBRBZCYCXZZZEEYFGKLZLYYHGZSGZLFJHGTGWKRAAJYZKZQTSSHJJXDCYZUYJLZYRZDQQHGJZXSSZBYKJPBFRTJXLLFQWJHYLQTYMBLPZDXTZYGBDHZZRBGXHWNJTJXLKSCFSMWLSDQYSJTXKZSCFWJLBXFTZLLJZLLQBLSQMQQCGCZFPBPHZCZJLPYYGGDTGWDCFCZQYYYQYSSCLXZSKLZZZGFFCQNWGLHQYZJJCZLQZZYJPJZZBPDCCMHJGXDQDGDLZQMFGPSYTSDYFWWDJZJYSXYYCZCYHZWPBYKXRYLYBHKJKSFXTZJMMCKHLLTNYYMSYXYZPYJQYCSYCWMTJJKQYRHLLQXPSGTLYYCLJSCPXJYZFNMLRGJJTYZBXYZMSJYJHHFZQMSYXRSZCWTLRTQZSSTKXGQKGSPTGCZNJSJCQCXHMXGGZTQYDJKZDLBZSXJLHYQGGGTHQSZPYHJHHGYYGKGGCWJZZYLCZLXQSFTGZSLLLMLJSKCTBLLZZSZMMNYTPZSXQHJCJYQXYZXZQZCPSHKZZYSXCDFGMWQRLLQXRFZTLYSTCTMJCXJJXHJNXTNRZTZFQYHQGLLGCXSZSJDJLJCYDSJTLNYXHSZXCGJZYQPYLFHDJSBPCCZHJJJQZJQDYBSSLLCMYTTMQTBHJQNNYGKYRQYQMZGCJKPDCGMYZHQLLSLLCLMHOLZGDYYFZSLJCQZLYLZQJESHNYLLJXGJXLYSYYYXNBZLJSSZCQQCJYLLZLTJYLLZLLBNYLGQCHXYYXOXCXQKYJXXXYKLXSXXYQXCYKQXQCSGYXXYQXYGYTQOHXHXPYXXXULCYEYCHZZCBWQBBWJQZSCSZSSLZYLKDESJZWMYMCYTSDSXXSCJPQQSQYLYYZYCMDJDZYWCBTJSYDJKCYDDJLBDJJSODZYSYXQQYXDHHGQQYQHDYXWGMMMAJDYBBBPPBCMUUPLJZSMTXERXJMHQNUTPJDCBSSMSSSTKJTSSMMTRCPLZSZMLQDSDMJMQPNQDXCFYNBFSDQXYXHYAYKQYDDLQYYYSSZBYDSLNTFQTZQPZMCHDHCZCWFDXTMYQSPHQYYXSRGJCWTJTZZQMGWJJTJHTQJBBHWZPXXHYQFXXQYWYYHYSCDYDHHQMNMTMWCPBSZPPZZGLMZFOLLCFWHMMSJZTTDHZZYFFYTZZGZYSKYJXQYJZQBHMBZZLYGHGFMSHPZFZSNCLPBQSNJXZSLXXFPMTYJYGBXLLDLXPZJYZJYHHZCYWHJYLSJEXFSZZYWXKZJLUYDTMLYMQJPWXYHXSKTQJEZRPXXZHHMHWQPWQLYJJQJJZSZCPHJLCHHNXJLQWZJHBMZYXBDHHYPZLHLHLGFWLCHYYTLHJXCJMSCPXSTKPNHQXSRTYXXTESYJCTLSSLSTDLLLWWYHDHRJZSFGXTSYCZYNYHTDHWJSLHTZDQDJZXXQHGYLTZPHCSQFCLNJTCLZPFSTPDYNYLGMJLLYCQHYSSHCHYLHQYQTMZYPBYWRFQYKQSYSLZDQJMPXYYSSRHZJNYWTQDFZBWWTWWRXCWHGYHXMKMYYYQMSMZHNGCEPMLQQMTCWCTMMPXJPJJHFXYYZSXZHTYBMSTSYJTTQQQYYLHYNPYQZLCYZHZWSMYLKFJXLWGXYPJYTYSYXYMZCKTTWLKSMZSYLMPWLZWXWQZSSAQSYXYRHSSNTSRAPXCPWCMGDXHXZDZYFJHGZTTSBJHGYZSZYSMYCLLLXBTYXHBBZJKSSDMALXHYCFYGMQYPJYCQXJLLLJGSLZGQLYCJCCZOTYXMTMTTLLWTGPXYMZMKLPSZZZXHKQYSXCTYJZYHXSHYXZKXLZWPSQPYHJWPJPWXQQYLXSDHMRSLZZYZWTTCYXYSZZSHBSCCSTPLWSSCJCHNLCGCHSSPHYLHFHHXJSXYLLNYLSZDHZXYLSXLWZYKCLDYAXZCMDDYSPJTQJZLNWQPSSSWCTSTSZLBLNXSMNYYMJQBQHRZWTYYDCHQLXKPZWBGQYBKFCMZWPZLLYYLSZYDWHXPSBCMLJBSCGBHXLQHYRLJXYSWXWXZSLDFHLSLYNJLZYFLYJYCDRJLFSYZFSLLCQYQFGJYHYXZLYLMSTDJCYHBZLLNWLXXYGYYHSMGDHXXHHLZZJZXCZZZCYQZFNGWPYLCPKPYYPMCLQKDGXZGGWQBDXZZKZFBXXLZXJTPJPTTBYTSZZDWSLCHZHSLTYXHQLHYXXXYYZYSWTXZKHLXZXZPYHGCHKCFSYHUTJRLXFJXPTZTWHPLYXFCRHXSHXKYXXYHZQDXQWULHYHMJTBFLKHTXCWHJFWJCFPQRYQXCYYYQYGRPYWSGSUNGWCHKZDXYFLXXHJJBYZWTSXXNCYJJYMSWZJQRMHXZWFQSYLZJZGBHYNSLBGTTCSYBYXXWXYHXYYXNSQYXMQYWRGYQLXBBZLJSYLPSYTJZYHYZAWLRORJMKSCZJXXXYXCHDYXRYXXJDTSQFXLYLTSFFYXLMTYJMJUYYYXLTZCSXQZQHZXLYYXZHDNBRXXXJCTYHLBRLMBRLLAXKYLLLJLYXXLYCRYLCJTGJCMTLZLLCYZZPZPCYAWHJJFYBDYYZSMPCKZDQYQPBPCJPDCYZMDPBCYYDYCNNPLMTMLRMFMMGWYZBSJGYGSMZQQQZTXMKQWGXLLPJGZBQCDJJJFPKJKCXBLJMSWMDTQJXLDLPPBXCWRCQFBFQJCZAHZGMYKPHYYHZYKNDKZMBPJYXPXYHLFPNYYGXJDBKXNXHJMZJXSTRSTLDXSKZYSYBZXJLXYSLBZYSLHXJPFXPQNBYLLJQKYGZMCYZZYMCCSLCLHZFWFWYXZMWSXTYNXJHPYYMCYSPMHYSMYDYSHQYZCHMJJMZCAAGCFJBBHPLYZYLXXSDJGXDHKXXTXXNBHRMLYJSLTXMRHNLXQJXYZLLYSWQGDLBJHDCGJYQYCMHWFMJYBMBYJYJWYMDPWHXQLDYGPDFXXBCGJSPCKRSSYZJMSLBZZJFLJJJLGXZGYXYXLSZQYXBEXYXHGCXBPLDYHWETTWWCJMBTXCHXYQXLLXFLYXLLJLSSFWDPZSMYJCLMWYTCZPCHQEKCQBWLCQYDPLQPPQZQFJQDJHYMMCXTXDRMJWRHXCJZYLQXDYYNHYYHRSLSRSYWWZJYMTLTLLGTQCJZYABTCKZCJYCCQLJZQXALMZYHYWLWDXZXQDLLQSHGPJFJLJHJABCQZDJGTKHSSTCYJLPSWZLXZXRWGLDLZRLZXTGSLLLLZLYXXWGDZYGBDPHZPBRLWSXQBPFDWOFMWHLYPCBJCCLDMBZPBZZLCYQXLDOMZBLZWPDWYYGDSTTHCSQSCCRSSSYSLFYBFNTYJSZDFNDPDHDZZMBBLSLCMYFFGTJJQWFTMTPJWFNLBZCMMJTGBDZLQLPYFHYYMJYLSDCHDZJWJCCTLJCLDTLJJCPDDSQDSSZYBNDBJLGGJZXSXNLYCYBJXQYCBYLZCFZPPGKCXZDZFZTJJFJSJXZBNZYJQTTYJYHTYCZHYMDJXTTMPXSPLZCDWSLSHXYPZGTFMLCJTYCBPMGDKWYCYZCDSZZYHFLYCTYGWHKJYYLSJCXGYWJCBLLCSNDDBTZBSCLYZCZZSSQDLLMQYYHFSLQLLXFTYHABXGWNYWYYPLLSDLDLLBJCYXJZMLHLJDXYYQYTDLLLBUGBFDFBBQJZZMDPJHGCLGMJJPGAEHHBWCQXAXHHHZCHXYPHJAXHLPHJPGPZJQCQZGJJZZUZDMQYYBZZPHYHYBWHAZYJHYKFGDPFQSDLZMLJXKXGALXZDAGLMDGXMWZQYXXDXXPFDMMSSYMPFMDMMKXKSYZYSHDZKXSYSMMZZZMSYDNZZCZXFPLSTMZDNMXCKJMZTYYMZMZZMSXHHDCZJEMXXKLJSTLWLSQLYJZLLZJSSDPPMHNLZJCZYHMXXHGZCJMDHXTKGRMXFWMCGMWKDTKSXQMMMFZZYDKMSCLCMPCGMHSPXQPZDSSLCXKYXTWLWJYAHZJGZQMCSNXYYMMPMLKJXMHLMLQMXCTKZMJQYSZJSYSZHSYJZJCDAJZYBSDQJZGWZQQXFKDMSDJLFWEHKZQKJPEYPZYSZCDWYJFFMZZYLTTDZZEFMZLBNPPLPLPEPSZALLTYLKCKQZKGENQLWAGYXYDPXLHSXQQWQCQXQCLHYXXMLYCCWLYMQYSKGCHLCJNSZKPYZKCQZQLJPDMDZHLASXLBYDWQLWDNBQCRYDDZTJYBKBWSZDXDTNPJDTCTQDFXQQMGNXECLTTBKPWSLCTYQLPWYZZKLPYGZCQQPLLKCCYLPQMZCZQCLJSLQZDJXLDDHPZQDLJJXZQDXYZQKZLJCYQDYJPPYPQYKJYRMPCBYMCXKLLZLLFQPYLLLMBSGLCYSSLRSYSQTMXYXZQZFDZUYSYZTFFMZZSMZQHZSSCCMLYXWTPZGXZJGZGSJSGKDDHTQGGZLLBJDZLCBCHYXYZHZFYWXYZYMSDBZZYJGTSMTFXQYXQSTDGSLNXDLRYZZLRYYLXQHTXSRTZNGZXBNQQZFMYKMZJBZYMKBPNLYZPBLMCNQYZZZSJZHJCTZKHYZZJRDYZHNPXGLFZTLKGJTCTSSYLLGZRZBBQZZKLPKLCZYSSUYXBJFPNJZZXCDWXZYJXZZDJJKGGRSRJKMSMZJLSJYWQSKYHQJSXPJZZZLSNSHRNYPZTWCHKLPSRZLZXYJQXQKYSJYCZTLQZYBBYBWZPQDWWYZCYTJCJXCKCWDKKZXSGKDZXWWYYJQYYTCYTDLLXWKCZKKLCCLZCQQDZLQLCSFQCHQHSFSMQZZLNBJJZBSJHTSZDYSJQJPDLZCDCWJKJZZLPYCGMZWDJJBSJQZSYZYHHXJPBJYDSSXDZNCGLQMBTSFSBPDZDLZNFGFJGFSMPXJQLMBLGQCYYXBQKDJJQYRFKZTJDHCZKLBSDZCFJTPLLJGXHYXZCSSZZXSTJYGKGCKGYOQXJPLZPBPGTGYJZGHZQZZLBJLSQFZGKQQJZGYCZBZQTLDXRJXBSXXPZXHYZYCLWDXJJHXMFDZPFZHQHQMQGKSLYHTYCGFRZGNQXCLPDLBZCSCZQLLJBLHBZCYPZZPPDYMZZSGYHCKCPZJGSLJLNSCDSLDLXBMSTLDDFJMKDJDHZLZXLSZQPQPGJLLYBDSZGQLBZLSLKYYHZTTNTJYQTZZPSZQZTLLJTYYLLQLLQYZQLBDZLSLYYZYMDFSZSNHLXZNCZQZPBWSKRFBSYZMTHBLGJPMCZZLSTLXSHTCSYZLZBLFEQHLXFLCJLYLJQCBZLZJHHSSTBRMHXZHJZCLXFNBGXGTQJCZTMSFZKJMSSNXLJKBHSJXNTNLZDNTLMSJXGZJYJCZXYJYJWRWWQNZTNFJSZPZSHZJFYRDJSFSZJZBJFZQZZHZLXFYSBZQLZSGYFTZDCSZXZJBQMSZKJRHYJZCKMJKHCHGTXKXQGLXPXFXTRTYLXJXHDTSJXHJZJXZWZLCQSBTXWXGXTXXHXFTSDKFJHZYJFJXRZSDLLLTQSQQZQWZXSYQTWGWBZCGZLLYZBCLMQQTZHZXZXLJFRMYZFLXYSQXXJKXRMQDZDMMYYBSQBHGZMWFWXGMXLZPYYTGZYCCDXYZXYWGSYJYZNBHPZJSQSYXSXRTFYZGRHZTXSZZTHCBFCLSYXZLZQMZLMPLMXZJXSFLBYZMYQHXJSXRXSQZZZSSLYFRCZJRCRXHHZXQYDYHXSJJHZCXZBTYNSYSXJBQLPXZQPYMLXZKYXLXCJLCYSXXZZLXDLLLJJYHZXGYJWKJRWYHCPSGNRZLFZWFZZNSXGXFLZSXZZZBFCSYJDBRJKRDHHGXJLJJTGXJXXSTJTJXLYXQFCSGSWMSBCTLQZZWLZZKXJMLTMJYHSDDBXGZHDLBMYJFRZFSGCLYJBPMLYSMSXLSZJQQHJZFXGFQFQBPXZGYYQXGZTCQWYLTLGWSGWHRLFSFGZJMGMGBGTJFSYZZGZYZAFLSSPMLPFLCWBJZCLJJMZLPJJLYMQDMYYYFBGYGYZMLYZDXQYXRQQQHSYYYQXYLJTYXFSFSLLGNQCYHYCWFHCCCFXPYLYPLLZYXXXXXKQHHXSHJZCFZSCZJXCPZWHHHHHAPYLQALPQAFYHXDYLUKMZQGGGDDESRNNZLTZGCHYPPYSQJJHCLLJTOLNJPZLJLHYMHEYDYDSQYCDDHGZUNDZCLZYZLLZNTNYZGSLHSLPJJBDGWXPCDUTJCKLKCLWKLLCASSTKZZDNQNTTLYYZSSYSSZZRYLJQKCQDHHCRXRZYDGRGCWCGZQFFFPPJFZYNAKRGYWYQPQXXFKJTSZZXSWZDDFBBXTBGTZKZNPZZPZXZPJSZBMQHKCYXYLDKLJNYPKYGHGDZJXXEAHPNZKZTZCMXCXMMJXNKSZQNMNLWBWWXJKYHCPSTMCSQTZJYXTPCTPDTNNPGLLLZSJLSPBLPLQHDTNJNLYYRSZFFJFQWDPHZDWMRZCCLODAXNSSNYZRESTYJWJYJDBCFXNMWTTBYLWSTSZGYBLJPXGLBOCLHPCBJLTMXZLJYLZXCLTPNCLCKXTPZJSWCYXSFYSZDKNTLBYJCYJLLSTGQCBXRYZXBXKLYLHZLQZLNZCXWJZLJZJNCJHXMNZZGJZZXTZJXYCYYCXXJYYXJJXSSSJSTSSTTPPGQTCSXWZDCSYFPTFBFHFBBLZJCLZZDBXGCXLQPXKFZFLSYLTUWBMQJHSZBMDDBCYSCCLDXYCDDQLYJJWMQLLCSGLJJSYFPYYCCYLTJANTJJPWYCMMGQYYSXDXQMZHSZXPFTWWZQSWQRFKJLZJQQYFBRXJHHFWJJZYQAZMYFRHCYYBYQWLPEXCCZSTYRLTTDMQLYKMBBGMYYJPRKZNPBSXYXBHYZDJDNGHPMFSGMWFZMFQMMBCMZZCJJLCNUXYQLMLRYGQZCYXZLWJGCJCGGMCJNFYZZJHYCPRRCMTZQZXHFQGTJXCCJEAQCRJYHPLQLSZDJRBCQHQDYRHYLYXJSYMHZYDWLDFRYHBPYDTSSCNWBXGLPZMLZZTQSSCPJMXXYCSJYTYCGHYCJWYRXXLFEMWJNMKLLSWTXHYYYNCMMCWJDQDJZGLLJWJRKHPZGGFLCCSCZMCBLTBHBQJXQDSPDJZZGKGLFQYWBZYZJLTSTDHQHCTCBCHFLQMPWDSHYYTQWCNZZJTLBYMBPDYYYXSQKXWYYFLXXNCWCXYPMAELYKKJMZZZBRXYYQJFLJPFHHHYTZZXSGQQMHSPGDZQWBWPJHZJDYSCQWZKTXXSQLZYYMYSDZGRXCKKUJLWPYSYSCSYZLRMLQSYLJXBCXTLWDQZPCYCYKPPPNSXFYZJJRCEMHSZMSXLXGLRWGCSTLRSXBZGBZGZTCPLUJLSLYLYMTXMTZPALZXPXJTJWTCYYZLBLXBZLQMYLXPGHDSLSSDMXMBDZZSXWHAMLCZCPJMCNHJYSNSYGCHSKQMZZQDLLKABLWJXSFMOCDXJRRLYQZKJMYBYQLYHETFJZFRFKSRYXFJTWDSXXSYSQJYSLYXWJHSNLXYYXHBHAWHHJZXWMYLJCSSLKYDZTXBZSYFDXGXZJKHSXXYBSSXDPYNZWRPTQZCZENYGCXQFJYKJBZMLJCMQQXUOXSLYXXLYLLJDZBTYMHPFSTTQQWLHOKYBLZZALZXQLHZWRRQHLSTMYPYXJJXMQSJFNBXYXYJXXYQYLTHYLQYFMLKLJTMLLHSZWKZHLJMLHLJKLJSTLQXYLMBHHLNLZXQJHXCFXXLHYHJJGBYZZKBXSCQDJQDSUJZYYHZHHMGSXCSYMXFEBCQWWRBPYYJQTYZCYQYQQZYHMWFFHGZFRJFCDPXNTQYZPDYKHJLFRZXPPXZDBBGZQSTLGDGYLCQMLCHHMFYWLZYXKJLYPQHSYWMQQGQZMLZJNSQXJQSYJYCBEHSXFSZPXZWFLLBCYYJDYTDTHWZSFJMQQYJLMQXXLLDTTKHHYBFPWTYYSQQWNQWLGWDEBZWCMYGCULKJXTMXMYJSXHYBRWFYMWFRXYQMXYSZTZZTFYKMLDHQDXWYYNLCRYJBLPSXCXYWLSPRRJWXHQYPHTYDNXHHMMYWYTZCSQMTSSCCDALWZTCPQPYJLLQZYJSWXMZZMMYLMXCLMXCZMXMZSQTZPPQQBLPGXQZHFLJJHYTJSRXWZXSCCDLXTYJDCQJXSLQYCLZXLZZXMXQRJMHRHZJBHMFLJLMLCLQNLDXZLLLPYPSYJYSXCQQDCMQJZZXHNPNXZMEKMXHYKYQLXSXTXJYYHWDCWDZHQYYBGYBCYSCFGPSJNZDYZZJZXRZRQJJYMCANYRJTLDPPYZBSTJKXXZYPFDWFGZZRPYMTNGXZQBYXNBUFNQKRJQZMJEGRZGYCLKXZDSKKNSXKCLJSPJYYZLQQJYBZSSQLLLKJXTBKTYLCCDDBLSPPFYLGYDTZJYQGGKQTTFZXBDKTYYHYBBFYTYYBCLPDYTGDHRYRNJSPTCSNYJQHKLLLZSLYDXXWBCJQSPXBPJZJCJDZFFXXBRMLAZHCSNDLBJDSZBLPRZTSWSBXBCLLXXLZDJZSJPYLYXXYFTFFFBHJJXGBYXJPMMMPSSJZJMTLYZJXSWXTYLEDQPJMYGQZJGDJLQJWJQLLSJGJGYGMSCLJJXDTYGJQJQJCJZCJGDZZSXQGSJGGCXHQXSNQLZZBXHSGZXCXYLJXYXYYDFQQJHJFXDHCTXJYRXYSQTJXYEFYYSSYYJXNCYZXFXMSYSZXYYSCHSHXZZZGZZZGFJDLTYLNPZGYJYZYYQZPBXQBDZTZCZYXXYHHSQXSHDHGQHJHGYWSZTMZMLHYXGEBTYLZKQWYTJZRCLEKYSTDBCYKQQSAYXCJXWWGSBHJYZYDHCSJKQCXSWXFLTYNYZPZCCZJQTZWJQDZZZQZLJJXLSBHPYXXPSXSHHEZTXFPTLQYZZXHYTXNCFZYYHXGNXMYWXTZSJPTHHGYMXMXQZXTSBCZYJYXXTYYZYPCQLMMSZMJZZLLZXGXZAAJZYXJMZXWDXZSXZDZXLEYJJZQBHZWZZZQTZPSXZTDSXJJJZNYAZPHXYYSRNQDTHZHYYKYJHDZXZLSWCLYBZYECWCYCRYLCXNHZYDZYDYJDFRJJHTRSQTXYXJRJHOJYNXELXSFSFJZGHPZSXZSZDZCQZBYYKLSGSJHCZSHDGQGXYZGXCHXZJWYQWGYHKSSEQZZNDZFKWYSSTCLZSTSYMCDHJXXYWEYXCZAYDMPXMDSXYBSQMJMZJMTZQLPJYQZCGQHXJHHLXXHLHDLDJQCLDWBSXFZZYYSCHTYTYYBHECXHYKGJPXHHYZJFXHWHBDZFYZBCAPNPGNYDMSXHMMMMAMYNBYJTMPXYYMCTHJBZYFCGTYHWPHFTWZZEZSBZEGPFMTSKFTYCMHFLLHGPZJXZJGZJYXZSBBQSCZZLZCCSTPGXMJSFTCCZJZDJXCYBZLFCJSYZFGSZLYBCWZZBYZDZYPSWYJZXZBDSYUXLZZBZFYGCZXBZHZFTPBGZGEJBSTGKDMFHYZZJHZLLZZGJQZLSFDJSSCBZGPDLFZFZSZYZYZSYGCXSNXXCHCZXTZZLJFZGQSQYXZJQDCCZTQCDXZJYQJQCHXZTDLGSCXZSYQJQTZWLQDQZTQCHQQJZYEZZZPBWKDJFCJPZTYPQYQTTYNLMBDKTJZPQZQZZFPZSBNJLGYJDXJDZZKZGQKXDLPZJTCJDQBXDJQJSTCKNXBXZMSLYJCQMTJQWWCJQNJNLLLHJCWQTBZQYDZCZPZZDZYDDCYZZZCCJTTJFZDPRRTZTJDCQTQZDTJNPLZBCLLCTZSXKJZQZPZLBZRBTJDCXFCZDBCCJJLTQQPLDCGZDBBZJCQDCJWYNLLZYZCCDWLLXWZLXRXNTQQCZXKQLSGDFQTDDGLRLAJJTKUYMKQLLTZYTDYYCZGJWYXDXFRSKSTQTENQMRKQZHHQKDLDAZFKYPBGGPZREBZZYKZZSPEGJXGYKQZZZSLYSYYYZWFQZYLZZLZHWCHKYPQGNPGBLPLRRJYXCCSYYHSFZFYBZYYTGZXYLXCZWXXZJZBLFFLGSKHYJZEYJHLPLLLLCZGXDRZELRHGKLZZYHZLYQSZZJZQLJZFLNBHGWLCZCFJYSPYXZLZLXGCCPZBLLCYBBBBUBBCBPCRNNZCZYRBFSRLDCGQYYQXYGMQZWTZYTYJXYFWTEHZZJYWLCCNTZYJJZDEDPZDZTSYQJHDYMBJNYJZLXTSSTPHNDJXXBYXQTZQDDTJTDYYTGWSCSZQFLSHLGLBCZPHDLYZJYCKWTYTYLBNYTSDSYCCTYSZYYEBHEXHQDTWNYGYCLXTSZYSTQMYGZAZCCSZZDSLZCLZRQXYYELJSBYMXSXZTEMBBLLYYLLYTDQYSHYMRQWKFKBFXNXSBYCHXBWJYHTQBPBSBWDZYLKGZSKYHXQZJXHXJXGNLJKZLYYCDXLFYFGHLJGJYBXQLYBXQPQGZTZPLNCYPXDJYQYDYMRBESJYYHKXXSTMXRCZZYWXYQYBMCLLYZHQYZWQXDBXBZWZMSLPDMYSKFMZKLZCYQYCZLQXFZZYDQZPZYGYJYZMZXDZFYFYTTQTZHGSPCZMLCCYTZXJCYTJMKSLPZHYSNZLLYTPZCTZZCKTXDHXXTQCYFKSMQCCYYAZHTJPCYLZLYJBJXTPNYLJYYNRXSYLMMNXJSMYBCSYSYLZYLXJJQYLDZLPQBFZZBLFNDXQKCZFYWHGQMRDSXYCYTXNQQJZYYPFZXDYZFPRXEJDGYQBXRCNFYYQPGHYJDYZXGRHTKYLNWDZNTSMPKLBTHBPYSZBZTJZSZZJTYYXZPHSSZZBZCZPTQFZMYFLYPYBBJQXZMXXDJMTSYSKKBJZXHJCKLPSMKYJZCXTMLJYXRZZQSLXXQPYZXMKYXXXJCLJPRMYYGADYSKQLSNDHYZKQXZYZTCGHZTLMLWZYBWSYCTBHJHJFCWZTXWYTKZLXQSHLYJZJXTMPLPYCGLTBZZTLZJCYJGDTCLKLPLLQPJMZPAPXYZLKKTKDZCZZBNZDYDYQZJYJGMCTXLTGXSZLMLHBGLKFWNWZHDXUHLFMKYSLGXDTWWFRJEJZTZHYDXYKSHWFZCQSHKTMQQHTZHYMJDJSKHXZJZBZZXYMPAGQMSTPXLSKLZYNWRTSQLSZBPSPSGZWYHTLKSSSWHZZLYYTNXJGMJSZSUFWNLSOZTXGXLSAMMLBWLDSZYLAKQCQCTMYCFJBSLXCLZZCLXXKSBZQCLHJPSQPLSXXCKSLNHPSFQQYTXYJZLQLDXZQJZDYYDJNZPTUZDSKJFSLJHYLZSQZLBTXYDGTQFDBYAZXDZHZJNHHQBYKNXJJQCZMLLJZKSPLDYCLBBLXKLELXJLBQYCXJXGCNLCQPLZLZYJTZLJGYZDZPLTQCSXFDMNYCXGBTJDCZNBGBQYQJWGKFHTNPYQZQGBKPBBYZMTJDYTBLSQMPSXTBNPDXKLEMYYCJYNZCTLDYKZZXDDXHQSHDGMZSJYCCTAYRZLPYLTLKXSLZCGGEXCLFXLKJRTLQJAQZNCMBYDKKCXGLCZJZXJHPTDJJMZQYKQSECQZDSHHADMLZFMMZBGNTJNNLGBYJBRBTMLBYJDZXLCJLPLDLPCQDHLXZLYCBLCXZZJADJLNZMMSSSMYBHBSQKBHRSXXJMXSDZNZPXLGBRHWGGFCXGMSKLLTSJYYCQLTSKYWYYHYWXBXQYWPYWYKQLSQPTNTKHQCWDQKTWPXXHCPTHTWUMSSYHBWCRWXHJMKMZNGWTMLKFGHKJYLSYYCXWHYECLQHKQHTTQKHFZLDXQWYZYYDESBPKYRZPJFYYZJCEQDZZDLATZBBFJLLCXDLMJSSXEGYGSJQXCWBXSSZPDYZCXDNYXPPZYDLYJCZPLTXLSXYZYRXCYYYDYLWWNZSAHJSYQYHGYWWAXTJZDAXYSRLTDPSSYYFNEJDXYZHLXLLLZQZSJNYQYQQXYJGHZGZCYJCHZLYCDSHWSHJZYJXCLLNXZJJYYXNFXMWFPYLCYLLABWDDHWDXJMCXZTZPMLQZHSFHZYNZTLLDYWLSLXHYMMYLMBWWKYXYADTXYLLDJPYBPWUXJMWMLLSAFDLLYFLBHHHBQQLTZJCQJLDJTFFKMMMBYTHYGDCQRDDWRQJXNBYSNWZDBYYTBJHPYBYTTJXAAHGQDQTMYSTQXKBTZPKJLZRBEQQSSMJJBDJOTGTBXPGBKTLHQXJJJCTHXQDWJLWRFWQGWSHCKRYSWGFTGYGBXSDWDWRFHWYTJJXXXJYZYSLPYYYPAYXHYDQKXSHXYXGSKQHYWFDDDPPLCJLQQEEWXKSYYKDYPLTJTHKJLTCYYHHJTTPLTZZCDLTHQKZXQYSTEEYWYYZYXXYYSTTJKLLPZMCYHQGXYHSRMBXPLLNQYDQHXSXXWGDQBSHYLLPJJJTHYJKYPPTHYYKTYEZYENMDSHLCRPQFDGFXZPSFTLJXXJBSWYYSKSFLXLPPLBBBLBSFXFYZBSJSSYLPBBFFFFSSCJDSTZSXZRYYSYFFSYZYZBJTBCTSBSDHRTJJBYTCXYJEYLXCBNEBJDSYXYKGSJZBXBYTFZWGENYHHTHZHHXFWGCSTBGXKLSXYWMTMBYXJSTZSCDYQRCYTWXZFHMYMCXLZNSDJTTTXRYCFYJSBSDYERXJLJXBBDEYNJGHXGCKGSCYMBLXJMSZNSKGXFBNBPTHFJAAFXYXFPXMYPQDTZCXZZPXRSYWZDLYBBKTYQPQJPZYPZJZNJPZJLZZFYSBTTSLMPTZRTDXQSJEHBZYLZDHLJSQMLHTXTJECXSLZZSPKTLZKQQYFSYGYWPCPQFHQHYTQXZKRSGTTSQCZLPTXCDYYZXSQZSLXLZMYCPCQBZYXHBSXLZDLTCDXTYLZJYYZPZYZLTXJSJXHLPMYTXCQRBLZSSFJZZTNJYTXMYJHLHPPLCYXQJQQKZZSCPZKSWALQSBLCCZJSXGWWWYGYKTJBBZTDKHXHKGTGPBKQYSLPXPJCKBMLLXDZSTBKLGGQKQLSBKKTFXRMDKBFTPZFRTBBRFERQGXYJPZSSTLBZTPSZQZSJDHLJQLZBPMSMMSXLQQNHKNBLRDDNXXDHDDJCYYGYLXGZLXSYGMQQGKHBPMXYXLYTQWLWGCPBMQXCYZYDRJBHTDJYHQSHTMJSBYPLWHLZFFNYPMHXXHPLTBQPFBJWQDBYGPNZTPFZJGSDDTQSHZEAWZZYLLTYYBWJKXXGHLFKXDJTMSZSQYNZGGSWQSPHTLSSKMCLZXYSZQZXNCJDQGZDLFNYKLJCJLLZLMZZNHYDSSHTHZZLZZBBHQZWWYCRZHLYQQJBEYFXXXWHSRXWQHWPSLMSSKZTTYGYQQWRSLALHMJTQJSMXQBJJZJXZYZKXBYQXBJXSHZTSFJLXMXZXFGHKZSZGGYLCLSARJYHSLLLMZXELGLXYDJYTLFBHBPNLYZFBBHPTGJKWETZHKJJXZXXGLLJLSTGSHJJYQLQZFKCGNNDJSSZFDBCTWWSEQFHQJBSAQTGYPQLBXBMMYWXGSLZHGLZGQYFLZBYFZJFRYSFMBYZHQGFWZSYFYJJPHZBYYZFFWODGRLMFTWLBZGYCQXCDJYGZYYYYTYTYDWEGAZYHXJLZYYHLRMGRXXZCLHNELJJTJTPWJYBJJBXJJTJTEEKHWSLJPLPSFYZPQQBDLQJJTYYQLYZKDKSQJYYQZLDQTGJQYZJSUCMRYQTHTEJMFCTYHYPKMHYZWJDQFHYYXWSHCTXRLJHQXHCCYYYJLTKTTYTMXGTCJTZAYYOCZLYLBSZYWJYTSJYHBYSHFJLYGJXXTMZYYLTXXYPZLXYJZYZYYPNHMYMDYYLBLHLSYYQQLLNJJYMSOYQBZGDLYXYLCQYXTSZEGXHZGLHWBLJHEYXTWQMAKBPQCGYSHHEGQCMWYYWLJYJHYYZLLJJYLHZYHMGSLJLJXCJJYCLYCJPCPZJZJMMYLCQLNQLJQJSXYJMLSZLJQLYCMMHCFMMFPQQMFYLQMCFFQMMMMHMZNFHHJGTTHHKHSLNCHHYQDXTMMQDCYZYXYQMYQYLTDCYYYZAZZCYMZYDLZFFFMMYCQZWZZMABTBYZTDMNZZGGDFTYPCGQYTTSSFFWFDTZQSSYSTWXJHXYTSXXYLBYQHWWKXHZXWZNNZZJZJJQJCCCHYYXBZXZCYZTLLCQXYNJYCYYCYNZZQYYYEWYCZDCJYCCHYJLBTZYYCQWMPWPYMLGKDLDLGKQQBGYCHJXY\"\r\nconst full_dict: any = { \"a\": \"\\u554a\\u963f\\u9515\", \"ai\": \"\\u57c3\\u6328\\u54ce\\u5509\\u54c0\\u7691\\u764c\\u853c\\u77ee\\u827e\\u788d\\u7231\\u9698\\u8bf6\\u6371\\u55f3\\u55cc\\u5ad2\\u7477\\u66a7\\u7839\\u953f\\u972d\", \"an\": \"\\u978d\\u6c28\\u5b89\\u4ffa\\u6309\\u6697\\u5cb8\\u80fa\\u6848\\u8c19\\u57ef\\u63de\\u72b4\\u5eb5\\u6849\\u94f5\\u9e4c\\u9878\\u9eef\", \"ang\": \"\\u80ae\\u6602\\u76ce\", \"ao\": \"\\u51f9\\u6556\\u71ac\\u7ff1\\u8884\\u50b2\\u5965\\u61ca\\u6fb3\\u5773\\u62d7\\u55f7\\u5662\\u5c99\\u5ed2\\u9068\\u5aaa\\u9a9c\\u8071\\u87af\\u93ca\\u9ccc\\u93d6\", \"ba\": \"\\u82ad\\u634c\\u6252\\u53ed\\u5427\\u7b06\\u516b\\u75a4\\u5df4\\u62d4\\u8dcb\\u9776\\u628a\\u8019\\u575d\\u9738\\u7f62\\u7238\\u8307\\u83dd\\u8406\\u636d\\u5c9c\\u705e\\u6777\\u94af\\u7c91\\u9c85\\u9b43\", \"bai\": \"\\u767d\\u67cf\\u767e\\u6446\\u4f70\\u8d25\\u62dc\\u7a17\\u859c\\u63b0\\u97b4\", \"ban\": \"\\u6591\\u73ed\\u642c\\u6273\\u822c\\u9881\\u677f\\u7248\\u626e\\u62cc\\u4f34\\u74e3\\u534a\\u529e\\u7eca\\u962a\\u5742\\u8c73\\u94a3\\u7622\\u764d\\u8228\", \"bang\": \"\\u90a6\\u5e2e\\u6886\\u699c\\u8180\\u7ed1\\u68d2\\u78c5\\u868c\\u9551\\u508d\\u8c24\\u84a1\\u8783\", \"bao\": \"\\u82de\\u80de\\u5305\\u8912\\u96f9\\u4fdd\\u5821\\u9971\\u5b9d\\u62b1\\u62a5\\u66b4\\u8c79\\u9c8d\\u7206\\u52f9\\u8446\\u5b80\\u5b62\\u7172\\u9e28\\u8913\\u8db5\\u9f85\", \"bo\": \"\\u5265\\u8584\\u73bb\\u83e0\\u64ad\\u62e8\\u94b5\\u6ce2\\u535a\\u52c3\\u640f\\u94c2\\u7b94\\u4f2f\\u5e1b\\u8236\\u8116\\u818a\\u6e24\\u6cca\\u9a73\\u4eb3\\u8543\\u5575\\u997d\\u6a97\\u64d8\\u7934\\u94b9\\u9e41\\u7c38\\u8ddb\", \"bei\": \"\\u676f\\u7891\\u60b2\\u5351\\u5317\\u8f88\\u80cc\\u8d1d\\u94a1\\u500d\\u72c8\\u5907\\u60eb\\u7119\\u88ab\\u5b5b\\u9642\\u90b6\\u57e4\\u84d3\\u5457\\u602b\\u6096\\u789a\\u9e4e\\u8919\\u943e\", \"ben\": \"\\u5954\\u82ef\\u672c\\u7b28\\u755a\\u574c\\u951b\", \"beng\": \"\\u5d29\\u7ef7\\u752d\\u6cf5\\u8e66\\u8ff8\\u552a\\u5623\\u750f\", \"bi\": \"\\u903c\\u9f3b\\u6bd4\\u9119\\u7b14\\u5f7c\\u78a7\\u84d6\\u853d\\u6bd5\\u6bd9\\u6bd6\\u5e01\\u5e87\\u75f9\\u95ed\\u655d\\u5f0a\\u5fc5\\u8f9f\\u58c1\\u81c2\\u907f\\u965b\\u5315\\u4ef3\\u4ffe\\u8298\\u835c\\u8378\\u5421\\u54d4\\u72f4\\u5eb3\\u610e\\u6ed7\\u6fde\\u5f3c\\u59a3\\u5a62\\u5b16\\u74a7\\u8d32\\u7540\\u94cb\\u79d5\\u88e8\\u7b5a\\u7b85\\u7be6\\u822d\\u895e\\u8df8\\u9ac0\", \"bian\": \"\\u97ad\\u8fb9\\u7f16\\u8d2c\\u6241\\u4fbf\\u53d8\\u535e\\u8fa8\\u8fa9\\u8fab\\u904d\\u533e\\u5f01\\u82c4\\u5fed\\u6c74\\u7f0f\\u7178\\u782d\\u78a5\\u7a39\\u7a86\\u8759\\u7b3e\\u9cca\", \"biao\": \"\\u6807\\u5f6a\\u8198\\u8868\\u5a4a\\u9aa0\\u98d1\\u98d9\\u98da\\u706c\\u9556\\u9573\\u762d\\u88f1\\u9cd4\", \"bie\": \"\\u9cd6\\u618b\\u522b\\u762a\\u8e69\\u9cd8\", \"bin\": \"\\u5f6c\\u658c\\u6fd2\\u6ee8\\u5bbe\\u6448\\u50a7\\u6d5c\\u7f24\\u73a2\\u6ba1\\u8191\\u9554\\u9acc\\u9b13\", \"bing\": \"\\u5175\\u51b0\\u67c4\\u4e19\\u79c9\\u997c\\u70b3\\u75c5\\u5e76\\u7980\\u90b4\\u6452\\u7ee0\\u678b\\u69df\\u71f9\", \"bu\": \"\\u6355\\u535c\\u54fa\\u8865\\u57e0\\u4e0d\\u5e03\\u6b65\\u7c3f\\u90e8\\u6016\\u62ca\\u535f\\u900b\\u74ff\\u6661\\u949a\\u91ad\", \"ca\": \"\\u64e6\\u5693\\u7924\", \"cai\": \"\\u731c\\u88c1\\u6750\\u624d\\u8d22\\u776c\\u8e29\\u91c7\\u5f69\\u83dc\\u8521\", \"can\": \"\\u9910\\u53c2\\u8695\\u6b8b\\u60ed\\u60e8\\u707f\\u9a96\\u74a8\\u7cb2\\u9eea\", \"cang\": \"\\u82cd\\u8231\\u4ed3\\u6ca7\\u85cf\\u4f27\", \"cao\": \"\\u64cd\\u7cd9\\u69fd\\u66f9\\u8349\\u8279\\u5608\\u6f15\\u87ac\\u825a\", \"ce\": \"\\u5395\\u7b56\\u4fa7\\u518c\\u6d4b\\u5202\\u5e3b\\u607b\", \"ceng\": \"\\u5c42\\u8e6d\\u564c\", \"cha\": \"\\u63d2\\u53c9\\u832c\\u8336\\u67e5\\u78b4\\u643d\\u5bdf\\u5c94\\u5dee\\u8be7\\u7339\\u9987\\u6c4a\\u59f9\\u6748\\u6942\\u69ce\\u6aab\\u9497\\u9538\\u9572\\u8869\", \"chai\": \"\\u62c6\\u67f4\\u8c7a\\u4faa\\u8308\\u7625\\u867f\\u9f87\", \"chan\": \"\\u6400\\u63ba\\u8749\\u998b\\u8c17\\u7f20\\u94f2\\u4ea7\\u9610\\u98a4\\u5181\\u8c04\\u8c36\\u8487\\u5edb\\u5fcf\\u6f7a\\u6fb6\\u5b71\\u7fbc\\u5a75\\u5b17\\u9aa3\\u89c7\\u7985\\u9561\\u88e3\\u87fe\\u8e94\", \"chang\": \"\\u660c\\u7316\\u573a\\u5c1d\\u5e38\\u957f\\u507f\\u80a0\\u5382\\u655e\\u7545\\u5531\\u5021\\u4f25\\u9b2f\\u82cc\\u83d6\\u5f9c\\u6005\\u60dd\\u960a\\u5a3c\\u5ae6\\u6636\\u6c05\\u9cb3\", \"chao\": \"\\u8d85\\u6284\\u949e\\u671d\\u5632\\u6f6e\\u5de2\\u5435\\u7092\\u600a\\u7ec9\\u6641\\u8016\", \"che\": \"\\u8f66\\u626f\\u64a4\\u63a3\\u5f7b\\u6f88\\u577c\\u5c6e\\u7817\", \"chen\": \"\\u90f4\\u81e3\\u8fb0\\u5c18\\u6668\\u5ff1\\u6c89\\u9648\\u8d81\\u886c\\u79f0\\u8c0c\\u62bb\\u55d4\\u5bb8\\u741b\\u6987\\u809c\\u80c2\\u789c\\u9f80\", \"cheng\": \"\\u6491\\u57ce\\u6a59\\u6210\\u5448\\u4e58\\u7a0b\\u60e9\\u6f84\\u8bda\\u627f\\u901e\\u9a8b\\u79e4\\u57d5\\u5d4a\\u5fb5\\u6d48\\u67a8\\u67fd\\u6a18\\u665f\\u584d\\u77a0\\u94d6\\u88ce\\u86cf\\u9172\", \"chi\": \"\\u5403\\u75f4\\u6301\\u5319\\u6c60\\u8fdf\\u5f1b\\u9a70\\u803b\\u9f7f\\u4f88\\u5c3a\\u8d64\\u7fc5\\u65a5\\u70bd\\u50ba\\u5880\\u82aa\\u830c\\u640b\\u53f1\\u54e7\\u557b\\u55e4\\u5f73\\u996c\\u6cb2\\u5ab8\\u6555\\u80dd\\u7719\\u7735\\u9e31\\u761b\\u892b\\u86a9\\u87ad\\u7b1e\\u7bea\\u8c49\\u8e05\\u8e1f\\u9b51\", \"chong\": \"\\u5145\\u51b2\\u866b\\u5d07\\u5ba0\\u833a\\u5fe1\\u61a7\\u94f3\\u825f\", \"chou\": \"\\u62bd\\u916c\\u7574\\u8e0c\\u7a20\\u6101\\u7b79\\u4ec7\\u7ef8\\u7785\\u4e11\\u4fe6\\u5733\\u5e31\\u60c6\\u6eb4\\u59af\\u7633\\u96e0\\u9c8b\", \"chu\": \"\\u81ed\\u521d\\u51fa\\u6a71\\u53a8\\u8e87\\u9504\\u96cf\\u6ec1\\u9664\\u695a\\u7840\\u50a8\\u77d7\\u6410\\u89e6\\u5904\\u4e8d\\u520d\\u61b7\\u7ecc\\u6775\\u696e\\u6a17\\u870d\\u8e70\\u9edc\", \"chuan\": \"\\u63e3\\u5ddd\\u7a7f\\u693d\\u4f20\\u8239\\u5598\\u4e32\\u63be\\u821b\\u60f4\\u9044\\u5ddb\\u6c1a\\u948f\\u9569\\u8221\", \"chuang\": \"\\u75ae\\u7a97\\u5e62\\u5e8a\\u95ef\\u521b\\u6006\", \"chui\": \"\\u5439\\u708a\\u6376\\u9524\\u5782\\u9672\\u68f0\\u69cc\", \"chun\": \"\\u6625\\u693f\\u9187\\u5507\\u6df3\\u7eaf\\u8822\\u4fc3\\u83bc\\u6c8c\\u80ab\\u6710\\u9e51\\u877d\", \"chuo\": \"\\u6233\\u7ef0\\u851f\\u8fb6\\u8f8d\\u955e\\u8e14\\u9f8a\", \"ci\": \"\\u75b5\\u8328\\u78c1\\u96cc\\u8f9e\\u6148\\u74f7\\u8bcd\\u6b64\\u523a\\u8d50\\u6b21\\u8360\\u5472\\u5d6f\\u9e5a\\u8785\\u7ccd\\u8d91\", \"cong\": \"\\u806a\\u8471\\u56f1\\u5306\\u4ece\\u4e1b\\u506c\\u82c1\\u6dd9\\u9aa2\\u742e\\u7481\\u679e\", \"cu\": \"\\u51d1\\u7c97\\u918b\\u7c07\\u731d\\u6b82\\u8e59\", \"cuan\": \"\\u8e7f\\u7be1\\u7a9c\\u6c46\\u64ba\\u6615\\u7228\", \"cui\": \"\\u6467\\u5d14\\u50ac\\u8106\\u7601\\u7cb9\\u6dec\\u7fe0\\u8403\\u60b4\\u7480\\u69b1\\u96b9\", \"cun\": \"\\u6751\\u5b58\\u5bf8\\u78cb\\u5fd6\\u76b4\", \"cuo\": \"\\u64ae\\u6413\\u63aa\\u632b\\u9519\\u539d\\u811e\\u9509\\u77ec\\u75e4\\u9e7e\\u8e49\\u8e9c\", \"da\": \"\\u642d\\u8fbe\\u7b54\\u7629\\u6253\\u5927\\u8037\\u54d2\\u55d2\\u601b\\u59b2\\u75b8\\u8921\\u7b2a\\u977c\\u9791\", \"dai\": \"\\u5446\\u6b79\\u50a3\\u6234\\u5e26\\u6b86\\u4ee3\\u8d37\\u888b\\u5f85\\u902e\\u6020\\u57ed\\u7519\\u5454\\u5cb1\\u8fe8\\u902f\\u9a80\\u7ed0\\u73b3\\u9edb\", \"dan\": \"\\u803d\\u62c5\\u4e39\\u5355\\u90f8\\u63b8\\u80c6\\u65e6\\u6c2e\\u4f46\\u60ee\\u6de1\\u8bde\\u5f39\\u86cb\\u4ebb\\u510b\\u5369\\u840f\\u5556\\u6fb9\\u6a90\\u6b9a\\u8d55\\u7708\\u7605\\u8043\\u7baa\", \"dang\": \"\\u5f53\\u6321\\u515a\\u8361\\u6863\\u8c20\\u51fc\\u83ea\\u5b95\\u7800\\u94db\\u88c6\", \"dao\": \"\\u5200\\u6363\\u8e48\\u5012\\u5c9b\\u7977\\u5bfc\\u5230\\u7a3b\\u60bc\\u9053\\u76d7\\u53e8\\u5541\\u5fc9\\u6d2e\\u6c18\\u7118\\u5fd1\\u7e9b\", \"de\": \"\\u5fb7\\u5f97\\u7684\\u951d\", \"deng\": \"\\u8e6c\\u706f\\u767b\\u7b49\\u77aa\\u51f3\\u9093\\u5654\\u5d9d\\u6225\\u78f4\\u956b\\u7c26\", \"di\": \"\\u5824\\u4f4e\\u6ef4\\u8fea\\u654c\\u7b1b\\u72c4\\u6da4\\u7fdf\\u5ae1\\u62b5\\u5e95\\u5730\\u8482\\u7b2c\\u5e1d\\u5f1f\\u9012\\u7f14\\u6c10\\u7c74\\u8bcb\\u8c1b\\u90b8\\u577b\\u839c\\u837b\\u5600\\u5a23\\u67e2\\u68e3\\u89cc\\u7825\\u78b2\\u7747\\u955d\\u7f9d\\u9ab6\", \"dian\": \"\\u98a0\\u6382\\u6ec7\\u7898\\u70b9\\u5178\\u975b\\u57ab\\u7535\\u4f43\\u7538\\u5e97\\u60e6\\u5960\\u6dc0\\u6bbf\\u4e36\\u963d\\u576b\\u57dd\\u5dc5\\u73b7\\u765c\\u766b\\u7c1f\\u8e2e\", \"diao\": \"\\u7889\\u53fc\\u96d5\\u51cb\\u5201\\u6389\\u540a\\u9493\\u8c03\\u8f7a\\u94de\\u8729\\u7c9c\\u8c82\", \"die\": \"\\u8dcc\\u7239\\u789f\\u8776\\u8fed\\u8c0d\\u53e0\\u4f5a\\u57a4\\u581e\\u63f2\\u558b\\u6e2b\\u8f76\\u7252\\u74de\\u8936\\u800b\\u8e40\\u9cbd\\u9cce\", \"ding\": \"\\u4e01\\u76ef\\u53ee\\u9489\\u9876\\u9f0e\\u952d\\u5b9a\\u8ba2\\u4e22\\u4ec3\\u5576\\u738e\\u815a\\u7887\\u753a\\u94e4\\u7594\\u8035\\u914a\", \"dong\": \"\\u4e1c\\u51ac\\u8463\\u61c2\\u52a8\\u680b\\u4f97\\u606b\\u51bb\\u6d1e\\u578c\\u549a\\u5cbd\\u5cd2\\u5902\\u6c21\\u80e8\\u80f4\\u7850\\u9e2b\", \"dou\": \"\\u515c\\u6296\\u6597\\u9661\\u8c46\\u9017\\u75d8\\u8538\\u94ad\\u7aa6\\u7aac\\u86aa\\u7bfc\\u9161\", \"du\": \"\\u90fd\\u7763\\u6bd2\\u728a\\u72ec\\u8bfb\\u5835\\u7779\\u8d4c\\u675c\\u9540\\u809a\\u5ea6\\u6e21\\u5992\\u828f\\u561f\\u6e0e\\u691f\\u6a50\\u724d\\u8839\\u7b03\\u9ad1\\u9ee9\", \"duan\": \"\\u7aef\\u77ed\\u953b\\u6bb5\\u65ad\\u7f0e\\u5f56\\u6934\\u7145\\u7c16\", \"dui\": \"\\u5806\\u5151\\u961f\\u5bf9\\u603c\\u619d\\u7893\", \"dun\": \"\\u58a9\\u5428\\u8e72\\u6566\\u987f\\u56e4\\u949d\\u76fe\\u9041\\u7096\\u7818\\u7905\\u76f9\\u9566\\u8db8\", \"duo\": \"\\u6387\\u54c6\\u591a\\u593a\\u579b\\u8eb2\\u6735\\u8dfa\\u8235\\u5241\\u60f0\\u5815\\u5484\\u54da\\u7f0d\\u67c1\\u94ce\\u88f0\\u8e31\", \"e\": \"\\u86fe\\u5ce8\\u9e45\\u4fc4\\u989d\\u8bb9\\u5a25\\u6076\\u5384\\u627c\\u904f\\u9102\\u997f\\u5669\\u8c14\\u57a9\\u57ad\\u82ca\\u83aa\\u843c\\u5443\\u6115\\u5c59\\u5a40\\u8f6d\\u66f7\\u816d\\u786a\\u9507\\u9537\\u9e57\\u989a\\u9cc4\", \"en\": \"\\u6069\\u84bd\\u6441\\u5514\\u55ef\", \"er\": \"\\u800c\\u513f\\u8033\\u5c14\\u9975\\u6d31\\u4e8c\\u8d30\\u8fe9\\u73e5\\u94d2\\u9e38\\u9c95\", \"fa\": \"\\u53d1\\u7f5a\\u7b4f\\u4f10\\u4e4f\\u9600\\u6cd5\\u73d0\\u57a1\\u781d\", \"fan\": \"\\u85e9\\u5e06\\u756a\\u7ffb\\u6a0a\\u77fe\\u9492\\u7e41\\u51e1\\u70e6\\u53cd\\u8fd4\\u8303\\u8d29\\u72af\\u996d\\u6cdb\\u8629\\u5e61\\u72ad\\u68b5\\u6535\\u71d4\\u7548\\u8e6f\", \"fang\": \"\\u574a\\u82b3\\u65b9\\u80aa\\u623f\\u9632\\u59a8\\u4eff\\u8bbf\\u7eba\\u653e\\u531a\\u90a1\\u5f77\\u94ab\\u822b\\u9c82\", \"fei\": \"\\u83f2\\u975e\\u5561\\u98de\\u80a5\\u532a\\u8bfd\\u5420\\u80ba\\u5e9f\\u6cb8\\u8d39\\u82be\\u72d2\\u60b1\\u6ddd\\u5983\\u7ecb\\u7eef\\u69a7\\u8153\\u6590\\u6249\\u7953\\u7829\\u9544\\u75f1\\u871a\\u7bda\\u7fe1\\u970f\\u9cb1\", \"fen\": \"\\u82ac\\u915a\\u5429\\u6c1b\\u5206\\u7eb7\\u575f\\u711a\\u6c7e\\u7c89\\u594b\\u4efd\\u5fff\\u6124\\u7caa\\u507e\\u7035\\u68fc\\u610d\\u9cbc\\u9f22\", \"feng\": \"\\u4e30\\u5c01\\u67ab\\u8702\\u5cf0\\u950b\\u98ce\\u75af\\u70fd\\u9022\\u51af\\u7f1d\\u8bbd\\u5949\\u51e4\\u4ff8\\u9146\\u8451\\u6ca3\\u781c\", \"fu\": \"\\u4f5b\\u5426\\u592b\\u6577\\u80a4\\u5b75\\u6276\\u62c2\\u8f90\\u5e45\\u6c1f\\u7b26\\u4f0f\\u4fd8\\u670d\\u6d6e\\u6daa\\u798f\\u88b1\\u5f17\\u752b\\u629a\\u8f85\\u4fef\\u91dc\\u65a7\\u812f\\u8151\\u5e9c\\u8150\\u8d74\\u526f\\u8986\\u8d4b\\u590d\\u5085\\u4ed8\\u961c\\u7236\\u8179\\u8d1f\\u5bcc\\u8ba3\\u9644\\u5987\\u7f1a\\u5490\\u5310\\u51eb\\u90db\\u8299\\u82fb\\u832f\\u83a9\\u83d4\\u544b\\u5e5e\\u6ecf\\u8274\\u5b5a\\u9a78\\u7ec2\\u6874\\u8d59\\u9efb\\u9efc\\u7f58\\u7a03\\u99a5\\u864d\\u86a8\\u8709\\u8760\\u876e\\u9eb8\\u8dba\\u8dd7\\u9cc6\", \"ga\": \"\\u5676\\u560e\\u86e4\\u5c2c\\u5477\\u5c15\\u5c1c\\u65ee\\u9486\", \"gai\": \"\\u8be5\\u6539\\u6982\\u9499\\u76d6\\u6e89\\u4e10\\u9654\\u5793\\u6224\\u8d45\\u80f2\", \"gan\": \"\\u5e72\\u7518\\u6746\\u67d1\\u7aff\\u809d\\u8d76\\u611f\\u79c6\\u6562\\u8d63\\u5769\\u82f7\\u5c34\\u64c0\\u6cd4\\u6de6\\u6f89\\u7ec0\\u6a44\\u65f0\\u77f8\\u75b3\\u9150\", \"gang\": \"\\u5188\\u521a\\u94a2\\u7f38\\u809b\\u7eb2\\u5c97\\u6e2f\\u6206\\u7f61\\u9883\\u7b7b\", \"gong\": \"\\u6760\\u5de5\\u653b\\u529f\\u606d\\u9f9a\\u4f9b\\u8eac\\u516c\\u5bab\\u5f13\\u5de9\\u6c5e\\u62f1\\u8d21\\u5171\\u857b\\u5efe\\u54a3\\u73d9\\u80b1\\u86a3\\u86e9\\u89e5\", \"gao\": \"\\u7bd9\\u768b\\u9ad8\\u818f\\u7f94\\u7cd5\\u641e\\u9550\\u7a3f\\u544a\\u777e\\u8bf0\\u90dc\\u84bf\\u85c1\\u7f1f\\u69d4\\u69c1\\u6772\\u9506\", \"ge\": \"\\u54e5\\u6b4c\\u6401\\u6208\\u9e3d\\u80f3\\u7599\\u5272\\u9769\\u845b\\u683c\\u9601\\u9694\\u94ec\\u4e2a\\u5404\\u9b32\\u4ee1\\u54ff\\u5865\\u55dd\\u7ea5\\u643f\\u8188\\u784c\\u94ea\\u9549\\u88bc\\u988c\\u867c\\u8238\\u9abc\\u9ac2\", \"gei\": \"\\u7ed9\", \"gen\": \"\\u6839\\u8ddf\\u4e98\\u831b\\u54cf\\u826e\", \"geng\": \"\\u8015\\u66f4\\u5e9a\\u7fb9\\u57c2\\u803f\\u6897\\u54fd\\u8d53\\u9ca0\", \"gou\": \"\\u94a9\\u52fe\\u6c9f\\u82df\\u72d7\\u57a2\\u6784\\u8d2d\\u591f\\u4f5d\\u8bdf\\u5ca3\\u9058\\u5abe\\u7f11\\u89cf\\u5f40\\u9e32\\u7b31\\u7bdd\\u97b2\", \"gu\": \"\\u8f9c\\u83c7\\u5495\\u7b8d\\u4f30\\u6cbd\\u5b64\\u59d1\\u9f13\\u53e4\\u86ca\\u9aa8\\u8c37\\u80a1\\u6545\\u987e\\u56fa\\u96c7\\u560f\\u8bc2\\u83f0\\u54cc\\u5d2e\\u6c69\\u688f\\u8f71\\u726f\\u727f\\u80cd\\u81cc\\u6bc2\\u77bd\\u7f5f\\u94b4\\u9522\\u74e0\\u9e2a\\u9e44\\u75fc\\u86c4\\u9164\\u89da\\u9cb4\\u9ab0\\u9e58\", \"gua\": \"\\u522e\\u74dc\\u5250\\u5be1\\u6302\\u8902\\u5366\\u8bd6\\u5471\\u681d\\u9e39\", \"guai\": \"\\u4e56\\u62d0\\u602a\\u54d9\", \"guan\": \"\\u68fa\\u5173\\u5b98\\u51a0\\u89c2\\u7ba1\\u9986\\u7f50\\u60ef\\u704c\\u8d2f\\u500c\\u839e\\u63bc\\u6dab\\u76e5\\u9e73\\u9ccf\", \"guang\": \"\\u5149\\u5e7f\\u901b\\u72b7\\u6844\\u80f1\\u7592\", \"gui\": \"\\u7470\\u89c4\\u572d\\u7845\\u5f52\\u9f9f\\u95fa\\u8f68\\u9b3c\\u8be1\\u7678\\u6842\\u67dc\\u8dea\\u8d35\\u523d\\u5326\\u523f\\u5e8b\\u5b84\\u59ab\\u6867\\u7085\\u6677\\u7688\\u7c0b\\u9c91\\u9cdc\", \"gun\": \"\\u8f8a\\u6eda\\u68cd\\u4e28\\u886e\\u7ef2\\u78d9\\u9ca7\", \"guo\": \"\\u9505\\u90ed\\u56fd\\u679c\\u88f9\\u8fc7\\u9998\\u8803\\u57da\\u63b4\\u5459\\u56d7\\u5e3c\\u5d1e\\u7313\\u6901\\u8662\\u951e\\u8052\\u872e\\u873e\\u8748\", \"ha\": \"\\u54c8\", \"hai\": \"\\u9ab8\\u5b69\\u6d77\\u6c26\\u4ea5\\u5bb3\\u9a87\\u54b4\\u55e8\\u988f\\u91a2\", \"han\": \"\\u9163\\u61a8\\u90af\\u97e9\\u542b\\u6db5\\u5bd2\\u51fd\\u558a\\u7f55\\u7ff0\\u64bc\\u634d\\u65f1\\u61be\\u608d\\u710a\\u6c57\\u6c49\\u9097\\u83e1\\u6496\\u961a\\u701a\\u6657\\u7113\\u9894\\u86b6\\u9f3e\", \"hen\": \"\\u592f\\u75d5\\u5f88\\u72e0\\u6068\", \"hang\": \"\\u676d\\u822a\\u6c86\\u7ed7\\u73e9\\u6841\", \"hao\": \"\\u58d5\\u568e\\u8c6a\\u6beb\\u90dd\\u597d\\u8017\\u53f7\\u6d69\\u8585\\u55e5\\u5686\\u6fe0\\u704f\\u660a\\u7693\\u98a2\\u869d\", \"he\": \"\\u5475\\u559d\\u8377\\u83cf\\u6838\\u79be\\u548c\\u4f55\\u5408\\u76d2\\u8c89\\u9602\\u6cb3\\u6db8\\u8d6b\\u8910\\u9e64\\u8d3a\\u8bc3\\u52be\\u58d1\\u85ff\\u55d1\\u55ec\\u9616\\u76cd\\u86b5\\u7fee\", \"hei\": \"\\u563f\\u9ed1\", \"heng\": \"\\u54fc\\u4ea8\\u6a2a\\u8861\\u6052\\u8a07\\u8605\", \"hong\": \"\\u8f70\\u54c4\\u70d8\\u8679\\u9e3f\\u6d2a\\u5b8f\\u5f18\\u7ea2\\u9ec9\\u8ba7\\u836d\\u85a8\\u95f3\\u6cd3\", \"hou\": \"\\u5589\\u4faf\\u7334\\u543c\\u539a\\u5019\\u540e\\u5820\\u5f8c\\u9005\\u760a\\u7bcc\\u7cc7\\u9c8e\\u9aba\", \"hu\": \"\\u547c\\u4e4e\\u5ffd\\u745a\\u58f6\\u846b\\u80e1\\u8774\\u72d0\\u7cca\\u6e56\\u5f27\\u864e\\u552c\\u62a4\\u4e92\\u6caa\\u6237\\u51b1\\u553f\\u56eb\\u5cb5\\u7322\\u6019\\u60da\\u6d52\\u6ef9\\u7425\\u69f2\\u8f77\\u89f3\\u70c0\\u7173\\u623d\\u6248\\u795c\\u9e55\\u9e71\\u7b0f\\u9190\\u659b\", \"hua\": \"\\u82b1\\u54d7\\u534e\\u733e\\u6ed1\\u753b\\u5212\\u5316\\u8bdd\\u5290\\u6d4d\\u9a85\\u6866\\u94e7\\u7a1e\", \"huai\": \"\\u69d0\\u5f8a\\u6000\\u6dee\\u574f\\u8fd8\\u8e1d\", \"huan\": \"\\u6b22\\u73af\\u6853\\u7f13\\u6362\\u60a3\\u5524\\u75ea\\u8c62\\u7115\\u6da3\\u5ba6\\u5e7b\\u90c7\\u5942\\u57b8\\u64d0\\u571c\\u6d39\\u6d63\\u6f36\\u5bf0\\u902d\\u7f33\\u953e\\u9ca9\\u9b1f\", \"huang\": \"\\u8352\\u614c\\u9ec4\\u78fa\\u8757\\u7c27\\u7687\\u51f0\\u60f6\\u714c\\u6643\\u5e4c\\u604d\\u8c0e\\u968d\\u5fa8\\u6e5f\\u6f62\\u9051\\u749c\\u8093\\u7640\\u87e5\\u7bc1\\u9cc7\", \"hui\": \"\\u7070\\u6325\\u8f89\\u5fbd\\u6062\\u86d4\\u56de\\u6bc1\\u6094\\u6167\\u5349\\u60e0\\u6666\\u8d3f\\u79fd\\u4f1a\\u70e9\\u6c47\\u8bb3\\u8bf2\\u7ed8\\u8bd9\\u8334\\u835f\\u8559\\u54d5\\u5599\\u96b3\\u6d04\\u5f57\\u7f0b\\u73f2\\u6656\\u605a\\u867a\\u87ea\\u9ebe\", \"hun\": \"\\u8364\\u660f\\u5a5a\\u9b42\\u6d51\\u6df7\\u8be8\\u9984\\u960d\\u6eb7\\u7f17\", \"huo\": \"\\u8c41\\u6d3b\\u4f19\\u706b\\u83b7\\u6216\\u60d1\\u970d\\u8d27\\u7978\\u6509\\u56af\\u5925\\u94ac\\u952a\\u956c\\u8020\\u8816\", \"ji\": \"\\u51fb\\u573e\\u57fa\\u673a\\u7578\\u7a3d\\u79ef\\u7b95\\u808c\\u9965\\u8ff9\\u6fc0\\u8ba5\\u9e21\\u59ec\\u7ee9\\u7f09\\u5409\\u6781\\u68d8\\u8f91\\u7c4d\\u96c6\\u53ca\\u6025\\u75be\\u6c72\\u5373\\u5ac9\\u7ea7\\u6324\\u51e0\\u810a\\u5df1\\u84df\\u6280\\u5180\\u5b63\\u4f0e\\u796d\\u5242\\u60b8\\u6d4e\\u5bc4\\u5bc2\\u8ba1\\u8bb0\\u65e2\\u5fcc\\u9645\\u5993\\u7ee7\\u7eaa\\u5c45\\u4e0c\\u4e69\\u525e\\u4f76\\u4f74\\u8114\\u58bc\\u82a8\\u82b0\\u8401\\u84ba\\u857a\\u638e\\u53fd\\u54ad\\u54dc\\u5527\\u5c8c\\u5d74\\u6d0e\\u5f50\\u5c50\\u9aa5\\u757f\\u7391\\u696b\\u6b9b\\u621f\\u6222\\u8d4d\\u89ca\\u7284\\u9f51\\u77f6\\u7f81\\u5d47\\u7a37\\u7620\\u7635\\u866e\\u7b08\\u7b04\\u66a8\\u8dfb\\u8dfd\\u9701\\u9c9a\\u9cab\\u9afb\\u9e82\", \"jia\": \"\\u5609\\u67b7\\u5939\\u4f73\\u5bb6\\u52a0\\u835a\\u988a\\u8d3e\\u7532\\u94be\\u5047\\u7a3c\\u4ef7\\u67b6\\u9a7e\\u5ac1\\u4f3d\\u90cf\\u62ee\\u5cac\\u6d43\\u8fe6\\u73c8\\u621b\\u80db\\u605d\\u94d7\\u9553\\u75c2\\u86f1\\u7b33\\u8888\\u8dcf\", \"jian\": \"\\u6b7c\\u76d1\\u575a\\u5c16\\u7b3a\\u95f4\\u714e\\u517c\\u80a9\\u8270\\u5978\\u7f04\\u8327\\u68c0\\u67ec\\u78b1\\u7877\\u62e3\\u6361\\u7b80\\u4fed\\u526a\\u51cf\\u8350\\u69db\\u9274\\u8df5\\u8d31\\u89c1\\u952e\\u7bad\\u4ef6\\u5065\\u8230\\u5251\\u996f\\u6e10\\u6e85\\u6da7\\u5efa\\u50ed\\u8c0f\\u8c2b\\u83c5\\u84b9\\u641b\\u56dd\\u6e54\\u8e47\\u8b07\\u7f23\\u67a7\\u67d9\\u6957\\u620b\\u622c\\u726e\\u728d\\u6bfd\\u8171\\u7751\\u950f\\u9e63\\u88e5\\u7b15\\u7bb4\\u7fe6\\u8dbc\\u8e3a\\u9ca3\\u97af\", \"jiang\": \"\\u50f5\\u59dc\\u5c06\\u6d46\\u6c5f\\u7586\\u848b\\u6868\\u5956\\u8bb2\\u5320\\u9171\\u964d\\u8333\\u6d1a\\u7edb\\u7f30\\u729f\\u7913\\u8029\\u7ce8\\u8c47\", \"jiao\": \"\\u8549\\u6912\\u7901\\u7126\\u80f6\\u4ea4\\u90ca\\u6d47\\u9a84\\u5a07\\u56bc\\u6405\\u94f0\\u77eb\\u4fa5\\u811a\\u72e1\\u89d2\\u997a\\u7f34\\u7ede\\u527f\\u6559\\u9175\\u8f7f\\u8f83\\u53eb\\u4f7c\\u50ec\\u832d\\u6322\\u564d\\u5ce4\\u5fbc\\u59e3\\u7e9f\\u656b\\u768e\\u9e6a\\u86df\\u91ae\\u8de4\\u9c9b\", \"jie\": \"\\u7a96\\u63ed\\u63a5\\u7686\\u79f8\\u8857\\u9636\\u622a\\u52ab\\u8282\\u6854\\u6770\\u6377\\u776b\\u7aed\\u6d01\\u7ed3\\u89e3\\u59d0\\u6212\\u85c9\\u82a5\\u754c\\u501f\\u4ecb\\u75a5\\u8beb\\u5c4a\\u5048\\u8ba6\\u8bd8\\u5588\\u55df\\u736c\\u5a55\\u5b51\\u6840\\u7352\\u78a3\\u9534\\u7596\\u88b7\\u9889\\u86a7\\u7faf\\u9c92\\u9ab1\\u9aeb\", \"jin\": \"\\u5dfe\\u7b4b\\u65a4\\u91d1\\u4eca\\u6d25\\u895f\\u7d27\\u9526\\u4ec5\\u8c28\\u8fdb\\u9773\\u664b\\u7981\\u8fd1\\u70ec\\u6d78\\u5c3d\\u537a\\u8369\\u5807\\u5664\\u9991\\u5ed1\\u5997\\u7f19\\u747e\\u69ff\\u8d46\\u89d0\\u9485\\u9513\\u887f\\u77dc\", \"jing\": \"\\u52b2\\u8346\\u5162\\u830e\\u775b\\u6676\\u9cb8\\u4eac\\u60ca\\u7cbe\\u7cb3\\u7ecf\\u4e95\\u8b66\\u666f\\u9888\\u9759\\u5883\\u656c\\u955c\\u5f84\\u75c9\\u9756\\u7adf\\u7ade\\u51c0\\u522d\\u5106\\u9631\\u83c1\\u734d\\u61ac\\u6cfe\\u8ff3\\u5f2a\\u5a67\\u80bc\\u80eb\\u8148\\u65cc\", \"jiong\": \"\\u70af\\u7a98\\u5182\\u8fe5\\u6243\", \"jiu\": \"\\u63ea\\u7a76\\u7ea0\\u7396\\u97ed\\u4e45\\u7078\\u4e5d\\u9152\\u53a9\\u6551\\u65e7\\u81fc\\u8205\\u548e\\u5c31\\u759a\\u50e6\\u557e\\u9604\\u67e9\\u6855\\u9e6b\\u8d73\\u9b0f\", \"ju\": \"\\u97a0\\u62d8\\u72d9\\u75bd\\u9a79\\u83ca\\u5c40\\u5480\\u77e9\\u4e3e\\u6cae\\u805a\\u62d2\\u636e\\u5de8\\u5177\\u8ddd\\u8e1e\\u952f\\u4ff1\\u53e5\\u60e7\\u70ac\\u5267\\u5028\\u8bb5\\u82e3\\u82f4\\u8392\\u63ac\\u907d\\u5c66\\u741a\\u67b8\\u6910\\u6998\\u6989\\u6a58\\u728b\\u98d3\\u949c\\u9514\\u7aad\\u88fe\\u8d84\\u91b5\\u8e3d\\u9f83\\u96ce\\u97ab\", \"juan\": \"\\u6350\\u9e43\\u5a1f\\u5026\\u7737\\u5377\\u7ee2\\u9104\\u72f7\\u6d93\\u684a\\u8832\\u9529\\u954c\\u96bd\", \"jue\": \"\\u6485\\u652b\\u6289\\u6398\\u5014\\u7235\\u89c9\\u51b3\\u8bc0\\u7edd\\u53a5\\u5282\\u8c32\\u77cd\\u8568\\u5658\\u5d1b\\u7357\\u5b53\\u73cf\\u6877\\u6a5b\\u721d\\u9562\\u8e76\\u89d6\", \"jun\": \"\\u5747\\u83cc\\u94a7\\u519b\\u541b\\u5cfb\\u4fca\\u7ae3\\u6d5a\\u90e1\\u9a8f\\u6343\\u72fb\\u76b2\\u7b60\\u9e87\", \"ka\": \"\\u5580\\u5496\\u5361\\u4f67\\u5494\\u80e9\", \"ke\": \"\\u54af\\u5777\\u82db\\u67ef\\u68f5\\u78d5\\u9897\\u79d1\\u58f3\\u54b3\\u53ef\\u6e34\\u514b\\u523b\\u5ba2\\u8bfe\\u5ca2\\u606a\\u6e98\\u9a92\\u7f02\\u73c2\\u8f72\\u6c2a\\u778c\\u94b6\\u75b4\\u7aa0\\u874c\\u9ac1\", \"kai\": \"\\u5f00\\u63e9\\u6977\\u51ef\\u6168\\u5240\\u57b2\\u8488\\u5ffe\\u607a\\u94e0\\u950e\", \"kan\": \"\\u520a\\u582a\\u52d8\\u574e\\u780d\\u770b\\u4f83\\u51f5\\u83b0\\u83b6\\u6221\\u9f9b\\u77b0\", \"kang\": \"\\u5eb7\\u6177\\u7ce0\\u625b\\u6297\\u4ea2\\u7095\\u5751\\u4f09\\u95f6\\u94aa\", \"kao\": \"\\u8003\\u62f7\\u70e4\\u9760\\u5c3b\\u6832\\u7292\\u94d0\", \"ken\": \"\\u80af\\u5543\\u57a6\\u6073\\u57a0\\u88c9\\u9880\", \"keng\": \"\\u542d\\u5fd0\\u94ff\", \"kong\": \"\\u7a7a\\u6050\\u5b54\\u63a7\\u5025\\u5d06\\u7b9c\", \"kou\": \"\\u62a0\\u53e3\\u6263\\u5bc7\\u82a4\\u853b\\u53e9\\u770d\\u7b58\", \"ku\": \"\\u67af\\u54ed\\u7a9f\\u82e6\\u9177\\u5e93\\u88e4\\u5233\\u5800\\u55be\\u7ed4\\u9ab7\", \"kua\": \"\\u5938\\u57ae\\u630e\\u8de8\\u80ef\\u4f89\", \"kuai\": \"\\u5757\\u7b77\\u4fa9\\u5feb\\u84af\\u90d0\\u8489\\u72ef\\u810d\", \"kuan\": \"\\u5bbd\\u6b3e\\u9acb\", \"kuang\": \"\\u5321\\u7b50\\u72c2\\u6846\\u77ff\\u7736\\u65f7\\u51b5\\u8bd3\\u8bf3\\u909d\\u5739\\u593c\\u54d0\\u7ea9\\u8d36\", \"kui\": \"\\u4e8f\\u76d4\\u5cbf\\u7aa5\\u8475\\u594e\\u9b41\\u5080\\u9988\\u6127\\u6e83\\u9997\\u532e\\u5914\\u9697\\u63c6\\u55b9\\u559f\\u609d\\u6126\\u9615\\u9035\\u668c\\u777d\\u8069\\u8770\\u7bd1\\u81fe\\u8dec\", \"kun\": \"\\u5764\\u6606\\u6346\\u56f0\\u6083\\u9603\\u7428\\u951f\\u918c\\u9cb2\\u9ae1\", \"kuo\": \"\\u62ec\\u6269\\u5ed3\\u9614\\u86de\", \"la\": \"\\u5783\\u62c9\\u5587\\u8721\\u814a\\u8fa3\\u5566\\u524c\\u647a\\u908b\\u65ef\\u782c\\u760c\", \"lai\": \"\\u83b1\\u6765\\u8d56\\u5d03\\u5f95\\u6d9e\\u6fd1\\u8d49\\u7750\\u94fc\\u765e\\u7c41\", \"lan\": \"\\u84dd\\u5a6a\\u680f\\u62e6\\u7bee\\u9611\\u5170\\u6f9c\\u8c30\\u63fd\\u89c8\\u61d2\\u7f06\\u70c2\\u6ee5\\u5549\\u5c9a\\u61d4\\u6f24\\u6984\\u6593\\u7f71\\u9567\\u8934\", \"lang\": \"\\u7405\\u6994\\u72fc\\u5eca\\u90ce\\u6717\\u6d6a\\u83a8\\u8497\\u5577\\u9606\\u9512\\u7a02\\u8782\", \"lao\": \"\\u635e\\u52b3\\u7262\\u8001\\u4f6c\\u59e5\\u916a\\u70d9\\u6d9d\\u5520\\u5d02\\u6833\\u94d1\\u94f9\\u75e8\\u91aa\", \"le\": \"\\u52d2\\u4e50\\u808b\\u4ec2\\u53fb\\u561e\\u6cd0\\u9cd3\", \"lei\": \"\\u96f7\\u956d\\u857e\\u78ca\\u7d2f\\u5121\\u5792\\u64c2\\u7c7b\\u6cea\\u7fb8\\u8bd4\\u837d\\u54a7\\u6f2f\\u5ad8\\u7f27\\u6a91\\u8012\\u9179\", \"ling\": \"\\u68f1\\u51b7\\u62ce\\u73b2\\u83f1\\u96f6\\u9f84\\u94c3\\u4f36\\u7f9a\\u51cc\\u7075\\u9675\\u5cad\\u9886\\u53e6\\u4ee4\\u9143\\u5844\\u82d3\\u5464\\u56f9\\u6ce0\\u7eeb\\u67c3\\u68c2\\u74f4\\u8046\\u86c9\\u7fce\\u9cae\", \"leng\": \"\\u695e\\u6123\", \"li\": \"\\u5398\\u68a8\\u7281\\u9ece\\u7bf1\\u72f8\\u79bb\\u6f13\\u7406\\u674e\\u91cc\\u9ca4\\u793c\\u8389\\u8354\\u540f\\u6817\\u4e3d\\u5389\\u52b1\\u783e\\u5386\\u5229\\u5088\\u4f8b\\u4fd0\\u75e2\\u7acb\\u7c92\\u6ca5\\u96b6\\u529b\\u7483\\u54e9\\u4fea\\u4fda\\u90e6\\u575c\\u82c8\\u8385\\u84e0\\u85dc\\u6369\\u5456\\u5533\\u55b1\\u7301\\u6ea7\\u6fa7\\u9026\\u5a0c\\u5ae0\\u9a8a\\u7f21\\u73de\\u67a5\\u680e\\u8f79\\u623e\\u783a\\u8a48\\u7f79\\u9502\\u9e42\\u75a0\\u75ac\\u86ce\\u870a\\u8821\\u7b20\\u7be5\\u7c9d\\u91b4\\u8dde\\u96f3\\u9ca1\\u9ce2\\u9ee7\", \"lian\": \"\\u4fe9\\u8054\\u83b2\\u8fde\\u9570\\u5ec9\\u601c\\u6d9f\\u5e18\\u655b\\u8138\\u94fe\\u604b\\u70bc\\u7ec3\\u631b\\u8539\\u5941\\u6f4b\\u6fc2\\u5a08\\u740f\\u695d\\u6b93\\u81c1\\u81a6\\u88e2\\u880a\\u9ca2\", \"liang\": \"\\u7cae\\u51c9\\u6881\\u7cb1\\u826f\\u4e24\\u8f86\\u91cf\\u667e\\u4eae\\u8c05\\u589a\\u690b\\u8e09\\u9753\\u9b49\", \"liao\": \"\\u64a9\\u804a\\u50da\\u7597\\u71ce\\u5be5\\u8fbd\\u6f66\\u4e86\\u6482\\u9563\\u5ed6\\u6599\\u84fc\\u5c25\\u5639\\u7360\\u5bee\\u7f2d\\u948c\\u9e69\\u8022\", \"lie\": \"\\u5217\\u88c2\\u70c8\\u52a3\\u730e\\u51bd\\u57d2\\u6d0c\\u8d94\\u8e90\\u9b23\", \"lin\": \"\\u7433\\u6797\\u78f7\\u9716\\u4e34\\u90bb\\u9cde\\u6dcb\\u51db\\u8d41\\u541d\\u853a\\u5d99\\u5eea\\u9074\\u6aa9\\u8f9a\\u77b5\\u7cbc\\u8e8f\\u9e9f\", \"liu\": \"\\u6e9c\\u7409\\u69b4\\u786b\\u998f\\u7559\\u5218\\u7624\\u6d41\\u67f3\\u516d\\u62a1\\u507b\\u848c\\u6cd6\\u6d4f\\u905b\\u9a9d\\u7efa\\u65d2\\u7198\\u950d\\u954f\\u9e68\\u938f\", \"long\": \"\\u9f99\\u804b\\u5499\\u7b3c\\u7abf\\u9686\\u5784\\u62e2\\u9647\\u5f04\\u5785\\u830f\\u6cf7\\u73d1\\u680a\\u80e7\\u783b\\u7643\", \"lou\": \"\\u697c\\u5a04\\u6402\\u7bd3\\u6f0f\\u964b\\u55bd\\u5d5d\\u9542\\u7618\\u8027\\u877c\\u9ac5\", \"lu\": \"\\u82a6\\u5362\\u9885\\u5e90\\u7089\\u63b3\\u5364\\u864f\\u9c81\\u9e93\\u788c\\u9732\\u8def\\u8d42\\u9e7f\\u6f5e\\u7984\\u5f55\\u9646\\u622e\\u5786\\u6445\\u64b8\\u565c\\u6cf8\\u6e0c\\u6f09\\u7490\\u680c\\u6a79\\u8f73\\u8f82\\u8f98\\u6c07\\u80ea\\u9565\\u9e2c\\u9e6d\\u7c0f\\u823b\\u9c88\", \"lv\": \"\\u9a74\\u5415\\u94dd\\u4fa3\\u65c5\\u5c65\\u5c61\\u7f15\\u8651\\u6c2f\\u5f8b\\u7387\\u6ee4\\u7eff\\u634b\\u95fe\\u6988\\u8182\\u7a06\\u891b\", \"luan\": \"\\u5ce6\\u5b6a\\u6ee6\\u5375\\u4e71\\u683e\\u9e3e\\u92ae\", \"lue\": \"\\u63a0\\u7565\\u950a\", \"lun\": \"\\u8f6e\\u4f26\\u4ed1\\u6ca6\\u7eb6\\u8bba\\u56f5\", \"luo\": \"\\u841d\\u87ba\\u7f57\\u903b\\u9523\\u7ba9\\u9aa1\\u88f8\\u843d\\u6d1b\\u9a86\\u7edc\\u502e\\u8366\\u645e\\u7321\\u6cfa\\u6924\\u8136\\u9559\\u7630\\u96d2\", \"ma\": \"\\u5988\\u9ebb\\u739b\\u7801\\u8682\\u9a6c\\u9a82\\u561b\\u5417\\u551b\\u72b8\\u5b37\\u6769\\u9ebd\", \"mai\": \"\\u57cb\\u4e70\\u9ea6\\u5356\\u8fc8\\u8109\\u52a2\\u836c\\u54aa\\u973e\", \"man\": \"\\u7792\\u9992\\u86ee\\u6ee1\\u8513\\u66fc\\u6162\\u6f2b\\u8c29\\u5881\\u5e54\\u7f26\\u71b3\\u9558\\u989f\\u87a8\\u9cd7\\u9794\", \"mang\": \"\\u8292\\u832b\\u76f2\\u5fd9\\u83bd\\u9099\\u6f2d\\u6726\\u786d\\u87d2\", \"meng\": \"\\u6c13\\u840c\\u8499\\u6aac\\u76df\\u9530\\u731b\\u68a6\\u5b5f\\u52d0\\u750d\\u77a2\\u61f5\\u791e\\u867b\\u8722\\u8813\\u824b\\u8268\\u9efe\", \"miao\": \"\\u732b\\u82d7\\u63cf\\u7784\\u85d0\\u79d2\\u6e3a\\u5e99\\u5999\\u55b5\\u9088\\u7f08\\u7f2a\\u676a\\u6dfc\\u7707\\u9e4b\\u8731\", \"mao\": \"\\u8305\\u951a\\u6bdb\\u77db\\u94c6\\u536f\\u8302\\u5192\\u5e3d\\u8c8c\\u8d38\\u4f94\\u88a4\\u52d6\\u8306\\u5cc1\\u7441\\u6634\\u7266\\u8004\\u65c4\\u61cb\\u7780\\u86d1\\u8765\\u87ca\\u9ae6\", \"me\": \"\\u4e48\", \"mei\": \"\\u73ab\\u679a\\u6885\\u9176\\u9709\\u7164\\u6ca1\\u7709\\u5a92\\u9541\\u6bcf\\u7f8e\\u6627\\u5bd0\\u59b9\\u5a9a\\u5776\\u8393\\u5d4b\\u7338\\u6d7c\\u6e44\\u6963\\u9545\\u9e5b\\u8882\\u9b45\", \"men\": \"\\u95e8\\u95f7\\u4eec\\u626a\\u739f\\u7116\\u61d1\\u9494\", \"mi\": \"\\u772f\\u919a\\u9761\\u7cdc\\u8ff7\\u8c1c\\u5f25\\u7c73\\u79d8\\u89c5\\u6ccc\\u871c\\u5bc6\\u5e42\\u8288\\u5196\\u8c27\\u863c\\u5627\\u7315\\u736f\\u6c68\\u5b93\\u5f2d\\u8112\\u6549\\u7cf8\\u7e3b\\u9e8b\", \"mian\": \"\\u68c9\\u7720\\u7ef5\\u5195\\u514d\\u52c9\\u5a29\\u7f05\\u9762\\u6c94\\u6e4e\\u817c\\u7704\", \"mie\": \"\\u8511\\u706d\\u54a9\\u881b\\u7bfe\", \"min\": \"\\u6c11\\u62bf\\u76bf\\u654f\\u60af\\u95fd\\u82e0\\u5cb7\\u95f5\\u6cef\\u73c9\", \"ming\": \"\\u660e\\u879f\\u9e23\\u94ed\\u540d\\u547d\\u51a5\\u8317\\u6e9f\\u669d\\u7791\\u9169\", \"miu\": \"\\u8c2c\", \"mo\": \"\\u6478\\u6479\\u8611\\u6a21\\u819c\\u78e8\\u6469\\u9b54\\u62b9\\u672b\\u83ab\\u58a8\\u9ed8\\u6cab\\u6f20\\u5bde\\u964c\\u8c1f\\u8309\\u84e6\\u998d\\u5aeb\\u9546\\u79e3\\u763c\\u8031\\u87c6\\u8c8a\\u8c98\", \"mou\": \"\\u8c0b\\u725f\\u67d0\\u53b6\\u54de\\u5a7a\\u7738\\u936a\", \"mu\": \"\\u62c7\\u7261\\u4ea9\\u59c6\\u6bcd\\u5893\\u66ae\\u5e55\\u52df\\u6155\\u6728\\u76ee\\u7766\\u7267\\u7a46\\u4eeb\\u82dc\\u5452\\u6c90\\u6bea\\u94bc\", \"na\": \"\\u62ff\\u54ea\\u5450\\u94a0\\u90a3\\u5a1c\\u7eb3\\u5185\\u637a\\u80ad\\u954e\\u8872\\u7bac\", \"nai\": \"\\u6c16\\u4e43\\u5976\\u8010\\u5948\\u9f10\\u827f\\u8418\\u67f0\", \"nan\": \"\\u5357\\u7537\\u96be\\u56ca\\u5583\\u56e1\\u6960\\u8169\\u877b\\u8d67\", \"nao\": \"\\u6320\\u8111\\u607c\\u95f9\\u5b6c\\u57b4\\u7331\\u7459\\u7847\\u94d9\\u86f2\", \"ne\": \"\\u6dd6\\u5462\\u8bb7\", \"nei\": \"\\u9981\", \"nen\": \"\\u5ae9\\u80fd\\u6798\\u6041\", \"ni\": \"\\u59ae\\u9713\\u502a\\u6ce5\\u5c3c\\u62df\\u4f60\\u533f\\u817b\\u9006\\u6eba\\u4f32\\u576d\\u730a\\u6029\\u6ee0\\u6635\\u65ce\\u7962\\u615d\\u7768\\u94cc\\u9cb5\", \"nian\": \"\\u852b\\u62c8\\u5e74\\u78be\\u64b5\\u637b\\u5ff5\\u5eff\\u8f87\\u9ecf\\u9c87\\u9cb6\", \"niang\": \"\\u5a18\\u917f\", \"niao\": \"\\u9e1f\\u5c3f\\u8311\\u5b32\\u8132\\u8885\", \"nie\": \"\\u634f\\u8042\\u5b7d\\u556e\\u954a\\u954d\\u6d85\\u4e5c\\u9667\\u8616\\u55eb\\u8080\\u989e\\u81ec\\u8e51\", \"nin\": \"\\u60a8\\u67e0\", \"ning\": \"\\u72de\\u51dd\\u5b81\\u62e7\\u6cde\\u4f5e\\u84e5\\u549b\\u752f\\u804d\", \"niu\": \"\\u725b\\u626d\\u94ae\\u7ebd\\u72c3\\u5ff8\\u599e\\u86b4\", \"nong\": \"\\u8113\\u6d53\\u519c\\u4fac\", \"nu\": \"\\u5974\\u52aa\\u6012\\u5476\\u5e11\\u5f29\\u80ec\\u5b65\\u9a7d\", \"nv\": \"\\u5973\\u6067\\u9495\\u8844\", \"nuan\": \"\\u6696\", \"nuenue\": \"\\u8650\", \"nue\": \"\\u759f\\u8c11\", \"nuo\": \"\\u632a\\u61e6\\u7cef\\u8bfa\\u50a9\\u6426\\u558f\\u9518\", \"ou\": \"\\u54e6\\u6b27\\u9e25\\u6bb4\\u85d5\\u5455\\u5076\\u6ca4\\u6004\\u74ef\\u8026\", \"pa\": \"\\u556a\\u8db4\\u722c\\u5e15\\u6015\\u7436\\u8469\\u7b62\", \"pai\": \"\\u62cd\\u6392\\u724c\\u5f98\\u6e43\\u6d3e\\u4ff3\\u848e\", \"pan\": \"\\u6500\\u6f58\\u76d8\\u78d0\\u76fc\\u7554\\u5224\\u53db\\u723f\\u6cee\\u88a2\\u897b\\u87e0\\u8e52\", \"pang\": \"\\u4e53\\u5e9e\\u65c1\\u802a\\u80d6\\u6ec2\\u9004\", \"pao\": \"\\u629b\\u5486\\u5228\\u70ae\\u888d\\u8dd1\\u6ce1\\u530f\\u72cd\\u5e96\\u812c\\u75b1\", \"pei\": \"\\u5478\\u80da\\u57f9\\u88f4\\u8d54\\u966a\\u914d\\u4f69\\u6c9b\\u638a\\u8f94\\u5e14\\u6de0\\u65c6\\u952b\\u9185\\u9708\", \"pen\": \"\\u55b7\\u76c6\\u6e53\", \"peng\": \"\\u7830\\u62a8\\u70f9\\u6f8e\\u5f6d\\u84ec\\u68da\\u787c\\u7bf7\\u81a8\\u670b\\u9e4f\\u6367\\u78b0\\u576f\\u580b\\u562d\\u6026\\u87db\", \"pi\": \"\\u7812\\u9739\\u6279\\u62ab\\u5288\\u7435\\u6bd7\\u5564\\u813e\\u75b2\\u76ae\\u5339\\u75de\\u50fb\\u5c41\\u8b6c\\u4e15\\u9674\\u90b3\\u90eb\\u572e\\u9f19\\u64d7\\u567c\\u5e80\\u5ab2\\u7eb0\\u6787\\u7513\\u7765\\u7f74\\u94cd\\u75e6\\u7656\\u758b\\u868d\\u8c94\", \"pian\": \"\\u7bc7\\u504f\\u7247\\u9a97\\u8c1d\\u9a88\\u728f\\u80fc\\u890a\\u7fe9\\u8e41\", \"piao\": \"\\u98d8\\u6f02\\u74e2\\u7968\\u527d\\u560c\\u5ad6\\u7f25\\u6b8d\\u779f\\u87b5\", \"pie\": \"\\u6487\\u77a5\\u4e3f\\u82e4\\u6c15\", \"pin\": \"\\u62fc\\u9891\\u8d2b\\u54c1\\u8058\\u62da\\u59d8\\u5ad4\\u6980\\u725d\\u98a6\", \"ping\": \"\\u4e52\\u576a\\u82f9\\u840d\\u5e73\\u51ed\\u74f6\\u8bc4\\u5c4f\\u4fdc\\u5a09\\u67b0\\u9c86\", \"po\": \"\\u5761\\u6cfc\\u9887\\u5a46\\u7834\\u9b44\\u8feb\\u7c95\\u53f5\\u9131\\u6ea5\\u73c0\\u948b\\u94b7\\u76a4\\u7b38\", \"pou\": \"\\u5256\\u88d2\\u8e23\", \"pu\": \"\\u6251\\u94fa\\u4ec6\\u8386\\u8461\\u83e9\\u84b2\\u57d4\\u6734\\u5703\\u666e\\u6d66\\u8c31\\u66dd\\u7011\\u530d\\u5657\\u6fee\\u749e\\u6c06\\u9564\\u9568\\u8e7c\", \"qi\": \"\\u671f\\u6b3a\\u6816\\u621a\\u59bb\\u4e03\\u51c4\\u6f06\\u67d2\\u6c8f\\u5176\\u68cb\\u5947\\u6b67\\u7566\\u5d0e\\u8110\\u9f50\\u65d7\\u7948\\u7941\\u9a91\\u8d77\\u5c82\\u4e5e\\u4f01\\u542f\\u5951\\u780c\\u5668\\u6c14\\u8fc4\\u5f03\\u6c7d\\u6ce3\\u8bab\\u4e9f\\u4e93\\u573b\\u8291\\u840b\\u847a\\u5601\\u5c7a\\u5c90\\u6c54\\u6dc7\\u9a90\\u7eee\\u742a\\u7426\\u675e\\u6864\\u69ed\\u6b39\\u797a\\u61a9\\u789b\\u86f4\\u871e\\u7da6\\u7dae\\u8dbf\\u8e4a\\u9ccd\\u9e92\", \"qia\": \"\\u6390\\u6070\\u6d3d\\u845c\", \"qian\": \"\\u7275\\u6266\\u948e\\u94c5\\u5343\\u8fc1\\u7b7e\\u4edf\\u8c26\\u4e7e\\u9ed4\\u94b1\\u94b3\\u524d\\u6f5c\\u9063\\u6d45\\u8c34\\u5811\\u5d4c\\u6b20\\u6b49\\u4f65\\u9621\\u828a\\u82a1\\u8368\\u63ae\\u5c8d\\u60ad\\u614a\\u9a9e\\u6434\\u8930\\u7f31\\u6920\\u80b7\\u6106\\u94a4\\u8654\\u7b9d\", \"qiang\": \"\\u67aa\\u545b\\u8154\\u7f8c\\u5899\\u8537\\u5f3a\\u62a2\\u5af1\\u6a2f\\u6217\\u709d\\u9516\\u9535\\u956a\\u8941\\u8723\\u7f9f\\u8deb\\u8dc4\", \"qiao\": \"\\u6a47\\u9539\\u6572\\u6084\\u6865\\u77a7\\u4e54\\u4fa8\\u5de7\\u9798\\u64ac\\u7fd8\\u5ced\\u4fcf\\u7a8d\\u5281\\u8bee\\u8c2f\\u835e\\u6100\\u6194\\u7f32\\u6a35\\u6bf3\\u7857\\u8df7\\u9792\", \"qie\": \"\\u5207\\u8304\\u4e14\\u602f\\u7a83\\u90c4\\u553c\\u60ec\\u59be\\u6308\\u9532\\u7ba7\", \"qin\": \"\\u94a6\\u4fb5\\u4eb2\\u79e6\\u7434\\u52e4\\u82b9\\u64d2\\u79bd\\u5bdd\\u6c81\\u82a9\\u84c1\\u8572\\u63ff\\u5423\\u55ea\\u5659\\u6eb1\\u6a8e\\u8793\\u887e\", \"qing\": \"\\u9752\\u8f7b\\u6c22\\u503e\\u537f\\u6e05\\u64ce\\u6674\\u6c30\\u60c5\\u9877\\u8bf7\\u5e86\\u5029\\u82d8\\u570a\\u6aa0\\u78ec\\u873b\\u7f44\\u7b90\\u8b26\\u9cad\\u9ee5\", \"qiong\": \"\\u743c\\u7a77\\u909b\\u8315\\u7a79\\u7b47\\u928e\", \"qiu\": \"\\u79cb\\u4e18\\u90b1\\u7403\\u6c42\\u56da\\u914b\\u6cc5\\u4fc5\\u6c3d\\u5def\\u827d\\u72b0\\u6e6b\\u9011\\u9052\\u6978\\u8d47\\u9e20\\u866c\\u86af\\u8764\\u88d8\\u7cd7\\u9cc5\\u9f3d\", \"qu\": \"\\u8d8b\\u533a\\u86c6\\u66f2\\u8eaf\\u5c48\\u9a71\\u6e20\\u53d6\\u5a36\\u9f8b\\u8da3\\u53bb\\u8bce\\u52ac\\u8556\\u8627\\u5c96\\u8862\\u9612\\u74a9\\u89d1\\u6c0d\\u795b\\u78f2\\u766f\\u86d0\\u883c\\u9eb4\\u77bf\\u9ee2\", \"quan\": \"\\u5708\\u98a7\\u6743\\u919b\\u6cc9\\u5168\\u75ca\\u62f3\\u72ac\\u5238\\u529d\\u8be0\\u8343\\u737e\\u609b\\u7efb\\u8f81\\u754e\\u94e8\\u8737\\u7b4c\\u9b08\", \"que\": \"\\u7f3a\\u7094\\u7638\\u5374\\u9e4a\\u69b7\\u786e\\u96c0\\u9619\\u60ab\", \"qun\": \"\\u88d9\\u7fa4\\u9021\", \"ran\": \"\\u7136\\u71c3\\u5189\\u67d3\\u82d2\\u9aef\", \"rang\": \"\\u74e4\\u58e4\\u6518\\u56b7\\u8ba9\\u79b3\\u7a70\", \"rao\": \"\\u9976\\u6270\\u7ed5\\u835b\\u5a06\\u6861\", \"ruo\": \"\\u60f9\\u82e5\\u5f31\", \"re\": \"\\u70ed\\u504c\", \"ren\": \"\\u58ec\\u4ec1\\u4eba\\u5fcd\\u97e7\\u4efb\\u8ba4\\u5203\\u598a\\u7eab\\u4ede\\u834f\\u845a\\u996a\\u8f6b\\u7a14\\u887d\", \"reng\": \"\\u6254\\u4ecd\", \"ri\": \"\\u65e5\", \"rong\": \"\\u620e\\u8338\\u84c9\\u8363\\u878d\\u7194\\u6eb6\\u5bb9\\u7ed2\\u5197\\u5d58\\u72e8\\u7f1b\\u6995\\u877e\", \"rou\": \"\\u63c9\\u67d4\\u8089\\u7cc5\\u8e42\\u97a3\", \"ru\": \"\\u8339\\u8815\\u5112\\u5b7a\\u5982\\u8fb1\\u4e73\\u6c5d\\u5165\\u8925\\u84d0\\u85b7\\u5685\\u6d33\\u6ebd\\u6fe1\\u94f7\\u8966\\u98a5\", \"ruan\": \"\\u8f6f\\u962e\\u670a\", \"rui\": \"\\u854a\\u745e\\u9510\\u82ae\\u8564\\u777f\\u868b\", \"run\": \"\\u95f0\\u6da6\", \"sa\": \"\\u6492\\u6d12\\u8428\\u5345\\u4ee8\\u6332\\u98d2\", \"sai\": \"\\u816e\\u9cc3\\u585e\\u8d5b\\u567b\", \"san\": \"\\u4e09\\u53c1\\u4f1e\\u6563\\u5f61\\u9993\\u6c35\\u6bf5\\u7cc1\\u9730\", \"sang\": \"\\u6851\\u55d3\\u4e27\\u6421\\u78c9\\u98a1\", \"sao\": \"\\u6414\\u9a9a\\u626b\\u5ac2\\u57fd\\u81ca\\u7619\\u9ccb\", \"se\": \"\\u745f\\u8272\\u6da9\\u556c\\u94e9\\u94ef\\u7a51\", \"sen\": \"\\u68ee\", \"seng\": \"\\u50e7\", \"sha\": \"\\u838e\\u7802\\u6740\\u5239\\u6c99\\u7eb1\\u50bb\\u5565\\u715e\\u810e\\u6b43\\u75e7\\u88df\\u970e\\u9ca8\", \"shai\": \"\\u7b5b\\u6652\\u917e\", \"shan\": \"\\u73ca\\u82eb\\u6749\\u5c71\\u5220\\u717d\\u886b\\u95ea\\u9655\\u64c5\\u8d61\\u81b3\\u5584\\u6c55\\u6247\\u7f2e\\u5261\\u8baa\\u912f\\u57cf\\u829f\\u6f78\\u59d7\\u9a9f\\u81bb\\u9490\\u759d\\u87ee\\u8222\\u8dda\\u9cdd\", \"shang\": \"\\u5892\\u4f24\\u5546\\u8d4f\\u664c\\u4e0a\\u5c1a\\u88f3\\u57a7\\u7ef1\\u6b87\\u71b5\\u89de\", \"shao\": \"\\u68a2\\u634e\\u7a0d\\u70e7\\u828d\\u52fa\\u97f6\\u5c11\\u54e8\\u90b5\\u7ecd\\u52ad\\u82d5\\u6f72\\u86f8\\u7b24\\u7b72\\u8244\", \"she\": \"\\u5962\\u8d4a\\u86c7\\u820c\\u820d\\u8d66\\u6444\\u5c04\\u6151\\u6d89\\u793e\\u8bbe\\u538d\\u4f58\\u731e\\u7572\\u9e9d\", \"shen\": \"\\u7837\\u7533\\u547b\\u4f38\\u8eab\\u6df1\\u5a20\\u7ec5\\u795e\\u6c88\\u5ba1\\u5a76\\u751a\\u80be\\u614e\\u6e17\\u8bdc\\u8c02\\u5432\\u54c2\\u6e16\\u6939\\u77e7\\u8703\", \"sheng\": \"\\u58f0\\u751f\\u7525\\u7272\\u5347\\u7ef3\\u7701\\u76db\\u5269\\u80dc\\u5723\\u4e1e\\u6e11\\u5ab5\\u771a\\u7b19\", \"shi\": \"\\u5e08\\u5931\\u72ee\\u65bd\\u6e7f\\u8bd7\\u5c38\\u8671\\u5341\\u77f3\\u62fe\\u65f6\\u4ec0\\u98df\\u8680\\u5b9e\\u8bc6\\u53f2\\u77e2\\u4f7f\\u5c4e\\u9a76\\u59cb\\u5f0f\\u793a\\u58eb\\u4e16\\u67ff\\u4e8b\\u62ed\\u8a93\\u901d\\u52bf\\u662f\\u55dc\\u566c\\u9002\\u4ed5\\u4f8d\\u91ca\\u9970\\u6c0f\\u5e02\\u6043\\u5ba4\\u89c6\\u8bd5\\u8c25\\u57d8\\u83b3\\u84cd\\u5f11\\u5511\\u9963\\u8f7c\\u8006\\u8d33\\u70bb\\u793b\\u94c8\\u94ca\\u87ab\\u8210\\u7b6e\\u8c55\\u9ca5\\u9cba\", \"shou\": \"\\u6536\\u624b\\u9996\\u5b88\\u5bff\\u6388\\u552e\\u53d7\\u7626\\u517d\\u624c\\u72e9\\u7ef6\\u824f\", \"shu\": \"\\u852c\\u67a2\\u68b3\\u6b8a\\u6292\\u8f93\\u53d4\\u8212\\u6dd1\\u758f\\u4e66\\u8d4e\\u5b70\\u719f\\u85af\\u6691\\u66d9\\u7f72\\u8700\\u9ecd\\u9f20\\u5c5e\\u672f\\u8ff0\\u6811\\u675f\\u620d\\u7ad6\\u5885\\u5eb6\\u6570\\u6f31\\u6055\\u500f\\u587e\\u83fd\\u5fc4\\u6cad\\u6d91\\u6f8d\\u59dd\\u7ebe\\u6bf9\\u8167\\u6bb3\\u956f\\u79eb\\u9e6c\", \"shua\": \"\\u5237\\u800d\\u5530\\u6dae\", \"shuai\": \"\\u6454\\u8870\\u7529\\u5e05\\u87c0\", \"shuan\": \"\\u6813\\u62f4\\u95e9\", \"shuang\": \"\\u971c\\u53cc\\u723d\\u5b40\", \"shui\": \"\\u8c01\\u6c34\\u7761\\u7a0e\", \"shun\": \"\\u542e\\u77ac\\u987a\\u821c\\u6042\", \"shuo\": \"\\u8bf4\\u7855\\u6714\\u70c1\\u84b4\\u6420\\u55cd\\u6fef\\u5981\\u69ca\\u94c4\", \"si\": \"\\u65af\\u6495\\u5636\\u601d\\u79c1\\u53f8\\u4e1d\\u6b7b\\u8086\\u5bfa\\u55e3\\u56db\\u4f3a\\u4f3c\\u9972\\u5df3\\u53ae\\u4fdf\\u5155\\u83e5\\u549d\\u6c5c\\u6cd7\\u6f8c\\u59d2\\u9a77\\u7f0c\\u7940\\u7960\\u9536\\u9e36\\u801c\\u86f3\\u7b25\", \"song\": \"\\u677e\\u8038\\u6002\\u9882\\u9001\\u5b8b\\u8bbc\\u8bf5\\u51c7\\u83d8\\u5d27\\u5d69\\u5fea\\u609a\\u6dde\\u7ae6\", \"sou\": \"\\u641c\\u8258\\u64de\\u55fd\\u53df\\u55d6\\u55fe\\u998a\\u6eb2\\u98d5\\u778d\\u953c\\u878b\", \"su\": \"\\u82cf\\u9165\\u4fd7\\u7d20\\u901f\\u7c9f\\u50f3\\u5851\\u6eaf\\u5bbf\\u8bc9\\u8083\\u5919\\u8c21\\u850c\\u55c9\\u612b\\u7c0c\\u89eb\\u7a23\", \"suan\": \"\\u9178\\u849c\\u7b97\", \"sui\": \"\\u867d\\u968b\\u968f\\u7ee5\\u9ad3\\u788e\\u5c81\\u7a57\\u9042\\u96a7\\u795f\\u84d1\\u51ab\\u8c07\\u6fc9\\u9083\\u71e7\\u772d\\u7762\", \"sun\": \"\\u5b59\\u635f\\u7b0b\\u836a\\u72f2\\u98e7\\u69ab\\u8de3\\u96bc\", \"suo\": \"\\u68ad\\u5506\\u7f29\\u7410\\u7d22\\u9501\\u6240\\u5522\\u55e6\\u5a11\\u686b\\u7743\\u7fa7\", \"ta\": \"\\u584c\\u4ed6\\u5b83\\u5979\\u5854\\u736d\\u631e\\u8e4b\\u8e0f\\u95fc\\u6ebb\\u9062\\u69bb\\u6c93\", \"tai\": \"\\u80ce\\u82d4\\u62ac\\u53f0\\u6cf0\\u915e\\u592a\\u6001\\u6c70\\u90b0\\u85b9\\u80bd\\u70b1\\u949b\\u8dc6\\u9c90\", \"tan\": \"\\u574d\\u644a\\u8d2a\\u762b\\u6ee9\\u575b\\u6a80\\u75f0\\u6f6d\\u8c2d\\u8c08\\u5766\\u6bef\\u8892\\u78b3\\u63a2\\u53f9\\u70ad\\u90ef\\u8548\\u6619\\u94bd\\u952c\\u8983\", \"tang\": \"\\u6c64\\u5858\\u642a\\u5802\\u68e0\\u819b\\u5510\\u7cd6\\u50a5\\u9967\\u6e8f\\u746d\\u94f4\\u9557\\u8025\\u8797\\u87b3\\u7fb0\\u91a3\", \"thang\": \"\\u5018\\u8eba\\u6dcc\", \"theng\": \"\\u8d9f\\u70eb\", \"tao\": \"\\u638f\\u6d9b\\u6ed4\\u7ee6\\u8404\\u6843\\u9003\\u6dd8\\u9676\\u8ba8\\u5957\\u6311\\u9f17\\u5555\\u97ec\\u9955\", \"te\": \"\\u7279\", \"teng\": \"\\u85e4\\u817e\\u75bc\\u8a8a\\u6ed5\", \"ti\": \"\\u68af\\u5254\\u8e22\\u9511\\u63d0\\u9898\\u8e44\\u557c\\u4f53\\u66ff\\u568f\\u60d5\\u6d95\\u5243\\u5c49\\u8351\\u608c\\u9016\\u7ee8\\u7f07\\u9e48\\u88fc\\u918d\", \"tian\": \"\\u5929\\u6dfb\\u586b\\u7530\\u751c\\u606c\\u8214\\u8146\\u63ad\\u5fdd\\u9617\\u6b84\\u754b\\u94bf\\u86ba\", \"tiao\": \"\\u6761\\u8fe2\\u773a\\u8df3\\u4f7b\\u7967\\u94eb\\u7a95\\u9f86\\u9ca6\", \"tie\": \"\\u8d34\\u94c1\\u5e16\\u841c\\u992e\", \"ting\": \"\\u5385\\u542c\\u70c3\\u6c40\\u5ef7\\u505c\\u4ead\\u5ead\\u633a\\u8247\\u839b\\u8476\\u5a77\\u6883\\u8713\\u9706\", \"tong\": \"\\u901a\\u6850\\u916e\\u77b3\\u540c\\u94dc\\u5f64\\u7ae5\\u6876\\u6345\\u7b52\\u7edf\\u75db\\u4f5f\\u50ee\\u4edd\\u833c\\u55f5\\u6078\\u6f7c\\u783c\", \"tou\": \"\\u5077\\u6295\\u5934\\u900f\\u4ea0\", \"tu\": \"\\u51f8\\u79c3\\u7a81\\u56fe\\u5f92\\u9014\\u6d82\\u5c60\\u571f\\u5410\\u5154\\u580d\\u837c\\u83df\\u948d\\u9174\", \"tuan\": \"\\u6e4d\\u56e2\\u7583\", \"tui\": \"\\u63a8\\u9893\\u817f\\u8715\\u892a\\u9000\\u5fd2\\u717a\", \"tun\": \"\\u541e\\u5c6f\\u81c0\\u9968\\u66be\\u8c5a\\u7a80\", \"tuo\": \"\\u62d6\\u6258\\u8131\\u9e35\\u9640\\u9a6e\\u9a7c\\u692d\\u59a5\\u62d3\\u553e\\u4e47\\u4f57\\u5768\\u5eb9\\u6cb1\\u67dd\\u7823\\u7ba8\\u8204\\u8dce\\u9f0d\", \"wa\": \"\\u6316\\u54c7\\u86d9\\u6d3c\\u5a03\\u74e6\\u889c\\u4f64\\u5a32\\u817d\", \"wai\": \"\\u6b6a\\u5916\", \"wan\": \"\\u8c4c\\u5f2f\\u6e7e\\u73a9\\u987d\\u4e38\\u70f7\\u5b8c\\u7897\\u633d\\u665a\\u7696\\u60cb\\u5b9b\\u5a49\\u4e07\\u8155\\u525c\\u8284\\u82cb\\u83c0\\u7ea8\\u7efe\\u742c\\u8118\\u7579\\u873f\\u7ba2\", \"wang\": \"\\u6c6a\\u738b\\u4ea1\\u6789\\u7f51\\u5f80\\u65fa\\u671b\\u5fd8\\u5984\\u7f54\\u5c22\\u60d8\\u8f8b\\u9b4d\", \"wei\": \"\\u5a01\\u5dcd\\u5fae\\u5371\\u97e6\\u8fdd\\u6845\\u56f4\\u552f\\u60df\\u4e3a\\u6f4d\\u7ef4\\u82c7\\u840e\\u59d4\\u4f1f\\u4f2a\\u5c3e\\u7eac\\u672a\\u851a\\u5473\\u754f\\u80c3\\u5582\\u9b4f\\u4f4d\\u6e2d\\u8c13\\u5c09\\u6170\\u536b\\u502d\\u504e\\u8bff\\u9688\\u8473\\u8587\\u5e0f\\u5e37\\u5d34\\u5d6c\\u7325\\u732c\\u95f1\\u6ca9\\u6d27\\u6da0\\u9036\\u5a13\\u73ae\\u97ea\\u8ece\\u709c\\u7168\\u71a8\\u75ff\\u8249\\u9c94\", \"wen\": \"\\u761f\\u6e29\\u868a\\u6587\\u95fb\\u7eb9\\u543b\\u7a33\\u7d0a\\u95ee\\u520e\\u6120\\u960c\\u6c76\\u74ba\\u97eb\\u6b81\\u96ef\", \"weng\": \"\\u55e1\\u7fc1\\u74ee\\u84ca\\u8579\", \"wo\": \"\\u631d\\u8717\\u6da1\\u7a9d\\u6211\\u65a1\\u5367\\u63e1\\u6c83\\u83b4\\u5e44\\u6e25\\u674c\\u809f\\u9f8c\", \"wu\": \"\\u5deb\\u545c\\u94a8\\u4e4c\\u6c61\\u8bec\\u5c4b\\u65e0\\u829c\\u68a7\\u543e\\u5434\\u6bcb\\u6b66\\u4e94\\u6342\\u5348\\u821e\\u4f0d\\u4fae\\u575e\\u620a\\u96fe\\u6664\\u7269\\u52ff\\u52a1\\u609f\\u8bef\\u5140\\u4ef5\\u9622\\u90ac\\u572c\\u82b4\\u5e91\\u6003\\u5fe4\\u6d6f\\u5be4\\u8fd5\\u59a9\\u9a9b\\u727e\\u7110\\u9e49\\u9e5c\\u8708\\u92c8\\u9f2f\", \"xi\": \"\\u6614\\u7199\\u6790\\u897f\\u7852\\u77fd\\u6670\\u563b\\u5438\\u9521\\u727a\\u7a00\\u606f\\u5e0c\\u6089\\u819d\\u5915\\u60dc\\u7184\\u70ef\\u6eaa\\u6c50\\u7280\\u6a84\\u88ad\\u5e2d\\u4e60\\u5ab3\\u559c\\u94e3\\u6d17\\u7cfb\\u9699\\u620f\\u7ec6\\u50d6\\u516e\\u96b0\\u90d7\\u831c\\u8478\\u84f0\\u595a\\u550f\\u5f99\\u9969\\u960b\\u6d60\\u6dc5\\u5c63\\u5b09\\u73ba\\u6a28\\u66e6\\u89cb\\u6b37\\u71b9\\u798a\\u79a7\\u94b8\\u7699\\u7a78\\u8725\\u87cb\\u823e\\u7fb2\\u7c9e\\u7fd5\\u91af\\u9f37\", \"xia\": \"\\u778e\\u867e\\u5323\\u971e\\u8f96\\u6687\\u5ce1\\u4fa0\\u72ed\\u4e0b\\u53a6\\u590f\\u5413\\u6380\\u846d\\u55c4\\u72ce\\u9050\\u7455\\u7856\\u7615\\u7f45\\u9ee0\", \"xian\": \"\\u9528\\u5148\\u4ed9\\u9c9c\\u7ea4\\u54b8\\u8d24\\u8854\\u8237\\u95f2\\u6d8e\\u5f26\\u5acc\\u663e\\u9669\\u73b0\\u732e\\u53bf\\u817a\\u9985\\u7fa1\\u5baa\\u9677\\u9650\\u7ebf\\u51bc\\u85d3\\u5c98\\u7303\\u66b9\\u5a34\\u6c19\\u7946\\u9e47\\u75eb\\u86ac\\u7b45\\u7c7c\\u9170\\u8df9\", \"xiang\": \"\\u76f8\\u53a2\\u9576\\u9999\\u7bb1\\u8944\\u6e58\\u4e61\\u7fd4\\u7965\\u8be6\\u60f3\\u54cd\\u4eab\\u9879\\u5df7\\u6a61\\u50cf\\u5411\\u8c61\\u8297\\u8459\\u9977\\u5ea0\\u9aa7\\u7f03\\u87d3\\u9c9e\\u98e8\", \"xiao\": \"\\u8427\\u785d\\u9704\\u524a\\u54ee\\u56a3\\u9500\\u6d88\\u5bb5\\u6dc6\\u6653\\u5c0f\\u5b5d\\u6821\\u8096\\u5578\\u7b11\\u6548\\u54d3\\u54bb\\u5d24\\u6f47\\u900d\\u9a81\\u7ee1\\u67ad\\u67b5\\u7b71\\u7bab\\u9b48\", \"xie\": \"\\u6954\\u4e9b\\u6b47\\u874e\\u978b\\u534f\\u631f\\u643a\\u90aa\\u659c\\u80c1\\u8c10\\u5199\\u68b0\\u5378\\u87f9\\u61c8\\u6cc4\\u6cfb\\u8c22\\u5c51\\u5055\\u4eb5\\u52f0\\u71ee\\u85a4\\u64b7\\u5ee8\\u7023\\u9082\\u7ec1\\u7f2c\\u69ad\\u698d\\u6b59\\u8e9e\", \"xin\": \"\\u85aa\\u82af\\u950c\\u6b23\\u8f9b\\u65b0\\u5ffb\\u5fc3\\u4fe1\\u8845\\u56df\\u99a8\\u8398\\u6b46\\u94fd\\u946b\", \"xing\": \"\\u661f\\u8165\\u7329\\u60fa\\u5174\\u5211\\u578b\\u5f62\\u90a2\\u884c\\u9192\\u5e78\\u674f\\u6027\\u59d3\\u9649\\u8347\\u8365\\u64e4\\u60bb\\u784e\", \"xiong\": \"\\u5144\\u51f6\\u80f8\\u5308\\u6c79\\u96c4\\u718a\\u828e\", \"xiu\": \"\\u4f11\\u4fee\\u7f9e\\u673d\\u55c5\\u9508\\u79c0\\u8896\\u7ee3\\u83a0\\u5cab\\u9990\\u5ea5\\u9e3a\\u8c85\\u9af9\", \"xu\": \"\\u589f\\u620c\\u9700\\u865a\\u5618\\u987b\\u5f90\\u8bb8\\u84c4\\u9157\\u53d9\\u65ed\\u5e8f\\u755c\\u6064\\u7d6e\\u5a7f\\u7eea\\u7eed\\u8bb4\\u8be9\\u5729\\u84ff\\u6035\\u6d2b\\u6e86\\u987c\\u6829\\u7166\\u7809\\u76f1\\u80e5\\u7cc8\\u9191\", \"xuan\": \"\\u8f69\\u55a7\\u5ba3\\u60ac\\u65cb\\u7384\\u9009\\u7663\\u7729\\u7eda\\u5107\\u8c16\\u8431\\u63ce\\u9994\\u6ceb\\u6d35\\u6e32\\u6f29\\u7487\\u6966\\u6684\\u70ab\\u714a\\u78b9\\u94c9\\u955f\\u75c3\", \"xue\": \"\\u9774\\u859b\\u5b66\\u7a74\\u96ea\\u8840\\u5671\\u6cf6\\u9cd5\", \"xun\": \"\\u52cb\\u718f\\u5faa\\u65ec\\u8be2\\u5bfb\\u9a6f\\u5de1\\u6b89\\u6c5b\\u8bad\\u8baf\\u900a\\u8fc5\\u5dfd\\u57d9\\u8340\\u85b0\\u5ccb\\u5f87\\u6d54\\u66db\\u7aa8\\u91ba\\u9c9f\", \"ya\": \"\\u538b\\u62bc\\u9e26\\u9e2d\\u5440\\u4e2b\\u82bd\\u7259\\u869c\\u5d16\\u8859\\u6daf\\u96c5\\u54d1\\u4e9a\\u8bb6\\u4f22\\u63e0\\u5416\\u5c88\\u8fd3\\u5a05\\u740a\\u6860\\u6c29\\u7811\\u775a\\u75d6\", \"yan\": \"\\u7109\\u54bd\\u9609\\u70df\\u6df9\\u76d0\\u4e25\\u7814\\u8712\\u5ca9\\u5ef6\\u8a00\\u989c\\u960e\\u708e\\u6cbf\\u5944\\u63a9\\u773c\\u884d\\u6f14\\u8273\\u5830\\u71d5\\u538c\\u781a\\u96c1\\u5501\\u5f66\\u7130\\u5bb4\\u8c1a\\u9a8c\\u53a3\\u9765\\u8d5d\\u4fe8\\u5043\\u5156\\u8ba0\\u8c33\\u90fe\\u9122\\u82ab\\u83f8\\u5d26\\u6079\\u95eb\\u960f\\u6d07\\u6e6e\\u6edf\\u598d\\u5ae3\\u7430\\u664f\\u80ed\\u814c\\u7131\\u7f68\\u7b75\\u917d\\u9b47\\u990d\\u9f39\", \"yang\": \"\\u6b83\\u592e\\u9e2f\\u79e7\\u6768\\u626c\\u4f6f\\u75a1\\u7f8a\\u6d0b\\u9633\\u6c27\\u4ef0\\u75d2\\u517b\\u6837\\u6f3e\\u5f89\\u600f\\u6cf1\\u7080\\u70ca\\u6059\\u86d8\\u9785\", \"yao\": \"\\u9080\\u8170\\u5996\\u7476\\u6447\\u5c27\\u9065\\u7a91\\u8c23\\u59da\\u54ac\\u8200\\u836f\\u8981\\u8000\\u592d\\u723b\\u5406\\u5d3e\\u5fad\\u7039\\u5e7a\\u73e7\\u6773\\u66dc\\u80b4\\u9e5e\\u7a88\\u7e47\\u9cd0\", \"ye\": \"\\u6930\\u564e\\u8036\\u7237\\u91ce\\u51b6\\u4e5f\\u9875\\u6396\\u4e1a\\u53f6\\u66f3\\u814b\\u591c\\u6db2\\u8c12\\u90ba\\u63f6\\u9980\\u6654\\u70e8\\u94d8\", \"yi\": \"\\u4e00\\u58f9\\u533b\\u63d6\\u94f1\\u4f9d\\u4f0a\\u8863\\u9890\\u5937\\u9057\\u79fb\\u4eea\\u80f0\\u7591\\u6c82\\u5b9c\\u59e8\\u5f5d\\u6905\\u8681\\u501a\\u5df2\\u4e59\\u77e3\\u4ee5\\u827a\\u6291\\u6613\\u9091\\u5c79\\u4ebf\\u5f79\\u81c6\\u9038\\u8084\\u75ab\\u4ea6\\u88d4\\u610f\\u6bc5\\u5fc6\\u4e49\\u76ca\\u6ea2\\u8be3\\u8bae\\u8c0a\\u8bd1\\u5f02\\u7ffc\\u7fcc\\u7ece\\u5208\\u5293\\u4f7e\\u8bd2\\u572a\\u572f\\u57f8\\u61ff\\u82e1\\u858f\\u5f08\\u5955\\u6339\\u5f0b\\u5453\\u54a6\\u54bf\\u566b\\u5cc4\\u5db7\\u7317\\u9974\\u603f\\u6021\\u6092\\u6f2a\\u8fe4\\u9a7f\\u7f22\\u6baa\\u8d3b\\u65d6\\u71a0\\u9487\\u9552\\u9571\\u75cd\\u7617\\u7654\\u7fca\\u8864\\u8734\\u8223\\u7fbf\\u7ff3\\u914f\\u9edf\", \"yin\": \"\\u8335\\u836b\\u56e0\\u6bb7\\u97f3\\u9634\\u59fb\\u541f\\u94f6\\u6deb\\u5bc5\\u996e\\u5c39\\u5f15\\u9690\\u5370\\u80e4\\u911e\\u5819\\u831a\\u5591\\u72fa\\u5924\\u6c24\\u94df\\u763e\\u8693\\u972a\\u9f88\", \"ying\": \"\\u82f1\\u6a31\\u5a74\\u9e70\\u5e94\\u7f28\\u83b9\\u8424\\u8425\\u8367\\u8747\\u8fce\\u8d62\\u76c8\\u5f71\\u9896\\u786c\\u6620\\u5b34\\u90e2\\u8314\\u83ba\\u8426\\u6484\\u5624\\u81ba\\u6ee2\\u6f46\\u701b\\u745b\\u748e\\u6979\\u9e66\\u763f\\u988d\\u7f42\", \"yo\": \"\\u54df\\u5537\", \"yong\": \"\\u62e5\\u4f63\\u81c3\\u75c8\\u5eb8\\u96cd\\u8e0a\\u86f9\\u548f\\u6cf3\\u6d8c\\u6c38\\u607f\\u52c7\\u7528\\u4fd1\\u58c5\\u5889\\u6175\\u9095\\u955b\\u752c\\u9cd9\\u9954\", \"you\": \"\\u5e7d\\u4f18\\u60a0\\u5fe7\\u5c24\\u7531\\u90ae\\u94c0\\u72b9\\u6cb9\\u6e38\\u9149\\u6709\\u53cb\\u53f3\\u4f51\\u91c9\\u8bf1\\u53c8\\u5e7c\\u5363\\u6538\\u4f91\\u83b8\\u5466\\u56ff\\u5ba5\\u67da\\u7337\\u7256\\u94d5\\u75a3\\u8763\\u9c7f\\u9edd\\u9f2c\", \"yu\": \"\\u8fc2\\u6de4\\u4e8e\\u76c2\\u6986\\u865e\\u611a\\u8206\\u4f59\\u4fde\\u903e\\u9c7c\\u6109\\u6e1d\\u6e14\\u9685\\u4e88\\u5a31\\u96e8\\u4e0e\\u5c7f\\u79b9\\u5b87\\u8bed\\u7fbd\\u7389\\u57df\\u828b\\u90c1\\u5401\\u9047\\u55bb\\u5cea\\u5fa1\\u6108\\u6b32\\u72f1\\u80b2\\u8a89\\u6d74\\u5bd3\\u88d5\\u9884\\u8c6b\\u9a6d\\u79ba\\u6bd3\\u4f1b\\u4fe3\\u8c00\\u8c15\\u8438\\u84e3\\u63c4\\u5581\\u5704\\u5709\\u5d5b\\u72f3\\u996b\\u5ebe\\u9608\\u59aa\\u59a4\\u7ea1\\u745c\\u6631\\u89ce\\u8174\\u6b24\\u65bc\\u715c\\u71e0\\u807f\\u94b0\\u9e46\\u7610\\u7600\\u7ab3\\u8753\\u7afd\\u8201\\u96e9\\u9f89\", \"yuan\": \"\\u9e33\\u6e0a\\u51a4\\u5143\\u57a3\\u8881\\u539f\\u63f4\\u8f95\\u56ed\\u5458\\u5706\\u733f\\u6e90\\u7f18\\u8fdc\\u82d1\\u613f\\u6028\\u9662\\u586c\\u6c85\\u5a9b\\u7457\\u6a7c\\u7230\\u7722\\u9e22\\u8788\\u9f0b\", \"yue\": \"\\u66f0\\u7ea6\\u8d8a\\u8dc3\\u94a5\\u5cb3\\u7ca4\\u6708\\u60a6\\u9605\\u9fa0\\u6a3e\\u5216\\u94ba\", \"yun\": \"\\u8018\\u4e91\\u90e7\\u5300\\u9668\\u5141\\u8fd0\\u8574\\u915d\\u6655\\u97f5\\u5b55\\u90d3\\u82b8\\u72c1\\u607d\\u7ead\\u6b92\\u6600\\u6c32\", \"za\": \"\\u531d\\u7838\\u6742\\u62f6\\u5482\", \"zai\": \"\\u683d\\u54c9\\u707e\\u5bb0\\u8f7d\\u518d\\u5728\\u54b1\\u5d3d\\u753e\", \"zan\": \"\\u6512\\u6682\\u8d5e\\u74d2\\u661d\\u7c2a\\u7ccc\\u8db1\\u933e\", \"zang\": \"\\u8d43\\u810f\\u846c\\u5958\\u6215\\u81e7\", \"zao\": \"\\u906d\\u7cdf\\u51ff\\u85fb\\u67a3\\u65e9\\u6fa1\\u86a4\\u8e81\\u566a\\u9020\\u7682\\u7076\\u71e5\\u5523\\u7f2b\", \"ze\": \"\\u8d23\\u62e9\\u5219\\u6cfd\\u4ec4\\u8d5c\\u5567\\u8fee\\u6603\\u7b2e\\u7ba6\\u8234\", \"zei\": \"\\u8d3c\", \"zen\": \"\\u600e\\u8c2e\", \"zeng\": \"\\u589e\\u618e\\u66fe\\u8d60\\u7f2f\\u7511\\u7f7e\\u9503\", \"zha\": \"\\u624e\\u55b3\\u6e23\\u672d\\u8f67\\u94e1\\u95f8\\u7728\\u6805\\u69a8\\u548b\\u4e4d\\u70b8\\u8bc8\\u63f8\\u5412\\u54a4\\u54f3\\u600d\\u781f\\u75c4\\u86b1\\u9f44\", \"zhai\": \"\\u6458\\u658b\\u5b85\\u7a84\\u503a\\u5be8\\u7826\", \"zhan\": \"\\u77bb\\u6be1\\u8a79\\u7c98\\u6cbe\\u76cf\\u65a9\\u8f97\\u5d2d\\u5c55\\u8638\\u6808\\u5360\\u6218\\u7ad9\\u6e5b\\u7efd\\u8c35\\u640c\\u65c3\", \"zhang\": \"\\u6a1f\\u7ae0\\u5f70\\u6f33\\u5f20\\u638c\\u6da8\\u6756\\u4e08\\u5e10\\u8d26\\u4ed7\\u80c0\\u7634\\u969c\\u4ec9\\u9123\\u5e5b\\u5d82\\u7350\\u5adc\\u748b\\u87d1\", \"zhao\": \"\\u62db\\u662d\\u627e\\u6cbc\\u8d75\\u7167\\u7f69\\u5146\\u8087\\u53ec\\u722a\\u8bcf\\u68f9\\u948a\\u7b0a\", \"zhe\": \"\\u906e\\u6298\\u54f2\\u86f0\\u8f99\\u8005\\u9517\\u8517\\u8fd9\\u6d59\\u8c2a\\u966c\\u67d8\\u8f84\\u78d4\\u9e67\\u891a\\u8707\\u8d6d\", \"zhen\": \"\\u73cd\\u659f\\u771f\\u7504\\u7827\\u81fb\\u8d1e\\u9488\\u4fa6\\u6795\\u75b9\\u8bca\\u9707\\u632f\\u9547\\u9635\\u7f1c\\u6862\\u699b\\u8f78\\u8d48\\u80d7\\u6715\\u796f\\u755b\\u9e29\", \"zheng\": \"\\u84b8\\u6323\\u7741\\u5f81\\u72f0\\u4e89\\u6014\\u6574\\u62ef\\u6b63\\u653f\\u5e27\\u75c7\\u90d1\\u8bc1\\u8be4\\u5ce5\\u94b2\\u94ee\\u7b5d\", \"zhi\": \"\\u829d\\u679d\\u652f\\u5431\\u8718\\u77e5\\u80a2\\u8102\\u6c41\\u4e4b\\u7ec7\\u804c\\u76f4\\u690d\\u6b96\\u6267\\u503c\\u4f84\\u5740\\u6307\\u6b62\\u8dbe\\u53ea\\u65e8\\u7eb8\\u5fd7\\u631a\\u63b7\\u81f3\\u81f4\\u7f6e\\u5e1c\\u5cd9\\u5236\\u667a\\u79e9\\u7a1a\\u8d28\\u7099\\u75d4\\u6ede\\u6cbb\\u7a92\\u536e\\u965f\\u90c5\\u57f4\\u82b7\\u646d\\u5e19\\u5fee\\u5f58\\u54ab\\u9a98\\u6809\\u67b3\\u6800\\u684e\\u8f75\\u8f7e\\u6534\\u8d3d\\u81a3\\u7949\\u7957\\u9ef9\\u96c9\\u9e37\\u75e3\\u86ed\\u7d77\\u916f\\u8dd6\\u8e2c\\u8e2f\\u8c78\\u89ef\", \"zhong\": \"\\u4e2d\\u76c5\\u5fe0\\u949f\\u8877\\u7ec8\\u79cd\\u80bf\\u91cd\\u4ef2\\u4f17\\u51a2\\u953a\\u87bd\\u8202\\u822f\\u8e35\", \"zhou\": \"\\u821f\\u5468\\u5dde\\u6d32\\u8bcc\\u7ca5\\u8f74\\u8098\\u5e1a\\u5492\\u76b1\\u5b99\\u663c\\u9aa4\\u5544\\u7740\\u501c\\u8bf9\\u836e\\u9b3b\\u7ea3\\u80c4\\u78a1\\u7c40\\u8233\\u914e\\u9cb7\", \"zhu\": \"\\u73e0\\u682a\\u86db\\u6731\\u732a\\u8bf8\\u8bdb\\u9010\\u7af9\\u70db\\u716e\\u62c4\\u77a9\\u5631\\u4e3b\\u8457\\u67f1\\u52a9\\u86c0\\u8d2e\\u94f8\\u7b51\\u4f4f\\u6ce8\\u795d\\u9a7b\\u4f2b\\u4f8f\\u90be\\u82ce\\u8331\\u6d19\\u6e1a\\u6f74\\u9a7a\\u677c\\u69e0\\u6a65\\u70b7\\u94e2\\u75b0\\u7603\\u86b0\\u7afa\\u7bb8\\u7fe5\\u8e85\\u9e88\", \"zhua\": \"\\u6293\", \"zhuai\": \"\\u62fd\", \"zhuan\": \"\\u4e13\\u7816\\u8f6c\\u64b0\\u8d5a\\u7bc6\\u629f\\u556d\\u989b\", \"zhuang\": \"\\u6869\\u5e84\\u88c5\\u5986\\u649e\\u58ee\\u72b6\\u4e2c\", \"zhui\": \"\\u690e\\u9525\\u8ffd\\u8d58\\u5760\\u7f00\\u8411\\u9a93\\u7f12\", \"zhun\": \"\\u8c06\\u51c6\", \"zhuo\": \"\\u6349\\u62d9\\u5353\\u684c\\u7422\\u8301\\u914c\\u707c\\u6d4a\\u502c\\u8bfc\\u5ef4\\u855e\\u64e2\\u555c\\u6d5e\\u6dbf\\u6753\\u712f\\u799a\\u65ab\", \"zi\": \"\\u5179\\u54a8\\u8d44\\u59ff\\u6ecb\\u6dc4\\u5b5c\\u7d2b\\u4ed4\\u7c7d\\u6ed3\\u5b50\\u81ea\\u6e0d\\u5b57\\u8c18\\u5d6b\\u59ca\\u5b73\\u7f01\\u6893\\u8f8e\\u8d40\\u6063\\u7726\\u9531\\u79ed\\u8014\\u7b2b\\u7ca2\\u89dc\\u8a3e\\u9cbb\\u9aed\", \"zong\": \"\\u9b03\\u68d5\\u8e2a\\u5b97\\u7efc\\u603b\\u7eb5\\u8159\\u7cbd\", \"zou\": \"\\u90b9\\u8d70\\u594f\\u63cd\\u9139\\u9cb0\", \"zu\": \"\\u79df\\u8db3\\u5352\\u65cf\\u7956\\u8bc5\\u963b\\u7ec4\\u4fce\\u83f9\\u5550\\u5f82\\u9a75\\u8e74\", \"zuan\": \"\\u94bb\\u7e82\\u6525\\u7f35\", \"zui\": \"\\u5634\\u9189\\u6700\\u7f6a\", \"zun\": \"\\u5c0a\\u9075\\u6499\\u6a3d\\u9cdf\", \"zuo\": \"\\u6628\\u5de6\\u4f50\\u67de\\u505a\\u4f5c\\u5750\\u5ea7\\u961d\\u963c\\u80d9\\u795a\\u9162\", \"cou\": \"\\u85ae\\u6971\\u8f8f\\u8160\", \"nang\": \"\\u652e\\u54dd\\u56d4\\u9995\\u66e9\", \"o\": \"\\u5594\", \"dia\": \"\\u55f2\", \"chuai\": \"\\u562c\\u81aa\\u8e39\", \"cen\": \"\\u5c91\\u6d94\", \"diu\": \"\\u94e5\", \"nou\": \"\\u8028\", \"fou\": \"\\u7f36\", \"bia\": \"\\u9adf\" };\r\nconst polyphone: any = { \"19969\": \"DZ\", \"19975\": \"WM\", \"19988\": \"QJ\", \"20048\": \"YL\", \"20056\": \"SC\", \"20060\": \"NM\", \"20094\": \"QG\", \"20127\": \"QJ\", \"20167\": \"QC\", \"20193\": \"YG\", \"20250\": \"KH\", \"20256\": \"ZC\", \"20282\": \"SC\", \"20285\": \"QJG\", \"20291\": \"TD\", \"20314\": \"YD\", \"20340\": \"NE\", \"20375\": \"TD\", \"20389\": \"YJ\", \"20391\": \"CZ\", \"20415\": \"PB\", \"20446\": \"YS\", \"20447\": \"SQ\", \"20504\": \"TC\", \"20608\": \"KG\", \"20854\": \"QJ\", \"20857\": \"ZC\", \"20911\": \"PF\", \"20985\": \"AW\", \"21032\": \"PB\", \"21048\": \"XQ\", \"21049\": \"SC\", \"21089\": \"YS\", \"21119\": \"JC\", \"21242\": \"SB\", \"21273\": \"SC\", \"21305\": \"YP\", \"21306\": \"QO\", \"21330\": \"ZC\", \"21333\": \"SDC\", \"21345\": \"QK\", \"21378\": \"CA\", \"21397\": \"SC\", \"21414\": \"XS\", \"21442\": \"SC\", \"21477\": \"JG\", \"21480\": \"TD\", \"21484\": \"ZS\", \"21494\": \"YX\", \"21505\": \"YX\", \"21512\": \"HG\", \"21523\": \"XH\", \"21537\": \"PB\", \"21542\": \"PF\", \"21549\": \"KH\", \"21571\": \"E\", \"21574\": \"DA\", \"21588\": \"TD\", \"21589\": \"O\", \"21618\": \"ZC\", \"21621\": \"KHA\", \"21632\": \"ZJ\", \"21654\": \"KG\", \"21679\": \"LKG\", \"21683\": \"KH\", \"21710\": \"A\", \"21719\": \"YH\", \"21734\": \"WOE\", \"21769\": \"A\", \"21780\": \"WN\", \"21804\": \"XH\", \"21834\": \"A\", \"21899\": \"ZD\", \"21903\": \"RN\", \"21908\": \"WO\", \"21939\": \"ZC\", \"21956\": \"SA\", \"21964\": \"YA\", \"21970\": \"TD\", \"22003\": \"A\", \"22031\": \"JG\", \"22040\": \"XS\", \"22060\": \"ZC\", \"22066\": \"ZC\", \"22079\": \"MH\", \"22129\": \"XJ\", \"22179\": \"XA\", \"22237\": \"NJ\", \"22244\": \"TD\", \"22280\": \"JQ\", \"22300\": \"YH\", \"22313\": \"XW\", \"22331\": \"YQ\", \"22343\": \"YJ\", \"22351\": \"PH\", \"22395\": \"DC\", \"22412\": \"TD\", \"22484\": \"PB\", \"22500\": \"PB\", \"22534\": \"ZD\", \"22549\": \"DH\", \"22561\": \"PB\", \"22612\": \"TD\", \"22771\": \"KQ\", \"22831\": \"HB\", \"22841\": \"JG\", \"22855\": \"QJ\", \"22865\": \"XQ\", \"23013\": \"ML\", \"23081\": \"WM\", \"23487\": \"SX\", \"23558\": \"QJ\", \"23561\": \"YW\", \"23586\": \"YW\", \"23614\": \"YW\", \"23615\": \"SN\", \"23631\": \"PB\", \"23646\": \"ZS\", \"23663\": \"ZT\", \"23673\": \"YG\", \"23762\": \"TD\", \"23769\": \"ZS\", \"23780\": \"QJ\", \"23884\": \"QK\", \"24055\": \"XH\", \"24113\": \"DC\", \"24162\": \"ZC\", \"24191\": \"GA\", \"24273\": \"QJ\", \"24324\": \"NL\", \"24377\": \"TD\", \"24378\": \"QJ\", \"24439\": \"PF\", \"24554\": \"ZS\", \"24683\": \"TD\", \"24694\": \"WE\", \"24733\": \"LK\", \"24925\": \"TN\", \"25094\": \"ZG\", \"25100\": \"XQ\", \"25103\": \"XH\", \"25153\": \"PB\", \"25170\": \"PB\", \"25179\": \"KG\", \"25203\": \"PB\", \"25240\": \"ZS\", \"25282\": \"FB\", \"25303\": \"NA\", \"25324\": \"KG\", \"25341\": \"ZY\", \"25373\": \"WZ\", \"25375\": \"XJ\", \"25384\": \"A\", \"25457\": \"A\", \"25528\": \"SD\", \"25530\": \"SC\", \"25552\": \"TD\", \"25774\": \"ZC\", \"25874\": \"ZC\", \"26044\": \"YW\", \"26080\": \"WM\", \"26292\": \"PB\", \"26333\": \"PB\", \"26355\": \"ZY\", \"26366\": \"CZ\", \"26397\": \"ZC\", \"26399\": \"QJ\", \"26415\": \"ZS\", \"26451\": \"SB\", \"26526\": \"ZC\", \"26552\": \"JG\", \"26561\": \"TD\", \"26588\": \"JG\", \"26597\": \"CZ\", \"26629\": \"ZS\", \"26638\": \"YL\", \"26646\": \"XQ\", \"26653\": \"KG\", \"26657\": \"XJ\", \"26727\": \"HG\", \"26894\": \"ZC\", \"26937\": \"ZS\", \"26946\": \"ZC\", \"26999\": \"KJ\", \"27099\": \"KJ\", \"27449\": \"YQ\", \"27481\": \"XS\", \"27542\": \"ZS\", \"27663\": \"ZS\", \"27748\": \"TS\", \"27784\": \"SC\", \"27788\": \"ZD\", \"27795\": \"TD\", \"27812\": \"O\", \"27850\": \"PB\", \"27852\": \"MB\", \"27895\": \"SL\", \"27898\": \"PL\", \"27973\": \"QJ\", \"27981\": \"KH\", \"27986\": \"HX\", \"27994\": \"XJ\", \"28044\": \"YC\", \"28065\": \"WG\", \"28177\": \"SM\", \"28267\": \"QJ\", \"28291\": \"KH\", \"28337\": \"ZQ\", \"28463\": \"TL\", \"28548\": \"DC\", \"28601\": \"TD\", \"28689\": \"PB\", \"28805\": \"JG\", \"28820\": \"QG\", \"28846\": \"PB\", \"28952\": \"TD\", \"28975\": \"ZC\", \"29100\": \"A\", \"29325\": \"QJ\", \"29575\": \"SL\", \"29602\": \"FB\", \"30010\": \"TD\", \"30044\": \"CX\", \"30058\": \"PF\", \"30091\": \"YSP\", \"30111\": \"YN\", \"30229\": \"XJ\", \"30427\": \"SC\", \"30465\": \"SX\", \"30631\": \"YQ\", \"30655\": \"QJ\", \"30684\": \"QJG\", \"30707\": \"SD\", \"30729\": \"XH\", \"30796\": \"LG\", \"30917\": \"PB\", \"31074\": \"NM\", \"31085\": \"JZ\", \"31109\": \"SC\", \"31181\": \"ZC\", \"31192\": \"MLB\", \"31293\": \"JQ\", \"31400\": \"YX\", \"31584\": \"YJ\", \"31896\": \"ZN\", \"31909\": \"ZY\", \"31995\": \"XJ\", \"32321\": \"PF\", \"32327\": \"ZY\", \"32418\": \"HG\", \"32420\": \"XQ\", \"32421\": \"HG\", \"32438\": \"LG\", \"32473\": \"GJ\", \"32488\": \"TD\", \"32521\": \"QJ\", \"32527\": \"PB\", \"32562\": \"ZSQ\", \"32564\": \"JZ\", \"32735\": \"ZD\", \"32793\": \"PB\", \"33071\": \"PF\", \"33098\": \"XL\", \"33100\": \"YA\", \"33152\": \"PB\", \"33261\": \"CX\", \"33324\": \"BP\", \"33333\": \"TD\", \"33406\": \"YA\", \"33426\": \"WM\", \"33432\": \"PB\", \"33445\": \"JG\", \"33486\": \"ZN\", \"33493\": \"TS\", \"33507\": \"QJ\", \"33540\": \"QJ\", \"33544\": \"ZC\", \"33564\": \"XQ\", \"33617\": \"YT\", \"33632\": \"QJ\", \"33636\": \"XH\", \"33637\": \"YX\", \"33694\": \"WG\", \"33705\": \"PF\", \"33728\": \"YW\", \"33882\": \"SR\", \"34067\": \"WM\", \"34074\": \"YW\", \"34121\": \"QJ\", \"34255\": \"ZC\", \"34259\": \"XL\", \"34425\": \"JH\", \"34430\": \"XH\", \"34485\": \"KH\", \"34503\": \"YS\", \"34532\": \"HG\", \"34552\": \"XS\", \"34558\": \"YE\", \"34593\": \"ZL\", \"34660\": \"YQ\", \"34892\": \"XH\", \"34928\": \"SC\", \"34999\": \"QJ\", \"35048\": \"PB\", \"35059\": \"SC\", \"35098\": \"ZC\", \"35203\": \"TQ\", \"35265\": \"JX\", \"35299\": \"JX\", \"35782\": \"SZ\", \"35828\": \"YS\", \"35830\": \"E\", \"35843\": \"TD\", \"35895\": \"YG\", \"35977\": \"MH\", \"36158\": \"JG\", \"36228\": \"QJ\", \"36426\": \"XQ\", \"36466\": \"DC\", \"36710\": \"JC\", \"36711\": \"ZYG\", \"36767\": \"PB\", \"36866\": \"SK\", \"36951\": \"YW\", \"37034\": \"YX\", \"37063\": \"XH\", \"37218\": \"ZC\", \"37325\": \"ZC\", \"38063\": \"PB\", \"38079\": \"TD\", \"38085\": \"QY\", \"38107\": \"DC\", \"38116\": \"TD\", \"38123\": \"YD\", \"38224\": \"HG\", \"38241\": \"XTC\", \"38271\": \"ZC\", \"38415\": \"YE\", \"38426\": \"KH\", \"38461\": \"YD\", \"38463\": \"AE\", \"38466\": \"PB\", \"38477\": \"XJ\", \"38518\": \"YT\", \"38551\": \"WK\", \"38585\": \"ZC\", \"38704\": \"XS\", \"38739\": \"LJ\", \"38761\": \"GJ\", \"38808\": \"SQ\", \"39048\": \"JG\", \"39049\": \"XJ\", \"39052\": \"HG\", \"39076\": \"CZ\", \"39271\": \"XT\", \"39534\": \"TD\", \"39552\": \"TD\", \"39584\": \"PB\", \"39647\": \"SB\", \"39730\": \"LG\", \"39748\": \"TPB\", \"40109\": \"ZQ\", \"40479\": \"ND\", \"40516\": \"HG\", \"40536\": \"HG\", \"40583\": \"QJ\", \"40765\": \"YQ\", \"40784\": \"QJ\", \"40840\": \"YK\", \"40863\": \"QJG\" };\r\nconst options: any = {\r\n checkPolyphone: false,\r\n charcase: \"default\",\r\n};\r\nconst pinYin = {\r\n // 提取拼音, 返回首字母大写形式\r\n getFullChars: (str: any) => {\r\n let result = \"\",\r\n name;\r\n if (!str) {\r\n return result;\r\n }\r\n const reg = new RegExp(\"[a-zA-Z0-9- ]\");\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n const ch = str.substr(i, 1),\r\n unicode = ch.charCodeAt(0);\r\n if (unicode > 40869 || unicode < 19968) {\r\n result += ch;\r\n } else {\r\n name = pinYin._getFullChar(ch);\r\n if (name !== false) {\r\n result += name;\r\n }\r\n }\r\n }\r\n return result.toLocaleLowerCase();\r\n },\r\n // 提取首字母,返回大写形式\r\n getCamelChars: (str: any) => {\r\n if (typeof str !== \"string\") {\r\n return \"Z\";\r\n }\r\n const chars = []; //保存中间结果的数组\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n //获得unicode码\r\n const ch = str.charAt(i);\r\n //检查该unicode码是否在处理范围之内,在则返回该码对映汉字的拼音首字母,不在则调用其它函数处理\r\n chars.push(pinYin._getChar(ch));\r\n }\r\n //处理arrResult,返回所有可能的拼音首字母串数组\r\n return pinYin._getResult(chars).toLocaleLowerCase();\r\n },\r\n // 提取拼音\r\n _getFullChar: (str: any) => {\r\n for (const key in full_dict) {\r\n if (-1 !== full_dict[key].indexOf(str)) {\r\n return pinYin._capitalize(key);\r\n break;\r\n }\r\n }\r\n return false;\r\n },\r\n // 首字母大写\r\n _capitalize: (str: any) => {\r\n if (str.length > 0) {\r\n const first = str.substr(0, 1).toUpperCase();\r\n const spare = str.substr(1, str.length);\r\n return first + spare;\r\n }\r\n },\r\n _getChar: (ch: any) => {\r\n const unicode = ch.charCodeAt(0);\r\n //如果不在汉字处理范围之内,返回原字符,也可以调用自己的处理函数\r\n if (unicode > 40869 || unicode < 19968) return ch; //dealWithOthers(ch);\r\n //检查是否是多音字,是按多音字处理,不是就直接在strChineseFirstPY字符串中找对应的首字母\r\n if (!options.checkPolyphone) return char_dict.charAt(unicode - 19968);\r\n return polyphone[unicode] ? polyphone[unicode] : char_dict.charAt(unicode - 19968);\r\n },\r\n _getResult: (chars: any) => {\r\n if (!options.checkPolyphone) return chars.join(\"\");\r\n let result = [\"\"];\r\n for (let i = 0, len = chars.length; i < len; i++) {\r\n const str = chars[i],\r\n strlen = str.length;\r\n if (strlen === 1) {\r\n for (let j = 0; j < result.length; j++) {\r\n result[j] += str;\r\n }\r\n } else {\r\n const swap1 = result.slice(0);\r\n result = [];\r\n for (let j = 0; j < strlen; j++) {\r\n //复制一个相同的arrRslt\r\n const swap2 = swap1.slice(0);\r\n //把当前字符str[k]添加到每个元素末尾\r\n for (let k = 0; k < swap2.length; k++) {\r\n swap2[k] += str.charAt(j);\r\n }\r\n //把复制并修改后的数组连接到arrRslt上\r\n result = result.concat(swap2);\r\n }\r\n }\r\n }\r\n return result;\r\n },\r\n};\r\nexport default pinYin;\r\n","\r\nimport { Inject, Options, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport { Control, DesFormControl, DesFormLayout, FormEnum } from \"@/domain\";\r\nimport { FormFieldClass, FormFieldType, ValidateRules, VerticalArrangement, ZoomType } from \"@/constants\";\r\nimport generateGridTemplateColumns from \"../../filtres/generate-grid-template-columns.filter\";\r\nimport generateGridColumnEnd from \"../../filtres/generate-grid-column-end.filter\";\r\n\r\nimport { AutoComplete, Button, Cascader, Checkbox, CheckboxGroup, Col, DatePicker, Divider, Dropdown, Form, FormItem, Input, InputNumber, InputPassword, Menu, Popconfirm, Popover, Radio, RadioGroup, Rate, Row, Select, Slider, Switch, Textarea, Timeline, TimelineItem, TimePicker, Tooltip, TreeSelect, Upload, notification } from \"ant-design-vue\";\r\nimport { apiService, formBeanUtilsService } from \"@/services\";\r\nimport { ProvideInjectData } from \"@/domain/ProvideInjectData\";\r\n\r\nimport amountCapitalization from \"../../filtres/amount-capitalization.filter\";\r\nimport { CustomFormat, FormControl, ValidateResult } from \"../../domain\";\r\nimport { BuiltLabel, ControlFormatType, FormBusAttr, MoneyUnit, SubmittedType, SupportUploadType } from \"../../constants/enum\";\r\nimport { extractOptions } from \"@/filtres/extract-options.filter\";\r\nimport zoomMultiple from \"../../filtres/zoom-multiple.filter\";\r\nimport switchEnumConvert from \"../../filtres/switch-enum-convert.filter\";\r\nimport StretchText from \"./StretchText.vue\";\r\nimport { HISTORY_SVG_XML, SUBMITTED_SVG_XML } from \"../../constants/encode-assets/svg\";\r\nimport { ClockCircleOutlined, DownOutlined, EyeInvisibleOutlined, EyeOutlined, PlusOutlined, QuestionCircleOutlined, SearchOutlined, UploadOutlined, ExclamationCircleOutlined } from \"@ant-design/icons-vue\";\r\nimport { h } from \"vue\";\r\n\r\nimport dayjs from \"dayjs\";\r\nimport locale from \"ant-design-vue/es/date-picker/locale/zh_CN\";\r\nimport pinYin from \"../../../public/js/pinyin\";\r\nimport { FormApi } from \"@/core\";\r\n\r\n@Options({\r\n name: \"DvFormLayout\",\r\n filters: {\r\n amountCapitalization: amountCapitalization,\r\n switchEnumConvert: switchEnumConvert,\r\n zoomMultiple: zoomMultiple,\r\n },\r\n components: {\r\n StretchText,\r\n PlusOutlined,\r\n [Form.name]: Form,\r\n [FormItem.name]: FormItem,\r\n [Input.name]: Input,\r\n [Textarea.name]: Textarea,\r\n [AutoComplete.name]: AutoComplete,\r\n [InputNumber.name]: InputNumber,\r\n [Select.name]: Select,\r\n [Select.Option.displayName + \"\"]: Select.Option,\r\n [Select.OptGroup.displayName + \"\"]: Select.OptGroup,\r\n [Radio.name]: Radio,\r\n [RadioGroup.name]: RadioGroup,\r\n [Checkbox.name]: Checkbox,\r\n [CheckboxGroup.name]: CheckboxGroup,\r\n [Switch.name]: Switch,\r\n [TimePicker.name]: TimePicker,\r\n [DatePicker.name]: DatePicker,\r\n [Slider.name]: Slider,\r\n [AutoComplete.name]: AutoComplete,\r\n [Cascader.name]: Cascader,\r\n [TreeSelect.name]: TreeSelect,\r\n [Tooltip.name]: Tooltip,\r\n [InputPassword.name]: InputPassword,\r\n [Popover.name]: Popover,\r\n [Popconfirm.name]: Popconfirm,\r\n [Timeline.name]: Timeline,\r\n [TimelineItem.name]: TimelineItem,\r\n [Rate.name]: Rate,\r\n [Dropdown.name]: Dropdown,\r\n [Menu.name]: Menu,\r\n [Menu.Item.name]: Menu.Item,\r\n [Upload.name]: Upload,\r\n [Button.name]: Button,\r\n [Divider.name]: Divider,\r\n [DatePicker.MonthPicker.name]: DatePicker.MonthPicker,\r\n [StretchText.name]: StretchText,\r\n [Row.name]: Row,\r\n [Col.name]: Col,\r\n EyeOutlined,\r\n EyeInvisibleOutlined,\r\n VNodes: (_, { attrs }) => {\r\n return attrs.vnodes;\r\n },\r\n QuestionCircleOutlined,\r\n ClockCircleOutlined,\r\n DownOutlined,\r\n UploadOutlined,\r\n SearchOutlined,\r\n },\r\n})\r\nexport default class DvFormLayout extends Vue {\r\n locale = locale; // 国际化\r\n submittedSvg = SUBMITTED_SVG_XML; // 上报图标\r\n historySvg = HISTORY_SVG_XML; // 历史记录图标\r\n\r\n numberPopoverVisible = false; // 是否开启数字气泡弹窗\r\n validateResult: ValidateResult = {}; // 校验规则\r\n metaRefresh: any; // 刷新标识\r\n defaultMoneyUnit: any = {}; // 默认单位\r\n zoomType = ZoomType; // 缩放类型\r\n builtLabel = BuiltLabel; // 内置前/后置标签\r\n traddayList: any = localStorage.getItem(\"traddayList\") || JSON.stringify([]); // 交易日集合\r\n weekdayList: any = localStorage.getItem(\"weekdayList\") || JSON.stringify([]); // 节假日集合\r\n workdayList: any = localStorage.getItem(\"workdayList\") || JSON.stringify([]); // 工作日集合\r\n amountCapitalization = amountCapitalization; // 大写转换\r\n zoomMultiple = zoomMultiple; // 缩放\r\n isAfterClick = false; // 后缀图标是否被点击了 2026年4月17日 15:21:53\r\n private lastClickTime = 0; // 上次点击时间戳 2026年5月15日 12:12:53\r\n filterOption(value: any, item: any) {\r\n if (!item.title) {\r\n return false;\r\n }\r\n return item.title.indexOf(value) > -1 || pinYin.getCamelChars(item.title).indexOf(value) > -1 || pinYin.getFullChars(item.title).indexOf(value) > -1;\r\n }\r\n\r\n @Prop() index: number | undefined;\r\n @Prop() control: Control | any;\r\n @Prop() parentControl: Control | undefined;\r\n @Prop({ type: Object, default: () => ({}) }) customFormats: { [key: string]: CustomFormat } | undefined;\r\n @Prop({ type: Array, default: () => [] }) linkList: any | undefined; // 需要添加超链接点击事件数组 例:['cifNo', 'prodBaseNo']\r\n @Inject() provideInjectData: ProvideInjectData | any;\r\n readonly formFieldClass: FormEnum = FormFieldClass; // 表单字段分类\r\n readonly formFieldType: FormEnum = FormFieldType; // 表单字段类型\r\n\r\n @Watch(\"defaultMoneyUnit\", { immediate: true })\r\n onDefaultMoneyUnitHandler(newVal: any): void {\r\n if (newVal.code != null) {\r\n switch (newVal.code) {\r\n case MoneyUnit.Yuan.code:\r\n (this.controlAttr as DesFormControl).zoomMultiple = 1;\r\n break;\r\n case MoneyUnit.TenThousandYuan.code:\r\n (this.controlAttr as DesFormControl).zoomMultiple = 10000;\r\n break;\r\n case MoneyUnit.HundredMillionYuan.code:\r\n (this.controlAttr as DesFormControl).zoomMultiple = 100000000;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 校验反馈\r\n * @author ChenRui\r\n * @date 2021/2/26 14:24\r\n */\r\n @Watch(\"provideInjectData.refreshCheckFeedbackFlag\")\r\n @Watch(\"control.formControl.refreshValidate\")\r\n onValidationFeedbackHandle(): void {\r\n this.validateResult = this.formControl.validate();\r\n }\r\n\r\n /**\r\n * @description: 表单校验\r\n * @author ChenRui\r\n * @date 2022/4/6 14:12\r\n */\r\n @Watch(\"provideInjectData.formValidateStateResetMark\")\r\n onFormValidateStateResetMarkHandle(): void {\r\n this.validateResult = {};\r\n }\r\n /**\r\n * @Description 表单数据反显回调(data:Object { key: 元素码值, value: 元素值 })\r\n * @Author JiangTao\r\n * @Date 2023-10-07 下午 05:22\r\n */\r\n linkClick(data: any): void {\r\n this.$emit(\"linkClick\", data);\r\n }\r\n\r\n @Watch(\"control.controlAttr.isHideControl\")\r\n onHideControl() {\r\n this.$nextTick(() => {\r\n this.$emit(\"fixFormLayout\");\r\n });\r\n }\r\n /**\r\n * @description: 输入框形态\r\n * @author ChenRui\r\n * @date 2022/5/7 17:48\r\n */\r\n get inputShape(): string {\r\n if ((this.controlAttr as DesFormControl).isPasswordBox) {\r\n return \"a-input-password\";\r\n } else if ((this.controlAttr as DesFormControl).enableAutoComplete) {\r\n return \"a-auto-complete\";\r\n } else {\r\n return \"a-input\";\r\n }\r\n }\r\n\r\n /**\r\n * @description: 获取控件对象\r\n * @author ChenRui\r\n * @date 2021/1/27 11:07\r\n */\r\n get formControl(): FormControl {\r\n if (this.control && this.control.formControl) {\r\n // 初始化部分数据\r\n this.initFormControlData();\r\n return this.control.formControl;\r\n }\r\n return new FormControl();\r\n }\r\n\r\n /**\r\n * @description: 获取控件配置参数\r\n * @author ChenRui\r\n * @date 2021/1/5 11:26\r\n */\r\n get controlAttr(): DesFormControl | DesFormLayout {\r\n return this.control?.controlAttr as any;\r\n }\r\n\r\n /**\r\n * @description: 获取控件配置参数\r\n * @author ChenRui\r\n * @date 2021/1/5 11:26\r\n */\r\n get parentControlAttr(): DesFormLayout {\r\n return this.parentControl?.controlAttr as DesFormLayout;\r\n }\r\n\r\n /**\r\n * @description: 获取布局方式\r\n * @author ChenRui\r\n * @date 2020/12/30 18:19\r\n */\r\n get layout(): string {\r\n for (const propName of Object.keys(VerticalArrangement)) {\r\n if ((VerticalArrangement as any)[propName][\"code\"] === (this.controlAttr as DesFormLayout).gridVerticalArrangement) {\r\n return (VerticalArrangement as any)[propName][\"value\"];\r\n }\r\n }\r\n return VerticalArrangement.AlignRight.value;\r\n }\r\n\r\n /**\r\n * @description: 当前输入的字符长度\r\n * @author ChenRui\r\n * @date 2021/4/20 15:55\r\n */\r\n get currentCharacterCount(): any {\r\n return this.control!.formControl && this.control!.formControl.value ? this.control!.formControl.value.length : 0;\r\n }\r\n\r\n /**\r\n * @description: 最大字数限制\r\n * @author ChenRui\r\n * @date 2021/4/20 15:38\r\n */\r\n get maxCharacterCount(): any {\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n if (controlAttr.verificationRules && controlAttr.verificationRules.length > 0) {\r\n const verificationRule: any = controlAttr.verificationRules.find((item: any) => item.ruleType === ValidateRules.MaxTextLength.code);\r\n if (verificationRule != null && verificationRule.ruleContent) {\r\n return Number(verificationRule.ruleContent);\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * @description: 数字格式化\r\n * @author ChenRui\r\n * @date 2021/1/14 16:30\r\n */\r\n get numberFormatter(): any {\r\n const controlAttr: any = this.controlAttr as DesFormControl;\r\n const controlFormatType: string = controlAttr.formatType ? controlAttr.formatType : ControlFormatType.GENERAL.code;\r\n return (value: any) => {\r\n let val: any = value != undefined ? String(value) : \"\";\r\n switch (controlFormatType) {\r\n case ControlFormatType.GENERAL.code:\r\n case ControlFormatType.AMOUNT_OF_MONEY.code:\r\n if (controlFormatType === ControlFormatType.AMOUNT_OF_MONEY.code && val != null && controlAttr.thousandthPercentileFormat) {\r\n // 校验小数位不做千分位格式化处理\r\n if (val.indexOf(\".\") > -1) {\r\n val = `${val}`.split(\".\")[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\") + \".\" + `${val}`.split(\".\")[1];\r\n } else {\r\n val = `${val}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n }\r\n if (controlAttr.zoomType !== ZoomType.automatic.code && val != null && val != \"\" && controlAttr.unit) {\r\n // val = `${val}${controlAttr.unit}`;\r\n val = `${val}`;\r\n }\r\n return val;\r\n case ControlFormatType.BANK_CARD_NUMBER.code:\r\n if (val != null) {\r\n val = val.replace(/[\\s]/g, \"\").replace(/(\\d{4})(?=\\d)/g, \"$1 \");\r\n }\r\n return val;\r\n case ControlFormatType.CELL_PHONE_NUMBER.code:\r\n if (val != null) {\r\n val = val.replace(/\\D/g, \"\").substr(0, 11); // 不允许输入非数字字符,超过11位数字截取前11位\r\n const len = val.length;\r\n if (len > 3 && len < 8) {\r\n val = val.replace(/^(\\d{3})/g, \"$1 \");\r\n } else if (len >= 8) {\r\n val = val.replace(/^(\\d{3})(\\d{4})/g, \"$1 $2 \");\r\n }\r\n }\r\n return val;\r\n case ControlFormatType.LANDLINE_NUMBER.code:\r\n return val;\r\n default: {\r\n return value;\r\n }\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * @description: 数字反格式化\r\n * @author ChenRui\r\n * @date 2021/1/14 16:31\r\n */\r\n get numberParser(): any {\r\n const controlAttr: any = this.controlAttr as DesFormControl;\r\n const zoomType: string = controlAttr.formatType ? controlAttr.formatType : ControlFormatType.GENERAL.code;\r\n return (value: any) => {\r\n let val: any = value;\r\n switch (zoomType) {\r\n case ControlFormatType.GENERAL.code:\r\n case ControlFormatType.AMOUNT_OF_MONEY.code:\r\n if (zoomType === ControlFormatType.AMOUNT_OF_MONEY.code && val != null && controlAttr.thousandthPercentileFormat) {\r\n val = val.replace(/\\$\\s?|(,*)/g, \"\");\r\n }\r\n if (controlAttr.zoomType !== ZoomType.automatic.code && val != null && val != \"\" && controlAttr.unit) {\r\n const replaceUnit: string[] = controlAttr.unit.split(\"\");\r\n replaceUnit.forEach((item) => {\r\n val = val.replace(item, \"\");\r\n });\r\n }\r\n return val;\r\n case ControlFormatType.BANK_CARD_NUMBER.code:\r\n case ControlFormatType.CELL_PHONE_NUMBER.code:\r\n if (val != null) {\r\n val = val.replace(/\\s/g, \"\");\r\n }\r\n return val;\r\n case ControlFormatType.LANDLINE_NUMBER.code:\r\n return val;\r\n default: {\r\n return val;\r\n }\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * @description: label 宽度\r\n * @author ChenRui\r\n * @date 2021/1/5 11:59\r\n */\r\n get labelSpanWidth(): any {\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n const parentControlAttr: DesFormLayout = this.parentControlAttr as DesFormLayout;\r\n if (this.isMobileBrowser()) {\r\n return \"120px\";\r\n }\r\n if (controlAttr.titleWidth) {\r\n return controlAttr.titleWidth;\r\n } else if (parentControlAttr.labelSpan) {\r\n return parentControlAttr.labelSpan;\r\n } else {\r\n return this.provideInjectData.labelSpan;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 标签后是否显示冒号\r\n * @author ZPFly\r\n * @date 2022/7/15 10:54\r\n */\r\n get colon(): boolean {\r\n return this.provideInjectData.colon;\r\n }\r\n\r\n /**\r\n * @description: 最大宽度设置\r\n * @author ChenRui\r\n * @date 2021/7/8 16:39\r\n */\r\n get controlSpanMaxWidth(): any {\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n const parentControlAttr: DesFormLayout = this.parentControlAttr as DesFormLayout;\r\n if (controlAttr.controlWidth) {\r\n return controlAttr.controlWidth;\r\n } else if (parentControlAttr.controlSpan) {\r\n return parentControlAttr.controlSpan;\r\n } else if (this.provideInjectData.controlSpan) {\r\n return this.provideInjectData.controlSpan;\r\n } else {\r\n return \"none\";\r\n }\r\n }\r\n\r\n /**\r\n * @description: 控件宽度\r\n * @author ChenRui\r\n * @date 2021/1/5 15:11\r\n */\r\n get controlSpanWidth(): any {\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n const parentControlAttr: DesFormLayout = this.parentControlAttr as DesFormLayout;\r\n if (controlAttr.controlWidth) {\r\n return controlAttr.controlWidth;\r\n } else if (parentControlAttr.controlSpan) {\r\n return parentControlAttr.controlSpan;\r\n } else if (this.provideInjectData.controlSpan) {\r\n return this.provideInjectData.controlSpan;\r\n } else {\r\n return \"none\";\r\n }\r\n }\r\n\r\n /**\r\n * @description: label 标签的文本对齐方式\r\n * @author ChenRui\r\n * @date 2021/1/5 11:59\r\n */\r\n get labelAlign(): string {\r\n for (const propName of Object.keys(VerticalArrangement)) {\r\n if ((VerticalArrangement as any)[propName][\"code\"] === (this.controlAttr as DesFormLayout).gridVerticalArrangement) {\r\n return (VerticalArrangement as any)[propName][\"textAlign\"];\r\n }\r\n }\r\n return VerticalArrangement.AlignRight.textAlign;\r\n }\r\n\r\n /**\r\n * @description: 获取金额转换单位\r\n * @author ChenRui\r\n * @date 2021/2/20 17:43\r\n */\r\n get moneyUnits(): any[] {\r\n const moneyUnits: any[] = [];\r\n const moneyUnit: any[] = formBeanUtilsService.parse((this.controlAttr as DesFormControl).moneyUnit);\r\n if ((this.controlAttr as DesFormControl).moneyUnit) {\r\n Object.values(MoneyUnit).forEach((item) => {\r\n if (moneyUnit.findIndex((it) => it === item.code) !== -1) {\r\n moneyUnits.push(item);\r\n }\r\n });\r\n }\r\n\r\n if (moneyUnits && moneyUnits.length > 0) {\r\n this.defaultMoneyUnit = moneyUnits[0];\r\n }\r\n return moneyUnits;\r\n }\r\n\r\n /**\r\n * @description: 单位缩放比例\r\n * @author ChenRui\r\n * @date 2022/5/7 10:31\r\n */\r\n get moneyUnitsIndentScale(): number {\r\n const moneyUnit: any = this.defaultMoneyUnit;\r\n if (moneyUnit != null && moneyUnit.code) {\r\n return Number(moneyUnit.code);\r\n }\r\n return 0;\r\n }\r\n\r\n /**\r\n * @description: 获取select、checkbox、radio可选项\r\n * @author ChenRui\r\n * @date 2020/12/2 14:36\r\n */\r\n get options(): any[] {\r\n return extractOptions(this.controlAttr);\r\n }\r\n\r\n /**\r\n * @description: 使用月份组件\r\n * @author ChenRui\r\n * @date 2021/5/19 16:12\r\n */\r\n get useMonthPicker(): boolean {\r\n const dateFormat: any = (this.controlAttr as DesFormControl).dateFormat;\r\n if (dateFormat && dateFormat.toLowerCase() === \"yyyy-mm\") {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * @description: 级联选择框\r\n * @author ChenRui\r\n * @date 2021/1/5 16:31\r\n */\r\n get cascaderOptions(): any[] {\r\n const value: any[] = this.options;\r\n let options: any[] = [];\r\n if (value && value.length > 0) {\r\n const items = formBeanUtilsService.copy(value);\r\n options = this.cascaderRecursion(items);\r\n }\r\n return options;\r\n }\r\n\r\n /**\r\n * @description: 树形下拉选项\r\n * @author ChenRui\r\n * @date 2021/1/5 16:44\r\n */\r\n get treeSelectOptions(): any[] {\r\n const value: any[] = this.options;\r\n console.log(value);\r\n if (value && value.length > 0) {\r\n const items = formBeanUtilsService.copy(value);\r\n this.treeSelectRecursion(items);\r\n return items;\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @description: 是否12小时制\r\n * @author ChenRui\r\n * @date 2021/1/18 10:54\r\n */\r\n get is12Hours(): boolean {\r\n return !!(this.controlAttr as DesFormControl).timeFormat && (this.controlAttr as DesFormControl).timeFormat.indexOf(\":ss\") < 0;\r\n }\r\n\r\n /**\r\n * @description: 是否添加反馈\r\n * @author ChenRui\r\n * @date 2021/1/21 10:43\r\n */\r\n get hasFeedback(): boolean {\r\n return this.control!.formControl != null && this.control!.formControl!.validates && this.control!.formControl!.validates.length > 0;\r\n }\r\n\r\n /**\r\n * @description: 是否必填,仅影响样式\r\n * @author ChenRui\r\n * @date 2021/1/21 10:50\r\n */\r\n get required(): boolean {\r\n if (this.hasFeedback && this.control!.formControl!.validates.findIndex((item: any) => String(item.name) === String(ValidateRules.Required.code)) !== -1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * @description: 格式化数据\r\n * @author ChenRui\r\n * @date 2021/1/8 11:30\r\n */\r\n get formatData(): string {\r\n this.metaRefresh = this.provideInjectData.metaRefresh; // 刷新标识\r\n let val = \"\";\r\n let data: any = this.control!.formControl!.value;\r\n let options: any[];\r\n let context: any[];\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n switch (this.control!.code) {\r\n case FormFieldType.Input.code:\r\n if (controlAttr.bindingPrefix) {\r\n val += controlAttr.bindingPrefix;\r\n }\r\n val += data || \"\";\r\n if (controlAttr.bindingSuffix) {\r\n val += controlAttr.bindingSuffix;\r\n }\r\n data = val;\r\n break;\r\n case FormFieldType.InputNumber.code:\r\n if (this.numberFormatter) {\r\n data = this.numberFormatter(data);\r\n }\r\n // 自动补0\r\n if (data && controlAttr.decimalPlaces != undefined && (controlAttr.decimalPlaces as any) !== \"\") {\r\n let index;\r\n if (data.indexOf(\".\") == -1) {\r\n index = controlAttr.decimalPlaces;\r\n data += \".\";\r\n } else {\r\n index = controlAttr.decimalPlaces - (data.length - 1 - data.indexOf(\".\"));\r\n }\r\n for (let i = 0; i < index; i++) {\r\n data += \"0\";\r\n }\r\n data = this.countDecimalPlaces(data, controlAttr.decimalPlaces);\r\n }\r\n // 金额后缀不依赖于是否设置了小数位\r\n if (controlAttr.zoomType !== ZoomType.automatic.code && data != null && data != \"\" && controlAttr.unit) {\r\n data = data.replace(controlAttr.unit, \"\");\r\n // data = `${data}${controlAttr.unit}`; // 后缀在后面统一展示 2023年9月22日15:49:08\r\n }\r\n return data;\r\n case FormFieldType.Select.code:\r\n case FormFieldType.Radio.code:\r\n if (data != null && Array.isArray(data)) {\r\n const context: string[] = [];\r\n this.options.find((item) => {\r\n for (let i = 0; i < data.length; i++) {\r\n if (item.value === data[i]) {\r\n context.push(item.title);\r\n }\r\n }\r\n });\r\n return context.join(\",\");\r\n } else {\r\n const option = this.options.find((item) => item.value === data);\r\n return option ? option.title : \"\";\r\n }\r\n case FormFieldType.Checkbox.code:\r\n options = data || [];\r\n context = [];\r\n options.forEach((it) => {\r\n this.options.find((item) => {\r\n if (item.value === it) {\r\n context.push(item.title);\r\n }\r\n });\r\n });\r\n return context.join(\" , \");\r\n case FormFieldType.Switch.code:\r\n if (data !== undefined) {\r\n if (data === true && controlAttr.onOpeningValue != undefined && controlAttr.onOpeningValue !== \"\") {\r\n return controlAttr.onOpeningValue;\r\n } else if (data === false && controlAttr.whenClosedValue != undefined && controlAttr.whenClosedValue !== \"\") {\r\n return controlAttr.whenClosedValue;\r\n } else {\r\n return data ? \"是\" : \"否\";\r\n }\r\n }\r\n return \"\";\r\n case FormFieldType.TimePicker.code:\r\n if (data != null) {\r\n return dayjs(data).format(controlAttr.timeFormat || \"HH:mm:ss\");\r\n }\r\n return \"\";\r\n case FormFieldType.DatePicker.code:\r\n if (data != null) {\r\n return dayjs(data).format(controlAttr.dateFormat || \"YYYY-MM-dd\");\r\n }\r\n return \"\";\r\n case FormFieldType.Cascader.code:\r\n if (data != null) {\r\n return this.cascaderContextRecursion(data, this.cascaderOptions);\r\n }\r\n return \"\";\r\n case FormFieldType.TreeSelect.code:\r\n if (data != null) {\r\n return this.treeSelectContextRecursion(data, this.treeSelectOptions);\r\n }\r\n return \"\";\r\n case FormFieldType.Custom.code:\r\n if (this.customFormats && this.customFormats[controlAttr.customFieldName]) {\r\n const customFormat: CustomFormat = this.customFormats[controlAttr.customFieldName];\r\n if (customFormat && customFormat.display) {\r\n return customFormat.display(data, controlAttr);\r\n }\r\n }\r\n }\r\n return data;\r\n }\r\n\r\n /**\r\n * 数字小数位数计算\r\n * @author JiangTao\r\n * @since 2026-04-16 16:40:23\r\n */\r\n countDecimalPlaces(data: string | number, decimalPlaces: number | undefined): string {\r\n // 1. 安全处理\r\n const digits = decimalPlaces ?? 0;\r\n const str = String(data).trim();\r\n if (!str) return digits > 0 ? `0.${\"0\".repeat(digits)}` : \"0\";\r\n\r\n // 2. 判断是否有小数\r\n const hasDot = str.includes(\".\");\r\n const intPart = hasDot ? str.split(\".\")[0] : str;\r\n const decimalPart = hasDot ? str.split(\".\")[1] : \"\";\r\n\r\n // 3. 拼接成纯数字用于四舍五入计算\r\n const pureNumStr = intPart.replace(/,/g, \"\") + (hasDot ? \".\" + decimalPart : \"\");\r\n const num = parseFloat(pureNumStr);\r\n if (isNaN(num)) return intPart + (digits > 0 ? `.${\"0\".repeat(digits)}` : \"\");\r\n\r\n // 4. 四舍五入保留 digits 位\r\n const factor = Math.pow(10, digits);\r\n const rounded = (Math.round(num * factor) / factor).toFixed(digits);\r\n\r\n // 5. 拆分四舍五入后的整数与小数\r\n const [, roundedDecimal = \"\"] = rounded.split(\".\");\r\n\r\n // 6. 最终结果:原始整数部分 + 处理后的小数部分\r\n if (digits <= 0) return intPart;\r\n return `${intPart}.${roundedDecimal}`;\r\n }\r\n\r\n /**\r\n * @description: 支持的上传类型\r\n * @author ChenRui\r\n * @date 2021/4/25 11:50\r\n */\r\n get uploadType(): any {\r\n const controlAttr = this.controlAttr as DesFormControl;\r\n if (controlAttr.supportUploadType === SupportUploadType.Arbitrarily.code) {\r\n return undefined;\r\n } else if (controlAttr.supportUploadType === SupportUploadType.Custom.code) {\r\n return controlAttr.customUploadType;\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * @description: 下拉选项新增\r\n * @author ChenRui\r\n * @date 2021/1/14 20:05\r\n */\r\n selectAddItem(event: any): void {\r\n this.$emit(\"add-item\", event);\r\n /*const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n if (controlAttr != null) {\r\n if (controlAttr.isOptionType === OptionType.Fixed.code) {\r\n console.log(controlAttr.optionConfig);\r\n } else if (controlAttr.isOptionType === OptionType.Dynamic.code) {\r\n if (controlAttr.dynamicOptionType === DynamicOptionType.GeneralDictionary.code) {\r\n console.log(controlAttr.generalDictionaryOptions);\r\n }\r\n }\r\n }*/\r\n }\r\n\r\n /**\r\n * @description: 级联搜索\r\n * @author ChenRui\r\n * @date 2021/5/19 17:23\r\n */\r\n cascaderFilter(inputValue: any, path: any): any {\r\n return path.some((option: any) => option.label.toLowerCase().indexOf(inputValue.toLowerCase()) > -1);\r\n }\r\n\r\n /**\r\n * @description: 递归生成树形下拉选项\r\n * @author ChenRui\r\n * @date 2021/1/5 16:44\r\n */\r\n treeSelectRecursion(items: any[]): any[] {\r\n const options: any[] = [];\r\n items.forEach((item) => {\r\n item.disabled = false;\r\n item.key = item.value;\r\n if (item.children && item.children.length > 0) {\r\n if ((this.controlAttr as any).disableNonLeafNodes !== \"0\") {\r\n item.disabled = true; // LiuBo 2023年11月7日11:33:41 禁用非叶子节点\r\n }\r\n this.treeSelectRecursion(item.children);\r\n }\r\n });\r\n return options;\r\n }\r\n\r\n /**\r\n * @description: 级联递归\r\n * @author ChenRui\r\n * @date 2021/1/5 16:35\r\n */\r\n cascaderRecursion(items: any[]): any[] {\r\n const options: any[] = [];\r\n items.forEach((item) => {\r\n const option: any = {\r\n value: item.value,\r\n label: item.title,\r\n isLeaf: false,\r\n };\r\n options.push(option);\r\n if (item.children && item.children.length > 0) {\r\n option.children = this.cascaderRecursion(item.children);\r\n } else {\r\n option.isLeaf = true;\r\n }\r\n });\r\n return options;\r\n }\r\n\r\n /**\r\n * @description: 递归获取级联选项对应的文本\r\n * @author ChenRui\r\n * @date 2021/1/8 14:45\r\n */\r\n cascaderContextRecursion(val: any[], cascaderOptions: any[], index = 0): string {\r\n if (val && val.length > 0 && cascaderOptions && cascaderOptions.length > 0) {\r\n if (val.length > index) {\r\n const currentIndex = val[index];\r\n const cascaderOption = cascaderOptions.find((item) => item.value === currentIndex);\r\n if (cascaderOption != null) {\r\n let currentText = cascaderOption.label;\r\n if (val.length > index + 1) {\r\n const subText = this.cascaderContextRecursion(val, cascaderOption.children, index + 1);\r\n currentText += \" / \" + subText;\r\n }\r\n return currentText;\r\n }\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @description:\r\n * @author ChenRui\r\n * @date 2021/1/8 15:05\r\n */\r\n\r\n treeSelectContextRecursion(val: string, treeSelectOptions: any[]): string {\r\n if (val && treeSelectOptions && treeSelectOptions.length > 0) {\r\n for (let i = 0; i < treeSelectOptions.length; i++) {\r\n if (treeSelectOptions[i].value === val) {\r\n return treeSelectOptions[i].title;\r\n } else if (treeSelectOptions[i].children && treeSelectOptions[i].children.length > 0) {\r\n const subTitle: string = this.treeSelectContextRecursion(val, treeSelectOptions[i].children);\r\n if (subTitle) {\r\n return subTitle;\r\n }\r\n }\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @description: 是否为ie\r\n * @author ChenRui\r\n * @date 2021/3/25 14:44\r\n */\r\n get isIe(): boolean {\r\n return !!this.provideInjectData.widthCompatibleMode || !!window.ActiveXObject || \"ActiveXObject\" in window;\r\n }\r\n\r\n /**\r\n * @description: ie 兼容性宽度布局\r\n * @author ChenRui\r\n * @date 2021/3/25 12:53\r\n */\r\n get divWidthCompatibleToIe(): any {\r\n if (this.isIe) {\r\n const desFormLayout: DesFormLayout = this.parentControlAttr as DesFormLayout;\r\n const configIndex: number = this.index! % desFormLayout.gridColumnConfig.length; // 索引位置\r\n const proportion: number = desFormLayout.gridColumnConfig[configIndex].value; // 比重\r\n let total = 0; // 总值\r\n desFormLayout.gridColumnConfig.forEach((item: any) => {\r\n total += Number(item.value);\r\n });\r\n const ratio = proportion / total; // 比值\r\n const val = Number(ratio) * 100;\r\n return `calc( ${val}% - 1px)`;\r\n } else {\r\n return \"100%\";\r\n }\r\n }\r\n\r\n /**\r\n * @description: 根节点容器布局样式\r\n * @author ChenRui\r\n * @date 2021/3/25 14:52\r\n */\r\n get emptyLayoutContainerStyle(): any {\r\n let style: any = {};\r\n if (this.isMobileBrowser()) {\r\n return { display: \"flex\", \"flex-direction\": \"column\" };\r\n }\r\n if (this.isIe) {\r\n style = { display: \"flex\", \"flex-wrap\": \"wrap\" };\r\n } else {\r\n const gridTemplateColumns: any = generateGridTemplateColumns((this.control?.controlAttr as DesFormLayout)?.gridColumnConfig);\r\n style = { \"grid-template-columns\": gridTemplateColumns };\r\n }\r\n return style;\r\n }\r\n\r\n /**\r\n * @description: 常规布局容器样式\r\n * @author ChenRui\r\n * @date 2021/3/25 14:42\r\n */\r\n get generalLayoutContainerStyle(): any {\r\n let style: any = {};\r\n if (this.isMobileBrowser()) {\r\n return { display: \"flex\", \"flex-direction\": \"column\" };\r\n }\r\n if (this.isIe) {\r\n style = { display: \"flex\", \"flex-wrap\": \"wrap\" };\r\n } else {\r\n const gridColumnEnd: any = generateGridColumnEnd((this.parentControl?.controlAttr as DesFormLayout)?.gridColumnConfig);\r\n const gridTemplateColumns: any = generateGridTemplateColumns((this.control?.controlAttr as DesFormLayout)?.gridColumnConfig);\r\n style = {\r\n \"grid-column-end\": gridColumnEnd,\r\n \"grid-template-columns\": gridTemplateColumns,\r\n };\r\n }\r\n return style;\r\n }\r\n /**\r\n * 判断是否为移动端浏览器\r\n * @returns {boolean} true=移动端,false=PC端\r\n */\r\n isMobileBrowser() {\r\n // 匹配常见移动端设备的User-Agent关键词\r\n const mobileRegex = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobile|mobile|CriOS/i;\r\n // 排除平板设备(可选,根据业务需求调整)\r\n const tabletRegex = /iPad|Tablet|Nexus 7|Nexus 10/i;\r\n\r\n const userAgent = navigator.userAgent;\r\n const isMobile = mobileRegex.test(userAgent);\r\n const isTablet = tabletRegex.test(userAgent);\r\n\r\n // 业务逻辑:如果是平板,可根据需求返回true或false\r\n return isMobile && !isTablet;\r\n }\r\n\r\n /**\r\n * @description: 初始化部分数据\r\n * @author ChenRui\r\n * @date 2021/1/29 15:28\r\n */\r\n initFormControlData(): void {\r\n if (this.control && this.control.formControl) {\r\n if (this.control!.code === FormFieldType.DatePicker.code || this.control!.code === FormFieldType.TimePicker.code) {\r\n if (this.control.formControl.value) {\r\n if (typeof this.control.formControl.value === \"string\") {\r\n this.control.formControl.value = dayjs(new Date(this.control.formControl.value));\r\n } else if (this.control.formControl.value instanceof Date) {\r\n this.control.formControl.value = dayjs(this.control.formControl.value);\r\n }\r\n }\r\n }\r\n if (this.control.formControl.textNoticeCallback == null) {\r\n this.control.formControl.textNoticeCallback = () => {\r\n return this.formatData;\r\n };\r\n }\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n if (controlAttr.maxValue == null || (controlAttr.maxValue as any) === \"\") {\r\n const maxValue = \"9999999999999999\";\r\n if (controlAttr.decimalPlaces != undefined && (controlAttr.decimalPlaces as any) !== \"\" && controlAttr.decimalPlaces > 0) {\r\n if (controlAttr.decimalPlaces > 16) {\r\n controlAttr.decimalPlaces = 16;\r\n }\r\n controlAttr.maxValue = Number(maxValue.slice(0, maxValue.length - controlAttr.decimalPlaces) + \".\" + maxValue.slice(maxValue.length - controlAttr.decimalPlaces, maxValue.length));\r\n } else {\r\n controlAttr.maxValue = Number(maxValue);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 业务属性\r\n * @author ChenRui\r\n * @date 2021/2/1 14:38\r\n */\r\n get busAttr(): any {\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n let busAttr: any;\r\n let attrSubmittedType: any[] = [];\r\n if (controlAttr.busAttr) {\r\n busAttr = formBeanUtilsService.parse(controlAttr.busAttr);\r\n if (busAttr[FormBusAttr.SUBMITTED_TYPE.code]) {\r\n attrSubmittedType = busAttr[FormBusAttr.SUBMITTED_TYPE.code].split(\",\").filter((item: any) => !!item);\r\n }\r\n }\r\n const submittedType: any[] = Object.values(SubmittedType).map((val: any) => ({ label: val.name, value: val.code }));\r\n const submittedTypeCheckedNode: any[] = [];\r\n submittedType.forEach((item) => {\r\n if (attrSubmittedType.findIndex((it) => it === item.value) > -1) {\r\n submittedTypeCheckedNode.push(item);\r\n }\r\n });\r\n return {\r\n [FormBusAttr.SUBMITTED_TYPE.code]: submittedTypeCheckedNode,\r\n [FormBusAttr.IS_SUPPLEMENT.code]: busAttr ? busAttr[FormBusAttr.IS_SUPPLEMENT.code] : false,\r\n [FormBusAttr.IS_KEY_ELEMENTS.code]: busAttr ? busAttr[FormBusAttr.IS_KEY_ELEMENTS.code] : false,\r\n [FormBusAttr.IS_TRACK.code]: busAttr ? busAttr[FormBusAttr.IS_TRACK.code] : false,\r\n };\r\n }\r\n\r\n /**\r\n * @description: 报送类型\r\n * @author ChenRui\r\n * @date 2021/2/1 15:05\r\n */\r\n get submittedType(): any[] {\r\n if (this.busAttr && this.busAttr[FormBusAttr.SUBMITTED_TYPE.code].length > 0) {\r\n return this.busAttr[FormBusAttr.SUBMITTED_TYPE.code];\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @description: 报送类型字符串\r\n * @author ChenRui\r\n * @date 2021/2/1 15:08\r\n */\r\n get submittedTypeStr(): string {\r\n return this.submittedType.map((item) => item.label).join(\"、\");\r\n }\r\n\r\n /**\r\n * 根据日期时间格式决定是否显示时间选择功能\r\n * @param format\r\n */\r\n showPickerTime(format?: string): any {\r\n // format 包含时间格式\r\n if (format && format.indexOf(\"HH:mm\") > -1) {\r\n return format;\r\n }\r\n return false;\r\n }\r\n /**\r\n * @description: 清除特殊字符\r\n * @author ChenRui\r\n * @date 2021/6/22 15:41\r\n */\r\n private clearNoNum(value: any) {\r\n if (value) {\r\n value = value.replace(/[^\\d.]/g, \"\"); //清除“数字”和“.”以外的字符\r\n value = value.replace(/\\.{2,}/g, \".\"); //只保留第一个. 清除多余的\r\n value = value.replace(\".\", \"$#$\").replace(/\\./g, \"\").replace(\"$#$\", \".\");\r\n // eslint-disable-next-line no-useless-escape\r\n value = value.replace(/^(\\-)*(\\d+)\\.(\\d\\d).*$/, \"$1$2.$3\"); //只能输入两个小数\r\n if (value.indexOf(\".\") < 0 && value != \"\") {\r\n //以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额\r\n value = parseFloat(value);\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n /**\r\n * @description: 校验数字是否超过16位纯编码\r\n * @author ChenRui\r\n * @date 2021/6/22 14:58\r\n */\r\n private validateNumBeyondLimit(value: any): boolean {\r\n if (value) {\r\n const pureNumber: string = value.replace(/[^0-9]/gi, \"\");\r\n return pureNumber.length > 16;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * @description: 删除文件\r\n * @author ChenRui\r\n * @date 2021/4/25 11:35\r\n */\r\n handleRemove(file: any): void {\r\n const index = this.formControl.value.indexOf(file);\r\n const newFileList = this.formControl.value.slice();\r\n newFileList.splice(index, 1);\r\n this.formControl.value = newFileList;\r\n }\r\n\r\n /**\r\n * @description: 文件上传前回调函数\r\n * @author ChenRui\r\n * @date 2021/4/25 11:23\r\n */\r\n beforeUpload(file: any): boolean {\r\n const fileList: any[] = [...this.formControl.value, file];\r\n this.formControl.value = fileList;\r\n return false;\r\n }\r\n\r\n /**\r\n * @description: 文件上传变更\r\n * @author ChenRui\r\n * @date 2021/4/25 11:29\r\n */\r\n handleUploadChange(event: any): any {\r\n let fileList: any[] = [...this.formControl.value];\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n if (controlAttr.maxUploadNumber && controlAttr.maxUploadNumber > 0) {\r\n fileList = fileList.slice(0 - Number(controlAttr.maxUploadNumber));\r\n }\r\n fileList = fileList.map((file) => {\r\n if (file.response) {\r\n file.url = file.response.url;\r\n }\r\n return file;\r\n });\r\n this.formControl.value = fileList;\r\n if (event && event.file && (event.file.status === undefined || event.file.status === \"removed\")) {\r\n this.onChange(this.control!);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 金额菜单单机事件\r\n * @author ChenRui\r\n * @date 2021/2/20 17:21\r\n */\r\n handleMoneyUnitMenuClick(e: any): void {\r\n this.defaultMoneyUnit = this.moneyUnits.find((item) => item.code === e.key);\r\n }\r\n\r\n /**\r\n * @description: 将下拉弹层渲染节点固定在触发器的父元素中\r\n * @author ZPFly\r\n * @date 2022/8/31 11:30\r\n */\r\n getPopupContainer(triggerNode: any) {\r\n return triggerNode.parentNode;\r\n }\r\n\r\n /**\r\n * @description: 输入事件处理\r\n * @author ChenRui\r\n * @date 2020/12/2 14:37\r\n */\r\n onChange(event: Control): void {\r\n if (this.control && (this.control.type === FormFieldClass.Base.code || this.control.type === FormFieldClass.Senior.code)) {\r\n this.validateResult = this.formControl.validate(event.formControl?.value);\r\n }\r\n this.$emit(\"change\", event);\r\n }\r\n\r\n /**\r\n * @description: 点击事件\r\n * @author ChenRui\r\n * @date 2021/3/4 11:37\r\n */\r\n onClick(event: Control): void {\r\n this.$emit(\"click\", event);\r\n }\r\n\r\n /**\r\n * @description: 内置前置标签事件\r\n * @author ChenRui\r\n * @date 2021/4/23 9:42\r\n */\r\n onAddonBeforeHandler(event: any): void {\r\n this.$emit(\"addon-before\", event);\r\n }\r\n\r\n /**\r\n * @description: 内置后置标签事件\r\n * @author ChenRui\r\n * @date 2021/4/23 9:43\r\n */\r\n onAddonAfterHandler(event: any): void {\r\n this.$emit(\"addon-after\", event);\r\n }\r\n /**\r\n *\r\n * @param formControl 表单控制器\r\n * @private 私有方法\r\n */\r\n handlerMasking(formControl: any): void {\r\n const now = Date.now();\r\n // 防止频繁点击,间隔小于1秒则提示\r\n if (now - this.lastClickTime < 1000) {\r\n notification.open({\r\n message: \"点击过于频繁,请稍后再试\",\r\n duration: 2,\r\n icon: () => h(ExclamationCircleOutlined, { style: \"color: #FBBC05\" }),\r\n });\r\n return;\r\n }\r\n this.lastClickTime = now;\r\n const path = this.$qlForm.desApiAddr;\r\n if (!path) {\r\n notification.open({\r\n message: \"解密接口未配置,请联系管理员\",\r\n duration: 5,\r\n icon: () => h(ExclamationCircleOutlined, { style: \"color: #FBBC05\" }),\r\n });\r\n return;\r\n }\r\n // 调用解密函数\r\n this.isAfterClick = !this.isAfterClick;\r\n const formApi: FormApi = this.control.formApi;\r\n if (this.isAfterClick) {\r\n const encData = formApi.formData[formControl.key + \"Enc\"];\r\n if (!formControl.oldValue) {\r\n // 保存原始脱敏值\r\n formControl.oldValue = formApi.formData[formControl.key]; // 脱敏数据\r\n }\r\n // 接口获取解密值\r\n const params: any = { ...formApi.desParams };\r\n params.ciphertext = encData; // 密文\r\n params.desensField = formControl.key; // 脱敏的字段\r\n console.error(params);\r\n this.getFieldPlaintext(path, params).then((res: any) => {\r\n if (res.code === 1) {\r\n formControl.value = res.data;\r\n } else {\r\n notification.open({\r\n message: res.msg || \"解密失败,请重试\",\r\n duration: 5,\r\n icon: () => h(ExclamationCircleOutlined, { style: \"color: #FBBC05\" }),\r\n });\r\n }\r\n });\r\n } else {\r\n formControl.value = formControl.oldValue;\r\n }\r\n }\r\n\r\n /**\r\n * @desc 解密字段\r\n * @param path 解密接口地址\r\n * @param params 解密需要的参数\r\n * @private\r\n */\r\n private getFieldPlaintext(path: string, params: any): Promise<any> {\r\n const headers = apiService.createAuthHeaders();\r\n return apiService.fetch(path, {}, JSON.stringify(params), \"POST\", headers);\r\n }\r\n /**\r\n * @description: 数字框失焦点\r\n * @author ChenRui\r\n * @date 2021/3/4 11:51\r\n */\r\n onInputNumberFocus(event: Control): void {\r\n this.onFocus(event);\r\n if ((this.controlAttr as DesFormControl).isShowCapitalization) {\r\n this.numberPopoverVisible = true;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 数字输入框失焦\r\n * @author ChenRui\r\n * @date 2021/3/4 11:43\r\n */\r\n onInputNumberBlur(event: Control): void {\r\n this.onBlur(event);\r\n if ((this.controlAttr as DesFormControl).isShowCapitalization) {\r\n this.numberPopoverVisible = false;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 获取焦点\r\n * @author ChenRui\r\n * @date 2021/3/4 11:46\r\n */\r\n onFocus(event: Control): void {\r\n this.$emit(\"focus\", event);\r\n }\r\n\r\n /**\r\n * @description: 失焦事件\r\n * @author ChenRui\r\n * @date 2021/3/4 11:38\r\n */\r\n onBlur(event: Control): void {\r\n this.$emit(\"blur\", event);\r\n }\r\n\r\n /**\r\n * @Description 是否节假日校验\r\n * @Author JiangTao\r\n * @Date 2024-04-16 下午 02:33\r\n */\r\n isRest(current: any): boolean {\r\n if (JSON.parse(this.weekdayList).find((e: any) => e.calDate === this.DateTime(current.$d))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * @Description 是否工作日校验\r\n * @Author JiangTao\r\n * @Date 2024-04-16 下午 02:33\r\n */\r\n isWeekday(current: any): boolean {\r\n if (JSON.parse(this.workdayList).find((e: any) => e.calDate === this.DateTime(current.$d))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * @Description 是否交易日校验\r\n * @Author JiangTao\r\n * @Date 2024-04-16 下午 02:33\r\n */\r\n isRadingDay(current: any): boolean {\r\n if (JSON.parse(this.traddayList).find((e: any) => e.calDate === this.DateTime(current.$d))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * @Description 日期格式转换\r\n * @Author JiangTao\r\n * @Date 2024-04-16 下午 02:33\r\n */\r\n DateTime(date: any): string {\r\n const year: any = date.getFullYear();\r\n let month: any = date.getMonth() + 1;\r\n let strDate: any = date.getDate();\r\n\r\n if (month < 10) {\r\n month = \"0\" + month;\r\n }\r\n\r\n if (strDate < 10) {\r\n strDate = \"0\" + strDate;\r\n }\r\n\r\n return \"\" + year + month + strDate;\r\n }\r\n}\r\n","import { render } from \"./DvFormLayout.vue?vue&type=template&id=6014843b&scoped=true&ts=true\"\nimport script from \"./DvFormLayout.vue?vue&type=script&lang=ts\"\nexport * from \"./DvFormLayout.vue?vue&type=script&lang=ts\"\n\nimport \"./DvFormLayout.vue?vue&type=style&index=0&id=6014843b&lang=scss&scoped=true\"\n\nimport exportComponent from \"E:\\\\base-frontend\\\\vue-lo3-form-260417\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6014843b\"]])\n\nexport default __exports__","/* eslint-disable */\r\nclass DateFormatService {\r\n /**\r\n * 日期时间格式自定义\r\n * @param {number|string} value 日期时间值时间戳或时间格式\r\n * @param {string} format 输出的时间格式\r\n * @returns {string} 定义好的时间格式\r\n */\r\n formatDateTime(value: any, format = 'YYYY-MM-dd HH:mm:ss'): string {\r\n const reg = /(YY|YYYY|MM|dd|HH|mm|ss|ww|WW)/g;\r\n if (!value) {\r\n return ''\r\n }\r\n if (!reg.test(format)) {\r\n throw new Error(`The defined format ${format} is incorrect,Please enter 'YYYY or YY' for year,MM for month, dd for day,ww or WW for week,HH for hours,mm for minutes,ss for seconds.`)\r\n }\r\n if (typeof value === 'string' && value.length === 8) {\r\n value = [value.substr(0, 4), value.substr(4, 2), value.substr(6, 2)].join('/')\r\n } else if (!isNaN(Number(value))) {\r\n value = Number(value);\r\n }\r\n const time = new Date(value);\r\n if (String(time) === 'Invalid Date') {\r\n throw new Error(`Time format unrecognized by ${value}, Please enter time stamp or legal time format.`);\r\n }\r\n const dayMap = ['日', '一', '二', '三', '四', '五', '六'];\r\n const year = String(time.getFullYear());\r\n const month = time.getMonth() + 1 > 9 ? String(time.getMonth() + 1) : `0${String(time.getMonth() + 1)}`;\r\n const date = time.getDate() > 9 ? String(time.getDate()) : `0${String(time.getDate())}`;\r\n const day = time.getDay();\r\n const week: any = day !== 0 ? day : '日';\r\n const hours = time.getHours() > 9 ? String(time.getHours()) : `0${String(time.getHours())}`;\r\n const minutes = time.getMinutes() > 9 ? String(time.getMinutes()) : `0${time.getMinutes()}`;\r\n const seconds = time.getSeconds() > 9 ? String(time.getSeconds()) : `0${String(time.getSeconds())}`;\r\n let str = '';\r\n if (/YYYY|YY/g.test(format)) {\r\n format.replace(/YYYY|YY/g, (reg, index, value) => {\r\n if (reg === 'YY') {\r\n str = value.replace('YY', year.slice(2))\r\n }\r\n if (reg === 'YYYY') {\r\n str = value.replace('YYYY', year)\r\n }\r\n return str\r\n })\r\n } else {\r\n str = format\r\n }\r\n str = str.replace(/MM/g, month);\r\n str = str.replace(/dd/g, date);\r\n str = str.replace(/HH/g, hours);\r\n str = str.replace(/mm/g, minutes);\r\n str = str.replace(/ss/g, seconds);\r\n str = str.replace(/ww/g, week);\r\n str = str.replace(/WW/g, dayMap[day]);\r\n return str\r\n }\r\n\r\n /**\r\n * @Description:两个日期大小比较(开始时间 > 结束时间,返回true)\r\n * @author LiuBo\r\n * @date 2022/7/15\r\n * @time 10:43\r\n * @param startTime 开始时间 (YYYY-MM-DD)\r\n * @param endTime 结束时间 (YYYY-MM-DD)\r\n * @modifyLog\r\n */\r\n dateSizeCompare(startTime: string,endTime: string): boolean {\r\n return new Date(Date.parse(startTime.replace(/-/g,\"/\"))).getTime() >\r\n new Date(Date.parse(endTime.replace(/-/g,\"/\"))).getTime();\r\n }\r\n}\r\nconst dateFormat: DateFormatService = new DateFormatService();\r\nexport { dateFormat };\r\n","import { FormGroup } from \"@/domain\";\r\nimport { AbstractControl } from \"@/domain/AbstractControl\";\r\nimport { FormControl, Validate, ValidateReport, ValidateResult } from \"../domain/FormControl\";\r\nimport DvForm from \"../components/form/DvForm.vue\";\r\nimport { FormFieldType, OptionType, SubmittedType, ValidateRules, ValidateStatus } from \"../constants/enum\";\r\n// import moment from \"moment\";\r\nimport { ZoomType } from \"@/constants\";\r\nimport { extractOptions, storageOptions } from \"@/filtres/extract-options.filter\";\r\nimport { CustomFormat, FieldChangeHistory } from \"../domain\";\r\nimport { Rule, validateGeneratorService } from \"../services/validate-generator.service\";\r\nimport { formToolsService, formTreeNodeConvertService, formValidateService } from \"@/services\";\r\nimport { MathJsStatic } from \"mathjs\";\r\nimport { Vue } from \"vue-property-decorator\";\r\nimport dayjs from \"dayjs\";\r\nimport { dateFormat } from \"@/services/date-format.service\";\r\nexport type FormatType = \"default\" | \"ebtrust\";\r\n\r\nexport enum Attribute {\r\n IsHideControl = \"isHideControl\", // 隐藏控件\r\n IsRequiredValidate = \"isRequiredValidate\", // 是否必填\r\n FormFieldDescribe = \"formFieldDescribe\", // 字段别名\r\n FieldDefaultValue = \"fieldDefaultValue\", // 默认值\r\n TitleWidth = \"titleWidth\", // 标题宽度\r\n IsBoldTitle = \"isBoldTitle\", // 加粗标题\r\n IsHideTitle = \"isHideTitle\", // 隐藏标题\r\n TitleColor = \"titleColor\", // 标题颜色\r\n Placeholder = \"placeholder\", // 预期值的提示信息\r\n Tips = \"tips\", // 提示信息\r\n IsNotEdit = \"isNotEdit\", // 不可编辑\r\n BindingPrefix = \"bindingPrefix\", // 绑定前缀\r\n BindingSuffix = \"bindingSuffix\", // 绑定后缀\r\n BuiltInFrontLabel = \"builtInFrontLabel\", // 内置前置标签\r\n BuiltInPostLabel = \"builtInPostLabel\", // 内置后置标签\r\n ControlWidth = \"controlWidth\", // 控件宽度\r\n IsPasswordBox = \"isPasswordBox\", // 是否密码框\r\n InitRowHeight = \"initRowHeight\", // 初始行高\r\n IsFixedRowHeight = \"isFixedRowHeight\", // 是否固定行高\r\n FormatType = \"formatType\", // 格式化类型\r\n MinValue = \"minValue\", // 最小值\r\n MaxValue = \"maxValue\", // 最大值\r\n Step = \"step\", // 步长\r\n DecimalPlaces = \"decimalPlaces\", // 小数位\r\n ThousandthPercentileFormat = \"thousandthPercentileFormat\", // 千分位格式化\r\n Unit = \"unit\", // 单位\r\n ZoomType = \"zoomType\", // 缩放类型\r\n ZoomMultiple = \"zoomMultiple\", // 缩放倍数\r\n IsShowCapitalization = \"isShowCapitalization\", // 展示大写\r\n IsLineFeedDisplay = \"isLineFeedDisplay\", // 换行显示\r\n IsOptionType = \"isOptionType\", // 类型选项\r\n OptionConfig = \"optionConfig\", // 自定义字典项\r\n DateFormat = \"dateFormat\", // 日期格式\r\n TimeFormat = \"timeFormat\", // 时间格式\r\n IsSupportMultiple = \"isSupportMultiple\", // 是否支持多选\r\n MaxUploadNumber = \"maxUploadNumber\", // 最多上传个数\"\r\n LimitSize = \"limitSize\", // 上传大小限制\r\n SupportUploadType = \"supportUploadType\", // 扩展类型\r\n CustomUploadType = \"customUploadType\", // 自定义类型\r\n ExtendUploadType = \"extendUploadType\", // 扩展类型\r\n AttachmentExtendProperties = \"attachmentExtendProperties\", // 附件扩展属性\r\n IsMultipleChoice = \"isMultipleChoice\", // 是否可多选\r\n IsSearchable = \"isSearchable\", // 是否可搜索\r\n CanAddEntry = \"canAddEntry\", // 是否可新增条目\r\n IsClearButton = \"isClearButton\", // 显示清除按钮\r\n OnOpeningValue = \"onOpeningValue\", // 打开时的值\r\n WhenClosedValue = \"whenClosedValue\", // 关闭时的值\r\n OnOpeningText = \"onOpeningText\", // 打开时的文字描述\r\n WhenClosedText = \"whenClosedText\", // 关闭时的文字描述\r\n CustomFieldName = \"customFieldName\", // 自定义字段名\r\n TextFold = \"textFold\", // 文本折叠\r\n HiddenDropdown = \"hiddenDropdown\", // 隐藏下拉面板\r\n BusAttr = \"busAttr\", // 业务属性\r\n EnableAutoComplete = \"enableAutoComplete\", // 开启自动完成功能\r\n AutoCompleteOptions = \"autoCompleteOptions\", // 自动完成列表数据\r\n IsTreeOpen = \"isTreeOpen\", // 树形选择框是否展开\r\n CheckboxStyle = \"checkboxStyle\", // 多选器选项标签样式\r\n ItemWidth = \"itemWidth\",\r\n ChangeOnSelect = \"changeOnSelect\", // 是否允许级联选择框只选中父级选项\r\n TextareaRows = \"textareaRows\", // 设置textarea组件默认展示行数\r\n IsShowHoliday = \"isShowHoliday\", // 是否展示节假日\r\n}\r\n\r\n/**\r\n * @description: 表单基础类,聚合常用api\r\n * @author ChenRui\r\n * @date 2020/11/28 23:27\r\n */\r\nexport class FormApi {\r\n id?: any; // api编号\r\n dvForm: Vue | any; // form组件实例\r\n edit: boolean | undefined; // 编辑状态\r\n formatType: FormatType; // 数据格式化模式\r\n apiMetaRefresh: any; // api内部刷新标识\r\n [key: string]: any; // 任一扩展属性\r\n oldVal: any; // 修改前数据\r\n private srcData: any; // 表单原始数据\r\n desParams: any; // 脱敏参数 包括【业务编号、业务对象类型、表单中文等】\r\n /**\r\n * @description: 获取表单对象\r\n * @author ChenRui\r\n * @date 2020/11/28 23:29\r\n */\r\n constructor(\r\n options: {\r\n id?: any;\r\n dvForm?: Vue;\r\n edit?: boolean;\r\n formatType?: FormatType;\r\n desParams?: any;\r\n } = {}\r\n ) {\r\n this.id = options.id || this.getUuid();\r\n this.dvForm = options.dvForm || new Vue(DvForm);\r\n this.edit = options.edit;\r\n this.formatType = options.formatType || \"default\";\r\n this.desParams = options.desParams || {}; // 脱敏所需参数\r\n }\r\n\r\n get mathjs(): MathJsStatic {\r\n if ((window as any).$app.config.globalProperties.$mathjs) {\r\n return (window as any).$app.config.globalProperties.$mathjs;\r\n }\r\n return {} as MathJsStatic;\r\n }\r\n\r\n /**\r\n * @description: 获取表单值\r\n * @author ChenRui\r\n * @date 2021/2/4 10:36\r\n */\r\n get formData(): any {\r\n this.apiMetaRefresh = this.dvForm.metaRefresh;\r\n if (this.dvForm.desForm && this.dvForm.desForm.formGroup) {\r\n let obj: any = this.generateData(this.dvForm.desForm.formGroup);\r\n if (this.oldVal) {\r\n obj = this.contrast(this.oldVal, obj);\r\n if (!Object.keys(obj).length) {\r\n obj = null;\r\n }\r\n }\r\n // 追加表单中没有的字段 2026年5月13日 20:39:24 用于处理字段脱敏\r\n if (this.srcData) {\r\n for (const key in this.srcData) {\r\n // eslint-disable-next-line no-prototype-builtins\r\n if (obj && !obj.hasOwnProperty(key)) {\r\n obj[key] = this.srcData[key];\r\n }\r\n }\r\n }\r\n return obj;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @Description 获取表单全部值\r\n * @Author JiangTao\r\n * @Date 2023-12-22 下午 02:50\r\n */\r\n get formAllData(): any {\r\n this.apiMetaRefresh = this.dvForm.metaRefresh;\r\n if (this.dvForm.desForm && this.dvForm.desForm.formGroup) {\r\n const obj: any = this.generateData(this.dvForm.desForm.formGroup);\r\n return obj;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 编码表单对象\r\n * @author ChenRui\r\n * @date 2021/4/25 16:41\r\n */\r\n get encodedFormData(): any {\r\n this.apiMetaRefresh = this.dvForm.metaRefresh;\r\n if (this.dvForm.desForm && this.dvForm.desForm.formGroup) {\r\n const data = this.generateData(this.dvForm.desForm.formGroup);\r\n return this.jsonToFormData(data);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 设置表单值\r\n * @author ChenRui\r\n * @date 2021/2/4 10:37\r\n */\r\n setFormData(srcData: any, isDefault = false, validate = false, oldVal?: any): void {\r\n if (this.dvForm.desForm.formGroup) {\r\n this.setFormDataInner(srcData, isDefault, validate);\r\n } else {\r\n setTimeout(() => {\r\n this.setFormDataInner(srcData, isDefault, validate);\r\n });\r\n }\r\n if (oldVal) this.oldVal = oldVal;\r\n this.srcData = srcData; // 记录赋值时的原始数据,这里面有非表单字段\r\n }\r\n\r\n /**\r\n * @description: 获取控件对象\r\n * @author ChenRui\r\n * @date 2021/1/29 10:08\r\n */\r\n getControl(key: string, control?: AbstractControl, showError = true): AbstractControl | any {\r\n if (key) {\r\n if (control == null) {\r\n if (this.dvForm.desForm.formGroup) {\r\n control = this.dvForm.desForm.formGroup.controls;\r\n } else if (showError) {\r\n console.log(\"表单对象尚未初始化完成...\");\r\n }\r\n }\r\n if (control && Object.keys(control).length > 0) {\r\n for (const propName of Object.keys(control)) {\r\n if (propName === key) {\r\n return control[propName];\r\n }\r\n if (control[propName].controls && Object.keys(control[propName].controls).length > 0) {\r\n const subControl: AbstractControl = this.getControl(key, control[propName].controls);\r\n if (subControl != null) {\r\n return subControl;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 获取值\r\n * @author ChenRui\r\n * @date 2021/1/29 14:57\r\n */\r\n getValue(key: string): any {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control) {\r\n // && control instanceof FormControl\r\n return this.decodeData(control as FormControl, false);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 设置值\r\n * @author ChenRui\r\n * @date 2021/1/29 16:23\r\n */\r\n setValue(key: string, val: any, isDefault = false, validate = true): void {\r\n let control: AbstractControl = this.getControl(key);\r\n if (control == null) {\r\n setTimeout(() => {\r\n control = this.getControl(key);\r\n this.setControlValue(control, key, val, isDefault, validate);\r\n });\r\n } else {\r\n this.setControlValue(control, key, val, isDefault, validate);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 重置表单\r\n * @author ChenRui\r\n * @date 2021/2/22 17:40\r\n */\r\n resetValue(): void {\r\n this.dvForm.formatDesForm(true);\r\n }\r\n\r\n /**\r\n * @description: 获取文本内容\r\n * @author ChenRui\r\n * @date 2021/1/29 15:03\r\n */\r\n getText(key: string): any {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n return control.text();\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @description: 获取可选项\r\n * @author ChenRui\r\n * @date 2021/1/29 16:11\r\n */\r\n getOptions(key: string): any[] {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control && control.controlAttr) {\r\n //control && control instanceof FormControl && control.controlAttr\r\n return extractOptions(control.controlAttr);\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @description: 设置可选项\r\n * @author ChenRui\r\n * @date 2021/1/29 16:15\r\n */\r\n setOptions(key: string, data: any[], defaultVal?: any): void {\r\n let control: AbstractControl = this.getControl(key);\r\n if (control == null) {\r\n setTimeout(() => {\r\n control = this.getControl(key);\r\n this.setControlOptions(control, key, data, defaultVal);\r\n });\r\n } else {\r\n this.setControlOptions(control, key, data, defaultVal);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 获取常规属性\r\n * @author ChenRui\r\n * @date 2021/1/29 17:21\r\n */\r\n getAttribute(key: string, attribute: Attribute): any {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control && control.controlAttr) {\r\n //control && control instanceof FormControl && control.controlAttr\r\n return control.controlAttr[attribute];\r\n }\r\n }\r\n /**\r\n * @description: 设置常规属性\r\n * @author ChenRui\r\n * @date 2021/1/29 17:21\r\n */\r\n setAttribute(key: string, attribute: Attribute, data: any): void {\r\n let control: AbstractControl = this.getControl(key);\r\n if (control == null) {\r\n setTimeout(() => {\r\n control = this.getControl(key);\r\n this.setControlAttribute(control, attribute, data);\r\n });\r\n } else {\r\n this.setControlAttribute(control, attribute, data);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 根据name获取校验\r\n * @author ChenRui\r\n * @date 2021/1/30 11:46\r\n */\r\n getValidate(key: string, name: string): any {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n return control.getValidate(name);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 移除校验\r\n * @author ChenRui\r\n * @date 2021/4/1 21:30\r\n */\r\n removeValidate(key: string, validateName: string): void {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n const validates: Validate[] = control.validates;\r\n if (validates && validates.length > 0) {\r\n const index = validates.findIndex((item) => item.name === validateName);\r\n if (index !== -1) {\r\n validates.splice(index, 1);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 移除所有校验\r\n * @author ChenRui\r\n * @date 2021/4/1 21:48\r\n */\r\n removeAllValidates(key: string): void {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n control.validates = [];\r\n }\r\n }\r\n\r\n /**\r\n * @description: 获取校验集合\r\n * @author ChenRui\r\n * @date 2021/1/30 11:40\r\n */\r\n getValidates(key: string): Validate[] {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n return control.validates;\r\n }\r\n return [];\r\n }\r\n /**\r\n * @Description: 设置必输校验\r\n * @author GuoXuHui\r\n * @date 2022-05-25\r\n * @time 10:09\r\n */\r\n setRequiredValidate(key: string, data: boolean) {\r\n if (data) {\r\n this.setValidate(key, { ruleType: ValidateRules.Required.code });\r\n } else {\r\n this.removeValidate(key, ValidateRules.Required.code); // 清除必填校验\r\n }\r\n }\r\n\r\n /**\r\n * @description: 设置校验\r\n * @author ChenRui\r\n * @date 2021/1/30 11:54\r\n */\r\n setValidate(key: string, validate: Validate | Validate[] | Rule, isCover = false): void {\r\n let control: AbstractControl = this.getControl(key);\r\n if (control == null) {\r\n setTimeout(() => {\r\n control = this.getControl(key);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n this.setValidateInner(control, validate, isCover);\r\n }\r\n });\r\n } else {\r\n this.setValidateInner(control, validate, isCover);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 校验提示\r\n * @author ChenRui\r\n * @date 2021/8/18 17:40\r\n */\r\n validateTips(scrollView?: any): boolean {\r\n return formValidateService.validateTips(this, scrollView);\r\n }\r\n\r\n /**\r\n * @description: 全局校验报告\r\n * @author ChenRui\r\n * @date 2021/2/5 11:48\r\n */\r\n validateReport(formGroup?: AbstractControl, validateReports?: ValidateReport[], refreshFeedback = true): ValidateReport[] {\r\n if (validateReports == null) {\r\n validateReports = [];\r\n }\r\n if (formGroup == null) {\r\n formGroup = this.dvForm.desForm.formGroup;\r\n if (refreshFeedback) {\r\n this.dvForm.refreshCheckFeedbackFlag = new Date().getTime();\r\n }\r\n }\r\n if (formGroup != null) {\r\n for (const propName of Object.keys(formGroup.controls)) {\r\n if (formGroup.controls[propName] instanceof FormGroup) {\r\n this.validateReport(formGroup.controls[propName], validateReports);\r\n } else if (formGroup.controls[propName] instanceof FormControl && !formGroup.controls[propName].controlAttr.isHideControl) {\r\n const validateResult: ValidateResult = formGroup.controls[propName].validate();\r\n if (validateResult.validateStatus === ValidateStatus.Error.code) {\r\n validateReports.push({\r\n key: formGroup.controls[propName].key,\r\n name: formGroup.controls[propName].controlAttr.formFieldDescribe,\r\n errorMsg: validateResult.errorMsg,\r\n controlType: formGroup.controls[propName].controlAttr.controlType,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return validateReports;\r\n }\r\n\r\n /**\r\n * @description: 表单全局校验\r\n * @author ChenRui\r\n * @date 2021/2/5 14:11\r\n */\r\n validate(refreshFeedback = true): boolean {\r\n const validateReports: ValidateReport[] = this.validateReport(undefined, undefined, refreshFeedback);\r\n return !(validateReports.length > 0);\r\n }\r\n\r\n /**\r\n * @description: 刷新校验\r\n * @author ChenRui\r\n * @date 2021/6/4 19:32\r\n */\r\n refreshValidate(key: string): void {\r\n let control: AbstractControl = this.getControl(key);\r\n if (control == null) {\r\n setTimeout(() => {\r\n control = this.getControl(key);\r\n control[\"refreshValidate\"] = new Date().getTime();\r\n });\r\n } else {\r\n control[\"refreshValidate\"] = new Date().getTime();\r\n }\r\n }\r\n\r\n /**\r\n * @description: 重置表单校验\r\n * @author ChenRui\r\n * @date 2022/4/6 11:51\r\n */\r\n resetFormValidateState(): void {\r\n this.dvForm.formValidateStateResetMark = new Date().getTime();\r\n }\r\n\r\n /**\r\n * @description: 设置格式化显示和输出函数\r\n * @author ChenRui\r\n * @date 2021/2/4 19:44\r\n */\r\n setFormatDisplayAndOutput(key: string, customFormat: CustomFormat): void {\r\n if (key) {\r\n this.dvForm.customFormats[key] = customFormat;\r\n }\r\n this.refreshAndUpdateData();\r\n }\r\n\r\n /**\r\n * @description: 刷新数据\r\n * @author ChenRui\r\n * @date 2021/2/4 20:22\r\n */\r\n refreshAndUpdateData(): void {\r\n this.dvForm.onRefreshArgumentsHandler(new Date().getTime());\r\n }\r\n\r\n /**\r\n * @description: 获取控件dom对象\r\n * @author ChenRui\r\n * @date 2021/2/26 17:12\r\n */\r\n getControlEl(key: string): any {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control != null && control.controlAttr) {\r\n const els: HTMLCollectionOf<any> = document.getElementsByClassName(\"form-model-item-\" + control.controlAttr.boundProperty);\r\n if (els != null && els.length > 0) {\r\n return els[0];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 检查是否包含上传控件\r\n * @author ChenRui\r\n * @date 2021/4/23 11:30\r\n */\r\n checkHasUploadControl(abstractControl: AbstractControl): boolean {\r\n if (abstractControl instanceof FormGroup) {\r\n const formGroup: FormGroup = abstractControl as FormGroup;\r\n for (const propName of Object.keys(formGroup.controls)) {\r\n if (formGroup.controls[propName] instanceof FormGroup) {\r\n const judge = this.checkHasUploadControl(formGroup.controls[propName]);\r\n if (judge) {\r\n return judge;\r\n }\r\n } else if (formGroup.controls[propName] instanceof FormControl) {\r\n if (formGroup.controls[propName].code === FormFieldType.Upload.code) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * @description: json格式转表单格式\r\n * @author ChenRui\r\n * @date 2020/8/28 15:20\r\n */\r\n jsonToFormData(params: any): FormData {\r\n const formData = new FormData();\r\n if (params != null) {\r\n Object.keys(params).forEach((key) => {\r\n if (params[key] != null && params[key] instanceof Array && params[key].length > 0 && params[key][0] instanceof File) {\r\n params[key].forEach((item: any) => {\r\n formData.append(key, item);\r\n });\r\n } else {\r\n formData.append(key, params[key]);\r\n }\r\n });\r\n return formData;\r\n }\r\n return formData;\r\n }\r\n\r\n /**\r\n * @description: 设置变更历史记录\r\n * @author ChenRui\r\n * @date 2021/4/25 15:55\r\n */\r\n setFieldChangeHistory(fieldChangeHistory: FieldChangeHistory): void {\r\n fieldChangeHistory = fieldChangeHistory || {};\r\n for (const propertyName of Object.keys(fieldChangeHistory)) {\r\n let control: AbstractControl = this.getControl(propertyName, undefined, false);\r\n if (control == null) {\r\n setTimeout(() => {\r\n control = this.getControl(propertyName, undefined, false);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n const history = (fieldChangeHistory[propertyName] || []).sort((a, b) => {\r\n const aTime = new Date(a.time).getTime();\r\n const bTime = new Date(b.time).getTime();\r\n return bTime - aTime;\r\n });\r\n control.history = history;\r\n }\r\n });\r\n } else {\r\n control = this.getControl(propertyName, undefined, false);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n const history = (fieldChangeHistory[propertyName] || []).sort((a, b) => {\r\n const aTime = new Date(a.time).getTime();\r\n const bTime = new Date(b.time).getTime();\r\n return bTime - aTime;\r\n });\r\n control.history = history;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 隐藏布局\r\n * @author ChenRui\r\n * @date 2021/11/16 0:01\r\n */\r\n hideLayout(layoutName: string, mark = true): void {\r\n if (layoutName) {\r\n const nodes: any = document.getElementsByClassName(\"lo-form-layout-\" + layoutName);\r\n if (nodes && nodes.length > 0) {\r\n for (let i = 0; i < nodes.length; i++) {\r\n nodes[i].style.display = mark ? \"none\" : \"grid\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 设置表单值\r\n * @author ChenRui\r\n * @date 2021/8/16 9:29\r\n */\r\n private setFormDataInner(srcData: any, isDefault: boolean, validate: boolean): void {\r\n if (srcData) {\r\n for (const propName of Object.keys(srcData)) {\r\n if (typeof srcData[propName] === \"string\" || typeof srcData[propName] === \"number\") {\r\n this.setValue(propName, srcData[propName], isDefault, false);\r\n } else {\r\n this.setFormData(srcData[propName], isDefault, validate);\r\n }\r\n }\r\n }\r\n if (validate) {\r\n this.validate();\r\n }\r\n }\r\n\r\n /**\r\n * @description: 设置控件值\r\n * @author ChenRui\r\n * @date 2021/4/13 12:50\r\n */\r\n private setControlValue(control: AbstractControl, key: string, val: any, isDefault?: boolean, validate = true): void {\r\n if (control) {\r\n // && control instanceof FormControl\r\n switch (control.code) {\r\n case FormFieldType.InputNumber.code:\r\n if (val && control.controlAttr.zoomMultiple) {\r\n if (control.controlAttr.zoomType === ZoomType.enlarge.code) {\r\n val = this.mathjs.format(this.mathjs.evaluate(`${val} / ${control.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n } else if (control.controlAttr.zoomType === ZoomType.narrow.code) {\r\n val = this.mathjs.format(this.mathjs.evaluate(`${val} * ${control.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n }\r\n }\r\n if (val != undefined) {\r\n control.value = val;\r\n } else {\r\n control.value = \"\";\r\n }\r\n break;\r\n case FormFieldType.Select.code:\r\n if (control.controlAttr.isMultipleChoice) {\r\n if (!val) {\r\n val = [];\r\n } else if (typeof val === \"string\") {\r\n val = val.split(\",\");\r\n }\r\n }\r\n control.value = val;\r\n break;\r\n case FormFieldType.Checkbox.code:\r\n case FormFieldType.Cascader.code:\r\n if (val) {\r\n val = val.split(\",\");\r\n } else {\r\n val = [];\r\n }\r\n control.value = val;\r\n break;\r\n case FormFieldType.Switch.code:\r\n if (control.controlAttr.onOpeningValue) {\r\n val = val === true || val === control.controlAttr.onOpeningValue;\r\n } else if (control.controlAttr.whenClosedValue) {\r\n val = !(val === false || val === control.controlAttr.whenClosedValue);\r\n }\r\n control.value = val;\r\n break;\r\n case FormFieldType.TimePicker.code:\r\n if (val) {\r\n if (typeof val === \"string\") {\r\n val = dayjs(new Date(this.nowDateStr() + \" \" + val));\r\n } else if (val instanceof Date) {\r\n val = dayjs(val);\r\n }\r\n control.value = val;\r\n } else {\r\n control.value = null;\r\n }\r\n break;\r\n case FormFieldType.DatePicker.code:\r\n if (val) {\r\n if (typeof val === \"string\") {\r\n val = dayjs(val, control.dateFormat);\r\n } else if (val instanceof Date) {\r\n val = dayjs(val);\r\n }\r\n control.value = val;\r\n } else {\r\n control.value = null;\r\n }\r\n break;\r\n default: {\r\n control.value = val;\r\n }\r\n }\r\n if (isDefault) {\r\n this.setAttribute(key, Attribute.FieldDefaultValue, JSON.stringify(control.value));\r\n }\r\n if (validate) {\r\n control[\"refreshValidate\"] = new Date().getTime();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 设置控件可选项\r\n * @author ChenRui\r\n * @date 2021/4/13 15:09\r\n */\r\n private setControlOptions(control: AbstractControl, key: string, data: any[], defaultVal?: any): void {\r\n if (control && control.controlAttr) {\r\n //control && control instanceof FormControl && control.controlAttr)\r\n storageOptions(control.controlAttr, data);\r\n this.setAttribute(key, Attribute.IsOptionType, OptionType.Fixed.code);\r\n this.setAttribute(key, Attribute.OptionConfig, data);\r\n }\r\n if (defaultVal) {\r\n this.setValue(key, defaultVal, true);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 设置控件常规属性\r\n * @author ChenRui\r\n * @date 2021/4/13 15:11\r\n */\r\n private setControlAttribute(control: AbstractControl, attribute: Attribute, data: any): void {\r\n if (control && attribute) {\r\n //control && control instanceof FormControl && attribute\r\n control.controlAttr[attribute] = data;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 设置校验内部函数\r\n * @author ChenRui\r\n * @date 2021/7/19 17:51\r\n */\r\n private setValidateInner(control: AbstractControl, validate: Validate | Validate[] | Rule, isCover = false): void {\r\n if (validate != null && (validate as Rule).ruleType) {\r\n validate = validateGeneratorService.getBuiltInValidationRules(validate as Rule, control.controlAttr) as any;\r\n }\r\n if (validate != null) {\r\n if (isCover) {\r\n control.validates = [];\r\n }\r\n control.addValidate(validate);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 生成数据信息\r\n * @author ChenRui\r\n * @date 2021/1/29 10:06\r\n */\r\n private generateData(abstractControl: AbstractControl, obj: any = {}): any {\r\n if (abstractControl instanceof FormGroup) {\r\n const formGroup: FormGroup = abstractControl as FormGroup;\r\n for (const propName of Object.keys(formGroup.controls)) {\r\n if (formGroup.controls[propName] instanceof FormGroup) {\r\n obj[propName] = this.generateData(formGroup.controls[propName], obj[propName]);\r\n } else if (formGroup.controls[propName] instanceof FormControl) {\r\n obj[propName] = this.decodeData(formGroup.controls[propName] as FormControl);\r\n }\r\n }\r\n }\r\n return obj;\r\n }\r\n\r\n /**\r\n * @description: 数据解码输出\r\n * @author ChenRui\r\n * @date 2021/5/29 23:03\r\n */\r\n private decodeData(formControl: FormControl, isFinal = true): any {\r\n let data = formControl.value || \"\";\r\n switch (formControl.code) {\r\n case FormFieldType.InputNumber.code:\r\n if (data && formControl.controlAttr.zoomMultiple) {\r\n if (formControl.controlAttr.zoomType === ZoomType.enlarge.code) {\r\n data = this.mathjs.format(this.mathjs.evaluate(`${data} * ${formControl.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n } else if (formControl.controlAttr.zoomType === ZoomType.narrow.code) {\r\n data = this.mathjs.format(this.mathjs.evaluate(`${data} / ${formControl.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n } else if (formControl.controlAttr.zoomType === ZoomType.automatic.code) {\r\n data = this.mathjs.format(this.mathjs.evaluate(`${data} * ${formControl.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n }\r\n }\r\n if (formControl.value === 0) {\r\n data = 0;\r\n }\r\n break;\r\n case FormFieldType.Select.code:\r\n if (formControl.controlAttr.isMultipleChoice && data && Array.isArray(data)) {\r\n data = data.join(\",\");\r\n }\r\n break;\r\n case FormFieldType.Checkbox.code:\r\n if (data && isFinal) {\r\n data = data.join(\",\");\r\n }\r\n break;\r\n case FormFieldType.TimePicker.code:\r\n if (data) {\r\n data = dayjs(data).format(formControl.controlAttr.timeFormat || \"LTS\");\r\n }\r\n break;\r\n case FormFieldType.DatePicker.code:\r\n if (data) {\r\n data = dayjs(data).format(formControl.controlAttr.dateFormat || \"YYYY-MM-DD\");\r\n }\r\n break;\r\n case FormFieldType.Cascader.code:\r\n if (data) {\r\n data = data.join(\",\");\r\n }\r\n break;\r\n case FormFieldType.Switch.code:\r\n data = !!data;\r\n if (formControl.controlAttr) {\r\n if (data === true && formControl.controlAttr.onOpeningValue != undefined && formControl.controlAttr.onOpeningValue !== \"\") {\r\n data = formControl.controlAttr.onOpeningValue;\r\n } else if (data === false && formControl.controlAttr.whenClosedValue != undefined && formControl.controlAttr.whenClosedValue !== \"\") {\r\n data = formControl.controlAttr.whenClosedValue;\r\n }\r\n }\r\n break;\r\n case FormFieldType.Custom.code:\r\n if (formControl.controlAttr && formControl.controlAttr.customFieldName) {\r\n const customFormat: CustomFormat = this.dvForm.customFormats[formControl.controlAttr.customFieldName];\r\n if (customFormat && customFormat.output) {\r\n data = customFormat.output(data, formControl.controlAttr);\r\n }\r\n }\r\n }\r\n return data;\r\n }\r\n\r\n /**\r\n * @description: 获取当前日期字符串\r\n * @author ChenRui\r\n * @date 2021/2/4 11:43\r\n */\r\n private nowDateStr(): string {\r\n const time = new Date();\r\n const day = (\"0\" + time.getDate()).slice(-2);\r\n const month = (\"0\" + (time.getMonth() + 1)).slice(-2);\r\n return time.getFullYear() + \"/\" + month + \"/\" + day;\r\n }\r\n\r\n /**\r\n * @description: uuid生成器\r\n * @author ChenRui\r\n * @date 2021/7/20 11:14\r\n */\r\n private getUuid(): string {\r\n const s: any[] = [];\r\n const hexDigits = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\r\n for (let i = 0; i < 36; i++) {\r\n s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);\r\n }\r\n s[14] = \"4\";\r\n s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);\r\n s[8] = s[13] = s[18] = s[23] = \"-\";\r\n const uuid = s.join(\"\");\r\n return uuid;\r\n }\r\n\r\n /**\r\n * @Description: 对比新旧表单值\r\n * @author lzs\r\n * @date 2022/9/3\r\n * @time 21:49\r\n */\r\n private contrast(objectA: any, objectB: any): any {\r\n const object: any = {};\r\n const data: any = {};\r\n const fieldInfoArr: any = [];\r\n if (!objectB || !objectA) {\r\n object.changeLog = \"必传参数不存在\";\r\n return object;\r\n }\r\n const handlerFlag = objectA.handlerFlag;\r\n // console.log(\"======\", this.dvForm.desForm.formGroup.controls);\r\n for (const key in this.dvForm.desForm.formGroup.controls) {\r\n if (!objectA[key] && !objectB[key]) {\r\n continue;\r\n }\r\n const control: AbstractControl = this.getControl(key);\r\n if (!control) {\r\n continue;\r\n }\r\n if (this.getChangedInfo(control, objectA[key], objectB[key])) {\r\n let oldValue = objectA[key]; // 记录新值\r\n const newValue = objectB[key]; // 记录旧值\r\n const fieldInfo: any = {}; //日志信息\r\n if (control.code !== FormFieldType.Custom.code) {\r\n fieldInfo.field_cd = key; //字段英文\r\n const name = control.controlAttr.formFieldDescribe;\r\n fieldInfo.field_nm = name; //字段中文\r\n fieldInfo.field_key = newValue; //当前值\r\n\r\n const newDict = this.translateDictionaries(control, key, newValue); // 新值描述\r\n fieldInfo.field_value = newDict; //当前值描述\r\n\r\n fieldInfo.is_change = \"1\"; //是否变动\r\n\r\n fieldInfo.field_old_key = oldValue; //旧值\r\n const oldDict = this.translateDictionaries(control, key, oldValue); //旧值描述\r\n fieldInfo.field_old_value = oldDict; //field_old_value\r\n object[key] = newValue;\r\n\r\n fieldInfoArr.push(fieldInfo);\r\n if (oldValue === \"null\" || oldValue === \"undefined\") {\r\n oldValue = \"\";\r\n }\r\n const oldName = oldValue ? oldDict : \"空\";\r\n const newName = newValue ? newDict : \"空\";\r\n //除自定义组件均记录日志\r\n object.changeLog = object.changeLog ? object.changeLog + \",\" : \"\";\r\n if (handlerFlag === \"add\") {\r\n object.changeLog = object.changeLog + \"新增【\" + name + \"】\" + \"为“\" + newName + \"”\";\r\n } else {\r\n object.changeLog = object.changeLog + \"修改【\" + name + \"】\" + \"由“\" + oldName + \"”修改为“\" + newName + \"”\";\r\n }\r\n } else {\r\n object[key] = newValue;\r\n }\r\n }\r\n }\r\n object.fieldInfoArr = fieldInfoArr;\r\n return object;\r\n }\r\n /**\r\n * @Description: 获取表单值更改信息\r\n * @author lzs\r\n * @date 2022/10/11\r\n * @time 09:53\r\n */\r\n getChangedInfo(control: any, oldValue: any, newValue: any): boolean {\r\n oldValue = oldValue + \"\";\r\n newValue = newValue + \"\";\r\n if (oldValue === \"null\" || oldValue === \"undefined\") {\r\n return true;\r\n }\r\n let flag = true;\r\n switch (control.code) {\r\n case FormFieldType.Input.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.InputNumber.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Textarea.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Slider.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Rate.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Select.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Checkbox.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Radio.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.TimePicker.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.DatePicker.code:\r\n oldValue = dateFormat.formatDateTime(oldValue, \"YYYY-MM-dd\");\r\n newValue = dateFormat.formatDateTime(newValue, \"YYYY-MM-dd\");\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Cascader.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.TreeSelect.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Switch.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Custom.code:\r\n break;\r\n }\r\n return flag;\r\n }\r\n /**\r\n * @Description: 翻译字典项\r\n * @author lzs\r\n * @date 2022/9/6\r\n * @time 11:54\r\n */\r\n translateDictionaries(control: any, key: any, value: any): string {\r\n let str = value;\r\n switch (control.code) {\r\n case FormFieldType.Input.code:\r\n break;\r\n case FormFieldType.InputNumber.code:\r\n break;\r\n case FormFieldType.Textarea.code:\r\n break;\r\n case FormFieldType.Slider.code:\r\n break;\r\n case FormFieldType.Rate.code:\r\n break;\r\n case FormFieldType.Select.code:\r\n if (control.controlAttr.generalDictionaryOptions) {\r\n control.controlAttr.generalDictionaryOptions.forEach((item: any) => {\r\n if (item.value === value) {\r\n str = item.title;\r\n }\r\n });\r\n } else {\r\n control.controlAttr.optionConfig.forEach((item: any) => {\r\n if (item.value === value) {\r\n str = item.title;\r\n }\r\n });\r\n }\r\n break;\r\n case FormFieldType.Checkbox.code:\r\n str = \"\";\r\n if (value) {\r\n if (control.controlAttr.generalDictionaryOptions) {\r\n control.controlAttr.generalDictionaryOptions.forEach((item: any) => {\r\n value.split(\",\").forEach((index: any) => {\r\n if (item.value === index) {\r\n str = str + item.title + \",\";\r\n }\r\n });\r\n });\r\n } else {\r\n control.controlAttr.optionConfig.forEach((item: any) => {\r\n value.split(\",\").forEach((index: any) => {\r\n if (item.value === index) {\r\n str = str + item.title + \",\";\r\n }\r\n });\r\n });\r\n }\r\n str = str.substring(0, str.length - 1);\r\n }\r\n break;\r\n case FormFieldType.Radio.code:\r\n if (control.controlAttr.generalDictionaryOptions) {\r\n control.controlAttr.generalDictionaryOptions.forEach((item: any) => {\r\n if (item.value === value) {\r\n str = item.title;\r\n }\r\n });\r\n } else {\r\n control.controlAttr.optionConfig.forEach((item: any) => {\r\n if (item.value === value) {\r\n str = item.title;\r\n }\r\n });\r\n }\r\n break;\r\n case FormFieldType.TimePicker.code:\r\n break;\r\n case FormFieldType.DatePicker.code:\r\n str = dateFormat.formatDateTime(value, \"YYYY-MM-dd\");\r\n break;\r\n case FormFieldType.Cascader.code:\r\n str = \"\";\r\n if (value) {\r\n formTreeNodeConvertService.treeNodeConvertToArray(control.controlAttr.treeShapeOptions, [], \"children\").forEach((item: any) => {\r\n value.split(\",\").forEach((index: any) => {\r\n if (item.value === index) {\r\n str = str + item.title + \",\";\r\n }\r\n });\r\n });\r\n str = str.substring(0, str.length - 1);\r\n } else {\r\n str = \"\";\r\n }\r\n break;\r\n case FormFieldType.TreeSelect.code:\r\n str = \"\";\r\n formTreeNodeConvertService.treeNodeConvertToArray(control.controlAttr.treeShapeOptions, [], \"children\").forEach((item: any) => {\r\n if (item.value === value) {\r\n str = str + item.title;\r\n }\r\n });\r\n break;\r\n case FormFieldType.Switch.code:\r\n str = value ? \"开\" : \"关\";\r\n break;\r\n case FormFieldType.Custom.code:\r\n break;\r\n default:\r\n str = value;\r\n break;\r\n }\r\n return str;\r\n }\r\n\r\n /**\r\n * @Description 根据报送类型返回需要隐藏的表单字段\r\n * @Author JiangTao\r\n * @Date 2024-01-30 上午 09:33\r\n */\r\n getFormSubmittedType(form: any, code: any) {\r\n const strArr = code && code.length > 0 ? code : [];\r\n const list: any = this.dvForm.desForm.controls[0].subControls;\r\n const subControlsList: any = formToolsService.loadResource(this.dvForm.desForm.formId).controls[0].subControls;\r\n const submittedTypeList: any = [];\r\n if (strArr.length > 0) {\r\n // 遍历组件实例\r\n list.forEach((item: any, index: any) => {\r\n if (item.formControl) {\r\n // 校验当前字段是否已隐藏,已隐藏的字段不做处理\r\n if (!form.getAttribute(item.formControl.key, Attribute.IsHideControl)) {\r\n // 处理普通表单控件\r\n submittedTypeList.push(item.formControl.key);\r\n // 初始化字段是否隐藏属性\r\n form.setAttribute(item.formControl.key, Attribute.IsHideControl, subControlsList[index].controlAttr.isHideControl);\r\n // 筛选报送类型字段数据处理\r\n this.handleSubmittedData(submittedTypeList, strArr, item);\r\n }\r\n } else if (item.subControls) {\r\n // 处理栅格中表单控件\r\n // 遍历栅格中控件\r\n item.subControls.forEach((control: any, num: any) => {\r\n // 校验当前字段是否已隐藏,已隐藏的字段不做处理\r\n if (!form.getAttribute(control.formControl.key, Attribute.IsHideControl)) {\r\n submittedTypeList.push(control.formControl.key);\r\n // 初始化字段是否隐藏属性\r\n form.setAttribute(control.formControl.key, Attribute.IsHideControl, subControlsList[index].subControls[num].controlAttr.isHideControl);\r\n // 筛选报送类型字段数据处理\r\n this.handleSubmittedData(submittedTypeList, strArr, control);\r\n }\r\n });\r\n }\r\n });\r\n // 隐藏无需展示的表单字段\r\n submittedTypeList.forEach((item: any) => {\r\n form.setAttribute(item, Attribute.IsHideControl, true);\r\n });\r\n } else {\r\n // 默认展示全部字段\r\n list.forEach((item: any, index: any) => {\r\n if (item.formControl) {\r\n form.setAttribute(item.formControl.key, Attribute.IsHideControl, subControlsList[index].controlAttr.isHideControl);\r\n } else if (item.subControls) {\r\n item.subControls.forEach((control: any, num: any) => {\r\n form.setAttribute(control.formControl.key, Attribute.IsHideControl, subControlsList[index].subControls[num].controlAttr.isHideControl);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @Description 筛选报送类型字段数据处理\r\n * @Author JiangTao\r\n * @Date 2024-01-30 下午 08:50\r\n */\r\n private handleSubmittedData(submittedTypeList: any, codeArr: any, submittedData: any): void {\r\n let submittedType: any = [];\r\n if (JSON.parse(submittedData.formControl.controlAttr.busAttr).submittedType !== \"\") {\r\n // 获取字段报送类型\r\n submittedType = JSON.parse(submittedData.formControl.controlAttr.busAttr).submittedType.split(\",\");\r\n // 遍历查询报送类型\r\n for (let i = 0; i < codeArr.length; i++) {\r\n // 判断是否为查询的报送类型字段\r\n if (submittedType.filter((type: any) => type === codeArr[i]).length > 0 && submittedTypeList.indexOf(submittedData.formControl.key) >= 0) {\r\n submittedTypeList.splice(submittedTypeList.indexOf(submittedData.formControl.key), 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @Description 获取报送类型枚举(数组)\r\n * @Author JiangTao\r\n * @Date 2024-01-30 下午 03:30\r\n */\r\n getSubmittedType() {\r\n const list: any = [];\r\n Object.values(SubmittedType).forEach((item: any) => {\r\n list.push({\r\n value: item.code,\r\n label: item.name,\r\n });\r\n });\r\n return list;\r\n }\r\n}\r\n","\r\nimport DvFormLayout from \"./DvFormLayout.vue\";\r\nimport { Options, Prop, Provide, Watch, Vue } from \"vue-property-decorator\";\r\nimport { DesForm } from \"@/domain\";\r\nimport { FormFieldClass, DynamicOptionType, OptionType, ValidateRules } from \"@/constants\";\r\nimport { formToolsService } from \"@/services\";\r\nimport { Control } from \"@/domain\";\r\nimport { DesFormControl } from \"@/domain\";\r\nimport { FormGroup } from \"@/domain\";\r\nimport { FormControl } from \"@/domain\";\r\nimport { formBeanUtilsService } from \"@/services\";\r\nimport { FormApi } from \"@/core\";\r\nimport { FormFieldType } from \"@/constants\";\r\nimport { ProvideInjectData } from \"@/domain/ProvideInjectData\";\r\nimport { validateGeneratorService } from \"@/services\";\r\nimport { CustomFormat, FieldChangeHistory } from \"../../domain\";\r\nimport { extractOptions } from \"@/filtres/extract-options.filter\";\r\n// import { DynamicOptionType, OptionType } from \"../../constants/enum\";\r\nimport { NzTreeNodeOptions } from \"@/services\";\r\n\r\nexport type NfFormMode = \"manual\" | \"auto\";\r\n\r\nexport type NfStyleMode = \"default\" | \"trust\" | \"credit-rd\";\r\n\r\nexport type NfFormTheme = \"default\" | \"gray\";\r\n/**\r\n * @description: 动态表单\r\n * @author ChenRui\r\n * @date 2020/12/30 11:20\r\n */\r\n@Options({\r\n name: \"DyForm\",\r\n components: {\r\n DvFormLayout: DvFormLayout,\r\n },\r\n})\r\nexport default class DyForm extends Vue {\r\n @Prop() formId: string | undefined;\r\n @Prop() mode: NfFormMode | undefined;\r\n @Prop({ type: String, default: \"default\" }) styleMode!: NfStyleMode;\r\n @Prop() srcDesForm: DesForm | undefined;\r\n @Prop({ default: false, type: Boolean }) edit!: boolean;\r\n @Prop({ default: false, type: Boolean }) colon!: boolean;\r\n @Prop({ default: \"130px\", type: String }) labelSpan!: string;\r\n @Prop({ default: undefined }) controlSpan!: any;\r\n @Prop({ type: Object }) formApi: FormApi | undefined;\r\n @Prop({ type: Array }) history: FieldChangeHistory | undefined;\r\n @Prop({ type: Object, default: () => ({}) }) customFormats!: {\r\n [key: string]: CustomFormat;\r\n };\r\n @Prop() refreshArguments: any; // 刷新自变量\r\n @Prop({ default: false }) widthCompatibleMode!: boolean; // 宽度计算模式\r\n @Prop({ type: String }) formTheme!: NfFormTheme; // 表单主题\r\n @Prop({ type: Array }) linkList: any | undefined; // 需要添加超链接点击事件数组 例:['cifNo', 'prodBaseNo']\r\n @Prop({ type: Array }) formLimits!: any[]; // 表单权限\r\n\r\n private metaRefresh: any = new Date().getTime(); // 刷新标识\r\n private refreshCheckFeedbackFlag = new Date().getTime(); // 刷新校验标识\r\n private sysDictDetailOptions: NzTreeNodeOptions[] = []; // 常规字典\r\n private sysDictTreeDetailOptions: NzTreeNodeOptions[] = []; // 树形字典\r\n private formValidateStateResetMark: any = new Date().getTime(); // 重置校验标识\r\n\r\n desForm: DesForm = new DesForm();\r\n\r\n @Provide() provideInjectData: ProvideInjectData = {\r\n edit: (this.$props as any).edit,\r\n labelSpan: (this.$props as any).labelSpan,\r\n controlSpan: (this.$props as any).controlSpan,\r\n colon: (this.$props as any).colon,\r\n metaRefresh: this.metaRefresh,\r\n refreshCheckFeedbackFlag: this.refreshCheckFeedbackFlag,\r\n widthCompatibleMode: (this.$props as any).widthCompatibleMode,\r\n formValidateStateResetMark: this.formValidateStateResetMark,\r\n };\r\n\r\n /**\r\n * @description: 刷新自变量监听处理\r\n * @author ChenRui\r\n * @date 2021/2/5 10:25\r\n */\r\n @Watch(\"refreshArguments\", { immediate: true })\r\n onRefreshArgumentsHandler(newVal: any): void {\r\n this.metaRefresh = newVal;\r\n }\r\n\r\n /**\r\n * @description: 重置表单校验状态监听\r\n * @author ChenRui\r\n * @date 2022/4/6 14:17\r\n */\r\n @Watch(\"formValidateStateResetMark\")\r\n onPropFormValidateStateResetHandler(): void {\r\n if ((this as any)._provided) {\r\n ((this as any)._provided as any).provideInjectData.formValidateStateResetMark = this.formValidateStateResetMark;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 值变更处理器\r\n * @author ChenRui\r\n * @date 2021/1/8 11:03\r\n */\r\n @Watch(\"edit\")\r\n @Watch(\"labelSpan\")\r\n @Watch(\"controlSpan\")\r\n @Watch(\"metaRefresh\")\r\n @Watch(\"refreshCheckFeedbackFlag\")\r\n @Watch(\"widthCompatibleMode\")\r\n onPropHandler(): void {\r\n if (this) {\r\n this.provideInjectData.edit = this.edit;\r\n this.provideInjectData.labelSpan = this.labelSpan;\r\n this.provideInjectData.controlSpan = this.controlSpan;\r\n this.provideInjectData.metaRefresh = this.metaRefresh;\r\n this.provideInjectData.refreshCheckFeedbackFlag = this.refreshCheckFeedbackFlag;\r\n this.provideInjectData.widthCompatibleMode = this.widthCompatibleMode;\r\n }\r\n }\r\n\r\n get loFormTheme(): string {\r\n const win: any = window;\r\n // 默认, 灰度, 某北某方,label换行\r\n const themes = [\"default\", \"gray\", \"nitic\", \"labelWrap\"];\r\n const formTheme = themes.indexOf(this.formTheme) > -1 ? this.formTheme : win.$loFormTheme;\r\n return themes.indexOf(formTheme) > -1 ? formTheme : themes[0];\r\n }\r\n\r\n get loFormLimit(): any {\r\n const formLimitObj: any = {};\r\n this.formLimits?.forEach((item: any) => {\r\n formLimitObj[item.id] = item;\r\n });\r\n return formLimitObj;\r\n }\r\n\r\n /**\r\n * @Description 表单数据反显回调(data:Object { key: 元素码值, value: 元素值 })\r\n * @Author JiangTao\r\n * @Date 2023-10-07 下午 05:16\r\n */\r\n linkClick(data: any) {\r\n this.$emit(\"linkClick\", data);\r\n }\r\n\r\n created() {\r\n this.initDict();\r\n }\r\n\r\n mounted() {\r\n if (this.formId) {\r\n this.initDesForm();\r\n } else if (this.desForm) {\r\n this.formatDesForm();\r\n }\r\n }\r\n\r\n @Watch(\"formId\")\r\n private onFormIdChanged() {\r\n this.initDesForm();\r\n }\r\n\r\n @Watch(\"srcDesForm\", { immediate: true })\r\n private onSrcDesFormChanged(newVal: DesForm) {\r\n if (newVal != null) {\r\n this.desForm = formBeanUtilsService.copy(newVal);\r\n this.formatDesForm();\r\n }\r\n }\r\n\r\n /**\r\n * @description: 初始化表单\r\n * @author ChenRui\r\n * @date 2020/11/23 11:19\r\n */\r\n private initDesForm(): void {\r\n if (this.formId != null && this.formId !== \"\") {\r\n formToolsService.initResource(this.formId).then((form: any) => {\r\n this.desForm = form;\r\n this.formatDesForm();\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @description: 初始化字典\r\n * @author ChenRui\r\n * @date 2021/3/12 10:12\r\n */\r\n private initDict(): void {\r\n this.sysDictDetailOptions = formToolsService.sysDictDetailOptions;\r\n this.sysDictTreeDetailOptions = formToolsService.sysDictTreeDetailOptions;\r\n }\r\n\r\n /**\r\n * @description: 格式化表单\r\n * @author ChenRui\r\n * @date 2020/11/30 16:05\r\n */\r\n private formatDesForm(isReset?: boolean): void {\r\n if (this.desForm != null && this.desForm.controls != null && this.desForm.controls.length > 0) {\r\n const model = this.analysisBindingObjects();\r\n this.desForm.formGroup = this.generateFormGroup(model);\r\n this.initControlForm(this.desForm.controls, this.desForm.formGroup);\r\n this.generateFormApi(isReset);\r\n if (this.history != null) {\r\n this.formApi?.setFieldChangeHistory(this.history);\r\n }\r\n this.$emit(\"complete\");\r\n }\r\n }\r\n /**\r\n * @Description: 临时-该方法被取消\r\n * @author LiuBo\r\n * @date 2022/11/6\r\n * @time 17:11\r\n */\r\n private fixFormLayout() {\r\n this.$nextTick(() => {\r\n console.log(\"自动修改表单宽度\");\r\n try {\r\n const formView: any = this.$refs.formView;\r\n const cons = formView.getElementsByClassName(\"lo-control-container\");\r\n const len = cons.length;\r\n for (let i = 0; i < len - 1; i++) {\r\n if (cons[i].offsetLeft === cons[i + 1].offsetLeft && cons[i].clientWidth < cons[i + 1].clientWidth) {\r\n cons[i].style.width = \"200%\";\r\n } else {\r\n cons[i].style.width = \"100%\";\r\n }\r\n }\r\n if (len > 2) {\r\n const con1 = cons[len - 1];\r\n const con2 = cons[len - 2];\r\n if (con1.clientWidth === con2.clientWidth && con1.offsetLeft !== con2.offsetLeft) {\r\n con1.style.width = \"200%\";\r\n } else {\r\n con1.style.width = \"100%\";\r\n }\r\n }\r\n } catch (e) {\r\n console.error(\"自动修改表单宽度错误\" + e);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @description: 生成表单对象\r\n * @author ChenRui\r\n * @date 2021/1/7 20:48\r\n */\r\n private generateFormApi(isReset?: boolean): void {\r\n if (isReset) {\r\n const formApi: FormApi = new FormApi(this.formApi);\r\n formApi.dvForm = this;\r\n this.$emit(\"update:formApi\", formApi);\r\n } else {\r\n if (this.formApi) {\r\n this.formApi.dvForm = this;\r\n this.$emit(\"update:formApi\", this.formApi);\r\n } else {\r\n const formApi = new FormApi({ dvForm: this });\r\n this.$emit(\"update:formApi\", formApi);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 解析对象\r\n * @author ChenRui\r\n * @date 2020/11/25 16:25\r\n */\r\n private analysisBindingObjects(): any {\r\n const models: any[] = this.objectExtraction(this.desForm!.controls);\r\n let obj: any = {};\r\n if (models != null && models.length > 0) {\r\n models.forEach((item) => {\r\n if (Object.keys(item).length > 0) {\r\n obj = this.objectMerge(obj, item[Object.keys(item)[0]]);\r\n }\r\n });\r\n }\r\n return obj;\r\n }\r\n\r\n /**\r\n * @description: 对象抽取\r\n * @author ChenRui\r\n * @date 2020/11/25 17:28\r\n */\r\n private objectExtraction(controls: Control[], models: any[] = []): any {\r\n controls.forEach((item) => {\r\n if (item.type === FormFieldClass.Layout.code) {\r\n if (item.subControls != null && item.subControls.length > 0) {\r\n return this.objectExtraction(item.subControls, models);\r\n }\r\n } else {\r\n const desFormControl: DesFormControl = item?.controlAttr as DesFormControl;\r\n const boundProperty: string = desFormControl.boundProperty;\r\n if (boundProperty) {\r\n /* 初始化字典项数据 */\r\n if (desFormControl.generalDictionary || desFormControl.treeShape) {\r\n if (desFormControl.isOptionType === OptionType.Dynamic.code) {\r\n if (desFormControl.dynamicOptionType === DynamicOptionType.GeneralDictionary.code) {\r\n desFormControl.generalDictionaryOptions = this.findDictOptions(desFormControl.generalDictionary, this.sysDictDetailOptions);\r\n } else if (desFormControl.dynamicOptionType === DynamicOptionType.TreeDictionary.code) {\r\n desFormControl.treeShapeOptions = this.findDictOptions(desFormControl.treeShape, this.sysDictTreeDetailOptions);\r\n }\r\n }\r\n }\r\n /*初始化默认值*/\r\n const propertys: string[] = boundProperty.split(\".\");\r\n let lastMd: any = {};\r\n const md = { lastMd };\r\n propertys.forEach((val, idx, array) => {\r\n if (idx < array.length - 1) {\r\n lastMd[val] = {};\r\n lastMd = lastMd[val];\r\n } else {\r\n const defaultValue: any = formBeanUtilsService.parse((item.controlAttr as DesFormControl).fieldDefaultValue) || \"\";\r\n lastMd[val] = this.securityValue(item, defaultValue);\r\n }\r\n });\r\n models.push(md.lastMd);\r\n }\r\n }\r\n });\r\n return models;\r\n }\r\n\r\n /**\r\n * @description: 查询字典\r\n * @author ChenRui\r\n * @date 2021/3/11 17:19\r\n */\r\n private findDictOptions(key: string, nzTreeNodeOptions: NzTreeNodeOptions[]): NzTreeNodeOptions[] {\r\n if (nzTreeNodeOptions != null && nzTreeNodeOptions.length > 0) {\r\n for (const item of nzTreeNodeOptions) {\r\n if (item.key === key) {\r\n (item.children || []).forEach((item) => {\r\n item.disabled = false;\r\n });\r\n return item.children || [];\r\n } else if (item.children && item.children.length > 0) {\r\n const subTtems: NzTreeNodeOptions[] = this.findDictOptions(key, item.children);\r\n if (subTtems != null && subTtems.length > 0) {\r\n return subTtems;\r\n }\r\n }\r\n }\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @description: 安全值处理\r\n * @author ChenRui\r\n * @date 2021/1/29 17:01\r\n */\r\n securityValue(control: Control, defaultValue: any): any {\r\n if (control.code === FormFieldType.DatePicker.code || control.code === FormFieldType.TimePicker.code) {\r\n if (defaultValue) {\r\n return defaultValue;\r\n } else {\r\n return null;\r\n }\r\n } else if (control.code === FormFieldType.TreeSelect.code) {\r\n const options = extractOptions(control.controlAttr);\r\n if (options && options.length > 0 && defaultValue) {\r\n defaultValue = this.treeSelectRecursion(defaultValue, options);\r\n }\r\n return defaultValue;\r\n } else if (control.code === FormFieldType.Upload.code) {\r\n return defaultValue || [];\r\n } else if (control.code === FormFieldType.Switch.code) {\r\n if (control.controlAttr && (control.controlAttr as DesFormControl).onOpeningValue) {\r\n return defaultValue === true || defaultValue === (control.controlAttr as DesFormControl).onOpeningValue ? true : false;\r\n } else if (control.controlAttr && (control.controlAttr as DesFormControl).whenClosedValue) {\r\n return defaultValue === false || defaultValue === (control.controlAttr as DesFormControl).whenClosedValue ? false : true;\r\n }\r\n return defaultValue;\r\n } else {\r\n return defaultValue;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 树形递归\r\n * @author ChenRui\r\n * @date 2021/1/11 0:23\r\n */\r\n treeSelectRecursion(value: any, items: any[]): any {\r\n for (let i = 0; i < items.length; i++) {\r\n if (items[i].key === value) {\r\n return items[i].value;\r\n } else if (items[i].children && items[i].children.length > 0) {\r\n const subValue = this.treeSelectRecursion(value, items[i].children);\r\n if (subValue) {\r\n return subValue;\r\n }\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @description: 对象合并\r\n * @author ChenRui\r\n * @date 2020/11/25 17:49\r\n */\r\n private objectMerge(modelX: any, modelY: any): any {\r\n let key;\r\n for (key in modelY) {\r\n if (modelX[key] && modelX[key].toString() === \"[object Object]\" && modelY[key] && modelY[key].toString() === \"[object Object]\") {\r\n modelX[key] = this.objectMerge(modelX[key], modelY[key]);\r\n } else {\r\n modelX[key] = modelX[key] = modelY[key];\r\n }\r\n }\r\n return modelX;\r\n }\r\n\r\n /**\r\n * @description: 生成表单对象\r\n * @author ChenRui\r\n * @date 2020/11/26 11:02\r\n */\r\n private generateFormGroup(model: any): FormGroup {\r\n const group: FormGroup = new FormGroup();\r\n if (model != null) {\r\n Object.keys(model).forEach((key) => {\r\n if (Object.prototype.toString.call(model[key]) === \"[object Object]\") {\r\n const subFormGroup: FormGroup = this.generateFormGroup(model[key]);\r\n subFormGroup.key = key;\r\n group.addControl(key, subFormGroup);\r\n } else {\r\n const formControl: FormControl = new FormControl(model[key]);\r\n formControl.key = key;\r\n group.addControl(key, formControl);\r\n }\r\n });\r\n }\r\n return group;\r\n }\r\n\r\n /**\r\n * @description: 创建表单对象\r\n * @author ChenRui\r\n * @date 2020/11/23 11:19\r\n */\r\n private initControlForm(controls: Control[], formGroup: FormGroup): void {\r\n controls.forEach((control: any) => {\r\n if (control.type === FormFieldClass.Base.code || control.type === FormFieldClass.Senior.code) {\r\n control.formApi = this.formApi; // 表单控制类对象\r\n const boundProperty: string = (control.controlAttr as DesFormControl)?.boundProperty;\r\n if (boundProperty) {\r\n const propertys: string[] = boundProperty.split(\".\");\r\n if (propertys.length > 1 && formGroup != null) {\r\n const formControl: FormControl = this.findFormControlByProperty(propertys.slice(1, propertys.length), formGroup);\r\n const controlAttr: DesFormControl = control.controlAttr as any;\r\n // console.log(\"接受到的表单权限信息\", this.loFormLimit);\r\n const property = propertys[propertys.length - 1];\r\n const formLimit = this.loFormLimit[property];\r\n if (formLimit) {\r\n controlAttr.isHideControl = formLimit.isHide === \"1\";\r\n controlAttr.isNotEdit = formLimit.isNotEdit === \"1\";\r\n const requiredIndex = controlAttr.verificationRules?.findIndex((item: any) => item.ruleType === ValidateRules.Required.code);\r\n if (formLimit.isMustFill == \"1\" && requiredIndex == -1) {\r\n // 添加必输校验\r\n controlAttr.verificationRules.push({ ruleType: ValidateRules.Required.code });\r\n } else if (formLimit.isMustFill != \"1\" && requiredIndex > -1) {\r\n // 移除必输校验\r\n controlAttr.verificationRules.splice(requiredIndex, 1);\r\n }\r\n }\r\n formControl.code = control.code;\r\n formControl.controlAttr = controlAttr;\r\n validateGeneratorService.fillCheckRule(formControl, controlAttr);\r\n control[\"formControl\"] = formControl;\r\n }\r\n }\r\n } else if (control.type === FormFieldClass.Layout.code && control.subControls != null && control.subControls.length > 0) {\r\n this.initControlForm(control.subControls, formGroup);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @description: 按照节点查询控件\r\n * @author ChenRui\r\n * @date 2020/11/26 15:45\r\n */\r\n private findFormControlByProperty(propertys: string[], formGroup: FormGroup): FormControl | any {\r\n let currentFormGroup = formGroup;\r\n for (let i = 0; i < propertys.length; i++) {\r\n const formObject = currentFormGroup.get(propertys[i]);\r\n if (i < propertys.length - 1 && formObject != null && formObject instanceof FormGroup) {\r\n currentFormGroup = formObject;\r\n } else {\r\n return formObject;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 控件值变化事件处理\r\n * @author ChenRui\r\n * @date 2020/12/2 14:35\r\n */\r\n onChange(event: any): void {\r\n this.$emit(\"change\", event);\r\n }\r\n\r\n /**\r\n * @description: 下拉选项新增\r\n * @author ChenRui\r\n * @date 2021/1/14 20:05\r\n */\r\n selectAddItem(event: any): void {\r\n this.$emit(\"add-item\", event);\r\n }\r\n\r\n /**\r\n * @description: 单击事件\r\n * @author ChenRui\r\n * @date 2021/3/4 11:39\r\n */\r\n onClick(event: any): void {\r\n this.$emit(\"click\", event);\r\n }\r\n\r\n /**\r\n * @description: 内置前置标签事件\r\n * @author ChenRui\r\n * @date 2021/4/23 9:42\r\n */\r\n onAddonBeforeHandler(event: any): void {\r\n this.$emit(\"addon-before\", event);\r\n }\r\n\r\n /**\r\n * @description: 内置后置标签事件\r\n * @author ChenRui\r\n * @date 2021/4/23 9:43\r\n */\r\n onAddonAfterHandler(event: any): void {\r\n this.$emit(\"addon-after\", event);\r\n }\r\n\r\n /**\r\n * @description: 获取焦点\r\n * @author ChenRui\r\n * @date 2021/3/4 11:46\r\n */\r\n onFocus(event: Control): void {\r\n this.$emit(\"focus\", event);\r\n }\r\n\r\n /**\r\n * @description: 失焦事件\r\n * @author ChenRui\r\n * @date 2021/3/4 11:38\r\n */\r\n onBlur(event: Control): void {\r\n this.$emit(\"blur\", event);\r\n }\r\n}\r\n","import { render } from \"./DvForm.vue?vue&type=template&id=3f24cc08&scoped=true&ts=true\"\nimport script from \"./DvForm.vue?vue&type=script&lang=ts\"\nexport * from \"./DvForm.vue?vue&type=script&lang=ts\"\n\nimport \"./DvForm.vue?vue&type=style&index=0&id=3f24cc08&lang=scss&scoped=true\"\n\nimport exportComponent from \"E:\\\\base-frontend\\\\vue-lo3-form-260417\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3f24cc08\"]])\n\nexport default __exports__","import { App } from \"vue\";\r\nimport DyForm from \"./components/form/DvForm.vue\";\r\nimport { formToolsService } from \"@/services\";\r\nimport { DEFAULT_FORM_FILE_NAME } from \"./constants/config/form.config\";\r\nimport { formLocalForageService } from \"@/services\";\r\nimport { dictLocalForageService } from \"@/services\";\r\nimport { create, subtractDependencies, addDependencies, multiplyDependencies, divideDependencies, formatDependencies, evaluateDependencies, MathJsStatic } from \"mathjs\";\r\nimport { cleanLocalForageService } from \"@/services\";\r\n\r\nexport * from \"./components/index\";\r\nexport * from \"./constants/index\";\r\nexport * from \"./core/index\";\r\nexport * from \"./domain/index\";\r\nexport * from \"./services/index\";\r\nexport * from \"./store/index\";\r\nexport * from \"./types/vfForm\";\r\nimport \"./styles/index.scss\";\r\n\r\nimport \"dayjs/locale/zh-cn\";\r\nimport dayjs from \"dayjs\";\r\n\r\nconst components: any = {\r\n DyForm,\r\n};\r\n\r\nconst install: any = function (app: App, options: any) {\r\n if (install.installed) return;\r\n install.installed = true;\r\n // Modal.install(vue);\r\n Object.keys(components).forEach((key) => {\r\n app.component(key, components[key]);\r\n });\r\n dayjs.locale(\"zh-cn\");\r\n\r\n const url: string = options && options.url ? options.url : \"./resources/json/\" + DEFAULT_FORM_FILE_NAME;\r\n app.config.globalProperties.$qlForm = {\r\n url: url,\r\n contextPath: options.contextPath || \"/ms-loong\",\r\n dictUrl: options && options.dictUrl ? options.dictUrl : \"\",\r\n dictRestLoadMode: options && options.dictRestLoadMode ? options.dictRestLoadMode : \"GET\",\r\n dictRestLoadBody: options && options.dictRestLoadBody ? options.dictRestLoadBody : undefined,\r\n dictRestLoadHeaders: options && options.dictRestLoadHeaders ? options.dictRestLoadHeaders : undefined,\r\n dictRestLoadOnlyBody: options && options.dictRestLoadOnlyBody ? options.dictRestLoadOnlyBody : false,\r\n loadMode: options && options.loadMode ? options.loadMode : \"static\",\r\n appId: options && options.appId ? options.appId : \"\",\r\n onlySimpleLoadConfig: options && options.onlySimpleLoadConfig ? options.onlySimpleLoadConfig : false,\r\n urls: options?.urls,\r\n dictUrls: options?.dictUrls,\r\n desApiAddr: options?.desApiAddr || \"\",\r\n };\r\n app.config.globalProperties.$formToolsService = formToolsService;\r\n (window as any).$app = app;\r\n cleanLocalForageService.init();\r\n formLocalForageService.init();\r\n dictLocalForageService.init();\r\n\r\n const mathjsDependencies: any = {\r\n formatDependencies,\r\n subtractDependencies,\r\n multiplyDependencies,\r\n evaluateDependencies,\r\n addDependencies,\r\n divideDependencies,\r\n };\r\n const mathjs: Partial<MathJsStatic> = create(mathjsDependencies, {\r\n number: \"BigNumber\",\r\n precision: 20,\r\n });\r\n app.config.globalProperties.$mathjs = mathjs;\r\n};\r\n\r\nconst VueLoForm = {\r\n install,\r\n};\r\nexport default VueLoForm;\r\n","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n","const ZoomType = {\r\n enlarge: { code: \"1\", name: \"放大\" },\r\n narrow: { code: \"2\", name: \"缩小\" },\r\n automatic: { code: \"3\", name: \"自动\" },\r\n};\r\nexport { ZoomType };\r\n"],"sourceRoot":""}